Received: from mout.gmx.net (mout.gmx.net [212.227.15.18]) by h1439878.stratoserver.net (8.14.2/8.14.2/Debian-2build1) with ESMTP id s2VGcENP021980 for ; Mon, 31 Mar 2014 18:38:15 +0200 Received: from relay2.uni-heidelberg.de ([129.206.210.211]) by mx-ha.gmx.net (mxgmx008) with ESMTPS (Nemesis) id 0M0d1K-1XKq4c06JS-00utCn for ; Mon, 31 Mar 2014 18:38:09 +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 s2VGZCnu006269 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Mon, 31 Mar 2014 18:35:12 +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 s2VEPebI017450; Mon, 31 Mar 2014 18:35:12 +0200 Received: by LISTSERV.UNI-HEIDELBERG.DE (LISTSERV-TCP/IP release 16.0) with spool id 10871629 for LATEX-L@LISTSERV.UNI-HEIDELBERG.DE; Mon, 31 Mar 2014 18:35:12 +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 s2VGZC5S012569 for ; Mon, 31 Mar 2014 18:35:12 +0200 Received: from csep02.cliche.se (csep02.cliche.se [195.249.40.184]) by relay2.uni-heidelberg.de (8.13.8/8.13.8) with ESMTP id s2VGZ2J6006064 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Mon, 31 Mar 2014 18:35:05 +0200 Received: from nova-2.local (unknown [130.243.94.123]) by csep02.cliche.se (Postfix) with ESMTPA id DD85272912 for ; Mon, 31 Mar 2014 18:35:01 +0200 (CEST) User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; sv-SE; rv:1.9.2.28) Gecko/20120306 Thunderbird/3.1.20 MIME-Version: 1.0 References: <533473A9.3020401@residenset.net> <53387AD3.4060902@morningstar2.co.uk> <533965E4.2060205@residenset.net> <53398E5F.8020507@morningstar2.co.uk> Content-Type: text/plain; charset=ISO-8859-1; format=flowed X-MIME-Autoconverted: from quoted-printable to 8bit by listserv.uni-heidelberg.de id s2VGZC5S012570 Message-ID: <53399A18.9040401@residenset.net> Date: Mon, 31 Mar 2014 18:38:48 +0200 Reply-To: Mailing list for the LaTeX3 project Sender: Mailing list for the LaTeX3 project From: =?ISO-8859-1?Q?Lars_Hellstr=F6m?= Subject: Re: harmless package public beta To: LATEX-L@LISTSERV.UNI-HEIDELBERG.DE In-Reply-To: <53398E5F.8020507@morningstar2.co.uk> 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 s2VGZCnu006269 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:QBgDqoheWcU=:nIVgXHjpWGC8lIDVu16eOf7zKa lHxhrPkkqfrPTFVvMuMZ79YjaQnnHA9TDItQ/qfDcxQqUX9SEluGbrMvEnpw6WhUDEDVfS70R jp9IH3pJX9eBUwZjXPZr2KPKzDNYf6SgZemOT2CCm+FVBxacJ/TDuVeM/Xy3ZGOXiqBFcjwHS Pv+19bVEgLX+8GWqOYuAcXXa6KHRouLt7b1a06RXuU+4Tx3ptjzpOdA4NV/oahsuK4B+4+lV/ sXSgq24vh1lEc5YdczZC7cmHtbozDRt81lA/uLbb0JbAyrSWG47Yc7hF15E1EcDBQUTtWHVDV Sir38sUwG9Bqdsm3e/TGrVDuy/1ChZr9TRJSHSmux3yY+jySdbn69Q9aDl2r70xYKUOm3iCJS b1y03L0IrbRZ6Lj6hfezuJngNL/jHyz/J/XlvEJyUiAD5QKSQuVQs50TBJottomQDk7DUuEMj hcUKY6fA7eRDn2dTMxdrRA7sJaBDU8dZKp1EgYKfoGFcc8OGuypqPMK/FHiHP+89a+uTL6Dyg cgw81RvfYLMqA/fRYrCYHJUR5DHQk9k8rCeVaUEjWVBdNdM5UN8nawvXNUSBg4TmnzQtdzbBM EhcIif8PAvmXOSar3l4r412ZkszLluuREQ1f8ZFPTxTsf3q42cAZezrhB2Aq4GxkB4G4mhH01 ehur7EyF9PiB90mykpPORxMcV5LbmWxgPINXInRRdATMXtjcp+ZlAuYH3yfI0/G22TdmJPMbv Dk2J6rIn2bhjSLWsSTDAarjfu18NFXgR9qtSznGRtI1YZtqK50Y00vVAPg/P4+7mywv56mhSn i+p3CDUFbIB6sqDoshuFbT8nGb3Xsxo/7VfDCS28x7HEY4jJ6ksqJqYqBUtcdne0s/DP/VIgf FtTTjNWiEs2+XUz7JLD3sqMwbK34bMt/j8hMvfhoN8LAu9+CkXm5oGTmYt9hqxDuBtKC5jgZ2 RmrdE8LZxhPw06SJ/nQgqAlxqjE4L/HWTFL6z1zopXmKkdahIUFeo090XvgceJnuSmGGUdiX2 +6uwDKg/7/3OQF9pJaPsGKl1+v9zUwsB+eTBPFM2EgL3hJZPCZOzTGbp/JIaUYxNcHhNnORm7 ULlsrSUFpETMK5XfTOwVz/vXHpO7DSwSd8fIwAWAzrDZy1z4vdgTV11knq0lVpVjjhAjyPAwR T6S4Kbgw+JQKtbkm5TzsbwTI6E5vCjD4YvIpGCPpr7YMmjKR/wh6g+nRhIrEEfoggcbORk0rh KOI/8VCnx/U5wfjgUWC77aN2qtr1HsKPVJQWWKrbRSXwncoZ63QrcDJn2fB5pVvYjdEMoGG5n 7eefP0nI7BnK78f4lEPfWafhsfwDT2ITS0i5RDo784KbuJ5kJ8PFtzjeaGwDsnw6COU5Yi+54 KKp/s65mZ4QwSQqCPrlStTwINb+P12LnnE0KbEXkbRllap/XbX1ojCvNtuXRRUY7kCSX6pe5C rSaT+4pg== X-UI-Loop:V01:DopW8WudTxQ=:gTpIQRbLDggTrACxQOAT4FJyjoP2KBToZRWCQIUoh8I= Status: R X-Status: X-Keywords: X-UID: 7357 Joseph Wright skrev 2014-03-31 17.48: > On 31/03/2014 13:56, Lars Hellstr=F6m wrote: [snip] >>> - \__harmless_quat_split- (etc) - all missing an arg spec, which >>> looks w-type to me >> >> My thinking was that these are "constants" rather than "functions", an= d >> for that reason have no argspec part. Even if one considers them >> functions, they don't take any arguments, so why would they have a w? > > If they are constants then \c__harmless_ ... Now there's a point I missed! >>> I'd also suggest the 'sheep and goats' separation of all commands int= o >>> fully expandable or \protected. >> >> Not sure there could only be those two, but I can certainly change som= e >> \newcommand's into \DeclareRobustCommand's. > > There are very few commands that don't seem to fall into one of the two > categories. (I've perhaps got one set for siunitx, but in a very unusua= l > use case.) Most commands either: > > - Should/can work inside \edef =3D> expandable > - Don't (assignments, ...) =3D> \protected Well, I wonder how that would interact with \harmless_secure_expand:w. > Note this is nothing to do with \DeclareRobustCommand, as those are not > engine-robust. For the time being, I still support TeX 3. >>> (Note: moving the code to expl3 would require quite a bit of work, bu= t >>> that's a different question.) >> >> Beyond the rote substitution of l3names for primitives and 2e core >> macros, is there something particular you think about? (I suspect the >> unimperative coding style could be one issue. ;-) > > A general impression, not least in that you've coded things by hand tha= t > would be done using expl3 kernel functions. The other very obvious one > is that we don't use toks :-) Not at all?! Or just not the likes of \newtoks? > A full analysis would take some time! Understandable. > I forgot one thing before: as you are using the expl3 namespace in a > deliberate way, am I OK to add "harmless" to the prefix list with a not= e > about the use? Yes. >>> More broadly, there are big open questions that >>> some of this is linked to. One is LICR-type input. As you'll see when= we >>> land our 'new' case changing functions, the team feeling on input >>> methods for *new* code is to stick close to the engines rather than t= o >>> the LaTeX2e approach. >> >> You mean a token with character code 229 (U+00E5) is more canonical th= an >> \r{a} as encoding of that character? That's actually close to the way >> harmless would do it (under the \HighCharsUnicode setting). For >> typesetting, there is conversely \UnicodeCharUsesChar. > > In that area, yes. Thinking is currently as follows: for UTF-8 work, > there are two engines which can do the job. Supporting non-UTF-8 input > for chars outside of the 8-bit range is something that 'new' code reall= y > should avoid. That doesn't negate use of inputenc, etc., for 'real > world' cases now but does suggest that for new code we might want to > take a different take. For example, the current thinking is that for > 'text level' case-changing functions we will support only 'engine > native' input, which implies that at some stage we'd want to as you say > do mappings for UTF-8 engines going in the \r{a} =3D> U+00E5 direction. > (At a user level, things like \r{a} for a 'one-off' accent remain usefu= l > even with a UTF-8 engine.) As a data-point here, I should perhaps mention that I have for some years= =20 been using the \r and \" accents even when I write swedish text in LaTeX = --=20 the reason being that I've remapped the =C5=D6=C4 keys to \{} since the l= atter are=20 more frequently needed. And when you don't have a character conveniently=20 available on the keyboard, it doesn't make that much difference that UTF-= 8=20 can encode it prefecty fine, if you cannot conveniently type it! Lars Hellstr=F6m