En E X, ¿cómo es posible dividir una cadena como \mana{X1 2W/UB R /G}
en partes y alimentarlas a otra macro (en este caso, para reemplazar la macro invocación por algo así como \m{X}\m{12}\m{W/U}\m{B}\m{R/G}
), agrupando por reglas muy simples, a saber: a) los dígitos consecutivos forman un grupo, b) una barra inclinada crea un grupo de dos caracteres cercanos, c) los espacios deben ser eliminados por completo?TeX: cadena de análisis y eliminación de espacio en blanco
Probé el paquete substr
pero no fue demasiado útil, solo permitía encontrar ciertas subcadenas. bucles escritos a mano como
\def\lcpass#1.{}
\def\lcloop#1#2.{%
\ifempty{#2}%
#1%
\let\continue=\lcpass%
\else%
\let\continue=\lcloop%
\fi%
\continue#2.}
\def\lastchar#1{\lcloop#1.} % returns the last character of a string
no funcionan cuando la cadena termina en el espacio en blanco, ni soy exitoso con \futurelet
.
En general, ¿cómo se aborda la tarea de analizar cadenas en T E X? Por ejemplo, el paquete texmate
le permite a uno escribir cosas como |1 e4 e5 Nf3 Nc6|
y dibuja automáticamente las posiciones de ajedrez correspondientes. ¿Cómo lo hace? ¿Qué puedo leer sobre el bucle de caracteres en una cadena y otros T E X hacks como este?
¿Qué pasa con mi respuesta? Se ve más pequeño. –
No pasa nada, pero pude descifrar esta solución antes de poder ver la tuya. –