Received: from mail.proteosys.com ([213.139.130.197]) by nummer-3.proteosys with Microsoft SMTPSVC(6.0.3790.3959); Wed, 26 Aug 2009 03:13:57 +0200 Received: by mail.proteosys.com (8.14.3/8.14.3) with ESMTP id n7Q1DuSH004584 for ; Wed, 26 Aug 2009 03:13:57 +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 n7Q15aEq004879 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Wed, 26 Aug 2009 03:05:36 +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 n7PM1EBi003678; Wed, 26 Aug 2009 03:05:30 +0200 Received: by LISTSERV.UNI-HEIDELBERG.DE (LISTSERV-TCP/IP release 15.5) with spool id 284154 for LATEX-L@LISTSERV.UNI-HEIDELBERG.DE; Wed, 26 Aug 2009 03:05:29 +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 n7Q15TCh016437 for ; Wed, 26 Aug 2009 03:05:29 +0200 Received: from mail-pz0-f186.google.com (mail-pz0-f186.google.com [209.85.222.186]) by relay2.uni-heidelberg.de (8.13.8/8.13.8) with ESMTP id n7Q15OnM011633 for ; Wed, 26 Aug 2009 03:05:28 +0200 Received: by pzk16 with SMTP id 16so285719pzk.18 for ; Tue, 25 Aug 2009 18:05:23 -0700 (PDT) Received: by 10.114.23.4 with SMTP id 4mr8675919waw.28.1251248723014; Tue, 25 Aug 2009 18:05:23 -0700 (PDT) Received: from ?129.127.15.244? ([129.127.15.244]) by mx.google.com with ESMTPS id 20sm1471659pzk.1.2009.08.25.18.05.19 (version=TLSv1/SSLv3 cipher=RC4-MD5); Tue, 25 Aug 2009 18:05:21 -0700 (PDT) Content-Type: text/plain; charset=ISO-8859-1; format=flowed; delsp=yes Mime-Version: 1.0 (Apple Message framework v935.3) 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> <4A946AD7.4020506@residenset.net> X-Mailer: Apple Mail (2.935.3) X-Spam-Whitelist: Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from quoted-printable to 8bit by listserv.uni-heidelberg.de id n7Q15TCh016438 Message-ID: <284EF6D6-0607-42A7-A014-6DB8002562C5@gmail.com> Date: Wed, 26 Aug 2009 10:35:17 +0930 Reply-To: Mailing list for the LaTeX3 project Sender: Mailing list for the LaTeX3 project From: Will Robertson Subject: Re: xparse To: LATEX-L@LISTSERV.UNI-HEIDELBERG.DE In-Reply-To: <4A946AD7.4020506@residenset.net> 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: 26 Aug 2009 01:13:57.0790 (UTC) FILETIME=[7CAF03E0:01CA25EA] Status: R X-Status: X-Keywords: X-UID: 6006 Hi Lars, Just a minor point or two. On 26/08/2009, at 8:21 AM, Lars Hellström wrote: > > One noticable difference to what I believe was discussed is in the > order of processors. If ">{A} o" means "grab optional argument, then > apply A", then I think it stands to reason that ">{B} >{A} o" should > mean "grab optional argument, then apply A, finally apply B", but as > implemented in revision 1494 it's B before A. (Reversing the > processing order would allow one to do without > \l_xparse_processor_use_int.) > > If you find it important that processors should be applied in left- > to-right order, then I believe they should appear after the argspec > base, perhaps as "o <{A} <{B}", to keep as invariant that the thing > being done first is closest to the argspec base. (SYNTAX CHANGE) > This may also have the added value of being more intuitive for users. I don't have strong opinions on the matter, but: (a) I prefer '>{A} m' over 'm <{A}' (b) I agree right-to-left makes some sense > \exp_args:NnV \@firstofone {#2} \l_xparse_arg_toks > % How do without \@firstofone here? The problem is that \exp_args are designed for expanding arguments being passed to a function, not for general expansion control; as you've noticed this means they have a tendency to surround everything with braces. I've proposed some extensions to \exp_after to allow this sort of thing (e.g., \exp_after:nV which would not brace-surround the first argument) but it hasn't been clear if it's useful enough, yet. (Also, instead of \@firstofone you can use \use:n if you wish) > In the typeset form, there is an index which should provide the same > functionality via hyperlinks (although for some reason all the links > seem to go to page 1; is that just for me or is it broken in l3doc > in general?) I've had similar problems in the past but they generally clear up with some magic number of LaTeX runs after the index generation. Or l3doc could be broken; it's not particularly nice code at the moment (my fault). > Some further introspection reveals that this happens inside an > expansion of \g_doc_functions_seq, which is very, VERY long. Hence I > suppose this "infinite loop" may in fact be an O(n^2) operation for > a very large n. Perhaps you should examine switching to a faster > algorithm, or provide some indication of progress? Indeed, what \g_doc_functions_seq is being used for is quite unnecessary for source3. This is disabled in the Makefile; I should probably turn it off by default in l3doc and only enable it when necessary. (It's checking that the functions documented with \begin{function} are also implemented with \begin{macro}, and warning of cases where functions have been implemented without documentation or vice versa.) In the meantime you should have more luck with `make sourcedoc`. Hope this helps, Will