在 TeX 中,即使“\endlinechar”被改为“\char256”,换行符也会导致“\par”

在 TeX 中,即使“\endlinechar”被改为“\char256”,换行符也会导致“\par”

TeX 将会插入\endlinechar到行尾。

如果的值为\endlinechar负数或者大于 255,则不附加任何字符,效果就像每一行都以 % 结尾。

\def\endlinechar{\char256}
hello

hello2
\bye

生产

在此处输入图片描述

即使\endlinechar把 改为大于255,字符还是会追加到行尾,造成\par行尾的效果,这是什么原因呢?

答案1

\endlinechar是一个内部整数寄存器。为其赋值采用标准方式,即

\endlinechar=<integer>

就像

\count255=42

在 Knuth TeX 中,或者pdftex您可以为其分配值 256,这将导致在丢弃操作系统特定的记录结束信号和 ASCII 代码 32 的尾随字符后,不会将任何内容附加到记录中。

如果这样做\def\endlinechar{whatever},您将失去改变内部寄存器值的能力。

笔记。就其本身而言,XeTeX 的行为类似于 Knuth TeX \endlinechar,因此只有 0 到 255(含)之间的值才会导致附加一些字符。LuaTeX 将上限降低到 127。

你应该对代码没有引发错误感到惊讶。事实上,你的\endlinechar 从未使用过,否则\char256会引发错误(在 Knuth TeX 或 中pdftex)。

相关内容