
Eu gostaria de colocar:
- algum texto no lado externo da página,
- algum outro texto no lado interno da página.
Para isso, utilizo o teste ( \checkoddpage
) \ifoddpage
fornecido pelo changepage
pacote. Isso funciona muito bem, exceto se não houver espaço suficiente na página atual onde o código está inserido, conforme apontado pelo MWE a seguir (os dois primeiros estão corretos, não os dois ú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}
Como eu poderia tornar o teste de página ímpar/par robusto? Devo pegar o espaço vertical dos textos e compará-lo com o espaço vertical deixado na página atual e, em caso afirmativo, como poderia saber este último?
Responder1
Cuidado ao fazer qualquer coisa na lista vertical principal :-)
Isso faz o teste no modo horizontal, onde as coisas são mais 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}