유니코드 이름으로 '명령' 또는 '매크로' 정의

유니코드 이름으로 '명령' 또는 '매크로' 정의

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

관련 정보