作者: Hiroshima Tsutomu
日時: 2002/5/16(18:33)
>  そしてさらに最大の欠陥は
>  見出しに 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@...