
マクロ名にスペースやその他の 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: β}.