\chapter のカスタマイズ

まずは書籍などで見られる、章デザインを \chapter 命令の定義を変更して実現する方法を考えます。
いきなり複雑なことをしても混乱しますから、簡単なものから始めてみましょう。
目標とするデザインは右図です。さあどうすれば、このように出力されるのでしょうか?

chapter.jpg (6273 バイト)

\chapter 命令で実際の出力形式を決めるのは、\@makechapterhead という命令です。
@が出てくると身構えてしまうかもしれませんが、ここでは「おまじない」程度に考えてください。
この \@makechapterhead の定義はクラスファイルにあります。
試しに、エディターで \jbook.cls を開いて \def\@makechapterhead を検索してください。

以下

\def\@makechapterhead#1{\hbox{}%
\vskip2\Cvs
{\parindent\z@
\raggedright
\reset@font\huge\bfseries
\ifnum \c@secnumdepth >\m@ne
\setlength\@tempdima{\linewidth}%
\if@mainmatter
\setbox\z@\hbox{\@chapapp\thechapter\@chappos\hskip1zw}%
\addtolength\@tempdima{-\wd\z@}%
\unhbox\z@\nobreak
\fi
\vtop{\hsize\@tempdima#1}%
\fi}\vskip3\Cvs}

ここまでが、「章番号を出力する場合の」 \chapter の出力部分の定義です。
この中で、\setbox\z@\hbox{\@chapapp\thechapter\@chappos\hskip1zw}
を見てください。 \@chapapp は「第」  \thechapter は「章番号」 \@chappos は「章」 と
クラスファイル内で定義されています。
つまりこの行に「第xx章」が入っているのです。
ちなみに、実際には \unhbox\z@ で出力しています。

では章番号はいいとして、タイトルの出力はどこでおこなわれるのでしょう?
\chapter 命令は、\chapter{abc} と使いますね。{ }内の文字列は「引数」と呼ばれています。
そうすると \vtop{\hsize\@tempdima#1} の行がそれらしいぞ、となってきました。
ここで \hsize\@tempdima は縦箱の横幅を指定しています。
ここでは \setlength\@tempdima{\linewidth}% と \addtolength\@tempdima{-\wd\z@}%
から、「(行幅) から (章番号+全角1文字) 分引いた長さだとわかります。」

さあ、だんだん「第xx章」と出力される仕組みが見えてきました。
ここで一気に解答を出しましょう。

\def\@makechapterhead#1{\hbox{}%
\vskip2\Cvs
{\parindent\z@
\raggedright
\reset@font\huge\bfseries
\ifnum \c@secnumdepth >\m@ne
\setlength\@tempdima{\linewidth}%
\if@mainmatter
\setbox\z@\hbox{\@chapapp\thechapter\@chappos\hskip1zw}%
%\addtolength\@tempdima{-\wd\z@}% これで縦箱の長さが行幅と同じになります。
\unhbox\z@\par%%%%\parとすることで章番号とタイトルが分離。
\fi
\vskip\baselineskip %縦方向に空白
\hrule height1pt %太さ1ptの横罫線を引く
\vskip.5\baselineskip
\vtop{\hsize\@tempdima#1}%章のタイトル出力
\vskip.5\baselineskip %縦方向に空白
\hrule height1pt %太さ1ptの横罫線を引く
\fi}\vskip3\Cvs}

コメントを読めば意外に単純だとわかるでしょう。

今回は、\@makechapterhead の変更だけですから、クラスファイルに手を加えるよりも、
上記を mymacro.sty という名前で保存して、

\documentclass[a4paper,10pt]{jbook}
\usepackage{mymacro}
\pagestyle{plain}

%%%%%% TEXT START %%%%%%
\begin{document}
\chapter{新しい章デザイン}
.........
\end{document}

としましょう。
できましたか?

NEXT