TeX 能检测到文件末尾的换行符吗?

TeX 能检测到文件末尾的换行符吗?

TeX 能否区分包含单个字符a/ 字节 97 的文件;以及包含相同字符后跟换行符(这取决于系统)的文件?

我在创建没有尾随换行符的文件时遇到了一些麻烦,因此如果您需要它,这里有一种方法:

luatex "\directlua{io.output('test1.txt'):write('a') io.output('test2.txt'):write('a\string\n')}\bye"

TeX 能区分吗test1.txttest2.txt除了它们的名字之外)?似乎\read\readline都丢弃尾随换行符并\ifeof同时设置为 true,而不管尾随换行符是否存在。

答案1

TeX 还会删除输入行右侧的空格字符,然后插入通过配置的字符\endlinechar。如果为负数或大于 255,则不会插入字符。\endlinechar 最后一个限制在 LuaTeX/XeTeX 中有所不同。由于行末的删除/替换,vanilla TeX 无法区分这些文件。因此 TeX 无法读取任意二进制文件,例如提取图像文件的大小……

在 pdfTeX 中提供\pdffiledump。它以十六进制转储的形式返回通过偏移量和长度指定的数据。因此,可以分析文件末尾的行尾标记。(包bmpsize用于\pdffiledump分析图像文件格式的元数据,如宽度和高度。)

并且LuaTeX提供了用于文件I/O的Lua函数。

相关内容