自定义 LaTeX 类的编码问题(仅限 Windows 7/8)。为什么?

自定义 LaTeX 类的编码问题(仅限 Windows 7/8)。为什么?

我为我的同事和我自己编写了一个 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只会找到类编写者使用的匹配编码。

相关内容