定义一个新的 \Vec 命令以与 esvect 包一起使用

定义一个新的 \Vec 命令以与 esvect 包一起使用

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)。

在此处输入图片描述

相关内容