bundle preview.sty to avoid versioning headaches
[coq-hetmet.git] / examples / tex-bits / preview.sty
1 %%
2 %% This is file `preview.sty',
3 %% generated with the docstrip utility.
4 %%
5 %% The original source files were:
6 %%
7 %% preview.dtx  (with options: `style')
8 %% preview.dtx  (with options: `style,active')
9 %% 
10 %% IMPORTANT NOTICE:
11 %% 
12 %% For the copyright see the source file.
13 %% 
14 %% Any modified versions of this file must be renamed
15 %% with new filenames distinct from preview.sty.
16 %% 
17 %% For distribution of the original source see the terms
18 %% for copying and modification in the file preview.dtx preview.dtx.
19 %% 
20 %% This generated file may be distributed as long as the
21 %% original source files, as listed above, are part of the
22 %% same distribution. (The sources need not necessarily be
23 %% in the same archive or directory.)
24 %%    The preview style for extracting previews from LaTeX documents.
25 %%    Developed as part of AUCTeX <URL:http://www.gnu.org/software/auctex>.
26 \NeedsTeXFormat{LaTeX2e} \def\reserved@a #1#2$#3:
27 #4${\xdef#1{\reserved@c #2#4 $}} \def\reserved@c #1 #2${#1}
28 \begingroup \catcode`\_=12
29 \reserved@a\pr@version $Name: release_11_86 $ \ifx\pr@version\@empty
30 \reserved@a\pr@version CVS-$Revision: 1.126 $ \endgroup \else
31   \def\next release_{} \lccode`\_=`.
32   \edef\next{\lowercase{\endgroup
33     \def\noexpand\pr@version{\expandafter\next\pr@version}}} \next \fi
34 \reserved@a\next $Date: 2010/02/14 16:19:00 $
35 \edef\next{\noexpand\ProvidesPackage{preview}%
36   [\next\space \pr@version\space (AUCTeX/preview-latex)]}
37 \next
38 \let\ifPreview\iffalse
39 \let\preview@delay=\@gobble
40 \let\pr@advise=\@gobbletwo
41 \long\def\pr@advise@ship#1#2#3{}
42 \def\pr@loadcfg#1{\InputIfFileExists{#1.cfg}{}{}}
43 \DeclareOption{noconfig}{\let\pr@loadcfg=\@gobble}
44 \long\def\pr@addto@front#1#2{%
45   \toks@{#2}\toks@\expandafter{\the\expandafter\toks@#1}%
46   \xdef#1{\the\toks@}}
47 \DeclareOption{active}{%
48   \let\ifPreview\iftrue
49   \def\pr@advise#1{%
50     \expandafter\pr@adviseii\csname pr@\string#1\endcsname#1}%
51   \long\def\pr@advise@ship#1#2#3{\pr@advise#1{\pr@protect@ship{#2}{#3}}}%
52   \let\preview@delay\@firstofone}
53 \long\def\pr@adviseii#1#2#3{\preview@delay{%
54   \ifx#1\relax \let#1#2\fi
55   \toks@{#3#1}%
56   \ifx\@undefined\protected \else \protected\fi
57   \long\edef#2{\the\toks@}}}
58 \DeclareOption{delayed}{%
59   \ifPreview \def\preview@delay{\AtBeginDocument}\fi
60 }
61 \newif\ifpr@fixbb
62 \pr@fixbbfalse
63 \DeclareOption{psfixbb}{\ifPreview%
64   \pr@fixbbtrue
65   \newbox\pr@markerbox
66   \setbox\pr@markerbox\hbox{\special{psfile=/dev/null}}\fi
67 }
68 \let\pr@graphicstype=\z@
69 \DeclareOption{dvips}{%
70   \let\pr@graphicstype\@ne
71   \preview@delay{\AtBeginDvi{%
72       \special{!/preview@version(\pr@version)def}
73       \special{!userdict begin/preview-bop-level 0 def%
74       /bop-hook{/preview-bop-level dup load dup 0 le{/isls false def%
75           /vsize 792 def/hsize 612 def}if 1 add store}bind def%
76       /eop-hook{/preview-bop-level dup load dup 0 gt{1 sub}if
77         store}bind def end}}}}
78 \DeclareOption{pdftex}{%
79   \let\pr@graphicstype\tw@}
80 \DeclareOption{xetex}{%
81   \let\pr@graphicstype\thr@@}
82 \begingroup
83 \catcode`\*=11
84 \@firstofone{\endgroup
85 \DeclareOption{displaymath}{%
86   \preview@delay{\toks@{%
87       \pr@startbox{\noindent$$%
88         \aftergroup\pr@endbox\@gobbletwo}{$$}\@firstofone}%
89     \everydisplay\expandafter{\the\expandafter\toks@
90       \expandafter{\the\everydisplay}}}%
91   \pr@advise@ship\equation{\begingroup\aftergroup\pr@endbox
92     \def\dt@ptrue{\m@ne=\m@ne}\noindent}%
93     {\endgroup}%
94   \pr@advise@ship\equation*{\begingroup\aftergroup\pr@endbox
95     \def\dt@ptrue{\m@ne=\m@ne}\noindent}%
96     {\endgroup}%
97   \PreviewOpen[][\def\dt@ptrue{\m@ne=\m@ne}\noindent#1]\[%
98   \PreviewClose\]%
99   \PreviewEnvironment[][\noindent#1]{eqnarray}%
100   \PreviewEnvironment[][\noindent#1]{eqnarray*}%
101   \PreviewEnvironment{displaymath}%
102 }}
103 \begingroup
104 \def\next#1#2{%
105   \endgroup
106   \DeclareOption{textmath}{%
107     \PreviewEnvironment{math}%
108     \preview@delay{\ifx#1\@undefined \let#1=$%$
109       \fi\catcode`\$=\active
110       \ifx\xyreuncatcodes\@undefined\else
111         \edef\next{\catcode`@=\the\catcode`@\relax}%
112         \makeatother\expandafter\xyreuncatcodes\next\fi}%
113     \pr@advise@ship\(\pr@endaftergroup{}% \)
114     \pr@advise@ship#1{\@firstoftwo{\let#1=#2%
115         \futurelet\reserved@a\pr@textmathcheck}}{}}%
116   \def\pr@textmathcheck{\expandafter\pr@endaftergroup
117     \ifx\reserved@a#1{#2#2}\expandafter\@gobbletwo\fi#2}}
118 \lccode`\~=`\$
119 \lowercase{\expandafter\next\expandafter~}%
120   \csname pr@\string$%$
121   \endcsname
122 \DeclareOption{graphics}{%
123   \PreviewMacro[*[[!]{\includegraphics}%]]
124 }
125 \def\pr@floatfix#1#2{\ifx#1#2%
126   \ifx#1\@undefined\else
127   \PackageWarningNoLine{preview}{%
128 Your document class has a bad definition^^J
129 of \string#1, most likely^^J
130 \string\let\string#1=\string#2^^J
131 which has now been changed to^^J
132 \string\def\string#1{\string#2}^^J
133 because otherwise subsequent changes to \string#2^^J
134 (like done by several packages changing float behaviour)^^J
135 can't take effect on \string#1.^^J
136 Please complain to your document class author}%
137   \def#1{#2}\fi\fi}
138 \begingroup
139 \def\next#1#2{\endgroup
140   \DeclareOption{floats}{%
141     \pr@floatfix\endfigure\end@float
142     \pr@floatfix\endtable\end@float
143     \pr@floatfix#1\end@dblfloat
144     \pr@floatfix#2\end@dblfloat
145     \PreviewSnarfEnvironment[![]{@float}%]
146     \PreviewSnarfEnvironment[![]{@dblfloat}%]
147   }}
148 \expandafter\next\csname endfigure*\expandafter\endcsname
149   \csname endtable*\endcsname
150 \DeclareOption{sections}{%
151   \PreviewMacro[!!!!!!*[[!]{\@startsection}%]]
152   \PreviewMacro[*[[!]{\chapter}%]]
153 }
154 \DeclareOption*
155    {\InputIfFileExists{pr\CurrentOption.def}{}{\OptionNotUsed}}
156 \def\PreviewMacro{\@ifstar\pr@starmacro\pr@macro}
157 \long\def\pr@domacro#1#2{%
158    \long\def\next##1{#2}%
159    \pr@callafter\next#1]\pr@endparse}
160 \newcommand\pr@macro[1][]{%
161    \toks@{\pr@domacro{#1}}%
162    \long\edef\next[##1]##2{%
163     \noexpand\pr@advise@ship{##2}{\the\toks@{##1\noexpand\pr@endbox}}{}}%
164    \@ifnextchar[\next\pr@macroii}
165 \def\pr@macroii{\next[##1]}
166 \long\def\pr@endmacro#1{#1\pr@endbox}
167 \long\def\pr@protect@domacro#1#2{\pr@protect{%
168     \long\def\next##1{#2}%
169     \pr@callafter\next#1]\pr@endparse}}
170 \newcommand\pr@starmacro[1][]{\toks@{\pr@protect@domacro{#1}}%
171     \long\edef\next[##1]##2{%
172       \noexpand\pr@advise##2{\the\toks@{##1}}}%
173     \@ifnextchar[\next{\next[]}}
174 \def\PreviewOpen{\@ifstar\pr@starmacro\pr@open}
175 \newcommand\pr@open[1][]{%
176    \toks@{\pr@domacro{#1}}%
177    \long\edef\next[##1]##2{%
178      \noexpand\pr@advise##2{\begingroup
179      \noexpand\pr@protect@ship
180         {\the\toks@{\begingroup\aftergroup\noexpand\pr@endbox##1}}%
181         {\endgroup}}}%
182    \@ifnextchar[\next\pr@macroii}
183 \def\PreviewClose{\@ifstar\pr@starmacro\pr@close}
184 \newcommand\pr@close[1][]{%
185   \toks@{\pr@domacro{#1}}%
186   \long\edef\next[##1]##2{%
187    \noexpand\pr@advise{##2}{\the\toks@{##1\endgroup}}}%
188    \@ifnextchar[\next\pr@macroii}
189 \def\PreviewEnvironment{\@ifstar\pr@starenv\pr@env}
190 \newcommand\pr@starenv[1][]{\toks@{\pr@starmacro[{#1}]}%
191   \long\edef\next##1##2{%
192     \the\toks@[{##2}]##1}%
193   \begingroup\pr@starenvii}
194 \newcommand\pr@starenvii[2][]{\endgroup
195   \expandafter\next\csname#2\endcsname{#1}%
196   \expandafter\pr@starmacro\csname end#2\endcsname}
197 \newcommand\pr@env[1][]{%
198    \toks@{\pr@domacro{#1}}%
199    \long\edef\next[##1]##2{%
200    \noexpand\expandafter\noexpand\pr@advise@ship
201      \noexpand\csname##2\noexpand\endcsname{\the\toks@
202       {\begingroup\aftergroup\noexpand\pr@endbox##1}}{\endgroup}}%
203    \@ifnextchar[\next\pr@macroii %]
204  }
205 \newcommand{\PreviewSnarfEnvironment}[2][]{%
206   \expandafter\pr@advise
207    \csname #2\endcsname{\pr@snarfafter{#1}}%
208  \expandafter\pr@advise
209    \csname end#2\endcsname{\pr@endsnarf}}
210 \let\pr@ship@start\@empty
211 \let\pr@ship@end\@empty
212 \newenvironment{preview}{\ignorespaces}{\ifhmode\unskip\fi}
213 \newenvironment{nopreview}{\ignorespaces}{\ifhmode\unskip\fi}
214 \ProcessOptions\relax
215 \ifPreview\else\expandafter\endinput\fi
216 %%    The preview style for extracting previews from LaTeX documents.
217 %%    Developed as part of AUCTeX <URL:http://www.gnu.org/software/auctex>.
218 \newif\ifpr@outer
219 \pr@outertrue
220 \newcount\pr@snippet
221 \global\pr@snippet=1
222 \def\pr@protect{\ifx\protect\@typeset@protect
223   \ifpr@outer \expandafter\expandafter\expandafter
224      \@secondoftwo\fi\fi\@gobble}
225 \def\pr@protect@ship{\pr@protect{\@firstoftwo\pr@startbox}%
226    \@gobbletwo}
227 \def\pr@insert{\begingroup\afterassignment\pr@insertii\count@}
228 \def\pr@insertii{\endgroup\setbox\pr@box\vbox}
229 \def\pr@mark{{\afterassignment}\toks@}
230 \def\pr@marks{{\aftergroup\pr@mark\afterassignment}\count@}
231 \newbox\pr@box
232 \long\def\pr@startbox#1#2{%
233   \ifpr@outer
234     \toks@{#2}%
235     \edef\pr@cleanup{\the\toks@}%
236     \setbox\pr@box\vbox\bgroup
237     \break
238     \pr@outerfalse\@arrayparboxrestore
239     \let\insert\pr@insert
240     \let\mark\pr@mark
241     \let\marks\pr@marks
242     \expandafter\expandafter\expandafter
243     \pr@ship@start
244     \expandafter\@firstofone
245   \else
246      \expandafter \@gobble
247   \fi{#1}}
248 \def\pr@endbox{%
249    \let\reserved@a\relax
250    \ifvmode \edef\reserved@a{\the\everypar}%
251       \ifx\reserved@a\@empty\else
252             \dimen@\prevdepth
253             \noindent\par
254             \setbox\z@\lastbox\unskip\unpenalty
255             \prevdepth\dimen@
256             \setbox\z@\hbox\bgroup\penalty-\maxdimen\unhbox\z@
257               \ifnum\lastpenalty=-\maxdimen\egroup
258               \else\egroup\box\z@ \fi\fi\fi
259    \ifhmode \par\unskip\setbox\z@\lastbox
260      \nointerlineskip\hbox{\unhbox\z@\/}%
261    \else \unskip\unpenalty\unskip \fi
262    \egroup
263    \setbox\pr@box\vbox{%
264        \baselineskip\z@skip \lineskip\z@skip \lineskiplimit\z@
265        \@begindvi
266        \nointerlineskip
267        \splittopskip\z@skip\setbox\z@\vsplit\pr@box to\z@
268        \unvbox\z@
269        \nointerlineskip
270        %\color@setgroup
271        \box\pr@box
272        %\color@endgroup
273      }%
274    \pr@ship@end
275    {\let\protect\noexpand
276    \ifx\pr@offset@override\@undefined
277      \voffset=-\ht\pr@box
278      \hoffset=\z@
279    \fi
280    \c@page=\pr@snippet
281    \pr@shipout
282    \ifpr@fixbb\hbox{%
283      \dimen@\wd\pr@box
284      \@tempdima\ht\pr@box
285      \@tempdimb\dp\pr@box
286      \box\pr@box
287      \llap{\raise\@tempdima\copy\pr@markerbox\kern\dimen@}%
288      \lower\@tempdimb\copy\pr@markerbox}%
289    \else \box\pr@box \fi}%
290    \global\advance\pr@snippet\@ne
291    \pr@cleanup
292 }
293 \let\pr@shipout=\shipout
294 \def\shipout{\deadcycles\z@\bgroup\setbox\z@\box\voidb@x
295   \afterassignment\pr@shipoutegroup\setbox\z@}
296 \def\pr@shipoutegroup{\ifvoid\z@ \expandafter\aftergroup\fi \egroup}
297 \def\pr@parseit#1{\csname pr@parse#1\endcsname}
298 \let\pr@endparse=\@percentchar
299 \def\next#1{%
300 \def\pr@callafter{%
301   \afterassignment\pr@parseit
302   \let#1= }}
303 \expandafter\next\csname pr@parse\pr@endparse\endcsname
304 \long\expandafter\def\csname pr@parse*\endcsname#1\pr@endparse#2{%
305   \begingroup\toks@{#1\pr@endparse{#2}}%
306   \edef\next##1{\endgroup##1\the\toks@}%
307   \@ifstar{\next{\pr@parse@*}}{\next\pr@parseit}}
308 \long\expandafter\def\csname pr@parse[\endcsname#1\pr@endparse#2{%
309   \begingroup\toks@{#1\pr@endparse{#2}}%
310   \edef\next##1{\endgroup##1\the\toks@}%
311   \@ifnextchar[{\next\pr@bracket}{\next\pr@parseit}}
312 \long\def\pr@bracket#1\pr@endparse#2[#3]{%
313    \pr@parseit#1\pr@endparse{#2[{#3}]}}
314 \expandafter\let\csname pr@parse]\endcsname=\pr@parseit
315 \long\def\pr@parse#1\pr@endparse#2#3{%
316   \pr@parseit#1\pr@endparse{#2{#3}}}
317 \expandafter\let\csname pr@parse!\endcsname=\pr@parse
318 \long\expandafter\def\csname pr@parse?\endcsname#1#2\pr@endparse#3{%
319   \begingroup\toks@{#2\pr@endparse{#3}}%
320   \@ifnextchar#1{\pr@parsecond\@firstoftwo}%
321                 {\pr@parsecond\@secondoftwo}}
322 \def\pr@parsecond#1{\expandafter\endgroup
323   \expandafter\expandafter\expandafter\pr@parseit
324   \expandafter#1\the\toks@}
325  \long\def\pr@parse@#1#2\pr@endparse#3{%
326    \pr@parseit #2\pr@endparse{#3#1}}
327 \long\expandafter\def\csname pr@parse-\endcsname
328   #1\pr@endparse#2{\begingroup
329   \toks@{\endgroup\pr@parseit #1\pr@endparse{#2}}%
330   {\aftergroup\the\aftergroup\toks@ \afterassignment}%
331   \let\next= }
332 \long\expandafter\def\csname pr@parse:\endcsname
333   #1#2#3\pr@endparse#4{\begingroup
334     \toks@{\endgroup \pr@parseit#3\pr@endparse{#4}}%
335     \long\def\next#1{#2}%
336     \the\expandafter\toks@\next}
337 \long\expandafter\def\csname pr@parse#\endcsname
338   #1#2#3\pr@endparse#4{\begingroup
339     \toks@{#4}%
340     \long\edef\next##1{\toks@{\the\toks@##1}}%
341     \toks@{\endgroup \pr@parseit#3\pr@endparse}%
342     \long\def\reserved@a#1{{#2}}%
343     \the\expandafter\next\reserved@a}
344 \def\pr@endaftergroup#1{#1\aftergroup\pr@endbox}
345 \let\pr@endsnarf\relax
346 \long\def\pr@snarfafter#1{\ifpr@outer
347      \pr@ship@start
348      \let\pr@ship@start\relax
349      \let\pr@endsnarf\endgroup
350    \else
351      \let\pr@endsnarf\relax
352    \fi
353   \pr@protect{\pr@callafter\pr@startsnarf#1]\pr@endparse}}
354 \def\pr@startsnarf#1{#1\begingroup
355    \pr@startbox{\begingroup\aftergroup\pr@endbox}{\endgroup}%
356    \ignorespaces}
357 \renewenvironment{preview}{\begingroup
358    \pr@startbox{\begingroup\aftergroup\pr@endbox}%
359                {\endgroup}%
360    \ignorespaces}%
361    {\ifhmode\unskip\fi\endgroup}
362 \renewenvironment{nopreview}{\pr@outerfalse\ignorespaces}%
363   {\ifhmode\unskip\fi}
364 \newtoks\pr@output
365 \pr@output\output
366 \output{%
367   \pr@outerfalse
368   \let\@begindvi\@empty
369   \the\pr@output}
370 \let\output\pr@output
371 \def\pr@typeinfos{\typeout{Preview: Fontsize \f@size pt}%
372   \ifnum\mag=\@m\else\typeout{Preview: Magnification \number\mag}\fi
373   \ifx\pdfoutput\@undefined
374     \ifx\XeTeXversion\@undefined \else
375       % FIXME: The message should not be emitted if XeTeX does not produce
376       % PDF.  There does not seem to be a primitive for that, though.
377       \typeout{Preview: PDFoutput 1}%
378     \fi
379   \else
380     \ifx\pdfoutput\relax \else
381       \ifnum\pdfoutput>\z@
382         \typeout{Preview: PDFoutput 1}%
383       \fi
384     \fi
385   \fi
386 }
387 \AtBeginDocument{\pr@typeinfos}
388 \pr@loadcfg{prdefault}
389 \endinput
390 %%
391 %% End of file `preview.sty'.