我会尝试在这里解释我的问题。我知道有很多帖子都涉及这个问题,但我仍然感到困惑。
我们有许多来自不同系统的不同机器的文件。重要的是:
- 该
tex
文件将在 Linux 机器上使用 utf-8 进行编译。 - 这些
tex
文件来自许多装有 iso 的 Windows 机器。
无需转换,是否有一些好的前言来解决我的问题?
例如,在 Windows Vista 上,使用 Winedt 生成以 iso 编码的文件,是否有一些软件包可以让我在具有 Kile 和 utf-8 的 Linux 机器上tex
运行?pdflatex
这将是一个大项目,很多人会tex
向我发送很多文件,我想创建一个带有必要包的良好模板,以避免混淆。
答案1
在协作项目中,如果源文件要在多种平台、编辑器和语言环境中进行编辑,编码问题可能会成为真正的 PITA。
在这种情况下,最好定义一种“正确”的强制编码(UTF-8),清楚地传达并坚持下去。然而,在许多情况下,合作者,特别是来自 Windows 或 Mac 世界的合作者,甚至不知道编码是什么。然而,在实践中,以下方法相当有效。
准备已经正确编码的模板,包括(如果适用)该
\usepackage[utf8]{inputenc}
行。模板还应该(至少在某些注释中)包含一些 UTF-8 字符:许多现代编辑器都有相当好的启发式方法,如果存在非 ASCII 字符,可以“自动”检测编码。为尽可能多的编辑器提供编辑器模式行。许多编辑器(包括 WinEdt 和 TeXShop)都提供了模式行语法,也可用于明确指定编码。许多其他编辑器支持 vim 或 emacs 模式行语法,因此这些应该始终存在。但有些编辑器在这方面施加了额外的限制:例如,WinEdt 支持 emacs 模式行语法,但每个设置(模式和编码,如下)必须放在不同的行中。(感谢 karlkoeller 纠正了这个问题!)
以下文档头包含一些 UTF-8 字符和模式行命令,分别用于将文件类型(用于语法着色)设置为 TeX/LaTeX 并将编码设置为 UTF-8:vim、WinEdt、TexShop、Emacs 和 Kate:
% vim: set fenc=utf-8 ft=latex
% !Mode:: "TeX:UTF-8"
% !TEX encoding = UTF-8 Unicode
% -*- mode: latex -*-
% -*- coding: UTF-8 -*-
% kate: encoding utf-8;
%
% IMPORTANT Note: This file is UTF-8 encoded!
% You should see some umlauts here: ÄÖÜäöü
Kate 模式行可能也适用于 Texmaker,因为它们都基于通用 Qt 编辑器组件,但我没有检查过这一点。对于大多数编辑器,模式行必须出现在文档的前 10 行,有些编辑器(Vim、Emacs)还支持在文档末尾(最后 10 行内)显示模式行。