在数学环境中使用 \underbrace 时出现意外的 displaymath

在数学环境中使用 \underbrace 时出现意外的 displaymath

我想使用 $ 分隔符保持数学模式。但是当我使用此代码时:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\begin{document}

$\big(\sum_{j=1}^n\delta_{j,k}x_k\big)_{1\leq k\leq n}
=\big(\underbrace{\sum_{j=1}^n\delta_{j,k}}_{1_A}x_k\big)_{1\leq k\leq n}$

\end{document}

我明白了:

在此处输入图片描述

在右侧,看起来好像我在 displaymath 中。为什么?\textstyle每次使用 时我都应该使用 吗\underbrace

答案1

underbrace 在 latex 格式中定义为

\def\underbrace#1{\mathop{\vtop{\m@th\ialign{##\crcr
   $\hfil\displaystyle{#1}\hfil$\crcr
          %%%%%%%%%%%%
   \noalign{\kern3\p@\nointerlineskip}%
   \upbracefill\crcr\noalign{\kern3\p@}}}}\limits}

有一种(并非不合理:-)假设,即这里没有人想要 textstyle。因此,如果您确实想要,则必须按照您在问题中所建议的那样在论证中重新主张这一点。

答案2

因此,既然 David 已经告诉了您为什么会这样,您可以利用这些信息做几件事。您可以通过更改现有定义来创建自己的宏\tunderbrace,该宏与文本样式的宏类似。\underbrace

\Tunderbrace或者,只是为了好玩,使用堆栈创建自己的版本:

\documentclass{article}
\usepackage{stackengine, scalerel, graphicx}
\makeatletter
\def\tunderbrace#1{\mathop{\vtop{\m@th\ialign{##\crcr
   $\hfil\textstyle{#1}\hfil$\crcr
          %%%%%%%%%%%%
   \noalign{\kern3\p@\nointerlineskip}%
   \upbracefill\crcr\noalign{\kern3\p@}}}}\limits}
\makeatother
\newcommand\Tunderbrace[2]{\mathop{\ensurestackMath{%
  \def\tmp{#1}%
  \setbox0=\hbox{$\tmp$}%
  \stackunder[1pt]{%
    \stackunder[0pt]{\tmp}{\rotatebox{90}{\scaleto[2ex]{\{}{\wd0}}}%
  }{%
    \scriptstyle #2%
  }%
}}}
\parskip 1em
\begin{document}
$\tunderbrace{\sum_{j=1}^n \delta_{j,k}}_{1_A}x_k$\par
$\Tunderbrace{\sum_{j=1}^n \delta_{j,k}}{1_A}x_k$
\end{document}

在此处输入图片描述

相关内容