선택적 매개변수가 있는 새 명령이 있습니다. 매개변수가 비어 있는지 여부에 따라 표시가 달라지기를 바랍니다. 테스트가 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&\else (#1)\ifx&\else (#2)\ifx&\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}