Received: from mout.gmx.net (mout.gmx.net [212.227.17.22]) by h1439878.stratoserver.net (8.14.2/8.14.2/Debian-2build1) with ESMTP id s2VCtZLK020823 for ; Mon, 31 Mar 2014 14:55:36 +0200 Received: from relay2.uni-heidelberg.de ([129.206.210.211]) by mx-ha.gmx.net (mxgmx102) with ESMTPS (Nemesis) id 0MVrUa-1WWjLE42lk-00X6xt for ; Mon, 31 Mar 2014 14:55:29 +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 s2VCqQXk016078 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Mon, 31 Mar 2014 14:52:27 +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 s2V5SLRn009422; Mon, 31 Mar 2014 14:52:26 +0200 Received: by LISTSERV.UNI-HEIDELBERG.DE (LISTSERV-TCP/IP release 16.0) with spool id 10843983 for LATEX-L@LISTSERV.UNI-HEIDELBERG.DE; Mon, 31 Mar 2014 14:52:26 +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 s2VCqQ5a003312 for ; Mon, 31 Mar 2014 14:52:26 +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 s2VCqFZ0015956 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Mon, 31 Mar 2014 14:52:18 +0200 Received: from nova-2.local (unknown [130.243.94.123]) by csep02.cliche.se (Postfix) with ESMTPA id AC06972951 for ; Mon, 31 Mar 2014 14:52:14 +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> Content-Type: text/plain; charset=ISO-8859-1; format=flowed X-MIME-Autoconverted: from quoted-printable to 8bit by listserv.uni-heidelberg.de id s2VCqQ5a003313 Message-ID: <533965E4.2060205@residenset.net> Date: Mon, 31 Mar 2014 14:56:04 +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: <53387AD3.4060902@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 s2VCqQXk016078 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:N2VdCbSBk1Q=:ONXBYJcM5aCrqdox/w41830HBz vJgaPs05QRtgVzWIKXGbOIcHT8To6pRjDT4x/NgmTeA4UAvnX0spYW/3qWPkI8vfL6JBcy5lV sP2l+k0VcBFrcXwHDcrz9IpLbGFCAVPGLEYxy6NBKO+R/eu6jhPJkLptQqbwFlBXmLTP1eE0I HTmHf1mZmVvePJWgQjDfNndJH5z9oyBaCdXGqeo+l6CNRlKSUVeZwwHEEpzRjahcfBPfHflp6 RekgrdcgC1c4/CI1PGl0aHAVNupJ2msonNAyLKphLZbgu+xCfkfkxvOh2NIpvdnhCFhy8LvYl B4bEe57ivC0Z70iIHsZYpaFUQWY1HPODhtl8eiSvt6YgUkyWmxbHct9niX9fO0Pw4yVyet4Jr P64ddoGLBHaPax32v5Zs8rOvvuip89CGIdJ4YQnRIvoWZl90fcHUkFGh3Htv/JfrWgBjKtWpn y/3DQQ0zTAwR/kmRs/lCqdxi63zUlyKFYfG63wyfCjR6fTnZOnoc7Ee293DZ+h7z/Us8XkGSi imKueh57FWDMnX8m6Cddm1mqJ3B3zsiM71izeEVnYQ4/rmgXnSfGu3t0dErO+B64gHW0wCspK wU/GUGhpboxJN/vxZYL0/s5qSIi1BO//FINSY8NHefGY2t5JL/dXxM3SgBmlHLfKdo4fnXe2a 88RbdOhrAw7IMAM9dBcU01W8HayjWOpSToztEa7PsNZ0WFsZC9fLwzkgzu9aNgVOhts+yxh3K jvPwGybPE/zehRk1LCpJJtFphEB18I1sOLxx3FUj6xhlv7PHOQzuFqRu5uusAlnQlW+lMufMG G+wUkJ66vG9DfagbeaEboL/wY0WYpZby5pBk3M4dc6c7GNg0yI27aa/Hg0AWj73p4q6RusWQC ir5C5D8d74+UA52Qo02avdFdZkHfL/RVMweuzKy4OqeqbnAwRHQj7bylllPSMnBjksFAGDzHw OCvH8W45a/us5nRFihmh0Pst1WXWyQNBWkGI9sL8aAsWXSoFbGdXBWGtgJecnsi75oPy4xWQx X0vrGT6JKMqFb9qVw5oj3/w/blP1cG1il/ZEUchYf8Nn8VAJ2KDbQsj3AwEC2TUv/MaClsvc8 lisJnVJEoRSnT4BhxT1JGR1QGdtXtuFl7MyMi1MuKcvOKRs6ymDyyR3505Bh0gV2ZaTCvgEPe tX4JICQsDbg2DGgfZMHzvmHSrogQRlMioeqs6FhteezPLVgz5JM5/BHW3XBcr7DGYNaDFyqXx 5V4Zj4q6e8dJ+u/zGlxMswvjEAoE+EOv92mZWlgyP18cz2GflCe29G17f5Y3+wV5MJWntEBvR iG0mrE1ZQuUHDswhJZ73bajf41o68UQzWjEBV6Ae2Tv6ftrZSspfCHrAt3t5eucfzcNUUv97A q9a4FfDGh6cdq3MmyPpI8EHvECK/LxXJUmbDKYOxEWuD+UIzs+XfdewU/Kk/KUDhDkTaJbHIw fC1J2+uw== X-UI-Loop:V01:lYnudMScCEQ=:kE09DwPDbiCgQreYaweDE/s27HaUTtUNkonBJNAJiIU= Status: R X-Status: X-Keywords: X-UID: 7355 Joseph Wright skrev 2014-03-30 22.13: > On 27/03/2014 18:53, Lars Hellstr=F6m wrote: >> My reason for posting about it here on LATEX-L is twofold. For one, I >> think it would be a good idea for the expl3 documenting system to >> migrate to this more robust foundation, as I seem to recall there bein= g >> identifiers here and there in expl3 that the present system utterly >> fails to handle correctly. > > I'll come back to this below, but first I'll address your immediate > question :-) > >> The second, more immediate reason is however >> that I'd like a second opinion as to how well I've managed to follow t= he >> expl3 naming conventions; if there is something I misnamed, then it >> would be much better to fix it /before/ uploading a v1.0 to CTAN than >> after (even if that is mostly for the sake of principles; I don't expe= ct >> a huge following anytime soon). > > I think 'mostly OK' is the verdict. I spot a few places things look wro= ng: > > - \harmless_appendto_toks:nn - #2 is a toks, so N-type I think I wanted to allow things like \toks4 as #2, even if I only use it= =20 with \toks@ as that argument. Hence n rather than N; in any case the=20 implementation does not assume a single token. > - \harmless_userboolean:nTF - #1 seems to be a single token, > so again N-type Nope, it is explicitly stated that it also accepts a TF-style conditional= as=20 #1 (e.g. \IfFileExists{foobar.cfg} or \ifthenelse{}), so again= an n. > - \__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", and f= or=20 that reason have no argspec part. Even if one considers them functions, t= hey=20 don't take any arguments, so why would they have a w? > I'd also suggest the 'sheep and goats' separation of all commands into > fully expandable or \protected. Not sure there could only be those two, but I can certainly change some=20 \newcommand's into \DeclareRobustCommand's. > (Note: moving the code to expl3 would require quite a bit of work, but > that's a different question.) Beyond the rote substitution of l3names for primitives and 2e core macros= ,=20 is there something particular you think about? (I suspect the unimperativ= e=20 coding style could be one issue. ;-) > On the first point, about code documentation, a few comments seem to be > required. First, while code docs are important to those of us writing > packages, they are not actually that significant for most LaTeX users. > At the moment it's entirely clear that l3doc is a 'series of hacks' > which are there to work in 'l3in2e' mode, and which we can fully expect > to completely revise if/when we have a proper stand-alone situation. > Thus the aim is not to cover everything but to cover enough to allow us > to work on other stuff. More broadly, there are big open questions that > some of this is linked to. One is LICR-type input. As you'll see when w= e > land our 'new' case changing functions, the team feeling on input > methods for *new* code is to stick close to the engines rather than to > the LaTeX2e approach. You mean a token with character code 229 (U+00E5) is more canonical than=20 \r{a} as encoding of that character? That's actually close to the way=20 harmless would do it (under the \HighCharsUnicode setting). For typesetti= ng,=20 there is conversely \UnicodeCharUsesChar. Lars Hellstr=F6m