答案1
该解决方案基于以下假设:
您正在使用
twocolumn
布局;表格太宽,无法容纳在内
\columnwidth
,因此您使用table*
- 这必然会将它们推到下一页(的顶部)(如果该页面上有其他内容)。
不要依赖 TeX 的浮动机制来放置,而是使用以下方法手动设置浮动afterpage
和caption
。
afterpage
有助于提供文档内内容的正确流动,延迟代码直到当前页面被刷新。这可能不是必需的,具体取决于文档结构。例如,如果两个表格后面没有内容(即,它们是文档中最后设置的内容),则一个简单的\clearpage would also work rather than wrapping the "float" inside an
\afterpage` 命令。
caption
提供设置适当类型标题的方法,即使您可能不在浮动内。由于我们要手动设置表格,因此我们实际上是在内部进行设置,minipage
并使用\captionof{table}
设置 a table
-like \caption
。
\documentclass[twocolumn]{article}
\usepackage{lipsum}
\usepackage{afterpage,caption}
\begin{document}
\lipsum[1-4]
\afterpage{%
\noindent
\makebox[\columnwidth][l]{%
\begin{minipage}{\textwidth}
\centering
\rule{.7\textwidth}{250pt}% A tabular
\captionof{table}{This is a caption.}
\bigskip
\rule{.8\textwidth}{100pt}% A tabular
\captionof{table}{This is a caption.}
\end{minipage}
}}%
\lipsum[5-7]
\end{document}
无需将表格放在单独的浮动框中。事实上,我已将它们放在上面的同一组 (a minipage
) 中。此外,还小心地将两列宽度的块\hbox
放在\columnwidth
-size 框中,以确保它不会引起过满警告。
请注意,\afterpage{...}
代码应放置在“浮动”位置之前的页面的第二列文本内,因为下面的每一列twocolumn
类似于onecolumn
模式内的页面。