将 Computer Modern 保持为粗体字体

将 Computer Modern 保持为粗体字体

我想使用 Gentium 作为我的主字体,这可以通过命令 \usepackage{Gentium} 完成。但我想将“Computer Modern”作为我的粗体字体。有什么想法吗?

答案1

没有Gentium包,但是gentium;在包名称中使用大写字母可以在不区分大小写的文件系统(Windows)中工作,但限制了文件的可移植性,因为\usepackage{Gentium}在 GNU/Linux 或 Mac OS X 系统上不起作用。

一个简单的解决方案是通过修补\bfseries\mdseries检查当前字体系列,如果是默认的(gentium),则切换到 CM \bfseries;相反,如果字体系列是 CM,则切换到gentium

如示例所示,其他字体系列不受影响。

但是,该示例还表明 Computer Moder Roman Bold 在视觉上与 Gentium 不兼容,因此我强烈建议您不要这样做。Adventor 和 Cursor 仅作为示例使用,我并不声称它们可以与 Gentium 一起使用。

作为一般的印刷规则,普通文档应该只使用一种衬线字体系列。

\documentclass{article}
\usepackage{gentium}
\usepackage{tgadventor}
\usepackage{tgcursor}
\usepackage{xpatch,pdftexcmds}

\xpatchcmd{\bfseries}
  {\selectfont}
  {\checkfamily{\familydefault}{cmr}\selectfont}
  {}{}
\xpatchcmd{\mdseries}
  {\selectfont}
  {\checkfamily{cmr}{\familydefault}\selectfont}
  {}{}

\makeatletter
\newcommand{\checkfamily}[2]{%
  \ifnum\pdf@strcmp{\f@family}{#1}=\z@
    \fontfamily{#2}%
  \fi
}
\makeatother

\begin{document}
Some text in Gentium and \textbf{some in CM {\mdseries (this is Gentium)} and back to CM}

\sffamily
Some text in Adventor and \textbf{some in bf {\mdseries (this is md)} and back to bf}

\ttfamily
Some text in Cursor and \textbf{some in bf {\mdseries (this is md)} and back to bf}

\end{document}

在此处输入图片描述

放大视图可以更好地显示字体冲突

在此处输入图片描述

一个更长且可能更强大的解决方案涉及修改.fdGentium 的文件。

如果您使用 XeLaTeX 或 LuaLaTeX,那么您可以更轻松地获得它:

\usepackage{fontspec}

\setmainfont{Gentium}[
  BoldFont={Latin Modern Roman 10 Bold}
]
\setsansfont{TeX Gyre Adventor}
\setmonofont{TeX Gyre Cursor}

可能需要对尺寸进行更多的调整。

相关内容