如何在不合并形状的情况下将字体形状从小型大写字母更改为斜体?

如何在不合并形状的情况下将字体形状从小型大写字母更改为斜体?

经过版本更改后,我现在拥有的 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}

Libertinus 衬线示例

我无法在我的机器上重现您的问题,直到我切换到带有斜体小写字母的字体。

如果您需要与从未定义过的旧软件包向后兼容\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。许多旧字体包也是如此。

相关内容