縦書き
縦書きにするならばこのあたりで\tate
を実行しておきます.
\tate
\AtBeginDocument{%
\tate\message{《縦組モード》}% お約束?
\adjustbaseline % 欧文と和文の中央を一致させるようにパラメータを設定し直す.
}%
文字サイズ変更命令の定義
\large
のような文字サイズの変更を行う命令を定義します.まずは通常のフォントサイズに変更する\normalsize
です.
\renewcommand{\normalsize}{%
\@setfontsize\normalsize{10pt}{16pt}%
\abovedisplayskip=11pt plus 3pt minus 4pt
\abovedisplayshortskip=0pt plus 3pt
\belowdisplayshortskip=9pt plus 3pt minus 4pt
\belowdisplayskip=\abovedisplayskip
\let\@listi\@listI
}
\@setfontsize{<フォントサイズ変更命令>}{<フォントサイズ>}{<行送り>}
でフォントサイズの変更をします.なお,フォントサイズ10ptといっても実際にはJFMが等倍でないことや\DeclareFontShape
で指定したフォントの拡大率の影響で,10ptの和文フォントになるとは限りません.その次の四行は数式の前後の空きの設定です.最後の\let\@listi\@listI
はenumerate環境の定義の段階で説明します.
早速定義した\normalsize
を実行し,またpLaTeXで定義されている寸法レジスタを設定します.これらはクラスファイル内で値を与えることになっています.
\normalsize
\setbox0\hbox{阿}% JFM内でクラス0の文字ならば何でもよい
\setlength\Cht{\ht0}
\setlength\Cdp{\dp0}
\setlength\Cwd{\wd0}
\setlength\Cvs{\baselineskip}
\setlength\Chs{\wd0}
そのほかの文字サイズ変更命令を定義していきます.値は例によってjsarticleのものです.
\newcommand{\small}{% abstractとかで使われる
\@setfontsize\small{9pt}{13pt}%
\abovedisplayskip=9pt plus 3pt minus 4pt
\abovedisplayshortskip=0pt plus 3pt
\belowdisplayskip=\abovedisplayskip
\belowdisplayshortskip=\belowdisplayskip
\def\@listi{%
\leftmargin=\leftmargini
\topsep=0pt
\parsep=0pt
\itemsep=\parsep
}%
}
\newcommand{\footnotesize}{% 脚注の文字サイズ
\@setfontsize\footnotesize{8pt}{11pt}%
\abovedisplayskip=6pt plus 2pt minus 3pt
\abovedisplayshortskip=0pt plus 2pt
\belowdisplayskip=\abovedisplayskip
\belowdisplayshortskip=\belowdisplayskip
\def\@listi{%
\leftmargin\leftmargini
\topsep=0pt
\parsep=0pt
\itemsep=\parsep
}%
}
\newcommand{\scriptsize}{\@setfontsize\scriptsize{7pt}{8pt}}
\newcommand{\tiny}{\@setfontsize\tiny{5pt}{6pt}}
\newcommand{\large}{\@setfontsize\large{12pt}{17pt}}
\newcommand{\Large}{\@setfontsize\Large{14pt}{21pt}}
\newcommand{\LARGE}{\@setfontsize\LARGE{17pt}{25pt}}
\newcommand{\huge}{\@setfontsize\huge{20pt}{28pt}}
\newcommand{\Huge}{\@setfontsize\Huge{25pt}{33pt}}
\large
あたりは見出しで使われることが多いです.jsarticleにはさらに大きな文字サイズに変更する\HUGE
がありますが,これは標準クラスファイルにはありませんので,ここでも定義はしません.
\set@fontsize
の書き換え
通常の日本語組版の要件に合わせて
- 段落先頭の空き(
\parindent
)は全角一文字分 - 和文文字と欧文文字の間の空き(
\xkanjiskip
)は0.25文字分(いわゆる「四分空き」)
\@setfontsize
にその処理を追加してもよいのですが,この命令は\fontsize
による変更の際に呼び出されないので,代わりに\set@fontsize
を書き換えておきます.
\set@fontsize
は内部で\size@update
という命令を定義し,実際の文字サイズの変更は\size@update
が実行された時に行われます.従って,\size@update
の後に\parindent
や\xkanjiskip
を変更するようにします.ついでに\kanjiskip
も変更してしまいましょう.latex.ltx内の\set@fontsize
の定義を参考にしつつ,次のようにしてみます.
\let\mycls@original@set@fontsize=\set@fontsize % オリジナルの\set@fontsizeを保存.他のパッケージなどとバッティングしないために接頭辞\mycls@をつける
\def\set@fontsize#1#2#3{%
\mycls@original@set@fontsize{#1}{#2}{#3}%
\expandafter\def\expandafter\size@update\expandafter{\size@update % \size@updateの末尾にマクロを追加する定型文
\ifdim\parindent=0pt \else\parindent=1zw \fi % 意図的に\parindent=0ptとすることもあるので,そうでないときのみ更新する
\kanjiskip=0zw plus .1zw minus .01zw % jsarticleの値
\xkanjiskip=0.25zw plus 0.25zw minus 0.125zw
}%
}
\normalsize % これで\parindent等が更新される
LuaTeX-jaの場合
LuaTeX-jaにおける(x)kanjiskipの設定は\ltjsetparameter
を通じて行います.が,高速化のために用意されている方法があるので,そちらを利用します.
\let\mycls@original@set@fontsize=\set@fontsize
\def\set@fontsize#1#2#3{%
\mycls@original@set@fontsize{#1}{#2}{#3}%
\expandafter\def\expandafter\size@update\expandafter{\size@update
% zwを\zwにしなければならない
\ifdim\parindent=0pt \else\parindent=1\zw \fi
\ltj@setpar@global
\ltjsetkanjiskip 0\zw plus .1\zw minus .01\zw
\ltjsetxkanjiskip 0.25\zw plus 0.25\zw minus 0.125\zw
}%
}
行間等に関するパラメータの設定
行間 / 文字サイズに関係するパラメータを設定しておきます.値はjarticleからですが,ほぼ常にこのような値になるかと思います.
\setlength{\lineskip}{1pt}% 行間の最低空き
\setlength{\normallineskip}{1pt}% 保存用\lineskip.
\setlength{\parskip}{0pt plus 1pt}% 段落館の空き
\renewcommand{\baselinestretch}{} % 行間の拡大率.拡大しない場合は空にしておく.
\@lowpenalty=51 % 小さいpenalty(汎用的に使われる)
\@medpenalty=151 % 中くらいのpenalty
\@highpenalty=301 % 大きめのpenalty
0 件のコメント:
コメントを投稿
コメントの追加にはサードパーティーCookieの許可が必要です