聚合包问题:textgreek、lmodern 和 kpfonts

聚合包问题:textgreek、lmodern 和 kpfonts
documentclass{article}

\usepackage{textgreek}
%\usepackage[notext,noamsmath,notextcomp]{kpfonts}
%\usepackage{lmodern}

\begin{document}
\textit{\textGamma\textgamma}

\textbf{\textGamma\textgamma}

\textit{\textbf{\textGamma\textgamma}}

\textbf{\textit{\textGamma\textgamma}}
\end{document}

按照上述 MWE 的书写方式进行编译,我得到了四个 Gamma,gamma 对,分别为斜体、粗体和 (2x) 斜体+粗体,这正是我所期望和想要的。我需要(在正在编写的文档的其他地方)注释掉的两个包中的每一个。好消息是,如果我取消注释该lmodern包(但保持kpfonts非活动状态),输出保持不变。

如果我只取消注释kpfonts包(保持lmodern不活动状态),响应将先是斜体,然后是(3x)粗体,最后两个的效果\textit被消除。当我同时取消注释两者时,我得到斜体,然后是(3x)直立+中等粗体;最后两个不应用\textit,任何地方都不应用\textbf

除了这些变体之外,我还

  • 尝试使用\itshape\bfseries

  • 尝试改变软件包的加载顺序,并且

  • 应用于\let(和\LetLtxMacro)字母宏、字体修饰符以及同时应用于两者。

问题: 有没有办法加载所有这些包,并且仍然允许\textit\textbf对来自的文本希腊字母进行操作textgreek?或者,是否有一个或多个更好的(例如,更新的)包可以代替我描述的一个(或多个)包?我意识到后一个问题很模糊,因为我没有具体说明为什么我需要这些软件包。事实上,我只是五个作者中的一个,我不知道其他人都在做什么。

答案1

textgreek软件包默认使用 Computer Modern(C. Beccari 的希腊字体)。但kpfonts设置\bfdefaultb而不是标准,并且希腊字体中bx没有定义字体。b/itcmr

LaTeX Font Warning: Font shape `LGR/cmr/b/it' undefined
(Font)              using `LGR/cmr/b/n' instead on input line 17.

这解释了为什么你得不到粗体斜体。

您可以通过定义所需的字体替换来修复此问题。

\documentclass{article}

\usepackage{textgreek}
\usepackage[notext,noamsmath,notextcomp]{kpfonts}

\AtBeginDocument{%
  \DeclareFontShape{\encodingdefault}{cmr}{b}{it}{<->ssub*cmr/bx/it}{}%
  \DeclareFontShape{LGR}{cmr}{b}{it}{<->ssub*cmr/bx/it}{}%
}

\begin{document}

\textit{\textGamma\textgamma} (it)

\textbf{\textGamma\textgamma} (bf)

\textit{\textbf{\textGamma\textgamma}} (it,bf)

\textbf{\textit{\textGamma\textgamma}} (bf,it)

\end{document}

在此处输入图片描述

答案2

正如 egreg 在他的回答中指出的那样,问题源于\bfdefault设置与常规不同。一个简单的解决方法是\fontseries{bx}\selectfont。我写了宏

\newcommand{\textbx}[1]{\fontseries{bx}\selectfont #1}

然后使用它来代替\textbf

相关内容