我有几本书,每本书都有切换/如果(我有切换和如果,因为我遇到了一些其他软件包的问题..)我在我的样式文件中定义了切换,如下所示:
\newtoggle{printer}
\togglefalse{printer}
\newif\ifprinter
\printerfalse
\newcommand{\printer}{\printertrue\toggletrue{printer}}
并使用命令定义书中的类型\printer
由于我有 70 种不同的产品,我想在我的样式文件中声明一个新产品,然后\newproduct{printer}
Latex 设置上面的行。我该怎么做?
答案1
只需将打印机名称作为参数:
\newcommand{\defineprinter}[1]{%
\newtoggle{#1}%
\togglefalse{#1}%
\newbool{#1}%
\boolfalse{#1}%
\expandafter\newcommand\csname #1\endcsname{%
\booltrue{#1}\toggletrue{#1}%
}%
}
现在\defineprinter{printer}
将执行与您的示例代码相同的操作。
这有点复杂,因为您想根据参数构建命令,因此\csname
需要定义\printer
(或作为参数传递的任何内容)。
使用\newbool
可确保您要定义的布尔值尚未定义。在\newbool{printer}
您拥有\ifprinter
、\printertrue
和之后\printerfalse
,因为在内部\newbool
执行了 a \newif
。