彩色方程式后的奇怪垂直间距

彩色方程式后的奇怪垂直间距

我正在使用该xcolor包为文档中的文本和数学题着色amsart。我注意到,在彩色显示的方程式后开始新段落会产生额外的垂直间距。

以下是 MWE:

\documentclass{amsart}
\usepackage{xcolor}
 
\begin{document}
Some text.
    \begin{equation*}
\text{A formula: }a=b+c.
    \end{equation*}

Some more text, starting new paragraph.
\begin{equation*}
\color{blue} \text{Another formula: }d=e-f.
\end{equation*}

Some more text, starting new paragraph.
\end{document}

其排版如下:在此处输入图片描述

有人知道为什么会发生这种情况吗?我们该如何解决它?

答案1

这与无关amsart,但这是 LaTeX 指定颜色的方式。

如果你\color{blue}在组内执行此操作,LaTeX 会\color在组结束后发出适当的指令,以恢复更改前有效的颜色。这是通过“whatsit”完成的,因为 TeX 本身不支持颜色。

在您的情况下,这个 whatsit 是数学显示后的文本的一部分,因此在扫描段落结束命令(空行)之前会产生一个空行。

解决方案:使用\begingroup...\endgroup,这样 whatsit 就会被放置在显示屏内。或者,等效地,\mathcolor

%\documentclass{amsart}
\documentclass{article}
\usepackage{amsmath}
\usepackage{xcolor}
 
\begin{document}

Some text.
\begin{equation*}
\text{A formula: }a=b+c.
\end{equation*}

Some more text, starting new paragraph.
\begin{equation*}
\mathcolor{blue}{\text{Another formula: }d=e-f.}
\end{equation*}

Some more text, starting new paragraph.

Some more text, starting new paragraph.
\begin{equation*}
\color{blue}\text{Another formula: }d=e-f.
\end{equation*}
Some more text, not starting new paragraph.

Some more text, starting new paragraph.
\begin{equation*}
\begingroup\color{blue}\text{Another formula: }d=e-f.\endgroup
\end{equation*}

Some more text, starting new paragraph.

\end{document}

该示例展示了多种替代方案。

在此处输入图片描述

另一种可能性是不留空行,而是\indent在文本前面使用。

这种情况应该很少见:在显示之后你需要多少次开始新的段落?

答案2

Egreg 讲完了这个问题的本质内容。我再补充一点。

为什么显示模式(恢复以前的颜色但不执行任何其他操作)之后的“whatsit”会创建一个空段落?

显示模式通过将公式放入垂直列表并开始中断段落来完成其工作,即它打开一个新的水平模式(如之后\noindent)。然后显示模式组完成。

在您的第一个示例中,此组之后是\par(空行),因此有一个空的水平模式立即被关闭\par(类似于\noindent\par)。在这种情况下,TeX 不会创建段落。

在您的第二个示例中,此组后面是“whatsit”,后面跟着\par。即处理时水平模式不为空\par。创建单行段落。此行包含此“whatsit”,可恢复以前的颜色。

请注意,Context 没有这个问题,因为它使用 LuaTeX 的属性来管理颜色,而不是通过\aftergroup原语(在颜色 LaTeX 包中使用)。

相关内容