\thepage vs carros flutuantes

\thepage vs carros flutuantes

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 \thepageretorna 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:

  • \thepagepode ser qualquer coisa, algarismos romanos, números de páginas complexos ( 1-2),… Porém, \ifoddespera 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 \ifoddalgum 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 twosidee comandos \cleardoublepage. Por exemplo, as classes KOMA-Script fornecem muitas opções e comandos. Além disso, um capítulo geralmente começa com \cleardoublepageif twosideé fornecido.

Para as classes padrão, \cleardoublepagepode 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

informação relacionada