• 検索結果がありません。

第 4 章 特記事項 57

5.1 新しいコマンド,環境,パッケージ

この冊子に書かれているコマンド は全て枠で囲ってあり,巻末の索引に書 かれていることに気付かれた人もいるでしょう.ここでは,このようなこと を行うのに必要なLATEXコマンド を直接書く代わりに,新しいコマンド や環 境を定義したパッケージファイルを作成して使用しています.この定義を用 いると,次のように簡単に書くだけでコマンド 名を枠で囲い,索引に出力す ることができます.

\begin{command}

\ci{dum}

\end{command}

\dum

この例では,コマンド 名の周りを枠で囲むcommandという新し い環境と,

コマンド 名を出力しそのコマンド 名を索引の見出しとして書き出す新しいコ マンド \ciが使用されています.実際に,この巻末にある索引で \dumコマ ンド を探してみて下さい.そうすれば \dumという項目を見つけることがで き,この\dumコマンドについて説明している全てのページ数が書かれている ことがわかるでし ょう.

コマンド を枠の中に入れて出力するのが イヤになれば ,違った出力となる

ようにcommand環境の定義を変えることが簡単にできます.これは,コマン

ド を枠で囲うようにLATEXコマンド を直接使用して出力を行った箇所を文書 中から全て探し 出し ,いちいち変更するよりもはるかに簡単に行うことがで きるのです.

665LATEXのカスタマイズ 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を持つファイルにコピーすればよいだけです.作成するパッ

685LATEXのカスタマイズ

% 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は,これまでに示した例の中で定義したコマンドを含んだパッケージの 例を示しています.