LaTeX自作表紙スタイルファイル
LaTeX で独自の表紙を作るスタイルファイルの考え方を説明します.ここでは,私が使っている OmegaCover_02.sty を例に,入力する情報,表紙の描画方法,使っているテクニック,作成時の注意点を示します.
目次
学校や会社で文書を作るときは,表紙の見た目や記載項目をそろえる必要があります.標準の \maketitle で足りる場合は,通常の表紙の作り方で十分です.文書番号,版数,承認欄,署名欄,改訂履歴などを毎回同じ形で出したい場合は,表紙専用のスタイルファイルを作ると便利です.
表紙スタイルファイルでは,「利用者が入力する情報」と「表紙の配置」を分けて考えます.利用者は \title や独自コマンドで値を入力し,スタイルファイル側で罫線,文字サイズ,ロゴ,署名欄などを配置します.これにより,複数の文書で同じ表紙を再利用できます.
OmegaCover_02.sty は,私が使っている表紙用スタイルファイルです.文書番号,版数,顧客名,件名,発行者,検認・照査・作成欄,概要,改訂履歴を 1 ページの表紙に配置します.表紙の後に目次を出し,本文のページ番号をアラビア数字の 1 から始める処理も含んでいます.
出力例
このスタイルファイルで作成した表紙の例を以下に示します.画像ファイルは sample_TeX/cover.svg です.
図1: OmegaCover_02.sty で作成した表紙の例
使い方
スタイルファイルを TeX ファイルと同じディレクトリー,または TeX が検索できるディレクトリーに置きます.その上で,本文ファイルのプリアンブルで読み込みます.このスタイルファイルでは \includegraphics と \url を使うため,graphicx と hyperref も読み込んでおくと安全です.
\documentclass[10pt,a4paper]{jsarticle}
\usepackage[dvipdfmx]{graphicx}
\usepackage[dvipdfmx,hidelinks]{hyperref}
\usepackage{OmegaCover_02}
\client{ABC 株式会社}
\job{新システム開発}
\classification{報告書}
\docnum{ABC-2026-001}
\docver{A}
\title{設計計算書}
\secondtitle{基本設計}
\date{2026年5月16日}
\company{株式会社オメガソリューションズ}
\division{技術部}
\authorname{山本昌志}
\email{sample@example.jp}
\tel{03-0000-0000}
\approval{山本}
\checked{佐藤}
\author{田中}
\maincontents{この文書では,設計条件,計算方法,計算結果を示す.}
\revdateA{2026年5月16日}
\revcontA{初版}
\begin{document}
\maketitle
\tableofcontents
\section{はじめに}
本文を書く.
\end{document}
このスタイルでは,通常の \author は表紙の「作成」欄に使われます.一般的な LaTeX の著者表示とは役割が異なるため,文書の発行者名には \authorname を使います.
設定できる内容
主な入力コマンドと表紙上の意味を以下に示します.値を設定してから \maketitle を実行すると,表紙に反映されます.
| コマンド |
内容 |
\client, \job |
顧客名と件名を設定します.表紙の上部に表示されます. |
\classification, \docnum, \docver |
文書種類,文書番号,版数を設定します.文書番号と版数は続けて表示されます. |
\title, \secondtitle, \date |
主題名,副題,発行日を設定します.主題名が長い場合は,文字サイズを段階的に小さくします. |
\company, \division, \authorname, \email, \tel |
文書発行者の会社名,部署,氏名,メールアドレス,電話番号を設定します. |
\approval, \checked, \author |
検認,照査,作成の各欄に表示する名前を設定します. |
\approvedsignature, \checkedsignature, \authorsignature |
検認,照査,作成欄に表示する署名画像を設定します.各画像の倍率は \approvedscale, \checkedscale, \authorscale で指定します. |
\maincontents |
表紙中央の概要欄に表示する文章を設定します. |
\revdateA - \revdateF, \revcontA - \revcontF |
A 版から F 版までの改訂日と改訂内容を設定します. |
\maketitle |
設定した値を使って表紙を作成します.このスタイルファイルでは標準の \maketitle を再定義しています. |
\tableofcontents |
目次を出力します.このスタイルファイルでは,目次をローマ数字のページ番号にし,本文をアラビア数字の 1 ページから始めるように再定義しています. |
使っているテクニック
OmegaCover_02.sty では,固定形式の表紙を作るために,LaTeX のマクロ定義と描画命令を組み合わせています.主なテクニックは以下です.
| テクニック |
内容 |
\def と \gdef |
利用者が入力した値を \@client や \@docnum などの内部マクロに保存します.\gdef を使うため,グループの内外に影響されず値が残ります. |
@ を含む内部マクロ |
表紙内部で使う値を \@title のような名前で管理しています..sty ファイル内では自然に使えますが,プリアンブルへ直接コピーする場合は \makeatletter と \makeatother が必要です. |
\maketitle の再定義 |
標準のタイトル出力を置き換え,独自の \@maketitle で表紙全体を描画しています. |
| picture 環境 |
\unitlength を 1 mm にして,\put,\line,\makebox,\parbox で罫線や文字を絶対位置に配置しています.申請書や報告書のように固定枠が必要な表紙に向いています. |
\settowidth と \ifdim |
タイトル幅を測り,長いタイトルでは 16 pt,14 pt,12 pt の順に文字サイズを変えます.枠からはみ出しにくくするための処理です. |
\ifx ... \undefined |
署名画像が設定されているかを調べます.未設定なら空欄にし,設定済みなら \includegraphics で画像を表示します. |
\newif |
\newif\iflabels で真偽値を用意しています.現在の表紙描画では使っていませんが,ラベル表示などの切り替えを追加するときに使える形です. |
\renewcommand{\tableofcontents} |
目次ページだけページ番号をローマ数字にし,目次の後で本文を 1 ページから始めるようにしています. |
\includegraphics と \url |
署名画像,ロゴ,URL 表示に使います.現在のスタイルファイルではロゴのパスが固定されているため,別の環境で使う場合はパスを変更する必要があります. |
表紙スタイルを自作するときは,入力用のコマンドとレイアウト用の命令を分けると保守しやすくなります.利用者が触るコマンドは短く分かりやすい名前にし,内部で使う値は \@... の形に分けて管理します.
新しく作るスタイルファイルでは,先頭にパッケージ情報を書き,必要なパッケージはスタイルファイル側で読み込むと親切です.現在の OmegaCover_02.sty は \usepackage を使っていますが,パッケージファイル内では \RequirePackage を使うのが一般的です.
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{OmegaCover_02}[2026/05/16 custom cover style]
\RequirePackage{graphicx}
\RequirePackage{type1cm}
\RequirePackage{fancyhdr}
\RequirePackage{url}
また,初期値を用意しておくと,入力漏れがあってもエラーになりにくくなります.たとえば \client{} を指定し忘れても空欄で出力できるように,スタイルファイル内で既定値を定義しておくと安全です.利用者向けの新しいコマンドを作る場合は,単純な定義なら \newcommand,既存コマンドを変更する場合は \renewcommand を使います.より新しい書き方では \NewDocumentCommand も使えます.
固定形式の表紙では,数値座標で配置する picture 環境が扱いやすいです.ただし,紙面サイズや余白が変わると位置がずれます.そのため,A4 縦など対象を決めてから作り,別の用紙で使う場合は座標を見直します.ロゴや署名画像のパスは,できるだけ文書からの相対パスにすると移植しやすくなります.