LATEX-L Archives

Mailing list for the LaTeX3 project

LATEX-L@LISTSERV.UNI-HEIDELBERG.DE

Options: Use Forum View

Use Monospaced Font
Show Text Part by Default
Show All Mail Headers

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

Print Reply
Subject:
From:
Will Robertson <[log in to unmask]>
Reply To:
Mailing list for the LaTeX3 project <[log in to unmask]>
Date:
Sun, 24 Aug 2014 11:23:25 +0930
Content-Type:
text/plain
Parts/Attachments:
text/plain (43 lines)
On 23 Aug 2014, at 4:49 am, Sean Allred <[log in to unmask]> wrote:

> And I don't mean to advocate that these objects should be able to have
> many (9+) mandatory arguments; I'm far more concerned with the
> homelessness for optional ones.

I think after Frank’s experiments with sectioning, it became apparent that this was a major stumbling block. When a chapter heading can have

1. title
2. toc title
3. header title
4. label
5. unnumbered flag
6. author
7. epigraph
…

it no longer makes sense to require mandatory arguments. On the other hand I do see Joseph’s point that when you have just one or two actually mandatory arguments that writing the following is a bit ugly:

   \UseInstance{crossref}{latex2e}{ label = #1 }% only one mandatory argument

* * *

A model that I think has worked quite well in the LaTeX world is how BibTeX has a notion of “mandatory” and “optional” fields for bibliography references.

Perhaps we could supplement the current xtemplate interface with a keyval-type-argument (one only per interface, of course), in which the optional/mandatory nature of each keyval item within is specified by the document design (and some may well be always mandatory).

So according to the situation you could have either

    \UseInstance{…}{…}{arg one}{arg two}{arg three}

or

    \UseInstance{…}{…}{ arg-one=… , arg-two=…, arg-three=… }

or even a combination of the two:

    \UseInstance{…}{…}{arg one}{ arg-two=…, arg-three=… }

Any thoughts?

Will

ATOM RSS1 RSS2