morewrites 和 scrwfile 之间的区别

morewrites 和 scrwfile 之间的区别

我已经测试过morewrites,并且scrwfile在我的模板中使用了如此多的写入,以至于如果不加载任何这些包,我就会遇到问题no room for new \write

我发现scrwfile我可以使用更多使用输出的包。就我而言,这些是

  • TikZ 和 pgf (无需外部)
  • imakeidx
  • glossaries
  • fancyvrb
  • listings
  • titletoc
  • todonotes(?)

可能还有更多,但这些是我所知道的\write

从技术上讲,我想知道是否有人可以描述这些包之间的区别,以及是否有办法计算免费\write输出。

答案1

morewrites 和 scrwfile 之间的区别

morewrites 旨在修补

  • 用于创建和写入文本文件的 TeX 原语,即\write\openout\closeout
  • \newwrite用于分配寄存器的宏,\write反过来又使用\openout原语。

scrwfile 旨在修补LaTeX内核提供的用于创建目录、图表列表、表格列表等内容的机制\@starttoc\addtocontents\@writefile

...如果有办法计算免费\write输出

\write按照 分配的最后一个寄存器的编号\newwrite(LaTeX- \@starttoc- \addtocontents- -\@writefile内核机制内部也使用\newwrite)保存在计数寄存器 17 中,其中计数寄存器 17 在分配任何\write寄存器之前初始化为 -1。由于寄存器的编号从 0 到 15,因此您可以让 eTeX 计算通过 分配的此类 寄存器的\write数量。\write\newwrite\number\numexpr15-\number\count17\relax

乌尔里希

相关内容