パッケージ・クラス作成

同じマクロを毎回プリアンブルに書いているなら、自分の パッケージ\usepackage で読む .sty ファイル)や クラス.cls)にまとめましょう。このページは、その骨格——自己申告の行、オプションの受け取り、依存パッケージの読み込み——と、パッケージとクラスの違いを示します。

スタイルファイル(.sty)の骨格

パッケージはプロジェクト内(または導入済み)の .sty ファイルです。先頭で自分が何者かを申告し、続けてマクロを定義します。\NeedsTeXFormat{LaTeX2e} が必要フォーマットを宣言し、\ProvidesPackage{名前}[日付 バージョン 説明] がパッケージ名と版を申告します(名前はファイルの basename と一致させる。日付はログに出て、版チェックにも使われます)。あとは \newcommand\newenvironment で中身を定義します。

latex
% mypackage.sty
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{mypackage}[2026/01/01 v1.0 My helpers]
\newcommand{\hello}{こんにちは、\LaTeX!}

依存パッケージを読み込む — \RequirePackage

.sty の中で他のパッケージに依存するなら、\RequirePackage{...} を使います——これは .sty 内における \usepackage 相当です。たとえば色を使うなら xcolor、作図なら tikz を読み込みます。オプション処理がその機能に依存する場合は \ProcessOptions より前に、そうでなければ後に置きます。

latex
\RequirePackage{xcolor}

オプションを受け取る — \DeclareOption

\usepackage[オプション]{名前} のように受け取るには、各オプションを \DeclareOption{オプション}{コード} で宣言し、未知のオプションは \DeclareOption*{...} で捕まえ(警告を出す、あるいは読み込んだクラスへ渡すなど)、最後に \ProcessOptions\relax で処理を確定します。key=value 形式のオプションがほしいときは、モダンな \DeclareKeys(l3keys)や kvoptions パッケージを使います。

latex
\DeclareOption{color}{\renewcommand\hello{\textcolor{red}{こんにちは}}}
\DeclareOption*{\PackageWarning{mypackage}{Unknown option '\CurrentOption'}}
\ProcessOptions\relax

クラス(.cls)との違い

クラス.cls ファイル(\ProvidesClass で申告)で、文書全体の種類を定義します。\documentclass で読み込み、1 文書につき 1 つだけ。多くは \LoadClass{article} のように既存クラスを土台にします。一方 パッケージ.sty)は機能を上乗せするもので、いくつでも 読み込めます。申告やオプション処理の仕組みはほぼ同じです。クラス作成そのものは専用ページで扱います。