基本版面などを調整していきます.まずは横書きとします.
紙サイズ
紙のサイズを設定します.ここではA4(横210mm,縦297mm)にします.
\paperwidth=210mm
\paperheight=297mm
% 下二つはe-pTeXのprimitive
\setlength{\pdfpagewidth}{\paperwidth}
\setlength{\pdfpageheight}{\paperheight}
この紙サイズはあくまでLaTeXシステムの認識する紙サイズであり,出力されたDVIに残るわけではありません.dviout / dvips / dvipdfmxあたりでdviを扱うことが確定している場合は,papersize specialを発行することで,DVI内に紙サイズの情報を残します.DVI開始時まで遅延するために,\AtBeginDvi
内に入れておきます.
\AtBeginDvi{\special{papersize=\the\paperwidth,\the\paperheight}}
LuaTeX-jaの場合は\pdfpagewidth
,\pdfpageheight
の代わりに\pagewidth
,\pageheight
を設定します.これらが生成されるPDFの紙サイズとなります.papersize specialは不要です.
\setlength{\pagewidth}{\paperwidth}
\setlength{\pageheight}{\paperheight}
段組
二段組みにする場合は\@twocolumntrue
を実行し,関連するパラメータを設定します.
\setlength{\columnsep}{2zw}% 左右(縦書きの場合は上下)の段の間の幅
\setlength{\columnseprule}{0pt}% 段の間に引かれる線の幅.0ptだと線を引かない.
twoside
標準クラスファイルにtwoside
オプションを指定したときと同様にするには,\@twosidetrue
を実行しておきます.
\@twosidetrue
傍注
\marginpar
で出力される傍注のパラメータを設定します.利用しない場合は0ptなどにすればよいですが,ここでは少し値を設定してみることにします.
\setlength{\marginparwidth}{10zw}% 傍注の幅
\setlength{\marginparsep}{1zw}% 傍注と本文との間の長さ
\setlength{\marginparpush}{0.5zw}% 連続する傍注間の空き
デフォルトでは傍注は右側に出力されます.ページの偶奇に応じて左右を入れ替えるには\@mparswitchtrue
を実行しておきます.
\@mparswitchtrue
横方向
横方向の配置をします.次のようにすることにしましょう.
- 横書き.一段組.
- 行長は35zw(全角35文字分)
- 傍注は上記の通り行長10zw,本文との空きが1zw.また
\@marswitchtrue
は実行されているとする. - 本文および傍注を合わせた領域を中央配置する.
まず行長を35zwに設定します.
\setlength{\textwidth}{35zw}
紙の端から本文領域までの左の空きは\oddsidemargin
および\evensidemargin
です.この値を調整して中央配置させましょう.ただし,原点が1インチずれているというTeXの謎仕様があるので,1inずらさなければなりません.(この調整は最後に行います.)計算にはe-TeXのプリミティブである\dimexpr
を使います.\dimexpr <式>\relax
として使うことで<式>
の値を解釈してくれます.
\setlength{\oddsidemargin}{\dimexpr(\paperwidth - \textwidth - \marginparsep - \marginparwidth)/2\relax}% 紙の長さから本文と傍注の長さを引き半分にする.
\evensidemargin
は紙面左側と本文との空きで,傍注部分は考慮されません.偶数ページでは傍注は左に来ます.傍注と紙面左側の脇を奇数ページの左空きである\oddsidemargin
と同様にしたいので,傍注部分を足しておきます.
\setlength{\evensidemargin}{\dimexpr\oddsidemargin + \marginparsep + \marginparwidth\relax}
二段組みの場合
二段組みの場合は,傍注は左右どちらにも出現します.そのため,左右の傍注と本文部分を合わせた領域を中央配置した方がよいでしょう.このときは偶数ページも奇数ページと同じです.
\setlength{\oddsidemargin}{\dimexpr(\paperwidth - \textwidth - 2\marginparsep - 2\marginparwidth)/2\relax}
\setlength{\evensidemargin}{\oddsidemargin}
ちなみに二段組みの場合の\textwidth
は両方の段の行長の和+段間を表します.従って各段の長さは35zwの半分弱になります.
補正
最後に原点がずれている分の補正をします.
\addtolength{\oddsidemargin}{-1in}
\addtolength{\evensidemargin}{-1in}
\topskip
各ページの一行目は,そのベースラインはが上から\topskip
の分だけ下がった場所になるように配置されます.
\setlength{\topskip}{1zw}% 特に根拠なし
ヘッダ関連
ヘッダとフッタのレイアウトパラメータを設定します.\headsep
はヘッダと本文の間の長さですが,そこから更に上記の\topskip
由来の空きが入ることに注意します.もし一行目の高さがデフォルトサイズの和文のみならば,この空きは\topskip - \Cht
です.
\setlength{\headheight}{1zw}% ヘッダとフッタ部分の高さ
\setlength{\headsep}{\dimexpr 1zw - \topskip + \Cht\relax}% これで本文の上端とヘッダの下端が全角一文字分空く.
\setlength{\footskip}{\dimexpr 1zw + \headheight\relax}% 本文最終行のベースラインからフッタのベースラインまでの間
本文最終行の深さとフッタの深さが等しいならば,\footskip
は本文下端からフッタ下端までの幅ですから,上の設定で本文とフッタとの間が全角一文字分空きます.ただし,実際にはフッタは本文より小さい文字が使われることが多く,そのためフッタの深さの方が少し短くなるので,厳密にはずれてしまいます.が,考慮しないことにします.もちろんフッタに使われる文字サイズがわかっている場合はそこから厳密に合わせることができます.
縦方向
縦方向は次のような設定をします.
- 一ページ35行.
- 中央配置.
設定するのは本文の縦方向の長さである\textheight
と紙の一番上からヘッダの一番上までの長さである\topmargin
です.\textheight
は本文を包み込むボックスの高さになるので,下端は最終行のベースラインになります.上端は本文頭ですが,\topskip
由来のグルーがあります.これにより,(\topskip
が一行目の高さより長いという仮定のもとでは)\textheight
= <一行目のベースラインから最終行のベースラインまでの長さ> + \topskip
となります.35行にしたいので一行目のベースラインから最終行のベースラインまでの長さは34\baselineskip
です.
\setlength{\textheight}{\dimexpr 34\baselineskip + \topskip\relax}
中央配置になるように\topmargin
を設定します.本文はすべて同じフォントサイズの和文で敷き詰められているとしましょう.このとき,本文の入る部分の縦方向の長さは34\baselineskip + 1zw
となります.よって本文の前に(\paperheight - (34\baselineskip + 1zw))/2
の高さを入れればよいことになります.\topmargin
はヘッダまでの高さですから,\headheight
と
\headsep
を更に引きます.更に,\topskip
由来の空きである\topskip - \Cht
も引きます.(「本文はすべて同じフォントサイズの和文で敷き詰められている」という仮定から一行目の高さはさきほど設定した\Cht
です.)以上により次のようになります.
\setlength{\topmargin}{\dimexpr (\paperheight - (34\baselineskip + 1zw))/2 - \headheight - \headsep - \topskip + \Cht\relax}
最後に原点のずれを補正します.
\addtolength{\topmargin}{-1in}
\maxdepth
も設定しておきます.これは,本文最終行の深さの最大値で,本文最終行の深さがこの値を超えた場合,TeXは最終行の参照点を移動し,深さが\maxdepth
になるようにします.classes.pdfには\maxdepth + \topskip
がフォントサイズの1.5倍になるようにと書いてあるので,それに従います.
\setlength{\maxdepth}{\dimexpr 1.5zw - \topskip\relax}
脚注
脚注関連のパラメータを設定しておきます.
% 脚注一行目の最低高さである\footnotesepを指定する.大きくすると脚注間に空きが入る
{% 脚注での\baselineskipの0.7倍とする.
\footnotesize
\global\setlength\footnotesep{0.7\baselineskip}
}
% 本文と脚注との間の距離
\setlength{\skip\footins}{16pt plus 5pt minus 2pt}
% 本文と脚注との間に引かれる罫線を出力するための命令
\renewcommand{\footnoterule}{%
\kern -3pt
\hrule width .4\columnwidth height .4pt % \columnwidthは一段の長さ
\kern 2.6pt
}
% 脚注自身の出力をするときに呼び出されるマクロ.#1が脚注本文.
\newcommand{\@makefntext}[1]{%
\advance\leftskip by 3zw % 左に3文字分の空きを加える
\parindent 1zw
\noindent
% \@makefnmarkで脚注の番号を出力する.\llapは長さを0に見せかける命令.これがないと脚注番号が脚注本文に入り込む.
\llap{\@makefnmark\hspace{0.3zw}}#1%
}
縦書きの場合
縦書きの場合は次に注意します.
\marginpar
は本文の上下に出力されます.\marginparwidth
などはこの部分に対する設定です.\textwidth
は一行の長さ(縦方向),\textheight
は各ページの行送り方向の長さ(横方向)を表します.\headsep
は\topskip
の影響を受けません.(\topskip
は本文右端に入ります.)\footskip
は本文の最下端からフッタのベースラインまでです.\marginpar
により入る項目からではありません.
以上に注意して次のような設定をしてみましょう.
- 一段組.
- 一ページは25行.
- 一行は60文字.
\marginpar
により出力される分の一行の長さは5文字分.- 中央配置する.
\setlength{\marginparwidth}{5zw}
\setlength{\marginparsep}{1zw}
\setlength{\marginparpush}{0.5zw}
\setlength{\topskip}{1zw}
% ヘッダとフッタ
\setlength{\headheight}{1zw}
\setlength{\headsep}{1zw}% \topskipなどの寄与はないので素直でよい
\setlength{\footskip}{\dimexpr 1zw + \marginparwidth + \marginparsep + \Cht\relax}% \marginparの分を加えておく
% 横
\setlength{\textheight}{\dimexpr24\baselineskip + \topskip\relax}
% \oddsidemarginは紙面左端から最終行のベースラインまでの長さ.一行目と最終行のベースラインの間の長さを紙の長さから引き半分にする.
\setlength{\oddsidemargin}{\dimexpr(\paperwidth - \textheight + \topskip)/2\relax}
\addtolength{\oddsidemargin}{-1in}% 補正
\setlength{\evensidemargin}{\oddsidemargin}
% 縦
\setlength{\textwidth}{60zw}
\setlength{\topmargin}{\dimexpr (\paperheight - (\textwidth + \marginparwidth + \marginparsep))/2 - \headsep - \headheight\relax}
\addtolength{\topmargin}{-1in}
0 件のコメント:
コメントを投稿
コメントの追加にはサードパーティーCookieの許可が必要です