在 .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
原语。