XeTeX:空胶水需要特殊的 \XeTeXcharclass

XeTeX:空胶水需要特殊的 \XeTeXcharclass

胶水(包括空胶水)的 \XeTeXcharclass 为 4095(原为 255)。

XeTeX 中法语的高标点间距基于 polyglossia 和 babel/frenchb 中的 \XeTeXcharclass 和 \XeTeXinterchartoks。

作为 frenchb 的维护者,我需要检查 /positive/ 粘连符是否位于 ; : ! : 字符之一之前;检查 \XeTeXcharclass 不会区分空粘连符和正粘连符。这是错误的起源:

xelatex + frenchb 在 lstlisting 块中的某些字符前引入了额外的空格

[lstlisting 环境在每个标记之间添加“\glue 0 plus 1fil minus 1fil”]

使用 pdfTeX 或 LuaTeX 时,我会检查粘合的宽度并决定是否添加空格,这就是为什么上述错误只发生在 XeTeX 中。XeTeX 的一个可能修复方法是定义一个特殊的 \XeTeXcharclass,比如

\newXeTeXintercharclass\FBnulglue

但我不知道如何将默认宽度为 0pt 的胶水放入此类。谢谢任何提示!

答案1

您不能将胶水放在字符类中,它们对字符进行分类。

您可以通过以下方式在任意两个类之间的边界指定 0pt 粘合

\XeTeXinterchartoks xx yy = {\hksip zz\relax}

(另请注意,最近的 xetex 有更多类别,并且空类别现在是 4095 而不是 255)

相关内容