等式内的文本以 \\ 表示

等式内的文本以 \\ 表示

overbrace有时我想在等式中使用/插入文本stackrel,并将其放在多行中。最直接的方法是什么?

我希望得到下图所示的效果。我的(有点愚蠢的)解决方法是:

\documentclass[a4paper]{article}
\usepackage{amsmath,times}
\begin{document}
$$e = \underbrace{m}_{\substack{\text{I wish this text}\\ \text{ to be in two lines}} }\cdot \underbrace{c^2}_{\text{and the same here} }$$
\end{document}

在此处输入图片描述

有任何(更好的)解决方案吗?

谢谢!

答案1

您可以使用\parbox指令。在下面的例子中,我使用\Centering(来自raggede包)而不是基本\centering指令,因为它\Centering提供了自动行长平衡。

在此处输入图片描述

\documentclass[a4paper]{article}
\usepackage{amsmath,newtxtext,ragged2e} % 'times' package is deprecated
\begin{document}
\[
E = \underbrace{m}_{\parbox{1.75cm}{\Centering\scriptsize I wish this text to be in two lines}}    
\cdot \underbrace{c^2}_{\parbox{1.25cm}{\Centering\scriptsize and the same here}}
\]
\end{document}

答案2

其他可能性如下:

$$e = \underbrace{m}_{\substack{\text{I wish this text}\\ \text{ to be in two lines}}}\cdot \underbrace{c^2}_{\text{and the same here} }$$

$$e = \underbrace{m}_{\parbox{10em}{\scriptsize I wish this text  to be in two lines}}\cdot \underbrace{c^2}_{\text{and the same here} }$$

$$e = \underbrace{m}_{\text{I wish this text }\atop\text{to be in two lines}}\cdot \underbrace{c^2}_{\text{and the same here} }$$

答案3

您可以定义一个\textsubstack适用\text于每个块的命令(以 分隔\\):

\documentclass[a4paper]{article}

\usepackage{amsmath}
\usepackage{xparse}

\ExplSyntaxOn
\NewDocumentCommand{\textsubstack}{m}
 {
  \seq_set_split:Nnn \l_omer_textsubstack_input_seq { \\ } { #1 }
  \seq_set_map:NNn \l_omer_textsubstack_output_seq
    \l_omer_textsubstack_input_seq
    { \exp_not:n { \text {##1} } }
  \substack{ \seq_use:Nn \l_omer_textsubstack_output_seq { \\ } }
 }
\seq_new:N \l_omer_textsubstack_input_seq
\seq_new:N \l_omer_textsubstack_output_seq
\ExplSyntaxOff

\begin{document}

\begin{equation*}
  e = \underbrace{m}_{\textsubstack{I wish this text\\to be in two lines}}
      \cdot \underbrace{c^2}_{\textsubstack{and the\\ same here}}
\end{equation*}

\end{document}

首先将输入在 处拆分\\;然后围绕每个项目用 构建一个新序列\text{...},然后生成序列,以\\作为分隔符。

在此处输入图片描述

答案4

您的\substack/\text解决方案非常合理,特别是因为它不需要指定宽度。只需注意虚假空格。但是,如果愿意,可以定义多行版本\text

示例输出

\documentclass[a4paper]{article}

\usepackage{amsmath,times,varwidth}

\makeatletter
\DeclareRobustCommand{\textblock}[1]{%
{\mathchoice
  {\textblockdef@\displaystyle\f@size{#1}}%
  {\textblockdef@\textstyle\f@size{\firstchoice@false #1}}%
  {\textblockdef@\textstyle\sf@size{\firstchoice@false #1}}%
  {\textblockdef@\textstyle \ssf@size{\firstchoice@false #1}}%
  \check@mathfonts
  }%
}
\def\textblockdef@#1#2#3{\begin{varwidth}{\textwidth}
  \everymath{#1}%
  \let\f@size#2\selectfont
  \baselineskip=\f@size pt
  \baselineskip=1.1\baselineskip
  \centering
  #3
  \end{varwidth}}

\begin{document}

\begin{equation*}
  e = \underbrace{m}_{\textblock{I wish this text\\to be in two lines}}
      \cdot \underbrace{c^2}_{\textblock{and the\\ same here}}
\end{equation*}

\end{document}

的定义\textblock基于\textfrom的定义amstxt.sty,但只是假设我们处于数学模式。它将根据其在等式中的位置调整其字体大小,并将继承周围文本的字体特征。我选择让文本自动居中。数学尺寸信息不包含基线跳跃的规范,因此我选择了一个比普通文本略紧的值。

相关内容