根据 TeXbook,TeX 会逐行预处理 .tex 输入文件(将行中的所有字符转换为 TeX 的内部字符表示方案(ASCII 或 Unicode)、截断行尾的空格字符序列、附加由 指定的字符\endlinechar
)。
因此出现了以下问题:
- .tex-input 文件每行的最大字符数是多少?
- 当读取时遇到太长的行时,TeX 会如何表现?
您可以使用 TeX 编写外部文本文件。
- 当尝试将一行太长或字符数多于 TeX 可以放入外部文本文件一行中的字符数时,TeX 会如何表现?
-primitive\write
总是将整行写入外部文本文件。
- 有没有办法
- 刚刚开始外部文本文件的新行?
- 将字符附加到外部文本文件的当前行?
答案1
这取决于系统,并且可由 web2c 实现用户设置。
texlive 2021texmf.cnf
有
% 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
如果超过这个,你会得到:
$ pdftex aa408
This is pdfTeX, Version 3.141592653-2.6-1.40.22 (TeX Live 2021) (preloaded format=pdftex)
restricted \write18 enabled.
entering extended mode
(./aa408.tex! Unable to read an entire line---bufsize=200000.
Please increase buf_size in texmf.cnf.
TeX 没有附加到文件的机制。