第 4 章 特記事項 57
5.1 新しいコマンド,環境,パッケージ
この冊子に書かれているコマンド は全て枠で囲ってあり,巻末の索引に書 かれていることに気付かれた人もいるでしょう.ここでは,このようなこと を行うのに必要なLATEXコマンド を直接書く代わりに,新しいコマンド や環 境を定義したパッケージファイルを作成して使用しています.この定義を用 いると,次のように簡単に書くだけでコマンド 名を枠で囲い,索引に出力す ることができます.
\begin{command}
\ci{dum}
\end{command}
\dum
この例では,コマンド 名の周りを枠で囲むcommandという新し い環境と,
コマンド 名を出力しそのコマンド 名を索引の見出しとして書き出す新しいコ マンド \ciが使用されています.実際に,この巻末にある索引で \dumコマ ンド を探してみて下さい.そうすれば \dumという項目を見つけることがで き,この\dumコマンドについて説明している全てのページ数が書かれている ことがわかるでし ょう.
コマンド を枠の中に入れて出力するのが イヤになれば ,違った出力となる
ようにcommand環境の定義を変えることが簡単にできます.これは,コマン
ド を枠で囲うようにLATEXコマンド を直接使用して出力を行った箇所を文書 中から全て探し 出し ,いちいち変更するよりもはるかに簡単に行うことがで きるのです.
66 第5章 LATEXのカスタマイズ 5.1.1 新しいコマンド の作成
新たにコマンド を作成するには,以下のコマンド を使用し ます.
\newcommand{name}[num]{definition}
基本的に,このコマンドは二つの引数を取ります.一つは作ろうとしているコ マンド 名nameであり,もう一つはそのコマンド の定義を書き込むdefinition です.ブラケット( 角括弧,[ ])の中に書かれる引数numはオプション引 数であり,この新しいコマンドが取る引数の数(9までの数が可能)を指定し ます.このオプションが指定されていなければ ,引数は0すなわち引数がな いことを表し ます.
以下の二つの例は,コマンド 定義の方法とその使い方を示しています.最 初の例は,\tnssという名前の新しいコマンドを定義しています.これは,こ の冊子のオリジナル英文の表題である“The Not So Short Introduction to
LATEX 2ε”という文字列を定義したものです.このようなコマンドは,文書中
に何度も何度も繰り返し同じ 文字列を書かなければならないときに使用する と便利でしょう.
\newcommand{\tnss}{The not so Short Introduction to
\LaTeXe}
This is ‘‘\tnss’’ \ldots{}
‘‘\tnss’’
This is “The not so Short Introduction to LATEX 2ε” . . . “The not so Short Introduc-tion to LATEX 2ε”
次の例は,引数を一つ取る新しいコマンド の定義を示したものです.#1の文 字列の部分は,コマンドを使用する際に指定する引数に置き換えられます.も し二つ以上の引数を使用したければ,#2などというように書けばよいのです.
\newcommand{\txsit}[1]
{This is the \emph{#1} Short Introduction to \LaTeXe}
% 文章本体:
\begin{itemize}
\item \txsit{not so}
\item \txsit{very}
\end{itemize}
• This is the not so Short Introduction to LATEX 2ε
• This is thevery Short Introduction to LATEX 2ε
LATEXでは,すでに存在しているコマンド と同じ 名前を持つ新しいコマン ド を作ることはできません.そこで既存のコマンド を再定義する時のために,
特別な\renewcomanndコマンドがあります.このコマンドは,\newcommand コマンド と同じ方法で使用することができます.
また,\providecommandコマンド を使いたくなることがあるかもしれませ ん.このコマンド も\newcommandと同じなのですが,すでに同名のコマンド が存在しているときには,LATEX 2εはその定義を無視して処理を続けるとこ ろが異なります.
5.1 新しいコマンド,環境,パッケージ 67 LATEXコマンド の直後のホワイト スペースについては,注意すべき点がい
くつかあります.詳しくは,6ページを参照して下さい.
5.1.2 新しい環境の作成
\newcommandコマンド と同じように,必要な環境を作り出すコマンド とし て \newenvironmentがあります.\newenvironmentコマンド は,以下のよ うにして使用します.
\newenvironment{name}[num]{before}{after}
\newcommandコマンドと同様に,\newenvironmentもオプション引数が指定 できます.引数beforeには,環境内の文章を処理する前に行う内容を定義し ます.引数afterには,\end{name}コマンドが現れたときに行う処理内容を 定義します.
以下に \newenvironmentコマンド の使用例を示します.
\newenvironment{king}
{\rule{1ex}{1ex}%
\hspace{\stretch{1}}}
{\hspace{\stretch{1}}%
\rule{1ex}{1ex}}
\begin{king}
My humble subjects \ldots
\end{king}
My humble subjects. . .
引数numは,\newcommandコマンドと同じように使用します.LATEXでは,
すでに存在している環境と同じ 名前の環境は定義できません.すでに存在し ている環境を変更したいときには,\renewenvironmentコマンドを使用しま す.定義の仕方は,\newenvironmentコマンド と同じです.
ここで示し た例で使用しているコマンド については,後ほど 説明し ます.
\ruleコマンドについては73ページ,\stretchコマンドについては73ペー ジ,\hspaceコマンド に関しては73ページを参照して下さい.
5.1.3 パッケージの作成
新たにたくさんの環境とコマンド を定義すると,文書のプ リアンブルはと ても長くなってし まいます.このような場合,定義したすべてのコマンド と 環境を含んだLATEXパッケージを新たに作成するとよいでし ょう.そうすれ ば ,\usepackageコマンド を使用するだけで,作成中の文書でそれらの定義 が使用できるようになります.
パッケージの作成は,基本的に文書のプリアンブルに書いてあった定義内容 を,拡張子.styを持つファイルにコピーすればよいだけです.作成するパッ
68 第5章 LATEXのカスタマイズ
% Tobias Oetikerによるパッケージの例
\ProvidesPackage{demopack}
\newcommand{\tnss}{The not so Short Introduction to \LaTeXe}
\newcommand{\txsit}[1]{The \emph{#1} Short Introduction to \LaTeXe}
\newenvironment{king}{\rule{1ex}{1ex}hspace{\stretch{1}}}%
{\hspace{\stretch{1}}\rule{1ex}{1ex}}
図 5.1: パッケージの例 ケージの最初には,以下のコマンド を書いておきます.
\ProvidesPackage{package name}
\ProvidesPackageコマンドは,LATEXにパッケージ名を伝え,パッケージを 二度読み込もうとした際に気の利いたエラーメッセージを出力してくれます.
図5.1は,これまでに示した例の中で定義したコマンドを含んだパッケージの 例を示しています.