![如何在不合并形状的情况下将字体形状从小型大写字母更改为斜体?](https://linux22.com/image/438210/%E5%A6%82%E4%BD%95%E5%9C%A8%E4%B8%8D%E5%90%88%E5%B9%B6%E5%BD%A2%E7%8A%B6%E7%9A%84%E6%83%85%E5%86%B5%E4%B8%8B%E5%B0%86%E5%AD%97%E4%BD%93%E5%BD%A2%E7%8A%B6%E4%BB%8E%E5%B0%8F%E5%9E%8B%E5%A4%A7%E5%86%99%E5%AD%97%E6%AF%8D%E6%9B%B4%E6%94%B9%E4%B8%BA%E6%96%9C%E4%BD%93%EF%BC%9F.png)
经过版本更改后,我现在拥有的 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
。许多旧字体包也是如此。