序言与外部样式文件 - 相同的代码在后者中不起作用

序言与外部样式文件 - 相同的代码在后者中不起作用

todonotes我在使用及其TikZ库时遇到了以下问题externalize。如果我的文档不包含\todo,那么它可以很好地编译,并且似乎是 TikZ 的外部化解决了这个问题。但是,一旦\todo文档中有 ,其中一些就会编译失败。

如果我围绕这样一个问题\todo如下:

 \begingroup
  \tikzexternaldisable
  \todo{Note's content}%
  \tikzexternalenable
  \endgroup

然后编译又顺利通过了。所以,下一步自然是重新定义\todo。因此,在序言中我添加了以下内容:

\makeatletter
\renewcommand{\todo}[2][]{%
  \begingroup \tikzexternaldisable
  \@todo[#1]{#2} \tikzexternalenable
  \endgroup}
\makeatother

一切似乎都正确。我遇到的问题是,我把所有的前言都塞进了一个单独的.sty文件中。当我将最后一个片段移到文件中时.sty,问题又出现了。(最后一个片段来自这个答案)。否则,.sty据我所知,文件可以正确加载。

概括:我的问题是为什么相同的当代码位于“主”文件中时,其行为符合预期,但当将其移动到已正确加载的样式文件中时,它就不再起作用了。我猜这与 either TikZnor没什么关系todonotes- 但我提到它们是因为它们在我的案例中造成了问题。

答案1

从你的问题中看不清楚,但在包文件中只是

\renewcommand{\todo}[2][]{%
  \begingroup \tikzexternaldisable
  \@todo[#1]{#2} \tikzexternalenable
  \endgroup}

我怀疑您将其放入\makeatother其中会颠覆其含义,@从而破坏包中对其的任何后续使用。

相关内容