![让宏使用可以动态改变的全局变量](https://linux22.com/image/479934/%E8%AE%A9%E5%AE%8F%E4%BD%BF%E7%94%A8%E5%8F%AF%E4%BB%A5%E5%8A%A8%E6%80%81%E6%94%B9%E5%8F%98%E7%9A%84%E5%85%A8%E5%B1%80%E5%8F%98%E9%87%8F.png)
假设我有一个如下的序言:
\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