annotate man/lispref/permute-index @ 12:bcdc7deadc19 r19-15b7

Import from CVS: tag r19-15b7
author cvs
date Mon, 13 Aug 2007 08:48:16 +0200
parents 376386a54a3c
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
1 #!/bin/csh -f
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
2 # Generate a permuted index of all names.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
3 # The result is a file called index.fns.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
4
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
5 # You will need to modify this for your needs.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
6
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
7
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
8 set TEXINDEX=texindex # path to texindex command
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
9 #set EMACS=xemacs # your emacs command
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
10 #set TEX=tex # your tex command
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
11
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
12 set MANUAL=lispref # the base name of the manual
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
13
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
14 # goto 3
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
15
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
16 1:
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
17 echo "Extract raw index from texinfo fn index."
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
18 # Let texindex combine duplicate entries, later.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
19 # But it wants to protect non-alphanumerics thus confusing ptx.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
20 # Also change `\ ' to just a ` ', since texindex will fail. This is produced
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
21 # by `@findex two words' in an example environment (no doubt among others).
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
22 # delete wrapper parens
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
23 # change dots {} to dots{}
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
24 # change {-} to char form, so ptx wont ignore it.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
25 # delete leading \entry {
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
26 # change '\ ' to ' '
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
27 # change lines with = < > since they mess up field extraction.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
28 # separate into fields delimited by "
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
29 cat ${MANUAL}.fn | \
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
30 sed \
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
31 -e 's/(\([^)]*\))/\1/' \
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
32 -e 's/\\dots {}/(\\dots{})/' \
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
33 -e "s/{-}/{{\\tt\\char'055}}/" \
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
34 -e 's,^[^ ]* {,,' \
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
35 -e 's, },},' \
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
36 -e 's,\\ , ,g' \
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
37 -e 's/{\\tt\\char61}/=/' \
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
38 -e 's/{\\tt\\gtr}/>/' \
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
39 -e 's/{\\tt\\less}/</' \
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
40 -e 's/}{/"/g' \
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
41 | awk -F\" '{print $2, $1}' >! permuted.raw
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
42
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
43 2:
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
44 # Build break file for ptx.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
45 cat <<EOF > permuted.break
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
46 -
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
47 :
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
48 EOF
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
49 # Build the ignore file for ptx.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
50 # We would like to ignore "and", "or", and "for",
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
51 # but ptx ignores ignore words even if they stand alone.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
52 cat <<EOF > permuted.ignore
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
53 the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
54 in
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
55 to
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
56 as
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
57 a
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
58 an
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
59 of
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
60 on
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
61 them
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
62 how
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
63 from
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
64 by
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
65 EOF
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
66
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
67 echo "Make troff permuted index."
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
68 ptx -i permuted.ignore -b permuted.break -f -r -w 144 \
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
69 < permuted.raw >! permuted.t
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
70
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
71 3:
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
72 echo "Extract the desired fields."
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
73 awk -F\" '{printf "%s\"%s\"%s\n", $4,$6,$9}' permuted.t >! permuted.fields
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
74
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
75 4:
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
76 echo "Format for texindex."
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
77 # delete lines that start with "and ", "for "
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
78 sed < permuted.fields \
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
79 -e 's/=/{\\tt\\char61}/' \
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
80 -e 's/>/{\\tt\\gtr}/' \
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
81 -e 's/</{\\tt\\less}/' \
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
82 -e '/"and /d' \
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
83 -e '/"for /d' \
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
84 | awk -F\" 'NF>0 {if ($1=="") {\
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
85 print "\entry {" $2 "}{" 0+$3 "}{" $2 "}" }\
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
86 else {\
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
87 print "\entry {" $2 ", " $1 "}{" 0+$3 "}{" $2 ", " $1 "}"} }'\
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
88 > permuted.fn
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
89
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
90 5:
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
91 echo "Sort with texindex."
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
92 ${TEXINDEX} permuted.fn
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
93 #mv permuted.fns ${MANUAL}.fns
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
94
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
95 # The resulting permuted.fns will be read when we run TeX
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
96 # on the manual the second time. Or you can use permuted.texinfo here.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
97 #${TEX} permuted.texinfo
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
98
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
99 6:
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
100 echo "Clean up."
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
101 rm -f permuted.fields permuted.t permuted.raw
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
102 rm -f permuted.break permuted.ignore permuted.fn