lmodern-lighttt 中的斜体字体

lmodern-lighttt 中的斜体字体

在为我的代码清单寻找合适的等宽字体时,我找到了 lmodern 字体。我非常喜欢lighttt这些字体的变体。普通版和粗体版之间的区别在 上清晰可见ttfamily

然而最近我发现我还需要斜体版本。不幸的是,以下是:

\documentclass{article}
\usepackage[lighttt]{lmodern}

\begin{document}
Abc {\ttfamily abc {\bfseries abc} {\itshape abc}}
\end{document}

引发错误:

! No declaration for shape OT1/lmtt/l/sl

有没有办法使这种字体变为斜体?


经过一些试验,我很快发现,虽然斜体不可用,但可以使用倾斜字体。\slshape与 lmodern-lighttt-ttfamily 配合得很好。

然而,虽然在上面的 MWE 中我\itshape明确使用了并且可以轻松地与交换\slshape,但在我的实际场景中并非总是如此。

  • 我使用 listings 包,它在某些情况下会自动使用斜体字体(例如代码中的注释)
  • 有时我会在标题中放一些简短的代码,整体上是斜体的(不应该使用倾斜)

快速破解:\renewcommand{\itshape}{\slshape}从长远来看也不合理,因为它会改变全部斜体字体倾斜,而我只关心等宽字体的情况 - 在输入源代码时。

也许有一种方法可以\itshape\slshape在等宽字体的上下文中处理?

答案1

2023 年更新

在当前的 texlive 2023 中,这个错误已经被纠正,并且可以正常工作(并给出倾斜的打字机)

\documentclass{article}

\usepackage[lighttt]{lmodern}

\begin{document}
Abc {\ttfamily abc  \itshape abc}
\end{document}

在此处输入图片描述

0旧答案

这是 fd-files(OT1lmtt.fdT1lmtt.fd)中的一个错误:在“lighttt”部分,它们将替换为lmtt/m/it。您应该报告此问题。lmtt/l/sllmtt/m/sl

你可以用以下方法解决

\documentclass{article}

\usepackage[lighttt]{lmodern}
\ttfamily
\DeclareFontShape{OT1}{lmtt}{m}{it}
     {<->sub*lmtt/m/sl}{}

\begin{document}
Abc {\ttfamily abc  \itshape abc}
\end{document}

相关内容