选择粗体小写字体(或任何其他特定的系列+形状组合)

选择粗体小写字体(或任何其他特定的系列+形状组合)

消除警告的最佳方法(最合适和最通用的解决方案)是什么

LaTeX Font Warning: Some font shapes were not available, defaults substituted.

通过明确设置在编辑的文档中应该使用哪种字体来表示特定的系列+系列+形状组合?


粗体小写字母在字体方面并不广泛使用。例如,它们在 CM-Super(T1 编码的默认字体)中可用,但在总体上更好的 Latin Modern 中不可用。

假设我使用 Latin Modern 作为默认字体 ( \usepackage{lmodern})。在出现粗体小型大写字母时,应该怎么做才能让 LaTeX 回退到 CM-Super?(并且只有在出现粗体小型大写字母时,中型小型大写字母才应继续使用 Latin Modern 输入。)

答案1

据我所知,您只需使用 声明该字体形状即可\DeclareFontShape。您只需声明字体形状即可使用标准字体的字体形状。这应该会导致与之前相同的结果,只是没有警告。

Using `lmodern` with `T1` font encoding you get the following warning with `\scshape\bfseries`:
LaTeX Font Warning: Font shape `T1/lmr/bx/sc' undefined
(Font)              using `T1/lmr/bx/n' instead on input line 19.

LaTeX Font Warning: Some font shapes were not available, defaults substituted.

因此,您需要声明字体形状T1/lmr/bx/sc。正如 Ulrike 指出的那样,您可以使用以下代码替换另一种字体:

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

\usepackage{lmodern} \normalfont %to load T1lmr.fd 
\DeclareFontShape{T1}{lmr}{bx}{sc} { <-> ssub * cmr/bx/sc }{}

\begin{document}

{\normalfont normal font}
{\scshape small caps}
{\ttfamily tt family}
{\bfseries bold font}
{\scshape\bfseries bold small caps}% works and uses `cmr` font instead of `lmr`

\end{document}

答案2

我试图使用上一条评论中的技巧,直到我意识到我使用的是字体和 CM 字体没有‘无衬线’粗体小型大写字母...

为了解决这个问题,我使用了包含它们的 helvet 包。还有一个额外的技巧,因为您必须重新加载 \sfdefault 的声明,因为 \usepackage{helvet} 会覆盖它!然后它默认为 lmodern,除了您使用 helvet 的 sans small caps 之外......

只需在这里发布代码,以防它对某人有用!

\documentclass[a4paper,11pt]{article}

\usepackage[T1]{fontenc}

\usepackage{lmodern}
\sffamily %to load T1lmss.fd 

% Load 'sans small caps' from helvet:
\usepackage{helvet}
\sffamily %to load T1phvss.fd 
% Substitute non-existing lmss/bx/sc with phv/bx/sc
\DeclareFontShape{T1}{lmss}{bx}{sc} { <-> ssub * phv/bx/sc }{}
% Can also pick the sans small caps:
\DeclareFontShape{T1}{lmss}{m}{sc} { <-> ssub * phv/m/sc }{}

% Use lmodern to override helvet:
\renewcommand{\rmdefault}{lmr}
\renewcommand{\sfdefault}{lmss}
\renewcommand{\ttdefault}{lmtt}

\begin{document}

This is lmodern roman (lmr) -- default

{\sffamily This is lmodern sans (lmss)}

{\scshape This is small caps from lmodern (lmr)}

{\sffamily \scshape This is sans small caps from helvet (phv)}

{\sffamily \bfseries \scshape This is sans bold small caps from helvet (phv)}

\end{document}

相关内容