私はレポートを書いていますが、新しい章が必ず奇数ページから始まるようにしたいです。そこで、各章の前に置く次のスクリプトを書きました。
...
%-- 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}
...
動作は次のように行われます。
新しい章の前のページが奇数ページの場合、次の奇数ページ番号から新しい章を開始するために空白ページを追加する必要があることを意味します。
前のページが通常のページであれば正常に動作します。
しかし、その前のページに図があり、その図がページに収まらなかったために新しいページに移動され、フロートの横にテキストがページ内にない場合、このスクリプトは機能しません。
このコマンドは\thepage
間違ったページ番号を返します (ページに float のみが含まれている場合は増加しないようです)。そのため、最後のページが実際に奇数であった場合に空白ページが追加されません。
この問題を解決する方法がわかりません。何かアイデアはありますか?
助けてくれてありがとう。
答え1
備考:
\thepage
ローマ数字、複雑なページ番号 ( ) など、何でも構いません1-2
。ただし、\ifodd
アラビア数字のみを想定しています。カウンター値 を使用する方が適切です\value{page}
。出力ルーチンは非同期と呼ばれます。そのため、ある時点では
\ifodd
、どのページになるかは不明です。ページの先頭に配置する方がはるかに安全です。多くのドキュメント クラスは、オプション
twoside
とコマンドを提供します\cleardoublepage
。たとえば、KOMA-Script クラスは多くのオプションとコマンドを提供します。また、章は通常、\cleardoublepage
ifで始まりますtwoside
。
標準クラスの場合、\cleardoublepage
空のページに空のヘッダーとフッターを設定するように再定義できます。
\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