我想在同一个文档中使用 Bitstream Charter serif 字体(默认)和一些带有小写字母的无衬线字体。我尝试\usepackage[charter]{mathdesign}
与 结合使用\usepackage[notmath]{sansmathfonts}
,但不起作用:
\documentclass{article}
\usepackage[charter]{mathdesign}
\usepackage[notmath]{sansmathfonts}
\begin{document}
This is \textsc{small caps}. And {\sffamily\textsc{sans serif small caps}}.
\end{document}
通过上面的例子,我没有得到无衬线小型大写字母,并且在日志中出现以下内容:
LaTeX Font Warning: Font shape `T1/xcmss/m/fsc' undefined (Font) using `T1/xcmss/m/n' instead on input line 8.
如果我评论该
sansmathfonts
包,我仍然得不到无衬线小型大写字母,并且日志中出现以下内容:LaTeX Font Warning: Font shape `T1/cmss/m/fsc' undefined (Font) using `T1/cmss/m/n' instead on input line 8.
最后,如果我评论该
mathdesign
包,我会得到无衬线小写字母。
我如何才能实现我的目标?关于 LaTeX 字体管理,我可能有很多不了解的地方。我补充说,我更喜欢使用 pdfTeX 而不是 {Xe|Lua|...}TeX 的解决方案。
答案1
mathdesign
带有该选项的软件包将charter
打开该expert
选项,这是针对 90 年代一些非标准字体命名方案的一种过于聪明的解决方法。它不再需要:CTAN 附带的两个免费版本的 Charter 都使用标准 LaTeX 字体命名约定。不幸的是,作者没有提供任何关闭此选项的方法。它重新定义了小型大写字母以使用 NFSS 形状fsc
而不是sc
。每个 LaTeX 字体都调用小型大写字母sc
,而不是fsc
,因此小型大写字母会中断。
最简单的解决方法是将免费字体加载XCharter
为主要字体mathdesign
。这将加载fontaxes
和替换损坏的\scshape
和定义\textsc
,并将其替换为可用的定义。然后,您可以加载您选择的无衬线字体。在这里,我使用了 Linux Biolinum。
\documentclass{article}
\usepackage[charter]{mathdesign}
\usepackage{XCharter}
\usepackage[type1]{biolinum}
\begin{document}
This is \textsc{small caps}.
And {\sffamily\textsc{sans serif small caps}}.
\[x = -b \pm \frac{\sqrt{b^2 - 4ac}}{2a} \]
\end{document}
类似地,您可以加载erewhon
after\usepackage[utopia]{mathdesign}
或garamondx
after \usepackage[garamond]{mathdesign}
,它们均提供可用的小型大写字母和旧式数字。
您还可以使用以下方法为其他字体系列启用小型大写字母
\renewcommand\scdefault{sc}