빈 인수 생성

빈 인수 생성

나는 Herbert의 답변을 사용하고 있습니다.빈 매크로 인수가 있는지 확인하세요.인수가 비어 있는지 확인합니다. 매크로 인수가 있는지 감지하기 위해 Herbert의 솔루션을 확장할 수 있는지 궁금합니다 \empty. 이것이 실패하면 \ifempty내가 원하는 대로 작동하도록 매크로를 설정하는 방법을 배우고 싶었습니다 . 다음 코드는 \ifempty빈 매크로 인수를 올바르게 감지하지만 \empty빈 인수로 간주하지 않는 것을 보여줍니다. 그런 다음 빈 매크로를 정의하려는 시도가 몇 번 실패했습니다.

\documentclass{article}

\makeatletter
\def\ifempty#1{%
    \if\relax\detokenize{#1}\relax%
        \expandafter\@firstoftwo
    \else
        \expandafter\@secondoftwo
    \fi}
\makeatother

\begin{document}

\ifempty{}{1. empty}{1. nonempty}

\ifempty{\empty}{2. empty}{2. nonempty}

\def\z%
\ifempty{\z}{3. empty}{3. nonempty}

\def\z{}%
\ifempty{\z}{4. empty}{4. nonempty}

\end{document}

답변1

\empty물론 탈토큰화된 것은 비어 있지 않습니다. 네 가지 예에 대한 간단한 설명입니다.

  1. 예상대로입니다.

  2. 처음에 말했듯이 비어 있지 않습니다.

  3. 을 정의하고 있으며 \z그 뒤에는 string 이 있어야 합니다 % \ifempty. 정의가 잘못되었지만 결코 사용되지 않았습니다. 그런 다음 {3. empty}{3. nonempty}일반 텍스트로 작성됩니다.

  4. Now는 \z적절하게 정의되어 있지만 z물론 비어 있지는 않습니다.

단순히 매크로의 동등성을 비교하고 싶다면 \ifx매크로가 더 적합할 수 있습니다.

관련 정보