다중 테스트 if 또는 Case

다중 테스트 if 또는 Case

선택적 매개변수가 있는 새 명령이 있습니다. 매개변수가 비어 있는지 여부에 따라 표시가 달라지기를 바랍니다. 테스트가 1개일 때는 문제 없이 관리하는데, 테스트가 여러 개일 때는 어떻게 진행해야 할지 모르겠습니다.

3개 매개변수 포함: 2개 매개변수 포함 H(1)(2)(3) 표시(세 번째는 비어 있음): 단일 매개변수 포함 (1)(2) 표시(2와 3은 비어 있음): H(1 표시) )

답변1

이것이 당신에게 도움이 되기를 바랍니다.

패키지 ifthen는 LaTeX에서 조건문을 생성할 수 있습니다. 비어 있는 인수에 따라 다른 출력을 표시하는 세 가지 선택적 인수를 사용하여 명령을 정의하는 방법을 볼 수 있는 다음 예를 살펴보십시오.

\usepackage{ifthen}
\newcommand{\mycommand}[3][]{%
  \ifthenelse{\equal{#1}{}}{}{H}%
  \ifthenelse{\equal{#1}{}}{}{(#1)}%
  \ifthenelse{\equal{#2}{}}{}{(#2)}%
  \ifthenelse{\equal{#3}{}}{}{(#3)}%
}

이 명령은 세 개의 인수가 모두 제공된 경우 H(#1)(#2)(#3), 처음 두 개의 인수만 제공된 경우 (#1)(#2), 인수만 제공된 경우 H(#1)를 표시합니다. 첫 번째 인수가 제공됩니다. 이것이 당신이 찾고 있던 것입니까?

답변2

어쩌면 당신은 이렇게 하고 싶을 수도 있습니다:

\def\H#1#2#3{H\ifx&#1&\else (#1)\ifx&#2&\else (#2)\ifx&#3&\else (#3)\fi\fi\fi}

\H{a}{}{}    % prints H(a)

\H{a}{b}{}   % prints H(a)(b)

\H{a}{b}{c}  % prints H(a)(b)(c)

\bye

답변3

여러 개의 선택적 인수를 사용하는 것은 다소 불필요해 보입니다. 더 많은 옵션 인수를 사용해야 할 경우 해당 선택성이 필수로 전환되기 때문입니다. 물론 구문을 변경하지 않는 한.

매크로에 대한 LaTeX3 인터페이스를 사용하면 for 인수(또는 특정 쌍) \NewDocumentCommand를 사용하여 (여러) 선택적 인수를 쉽게 협상할 수 있습니다 . 테스트는 (또는 아무것도 제공되지 않을 때 아무 것도 수행할 필요가 없는 경우 더 간단하게 ) 을 사용하여 수행됩니다 .o[]d<token><token><token><token>\IfValueTF{<arg>}{<true>}{<false>}\IfValueT{<arg>}{<true>}

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

\documentclass{article}

% \mycommandA uses the default [] for optional arguments
\NewDocumentCommand{\mycommandA}{ o o o }{%
  \mathrm{H}
  \IfValueT{#1}{(#1)
    \IfValueT{#2}{(#2)
      \IfValueT{#3}{(#3)}}}
}
% \mycommandB uses () for optional arguments
\NewDocumentCommand{\mycommandB}{ d() d() d() }{%
  \mathrm{H}
  \IfValueT{#1}{(#1)
    \IfValueT{#2}{(#2)
      \IfValueT{#3}{(#3)}}}
}

\begin{document}

$\mycommandA[a]$

$\mycommandA[a][b]$

$\mycommandA[a][b][c]$

$\mycommandB(a)$

$\mycommandB(a)(b)$

$\mycommandB(a)(b)(c)$

\end{document}

관련 정보