summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/fancybox
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/fancybox
Initial commit
Diffstat (limited to 'macros/latex/contrib/fancybox')
-rw-r--r--macros/latex/contrib/fancybox/Changes38
-rw-r--r--macros/latex/contrib/fancybox/Makefile62
-rw-r--r--macros/latex/contrib/fancybox/README9
-rw-r--r--macros/latex/contrib/fancybox/fancybox-doc.pdfbin0 -> 283697 bytes
-rw-r--r--macros/latex/contrib/fancybox/fancybox-doc.tex1146
-rw-r--r--macros/latex/contrib/fancybox/fancybox.sty966
6 files changed, 2221 insertions, 0 deletions
diff --git a/macros/latex/contrib/fancybox/Changes b/macros/latex/contrib/fancybox/Changes
new file mode 100644
index 0000000000..2bf0d52a55
--- /dev/null
+++ b/macros/latex/contrib/fancybox/Changes
@@ -0,0 +1,38 @@
+--- fancybox.sty
+1.4 2010/05/15 - small changes to the code
+1.3, September 19, 2000 (D.G./S.R.)
+ - Corrections of the output routine for \LaTeX{} 2e compatibility
+ (from Marcin Wolinski and Heiko Oberdiek).
+ - Add a "\ProvidesPackage" command (from Heiko Oberdiek).
+1.2, February 27, 1998 (D.G./S.R.)
+ - Other adaptations for \LaTeX{} 2e.
+1.1, 1997 (D.G./S.R.)
+ - Minimal adaptations for \LaTeX{} 2e compatibility (macros
+ "\fancypage", "\thisfancypage", "\fancyput", "\thisfancyput",
+ "\@Landscape", "\LandScape").
+1.0, February 10, 1993
+ - Fixed bugs in "\boxput".
+ - New "Beqnarray" environment.
+0.93, January 20, 1993
+ - New "\EndVerbatimTokens" for tokens that precede "\end{Verbatim}".
+ - New "\AltGetVerbatim", to allow any tokens to precede "\end{Verbatim}".
+ - Fixed bug in "\BVerbatimInput" that caused second line to be repeated.
+ - New "LandScape" environment, for rotating pages without rotating
+ headers and footers.
+ - Slide frames "Oval", "oval", "shadow" and "double" are defined when
+ "seminar.sty" v0.93 (and maybe later) is loaded.
+0.92, December 20, 1992
+ - New "\boxput" command for superimposing boxes.
+ - New "\VerbatimFootnotes" command.
+ - New "\VerbBox" command for verbatim boxes.
+ - New "Sbox" environment. Makes "\beginsbox" and "\endsbox"
+ obsolete, but the latter have been retained for compatibility.
+0.91, November 25, 1992
+ - "\shadowsize" is now a length, to be set
+ with "\setlength" or "\addtolength".
+ - "\fancypage" split into "\fancypage" and "\fancyput"
+0.9 November 23, 1992} First release.
+
+
+--- fancybox-doc.sty
+2010/05/15 - revised documentation \ No newline at end of file
diff --git a/macros/latex/contrib/fancybox/Makefile b/macros/latex/contrib/fancybox/Makefile
new file mode 100644
index 0000000000..a27c7cdaba
--- /dev/null
+++ b/macros/latex/contrib/fancybox/Makefile
@@ -0,0 +1,62 @@
+
+# `Makefile' for 'fancybox-doc', hv, 2010/05/15
+
+.SUFFIXES : .tex .ltx .dvi .ps .pdf .eps
+
+PACKAGE = fancybox
+
+MAIN = $(PACKAGE)-doc
+
+TDS = ~/PSTricks/PSTricks-TDS
+
+LATEX = pdflatex
+
+ARCHNAME = $(MAIN)-$(shell date +%y%m%d)
+
+ARCHFILES = $(PACKAGE).sty $(PACKAGE).tex $(MAIN).tex README Changes Makefile
+
+all : doc clean
+doc: $(MAIN).tex
+ $(LATEX) $<
+ $(LATEX) $<
+ if ! test -f $(basename $<).glo ; then touch $(basename $<).glo; fi
+ if ! test -f $(basename $<).idx ; then touch $(basename $<).idx; fi
+ makeindex -t $(basename $<).ilg -s pst-doc.ist -o $(basename $<).ind $(basename $<).idx
+ makeindex -s gglo.ist -t $(basename $<).glg -o $(basename $<).gls \
+ $(basename $<).glo
+# bibtex $(basename $<)
+ $(LATEX) $<
+ $(LATEX) $<
+
+clean :
+ $(RM) $(addprefix $(MAIN), .cb .cb? .log .aux .glg .glo .gls .ilg .idx .ind .tmp .toc .out .blg .bbl )
+ $(RM) $(addprefix $(MAIN), .dvi .ps .xcp .ex1)
+
+veryclean : clean
+ $(RM) $(addprefix $(MAIN), .pdf .bbl .blg)
+
+arch :
+ zip $(ARCHNAME).zip $(ARCHFILES)
+
+tds:
+ cp -u Changes $(TDS)/doc/generic/$(PACKAGE)/
+ cp -u README $(TDS)/doc/generic/$(PACKAGE)/
+ cp -u $(MAIN).pdf $(TDS)/doc/generic/$(PACKAGE)/
+#
+ cp -u Changes $(TDS)/tex/latex/$(PACKAGE)/
+ cp -u $(PACKAGE).sty $(TDS)/tex/latex/$(PACKAGE)/
+#
+ cp -u Changes $(TDS)/tex/generic/$(PACKAGE)/
+ cp -u $(PACKAGE).tex $(TDS)/tex/generic/$(PACKAGE)/
+#
+ cp -u Changes $(TDS)/dvips/$(PACKAGE)/
+ cp -u $(PACKAGE).pro $(TDS)/dvips/$(PACKAGE)/
+ cp -u $(PACKAGE).pro ~/Links/dvips-local/
+#
+ cp -u Changes $(TDS)/source/$(PACKAGE)/
+ cp -u $(MAIN).tex $(TDS)/source/$(PACKAGE)/
+ cp -u $(MAIN).bib $(TDS)/source/$(PACKAGE)/
+ cp -u Makefile $(TDS)/source/$(PACKAGE)/
+
+
+# EOF
diff --git a/macros/latex/contrib/fancybox/README b/macros/latex/contrib/fancybox/README
new file mode 100644
index 0000000000..fbe49914db
--- /dev/null
+++ b/macros/latex/contrib/fancybox/README
@@ -0,0 +1,9 @@
+Save the file fancybox.sty in a directory, which is part of your
+local TeX tree.
+Then do not forget to run texhash to update this tree.
+For more information see the documentation of your LATEX distribution
+on installing packages into your LATEX distribution or the
+TeX Frequently Asked Questions:
+(http://www.tex.ac.uk/cgi-bin/texfaq2html?label=instpackages).
+
+
diff --git a/macros/latex/contrib/fancybox/fancybox-doc.pdf b/macros/latex/contrib/fancybox/fancybox-doc.pdf
new file mode 100644
index 0000000000..89eed1dc26
--- /dev/null
+++ b/macros/latex/contrib/fancybox/fancybox-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/fancybox/fancybox-doc.tex b/macros/latex/contrib/fancybox/fancybox-doc.tex
new file mode 100644
index 0000000000..8dca71a29d
--- /dev/null
+++ b/macros/latex/contrib/fancybox/fancybox-doc.tex
@@ -0,0 +1,1146 @@
+%% BEGIN fancybox-doc
+%%
+%% COPYRIGHT 1992, by Timothy Van Zandt, Timothy.VAN-ZANDT@insead.edu.
+%% COPYRIGHT 2010, by Herbert Voss hvoss@tug.org.
+%%
+%% Documentation for fancybox.sty.
+%%
+%% 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.
+%%
+%%
+%%
+%% This creates two temporary files: \jobname.ex1 and \jobname.tmp
+
+\documentclass[12pt]{article}
+\usepackage [T1]{fontenc}
+\usepackage{mathpazo,url}
+
+\usepackage{fancybox}
+\let\FBfv\fileversion
+\usepackage{url}
+
+\VerbatimFootnotes
+\makeatletter
+% Short meta (works in verbatim. Can't use < for other purposes.
+\catcode`\<=13 \def<#1>{{\rm\it #1\/}} % <meta> (works in verbatim)
+
+% Short verbatim. " can appear in verbatim environments.
+\def\temp{\Verb"}
+\expandafter\def\expandafter\dospecials\expandafter{\dospecials\do\"}
+\catcode`\"=13
+\let"\temp
+
+% Verbatim item:
+\newcommand{\vitem}{\SaveVerb[{\def\bf{}\item[\UseVerb{\MyTemp}]}]{\MyTemp}}
+
+%% EXAMPLES:
+
+\setlength{\fboxsep}{6pt}
+
+\begin{VerbatimOut}{\jobname.ex1}
+% 1. Save example verbatim to \jobname.tmp,
+% 2. Input verbatim with \catcode`\"=14 (" is a comment).
+% 3. Input again with \catcode\`"=9 (" is ignored).
+
+\renewcommand{\EveryVerbatimLine}[2]{}
+\renewcommand{\EveryVerbOutLine}[2]{}
+\newcommand\BeginExample{%
+ \VerbatimEnvironment\begin{VerbatimOut}{\jobname.tmp}}
+\newcommand\EndExample{%
+ \end{VerbatimOut}%.
+ \renewcommand{\EveryVerbatimLine}{}%
+ \renewcommand{\EveryVerbatimCodes}{\catcode`\"=14}%
+ \LVerbatimInput{\jobname.tmp}%
+ \catcode`\"=9}
+\newenvironment{example}{\BeginExample}{\EndExample
+ \begin{center}\input{\jobname.tmp}\end{center}}
+\newenvironment{example*}{\BeginExample}%
+ {\EndExample \input{\jobname.tmp}}
+\newenvironment{example**}{\BeginExample}%
+ {\EndExample \globaldefs=1 \input{\jobname.tmp}}
+\end{VerbatimOut}
+
+\input{\jobname.ex1}
+\makeatother
+
+\title{Documentation for fancybox.sty:\\
+ Box tips and tricks for \LaTeX\thanks{Documentation revised by Herbert Vo\ss}}
+\author{Timothy Van Zandt\\ \url{Timothy.VAN-ZANDT@insead.edu}}
+\date{Version \FBfv\\ \today}
+
+
+\begin{document}
+\maketitle
+\begin{abstract}
+"fancybox.sty", together with its documentation, gives extensive answers to
+and solutions for many questions about how to frame or rotate this or that in
+\LaTeX. It also contains commands for shadow, double and oval frames.
+\end{abstract}
+\vfill
+Thanks to Heiko Oberdiek, Marcin Wolinski.
+\clearpage
+\tableofcontents
+\clearpage
+\section{Fancy frames}
+
+"fancybox.sty" has five variants of \LaTeX's "\fbox" command:
+\begin{quote}\raggedright
+"\shadowbox", "\doublebox", "\ovalbox" (with "\thinlines") and "\Ovalbox"
+(with "\thicklines").
+\end{quote}
+Here are examples:\footnote{In this documentation, the default value of
+"\fboxsep" has been changed from 3pt to 6pt.}
+\begin{example}
+ \shadowbox{\large\bf New Glarus Birdwatch}
+\end{example}
+\begin{example}
+ \doublebox{\large\bf New Glarus Birdwatch}
+\end{example}
+\begin{example}
+ \ovalbox{\large\bf New Glarus Birdwatch}
+\end{example}
+\begin{example}
+ \Ovalbox{\large\bf New Glarus Birdwatch}
+\end{example}
+
+The distance between the box and the frame is "\fboxsep", as with \LaTeX's
+"\fbox" command. The commands use other parameters as well:
+\begin{description}
+\vitem"\shadowbox" The width of the frame is "\fboxrule" (the same as with
+"\fbox"). The width of the shadow is "\shadowsize" (default: "4pt").
+
+\vitem"\doublebox" The width of the inner frame is .75"\fboxrule", and the
+width of the outer frame is 1.5"\fboxrule". The distance between the two
+frames is 1.5"\fboxrule" plus .5pt.
+
+\vitem"\ovalbox" The width of the frame is set by the "\thinlines"
+declaration. The diameter of the corner arcs is set with the "\cornersize"
+command.
+\begin{LVerbatim}
+ \cornersize{<num>}
+\end{LVerbatim}
+sets the diameter of the corners arcs to <num> times the lessor of the width
+and height of the box.
+\begin{LVerbatim}
+ \cornersize*{<dim>}
+\end{LVerbatim}
+sets the diameter of the corner arcs to <dim>. This is all approximate,
+because \LaTeX\ has a limited range of arc sizes to choose from. The default
+is
+\begin{LVerbatim}
+ \cornersize{.5}
+\end{LVerbatim}
+
+\vitem"\Ovalbox" This is like "\ovalbox", except that the width of the lines
+is set by the "\thicklines" declaration.
+\end{description}
+
+There are no analogs to \LaTeX's "\framebox" command, which has various
+optional arguments not supported by "\fbox". You can get the exact same
+functionality by putting the argument of the above framing commands in a
+"\makebox".
+
+There is also a variant "\fancyoval" of \LaTeX's "\oval" picture object. The
+difference is that "\oval" always makes the diameter of the corner arcs as
+large as possible, and "\fancyoval" uses the "\cornersize" command to set the
+diameter.
+
+\section{A short course on boxes}
+
+\begingroup\sloppy
+The "\shadowbox", "\doublebox", "\ovalbox" and "\Ovalbox" commands described
+in the previous section are examples of LR-box commands, meaning that their
+argument is processed in LR mode. \LaTeX\ LR-box commands include "\mbox",
+"\makebox", "\fbox", "\framebox", "\sbox" and "\savebox". All the PSTricks
+commands whose argument is text are LR-box commands, including, e.g, the
+framing, rotating, scaling and positioning commands, and some of the node
+commands. Any rotation command is an LR-box command.
+
+\endgroup
+
+The purpose of the rest of this documentation is to provide answers to, and
+solutions for, frequently asked questions about using LR-box commands with
+\LaTeX. I will use "\fbox" for the leading example of a box framing
+command,\footnote{In the examples using "\fbox", be aware that the default
+value of "\fboxsep" has been changed in this documentation from 3pt to 6pt.}
+and "\rotateleft" for the leading example of a box rotation command.
+("fancybox.sty" does not contain a "\rotateleft" command, as this must be
+implemented via "\special"'s, but there are numerous box-rotation style files
+around.) However, most of what is said here applies to any LR-box command.
+
+In each LR-box command, the text is processed in restricted horizontal mode,
+which is referred to as ``LR-mode'' in Lamport's {\em \LaTeX: User's Guide and
+Reference Manual}. In restricted horizontal mode, the input, consisting of
+regular characters and boxes, is made into one (long or short) line. There is
+no line-breaking, nor can there be vertical mode material such as an entire
+displayed equation. However, the fact that you can include another box means
+that this isn't really a restriction.
+
+For one thing, alignment environments such as \LaTeX's "tabular" are just
+boxes, and thus present no problem. Picture environments and the LR-box
+commands themselves are also just boxes. Entire paragraphs or other vertical
+mode material such as displayed equations can be nested in a "\parbox" or
+"minipage".
+
+\section{Defining LR-box environments}
+
+To frame a "minipage", you have to write
+\begin{LVerbatim}
+ \fbox{%
+ \begin{minipage}{3in}
+ blah
+ \end{minipage}}
+\end{LVerbatim}
+You might want to define an environment "fminipage" that frames its contents,
+but you can't use
+\begin{LVerbatim}
+ \newenvironment{fminipage}%
+ {\fbox{\begin{minipage}}%
+ {\end{minipage}}}
+\end{LVerbatim}
+because the braces are not balanced in the definition.
+
+"fancybox.sty" contains an "Sbox" environment that makes it easy to define
+your own LR-box environments. It is a variant of \LaTeX's "\sbox" command that
+saves the contents of the environment in a storage bin that can be retrieved
+with the command "\TheSbox".\footnote{The difference between
+\begin{LVerbatim}
+ \begin{Sbox}
+ blah
+ \end{Sbox}
+ \TheSbox
+\end{LVerbatim}
+and
+\begin{LVerbatim}
+ \newsavebox{\mybox}
+ \sbox{\mybox}{blah}
+ \usebox{\mybox}
+\end{LVerbatim}
+is that "Sbox" saves the contents globally, and "\TheSbox" erases the contents
+globally.}
+For example, here is a framed minipage:
+\begin{LVerbatim}
+ \begin{Sbox}
+ \begin{minipage}{3in}
+ blah
+ \end{minipage}
+ \end{Sbox}
+ \fbox{\TheSbox}
+\end{LVerbatim}
+and here is an "fminipage" environment that works:
+\begin{example**}
+ \newenvironment{fminipage}%
+ {\begin{Sbox}\begin{minipage}}%
+ {\end{minipage}\end{Sbox}\fbox{\TheSbox}}
+\end{example**}
+Let's see that it really works:
+\begin{example}
+ \begin{fminipage}{2in}
+ Since the former doesn't use braces to delimit
+ the contents of the box, $\ldots$
+ \end{fminipage}
+\end{example}
+
+
+\section{Math}
+
+In-line math, or pieces of a displayed equation (as opposed to a whole
+equation), are horizontal mode material, but most LR-box commands switch out
+of math mode when they occur in math mode. Thus, you have to explicitly switch
+back in to math mode when desired.\footnote{This is {\em not} true for the
+PSTricks LR-box commands.}
+For example:
+\begin{example}
+ $x + y = \fbox{$\Omega$}$
+\end{example}
+
+You also have to explicitly write
+\begin{quote}
+ "\scriptstyle", "\scriptscriptstyle" or "\displaystyle"
+\end{quote}
+if you want one of these special math styles. For example, here I will frame
+an equation, but not the equation number:
+\begin{example*}
+ \begin{equation}
+ \fbox{$\displaystyle
+ \int_{\Omega_0} \zeta(\omega) d\omega
+ \geq \bar{r}$}
+ \end{equation}
+\end{example*}
+
+Entire displayed equations or "eqnarray" environments work differently because
+they are vertical mode material. Thus, they have to go inside a "\parbox" or
+"minipage". E.g.,
+\begin{example*}
+ \newlength{\mylength}
+ \[
+ \setlength{\fboxsep}{15pt}
+ \setlength{\mylength}{\linewidth}
+ \addtolength{\mylength}{-2\fboxsep}
+ \addtolength{\mylength}{-2\fboxrule}
+ \fbox{%
+ \parbox{\mylength}{
+ \setlength{\abovedisplayskip}{0pt}
+ \setlength{\belowdisplayskip}{0pt}
+ \begin{equation}
+ x + y = z
+ \end{equation}}}
+ \]
+\end{example*}
+The outer "\[" "\]" are just used to display the boxed equation, rather than
+actually switch into math mode. Note how I set the width of the "\parbox" so
+that the displayed box would exactly have width "\linewidth".\footnote{That is
+what "\mylength" is for. It is better to define a single scratch length that
+you reuse rather than creating a new one each time.}
+
+ I also set the display skips to "0pt" and increased the size of "\fboxsep" so
+that I would have the same distance all around between the equation and the
+frame.
+
+This is again a mouthful, and so I might instead define:\footnote{The reason
+for using "\minipage" instead of "\begin{minipage}", and so on, is that with
+AmS-\LaTeX, "\begin" and "\end" cannot appear in the definition of a new
+equation environment.}
+\begin{example**}
+ \newenvironment{FramedEqn}%
+ {\setlength{\fboxsep}{15pt}
+ \setlength{\mylength}{\linewidth}%
+ \addtolength{\mylength}{-2\fboxsep}%
+ \addtolength{\mylength}{-2\fboxrule}%
+ \Sbox
+ \minipage{\mylength}%
+ \setlength{\abovedisplayskip}{0pt}%
+ \setlength{\belowdisplayskip}{0pt}%
+ \equation}%
+ {\endequation\endminipage\endSbox
+ \[\fbox{\TheSbox}\]}
+\end{example**}
+"fancybox.sty" doesn't bother defining any such environments, because there
+are too many possible designs. But let's see if the one above works:
+\begin{example*}
+ \begin{FramedEqn}
+ \Rightarrow P\sim\xi(P_\gamma)- \frac{1}{3}
+ \end{FramedEqn}
+\end{example*}
+
+"fancybox.sty" contains a "Beqnarray" environment, which is like the
+"eqnarray" environment but it is not vertical mode material. Instead, it
+produces a box just large enough to hold all the equations. For example:
+\begin{example}
+ \fbox{%
+ \begin{Beqnarray*}
+ x & = & y\\
+ y & > & x \\
+ \int_4^5 f(x)dx & = & \sum_{i\in F} x_i
+ \end{Beqnarray*}}
+\end{example}
+The unstarred version produces standard equation numbers on the right (even
+with the "leqno" style option and AmS-\LaTeX). It might not work with special
+equation numbering macros.
+
+
+\section{Floats}\label{floats}
+
+A common mistake is to put a whole "table", "figure" or other float
+environment inside an LR-box command. Instead, you should put everything that
+is {\em inside} the environment (including the "\caption", if you want that
+boxed too) inside a "minipage" of the desired width, and then put the
+"minipage" inside the LR-box command.
+
+For example:
+\begin{example*}
+ \begin{table}[h]
+ \begin{center}
+ \fbox{%
+ \begin{minipage}{.8\textwidth}
+ \begin{center}
+ \begin{tabular}{rl}
+ foo & bar
+ \end{tabular}
+ \end{center}
+ \caption{A table of foo and bar.}
+ \end{minipage}}
+ \end{center}
+ \end{table}
+\end{example*}
+Note how I had to use "center" twice: once to center the framed box, and again
+to center the stuff inside the box.
+
+That is a mouthful, and so I might define a "FramedTable" environment like the
+following, which sets the size of the "minipage" so that the framed box is
+exactly the width of the page (no need for the first "center" environment this
+time):
+\begin{example**}
+ \newenvironment{FramedTable}%
+ {\begin{table}[h]
+ \begin{Sbox}%
+ \setlength{\mylength}{\textwidth}%
+ \addtolength{\mylength}{-2\fboxsep}%
+ \addtolength{\mylength}{-2\fboxrule}%
+ \begin{minipage}{\mylength}}%
+ {\end{minipage}\end{Sbox}\fbox{\TheSbox}\end{table}}%
+\end{example**}
+Now let's see if it works:
+\begin{example*}
+ \begin{FramedTable}
+ \begin{center}
+ \begin{tabular}{rl}
+ foo & bar
+ \end{tabular}
+ \end{center}
+ \caption{A table of foo and bar.}
+ \end{FramedTable}
+\end{example*}
+
+The most common reason to want to rotate an entire float, caption and all, is
+to put it on a page by itself in landscape mode, centered both horizontally
+and vertically. Compared to the table framing we did above, we just have to
+replace "\fbox" by our box rotation command (e.g., "\rotateleft" or whatever),
+set the width of the minipage to "\textheight" (if you want to use the full
+size of the page), and use the float position specifier "[p]". "fancybox.sty"
+contains an environment,
+\begin{LVerbatim}
+ \begin{landfloat}{<float>}{<rotation command>}
+ ...
+ \end{landfloat}
+\end{LVerbatim}
+that automates this. It has two arguments: the name of the floating
+environment, and your rotation command. For example, if "\rotateleft{foo}"
+rotates "foo" by 90 degrees, and you want a landscape mode "table", then try
+\begin{LVerbatim}
+ \begin{landfloat}{table}{\rotateleft}
+ ...
+ \end{landfloat}
+\end{LVerbatim}
+If the whole document is in landscape mode, then "landfloat" gives you a
+portrait-mode float---good for a table that is too tall to fit in landscape
+mode.
+
+If you don't add a caption to a float, it doesn't matter much what floating
+environment you use (e.g., "table", "figure" or whatever). Thus, you can put
+anything in a landscape float. For example, suppose I have a very wide
+equation. Then I can write:
+\begin{LVerbatim}
+ \begin{landfloat}{table}{\rotateleft}
+ \begin{equation}
+ ...
+ \end{equation}
+ \end{landfloat}
+\end{LVerbatim}
+"fancybox.sty" defines a generic caption, "\GenericCaption", that doesn't
+affect the numbering of floats, doesn't make an entry in a list of floats, and
+doesn't add anything to the argument you give. I could have used this if I
+wanted to add a caption to the previous example.
+
+\section{Center, flushleft and flushright}
+
+There are two ways to box a "center", "flushleft" or "flushright" environment.
+If you have long lines and you want \TeX\ to do the line breaking, then put
+the environment inside a "minipage".\footnote{List and other such environments
+work best inside a "minipage" environment rather than a "\parbox".} If you
+have short lines and you want the frame to adjust itself to the size of the
+longest line, then use "fancybox.sty"'s
+\begin{quote}
+ "Bcenter", "Bflushleft" or "Bflushright"
+\end{quote}
+environment instead.
+
+These are basically just "tabular" environments with a single column, and so
+each line should end with "\\", or "\\["<dim>"]" to insert extra space, and
+the text on each line must be balanced. Also, each line is sitting in its own
+group, and so, e.g., if you want to change the font for the whole environment,
+you should do this before the environment rather than after.
+Like the "tabular" environment, the box that is produced has the baseline at
+the center, unless you include an optional argument "[t]" to align the box
+with the top line or "[b]" to align the box with the bottom line.
+
+For example:
+\begin{example}
+ \setlength{\fboxsep}{10pt}%
+ \fbox{%
+ \begin{Bcenter}
+ Love of life\\
+ and other short stories\\
+ by Policarpa Salabarrieta
+ \end{Bcenter}}
+\end{example}
+Compare this with:
+\begin{example}
+ \setlength{\fboxsep}{10pt}%
+ \fbox{%
+ \begin{minipage}{6cm}
+ \begin{center}
+ Love of life and other short stories
+ by Policarpa Salabarrieta
+ \end{center}
+ \end{minipage}}
+\end{example}
+
+In either case, if we want the resulting framed box centered, we have to
+include it inside another "center" environment.
+
+Here is another example:
+\begin{example}
+ My list: \fbox{%
+ \begin{Bflushleft}[b]
+ Galanga root\\
+ Coconut\\
+ Tempeh
+ \end{Bflushleft}}
+\end{example}
+
+
+\section{Lists}
+
+There are again two ways to box a list environment such as
+\begin{quote}
+ "itemize", "enumerate" or "description".
+\end{quote}
+You can put it in a "minipage" of pre-determined size and let \TeX\ do the
+line breaking, or you can use
+\begin{quote}
+ "Bitemize", "Benumerate" or "Bdescription"
+\end{quote}
+instead, and let the box adjust to the size of the longest line.
+
+For example.
+\begin{example}
+ \fbox{%
+ \begin{Bitemize}
+ \item Groceries
+ \item Clean hamster cages
+ \item Pick up Peter
+ \end{Bitemize}}
+\end{example}
+
+ Most of the usual list parameters are irrelevant except for "\itemsep" and
+"\labelsep". These environments are also based on the "tabular" environment,
+and so each item should be balanced text. You can't write "\vspace{4pt}"
+either, but you can insert an extra amount of space before an item by writing
+"\item(4pt)" (or "\item(4pt)[label]" if you have a label). Also, you can break
+lines within an item using "\\" or "\\[<dim>]". For example:
+\begin{example}
+ \fbox{%
+ \begin{Bdescription}
+ \item[David] Groceries
+ \item[Eli] Hamster cages\\
+ Surreal numbers
+ \item(3pt)[Doris] Pick up Peter
+ \end{Bdescription}}
+\end{example}
+
+These environments also have an optional argument, "[t]" to align the box with
+the top line, and "[b]" to align the box with the bottom line.
+\begin{example}
+ To do:
+ \fbox{\setlength{\itemsep}{0pt}%
+ \begin{Benumerate}[t]
+ \item Groceries
+ \item Hamster cages
+ \item Pick up Peter
+ \end{Benumerate}}
+\end{example}
+
+There is also a generic "\Blist" command that is analogous to \LaTeX's
+"\list". It has the same two obligatory arguments, plus a third optional
+"[t]" or "[b]" argument for changing the alignment.
+
+\section{Superimposing boxes}
+
+The command
+\begin{LVerbatim}
+ \boxput*(<x>,<y>){<LR stuff1>}{<LR stuff2>}
+\end{LVerbatim}
+puts <LR stuff1> either behind (the default) or in front of (with the "*") <LR
+stuff2>.\footnote{You will only notice the difference between "\boxput" and
+"\boxput*" if you are using color implemented by "\special"'s} The resulting
+box has the dimensions of <LR stuff2>.
+
+The coordinates "(<x>,<y>)" determine where the center of <LR stuff1> is
+positioned. For example, "(0,0)" puts it at the center of <LR stuff2>, "(0,1)"
+puts it at the center-top, and "(-1,-1)" puts it in the bottom-left corner.
+
+More generally, the origin of the coordinate system is at the center of <LR
+stuff2>, one unit in the vertical direction is half the vertical size of <LR
+stuff2>, and one unit in the horizontal direction is half the width of <LR
+stuff2>. Thus, <x> and <y> should always be numbers (without units such as
+"pt" or "cm"), with one exception: If <y> is "b" or "B", <LR stuff1> is
+positioned vertically at the baseline of <LR stuff2>. "(<x>,<y>)" is
+optional---the default is "(0,0)".
+
+Except for the funny coordinate system, "\boxput" is like the "\put" command
+in a "picture". In particular, you can use "\makebox" in <LR stuff1> to
+fine-tune the positioning, and <LR-stuff1> can contain a "picture"
+environment.
+
+You might use "\boxput" to put a ``water mark'' in the background of a box, or
+to put a label next to a box, when you don't want this label to take up any
+space. Here is a lazy example:
+\begin{example}
+ \boxput{\makebox(0,0){\Huge Censored!}}{\parbox{3in}{%
+ The origin of the coordinate system is at the center of
+ {\em LR stuff2}, and one unit in the x-direction
+ is half the width of {\em LR stuff2}.}}
+\end{example}
+
+This would be a lot more interesting using PSTricks, with ``Censored!'' in the
+foreground, rotated 30 degrees, and red:
+\begin{LVerbatim}
+ \boxput*{\rput{30}{\Huge\red Censored}}{\parbox{3in}{%
+ blah blah}}
+\end{LVerbatim}
+
+Here is another example using PSTricks:
+\begin{LVerbatim}
+ \newcommand{\titledframe}[2]{%
+ \boxput*(0,1){\psframebox*{#1}}%
+ {\psframebox[framesep=12pt]{#2}}}
+\end{LVerbatim}
+\newcommand{\titledframe}[2]{%
+ \boxput*(0,1){#1}%
+ {\fboxsep=12pt \fbox{#2}}}
+The following example illustrated roughly how it works, but ``My title'' does
+not blot out the frame behind it because this documentation does not use
+PSTricks. \begin{example}
+ \titledframe{My title}{%
+ \parbox{2in}{The title is superimposed
+ on the top part of the frame.}}
+\end{example}
+
+\section{Framing a whole page}
+
+The commands
+\begin{LVerbatim}
+ \fancyput*(<x>,<y>){<LR stuff>}
+ \thisfancyput*(<x>,<y>){<LR stuff>}
+\end{LVerbatim}
+are pretty much like "\put" commands in a \LaTeX\ picture environment whose
+origin is 1 inch down and to the right from the top left corner of the
+page.\footnote{Don't blame me for \TeX's peculiar 1 inch margins.} The only
+differences are that (i) that any LR-mode material is permitted (including
+\LaTeX\ "picture" environment, of course), (ii) the coordinate is optional
+"(0pt,0pt)" is substituted by default), and (iii) if the coordinate is
+included, you {\em must} specify the units.
+
+"\thisfancyput" affects only the current page, and is a global declaration
+(analogous to "\thispagestyle").
+
+If you include the optional "*", then the command adds to, rather than
+replaces, other things that have been inserted with "\fancyput" or
+"\thisfancyput".
+
+These commands are particularly useful for framing a page, because you can get
+a frame that is, e.g., 1 inch from each side of the physical page without
+having to worry about what margins you are using for the document. Here is an
+example:
+\begin{example*}
+ \thisfancyput(3.25in,-4.5in){%
+ \setlength{\unitlength}{1in}\fancyoval(7,9.5)}
+\end{example*}
+You could also use "\fancyput" to add some kind of ``watermark'' or background
+image (e.g., a light gray ``DRAFT'').
+
+There are other commands that directly frame or in some other way box the page
+of text:
+\begin{LVerbatim}
+ \fancypage{<cmds1>}{<cmds2>}
+ \thisfancypage{<cmds1>}{<cmds2>}
+\end{LVerbatim}
+
+Each finished page, before adding the headers and footers, (and thus having
+width and height "\textwidth" and "\textheight", is boxed with
+\begin{LVerbatim}
+ <cmds1>{<pagebox>}
+\end{LVerbatim}
+Thus, <cmds1> should be, or should end with, a command whose argument can be a
+box, such as "\fbox" or "\rotateleft".
+
+Then the headers and footers are added, using the new width of the page, and
+this is boxed with
+\begin{LVerbatim}
+ <cmds2>{<pagebox>}
+\end{LVerbatim}
+The same rules apply to <cmds2> as to <cmds1>.
+
+Here is an example:
+\begin{example*}
+ \thisfancypage{%
+ \setlength{\fboxsep}{8pt}%
+ \setlength{\shadowsize}{8pt}%
+ \shadowbox}{}
+\end{example*}
+
+{\bf Warning:} The commands described in this section change \LaTeX's output
+routine, and may not work with document styles that do the same. Also, bad
+arguments can cause serious errors with uninformative error messages.
+
+\section{Switching to landscape mode midstream}
+
+The most common reason to switch to landscape mode midstream is to rotate a
+float, such as a table or figure. This was discussed in Section \ref{floats}.
+
+If you want to rotate one or more pages, without rotating the headers and
+footers, use the
+\begin{LVerbatim}
+ \begin{LandScape}{<cmd>}
+ ...
+ \end{LandScape}
+\end{LVerbatim}
+environment. <cmd> should be the command for rotating the page 90 degrees to
+the left or right. (E.g., "\rotateleft", or "\rotate[l]".)
+
+If you want to rotate the headers, footers and margins as well, use the
+\begin{LVerbatim}
+ \begin{Landscape}{<paperwidth>}{<paperheight>}{<cmd>}
+ ...
+ \end{Landscape}
+\end{LVerbatim}
+environment (the small "s" makes the difference) to rotate the pages left
+(counterclockwise), and use the "Landscape*" environment (same arguments) to
+rotate the pages right (clockwise). The three arguments are the width of the
+paper, the height of the paper, and the rotation command you are using. For
+example, if I have a portrait mode document using the US 8.5in by 11in paper,
+and if "\rotateleft{foo}" rotates "foo" 90 degrees counterclockwise, then I
+can write
+\begin{LVerbatim}
+ \begin{Landscape}{8.5in}{11in}{\rotateleft}
+\end{LVerbatim}
+
+You can use "\LandScape", "\Landscape" and "\Landscape*", rather then the
+"LandScape", "Landscape" and "Landscape*" environments, if you want the rest
+of the document to be in landscape mode.
+
+If your document is being printed in landscape mode, then these environments
+switch to portrait mode.
+
+For example, suppose I have a landscape mode document, and I want to switch to
+portrait mode for the rest of the document, rotating the pages to the
+``right'' with "\rotateright". Then I would write
+\begin{LVerbatim}
+ \Landscape*{11in}{8.5in}{\rotateright}
+\end{LVerbatim}
+
+These environments switch the text width and height, leaving the margins
+exactly as they were before. It is quite possible that you want to make other
+changes to the page parameters after switching to landscape mode, but as
+Lamport points out the \LaTeX\ {\em User's Guide and Reference Manual}, this
+generally doesn't work right in the middle of the document. "fancybox.sty" has
+a command "\UsePageParameters" which gets around this. It should be used right
+after you change the page parameters (and the page parameter changes should
+come right after the beginning of the landscape environment, or "\clearpage").
+
+{\bf Warning:} The commands and environments described in this section change
+\LaTeX's output routine, and may not work with document styles that do the
+same. Also, bad arguments can cause serious errors with uninformative error
+messages.
+
+\section{Verbatim}
+
+If you try to frame some verbatim text by typing
+\begin{LVerbatim}
+ \fbox{%
+ \begin{minipage}{5cm}
+ \begin{verbatim}
+ \My \Program \Listing
+ if { foo } { bar } fi
+ \end{verbatim}
+ \end{minipage}}
+\end{LVerbatim}
+you will get nonsense at best. This is because the argument to "\fbox" is read
+before the "\begin{verbatim}" is processed. But then it is too late for \TeX\
+to go back and interpret the contents of the verbatim environment literally
+rather than as special \TeX\ commands and characters.
+
+One solution is to use the "Sbox" environment:
+\begin{example}
+ \begin{Sbox}
+ \begin{minipage}{5cm}
+ \begin{verbatim}
+ \My \Program \Listing
+ if { foo } { bar } fi
+ \end{verbatim}
+ \end{minipage}
+ \end{Sbox}
+ \setlength{\fboxsep}{8pt}
+ \fbox{\TheSbox}
+\end{example}
+
+"fancybox.sty" also contains a command that ``fixes'' \LaTeX's LR-box commands
+for use with verbatim text:
+\begin{LVerbatim}
+ \VerbBox{<cmd>}{<LR stuff>}
+\end{LVerbatim}
+This is like
+\begin{LVerbatim}
+ <cmd>{<LR stuff>}
+\end{LVerbatim}
+but <LR stuff> can contain verbatim text.\footnote{Or other tricks that
+involve "\catcode" changes, as occurs with some foreign language macros.} For
+example:
+\begin{example}
+ \VerbBox{\fbox}{\verb+\foo{bar}+}
+\end{example}
+
+For footnotes, put the command "\VerbatimFootnotes" in the preamble, and then
+you can use verbatim commands or environments in the argument of "\footnote".
+This is an optional feature because it might conflict with somebody else's
+modification of the footnote system.
+
+If you try to define your own framed verbatim environment with
+\begin{LVerbatim}
+ \newenvironment{FramedVerb}%
+ {\begin{Sbox}\begin{minipage}{5in}\begin{verbatim}}
+ {\end{verbatim}\end{minipage}\end{Sbox}
+ \setlength{\fboxsep}{8pt}\fbox{\TheSbox}}
+\end{LVerbatim}
+and then type
+\begin{LVerbatim}
+ \begin{FramedVerb}
+ if { foo } { bar } fi
+ \end{FramedVerb}
+\end{LVerbatim}
+you will again run into trouble because after the "\begin{verbatim}", \LaTeX\
+is searching for the literal string "\end{verbatim}" as the end of the
+verbatim text. It just skips right over the "\end{FramedVerb}" and may well
+continue to the end of the file or until it throws up.
+
+"fancybox.sty" contains some verbatim environments that get around this
+problem and that have other advantages for LR-boxing verbatim listings, when
+compared to the standard \LaTeX\ "verbatim" environment. Admittedly, many of
+their special features have nothing to do with boxes.
+
+Here are the basic verbatim environments:
+\begin{description}
+ \vitem"Verbatim" Works pretty much like \LaTeX's "verbatim".
+ \vitem"LVerbatim" Like "Verbatim", but "list" rather than "trivlist" is used
+to display the listing, and so it is indented from the left margin. (This is
+what I am using for verbatim listings in this document.)
+ \vitem"BVerbatim[<pos>]" Produces a box with the same width as the longest
+verbatim line. The baseline is in the center, unless you include the optional
+argument "[t]" for alignment with the top line or "[b]" for alignment with the
+bottom line.
+ \vitem"VerbatimOut{<file>}" Writes the verbatim text to <file>.
+ \vitem"SaveVerbatim{<cmd>}" Saves the verbatim text as <cmd>. <cmd> is
+defined globally, without checking whether <cmd> is already defined. Use
+obviously innocuous names like "\MyTemp".
+\end{description}
+
+{\bf Important:} For any of these verbatim environments, or new verbatim
+environments you define yourself (see below), nothing should come after
+"\begin{Verbatim}" or before "\end{Verbatim}" on the same line --- not even
+spaces!%
+ \footnote{If you need to allow something to come before "\end{Verbatim}",
+then you have two options:
+ \begin{itemize}
+ \item Put the command "\AltGetVerbatim" in the preamble. This switches to a
+scheme where anything preceding "\end{Verbatim}" is simply ignored. This can
+cause problems if you do really weird things with active characters or other
+commands within the verbatim environment (e.g., active conditionals that are
+not balanced within a line of verbatim text), but in this case you are
+probably a good enough hacker to use the next option.
+ \item "\EndVerbatimTokens" is a token register that you can set to the
+tokens that should precede "\end{Verbatim}" on the same line, with their
+verbatim "\catcode"'s.
+ \end{itemize}}
+If you put something after "\begin{Verbatim}" on the same line, it is simply
+ignored. However, if you put something after "\end{Verbatim}" on the same
+line, or if you misspell "\end{Verbatim}", you will get an error such as
+\begin{LVerbatim}
+ ! File ended while scanning use of \Verbatim.
+\end{LVerbatim}
+and the document will end at that point.
+
+You can define new verbatim environments using "\newenvironment". You just
+have to start the definition with
+\begin{LVerbatim}
+ \VerbatimEnvironment
+\end{LVerbatim}
+ For example, here is the framed verbatim environment we tried earlier:
+\begin{example**}
+ \newenvironment{FramedVerb}%
+ {\VerbatimEnvironment
+ \begin{Sbox}\begin{minipage}{5cm}\begin{Verbatim}}%
+ {\end{Verbatim}\end{minipage}\end{Sbox}
+ \setlength{\fboxsep}{8pt}\fbox{\TheSbox}}
+\end{example**}
+Let's give it a try:
+\begin{example}
+ \begin{FramedVerb}
+ if { foo } { bar } fi
+ \end{FramedVerb}
+\end{example}
+
+Here are three commands for inputting a whole file verbatim. The file must end
+with a new line.
+\begin{description}
+ \vitem"\VerbatimInput{<file>}" Like "\Verbatim".
+ \vitem"\LVerbatimInput{<file>}" Like "\LVerbatim".
+ \vitem"\BVerbatimInput[<pos>]{<file>}" Like "\BVerbatim".
+\end{description}
+
+Here are three commands for making use of verbatim text that has been saved to
+a command:
+\begin{description}
+ \vitem"\UseVerbatim{<cmd>}" Like "\Verbatim".
+ \vitem"\LUseVerbatim{<cmd>}" Like "\LVerbatim".
+ \vitem"\BUseVerbatim[<pos>]{<cmd>}" Like "\BVerbatim".
+\end{description}
+The "SaveVerbatim" environment and the "\UseVerbatim" commands are useful for
+including verbatim text in the argument of "\marginpar", "\fbox" and other
+commands. For example, here is another way to define the "FramedVerb"
+environment:
+\begin{LVerbatim}
+ \newenvironment{FramedVerb}%
+ {\VerbatimEnvironment
+ \begin{SaveVerbatim}{\MyTemp}}%
+ {\end{SaveVerbatim}%
+ \setlength{\fboxsep}{8pt}%
+ \fbox{\begin{minipage}{5cm}\UseVerbatim{\MyTemp}
+ \end{minipage}}}
+\end{LVerbatim}
+
+Here are some verbatim commands for short-pieces of (in-line) verbatim text:
+\begin{description}
+ \vitem"\Verb<char> <literal> <char>" \ \\
+ Like \LaTeX's "\verb" command, but it will complain if it encounters a new
+line in <literal>.\footnote{Be careful that your word processing does not
+insert one for you.} For example:
+\begin{example*}
+ "\begin{quote}
+ The main use for the \Verb+SaveVerbatim+
+ environment and the \Verb+\UseVerbatim+
+ commands is to include $\ldots$
+ "\end{quote}
+\end{example*}
+ \vitem"\UseVerb{<cmd>}" Like "\UseVerbatim", but without any particular
+formatting. It is intended for including short pieces of literal text saved
+with "\SaveVerb" (below).\footnote{But it can also be used for multiple lines
+saved with the "SaveVerbatim" environment if you want to do the formatting
+yourself. E.g., try this in a tabbing environment with "\VerbatimTab"
+appropriately defined.}
+ \vitem"\SaveVerb[<whatever>]{<cmd>}<char> <literal> <char>"\ \\
+ This is like "\Verb", but it saves <literal> as <cmd>, and then returns to
+the optional argument <whatever>. Like the "SaveVerbatim" environment, it
+defines <cmd> globally without checking whether <cmd> is already defined.
+Without the optional argument, the most common use is for including verbatim
+text in a "\marginpar", "\section" or other command argument.
+
+ The optional argument can be used for special tricks. For example, all the
+listings of commands in this documentation use "\vitem" in a "description"
+environment, where "\vitem" is defined by:\footnote{The braces enclosing the
+optional argument of "\SaveVerb" prevent the "]" inside the argument from
+being mistaken for the end of the argument.}
+\begin{LVerbatim}
+ \newcommand{\vitem}%
+ {\SaveVerb[{\item[\UseVerb{\MyTemp}]}]{\MyTemp}}
+\end{LVerbatim}
+Whereas
+\begin{LVerbatim}
+ \item[\Verb"\foo"]
+\end{LVerbatim}
+would not work because after "\item" reads its argument it is too late to
+interpret "\foo" literally,
+\begin{LVerbatim}
+ \vitem"foo"
+\end{LVerbatim}
+does work because it is equivalent to
+\begin{LVerbatim}
+ \SaveVerb{\MyTemp}"foo"\item[\UseVerb{\MyTemp}]
+\end{LVerbatim}
+\end{description}
+
+
+These environments and commands use various parameters that make it easy to
+customize their behavior. However, until you want to find the need for such
+customization, you might as well ignore the rest of this section.
+
+Internally, "fancybox.sty" separates the reading and formatting of verbatim
+text. Most of the environments and commands perform both functions, but
+"SaveVerbatim" and "\SaveVerb" only read the text, while "UseVerbatim" (and
+company) and "\UseVerb" only format the text. "VerbatimOut" gets special
+treatment. The parameters that apply to each class of verbatim environment or
+command is listed in Table \ref{verbtable}.
+
+\begin{table}
+\begin{center}
+\renewcommand{\arraystretch}{0}
+\setlength{\tabcolsep}{7pt}
+\newcommand{\vs}{& \\[\tabcolsep]}
+\newcommand{\VS}{\\ \vs \hline \vs}
+\begin{tabular}{|l|l|}
+\hline \vs
+{\em Where} & {\em What}
+\\ \vs \hline
+\hline \vs
+ \begin{Bflushleft}
+ Environments\\
+ that format
+ \end{Bflushleft}
+&
+ \begin{Bflushleft}
+ "\VerbatimSpace"\\
+ "\VerbatimTab"\\
+ "\VerbatimFont"\\
+ "\VerbatimFuzz"\\
+ "\EveryVerbatimLine"\\
+ "\EveryVerbatim"\\
+ "\ThisVerb"
+ \end{Bflushleft}
+\VS
+ \begin{Bflushleft}
+ Environments\\
+ that read
+ \end{Bflushleft}
+&
+ \begin{Bflushleft}
+ "\EveryVerbatimCodes"\\
+ "\ThisVerbCodes"
+ \end{Bflushleft}
+\VS
+ \begin{Bflushleft}
+ "\Verb" and\\
+ "\UseVerb"
+ \end{Bflushleft}
+&
+ \begin{Bflushleft}
+ "\VerbSpace"\\
+ "\VerbTab"\\
+ "\VerbFont"\\
+ "\EveryVerb"\\
+ "\ThisVerb"
+ \end{Bflushleft}
+\VS
+ \begin{Bflushleft}
+ "\Verb" and\\
+ "\SaveVerb"
+ \end{Bflushleft}
+&
+ \begin{Bflushleft}
+ "\EveryVerbCodes"\\
+ "\ThisVerbCodes"
+ \end{Bflushleft}
+\VS
+ \begin{Bflushleft}
+ "VerbatimOut"
+ \end{Bflushleft}
+&
+ \begin{Bflushleft}
+ "\EveryVerbOutCodes"\\
+ "\ThisVerbCodes"\\
+ "\EveryVerbOutLine"\\
+ "\ThisVerb"
+ \end{Bflushleft}
+\\ \vs \hline
+\end{tabular}
+\caption{Parameters for the verbatim environments and
+commands.\label{verbtable}}
+\end{center}
+\end{table}
+
+All the parameters, including "\VerbatimFuzz", are ordinary commands, and
+should be changed with "\renewcommand".
+
+Here is a description of each of the parameters for environments that format
+the verbatim text:
+\begin{description}
+ \vitem"\VerbatimSpace" The insertion text for spaces. The default is "\ ",
+which produces a blank space. Change it to "\ttspace" to get \ttspace.
+ \vitem"\VerbatimTab" The insertion text for tabs. The default is
+\begin{LVerbatim}
+ \ \ \ \ \ \ \ \
+\end{LVerbatim}
+ \vitem"\VerbatimFont" The font to use for verbatim text. The default is
+"\tt"
+ \vitem"\VerbatimFuzz" This is the amount by which lines can be too long in a
+"Verbatim" or "LVerbatim" environment before you get overfull "\hbox"
+warnings. This threshold is usually .1pt, but the default definition of
+"\VerbatimFuzz" is "2pt" because verbatim lines won't break and are therefore
+often too long.
+ \vitem"\EveryVerbatimLine" This is inserted at the beginning of each line of
+verbatim environments or verbatim files. By default it does nothing. I like to
+indent each line in the verbatim environment in the input file by 2 spaces, so
+I define
+\begin{LVerbatim}
+ \renewcommand{\EveryVerbatimLine}[2]{}
+\end{LVerbatim}
+to eat those spaces. (But I have to remember to put in two spaces or space
+markers for blank lines too.) You might also use it to number the lines. For
+example:
+\begin{example}
+ \newcounter{VerbLineNo}
+ \renewcommand{\EveryVerbatimLine}%
+ {\makebox[10pt][r]{%
+ \stepcounter{VerbLineNo}%
+ \tiny\rm\arabic{VerbLineNo}}%
+ \hspace{10pt}}
+ \renewcommand{\EveryVerbatim}%
+ {\setcounter{VerbLineNo}{0}}
+ \begin{SaveVerbatim}{\MyTemp}
+ \setlength{\fboxsep}{15pt}
+ \setlength{\mylength}{\linewidth}
+ \end{SaveVerbatim}
+ \fbox{\BUseVerbatim{\MyTemp}}
+\end{example}
+ \vitem"\EveryVerbatim" Whatever else you want to say before formatting the
+verbatim text. By default, it does nothing.
+ \vitem"\ThisVerb" This is executed before any of the commands above, and
+then its value is cleared. Use this to customize a single verbatim formatting
+environment.
+\end{description}
+
+Here is a description of the parameters for environments that read the
+verbatim text:
+\begin{description}
+ \vitem"\EveryVerbatimCodes" This command is inserted just before reading the
+verbatim text. Use it to play with "\catcode"'s (see the {\em \TeX book}). For
+example, I might type
+\begin{LVerbatim}
+ \renewcommand{\EveryVerbatimCodes}{\catcode`\"=14}
+\end{LVerbatim}
+if I want to use \Verb+"+ as a comment character in verbatim text.%
+%% The use of SaveVerbatim and \SaveVerb is not necessary here because
+%% \VerbatimFootnotes is in effect. This is just a test.
+\begin{SaveVerbatim}{\MyTemp}
+ \def\MyQuote{"} % \MyQuote is now the character ",
+ \def\temp{\Verb"} % in case I need it.
+ \catcode`\"=13 % Now " is like a command.
+ \let"\temp % Now "foo" is like \Verb"foo"
+ \def\do{\noexpand\do\noexpand} % Now " can be used in verbatim
+ \edef\dospecials{\dospecials\do\"} % environments anyway.
+\end{SaveVerbatim}\SaveVerb{\Foo}+"+\SaveVerb{\FFoo}+\Verb"foo"+%
+\footnote{Here is another "\catcode" trick. We make \UseVerb{\Foo} a short
+verbatim command, so that we can say \UseVerb{\Foo foo\Foo} instead of
+\UseVerb{\FFoo}:
+\LUseVerbatim{\MyTemp}}
+ \vitem"\ThisVerbCodes" This command is executed before "\EveryVerbCodes",
+and then it is cleared. Use this to fool with the "\catcode"`s of a single
+verbatim environment.
+\end{description}
+
+The parameters for "\Verb", "\UseVerb" and "\SaveVerb" and the "VerbatimOut"
+environment are analogous to the similar commands for other environments.
+
+Here is an example of the use of "\ThisVerb" to define a variant of "\Verb"
+that uses \ttspace\ to mark spaces:
+\begin{LVerbatim}
+ \newcommand{\SVerb}{%
+ \renewcommand{\ThisVerb}%
+ {\renewcommand{\VerbatimSpace}{\ttspace}}%
+ \Verb}
+\end{LVerbatim}
+
+Finally, without further comment, here are the definitions of the "example"
+and "example*" environments that were used for the examples in this document:
+{\renewcommand{\EveryVerbatimLine}{}\LVerbatimInput{\jobname.ex1}}
+
+
+\end{document}
+%% END fancybox.doc
diff --git a/macros/latex/contrib/fancybox/fancybox.sty b/macros/latex/contrib/fancybox/fancybox.sty
new file mode 100644
index 0000000000..a39d1f4a6c
--- /dev/null
+++ b/macros/latex/contrib/fancybox/fancybox.sty
@@ -0,0 +1,966 @@
+%% 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