删除对齐中的所有边距

删除对齐中的所有边距

因为我想将对齐环境包含到项目化环境中,所以我需要去掉底部、左边和顶部边距。

我发现,我可以用这个删除顶部和底部的边距:

\makeatletter
\newenvironment{myalign*}{%
  \setlength{\abovedisplayskip}{-\baselineskip}%
  \setlength{\abovedisplayshortskip}{\abovedisplayskip}%
  \start@align\@ne\st@rredtrue\m@ne
}%
{\endalign}
\makeatother

但这仍然留下了左边距。我尝试用 flalign 替换 \start@align 和 \endalign,但这会导致错误。

答案1

如果您想保留文本的正常左边距:

\documentclass{article}
\usepackage{mathtools}% compatibility test
\usepackage{showframe}% MWE only

\makeatletter
\newenvironment{myalign*}{\ifvmode\else\hfil\null\linebreak\fi
  \hspace*{-\leftmargin}\minipage\textwidth
  \setlength{\abovedisplayskip}{0pt}%
  \setlength{\abovedisplayshortskip}{\abovedisplayskip}%
  \start@align\@ne\st@rredtrue\m@ne}%
{\endalign\endminipage\linebreak}
\makeatother

\begin{document}
\begin{itemize}
\item blah blah blah \begin{myalign*}
x & = A+B+C+D+E+F+G+H+I+J+K+L+M+N+O+P\\
y & = x-A
\end{myalign*} blah blah blah.
\end{itemize}
\end{document}

演示

答案2

leftmargin 来自 itemize 环境。因此,您必须自定义它以消除其 leftmargin:

首先,在你的序言中,使用

\usepackage{enumitem}

改变你itemize

\begin{itemize}[leftmargin=0pt]

相关内容