Necesito convertir una letra a su índice en el alfabeto y a su índice ASCII / Unicode. Y me gustaría tener más de una forma de lograr cada uno de los casos (porque recuerdo que hay más de uno), si es posible.

Primero quería convertir una letra a su índice alfabético (recuerdo algunos de los usuarios aquí me mostraron cómo hacer la conversión hace un tiempo [ya sea en el chat o en la sección de comentarios a una de las preguntas] pero no copié ejemplos y olvidé cómo hacerlo [no puedo para encontrar algo en los archivos]), pero luego decidí agregar el índice ASCII- / Unicode de una letra en la mezcla, ya que este debe ser un procedimiento bastante similar.

Recuerdo algo como "\a para hacer referencia al carácter a pero parece que no puedo hacer que funcione o recordar exactamente para qué se usa. Leeré los manuales en breve, pero en el mientras tanto, tenía sentido hacer la pregunta, ya que puede ser más rápido.

Gracias.

Comentarios

  • La sintaxis es <backtick><character> para obtener el código de carácter de la letra er. Para el índice alfabético, puede restar el índice de a (o A respectivamente).

Respuesta

El TeXBook dice:

Un número en el idioma de TeX puede comenzar con ", en cuyo caso se considera octal, o con ", cuando se considera hexadecimal. Por lo tanto, \char"142 y \char"62 son equivalentes a \char98.

y

El token ` 12 (comillas a la izquierda), cuando están seguidas de cualquier token de carácter o de cualquier token de secuencia de control cuyo nombre sea un solo carácter, representa el código interno de TeX para el personaje en cuestión. Por ejemplo, \char`b y \char`\b también son equivalentes a \char98.

Y estos códigos internos son (del Apéndice C de The TeXBook ):

ingrese la descripción de la imagen aquí

(los números octales están representados en cursiva y los números hexadecimales en letra de máquina de escribir) que es igual a la tabla ASCII.

Entonces, para TeX todo 98, "142, "62 y `b son válidos y representan el mismo número .

El TeXBook también le dice lo que hace la \number primitiva:

  • \number. Cuando TeX expande \number, lee el número que sigue (expandiendo tokens a medida que avanza); la expansión final consiste en la representación decimal de ese número, precedida por «-» si es negativo.

¡Para que puedas agregar ambos y tener lo que quieras! En \number`b, \number lee el número `b y se expande a su representación decimal, 98, que es el código ASCII para b.

Si desea el índice alfabético de dicha letra, puede hacerlo como sugirió siracusa y reste del índice de a (o A, si se trata de letras mayúsculas):

\the\numexpr`z-`a+1\relax % prints 26 

(debe agregar 1 porque `a-`a resultaría en cero). Aquí no necesita el número porque \numexpr ya sabe que `z y `a son números ; solo necesita \the para expandir \numexpr.

Lo mismo ocurre con los caracteres Unicode. \number`₢ (elegido al azar) imprime 8354, que es la representación decimal del punto Unicode U + 20A2. Por supuesto, necesitas XeTeX o LuaTeX para usarlos.

Comentarios

  • Mención de honor: \lccode y \uccode.
  • @ bp2017 Bueno, sí, esos también pueden funcionar. Sin embargo, tenga en cuenta que puede (pero no debería ' t, obviamente) establecer \lccode`b=`a, luego \the\lccode`b será 97, no 98. Además, \lccode`b es (normalmente) igual a \lccode`B, mientras que \number`b y \number`B son diferentes. Además, el \lccode de Los caracteres que no son letras (\lccode`!, por ejemplo) es cero, no el índice ASCII. Lo mismo ocurre con \uccode.
  • Hay ' también \@arabic. (Puede tomar una letra, como `CHAR, y expandirse a un dígito).
  • @ bp2017 Sí porque \@arabic{<stuff>} se expande a \number <stuff>. Y para TeX ‌`CHAR no es ' t una letra (aunque parece una), pero un número . Esa ' es la razón por la que \number (y \@arabic) funciona.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *