Annotation of 43BSDReno/contrib/isode-beta/doc/manual/idx2ind, revision 1.1.1.1

1.1       root        1: #! /bin/sh
                      2: : 'idx2ind - new LaTeX index converter - 11-Jul-88/JLR'
                      3: 
                      4: L=%%
                      5: case x$1 in
                      6:   x-l) L=""; shift ;;
                      7: esac
                      8: 
                      9: for i
                     10: do
                     11:   awk 'BEGIN {for (i = 97; i < 123; i++)       # index letters "a" to "z"
                     12:                printf "%c\n", i; exit}' |\
                     13:   cat - $i.idx |\
                     14:   sed \
                     15:     -e 's/     / /g'\
                     16:     -e 's/^\\indexentry{\(.*\)}{\([^}]*\)}$/\1 \2/'\
                     17:     -e 's/^\\verb\(.\)\(.*\)\1 \(.*\)$/\2      \3      \\verb\1\2\1/'\
                     18:     -e '/\\/!s/ *{}//'\
                     19:     -e '/,/{;s/^\(.*\) \(.*\)$/\1      \2      \1/;s/,/ /;}' |\
                     20:   sort -u -t"  " +0fd -1 +1n |\
                     21:   awk -F"      " '
                     22: BEGIN  {printf "\\begin{theindex}\\makeatletter\n"
                     23:        printf "\\raggedright\n"
                     24:        printf "\\def\\newindex#1{{\\huge\\hspace{-.5in}"
                     25:        printf "\\parbox[t]{.5in}{\\makebox[.35in][c]{\\uppercase{#1}}}"
                     26:        printf "\\vspace{-1.5ex}}}\n"
                     27:        }
                     28: NF == 1        {x = $1; next}                          # NF=1: index letter
                     29:        {n = $1}
                     30: NF == 3        {n = $3}                                # NF=3: special sort key
                     31: n == p {printf ", %s", $2; next}               # another page number
                     32: p != ""        {printf "\n"}                           # end of this item
                     33: x != ""        {if (p != "")                           # index letter?
                     34:            printf "\\indexspace\n"
                     35:        printf "'$L'\\newindex{%s}\n", x
                     36:        }
                     37:        {x = s = ""; i = n; l = $2}             # reset
                     38: /,/    {s = "sub"                              # sub-item
                     39:        nf = split (i, a, ","); k = a[1]; i = a[2]
                     40:        split (p, pk, ",")
                     41:        if (pk[1] != k && pk[1] != k"{}")       # should use substr...
                     42:            {i = n; s =""}
                     43:        else for (j = 3; j <= nf; j++)          # add sub-sub-items
                     44:            i = sprintf ("%s,%s", i, a[j])
                     45:        }
                     46:        {printf "\\%sitem %s, %s", s, i, l}
                     47:        {p = n}                                 # save for next comparison
                     48: END    {printf "\n\\end{theindex}\n"
                     49:        }' > $i.ind
                     50: 
                     51: done
                     52: 
                     53: exit 0

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.