我在一个环境中有方程,该环境的左边距比主文本大(类似于使用changepage
包的adjustwidth
环境实现的枚举/逐项化环境)。就像枚举/逐项化中的方程的行为一样,方程相对于整个文本居中,而不仅仅是容器环境的宽度。我想要后一种行为。
我试图通过将所有 display-math 包装在 minipages 中来实现这一点。也就是说,我正在修改环境mathdisplay
,amsmath.sty
如下所示:
\makeatletter
\let\oldmd\mathdisplay
\def\mathdisplay#1{%
\newline
\begin{minipage}{\textwidth-\@totalleftmargin}%
\oldmd{#1}%
}
\let\oldendmd\endmathdisplay
\def\endmathdisplay#1{%
\oldendmd{#1}%
\end{minipage}
}
\makeatother
这几乎可以正常工作,但有一些间距问题,我不知道如何修复。以下是经过上述修改后的正常\[ ... \]
和编号的外观:\begin{equation} ... \end{equation}
我最困惑的是为什么编号版本的行为与未编号版本如此不同。但总而言之,我想修复这个问题,以便上下间距像往常一样均匀。任何帮助都非常感谢,谢谢。
编辑:这是一个可编译的示例:
\documentclass{amsart}
\usepackage{lipsum}
\usepackage{calc}
\usepackage{changepage}
\makeatletter
\let\oldmd\mathdisplay
\def\mathdisplay#1{%
\newline
\begin{minipage}{\textwidth-\@totalleftmargin}%
\oldmd{#1}%
}
\let\oldendmd\endmathdisplay
\def\endmathdisplay#1{%
\oldendmd{#1}%
\end{minipage}
}
\makeatother
\setlength{\parindent}{0pt}
\begin{document}
\lipsum[1]
\begin{adjustwidth}{20pt}{}
\lipsum[2]
\[
x \mapsto \hom(-,x)
\]
\lipsum[3]
\begin{equation}
y \mapsto \hom(y,-)
\end{equation}
\lipsum[4]
\end{adjustwidth}
\lipsum[5]
\end{document}
答案1
该类amsart
会根据整体边距做出始终居中显示的精确选择,即使在左边距发生偏移的列表中也是如此。
正如您所意识到的,您对的重新定义mathdisplay
存在几个缺陷。
解决方案更简单:\fullwidthdisplay
从中删除\everydisplay
。我还添加了一个align
环境来表明它也能正常工作。
\documentclass{amsart}
\usepackage{lipsum}
\usepackage{calc}
\usepackage{changepage}
\renewcommand{\fullwidthdisplay}{}
\begin{document}
\lipsum[1]
\begin{adjustwidth}{20pt}{}
\lipsum*[2]
\begin{align}
x &\mapsto \hom(-,x)\\
z &\mapsto \hom(z,-)
\end{align}
\lipsum*[3]
\begin{equation}
y \mapsto \hom(y,-)
\end{equation}
\lipsum[4]
\end{adjustwidth}
\lipsum[5]
\end{document}