Received: from mout.gmx.net (mout.gmx.net [212.227.15.15]) by h1439878.stratoserver.net (8.14.2/8.14.2/Debian-2build1) with ESMTP id r3UElGwM032213 for ; Tue, 30 Apr 2013 16:47:17 +0200 Received: from relay2.uni-heidelberg.de ([129.206.210.211]) by mx-ha.gmx.net (mxgmx009) with ESMTP (Nemesis) id 0LpOfF-1V0SiF2WwP-00f8rg for ; Tue, 30 Apr 2013 16:46:59 +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 r3UEi4pk022472 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Tue, 30 Apr 2013 16:44:04 +0200 Received: from listserv.uni-heidelberg.de (listserv.uni-heidelberg.de [127.0.0.1]) by listserv.uni-heidelberg.de (8.13.8/8.13.8) with ESMTP id r3UED9eG001615; Tue, 30 Apr 2013 16:44:02 +0200 Received: by LISTSERV.UNI-HEIDELBERG.DE (LISTSERV-TCP/IP release 16.0) with spool id 9254618 for LATEX-L@LISTSERV.UNI-HEIDELBERG.DE; Tue, 30 Apr 2013 16:44:02 +0200 Received: from relay2.uni-heidelberg.de (relay2.uni-heidelberg.de [129.206.210.211]) by listserv.uni-heidelberg.de (8.13.8/8.13.8) with ESMTP id r3UEY2pu027260 for ; Tue, 30 Apr 2013 16:34:02 +0200 Received: from mail-ee0-f53.google.com (mail-ee0-f53.google.com [74.125.83.53]) by relay2.uni-heidelberg.de (8.13.8/8.13.8) with ESMTP id r3UEWS8l008847 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=FAIL) for ; Tue, 30 Apr 2013 16:32:31 +0200 Received: by mail-ee0-f53.google.com with SMTP id d17so288260eek.12 for ; Tue, 30 Apr 2013 07:32:28 -0700 (PDT) X-Received: by 10.15.31.197 with SMTP id y45mr134990888eeu.18.1367330798944; Tue, 30 Apr 2013 07:06:38 -0700 (PDT) Received: from palladium.local ([139.222.221.139]) by mx.google.com with ESMTPSA id b5sm38941666eew.16.2013.04.30.07.06.36 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Tue, 30 Apr 2013 07:06:37 -0700 (PDT) User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:17.0) Gecko/20130328 Thunderbird/17.0.5 MIME-Version: 1.0 References: <517E353C.5050701@morningstar2.co.uk> <517F75E8.7090900@morningstar2.co.uk> <517F9214.9030103@residenset.net> X-Enigmail-Version: 1.5.1 Content-Type: text/plain; charset=ISO-8859-1 Message-ID: <517FCFEB.7030007@morningstar2.co.uk> Date: Tue, 30 Apr 2013 15:06:35 +0100 Reply-To: Mailing list for the LaTeX3 project Sender: Mailing list for the LaTeX3 project From: Joseph Wright Subject: Re: Behaviour of \SplitArgument with missing input To: LATEX-L@LISTSERV.UNI-HEIDELBERG.DE In-Reply-To: <517F9214.9030103@residenset.net> Precedence: list List-Help: , List-Unsubscribe: List-Subscribe: List-Owner: List-Archive: Content-Transfer-Encoding: quoted-printable X-MIME-Autoconverted: from 8bit to quoted-printable by relay2.uni-heidelberg.de id r3UEi4pk022472 Envelope-To: X-GMX-Antispam: 0 (Mail was not recognized as spam); Detail=V3; X-GMX-Antivirus: 0 (no virus found) X-UI-Filterresults: notjunk:1;V01:K0:Rx5ln8JzeOA=:0oOY3V9MkEWcITrppGw1t7 PaJOdsQFASaqBH1TJpOMZSsLwV5ugfx8Ym4BTx36ZH9IeE0MHBWZGs22XuOIiZjPV0Auqit KoJCxRWnSvrtU0yJn4beBQQ4nbEBt2o+zFalP2pvUOf0Wmfdm0GmlHe6Xz9M5qIlejesd5l nuf68mBS7DwmZ1ufk37hn2DpQLwJHE97IZaqFLTmq80wWZNDoVVpZV4j9HRUMMK3AJiSGx/ jtAQqmz//L/a21x/KurcwbWRyJtjKHURG1fVT3wPbS8i9pvmazMKS5pEeL9eNlvbsDXrRfE NrG4Bi9I4Twdba5zkb+8qDhERJ/2ivptSdIPWOJsur8WnNYu3O/MlZTtTYgAGxP5OfGjtOM i5sPUToGZLJW/UAchvxwkKjmIoaj7igptVxxD/FofpmPzujrCyAGKEWsw4Hxv7PjPKQxqpG lx5Xhvm292e2gdVqL5/48u2Ry4+JW3SvdDrXhllIj8UabsZj2j+l2ZodJPMWm638XApKy/V xj2GSctDXxzCeRGM1swwhmLBV/0eGJZ6b1uIyqrUnowiTgLQtFG0InzhSoUUKHzsq6r6W3I 7CRCWmilRRKq+8ATpr63RZJKDuj0DiNLUBtPzNelv9jQ96Khr+fgcym22lyf9FgONtBcrn+ aPtm/C7wVfI7HWKzJ8c0Z1oTpWXfzsYSQthxzfc2n+t/2uCKVglL0YWI7r1Z4qLP3J3CnVV ZUBsCnNtukxC4hJ2dbdSNad58WKa61U8/RM9iW8e6a8meMfQtW/wlkHvvcJbA6X01Ll5T9o I9N40HsphCmnoc6o7IOSfzVdUHDYArQ0L2LtzOTmiZlLoqBcpXCN6c54mHYuZL7D6a/E7EO 7tm90s74eNSJXHPFtBTXbmrATkd19tsoVSbsZL2djavmFvpETCrYkpLGwB3yLwnMymqSGJ5 ay4W06OPI+yRyN+vLyXVozpsAsPhvizn+SZY7XwGzdX5A2tAfIi77ZtbebcSkl2wmEdLQIo rSvr2rgEpVJ8mujFKrwN50+n80ZU8JTK2cP6ntuGn3JDyrF8l4VdTt6F0TayRPyeEDKe0oz IT4XBJDz/A3mmRFJBFmMNh3vjlbTbIBc7R0ZOxteYapJlIbyuraL8Hp9Fgiu/zftDFJJDi9 eqOnL1Z42WuBIWQ00of3CUqMIXx4F/0PurPk1GdYqfo+Jr6xaDHlz9V/jS+Ggb7Q1pKcIFR syegeKxQjK1CGAw3r7zuxEWAQDjjXIZJviOpsLAXEH29n9M9QQTTHTrx0+0LQKC3eRbwk8H u+oQrCo+YxDKtAmhthpHCtKfbrjgNcb9R8wWjnYp3FyV+BbT1VWLT/UeusyAuK0V1i/DE1l VPP9HTsVO4wrS3fmTbGwIhjpp+FQ5CRZTFnP/mbG1h1W8BXYL5qwgwBBEaKJtHvLpYqu+o5 idpsUa0T03Gd1KRvchfWY5scmBuHg1dhL0872Ri/6IhsQLt+uIcilFI4jeR6FREQ8NHi4ss dwJhKyHcBcyh3TWi7cxBhkUj5WjoxF/i/1PScLagBIHsZrD1RDaR2jwUjBf0hu8vmeZ1Ve4 J3ehD9i5/KNTCI6UbqQTWl4/FHePeZSuLU3XWewwdCBEkLCHw1gDCMKh9aYMTP2GsiVxSuG Lj+Th+QUI X-UI-Loop:V01:WXCRRn9EWgw=:TWBKwXRmmeY818X0FdpDwD2YMrTFLl5N745wi0Zkn/4= Status: R X-Status: X-Keywords: X-UID: 7199 On 30/04/2013 10:42, Lars Hellstr=F6m wrote: > IMHO, the notion that "one cannot use \IfNoValueTF at the code level > because that is a high level command" is utterly bizarre. That many > low-level features should not be exposed in a high-level context is one > thing, but also doing the converse is usually a sign that one's design > is flawed somewhere. When a sensible representation of a fundamental > concept (missing value, boolean true, boolean false, etc.) can be > exposed at the high level, then that representation should be used also > at the low level to the extent possible. >=20 > To me, it is intunitively correct that a \SplitArgument { 2 } { ; } on > {bar} should yield two NoValues, since clearly two more pieces of data > were expected but not provided. It also seems that you may want to > provide some variant of \SplitArgument that supplies default values whe= n > nothing explicit is given. For \ang{;;}, one > would probably want 0 (i.e., fixed value like for classical \newcommand= ) > as default. For \cline{-}, one would probably want the other > value to be the default (a classical feature of \section and friends). > So that might be two siblings of \SplitArgument. Providing optional values is another question: we can tackle that a bit later (I hope). On where '-NoValue-' 'lives', the current approach is that it's an xparse-only concept as it's provided by xparse and so not available if you use \RequirePackage{expl3} you can't use it. An alternative view is that it's a more general marker which can then be defined at the token list level, with a test \tl_if_no_value:n(TF) [or similar: have to watch clash with \quark_if_no_value:n(TF)]. This test would then be a code level equivalent of \IfNoValue(TF). This seems to make some sense to me, although I wonder if using \SplitArgument (design-level) along with a code-level test is 'correct' in terms of separation of layers. --=20 Joseph Wright