next up previous contents index
Next: 25.1 迎面页图形 Up: IV. LATEX图形环境 Previous: 24.3 Sidecap 宏包

25. 奇偶页中的图形

图形环境的浮动放置算法不能控制图形出现在奇数页还是偶数页。要达到 控制浮动图形的奇数或偶数页放置,必须使用 afterpage 宏包 的 \afterpage 命令和 ifthen 宏包的 \ifthenelse  命令。 将图形置于 figure 环境,可能会使得在偶数页中声明的图形被浮动到奇数页 中。反之,使用第 20 章中定义的 \figcaption 命令 则可在不用 figure 环境的情况下生成图形。

\makeatletter 
  \newcommand\figcaption{\def\@captype{figure}\caption} 
\makeatother
使用 \ifthenelse 命令可用来将出现在奇数页上的图形放到下一偶数页 上。这需要重复一次插图命令,一次是对应于下一页为奇数页的情况,另一次 则对应于下一页为偶数页的情况。为简便起见,首先定义一个 \leftfig 命令:

\newcommand\leftfig{% 
  \vspace*{\fill}% 
  \centering 
  \includegraphics{graphic.eps} 
  \figcaption{This is on the left (even) page.} 
  \vspace*{\fill}\newpage}
接下来就可以用这个新定义的命令和 \afterpage,\ifthenelse 命令一起 来生成一幅只出现在偶数页上的图形。

\afterpage{\clearpage% 
  \ifthenelse{\isodd{\value{page}}}% 
    {\afterpage{\leftfig}}% 
    {\leftfig}}
几点说明:
  • 欲使图形只出现在奇数页上,掉换一下 \ifthenelse 的参数顺序即可。
    
          \afterpage{\clearpage% 
            \ifthenelse{\isodd{\value{page}}}% 
              {\leftfig}}%
              {\afterpage{\leftfig}}
    
  • 使用 \value{page} 而不是 \pageref 的好处是它总是正确的。 相反, \pageref 只有在 LATEX 的交叉引用收敛时才正确。
  • 当图形较大时,可能会出现在图形中间(图形与标题之间)分页的情况。 这时可将它放到一个小页环境中以保持它的完整性。
    
          \newcommand\leftfig{% 
            \vspace*{\fill}% 
            \begin{minipage}{\textwidth} 
              \centering 
              \includegraphics{graphic.eps} 
              \figcaption{This is on the left (even) page.} 
            \end{minipage} 
            \vspace*{\fill}\newpage}
    
  • \afterpage 命令在极少数情况下会造成一个 ``lost float'' 的错误, 这时将 \clearpage 从 \ifthenelse 前去掉可能会有所帮助。
    
          \afterpage{\ifthenelse{\isodd{\value{page}}}% 
            {\afterpage{\leftfig}}% 
            {\leftfig}}
    
  • 在上面的例子中,图形是占据完整的一偶数页的。要将其置于偶数页的顶部, 修改或去掉 \vspace*{\fill} 和 \newpage 命令。
    
          \newcommand\leftfig{% 
            \centering 
            \includegraphics{graphic.eps} 
            \figcaption{This is at the top of the left (even) page.} 
            \vspace{\floatsep}}
    


Sections

Wang Lei
2000-04-15