スタイルファイルとは、LaTeX のマクロパッケージのことで、ドキュメントクラス(.cls)やパッケージ(.sty)もその一種です。スタイルファイルを使うことで、同じコマンドを複数の文書で使い回せるようになります。
筆者の環境は TeXLive 2020 です。
書き方
jsclasses1などは、Docstrip というプログラムを使って、
- コードに説明が付いた
.dtxファイルを作成 .dtxファイルをコンパイルして、説明付き PDF と.styファイルを出力
のようにして作成されています。しかし、このやり方は複雑なので、.styファイルを直に書く方法を紹介します。
スタイルファイルの中身はプリアンブルと同じように書くことができますが、\makeatletterや\makeatotherを書く必要はありません。
以上の事を踏まえたスタイルファイルは次のようになります。
% パッケージの読み込み
\usepackage{graphicx}
% jlreqの見出しをカスタマイズ
\NewBlockHeading{section}{1}{%
font={\normalfont\fontsize{32Q}{32H}\bfseries},
before_space=0mm,
after_space=8mm,
align=left
}
このスタイルファイルをパッケージとして呼ぶには、このスタイルファイルを使いたいソースのプリアンブルに、
\usepackage{mypkg}
のように書きます。
スタイルファイル向けのコマンド
スタイルファイルで使うと便利、もしくは使われてるのを見かけるコマンドです。
\NeedsTeXFormat{LaTeX2e}2
必要な LaTeX の形態としてLaTeX2eを指定します。LaTeX2eの代わりにpLaTeX2eなどを指定することもできます。\ProvidesPackage{<パッケージ名>}[<日付>]
パッケージの名前を定義します。<日付>より LaTeX のバージョンが古い場合に警告を出すことができます。<日付>は、2020/12/28のように指定します。\ProvidesClass{<クラス名>}[<日付>]
クラスの名前を定義します。他は\ProvidesPackageと同じです。\LoadClass[<オプション>]{<クラス名>}
クラスを読み込みます。自分用のクラスを作る時に便利で、これを使うと最初の例は以下のようになります。\LoadClass{jlreq} \RequirePackage{graphicx} \NewBlockHeading{section}{1}{% font={\normalfont\fontsize{32Q}{32H}\bfseries}, before_space=0mm, after_space=8mm, align=left }\documentclass{mycls}\endinput
この命令よりも後の記述を無視します。
さらに詳しい内容を知りたい方は、クラス・パッケージ作者のためのLaTeX 2ε(抄訳)を読んでみてください。
TeX Liveに認識させる
スタイルファイルを作っただけでは、そのディレクトリ3以外で使うことが出来ません。そこで、TeX Live に認識させます。
TeX Live でユーザーのスタイルファイルを入れるディレクトリは$TEXMFLOCAL/tex/latex/、すなわちtexlive/texmf-local/tex/latex/です4。手順は以下のようになります。
- 前述のディレクトリにファイルを保存もしくはシンボリックリンクを作成
- コマンドラインにて
mktexlsrを実行(管理者権限が必要5)
参考資料
- LaTeX2e 美文書作成入門[改訂第 7 版]
- 独習 LaTeX2e
- TeX Live ガイド 2020
- LaTeX2e unofficial manual
この記事は以下のシリーズの一部です。
https://zenn.dev/hirospark/scraps/549a0863ca408d