Memoir has \cleartorecto
and \cleartoverso
to insert clear pages until the next recto (or verso) page. It also has the \clearforchapter
macro to specify how you want chapters to start.
So I think what you want is provided by Memoir with
\renewcommand{\clearforchapter}{\clearpage~\thispagestyle{cleared}\cleartorecto}
This issue has nothing to do with the lscape
package: indeed, you can reproduce it with the following simple program
\documentclass[a4paper,twoside]{article}
\begin{document}
A\par
\clearpage
% \setlength{\topskip}{0pt} % uncomment this line to see it happen
B\par
\clearpage
\cleardoublepage
C\par
\end{document}
(uncomment the commented line to see it happen).
I’ve made some investigations, and the culprit seems to be the \@doclearpage
macro in LaTeX’s output routine, more precisely the following line of code
\setbox\@tempboxa\vsplit\@cclv to\z@ \unvbox\@tempboxa
(line 6696 in latex.ltx
, latest version), which is meant to send back to the main vertical list “any left-over non-boxes (writes, specials, etc.)”, as the comments in ltoutput.dtx
say. Unfortunately, if the \topskip
glue is zero, the \vbox{}
inserted by a \clearpage
command is split off too, because it does fit in zero points, in that case; so, that box is returned to the main vertical list, where it causes the ensuing \cleardoublepage
command to insert two extra pages.
To be honest, I’ve not checked all the details, but the following program can be used to confirm, more or less, the above analysis:
\documentclass[a4paper,twoside]{article}
\makeatletter
\def\clearpage{%
\ifvmode
\ifnum \@dbltopnum =\m@ne
\ifdim \pagetotal <\topskip
\hbox{\special{Comment: A}}%
\fi
\fi
\fi
\newpage
\write\m@ne{}%
\vbox{\special{Comment: B}}%
\penalty -\@Mi
}
\def\cleardoublepage{\clearpage\if@twoside \ifodd\c@page\else
\hbox{\special{Comment: C}}\newpage
\if@twocolumn\hbox{\special{Comment: D}}\newpage\fi\fi\fi}
\makeatother
\showboxbreadth = 1000
\showboxdepth = 10
% \tracingoutput = 1
\begin{document}
A\par
\clearpage
% \setlength{\topskip}{0pt}
B\par
\clearpage
\showlists
% \vbox{} % <<< HERE <<<
\cleardoublepage
C\par
\end{document}
It redefines the \clearpage
and the \cleardoublepage
commands so that they produce boxes that can be unambiguously identified in trace listings (don’t worry if you get some warnings that say “Non-PDF special ignored!”). Run it first as it is, and look at the trace produced by \showlists
; then uncomment the line that says
% \setlength{\topskip}{0pt}
and look again at the transcript: you’ll see that the result is the same as though you had a \vbox{}
command in your source file at the point indicated by % <<< HERE <<<
.
Uncomment \tracingoutput = 1
to get further diagnostic information.
Best Answer
If you don't need different margins on odd and even pages, to allow space for binding, change the document class option from "twoside" to "oneside".