我可以测试换行符类型吗?例如 LF 或 LFCR 类型的行结尾?

我可以测试换行符类型吗?例如 LF 或 LFCR 类型的行结尾?

是否可以测试在 tex 文件中是否使用“换行符”或“换行符 + 回车符”来结束行?我想使用此信息创建一条日志消息。

这样做的原因是为了确保我的所有文件都有相同的行尾。我知道我可以使用脚本语言来做到这一点。我只是好奇我是否可以在 TeX 中测试这些字符?我知道 TeX 将它们视为等效的,例如,在标记化时,任何一种情况都会产生一个标记。我猜这需要在标记化阶段之前或期间发生。这里的例子似乎不合适。

答案1

不是,或者至少不是从 TeX 端(LuaTeX 不同:可以使用 Lua)。行尾规范化发生非常很早,在任何 TeX 代码看到任何东西之前。因此,您将得到的只是值为 的字符\endlinechar,所以它们总是相同的(因此宏程序员的生活很轻松)。

答案2

您不仅无法分辨行尾终止符是什么,也无法分辨是否存在换行符,也无法分辨行末是否有空格字符。

这一切都隐藏在 TeX 系统特定部分中,隐藏在宏层之外。在具有固定长度文本字段的主机上,可能没有行字符,所有行都是 80(或 132 或其他)个字符宽,但此类机器上的 tex 实现将(或当它们存在时)删除所有尾随空格,并使输入看起来像是带有单个标记\endlinechar行(记录)的字符流。

类似地,在确实使用带有行尾终止符的流的 tex 实现上,web2c tex 实现将 LF、CR 或 CRLF 对规范化为单个行尾,并且删除此类标记之前的所有空格字符。

相关内容