我已经搜索了很多关于它的内容,似乎没有办法增加 (La)TeX 可以打开的文件数量。这例如,给出错误信息的解释。我也见过一些 解决方案针对此问题,但所有这些都是专门针对图形而不是文件。
因此,基本上,我想打开多个文件,目前总数可能超过 16 个(这是当前的限制),并且还有一些也使用一些插槽的包。对我来说应该至少有两个可能的解决方案:
- 增加可同时打开的文件数量。然而,这是一种低效的做法。
- 关闭文件并将其从寄存器中完全移除。我注意到使用命令
\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