如何在具有自定义分隔符“@{...}”的数组环境中插入空行?

如何在具有自定义分隔符“@{...}”的数组环境中插入空行?

我正在使用array环境来\begin{array}{l@{::=}ll}排版正式语法:

下面的 LaTeX 代码的渲染版本显示了本应为空的行中的 ::= 分隔符

我怎样才能插入一个空行而不::=在那里出现分隔符?

最小工作示例:

% !TeX TS-program = xelatex
% !TeX encoding = UTF-8
% !TeX spellcheck = en_US
\documentclass[]{article}
\usepackage{amsmath}
\begin{document}

\[
    \begin{array}{l@{\quad::=\quad}l@{\quad}l}
        T   & \varepsilon \mid \mathrm{leaf} \mid \mathrm{bin}(T, T) & \text{trees}\\
        \\
        F   & \varepsilon \mid F, T                                  & \text{forests}
    \end{array}
\]

\end{document}

答案1

您可以简单地使用一个空的\multicolumn,因为它的列规范会覆盖它所插入的表格/数组的规范:

\documentclass[]{article}
\usepackage{amsmath}

\begin{document}

\[
    \begin{array}{l@{\quad::=\quad}l@{\quad}l}
        T & \varepsilon \mid \mathrm{leaf} \mid \mathrm{bin}(T, T) & \text{trees}\\
       \multicolumn{1}{c}{} & &\textit{Fiddle dee dee }\\\\
        F & \varepsilon \mid F, T & \text{forests}
    \end{array}
\]

\end{document} 

在此处输入图片描述

答案2

一些建议和意见:

  • array不需要在via a指令中插入一个不太空的行\\,只需在第一个指令后增加垂直跳过量\\,例如3ex

  • \quad在大多数文档类中,即在所有将 的值设置为\tabcolsep和的6pt值设置为 的文档类中,设置明确的列间空白量是多余的。除非另有说明,否则列间空白量为。\quad12pt2\tabcolsep

在此处输入图片描述

\documentclass{article}
\usepackage{amsmath} % for "\text" macro
\begin{document}
\[
    \begin{array}{ l @{\quad::=\quad} l l }
        T   & \varepsilon\mid\mathrm{leaf}\mid\mathrm{bin}(T, T) & \text{trees}\\[3ex] 
        F   & \varepsilon\mid F, T                               & \text{forests}
    \end{array}
\]
\end{document}

相关内容