저는 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}