LaTeX2eマクロ入門

京都府立鳥羽高校定時制 稲葉 芳成


はじめに

 最近数学教育関係者でTeX環境を用いる方も増えてきました。Webでは数学教育関係者にまことにありがたいマクロパッケージも用意されています。 例えばtDB氏によるemathは「これさえあれば!」的なものです。(http://homepage3.nifty.com/emath/参照)
 それでも中には「ちょっとしたマクロは自分で書いてみたい。」という方もいらっしゃるかも知れません。そのような方向けのマクロ解説を試みたものです。


TeXマクロを使う

 まずは当たり前のことですが、マクロというのは、「ある一連の手続きをまとめ上げて定義あるいは再定義たもの」と理解してください。そして、TeXでマクロを使おうというのは、極めて基本的な欲求であると思います。それは

  • 原稿入力の手間を簡略化するため
  • 出力原稿の可塑性を保証するため

というあたりが理由として大きいと思います。もちろんこの他に

  • 原稿内容の高度化を促進するため

というまさにDTPの本質というか、そのものを追求するためのマクロ、マクロ集、及びスタイルファイル等の作成の欲求があるやも知れません。しかしここではあえて

  • なるべく特別な道具は使わない
  • なるべく特別な手法は使わない
  • なるべく特別な話題は扱わない

ということにこだわっています。なお、文献としては以下のものを参照します。

  • 改訂新版 \TeXブック Donald E.Knuth著 斎藤信男 監修 鷺谷好輝 訳
  • LaTeX2e for WINDOWS Another Manual Vol.2 乙部厳己 江口庄英 著
  • LaTeX 自由自在 磯崎秀樹 著

この解説の目標

 Tでは

  • 定義
  • 条件分岐
  • 反復
  • カウンタ処理

 ここまでで基本的なマクロの書き方は理解できると思います。また、他人の作ったマクロでも簡単なものならば理解できるようになると思います。

 Uでは

  • 四則計算
  • マクロの展開

 などについて書いてあります。ここでの中心はマクロで計算するということです。実は計算が通常のプログラミング言語のように簡単にいかないところが、はじめてTeXマクロに取り組むのに喰えないところでもあります。
 ここのあたりをなるべく丁寧に解説したつもりですが、これはどうかわかりません。これによって2次関数のグラフをかくマクロなどが作成できるようになります。また、マクロ作成上のちょっとしたことを補筆してあります。
 


例えば

 簡単なマクロを書くきっかけとなったのは以前使用していたTeXでは不等号が綺麗に出力できなかった ことによります。現在ではamsmathが簡単に利用できるのでよいのですが、平行四辺形の記号や相似記号などもけっこう見あたらなかったりします。こうしたものを自分でつくろうと思った折りに少しだけマクロに関する知識の整理が必要です。
 例えば、\newcommand{\mat}[4]{\begin{pmatrix}#1 & #2 \cr #3 & #4 \end{pmatrix}}などのいわゆる一行マクロを利用して行列の記述を容易にすることなどから始めるのが普通です。この程度なら特別な知識は必要ありません。単にコマンドを定義しただけです。
 ところが先にも触れた平行四辺形の記号の場合にはあくまでも参考例ですが私が作って利用しているものは以下のようなマクロになります。
\makeatletter
\def\parall{%
\mathord{\mathchoice
{\@pallal\tf@size}{\@pallal\tf@size}%
{\@pallal\sf@size}{\@pallal\ssf@size}}}%
\def\@pallal#1{%
\vcenter{\hbox{%
\dimen@#1\p@\unitlength.1\dimen@%
\allinethickness{.05\dimen@}%
\path(0,-2)(8,-2)(10,5)(2,5)(0,-2)%
\vrule\@width\dimen@\@height\z@\@depth\z@%
}}}%
\makeatother
このあたりになると少しだけですがマクロの基本を使っています。
 さらに関数のグラフなどをかくには計算の知識も必要となります。TeXで図形を利用するには

  • epicやeepicその他のパッケージの利用
  • 他の図形ソフトで作成したものの取り込み
  • WinTpicの利用

 あたりが代表となるところですが、TeXは計算が可能なのでその機能を利用してみるという方法もあります。このあたりをマクロにしておけば簡単な関数のグラフをかくことも可能です。
 以下に2次式の計算マクロの例をあげておきます。少しわかりにくいですが、#2、#3、#4がそれぞれ2次式の係数です。そして代入数が#1です。
\makeatletter
\def\qfval#1#2#3#4{
\newdimen\YY
\newdimen\XX
\newdimen\X
\newdimen\CS
\XX=#1\p@
\XX=#1\XX
\XX=#2\XX
\X=#1\p@
\X=#3\X
\CS=#4\p@
\advance \YY by \XX
\advance \YY by \X
\advance \YY by \CS
\expandafter\Rval\the\YY}
{\catcode`\p=12\catcode`\t=12\gdef\Rval#1pt{#1}}
\makeatother
 ここでつぎのように文中で入力して使用します。
\qfval{1}{1}{2}{3}
\qfval{0.5}{1}{2}{3}
\qfval{0.25}{1}{2}{3}
\qfval{0.25}{1}{0}{0}
\qfval{2}{2}{3}{4}
\qfval{-3}{1}{14}{-2}
 この結果は順に、6.0,4.25,3.5625,0.0625,18.0,-35.0となります。これで関数のグラフがかけそうな?気がすると思います。
 そしてここまでのマクロが理解できるように書いたつもり??です(^^;)。


      DVIファイルとしてダウンロードできます。

T download
目次
 備忘録初級編
STEP1(準備)
 引数の無いマクロ 
 引数を持つマクロ
 なんでも定義できるか
STEP2(基礎)
 条件分岐を使う
 反復を使う
 カウンタ・ディメンション
 オプション引数を使う
 図表もマクロに
 環境定義
STEP3(鑑賞)
 いろいろなマクロを眺めてみる
STEP4(盗用)
 パクル
STEP5(雑記)
 行末の%
 高度なマクロのために
FILE DVI FILE
U download
目次
 備忘録初中級編
STEP1(計算)
 引数のパターンマッチング 
 文字のカテゴリコード
 定義の有効範囲
 展開
 計算のまとめ
STEP2(補筆)
 汎用性
 条件分岐補筆
 おまけ 
FILE DVI FILE

さいごに

 以前自分のHPに載せていたものですがアクセス数も少ないままほうりだしていました。今般、ご厚意により「数学のいずみ」に掲載していただくことになりました。関係者各位に感謝いたします。
                                                      2002-10-21
                                                     Yoshinari Inaba