Unicode 名で「コマンド」または「マクロ」を定義する

Unicode 名で「コマンド」または「マクロ」を定義する

マクロ名にスペースやその他の Unicode 文字を含めることができるように、 とほぼ同等のものを実装するにはどうすればよいでしょうか\def\macro{expansion}。たとえば、次のことを実行できるようにしたいと思います。

\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: β}.

関連情報