\textbf{}
我在使用txfonts
和包时遇到了美元符号 ($) 和 的一个奇怪问题fontenc
。美元符号后面有一个空格。需要两个包才能重现此问题。
\documentclass{report}
\usepackage{txfonts}
\usepackage[T1]{fontenc}
\begin{document}
\begin{tabular}{l}
\textbf{\$500}\\
\$500
\end{tabular}
\end{document}
为什么会这样?最好的解决方案是什么?
答案1
根据我的测试,T1 编码 TX 字体中的粗体美元符号可能存在一些问题,但具体机制我不太清楚。无论如何,暂时切换到 OT1 编码字体确实是一种非最佳补救措施。
\documentclass{report}
\usepackage{txfonts}
\usepackage[T1]{fontenc}
\renewcommand{\$}{{\fontencoding{OT1}\selectfont\textdollar}}
\begin{document}
\begin{tabular}{l}
\textbf{\$500}\\
\$500
\end{tabular}
\end{document}
答案2
这是 TXfonts 发行版中的一个错误。在构建粗体字体指标时,美元符号(字符 36,八进制 44)接收了“&”符号(字符 38,八进制 46)的信息,这从派生自和t1xb.tfm
(txb.tfm
分别用于 T1 和 OT1 编码中的粗体字体)的属性列表文件中可以看出。由于这个错误,TeX 会打印美元符号,但为其保留的空间与“&”符号的相同。差异是 3.33pt,因此它类似于单词间空间。
从t1xb.pl
(CHARACTER O 44
(CHARWD R 0.833)
(CHARHT R 0.681999)
(CHARDP R 0.0135)
)
(CHARACTER O 45
(CHARWD R 1.0)
(CHARHT R 0.681999)
(CHARDP R 0.0135)
)
(CHARACTER O 46
(CHARWD R 0.833)
(CHARHT R 0.681999)
(CHARDP R 0.0135)
)
从txb.pl
(CHARACTER O 44
(CHARWD R 0.5)
(CHARHT R 0.75)
(CHARDP R 0.0975)
)
(CHARACTER O 45
(CHARWD R 1.0)
(CHARHT R 0.686)
(CHARDP R 0.0135)
)
(CHARACTER O 46
(CHARWD R 0.833)
(CHARHT R 0.686)
(CHARDP R 0.0175)
)
\textdollar
解决方法是在 T1 编码中取消声明该命令。
\documentclass{report}
\usepackage[T1]{fontenc}
%\usepackage{txfonts}
\usepackage{newtxtext}
\UndeclareTextCommand{\textdollar}{T1}
\begin{document}
\bfseries\$5
\end{document}
newtxtext
NewTX 字体的开发人员很活跃,如果不是针对原始 TXfonts,也许他至少可以针对该软件包想出解决方案。