禁用 \vec 的大小改变

禁用 \vec 的大小改变

我想使用这个宏:

\newcommand{\norm}[1]{\left\lVert #1 \right\rVert}

但做

\norm{\vec F}
\lVert \vec F \Rvert

屈服于此

显然\vec是在改变参数的“大小”,我想禁用它,以实现上述第二种形式。

答案1

我建议使用\DeclarePairedDelimiter。然后您可以手动调整分隔符大小(通常您应该这样做,而不是使用\left\right)。

在此处输入图片描述

\documentclass{article}

\usepackage{mathtools}

\DeclarePairedDelimiter{\norm}{\Vert}{\Vert}

\begin{document}

$\norm{F} \quad \norm{\vec F} \quad \norm[\big]{\vec F} \quad \norm[\Big]{\vec F}$

\end{document}

答案2

如果你喜欢使用 生成的“栅栏”的自动调整大小功能\norm,我建议你使用 和\mleft--\mright的两个用户级宏左右包 -- 而不是\left\right。使用\mleft\mright将避免在表达式周围创建多余的空格。

只有在绝对必要的情况下,你才可以使用\smash来压缩 的高度\vec{F}。但是,请注意使用\smash并不是万能的。事实上,它的使用可能会产生一系列意想不到的不良后果;请参阅您的查询下方的 @egreg 的评论,了解此类示例。总结:请考虑使用 中提出的方法Sandy G 的回答,它使用\DeclarePairedDelimiter宏(由包提供mathtools)来创建一个名为的宏\norm

在此处输入图片描述

\documentclass{article}
\usepackage{mleftright} % https://www.ctan.org/pkg/mleftright
\usepackage{amsmath} % for '\Vert' macro
\newcommand{\norm}[1]{\mleft\Vert #1 \mright\Vert}

\begin{document}
$\norm{\vec{F}}$
$\norm{\smash{\vec{F}}}$
$\lVert \vec{F} \rVert$
\end{document}

答案3

为了简洁起见,我不愿意使用 Sandy G 的相关解决方案。我采纳了 Mico 关于使用的建议,\left \right并得出了以下结论:

\documentclass{article}
\usepackage{mleftright}
\usepackage{amsmath} % for '\Vert' macro
\newcommand{\norm}[1]{\mleft\Vert #1 \mright\Vert}
\let\dvec\vec
\renewcommand\vec[1]{\smash{\dvec #1}}

虽然要记住,\dvec可以在罕见的情况下使用案例egreg 提到过。

\[
    \norm{\vec v} \quad  \norm{\vec V} \quad \norm{\frac{\vec F}{\lVert \dvec F \rVert}}
\]

相关内容