我有一个宏,它接受一个参数并将其加粗(此外还有一些其他内容)。但我希望它不要将数字加粗。
例如,我现在有的是
\newcommand{\mybold}{\mathbf}
并\mybold{R^2}
给出
但我想要的是\mybold{R^2}
给予
其中“2”未加粗。
我怎样才能做到这一点?
答案1
(本地)更改数字的数学代码。
\documentclass{article}
\newcommand{\mybold}[1]{\mathbf{\fixnumbers\relax#1}}
\newcommand{\fixnumbers}{%
\fixnumber{0}%
\fixnumber{1}%
\fixnumber{2}%
\fixnumber{3}%
\fixnumber{4}%
\fixnumber{5}%
\fixnumber{6}%
\fixnumber{7}%
\fixnumber{8}%
\fixnumber{9}%
}
\newcommand{\fixnumber}[1]{\mathcode`#1=\numexpr\mathcode`#1-"7000\relax}
\begin{document}
$\mybold{R^2}+2-\mathbf{3}$
\end{document}
答案2
使用xelatex
或运行lualatex
:
\documentclass{article}
\usepackage{unicode-math}
\setmathfont{xits-math.otf}
\setmathfont{xits-mathbold.otf}[version=mybold,range={"0020-"002A,"003A-"FFFF}]
\newcommand\mybold[1]{{\mathversion{mybold}#1}}
\begin{document}
$\mybold{R^2}+2-\mathbf{3}$
\end{document}
必须R
是\mathit
。但是,如果你不喜欢,你可以将其更改为\mathup