You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
966 lines
27 KiB
966 lines
27 KiB
%% BEGIN fancybox.sty
|
|
%%
|
|
%% COPYRIGHT 1993-2010, by Timothy Van Zandt, Timothy.VAN-ZANDT@insead.edu
|
|
%%
|
|
%% DESCRIPTION:
|
|
%% fancybox.sty is a LaTeX style option, consisting of:
|
|
%% * Variants of \fbox: \shadowbox, \doublebox, \ovalbox, \Ovalbox.
|
|
%% * Helpful tools for using box macros.
|
|
%% * Extensive documentation about how to use box macros.
|
|
%% * Flexible verbatim macros.
|
|
%%
|
|
%% INSTALLATION:
|
|
%% Put this file where your TeX looks for inputs.
|
|
%%
|
|
%% DOCUMENTATION:
|
|
%% See fancybox.doc, which might be appended to this file.
|
|
%%
|
|
%% This file may be distributed and/or modified under the conditions of
|
|
%% the LaTeX Project Public License, either version 1.2 of this license
|
|
%% or (at your option) any later version. The latest version of this
|
|
%% license is in:
|
|
%%
|
|
%% http://www.latex-project.org/lppl.txt
|
|
%%
|
|
%% and version 1.2 or later is part of all distributions of LaTeX version
|
|
%% 1999/12/01 or later.
|
|
%%
|
|
%%
|
|
%%
|
|
\def\fileversion{1.4}
|
|
\def\filedate{2010/05/15}
|
|
% DG/SR modification begin - September 19, 2000
|
|
% (suggested by Heiko Oberdiek <oberdiek@ruf.uni-freiburg.de>)
|
|
\@ifundefined{ProvidesPackage}{}{%
|
|
\ProvidesPackage{fancybox}[\filedate\space\fileversion]}
|
|
% DG/SR modification end
|
|
% DG/SR modification begin - May 16, 1997
|
|
\providecommand\@begindvi{} % For rather old versions of LaTeX 2e
|
|
% DG/SR modification end
|
|
% DG/SR modification begin - Feb. 27, 1997
|
|
% Now defined only in latex209.def
|
|
\def\@lquote{\leavevmode{\kern\z@}`}
|
|
% DG/SR modification end
|
|
%% CODE:
|
|
\expandafter\ifx\csname fb@framepage\endcsname\relax\else
|
|
\expandafter\endinput
|
|
\fi
|
|
\typeout{Style option: `fancybox' v\fileversion \space <\filedate> (tvz)}
|
|
|
|
\newbox\@fancybox
|
|
\@ifundefined{@tempdimc}{\newdimen\@tempdimc}{}
|
|
|
|
%% \shadowbox
|
|
|
|
\newdimen\shadowsize
|
|
\shadowsize 4pt
|
|
|
|
\def\shadowbox{\VerbBox\@shadowbox}
|
|
\def\@shadowbox#1{%
|
|
\setbox\@fancybox\hbox{\fbox{#1}}%
|
|
\leavevmode\vbox{%
|
|
\offinterlineskip
|
|
\dimen@=\shadowsize
|
|
\advance\dimen@ .5\fboxrule
|
|
\hbox{\copy\@fancybox\kern-.5\fboxrule\lower\shadowsize\hbox{%
|
|
\vrule \@height\ht\@fancybox \@depth\dp\@fancybox \@width\dimen@}}%
|
|
\vskip-\dimen@
|
|
\moveright\shadowsize\vbox{%
|
|
\hrule \@width\wd\@fancybox \@height\dimen@}}}
|
|
|
|
% \fancyoval
|
|
|
|
\def\cornersize{\@ifstar{\@cornersize}{\@@cornersize}}
|
|
\def\@cornersize#1{%
|
|
\@tempdima=#1\relax
|
|
\edef\the@cornersize{\number\@tempdima sp}}
|
|
\def\@@cornersize#1{%
|
|
\edef\the@cornersize{#1\noexpand\@tempdimb}}
|
|
\cornersize{.5}
|
|
|
|
% This is just a simple change to \oval, making use of the \cornersize
|
|
% parameter instead of making the corner arcs are large as possible.
|
|
|
|
\def\fancyoval(#1,#2){\@ifnextchar[{\fancy@oval(#1,#2)}{\fancy@oval(#1,#2)[]}}
|
|
|
|
\def\fancy@oval(#1,#2)[#3]{%
|
|
\begingroup
|
|
\fancy@@oval{#1\unitlength}{#2\unitlength}{#3}%
|
|
\@put{-.5\wd\@tempboxa}{-.5\ht\@tempboxa}{\ht\@tempboxa=\z@\box\@tempboxa}%
|
|
\endgroup}
|
|
|
|
\def\fancy@@oval#1#2#3{%
|
|
\boxmaxdepth \maxdimen
|
|
\@ovttrue \@ovbtrue \@ovltrue \@ovrtrue
|
|
\@tfor\@tempa :=#3\do{\csname @ov\@tempa false\endcsname}%
|
|
\@ovxx#1\relax
|
|
\advance\@ovxx-\@wholewidth
|
|
\@ovyy#2\relax
|
|
\advance\@ovyy-\@wholewidth
|
|
\@tempdimb \ifdim \@ovyy >\@ovxx \@ovxx\else \@ovyy \fi
|
|
\advance\@tempdimb-2\p@
|
|
\ifdim\@tempdimb>\the@cornersize\relax
|
|
\@tempdimb=\the@cornersize
|
|
\fi
|
|
\@getcirc\@tempdimb
|
|
\@ovro\ht\@tempboxa \@ovri\dp\@tempboxa
|
|
\@ovdx\@ovxx \advance\@ovdx-\@tempdima \divide\@ovdx \tw@
|
|
\@ovdy\@ovyy \advance\@ovdy-\@tempdima \divide\@ovdy \tw@
|
|
\@circlefnt
|
|
\setbox\@tempboxa\hbox{%
|
|
\if@ovr \@ovvert32\kern -\@tempdima \fi
|
|
\if@ovl \kern \@ovxx \@ovvert01\kern -\@tempdima \kern -\@ovxx \fi
|
|
\if@ovt \@ovhorz \kern -\@ovxx \fi
|
|
\if@ovb \raise \@ovyy \@ovhorz \fi}%
|
|
\advance\@ovdx\@ovro
|
|
\advance\@ovdy\@ovro
|
|
\advance\@ovxx\@wholewidth
|
|
\wd\@tempboxa=\@ovxx
|
|
\dp\@tempboxa=\z@}
|
|
|
|
% \ovalbox
|
|
|
|
\def\ovalbox{\VerbBox{\@ovalbox\thinlines}}
|
|
\def\Ovalbox{\VerbBox{\@ovalbox\thicklines}}
|
|
\def\@ovalbox#1#2{%
|
|
\begingroup
|
|
#1\relax
|
|
\setbox\@fancybox\hbox{{#2}}%
|
|
\@tempdimc\fboxsep \advance\@tempdimc\@wholewidth
|
|
\@tempdima\ht\@fancybox \advance\@tempdima\dp\@fancybox
|
|
\advance\@tempdima2\@tempdimc
|
|
\@tempdimb\wd\@fancybox \advance\@tempdimb2\@tempdimc
|
|
\fancy@@oval\@tempdimb\@tempdima{}%
|
|
\@tempdima\dp\@fancybox \advance\@tempdima\@tempdimc
|
|
\wd\@tempboxa=\z@
|
|
\leavevmode\hbox{%
|
|
\lower\@tempdima\box\@tempboxa
|
|
\kern\@tempdimc\box\@fancybox\kern\@tempdimc}%
|
|
\endgroup}
|
|
|
|
% \doublebox
|
|
|
|
\def\doublebox{\VerbBox\@doublebox}
|
|
\def\@doublebox#1{%
|
|
\begingroup
|
|
\setbox\@fancybox\hbox{{#1}}%
|
|
\fboxrule=.75\fboxrule
|
|
\setbox\@fancybox\hbox{\fbox{\box\@fancybox}}%
|
|
\fboxrule=2\fboxrule
|
|
\fboxsep=\fboxrule
|
|
\advance\fboxsep .5pt
|
|
\fbox{\box\@fancybox}%
|
|
\endgroup}
|
|
|
|
% Frames for seminar.sty:
|
|
|
|
\@ifundefined{newslideframe}{}{%
|
|
\newslideframe{shadow}{\shadowbox{#1}}
|
|
\newslideframe{double}{\doublebox{#1}}
|
|
\newslideframe{oval}{\ovalbox{#1}}
|
|
\newslideframe{Oval}{\Ovalbox{#1}}}
|
|
|
|
% Sbox environment
|
|
|
|
\newbox\@Sbox
|
|
|
|
\def\Sbox{\global\setbox\@Sbox\hbox\bgroup\ignorespaces}
|
|
|
|
\def\endSbox{%
|
|
\@testtrue\ifhmode\ifinner\@testfalse\fi\fi
|
|
\if@test\@latexerr{Misplaced \string\endSbox! Should be in LR mode}\@ehd\fi
|
|
\egroup}
|
|
|
|
\def\TheSbox{%
|
|
\ifvoid\@Sbox
|
|
\@latexerr{\string\TheSbox\space is empty!}\@ehd
|
|
\else
|
|
\box\@Sbox
|
|
\fi}
|
|
|
|
\def\beginsbox#1{\setbox#1\hbox\bgroup\ignorespaces}
|
|
|
|
\def\endsbox{\endSbox}
|
|
|
|
% \VerbBox
|
|
|
|
\newtoks\do@VerbBox
|
|
|
|
\def\VerbBox#1{%
|
|
\do@VerbBox{#1}%
|
|
\afterassignment\begin@VerbBox
|
|
\setbox\@fancybox=\hbox}
|
|
\def\begin@VerbBox{\aftergroup\end@VerbBox}
|
|
\def\end@VerbBox{\the\do@VerbBox{\box\@fancybox}}%
|
|
|
|
% \Btrivlist
|
|
|
|
\def\@Blistrestore{%
|
|
\let\par\relax
|
|
\let\-\@dischyph \let\'\@acci \let\`\@accii \let\=\@acciii
|
|
\lineskip\normallineskip \baselineskip\normalbaselineskip}
|
|
|
|
\def\Btrivlist#1{\@ifnextchar[{\@Btrivlist{#1}}{\@Btrivlist{#1}[]}}
|
|
\def\@Btrivlist#1[#2]{%
|
|
\@Blistrestore
|
|
\let\\=\@Btrivlistcr
|
|
\fb@beginvbox{#2}%
|
|
\halign\bgroup
|
|
\if#1l\else\@empty\hfil\fi
|
|
\ignorespaces##\unskip
|
|
\if#1r\@empty\else\hfil\fi\cr}
|
|
\def\endBtrivlist{\crcr\egroup\egroup\if@pboxsw$\fi}
|
|
|
|
\def\fb@beginvbox#1{%
|
|
\leavevmode
|
|
\@pboxswfalse
|
|
\if#1b\@empty\vbox\else\if#1t\@empty\vtop\else
|
|
\ifmmode\vcenter\else\@pboxswtrue$\vcenter\fi% $
|
|
\fi\fi\bgroup}
|
|
|
|
\def\@Btrivlistcr{\@ifstar
|
|
{\@ifnextchar[{@@Btrivlistcr}{\cr}}{\@ifnextchar[{\@@Btrivlistcr}{\cr}}}
|
|
\def\@@Btrivlistcr[#1]{\cr\noalign{\vskip #1}}
|
|
|
|
\def\Bcenter{\Btrivlist{c}}
|
|
\def\endBcenter{\endBtrivlist}
|
|
|
|
\def\Bflushleft{\Btrivlist{l}}
|
|
\def\endBflushleft{\endBtrivlist}
|
|
|
|
\def\Bflushright{\Btrivlist{r}}
|
|
\def\endBflushright{\endBtrivlist}
|
|
|
|
% \Blist
|
|
|
|
\def\Blist#1#2{\@ifnextchar[{\@Blist{#1}{#2}}{\@Blist{#1}{#2}[]}}
|
|
|
|
\def\@Blist#1#2[#3]{%
|
|
\ifnum\@listdepth>5
|
|
\@toodeep
|
|
\else
|
|
\global\advance\@listdepth\@ne
|
|
\fi
|
|
\itemindent\z@
|
|
\csname @list\romannumeral\the\@listdepth\endcsname
|
|
\def\@itemlabel{#1}%
|
|
\let\makelabel\@mklab
|
|
\@nmbrlistfalse
|
|
\@Blistrestore
|
|
\let\\=\@Blistcr
|
|
\let\item\Bitem
|
|
\@Bitemswfalse
|
|
#2\relax
|
|
\fb@beginvbox{#3}%
|
|
\halign\bgroup
|
|
\ignorespaces##&\hskip\labelsep\ignorespaces##\unskip\hfil\cr}
|
|
|
|
\def\endBlist{\endBtrivlist\global\advance\@listdepth\m@ne}
|
|
|
|
\newif\if@Bitemsw
|
|
|
|
\def\Bitem{\@ifnextchar({\@Bitemcr\Bitem@skip}{\@Bitemcr\@Bitem}}
|
|
|
|
\def\@Bitemcr{%
|
|
\if@Bitemsw
|
|
\def\next{\cr\noalign{\vskip\itemsep}}%
|
|
\else
|
|
\def\next{\global\@Bitemswtrue}%
|
|
\fi
|
|
\next}
|
|
|
|
\def\Bitem@skip(#1){\noalign{\vskip #1}\@Bitem}
|
|
|
|
\def\@Bitem{\@ifnextchar[{\Bitem@label}{\Bitem@nolabel}}
|
|
|
|
\def\Bitem@label[#1]{\makelabel{#1}&}
|
|
|
|
\def\Bitem@nolabel{%
|
|
\if@nmbrlist
|
|
\expandafter\advance\csname c@\@listctr\endcsname1 \fi
|
|
\makelabel{\@itemlabel}%
|
|
&%
|
|
\if@nmbrlist\refstepcounter{\@listctr}\fi}
|
|
|
|
\def\@Blistcr{\@ifstar
|
|
{\@ifnextchar[{@@Blistcr}{\cr&}}{\@ifnextchar[{\@@Blistcr}{\cr&}}}
|
|
|
|
\def\@@Blistcr[#1]{\cr\noalign{\vskip #1}&}
|
|
|
|
% \Bitemize
|
|
|
|
\def\Bitemize{%
|
|
\ifnum\@itemdepth>3
|
|
\@toodeep
|
|
\else
|
|
\advance\@itemdepth\@ne
|
|
\fi
|
|
\edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%
|
|
\Blist{\csname\@itemitem\endcsname}{\def\makelabel####1{\hfil####1}}}
|
|
\def\endBitemize{\endBlist}
|
|
|
|
% \Bdescription
|
|
|
|
\def\Bdescription{\Blist{}{\def\makelabel####1{\bf####1\hfil}}}
|
|
\def\endBdescription{\endBlist}
|
|
|
|
% \Benumerate
|
|
|
|
\def\Benumerate{%
|
|
\ifnum\@enumdepth>3
|
|
\@toodeep
|
|
\else
|
|
\advance\@enumdepth\@ne
|
|
\fi
|
|
\edef\@enumctr{enum\romannumeral\the\@enumdepth}%
|
|
\Blist{\csname label\@enumctr\endcsname}%
|
|
{\usecounter{\@enumctr}\def\makelabel####1{\hfil####1}}}
|
|
\def\endBenumerate{\endBlist}
|
|
|
|
% Beqnarray
|
|
|
|
\def\Beqnarray{%
|
|
\stepcounter{equation}%
|
|
\let\@currentlabel\theequation
|
|
\def\@eqnnum{{\csname reset@font\endcsname\rm (\theequation)}}%
|
|
\global\@eqnswtrue\m@th
|
|
\global\@eqcnt\z@
|
|
\tabskip\@centering
|
|
\let\\\@eqncr
|
|
\vbox\bgroup
|
|
\halign\bgroup
|
|
\@eqnsel
|
|
\hskip\@centering
|
|
$\displaystyle\tabskip\z@{##}$%
|
|
&\global\@eqcnt\@ne
|
|
\hskip 2\arraycolsep
|
|
\hfil${##}$\hfil
|
|
&\global\@eqcnt\tw@
|
|
\hskip 2\arraycolsep
|
|
$\displaystyle\tabskip\z@{##}$%
|
|
\hfil
|
|
\tabskip\@centering
|
|
&\if@eqnsw\hskip 1em\fi
|
|
\hfil{##}\tabskip\z@
|
|
\cr}
|
|
|
|
\def\endBeqnarray{%
|
|
\@@eqncr
|
|
\egroup
|
|
\global\advance\c@equation\m@ne
|
|
\egroup
|
|
\global\@ignoretrue}
|
|
|
|
\@namedef{Beqnarray*}{\def\@eqncr{\nonumber\@seqncr}\Beqnarray}
|
|
\@namedef{endBeqnarray*}{\nonumber\endBeqnarray}
|
|
|
|
% \fb@outputage
|
|
|
|
% Here we insert various hooks for rotating or framing the page.
|
|
% Otherwise, it is the usual \@outputpage
|
|
|
|
\def\fb@outputpage{%
|
|
\begingroup
|
|
\catcode`\ =10
|
|
\let\-\@dischyph
|
|
\let\'\@acci
|
|
\let\`\@accii
|
|
\let\=\@acciii
|
|
\if@specialpage
|
|
\global\@specialpagefalse\@nameuse{ps@\@specialstyle}%
|
|
\fi
|
|
\if@twoside
|
|
\ifodd\count\z@
|
|
\let\@thehead\@oddhead
|
|
\let\@thefoot\@oddfoot
|
|
\let\@themargin\oddsidemargin
|
|
\else
|
|
\let\@thehead\@evenhead
|
|
\let\@thefoot\@evenfoot
|
|
\let\@themargin\evensidemargin
|
|
\fi
|
|
\fi
|
|
\csname reset@font\endcsname
|
|
\normalsize
|
|
\baselineskip\z@
|
|
\lineskip\z@
|
|
\let\par\@@par
|
|
\ifx\this@fancypage\@empty\else
|
|
\this@fancypage
|
|
\gdef\this@fancypage{}%
|
|
\fi
|
|
\ifx\the@fancypage\@empty\else
|
|
\setbox\@outputbox\hbox{\the@fancypage{\box\@outputbox}}%
|
|
\fi
|
|
\ifx\fb@@rotatepage\@empty\else
|
|
\setbox\@outputbox\hbox{\fb@@rotatepage{\box\@outputbox}}%
|
|
\fi
|
|
\setbox\@outputbox\vbox{%
|
|
\@tempdima=\wd\@outputbox
|
|
\setbox\@tempboxa=\hbox to\@tempdima{%
|
|
\let\label\@gobble
|
|
\let\index\@gobble
|
|
\let\glossary\@gobble
|
|
\@thehead}%
|
|
\ht\@tempboxa\headheight
|
|
\dp\@tempboxa\z@
|
|
\box\@tempboxa
|
|
\vskip\headsep
|
|
\box\@outputbox
|
|
\baselineskip\footskip
|
|
\hbox to\@tempdima{%
|
|
\let\label\@gobble
|
|
\let\index\@gobble
|
|
\let\glossary\@gobble
|
|
\@thefoot}}
|
|
\ifx\the@@fancypage\@empty\else
|
|
\setbox\@outputbox\hbox{\the@@fancypage{\box\@outputbox}}%
|
|
\fi
|
|
\setbox\@outputbox\vbox{%
|
|
\ifnum\fancyput@flag>-1 \do@fancyput\fi
|
|
\vskip\topmargin
|
|
\moveright\@themargin\box\@outputbox}%
|
|
\ifx\fb@rotatepage\@empty\else
|
|
\setbox\@outputbox\hbox{\lower\ht\@outputbox\box\@outputbox}%
|
|
\dp\@outputbox\z@
|
|
\wd\@outputbox\z@
|
|
\setbox\@outputbox\hbox{\fb@rotatepage{\box\@outputbox}}%
|
|
\expandafter\fb@setoffsets\fb@theoffsets
|
|
\fi
|
|
% DG/SR modification begin - September 19, 2000
|
|
% (suggested by Marcin Wolinski <wolinski@melkor.mimuw.edu.pl> and
|
|
% Heiko Oberdiek <oberdiek@ruf.uni-freiburg.de>)
|
|
\let\protect\noexpand
|
|
% DG/SR modification end
|
|
\shipout\box\@outputbox
|
|
\global\@colht\textheight
|
|
\endgroup
|
|
\stepcounter{page}%
|
|
\let\firstmark\botmark}
|
|
|
|
% \fancypage
|
|
|
|
\def\the@fancypage{}
|
|
\def\the@@fancypage{}
|
|
\def\this@fancypage{}
|
|
|
|
\def\fancypage#1#2{%
|
|
% DG/SR modification begin - May 16, 1997
|
|
\@begindvi % Need today by LaTeX 2e
|
|
% DG/SR modification end
|
|
\def\the@fancypage{#1}%
|
|
\def\the@@fancypage{#2}%
|
|
\def\@outputpage{\fb@outputpage}}
|
|
|
|
\def\thisfancypage#1#2{%
|
|
% DG/SR modification begin - May 16, 1997
|
|
\@begindvi % Need today by LaTeX 2e
|
|
% DG/SR modification end
|
|
\gdef\@outputpage{\fb@outputpage}%
|
|
\gdef\this@fancypage{\def\the@fancypage{#1}\def\the@@fancypage{#2}}}
|
|
|
|
% \fancyput
|
|
|
|
% Token registers used to make it easier to put definitions in argument.
|
|
% Boxes not processed until output so that contents can depend, e.g., on
|
|
% current page or marks or whatever. This makes everything slightly more
|
|
% complicated than one would expect.
|
|
|
|
\newtoks\the@fancyput
|
|
\newtoks\this@fancyput
|
|
\def\fancyput@flag{-1}%
|
|
|
|
% \fancyput@flag=-1 if no fancyput, 0 if regular fancyput, 1 if thisfancyput.
|
|
|
|
\def\fancyput{%
|
|
% DG/SR modification begin - May 16, 1997
|
|
\@begindvi % Need today by LaTeX 2e
|
|
% DG/SR modification end
|
|
\def\@outputpage{\fb@outputpage}
|
|
\@ifstar{\@testtrue\@fancyput}{\@testfalse\@fancyput}}
|
|
\def\@fancyput{\@ifnextchar({\@@fancyput}{\@@fancyput(\z@,\z@)}}
|
|
\def\@@fancyput(#1,#2)#3{%
|
|
\if@test
|
|
\expandafter\the@fancyput\expandafter{\the\the@fancyput\do{#1}{#2}{#3}}%
|
|
\else
|
|
\the@fancyput{\do{#1}{#2}{#3}}%
|
|
\fi
|
|
\gdef\fancyput@flag{\z@}}
|
|
|
|
\def\thisfancyput{%
|
|
% DG/SR modification begin - May 16, 1997
|
|
\@begindvi % Need today by LaTeX 2e
|
|
% DG/SR modification end
|
|
\gdef\@outputpage{\fb@outputpage}
|
|
\@ifstar{\@testtrue\@thisfancyput}{\@testfalse\@thisfancyput}}
|
|
\def\@thisfancyput{\@ifnextchar({\@@thisfancyput}{\@@thisfancyput(\z@,\z@)}}
|
|
\def\@@thisfancyput(#1,#2)#3{%
|
|
\if@test
|
|
\ifnum\fancyput@flag=\z@
|
|
\expandafter\global\expandafter\this@fancyput\expandafter{%
|
|
\the\this@fancyput\do{#1}{#2}{#3}}%
|
|
\else
|
|
\expandafter\global\expandafter\this@fancyput\expandafter{%
|
|
\the\the@fancyput\do{#1}{#2}{#3}}%
|
|
\fi
|
|
\else
|
|
\global\this@fancyput{\do{#1}{#2}{#3}}%
|
|
\fi
|
|
\gdef\fancyput@flag{1}}
|
|
|
|
\def\do@fancyput{%
|
|
\def\do##1##2##3{\raise##2\hbox to\z@{\kern##1\relax##3\hss}}%
|
|
\setbox\@tempboxa=\hbox to\z@{%
|
|
\kern-\hoffset
|
|
\raise\voffset\hbox{%
|
|
\ifnum\fancyput@flag=\z@\the\the@fancyput\else\the\this@fancyput\fi}%
|
|
\hss}%
|
|
\ht\@tempboxa=\z@ \dp\@tempboxa=\z@
|
|
\box\@tempboxa
|
|
\gdef\fancyput@flag{\z@}%
|
|
\global\this@fancyput{}}
|
|
|
|
% \Landscape
|
|
|
|
\def\UsePageParameters{%
|
|
\clearpage
|
|
\global\@colht\textheight
|
|
\onecolumn}
|
|
|
|
\def\fb@rotatepage{}
|
|
|
|
|
|
\def\Landscape{\@ifstar{\@testtrue\@Landscape}{\@testfalse\@Landscape}}
|
|
\def\@Landscape#1#2#3{%
|
|
% DG/SR modification begin - May 16, 1997
|
|
\@begindvi % Need today by LaTeX 2e
|
|
% DG/SR modification end
|
|
\clearpage
|
|
\def\fb@rotatepage{#3}%
|
|
\def\@outputpage{\fb@outputpage}%
|
|
\@tempdima#1\relax
|
|
\@tempdimb#2\relax
|
|
\if@test
|
|
\edef\fb@theoffsets{{\voffset}{\hoffset}{\number\@tempdima sp}}%
|
|
\else
|
|
\edef\fb@theoffsets{{\hoffset}{\voffset}{\number\@tempdimb sp}}%
|
|
\fi
|
|
\advance\@tempdimb-\@tempdima
|
|
\advance\textwidth\@tempdimb
|
|
\advance\textheight-\@tempdimb
|
|
\UsePageParameters}
|
|
\def\endLandscape{\clearpage\aftergroup\UsePageParameters}
|
|
|
|
\def\fb@setoffsets#1#2#3{%
|
|
\@tempdima#1%
|
|
\advance#1#2%
|
|
#2#3
|
|
\advance#2-2in
|
|
\advance#2-\@tempdima}
|
|
|
|
\@namedef{Landscape*}{\@testtrue\@Landscape}
|
|
\@namedef{endLandscape*}{\endLandscape}
|
|
|
|
% \LandScape
|
|
|
|
\def\fb@@rotatepage{}
|
|
|
|
\def\LandScape#1{%
|
|
% DG/SR modification begin - May 16, 1997
|
|
\@begindvi % Need today by LaTeX 2e
|
|
% DG/SR modification end
|
|
\clearpage
|
|
\def\fb@@rotatepage{#1}%
|
|
\def\@outputpage{\fb@outputpage}%
|
|
\@tempdima\textheight
|
|
\textheight\textwidth
|
|
\textwidth\@tempdima
|
|
\UsePageParameters}
|
|
\def\endLandScape{\clearpage\aftergroup\UsePageParameters}
|
|
|
|
% \GenericCaption
|
|
|
|
\def\GenericCaption#1{%
|
|
\par
|
|
\begingroup
|
|
\@parboxrestore
|
|
\normalsize
|
|
\vskip 10\p@
|
|
\setbox\@tempboxa\hbox{#1}%
|
|
\ifdim\wd\@tempboxa>\hsize
|
|
#1\par
|
|
\else
|
|
\hbox to\hsize{\hfil\box\@tempboxa\hfil}%
|
|
\fi
|
|
\endgroup
|
|
\par}
|
|
|
|
% \landfloat
|
|
|
|
\def\landfloat#1#2{%
|
|
\gdef\curr@landfloat{#1}%
|
|
\gdef\float@rotation{#2}%
|
|
\begin{#1}[p]%
|
|
\setbox\@tempboxa\vbox\bgroup
|
|
\hsize\@colht
|
|
\@parboxrestore}
|
|
\def\endlandfloat{%
|
|
\par\vskip\z@
|
|
\egroup
|
|
\setbox\@tempboxa\hbox{\float@rotation{\box\@tempboxa}}%
|
|
\centerline{\box\@tempboxa}%
|
|
\expandafter\end\expandafter{\curr@landfloat}}
|
|
|
|
% \boxput
|
|
|
|
\def\boxput{\@ifstar{\@testtrue\@boxput}{\@testfalse\@boxput}}
|
|
\def\@boxput{\@ifnextchar({\@@boxput}{\@@boxput(0,0)}}
|
|
\long\def\@@boxput(#1,#2)#3#4{%
|
|
\setbox\@fancybox\hbox{{#4}}%
|
|
\setbox\@tempboxa\vbox to\z@{\vss\hbox to\z@{\hss{#3}\hss}\vss}%
|
|
\@tempdima=#1\wd\@fancybox
|
|
\advance\@tempdima\wd\@fancybox
|
|
\divide\@tempdima 2
|
|
\ifcat a#2\relax
|
|
\@tempdimb=\z@
|
|
\else
|
|
\@tempdimb=.5\ht\@fancybox
|
|
\advance\@tempdimb.5\dp\@fancybox
|
|
\@tempdimc=\@tempdimb
|
|
\advance\@tempdimc-\dp\@fancybox
|
|
\@tempdimb=#2\@tempdimb
|
|
\advance\@tempdimb\@tempdimc
|
|
\fi
|
|
\setbox\@tempboxa\hbox to \z@{%
|
|
\if@test\kern-\wd\@fancybox\fi
|
|
\kern\@tempdima\raise\@tempdimb\box\@tempboxa\hss}%
|
|
\ht\@tempboxa=\z@ \dp\@tempboxa=\z@
|
|
\leavevmode
|
|
\if@test
|
|
\hbox{\box\@fancybox\box\@tempboxa}%
|
|
\else
|
|
\hbox{\box\@tempboxa\box\@fancybox}%
|
|
\fi}
|
|
|
|
% \Vfootnotes
|
|
|
|
\def\VerbatimFootnotes{\let\@footnotetext\V@footnotetext}
|
|
|
|
\long\def\V@footnotetext{%
|
|
\afterassignment\V@@footnotetext
|
|
\let\@tempa}
|
|
\def\V@@footnotetext{%
|
|
\insert\footins\bgroup
|
|
\csname reset@font\endcsname
|
|
\footnotesize
|
|
\interlinepenalty\interfootnotelinepenalty
|
|
\splittopskip\footnotesep
|
|
\splitmaxdepth\dp\strutbox
|
|
\floatingpenalty \@MM
|
|
\hsize\columnwidth
|
|
\@parboxrestore
|
|
\edef\@currentlabel{\csname p@footnote\endcsname\@thefnmark}%
|
|
\@makefntext{}%
|
|
\rule{\z@}{\footnotesep}%
|
|
\bgroup
|
|
\aftergroup\V@@@footnotetext
|
|
\ignorespaces}
|
|
\def\V@@@footnotetext{\strut\egroup}
|
|
|
|
% Verbatim
|
|
|
|
% The main idea is to separate the reading and formatting of the
|
|
% verbatim listing. It's pretty simple.
|
|
|
|
\def\Verbatim@Codes{%
|
|
\let\do\@makeother
|
|
\dospecials
|
|
\Verbatim@ObeyThings
|
|
\ThisVerbCodes\relax\gdef\ThisVerbCodes{}}
|
|
|
|
\def\EveryVerbatimCodes{}
|
|
|
|
% \Verbatim is redefined temporarilly in \Get@Verbatim to scan the
|
|
% verbatim text. \Verbatim is used so that error messages are more
|
|
% enlightening. \next checks whether \Verbatim found its argument,
|
|
% and attempts to recover if not.
|
|
%
|
|
% Heuristically, if current environment is `foo' and argument of
|
|
% \Get@Verbatim is \The@Verbatim, then definition of \Verbatim is
|
|
%
|
|
% \def\Verbatim#1^^M#2^^M\the\EndVerbatimTokens\end{foo}{%
|
|
% \xdef\The@Verbatim{\noexpand\Every@VerbatimLine#2}%
|
|
% \endgroup\end{foo}}
|
|
%
|
|
% \The@Verbatim is then equal to the verbatim text, with spaces
|
|
% replaced by \Verbatim@Space, tabs replaced by \Verbatim@Tab,
|
|
% and ` replaced by \@lquote. In addition, each line begins with
|
|
% \Every@VerbatimLine, and each line but the last ends with
|
|
% \Verbatim@Par. It is then possible to redefine these when formatting
|
|
% the verbatim text. To insert each line as an argument to \foo, use
|
|
% \def\Every@VerbatimLine#1\Verbatim@Par{\foo{#1}}
|
|
% \The@Verbatim\Verbatim@Par
|
|
%
|
|
\newtoks\EndVerbatimTokens
|
|
\begingroup
|
|
\catcode`\|=0
|
|
\catcode`\[=1
|
|
\catcode`\]=2
|
|
\catcode`\{=12
|
|
\catcode`\}=12
|
|
\catcode`\^^M=13%
|
|
\catcode`\\=12%
|
|
|gdef|Get@Verbatim#1[%
|
|
|begingroup%
|
|
|Verbatim@Codes|EveryVerbatimCodes%
|
|
|let|protect|noexpand%
|
|
|VerbatimEnvironment%
|
|
|edef|next[|noexpand|def|noexpand|Verbatim####1|noexpand^^M####2%
|
|
|noexpand^^M|the|EndVerbatimTokens\end{|@VerbEnvir}]%
|
|
|edef|endVerbatim[|noexpand|endgroup|noexpand|end[|@VerbEnvir]]%
|
|
|global|let|@VerbEnvir|relax%
|
|
|next[|@nil|xdef#1[|noexpand|Every@VerbatimLine##2]|endVerbatim]%
|
|
|def|next[|@ifnextchar|@nil[|@gobble]% If \@nil is there, then
|
|
[|gdef#1[]|endVerbatim|end[document]]]% \Verbatim found its argument.
|
|
|expandafter|next|Verbatim]% Otherwise, try to recover.
|
|
|gdef|AltGet@Verbatim#1[%
|
|
|begingroup%
|
|
|Verbatim@Codes|EveryVerbatimCodes%
|
|
|def^^M##1^^M##2[%
|
|
|ifx|@nil##2|@empty|else%
|
|
|noexpand|Verbatim@Par|noexpand|Every@VerbatimLine##1%
|
|
|expandafter^^M|expandafter##2%
|
|
|fi]%
|
|
|let|protect|noexpand%
|
|
|VerbatimEnvironment%
|
|
|edef|next[|noexpand|def|noexpand|Verbatim####1|noexpand^^M####2%
|
|
\end{|@VerbEnvir}]%
|
|
|edef|endVerbatim[|noexpand|endgroup|noexpand|end[|@VerbEnvir]]%
|
|
|global|let|@VerbEnvir|relax%
|
|
|next[|@nil|xdef#1[|noexpand|Every@VerbatimLine##2^^M|@nil]|endVerbatim]%
|
|
|def|next[|@ifnextchar|@nil[|@gobble]%
|
|
[|gdef#1[]|endVerbatim|end[document]]]%
|
|
|expandafter|next|Verbatim]%
|
|
|endgroup
|
|
\def\AltGetVerbatim{\let\Get@Verbatim\AltGet@Verbatim}
|
|
|
|
% It is enough to not use \begin or \end when defining new verbatim
|
|
% environments, as the default is for \Get@Verbatim to look for the
|
|
% end of the current environment, but using \VerbatimEnvironment
|
|
% is easier to explain to users.
|
|
|
|
\def\VerbatimEnvironment{%
|
|
\ifx\@VerbEnvir\relax\xdef\@VerbEnvir{\@currenvir}\fi}
|
|
|
|
\let\@VerbEnvir\relax
|
|
|
|
\def\The@VerbatimErr{%
|
|
\gdef\The@Verbatim{\@latexerr{Misplaced \string\end{Verbatim}}\@ehd}}
|
|
\The@VerbatimErr
|
|
|
|
\begingroup
|
|
\catcode`\^^M=\active%
|
|
\catcode`\ =\active%
|
|
\catcode`\^^I=\active%
|
|
\gdef\Verbatim@ObeyThings{%
|
|
\catcode`\^^M=\active%
|
|
\catcode`\ =\active%
|
|
\catcode`\^^I=\active%
|
|
\catcode``=\active%
|
|
\def^^M{\noexpand\Verbatim@Par\noexpand\Every@VerbatimLine}%
|
|
\def^^I{\noexpand\Verbatim@Tab}%
|
|
\def {\noexpand\Verbatim@Space}%
|
|
\Verbatim@NoLigs}%
|
|
\gdef\Verbatim@DontObeyLines{\outer\def^^M{}}%
|
|
\endgroup
|
|
|
|
\def\SaveVerbatim{\@bsphack\Get@Verbatim}
|
|
|
|
\def\endSaveVerbatim{\@esphack}
|
|
|
|
{\catcode``13 \gdef\Verbatim@NoLigs{\def`{\noexpand\@lquote}}}
|
|
|
|
\def\Verbatim@Prep{%
|
|
\frenchspacing
|
|
\ThisVerb\relax\gdef\ThisVerb{}%
|
|
\VerbatimFont
|
|
\EveryVerbatim
|
|
\let\Every@VerbatimLine\EveryVerbatimLine
|
|
\def\Verbatim@Space{\leavevmode\penalty\@M\VerbatimSpace}%
|
|
\def\Verbatim@Tab{\leavevmode\penalty\@M\VerbatimTab}}%
|
|
|
|
\def\Verb@Prep{%
|
|
\frenchspacing
|
|
\ThisVerb\relax\gdef\ThisVerb{}%
|
|
\VerbFont
|
|
\EveryVerb
|
|
\let\Every@VerbatimLine\EveryVerbatimLine
|
|
\def\Verbatim@Space{\leavevmode\penalty\@M\VerbSpace}%
|
|
\def\Verbatim@Tab{\leavevmode\penalty\@M\VerbTab}}%
|
|
|
|
\def\Verbatim@Par{\leavevmode\null\@@par\penalty\interlinepenalty}
|
|
|
|
% Parameter initialization:
|
|
|
|
\def\VerbatimSpace{\ }
|
|
|
|
{\catcode`\ =12\gdef\ttspace{{\tt }}}
|
|
\def\VerbSpace{\ }
|
|
\def\VerbatimTab{\ \ \ \ \ \ \ \ }
|
|
\def\VerbTab{\ }
|
|
\def\EveryVerbatim{}
|
|
\def\EveryVerb{}
|
|
\def\ThisVerb{}
|
|
\def\EveryVerbatimLine{}%
|
|
\def\EveryVerbOutLine{}
|
|
\def\VerbatimFont{\tt}
|
|
\def\VerbFont{\tt}
|
|
\def\VerbatimFuzz{2pt}%
|
|
\def\EveryVerbatimCodes{}
|
|
\def\EveryVerbCodes{}
|
|
\def\EveryVerbOutCodes{}
|
|
\def\ThisVerbCodes{}
|
|
\def\Verbatim@List#1{%
|
|
\if@minipage\else\vskip\parskip\fi
|
|
\leftskip\@totalleftmargin
|
|
\@rightskip\@flushglue \rightskip\@rightskip
|
|
\parindent\z@
|
|
\parskip\z@
|
|
\parfillskip\@flushglue
|
|
\hfuzz\VerbatimFuzz\relax
|
|
\@@par
|
|
\global\@inlabelfalse %Prevents vspace from being inserted when
|
|
\Verbatim@Prep %first line exceeds \hsize.
|
|
#1%
|
|
\Verbatim@Par}%
|
|
|
|
\def\UseVerbatim#1{%
|
|
\begingroup\trivlist\item[]\Verbatim@List{#1}\endtrivlist\endgroup}
|
|
|
|
\def\Verbatim{\Get@Verbatim\The@Verbatim}
|
|
\def\endVerbatim{\UseVerbatim\The@Verbatim\The@VerbatimErr}
|
|
|
|
\def\LUseVerbatim#1{%
|
|
\begingroup\list{}{}\item[]\Verbatim@List{#1}\endlist\endgroup}
|
|
|
|
\def\LVerbatim{\Get@Verbatim\The@Verbatim}
|
|
\def\endLVerbatim{\LUseVerbatim\The@Verbatim\The@VerbatimErr}
|
|
|
|
\def\BUseVerbatim{%
|
|
\@ifnextchar[{\@BUseVerbatim}{\@BUseVerbatim[]}}
|
|
\def\@BUseVerbatim[#1]#2{%
|
|
\begingroup
|
|
\Verbatim@Prep
|
|
\let\Verbatim@Par\@Btrivlistcr
|
|
\@Btrivlist{l}[#1]%
|
|
#2%
|
|
\endBtrivlist
|
|
\endgroup}%
|
|
|
|
\def\BVerbatim{%
|
|
\catcode`\^^M=13\relax
|
|
\@ifnextchar[{\@BVerbatim}{\@BVerbatim[]}}
|
|
\def\@BVerbatim[#1]{\def\@tempa{[#1]}\Get@Verbatim\The@Verbatim}
|
|
\def\endBVerbatim{
|
|
\expandafter\@BUseVerbatim\@tempa\The@Verbatim\The@VerbatimErr}
|
|
|
|
\newwrite\Verbatim@Outfile
|
|
\def\VerbatimOut#1{%
|
|
\@bsphack
|
|
\begingroup
|
|
\immediate\openout\Verbatim@Outfile #1\relax
|
|
\def\EveryVerbatimCodes{\EveryVerbOutCodes}%
|
|
\Get@Verbatim\The@Verbatim}
|
|
\def\endVerbatimOut{%
|
|
\Verbatim@ObeyThings
|
|
\def\Verbatim@Par{^^J}%
|
|
\def\Verbatim@Space{\space}%
|
|
\def\Verbatim@Tab{\space}%
|
|
\def\@lquote{\string`}%
|
|
\ThisVerb\relax\gdef\ThisVerb{}%
|
|
\let\Every@VerbatimLine\EveryVerbOutLine
|
|
\immediate\write\Verbatim@Outfile{\The@Verbatim}%
|
|
\immediate\closeout\Verbatim@Outfile
|
|
\endgroup
|
|
\The@VerbatimErr
|
|
\@esphack}
|
|
|
|
% This one is a little tricky because:
|
|
% * we want to ignore the ^^M at the end of the last line,
|
|
% * we want to handle files that end with newline and files that don't
|
|
% * we want comment characters to work properly,
|
|
% * we want to expand each line before inserting \Every@VerbatimLine and
|
|
% \Verbatim@Par,
|
|
%
|
|
% \The@GVerbatim is used as scratch with global redefinition.
|
|
\newread\Verbatim@Infile
|
|
\def\Verbatim@Input#1#2{%
|
|
\begingroup
|
|
\Verbatim@Codes\EveryVerbatimCodes
|
|
\immediate\openin\Verbatim@Infile #1\relax
|
|
\ifeof\Verbatim@Infile
|
|
\@latexerr{No verbatim file #1}\@ehd
|
|
\else
|
|
\def\The@GVerbatim{}\Verbatim@NextLine
|
|
\ifeof\Verbatim@Infile
|
|
\@latexerr{Verbatim file #1 is empty}\@ehd
|
|
\else
|
|
\let\The@Verbatim\The@GVerbatim
|
|
\def\The@GVerbatim{}\Verbatim@NextLine
|
|
#2{\Verbatim@@Input}%
|
|
\fi
|
|
\fi
|
|
\immediate\closein\Verbatim@Infile
|
|
\endgroup}
|
|
\def\Verbatim@@Input{%
|
|
\let\protect\noexpand
|
|
\edef\The@Verbatim{%
|
|
\noexpand\Every@VerbatimLine
|
|
\The@Verbatim
|
|
\ifeof\Verbatim@Infile\else\noexpand\Verbatim@Par\fi}%
|
|
\let\protect\relax
|
|
\The@Verbatim
|
|
\ifeof\Verbatim@Infile\else
|
|
\let\The@Verbatim\The@GVerbatim
|
|
\def\The@GVerbatim{}\Verbatim@NextLine
|
|
\expandafter\Verbatim@@Input
|
|
\fi}%
|
|
\begingroup\catcode`\^^M=\active%
|
|
\gdef\Verbatim@NextLine{%
|
|
\ifeof\Verbatim@Infile\else%
|
|
\immediate\read\Verbatim@Infile to\@tempa%
|
|
\expandafter\Verbatim@@NextLine\@tempa^^M\relax^^M\@nil%
|
|
\fi}%
|
|
% #2 is empty if line ends in ^^M, #2=\relax otherwise.
|
|
\gdef\Verbatim@@NextLine#1^^M#2^^M#3\@nil{%
|
|
\expandafter\gdef\expandafter\The@GVerbatim\expandafter{\The@GVerbatim#1}%
|
|
\ifx#2\@empty\@empty\else\expandafter\Verbatim@NextLine\fi}%
|
|
\endgroup%
|
|
|
|
\def\UseVerb#1{\begingroup\Verb@Prep#1\endgroup}
|
|
|
|
\def\SaveVerb{\@ifnextchar[{\Save@Verb}{\Save@Verb[]}}
|
|
|
|
\long\def\Save@Verb[#1]#2{%
|
|
\begingroup
|
|
\Verbatim@Codes\Verbatim@DontObeyLines\EveryVerbCodes
|
|
\Save@@Verb{#1}{#2}}
|
|
|
|
\long\def\Save@@Verb#1#2#3{%
|
|
\let\protect\noexpand
|
|
\def\next{\@ifnextchar\@nil{\@gobble}{\endgroup}}%
|
|
\long\def\Verb##1#3{\@nil\xdef#2{##1}\endgroup#1}%
|
|
\expandafter\next\Verb}
|
|
|
|
\def\Verb{\Save@Verb[\UseVerb{\The@Verbatim}]{\The@Verbatim}}
|
|
|
|
\def\VerbatimInput#1{\begingroup\Verbatim@Input{#1}\UseVerbatim\endgroup}
|
|
|
|
\def\LVerbatimInput#1{\begingroup\Verbatim@Input{#1}\LUseVerbatim\endgroup}
|
|
|
|
\def\BVerbatimInput{\@ifnextchar[{\@BVerbatimInput}{\@BVerbatimInput[]}}
|
|
\def\@BVerbatimInput[#1]#2{%
|
|
\begingroup\Verbatim@Input{#2}{\@BUseVerbatim[#1]}\endgroup}
|
|
|
|
\endinput
|
|
%% END fancybox.sty
|
|
|