next up previous
: 7.2 フォントの種類とそのサイズ : 7. LATEXのカスタマイズ : 7. LATEXのカスタマイズ


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

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


\begin{example}
\begin{command}
\texttt{\symbol{'134}dum}
\end{command}\end{example}

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

コマンドを枠の中に入れて出力するのがイヤになれば, 違った出力となるようにcommand環境の定義を 変えることが簡単にできます. これは,コマンドを枠で囲うようにLATEXコマンドを 直接使用して出力を行った箇所を文書中から全て探し出し, いちいち変更するよりもはるかに簡単に行うことができるのです.

7.1.1 新しいコマンドの作成

新たにコマンドを作成するには,以下のコマンドを使用します.


\begin{command}
\texttt{\symbol{'134}newcommand}\verb*\vert{\vert%%
\emph{name}...
...vert\emph{num}\verb*\vert]{\vert\emph{definition}\verb*\vert}\vert
\end{command}

基本的に,このコマンドは二つの引数を取ります. 一つは作ろうとしているコマンド名nameであり, もう一つはそのコマンドの定義を書き込むdefinitionです. ブラケット(角括弧,[ ])の中に書かれる引数 numはオプション引数であり,この新しいコマンドが取る 引数の数(9までの数が可能)を指定します. このオプションが指定されていなければ, 引数は0すなわち引数がないことを表します.

以下の二つの例は,コマンド定義の方法とその使い方を 示しています. 最初の例は,\tnssという名前の新しいコマンドを 定義しています. これは,この冊子のオリジナル英文の表題である ``The Not So Short Introduction to LATEX2e''という文字列を 定義したものです. このようなコマンドは,文書中に何度も何度も繰り返し 同じ文字列を書かなければならないときに使用すると便利でしょう.


\begin{example}%
\providecommand{\tnss}{The not
so Short Introduction to
\LaTe...
...aTeXe '' \ldots{}
\lq\lq The not
so Short Introduction to
\LaTeXe ''
\end{example}

次の例は,引数を一つ取る新しいコマンドの定義を 示したものです. #1の文字列の部分は,コマンドを使用する際に 指定する引数に置き換えられます. もし二つ以上の引数を使用したければ, #2などというように書けばよいのです.


\begin{example}%
\providecommand{\txsit}[1]{This is the \emph{ ...

LATEXでは,すでに存在しているコマンドと 同じ名前を持つ新しいコマンドを作ることはできません. そこで既存のコマンドを再定義する時のために, 特別な \renewcomanndコマンドがあります. このコマンドは,\newcommandコマンドと同じ方法で 使用することができます.

また,\providecommandコマンドを使いたくなることが あるかもしれません. このコマンドも \newcommandと同じなのですが, すでに同名のコマンドが存在しているときには, LATEX2eはその定義を無視して処理を続けるところが異なります.

LATEXコマンドの直後のホワイトスペースについては, 注意すべき点がいくつかあります. 詳しくは,[*]ページを参照して下さい.

7.1.2 新しい環境の作成

\newcommandコマンドと同じように, 必要な環境を作り出すコマンドとして \newenvironmentが あります. \newenvironmentコマンドは,以下のようにして使用します.


\begin{command}
\texttt{\symbol{'134}newenvironment}\verb*\vert{\vert%%
\emph{n...
...rt%%
\emph{before}\verb*\vert}{\vert\emph{after}\verb*\vert}\vert
\end{command}

\newcommandコマンドと同様に, \newenvironmentもオプション引数が指定できます. 引数beforeには,環境内の文章を処理する前に行う 内容を定義します. 引数afterには, \end{name}コマンドが現れたときに行う 処理内容を定義します.

以下に \newenvironmentコマンドの使用例を示します.


\begin{example}
\newedenvironment{king}{\rule{1ex}{1ex}%%
\hspace{\stretch{1}}}...
...tch{1}}My humble subjects \ldots\hspace{\stretch{1}}\rule{1ex}{1ex}\end{example}

引数numは,\newcommandコマンドと同じように 使用します. LATEXでは,すでに存在している環境と同じ名前の環境は 定義できません. すでに存在している環境を変更したいときには, \renewenvironmentコマンドを使用します. 定義の仕方は,\newenvironmentコマンドと同じです.

ここで示した例で使用しているコマンドについては, 後ほど説明します. \ruleコマンドについては[*]ページ, \stretchコマンドについては[*]ページ, \hspaceコマンドに関しては[*]ページを 参照して下さい.

7.1.3 パッケージの作成

新たにたくさんの環境とコマンドを定義すると, 文書のプリアンブルはとても長くなってしまいます. このような場合,定義したすべてのコマンドと環境を含んだ LATEXパッケージを新たに作成するとよいでしょう. そうすれば,\usepackageコマンドを使用するだけで, 作成中の文書でそれらの定義が使用できるようになります.

図 7.1: パッケージの例
\begin{figure}\begin{lined}{\textwidth}
\begin{verbatim}% Tobias Oetikerによ...
...}%
{\hspace{\stretch{1}}\rule{1ex}{1ex}}\end{verbatim} \end{lined} \end{figure}

パッケージの作成は,基本的に文書のプリアンブルに 書いてあった定義内容を,拡張子.styを持つファイルに コピーすればよいだけです. 作成するパッケージの最初には,以下のコマンドを 書いておきます.


\begin{command}
\texttt{\symbol{'134}ProvidesPackage}\verb*\vert{\vert\emph{package name}\verb*\vert}\vert
\end{command}

\ProvidesPackageコマンドは, LATEXにパッケージ名を伝え,パッケージを二度 読み込もうとした際に気の利いたエラーメッセージを 出力してくれます. 図7.1は,これまでに示した例の中で 定義したコマンドを含んだパッケージの例を示しています.


next up previous
: 7.2 フォントの種類とそのサイズ : 7. LATEXのカスタマイズ : 7. LATEXのカスタマイズ
Hiroyuki Ohsaki (oosaki@ics.es.osaka-u.ac.jp)