Received: from mail.proteosys.com ([213.139.130.197]) by nummer-3.proteosys with Microsoft SMTPSVC(6.0.3790.3959); Sun, 23 Aug 2009 17:33:20 +0200 Received: by mail.proteosys.com (8.14.3/8.14.3) with ESMTP id n7NFXKb4026310 for ; Sun, 23 Aug 2009 17:33:20 +0200 Received: from listserv.uni-heidelberg.de (listserv.uni-heidelberg.de [129.206.100.94]) by relay2.uni-heidelberg.de (8.13.8/8.13.8) with ESMTP id n7NFSxix022292 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Sun, 23 Aug 2009 17:29:00 +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 n7NEBgVp032549; Sun, 23 Aug 2009 17:28:58 +0200 Received: by LISTSERV.UNI-HEIDELBERG.DE (LISTSERV-TCP/IP release 15.5) with spool id 292475 for LATEX-L@LISTSERV.UNI-HEIDELBERG.DE; Sun, 23 Aug 2009 17:28:58 +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 n7NFSwnP023498 for ; Sun, 23 Aug 2009 17:28:58 +0200 Received: from lon1-post-1.mail.demon.net (lon1-post-1.mail.demon.net [195.173.77.148]) by relay2.uni-heidelberg.de (8.13.8/8.13.8) with ESMTP id n7NFSiC6022211 for ; Sun, 23 Aug 2009 17:28:47 +0200 Received: from morningstar2.demon.co.uk ([80.176.134.7] helo=[192.168.0.2]) by lon1-post-1.mail.demon.net with esmtp (Exim 4.69) id 1MfEzr-0004yH-ZR for LATEX-L@LISTSERV.UNI-HEIDELBERG.DE; Sun, 23 Aug 2009 15:28:44 +0000 User-Agent: Thunderbird 2.0.0.22 (Windows/20090605) MIME-Version: 1.0 References: <4A7921CF.5020803@morningstar2.co.uk> <4A86949D.3090500@morningstar2.co.uk> <4A886BA8.2000209@morningstar2.co.uk> <0417DF73-EC19-4262-B9DF-5C870D47BFCE@gmail.com> <4A893816.2090807@residenset.net> <4A89610D.8060108@morningstar2.co.uk> <4A8C71CC.7000006@residenset.net> <4A8D0048.4070101@morningstar2.co.uk> <4A915B67.4000408@elzevir.fr> X-Enigmail-Version: 0.96.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit Message-ID: <4A916030.50109@morningstar2.co.uk> Date: Sun, 23 Aug 2009 16:28:48 +0100 Reply-To: Mailing list for the LaTeX3 project Sender: Mailing list for the LaTeX3 project From: Joseph Wright Subject: Re: xparse To: LATEX-L@LISTSERV.UNI-HEIDELBERG.DE In-Reply-To: <4A915B67.4000408@elzevir.fr> Precedence: list List-Help: , List-Unsubscribe: List-Subscribe: List-Owner: List-Archive: X-ProteoSys-SPAM-Score: -6.599 () BAYES_00,RCVD_IN_DNSWL_MED X-Scanned-By: MIMEDefang 2.65 on 213.139.130.197 Return-Path: owner-latex-l@LISTSERV.UNI-HEIDELBERG.DE X-OriginalArrivalTime: 23 Aug 2009 15:33:20.0969 (UTC) FILETIME=[0B7E7B90:01CA2407] Status: R X-Status: X-Keywords: X-UID: 5986 Manuel Pégourié-Gonnard wrote: > I think there is no better way, and the only possible thing to do about it is to > clearly document the limitations of this approach, and warn that > \DeclareExpandableDocumentCommand should only be used if absolutely necessary. > > (Btw it's probably already done in the doc: I didn't have time to read the > lastest version, just coming back from holidays, sorting mail first...) > > Manuel. > Indeed, I put: % There are \emph{very rare} occasion when it may be useful to create % fully expandable document commands. To support this, \pkg{xparse} % can create expandable functions as well as the usual robust % ones. This imposes a number of restrictions on the nature of the % arguments accepted by a function, and the code it implements. % This facility should only be used when \emph{absolutely necessary}; % if you do not understand when this might be, \emph{do not use these % functions}! and also % Parsing arguments expandability imposes a number of restrictions on % both the type of arguments that can be read and the error checking % available: % \begin{itemize} % \item The last argument of the function must be mandatory % (type \texttt{l}, \texttt{m} or \texttt{u}). % \item All arguments are either short or long: it is not possible % to mix short and long argument types. % \item The `optional group' argument types \texttt{g} and % \texttt{G} are not available. % \item It is not possible to differentiate between, for example % |\foo[stuff]{argument}| and |\foo{[}]{argument}|. As a % result, checking for optional arguments is less robust than % in the standard version. % \end{itemize} I hope that basically covers it (anything else important?). -- Joseph Wright