命令制定新命令

命令制定新命令

我有几本书,每本书都有切换/如果(我有切换和如果,因为我遇到了一些其他软件包的问题..)我在我的样式文件中定义了切换,如下所示:

 \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

相关内容