我想定义一个命令来自动化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}