![为所有粗体数学字母定义规则](https://linux22.com/image/327753/%E4%B8%BA%E6%89%80%E6%9C%89%E7%B2%97%E4%BD%93%E6%95%B0%E5%AD%A6%E5%AD%97%E6%AF%8D%E5%AE%9A%E4%B9%89%E8%A7%84%E5%88%99.png)
我一直在使用
\def\H{\bm{H}}
在数学模式中定义粗体字母。有没有办法定义一个通用规则任何字母?比如我想要一个规则,允许
\*anyletters*{\bm{*anyletter}*
% For example \I -> \bm{I} etc....
答案1
以下代码定义\bmA
为\bm{A}
遍历A
字母表中的所有字母。请不要使用单字母宏,因为这些宏往往具有特殊含义(重音符号、特殊符号)。
\documentclass{article}
\usepackage{bm}
\makeatletter
\newcounter{letter}
\setcounter{letter}{1}
\@whilenum\value{letter}<27\do{% loop over all letters in the alphabet
% \def\bmA{\bm{A}}, where A runs over all letters
% Remove letters `bm' vv if you don't care about breaking LaTeX
\expandafter\edef\csname bm\Alph{letter}\endcsname{\noexpand\bm{\Alph{letter}}}
\expandafter\edef\csname bm\alph{letter}\endcsname{\noexpand\bm{\alph{letter}}}
\stepcounter{letter}%
}
\makeatother
\begin{document}
Hungarian umlaut \H{o}
Polish suppressed-L \L
Scandinavian O-with-slash \O
pilcrow \P
section symbol \S
$\bmA \bmZ \bma \bmz$
\end{document}