这样做的目的是将脚本排除在外。例如,
\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}