
我想透過使用 $ 分隔符號來保持數學模式。但是當我使用這段程式碼時:
\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}
我明白了:
在右邊,我看起來好像在學習顯示數學。為什麼?我應該\textstyle
在使用時使用嗎\underbrace
?
答案1
underbrace 在乳膠格式中定義為
\def\underbrace#1{\mathop{\vtop{\m@th\ialign{##\crcr
$\hfil\displaystyle{#1}\hfil$\crcr
%%%%%%%%%%%%
\noalign{\kern3\p@\nointerlineskip}%
\upbracefill\crcr\noalign{\kern3\p@}}}}\limits}
有一個(並非沒有道理:-)假設:沒有人會想要這裡的文字樣式。因此,如果您確實想要這樣做,則必須按照您在問題中建議的那樣在論證中重新聲明它。
答案2
鑑於大衛已經告訴你為什麼會這樣,你可以利用這些資訊做一些事情。您可以透過變更現有定義來建立自己的巨集\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}