自动校正下支撑间距

自动校正下支撑间距

我想定义一个命令来自动化https://tex.stackexchange.com/a/503610/128042,因为许多 LaTeX 用户不喜欢\underbrace(见使用 underbrace 而没有左(和右)比例如何防止带有下标的下括号影响分隔符的大小下部支撑与水平间距冲突,...)

我尝试了以下操作MWE

\documentclass{article}
%\usepackage{amssymb}
\usepackage{mathtools}
\usepackage{hyperref}
\DeclarePairedDelimiter{\norm}{\|}{\|_{2}}
\newcommand{\myVtoken}{}
\newcommand{\myunderbrace}[2]{%
    \renewcommand{\myVtoken}{\vphantom{\underbrace{{#1}}_{{#2}}}}%
    \vphantom{#1}\smash[b]{\underbrace{{#1}}_{\mathclap{{#2}}}}%
}

\begin{document}
I would like this to work:
\[
\norm*{\left(2,\myunderbrace{\frac{5}{3}}{\approx 1.66666667\frac{1}{1}} \right)}
\myVtoken %\vphantom{\underbrace{\frac{5}{3}}_{\approx 1.66666667\frac{1}{1}}} %with this \vphantom it would work
\]
The above formula is too close to this line, but this works fine: 
\[
\norm*{\left(2,\smash[b]{\underbrace{\frac{5}{3}}_{\mathclap{\approx 1.66666667}}} \right)}
\vphantom{\underbrace{\frac{5}{3}}_{\approx 1.66666667}}
\]
This text has the correct distance to the line above, because of the vphantom outside of the delimiters.

\end{document}

生成结果: 在此处输入图片描述

里面\renewcommand\newcommand似乎不像我预期的那样工作。我尝试了和\let\def但我对它们知之甚少。

有人知道如何正确地重新定义命令中的命令以获得所需的效果吗?

或者是否有更好的解决方案来获得所需的结果,即有一个易于使用的命令,我不必\underbrace多次复制内容。我不想使用类似的东西手动决定分隔符应该有多大\big

答案1

如果人们愿意发布明确的尺寸指令,即,,,和,而不是依赖和来确定括号和规范符号的尺寸,那么就可以得到一个简单\big\Big直接的解决方案\bigg\Bigg\left\right

在此处输入图片描述

这里采用的方法的一个不可忽视的优势是,低级 LaTeX 方程放置参数(例如\abovedisplayskip和)\abovedisplayshortskip不需要进行调整。

\documentclass{article}
\usepackage{mathtools} % for \DeclarePairedDelimiter and \mathclap macros
\DeclarePairedDelimiter{\norm}{\lVert}{\rVert_2}
\newcommand{\myunderbrace}[2]{\underbrace{#1}_{\mathclap{#2}}}

\begin{document}
\noindent
Some text some text some text some text some text \dots
\[
\norm[\bigg]{\Bigl( 2, \myunderbrace{\frac{5}{3}}{\approx 1.6667} \,\Bigr)}
\]
Some text some text some text some text some text \dots
\end{document}

答案2

我只是,只是,在之后添加了\begin{document}

        \abovedisplayskip=0.6cm
        \abovedisplayshortskip=-0.3cm
        \belowdisplayskip=0.6cm
        \belowdisplayshortskip=0.2cm

修改代码的参数后,你可以在这里找到关联


在此处输入图片描述

\documentclass{article}
%\usepackage{amssymb}
\usepackage{mathtools}
\usepackage{hyperref}
\DeclarePairedDelimiter{\norm}{\|}{\|_{2}}
\newcommand{\myVtoken}{}
\newcommand{\myunderbrace}[2]{%
    \renewcommand{\myVtoken}{\vphantom{\underbrace{{#1}}_{{#2}}}}%
    \vphantom{#1}\smash[b]{\underbrace{{#1}}_{\mathclap{{#2}}}}%
}

\begin{document}
I would like this to work:
\abovedisplayskip=0.6cm
\abovedisplayshortskip=-0.3cm
\belowdisplayskip=0.6cm
\belowdisplayshortskip=0.2cm
\[
\norm*{\left(2,\myunderbrace{\frac{5}{3}}{\approx 1.66666667\frac{1}{1}} \right)}
\myVtoken %\vphantom{\underbrace{\frac{5}{3}}_{\approx 1.66666667\frac{1}{1}}} %with this \vphantom it would work
\]

The above formula is too close to this line, but this works fine: 
\[
\norm*{\left(2,\smash[b]{\underbrace{\frac{5}{3}}_{\mathclap{\approx 1.66666667}}} \right)}
\vphantom{\underbrace{\frac{5}{3}}_{\approx 1.66666667}}
\]
This text has the correct distance to the line above, because of the vphantom outside of the delimiters.

\end{document}

相关内容