图形环境的浮动放置算法不能控制图形出现在奇数页还是偶数页。要达到 控制浮动图形的奇数或偶数页放置,必须使用 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}}
|