![tex 文件的大小有限制吗?](https://linux22.com/image/293252/tex%20%E6%96%87%E4%BB%B6%E7%9A%84%E5%A4%A7%E5%B0%8F%E6%9C%89%E9%99%90%E5%88%B6%E5%90%97%EF%BC%9F.png)
我已经写了一段时间的文档。它正在稳步增长,希望会继续增长。最近我意识到——尽管我最近刚买了一台新的 MacBook——当我在写最大的文档时,tex-file
打字速度有点慢TexShop
。确切地说,当我写一个句子时,我经常在键盘上打字完毕,仍然会看到字母一个接一个地出现在屏幕上,比如说两三秒钟,直到我TexShop
最终完成这个句子。因此,存在一定的延迟。
现在,我知道这是一个单独的问题,应该针对 TexShop 的开发人员,但它让我开始思考是否存在
- 最大大小
tex-file
(字符或千字节)技术上\input
或进入包含序言和和的\include
主文件,或者,是否存在\begin{document}
\end{document}
- 最大文件大小受到推崇的
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 会被默默忽略。