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

相關內容