402 lines
14 KiB
TeX
402 lines
14 KiB
TeX
%%
|
|
%% This is file `preview.sty',
|
|
%% generated with the docstrip utility.
|
|
%%
|
|
%% The original source files were:
|
|
%%
|
|
%% preview.dtx (with options: `style')
|
|
%% preview.dtx (with options: `style,active')
|
|
%%
|
|
%% IMPORTANT NOTICE:
|
|
%%
|
|
%% For the copyright see the source file.
|
|
%%
|
|
%% Any modified versions of this file must be renamed
|
|
%% with new filenames distinct from preview.sty.
|
|
%%
|
|
%% For distribution of the original source see the terms
|
|
%% for copying and modification in the file preview.dtx preview.dtx.
|
|
%%
|
|
%% This generated file may be distributed as long as the
|
|
%% original source files, as listed above, are part of the
|
|
%% same distribution. (The sources need not necessarily be
|
|
%% in the same archive or directory.)
|
|
%% The preview style for extracting previews from LaTeX documents.
|
|
%% Developed as part of AUCTeX <URL:https://www.gnu.org/software/auctex/>.
|
|
\NeedsTeXFormat{LaTeX2e}
|
|
\def\pr@version{13.2}
|
|
\def\pr@date{2023/01/17}
|
|
\ProvidesPackage{preview}[\pr@date\space \pr@version\space (AUCTeX/preview-latex)]
|
|
\let\ifPreview\iffalse
|
|
\let\preview@delay=\@gobble
|
|
\let\pr@advise=\@gobbletwo
|
|
\long\def\pr@advise@ship#1#2#3{}
|
|
\def\pr@loadcfg#1{\InputIfFileExists{#1.cfg}{}{}}
|
|
\IfFileExists{luatex85.sty}{\RequirePackage{luatex85}}{}
|
|
\DeclareOption{noconfig}{\let\pr@loadcfg=\@gobble}
|
|
\long\def\pr@addto@front#1#2{%
|
|
\toks@{#2}\toks@\expandafter{\the\expandafter\toks@#1}%
|
|
\xdef#1{\the\toks@}}
|
|
\DeclareOption{active}{%
|
|
\let\ifPreview\iftrue
|
|
\def\pr@advise#1{%
|
|
\expandafter\pr@adviseii\csname pr@\string#1\endcsname#1}%
|
|
\long\def\pr@advise@ship#1#2#3{\pr@advise#1{\pr@protect@ship{#2}{#3}}}%
|
|
\let\preview@delay\@firstofone}
|
|
\long\def\pr@adviseii#1#2#3{\preview@delay{%
|
|
\ifx#1\relax \let#1#2\fi
|
|
\toks@{#3#1}%
|
|
\ifx\@undefined\protected \else \protected\fi
|
|
\long\edef#2{\the\toks@}}}
|
|
\DeclareOption{delayed}{%
|
|
\ifPreview \def\preview@delay{\AtBeginDocument}\fi
|
|
}
|
|
\newif\ifpr@fixbb
|
|
\pr@fixbbfalse
|
|
\DeclareOption{psfixbb}{\ifPreview%
|
|
\pr@fixbbtrue
|
|
\newbox\pr@markerbox
|
|
\setbox\pr@markerbox\hbox{\special{psfile=/dev/null}}\fi
|
|
}
|
|
\let\pr@graphicstype=\z@
|
|
\DeclareOption{dvips}{%
|
|
\let\pr@graphicstype\@ne
|
|
\preview@delay{\AtBeginDvi{%
|
|
\special{!/preview@version(\pr@version)def}
|
|
\special{!userdict begin/preview-bop-level 0 def%
|
|
/bop-hook{/preview-bop-level dup load dup 0 le{/isls false def%
|
|
/vsize 792 def/hsize 612 def}if 1 add store}bind def%
|
|
/eop-hook{/preview-bop-level dup load dup 0 gt{1 sub}if
|
|
store}bind def end}}}}
|
|
\DeclareOption{pdftex}{%
|
|
\let\pr@graphicstype\tw@}
|
|
\DeclareOption{xetex}{%
|
|
\let\pr@graphicstype\thr@@}
|
|
\begingroup
|
|
\catcode`\*=11
|
|
\@firstofone{\endgroup
|
|
\DeclareOption{displaymath}{%
|
|
\preview@delay{\toks@{%
|
|
\pr@startbox{\noindent$$%
|
|
\aftergroup\pr@endbox\@gobbletwo}{$$}\@firstofone}%
|
|
\everydisplay\expandafter{\the\expandafter\toks@
|
|
\expandafter{\the\everydisplay}}}%
|
|
\pr@advise@ship\equation{\begingroup\aftergroup\pr@endbox
|
|
\def\dt@ptrue{\m@ne=\m@ne}\noindent}%
|
|
{\endgroup}%
|
|
\pr@advise@ship\equation*{\begingroup\aftergroup\pr@endbox
|
|
\def\dt@ptrue{\m@ne=\m@ne}\noindent}%
|
|
{\endgroup}%
|
|
\PreviewOpen[][\def\dt@ptrue{\m@ne=\m@ne}\noindent#1]\[%
|
|
\PreviewClose\]%
|
|
\PreviewEnvironment[][\noindent#1]{eqnarray}%
|
|
\PreviewEnvironment[][\noindent#1]{eqnarray*}%
|
|
\PreviewEnvironment{displaymath}%
|
|
}}
|
|
\begingroup
|
|
\def\next#1#2{%
|
|
\endgroup
|
|
\DeclareOption{textmath}{%
|
|
\PreviewEnvironment{math}%
|
|
\preview@delay{\ifx#1\@undefined \let#1=$%$
|
|
\fi\catcode`\$=\active
|
|
\ifx\xyreuncatcodes\@undefined\else
|
|
\edef\next{\catcode`@=\the\catcode`@\relax}%
|
|
\makeatother\expandafter\xyreuncatcodes\next\fi}%
|
|
\pr@advise@ship\(\pr@endaftergroup{}% \)
|
|
\pr@advise@ship#1{\@firstoftwo{\let#1=#2%
|
|
\futurelet\reserved@a\pr@textmathcheck}}{}}%
|
|
\def\pr@textmathcheck{\expandafter\pr@endaftergroup
|
|
\ifx\reserved@a#1{#2#2}\expandafter\@gobbletwo\fi#2}}
|
|
\lccode`\~=`\$
|
|
\lowercase{\expandafter\next\expandafter~}%
|
|
\csname pr@\string$%$
|
|
\endcsname
|
|
\DeclareOption{graphics}{%
|
|
\PreviewMacro[*[[!]{\includegraphics}%]]
|
|
}
|
|
\def\pr@floatfix#1#2{\ifx#1#2%
|
|
\ifx#1\@undefined\else
|
|
\PackageWarningNoLine{preview}{%
|
|
Your document class has a bad definition^^J
|
|
of \string#1, most likely^^J
|
|
\string\let\string#1=\string#2^^J
|
|
which has now been changed to^^J
|
|
\string\def\string#1{\string#2}^^J
|
|
because otherwise subsequent changes to \string#2^^J
|
|
(like done by several packages changing float behaviour)^^J
|
|
can't take effect on \string#1.^^J
|
|
Please complain to your document class author}%
|
|
\def#1{#2}\fi\fi}
|
|
\begingroup
|
|
\def\next#1#2{\endgroup
|
|
\DeclareOption{floats}{%
|
|
\pr@floatfix\endfigure\end@float
|
|
\pr@floatfix\endtable\end@float
|
|
\pr@floatfix#1\end@dblfloat
|
|
\pr@floatfix#2\end@dblfloat
|
|
\PreviewSnarfEnvironment[![]{@float}%]
|
|
\PreviewSnarfEnvironment[![]{@dblfloat}%]
|
|
}}
|
|
\expandafter\next\csname endfigure*\expandafter\endcsname
|
|
\csname endtable*\endcsname
|
|
\DeclareOption{sections}{%
|
|
\PreviewMacro[!!!!!!*[[!]{\@startsection}%]]
|
|
\PreviewMacro[*[[!]{\chapter}%]]
|
|
}
|
|
\DeclareOption*
|
|
{\InputIfFileExists{pr\CurrentOption.def}{}{\OptionNotUsed}}
|
|
\def\PreviewMacro{\@ifstar\pr@starmacro\pr@macro}
|
|
\long\def\pr@domacro#1#2{%
|
|
\long\def\next##1{#2}%
|
|
\pr@callafter\next#1]\pr@endparse}
|
|
\newcommand\pr@macro[1][]{%
|
|
\toks@{\pr@domacro{#1}}%
|
|
\long\edef\next[##1]##2{%
|
|
\noexpand\pr@advise@ship{##2}{\the\toks@{##1\noexpand\pr@endbox}}{}}%
|
|
\@ifnextchar[\next\pr@macroii}
|
|
\def\pr@macroii{\next[##1]}
|
|
\long\def\pr@endmacro#1{#1\pr@endbox}
|
|
\long\def\pr@protect@domacro#1#2{\pr@protect{%
|
|
\long\def\next##1{#2}%
|
|
\pr@callafter\next#1]\pr@endparse}}
|
|
\newcommand\pr@starmacro[1][]{\toks@{\pr@protect@domacro{#1}}%
|
|
\long\edef\next[##1]##2{%
|
|
\noexpand\pr@advise##2{\the\toks@{##1}}}%
|
|
\@ifnextchar[\next{\next[]}}
|
|
\def\PreviewOpen{\@ifstar\pr@starmacro\pr@open}
|
|
\newcommand\pr@open[1][]{%
|
|
\toks@{\pr@domacro{#1}}%
|
|
\long\edef\next[##1]##2{%
|
|
\noexpand\pr@advise##2{\begingroup
|
|
\noexpand\pr@protect@ship
|
|
{\the\toks@{\begingroup\aftergroup\noexpand\pr@endbox##1}}%
|
|
{\endgroup}}}%
|
|
\@ifnextchar[\next\pr@macroii}
|
|
\def\PreviewClose{\@ifstar\pr@starmacro\pr@close}
|
|
\newcommand\pr@close[1][]{%
|
|
\toks@{\pr@domacro{#1}}%
|
|
\long\edef\next[##1]##2{%
|
|
\noexpand\pr@advise{##2}{\the\toks@{##1\endgroup}}}%
|
|
\@ifnextchar[\next\pr@macroii}
|
|
\def\PreviewEnvironment{\@ifstar\pr@starenv\pr@env}
|
|
\newcommand\pr@starenv[1][]{\toks@{\pr@starmacro[{#1}]}%
|
|
\long\edef\next##1##2{%
|
|
\the\toks@[{##2}]##1}%
|
|
\begingroup\pr@starenvii}
|
|
\newcommand\pr@starenvii[2][]{\endgroup
|
|
\expandafter\next\csname#2\endcsname{#1}%
|
|
\expandafter\pr@starmacro\csname end#2\endcsname}
|
|
\newcommand\pr@env[1][]{%
|
|
\toks@{\pr@domacro{#1}}%
|
|
\long\edef\next[##1]##2{%
|
|
\noexpand\expandafter\noexpand\pr@advise@ship
|
|
\noexpand\csname##2\noexpand\endcsname{\the\toks@
|
|
{\begingroup\aftergroup\noexpand\pr@endbox##1}}{\endgroup}}%
|
|
\@ifnextchar[\next\pr@macroii %]
|
|
}
|
|
\newcommand{\PreviewSnarfEnvironment}[2][]{%
|
|
\expandafter\pr@advise
|
|
\csname #2\endcsname{\pr@snarfafter{#1}}%
|
|
\expandafter\pr@advise
|
|
\csname end#2\endcsname{\pr@endsnarf}}
|
|
\let\pr@ship@start\@empty
|
|
\let\pr@ship@end\@empty
|
|
\newenvironment{preview}{\ignorespaces}{\ifhmode\unskip\fi}
|
|
\newenvironment{nopreview}{\ignorespaces}{\ifhmode\unskip\fi}
|
|
\ProcessOptions\relax
|
|
\ifPreview\else\expandafter\endinput\fi
|
|
%% The preview style for extracting previews from LaTeX documents.
|
|
%% Developed as part of AUCTeX <URL:https://www.gnu.org/software/auctex/>.
|
|
\newif\ifpr@outer
|
|
\pr@outertrue
|
|
\newcount\pr@snippet
|
|
\global\pr@snippet=1
|
|
\def\pr@protect{\ifx\protect\@typeset@protect
|
|
\ifpr@outer \expandafter\expandafter\expandafter
|
|
\@secondoftwo\fi\fi\@gobble}
|
|
\def\pr@protect@ship{\pr@protect{\@firstoftwo\pr@startbox}%
|
|
\@gobbletwo}
|
|
\def\pr@insert{\begingroup\afterassignment\pr@insertii\count@}
|
|
\def\pr@insertii{\endgroup\setbox\pr@box\vbox}
|
|
\def\pr@mark{{\afterassignment}\toks@}
|
|
\def\pr@marks{{\aftergroup\pr@mark\afterassignment}\count@}
|
|
\newbox\pr@box
|
|
\long\def\pr@startbox#1#2{%
|
|
\ifpr@outer
|
|
\toks@{#2}%
|
|
\edef\pr@cleanup{\the\toks@}%
|
|
\setbox\pr@box\vbox\bgroup
|
|
\break
|
|
\pr@outerfalse\@arrayparboxrestore
|
|
\let\insert\pr@insert
|
|
\let\mark\pr@mark
|
|
\let\marks\pr@marks
|
|
\expandafter\expandafter\expandafter
|
|
\pr@ship@start
|
|
\expandafter\@firstofone
|
|
\else
|
|
\expandafter \@gobble
|
|
\fi{#1}}
|
|
\def\pr@endbox{%
|
|
\let\reserved@a\relax
|
|
\ifvmode \edef\reserved@a{\the\everypar}%
|
|
\ifx\reserved@a\@empty\else
|
|
\dimen@\prevdepth
|
|
\noindent\par
|
|
\setbox\z@\lastbox\unskip\unpenalty
|
|
\prevdepth\dimen@
|
|
\setbox\z@\hbox\bgroup\penalty-\maxdimen\unhbox\z@
|
|
\ifnum\lastpenalty=-\maxdimen\egroup
|
|
\else\egroup\box\z@ \fi\fi\fi
|
|
\ifhmode \par\unskip\setbox\z@\lastbox
|
|
\nointerlineskip\hbox{\unhbox\z@\/}%
|
|
\else \unskip\unpenalty\unskip \fi
|
|
\egroup
|
|
\setbox\pr@box\vbox{%
|
|
\baselineskip\z@skip \lineskip\z@skip \lineskiplimit\z@
|
|
\@begindvi
|
|
\nointerlineskip
|
|
\splittopskip\z@skip\setbox\z@\vsplit\pr@box to\z@
|
|
\unvbox\z@
|
|
\nointerlineskip
|
|
%\color@setgroup
|
|
\box\pr@box
|
|
%\color@endgroup
|
|
}%
|
|
\pr@ship@end
|
|
{\let\protect\noexpand
|
|
\ifx\pr@offset@override\@undefined
|
|
\voffset=-\ht\pr@box
|
|
\hoffset=\z@
|
|
\fi
|
|
\c@page=\pr@snippet
|
|
\pr@shipout
|
|
\ifpr@fixbb\hbox{%
|
|
\dimen@\wd\pr@box
|
|
\@tempdima\ht\pr@box
|
|
\@tempdimb\dp\pr@box
|
|
\box\pr@box
|
|
\llap{\raise\@tempdima\copy\pr@markerbox\kern\dimen@}%
|
|
\lower\@tempdimb\copy\pr@markerbox}%
|
|
\else \box\pr@box \fi}%
|
|
\global\advance\pr@snippet\@ne
|
|
\pr@cleanup
|
|
}
|
|
\def\pr@@shipout{\deadcycles\z@\bgroup\setbox\z@\box\voidb@x
|
|
\afterassignment\pr@shipoutegroup\setbox\z@}
|
|
\def\pr@shipoutegroup{\ifvoid\z@ \expandafter\aftergroup\fi \egroup}
|
|
\ifx\shipout\@undefined
|
|
\begingroup
|
|
\catcode`\:=10
|
|
\catcode`\_=10
|
|
\ifx\tex_shipout:D\@undefined
|
|
\PackageError{preview}{Cannot find \protect\shipout\space primitive}%
|
|
{preview needs to replace the \protect\shipout\space primitive with
|
|
its own routine to do its work. Due to packages or formats
|
|
interfering, it cannot be identified. Please report this.}
|
|
\else
|
|
\global\let\pr@shipout=\tex_shipout:D
|
|
\global\let\tex_shipout:D=\pr@@shipout
|
|
\fi
|
|
\endgroup
|
|
\else
|
|
\let\pr@shipout=\shipout
|
|
\let\shipout=\pr@@shipout
|
|
\fi
|
|
\def\pr@parseit#1{\csname pr@parse#1\endcsname}
|
|
\let\pr@endparse=\@percentchar
|
|
\def\next#1{%
|
|
\def\pr@callafter{%
|
|
\afterassignment\pr@parseit
|
|
\let#1= }}
|
|
\expandafter\next\csname pr@parse\pr@endparse\endcsname
|
|
\long\expandafter\def\csname pr@parse*\endcsname#1\pr@endparse#2{%
|
|
\begingroup\toks@{#1\pr@endparse{#2}}%
|
|
\edef\next##1{\endgroup##1\the\toks@}%
|
|
\@ifstar{\next{\pr@parse@*}}{\next\pr@parseit}}
|
|
\long\expandafter\def\csname pr@parse[\endcsname#1\pr@endparse#2{%
|
|
\begingroup\toks@{#1\pr@endparse{#2}}%
|
|
\edef\next##1{\endgroup##1\the\toks@}%
|
|
\@ifnextchar[{\next\pr@bracket}{\next\pr@parseit}}
|
|
\long\def\pr@bracket#1\pr@endparse#2[#3]{%
|
|
\pr@parseit#1\pr@endparse{#2[{#3}]}}
|
|
\expandafter\let\csname pr@parse]\endcsname=\pr@parseit
|
|
\long\def\pr@parse#1\pr@endparse#2#3{%
|
|
\pr@parseit#1\pr@endparse{#2{#3}}}
|
|
\expandafter\let\csname pr@parse!\endcsname=\pr@parse
|
|
\long\expandafter\def\csname pr@parse?\endcsname#1#2\pr@endparse#3{%
|
|
\begingroup\toks@{#2\pr@endparse{#3}}%
|
|
\@ifnextchar#1{\pr@parsecond\@firstoftwo}%
|
|
{\pr@parsecond\@secondoftwo}}
|
|
\def\pr@parsecond#1{\expandafter\endgroup
|
|
\expandafter\expandafter\expandafter\pr@parseit
|
|
\expandafter#1\the\toks@}
|
|
\long\def\pr@parse@#1#2\pr@endparse#3{%
|
|
\pr@parseit #2\pr@endparse{#3#1}}
|
|
\long\expandafter\def\csname pr@parse-\endcsname
|
|
#1\pr@endparse#2{\begingroup
|
|
\toks@{\endgroup\pr@parseit #1\pr@endparse{#2}}%
|
|
{\aftergroup\the\aftergroup\toks@ \afterassignment}%
|
|
\let\next= }
|
|
\long\expandafter\def\csname pr@parse:\endcsname
|
|
#1#2#3\pr@endparse#4{\begingroup
|
|
\toks@{\endgroup \pr@parseit#3\pr@endparse{#4}}%
|
|
\long\def\next#1{#2}%
|
|
\the\expandafter\toks@\next}
|
|
\long\expandafter\def\csname pr@parse#\endcsname
|
|
#1#2#3\pr@endparse#4{\begingroup
|
|
\toks@{#4}%
|
|
\long\edef\next##1{\toks@{\the\toks@##1}}%
|
|
\toks@{\endgroup \pr@parseit#3\pr@endparse}%
|
|
\long\def\reserved@a#1{{#2}}%
|
|
\the\expandafter\next\reserved@a}
|
|
\def\pr@endaftergroup#1{#1\aftergroup\pr@endbox}
|
|
\let\pr@endsnarf\relax
|
|
\long\def\pr@snarfafter#1{\ifpr@outer
|
|
\pr@ship@start
|
|
\let\pr@ship@start\relax
|
|
\let\pr@endsnarf\endgroup
|
|
\else
|
|
\let\pr@endsnarf\relax
|
|
\fi
|
|
\pr@protect{\pr@callafter\pr@startsnarf#1]\pr@endparse}}
|
|
\def\pr@startsnarf#1{#1\begingroup
|
|
\pr@startbox{\begingroup\aftergroup\pr@endbox}{\endgroup}%
|
|
\ignorespaces}
|
|
\renewenvironment{preview}{\begingroup
|
|
\pr@startbox{\begingroup\aftergroup\pr@endbox}%
|
|
{\endgroup}%
|
|
\ignorespaces}%
|
|
{\ifhmode\unskip\fi\endgroup}
|
|
\renewenvironment{nopreview}{\pr@outerfalse\ignorespaces}%
|
|
{\ifhmode\unskip\fi}
|
|
\newtoks\pr@output
|
|
\pr@output\output
|
|
\output{%
|
|
\pr@outerfalse
|
|
\let\@begindvi\@empty
|
|
\the\pr@output}
|
|
\let\output\pr@output
|
|
\def\pr@typeinfos{\typeout{Preview: Fontsize \f@size pt}%
|
|
\ifnum\mag=\@m\else\typeout{Preview: Magnification \number\mag}\fi
|
|
\ifx\pdfoutput\@undefined
|
|
\ifx\XeTeXversion\@undefined \else
|
|
% FIXME: The message should not be emitted if XeTeX does not produce
|
|
% PDF. There does not seem to be a primitive for that, though.
|
|
\typeout{Preview: PDFoutput 1}%
|
|
\fi
|
|
\else
|
|
\ifx\pdfoutput\relax \else
|
|
\ifnum\pdfoutput>\z@
|
|
\typeout{Preview: PDFoutput 1}%
|
|
\fi
|
|
\fi
|
|
\fi
|
|
}
|
|
\AtBeginDocument{\pr@typeinfos}
|
|
\pr@loadcfg{prdefault}
|
|
\endinput
|
|
%%
|
|
%% End of file `preview.sty'.
|