keisu.sty v2.1.1 の解説
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% keisu.sty for pLaTex2e
% v2.1.1
%
% v1.0 by Hiroki KOGA 1996/01/01
% v2.0(=v1.9) by Tomoaki KOKITA 2000/01/31
% v2.1 by Naoko OGAWA 2001/11/12
Hiroki KOGA:古賀弘樹さんは数理3研の助手を勤められた後,現在は筑波大学の講師です.
Tomoaki KOKITA:小喜多智彰さんは現在は新領域創成科学研究科に在籍中.
Naoko OGAWA:わたしです.
\typeout{Style File: keisu v2.1.1 <2002/01/08> keisu.t.u-tokyo.ac.jp}
タイプセットのときに出るメッセージです.
%%%%% edited from j-report.sty (NTT jLaTeX2.09)
%%%%% used in keisu.sty v1.0
%\def\bf{\protect\pdg\protect\pbf} % original source
%\let\bf=\dg\bf % for NTT TeX
\let\dg=\bf % for ASCII pTeX
フォントの指定を pTeX に準拠した形にしています.(v1.0a)
%%%%%%%%%% renewal definition for pLaTeX2e
%%% 章の冒頭もインデントする like indentfirst.sty
%%% 章の最初のページのスタイルは plain に
%%% Original Source from jreport.cls (ASCII pLaTeX2e)
%%%
\renewcommand{\chapter}{%
\if@openright\cleardoublepage\else\clearpage\fi
% \thispagestyle{jpl@in}%
% CHANGE START
\thispagestyle{plain}%
% CHANGE END
\global\@topnum\z@
%\@afterindentfalse
% CHANGE START
\@afterindenttrue
% CHANGE END
\secdef\@chapter\@schapter}
\thispagestyle{plain}で,章の最初のページのスタイルのみをplainにして,ページ番号がページのフッタ中央にくるようにしています.jreport.clsのデフォルトでは,ページ番号がページのヘッダの肩に載るようになっています.
\@afterindenttrueは,章の最初の段落冒頭の字下げをオンにしています.デフォルトでは\@afterindentがfalseなので,字下げされません.
%%% 章の見出しを改行+空行後に表示
%%% Original Source from jreport.cls (ASCII pLaTeX2e)
%%%
\def\@makechapterhead#1{\hbox{}%
\vskip2\Cvs
{\parindent\z@
\raggedright
\reset@font\huge\bfseries
\ifnum \c@secnumdepth >\m@ne
\setlength\@tempdima{\linewidth}%
%\setbox\z@\hbox{\@chapapp\thechapter\@chappos\hskip1zw}%
%\addtolength\@tempdima{-\wd\z@}%
%\unhbox\z@\nobreak
%\vtop{\hsize\@tempdima#1}%
% CHANGE START
\vtop{%
\hbox{\@chapapp\ \thechapter\ \@chappos\hskip1zw}%
\vbox{\hsize=1zw}%
\vtop{\hsize\@tempdima{#1}}%
}%
% CHANGE END
\fi}\vskip3\Cvs}
章の見出しを改行し,空行後に表示しています.(v2.0)
%%% Captionの区切り文字を変更
%%% Original Source from jreport.cls (ASCII pLaTeX2e)
%%%
\long\def\@makecaption#1#2{%
\vskip\abovecaptionskip
\iftdir\sbox\@tempboxa{#1\hskip1zw#2}%
% \else\sbox\@tempboxa{#1: #2}%
\else\sbox\@tempboxa{#1\ #2}%
\fi
\ifdim \wd\@tempboxa >\hsize
\iftdir #1\hskip1zw#2\relax\par
% \else #1: #2\relax\par\fi
\else #1\ #2\relax\par\fi
\else
\global \@minipagefalse
\hbox to\hsize{\hfil\box\@tempboxa\hfil}%
\fi
\vskip\belowcaptionskip}
\captionのデリミタを,デフォルトの:からホワイトスペースに変えました.(v1.0)
% 章見出しの再定義
\renewcommand{\contentsname}{目次}
\renewcommand{\abstractname}{概要}
\renewcommand{\bibname}{参考文献}
\renewcommand{\appendixname}{付録}
章見出しを再定義しています.(v1.0)
%%% テキストエリア指定
%%% A4 paper:297mm x 210mm
\setlength{\textheight}{245mm} % original 250
\setlength{\textwidth}{165mm} % original 165
% 1inch(25.4mm)+\voffset+\topmargin+\headheight
% +\headsep+\textheight+\foootskip <= \pageheight
% 1inch(25.4mm)+\odd(even)sidemargin+\textwidth+\marginparsep
% +\marginparwidth <= \pagewidth
\setlength{\oddsidemargin}{5mm}
\setlength{\evensidemargin}{-10mm}
\setlength{\voffset}{-10mm}
\setlength{\topmargin}{-5mm}
%\setlength{\headsep}{0mm}
\setlength{\headheight}{10mm}
%\setlength{\footskip}{}
テキストエリアを(ほぼ)245 mm × 165 mm に指定しています.v2.0 までは 250 mm × 165 mm でしたが,ヘッダの分を狭くしました.k-sotsu.styでは逆に広すぎますので,ここはkeisu.sty v1.0 にほぼ合わせてあります.
\oddsidemarginと\evensidemargin は,v2.0 まではparameters.styで指定していましたが,v2.1 ではここで一括して指定することにしました.
%%% (pLateX2e 用に)行送りをやや大きめに
\renewcommand{\baselinestretch}{1.1}
行送りをデフォルトの 1.1 倍にしています.v2.0 までは JTeX 用に 0.9 倍でしたが,pLaTeX2e には狭すぎて読みにくいため,大きめにしてみました.
%%% 字下げは全角 1 文字分
\parindent=1zw
段落の冒頭の字下げを全角文字 1 文字分の幅に設定しました.
%%% 脚注を記号で出力
\renewcommand{\thefootnote}{\fnsymbol{footnote}}
脚注番号を表示する\thefootnoteを再定義し,脚注番号パラメータfootnoteを記号で出力させています.(v2.0)
%%% 要調査
%%% \author 等の再定義
\def\thesis#1{\gdef\@thesis{#1}}
\def\title#1{\gdef\@title{#1}}
\def\date#1{\gdef\@date{#1}}
\def\author#1{\gdef\@author{#1}}
\def\coworker#1{\gdef\@coworker{#1}}
\def\supervisor#1{\gdef\@supervisor{#1}}
\def\cosupervisor#1{\gdef\@cosupervisor{#1}}
\def\affiliation#1{\gdef\@affiliation{#1}}
\gdef\@date{\today} %Default is today's date
表紙に表示する要素をここで定義しています.v2.1 で新たに加わったのは,論文の種類を示す\thesis{},著者の所属を示す\affiliation{}です.(v2.0)
%%% 表紙の定義 \makecover
\newcommand\makecover{
\vspace*{10mm}
\begin{center}
{\LARGE \@thesis}\\ \vspace{20mm}
{\bfseries{\Huge \@title}}
\\\vspace{20mm}
{\LARGE \@date}\\\vspace{50mm}
\ifx\@cosupervisor\undefined
{\Large 指導教官}{\LARGE \quad \@supervisor}\\\vspace{20mm}\
\else
{\Large 指導教官}{\LARGE \quad \lower0.75zh\vbox{\hbox{\@supervisor}\hbox{\@cosupervisor}}}\
\fi
\\\vspace{20mm}
{\LARGE \@affiliation}
\\\vspace{5mm}
{\huge \@author}
\ifx\@coworker\undefined
\else
\\\vspace{10mm}
{\LARGE 共同研究者 : \@coworker}\
\fi
\end{center}
\newpage
\thispagestyle{empty}
\cleardoublepage
}
表紙のレイアウトを規定しています.表示する順番はk-sotsu.styに準拠し,副指導教官の書き方は v2.0 に準拠しました.
v2.0 まではparameters.styで\jointとcosuperの論理値を指定し,これを読み込んでtrueかどうかで処理を分けていたのですが,これを廃止し,\@cosupervisorや\@coworkerが本文中で定義されているかどうかで条件分岐するようにしました.
バグ修正.(v2.1.1)
%%% 謝辞の定義 \acknowledge
\newcommand\acknowledge{
\newpage
\chapter*{謝辞}\markboth{謝辞}{謝辞}
\addcontentsline{toc}{chapter}{謝辞}
}
番号なしの章として謝辞\acknowledgeを定義しています.
\markboth{謝辞}{謝辞}で,それぞれ奇数ページ,偶数ページのヘッダに表示する文字列を指定しています.
\addcontentsline{toc}{chapter}{謝辞}で,謝辞が目次に加わるようにしています.
%%% ヘッダの定義
%%% Original Source from jreport.cls (ASCII pLaTeX2e)
%%% powered by 本田先生
%%%
\def\@chapappinfancy#1{{\bfseries 第 #1 章}}
\def\appendix{\par
\setcounter{chapter}{0}
\setcounter{section}{0}
\def\@chapapp##1{付録 ##1}
\def\thechapter{\Alph{chapter}}
\def\@chappos{}
\def\@chapappinfancy##1{{\bfseries 付録 \hbox{\bf ##1}}}
}
ヘッダに出力する文字列を指定しています.\bfseriesでボールドを指定しています.各章では「第○章」の形式にしています.\appendixではカウンタをゼロに戻してアルファベットにし,「付録 A」などの形になるようにしています.
\if@twoside
\def\ps@keisuheader{\let\ps@jpl@in\ps@headnombre
\let\@oddfoot\@empty\let\@evenfoot\@empty
%\def\@evenhead{\thepage\hfil\leftmark}%
%\def\@oddhead{{\rightmark}\hfil\thepage}%
%CHANGE START
\def\@evenhead{\hbox to\textwidth{\thepage\hfil{\bfseries \leftmark}}\llap{\rule[-.5zw]{\textwidth}{1pt}}}
\def\@oddhead{{\bfseries \rightmark}\hfil\thepage\llap{\rule[-.5zw]{\textwidth}{0.4pt}}}%
%CHANGE END
\let\@mkboth\markboth
\def\chaptermark##1{\markboth{%
\ifnum \c@secnumdepth >\m@ne
\@chapapp\thechapter\@chappos\hskip1zw
\fi
%##1}{}}%
%CHANGE START
##1}{%
\ifnum \c@secnumdepth >\m@ne
\@chapapp\thechapter\@chappos\hskip1zw
\fi
##1}}%
%CHANGE END
%\def\sectionmark##1{\markright{%
%\ifnum \c@secnumdepth >\z@ \thesection.\hskip1zw\fi
%##1}}%
}
twosideで両面印刷を指定した場合について,keisuheaderという名前のページスタイルを新たに定義します.
\@evenheadについては\textwidthの長さの箱を用意し,中にまず\thepageでページ数を表示し,伸縮する箱\hfilで満たしてから,最後に\leftmarkでヘッダの中身を入れます.さらに,縦方向に 0.5zw ずれた,長さが\textwidth,太さ 1pt の直線を\ruleで引き,\llapでその長さの分だけ後ろにずらすことでヘッダと重ねています.\@oddheadについても同様です.
また,デフォルトでは奇数ページに節名が表示されていましたが,\markbothの2つの引数にどちらも章名を入れ,\markrightの定義を消すことで,どちらのページにも章名が出るようにしました.
\else % if not twoside
\def\ps@keisuheader{\let\ps@jpl@in\ps@headnombre
\let\@oddfoot\@empty
%\def\@oddhead{{\bfseries \rightmark}\hfil\thepage}%
%CHANGE START
\def\@oddhead{{\bfseries \rightmark}\hfil\thepage\llap{\rule[-.5zw]{\textwidth}{0.4pt}}}%
%CHANGE END
\let\@mkboth\markboth
\def\chaptermark##1{\markright{%
\ifnum \c@secnumdepth >\m@ne
\@chapapp\thechapter\@chappos\hskip1zw
\fi
##1}}%
}
\fi
twosideを指定せず,片面印刷する場合について,同様のことをやっています.
%%% 参考文献のヘッダ
%%% Original Source from jreport.cls (ASCII pLaTeX2e)
%%% modified by トニイ@FTEX さん
%%% http://www.matsusaka-u.ac.jp/~okumura/texfaq/qa/3595.html
%%%
\renewenvironment{thebibliography}[1]
{\chapter*{\bibname}\@mkboth{\bibname}{\bibname}%
%% 修正 \@mkboth を \chapter* の引数の外に出しただけ
\list{\@biblabel{\@arabic\c@enumiv}}%
{\settowidth\labelwidth{\@biblabel{#1}}%
\leftmargin\labelwidth
\advance\leftmargin\labelsep
\@openbib@code
\usecounter{enumiv}%
\let\p@enumiv\@empty
\renewcommand\theenumiv{\@arabic\c@enumiv}}%
\sloppy
\clubpenalty4000
\@clubpenalty\clubpenalty
\widowpenalty4000%
\sfcode`\.\@m}
{\def\@noitemerr
{\@latex@warning{Empty `thebibliography' environment}}%
\endlist}
\makeatother
参考文献のヘッダを変えています.
戻る