
No TeX, cada um dos 256 bytes possui um número inteiro associado \lccode
e um \uccode
, no intervalo [0,255] que indica, entre outras coisas, como \lowercase
e \uppercase
agir. É claro que existem vários outros números (código matemático e código de gato, por exemplo), mas estou me concentrando aqui em códigos que mudam de caso.
Uma olhada no TeXbook me fala sobre os seguintes usos do \lccode
and \uccode
:
\lowercase
<general text>
transforma cada token de caractere no argumento em um token de caractere com o mesmo código de categoria, mas um código de caractere igual ao\lccode
código de caractere original, a menos que\lccode
seja zero; nesse caso, o código de caractere original é mantido.\uppercase
<general text>
se comporta da mesma maneira, usando o\uccode
em vez disso.Ao hifenizar, o TeX pega todos os caracteres que chegam ao seu estômago (ou seja, de tokens com código de categoria 11 ou 12, ou de tokens chardef'd, ou char) e define uma "letra" como um caractere diferente de zero
\lccode
. Uma letra é minúscula se for\lccode
igual ao seu código de caractere.
Isso é tudo? Em particular, o TeX usa o \uccode
para qualquer finalidade diferente do \uppercase
primitivo? E quanto a outros motores, pdfTeX, XeTeX e LuaTeX?
Responder1
O \lccode
de um caractere é usado na hifenização quando \uchyph
é definido como zero:
\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}
Observe que o \uchyph
nome é, portanto, enganoso, pois o que é testado é se a palavra começa com uma letra minúscula (uma igual \lccode
a si mesma).
Responder2
As letras dentro de \patterns
são mapeadas por meio de \lccode
. Na verdade, esse é o único mecanismo pelo qual se pode especificar padrões de hifenização, incluindo - e/ou 0-9, já que escrevê-los literalmente os interpretará como prioridades de hifenização ou pontos de hifenização.
hypht1.tex
menciona esse truque na seção de comentários inicial.