tex 文件的大小有限制吗?

tex 文件的大小有限制吗?

我已经写了一段时间的文档。它正在稳步增长,希望会继续增长。最近我意识到——尽管我最近刚买了一台新的 MacBook——当我在写最大的文档时,tex-file打字速度有点慢TexShop。确切地说,当我写一个句子时,我经常在键盘上打字完毕,仍然会看到字母一个接一个地出现在屏幕上,比如说两三秒钟,直到我TexShop最终完成这个句子。因此,存在一定的延迟。

现在,我知道这是一个单独的问题,应该针对 TexShop 的开发人员,但它让我开始思考是否存在

  1. 最大大小tex-file(字符或千字节)技术上 \input或进入包含序言和和的\include主文件,或者,是否存在\begin{document}\end{document}
  2. 最大文件大小受到推崇的tex-file将a\input添加\include到主文件。

这个问题与我的延迟问题有关,因为我可以通过将较大的文件细分为较小的文件来解决延迟问题,但我不想这样做 - 实际上没有什么好的理由 - 除非它是受到推崇的与问题#2类似。

虽然我主要对与相关的答案感兴趣LuaLaTeX,但我想对于网站上的其他用户来说,与LaTeX和相关的答案XeLaTeX也会很有趣。

答案1

TeX 仅逐行处理输入,因此每行的字符数有限制,但文件的总大小没有限制。

但是,您的编辑器可能需要将整个文件读入内存,因此文件大小可能会受到限制。我使用的编辑器会在文件超过 10MB 时发出警告,但会打开大于该大小的文件,直至达到机器可用内存的大小。

行缓冲区可在 texmf.cnf 中配置,texlive 2014 中的配置为

% Buffer size.  TeX uses the buffer to contain input lines, but macro
% expansion works by writing material into the buffer and reparsing the
% line.  As a consequence, certain constructs require the buffer to be
% very large, even though most documents can be handled with a small value.
buf_size = 200000

在 luatex 中,此缓冲区设置将被忽略,并根据需要动态分配缓冲区

luatex 手册第 10.2 节:

现在,输入行缓冲区和池大小也会在需要时重新分配,并且 texmf.cnf 设置 buf_size 和 pool_size 会被默默忽略。

相关内容