我有一个表格环境和一些相关文本。现在,出于各种原因,我不想将此文本用作标题,我想确保它们始终在同一页上,或者文本至少与表格的开头位于同一页上。
有什么方法可以强制发生这种情况,而无需指定表(或可能尝试关联的相关类型的内容)的具体大小?
答案1
由于您不确定是否指定宽度,您可以将tabular
内容框起来,然后让 LaTeX 提取宽度。以下是这种方法:
tabular
使用以下环境进行装箱lrbox
:
\begin{lrbox}{<box cmd>}
...
\end{lrbox}
其中<box cmd>
使用 定义\newsavebox{<box cmd>}
。在我的 MWE(见下文)中,我使用了\mytabular
。然后,您可以将“将内容放在一起”的全部内容装箱在minipage
宽度为 的内\linewidth
。这样,它将拉伸整个文本块宽度,即使您可能只使用其中的一部分。
\mytabular
可以使用 来访问方框表格的宽度\wd\mytabular
(同样,\ht\mytabular
是高度,\dp\mytabular
是深度)。tabular
保存后,\usebox{\mytabular}
对其进行排版。
\documentclass{article}
%\usepackage{varwidth}% http://ctan.org/pkg/varwidth
\usepackage{lipsum}% http://ctan.org/pkg/lipsum
\newsavebox{\mytabular}% Capture a tabular in a box
\begin{document}
\lipsum[1-4]% dummy text
\noindent\begin{minipage}{\linewidth}
\centering
\begin{lrbox}{\mytabular}% Store tabular in \mytabular
\begin{tabular}{llcrr}
\hline
Heading 1 & Heading 2 & Title & Heading 3 & Heading 4 \\ \hline
stuff & stuff & some more stuff & stuff & stuff \\
stuff & stuff & some more stuff & stuff & stuff \\
stuff & stuff & some more stuff & stuff & stuff \\ \hline
\end{tabular}
\end{lrbox}
\begin{minipage}{\wd\mytabular}
\usebox{\mytabular}% Print tabular
\lipsum[1]% dummy text/"caption"
\end{minipage} \par
\kern\textfloatsep% Make this seem like a "float"
\end{minipage}
\lipsum[5-9]% dummy text
\end{document}
可以修改“标题”的宽度和“标题”下方的垂直间隙。
我已经注释掉了varwidth
包裹因为这里似乎不需要使用它。但是,如果您的请求被修改,则可能会需要。
答案2
我认为“相关文本”材料本质上是解释性的,因此它们应该放在环境之下tabular(x,y)
。如果你将它们放在声明之下\end{tabular}
但在\end{table}
声明之前,你就会得到你想要的东西。