gnus-compat.el: Require overlay for XEmacs
[gnus] / texi / pixidx.sty
1 % SHOWIDX DOCUMENT-STYLE OPTION - released 16 June 1991
2 %    for LaTeX version 2.09
3 % Copyright (C) 1985, 1988, 1989, 1991 by Leslie Lamport
4 % Modified by Lars Ingebrigtsen 1993
5 %
6 % Prints \index entries in outer margin. For use with book or report
7 % style.  Note: makes \flushbottom the default.
8
9 \typeout{Document style option `showidx' - released 16 June 1991}
10 \typeout{Modified for use in eyesore.}
11
12 \newbox\eye@boxa
13 \newbox\eye@boxb
14 \newbox\eye@boxc
15 \newbox\eye@boxd
16 \newbox\eye@boxe
17 \newbox\eye@boxf
18 \newbox\eye@boxg
19 \newbox\eye@box
20 \newbox\new@box
21
22   \global \setbox \eye@boxa \hbox{}
23   \global \setbox \eye@boxb \hbox{}
24   \global \setbox \eye@boxc \hbox{}
25   \global \setbox \eye@boxd \hbox{}
26   \global \setbox \eye@boxe \hbox{}
27   \global \setbox \eye@boxf \hbox{}
28   \global \setbox \eye@boxg \hbox{}
29
30 \newdimen\eye@boxadim \global\eye@boxadim\z@
31 \newdimen\eye@boxbdim \global\eye@boxbdim\z@
32 \newdimen\eye@boxcdim \global\eye@boxcdim\z@
33 \newdimen\eye@boxddim \global\eye@boxddim\z@
34 \newdimen\eye@boxedim \global\eye@boxedim\z@
35 \newdimen\eye@boxfdim \global\eye@boxfdim\z@
36 \newdimen\eye@boxgdim \global\eye@boxgdim\z@
37
38 \newdimen\gnus@horiz \global\gnus@horiz\z@
39 \newdimen\gnus@vert \global\gnus@vert\z@
40
41
42 \newdimen\eye@height
43 \global\eye@height\textheight
44 % \global\advance\eye@height 8cm
45
46 \newdimen\eyeins@height
47 \global\eyeins@height\z@
48
49 \newdimen\eye@adjust
50 \global\eye@adjust 0cm
51
52 \newinsert\indexbox
53 \dimen\indexbox=\maxdimen
54
55 \newinsert\gnusbox
56 \dimen\gnusbox=\maxdimen
57
58 \newdimen\eye@dim
59 \newdimen\new@dim
60 \newdimen\doinsert
61
62 \newdimen\eye@strutd
63 \def\eye@strut#1{%
64   \eye@strutd#1
65   \advance\eye@strutd\eye@adjust
66   \advance\eye@strutd -1mm
67   \raisebox{-\eye@strutd}[0pt][0pt]{\rule{1mm}{\eye@strutd}}
68 }
69
70 \newdimen\eye@tmpd
71 \newbox\eye@tmpba
72 \newbox\eye@tmpbb
73 \def\eye@insbox#1#2#3{%
74   \eye@dim#2
75   \advance\eye@dim\ht#3
76   \advance\eye@dim\eye@adjust
77   \ifdim \eye@dim < \eye@height 
78     \global#2\eye@dim
79     \global\setbox#1
80        \hbox{\unhbox#1
81 %             \eye@strut{\ht#3}
82              \unhbox#3
83              \vrule \@height 1cm \@width\z@}
84     \setbox #3 \hbox{}
85   \fi}
86
87 \def\@showidx#1{
88   \setbox\new@box\hbox{#1}
89   % \typeout{Vi er i showidx.}
90   \new@dim\z@
91   \ifdim \ht\new@box > \z@
92     \eye@insbox\eye@boxa\eye@boxadim\new@box 
93     \ifdim \ht\new@box > \z@
94     \eye@insbox\eye@boxb\eye@boxbdim\new@box 
95     \ifdim \ht\new@box > \z@
96     \eye@insbox\eye@boxc\eye@boxcdim\new@box 
97     \ifdim \ht\new@box > \z@
98     \eye@insbox\eye@boxd\eye@boxddim\new@box 
99     \ifdim \ht\new@box > \z@
100     \eye@insbox\eye@boxe\eye@boxedim\new@box 
101     \ifdim \ht\new@box > \z@
102     \eye@insbox\eye@boxf\eye@boxfdim\new@box 
103     \ifdim \ht\new@box > \z@
104     \eye@insbox\eye@boxg\eye@boxgdim\new@box 
105     \ifdim \ht\new@box > \z@
106     \else
107       \typeout{Discarding index.}
108     \fi\fi\fi\fi\fi\fi\fi
109   \fi
110
111     \doinsert \z@
112     \ifdim \eyeins@height > \z@
113       \eye@dim\eyeins@height
114       \advance\eye@dim\eye@boxadim
115       \ifdim \eye@dim < \eye@height 
116          \global\eyeins@height\eye@dim
117          \doinsert 1pt
118       \fi
119    \else
120      \doinsert 1pt
121      \global\eyeins@height\eye@boxadim
122    \fi
123
124   \ifdim \ht\eye@boxa > \z@
125   
126     \ifdim \doinsert > \z@
127 %      \typeout{Vi inserter i indexbox.}
128       \insert\indexbox{
129          \small
130          \hsize\marginparwidth
131          \hangindent\marginparsep 
132          \parindent\z@
133          \parfillskip\@flushglue
134          \everypar{}\let\par\@@par 
135          \lineskip\normallineskip
136          \baselineskip .8\normalbaselineskip
137          \ifodd\c@page\raggedleft\else\raggedright\fi
138          \leavevmode
139          \relax
140          \unhbox\eye@boxa
141          \relax
142       }
143       \global \setbox \eye@boxa \copy\eye@boxb
144       \global \setbox \eye@boxb \copy\eye@boxc
145       \global \setbox \eye@boxc \copy\eye@boxd
146       \global \setbox \eye@boxd \copy\eye@boxe
147       \global \setbox \eye@boxe \copy\eye@boxf
148       \global \setbox \eye@boxf \copy\eye@boxg
149       \global \setbox \eye@boxg \hbox{}
150       \global \eye@boxadim\eye@boxbdim
151       \global \eye@boxbdim\eye@boxcdim
152       \global \eye@boxcdim\eye@boxddim
153       \global \eye@boxddim\eye@boxedim
154       \global \eye@boxedim\eye@boxfdim
155       \global \eye@boxfdim\eye@boxgdim
156       \global \eye@boxgdim\z@
157     \fi
158   \fi
159
160 }
161
162 \def\@rightidx{\hskip\columnwidth \hskip\marginparsep}
163 \def\@leftidx{\hskip-\marginparsep \hskip-\marginparwidth}
164
165 \def\@mkidx{
166
167 %  \typeout{Vi er i mkidx 1.}
168
169   \vbox to \z@{
170     \vskip \gnus@vert
171     \hbox{
172       \hskip \gnus@horiz
173       \box\gnusbox
174     }\vss
175   }
176   \vbox to \z@{ 
177     \ifdim \eyeins@height < \textheight
178       \eye@dim \textheight
179       \advance \eye@dim -\eyeins@height
180 %      \vskip \eye@dim
181     \else 
182       \eye@dim \eye@height
183       \advance \eye@dim -3cm
184       \ifdim \eyeins@height > \eye@dim
185       %   \vskip -3cm
186     \fi\fi
187     \hbox{
188       \ifodd\c@page \@rightidx \else \@leftidx \fi
189       \box\indexbox
190     }\vss
191   }
192
193   \global\eyeins@height\z@
194
195 }
196
197 \def\raggedbottom{\def\@textbottom{\vskip
198       \z@ plus.0001fil}\let\@texttop\@mkidx}
199 \def\flushbottom{\let\@textbottom\relax \let\@texttop\@mkidx}
200
201 \def\margindex#1{\@bsphack
202 \begingroup\@sanitize\catcode32=10\relax\@showidx{#1}
203  \endgroup\@esphack}
204
205 \def\@gnusfig#1{
206   \insert\gnusbox{
207      \small
208      \hsize\textwidth
209      \hangindent\marginparsep 
210      \parindent\z@
211      \parfillskip\@flushglue
212      \everypar{}\let\par\@@par 
213      \lineskip\normallineskip
214      \baselineskip .8\normalbaselineskip
215      \ifodd\c@page\raggedleft\else\raggedright\fi
216      \leavevmode
217      \relax
218      #1
219      \relax
220   }
221 }
222
223 \def\gnusfig#1#2#3{\@bsphack
224 \begingroup\@sanitize\catcode32=10\relax\@gnusfig{#3}\global\gnus@horiz#1 \global\gnus@vert#2
225  \endgroup\@esphack}
226
227 \flushbottom
228
229 \endinput