LaTeX入門 / 最初の例 / 簡単な数式 (1) / 簡単な数式 (2) / 各種パッケージの利用 / レポート / HTML と LaTeX の比較 / 複雑な数式 / 図表 / 図表の配置 / 相互参照とリンク / 文献引用 / 索引作成 / LaTeX マクロの作成 / スライドの作り方(jsarticle 編) / 応用的な使い方 / 発展編
LaTeX の機能を拡張したり,新たな機能を追加したりするために用いるのが「パッケージ」です。 既に TeX 入門では,簡単な数式(1) で amsmath, amssymb という数学用パッケージや newtxtext, newtxmath という Times 系フォント用パッケージを紹介しました。 他にも多数の便利なパッケージがありますので,目的別パッケージ簡易リファレンスを覗いてみてください。
この項では,LaTeX におけるパッケージとは何か,あるいはそれらの利用法について説明します。
例えば,多段組みを実現するために “multicol” というパッケージを利用するなら次のように記述します。
\documentclass{jlreq} \usepackage{multicol}
\begin{document}
ここは一段組み。
\begin{multicols}{3} ここは三段組み。 でも三段組みにするためにはもっと長い例文が必要なので,意味も無いことをここにだらだら書き連ねています。 このくらい書けば三段に分かれて組み上げられるでしょうか? \end{multicols}
\end{document}
このファイルのプリアンブル*1にある “\usepackage{multicol}” というのが,multicol パッケージを読み込む指示です。 multicol パッケージには multicols という環境の定義が書かれているので,本文中で “\begin{multicols}{3}” のようにして三段組みの機能を使用することができるのです。
パッケージは,具体的には以下のようなファイルから成ります。
LaTeX システムを一式インストールした場合は,標準的なパッケージも既に入っています。 C:\texlive\2023\texmf-dist\tex\latex のようなフォルダーや,そのサブフォルダーを探してみてください。
上記の multicol.sty であればコマンドラインから
kpsewhich multicol.sty
を実行すると
c:/texlive/2023/texmf-dist/tex/latex/tools/multicol.sty
のように表示されて multicol.sty の場所がわかります。 お使いのコンピュータの中の,LaTeX が見つけることのできる場所にパッケージファイルが置いてあれば,上記の “\usepackage” コマンドによって読み込むことができます。 \usepackage は,ファイルの拡張子は省いてあっても拡張子 .sty のファイルを読み込みます。
手元にないパッケージは外部から入手してインストールすることができます。 世界中に公開されているパッケージは CTAN サーバーからダウンロードできます。 あるいは,パッケージ作成者の方が個人のウェブサイトからダウンロードできるようにしているものもあります。 とはいえ,TeX Live の場合は相当数のパッケージがデフォルトでインストールされます。 このため,新たにパッケージを手作業でインストールする必要は以前に比べて少なくなりました。
何か使いたい機能があって Web で検索し、「hoge というパッケージを使ってください」と書かれていたら、まずは
\usepackage{hoge}
と書いてみましょう。 Web 上のあちこちで紹介されるような有名なパッケージであれば、たいていの場合は既にインストールされていますので、これで使えるようになります。 仮に
! LaTeX Error: File `hoge.sty' not found.
というエラーが発生したら、残念ながらパッケージがまだインストールされていないことを表します。 以下は追加でパッケージをインストールする必要が生じた場合に読めば結構ですので,いま必要ない場合はページ最上部の見出しから次の項目へお進みください。
ここでは,「sty ファイルと説明文書のみ」などの簡単なパッケージ例を挙げてそのインストール法を説明します。 フォント関連のパッケージなどはいろいろなファイルを適切に配置する必要がありますので,その場合は TeX のディレクトリ構成 を参照してください。
パッケージ本体(sty ファイル)が用意されていれば,LaTeX が見つけられる場所*2に sty ファイルを配置すれば完了です(説明文書が付属している場合は,これも配置するとよいでしょう)。
% 編集途中。TeX Live にも MiKTeX にも含まれていない,sty と説明の pdf を配布している実例を挙げると良さそう。なにかあるでしょうか。
パッケージ本体である sty ファイルが用意されておらず,代わりに dtx や ins といったファイルが用意されていることがあります。 この場合,dtx ファイルと ins ファイルによって本体を生成するというもう一手間が必要になります。
あとは sty ファイルが用意されている場合と同様に,一連の配置作業を行いましょう。
% 編集途中。TeX Live にも 含まれていない,dtx と ins はあって sty がないという実例を挙げると良さそう。なにかあるでしょうか。
% 以下に,従来書かれていた内容をそのまま残します。
パッケージ本体のファイル(“.sty”)だけでなく関連する他のファイルも一式あった方が良いでしょう。 それぞれ用意されていたり用意されていなかったりします。
関連のあるパッケージ群をひとまとめにして配布している場合などは,一つの dtx ファイルから複数のそれぞれ異なる名前の sty ファイルを生成することもあります。 目当ての sty ファイルが無い場合には,他の名前の dtx ファイルや ins ファイルを LaTeX で処理する必要があるかもしれません。 例えば,multicol.sty を生成するためには multicol.dtx および tools.ins が必要となります。
パッケージ本体である sty ファイルがあれば,それを LaTeX が見つけることのできる場所に保存すればインストールは完了です(注:下記「一覧表の更新 (mktexlsr) について」を参照)。
パッケージ本体である sty ファイルが無い場合には,他のファイルから生成します。 dtx ファイルと ins ファイルを同じフォルダーに保存した上で,LaTeX に ins ファイルを処理させます。 例えば multicol.sty を生成するにはコマンドラインから
latex tools.ins
を実行します。 tools.ins には,multicol.dtx を読み込んで multicol.sty を生成するような指示が書いてあるので,そのとおりに sty ファイルが生成されます。 このときに,説明文書や使用方法を示すサンプル文書が一緒に生成されることもあります。 無事に sty ファイルが生成されたら,それを LaTeX が見つけることのできる場所に保存すればインストールは完了です(注:下記「mktexlsr について」を参照)。
ファイル群は TDS (TeX Directory Structure) に従って各ディレクトリに入れないと,本体が使用不可だったり,texdoc コマンドで説明文書が読めなかったりします。 慣れないと,これが一番やっかいなところです。 LaTeX パッケージの場合,以下のように配置します:
$TEXMFLOCAL/doc/latex/packagename/
$TEXMFLOCAL/source/latex/packagename/
$TEXMFLOCAL/tex/latex/packagename/
詳細は TeX のディレクトリ構成 を参照してください。
dtx ファイルから説明文書を生成することもできます。 そのためには単に dtx ファイルを LaTeX で処理すればよいのです。 例えば multicol パッケージの説明文書が欲しければ
latex multicol.dtx
を実行します。 すると,通常の TeX 文書を処理したときと同様に multicol.dvi という dvi ファイルが生成されます。 これが説明文書です。
LaTeX がファイルを読み込むときは TeX のディレクトリの中から目当てのファイルを探しますが,ファイルを探すのはそれなりの時間がかかります。 そこで考え出されたのが「あらかじめファイルの一覧表を作っておき,ファイルを探すときにはそれを参照する」という仕組みで,この一覧表 (ls-R) を作るコマンドが mktexlsr です。 手元のシステムでこの一覧表を利用しているかどうかは,ls-R というファイルが存在するかどうかを調べるとわかります。
mktexlsrを実行して一覧表を更新しましょう。 Unix 系であれば管理者権限が必要ですので,
sudo mktexlsrとして実行します。
このようなパッケージファイルは自分で作ることもできますし,他人が作ったものをダウンロードすることもできます。 自分で作った場合は世界中に配布してもよいでしょう。 パッケージという項目に,パッケージの作り方・カスタマイズ法をまとめてあります。