
Wie kann ich das ungefähre Äquivalent implementieren, \def\macro{expansion}
sodass der Makroname Leerzeichen und andere Unicode-Zeichen enthalten kann? Ich möchte beispielsweise Folgendes tun können:
\defineinsert{qty: β2 activity}{\SI{1.85}{\mega\becquerel}}
[...]
The measured activity was \insert{qty: β2 activity}.
$R_\beta = \insert{qty: β2 activity}$
Produktion
The measured activity was \SI{1.85}{\mega\becquerel}.
$R_\beta = \SI{1.85}{\mega\becquerel}$
Die Motivation besteht darin, viele geordnete „Makros“ in vorab definieren zu können, um sie im gesamten Dokument verwenden zu können, ohne dass die Einschränkung gilt, dass Zeichen nur sein dürfen [a-zA-Z]
, wie es bei der Verwendung \def
zur Definition tatsächlicher Befehle auferlegt wird.
Ich habe keine Ahnung, wie ich das implementieren soll, da ich nicht weiß, wie man mit TeX Schlüssel-Wert-Zuordnungen erstellt … oder ob das der richtige Ansatz wäre.
Gibt es vielleicht eine andere Möglichkeit, diesen Bedarf zu decken? Sollte ich dazu LuaTeX verwenden? (Derzeit verwende ich XeLaTeX.) Vielleicht gibt es dafür ein Paket?
Danke!
Antwort1
Du kannst \csname ...\endcsname
hierfür z.B. mit Hilfe von \@namedef verwenden:
\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}
Der Kürze halber können Sie etwas wie folgt definieren:
\makeatletter
\newcommand\newshortcut[2]{\@namedef{\detokenize{#1}}{#2}}
\newcommand\shortcut[1]{\@nameuse{\detokenize{#1}}}
\makeatother
das wie folgt verwendet werden kann:
\newshortcut{qty: β}{lola}
[...]
Hello \shortcut{qty: β}.