Estou escrevendo um relatório e quero ter certeza de que cada novo capítulo comece em uma página ímpar. Então escrevi o seguinte roteiro que coloquei antes de cada capítulo:
...
%-- to make sure that a new chapter starts on the right side (odd page) %
\ifodd \thepage
{\newpage
\thispagestyle{empty}
\mbox{}
}
\else
{}
\fi
%-----------------------------------------------------------------------%
\chapter{Chap_name}
...
Funciona da seguinte forma:
Se a página anterior ao meu novo capítulo for ímpar, significa que terei que adicionar uma página em branco para começar o novo capítulo no próximo número de página ímpar.
Funciona bem se a página anterior for uma página normal.
Mas quando eu tenho uma figura na página anterior, que foi movida para uma nova página porque não cabe na página e não há texto na página junto com o float, então esse script não funciona.
O comando \thepage
retorna um número de página errado (aparentemente não aumenta se a página contiver apenas um ponto flutuante) e portanto não adiciona uma página em branco caso a última página seja realmente ímpar.
Não sei como resolver esse problema. alguma ideia?
obrigado por ajudar.
Responder1
Observações:
\thepage
pode ser qualquer coisa, algarismos romanos, números de páginas complexos (1-2
),… Porém,\ifodd
espera apenas um número arábico. Melhor é o uso do valor do contador\value{page}
.A rotina de saída é chamada assíncrona. Portanto no momento em
\ifodd
algum lugar não está claro quais serão as páginas. Muito mais seguro é o lugar no topo de uma página.Muitas classes de documentos fornecem opções
twoside
e comandos\cleardoublepage
. Por exemplo, as classes KOMA-Script fornecem muitas opções e comandos. Além disso, um capítulo geralmente começa com\cleardoublepage
iftwoside
é fornecido.
Para as classes padrão, \cleardoublepage
pode ser redefinido para definir cabeçalhos e rodapés vazios para páginas vazias:
\makeatletter
\renewcommand*{\cleardoublepage}{%
\clearpage % output floats if necessary
% new page starts here
\if@twoside
\ifodd\value{page}%
\else
\begingroup
\pagestyle{empty}%
\hbox{}\newpage
\if@twocolumn
\hbox{}\newpage
\fi
\endgroup
\fi
\fi
}
\makeatother