Как разместить таблицу на всю ширину страницы вверху или внизу той же двухколоночной страницы, что и справочный текст?

Как разместить таблицу на всю ширину страницы вверху или внизу той же двухколоночной страницы, что и справочный текст?

Я публикую сегодня, потому что я хотел бы уменьшить пустое пространство в документе, который я пишу. Содержимое состоит из двух столбцов, но у меня есть плавающие таблицы, которые охватывают оба столбца ( 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

похоже, нет возможности разместить поплавок полной ширины в верхней частипервыйстраница; для предотвращения этого используются различные механизмы, и я не нашел обходного пути. (Это, скорее всего, также справедливо для первой страницы новой главы в книге или отчете. Возможно, Фрэнк Миттельбах или Дэвид Карлайл знают, как это сделать.)

Однако в вопросе говорится, что

В какой-то момент текст заканчивается в начале первой колонки новой страницы.

если допустимо разместить плавающий элемент на какой-то страницепослево-первых, это возможно, если переместить ввод для фигуры достаточно далеко назад, чтобы она была прочитана (и затем задержана) до того, как страница будет закончена, что и будет страницейпредшествующийтот, на котором требуется рисунок.

следующий пример сделает это. Это некрасиво, но работает; это используется в tugboat все время. (У tugboat почти никогда нет требования размещать такой плавающий элемент вверху первой страницы, и если такое требование есть, мы возвращаемся к обычному тексту.) Я добавил , чтобы [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*}

Связанный контент