标题说明了一切。我正在使用 erdc 包,第一个挑战是正确安装所有字体。解决了这个问题并可以获得 pdf 输出,但任何包含“fi”组合的单词在“fi”应该出现的位置都有一个空心方块。
我认为罪魁祸首是在 erdc 包使用的 mathgifg.sty 文件中:
%mathgifg.sty
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{mathgifg}
[2009/07/08 v0.4 Using Georgia and Franklin Gothic in LaTeX]
\RequirePackage[T1]{fontenc}
\RequirePackage{textcomp}
\RequirePackage{keyval}
\renewcommand{\sfdefault}{xifg}
\renewcommand{\rmdefault}{xjgi}
\DeclareSymbolFont{operators}{OT1}{zjgi}{m}{n}
\DeclareSymbolFont{letters}{OML}{zjgi}{m}{it}
\DeclareSymbolFont{symbols}{OMS}{zjgi}{m}{n}
\DeclareSymbolFont{largesymbols}{OMX}{zjgi}{m}{n}
\DeclareSymbolFont{sfletters}{OML}{zifg}{k}{n}
\DeclareSymbolFont{bfletters}{OML}{zifg}{d}{n}
\SetSymbolFont{letters}{bold}{OML}{zifg}{d}{n}
\DeclareSymbolFontAlphabet{\mathsf}{sfletters}
\DeclareSymbolFontAlphabet{\mathbf}{bfletters}
\DeclareRobustCommand\hbar{{%
\[email protected]%
\[email protected]%
\def\@tempa##1##2{{%
\lower##1\dimen@\rlap{\kern##1\dimen@ii\the##2 0\char22}}}%
\mathchoice\@tempa\@ne\textfont
\@tempa\@ne\textfont
\@tempa\defaultscriptratio\scriptfont
\@tempa\defaultscriptscriptratio\scriptscriptfont
h}}
\let\s@vedhbar\hbar
\AtBeginDocument{%
\@ifpackageloaded{amsfonts}{\let\hbar\s@vedhbar}{}}
\endinput
以及一个最小的代码示例:
\documentclass{erdc}
\begin{document}
find official
\end{document}
有人能建议我该怎么做才能解决这个问题吗?
更新:解决此问题的一种方法是将“i”括在括号中,以便以下最小示例产生正确的输出:
\documentclass{erdc}
\begin{document}
f{i}nd off{i}cial
\end{document}
这是一个不太理想的解决方案,因为我不希望每次文档中出现“fi”时都要进行编辑。所以我仍然对替代方案感兴趣。
答案1
我从 CTAN 下载了该包并查看了文件t1xjgi.fd
,其中包含
\DeclareFontShape{T1}{xjgi}{m}{n}{
<-> xjgim8t
}{}
好的,让我们用 查看xjgim8t.vf
所需字体对应的虚拟字体vftovp
。经过一长串警告(不太重要)后,我们找到了连字符表
(LIGTABLE
(LABEL O 25)
(LIG O 55 O 26)
(STOP)
(LABEL O 33)
(LIG C i O 36)
(LIG C l O 37)
(STOP)
(LABEL O 41)
(LIG O 140 O 275)
(STOP)
(LABEL O 47)
(LIG O 47 O 21)
(STOP)
(LABEL O 54)
(LIG O 54 O 22)
(STOP)
(LABEL O 55)
(LIG O 55 O 25)
(LIG O 177 O 177)
(STOP)
(LABEL O 74)
(LIG O 74 O 23)
(STOP)
(LABEL O 76)
(LIG O 76 O 24)
(STOP)
(LABEL O 77)
(LIG O 140 O 276)
(STOP)
(LABEL O 140)
(LIG O 140 O 20)
(STOP)
(LABEL C f)
(LIG C i O 34)
(LIG C f O 33)
(LIG C l O 35)
(STOP)
)
嗯,这表示当 TeX 发现一个f
后跟另一个 时f
,应使用八进制槽 33 中的字符;这在连字符表中也有条目:如果它后跟i
,则应使用八进制槽 36 中的字符代替组合ffi
。现在看看我们找到的字符描述:
(CHARACTER O 36
(CHARWD R 0.908)
(CHARHT R 0.7515)
(MAP
)
)
这意味着除了空白之外什么都不会被打印。
就是这样:字体规格和映射写得很糟糕。除非您自己重新制作映射,否则您就倒霉了。