|
|
Initial revision
#! /bin/sh
: 'idx2ind - new LaTeX index converter - 11-Jul-88/JLR'
L=%%
case x$1 in
x-l) L=""; shift ;;
esac
for i
do
awk 'BEGIN {for (i = 97; i < 123; i++) # index letters "a" to "z"
printf "%c\n", i; exit}' |\
cat - $i.idx |\
sed \
-e 's/ / /g'\
-e 's/^\\indexentry{\(.*\)}{\([^}]*\)}$/\1 \2/'\
-e 's/^\\verb\(.\)\(.*\)\1 \(.*\)$/\2 \3 \\verb\1\2\1/'\
-e '/\\/!s/ *{}//'\
-e '/,/{;s/^\(.*\) \(.*\)$/\1 \2 \1/;s/,/ /;}' |\
sort -u -t" " +0fd -1 +1n |\
awk -F" " '
BEGIN {printf "\\begin{theindex}\\makeatletter\n"
printf "\\raggedright\n"
printf "\\def\\newindex#1{{\\huge\\hspace{-.5in}"
printf "\\parbox[t]{.5in}{\\makebox[.35in][c]{\\uppercase{#1}}}"
printf "\\vspace{-1.5ex}}}\n"
}
NF == 1 {x = $1; next} # NF=1: index letter
{n = $1}
NF == 3 {n = $3} # NF=3: special sort key
n == p {printf ", %s", $2; next} # another page number
p != "" {printf "\n"} # end of this item
x != "" {if (p != "") # index letter?
printf "\\indexspace\n"
printf "'$L'\\newindex{%s}\n", x
}
{x = s = ""; i = n; l = $2} # reset
/,/ {s = "sub" # sub-item
nf = split (i, a, ","); k = a[1]; i = a[2]
split (p, pk, ",")
if (pk[1] != k && pk[1] != k"{}") # should use substr...
{i = n; s =""}
else for (j = 3; j <= nf; j++) # add sub-sub-items
i = sprintf ("%s,%s", i, a[j])
}
{printf "\\%sitem %s, %s", s, i, l}
{p = n} # save for next comparison
END {printf "\n\\end{theindex}\n"
}' > $i.ind
done
exit 0
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.