매크로 - 입력 변수를 사용하여 명령 호출

매크로 - 입력 변수를 사용하여 명령 호출

프로젝트를 진행하면서 다음과 같은 일을 하면 도움이 된다는 것을 깨달았습니다. 다양한 명령 목록이 있다고 가정해 보겠습니다(단순화).

\newcommand{\AA}{...}
\newcommand{\AB}{...}
\newcommand{\AC}{...}
...
\newcommand{\AZ}{...}

이제 입력에 따라 다음 명령 중 하나를 호출할 수 있는 명령이 필요합니다.

\newcommand{\caller}[1]{\A#1}

위의 예는 작동하지 않습니다. 하지만 그러한 기능이 있는 작업을 어떻게 수행할 수 있습니까?

답변1

로 매크로 이름을 구성해야 합니다 \csname A#1\endcsname.

실제로 많은 패키지 또는 클래스 코드에서 이 구성을 사용하며 두 매크로 모두 실제로 기본 형식 이므로 \csname ...\endcsname에만 국한되지 않습니다 .LaTeXTeX

참고: \AA는 이미 정의되어 있으며 스칸디나비아 문자를 제공합니다. 즉 Å와 같습니다(그러나 명령 이름이 단순화된 것처럼 보이므로 문제가 되지 않을 것 같습니다).

\A#1정의되지 않은 경우 \csname A#1\endcsname로 확장됩니다 \relax. 즉, 아무 작업도 수행하지 않습니다.

\documentclass{article}



\newcommand{\AB}{bar}
\newcommand{\AC}{foobar}

\newcommand{\caller}[1]{%
  \csname A#1\endcsname%
}


\begin{document}
\caller{A}

\caller{B}

\caller{C}

\caller{Z}
\end{document}

보시다시피 \caller{A}작동하고( \AA정의되었기 때문에) \caller{Z}아무것도 하지 않습니다( \AZ정의되지 않았기 때문에).

여기에 이미지 설명을 입력하세요

관련 정보