环境tabular
没有在其前后添加任何垂直空间。在我看来,这看起来很奇怪。添加一些空间的“正确”或“最佳”方法是什么?此外,为什么会有更多空间后环境tabular
是否比以前更好,如下例所示?
\documentclass{article}
\begin{document}
\noindent Here is a line with some text in it.
\begin{tabular}{*4{l}}
Worg & Worg & Worg & Worg\\
Worg & Worg & Worg & Worg\\
\end{tabular}
\noindent Here is another line with some text in it.
\end{document}
答案1
已编辑,提供两种替代方法。
该verbatimbox
包有一个服务例程\addvbuffer
,其中可选参数是添加在内容周围的一个或两个长度(对称空间或上方/下方空间):
\documentclass{article}
\usepackage{verbatimbox}
\begin{document}
\noindent Here is a line with some text in it.
\addvbuffer[12pt 8pt]{\begin{tabular}{*4{l}}
Worg & Worg & Worg & Worg\\
Worg & Worg & Worg & Worg\\
\end{tabular}}
\noindent Here is another line with some text in it.
\end{document}
如果可选参数中有两个长度,则它们必须用空格分隔。因此,涉及两个实际长度的有效可选参数将是,例如,
\addvbuffer[{2\baselineskip} \baselineskip]{...}
第一个长度周围的括号允许表达以下空格,否则该空格将被解析器吞噬。
请注意\addvbuffer
,长度可以为负数(但有一些条件)。
如果间隙仅限于垂直对称的 [正] 添加,那么封装\addstackgap
的宏stackengine
也足够了。在下面的 MWE 中,我还在\strut
上一段的末尾添加了一个。
\documentclass{article}
\usepackage{stackengine}
\begin{document}
\noindent Here is a line with some text in it.\strut
\addstackgap[5pt]{\begin{tabular}{*4{l}}
Worg & Worg & Worg & Worg\\
Worg & Worg & Worg & Worg\\
\end{tabular}}
\noindent Here is another line with some text in it.
\end{document}
答案2
环境tabular
只是将其内容(格式化后)放在一个“框”内,周围的上下文将其视为单个大字母。换句话说,输入
... the last words of the previous paragraph.
\begin{tabular}{*4{l}}
Worg & Worg & Worg & Worg\\
Worg & Worg & Worg & Worg\\
\end{tabular}
The first words of the following paragraph...
在逻辑上等同于写作
... the last words of the previous paragraph.
X
The first words of the following paragraph...
也就是说,您将获得一个包含单个“框”的段落:这个框tabular
在第一种情况下是环境,在第二种情况下是字母“X”。
这样做是有目的的:理论上,通过这种方式,您可以tabular
在允许字母的任何地方放置环境,也就是说,实际上,任何地方都可以放置环境。周围的格式应由封闭上下文提供。
我不会使用比普通间距命令更复杂的命令,这些命令与用于在任何两个段落之间插入间距的命令相同。在环境tabular
中包含它也很常见center
,它位于文本边距的中间,并与前后内容之间留出合适的垂直空间。
这是一个简单的例子,完整且可编译:
\documentclass[a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage[ascii]{inputenc}
\showboxbreadth = 100
\showboxdepth = 10
\begin{document}
\noindent A line with some text in it, but without indentation.
\begin{tabular}{*4{l}}
Worg & Worg & Worg & Worg\\
Worg & Worg & Worg & Worg\\
\end{tabular}
Here is another line with some text in it; this one, however,
\emph{is} indented.
\noindent A line with some text in it, but without indentation.
\medskip
\begin{tabular}{*4{l}}
Worg & Worg & Worg & Worg\\
Worg & Worg & Worg & Worg\\
\end{tabular}
\medskip
Here is another line with some text in it; this one, however,
\emph{is} indented.
Normally, one wants to center the \texttt{tabular} in addition to inserting
space above and below:
\begin{center}
\begin{tabular}{*4{l}}
Worg & Worg & Worg & Worg\\
Worg & Worg & Worg & Worg\\
\end{tabular}
\end{center}
Text that follows.
% \showlists
\end{document}
如果您取消注释该\showlists
命令,您将能够在转录文件中检查,该命令的tabular
前面和后面是否都有\lineskip
glue:这是因为,当不使用[b]
或[t]
可选参数时,tabular
环境会产生一个框,其参考点(或多或少)在框本身中垂直居中。在我们的例子中,这个框的高度为 14.5pt,深度为 9.5pt,也就是说,它的行为就像一个斜体“f”,具有非常高的上升部和非常深的下降部。发生这种情况时,TeX 的正常行距不适用。
编辑: 哎呀,我回答了这个问题,却没有注意到它已经两年多了。它之所以能出现在活跃问题列表的顶部,只是因为@EmanuelOliveira 的回答(我确实如此不是推荐… :-) 。
答案3
表格后的空间比表格前的空间大,因为表格插入了一个不可见的支柱,并且 g 向下移动的幅度小于 W 向上移动的幅度:
\documentclass{article}
\begin{document}
\noindent Here is a line with some text in it.
xxxx\begin{tabular}{*4{l}}
\rule[-\dp\strutbox]{0.4pt}{\dimexpr\ht\strutbox+\dp\strutbox}%shows the strut
Worg & Worg & Worg & Worg\\
Worg & Worg & Worg & Worg%
\rule[-\dp\strutbox]{0.4pt}{\dimexpr\ht\strutbox+\dp\strutbox}\\ \end{tabular}
\noindent Here is another line with some text in it.
\end{document}
答案4
另一种可能性是使用 \\ ,如下所示。
\noindent Here is a line with some text in it.
\\
\begin{tabular}{*4{l}}
Worg & Worg & Worg & Worg\\
Worg & Worg & Worg & Worg\\
\end{tabular}
\\
\noindent Here is another line with some text in it.