今日投稿するのは、作成中の文書内の空白を減らしたいからです。コンテンツは 2 列ですが、両方の列にまたがるフローティング テーブルがあります ( 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
上部に全幅のフロートを配置する方法はないようです初めページ; これを防ぐためにさまざまなメカニズムが使用されていますが、回避策は見つかっていません。(これは、書籍やレポートの新しい章の最初のページにも当てはまる可能性が高いです。おそらく、Frank Mittelbach または David Carlisle がそれを実行する方法を知っているでしょう。)
しかし、質問には
ある時点で、テキストは新しいページの最初の列の先頭で終了します。
フロートをどこかのページに配置してもよいかどうか後まず、図の入力を十分前に移動して、ページが完成する前に図を読み込む(そして遅延させる)ことで、ページが完成します。前のフィギュアが欲しいもの。
次の例はこれを実現します。見た目は悪いですが、機能します。タグボートでは常に使用されています。(タグボートでは、最初のページの上部にこのようなフロートを配置する必要はほとんどありません。そのような要件がある場合は、プレーン tex に戻ります。)[t]
フロートを上部に配置するように要求する を追加しました。これはおそらく冗長ですが、フロートがページ上の唯一のものになった場合、一部のドキュメント クラス ( amsart
1 つだけですが、明らかにそうではありません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
ページ幅いっぱいのが埋め込まれます。最初の実行後、列がどれだけ短縮されたかを判断し、2番目の列のどこかにネガティブ \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:
ここで説明したクルージュはタグボートの記事になりました。「2列の下部に全幅の挿入を配置する」、タグボート35:3 (2014)、p.255。(電子形式のタグボートに関するすべての記事と同様に、この記事には 1 年間の「禁輸」期間があり、その間はタグボートのメンバーのみが閲覧できます。2015 年の晩秋には誰でも閲覧できるようになります。)
この記事で言及さstfloats
れている重要な点の1つは、ページの下部に表*を配置しますか?
ページのみで動作します後最初のページ。
答え2
私はこれが私にとって最も効果的だと感じました。特に、ページの下部に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*}