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 o1D19PY1030027 for ; Sat, 13 Feb 2010 02:09:26 +0100 Received: (qmail 9618 invoked by alias); 13 Feb 2010 01:09:20 -0000 Delivered-To: GMX delivery to rainer.schoepf@gmx.net Received: (qmail invoked by alias); 13 Feb 2010 01:09:20 -0000 Received: from relay.uni-heidelberg.de (EHLO relay.uni-heidelberg.de) [129.206.100.212] by mx0.gmx.net (mx066) with SMTP; 13 Feb 2010 02:09:20 +0100 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 o1D17RL2005805 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Sat, 13 Feb 2010 02:07:27 +0100 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 o1CN12cl030489; Sat, 13 Feb 2010 02:07:22 +0100 Received: by LISTSERV.UNI-HEIDELBERG.DE (LISTSERV-TCP/IP release 16.0) with spool id 388978 for LATEX-L@LISTSERV.UNI-HEIDELBERG.DE; Sat, 13 Feb 2010 02:07:22 +0100 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 o1D17MfX007044 for ; Sat, 13 Feb 2010 02:07:22 +0100 Received: from smtp115.plus.mail.re1.yahoo.com (smtp115.plus.mail.re1.yahoo.com [69.147.102.78]) by relay2.uni-heidelberg.de (8.13.8/8.13.8) with SMTP id o1D17CPf010497 for ; Sat, 13 Feb 2010 02:07:13 +0100 Received: (qmail 48759 invoked from network); 13 Feb 2010 01:07:12 -0000 Received: from p5B319428.dip0.t-ipconnect.de (st_philipp@91.49.148.40 with plain) by smtp115.plus.mail.re1.yahoo.com with SMTP; 12 Feb 2010 17:07:11 -0800 PST X-Yahoo-SMTP: _jlT6bOswBCTfNEaYibKorijSw14_bs- X-YMail-OSG: kDyUXRMVM1mAc9UmprTQJvQ0.0.2sYjTzC0rMYhqAwci.doUyIcjegGV.ezXe7rtyL.GcO0Ba4adv02QB7ftv9TqXYBPAvv9.5OYos5Yu9pa9hWXrHjfuZeEkA4Jhwy4A7LzdHsj5CnppCtnmgZWfzCTHRlz779GXDb.h1FgoohW_1GdsVSdhee0QQUxOS88gLBg_uMozGMg.g66sZl0v8qoImTJJGLdh7XiEKyzK7T38.SChCO8JP5c3xREZ07IvdhtdgHrHLRIYxm40bjTJfOiIcMlk.JjS33ic.xHz3kmRe9jM8M8LiP5W1uYMzqxAbbKH1gCH.UxXEHuhE8BLONJKLNK9eQeENqbggYhGvH1bzdPNtfKi8SYEVDUdBLMfUlTxKo_sPOklBzhGNEoCEgDDcB4wIb8anyxkfK407wElQ-- X-Yahoo-Newman-Property: ymail-3 Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Apple Message framework v1077) References: <4b6c8efc$0$6573$9b4e6d93@newsspool3.arcor-online.net> <09bdfa24-c77c-4f37-8c89-809befb28934@u41g2000yqe.googlegroups.com> <4b6cc60a$0$6581$9b4e6d93@newsspool3.arcor-online.net> <227E5CB1-DBE8-4956-94C6-9B9FD1B15A07@yahoo.de> <19317.56561.17406.210089@morse.mittelbach-online.de> X-Mailer: Apple Mail (2.1077) Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from quoted-printable to 8bit by listserv.uni-heidelberg.de id o1D17MfX007045 Message-ID: <702AECD6-E31C-47EE-8921-AB9EACC52AC7@yahoo.de> Date: Sat, 13 Feb 2010 02:07:09 +0100 Reply-To: Mailing list for the LaTeX3 project Sender: Mailing list for the LaTeX3 project From: Philipp Stephani Subject: Re: Newbie Question on LaTeX 3 Programming - \exp_arg:x To: LATEX-L@listserv.uni-heidelberg.de In-Reply-To: <19317.56561.17406.210089@morse.mittelbach-online.de> Precedence: list List-Help: , List-Unsubscribe: List-Subscribe: List-Owner: List-Archive: X-GMX-Antispam: 0 (Mail was not recognized as spam); Detail=5D7Q89H36p77e5KAPs1l6v/Sb97LojnDtMgfETrECMLUO9erHzOJe6KyumPEzQo/v49H/ 6WH16A3hVxdb50dQBMe/GhyW+KflE2xKxwMOEKvHDWk7UqJoh2LvyLXsywjCkfM1ILLlYNfmOEMt /DqUA==V1; X-Resent-By: Forwarder X-Resent-For: rainer.schoepf@gmx.net X-Resent-To: rainer@rainer-schoepf.de X-Scanned-By: MIMEDefang 2.63 on 85.214.41.38 Status: R X-Status: X-Keywords: X-UID: 6264 Am 12.02.2010 um 23:57 schrieb Frank Mittelbach: > Hello Philipp, > >>> >>> Listing expandable functions was not done to start with, and so I'm >>> sure this is not the only missing item. (Again, a proper re-write >>> would probably help here.) On \exp_arg:x, it got taken out of the main >>> part of expl3 recently (it was supposed to be a wrapper for \expanded, >>> but as pdfTeX 1.50 does not seem likely as a release we've dropped >>> it.) I thought we'd removed it from the docs: can you point it out to >>> me in the current CTAN snapshot|? >> >> I think this should be reimplemented because everybody needs it. I tried to >> write a small package only with expl3 and xparse, but I still needed an >> implementation of \exp_arg:x. The l3expan module helps a bit, but there is >> simply nothing as general and powerful as \edef. Maybe you could define two >> macros, one expandable and one unexpandable. > > you lost me here. Either you or I are stitting on top of a big > misunderstanding I think :-) please explain what you need \exp_arg:x for and > why the l3expan module doesn't help - that module is triple powerful to > whatever you had for expansion in 2e so .. expl3 itself uses \exp_arg:x in disguise, e.g. in l3tl.dtx, l. 1504: \cs_set_nopar:Npn \tl_tmp:w #1 { \tl_set:Nx \l_tmpa_tl { \exp_not:N \prg_new_conditional:Npnn \exp_not:c {tl_if_eq:#1} ####1 ####2 {p,TF,T,F} { \exp_not:N \tex_ifnum:D \exp_not:c {tl_compare:#1} {####1}{####2} \exp_not:n{ =\c_zero \prg_return_true: \else: \prg_return_false: \fi: } } } \l_tmpa_tl } Codes like that are very common. I also think that this is not too elegant, but in many cases there is no other way. \edef lets you specify completely arbitrary combinations of expansions, something that is impossible otherwise. It doesn't matter that it is not expandable because the result must be executed anyway.