我想将一个运算符置于两个下括号之间,其中包含上述方程部分的描述。我目前有这个:
\documentclass[a4paper, 12pt]{article}
\usepackage{indentfirst}
\usepackage{mathtools}
\usepackage{enumitem}
\begin{document}
\section{Foo}
\subsection{Bar}
\subsubsection*{Baz}\noindent
\parbox{\textwidth}{
\begin{enumerate}
\setlength{\jot}{10pt}
\item [1.] Lorem ipsum dolor sit amet, consectetur adipiscing elit.
\item [2.] abcde\\
\begin{equation*}
\setlength{\jot}{10pt}
\begin{aligned}
(a+b+c+d+e) &= a+b+c+d+e\\
&= \underbrace{(a+b)}_\text{(FooBar)}
+
\underbrace{(c+d+e)}_\text{
(This is much longer than the part over the underbrace.)
}
\end{aligned}
\end{equation*}
\end{enumerate}
}
\end{document}
这将生成以下文档:
我希望运算符位于等式两部分的中心。我找到了使用\parbox
es 的其他解决方案,但在我看来,这看起来很丑陋。我不希望文本是多行的,只希望运算符居中,如下所示:
答案1
请允许我提出一个替代方案:将两个括号中的一个替换为\overbrace
:
\documentclass[a4paper, 12pt]{article}
\usepackage{indentfirst}
\usepackage{mathtools}
\usepackage{enumitem}
\begin{document}
\section{Foo}
\subsection{Bar}
\subsubsection*{Baz}\noindent
\parbox{\textwidth}{
\begin{enumerate}
\setlength{\jot}{10pt}
\item [1.] Lorem ipsum dolor sit amet, consectetur adipiscing elit.
\item [2.] abcde\\
\begin{equation*}
\setlength{\jot}{10pt}
\begin{aligned}
(a+b+c+d+e) &= a+b+c+d+e\\
&= \overbrace{(a+b)}^{\text{(FooBar)} }
+
\underbrace{(c+d+e)}_{\mathclap{\text{
(This is much longer than the part over the underbrace.)
}}}
\end{aligned}
\end{equation*}
\end{enumerate}
}
\end{document}
关于您最初的请求,我认为没有任何优雅的解决方案不需要手动调整您想要的+
标志周围的间距。当然,您可以制作一个巨大的宏,根据下划线文本的大小计算此间距,但这可能会变得很庞大,并且需要您输入这些下划线文本作为参数。从长远来看,手动解决方案也可能带来更令人满意的结果,但需要付出更多工作。以下是其中一种解决方案:
\documentclass[a4paper, 12pt]{article}
\usepackage{indentfirst}
\usepackage{mathtools}
\usepackage{enumitem}
\newcommand\centerop[2]{\hspace{#1}#2\hspace{#1}}
\begin{document}
\section{Foo}
\subsection{Bar}
\subsubsection*{Baz}\noindent
\parbox{\textwidth}{
\begin{enumerate}
\setlength{\jot}{10pt}
\item [1.] Lorem ipsum dolor sit amet, consectetur adipiscing elit.
\item [2.] abcde\\
\begin{equation*}
\setlength{\jot}{10pt}
\begin{aligned}
(a+b+c+d+e) &= a+b+c+d+e\\
&= \underbrace{(a+b)}_{\mathclap{\text{(FooBar)} }}
\centerop{1.3cm}{+} %adjust the number 3cm manually
\underbrace{(c+d+e)}_{\mathclap{\text{
(This is much longer than the part over the underbrace.)
}}}
\end{aligned}
\end{equation*}
\end{enumerate}
}
\end{document}
答案2
\documentclass[a4paper, 12pt]{article}
\usepackage{indentfirst}
\usepackage{mathtools}
\usepackage{enumitem}
\usepackage{utfsym}
\begin{document}
\section{Foo}
\subsection{Bar}
\subsubsection*{Baz}\noindent
\parbox{\textwidth}{
\begin{enumerate}
\setlength{\jot}{10pt}
\item [1.] Lorem ipsum dolor sit amet, consectetur adipiscing elit.
\item [2.] abcde\\
\begin{equation*}
\setlength{\jot}{10pt}
\begin{aligned}
(a+b+c+d+e) &= a+b+c+d+e\\
&= \underbrace{(a+b)}_{\hspace{.02cm}\usym{2780}}
+
\underbrace{(c+d+e)}_{\hspace{.02cm}\usym{2781}}
\end{aligned}
\end{equation*}
\end{enumerate}
}
where \usym{2780}=(FooBar) and \usym{2781}=This is much longer than the part over the underbrace.
\end{document}
答案3
这与高斯勒的回答类似,但如果您坚持支撑不足的话,还可以提供一些建议以获得更好的输出。
\documentclass[a4paper, 12pt]{article}
\usepackage{mathtools}
\newcommand{\ubracetext}[3][c]{{%
\underbrace{#2}_{\mbox{\normalfont\scriptsize\begin{tabular}[t]{@{}#1@{}}#3\end{tabular}}}%
}}
\begin{document}
\begin{equation*}
%%% a hack for the particular case
\begin{aligned}
(a+b+c+d+e) &= a+b+c+d+e\\
&= \ubracetext{(a+b)}{(FooBar)}
\makebox[1em][l]{\hspace{1.3em}$+$}
\ubracetext{(c+d+e)}{
(This is much longer than \\ the part over the underbrace.)
}
\end{aligned}
\end{equation*}
\end{document}
有几个问题,\underbrace
所以我通常建议定义
\newcommand{\ubrace}{2}{{\underbrace{#1}_{#2}}}
(请注意附加的括号,因此整个对象被视为普通符号)。但是如果您想使用括号下方的文本并使其可跨行拆分,最好使用合适的命令。
该命令\ubracetext
有一个可选参数(默认c
)来选择分割文本的对齐方式,可以是l
、,r
甚至是p{<length>}
。
至于在两者之间放置 + 号,我只需用眼睛测量即可。可以精确计算间距,但您会有多少个这样的物体?在我看来,一个实际上太多了!