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 p81GrlRb005173 for ; Thu, 1 Sep 2011 18:53:48 +0200 Received: (qmail 10560 invoked by alias); 1 Sep 2011 16:53:42 -0000 Delivered-To: GMX delivery to rainer.schoepf@gmx.net Received: (qmail invoked by alias); 01 Sep 2011 16:53:42 -0000 Received: from relay.uni-heidelberg.de (EHLO relay.uni-heidelberg.de) [129.206.100.212] by mx0.gmx.net (mx008) with SMTP; 01 Sep 2011 18:53:42 +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 p81GpRkS000658 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Thu, 1 Sep 2011 18:51:27 +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 p81Ev9Cb021245; Thu, 1 Sep 2011 18:51:26 +0200 Received: by LISTSERV.UNI-HEIDELBERG.DE (LISTSERV-TCP/IP release 16.0) with spool id 1638220 for LATEX-L@LISTSERV.UNI-HEIDELBERG.DE; Thu, 1 Sep 2011 18:51:26 +0200 Received: from relay2.uni-heidelberg.de (relay2.uni-heidelberg.de [129.206.210.211]) by listserv.uni-heidelberg.de (8.13.1/8.13.1) with ESMTP id p81GpQ8u018656 for ; Thu, 1 Sep 2011 18:51:26 +0200 Received: from ueamailgate01.uea.ac.uk (ueamailgate01.uea.ac.uk [139.222.131.184]) by relay2.uni-heidelberg.de (8.13.8/8.13.8) with ESMTP id p81GpFHN006001 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Thu, 1 Sep 2011 18:51:18 +0200 Received: from ueams02.uea.ac.uk (ueams02.uea.ac.uk [139.222.131.131]) by ueamailgate01.uea.ac.uk (8.13.8/8.13.8) with ESMTP id p81GpEMr016268 for ; Thu, 1 Sep 2011 17:51:14 +0100 Received: from [139.222.114.131] by ueams02.uea.ac.uk with esmtp (Exim 4.69) (envelope-from ) id 1QzAR9-0006H5-N0 for LATEX-L@LISTSERV.UNI-HEIDELBERG.DE; Thu, 01 Sep 2011 17:48:19 +0100 User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:6.0.1) Gecko/20110830 Thunderbird/6.0.1 MIME-Version: 1.0 References: <1rb2vdciob67d$.dlg@nililand.de> <4E5F75C0.8030105@morningstar2.co.uk> <4E5FA851.3040504@morningstar2.co.uk> X-Enigmail-Version: 1.3.1 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Bayes-Prob: 0.0001 (Score 0, tokens from: @@RPTN, outgoing) X-CanIt-Geo: ip=139.222.131.131; country=GB; region=I9; city=Norwich; latitude=52.6333; longitude=1.3000; http://maps.google.com/maps?q=52.6333,1.3000&z=6 X-CanItPRO-Stream: UEA:outgoing (inherits from UEA:default,base:default) X-Canit-Stats-ID: 05FrsPeMa - f6a9c19eda94 - 20110901 X-Scanned-By: CanIt (www . roaringpenguin . com) on 139.222.131.184 Message-ID: <4E5FB81F.5020402@morningstar2.co.uk> Date: Thu, 1 Sep 2011 17:51:43 +0100 Reply-To: Mailing list for the LaTeX3 project Sender: Mailing list for the LaTeX3 project From: Joseph Wright Subject: Re: Internal equivalent of \providecommand? To: LATEX-L@listserv.uni-heidelberg.de In-Reply-To: Precedence: list List-Help: , List-Unsubscribe: List-Subscribe: List-Owner: List-Archive: X-GMX-Antispam: 0 (Sender is in whitelist: joseph.wright@MORNINGSTAR2.CO.UK); Detail=5D7Q89H36p4L00VTXC6D4q0N+AH0PUCnBi0P5cROEGjO+pG7NAH/K+tf9SrVFtpLrKONl 2T9EL4W4U4jgzLbnCcGpk1z/zwmKT/K1fv3lD0=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: 6859 On 01/09/2011 17:10, Ulrike Fischer wrote: > The variable in question is my own command and I can do with it what > I want. That is not the problem. > > But as I now started to rewrite chessfss with expl3 I'm trying to > use clean code, to exploit its features and to avoid unnessary hacks > and compromisses. > > And after thinking more about it: I think the cleanest solution is > to export the commands in question in a .sty and to use > \RequirePackage to include them in the various files. Then they are > set exactly once and are only in one place. That sounds more like what I'd encourage: set up the variable first, then allow user changes later. I'd also suggest providing an interface to the variable, rather than the variable itself. Key-value methods have already been mentioned, but for a one-off setting something like \NewDocumentCommand \setthing { m } { \tl_set:Nn \l_my_thing_tl {#1} } would be appropriate. (This is all part of the idea of separating interface from code.) -- Joseph Wright