我使用 beamer (2019/09/29 v3.57)、biblatex 和带有 ISBN 的参考资料时收到 LaTeX 字体警告。我该如何删除它?
完整的错误文本是:
[filename].tex || LaTeX Font Warning: Font shape `OT1/lmss/m/sc' in size <10.95> not available Font shape `OT1/lmr/m/sc' tried instead on input line 12.
我已经尝试了一切如何删除 beamer 中的警告“字体形状 `OT1/cmss/m/n' 大小 <4> 不可用”和“大小替换有差异”?无济于事:
- 添加
\usepackage{lmodern}
- 添加
\usepackage{anyfontsize}
- 添加
\let\Tiny=\tiny
- 我的 beamer 版本已经
>= 3.44
- 我有
\end{document}
我已经将问题归结为文件条目isbn
的字段.bib
。删除该字段后,错误消失。
这是一个真正最小的工作示例:
% filename.tex
\documentclass{beamer}
\let\Tiny=\tiny
\usepackage{lmodern}
\usepackage{anyfontsize}
\usepackage{biblatex}
\addbibresource{ref.bib}
\begin{document}
\cite{freivalds}
\printbibliography
\end{document}
% ref.bib
@InProceedings{freivalds,
author="Freivalds",
isbn="978-3-540-38769-5"
}
输出结果如下所示。请注意,文本 ISBN 在参考书目中使用了不同的字体。
答案1
作为乌尔丽克·菲舍尔在评论中解释道,这是一个字体警告,告诉您您的文档请求的字体组合在您的字体设置中不可用,并告诉您 LaTeX 回退到哪些替代方案。
尤其
LaTeX Font Warning: Font shape `OT1/lmss/m/sc' in size <10.95> not available
(Font) Font shape `OT1/lmr/m/sc' tried instead on input line 9.
表示某些内容要求使用无衬线字体中的小型大写字母,而 Latin Modern(您加载的字体\usepackage{lmodern}
)没有这种字体。LaTeX 决定恢复使用常规/衬线字体的小型大写字母。
为什么首先要求字体组合?默认情况下,beamer
将文本设置为无衬线字体。biblatex
使用 打印诸如“ISBN”之类的首字母缩略词\mkbibacro
,其作用类似于\textsc{\MakeLowercase{#1}}
,因此要求使用小写字母。
有几种方法可以处理此警告。
忽略警告并且不采取任何措施。如果您对输出结果满意,则可以忽略警告。警告通常只会告诉您可能出现错误或您可能需要更改某些内容,并要求您仔细检查输出。如果警告没有建议您如何做得更好(有些警告会,例如如果命令被重命名,它们可能会建议您使用新名称),如果您对结果或结果满意,则不必采取行动。
选择具有无衬线小型大写字母的字体。消除错误的一个明显解决方案是选择具有无衬线小写字母的字体。Libertinus 就是一个例子。替换
\usepackage{lmodern}
为\usepackage{libertinus}
,您将获得无衬线小写字母,并且不会出现任何警告。避免字体组合。有几种方法可以做到这一点。一种方法是使用 Latin Modern Regular 而不是 Sans Serif 排版您的演示文稿(这可能不是一个好主意,人们通常更喜欢使用无衬线字体进行演示)。但不太激进的解决方案是避免使用首字母缩略词的小写字母。要做到这一点,请将其添加
\renewcommand*{\mkbibacro}[1]{#1}
到您的文档中。