如果当前页面空间不足,则会错误地检测奇数页/偶数页

如果当前页面空间不足,则会错误地检测奇数页/偶数页

我想说:

  • 页面外侧的一些文字,
  • 页面内侧有一些其他的文本。

为此,我利用了包提供的( \checkoddpage)测试。这个方法效果很好,除非当前页面上没有足够的空间插入代码,如下面的 MWE 所指出的(前两个没问题,但后两个不行)。\ifoddpagechangepage

\documentclass{book}
\usepackage[inner=10mm,outer=30mm]{geometry}
\usepackage[strict]{changepage}

\newcommand{\onouterside}{%
  \begin{minipage}[t]{0.3\linewidth}
    Some text supposed to be on the outer side.
  \end{minipage}
}
\newcommand{\oninnerside}{%
  \begin{minipage}[t]{0.75\linewidth}
    Some text supposed to be on the inner side.
  \end{minipage}
}
\newcommand{\test}{%
  \checkoddpage%
  \ifoddpage%
  \oninnerside
  \hspace*{11mm}%
  \onouterside
  \else%
  \hspace*{-20mm}%
  \onouterside
  \hspace*{11mm}%
  \oninnerside
  \fi%
}
\begin{document}
\test
\newpage
\test
\newpage
\rule{0.4pt}{.969\textheight}\par
\test
\newpage
\mbox{}
\newpage
\rule{0.4pt}{.969\textheight}\par
\test
\end{document}

我怎样才能使奇数/偶数页测试更可靠?我是否应该获取文本的垂直空间并将其与当前页面上剩余的垂直空间进行比较?如果是,我如何知道后者?

答案1

小心在主垂直列表上进行任何操作:-)

这会在更安全的水平模式下进行测试。

\documentclass{book}
\usepackage[inner=10mm,outer=30mm]{geometry}
\usepackage[strict]{changepage}

\newcommand{\onouterside}{%
  \begin{minipage}[t]{0.3\linewidth}
    Some text supposed to be on the outer side.
  \end{minipage}
}
\newcommand{\oninnerside}{%
  \begin{minipage}[t]{0.75\linewidth}
    Some text supposed to be on the inner side.
  \end{minipage}
}
\newcommand{\test}{%
  \mbox{}\checkoddpage%
  \ifoddpage%
  \oninnerside
  \hspace*{11mm}%
  \onouterside
  \else%
  \hspace*{-20mm}%
  \onouterside
  \hspace*{11mm}%
  \oninnerside
  \fi%
}
\begin{document}
\test
\newpage
\test
\newpage
\rule{0.4pt}{.969\textheight}\par
\test
\newpage
\mbox{}
\newpage
\rule{0.4pt}{.969\textheight}\par
\test
\end{document}

相关内容