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
设置\bfdefault
为b
而不是标准,并且希腊字体中bx
没有定义字体。b/it
cmr
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
。