OT4 和 tgpagella 加载后 £ = $

OT4 和 tgpagella 加载后 £ = $

OT4 字体编码和 tgpagella 包之间似乎存在不兼容。当我加载任一包时,磅号显示为 $(这很危险,因为我们已经陷入了金融危机 =;-)。我已通过日志文件预先加载了这两个包。我能做些什么呢?

\documentclass{article}



\usepackage{tgpagella}
%\usepackage[OT4]{fontenc}

\usepackage[utf8]{inputenc}

\usepackage{textcomp}

\begin{document}


15€ + \$17 = 13£?


\end{document}

答案1

OT* 字体编码的问题在于它们只有 128 个插槽位置。OT4 编码中没有英镑的位置。该符号由粗略的黑客支持。英镑和美元符号共享同一个插槽。斜体形状it和直立形式的特殊形状ui包含英镑,其他形状包含美元:

\DeclareTextCommand{\textdollar}{OT4}{\hmode@bgroup
   \ifdim \fontdimen\@ne\font >\z@
      \slshape
   \else
      \upshape
   \fi
   \char`\$\egroup}

\DeclareTextCommand{\textsterling}{OT4}{\hmode@bgroup
   \ifdim \fontdimen\@ne\font >\z@
      \itshape
   \else
      \fontshape{ui}\selectfont
   \fi
   \char`\$\egroup}

然而,TeX Gyre Pagella 不支持这一点,始终使用美元符号。字体形状ui甚至没有定义:

LaTeX Font Warning: Font shape `OT4/qpl/m/ui' undefined
(Font)              using `OT4/qpl/m/n' instead on input line 12.

解决方案\textsterling可以重新定义为 OT4 编码,以使用不同的编码而不会出现这样的麻烦:

\DeclareTextCommand{\textsterling}{OT4}{% 
  \begingroup\fontencoding{T1}\selectfont\textsterling}\endgroup
} 

更好的解决方案是使用更好的编码,如T1Herbert 所建议的。这也可以在类加载后完成:

\documentclass{...}
\usepackage[T1]{fontenc}

Packagefontenc是 LaTeX 包管理系统中的例外。它可以通过不同的选项加载多次。

对于某些文本仍在使用的情况OT4,我会为 OT4 添加的重新定义\textsterling,并使用更好的编码,例如T1

相关内容