![TeX 能检测到文件末尾的换行符吗?](https://linux22.com/image/253404/TeX%20%E8%83%BD%E6%A3%80%E6%B5%8B%E5%88%B0%E6%96%87%E4%BB%B6%E6%9C%AB%E5%B0%BE%E7%9A%84%E6%8D%A2%E8%A1%8C%E7%AC%A6%E5%90%97%EF%BC%9F.png)
TeX 能否区分包含单个字符a
/ 字节 97 的文件;以及包含相同字符后跟换行符(这取决于系统)的文件?
我在创建没有尾随换行符的文件时遇到了一些麻烦,因此如果您需要它,这里有一种方法:
luatex "\directlua{io.output('test1.txt'):write('a') io.output('test2.txt'):write('a\string\n')}\bye"
TeX 能区分吗test1.txt
(test2.txt
除了它们的名字之外)?似乎\read
和\readline
都丢弃尾随换行符并\ifeof
同时设置为 true,而不管尾随换行符是否存在。
答案1
TeX 还会删除输入行右侧的空格字符,然后插入通过配置的字符\endlinechar
。如果为负数或大于 255,则不会插入字符。\endlinechar
最后一个限制在 LuaTeX/XeTeX 中有所不同。由于行末的删除/替换,vanilla TeX 无法区分这些文件。因此 TeX 无法读取任意二进制文件,例如提取图像文件的大小……
在 pdfTeX 中提供\pdffiledump
。它以十六进制转储的形式返回通过偏移量和长度指定的数据。因此,可以分析文件末尾的行尾标记。(包bmpsize
用于\pdffiledump
分析图像文件格式的元数据,如宽度和高度。)
并且LuaTeX提供了用于文件I/O的Lua函数。