Received: from mx0.gmx.net (mx0.gmx.net [213.165.64.100]) by h1439878.stratoserver.net (8.14.2/8.14.2/Debian-2build1) with SMTP id p81CvGqr009285 for ; Thu, 1 Sep 2011 14:57:17 +0200 Received: (qmail 27282 invoked by alias); 1 Sep 2011 12:57:11 -0000 Delivered-To: GMX delivery to rainer.schoepf@gmx.net Received: (qmail invoked by alias); 01 Sep 2011 12:57:10 -0000 Received: from relay.uni-heidelberg.de (EHLO relay.uni-heidelberg.de) [129.206.100.212] by mx0.gmx.net (mx076) with SMTP; 01 Sep 2011 14:57:10 +0200 Received: from listserv.uni-heidelberg.de (listserv.uni-heidelberg.de [129.206.100.94]) by relay.uni-heidelberg.de (8.14.1/8.14.1) with ESMTP id p81CsPdt022125 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Thu, 1 Sep 2011 14:54:25 +0200 Received: from listserv.uni-heidelberg.de (localhost.localdomain [127.0.0.1]) by listserv.uni-heidelberg.de (8.13.1/8.13.1) with ESMTP id p81CJ2sP021245; Thu, 1 Sep 2011 14:54:24 +0200 Received: by LISTSERV.UNI-HEIDELBERG.DE (LISTSERV-TCP/IP release 16.0) with spool id 1628379 for LATEX-L@LISTSERV.UNI-HEIDELBERG.DE; Thu, 1 Sep 2011 14:54:24 +0200 Received: from relay.uni-heidelberg.de (relay.uni-heidelberg.de [129.206.100.212]) by listserv.uni-heidelberg.de (8.13.1/8.13.1) with ESMTP id p81CsO0D015653 for ; Thu, 1 Sep 2011 14:54:24 +0200 Received: from ix.urz.uni-heidelberg.de (cyrus-portal.urz.uni-heidelberg.de [129.206.100.176]) by relay.uni-heidelberg.de (8.14.1/8.14.1) with ESMTP id p81CsOCg022116 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Thu, 1 Sep 2011 14:54:24 +0200 Received: from relay.uni-heidelberg.de (relay.uni-heidelberg.de [129.206.100.212]) by ix.urz.uni-heidelberg.de (8.13.8/8.13.8) with ESMTP id p81CsNJj010893 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Thu, 1 Sep 2011 14:54:23 +0200 Received: from lo.gmane.org (lo.gmane.org [80.91.229.12]) by relay.uni-heidelberg.de (8.14.1/8.14.1) with ESMTP id p81CsEt6022032 for ; Thu, 1 Sep 2011 14:54:18 +0200 Received: from list by lo.gmane.org with local (Exim 4.69) (envelope-from ) id 1Qz6mY-00086N-P2 for LATEX-L@URZ.UNI-HEIDELBERG.DE; Thu, 01 Sep 2011 14:54:10 +0200 Received: from pd954bab7.dip.t-dialin.net ([217.84.186.183]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Thu, 01 Sep 2011 14:54:10 +0200 Received: from news3 by pd954bab7.dip.t-dialin.net with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Thu, 01 Sep 2011 14:54:10 +0200 X-Injected-Via-Gmane: http://gmane.org/ Lines: 37 References: <1rb2vdciob67d$.dlg@nililand.de> <4E5F75C0.8030105@morningstar2.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Complaints-To: usenet@dough.gmane.org X-Gmane-NNTP-Posting-Host: pd954bab7.dip.t-dialin.net User-Agent: 40tude_Dialog/2.0.15.41de X-Spam-Flag: No X-Envelope-From: X-Spam-Status: No, hits=-4.40 required=5 tests=AWL,BAYES_00,L_P0F_Linux,RCVD_IN_DNSWL_MED,SPF_HELO_PASS, SPF_PASS Message-ID: Date: Thu, 1 Sep 2011 14:53:56 +0200 Reply-To: Mailing list for the LaTeX3 project Sender: Mailing list for the LaTeX3 project From: Ulrike Fischer Subject: Re: Internal equivalent of \providecommand? To: LATEX-L@listserv.uni-heidelberg.de Precedence: list List-Help: , List-Unsubscribe: List-Subscribe: List-Owner: List-Archive: X-GMX-Antispam: 0 (eXpurgate); Detail=5D7Q89H36p6sJLDpZh614Kjz2nt6F3tHY/wNFbeRusvqm+IESG7lC+1jzK5qpr4B80VZx sAFohYY94+9I/+X2H/Pux/85Ncc553Vg8iUKsHDNBNlQUkTqhzMFXQ6axWgXlb5fdomg0y81Py5c fvztKzITQf76nCDuGx6i3hvuQjnYAzNgnU2FDG6Xlgb+am2AcHMZgFpJ4Q=V1; X-Resent-By: Forwarder X-Resent-For: rainer.schoepf@gmx.net X-Resent-To: rainer@rainer-schoepf.de Status: R X-Status: X-Keywords: X-UID: 6854 Am Thu, 1 Sep 2011 13:08:32 +0100 schrieb Joseph Wright: > 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.) > 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. Well my command (it is more a variable so \tl_set would perhaps be more correct) must exist and that's why I'm using \providecommand: To make sure *that* is exists. I'm not relying on a "might exist" command but try to ensure that it is a "does exist" command. The problem is that it must exist in various encoding definitions files for fontenc, in the sty (chessfss) and that its "value" can be set/changed by the user -- which means that I have no control over the location where the default value should be set. I have to set it in various places in such a way that it doesn't overwrite user settings. -- Ulrike Fischer