2005年11月16日 (水曜日)

21:51:42 # Life tetexの変更についての考察. tetex3.0で,latexがpdfetexを利用してダンプをつくるようになった. woody の texから,sarge の etex,そして,今回の pdfetex だ. latexはpdfetexへのシンボリックリンクになっており, pdfetexは,argv[0] を解析し,latexという名前で呼ばれたため, latex.fmt を読み込んでロードするという話になる. initexというコマンドがあったのだが,tetex 3.0でなくなった. 実は,formatが変わっているため, latex用のformatをダンプするためには, initex, einitex, pdfeinitex のコマンドのうち正しいものを呼ばなければならない, という状況になってしまっている. ただ,initex, einitex, pdfeinitexはそれぞれ tex, etex, pdfetex へのシンボリックリンクで, 最近の web2c のtex実装では, -ini コマンドをつけて 直接実行してあげても同じ事が出来るようになっている. 従来はinitex &latex a.texというように指定して実行していた物が, latex &latex a.texというように実行できるようになっているのである.

initexモードでしかできないことというのが二つある. 一つは,全くフォーマットをロードしないで,生のTeXを起動すること(昔のTeXは plain tex というフォーマットをデフォルトでロードしてしまった,最近は違うらしい). もう一つは,フォーマットというものをダンプすることだ. texは,「フォーマット」というダンプをロードして,前回ダンプを作成した時点から 処理を再開できるという仕様になっているらしい.

ここまでは,まぁ,よいだろう. もう一つ問題がある. Debian の TeX (というか,tetex 2.0 から 3.0への変更) で問題になるのは, woody の tex のフォーマットファイルは .fmtという拡張子になっていた. sarge (tetex 2.X) の etex のフォーマットファイルは,.efmtという拡張子になっていた. sid (tetex 3.X) の pdfetex のフォーマットファイルは .fmt という拡張子になっている. それを確認する信頼できる方法がない. kpsewhich --format fmt latexでわかりそうなのだが,違うようだ. どうも,cnffileを作成して,fmtutilを使え,という話になるようだ. 338046, 338608 で議論したメールの数が気づいたら100通とかになっているのでどういう話をしたのか,まとめるのが大変だ.

提案されたネタは下記. latex -iniを使うのより複雑で何のメリットもない気がする. cleanupで削除すべきファイルの名前 (XXXX.fmt) が何なのか,という疑問に答えが無い.

fmtutil.cnfの名前の調べ方?:
	  grep ^latex `kpsewhich --format='web2c files' fmtutil.cnf` | \
   awk '{print $1,"\t",$2,"\t",$3,"\t &latex name.ini"}'


fmtutil.cnfファイルの中身?:
\makeatletter
\def\SourceFile{\def\whizzy@master}
\def\WHIZZYCONFIGDIR{'"$CONFIGDIR"'}
\def\WHIZZYHOME{'"$HOME"'}
\makeatother
\let\Documentclass\documentclass
\renewcommand{\documentclass}[2][]{\Documentclass[#1]{#2}
\let\WhizzyLevel'"$LEVEL"'
\def\WhizzyExt{'"$EXT"'}
\input{'"$PACKAGE"'}}
\input{'"$NAME$EXT"'}
\dump


$ fmtutil --cnffile fmtutil_name.cnf --fmtdir . 

	
Junichi Uekawa

$Id: dancer-diary.el,v 1.89 2005/05/12 11:19:14 dancer Exp $