Received: from mout.gmx.net (mout.gmx.net [212.227.17.21]) by h1439878.stratoserver.net (8.14.4/8.14.4/Debian-2ubuntu2.1) with ESMTP id t8HAHphd011418 for ; Thu, 17 Sep 2015 12:17:52 +0200 Received: from relay2.uni-heidelberg.de ([129.206.119.212]) by mx-ha.gmx.net (mxgmx102) with ESMTPS (Nemesis) id 0Lgw6E-1YqYTG3cwg-00oEYE for ; Thu, 17 Sep 2015 12:17:45 +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 t8HAFrXE031367 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Thu, 17 Sep 2015 12:15:54 +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 t8H66PNP022907; Thu, 17 Sep 2015 12:15:53 +0200 Received: by LISTSERV.UNI-HEIDELBERG.DE (LISTSERV-TCP/IP release 16.0) with spool id 12534485 for LATEX-L@LISTSERV.UNI-HEIDELBERG.DE; Thu, 17 Sep 2015 12:15:53 +0200 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 t8HAFrCB021627 for ; Thu, 17 Sep 2015 12:15:53 +0200 Received: from ftx-008-i766.relay.mailchannels.net (ftx-008-i766.relay.mailchannels.net [50.61.143.66]) by relay.uni-heidelberg.de (8.14.1/8.14.1) with ESMTP id t8HAFg7X000878 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Thu, 17 Sep 2015 12:15:47 +0200 X-Sender-Id: netnames|x-authuser|joseph.wright@morningstar2.co.uk Received: from relay.mailchannels.net (localhost [127.0.0.1]) by relay.mailchannels.net (Postfix) with ESMTP id 9E6EC1D0184 for ; Thu, 17 Sep 2015 10:15:41 +0000 (UTC) Received: from smtp3.easily.co.uk (ip-10-237-13-110.us-west-2.compute.internal [10.237.13.110]) by relay.mailchannels.net (Postfix) with ESMTPA id 3266D1D025C for ; Thu, 17 Sep 2015 10:15:40 +0000 (UTC) X-Sender-Id: netnames|x-authuser|joseph.wright@morningstar2.co.uk Received: from smtp3.easily.co.uk (smtp3.easily.co.uk [10.42.130.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA) by 0.0.0.0:2500 (trex/5.5.1); Thu, 17 Sep 2015 10:15:41 +0000 X-MC-Relay: Neutral X-MailChannels-SenderId: netnames|x-authuser|joseph.wright@morningstar2.co.uk X-MailChannels-Auth-Id: netnames X-MC-Loop-Signature: 1442484940740:2040829959 X-MC-Ingress-Time: 1442484940739 Received: from [139.222.114.163] (port=61696 helo=[139.222.114.163]) by smtp3.easily.co.uk with esmtpa (Exim 4.43) id 1ZcWE6-0000e1-19 for LATEX-L@LISTSERV.UNI-HEIDELBERG.DE; Thu, 17 Sep 2015 11:15:38 +0100 X-Enigmail-Draft-Status: N1110 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Thunderbird/38.2.0 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-AuthUser: joseph.wright@morningstar2.co.uk Message-ID: <55FA92C9.7020604@morningstar2.co.uk> Date: Thu, 17 Sep 2015 11:15:37 +0100 Reply-To: Mailing list for the LaTeX3 project Sender: Mailing list for the LaTeX3 project From: Joseph Wright Subject: \tl_to_(lower|upper)case:n - Generating char tokens To: LATEX-L@LISTSERV.UNI-HEIDELBERG.DE 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:iX8Cu0FDnrw=:EeZOQcIl4jJw0Pj+2c6XRIKXem kYfRJJ73kZktHi+MkCKMhhNmFEBqPB0aev1UGIORfonbpCWnUymGhKVm1QvBlCg385J0FPKDN c183DqjYv7Hq1t03/jCLwX3ZIonF4A7R3SCu/Fki4WdDZTcXY6SyftvDYSRplElCxXqHZFglA tQHpAJH/GSRl1RkVH5upi4MKxNT2f4DBtjNvOd1cscFr2aevK/BvxZdmFOBwF69rbWRcBtoob OMpyN6cmK+g/JawySVszCQE96SeaueZUWgHw/ZIIWN+K5Vd20KCFgZO8FvYVp8u3QNINuKaUk bjBDkexweFD4cw5lnMP8Jp23+SVJmRohB7QrmEbBZKg70+A2ao8PO03dpPlHcyFfqAC3Kh0OT sMJjR57ltypI6vUG29YsADm5HkJAGHIEesWe3R+8rLW6neop8PIJ6EKc5Jf488jjwc4GOL5wM bj9HqL/bS7Ou5P1N63+LhQS/NTICB3O/CsP3UJRGceiUNbpl2pj3hxHtqzu7kvYyH5geeJCFR uEEExi2lMSxt7X6Hj/S7Jxo4yPJlTI7vdkDwkzlilbb9Y6nLyKbxV7ODaELsMmbJG/5TbRhaK Xn+LHcIB8/xC2y6u5ssNc6KzlwUCKGLNlWQz2malgi2uuZRGDCCIfAj8++zce5RHpuc//StXe oLEBemtheFKe1J5yb1ATsPlnAkcJK+exQNBYnJXBiQ08hSwULjW2ozauVk2LhEAcAiFLSSaL+ FensGmYhr2kMRvAcWCdjlZTLG3+nBu+2GOr78VrpSfxtRDANob6yEf4q6V1d2dPjWVTLEvKzG E3UqOs4GPyZ9TdplT27zG/IR/Z2edOhT1PqajpD11t44xk4wXj+jIcLt40TAolLJ92LUxxc3l +MnciuTIAOaEHSxeE0e8rlif6o3Qf2khpW2sRhW9Niu/YR0ZEu9fb7En9aYFLU+ngy1GauJ2k 3ovT2I3EtrSvs0gifZDErvb8vES2D9v5z53j71ki+MZ8rcPXxJtNAGp89/w79UJ7BgXiD6HvL yo1aUZwEYNrB9/wmkrP54wvwhEPIw4Ds2rNutceEdotTOxJBK2IeGzeh+t8Q9dFf0cnqrt++Z 2ZxcgbjBItaxQzZ/bW2684+ZygUnpPH29A+FqARoD41ls7w5Cw5t40eWP2KwNl7CA4zaKxKZ4 g4VrZhQuO4TrmfwvOPz3E6C1xZfbPcLmcv7t8IE5qsLJmtp4QulhucuRDO/Zzkk5trIw/UUvu j5lbpOw3QkBsS8MVNVQOfIniqsObRVD4vd4sHReOScOdQQuPyp8BRzgE6RCoSwKt3DnKLdDZj uJuMw3sOm9oJ+WX1C98s6sPv0/DT6P5cwkbvb0wl6Rb/88vvHZKYYlbbpiHnj9Eg2EiMQMCSE 2SXpHZF8eectX8zEI0NZgFCow4x0/w445uX/8loEbWQM8SjfCKQNtAqDWyoCTbAnm5IN9Biu3 o0VRcCQelYxtDyD3eKI2NANtnZDXPZj3ef1CdKrp0xxCYk6foDbFcGCEQfFfrXBrpfkwUN/A= = X-UI-Loop:V01:U4XGCHFpGJE=:QvOVrypVUVAyfVtuqmeDUzYNzoPeyT62KKCFgfLGEbI= X-UI-Out-Filterresults: notjunk:1;V01:K0:VmtdFVLcbI8=:w3ibhXTmq8vdfyBRPXgy2I FKg6JcmgD6XFYOPn86Ljr4e5kz/FTZXcdewwgBg+SG2TCLI+ct6PuJKZW6hI4W/SuJNupfVVA KHTthwV0Vd9Njpnvq9NFNHa5CYte695DNAxxRlf3f1iP+90WLoltMGcLTOHXvXhoUlqgSPzSR PaS6JdSB4OHb/9SbUVeYjK9bPIUNzeWG/GsEl+WHkcBsjQ2kW/OVNsVrECOgihekOAWxuKRgt iJZbtQYZK2e4T6mHaWXY0bozXLDyBgaxhIvP3lmY9JLf4V/tkfPYfXG1Ndk6AXJSo/zuPJ6Xr GY827SE/YkUJpdAIWAuBOADxlsMJyzBF/kP6P1qkTMxloM0/wjlMdLo0eAounH7dEh8wTZRog k6jOI9Lp4uFpk3VQfrDmnd//WWgYRf/FNTkSubrDyBLoajCznzadxpUyIDd+fOQPTgYzy4tFo oV2hcEvyZ9mMRoJ97FeFJACm8rX1YN2dgk+nHalXYnp7MVa/7EgI X-Scanned-By: MIMEDefang 2.71 on 85.214.41.38 Status: R X-Status: X-Keywords: X-UID: 7880 Hello all, Some of you may have noticed that the team have not been happy for a while with \tl_to_(lower|upper)case:n. There are a few issues: - The names are wrong as "_to_" is in all other cases used for expandable 1-to-1 type conversions - Using the \lowercase/\uppercase primitives means these functions fail for Unicode case mapping - Using a case changing function for generating odd catcodes is not ideal We've been working on alternative interfaces that allow the required outcomes, and now are just about there. Over the past few weeks, we've added - \char_(g)set_active_eq:NN - \char_(g)set_active_eq:nN for active characters and - \char_generate:nn for creating arbitrary character tokens. The latter covers (almost) all sensible use cases: catcodes 1, 2, 3, 4, 6, 7, 8, 11 and 12. Currently catcode 10 and 13 are not available, but we expect to address at least the catcode 10 case shortly. We have done a sweep over current uses in TeX Live of \tl_to_(lower|upper)case:n and \tex_(lower|upper)case:D and believe we now can deprecate use of \tl_to_(lower|upper)case:n in favour of the above (for odd chars), using x-type expansion and \tl_to_str:n (for catcode 12 chars) or the expandable case changing functions. I've contacted various package authors to ask for adjustments in this regard and will shortly contact the remaining people. We'll also adjust the expl3 internals themselves to use the higher-level functions as far as possible (internally we do need the primitives to set up the interfaces). There is one proviso in the above. On XeTeX, \char_generate:nn uses \Ucharcat if available, and is otherwise limited to the 8-bit range. This means that at present there are a small number of use cases that would break with older XeTeX's if modified to use \char_generate:nn. The team will in time alter the minimum XeTeX version to reflect that but at present the small number of people generating Unicode chars on XeTeX will need to continue to use \tex_lowercase:D. Assuming the above transition can be carried out smoothly, we will formally deprecate \tl_to_(lower|upper)case:n shortly for removal after the end of next year. Regards, Joseph