LaTeXでシナリオ同人誌:titlesecパッケージと画像での見出し修飾
変えてみたい 君のすべて 想い出も消して
EGOISTと言わないでよ 恋は手さぐりの夢
(米米CLUB「俺色にそまれ」より)
君のすべて(ドキュメントクラスファイル)を変えるのは難しいので、titlesecパッケージを使ってちまちまと見出しスタイルを変えるべく手さぐりしていきたいと思います。
titlesecパッケージを使う
こちら。LaTeXの各種見出し(\chapterとか\sectionとか)の見た目を変更するパッケージです。
兄弟にtitleps(ページスタイルの見た目変更)、titletoc(目次の見た目変更)がいるようです。つまり前回のヘッダ書き換えは実はtitlepsを使えば良かったんですよ……。
下準備として\usepackage{titlesec}を記述するだけで使えます。
とりあえず\titleformatを把握しておけばOK。
\titleformat
{見た目を変更する見出し種類(\chapterとか\subsectionとか)}
[見出しのタイプの指定。titlesec側で枠付きや窓見出しを用意してくれている]
{見出し全体の書式の指定}
{ラベルのコード}
{ラベルと見出し文字列の間の空白の大きさ}
{見出し文字列の前のコード}
[見出し文字列の後のコード]
詳しい解説サイトはたくさんあるのでざっくり。
公式の説明書にくっついているサンプルをちょっと改変するだけでも、それっぽい感じにできました。すてき。
基本的にラベル(第○章とか)は表示させないので、該当部分は空白にしています。表示させる場合は\thesectionなどを書き込む必要があります。
\titleformat{\section} %\sectionを変更する
[frame] % 形状はframe(枠付きで表示される)
{\large\bfseries} %フォントサイズはlargeでちょっと大きく、太字に
{} %ラベルは表示しない
{0zw} %ラベルと見出しとの間に空白なし(指定すると文字と枠の間が全体的に広がってしまうので、今回は0)
{\hspace{4pt}} %見出し文字列の前にちょっぴり空白(字下げ)を入れる
[\vspace{-8pt}] %隙間の大きさが気になるので、以下の表示を少し詰める
\titleformat{\subsection} %\subsectionを変更する
[hang] % 形状はhang(デフォルト値)
{\normalsize\bfseries} %フォントサイズはノーマルで太字
{} %ラベルは表示しない
{0zw} %ラベルと見出しとの間に空白なし
{●\hspace{4pt}} %見出し文字列の前に●を入れる
[\titlerule] %下線を引く
\titleruleはtitlesecパッケージで用意されている命令文で、罫線を表示します。
画像で見出しを修飾する
ここで思うわけです。
「{見出し文字列の前のコード}と[見出し文字列の後のコード]に画像表示コードをぶち込めば、画像で見出しを修飾できるのでは……?」
ざっと検索しても解説してくれているサイトがないので、とりあえず雑にやってみます。
素材サイトのフレームデザイン様から素敵な枠デザインをお借りしまして、画像編集ソフトで上下に分割して保存。
この上下枠で、見出しをシャレオツに挟んで表示したいところ。overleafにアップロードして、\includegraphicsで読み込めばよいのでお手軽です。
余談ですが、最近はeps形式じゃなくてpngとかjpgがそのまま使えるんですね。圧倒的HAPPY。
\usepackage{graphicx} %画像を使用するためのパッケージ
\titleformat{\chapter} %\chapterを変更。形状はデフォルトのhang
{\bfseries \HUGE \filcenter} %でかい文字で太字、中央寄せ
{} %ラベルは表示しない
{0zw} %ラベルと見出しとの間に空白なし
{
\includegraphics[width=70mm]{img/frame_chap_t.png}\\
\vspace{-3mm} %位置の微調整
\titlerule \vspace{2pt} \titlerule %二重線
\vspace{4mm} %タイトルまで空白
}
[
\vspace{3mm} %タイトルまで空白
\titlerule \vspace{2pt} \titlerule %二重線
\includegraphics[width=70mm]{img/frame_chap_b.png}
]
こうだ!!!ドン!!!
ごめんて。
画像で見出しを修飾する(再チャレンジ)
なぜエラーが出るのか……?
どうやら一番最後の\includegraphics[width=70mm]{img/frame_chap_b.png}が悪さをしているようです。単に\includegraphics{img/frame_chap_b.png}なら問題ない(大きすぎてはみ出すけど)ので、[]の中に[]を入れるのが駄目という判定になる模様。\includegraphicsのオプションと干渉してるみたいですね……。
しかし、仕様の穴を突いてあれこれするのは我ら底辺プログラマの常套手段です。[]の中で[]を使わないようにだけすればよい。書式だけの問題なのであれば、\newcommandで[]のいらない新しい命令文を作って、処理をその中に投げてしまえばよいこと。
つまり、こうです。
\usepackage{graphicx} %画像を使用するためのパッケージ
\titleformat{\chapter} %\chapterを変更。形状はデフォルトのhang
{\bfseries \HUGE \filcenter} %でかい文字で太字、中央寄せ
{} %ラベルは表示しない
{0zw} %ラベルと見出しとの間に空白なし
{
\includegraphics[width=70mm]{img/frame_chap_t.png}\\
\vspace{-3mm} %位置の微調整
\titlerule \vspace{2pt} \titlerule %二重線
\vspace{4mm} %タイトルまで空白
}
[
\vspace{3mm} %タイトルまで空白
\titlerule \vspace{2pt} \titlerule %二重線
\chapgraph %下のフレーム画像を表示 ◆内容は下で定義◆
]
\newcommand{\chapgraph}{
\includegraphics[width=70mm]{img/frame_chap_b.png}
}
ドン!!!
できちゃいましたよ。ビューティフォー……。
これで、すべてのchapterが自動的に修飾されて表示されるようになりました。
まとめ
見た目が良くなっただけで、けっこうできてきた錯覚に陥りますね。へへへ……。
かなりLaTeXと和解できてきた気がします。 pic.twitter.com/SwJj5PHpf0
— Komuda(小牟田) (@K0muda) October 4, 2019