统一分隔符大小

统一分隔符大小

在我的序言中,我有以下内容

\DeclarePairedDelimiter\norm{\lVert}{\rVert}%
\makeatletter
\let\oldnorm\norm
\def\norm{\@ifstar{\oldnorm}{\oldnorm*}}
\makeatother

不知道它是如何工作的。但在大多数情况下它确实工作得很好。但下面的看起来很糟糕

\norm{a} - \norm{b_{t|t}}

因为分隔符的大小不同。因此我想手动控制它们的大小,例如 \big、\Big 等...

有人知道一个聪明的方法吗?

答案1

这是一个很好的例子,说明为什么我通常不鼓励滥用\left\right

\DeclarePairedDelimiter\norm{\lVert}{\rVert}定义的宏\norm可以按以下方式使用:

\norm{x}
\norm[\big]{x}
\norm[\Big]{x}
\norm[\bigg]{x}
\norm[\Bigg]{x}
\norm*{x}

简单调用对分隔符的大小没有任何影响,后面带有可选参数的调用“手动”指定大小,最后一个调用告诉 TeX 使用“自动”大小调整。

您使用的技巧告诉 TeX,如果您调用\norm{x}\oldnorm*{x}就会执行,并且当\norm*{x}找到时,\oldnorm{x}就会实际执行。

以下是你的方法可以做吧:

\documentclass{article}
\usepackage{mathtools}

\DeclarePairedDelimiter\norm{\lVert}{\rVert}%
\makeatletter
\let\oldnorm\norm
\def\norm{\@ifstar{\oldnorm}{\oldnorm*}}
\makeatother

\begin{document}

(1) $\norm{a} - \norm{b_{t|t}}$

\bigskip

(2) $\norm*[\big]{a} - \norm*[\big]{b_{t|t}}$

\bigskip

(3) $\norm*{a} - \norm*{b_{t|t}}$

\end{document}

在此处输入图片描述

我毫不怀疑 (3) 是唯一正确的方法。你使用的技巧\oldnorm根本没用:只需将其删除并输入

\documentclass{article}
\usepackage{mathtools}

\DeclarePairedDelimiter\norm{\lVert}{\rVert}%

\begin{document}

(3) $\norm{a} - \norm{b_{t|t}}$

\end{document}

仅在真正必要时才使用可选参数或 * 形式。

此输入将给出上面的形式 (3)。

相关内容