Definindo 'comandos' ou 'macros' com nomes Unicode

Definindo 'comandos' ou 'macros' com nomes Unicode

Como posso implementar o equivalente aproximado \def\macro{expansion}para que o nome da macro possa conter espaços e outros caracteres Unicode? Eu gostaria de poder fazer o seguinte, por exemplo:

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

produzindo

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

A motivação é ser capaz de pré-definir muitas 'macros' ordenadas para serem usadas em todo um documento, sem a restrição de que os caracteres devem ser apenas [a-zA-Z], conforme imposto pelo uso \defpara definir comandos reais.


Não tenho ideia de como implementar isso, pois não sei como criar mapeamentos de valores-chave com TeX... ou se essa seria a abordagem correta.

Talvez haja outra maneira de suprir essa necessidade? Devo começar a usar o LuaTeX para fazer isso? (Atualmente estou usando o XeLaTeX.) Talvez exista um pacote para isso?

Obrigado!

Responder1

Você pode usar \csname ...\endcsnamepara isso. Por exemplo, com a ajuda 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 resumir, você pode definir algo como

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

que pode ser usado assim:

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

informação relacionada