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を変更するのでもいいけど計算するのが面倒くさい。





0 コメント:
コメントを投稿