jsbookをjsreportっぽいレイアウトにするには。

私は学位論文用としてはjsreportのデフォルトのレイアウトが気に入っていたのに、jsreportでは一点だけ満足できなかった。ヘッダーである。偶数ページには章題、奇数ページには節題を表示したかったのに、それがどうにも上手くいかなかったのだ。一般にはfancyhdrを使って設定するようだが、これが駄目なのである。実際のページ数に関わらず全て奇数ページと判定されてしまって、偶数ページであっても問答無用で奇数ページと同じ表示になってしまうのだ。しかもその原因は調べても分からなかった。解決する方法はきっと何かあるのだろうが、私のようなLaTeX初級者には見つけることもできなかった。jsreportのオプションにtwosideを追加するだけで解決するらしいことを知ったので追記しておく。

そこで、jsbookを弄ってjsreportのようなレイアウトにすることにした。jsbookのヘッダーはfancyhdrも正常に動作するようである。が、あれこれ調整しなくても\pagestyle{headings}で十分格好良い。尤もそれ以外が非常に面倒なのだが。
用紙サイズA4、文字サイズ10pt、他はjsreportデフォルトを想定している。文字サイズや余白に関する細かい指定は何もないようなので、字が小さい方が何となく好みな私はこのようにした。老眼が進んできた教授らには文句を言われるかも知らんが。

\documentclass[a4j, titlepage, openany, 10pt]{jsbook}

%上下幅設定
\setlength{\textheight}{\paperheight}   % 本文領域を一旦紙面の高さにする
\setlength{\topmargin}{13.6truemm}      % 上の余白を39mm(=1inch+13.6mm)に
\addtolength{\topmargin}{-\headheight}  % 
\addtolength{\topmargin}{-\headsep}     % ヘッダの分だけ上の余白を小さくする
\addtolength{\textheight}{-74truemm}    % 下の余白35mmと合わせて、上下余白分だけ本文領域の高さを小さくする。

%左右幅設定
\setlength{\fullwidth}{\paperwidth}     % 全体の幅(テキスト領域の幅ではない)を一旦紙面幅にする
\setlength{\evensidemargin}{-0.4truemm} % 左の余白を25mm(=1inch-0.4mm)に
\setlength{\oddsidemargin}{-0.4truemm}  % 上に同じ
\addtolength{\fullwidth}{-50truemm}     % 左右余白分だけ本文領域の幅を小さくする。
\setlength{\textwidth}{\fullwidth}      % テキスト幅を全体の幅に一致させる

%概要ページの調整
\makeatletter
\renewenvironment{abstract}{
  \titlepage
  \null\vfil
  \@beginparpenalty\@lowpenalty
  \begin{center}
    {\bfseries\abstractname}
    \@endparpenalty\@M
  \end{center}}
  {\par\vfil\null\endtitlepage}
\newcommand{\abstractname}{概要}
\makeatother

jsbookのややこしさはfullwidthとtextwidthの違いにあるらしい(これらが独立していることが左右の偏りの原因のようである)。詳細は参考ページに詳しく書かれている。\setlength{\textwidth}{\fullwidth}とすることで、この問題は吸収できる。
jsreportはだいたい左右25mmずつの余白を確保しているようなので、こちらもそれに習い余白は25mmにした。上下の余白はそれぞれ39mm、35mmくらいに見えたのでそのようにしたが、正確な所は分からない。geometryパッケージを使うと楽だとよく説明されているが、jsbookの仕様と共存させると理解しがたい挙動をしたため今回は使わなかった。

概要の所は、\begin{abstract}~\end{abstract}のような書き方をせず章番号のない\chapter*{概要}を使う手もあるけれども、私は上の方法のほうが好みだったのでそちらを採用した。

もちろんjsreportとは厳密には一致しないし、私以外の環境で上手くいく保証もしかねる。

参考

jsbook や bxjsbook の左右マージンを理解する - マクロツイーター
TeXのjsarticleで余白設定 - joker8phoenix's diary