下图中,方程式在显示模式下排列整齐,但在枚举环境中排列不整齐。我做过很多排列,但还是放弃了。
\documentclass{article}
\usepackage[a4paper,margin=1cm]{geometry}
\usepackage{mathtools}
\def\inner{%
\begin{multlined}[b][7cm]
\framebox[5cm]{Top LHS}\\
\framebox[5cm]{Middle LHS}\\
\framebox[5cm]{Bottom LHS}
\end{multlined}
&= \begin{multlined}[t][7cm]
\framebox[5cm]{Top RHS 1}\\
\framebox[5cm]{Middle RHS 1}\\
\framebox[5cm]{Bottom RHS 1}
\end{multlined}\\
&= \begin{multlined}[t][7cm]
\framebox[5cm]{Top RHS 2}\\
\framebox[5cm]{Middle RHS 2}\\
\framebox[5cm]{Bottom RHS 2}
\end{multlined}}
\begin{document}
\section*{displayed}
\begin{align*}
\inner
\end{align*}
\section*{enumerated}
\begin{enumerate}
\item
$\!
\begin{aligned}[t]
\inner
\end{aligned}
$
\end{enumerate}
\end{document}
如何将枚举内的方程块向下移动?
答案1
如果你改变
[...]
\def\inner{%
\begin{multlined}[b][7cm]
[...]
到
[...]
\def\inner{%
\begin{multlined}[t][7cm]
[...]
第一行将会很好地对齐enumerate
,并且它似乎对显示的版本没有任何影响。
编辑:好吧,我撒谎了(或者实际上,没有足够注意右边发生的事情)。
以下将第一个的可选位置保留multlined
为(将其第一行与标签[t]
对齐。然后它在第一个之后有一个换行符,需要调整(向上)才能正确对齐。我认为这更接近你的想法。enumerate
\item
multlined
\documentclass{article}
\usepackage[a4paper,margin=1cm]{geometry}
\usepackage{mathtools}
\def\inner{%
\begin{multlined}[t][7cm]
\framebox[5cm]{Top LHS}\\
\framebox[5cm]{Middle LHS\vphantom{p}}\\
\framebox[5cm]{Bottom LHS\vphantom{p}}
\end{multlined}\\[-1.3\baselineskip] %%% <-- here's the change
&= \begin{multlined}[t][7cm]
\framebox[5cm]{Top RHS 1}\\
\framebox[5cm]{Middle RHS 1\vphantom{p}}\\
\framebox[5cm]{Bottom RHS 1\vphantom{p}}
\end{multlined}\\
&= \begin{multlined}[t][7cm]
\framebox[5cm]{Top RHS 2}\\
\framebox[5cm]{Middle RHS 2\vphantom{p}}\\
\framebox[5cm]{Bottom RHS 2\vphantom{p}}
\end{multlined}}
\begin{document}
\section*{displayed}
\begin{align*}
\inner
\end{align*}
\section*{enumerated}
\begin{enumerate}
\item
$\!
\begin{aligned}[t]
\inner
\end{aligned}
$
\end{enumerate}
\end{document}
既然如此,让我们让所有框具有相同的深度(因为\vphantom{p}
“顶部”行中的“p”具有下降部,这会使它们不均匀),并且还要均匀等号周围的间距。 (我没有检查过,但我怀疑在\,
的开头有一个multlined
——在某些amsmath
多行结构中存在一些特殊的“初始”细空格,如果将其延续到中,我也不会感到惊讶multlined
。)由于框的原因,视觉空间很紧张,我在左侧末尾添加了细空格,multlined
因为我认为它看起来比删除等号右侧的空格更好。
答案2
我认为你应该使用显示环境而不是内联数学来显示
\documentclass{article}
\usepackage[a4paper,margin=1cm]{geometry}
\usepackage{mathtools}
\def\inner{%
\begin{multlined}[b][7cm]
\framebox[5cm]{Top LHS}\\
\framebox[5cm]{Middle LHS}\\
\framebox[5cm]{Bottom LHS}
\end{multlined}
&= \begin{multlined}[t][7cm]
\framebox[5cm]{Top RHS 1}\\
\framebox[5cm]{Middle RHS 1}\\
\framebox[5cm]{Bottom RHS 1}
\end{multlined}\\
&= \begin{multlined}[t][7cm]
\framebox[5cm]{Top RHS 2}\\
\framebox[5cm]{Middle RHS 2}\\
\framebox[5cm]{Bottom RHS 2}
\end{multlined}}
\begin{document}
\section*{displayed}
\begin{align*}
\inner
\end{align*}
\section*{enumerated}
\begin{enumerate}
\item\mbox{}\par\vspace{\dimexpr-2\baselineskip-\abovedisplayskip\relax}
\begin{align*}
\inner
\end{align*}
\end{enumerate}
\end{document}
由于顶部的对齐点是b
TeX,因此它并不知道内部框的第一行在哪里,但是如果您假设它是正常大小,您可以确定一个相当好的位置。
\item\makebox[.5\linewidth]{ZZZZZZZZZZZZZZZZZZZ}\par
\vspace{\dimexpr-2\baselineskip-\abovedisplayskip\relax}
\begin{align*}
生成:
但是,如果顶行尺寸过大(如示例中由于框架的原因所致),则对齐会向下移动以进行补偿,因此顶行的基线与项目编号不对齐,但这是(可能?)不可避免的。
答案3
任务完成!
\documentclass{article}
\usepackage[a4paper,margin=1cm]{geometry}
\usepackage{mathtools}
\begin{document}
\begin{enumerate}
\item
$\!
\begin{aligned}[t]
\mathrlap{\framebox[5cm]{Top LHS}}\rule{7cm}{0pt}\\
\rule{3.5cm}{0pt}\mathclap{\framebox[5cm]{Middle LHS}}\rule{3.5cm}{0pt}\\
\rule{7cm}{0pt}\mathllap{\framebox[5cm]{Bottom LHS}}
&= \begin{multlined}[t][7cm]
\framebox[5cm]{Top RHS 1}\\
\framebox[5cm]{Middle RHS 1}\\
\framebox[5cm]{Bottom RHS 1}
\end{multlined}\\
&= \begin{multlined}[t][7cm]
\framebox[5cm]{Top RHS 2}\\
\framebox[5cm]{Middle RHS 2}\\
\framebox[5cm]{Bottom RHS 2}
\end{multlined}
\end{aligned}
$
\end{enumerate}
\end{document}
编辑:
具有更好的用户界面。
\documentclass[twocolumn]{article}
\usepackage[a4paper,margin=1cm]{geometry}
\usepackage{mathtools}
\newlength\EWD
\newlength\HWD
\newlength\HHWD
\def\Init{%
\settowidth{\EWD}{${}={}$}%
\setlength{\HWD}{0.5\dimexpr\linewidth-\EWD\relax}%
\setlength{\HHWD}{0.5\HWD}}
\def\TopLHS#1{\mathrlap{#1}\rule{\HWD}{0pt}}
\def\MiddleLHS#1{\rule{\HHWD}{0pt}\mathclap{#1}\rule{\HHWD}{0pt}}
\def\BottomLHS#1{\rule{\HWD}{0pt}\mathllap{#1}}
\begin{document}
\begin{enumerate}
\item\Init
$\!
\begin{aligned}[t]
\TopLHS{\framebox[3cm]{Top LHS}}\\
\MiddleLHS{\framebox[3cm]{Middle LHS}}\\
\BottomLHS{\framebox[3cm]{Bottom LHS}}
&= \begin{multlined}[t][\HWD]
\framebox[3cm]{Top RHS 1}\\
\framebox[3cm]{Middle RHS 1}\\
\framebox[3cm]{Bottom RHS 1}
\end{multlined}\\
&= \begin{multlined}[t][\HWD]
\framebox[3cm]{Top RHS 2}\\
\framebox[3cm]{Middle RHS 2}\\
\framebox[3cm]{Bottom RHS 2}
\end{multlined}
\end{aligned}
$
\end{enumerate}
\end{document}
笔记:我不知道应该在哪里调用\Init
。如果您有任何建议,请告诉我。