答案1
提出的解决方案使用了一个\ubrace
比它更好的命令,\underbrace
因为它生成了一个普通原子而不是操作符原子,并且具有更符合 LaTeX 语法。
的参数\usqrt
保存在一个框中,其中\ubrace
重新定义为仅传递其第一个参数。因此,我们可以将此框用作幻像,以便将部首设置为所需的高度和宽度。
我们按照这个框的宽度后退,并用的正常含义重新排版该参数\ubrace
。
图中,第二个公式用于检查一切是否按预期进行。
\documentclass{article}
\usepackage{amsmath}
\newcommand{\ubrace}[2]{{\underbrace{#1}_{#2}}}
\newsavebox{\usqrtbox}
\newcommand{\usqrt}[1]{% square root with underbraced material
\sbox{\usqrtbox}{%
\renewcommand{\ubrace}[2]{##1}% deliver only the main part
$\displaystyle#1$%
}%
\sqrt{\phantom{\usebox{\usqrtbox}}}\hspace*{-\wd\usqrtbox}#1%
}
\begin{document}
\[
\usqrt{
\ubrace{\det((D\varphi)^T)}{\det(D\varphi)}
\det(D\varphi)
}=x
\]
\[
\sqrt{\det((D\varphi)^T)\det(D\varphi)}=x
\]
\end{document}
有一个小区别:事实上,TeX\displaystyle
在平方根内部使用了狭窄的空间。你可以使用 来解决这个问题mathtools
。
\documentclass{article}
\usepackage{amsmath,mathtools}
\newcommand{\ubrace}[2]{{\underbrace{\ifsqrt\expandafter\cramped\fi{#1}}_{#2}}}
\newif\ifsqrt
\newsavebox{\usqrtbox}
\newcommand{\usqrt}[1]{% square root with underbraced material
\begingroup
\sqrttrue
\sbox{\usqrtbox}{%
\renewcommand{\ubrace}[2]{\cramped{##1}}% deliver only the main part
$\displaystyle#1$%
}%
\sqrt{\phantom{\usebox{\usqrtbox}}}\hspace*{-\wd\usqrtbox}%
#1%
\endgroup
}
\begin{document}
\[
\usqrt{
\ubrace{\det((D\varphi)^T)}{\det(D\varphi)}
\det(D\varphi)
}=x
\]
\[
\sqrt{\det((D\varphi)^T)\det(D\varphi)}=x
\]
\end{document}