对于双页浮动内容(即,应该在整个跨页上一起出现的浮动内容对),我们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
该包强制浮动为全高,因此乳胶添加的填充永远不会大于 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}