조건을 어떻게 선언하고 명령에 전달합니까?

조건을 어떻게 선언하고 명령에 전달합니까?

저는 LaTeX를 처음 접해서 어떻게 진행해야 할지 잘 모르겠습니다. 설정된 변수에 따라 동일한 문서의 다른 버전을 사용하려고 합니다. 내가 원하는 것은 한 줄을 변경하여 전체 문서를 변경하는 것입니다.

지금까지 템플릿에서 찾은 것을 시도해 보았지만 작동시키지 못했습니다.

\newif\if@thing\@thingfalse
\newcommand*{\displaything}{\@thingtrue}

그렇게 하면 을 작성할 때 \displaything변수가 설정되어야 합니다. 언젠가 변수를 원하지 않으면 이 줄에 주석을 달겠습니다. 그런 다음 이 변수를 다음과 같이 다른 명령에 전달하고 싶습니다.

\newcommand*{\foo}[2]{
  \ifthenelse{#1}
  {
    % do something if set, using #2
  }
  {
    % do something else if not set, using #2 (default)
  }
}

아이디어는 \foo더 많은 인수와 다양한 플래그를 사용하여 여러 호출을 수행한 다음 다음과 같이 사용하는 것입니다.

\foo{\@thing}{arg}, \foo{@thing2}{arg}

어쩌면 이것이 올바른 방법이 아닐 수도 있습니다. 어떻게 생각하시나요?

답변1

etoolbox. 보다는 이것을 사용하겠습니다 ifthen.

\documentclass{article}
\usepackage{etoolbox}

\newtoggle{thing}

\newcommand{\foo}[2]{%
  \iftoggle{#1}
    {%
     --#2--% do something if set, using #2
    }%
    {%
     \fbox{#2}% do something else if not set, using #2 (default)
    }%
}

\begin{document}

% thing is initially false

\foo{thing}{baz}

\toggletrue{thing}

\foo{thing}{baz}

\end{document}

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

답변2

조건문을 정의하는 방법에는 여러 가지가 있습니다. 조건부 값을 사용하거나 설정할 때 선택한 정의에 맞는 구문을 사용해야 합니다.

egreg의 답변(내가 사용한 적이 없음)에 설명된 방법 외에도 etoolbox매우 일반적인 두 가지 방법이 있습니다. 다른 방법을 사용하여 정의된 조건을 처리할 때 이러한 방법 중 하나에 대한 구문을 사용하려고 하면 문제가 발생합니다.

다음 예에서는 두 가지 방법을 보여줍니다.

\documentclass{article}
\newif\iffoo% new conditional defined using method 1
\footrue
\newcommand*{\fooboo}{%
  \iffoo
    {\Huge FOO!\par}
  \else
    {\tiny fooless\dots\par}
  \fi}
\usepackage{ifthen}% method 2 requires ifthen
  \newboolean{bar}% new conditional defined using method 2
  \setboolean{bar}{true}
  \newcommand*{\barboo}{%
    \ifthenelse{\boolean{bar}}{\Huge BAR!\par}{\tiny barless\dots\par}}

\begin{document}
\fooboo
\foofalse% note syntax for foo
\fooboo
\barboo
\setboolean{bar}{false}% note syntax for bar
\barboo
\end{document}

조건부 foos 및 바

관련 정보