見出し画像

TeXとMetaPostと初等幾何的な何か#2

今日の昼間に所属する楽団の野外演奏会があったので、いきなり更新が滞ってしまいました。実は今日も打ち上げで真っ昼間から呑んで帰ってきていて少し頭が覚束ないんですけど、書きかけた事なので続きを書いてみましょう。

さて、TeXが数学の書類を作るのに便利だという話をしました。LaTeXにはpicture環境というstyleファイル(拡張機能?命令?のようなもの)もあり、

のように使えば、1cmを1とした、幅が5、高さが4の平面に、座標が(0.5,0.5)の点から(1,5)の方向に横幅が0.5の線分を引くとか、2次のベジェ曲線を2点(0.5,0.5)、(3,3.5)間に引く(参照点を(1,3)として)のようにある程度の作図ができました。初めて見る人でも判る通り、ベジェ曲線の指定は非常に簡明ですが、線分は面倒です。が、使い始めは仕方なくコツコツ図を描いていました。

が、ある年指導要領の改編で「初等幾何」が高校の数学のカリキュラムに入る事になりました。ご存知の通り初等幾何では座標は二の次?で三角形ABCのように点の名前とAB=5のように線分の長さと∠ABC=60°のような角の大きさが情報として重要になり、中点や内分点、角の二等分線や垂線といったものが作図で必要になりました。

ある日色々TeXについて調べていたところ、LaTeXの作業用マクロのいろいろというページに行き当たり、

\@namedef#1....
#1を名称とするマクロを\csname#1\endcsnameに対して定義する。第1引数以降は、通常のマクロ定義形式で引数パターンや置き換えトークンリストを記述する。やはり、#1は展開を受ける。
\@nameuse#1
#1を名称とするマクロを\csname#1\endcsnameによって実行する。#1は展開を受ける。

というマクロ命令がある事を知りました。これってもしかして使えるのじゃないか。つまり、Aという点をpicture環境で使うにはその座標(Ax,Ay)が必要だけど、これをマクロにすれば、点をその名前Aとかで自在に扱えるよなぁってことに気がついて、自前のqbGraphというマクロ集(styleファイル)を作りました。詳細はリンク先のqbGraphマニュアルから適当にpdfファイルをダウンロードして眺めてください。

概略としては、作図の最初に幾つかの点を座標で指定(定義?)しておけばあとは「線分ABを引く」とか「ABの中点をMとする」とか「角ABCの二等分線とACの交点をPとする」とか「ABを直径とする円を描く」などのおよそ思いつく限りの基礎的な作図を「line AB」「midPoint AB M」「halfanglePoint ABC P」「circle AB」のような簡明な命令でpicture環境内で使えるようになったわけです。点の指定も「defPoint A(1,3)」のように簡明です。

実はこの時点で

TeXとMetaPostと初等幾何的な何か#1

の扉絵のような作図は条件次第では十分可能でした。我ながらよくできたものだと思ったものです。

例えば次の図は、当時話題になていたGoogleの入社問題を紹介する為にqbGraphで描いたものです。Apolloniusの作図をそのまま実行しています。問題は「三角形ABCに対して,点Pをとり,3つの三角形ABP,BCP,CAPの周の長さが等しくなるようにしたい。このような点が存在するとして,点Pを作図しなさい。」というもので、詳しい説明と図は、「いくらなんでも幾何」に載せていますのでご覧ください。

が、そのうち解像度や計算の粗さが気になて来ました。その時にMetaPostというものの存在を意識するようになりました。ただ、MetaPostはTeXとは別のソフトウェアで、図のソースファイルをMetaPostで処理してできたepsファイルをTeXに組み込むというもので、ものぐさな私には少し面倒なものでした。それでも矢張り出来上がる図は美しく、picture環境でのqbGraphマクロでの手軽さとの間で葛藤していたわけです。

ご存知の方はご存知の通り、TeXは使い易いようにLaTeXが用意され、機能拡張?にあたるマクロ集やstyleファイルが有志の手で今も昔も沢山出回っています。そこで何とかMetaPostがpicture環境のように簡単に使えるようなマクロがないかと探していたところMePoTeXに行き当たります。

MePoTeX自体はstyleファイルを使えばTeXのファイルだけで図が描き込めるというまさにpicture環境のMetaPost版を実現してくれるstyleファイルで特に文字周りについて非常に美しく仕上がっていました。でも折角qbGraphで作ってきたプリントなどの資産がまた無駄になるのは耐えられなかったので、所謂ラッパーを作りました。つまり、MePoTeXとそのラッパーを読み込めば、以前qbGraphで作図していたものがそのままMetaPostで作図できるようになったというわけです。

これは特に厄介なTeXのマクロ命令を知らなくても簡単に実装できるので、みなさん試してみるべきだと思います。

さて、眠たくなってきたので今日はここまで。

ここから先は

1字

¥ 100

この記事が気に入ったらサポートをしてみませんか?