声明新的字体形状

声明新的字体形状

在我的文档中\bfseries,定义为选择“半粗体”形状,但是打字机系列(beramono)没有“半粗体”形状。因此我收到警告:

LaTeX Font Warning: Font shape `T1/fvm/sb/n' undefined
(Font)              using `T1/fvm/m/n' instead on input line 250.

我尝试了讨论的解决方案这里通过使用以下命令为打字机系列声明新的字体形状。

\DeclareFontShape{T1}{fvm}{sb}{n}{<->ssub*fvm/b/n}{}

或者

\DeclareFontShape{\encodingdefault}{\ttdefault}{sb}{n}{<->ssub*\ttdefault/b/n}{}

对于这两个命令,我都收到了以下错误:

! LaTeX Error: Font family `T1+fvm' unknown.

一个有效的例子是:

\documentclass{report}
\usepackage[T1]{fontenc}

\usepackage[oldstyle,semibold,type1]{libertine}
\usepackage[scaled=.85]{beramono}% typewriter font 

\DeclareFontShape{T1}{fvm}{sb}{n}{<->ssub * fvm/b/n}{}

\begin{document}

\ttfamily\bfseries Hello World!

\end{document}

答案1

LaTeX 需要\DeclareFontFamily先看到声明才能\DeclareFontShape发出命令。

一个简单的方法是添加

\sbox0{\ttfamily X}

之后\usepackage[<options>]{beramono},这将导致.fd读入相应的文件,其中包含适当的\DeclareFontFamily命令。

答案2

感谢 egreg 和 Stephan,.fd之前加载的文件\DeclareFontShape解决了问题。

\documentclass{report}
\usepackage[T1]{fontenc}

\usepackage[oldstyle,semibold,type1]{libertine}
\usepackage[scaled=.85]{beramono}% typewriter font 

\makeatletter
\input{t1fvm.fd}
\makeatother

\DeclareFontShape{T1}{fvm}{sb}{n}{<->ssub * fvm/b/n}{}

\begin{document}

\ttfamily\bfseries Hello World!

\end{document}

相关内容