我正在处理一个采用双列布局的文档。其中,我有一个页面宽度的表格 ( table*
) 和几个常规列宽度的表格 ( table
)。
问题是,由于table*
总是放在下一页上,因此它也会强制将后续的table
放在下一页,即使当前页面上有足够的空间。这可能会导致当前页面留有空白,同时在下一页上放置大量不必要的表格。问题似乎源于表格总是按顺序放置,即使混合了table
和table*
。
我找到的唯一可行的解决方案是使用包中的选项强制将table
s 放在 之前。我最好避免使用此选项,而只是让表格浮动,但不必强制遵循。table*
[H]
float
[H]
table*
那么,除了强制它们的定位之外,有没有办法让table
s 放在 之前table*
?
下面是 MWE。
\documentclass[twocolumn]{article}
\begin{document}
Some text about table \ref{table:wide}.
\begin{table*}
\centering
\caption{Page-wide table}
\label{table:wide}
\begin{tabular}{lll} \hline
Some & table & content \\ \hline
\end{tabular}
\end{table*}
Some text about table \ref{table:regular}.
\begin{table}
\centering
\caption{Regular table}
\label{table:regular}
\begin{tabular}{lll} \hline
Some & table & content \\ \hline
\end{tabular}
\end{table}
\end{document}
答案1
自 2015 年发布以来,LaTeX 会保持所有表格的顺序,因此如果您希望单列表格首先出现,最好将其在源中移得更早,因此它是表 1。
\documentclass[twocolumn]{article}
\begin{document}
\begin{table}
\centering
\caption{Regular table}
\label{table:regular}
\begin{tabular}{lll} \hline
Some & table & content \\ \hline
\end{tabular}
\end{table}
Some text about table \ref{table:wide}.
\begin{table*}
\centering
\caption{Page-wide table}
\label{table:wide}
\begin{tabular}{lll} \hline
Some & table & content \\ \hline
\end{tabular}
\end{table*}
Some text about table \ref{table:regular}.
\end{document}
或者,如果您希望表格无序显示,您可以局部地让两列表格使用表格类型 4(标准类别中的数字为 1,表格为 2),这样它就会与其他类型 4 的浮点数保持顺序,但仍按表格编号。然而,这会使表格 2 排在表格 1 之前,这有点奇怪。
\documentclass[twocolumn]{article}
\begin{document}
Some text about table \ref{table:wide}.
{\makeatletter\def\ftype@table{4}\makeatother
\begin{table*}
\centering
\caption{Page-wide table}
\label{table:wide}
\begin{tabular}{lll} \hline
Some & table & content \\ \hline
\end{tabular}
\end{table*}}
Some text about table \ref{table:regular}.
\begin{table}
\centering
\caption{Regular table}
\label{table:regular}
\begin{tabular}{lll} \hline
Some & table & content \\ \hline
\end{tabular}
\end{table}
\end{document}
无论哪种情况,单列浮动都位于第 1 页,而第 2 列浮动都位于第 2 页。