![我可以测试换行符类型吗?例如 LF 或 LFCR 类型的行结尾?](https://linux22.com/image/355784/%E6%88%91%E5%8F%AF%E4%BB%A5%E6%B5%8B%E8%AF%95%E6%8D%A2%E8%A1%8C%E7%AC%A6%E7%B1%BB%E5%9E%8B%E5%90%97%EF%BC%9F%E4%BE%8B%E5%A6%82%20LF%20%E6%88%96%20LFCR%20%E7%B1%BB%E5%9E%8B%E7%9A%84%E8%A1%8C%E7%BB%93%E5%B0%BE%EF%BC%9F.png)
是否可以测试在 tex 文件中是否使用“换行符”或“换行符 + 回车符”来结束行?我想使用此信息创建一条日志消息。
这样做的原因是为了确保我的所有文件都有相同的行尾。我知道我可以使用脚本语言来做到这一点。我只是好奇我是否可以在 TeX 中测试这些字符?我知道 TeX 将它们视为等效的,例如,在标记化时,任何一种情况都会产生一个标记。我猜这需要在标记化阶段之前或期间发生。这里的例子似乎不合适。
答案1
不是,或者至少不是从 TeX 端(LuaTeX 不同:可以使用 Lua)。行尾规范化发生非常很早,在任何 TeX 代码看到任何东西之前。因此,您将得到的只是值为 的字符\endlinechar
,所以它们总是相同的(因此宏程序员的生活很轻松)。
答案2
您不仅无法分辨行尾终止符是什么,也无法分辨是否存在换行符,也无法分辨行末是否有空格字符。
这一切都隐藏在 TeX 系统特定部分中,隐藏在宏层之外。在具有固定长度文本字段的主机上,可能没有行字符,所有行都是 80(或 132 或其他)个字符宽,但此类机器上的 tex 实现将(或当它们存在时)删除所有尾随空格,并使输入看起来像是带有单个标记\endlinechar
行(记录)的字符流。
类似地,在确实使用带有行尾终止符的流的 tex 实现上,web2c tex 实现将 LF、CR 或 CRLF 对规范化为单个行尾,并且删除此类标记之前的所有空格字符。