> そしてさらに最大の欠陥は
> 見出しに TeX のマクロ名と一致する文字列(def, relax, など)を使ってはいけ
ない
> ということです.
> 見出しは日本語だけにしておいてくださいね.
ちょっとした工夫でこの欠陥は直りました.
TeX で特殊な意味を持つ文字や \をつけたマクロは多分ダメですが,
普通の英語なら見出しにできます.
改良版のはじまりはじまり...
\newread\indexfile
\openin\indexfile=index.txt
\endlinechar=-1
\newtoks\titles
\newtoks\temp
\titles={}
\def\ifundefined#1{\expandafter\ifx\csname{#1}\endcsname\relax}
\def\push#1#2{
\ifundefined{#1}
\expandafter\edef\csname{#1}\endcsname{#2}
\titles=\expandafter{\the\titles{#1}}
\else
\temp=\expandafter\expandafter\expandafter{\csname{#1}\endcsname}
\expandafter\edef\csname{#1}\endcsname{\the\temp,#2}
\fi
}
\def\doiterate#1 #2\done{
\push{#2}{#1}
}
\def\whileiterate{
\read\indexfile to \indexline
\ifx\indexline\empty
\let\next=\relax
\else
\expandafter\doiterate\indexline \done
\let\next=\whileiterate
\fi\next
}
\whileiterate
\closein\indexfile
\noindent
\def\showone#1{
\ifx#1\relax
\let\next=\relax
\else
\message{#1 ... \csname{#1}\endcsname}
#1 \dotfill\ \csname{#1}\endcsname\break
\let\next=\showone
\fi\next
}
\expandafter\showone\the\titles\relax
\bye
めでたし,めでたし.
=====================
廣島 勉
tsutomu@...