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 s2FHlgqN021747 for ; Sat, 15 Mar 2014 18:47:43 +0100 Received: from relay2.uni-heidelberg.de ([129.206.210.211]) by mx-ha.gmx.net (mxgmx004) with ESMTPS (Nemesis) id 0MGp4D-1WKm4H2XFR-00DbuJ for ; Sat, 15 Mar 2014 18:47:36 +0100 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 s2FHgWAN017592 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Sat, 15 Mar 2014 18:42:32 +0100 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 s2EN15sT024042; Sat, 15 Mar 2014 18:42:31 +0100 Received: by LISTSERV.UNI-HEIDELBERG.DE (LISTSERV-TCP/IP release 16.0) with spool id 10759042 for LATEX-L@LISTSERV.UNI-HEIDELBERG.DE; Sat, 15 Mar 2014 18:42:31 +0100 Received: from relay.uni-heidelberg.de (relay.uni-heidelberg.de [129.206.100.212]) by listserv.uni-heidelberg.de (8.13.8/8.13.8) with ESMTP id s2FHgVs3024329 for ; Sat, 15 Mar 2014 18:42:31 +0100 Received: from moutng.kundenserver.de (moutng.kundenserver.de [212.227.17.24]) by relay.uni-heidelberg.de (8.14.1/8.14.1) with ESMTP id s2FHgMTc016318 for ; Sat, 15 Mar 2014 18:42:24 +0100 Received: from mittelbach-online.de (pD9FE3C64.dip0.t-ipconnect.de [217.254.60.100]) by mrelayeu.kundenserver.de (node=mreue105) with ESMTP (Nemesis) id 0MNcrq-1WW1Su0AWo-007Drz; Sat, 15 Mar 2014 18:42:22 +0100 Received: from [192.168.123.105] (falco [192.168.123.105]) (Authenticated sender: frank) by mittelbach-online.de (Postfix) with ESMTPSA id F12E228208B for ; Sat, 15 Mar 2014 18:25:15 +0100 (CET) User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 References: <53248902.4050200@morningstar2.co.uk> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-MailScanner-ID: F12E228208B.A38E8 X-MailScanner: Not scanned: please contact your Internet E-Mail Service Provider for details X-MailScanner-From: frank.mittelbach@latex-project.org X-Spam-Status: No X-Provags-ID: V02:K0:8oQz8JYj9UYInuWaOmXJCP3kA7GG9L4knEsLwbng9BM 2X6XnUfA3cQsVB6X+DpcPzibHdrX6CfS7K0TD181ucK8UqGnwu dWw0fdPJCT0lnJp/wERhh25OArsAffCjR2ND1oPsG5fuhodQkz QEWOOeyktPtFy0HPWgTXA0IrnZ3TaTrbqT11UiKU2oMs1VflFC 6dRw6L0u/IbZC7CkL7lpJdvvCFN6RSpcw2Tx1+2BPOTmCKnxL0 G/h3q1cjjUOkUnZSLVnyz/jvjSh7PUW/Ue1XJEYSz0b/s99l9l KpJo5M+w3rt2smLnijNffhwZNtujhzln1E+P3dD92u+wBZUL0/ qYSjMlad4LoD4X4Q+R90d9pkOo5R6nuDBUFbHqDRBjr3F8usOs dGccubXJazexw== Message-ID: <532490E1.4060901@latex-project.org> Date: Sat, 15 Mar 2014 18:41:53 +0100 Reply-To: Mailing list for the LaTeX3 project Sender: Mailing list for the LaTeX3 project From: Frank Mittelbach Subject: Re: Documenting 'locally added' expl3 variants To: LATEX-L@LISTSERV.UNI-HEIDELBERG.DE In-Reply-To: <53248902.4050200@morningstar2.co.uk> Precedence: list List-Help: , List-Unsubscribe: List-Subscribe: List-Owner: List-Archive: 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:QhN6YWOkHNw=:CN7ApKw5egjhcYS81U/Hq7IUEo RCSD2tLcDAzIFJbBc1nlj8f8KUAC9VWJxO58GqQch5Hlmhqezof1jJORaknU/VZ1ngh09lQfI MaK+ZUAo1J8yTE1e3HxFX5CnjuIREgSLtrt4fb3iFnOtbGQg9A67g5kV9sm9WEt64ZU/o+2RW LW2npPjOkjoe69Fts50m9EPNaj8HJL+O35G1EfoxcoeE4DTAEK9VwvCbqKA8BEsrRojXoYn2k eBcMhYVCSpI/Q6BuNuUXdDTYpZDWYDALJjgn1YFIujVL2WoouwphPsFdlOjK7odI+GqQEH98c Bu6mICSXsL2YGK0zf9+y8PaVe/LSwsQ1ft/TDwpXasoB42JBPum6gnmWH3VFR3sUiKGkK0mgj Pd9IJE2jdIIB8ZYHg7me2ArF9xXhuPTWYYE0B4qlEYgsRxsRUxLCgHUMfkiaw7tLH9MHcFIxi D28bKP9NjdrrbSznvku/4dhq8Wt3+bXF43ccEbIPUzI3HP2eb9wc4GfGOjzYv7esiQTBVtJjn v1Tg3vC9SZLR+js/L0CzPsixNpAAwRuTFLm95MK84U/u9+eH7Jg6vHQHpi1Wk0WG9DXUcHCc4 yGjgRw2Mzb8XVxDOWHrfV6eXsVpbyjmVgH1nTMNUMUQzf6cqO+fqBOYs1LFDuDqOCxnSJ3XCo vtfLrs+tewPxdpcNeTMpURO4wn4GX/6Vv7iHlGuYJVMS09lJthYCjkrCRmQQnhh5+XMXJ7CwN Tz6HxMPkbenmy0f9Tz0AyG5gMkwjFYUdGuHfY/pLqqlhoOodrb3Vib/L+FpbLNNtU92e43egO 7RJl5g10eRNP8XITT0m51ZL1EysRYzUhRx2q/W/mNLuI7BOVdTnLAuRZbchfHc8eruIDjSRRW I2lhl97brz5mbmmUIiwmuD6Ipdo/QIyufdy/afpQZ3Xteg0u8viNy21/J1sH1gil10gmokIF2 uA2V0lLmwanJaIVt7QtuRTa9g00j5CsZrwG46nB/izrEAYiZ4kNZMRao9LBVwo7A8NRxdv1Qq qdnySG2rCfmY0bO1ozVROz5FIT6qv8uw8BwoWqO3nhlR0oq2i7A5hH9isZAOlmYpGH9WhoxVv 9kte/FGbBBugRw8K1it4w4BWJL6Z0m4Lbq4i9vlMblc+q9llDREg24HwzGCa+qU8LUgnK60Se a3xhrgTh9LyC+gTTeNb+zdfeBuyeD2czotNyHY2DtyxV5NjQoIl+DM9PmzAsw19iAUoFCO5Zr Sianps3h481p7iT3s6c7Ue44kzh61xZixABVHDHdX/Z77amRhbDKXjoqJJqc4RxNFh4KFd9YT cE1OpCg/cQc0Rqy1K66ta51t/qWsXtX/KxqP5fl0HdJRd+BQjvkwN+irX3Qy+1cggmvu8HRM6 377KuKXTlUOpbflzfGJ/qw/8i5914JJooufNxZEQAs+2REdWahllhMkRK99HLpwfRCAQzRtWC MzpKtDfw== X-UI-Loop:V01:4ntO1vJQ1gU=:v1D73EOwn6FAXE913AqLnqVgqD6cchfrzDJQbqB/OMY= Status: R X-Status: X-Keywords: X-UID: 7335 Am 15.03.2014 18:08, schrieb Joseph Wright: > Hello all, > > I'm currently making a start on v3 of siunitx, and am trying to tighten > up the 'expl3 purity' of the code. One area I'm keen to sort out is a > proper set of documented commands at the code level so people can > exploit parts of siunitx without being tied to the interface layer I > provide. > > Working systematically, I notice that I use a few variants of core expl3 > commands that have to be created. Based on the 'document everything > public' principle, these should be mentioned (they have 'public' > function names). On the other hand, they are 'nothing to do with me' as > all I'm doing is something like > > \cs_generate_variant:Nn \some_team_function:n { V } > > (OK, as I'm on the team they are actually something to do with me, but > hopefully my point is clear!) > > How do other people see this? we are talking about variants of kernel functions correct? My view on this is a follows: ****** Ideally all kernel functions should be automatically available in all variants for all packages to use. ****** We have long time ago decided that this is not a realistic goal (even though in theory it could be achieved). therefore we settled on a slightly modified approach: ****** The kernel provides base functions (ie those with N n) plus a smaller set of variants that are a) generally useful b) and (fairly) consistent in what is provided and what not (so that a programmer can normally guess if a certain variant is already predefined) For all other (undefined) variants a package is supposed to provide the necessary variant using \cs_generate_variant:Nn ****** The \cs_generate_variant:Nn generator is is more or less a no-op if the variant already exists and so it costs nearly nothing if several packages generate the same kernel variant because they need it. In other words, the fact that "siunitx" defines a few kernel variants because it needs them doesn't mean that it "provides" these variants and no other package just because siunitx is loaded should assume that those variants are predeclared. So in that sense they do not make a public appearance in siunitx and should not documented as being provided. Only the kernel itself is providing variants that all packages can and should rely on. If certain variants are being needed (and therefore generated) in many packages we may over time add them to the kernel so that they become available by default and future packages have no need to define them (but if they keep the \cs_generate_variant:Nn lines it wouldn't hurt either). cheers frank