In T E X, come è possibile dividere una stringa come \mana{X1 2W/UB R /G}
in parti e inviarle a un'altra macro (in questo caso, per sostituire l'invocazione di macro di qualcosa come \m{X}\m{12}\m{W/U}\m{B}\m{R/G}
), raggruppando secondo regole molto semplici, vale a dire: a) cifre consecutive formano un gruppo, b) una barra crea un gruppo di due caratteri vicini, c) gli spazi devono essere completamente spogliati?TeX: parsing di stringhe e spaziatura di spazi bianchi
Ho provato il pacchetto substr
ma non è stato troppo utile, consentendo solo di trovare alcune sottostringhe. loop scritte a mano, come
\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
non riescono a lavorare quando la stringa finisce in spazi vuoti, né l'ho successo con \futurelet
.
In generale, come si avvicina l'attività di analisi delle stringhe in T E X? Ad esempio, il pacchetto texmate
consente di scrivere cose come |1 e4 e5 Nf3 Nc6|
e disegna automaticamente le posizioni di scacchi corrispondenti. Come lo fa? Cosa posso leggere sul looping sui caratteri di una stringa e su altri tipi di attacchi T E X?
cosa di sbagliato con la mia risposta? Sembra più piccolo –
Non c'è niente di male, ma sono riuscito a capire questa soluzione prima di avere la possibilità di guardare la tua. –