最終更新:2007-06-29 (金) 12:02:08 (4129d)

TeX用語集?

WEB とは?

Web と表記しない限り、TeX の世界において WEB は Knuth が開発した 「プログラムのソースコードと説明文書の混在形式を実現する文書整形言語」 となります。Knuth が計算機科学領域で使用されていない 3 文字からなる英単語 を参考に Knuth の義母(妻 Jill の母親) Wilda Ernestine Bates のイニシャル から命名したものです。

WEB には Pascal の「ソースコード」と フォーマットの決められた「説明文」が 埋め込まれています。例としては次のようなものがあります。

@p function round_decimals(@!k:small_number) : scaled;
   {converts a decimal fraction}
var a:integer; {the accumulator}
begin a := 0;
while k > 0 do
   begin decr(k); a := (a + dig[k]*two) div 10; 
   end;
round_decimals := (a + 1) div 2; 
end;

生徒が begin と end の使い方を良く間違えると、Knuth 先生は嘆いておられました。 このようにして記述された WEB ファイルは weavetangle によって処理 できます。

現在は WEB ではなく C 言語で記述する CWEB が主流になっているそうです。 CWEB での手順を紹介します。次のようにすると web ファイルから マニュアル test.tex が生成されます。

cweave test.w

次のようにすると web ファイルから C ソースコード test.c が生成されます。

ctangle test.w

ですから、 Makefile においての依存関係は次のようになります。

.w.tex:
	cweave $*
.tex.dvi:	
	tex $<
.w.dvi:
	make $*.tex
	make $*.dvi
.w.c:
	ctangle $*
.w.o:
	make $*.c
	make $*.o
.c.o: 
	cc $(CFLAGS) -c $*.c
.w:
	make $*.c
	cc $(CFLAGS) $*.c -o $*

.tex.dvi に関しては

.tex.pdf:
	pdftex $< && pdftex $<

としてしまって PDF を作成するようにしても良いでしょう。

詳しい情報は CTANweb/c_cpp/cweb/examples/ を参照してください。

参考文献

  • &amazon(0201575698);
  • &amazon(0937073806); (邦訳:&amazon(4756101909);)