为什么当我甚至不使用该字体时 LaTeX 会触发字体警告,以及如何将其追溯到输入文件?

为什么当我甚至不使用该字体时 LaTeX 会触发字体警告,以及如何将其追溯到输入文件?

\sffamily我的第一个问题是,LaTeX 究竟何时会触发字体警告?我怀疑是在我通过或请求字体时\selectfont,对吗?

这就是为什么

\documentclass{article}

\begin{document}
\fontseries{book}\selectfont \fontseries{m}\selectfont Test
\end{document}

结果是

LaTeX Font Warning: Font shape `OT1/cmr/book/n' undefined
(Font)              using `OT1/cmr/m/n' instead on input line 4.

即使我不需要book我所请求的系列中的单个字形。


因此,根据这些知识,我的问题是,在我的文档中,我收到了来自 的虚假字体警告\tableofcontents,因为bx系列在我加载的字体中不可用\sfdefault,而是被替换为m。但是没有文本元素以该字体排版,这就是为什么我不知道从哪里开始寻找它,但我怀疑我甚至没有使用的定义试图选择bx

您能建议我采用什么方法来追踪bx请求后未使用的位置?因此,这不仅仅是关于这个问题,而更多的是关于调试技术的问题。例如,是否可以挂接\selectfont并让它打印何时调用以及从哪个文件调用它?

感谢您的帮助和提示,如果我需要进一步澄清,请告诉我。


补充澄清

非常感谢您迄今为止的评论。虽然我很感激您想在这里研究我的具体问题,但我真的更渴望学习如何自我调试。因此,这里有一个 MWE,可以更好地说明这个问题:

\documentclass{article}
\usepackage{filecontents}

\begin{filecontents}{mycommand.tex}
\newcommand{\MyCommand}[1]{{\fontseries{seriesthatdoesnotexist}\selectfont \fontseries{m}\selectfont #1}}
\end{filecontents}

\input{mycommand.tex}

\begin{document}
    \MyCommand{Test}
\end{document}

想象一下mycommand.tex,它不是很明显地加载了,而是在 documentclass、包或任何地方。但是当您在日志中看到字体警告时,它显示:

LaTeX Font Warning: Font shape `OT1/cmr/seriesthatdoesnotexist/n' undefined
(Font)              using `OT1/cmr/m/n' instead on input line 11.

从其他编程或脚本语言中,我习惯使用可以逐步执行我的代码或设置断点的调试器,以及查看之前进行的所有调用的跟踪的可能性。

在这种情况下,LaTeX 在第 11 行给我留下了一个问题,如果我不知道在哪里以及如何\MyCommand定义,我就无法理解。

是否真的可以追踪到导致问题的命令位置或定义命令的位置?那么在这种情况下,有没有办法引导我找到mycommand.tex

我希望这个补充能够澄清我所寻找的内容,这是一种调试技术,而不是字体替换问题的解决方案。


说明现实世界中问题的 MWE:

\documentclass[]{scrbook}
\usepackage[scaled]{uarial}
%%%%\setkomafont{disposition}{\normalfont} %solves the issue
\setkomafont{chapter}{\normalfont\Large\selectfont}

\begin{document}
\tableofcontents
\end{document}

我又花了些时间,但这是现实世界中的 MWE。字体chapter通常为\sffamily\bfseries,但即使您覆盖它,它仍被选中,因为disposition之前使用了 komafont。现在该行\setkomafont{disposition}{\normalfont}修复了该问题,但如果没有这些知识,如何跟踪和调试它?

相关内容