Received: from mail.proteosys.com ([213.139.130.197]) by nummer-3.proteosys with Microsoft SMTPSVC(6.0.3790.3959); Fri, 12 Sep 2008 13:01:47 +0200 Received: by mail.proteosys.com (8.13.8/8.13.8) with ESMTP id m8CB1diV021687 for ; Fri, 12 Sep 2008 13:01:40 +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 m8CAvHCs009485 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Fri, 12 Sep 2008 12:57:17 +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 m8BM16cV032237; Fri, 12 Sep 2008 12:57:12 +0200 Received: by LISTSERV.UNI-HEIDELBERG.DE (LISTSERV-TCP/IP release 15.5) with spool id 30812 for LATEX-L@LISTSERV.UNI-HEIDELBERG.DE; Fri, 12 Sep 2008 12:57:12 +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 m8CAvBxY024606 for ; Fri, 12 Sep 2008 12:57:12 +0200 Received: from moutng.kundenserver.de (moutng.kundenserver.de [212.227.126.177]) by relay2.uni-heidelberg.de (8.13.8/8.13.8) with ESMTP id m8CAvAVm006819 for ; Fri, 12 Sep 2008 12:57:13 +0200 Received: from morse.mittelbach-online.de (p4FD45717.dip.t-dialin.net [79.212.87.23]) by mrelayeu.kundenserver.de (node=mrelayeu5) with ESMTP (Nemesis) id 0ML25U-1Ke6Kp4Aor-0006ID; Fri, 12 Sep 2008 12:57:08 +0200 Received: by morse.mittelbach-online.de (Postfix, from userid 501) id 34A9D6552A; Fri, 12 Sep 2008 12:57:04 +0200 (CEST) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit References: <48CA1F27.2040902@morningstar2.co.uk> <5957A3EB-39BD-4A98-99D7-70129F99CDC0@gmail.com> <48CA438F.5070708@morningstar2.co.uk> X-Mailer: VM 7.19 under Emacs 21.3.1 X-Provags-ID: V01U2FsdGVkX1/b2mqfqPOOJCcy9RQIble3RNADa7ffj4jHmrP R/4AUW+KHXbWZ/pirhckI8M0+8Qyzlfsh0Xskk7DD4CjLG2WrP iSmXslbfVZBsRYjgAU+MnMynNyORbi3 X-Spam-Whitelist-Provider: Message-ID: <18634.19200.409372.731167@morse.mittelbach-online.de> Date: Fri, 12 Sep 2008 12:57:04 +0200 Reply-To: Mailing list for the LaTeX3 project Sender: Mailing list for the LaTeX3 project From: Frank Mittelbach Subject: Re: \tlp_put ... To: LATEX-L@LISTSERV.UNI-HEIDELBERG.DE In-Reply-To: <48CA438F.5070708@morningstar2.co.uk> Precedence: list List-Help: , List-Unsubscribe: List-Subscribe: List-Owner: List-Archive: X-ProteoSys-SPAM-Score: -102.464 () BAYES_00,FORGED_RCVD_HELO,USER_IN_WHITELIST X-Scanned-By: MIMEDefang 2.64 on 213.139.130.197 Return-Path: owner-latex-l@LISTSERV.UNI-HEIDELBERG.DE X-OriginalArrivalTime: 12 Sep 2008 11:01:47.0293 (UTC) FILETIME=[F33114D0:01C914C6] Status: R X-Status: X-Keywords: X-UID: 5298 Joseph Wright writes: > Will Robertson wrote: > > If it's going to need such contents, would it make more sense to use a > > _toks datatype the whole way though? > > Okay, I have "redone the exercise" in this way. > > >> I wonder if there > >> is a reason not to do: > >> > >> \def_long_new:Npn \tlp_put_right:Nn #1#2{ > >> \tlp_set:Nx #1{\exp_not:o{#1}\exp_not:n{#2}} > >> } > >> > >> which does not suffer from the same issue. > > > > Unless the whole point is to restrict its use in this case, I can't see > > why this isn't a better approach. I suspect it wasn't coded like this in > > the first place because \exp_not:n isn't available without eTeX. But I > > don't think we should worry about that these days. > > That was my guess too. some history, perhaps Morten can say more because I think he did some of the updates ... very early definition: \def_long_new:Npn \tlp_put_right:Nn #1#2{\tlp_set:No #1{#1#2}} current documentation says % A word of warning is appropriate here: Token list pointers are % implemented as macros and as such currently inherit some of the % peculiarities of how \TeX\ handles "#"s in the argument of % macros. In particular, the following actions are legal % \begin{verbatim} % \tlp_set:Nn \l_tmpa_tlp{##1} % \tlp_put_right:Nn \l_tmpa_tlp{##2} % \tlp_set:No \l_tmpb_tlp{\l_tmpa_tlp ##3} % \end{verbatim} % |x| type expansions where macros being expanded contain |#|s do not % work and will not work until there is an |\expanded| primitive in % the engine. If you want them to work you must double |#|s another % level. % from which I infer that the \tlp_set:Nn \l_exp_tlp{#2} was actually added to raise the error when setting / adding to the tlp and not during some later expansion deep down. However, we could do better now I guess given that we assume for expl3 that eTeX is the underlying engine nowadays however the problem will be to ensure that the single # will work in all circumstances ie all usages of tlps and I'm not sure that wil be possible if not then prohibiting them if not doubled (for tlps) might be the better solution) frank