2

After a version change, I now have a version of LaTeX in which \itshape appears not to override \scshape but rather causes LaTeX to try to merge the two and produce text in small-caps italic (scit). I simply want italic, no small caps.

I've consulted LaTeX 2e Font Selection (fntguide.pdf) but it simply states that \itshape and \scshape are both shapes (November 2020, page 7) and does not say anything about merging or how to prevent it.

The following MWE demonstrates my issue:

\documentclass{book}

\usepackage{fontspec}

\setmainfont{Source Serif Pro}[Scale=MatchLowercase]

\begin{document}

Text in {\scshape small caps and \itshape italics}.

\end{document}

I need to know what additional command to put in front of \itshape so that the font-selection engine will try to find shape it and not shape scit.

I am using TexLive 2020.20210202-3 from the new Debian stable (Bullseye) version. Running xelatex --version produces XeTeX 3.14159265-2.6-0.999992 (TeX Live 2020/Debian)

3
  • 1
    Use \upshape\scshape.
    – Davislor
    Aug 16, 2021 at 20:12
  • @Davislor can you add an answer so I can accept it? And maybe explain why it works? Aug 16, 2021 at 21:43
  • This could be related to ltnews31.pdf (cf. Improvements to LaTeX’s font selection mechanism (NFSS)).
    – frougon
    Aug 16, 2021 at 22:22

1 Answer 1

2

How to Fix This

Use \upshape\scshape if you need to switch to upright small caps, or \itshape\ulcshape if you need to switch to italics without small caps.

\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 serif sample

I could not reproduce your problem on my box, until I switched to a font that has italic small caps.

If you need backward compatibility with the older packages that never defined \ulcshape, add the line to your preamble, after loading your packages:

\providecommand\ulcshape\relax

Why This is Happening

Either you recently switched to a font that does have italic small caps, or a package you’re loading was recently updated to load fontaxes.

You might have been specifying italic small caps for years and never noticed, because you loaded a font that doesn’t have italic small caps and have been ignoring the warning message

LaTeX Font Warning: Font shape `TU/SourceSerifPro(0)/m/scit' undefined
(Font)              using `TU/SourceSerifPro(0)/m/it' instead on input line 7.

The fontaxes package splits the “shape” axis into a primary axis (upright, italic, slanted, upright italic, etc.) and a secondary axis (small caps on or off). It redefines the \itshape and \scshape commands to combine instead of override each other. The fontspec package loads fontaxes. So do many legacy font packages.

1
  • Ah, brilliant. It's fontaxes exactly, loaded by fontspec after an upgrade to Debian Bullseye. I noticed exactly because I started getting those warning messages, which I had never gotten before. Aug 17, 2021 at 18:11

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .