为矢量、粗体字母(但不为数字)定义命令

为矢量、粗体字母(但不为数字)定义命令

这样做的目的是将脚本排除在外。例如,

\renewcommand{\vec}[1]{\ensuremath{\mathbf{#1}}}
...
\vec{x_0}

也会将 0 打印为粗体。我知道我可能可以写

\renewcommand{\vec}[2][]{\ensuremath{\mathbf{#2}_{#1}}}
...
\vec[0]{x}

但这意味着我必须重新格式化我的整篇论文,这违背了定义命令的基本目的。

编辑:如果能保留所有脚本的原始内容,而其他脚本保持原样,那就太好了。这样更好。

答案1

重新定义 后输入向量时出错\vec。下标不能放在参数中。

但是,如果你的向量是全部形式为\vec{<single letter><optional subscript>},即\vec{v}\vec{v_{0}},您可以通过双重命令来解决问题:

\renewcommand{\vec}[1]{\innervec#1}
\newcommand{\innervec}[1]{\mathbf{#1}}

我建议不是使用\ensuremath,因为向量对我来说无疑是数学。如果你有许多\vec外部数学模式,那么请这样做

\renewcommand{\vec}[1]{\ensuremath{\innervec#1}}
\newcommand{\innervec}[1]{\mathbf{#1}}

但是,为了将来,请克制自己不要将其用于\ensuremath此类事情。你出现节省打字时的一些按键

the vector \vec{v} is non zero

但实际上你正在丢失信息。而且,无论如何,你必须输入

with $\vec{v}\ne\vec{0}$.

答案2

我同意@egreg的观点,你不应该真正使用这种标记,但无论如何:

在此处输入图片描述

\documentclass{article}

\renewcommand{\vec}[1]{{\mathbf{\xdef\zz{\textfont1 \the\textfont\the\fam}}\mathpalette\myvec{#1}}}
\def\myvec#1#2{\hbox{$#1\zz#2$}}
\begin{document}

$v_0+a+1$

$\mathbf{v_0}+a + 1$


$\vec{v_0}+ a + 1$

\end{document}

相关内容