我今天發文是因為我想減少我正在編寫的文件中的空白。內容是兩列,但我有跨越兩列的浮動表 ( table*
)。
在某些時候,文字會在新頁面的第一列的開頭結束。我想在此頁面上包含我的表格,因為它在文字下方有很多可用空間,但是當我在table*
文字後面插入表格時,它會轉到下一頁的頂部:
您知道獲得所需行為的方法嗎?
最小工作範例:
\documentclass{article}
\usepackage{lipsum}
\begin{document}
\twocolumn
\paragraph{}
\lipsum[1]
\begin{table*}
\centering
\begin{tabular}{|c|c|c|c|}
\hline
Column 1 & Column 2 & Column 3 & Column 4 \\
\hline
Column 1 & Column 2 & Column 3 & Column 4 \\
\hline
\end{tabular}
\end{table*}%
\end{document}
答案1
似乎沒有辦法將全角浮動放在頂部第一的頁;使用了各種機制來防止它,但我還沒有找到解決方法。 (這很可能也適用於書籍或報告中新章節的首頁。也許弗蘭克·米特爾巴赫或大衛·卡萊爾知道一種方法。)
然而,問題指出
在某些時候,文字會在新頁面的第一列的開頭結束。
如果可以接受將浮動放置在某些頁面上後第一種,這是可能的,透過將圖形的輸入移動得足夠早,以便在頁面完成之前將其讀入(然後延遲)前想要該人物的那個。
以下範例將執行此操作。它很醜,但很管用;它一直用於拖船。 (拖船幾乎從來沒有要求將這樣的浮標放在第一頁的頂部,如果有這樣的要求,我們將恢復為純文本。)我添加了一個[t]
來請求將浮標放置在頂部;它可能是多餘的,但如果浮動最終成為頁面上唯一的東西,它確實對某些文件類(amsart
例如,但顯然不是)具有預期的效果。article
\documentclass{article}
\usepackage{lipsum}
\begin{document}
\twocolumn
\paragraph{}
\lipsum[1-4]
%% this table should appear *before* the paragraph indicated below.
%% it is placed here in the input to force its position at the top of the next page.
\begin{table*}[t]
\centering
\begin{tabular}{|c|c|c|c|}
\hline
Column 1 & Column 2 & Column 3 & Column 4 \\
\hline
Column 1 & Column 2 & Column 3 & Column 4 \\
\hline
\end{tabular}
\end{table*}
\lipsum[5-6]
%% the table coded above should appear at the top of the page on which
%% this paragraph appears.
\paragraph{I want the figure above this text}
\lipsum[1]
\end{document}
編輯:
下面的範例將把圖形放置在頁面底部,橫跨兩列,但代價是框已滿訊息。 (我正在嘗試找出如何擺脫它,但尚未成功。)
方法是推出一個單列浮動在第一列的某個位置,位於它將開始的位置之上。在單列浮動中嵌入了一個,minipage
即整個頁面的寬度。第一次運行後,確定列縮短了多少,然後在第二列中的某個位置發出消極的 \enlargethispage
命令將使頁面底部留空,允許全角圖形溢出到空白區域。
\documentclass{article}
\usepackage{lipsum}
\begin{document}
\twocolumn
%% avoid overfull boxes from the lipsum test.
\sloppy
\paragraph{}
\lipsum[1]
%% this table should appear at the bottom of the page.
%% it must be placed in the input somewhere near the top of the
%% first column so that it will actually appear in the first column.
\begin{table}[b]
\begin{minipage}{\textwidth}
\centering
\begin{tabular}{|c|c|c|c|}
\hline
Column 1 & Column 2 & Column 3 & Column 4 \\
\hline
Column 1 & Column 2 & Column 3 & Column 4 \\
\hline
\end{tabular}
\end{minipage}
\end{table}
%% the table coded above should appear at the bottom of the page on which
%% this paragraph appears.
\textbf{I want the figure at the bottom of the page}
\lipsum[1]
\lipsum[2]
%% somewhere in the second column, reduce the page (column) length
%% by the amount needed to clear the figure.
\enlargethispage{-4\baselineskip}
\lipsum[3-6]
\end{document}
是的,它很醜。不要說你沒有被警告過。
額外的警告-垂直間距可能會被內建拉伸的章節標題弄亂。在文字最終確定之前,盡量避免應用此方法,即使如此,嘗試「修復」要顯示表格的頁面頂部的分頁符號可能也是明智之舉。
編輯2:
這裡描述的拼湊變成了拖船文章,“在兩列的底部放置全角插入”,拖船35:3 (2014),第 255 頁。 (與所有電子形式的拖船文章一樣,本文有一年的“禁運期”,在此期間僅對拖船會員開放;它將在 2015 年深秋的某個時間向所有人開放。)
文章中提到的一個重要點是stfloats
,中提到的包將表格*放在頁面底部?
僅適用於頁面後第一頁。
答案2
我發現這最適合我,特別是在底部有兩列的圖形/表格第一的頁:
% The trick is with the following package. You **need** to use the following package.
\usepackage{nidanfloat}
% ....
% Put your figure near the first page content.
\begin{figure*}[b]
\centering
\def\svgwidth{\textwidth}
\import{sections/images/}{some_figure.pdf_tex}
\caption{Some caption.}
\label{fig:some_label}
\end{figure*}