编辑连字符表

编辑连字符表

TeXbook(第 46 页)建议,在调整 TeX 以输入挪威语时,

你可以安排字体度量文件,以便 TeX 能够解释 艾伊哦/氨基酸声发射哦/, 和AA作为连字符,分别产生、 、 、 和\ae\o\aa可以\AE将字符和 \AA 放入字体的 128 和 129 位置。\O\AA\aa

我想弄清楚如何在单独的测试文档中执行此操作。以下是我可以做的艾伊\ae通过改变字体的连字表来创建连字:

  1. cmr10.tfm使用查找kpsewhich,然后将其复制到不同名称下的工作目录。
  2. 使用以下方式将文件转换为.pl(人类可读的)文件tftopl
  3. 找到文件部分(LABEL C a)中的行,然后在其下方添加。(\ae 位于 cmr10 字体中的八进制位置 32)。LIGTABLE.pl(LIG C e O 32)
  4. 使用以下方式将.pl文件转换回文件.tfmpltotf

我不确定的是如何将特定字符移动到字体内的特定位置(这显然是制作\aa\AA使用连字所必需的)。

答案1

您可以使用 tex 和 pdftex 的 encTeX 扩展即时进行一些类似连字的速记,而无需虚拟字体。它在大多数现代 TeX 发行版中通过格式编译时的命令行开关内置。假设使用 bash shell,您可以执行以下操作...

  1. 您必须在格式生成时激活 encTeX 扩展,例如:pdftex -ini -enc -jobname=enctex plain.tex \\pdfoutput=1 \\dump。这将为enctex.fmt您创建一个新的 pdfTeX 文件。

  2. 您可以在源代码或专用文件中定义个人重新编码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在源文件中的任何位置关闭它),并且定义应该产生预期的结果。

  1. 通过调用特殊格式来运行您的文档,例如pdftex \&enctex mydoc

encTeX 被设计用来动态地对输入文件进行重新编码,目的是允许从多字节(特别是 UTF8)输入中映射 8 位字体,因此它可能在设计用于直接处理多字节 UTF8 字符串的 TeX 引擎(特别是 XeTeX 和 LuaTeX)中缺失;但是euroTeX 论文,§§3-4表示它可能被用来表演类似这样的把戏。

答案2

除非您出于某种原因确实需要原始 Tex,否则最好使用 XeLateX(或 LuaTex?我实际上没有使用过这种风格)并使用实际的 unicode 字母来表示 ø、å、æ 等(换句话说,只需使用正确的欧洲键盘正常打字即可)。

例如,我目前有一个相当大的文档,其中混合了英语/丹麦语/冰岛语,我没有使用任何旧的“技巧”,我只是直接输入(或复制)所有文本。这正是 XeLateX 的设计目的 - 支持 unicode,可直接用于任何语言。

相关内容