¿Para qué se utilizan lccode y uccode?

¿Para qué se utilizan lccode y uccode?

En TeX, cada uno de los 256 bytes tiene un número entero asociado \lccodey un \uccode, en el rango [0,255] que indican, entre otras cosas, cómo \lowercaseactuar \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 \lccodey \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 \lccodecódigo de carácter original, a menos que \lccodesea 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 \uccodelugar.

  • 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 \lccodees igual a su código de carácter.

¿Esto es todo? En particular, ¿TeX utiliza the \uccodepara algún propósito distinto del \uppercaseprimitivo? ¿Qué pasa con otros motores, pdfTeX, XeTeX y LuaTeX?

Respuesta1

El carácter \lccodede un carácter se utiliza en la separación de palabras cuando \uchyphse 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, \uchyphpor 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 \lccodea ella misma).

Respuesta2

Las letras dentro de \patternsse 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.texmenciona este truco en la sección de comentarios inicial.

información relacionada