Received: from webgate.proteosys.de (mail.proteosys-ag.com [62.225.9.49]) by lucy.proteosys (8.11.0/8.9.3/SuSE Linux 8.9.3-0.1) with ESMTP id f0TI1V708856 for ; Mon, 29 Jan 2001 19:01:31 +0100 Received: by webgate.proteosys.de (8.11.0/8.11.0) with ESMTP id f0TI2G723434 . for ; Mon, 29 Jan 2001 19:02:16 +0100 Received: from mail.Uni-Mainz.DE (mailserver1.zdv.Uni-Mainz.DE [134.93.8.30]) by mailgate2.zdv.Uni-Mainz.DE (8.11.0/8.10.2) with ESMTP id f0TI1P712298 for ; Mon, 29 Jan 2001 19:01:25 +0100 (MET) MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----_=_NextPart_001_01C08A1D.823B8F80" Received: from mailgate2.zdv.Uni-Mainz.DE (mailgate2.zdv.Uni-Mainz.DE [134.93.8.57]) by mail.Uni-Mainz.DE (8.9.3/8.9.3) with ESMTP id TAA28336 for ; Mon, 29 Jan 2001 19:01:24 +0100 (MET) Received: from mail.listserv.gmd.de (mail.listserv.gmd.de [192.88.97.5]) by mailgate2.zdv.Uni-Mainz.DE (8.11.0/8.10.2) with ESMTP id f0TI0v712239 for ; Mon, 29 Jan 2001 19:01:23 +0100 (MET) X-MimeOLE: Produced By Microsoft Exchange V6.5 Received: from mail.listserv.gmd.de (192.88.97.5) by mail.listserv.gmd.de (LSMTP for OpenVMS v1.1a) with SMTP id <10.456276FC@mail.listserv.gmd.de>; Mon, 29 Jan 2001 19:00:55 +0100 Received: from RELAY.URZ.UNI-HEIDELBERG.DE by RELAY.URZ.UNI-HEIDELBERG.DE (LISTSERV-TCP/IP release 1.8b) with spool id 484884 for LATEX-L@RELAY.URZ.UNI-HEIDELBERG.DE; Mon, 29 Jan 2001 18:58:29 +0100 Received: from ix.urz.uni-heidelberg.de (mail.urz.uni-heidelberg.de [129.206.119.234]) by relay.urz.uni-heidelberg.de (8.8.8/8.8.8) with ESMTP id SAA10933 for ; Mon, 29 Jan 2001 18:58:28 +0100 (MET) Received: from relay.uni-heidelberg.de (relay.uni-heidelberg.de [129.206.100.212]) by ix.urz.uni-heidelberg.de (8.8.8/8.8.8) with ESMTP id SAA43118 for ; Mon, 29 Jan 2001 18:58:29 +0100 Received: from moutvdom01.kundenserver.de (moutvdom01.kundenserver.de [195.20.224.200]) by relay.uni-heidelberg.de (8.10.2+Sun/8.10.2) with ESMTP id f0THwSY25531 for ; Mon, 29 Jan 2001 18:58:28 +0100 (MET) Received: from [195.20.224.219] (helo=mrvdom03.kundenserver.de) by moutvdom01.kundenserver.de with esmtp (Exim 2.12 #2) id 14NIZL-0003YN-00 for LATEX-L@urz.uni-heidelberg.de; Mon, 29 Jan 2001 18:58:23 +0100 Received: from manz-3e36458c.pool.mediaways.net ([62.54.69.140] helo=istrati.zdv.uni-mainz.de) by mrvdom03.kundenserver.de with esmtp (Exim 2.12 #2) id 14NIZI-00059C-00 for LATEX-L@URZ.UNI-HEIDELBERG.DE; Mon, 29 Jan 2001 18:58:20 +0100 Received: (from latex3@localhost) by istrati.zdv.uni-mainz.de (8.9.3/8.9.3/SuSE Linux 8.9.3-0.1) id SAA23493; Mon, 29 Jan 2001 18:55:43 +0100 In-Reply-To: References: Return-Path: X-Mailer: VM 6.75 under Emacs 20.4.1 X-Authentication-Warning: istrati.zdv.uni-mainz.de: latex3 set sender to frank@mittelbach-online.de using -f Content-class: urn:content-classes:message Subject: Re: Templates Date: Mon, 29 Jan 2001 18:55:43 +0100 Message-ID: <14965.44703.515305.92520@istrati.zdv.uni-mainz.de> X-MS-Has-Attach: X-MS-TNEF-Correlator: From: "Frank Mittelbach" Sender: "Mailing list for the LaTeX3 project" To: "Multiple recipients of list LATEX-L" Reply-To: "Mailing list for the LaTeX3 project" Status: R X-Status: X-Keywords: X-UID: 3656 This is a multi-part message in MIME format. ------_=_NextPart_001_01C08A1D.823B8F80 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable > My gut feeling is that the values for these keys should be evaluated = at > declaration, although so far I haven't been able to come up with any > example where this is really needed. Anyway, if the declaration-time > expansion is done as > > \edef\name@value{} i have my doubts that there should be any unprotected edefs anywhere if = you can't really control the contents. but the there is perhaps an argument = for general declaration time evaluation. then perhaps there isn't, it would = really help to get some arguments (in terms of examples) why this is helpful. right now we have - no evaluation for functions, names (with the exception that = \MultiSelection is evaluated but this can be viewed as part of the snytax spec rather = than an evaluation) - evaluation for lengths and counters which is sort of reasonable i think, or not? > A comparison with fontinst might also be useful here. Although I = don't > think it is spelt out like this anywhere, fontinst makes a = distinction > between string variables (the values of which are fully = evaluated/expanded > when they are assigned) and command variables (where no expansion = takes > place until they are used). Thus what I'm suggesting is that `n' type = keys > should work like string variables, whereas `f' type keys should = work > like command variables. that would be an alternative, but again I would like to see at least a = single example why one would need/want expansion (beside gut feeling, though = the latter might be useful) > [1] About xinitials: The problem with that is of course not in the > template, but in the document command which passes general text to an > argument which expects a name value. The right thing to do would be = to > mangle the argument into a working name before trying to use it as an > instance name. (A sketch for a mangling procedure would be the = following: > Require that the text to mangle is robust and doesn't contain any TeX > primitives. Define representations for the text commands. Throw away = all > commands which aren't text commands---making \protect temporarily = \@gobble > should take care of that. Besides that something needs to be done = about the > \chardef tokens \% and \&; making them proper text commands is = probably the > way to go.) right on all accounts. a general function for doing this, eg taking some tex/text input and making a csname acceptable "name" out of it would be helpful on many occasions. frank ------_=_NextPart_001_01C08A1D.823B8F80 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Re: Templates

 > My gut feeling is that the values for these = keys should be evaluated at
 > declaration, although so far I haven't = been able to come up with any
 > example where this is really needed. = Anyway, if the declaration-time
 > expansion is done as
 >
 >   = \edef\name@value{<default>}

i have my doubts that there should be any unprotected = edefs anywhere if you
can't really control the contents. but the there is = perhaps an argument for
general declaration time evaluation. then perhaps = there isn't, it would really
help to get some arguments (in terms of examples) why = this is helpful.

right now we have

 - no evaluation for functions, names (with the = exception that \MultiSelection
   is evaluated but this can be viewed as = part of the snytax spec rather than
   an evaluation)
 - evaluation for lengths and counters

which is sort of reasonable i think, or not?


 > A comparison with fontinst might also be = useful here. Although I don't
 > think it is spelt out like this anywhere, = fontinst makes a distinction
 > between string variables (the values of = which are fully evaluated/expanded
 > when they are assigned) and command = variables (where no expansion takes
 > place until they are used). Thus what I'm = suggesting is that `n' type keys
 > should work like string variables, whereas = `f<n>' type keys should work
 > like command variables.

that would be an alternative, but again I would like = to see at least a single
example why one would need/want expansion (beside gut = feeling, though the
latter might be useful)

 > [1] About xinitials: The problem with that = is of course not in the
 > template, but in the document command = which passes general text to an
 > argument which expects a name value. The = right thing to do would be to
 > mangle the argument into a working name = before trying to use it as an
 > instance name. (A sketch for a mangling = procedure would be the following:
 > Require that the text to mangle is robust = and doesn't contain any TeX
 > primitives. Define representations for the = text commands. Throw away all
 > commands which aren't text = commands---making \protect temporarily \@gobble
 > should take care of that. Besides that = something needs to be done about the
 > \chardef tokens \% and \&; making them = proper text commands is probably the
 > way to go.)

right on all accounts. a general function for doing = this, eg taking some
tex/text input and making a csname acceptable = "name" out of it would be
helpful on many occasions.

frank

------_=_NextPart_001_01C08A1D.823B8F80--