LATEX-L Archives

Mailing list for the LaTeX3 project


Options: Use Classic View

Use Monospaced Font
Show Text Part by Default
Condense Mail Headers

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

Print Reply
Sender: Mailing list for the LaTeX3 project <[log in to unmask]>
Date: Thu, 1 Sep 2011 13:08:32 +0100
Reply-To: Mailing list for the LaTeX3 project <[log in to unmask]>
Message-ID: <[log in to unmask]>
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
In-Reply-To: <[log in to unmask]>
Content-Type: text/plain; charset=ISO-8859-1
From: Joseph Wright <[log in to unmask]>
Parts/Attachments: text/plain (24 lines)
On 01/09/2011 11:57, Ulrike Fischer wrote:
> Is there an expl3 equivalent for a \providecommand?
> I could do 
> \cs_if_free:NT \mycommand {\cs_set:Npn \mycommand {...}}
> but I don't find it very elegant to have to type \mycommand twice. 

At the code level, the answer is 'no'. Within a module, we'd expect all
functions to be well-defined: if they 'might' be needed, they should
exist. (See for example the fact that a lot of internal aux functions
are created simply to mark the name as taken.)

At the document level, there is \ProvideDocumentCommand, but even there
I'd hope that this will not be used very often. Well-designed interfaces
should provide a precise set of functions.

Now, there is the reality that LaTeX2e stuff is often not so
well-designed and does sometime rely on 'might exist' functions. There,
I'm afraid the construct you've pointed to is the way to go.
Joseph Wright