Commit | Line | Data |
---|---|---|
e5cca614 | 1 | #!/bin/sh |
e3eb9fa7 EZ |
2 | # Generate a permuted index of all names. |
3 | # The result is a file called index.fns. | |
4 | ||
5 | # Copyright (C) 2001 Free Software Foundation, Inc. | |
6 | # | |
7 | # This file is part of GNU Emacs. | |
8 | # | |
9 | # GNU Emacs is free software; you can redistribute it and/or modify | |
10 | # it under the terms of the GNU General Public License as published by | |
11 | # the Free Software Foundation; either version 2, or (at your option) | |
12 | # any later version. | |
13 | # | |
14 | # GNU Emacs is distributed in the hope that it will be useful, | |
15 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
16 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
17 | # GNU General Public License for more details. | |
18 | # | |
19 | # You should have received a copy of the GNU General Public License | |
20 | # along with GNU Emacs; see the file COPYING. If not, write to the | |
21 | # Free Software Foundation, Inc., 59 Temple Place - Suite 330, | |
22 | # Boston, MA 02111-1307, USA. | |
23 | ||
24 | # You will need to modify this for your needs. | |
25 | ||
26 | ||
27 | set TEXINDEX=texindex # path to texindex command | |
28 | #set EMACS=gnuemacs # your emacs command | |
29 | #set TEX=tex # your tex command | |
30 | ||
31 | set MANUAL=elisp # the base name of the manual | |
32 | ||
33 | # goto 3 | |
34 | ||
35 | 1: | |
36 | echo "Extract raw index from texinfo fn index." | |
37 | # Let texindex combine duplicate entries, later. | |
38 | # But it wants to protect non-alphanumerics thus confusing ptx. | |
177c0ea7 | 39 | # Also change `\ ' to just a ` ', since texindex will fail. This is produced |
e3eb9fa7 EZ |
40 | # by `@findex two words' in an example environment (no doubt among others). |
41 | # delete wrapper parens | |
42 | # change dots {} to dots{} | |
43 | # change {-} to char form, so ptx wont ignore it. | |
44 | # delete leading \entry { | |
45 | # change '\ ' to ' ' | |
46 | # change lines with = < > since they mess up field extraction. | |
47 | # separate into fields delimited by " | |
e5cca614 | 48 | rm -f permuted.raw |
e3eb9fa7 EZ |
49 | cat ${MANUAL}.fn | \ |
50 | sed \ | |
51 | -e 's/(\([^)]*\))/\1/' \ | |
52 | -e 's/\\dots {}/(\\dots{})/' \ | |
53 | -e "s/{-}/{{\\tt\\char'055}}/" \ | |
54 | -e 's,^[^ ]* {,,' \ | |
55 | -e 's, },},' \ | |
56 | -e 's,\\ , ,g' \ | |
57 | -e 's/{\\tt\\char61}/=/' \ | |
58 | -e 's/{\\tt\\gtr}/>/' \ | |
59 | -e 's/{\\tt\\less}/</' \ | |
60 | -e 's/}{/"/g' \ | |
e5cca614 | 61 | | awk -F\" '{print $2, $1}' > permuted.raw |
e3eb9fa7 EZ |
62 | |
63 | 2: | |
64 | # Build break file for ptx. | |
65 | cat <<EOF > permuted.break | |
66 | - | |
67 | : | |
68 | EOF | |
69 | # Build the ignore file for ptx. | |
e5cca614 | 70 | # We would like to ignore "and", "or", and "for", |
e3eb9fa7 EZ |
71 | # but ptx ignores ignore words even if they stand alone. |
72 | cat <<EOF > permuted.ignore | |
73 | the | |
74 | in | |
75 | to | |
76 | as | |
77 | a | |
78 | an | |
79 | of | |
80 | on | |
81 | them | |
82 | how | |
83 | from | |
84 | by | |
85 | EOF | |
86 | ||
87 | echo "Make troff permuted index." | |
e5cca614 | 88 | rm -f permuted.t |
e3eb9fa7 | 89 | ptx -i permuted.ignore -b permuted.break -f -r -w 144 \ |
e5cca614 | 90 | < permuted.raw > permuted.t |
e3eb9fa7 EZ |
91 | |
92 | 3: | |
93 | echo "Extract the desired fields." | |
e5cca614 EZ |
94 | rm -f permuted.fields |
95 | awk -F\" '{printf "%s\"%s\"%s\n", $4,$6,$9}' permuted.t > permuted.fields | |
e3eb9fa7 EZ |
96 | |
97 | 4: | |
98 | echo "Format for texindex." | |
99 | # delete lines that start with "and ", "for " | |
100 | sed < permuted.fields \ | |
101 | -e 's/=/{\\tt\\char61}/' \ | |
102 | -e 's/>/{\\tt\\gtr}/' \ | |
103 | -e 's/</{\\tt\\less}/' \ | |
104 | -e '/"and /d' \ | |
105 | -e '/"for /d' \ | |
106 | | awk -F\" 'NF>0 {if ($1=="") {\ | |
107 | print "\entry {" $2 "}{" 0+$3 "}{" $2 "}" }\ | |
108 | else {\ | |
109 | print "\entry {" $2 ", " $1 "}{" 0+$3 "}{" $2 ", " $1 "}"} }'\ | |
110 | > permuted.fn | |
111 | ||
112 | 5: | |
113 | echo "Sort with texindex." | |
114 | ${TEXINDEX} permuted.fn | |
115 | #mv permuted.fns ${MANUAL}.fns | |
116 | ||
177c0ea7 | 117 | # The resulting permuted.fns will be read when we run TeX |
e3eb9fa7 EZ |
118 | # on the manual the second time. Or you can use permuted.texinfo here. |
119 | #${TEX} permuted.texinfo | |
120 | ||
121 | 6: | |
122 | echo "Clean up." | |
123 | rm -f permuted.fields permuted.t permuted.raw | |
124 | rm -f permuted.break permuted.ignore permuted.fn |