每页末尾的奇数/偶数页检测失败

每页末尾的奇数/偶数页检测失败

我有一份包含许多(1000 多个)包含图形的对象的文件。我希望根据是在奇数页还是偶数页,翻转tabular这些对象的列顺序(1-2-3 -> 3-2-1)。tabulartabular

为此,我使用了ifoddpage包。每个tabular对象出现两次,嵌入在\ifoddpage条件语句中,该语句tabular根据测试确定页面是偶数还是奇数来放置一个方向或另一个方向。

这是我正在做的一个基本示例,但实际文档中的图片尺寸略有不同:

\documentclass[11pt,a4paper,twoside]{book}
\usepackage{a4wide}
\usepackage[english]{babel}
\usepackage{graphicx}
\usepackage{array}
\usepackage{ifoddpage}
\usepackage{todonotes}
\begin{document}  
\chapter{Test}  
% Here starts the block for a single object
\checkoddpage
\ifoddpage
\begin{tabular}{m{0.3\textwidth} m{0.3\textwidth} m{0.3\textwidth}}
\missingfigure[figheight=0.185\textheight, figwidth=0.3\textwidth]{} & \missingfigure[figheight=0.185\textheight, figwidth=0.3\textwidth]{} & {\huge \textbf{word}} \newline  \newline \newline {\huge other word} \\ 
\end{tabular}
\else
\begin{tabular}{m{0.3\textwidth} m{0.3\textwidth} m{0.3\textwidth}}
  {\huge \textbf{word}} \newline \newline \newline {\huge other word} & \missingfigure[figheight=0.185\textheight, figwidth=0.3\textwidth]{} & \missingfigure[figheight=0.185\textheight, figwidth=0.3\textwidth]{} \\ 
\end{tabular}
\fi
% Repeat the above block ad nauseam  
\end{document}

现在,这在理论上是可行的,但在实践中,每页上的第一个对象都是错误的。这是因为 放置\checkoddpage了一个标签供\ifoddpage参考。当页面底部剩余一点空间时,\checkoddpage仍然可以将标签放在页面末尾,而对象则被推到下一页,方向错误。

所以我的问题是:有没有办法检查下一个对象是否会被推送到下一页并对此进行补偿,或者理想情况下\checkoddpage根据即将出现的对象将标签向下推?

答案1

通常最好在段落的第一行进行检查,而不是在段落前的垂直模式下进行检查,这样检查与视觉结果的联系更加紧密。

可能\leavevmode之前\checkoddpage让它做正确的事情。

相关内容