sf 下的 itemize 产生字体警告

sf 下的 itemize 产生字体警告

似乎textbullet没有sf版本。当 itemize 在\sf环境中时,我收到以下警告:

LaTeX Font Warning: Font shape `OMS/cmss/m/n' undefined
(Font)              using `OMS/cmsy/m/n' instead
(Font)              for symbol `textbullet' on input line 14.

这是一个简单的例子:

\documentclass{article}
\begin{document}
{\sf
  \begin{itemize}
    \item Test
  \end{itemize}
}
\end{document}

特别是,当包txfonts已加载,但我收到类似的警告:

LaTeX Font Warning: Font shape `OMS/txss/m/n' undefined
(Font)              using `OMS/txsy/m/n' instead
(Font)              for symbol `textbullet' on input line 14.

我注意到,通过上传textcomp包(之前txfonts在第二个例子中),我消除了警告。

有人能找出该包中的哪些行可以避免警告吗?在这种情况下,我只需将所需的行放入我的文件中,而无需上传完整的包。我猜这个包定义了缺失的字体,但我不知道如何找到我需要的特定行。

答案1

警告告诉你项目符号来自数学字体,但既然你知道这一点,但又不想被警告,也许最简单的做法是

\renewcommand\textbullet{\ensuremath{\bullet}}

然后它就会明确使用数学,而不需要警告你。当然,更简单的方法是忽略警告。

\documentclass{article}
\renewcommand\textbullet{\ensuremath{\bullet}}
\begin{document}
{\sf
  \begin{itemize}
    \item Test
  \end{itemize}
}
\end{document}

答案2

文本字体没有项目符号字符,因此\textbullet通过字体替换获得:而不是OT1/<family>/m/n/,TeX 查找OMS/<family>/m/n,如果找不到,它会更改<family>为标准数学符号字体​​系列。由于您似乎正在使用 Latin Modern,因此该过程是

OT1/lmss/m/n
OMS/lmss/m/n
OMS/lmsy/m/n

因为没有OMS/lmss定义字体,并且<family>引用当前字体系列,在您的情况下是与无衬线字体相对应的字体系列。所有没有无衬线字体系列的数学符号字体​​的字体系列都会发生同样的情况。

请注意,字体替换也适用于罗马字体系列;对于 Computer Modern,替换是静默的;其他字体系列可能没有将此字体替换定义为静默的。

除了加载之外,没有其他方法可以消除警告textcomp。在这种情况下\textbullet,被重新定义为指向 TS1 编码字体中的字符

TS1/lmss/m/n

由于存在,所以不会产生警告。

几点注意事项。首先,txfonts不建议使用;最好这样做

\usepackage{newtxtext,newtxmath}

第二,\sf是过时的命令;请\sffamily改用 。

相关内容