使用 underbrace 时如何避免“sqrt 太大”

使用 underbrace 时如何避免“sqrt 太大”

代码示例:

\sqrt{\underbrace{\det((D\varphi)^T)}_{\det(D\varphi)} \det(D\varphi)}

生成:

在此处输入图片描述

问题:通过使用下支架,平方根而不是在下面平方根 - 因此平方根大于行高。我该如何避免这种情况?

答案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}

在此处输入图片描述

相关内容