Apr 2, 2009

book.cls で oneside のときに \cleardoublepage を有効にする

book.clsでは、twoside, oneside, openright, openanyの組み合わせで組版をいろいろ制御できる。

  • twoside: 両面印刷用。奇数ページが左に、偶数ページがオフセットする。
    • openright: \cleardoublepageしたときに、\clearpageした上で、奇数ページから始まるように空ページを挿入する。
    • openany: \cleardoublepageしたときに、\clearpageしかしない。
  • oneside: 片面印刷用。twosideのようなオフセットはない。\cleardoublepageしたときに、\clearpageしかしない。openrightやopenanyを指定しても無視される。

このbook.clsで問題となるのは、(1) 両面印刷したいのだけどオフセットはさせたくない、(2) onesideの場合でも\cleardoublepageの振る舞いをtwosideの場合と同じにしたい、というときにスマートな解決法がないことだ。

なので私は仕方なく、documentclassにoneside, openrightと指定した上で、

\documentclass[oneside,openright,a4paper,draft]{book}

以下のようにpreambleに追加することで、\cleardoublepageの定義を上書きしている。

% force to enable \cleardoublepage for oneside books
\makeatletter
\renewcommand{\cleardoublepage}{\clearpage\ifodd\c@page\else
    \hbox{}\newpage\if@twocolumn\hbox{}\newpage\fi\fi}
\makeatother

もっとうまい方法はないかな。twoside時の\evensidemargin, \oddsidemarginを変更するのでもいいけど計算するのが面倒くさい。

About Me

My Photo

つくばで働く研究者

Total Pageviews

Amazon

Copyright 2012 Ogawa::Buzz | Powered by Blogger
Design by Web2feel | Blogger Template by NewBloggerThemes.com