Doppelseitige Floats: dpfloat überschreibt vertikale Ausrichtung?

Doppelseitige Floats: dpfloat überschreibt vertikale Ausrichtung?

Für Doppelseiten-Floats (also Float-Paare, die gemeinsam auf einer Doppelseite erscheinen sollen) dpfloatwird das Paket regelmäßig empfohlen, und bei mir funktioniert es auch recht gut.

Ich habe mich jedoch dazu entschlossen, die zentrierte vertikale Standardausrichtung von Floats in LaTeX außer Kraft zu setzen und stattdessen festzulegen, dass jedes Float, das sich über eine ganze Seite erstreckt, unabhängig von seiner Höhe an der oberen Zeile des Textbereichs ausgerichtet wird. Das heißt, ich entferne sämtlichen Leerraum über einem Float, der sich über eine ganze Seite erstreckt, und platziere sämtliche verbleibenden Leerräume darunter.

Ich verwende @fptopdafür.

Einer der theoretischen Vorteile hiervon besteht darin, dass die beiden Hälften eines Doppelseiten-Floats, selbst wenn sie unterschiedliche Höhen aufweisen, zumindest ihre oberen Ränder ausgerichtet bleiben, was zu einem ästhetisch viel ansprechenderen Ergebnis führt.

Bei ist das jedoch dpfloatnicht der Fall. Das Paket scheint die mit vorgenommenen Änderungen irgendwie zu überschreiben @fptop. Floats werden wieder vertikal zentriert. Eine der schlimmsten Auswirkungen davon sind Doppelseiten-Floats, die aus zwei Hälften desselben Bildes (also gleicher Höhe!) bestehen und daher nur eine gemeinsame Beschriftung auf der rechten Seite haben. Da Beschriftung und Bild in einem Feld platziert werden, das dann zentriert wird, sind die beiden Bilder völlig falsch ausgerichtet, was den Zweck des Pakets in der Situation, in der Sie es am meisten brauchen, zunichte macht: Dinge zusammenzuhalten, die zusammengehören.

Ich habe mir natürlich dpfloat.sty angesehen, konnte aber nicht herausfinden, was das Problem verursacht. Irgendwelche Ideen?

Bildbeschreibung hier eingeben

\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} 

Antwort1

Das Paket erzwingt, dass der Float die volle Höhe einnimmt, sodass die von Latex hinzugefügte Polsterung nie größer als 0pt ist. Sie müssen stattdessen die Art und Weise beeinflussen, wie der Inhalt in die Box mit voller Höhe des Pakets eingefügt wird ( \vssvon oben entfernen).

\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} 

verwandte Informationen