如何解决使用 Pdflatex 编译时 Lmodern 与 Bold Smallcaps 之间的冲突

如何解决使用 Pdflatex 编译时 Lmodern 与 Bold Smallcaps 之间的冲突

我正在处理一个同时调用fontenc和的文档lmodern,但在生成粗体小型大写字母时遇到了问题。

我偶然看到了这个帖子:如何使用拉丁现代字体或计算机现代字体获得粗体+小写字母它提供了一个带有软件包的(Xelatex)解决方案fontspec——但是当我调用fontenc(并使用pdflatex)时——该解决方案无法适应我的情况。

尽管如此,在看了 OP 的 MWE 之后,我得到了以下 MWE:

\documentclass{book}
\usepackage{xcolor,lettrine}
\usepackage[T1]{fontenc} % Needed to make the letters folloiwng the lettrine boldface.
\input GoudyIn.fd
\newcommand*\initfamily{\usefont{U}{GoudyIn}{xl}{n}}

\usepackage{lmodern}
\usepackage{fix-cm}
   \rmfamily
   %\DeclareFontShape{T1}{lmr}{b}{sc}{<->ssub*cmr/bx/sc}{}
   \DeclareFontShape{T1}{lmr}{bx}{sc}{<->ssub*cmr/bx/sc}{}

\begin{document}
\thispagestyle{empty}
\LARGE
\lettrine[lines=3,loversize=.25]{\initfamily{T}}{\textbf{he}} 
\end{document}

这似乎有效(尽管我有一些疑问):

在此处输入图片描述

笔记:OP 使用了两个命令:\DeclareFontShape{T1}{lmr}{b}{sc}{<->ssub*cmr/bx/sc}{}\DeclareFontShape{T1}{lmr}{bx}{sc}{<->ssub*cmr/bx/sc}{}; 虽然我发现\DeclareFontShape{T1}{lmr}{bx}{sc}{<->ssub*cmr/bx/sc}{}单独使用这两个命令对我来说就足够了。(我发现两者之间的唯一区别是 {b} 与 {bx})。

问题:有人能告诉我(使用 进行编译时Pdflatex)两者之间的区别吗?是否在\lmodern调用 时都需要两者都才能获得粗体小型大写字母?是否有比这种方法更好的方法来实现这一点?这种方法似乎可以在不使用 的情况下工作fontspec,因为使用fontenc和不允许我这样做pdflatex

谢谢。

答案1

命令的b和形式分别设置了使用和时发生的情况。它们代表粗体和粗体扩展。(如果字体有粗体压缩系列,即,等等。)Computer Modern 和 Latin Modern 都没有非扩展粗体,因此 LaTeX 命令和选择。bx\fontseries{b}\fontseries{bx}bc\textbf\bfseriesbx

由于有些字体包使用b,有些则使用bx,因此最好同时定义两者。这样,无论使用哪种其他字体,您都可以更改字体系列而不会丢失粗体格式。不过,在您自己的文档中,您可以控制使用哪些格式命令,并且可以b根据需要跳过别名。

相关内容