该esvect
包使用命令\vv{v}
在其参数中的字母(即向量)上方写一个箭头,并使用命令\vv*{v}{n}
写一个带有下标 n 的向量 v。我想定义一个函数,\Vec
这样\Vec{v}
给出\vv*{v}{}
,而\Vec{v}_n
给出\vv*{v}{n}
。
实际上,我希望以esvect
与使用普通命令相同的方式使用该包\vec
。这可能吗?
答案1
您可以使用e
(修饰)参数说明符\NewDocumentCommand
:
\documentclass{article}
\usepackage{esvect}
\NewDocumentCommand{\Vec}{me{_}}{%
\IfNoValueTF{#2}{\vv{#1}}{\vv*{#1}{#2}}%
}
\begin{document}
With the standard \verb|\vv|
\[
\vv{v}+\vv*{v}{n}
\]
With the new \verb|\Vec|
\[
\Vec{v}+\Vec{v}_n
\]
\end{document}
甚至更好的是,你可以避开留下的小洞\vv*
:
\documentclass{article}
\usepackage{amsmath}
\usepackage{esvect}
\RenewDocumentCommand{\Vec}{me{_}}{%
\IfNoValueTF{#2}{\vv{#1}}{\vv*{#1}{\mspace{-2mu}#2}}%
}
\begin{document}
\begin{gather*}
\Vec{v}+\Vec{v}_n \\
\Vec{x}+\Vec{x}_n \\
\Vec{p}+\Vec{p}_n \\
\Vec{y}+\Vec{y}_n \\
\end{gather*}
\end{document}
\RenewDocumentCommand{\Vec}
请注意,如果amsmath
已加载,则需要(其中amsmath
,\Vec
是的别名\vec
)。