閑話休題

ブログの効能と言わば何ぞ其れ日々の由なし事の記帳に限らんや

TeXのヘッダー・フッター・\maketitleを学会誌「林業経済研究」風にカスタマイズしてみた

 特に必要性にかられた訳ではないが,ふとやってみたくなったので,header, footer, make title部分の変更を行った.ちなみに完成品はこれ.
林業経済研究っぽいレイアウト


自分の専攻分野である森林経済学の学会誌である林業経済研究のレイアウトに擬したものを作成した.

初期状態

これまでレジュメなどを作成する際に使ってきたのは

同志社大学 理工学部 インテリジェント情報工学科 知的システムデザイン研究室

が公開しているスタイルファイル.サイトではようとに合わせたたくさんのスタイルファイルが公開されているが,ベースになっているのはmikilab.styとmikibase.sty.前者が研究室の基本的な書式で,後者が研究室が公開している全てのスタイルファイルに共通するスタイルファイル.当然mikilab.styでは冒頭で

\usepackage{mikibase}

と宣言されている.
ヘッダとフッタを定義しているのはmikilabの方だが,このスタイルファイルのヘッダは一ページ目に氏名や作成日を記述するための書式である.従ってこの書式を使うと上記のように純粋なヘッダーがかけなくなってしまう(たいした問題ではないがどうにかして変更したくなった).

ヘッダとフッタの工事

そこで,

  1. 冒頭はヘッダーを使用せず,\maketitleを使用.
  2. ヘッダーはmikilabのものを使用せずに独自に再定義.

という手順を踏んで書き換える事にした.まずはヘッダから.ヘッダについてはかなり自由なカスタマイズが出来るfancyhdr.styを使用.Dept. of Computer Science, Utrecht UniversityのPiet van Oostrumさんが詳細なマニュアルを作成してくれている.英語なので若干読むのがめんどいが,一番基本的なコマンドは,p.6の冒頭に出てくる

\lhead{}
\chead{}
\rhead{\bfseries The performance of new graduates}
\lfoot{From: K. Grant}
\cfoot{To: Dean A. Smith}
\rfoot{\thepage}
\renewcommand{\headrulewidth}{0.4pt}
\renewcommand{\footrulewidth}{0.4pt}
(The \thepage macro displays the current page number. \bfseries is the LATEX2ε’s way of selecting bold face.)
This is now fine, except that the first page does not need all these headers and footers. To eliminate all but the centered page number, issue the command
\thispagestyle{plain}
after the \begin{document} and the \maketitle commands.
Alternatively, issue
\thispagestyle{empty}

これで試しにやってみると,以下のようなものが出来る.fancyhdr.styを使えばヘッダとフッタの左・中央・右の計6カ所にテキストが配置できる.これだけで用が済めば良かったのだが,そうは問屋が卸さない.以下の二つの希望が叶えられなかった.

  1. \maketitleで定義された1ページ目冒頭も2ページ目以降と同様のヘッダ・フッタが入れたい
  2. 偶数ページと奇数ページでヘッダの内容を変えたい.

この二つの事を達成しようとした結果,また別のヘッダを用意する事に.今度は前出の詳細なマニュアルのp.7にある,

\fancyhead{} % clear all header fields
\fancyhead[RO,LE]{\bfseries The performance of new graduates}
\fancyfoot{} % clear all footer fields
\fancyfoot[LE,RO]{\thepage}
\fancyfoot[LO,CE]{From: K. Grant}
\fancyfoot[CO,RE]{To: Dean A. Smith}
\renewcommand{\headrulewidth}{0.4pt}
\renewcommand{\footrulewidth}{0.4pt}

を使った.ちなみに
E=Even page
O=Odd page
L=Left field
C=Center field
R= Right field
H= Header
F=Footer
だからCOはcenter field&odd pageということになる.この方法であれば2×3×2=12カ所の書式を設定する事が出来る.基本的にはbookクラスやbookクラス等,奇数ページと偶数ページで書式が違うモノに使うためのスタイルだと思うが,林業経済研究では偶数ページのヘッダが"Journal of Forest Economics Vol.〓 No.〓 (201〓)"となっているのに対して,奇数ページは「林業経済研究 Vol.〓 No.〓 (201〓)」となっているので,どうしてもページ毎に分ける必要があるのでこの書式を用いた.これでヘッダとフッタは一件落着.

\maketitleの工事

\maketitleは
styleuse.pdf
を参考にさせていただいた.今回はほんの数ページしか使用していないが,このマニュアルは和文で書かれたものとしては最も詳細かつ正確なTeXマニュアルだと思う.今後も困ったらこれを見るようにしたい.
所期の目標は「林業経済研究風のフォントを再現すること」なので,とりあえずp.19を参考にした.スタイルファイルに貼付けた上で,微調整して,体裁を整えた.主な改変部分は

  1. 左上に論文のメタテーマを付ける
  2. abstractと氏名,所属は和文・英文併記とする.
  3. 脚注を付してE-mail addressを記述する.
\newdimen\vspace@title \newdimen\vspace@abstract\newdimen\vspace@jabstract
\vspace@title=0.2\textheight
\vspace@abstract=0.15\textheight
\vspace@jabstract=0.15\textheight
%
\def\etitle#1{\gdef\@etitle{#1}}
\def\affiliation#1{\gdef\@affiliation{#1}} % affiliation
\def\abstract#1{\gdef\@abstract{#1}}
\def\jabstract#1{\gdef\@jabstract{#1}}
\def\keywords#1{\gdef\@keywords{#1}}
\def\eaffiliation#1{\gdef\@eaffiliation{#1}}
\def\eauthor#1{\gdef\@eauthor{#1}}
\def\pretitle#1{\gdef\@pretitle{#1}}

%
% minor-font definition for {’KEY WORDS:’}
%\font\fontkeywords=cmbxti10
\def\keywordsname{Key words:}
%
\def\maketitle{\par
 \begingroup
   \def\thefootnote{\fnsymbol{footnote}}%
   \def\@makefnmark{\hbox
       to\z@{$\m@th^{\@thefnmark}$\hss}}%
   \if@twocolumn
% space for title
% space for abstract
% does NOT allow paragraphs
% keywords
% bold italic
    \twocolumn[\@maketitle]%
    \else \newpage
    \global\@topnum\z@
    \@maketitle \fi\thispagestyle{plain}\@thanks
\endgroup
\setcounter{footnote}{0}%
\let\maketitle\relax
% english title
\let\@maketitle\relax
\gdef\@abstract{}\gdef\@keywords{}%            to save memory ???
\let\abstract\relax\let\keywords\relax%
\let\etitle\relax\gdef\@etitle{}%
\let\affiliation\relax\gdef\@affiliation{}%
\let\eaffiliation\relax\gdef\@eaffiliation{}%
\let\eauthor\relax\gdef\@eauthor{}%
\let\pretitle\relax\gdef\@pretitle{}%
\let\jabstract\relax\gdef\@jabstract{}%
\gdef\@thanks{}\gdef\@author{}\gdef\@title{}\let\thanks\relax}
     %
     \def\@maketitle{\newpage\null
     %
%     \vbox to \vspace@pretitle{%
%      \vspace{1em} \begin{flushright} {\LARGE\bfseries \@pretitle} \end{flushright}\par}\vskip 4.5ex
           \vspace{1em} 
     \vbox to \vspace@title{%
      \begin{flushleft} {\large\bfseries \@pretitle} \end{flushleft}\vspace{.3em}
      \begin{center} {\LARGE\bfseries \@title} \end{center} \vspace{-1em}
      \begin{center} {\Large\bfseries \lineskip .5em \@author} \\
         \@affiliation \end{center} \vspace{-1em}
      \begin{center} {\large \@etitle} \end{center} \vspace{-1em}
       \begin{center} {\Large\bfseries \lineskip .5em \@eauthor} \\
         \@eaffiliation \end{center} \par\vfill}
         \vfill
         \vskip 5.5em
      
     %

     \vbox to \vspace@jabstract{\vfill%
      \@ifundefined{@jabstract}{}{%
      \begin{list}{}{\setlength{\leftmargin}{0.0\textwidth}
       \topsep=0pt \partopsep=0pt \listparindent=1em \parsep=0pt
       \setlength{\rightmargin}{\leftmargin}
       \setlength{\baselineskip}{0.8\normalbaselineskip}}
      \item {\small \@jabstract}
      
       \@ifundefined{@keywords}{}{%
       \begin{list}{\keywordsname}{
        \topsep=-0.8\parskip \partopsep=0pt
        \settowidth{\labelwidth}{\keywordsname}
        \settowidth{\leftmargin}{1.1\keywordsname}
        \setlength{\baselineskip}{0.8\normalbaselineskip}}
       \item {\small\@keywords}
       \end{list}}
      \end{list}}
      \par \vfill}
      \vskip 1em
     \vbox to \vspace@abstract{\vfill%
      \@ifundefined{@abstract}{}{%
      \begin{list}{}{\setlength{\leftmargin}{0.0\textwidth}
       \topsep=0pt \partopsep=0pt \listparindent=1em \parsep=0pt
       \setlength{\rightmargin}{\leftmargin}
       \setlength{\baselineskip}{0.8\normalbaselineskip}}
      \item {\small \@abstract}
     %
      \@ifundefined{@keywords}{}{%
       \begin{list}{\keywordsname}{
        \topsep=-0.8\parskip \partopsep=0pt
        \settowidth{\labelwidth}{\keywordsname}
        \settowidth{\leftmargin}{1.1\keywordsname}
        \setlength{\baselineskip}{0.8\normalbaselineskip}}
       \item {\small\@keywords}
       \end{list}}
      \end{list}}
      \par \vfill}}%------------------------------------------

長いしコマンドの内容をきちんと把握している訳ではないので,中身の説明はしない(できない?)が,これでエントリーのはじめに書いた林業経済研究っぽいレイアウト
が出来上がった.
林業経済風のレイアウトを完成させるためには他にも

  1. 表の体裁
  2. 参考文献の体裁

当たりを直さなければいけないが,参考文献についてはbibtexを使った.bstファイルは
武田史郎先生のサイトのjecon.bstをベースとして.jecon.pdfを参考にしてjecon.bstを書き換え,forecon.bstを作成した.之で大体林業経済研究の体裁を再現できたように思う.

post script

bibtexも含めれば所要時間は5時間程度.期末試験の直前にかなり無駄な時間を使ってしまったものである.でも,自分のようにマクロの書き方も良く知らないような人間でも,ネットからの切り貼りと見よう見まねの書き換えで学会誌のレイアウトがほぼ再現できてしまう.ということは学会誌はTeXで作ってるんだろうな.どうせてふで作るんだったら.styと.bstを配布してくれれば,雑誌作ってる方のコストも削れるのでは?書く方も完成版と全く同じ体裁のものを確認できるので,イメージがわきやすい.
などと思っていろんな学会のwebsiteを見ていたら,英文誌を発行しているElsevierがファイルを公開していた.
Elsarticle LaTeX document class | Elsevier
林業経済研究が公開してくる日が来ると言いな~