Para que são usados ​​lccode e uccode?

Para que são usados ​​lccode e uccode?

No TeX, cada um dos 256 bytes possui um número inteiro associado \lccodee um \uccode, no intervalo [0,255] que indica, entre outras coisas, como \lowercasee \uppercaseagir. É 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 \lccodeand \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 \lccodecódigo de caractere original, a menos que \lccodeseja zero; nesse caso, o código de caractere original é mantido.

  • \uppercase <general text>se comporta da mesma maneira, usando o \uccodeem 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 \lccodeigual ao seu código de caractere.

Isso é tudo? Em particular, o TeX usa o \uccodepara qualquer finalidade diferente do \uppercaseprimitivo? E quanto a outros motores, pdfTeX, XeTeX e LuaTeX?

Responder1

O \lccodede 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 \uchyphnome é, portanto, enganoso, pois o que é testado é se a palavra começa com uma letra minúscula (uma igual \lccodea si mesma).

Responder2

As letras dentro de \patternssã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.texmenciona esse truque na seção de comentários inicial.

informação relacionada