From: 閑舎 <raku@...>
Subject: [TSfree:67] Re: [TSabc:43] 初心者向け言語の比較の参考に(Metafont の場合)
Date: Wed, 10 Apr 2002 15:05:39 +0900 (LMT)
Message-ID: <20020410150539O.raku@...>
> mf はフォントを作るときたまにしかいじりませんが……
>
> 廣島さんは、TeX Book, METAFONT Book を見て直接ソースを書かれるのですか?
> すごいですね。
>
廣島です.
私も mf はもっぱらフォントを作るときにしか使いません.
しかし,プログラム言語としての METAFONT は,
自動的に線形連立方程式を解く機能が備わっていたり,
かなり強力です.
昔,TeX 文書にグラフを埋めこみたいが,
プリンタやフォント等の制限から dvips, gs を使えなかったとき,
mf でグラフを巨大なフォントとして生成して
使う方法を考えたことがありまして,
METAFONT Book を読みました.
私は結局実際には実行しなかったのですけど
本当に実行した人もいるそうです.
%%% 他にも TeX で三角関数の値が欲しくて,
%%% Taylor 展開で近似値を求めるマクロを作った人がいるとかいないとか...
### 私なら,さすがに Perl に TeX のソースを吐かせますけど...
また,私は LaTeX をほとんど使わず,
plain TeX で自前のマクロを定義して,
いろいろ細かい調整をしています.
アラビア数字を大文字のローマ数字に変換し,
さらに見ばえを良くするために各文字の間を詰める自前のマクロは,
%% \romnum{256} ==> CCLVI でさらに字間を詰める
\def\romnum#1{
\begingroup
\def\insertkern##1##2{
\if##2\relax
##1\let\next\relax
\else
##1\kern-.4em
\fi\next##2}
\let\next\insertkern
\expandafter\expandafter\expandafter\uppercase\expandafter{\expandafter\insertkern\romannumeral#1\relax}
\endgroup
}
となります.
%%% これは結構苦労しました.
METAFONT Book も TeX Book もいろいろ勉強になって面白いですよ.
ちなみに,終端再帰の概念をはじめて知ったのは TeX Book です.
(TeX Bookでは tail recursion[尾部再帰方式])
-----------------------------
廣島 勉
(tsutomu@...)