为什么 \[ ... \] 比 $$ ... $$ 更可取?

为什么 \[ ... \] 比 $$ ... $$ 更可取?

我听说应该使用\[ ... \]显示方程式 而不是 $$ ... $$,但是为什么呢?

我以为这样你就能更容易地分辨出哪些是开始分隔符,哪些是结束分隔符,但如果我总是使用语法高亮的文本编辑器,我就能根据符号的颜色轻松地看到这一点。

这个建议有什么理由吗?

答案1

$$是 TeX 原始语法,正如其他人所评论的那样,很难重新定义(在经典 TeX 中没有触发进入或离开显示数学的命令名称)。

LaTeX 不正式支持$$。如果使用该语法,最明显的缺陷是该fleqn选项将不再影响数学的显示,它将保持居中,而不是设置为左对齐。

但是如果您正在使用,\[最好使用该amsmath包(如果使用 LaTeX 进行任何严肃的数学布局,最好加载此包)。

\[是 的简写形式,\begin{displaymath}人们可能认为 就像 的未编号形式一样\begin{equation}。该amsmath包重新定义\[为 ,它正是该包定义的环境\begin{equation*}的未编号形式。在核心 LaTeX 定义中,有以下定义equation\[

  \ifvmode
     \nointerlineskip
     \makebox[.6\linewidth]{}%
  \fi
  $$

这意味着如果在段落之间使用间距,则间距比原始间距要好$$(原始间距会导致在显示前插入一个仅由缩进和 parfillskip 粘连组成的空白段落),但它与不一致,equation并且始终使用\abovedisplayskip而不是\abovedisplayshortskip。在 AMS 版本中,间距更一致,

答案2

间距错误。

根据 l2tabu 第 6 页第 1.6 节的说法,这是一种“致命的罪行”: http://www.ctan.org/tex-archive/info/l2tabu/english/

答案3

这里还有一个原因(这就是我转变的原因)。如果你使用环境\begin{proof}...\end{proof},你偶尔会用一个方程来结束一个证明。然后自动 QED 框会独自出现在一行上,这很丑陋。你可以通过\qedhere在方程末尾写入来解决这个问题,但这不能正常工作$$...$$– 你必须使用\[...\](或环境,如equation/ gather/ align)。举例来说:

\begin{proof}
  This follows from
  $$e^{x+y}=e^xe^y. \qedhere$$
\end{proof}

\begin{proof}
  This follows from
  \[e^{x+y}=e^xe^y. \qedhere\]
\end{proof}

答案4

这是不是总是最好使用\[..\]

source2e.pdf文件包含 的文档来源LaTeX2e。从中可以看出,它\[..\]本质上是一个包装器,用于$$ .. $$检查在数学模式下是否使用了构造(这会产生错误)。

生成 $$...$$ 并检查未\[在数学模式中使用且 \]仅在以 开头的数学模式中使用\]

似乎有一个拼写错误\[。此外,这句话不应该被理解为

\[ a^n + b^n= c^n $$
$$ a^n + b^n= c^n \]

产生错误,他们不会,只有类似\( a^n + b^n= c^n \]或的事情$a^n + b^n= c^n \]才会。

然而详细的源代码显示它包含一些在某些情况下会干扰正确垂直间距的内容:

170 \def\[{%
171 \relax\ifmmode
172 \@badmath
173 \else
174 \ifvmode
175 \nointerlineskip
176 \makebox[.6\linewidth]{}%
177 \fi
178 $$%%$$ BRACE MATCH HACK
179 \fi
180 }
181 \def\]{%
182 \relax\ifmmode
183 \ifinner
184 \@badmath
185 \else
186 $$%%$$ BRACE MATCH HACK
187 \fi
188 \else
189 \@badmath
190 \fi
191 \ignorespaces
192 }

\makebox[.6\linewidth]{}在垂直模式下打开显示时执行的 具有禁用使用的效果(TeX因此\abovedisplayshortskip\belowdisplayshortskip。问题是 紧接着\[..\] TeX处于horizontal模式(不是vertical),因此如果使用 排版两个或多个方程式而\[..\]中间没有任何内容,则第二个和下一个方程式将使用短的跳过。这会导致垂直间距不连贯:

\documentclass{article}
\begin{document}

The rules are smashed so take no vertical space, and are only there to
illustrate the issue (extra vertical space only between the first and the second
equation and not between the next ones).

Using \verb|\[..\]|: 

\[
\vartheta=2\pi\smash{\rule{.4pt}{4ex}}  
\]
\[
\vartheta=2\pi\smash{\rule{.4pt}{4ex}}  
\]
\[
\vartheta=2\pi\smash{\rule{.4pt}{4ex}}  
\]

Using \verb|$$..$$|:

$$
  \vartheta=2\pi\smash{\rule{.4pt}{4ex}}
$$
$$
  \vartheta=2\pi\smash{\rule{.4pt}{4ex}}  
$$
$$
  \vartheta=2\pi\smash{\rule{.4pt}{4ex}}  
$$

There is no issue if we use \verb|\[..\]| but start within a paragraph:\newline
\[
\vartheta=2\pi\smash{\rule{.4pt}{4ex}}  
\]
\[
\vartheta=2\pi\smash{\rule{.4pt}{4ex}}  
\]
\[
\vartheta=2\pi\smash{\rule{.4pt}{4ex}}  
\]
The issue arises only if the chain of \verb|\[..\]| is initiated in vertical
mode. The issue never arises when using the original \verb|$$..$$| input syntax.

\end{document}

displaymath 垂直间距不好

相关内容