Definición de 'comandos' o 'macros' con nombres Unicode

Definición de 'comandos' o 'macros' con nombres Unicode

¿Cómo puedo implementar el equivalente aproximado de \def\macro{expansion}para que el nombre de la macro pueda contener espacios y otros caracteres Unicode? Me gustaría poder hacer lo siguiente, por ejemplo:

\defineinsert{qty: β2 activity}{\SI{1.85}{\mega\becquerel}}
[...]
The measured activity was \insert{qty: β2 activity}.
$R_\beta = \insert{qty: β2 activity}$

productor

The measured activity was \SI{1.85}{\mega\becquerel}.
$R_\beta = \SI{1.85}{\mega\becquerel}$

La motivación es poder predefinir muchas 'macros' ordenadas para usarse en todo un documento, sin la restricción de que los caracteres solo deben ser [a-zA-Z], como se impone al usar \defpara definir comandos reales.


No tengo idea de cómo implementar esto, ya que no sé cómo se crearían asignaciones clave-valor con TeX... o si ese sería el enfoque correcto.

¿Quizás haya otra manera de satisfacer esta necesidad? ¿Debería empezar a usar LuaTeX para lograr esto? (Actualmente estoy usando XeLaTeX). ¿Quizás exista un paquete para esto?

¡Gracias!

Respuesta1

Puedes usar \csname ...\endcsnamepara esto. Por ejemplo, con la ayuda de \@namedef:

\documentclass{article}
\begin{document}
\makeatletter
\@namedef{\detokenize{qty: β2 activity}}{bllb}

The beta activity \@nameuse{\detokenize{qty: β2 activity}}

The beta activity \@nameuse{\detokenize{qty: β2  activity}}

\end{document}

Para mayor brevedad, puede definir algo como

\makeatletter
\newcommand\newshortcut[2]{\@namedef{\detokenize{#1}}{#2}}
\newcommand\shortcut[1]{\@nameuse{\detokenize{#1}}}
\makeatother

que puede usarse así:

\newshortcut{qty: β}{lola}
[...]
Hello \shortcut{qty: β}.

información relacionada