レッスン 6

複数のパッケージを読み込む

複数のパッケージを同時に読み込むため、\usepackageコマンドにはパッケージ名のカンマ区切りリストを与えることができます(例えば\usepackage{color,graphicx})。パッケージオプションを指定した場合は、リスト内の各パッケージに対してそれらのオプションが適用されます。ただし個別にパッケージ読み込みを行ったほうがコメントアウトするのも簡単なので、このチュートリアルではパッケージは1行に1つ読み込む方針を貫きます。

babelパッケージ

メインレッスン6ではbabelパッケージを利用すると異なるハイフネーションパターンを選択できるということを説明しました。選択した言語によっては、ハイフネーションパターンの以外にもさまざまな設定の適用が行われます。例えばドイツ語の場合には「ソフト」ハイフンを挿入するための短いコマンドが定義されたり、ドイツ語キーボードがなくても簡単にウムラウトを入力する方法が提供されたりします。また\tableofcontentsで出力される目次の見出し名がドイツ語の“Inhaltsverzeichnis”に変更されている点にも注意してください。

% !TEX program=pdflatex
\documentclass{article}
\usepackage[T1]{fontenc}

\usepackage[ngerman]{babel} % Notice that the option name is 'ngerman'

\begin{document}

\tableofcontents

\section{"Uber "Apfel und Birnen}

\subsection{Äpfel}
Äpfel sind rot.

\subsection{Birnen}
Birnen sind gelb.

\end{document}

また別の言語ではデザインが変更される場合もあります。例えば、伝統的なフランス語組版では:などのパンクチュエーション記号の前にスペースをおきます。frenchオプション付きでbabelパッケージを読み込んでいる場合、このスペースが自動的に挿入されるようになります。

グローバルオプション

あるオプションを読み込むすべてのパッケージに対して適用したいという場合には、そのオプションを\documentclassに対して与えます。すべてのパッケージはこのグローバルオプションを「確認」します。例えば、使用言語をすべてのパッケージに伝えるためには、次のようにします:

% !TEX program=pdflatex
\documentclass[ngerman]{article} % オプション名は 'ngerman' である点に注意
\usepackage[T1]{fontenc}

\usepackage{babel}

\begin{document}

\tableofcontents

\section{"Uber "Apfel und Birnen}

\subsection{Äpfel}
Äpfel sind rot.

\subsection{Birnen}
Birnen sind gelb.

\end{document}

コマンド定義の応用

\newcommandを用いると最大で9個の引数を取るコマンドを作ることができます。このうち最初の引数はオプション引数にすることも可能です。

メインレッスンのコード例を拡張することを考えるなら、キーワードの色を変更可能(デフォルトは青)にすることができます。

\RequirePackage{plautopatch}
\documentclass[dvipdfmx]{jlreq}
\usepackage{xcolor}

\newcommand\kw[2][blue]{\textcolor{#1}{\gtfamily #2}}

\begin{document}

\kw{リンゴ}と\kw{みかん}についての何らかの論述。

\end{document}

オプション引数は[]で囲うことで表され、もし省略された場合には定義時に指定されたデフォルト値が用いられます。

\NewDocumentCommand

2020年10月のLaTeXリリース以降は、拡張されたコマンド定義システムが利用可能になりました。それ以前のLaTeXでも、このシステムはxparseパッケージにより利用可能でした(互換性のため、ここでもxparseパッケージを読み込むコード例を示します)。

上のコード例を、\NewDocumentCommandを用いて書き直すと次のようになります。

\RequirePackage{plautopatch}
\documentclass[dvipdfmx]{jlreq}
\usepackage{xparse}
\usepackage{xcolor}

\NewDocumentCommand\kw{O{blue} m}{\textcolor{#1}{\gtfamily #2}}

\begin{document}

\kw{リンゴ}と\kw{みかん}についての何らかの論述。

\end{document}

\newcommandの場合と同様に、\NewDocumentCommandは定義するコマンド名(ここでは\kw)と定義本体(引数は#1から#9で表現されます)を受け取ります。しかし、引数仕様の表現の仕方が大きく異なります。

\newcommandでは単に引数の数(および場合によっては最初のオプション引数のデフォルト値)を与えていましたが、\NewDocumentCommandは1つ1つの引数が1つの文字で表現されます。つまり、2つの引数を取るコマンドの引数仕様は[2]ではなく{mm}のように表現されます。こうした表現方法はいくらか冗長ですが、多様な形態のコマンド定義を可能にします。上記のコード例はシンプルながらそうした事例の1つになっています:最初の引数はデフォルト値がblueのオプション引数(O{blue})で、2つ目は必須の引数です(m)。