LaTeXで標準的に定義されている各種見出し\part
,\chapter
,\section
,\subsection
,\subsubsection
,\paragprah
,\subparagraph
の見た目を変更するパッケージとして,titlesecパッケージというのがある.
使い方
\usepackage{titlesec}
とする.
\documentclass{jsarticle}
\usepackage{titlesec}
\titleformat{\section}{\LARGE\itshape}{■\thesection}{1zw}{}
\begin{document}
\section{I Am a Cat}
どこで生れたかとんと見当がつかぬ。
\end{document}
\titleformat
書式の変更には,\titleformat
を使う.書式は次の通り.
\titleformat{<命令>}
[<特殊な形状の指定>]
{<書式>}
{<ラベル書式>}
{<ラベルと見出し文字列の間の空き>}
{<見出し文字列直前に入るコード>}
[<見出し直後に入るコード>]
「ラベル」というのは節番号などの部分です.たとえば\section{セクション}
とすると,「1 セクション」のように出ますが,この「1」の部分をラベル,「セクション」の部分を見出し文字列と呼んでいます.
\titleformat{\section} % \sectionを変更する
[hang] % 形状はhang(デフォルト値)
{\LARGE} % フォントサイズを\LARGEとする
{\fbox{\thesection}} % ラベルを枠で囲む(\thesectionにより明示的に出力をする必要がある)
{1zw} % ラベルと見出しとの間に全角一文字分の空白を入れる
{■} % 見出し文字列の前に■を入れる
[] % 後ろには何も入れない
書式内では,\filright
,\filcenter
,\filleft
,\fillast
を使うことができる.それぞれ見出しを左寄せ,中央寄せ,右寄せ,最後の行のみ中央寄せを行う.
「特殊な形状」は以下の通り.
hang
デフォルト値です.
\titleformat{\section}[hang]{\large\bfseries}{\thesection}{1zw}{}
block
見出し全体を一つの段落として扱う.
\titleformat{\section}[block]{\large\bfseries}{\thesection}{1zw}{}
display
ラベルと見出し文字列の間に改行を挟む.
\titleformat{\section}[display]{\large\bfseries}{\thesection}{1zw}{}
runin
同行見出し.(下のサンプルで太字でない部分は見出しに続く本文.)
\titleformat{\section}[runin]{\large\bfseries}{\thesection}{1zw}{}
leftmargin,rightmargin
それぞれ左余白と右余白に見出しを出す.以下で説明する\titlespacing
での調整が必要.
\titleformat{\section}[leftmargin]{\large\bfseries}{\thesection}{1zw}{}
\titlespacing{\section}{5zw}% 見出しの長さを5zwとする.
{0zw}
{1zw}% 見出しと本文との間を1zw空ける
drop,wrap
窓見出しっぽいのを作る.やっぱり\titlespacing
での調整が必要.dropは\titlespacing
で指定された長さを必ず見出しの長さとするが(見出しが短い場合は本文との間に空白が入る)wrapは見出し文字列の長さに応じて短くなる.
\titleformat{\section}[wrap]{\large\bfseries}{\thesection}{1zw}{}
\titlespacing{\section}{5zw}{0zw}{1zw}
見出し直後に改段落があると大変なことになります…….
frame
枠囲み.
\titleformat{\section}[frame]{\large\bfseries}{\thesection}{1zw}{}
\titlespacing
周りの空白などは\titlespacing
で指定する.書式は
\titlespacing{<命令>}
{<見出し左の空き(hang,block,display,frameの時)または見出しの長さ(その他)>}
{<見出し上の空き>}
{<見出しとその後の本文との空き>}% hang/block/display/frameとその他で方向が異なる
[<見出し右の空き>] % hang,block,display,frameのみ
となる.代わりに\titlespacing*
を使うと,見出し直後の本文のインデントを抑制する.
改ページ
\<見出し命令>break
が定義されていると,見出しの場所での改ページが行われる.たとえば
\newcommand{\sectionbreak}{\clearpage}
とすると,\section
の直前で改ページされる.
やりたい放題
\titleformat
で<書式>
と書いた第二引数,実際には「見出しの前に入る命令」なので,ここに色々書くと見出しの見た目をカスタマイズできる.例えば
\titleformat{\section}
{\vspace{3cm}\LARGE}% \vspace{3cm}を加えた
{\fbox{\thesection}}{1zw}{■}% 後はさっきと同じ
とすると見出しの前に3cmの空白が入る.さらに<ラベル書式>
,<見出し文字列直前に入るコード>
と<見出し直後に入るコード>
を組み合わせるとかなりやりたい放題になる.
もっとやりたい放題をするには,パッケージオプションにexplicit
を加える.これをすると,<見出し文字列直前に入るコード>
において,見出し文字列自身を#1
でとることができる.ただし,この場合自動的には見出し文字列が出力されなくなるので,<見出し文字列直前に入るコード>
で明示的に出力をする必要がある.
\documentclass{jsarticle}
\usepackage[explicit]{titlesec}
\titleformat{\section}{\LARGE}{}% 通常のラベル出力を無効化しておく
{0pt}{\fbox{#1} (\thesection)}% 見出し文字列を四角で囲み,その後にラベルを出力する
\begin{document}
\section{はじめに}
\end{document}
罫線
前節の要領でやりたい放題しようとすると,線とか引きたくなるかもしれない.titlesecパッケージは罫線を出力する\titlerule
とかいう命令を用意している.\titlerule
は行末まで罫線を引く.\titlerule[2pt]
というようにオプションで高さ(太さ)を指定もできる.*
をつけた\titlerule*
は,同じものの繰り返しで行末まで埋める.\dotfill
の中身変更できるバージョン.使い方は,\titlerule*[<並べるものの長さ>]{<並べるもの>}
とする.
いずれの命令も,その直前に\titleline[l]{<テキスト>}
をしておくと,<テキスト>
を含めて下線が引かれる.[l]
はテキストの配置指定で,l
は左寄せ.他には中央配置c
と右寄せr
.省略すると均等割的な感じになる.いくつか例.
\documentclass{jsarticle}
\usepackage[explicit]{titlesec}
\titleformat{\part}{\LARGE}{}{0pt}{\titleline[l]{\rule[-4pt]{.2cm}{1em}\hspace{.3zw}\thepart\hspace{1zw}#1}\titlerule}
\titleformat{\section}{\Large}{\thesection}{1zw}{\titleline[r]{#1}\titlerule}
\titleformat{\subsection}{\normalsize}{\thesubsection}{1zw}{\titleline[l]{#1}\titlerule*{/}}
\begin{document}
\part{ぱーと}
\section{せくしょん}
\subsection{さぶせくしょん}
\end{document}
0 件のコメント:
コメントを投稿
コメントの追加にはサードパーティーCookieの許可が必要です