似乎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
改用 。