![自定义 LaTeX 类的编码问题(仅限 Windows 7/8)。为什么?](https://linux22.com/image/268976/%E8%87%AA%E5%AE%9A%E4%B9%89%20LaTeX%20%E7%B1%BB%E7%9A%84%E7%BC%96%E7%A0%81%E9%97%AE%E9%A2%98%EF%BC%88%E4%BB%85%E9%99%90%20Windows%207%2F8%EF%BC%89%E3%80%82%E4%B8%BA%E4%BB%80%E4%B9%88%EF%BC%9F.png)
我为我的同事和我自己编写了一个 LaTeX 课程。在 Linux 和 Mac OS X 上一切都运行良好,但在 Windows 7/8 上却不行。问题在于 Windows 7/8 上的字符编码(使用 MikTeX)。我在这个课程中使用了以下软件包:
% german spelling
\usepackage[ngerman]{babel}
% set input encoding
\usepackage[utf8]{inputenc}
在 Windows 上,您必须更改utf8
为才能ansinew
打印特殊德语字母,如 ä ö ü ß。它不适用于 utf8。我不想创建两个不同的类,那么是否有可能在 Unix 和 Windows 下使用相同的类文件?
答案1
输入编码取决于用于编写 TeX 文件的编辑器:
一个好的编辑器不局限于一种编码,用户可以在多种不同的编码中配置编码。
即使使用系统编码,这也不稳定,不同的系统使用不同的编码。而且系统默认的编码是可以改变的。
类文件不知道它将在哪里使用,用户可能使用哪些编辑器和哪些编码,输入编码的规范不属于类文件。它只能提供一些帮助:
- 描述用户可以做什么来指定输入编码的文档。
- 类可以提供一个类选项 (
inputencoding=...
),将选项的值传递给包。可以设置大多数用户可能使用的默认值。(例如,inputenc
某些包可以支持键值选项)。kvoptions
如果用户难以找到正确的编码,则包selinput
可以提供帮助,其文档中的示例为:
\documentclass{article}
\usepackage{selinput}
\SelectInputMappings{
adieresis={ä},
germandbls={ß},
Euro={€},
}
\begin{document}
Umlauts: ÄÖÜäöüß
\end{document}
然后,包会分析 的规范\SelectInputMappings
以自动找到匹配的编码。但是,这无法在类文件中完成,因为它必须使用与 之后的文本相同的编辑器编写\begin{document}
。否则,selinput
只会找到类编写者使用的匹配编码。