将两个浮动元素放置在相对的页面上

将两个浮动元素放置在相对的页面上

我有一些大段的文字,里面有一个图形,还有另一个图形需要完整的浮动页面(我使用\begin{figure}[p])。

这两个数字是相互关联的,应该同时查看。

幸运的是,该文件将是双面的。

我能否保证两个浮动图形彼此面对(即位于相对的左页和右页)并禁止 LaTeX 将它们背对背放置或甚至分开放置(这样您就不得不烦人地来回翻页才能查看两个图形)?

答案1

afterpage您可以使用包及其命令简化您的生活——或者至少简化您的排版工作——\afterpage如下面的示例代码所示。唯一没有完全自动化的是:您需要手动确保两个浮动元素放置在偶数/奇数页上,而不是奇数/偶数页上。

\documentclass{book}
\usepackage[margin=1in]{geometry}
\newcommand\bigrectangle{\rule{12cm}{20cm}} % dummy "figure"
\usepackage{lipsum}                         % filler text
\usepackage{afterpage}
\begin{document}
\lipsum[1-5]
\hrule % to indicate start of "afterpage" material

% be sure the following material is placed on a "recto" (odd-numbered) page:
\afterpage{%
\clearpage % flush any pending floats

\begin{figure}[p]
\centering
\bigrectangle
\caption{First (verso) figure}
\end{figure}
\clearpage

\begin{figure}[p]
\centering
\bigrectangle
\caption{Second (recto) figure}
\end{figure}
\clearpage % force-flush the second figure as well
} % end of "afterpage" material

\lipsum[6-15]  % more filler text: fill rest of p. 1, then continue on p. 4 

\end{document} 

** 附录**:如果您只希望两个浮动元素中的一个占据整个页面,而第二个浮动元素应该顶部对齐并允许其下方有一些文本,您可以按以下步骤操作:

  • 首先,插入如下指令

    \renewcommand\topfraction{0.9}
    

    在序言中。此参数的默认值为0.7;如果两个数字中较小的一个占可用文本高度的 72%,则可能会造成困难。

  • 其次,使用如下代码(其中假定\smallrectangle定义为\rule{12cm}{8cm};显然,您需要用实际图表替换它...):

    \afterpage{%
    \begin{figure}[p]
    \centering
    \bigrectangle
    \caption{First (verso) figure}
    \end{figure}
    \clearpage % flush the first float
    
    \begin{figure}[t!]
    \centering
    \smallrectangle
    \caption{Second (recto) figure}
    \end{figure}
    } % end of "afterpage" material
    

答案2

如果您在源中将两个浮动文本放在一起,LaTeX 就不会将它们分开,因为如果条件适合将第一个浮动文本放在浮动页面上,则在 Latex 开始寻找更多文本之前,第二个浮动文本将会被放在浮动页面上。

但是,使用标准工具,您无法控制第一行出现在奇数页还是偶数页。可以修补输出例程来控制这一点,但通常这样做有点不可靠,具体取决于您加载了哪些其他包,因此通常更简单的方法是等到文档几乎完成,然后在源中向前或向后移动浮动对,使它们出现在跨页上。

好的,这重新定义了一些东西,使得p浮动只能出现在偶数页上,但ph浮动没有限制,所以如果你跟随p它们,ph它们应该浮动到下一个跨页(这里是第 4/5 页)

在此处输入图片描述

\documentclass[twoside]{article}

\gdef\floatpagefraction{\ifodd\count0 1.5\else .5\fi}


\makeatletter
\def\@ytryfc #1{%
  \begingroup
    \gdef\@flsucceed{\@elt #1}%
    \global\let\@flfail\@empty
    \@tempdima\ht #1%
    \let\@elt\@ztryfc
    \@trylist
\ifodd\count#1\@fpmin\z@\fi
    \ifdim \@tempdima >\@fpmin
      \global\@fcolmadetrue
    \else
      \@cons\@failedlist #1%
    \fi
  \endgroup
  \if@fcolmade
    \let\@elt\@gobble
  \fi}
\makeatother

\def\a{One two three four five six seven eight nine ten. }
\def\b{\a\a Red yellow blue green black white. }
\def\c{\b\b\a\a\a\b\par\b\b\a\a\a\b\b\b\b\b}

\begin{document}

titlepage\thispagestyle{empty}
\clearpage
\pagenumbering{roman}

\c\c\c\c
\begin{figure}[p]
\rule{3pt}{.7\textheight}LLL
\write20{L: \thepage}
\end{figure}
\begin{figure}[ph]
R\rule{3pt}{.7\textheight}
\write20{R: \thepage}
\end{figure}
\c\a\a\c\c\c\c\c

\end{document}

相关内容