Sou novo no LaTeX, então não tenho certeza de como proceder com isso. Estou tentando ter versões diferentes do mesmo documento, dependendo de quais variáveis estão definidas. O que eu quero é alterar todo o documento alterando uma linha.
Até agora, tenho tentado algo que encontrei em um modelo, mas não consegui fazê-lo funcionar.
\newif\if@thing\@thingfalse
\newcommand*{\displaything}{\@thingtrue}
Dessa forma, quando eu escrever \displaything
, a variável deverá estar definida. Se algum dia eu não quiser a variável, apenas comentarei esta linha. Então, quero passar essa variável para outro comando, assim:
\newcommand*{\foo}[2]{
\ifthenelse{#1}
{
% do something if set, using #2
}
{
% do something else if not set, using #2 (default)
}
}
A ideia é ter múltiplas \foo
chamadas com mais argumentos e sinalizadores diferentes, e então usá-las assim:
\foo{\@thing}{arg}, \foo{@thing2}{arg}
Talvez essa nem seja a maneira certa de fazer isso, alguma ideia?
Responder1
Eu usaria etoolbox
para isso, em vez de 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}
Responder2
Existem diferentes maneiras de definir condicionais. Ao usar ou definir o valor de uma condicional, você precisa usar a sintaxe correta para a definição escolhida.
Além do etoolbox
método demonstrado na resposta do egreg (que nunca usei), existem pelo menos dois outros métodos muito comuns. Seu problema é causado pela tentativa de usar a sintaxe de um desses métodos ao manipular uma condicional definida usando o outro método.
O exemplo a seguir demonstra os dois métodos:
\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}