让宏使用可以动态改变的全局变量

让宏使用可以动态改变的全局变量

假设我有一个如下的序言:

\newif\ifShowThings
\ShowThingstrue

\newcommand{\showcommand}[1]{
\ifShowThings
#1 % if the variable is true, then just print the argument, otherwise do nothing
\fi
}

如果我像这样写序言,那么\showcommand{...}就会被一次定义,这取决于我ShowThings在开始时赋予的值。

我想要的是能够更改ShowThings文档内部的值,以便 \showcommand{...} 根据调用位置的不同而有不同的行为。我该怎么做?

答案1

你的说法是不正确的。正如你所定义的,它会在每次使用时\showcommands检查其值\ifShowthings,它不会在定义点检查它(\ifShowthings甚至不需要在\showcommands定义点进行定义。)

但要注意空格,您当前的定义总是在开头插入一个空格标记。

\newcommand{\showcommand}[1]{%
\ifShowThings
#1 % if the variable is true, then just print the argument, otherwise do nothing
\fi
}

然后您就可以在文档中使用\ShowThingstrue或。\ShowThingsfalse

相关内容