
下面是兩個例子:
1
\documentclass[a4paper,10pt]{article}
\usepackage{amsmath}
\begin{document}
$\boldsymbol x$
\end{document}
2
\documentclass[a4paper,10pt]{article}
\usepackage{amsmath}
\usepackage{stmaryrd}
\begin{document}
$\boldsymbol x$
\end{document}
據我所知,兩個版本在使用 編譯時都會產生相同的輸出pdflatex
:有一個粗體斜體的「x」。
然而,當我編譯文檔2時,我也收到以下警告:
LaTeX Font Warning: Font shape `U/stmry/b/n' undefined
(Font) using `U/stmry/m/n' instead on input line ….
為什麼我會收到此警告(這似乎表明 Latex 是不是能夠找到正確的字體)但輸出正確嗎?
如何避免警告?我的文檔中需要以下兩項:
- 大膽的普通數學符號的版本(我可以輕鬆生成沒有的東西
stmaryrd
) - 常規的某些符號的版本僅在
stmaryrd
答案1
內部\boldsymbol
有效使用,\boldmath
因此設置一個完整的粗體數學設置,無論實際使用粗體的符號是什麼,因此您會收到此警告。
這silence
套件提供了一個用於過濾各種 LaTeX 訊息的接口,因此您可以過濾掉這些訊息,或者在本例中,stmaryrd
用途
\SetSymbolFont{stmry}{bold}{U}{stmry}{b}{n}
%%%
要聲明粗體數學版本應使用粗體字體(從未聲明,因為它不存在)。
因此,另一種方法是告訴 LaTeX 在粗體版本中使用普通字體。
我沒有收到任何警告:
\documentclass[a4paper,10pt]{article}
\usepackage{amsmath}
\usepackage{stmaryrd}
\SetSymbolFont{stmry}{bold}{U}{stmry}{m}{n}
%%%
\begin{document}
aa
$\boldsymbol{x}$
\end{document}