koma-scriptを使ってみようかと.正確にはkoma-scriptについているカスタマイズ機能を使ってみようかと.というわけで見出しのカスタマイズ.
見出しは\RedeclareSectionCommand
で行うようだ.これは\renewcommand
に対応するのだが,\newcommand
,\providecommand
に対応する\DeclareNewSectionCommand
,\ProvideSectionCommand
もある.強制的に定義するのは\DeclareSectionCommand
.ちょっと注意しないとならないのがデフォルト値.各オプションはデフォルト値が決まっていたり,必須だったりするけど,既存の定義を上書きする場合には現在の定義にある値が使われる.例えば\RedeclareSectionCommand[]{section}
とすると,全てのオプションの値が現在の\section
のそれとして使われる.つまり,この指定は何もしていないのと同じ.
これらの命令の使い方はどれも同じで次のようにシンプル.
\RedeclareSectionCommand[attributes]{<見出し命令名>}
いやもちろんattributes
がkeyval形式でたくさんいろいろ受け付けてくれるんですが.以下は説明がないために挙動から想像している部分もあるので間違いを含む可能性がある.ちなみに見出し命令名のことをentry levelと呼ぶらしい.
まずは「スタイル」を指定する.キーはstyle
で,style=part
,style=chapter
,style=section
が指定できる.それぞれのスタイルは大体こんな感じ.
part
:scrreprtまたはscrbookの時は扉見出し.scrartclの時は直前で\cleardoublepage
される別行見出し.chapter
:scrreprtまたはscrbookの時は直前で\cleardoublepage
される別行見出し.scrartclの時は使えない.section
:直前に改行しない別行見出しまたは同行見出し.別行か同行かはオプションで指定する.
また,tocstyle
キーにより目次のスタイルも指定できる.目次のスタイルはまた別の命令で定義できる.省略すると「default」スタイルになる.このスタイルはさらにtocindent
とtocnumwidth
という二つのオプションを要求する.前者は目次でのインデント,後者は目次におけるラベル部分の長さ(多分).
スタイルごとに指定できるオプションは異なるが,以下は共通.
level
:必須.見出しのレベル.counterwithin
:カウンタ名を指定する.ここに指定したカウンタに従属した見出しとなる.\subsection
の番号は1.3みたいになっていて,この1の方はsection
カウンタの値なので\subsection
の定義にcounterwithin=section
を指定する,みたいなのだと思う.(実際のクラスファイル内ではそうはなっていないみたいだけど…….)expandopt
:true
またはfalse
を指定する.長さに関するオプションが全てその場で計算される.例えば1em
という値はそのときのフォントサイズに依存するが,このオプションが指定されていると見出しが定義されたそのときのフォントサイズにのみ依存して決まった値となる.デフォルトはfalse
.
また,ラベルの出力調整を\<見出し命令名>format
というコマンドを再定義することで行える.例えば\renewcommand{\sectionformat}{[\thesection]}
とすると[]で囲まれてラベルが出る.
指定できるオプション
part / chapter
指定できるオプションは変わらない.
beforeskip
:前空き.0pt
にすると(前の行にくっつくのではなく)自然に組まれたようになる.以下で述べるafterindent
がbysign
の時は絶対値が使われる.afterskip
:後空き.afterindent
:見出し直後の本文をインデントするか.true
かfalse
かbysign
.bysign
を指定すると,beforeskip
が正ならばインデントあり,そうでなければインデントなしとなる.prefixfont
:フォント設定コードを指定する.見出しのフォント.font
:フォント設定コードを指定する.見出し文字列のフォント.prefixfont
に上書きされる形で適用される.(つまり,{<prefixfont> <ラベル> {<font> <見出し文字列>}}
という形で適用される.innerskip
:寸法を指定する.ラベルと見出し文字列の間の空き.part + srcartclでは使えない.pagestyle
:見出しページでのページスタイル.part + srcartclでは使えない.
section
beforeskip
とafterskip
は必須.
beforeskip
:前空き.0pt
にすると(前の行にくっつくのではなく)自然に組まれたようになる.以下で述べるafterindent
がbysign
の時は絶対値が使われる.afterskip
:後空き.以下で述べるrunin
がbysign
の時は絶対値が使われる.afterindent
:見出し直後の本文をインデントするか.true
かfalse
かbysign
.デフォルトはbysign
で,これはbeforeskip
が正ならばインデントあり,そうでなければインデントなしとなる.runin
:同行見出しにするか.true
かfalse
かbysign
.デフォルトはbysign
で,これはafterskip
が正ならば別行見出し,そうでなければ同行見出しとなる.indent
:見出しのインデント.寸歩を指定.font
:フォント設定コードを指定する.見出しのフォント.
afterindent=bysign
かつrunin=bysign
の状態では\@startsection
と同じか?
\@startsection{<見出し命令名>}{<level>}{<indent>}{<beforeskip>}{<afterskip>}{<font>}
定義される命令
\DeclareSectionCommand{<name>}
は,\<name>
,\<name>mark
,\l@<name>
,カウンタ\<name>
を定義するほか,\<name>format
と\<name>markformat
いうコマンドも定める.
\なんとかlinesformat
とかいろいろ
なんだか紛らわしいのだが,とにかくこんな感じの名前の命令を再定義すると対応するスタイルの出力を変更できる.実際の命令は次の通り.
- partスタイルに対しては
\partlineswithprefixformat
. - chapterスタイルに対しては
chapterprefix
オプション(これはクラスオプション)がtrue
ならば\chapterlineswithprefixformat
で,そうれなければ\chapterlinesformat
. - sectionスタイルに対しては,別行見出しは
\sectionlinesformat
,同行見出しは\sectioncatchphraseformat
.
partとchapterに関しては,引数を三つとる命令として定義する必要があって,#1
が見出し名,#2
がラベル,#3
が見出し文字列を表す.ただ調整用の改行とか空きとかも入っているので,#2#3
はまとめて使った方がよさそう? 例えば次のようにすると見出しの出力が真ん中になる.
\renewcommand{\chapterlinesformat}[3]{\centering #2#3}
tcolorboxパッケージとかと併用すると見出しの枠囲みなんかも可能そう.
sectionに関しては引数が四つになる.#1
が見出し名,#2
がインデント量(擬似的な寸法レジスタ),#3
がラベル,#4
が見出し文字列を表す.
0 件のコメント:
コメントを投稿
コメントの追加にはサードパーティーCookieの許可が必要です