在包中使用非 ASCII 字符

在包中使用非 ASCII 字符

在 .sty 文件中使用非 ASCII(例如西里尔字母)字符的最佳方法是什么?

如果在使用了 的 LaTeX 文件中使用它\inputenc[utf8]{inputenc},那么只需在 .sty 文件中使用 utf8 编码即可。或者反过来:可以添加\RequirePackage[utf8]{inputenc}到 .sty 文件中。但无论如何,.tex 文件的作者必须使用 .sty 文件中使用的编码。

有没有办法在 .sty 文件中指定编码,以便它可以在任何编码的 .tex 文件中使用?

(与 XeLaTeX 兼容的配方尤其好。)

答案1

已编辑(我原来的答案很令人困惑):babel包存在这个问题,因为它需要将“目录”等翻译成其他语言,但又不强制文档作者使用特定编码。babel处理西里尔语(可用于多种输入编码)而不强制选择的方式是使用与编码相关的命令(\cyrr\cyre等)。

答案2

在 LaTeX 包中使用非 ASCII 字符通常不是一个好主意,因为 TeX 对输入编码的理解不太深入,但 inputenc 本身提供了一个指定编码的命令:

\inputencoding{encoding name}

它可能会满足您的需要,但更好的想法是使用标准 LaTeX 控制序列来控制这些字符。(当然,这并不总是方便的,因此才有您的问题。)

对于 XeLaTeX 包来说,情况就不同了,因为 XeTeX 可以原生处理不同的输入编码。为此,您可以使用\XeTeXinputencoding原语。

相关内容