我正在使用 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
都是健壮的。