Received: from mx0.gmx.net (mx0.gmx.net [213.165.64.100]) by h1439878.stratoserver.net (8.14.2/8.14.2/Debian-2build1) with SMTP id p1D9MiSv007518 for ; Sun, 13 Feb 2011 10:22:46 +0100 Received: (qmail 14696 invoked by alias); 13 Feb 2011 09:22:39 -0000 Delivered-To: GMX delivery to rainer.schoepf@gmx.net Received: (qmail invoked by alias); 13 Feb 2011 09:22:39 -0000 Received: from relay2.uni-heidelberg.de (EHLO relay2.uni-heidelberg.de) [129.206.210.211] by mx0.gmx.net (mx062) with SMTP; 13 Feb 2011 10:22:39 +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 p1D9KVqE019918 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Sun, 13 Feb 2011 10:20:32 +0100 Received: from listserv.uni-heidelberg.de (localhost.localdomain [127.0.0.1]) by listserv.uni-heidelberg.de (8.13.1/8.13.1) with ESMTP id p1CN1CTS023645; Sun, 13 Feb 2011 10:20:26 +0100 Received: by LISTSERV.UNI-HEIDELBERG.DE (LISTSERV-TCP/IP release 16.0) with spool id 1205968 for LATEX-L@LISTSERV.UNI-HEIDELBERG.DE; Sun, 13 Feb 2011 10:20:26 +0100 Received: from relay.uni-heidelberg.de (relay.uni-heidelberg.de [129.206.100.212]) by listserv.uni-heidelberg.de (8.13.1/8.13.1) with ESMTP id p1D9KQHt014342 for ; Sun, 13 Feb 2011 10:20:26 +0100 Received: from moutng.kundenserver.de (moutng.kundenserver.de [212.227.126.187]) by relay.uni-heidelberg.de (8.14.1/8.14.1) with ESMTP id p1D9KMYo003217 for ; Sun, 13 Feb 2011 10:20:25 +0100 Received: from morse.mittelbach-online.de (p54A83264.dip.t-dialin.net [84.168.50.100]) by mrelayeu.kundenserver.de (node=mreu1) with ESMTP (Nemesis) id 0MNhFO-1Plp6N490M-006qrN; Sun, 13 Feb 2011 10:20:22 +0100 Received: by morse.mittelbach-online.de (Postfix, from userid 501) id 7E59770CEC; Sun, 13 Feb 2011 10:20:18 +0100 (CET) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit References: X-Mailer: VM 7.19 under Emacs 21.3.1 X-Provags-ID: V02:K0:gT6HG9xc7tL0yaWAXtkvd9p3NuJ1KVM0oWbojK6crQk 4ymGTfoy61sMsUBJr9TEcIfC6o+BDhYpXW1WtfXUG3UlZuzuuv PxvNwL/U9kLaG/CrQBxYuQr73waXMq0RerSxc6zth9xQmknv/F zpCD97URIO+aqjh/HKiGxG0z1xSGWWGCEWw38MXn3z7A7HQKTx pXcv+pr6kPFzV2W17B5uA== X-Spam-Whitelist-Provider: Message-ID: <19799.41553.794248.532467@morse.mittelbach-online.de> Date: Sun, 13 Feb 2011 10:20:17 +0100 Reply-To: Mailing list for the LaTeX3 project Sender: Mailing list for the LaTeX3 project From: Frank Mittelbach Subject: Re: Expandable versions of \uppercase, \MakeUppercase, \lowercase, \MakeLowercase To: LATEX-L@listserv.uni-heidelberg.de In-Reply-To: Precedence: list List-Help: , List-Unsubscribe: List-Subscribe: List-Owner: List-Archive: X-GMX-Antispam: 0 (Mail was not recognized as spam); Detail=5D7Q89H36p6i75npGen84eVAEFK/syJmFuaL1OLtauwJ5R/kaZ9HAe8peGX1DeqJL7BW4 1X28hmBsSaikXt0ebYfUaHmtXkk7HChP+4IT8tI+yodefY66PMpp/kPudTSzX7BVqDxUGU4uAf/y ckanA==V1; X-Resent-By: Forwarder X-Resent-For: rainer.schoepf@gmx.net X-Resent-To: rainer@rainer-schoepf.de Status: R X-Status: X-Keywords: X-UID: 6596 Bruno Le Floch writes: > Hello, and sorry for the long title (useful perhaps for searching > purposes later on). > > There was recently a question on tex.stackexchange about writing a purely > expandable version of LaTeX2e's \MakeUppercase. Joseph Wright and me > posted two answers with different interpretations of uppercasing, and he asked > me to transfer the discussion to this list. For the code, see > http://tex.stackexchange.com/questions/10805/ > and in particular our two answers. > > His method yields > "\Uppercase{Som{e } {te{x}t} with $math$.}" -> "SOMe te{x}t WITH $math$." > Mine yields: > "\Uppercase{Som{e } {te{x}t} with $math$.}" -> "SOM{E } {TE{X}T} WITH $MATH$." > > Two questions: > - what precise behaviour do we want an uppercase function to have? Note that > we could even provide hooks to let the user choose. (See near the > bottom of this > long email.) > - what do you think of the advantages/drawbacks described below? > In my opinion uppercasing of strings should be transparent to other string manipulation and presentation options. That is should make no difference if I first uppercase some text and then bolden a word inside or first bolden something and then uppercase the whole, eg \MakeUppercase{abc \textbf{foo} xyz} should in my opinion yield "ABC \textbf{FOO} XYZ" However if braces prevent uppercasing I would need to write something like \MakeUppercase{abc \textbf{\MakeUppercase{foo}} xyz} so on the whole I'm against the idea to use braces to prevent uppercasing. Concerning math I would claim that normally formulas should not be subject to uppercasing which is a *text* string feature. in 99.5% of all cases uppercasing a formula renders it invalid. I guess I agree with Will that "case" would be best thought of as a font property ie a glyph representation, that is in NFSS terms a separate axis which contains "uppercase, lowercase, smallcaps, mixedcase". When I designed NFSS in the '90 one of the strange design decisions was to make small caps a "shape" like "italic" rather than a separate axis. But he issue back then (and most likely even today) was that that axis would have been more or less empty because of no fonts properly supporting it. Perhaps this was a wrong decision even back then because shortly afterwards the takeoff of virtual fonts would have allowed us to produce the missing fonts with fontinst fairly easily. frank