
En TeX, cada uno de los 256 bytes tiene un número entero asociado \lccode
y un \uccode
, en el rango [0,255] que indican, entre otras cosas, cómo \lowercase
actuar \uppercase
. Por supuesto, hay muchos otros números (código matemático y código cat, por ejemplo), pero aquí me estoy centrando en los códigos que cambian entre mayúsculas y minúsculas.
Una mirada al TeXbook me informa sobre los siguientes usos de \lccode
y \uccode
:
\lowercase
<general text>
convierte cada token de carácter en el argumento en un token de carácter con el mismo código de categoría, pero un código de carácter igual al\lccode
código de carácter original, a menos que\lccode
sea cero, en cuyo caso, se conserva el código de carácter original.\uppercase
<general text>
se comporta de la misma manera, usando en su\uccode
lugar.Al separar guiones, TeX toma los caracteres que llegan a su estómago (ya sea de tokens con código de categoría 11 o 12, o de tokens chardef'd, o char), y define una "letra" como un carácter distinto de cero
\lccode
. Una letra es minúscula si\lccode
es igual a su código de carácter.
¿Esto es todo? En particular, ¿TeX utiliza the \uccode
para algún propósito distinto del \uppercase
primitivo? ¿Qué pasa con otros motores, pdfTeX, XeTeX y LuaTeX?
Respuesta1
El carácter \lccode
de un carácter se utiliza en la separación de palabras cuando \uchyph
se establece en cero:
\documentclass{article}
\begin{document}
\uchyph=0 %
\begingroup
\lccode`\C=`\C
Some filler text.
Some filler text.
Some filler text.
Some filler text.
Capitalised word.
\par
\endgroup
\begingroup
\lccode`\C=`\c
Some filler text.
Some filler text.
Some filler text.
Some filler text.
Capitalised word.
\par
\endgroup
\begingroup
\uccode`\C=`\C
Some filler text.
Some filler text.
Some filler text.
Some filler text.
Capitalised word.
\par
\endgroup
\begingroup
\uccode`\C=`\c
Some filler text.
Some filler text.
Some filler text.
Some filler text.
Capitalised word.
\par
\endgroup
\end{document}
Tenga en cuenta que, \uchyph
por lo tanto, el nombre es engañoso, ya que lo que se prueba es si la palabra comienza con una letra minúscula (una igual \lccode
a ella misma).
Respuesta2
Las letras dentro de \patterns
se asignan a través de \lccode
. De hecho, ese es el único mecanismo mediante el cual se pueden especificar patrones de separación de palabras, incluidos - y/o 0-9, ya que escribirlos literalmente los interpretará como prioridades de separación de palabras o puntos de separación de palabras.
hypht1.tex
menciona este truco en la sección de comentarios inicial.