我正在使用列表环境来设置一些文本和方程式。方程式使用 flalign 显示(但后面的所有内容也适用于 align),并且它们与前后文本正确对齐。但如果我想在两行方程式之间引入一条线,使用\noalign
,则插入的文本将完全向左刷新,并且左边距将被忽略:
\documentclass[a4paper, 11pt]{article}
\usepackage{amsmath}
\begin{document}
\begin{list}{(a)}{%
\settowidth{\leftmargin}{(m)}%
\labelwidth\leftmargin\advance\labelwidth-\labelsep%
\partopsep=0pt%
}
\item Some text to make a line for the first example, using
\texttt{\textbackslash align}.
\begin{flalign*}
&x^2+y^2=a^2&&\\
\noalign{\text{a comment}} &r^2=a^2&&
\end{flalign*}
And some text to close the whole thing.
\end{list}
\end{document}
我知道我可以解决这个问题,例如通过定义一个命令,比如\leftalign
,在文本前面加上一个适当的\hspace
,但我想知道是否有人可以向我解释为什么\noalign
忽略了左边距设置。我确信我遗漏了一些可能很重要的东西,但我没有在任何地方找到解释。
答案1
作为芭芭拉建议的替代,在这里我使用了\rlap
文本,并添加了一些垂直空间。
\documentclass[a4paper, 11pt]{article}
\usepackage{amsmath}
\begin{document}
\begin{list}{(a)}{%
\settowidth{\leftmargin}{(m)}%
\labelwidth\leftmargin\advance\labelwidth-\labelsep%
\partopsep=0pt%
}
\item Some text to make a line for the first example, using
\texttt{\textbackslash align}.
\begin{flalign*}
&x^2+y^2=a^2&&\\[3pt]
&\text{a comment}\\[3pt]
&r^2=a^2&&
\end{flalign*}
And some text to close the whole thing.
\end{list}
\end{document}
答案2
你可以用\shortintertext
(需要mathtools
) 或\intertext
(仅amsmath
) 来做。您还可以利用 ,enumitem
而不必手动进行所有计算list
。
\documentclass[a4paper, 11pt]{article}
\usepackage{amsmath,mathtools}
\usepackage{enumitem}
\usepackage{showframe}
\begin{document}
\begin{enumerate}[label=(\alph*),leftmargin=*,partopsep=0pt]
\item Some text to make a line for the first example, using
\texttt{align}.
\begin{flalign*}
&x^2+y^2=a^2&&\\
\shortintertext{a comment}
&r^2=a^2&&
\end{flalign*}
And some text to close the whole thing.
\item Something else
\end{enumerate}
\end{document}
showframe
加载该包只是为了显示文本区域的边界框。
不过,你需要注意,不同的文档类别可能具有非常不一样关于整个事情的想法。如果你变成article
,amsart
你会得到
你可以这样做nccmath
:
\documentclass[a4paper, 11pt]{article}
\usepackage{amsmath,mathtools}
\usepackage{enumitem}
\usepackage{nccmath}
\usepackage{showframe}
\begin{document}
\begin{enumerate}[label=(\alph*),leftmargin=*,partopsep=0pt]
\begin{fleqn}
\item Some text to make a line for the first example, using
\texttt{align}.
\begin{align*}
&x^2+y^2=a^2 \\
\shortintertext{a comment}
&r^2=a^2
\end{align*}
And some text to close the whole thing.
\item Some text to make a line for the first example, using
\texttt{align}.
\begin{equation*}
x^2+y^2=a^2
\end{equation*}
a comment
\begin{equation*}
r^2=a^2
\end{equation*}
And some text to close the whole thing.
\end{fleqn}
\end{enumerate}
\end{document}
你amsart
应该只改变\begin{fleqn}
成\begin{fleqn}[\leftmargin]
得到
添加设置itemsep
会更好。