Двухстраничные плавающие элементы: dpfloat переопределяет вертикальное выравнивание?

Двухстраничные плавающие элементы: dpfloat переопределяет вертикальное выравнивание?

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

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

@fptopЯ для этого использую .

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

Но с dpfloatэтим дело обстоит иначе. Кажется, что пакет каким-то образом переопределяет изменения, сделанные с помощью @fptop. Плавающие элементы снова центрируются по вертикали. Один из худших эффектов этого — двухстраничные плавающие элементы, которые состоят из двух половин одного и того же изображения (т. е. одинаковой высоты!) и, следовательно, имеют только одну общую подпись, размещенную с правой стороны. Поскольку подпись и изображение помещаются в один блок, который затем центрируется, два изображения оказываются полностью невыровненными, что как бы сводит на нет цель пакета в ситуации, когда он вам больше всего нужен: держать вместе то, что должно быть вместе.

Я, конечно, посмотрел на dpfloat.sty, но не смог найти причину проблемы. Есть идеи?

введите описание изображения здесь

\documentclass[DIV=9,twoside=true]{scrartcl}
\usepackage{blindtext,dpfloat}

%make sure figure starts at text area's top
\makeatletter
\setlength{\@fptop}{0pt}
\makeatother

\begin{document}
\Blindtext

\begin{figure}[p]
\rule{.5\textwidth}{.5\textheight}
\caption{A usual full-page float that's not part of a pair}
\end{figure}%

\Blindtext

\begin{figure}[p]
\begin{leftfullpage}
\rule{.5\textwidth}{.5\textheight}
\end{leftfullpage}
\end{figure}%

\begin{figure}[p]
\begin{fullpage}
\rule{.5\textwidth}{.5\textheight}
\caption{Right half of a double-page float pair with common caption.}
\end{fullpage}
\end{figure}%

\Blindtext

\Blindtext
\end{document} 

решение1

Пакет заставляет float быть полной высоты, поэтому отступы латекса никогда не превышают 0pt, вместо этого вам нужно повлиять на способ размещения содержимого в блоке полной высоты пакета (удалить \vssсверху)

\documentclass[DIV=9,twoside=true]{scrartcl}
\usepackage{blindtext,dpfloat}

%make sure figure starts at text area's top
\makeatletter
\setlength{\@fptop}{0pt}
\def\endfullpage{\egroup\dp\@@wholepage\z@
   \vbox to\textheight{\unvbox\@@wholepage\vss}}

\def\endleftfullpage{\egroup\dp\@@wholepage\z@
   \vbox to\textheight{\unvbox\@@wholepage\vss}\global\@LPtrue}
\makeatother

\begin{document}
\Blindtext

\begin{figure}[p]
\rule{.5\textwidth}{.5\textheight}
\caption{A usual full-page float that's not part of a pair}
\end{figure}%

\Blindtext

\begin{figure}[p]
\begin{leftfullpage}
\rule{.5\textwidth}{.5\textheight}
\end{leftfullpage}
\end{figure}%

\begin{figure}[p]
\begin{fullpage}
\rule{.5\textwidth}{.5\textheight}
\caption{Right half of a double-page float pair with common caption.}
\end{fullpage}
\end{figure}%

\Blindtext

\Blindtext
\end{document} 

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