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 s2FHvRdn021775 for ; Sat, 15 Mar 2014 18:57:28 +0100 Received: from relay.uni-heidelberg.de ([129.206.100.212]) by mx-ha.gmx.net (mxgmx012) with ESMTPS (Nemesis) id 0MTP0B-1WXVhd04QB-00SQ6v for ; Sat, 15 Mar 2014 18:57:22 +0100 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 s2FHqRKF018164 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Sat, 15 Mar 2014 18:52:27 +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 s2EN15sX024042; Sat, 15 Mar 2014 18:52:27 +0100 Received: by LISTSERV.UNI-HEIDELBERG.DE (LISTSERV-TCP/IP release 16.0) with spool id 10759056 for LATEX-L@LISTSERV.UNI-HEIDELBERG.DE; Sat, 15 Mar 2014 18:52:26 +0100 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 s2FHqQw2024851 for ; Sat, 15 Mar 2014 18:52:26 +0100 Received: from smtp2.easily.co.uk (smtp2.easily.co.uk [62.128.146.103]) by relay2.uni-heidelberg.de (8.13.8/8.13.8) with ESMTP id s2FHqKUl019683 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Sat, 15 Mar 2014 18:52:22 +0100 Received: from [109.146.67.144] (port=52648 helo=palladium.local) by smtp2.easily.co.uk with esmtpa (Exim 4.43) id 1WOskt-00056x-PK for LATEX-L@LISTSERV.UNI-HEIDELBERG.DE; Sat, 15 Mar 2014 17:52:19 +0000 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 References: <53248902.4050200@morningstar2.co.uk> <532490E1.4060901@latex-project.org> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Message-ID: <53249353.4050609@morningstar2.co.uk> Date: Sat, 15 Mar 2014 17:52:19 +0000 Reply-To: Mailing list for the LaTeX3 project Sender: Mailing list for the LaTeX3 project From: Joseph Wright Subject: Re: Documenting 'locally added' expl3 variants To: LATEX-L@LISTSERV.UNI-HEIDELBERG.DE In-Reply-To: <532490E1.4060901@latex-project.org> 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:yiH0d7JvCsI=:IyWQPyQBzqcgRLxW7OwJc3W3Yf YXlPeSGrqkrFbO35KqfZo4mvAuD9ReIpjaKociFbZDfdsp4u6IcnnC3NBA53ILowzPCyujiid ZCpzxJ+HOipPBVnwX2xv/ryePE4yYJ+zTTAu7oL9RdQTlUe/W3lbWyMkQ3QmJWH9E2tDAp/u1 isIokSapAj8T8OMoNp+ZKlxDhaTApaSNhynYYgBNDKVaMhDp9kcM9Oubhjn2ZkRpvGERywIwq dZ45AKQKDKqKqb367Uu0d4Jsh97w/XCfzVPdwkclfYJBRjQOh0S1yU4wGh2Fn5yD1h84pblpj Aiz41x2nABzkPEQRimiP7NcZa9VEDrF/Un7JmWOakXjfdxKqPEJuCwf+5mH5Jm/LcSPiUNosp QjnpL411MwprhaUPnBCy6LlC0OHlPfl+9sOKyGTZFvYZU8AmPwYhIKB5YdZLO4fkBaGYSARFm mgTrSOVe+fY7K688mydKtFU3S0gLHbVnUBJgVu5eGQMxl7DFKDtSCT/d0G5lhVMefVYasRaMo WnxSNEaZNsuZqUcK4O9TO0hXlqaWi9moH2LEwSk4/yVsuC94zQturOTuenqVG9XzAJj6Eb7Wh lYTefJO6QCaCBitUkl7zWPsx8yMP66uF0DbLrZ4TUb1QJkQJc32ACSjWS9LfNPycV0jFzFsl5 tOllJP/C+q9sGphULTDH8hDW0HiDA0T1aNqNnN+JQQkZqr/DtLxYW9kW/Md7Fp3EM5pKRi+HO wazXhNyAPs+3tN4f2I6jQordGzEP5eiG+daAzulgM0ODmQpITeG4dxDTiEj/ecgYKV5dX94Cf cS5lHz2wu3lG5TUbZEptb55oW2UV9bZQZezeGEbCoRCeSD8WNf/Xj/q/VwnopMG9Pm7PE9BNo wrIrvHdRj6/aUvMYL/n5PhUAZH3aExtyg9DZq4hLXdqmUxcPsSasAvqTGQQzwZ4dlChXTIgpM Cml5WDbcxtR77PTz9Dy3vSj5KZoxlUXUzWxcCr0tDQMqngOFOGWo+sD0rT0FrpSU1HkWuTLKV Tx4HYDft1TNKl6t5iLgl4SY8KyzQ93jmNYUHGBC61XPPKM3JvtUWmErzufGGlQ01GLam0mTU5 qXrkdDWFaMRciy5wguZ4zemd2sjHOMeNj1yAKWyi7F+dJTJBPHIGSwI+vyog7Ncvf2vxFtcCl o2FxI3qlZSzjRWXU/3VVzijL7ijM/aRgQ46hwP2PlPeRBps+1mWFPGi4g8gKBMuCcE5sfVzLP U5MS6x2X6R8UFMN1wboe5rvFpLh5qBzwqisIqOBqBP4+DP9adzXHIyJEx1YA+FxIs5r+kVwXo SHxhlzljuRrCO5zzdhKbTYb8VXNhCjFCtCHZCdPHDo8AUclIQZBxovlKbnpd9MitGMupZcZsO wlSN1v2cR0/67Kga8QPb3z6bZAbCGiuDYKBwVZfSU+6QZ8t1B1GrEiqvg+SpOtQpQAt17dhK+ oSfXxeqkcfuo1zqKaTfasVO1BaSYU= X-UI-Loop:V01:jE9xp7HWbqc=:ZQCHY5jpxLQO8omU6PiMFbuu+iQAWFZOhEst6X7GC24= Status: R X-Status: X-Keywords: X-UID: 7336 On 15/03/2014 17:41, Frank Mittelbach wrote: >> How do other people see this? > > we are talking about variants of kernel functions correct? Yes and no. While my question applies to functions defined by the kernel, the same could apply to using a function provided by any package author writing expl3 code. For example, in my siunitx v3 code I'm hoping to provide \siunitx_units_format:nN { } which might be taken up by another code author requiring \siunitx_units_format:VN So they would then have the question 'Do I document that I've created this publicly-usable function?' as well. Clearly, the two questions may have different answers as the generality of the kernel code doesn't necessarily apply to individual package authors. > 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 > ****** I've no problem with this position :-) > 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). OK, so no documentation for using \cs_generate_variant:Nn alone: seems perfectly reasonable. -- Joseph Wright