새 명령을 정의하고 로컬에서 호출하는 매크로를 작성하세요.

새 명령을 정의하고 로컬에서 호출하는 매크로를 작성하세요.

\defineThisCommand새 명령을 정의한 \TheCommand다음 이를 로컬에서 호출하는 매크로를 작성합니다 . 코드는 다음과 같아야 합니다.

\defineThisCommand{}{
      \newcommand \ThisCommand{
           #1
      }
      \ThisCommand
}

\begin{document}
    \defineTopicOne{Some text printed}
    \defineTopicTwo{and this too}
\end{document}

마지막에 출력을 생성합니다.

Some text printed

and this too

이 문제를 해결하는 방법을 제안해 주실 수 있나요?

답변1

다음과 같은 것을 의미합니까?

\documentclass[]{article}

\newcommand\defineanduse[2]
  {%
    \newcommand#1{#2}%
    #1%
  }

\begin{document}

\defineanduse\mycmd{abc}

\defineanduse\myothercmd{def}

\mycmd\myothercmd

\end{document}

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

답변2

TeX가 제어 시퀀스를 찾으면 \foo먼저 구별해야 할 두 가지 경우가 있습니다. TeX가 매크로 확장을 수행 중이거나 그렇지 않은 경우입니다. 후자의 경우는 귀하의 상황에서 문제가 되지 않으므로 전자의 경우에 어떤 일이 일어나는지 살펴보겠습니다. 사례는 다음과 같습니다.

  1. 제어 순서에 의미가 할당되었거나
  2. 제어 순서가 정의되지 않았습니다.

첫 번째 경우 TeX는 문맥에 적합한 의미를 사용합니다. \foo매크로이면 확장되고, 토큰이면 \chardef해당 문자가 인쇄됩니다.

두 번째 경우에는 TeX가 중지되고 오류 메시지가 표시됩니다.무시하다정의되지 않은 토큰.

따라서 이전에 여러 매크로를 정의하지 않은 한 원하는 대로 할 수 없습니다.

\newcommand\defineThisCommand[1]{\newcommand\ThisCommand{#1}\ThisCommand}

필요한 모든 로컬 명령에 대해. 이는 명백히 귀하의 의도에 어긋납니다. \defineOtherCommand이전에 정의하지 않았다면 가질 수 없습니다 .

사용할 전략은 다음과 같은 일반 매크로를 사용하는 것입니다.인수:

\newcommand\define[2]{%
  \newcommand#1{#2}% define the local command
  #2% and also use it now
}

당신이 말할 수있게 해주는

\define\ThisCommand{whatever}

당신이 원하는 것을하기 위해.

관련 정보