我继承了一个半小型 TeX 项目,在该项目中,在跨多台计算机和操作系统同步后,我在特殊字符的编码方面遇到了一些问题,例如åäö
。
我最初解决这个问题的方法是将所有内容转换为 UTF-8(使用iconv
Ubuntu 上的实用程序),这样所有奇怪的错误替换字符都会消失。但是,特殊字符仍然没有显示。
如果这是 LaTeX,我会这样做\usepackage[T1]{fontenc}
,但这在这里不起作用,因为我用进行编译pdftex
。
我该怎么做呢?
答案1
首先,您不需要与 fontenc 等效,而是需要与 inputenc 等效。您应该(像 inputenc 一样)使非 ASCII 字符处于活动状态并将它们映射到合适的命令。例如,在 8 位编码文件中,您可以执行以下操作:
%OT1-encoded font
\catcode`\ä=13
\defä{\"a}
Räuber
\bye
使用 T1 编码字体时,情况会好一些,因为很多字符已经处于“正确位置”。因此,通常不需要更改 catcode,但正如您在 ß 中看到的那样,如果不添加定义,某些字符可能会出错
%Use a T1-encoded font:
%\catcode`\ä=13
%\defä{\char"E4}
% \catcode`\ß=13
% \defß{\char"FF}
%
\font\test=ecrm1000 \test
Räuber öäüß
\bye
对于 utf8 编码的文件,生活会变得更加复杂,因为您必须重新创建 utf8 八位字节的解析。
添加
使用csplain
或pdfcsplain
格式 (http://petr.olsak.net/csplain-e.html)可以直接使用utf8。
öäüß
\bye