home *** CD-ROM | disk | FTP | other *** search
- #! /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
-