Página par/impar detectada erróneamente si no hay suficiente espacio en la página actual

Página par/impar detectada erróneamente si no hay suficiente espacio en la página actual

Me gustaría poner:

  • algún texto en el lado exterior de la página,
  • algún otro texto en el lado interior de la página.

Para ello, hago uso de la prueba ( \checkoddpage) \ifoddpageproporcionada por el changepagepaquete. Eso funciona bastante bien, excepto si resulta que no queda suficiente espacio en la página actual donde se inserta el código, como lo señala el siguiente MWE (los dos primeros están bien, no los dos últimos).

\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}

¿Cómo podría hacer que la prueba de páginas pares/impares sea sólida? ¿Debo obtener el espacio vertical de los textos y compararlo con el espacio vertical que queda en la página actual y, de ser así, cómo puedo saber este último?

Respuesta1

Cuidado con hacer cualquier cosa en la lista vertical principal :-)

Esto hace la prueba en modo horizontal donde las cosas son más seguras.

\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}

información relacionada