目标是使用命令使矢量变为粗体斜体\symbfit
。LucidaBrightMathOT.otf
但是,\symbfit
对于数字不起作用,如下例所示。
\documentclass{article}
\usepackage{amsmath}
\usepackage{unicode-math}
\setmathfont[]{LucidaBrightMathOT.otf}
\renewcommand{\vec}[1]{\symbfit{#1}}
\begin{document}
\(x\), \(\vec{x}\)
\(0\), \(\vec{0}\), want: \(\symbf{0}\)
\end{document}
是否有可能以某种方式映射symbfit
到symbf
数字?例如,使用range
fontspec 选项?
答案1
按情况选择。
\documentclass{article}
\usepackage{amsmath}
\usepackage{unicode-math}
\ExplSyntaxOn
\AtBeginDocument{\RenewCommandCopy{\vec}{\schmidt_vec:n}}
\cs_new_protected:Nn \schmidt_vec:n
{
\str_case:nnF { #1 }
{
{0}{\symbf{0}}
{1}{\symbf{1}}
{2}{\symbf{2}}
{3}{\symbf{3}}
{4}{\symbf{4}}
{5}{\symbf{5}}
{6}{\symbf{6}}
{7}{\symbf{7}}
{8}{\symbf{8}}
{9}{\symbf{9}}
}
{\symbfit{#1}}
}
\ExplSyntaxOff
\begin{document}
\(x\), \(\vec{x}\)
\(0\), \(\vec{0}\), want: \(\symbf{0}\)
\end{document}
不过,我猜你实际上只希望 0 得到特殊处理。