Определение «команд» или «макросов» с именами в формате Unicode

Определение «команд» или «макросов» с именами в формате Unicode

Как мне реализовать грубый эквивалент, \def\macro{expansion}чтобы имя макроса могло содержать пробелы и другие символы Unicode? Я бы хотел иметь возможность сделать следующее, например:

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

производство

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

Мотивация заключается в том, чтобы иметь возможность заранее определить множество упорядоченных «макросов» для использования во всем документе, без ограничения, что символы должны быть только [a-zA-Z], как это накладывается при использовании \defдля определения фактических команд.


Я понятия не имею, как это реализовать, поскольку не знаю, как можно создать сопоставления «ключ-значение» с помощью TeX… и будет ли это правильным подходом.

Может быть, есть другой способ удовлетворить эту потребность? Стоит ли мне начать использовать LuaTeX, чтобы достичь этого? (В настоящее время я использую XeLaTeX.) Может быть, существует пакет для этого?

Спасибо!

решение1

Для этого можно использовать \csname ...\endcsname, например, с помощью \@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}

Для краткости вы можете определить что-то вроде

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

который можно использовать следующим образом:

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

Связанный контент