TeXbook(第 46 页)建议,在调整 TeX 以输入挪威语时,
你可以安排字体度量文件,以便 TeX 能够解释 艾伊,哦/,氨基酸,声发射,哦/, 和AA作为连字符,分别产生、 、 、 和
\ae
;\o
您\aa
可以\AE
将字符和 \AA 放入字体的 128 和 129 位置。\O
\AA
\aa
我想弄清楚如何在单独的测试文档中执行此操作。以下是我可以做的艾伊\ae
通过改变字体的连字表来创建连字:
cmr10.tfm
使用查找kpsewhich
,然后将其复制到不同名称下的工作目录。- 使用以下方式将文件转换为
.pl
(人类可读的)文件tftopl
- 找到文件部分
(LABEL C a)
中的行,然后在其下方添加。(\ae 位于 cmr10 字体中的八进制位置 32)。LIGTABLE
.pl
(LIG C e O 32)
- 使用以下方式将
.pl
文件转换回文件.tfm
pltotf
我不确定的是如何将特定字符移动到字体内的特定位置(这显然是制作\aa
和\AA
使用连字所必需的)。
答案1
您可以使用 tex 和 pdftex 的 encTeX 扩展即时进行一些类似连字的速记,而无需虚拟字体。它在大多数现代 TeX 发行版中通过格式编译时的命令行开关内置。假设使用 bash shell,您可以执行以下操作...
您必须在格式生成时激活 encTeX 扩展,例如:
pdftex -ini -enc -jobname=enctex plain.tex \\pdfoutput=1 \\dump
。这将为enctex.fmt
您创建一个新的 pdfTeX 文件。您可以在源代码或专用文件中定义个人重新编码
tex
,如下所示:
\mubyte\oii O2\endmubyte
\mubytein=1
\def\oii{O$_2$}
It is suspected that CO2 is the main source of air pollution.
\bye
该对\mubyte ... \endmubyte
定义了一个重新编码方案,将第一个标记定义为以下字节序列的结果,直到\endmubyte
;\mubytein=1
激活替换(并且您可以\mubytein=0
在源文件中的任何位置关闭它),并且定义应该产生预期的结果。
- 通过调用特殊格式来运行您的文档,例如
pdftex \&enctex mydoc
。
encTeX 被设计用来动态地对输入文件进行重新编码,目的是允许从多字节(特别是 UTF8)输入中映射 8 位字体,因此它可能在设计用于直接处理多字节 UTF8 字符串的 TeX 引擎(特别是 XeTeX 和 LuaTeX)中缺失;但是euroTeX 论文,§§3-4表示它可能被用来表演类似这样的把戏。
答案2
除非您出于某种原因确实需要原始 Tex,否则最好使用 XeLateX(或 LuaTex?我实际上没有使用过这种风格)并使用实际的 unicode 字母来表示 ø、å、æ 等(换句话说,只需使用正确的欧洲键盘正常打字即可)。
例如,我目前有一个相当大的文档,其中混合了英语/丹麦语/冰岛语,我没有使用任何旧的“技巧”,我只是直接输入(或复制)所有文本。这正是 XeLateX 的设计目的 - 支持 unicode,可直接用于任何语言。