没有空间容纳新的 \read/\write

没有空间容纳新的 \read/\write

我已经搜索了很多关于它的内容,似乎没有办法增加 (La)TeX 可以打开的文件数量。例如,给出错误信息的解释。我也见过一些 解决方案针对此问题,但所有这些都是专门针对图形而不是文件。

因此,基本上,我想打开多个文件,目前总数可能超过 16 个(这是当前的限制),并且还有一些也使用一些插槽的包。对我来说应该至少有两个可能的解决方案:

  1. 增加可同时打开的文件数量。然而,这是一种低效的做法。
  2. 关闭文件并将其从寄存器中完全移除。我注意到使用命令\closein\closeout不会释放寄存器中的空间。打开一个新文件仍将填充下一个插槽,而不是覆盖已关闭的文件。对我来说,最多可以同时打开 2 个文件。(不过我使用包datatool,它可能也使用至少一个插槽)

是否有人知道如何实施这些解决方案之一?


编辑:此外,第一个来源提到了有关 e-TeX、Omega 和 LuaTeX 的内容。它们是什么?它们有什么用?我也尝试搜索它们,但我似乎不明白它们是 TeX 的扩展还是全新的语言。有人还提到了有关 ConTeXt 的内容,根据 Google 的说法,它似乎是用于 Java 和 C++ 等的编辑器而不是语言。

答案1

下面显示了从纯 TeX 写入的 50 个文件:

\newwrite\foo

\count0=0
\loop
\advance\count0 by 1
\immediate\openout\foo=file-\the\count0
\immediate\write\foo{this is \the\count0}
\immediate\closeout\foo
\ifnum\count0<50
\repeat

\bye

$ tex write50
This is TeX, Version 3.1415926 (TeX Live 2012)
(./write50.tex )
No pages of output.
Transcript written on write50.log.



davidc@malta /c/tmp
$ ls file-*
file-1.tex   file-18.tex  file-26.tex  file-34.tex  file-42.tex  file-50.tex
file-10.tex  file-19.tex  file-27.tex  file-35.tex  file-43.tex  file-6.tex
file-11.tex  file-2.tex   file-28.tex  file-36.tex  file-44.tex  file-7.tex
file-12.tex  file-20.tex  file-29.tex  file-37.tex  file-45.tex  file-8.tex
file-13.tex  file-21.tex  file-3.tex   file-38.tex  file-46.tex  file-9.tex
file-14.tex  file-22.tex  file-30.tex  file-39.tex  file-47.tex
file-15.tex  file-23.tex  file-31.tex  file-4.tex   file-48.tex
file-16.tex  file-24.tex  file-32.tex  file-40.tex  file-49.tex
file-17.tex  file-25.tex  file-33.tex  file-41.tex  file-5.tex

davidc@malta /c/tmp
$ cat file-1.tex
this is 1

相关内容