\write 命令生成“不完整的 \iffalse”错误

\write 命令生成“不完整的 \iffalse”错误

我正在使用 LaTeX 生成一份 100 页的文档。每一页基本上都是一个不同的随机生成的身份。在每一页的末尾,我使用命令\write将我生成的一些数据写入外部文档中。

但是,当编译器执行命令时\immediate\write\Query{\Name}%,我收到错误。如果我只是在文档中! Incomplete \iffalse; all text was ignored after line 3002写入,则不会收到此错误。\Name

我需要了解为什么会发生这种情况,这里的问题是\Name我在那里使用的命令实际上是一个相当复杂和大的命令,其中包括我创建的其他命令、很多\ifthenelse命令、\ifcase命令\csname等等......

所以,我很难理解到底是哪个部分导致了这样的错误。

因此,在构建 MWE 之前,了解上述错误的具体含义对我很有用。 不完整是什么意思\iffalse,命令中通常会产生这样的事件\write吗?

答案1

\protect这就是“移动参数中的脆弱命令”错误和LaTeX 中的命令的根源。

如果您想写入\Name文件,那么很简单:

\immediate\write\Query{\string\Name}%

如果你想写一些版本的扩展,\Name那么它会更加棘手,\ifthenelse例如不能通过扩展来工作,因此在扩展时不会扩展到其真或假分支\write

您可以使用

  \protected@write

而不是\write依赖于定义中的所有命令是否\Name都是健壮的。

相关内容