有这样的命令,\vec
它会在顶部添加一个箭头紧接着的下一个非空格字符。但是,上标和下标不属于范围。
现在假设我定义一个命令\vt
如下:
\newcommand*\vt[1]%
{\ensuremath{\mathbf{#1}}}
因此它的作用类似于\mathbf
:在数学模式下,\vt{}
使里面的字符变为粗体。但是,如果没有括号,它也可以使下一个字符变为粗体,就像\vec
工作原理一样。现在,假设我需要使一个字符变为粗体,但是它的下标和上标也,而不使用括号(例如,如果我想批量复制并粘贴命令;括号会很麻烦)。如何做到这一点?
答案1
当然这不是一个好主意,但肯定是可能的。使用xparse
修饰。从长远来看,这不会像你想象的那样有效。
\documentclass{article}
\usepackage{xparse}
\NewDocumentCommand \vt { m e{^_}}
{
\mathbf{#1}
\IfNoValueF{#2}{\sp{\mathbf{#2}}}
\IfNoValueF{#3}{\sb{\mathbf{#3}}}
}
\begin{document}
$\vt d$
$\vt d^2$
$\vt d_{x^2 - y^2}$
$\vt d_{x^2 - y^2}^2$
$\vt d^2_{x^2 - y^2}$
\end{document}