在为我的代码清单寻找合适的等宽字体时,我找到了 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.fd
和T1lmtt.fd
)中的一个错误:在“lighttt”部分,它们将替换为lmtt/m/it
。您应该报告此问题。lmtt/l/sl
lmtt/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}