Fix zlib usage with TNG
[alexxy/gromacs.git] / manual / subindex
1 #!/usr/bin/awk -f
2
3 #
4 # (c) K. Anton Feenstra 2001
5 #
6 # subindex v. 0.1 - 12 feb 2001
7 #
8 # reads tex index entries as generated by makeindex and 
9 # combines identical words into sub-entries
10 #
11
12 BEGIN {
13   n=0;
14 }
15
16 /[{ ]Symbols[ }]/ {
17   if ( substr(1,1,$0)!="%" )
18     $0 = "% " $0;
19 }
20
21 /^[ \t]*\\see/ {
22   sub("^[ \t]*","");
23   pp = pp $0;
24   next;
25 }
26
27 {
28   sub(", \\\\see.*","",pp);
29 }
30
31 function dump() {
32   printf("%% %d %d %d %d |", mc, nc, mp, np);
33   for(i=1;i<=nc;i++) printf(" %s",c[i]);
34   printf(" |");
35   for(i=1;i<=np;i++) printf(" %s",p[i]);
36   printf(" |\n");
37 }
38
39
40 {
41   mc=0;
42   if ($1=="\\item") {
43     for(i=1; $(i)!="\\hfill" && i<=NF; i++) {
44       c[i]=$(i+1);
45       sub(",$","",c[i]);
46       if (i<=np && c[i]==p[i]) mc=i;
47     }
48     nc=i-2;
49   } else {
50     nc=0;
51     mc=0;
52   }
53 #  if (mc) dump();
54   if (mc && mc<=nc) {
55     if (mc) {
56       key=c[1];
57       for(i=2; i<=mc; i++)
58         key=key" "c[i];
59     } else 
60       key="";
61     if (key != pkey && mc<np)
62       printf("  \\item %s \\hfill \\nopagebreak\n", key);
63     pkey=key;
64   }
65   if (mp) m=mp; else m=mc;
66   skey=p[m+1];
67   for(i=m+2; i<=np; i++)
68     skey=skey" "p[i];
69   if (mc<np)
70     for(i=1; i<=mp || i<=mc; i++) {
71       sub("item "key" ", "subitem ", pp);
72       sub("item "key", "skey, "subitem "skey" $\\sim$", pp);
73       pp="  "pp;
74     }
75   
76   np=nc;
77   mp=mc;
78   for(i=1;i<=np;i++)
79     p[i]=c[i];
80 }
81
82 {
83   if (NR>1) print pp;
84   pp=$0;
85 }
86
87 END {
88   print pp;
89 }
90
91 #last line