XeTeX 和 LuaTeX 总是使用 Unicode 吗?

XeTeX 和 LuaTeX 总是使用 Unicode 吗?

我正在编写一些函数来操作字符串。生成具有给定字符代码的字符的典型方法是原\lowercase语。以下代码生成一个代码为 234 的字符,并将其显示到终端。

\lccode`*=234
\lowercase{\message{*}}

如果我用上面234的替换345,那么 pdfTeX 会引发错误:Invalid code (345), should be in the range 0..255.另一方面,LuaTeX 和 XeTeX 最多可以达到1114111,正如 Unicode 兼容引擎所预期的那样。

现在,我希望我的宏尽可能强大。总是pdfTeX 中的最大 lccode 是 255,LuaTeX 和 XeTeX 中的最大 lccode 是 1114111,这是真的吗?或者用户能否以任何方式阻止引擎使用全部范围,从而混淆我的宏?

答案1

LuaTeX 手册明确指出,\char现在接受 0 到 1114111 之间的值,并将此语句扩展到其他类似命令,如\lccode。据我所知,在 XeTeX 中也是如此。在我看来,使用命令行来更改这一点似乎毫无意义。

但是 eTeX 扩展可以在两个引擎中禁用。或者更准确地说:XeTeX 有一个命令行选项来使能够eTeX 扩展(所有 TeX 系统默认使用)和 LuaTeX 具有类似的功能。因此可以手动构建不使用它们的格式。但这只会影响 eTeX 相关命令。

答案2

我有很多“旧”文档,我不想更改为 utf-8。

我在序言中使用了以下代码来使用“旧”编码:

\ifxetex
  \XeTeXinputencoding "cp1252" % actual document
  \XeTeXdefaultencoding "cp1252" % sequent documents (\input)
\fi    
\usepackage[latin1]{luainputenc}

我不知道这是否会给你的代码带来问题 - 但你可以尝试一下。

相关内容