图中对齐周围的垂直间距

图中对齐周围的垂直间距

数学环境(如 align)会在它们周围留出垂直空间,以将它们与文本分开。这很好,如果我想更改它,我可以检查这个问题

但是,这些环境还会在浮动图形内的数学环境上方添加垂直空间(一个\abovedisplayskip)。这样,页面的第一行就不会与其他第一行对齐,看起来很奇怪,而且浪费空间。

作为一名 MWE,我有这个

\documentclass{article}
\usepackage{showframe,amsmath}

\begin{document}

This is regular text on the first line
\begin{align*}
\text{There is space before this, which is good}
\end{align*}
More regular textx.
\clearpage
\begin{figure}[t]
\begin{align*}
\text{This is not on the first line}
\end{align*}
\caption{A figure with extra space}
\end{figure}
Some text for the second page.
\end{document}

产生

右边有额外的空间!

如果我预计该空间不存在,那么我对 Tex 的期望是否太高了?有没有办法集中解决这个问题,而不会影响数学环境周围的其他垂直空间?

答案1

align对于一个 中有多个 s 的情况,我不知道该怎么做figure。我从未见过有人在 a 中使用显示数学figure,我也不知道这样做的价值。所以我只给出了摆脱 s 的解决方案,\abovedisplayskip但这figure并不是你想要的。

% arara: pdflatex

\documentclass{article}
\usepackage{amsmath}
\usepackage{etoolbox}
\makeatletter
\AtBeginEnvironment{figure}{\def\@floatboxreset{\setlength{\abovedisplayskip}{0pt}}}
\makeatother

\begin{document}    
    This is regular text on the first line
    \begin{align*}
        \text{There is space before this, which is good}
    \end{align*}
    More regular text.
    \clearpage
    \begin{figure}
        \begin{align*}
            \text{This is on the first line}
        \end{align*}
        \caption{A figure without any extra space}
    \end{figure}
    Some text for the second page.
\end{document}

您的案例确实很难编码,因为您必须检查它是align浮点数中的第一个还是任何其他的浮点数。也许您最好编写自己的环境myfirstalign*或类似的环境。

相关内容