经过版本更改后,我现在拥有的 LaTeX 版本\itshape
似乎不会覆盖\scshape
,而是导致 LaTeX 尝试合并两者并生成小型大写斜体 ( scit
) 的文本。我只想要斜体,不要小型大写。
我咨询过LaTeX 2e 字体选择(fntguide.pdf
)但它只是指出\itshape
和\scshape
都是形状(2020 年 11 月,第 7 页),并没有提到合并或如何防止合并。
以下 MWE 演示了我的问题:
\documentclass{book}
\usepackage{fontspec}
\setmainfont{Source Serif Pro}[Scale=MatchLowercase]
\begin{document}
Text in {\scshape small caps and \itshape italics}.
\end{document}
我需要知道在前面放置什么附加命令,\itshape
以便字体选择引擎尝试查找形状it
而不是形状scit
。
我正在使用来自新 Debian 稳定版(Bullseye)的 TexLive 2020.20210202-3。运行xelatex --version
结果XeTeX 3.14159265-2.6-0.999992 (TeX Live 2020/Debian)
答案1
如何修复此问题
\upshape\scshape
如果您需要切换到直立小型大写字母,或者\itshape\ulcshape
需要切换到没有小型大写字母的斜体,请使用。
\documentclass{book}
\usepackage{libertinus}
\begin{document}
Text in {\scshape\itshape italic small caps},
{\itshape italics and \upshape\scshape upright small caps},
{\scshape small caps and \itshape\ulcshape italics}.
\end{document}
我无法在我的机器上重现您的问题,直到我切换到带有斜体小写字母的字体。
如果您需要与从未定义过的旧软件包向后兼容\ulcshape
,请在加载软件包后,将该行添加到您的序言中:
\providecommand\ulcshape\relax
为什么会发生这种情况
您最近切换到了具有斜体小型大写字母的字体,或者您正在加载的包最近已更新为加载fontaxes
。
您可能多年来一直指定斜体小写字母,但从未注意到,因为您加载了没有斜体小写字母的字体,并且一直忽略警告消息
LaTeX Font Warning: Font shape `TU/SourceSerifPro(0)/m/scit' undefined
(Font) using `TU/SourceSerifPro(0)/m/it' instead on input line 7.
该fontaxes
包将“形状”轴拆分为主轴(直立、斜体、倾斜、直立斜体等)和次轴(小型大写字母打开或关闭)。它重新定义了\itshape
和\scshape
命令以合并而不是相互覆盖。该fontspec
包加载fontaxes
。许多旧字体包也是如此。