LATEX-L Archives

Mailing list for the LaTeX3 project


Options: Use Classic View

Use Monospaced Font
Show HTML Part by Default
Condense Mail Headers

Topic: [<< First] [< Prev] [Next >] [Last >>]

Print Reply
Content-Type: text/plain; charset="us-ascii"
Date: Tue, 24 Nov 2009 11:17:41 +0000
Reply-To: Mailing list for the LaTeX3 project <[log in to unmask]>
From: "J.Fine" <[log in to unmask]>
Content-Transfer-Encoding: 8bit
In-Reply-To: <[log in to unmask]>
MIME-Version: 1.0
Sender: Mailing list for the LaTeX3 project <[log in to unmask]>
Parts/Attachments: text/plain (61 lines)
Was RE: object type / instance arguments

Lars wrote:
The purpose of using a dictionary would be to allow the data being passed around to have more structure. I also think passing a dictionary to the TOC entry formatter would be great, as that will allow *it* to decide whether to include an author name, subtitle, short description, etc. or not.

Frank wrote:
> I thought a bit more about the arguments brought forward by Lars about
> supporting a kind of dictionary to pass arguments to instances.
> With more complex object types I clearly can see the advantages of this
> method, with more simpler types I'm not so sure though, partly because of
> the
> overhead in processing. That makes me leaning towards a dual approach
> (also
> suggested by Lars at one point if I remember correctly), ie have the most
> important arguments mandatory but allow for an additional dictionary to be
> passed along and queried as needed.
> Thinking along those lines brings up a couple of questions:
> What is the signature of an object type?
> How should the dictionary be specified?
> Should there be some inheritance of dictionaries?

[discussion of questions snipped]

Independently I've come up with a scheme as follows
  \def\my@template #1{%
      My name is #1{name} and my email address is #1{email}.
where #1 can be as simple as
and where \@lookup could be as simple as
  \def\@lookup #1#2{%
     \csname #1.#2\endcname

I've used it in some trial material and it works fine.  (Frank:  I don't understand what you mean by 'the overhead of processing'.)

What I've suggested is very similar to what's done in modern scripting languages.  For example:
  Python 2.5.1 (r251:54863, May 18 2007, 16:56:43)
  >>> mydict = {'name':'Jonathan Fine', 'email':'not for spammers'}
  >>> print 'My name is %(name)s and my email address is %(email)s' % mydict
  My name is Jonathan Fine and my email address is not for spammers


The Open University is incorporated by Royal Charter (RC 000391), an exempt charity in England & Wales and a charity registered in Scotland (SC 038302).