summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/fancyvrb/fvrb-ex.dtx
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2006-01-11 23:53:13 +0000
committerKarl Berry <karl@freefriends.org>2006-01-11 23:53:13 +0000
commit1b390e7c0060de46864273dd300d12affa5d9735 (patch)
tree07385aa5bf7cccb8b943820b8689295bdbdbae8d /Master/texmf-dist/source/latex/fancyvrb/fvrb-ex.dtx
parentf1ba088253f565d5cb2d934517f7c9af1a72c154 (diff)
trunk/Master/texmf-dist/source/latex/fancyvrb
git-svn-id: svn://tug.org/texlive/trunk@277 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/fancyvrb/fvrb-ex.dtx')
-rw-r--r--Master/texmf-dist/source/latex/fancyvrb/fvrb-ex.dtx1564
1 files changed, 1564 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/fancyvrb/fvrb-ex.dtx b/Master/texmf-dist/source/latex/fancyvrb/fvrb-ex.dtx
new file mode 100644
index 00000000000..c50703b2b04
--- /dev/null
+++ b/Master/texmf-dist/source/latex/fancyvrb/fvrb-ex.dtx
@@ -0,0 +1,1564 @@
+% \iffalse meta-comment, etc.
+%%
+%% Package `fvrb-ex' (`fvrb-ex', `hbaw' and `hcolor')
+%%
+%% COPYING:
+%% The files of this package "fvrb-ex" are released under the Artistic
+%% License Version 2. A copy of that license is included in the file
+%% artistic2.txt inside the fancyvrb package. This package consists of
+%% the following files:
+%% README fvrb-ex.dtx fvrb-ex.ins
+%%
+%% Denis Girou (CNRS/IDRIS - France) <Denis.Girou@idris.fr>
+%% March 27, 1998
+%%
+% \fi
+%
+% \changes{v1.7}{1998/03/26}{First public release.}
+% \changes{v0.1}{1995}{First personal version.}
+%
+% \CheckSum{1322}
+%
+% \newif\ifmulticols
+% \IfFileExists{multicol.sty}{\multicolstrue}{}
+% \newif\ifpstricks
+% \IfFileExists{pstricks.sty}{\pstrickstrue}{}
+%
+% \DoNotIndex{\\,\^,\£,\§,\µ,\¶} ^^A Unefficient...
+% \DoNotIndex{\@defpar,\@gobble,\@ifnextchar,\@tempdimb}
+% \DoNotIndex{\active,\advance,\Answer@No,\Answer@Yes,\author}
+% \DoNotIndex{\begin,\begingroup,\box}
+% \DoNotIndex{\catcode,\center,\circle,\CodelineIndex,\color,\ColorVersion}
+% \DoNotIndex{\date,\DeclareOption,\def,\DocInput,\documentclass,\dp}
+% \DoNotIndex{\else,\EnableCrossrefs,\end,\endcenter,\endgroup,\endinput}
+% \DoNotIndex{\endpspicture,\expandafter}
+% \DoNotIndex{\fboxsep,\fcolorbox,\fi,\filedate,\fileversion,\footnotesize}
+% \DoNotIndex{\FV@XRightMargin,\fvset,\GetFileInfo,\hbadness,\hbox,\hfuzz}
+% \DoNotIndex{\iden,\IfFileExists,\ifmmode,\ifpstricks,\ifx,\input}
+% \DoNotIndex{\jobname,\large}
+% \DoNotIndex{\m@th,\maketitle,\mathbf,\mathit,\mathnormal}
+% \DoNotIndex{\mathsl,\mathtt,\message,\mu,\multiply}
+% \DoNotIndex{\NeedsTeXFormat,\newcommand,\newif,\newpsobject,\newread}
+% \DoNotIndex{\Oldmakeindex,\OnlyDescription}
+% \DoNotIndex{\par,\parindent,\pounds,\PrintChanges,\PrintIndex}
+% \DoNotIndex{\ProcessOptions,\ProvidesPackage,\psellipse,\pspicture}
+% \DoNotIndex{\PSTricksLoaded,\pstrickstrue,\put}
+% \DoNotIndex{\Question@Color,\Question@Mark}
+% \DoNotIndex{\read,\RecordChanges,\RecustomVerbatimEnvironment,\relax}
+% \DoNotIndex{\RequirePackage}
+% \DoNotIndex{\section,\setbox,\setlength,\smallskip,\space,\strip}
+% \DoNotIndex{\textbf,\textcolor,\textit,\textsc,\textsf,\textsl,\texttt}
+% \DoNotIndex{\textwidth,\title,\topsep,\ttyin}
+% \DoNotIndex{\underline,\unitlength,\usepackage}
+% \DoNotIndex{\VerbatimEnvironment,\VerbatimInput,\vspace,\z@}
+%
+% \setcounter{IndexColumns}{2}
+%
+% \newcommand{\FVrbPackage}{`\textsf{fancyvrb}'}
+% \newcommand{\FVrbExPackage}{`\textsf{fvrb-ex}'}
+% \newcommand{\HbawPackage}{`\textsf{hbaw}'}
+% \newcommand{\HcolorPackage}{`\textsf{hcolor}'}
+%
+% \title{The `\textsf{fvrb-ex}' package\\
+% Example environments\\with the \FVrbPackage{} package}
+% \author{Denis Girou\\CNRS/IDRIS\\Orsay -- France\\
+% {\footnotesize email: Denis.Girou@idris.fr}}
+% \date{Version 1.7\\March 27, 1998\\
+% {\small Documentation revised March 27, 1998}}
+%
+% \maketitle
+%
+% \begin{abstract}
+% This package, built above the \FVrbPackage{} one (from Timothy
+% \textsc{van Zandt}), offer several kinds of the so-called \emph{example}
+% environments to format some code both in ``verbatim'' mode and in the
+% ``normal'' way, below or on the side. The advantage of such environments
+% is that the code itself is included only one time in the source code,
+% which allow to be sure of the consistence of the two versions shown.
+%
+% Some other kinds of such environments are specially devoted to graphics,
+% allowing to give the size of them. It is possible in this case to draw
+% also a grid.
+% \end{abstract}
+%
+% \ifmulticols
+% \setlength{\columnseprule}{0.6pt}
+% \begin{multicols}{2}
+% {\parskip 0pt ^^A We have to reset \parskip (bug in \LaTeX)
+% \fi
+% \tableofcontents
+% \ifmulticols
+% }
+% \end{multicols}
+% \fi
+%
+% \section{Introduction}
+%
+% These macros are based on some previous work of Timothy \textsc{van
+% Zandt}, adapted and developed to suit my personal needs.
+%
+% This package is built above the \FVrbPackage{} one (from Timothy
+% \textsc{van Zandt}), to offer some \emph{example} environments showing both
+% the code and it result. It main strength is that it allow to use all the
+% power of \FVrbPackage{}, with it great number of customization parameters.
+%
+% These macros can also be used in conjunction with the \HbawPackage{} and
+% \HcolorPackage{} packages, to allow to generate the verbatim code with
+% some \emph{highlighting} attributes to emphasize parts of the text.
+% It can also produce different effects according to the choice of a
+% \emph{colored} or \emph{black and white} version. This last facility was
+% developed for slides, to allow to generate them both in color for
+% projection and in black and white to distribute them as paper copy.
+%
+% Some special environments for graphic drawings allow to define directly
+% the size of them, without requiring to use also a \emph{picture}
+% environment. To be able to use them, the PSTricks package must be available,
+% even if these specialized environments can be used for graphics built with
+% another macro language than PSTricks.
+%
+% \begin{quote}
+% \textbf{\large Warning!} You must be aware that it has been reported
+% that this package doesn't work at all on some platforms, due to the way
+% the 8~bits characters are managed by some \TeX{} systems.
+% \end{quote}
+%
+% \section{User interface}
+%
+% \begin{quote}
+% \textbf{\large Warning!} We suppose here that you already know the
+% \FVrbPackage{} package. If not, look at it own documentation!
+% \end{quote}
+%
+% \subsection{Environments}
+%
+% \noindent Five new environments are defined:
+%
+% \begin{description}
+% \item[Example]: show the verbatim text and the formatted result below.
+% \item[CenterExample]: same than \texttt{Example}, but the result is
+% centered.
+% \item[SideBySideExample]: show the formatted result on the left and the
+% verbatim text on the right. The result is centered vertically according to
+% the text.
+% \item[PCenterExample]: same than \texttt{CenterExample}, but the
+% result is put inside a PSTricks \texttt{pspicture} environment. It is
+% undefined if PSTricks is not available. It is specially devoted to graphic
+% drawings, but not specially built with PSTricks itself. It require to
+% specify the dimensions of the graphic. In fact, it is the same thing than
+% to use the \texttt{CenterExample} environment and to put the material
+% inside a \LaTeX{} \texttt{picture} or PSTricks \texttt{pspicture}
+% environment, but it can be more convenient to have not to specify this
+% one explicitely.
+% \item[PSideBySideExample]: same than \texttt{SideBySideExample}, but the
+% result is put inside a PSTricks \texttt{pspicture} environment. The
+% preceding comments for \texttt{PCenterExample} are of course also valid
+% for it.
+% \end{description}
+%
+% \noindent The syntax of the first three is:
+%
+% \begin{Verbatim}
+% \begin{EnvironmentName}[optional_fancyvrb_arguments]
+% ..................................................
+% \end{EnvironmentName}
+% \end{Verbatim}
+%
+% \noindent and for the two last ones:
+%
+% \begin{Verbatim}
+% \begin{EnvironmentName}[opt_fvrb_args][(x_min,y_min)](x_max,y_max)
+% ................................................................
+% \end{EnvironmentName}
+% \end{Verbatim}
+%
+% In these last cases, default values for \verb+x_min+ and \verb+y_min+ are
+% 0.
+%
+% \subsection{Loading options}
+%
+% \begin{description}
+% \item[baw] : allow highlighting for a \emph{b}lack \emph{a}nd \emph{w}hite
+% version. In this case the \HbawPackage{} will be loaded and it definitions
+% will be active to emphasize texts.
+% \item[color] : allow highlighting for a \emph{color} version. In this case
+% the \HcolorPackage{} will be loaded and it definitions will be active to
+% emphasize texts.
+% \item[bawcolor] : doesn't specify in the file if it will be a \emph{b}lack
+% \emph{a}nd \emph{w}hite or a \emph{color} version to generate. A question
+% will be asked interactively at compile time. This allow to generate at
+% choice one of the two versions without any change in the file.
+% \item[pstricks] : require the loading of PSTricks (which of course must be
+% available on the system) to be able to use the special environments
+% devoted to graphics (but not at all mandatory PSTricks graphics).
+% \end{description}
+%
+% Of course, these three keywords are mutually exclusive. If none of the
+% \texttt{baw}, \texttt{color} or \texttt{bawcolor} keyword is specified,
+% none of the supplementary files will be loaded.
+%
+% \subsection{\FVrbPackage{} options imposed}
+%
+% \noindent The following \FVrbPackage{} parameters are imposed:
+%
+% \begin{description}
+% \item[gobble=2]: each line inside these environments is supposed to be
+% indented by 2 characters. It only concern the aspect of the source code,
+% which will be more readable like that.
+% \item[numbersep=3pt]: it will be effective only if \texttt{numbers=left}
+% or \texttt{numbers=right} will be chosen.
+% \item[commentchar=W]: it is the comment character for the source text,
+% which will not be printed in the verbatim part, but executed in the
+% formatted part. So, it allow to have the example not generated by the code
+% shown, which can be surprising for readers and must be used only with
+% care in special circumstances! Character chosen is 163 (£). If it cannot
+% be used on your system or if you have it inside your verbatim text, you
+% must change it by yourself in the package file.
+% \item[commandchars=XYZ]: respectively the \emph{escape}, \emph{beginning
+% of group} and \emph{end of group} characters, to allow escape sequences
+% (\LaTeX{} commands as font and color changes) to be applied on the
+% verbatim text, using the \HbawPackage{} or \HcolorPackage{} packages.
+% These characters are specially chosen to probably be used by nobody in
+% their codes... Characters chosen are those of codes 167, 181 and 182
+% (§µ¶). If they cannot be used on your system or if you have some of them
+% inside your verbatim text, you must made yourself the relevant changes in
+% the three files of the package.
+% \end{description}
+%
+% \section{Usage examples}
+%
+% \subsection{Usage of the environments}
+%
+% \RecustomVerbatimEnvironment{Verbatim}{Verbatim}
+% {gobble=4,commentchar=£,numbers=left,numbersep=3pt,frame=single}
+%
+% \begin{Verbatim}
+% \begin{Example}
+% First verbatim line.
+% Second verbatim line.
+% Third verbatim line.
+% \end{Example}
+% \end{Verbatim}
+%
+% \begin{Example}
+% First verbatim line.
+% Second verbatim line.
+% Third verbatim line.
+% \end{Example}
+%
+% \vspace{5mm}
+% It is possible to customize the verbatim environments as in the standard
+% way defined by \FVrbPackage{}, locally as argument of the
+% environment\footnote{Take care that you must define these parameters
+% directly for the \texttt{Example}, \texttt{CenterExample} and
+% \texttt{SideBySideExample} environments, but that you must put them inside
+% a \cs{fvset} macro for the \texttt{PCenterExample} and
+% \texttt{PSideBySideExample} ones, as in these cases you can also specify
+% some PSTricks parameters, using the \cs{psset} macro.},
+% or globally using the \cs{fvset} command.
+%
+% \begin{Verbatim}
+% \begin{Example}[frame=lines,framerule=1mm,numbers=left]
+% First verbatim line.
+% Second verbatim line.
+% Third verbatim line.
+% \end{Example}
+% \end{Verbatim}
+%
+% \begin{Example}[frame=lines,framerule=1mm,numbers=left]
+% First verbatim line.
+% Second verbatim line.
+% Third verbatim line.
+% \end{Example}
+%
+% \begin{Verbatim}
+% \begin{CenterExample}[frame=single,numbers=right]
+% First verbatim line.
+% Second verbatim line.
+% Third verbatim line.
+% \end{CenterExample}
+% \end{Verbatim}
+%
+% \begin{CenterExample}[frame=single,numbers=right]
+% First verbatim line.
+% Second verbatim line.
+% Third verbatim line.
+% \end{CenterExample}
+%
+% \newlength\MyLength
+% \MyLength=\textwidth
+% \advance\MyLength -4.7cm
+%
+% \noindent
+% \begin{minipage}{4.7cm}
+% \begin{SideBySideExample}[xrightmargin=3cm,numbers=left]
+% First
+% Second
+% \end{SideBySideExample}
+% \end{minipage}%
+% \begin{minipage}{\MyLength}
+% \begin{Verbatim}
+% \begin{SideBySideExample}
+% [xrightmargin=3cm,numbers=left]
+% First
+% Second
+% \end{SideBySideExample}
+% \end{Verbatim}
+% \end{minipage}
+%
+% \ifpstricks ^^A If PSTricks is available
+% \vspace{5mm}
+% As explained, the \texttt{PCenterExample} and \texttt{PSideBySideExample}
+% environments, specially devoted to graphics, put their contents inside a
+% PSTricks \texttt{pspicture} environment\footnote{The $*$ convention of the
+% \texttt{pspicture} environment is not accepted here.}. So, we must define
+% the size of it.
+%
+% \begin{Verbatim}
+% \fvset{frame=lines,framerule=0.5mm,numbers=left}
+%
+% \begin{PCenterExample}(-0.5,-0.5)(0.5,0.5)
+% \setlength{\unitlength}{1cm}
+% \put(0,0){\circle{1}}
+% \end{PCenterExample}
+% \end{Verbatim}
+%
+% \begin{PCenterExample}[frame=lines,framerule=0.5mm,numbers=left]%
+% (-0.5,-0.5)(0.5,0.5)
+% \setlength{\unitlength}{1cm}
+% \put(0,0){\circle{1}}
+% \end{PCenterExample}
+%
+% \noindent So, it is the same thing than to do:
+%
+% \begin{Verbatim}
+% \fvset{frame=lines,framerule=0.5mm,numbers=left}
+%
+% \begin{CenterExample}
+% \setlength{\unitlength}{1cm}
+% \begin{picture}(1,1)(-0.5,-0.5)
+% \put(0,0){\circle{1}}
+% \end{picture}
+% \end{CenterExample}
+% \end{Verbatim}
+%
+% \begin{CenterExample}[frame=lines,framerule=0.5mm,numbers=left]
+% \setlength{\unitlength}{1cm}
+% \begin{picture}(1,1)(-0.5,-0.5)
+% \put(0,0){\circle{1}}
+% \end{picture}
+% \end{CenterExample}
+%
+% Using the\cs{showgrid} macro, we can require to superpose the graphic
+% above a grid, which can help to built it as desired. The size of the
+% picture must be at least of 1 unit in this case, and the grid is rounded to
+% the next greater integer.
+%
+% \begin{Verbatim}
+% \showgrid
+% \begin{PCenterExample}[frame=single,numbers=left](-1,-1)(1,1)
+% \setlength{\unitlength}{1cm}
+% \put(0,0){\circle{1}}
+% \end{PCenterExample}
+% \end{Verbatim}
+%
+% {\showgrid
+% \begin{PCenterExample}[frame=single,numbers=left](-1,-1)(1,1)
+% \setlength{\unitlength}{1cm}
+% \put(0,0){\circle{1}}
+% \end{PCenterExample}
+% }
+%
+% \begin{Verbatim}
+% \fvset{frame=single,xrightmargin=5cm}
+% \begin{PSideBySideExample}(-2,-1)(2,1)
+% \psellipse*[linecolor=yellow](2,1)
+% \end{PSideBySideExample}
+%
+% \showgrid
+% \begin{PSideBySideExample}(-2,-1)(2,1)
+% \psellipse[linestyle=dashed](2,1)
+% \end{PSideBySideExample}
+% \end{Verbatim}
+%
+% {\fvset{frame=single,xrightmargin=5cm}
+% \begin{PSideBySideExample}(-2,-1)(2,1)
+% \psellipse*[linecolor=yellow](2,1)
+% \end{PSideBySideExample}
+%
+% \showgrid
+% \begin{PSideBySideExample}(-2,-1)(2,1)
+% \psellipse[linestyle=dashed](2,1)
+% \end{PSideBySideExample}
+% }
+%
+% \vspace{5mm}
+% The special £ character defined as the comment for \FVrbPackage{} must be
+% used with care, as it allow to change the code run in the formatted part
+% without showing these changes in the verbatim part. So, the code shown will
+% not correspond any more in this case to the one which produce the result...
+% (we must take care also to do not indent these lines, otherwise we will
+% change the formatting...).
+%
+% Nevertheless, in very special circumstances, it allow to do special tricks.
+%
+% \begin{Verbatim}[commentchar=Z]
+% \begin{CenterExample}[frame=lines,framerule=0.5mm]
+% First verbatim line.
+% £\textit{%
+% Second verbatim line.
+% £}
+% £\LARGE
+% Third verbatim line.
+% \end{CenterExample}
+% \end{Verbatim}
+%
+% \begin{CenterExample}[frame=lines,framerule=0.5mm]
+% First verbatim line.
+% £\textit{%
+% Second verbatim line.
+% £}
+% £\LARGE
+% Third verbatim line.
+% \end{CenterExample}
+%
+% \else ^^A If PSTricks is not available
+% \begin{quote}
+% \textbf{\large Warning!} The \texttt{PCenterExample} and
+% \texttt{PSideBySideExample} are not demonstrated here, because PSTricks
+% was not found on your platform.
+% \end{quote}
+% \fi
+%
+% \subsection{Usage of the \HbawPackage{} and \HcolorPackage{} packages}
+%
+% If the option \texttt{baw}, \texttt{color} or \texttt{bawcolor} is chosen,
+% we can use special commands to emphasize text in the verbatim formatting.
+% It allow mainly to change the font or the color of special parts of the text.
+%
+% \noindent Here we suppose that the package option \texttt{baw} for the
+% \FVrbExPackage{} has been chosen:
+%
+% \begin{Verbatim}
+% \begin{CenterExample}[frame=single,numbers=right]
+% §HLaµFirst¶ verbatim line.
+% §HLbµSecond¶ verbatim line.
+% §HLCBWzµThird¶ verbatim line.
+% \end{CenterExample}
+% \end{Verbatim}
+%
+% \begin{CenterExample}[frame=single,numbers=right]
+% §HLaµFirst¶ verbatim line.
+% §HLbµSecond¶ verbatim line.
+% §HLCBWzµThird¶ verbatim line.
+% \end{CenterExample}
+%
+% \ifpstricks ^^A If PSTricks is available
+% \begin{Verbatim}
+% \fvset{frame=single}
+% \begin{PSideBySideExample}[xrightmargin=5.5cm](-2,-1)(2,1)
+% \psellipse[linestyle=§HLCBWzµdashed¶](2,1)
+% \end{PSideBySideExample}
+%
+% \begin{PSideBySideExample}[xrightmargin=4.5cm](-2,-1)(2,1)
+% \psellipse[linestyle=§HLbµdotted¶](2,1)
+% \end{PSideBySideExample}
+% \end{Verbatim}
+%
+% {\fvset{frame=single}
+% \begin{PSideBySideExample}[xrightmargin=5.5cm](-2,-1)(2,1)
+% \psellipse[linestyle=§HLCBWzµdashed¶](2,1)
+% \end{PSideBySideExample}
+%
+% \begin{PSideBySideExample}[xrightmargin=4.5cm](-2,-1)(2,1)
+% \psellipse[linestyle=§HLbµdotted¶](2,1)
+% \end{PSideBySideExample}
+% }
+% \fi
+%
+% \subsection{Thanks}
+%
+% I thank you Sebastian \textsc{Rahtz} \verb+<s.rahtz@elsevier.co.uk>+,
+% Thomas \textsc{Siegel} \verb+<siegel@aix520.informatik.uni-leipzig.de>+ and
+% Rolf \textsc{Niepraschk}\break\relax \verb+<niepraschk@ptb.de>+ for their
+% tests and comments on preliminary versions of this package.
+%
+% \StopEventually{}
+%
+% ^^A .................... End of the documentation part ....................
+%
+% \section{Driver file}
+%
+% The next bit of code contains the documentation driver file for \TeX{},
+% i.e., the file that will produce the documentation you are currently
+% reading. It will be extracted from this file by the \texttt{docstrip}
+% program.
+%
+% \begin{macrocode}
+%<*driver>
+\documentclass{ltxdoc}
+\GetFileInfo{fvrb-ex.dtx}
+\IfFileExists{pstricks.sty}{\usepackage[baw,pstricks]{fvrb-ex}}%
+ {\usepackage[baw]{fvrb-ex}}
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+\OnlyDescription % Comment it for implementation details
+%\Oldmakeindex % Uncomment if your MakeIndex is pre-0.9
+\hbadness=7000 % Over and under full box warnings
+\begin{document}
+ % To be able to use the letter "mu"
+ \catcode`\µ=\active
+ \defµ{$\mu$}
+ % To be able to use the letter "pound"
+ \catcode`\£=\active
+ \def£{$\pounds$}
+ \DocInput{fvrb-ex.dtx}
+\end{document}
+%</driver>
+% \end{macrocode}
+%
+% \section{\FVrbExPackage{} code}
+%
+%<*fvrb-ex>
+%
+% \iffalse meta-comment, etc.
+%% Package `fvrb-ex'
+%%
+% \fi
+%
+% \subsection{Preambule and options management}
+%
+% What we need.
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+% \end{macrocode}
+%
+% Who we are.
+% \begin{macrocode}
+\def\fileversion{1.7}
+\def\filedate{1998/03/26}
+\ProvidesPackage{fvrb-ex}[\filedate]
+\message{`fvrb-ex' v\fileversion, \filedate\space (Denis Girou)}
+% \end{macrocode}
+%
+% Require the \FVrbPackage{} package.
+% \begin{macrocode}
+\RequirePackage{fancyvrb}
+% \end{macrocode}
+%
+% Require PSTricks if specified (to define the \texttt{PCenterExample} and
+% \texttt{PSideBySideExample} environments).
+% \begin{macrocode}
+\DeclareOption{pstricks}{%
+\ifx\PSTricksLoaded\endinput\else\input pstricks.tex\fi}
+% \end{macrocode}
+%
+% Declaration of the explicit black and white version.
+% \begin{macrocode}
+\DeclareOption{baw}{\def\ColorVersion{n}}
+% \end{macrocode}
+%
+% Declaration of the explicit color version.
+% \begin{macrocode}
+\DeclareOption{color}{\def\ColorVersion{y}}
+% \end{macrocode}
+%
+% Declaration option to choose black and white or color version.
+% \begin{macrocode}
+\DeclareOption{bawcolor}{\def\ColorVersion{?}}
+% \end{macrocode}
+%
+% Process the options.
+% \begin{macrocode}
+\ProcessOptions
+% \end{macrocode}
+%
+% To ask an interactive question if necessary (code from `docstrip').
+% \begin{macrocode}
+\newread\ttyin
+\def\iden#1{#1}
+\def\strip#1#2 \@gobble{\def #1{#2}}
+\def\@defpar{\par}
+\def\@gobble#1{}
+\def\Ask#1#2{%
+\message{#2}\read\ttyin to #1\ifx#1\@defpar\def#1{}\else
+\iden{\expandafter\strip\expandafter#1#1\@gobble\@gobble} \@gobble\fi}
+% \end{macrocode}
+%
+% To be able to ask later to choose between color and black and white version.
+% \begin{macro}{\Answer@Yes}
+% \begin{macrocode}
+\def\Answer@Yes{y}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\Answer@No}
+% \begin{macrocode}
+\def\Answer@No{n}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\Question@Mark}
+% \begin{macrocode}
+\def\Question@Mark{?}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\Question@Color}
+% \begin{macrocode}
+\def\Question@Color{Color version? (y=yes)}
+% \end{macrocode}
+% \end{macro}
+%
+% For the highlighting style (color or black and white version), if defined.
+%
+% \begin{macro}{\Highlight@Attributes}
+% \begin{macrocode}
+\def\Highlight@Attributes{} % Default=nothing
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\NoHighlight@Attributes}
+% \begin{macrocode}
+\def\NoHighlight@Attributes{} % Default=nothing
+% \end{macrocode}
+% \end{macro}
+%
+% Forced choice of the \emph{black and white} version.
+% \begin{macrocode}
+\ifx\ColorVersion\Answer@Yes
+ \RequirePackage{color} % Standard LaTeX `color' package
+ \RequirePackage{hcolor} % Color version
+\fi
+% \end{macrocode}
+%
+% Forced choice of the \emph{color} version.
+% \begin{macrocode}
+\ifx\ColorVersion\Answer@No
+ \RequirePackage{color} % Standard LaTeX `color' package
+ \RequirePackage{hbaw} % Black and white version
+\fi
+% \end{macrocode}
+%
+% Choice of the highlighting style (color, black and white or nothing).
+% \begin{macrocode}
+\ifx\ColorVersion\Question@Mark
+ \Ask\ColorVersion{^^J\Question@Color}
+ \ifx\ColorVersion\Answer@Yes
+ \RequirePackage{color} % Standard LaTeX `color' package
+ \RequirePackage{hcolor} % Color version
+ \else
+ \RequirePackage{color} % Standard LaTeX `color' package
+ \RequirePackage{hbaw} % Black and white version
+ \fi
+\fi
+% \end{macrocode}
+%
+% Verbatim example environments must be indented by two spaces, which should
+% be ignored.
+% \begin{macrocode}
+\fvset{gobble=2}
+% \end{macrocode}
+%
+% To decide later if the result must be surimpose on a grid (useful only if
+% PSTricks is available).
+% \begin{macrocode}
+\newif\ifFvrbEx@Grid
+% \end{macrocode}
+%
+% \subsection{The various example environments}
+%
+% \DescribeEnv{Example}
+% \texttt{Example} is an environment to show the verbatim code and
+% the result just below.
+% \begin{macrocode}
+\def\Example{%
+\catcode`\^^M=\active
+\@ifnextchar[{\catcode`\^^M=5\Example@}{\catcode`\^^M=5\Begin@Example}}
+% \end{macrocode}
+%
+% \cs{endExample} is a macro for the \texttt{Example} environment to close
+% the verbatim part and to put the formatted result below.
+% \begin{macrocode}
+\def\endExample{%
+\end{VerbatimOut}%
+\Below@Example{\input{\jobname.tmp}}}
+% \end{macrocode}
+%
+% \begin{macro}{\Example@}
+% \cs{Example@} is an internal macro to set locally the \FVrbPackage{} options
+% if needed (both for the \texttt{Example}, \texttt{CenterExample} and
+% \texttt{SideBySideExample} environments).
+% \begin{macrocode}
+\def\Example@[#1]{\fvset{#1}\Begin@Example}
+% \end{macrocode}
+% \end{macro}
+%
+% \DescribeEnv{CenterExample}
+% \texttt{CenterExample} is an environment to show the verbatim code and
+% the result just below, inside a \texttt{center} environment.
+% \begin{macrocode}
+\def\CenterExample{%
+\catcode`\^^M=\active
+\@ifnextchar[{\catcode`\^^M=5\Example@}{\catcode`\^^M=5\Begin@Example}}
+% \end{macrocode}
+%
+% \begin{macro}{\endCenterExample}
+% \cs{endCenterExample} is a macro for the \texttt{CenterExample}
+% environment to close the verbatim part and to put the formatted result below,
+% centering it.
+% \begin{macrocode}
+\def\endCenterExample{%
+\end{VerbatimOut}%
+\center
+\Below@Example{\input{\jobname.tmp}}
+\endcenter}
+% \end{macrocode}
+% \end{macro}
+%
+% \DescribeEnv{SideBySideExample}
+% \texttt{SideBySideExample} is an environment to show the verbatim code and
+% the result on the left, using a \texttt{minipage} environment.
+% \begin{macrocode}
+\def\SideBySideExample{%
+\catcode`\^^M=\active
+\@ifnextchar[{\catcode`\^^M=5\Example@}%
+ {\catcode`\^^M=5\Begin@Example}}
+% \end{macrocode}
+%
+% \begin{macro}{\endSideBySideExample}
+% \cs{endSideBySideExample} is a macro for the \texttt{SideBySideExample}
+% environment to close the verbatim part and to put the formatted result on
+% the left side.
+% \begin{macrocode}
+\def\endSideBySideExample{%
+\end{VerbatimOut}%
+\SideBySide@Example{\input{\jobname.tmp}}}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{General macros}
+%
+% \begin{macro}{\Begin@Example}
+% \cs{Begin@Example} is an internal macro to start an example environment.
+% \begin{macrocode}
+\newcommand{\Begin@Example}{%
+\parindent=0pt
+\multiply\topsep by 2
+\VerbatimEnvironment
+\begin{VerbatimOut}[codes={\catcode`\£=12\catcode`\§=12\catcode`\µ=12%
+ \catcode`\¶=12}]{\jobname.tmp}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\Below@Example}
+% \cs{Below@Example} is an internal macro to insert the verbatim part and
+% to put the formatted result just below. The possible highlighting must
+% be suppressed and the comment character desactivated before to input the
+% formatted part.
+% \begin{macrocode}
+\newcommand{\Below@Example}[1]{%
+\VerbatimInput[gobble=0,commentchar=£,commandchars=§µ¶,numbersep=3pt]%
+ {\jobname.tmp}
+\catcode`\£=9\relax%
+\NoHighlight@Attributes % To suppress possible highlighting
+\ifFvrbEx@Grid\vspace{5pt}\fi
+#1%
+\ifFvrbEx@Grid\vspace{5pt}\fi
+\par}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\SideBySide@Example}
+% \cs{SideBySide@Example} is an internal macro to insert the verbatim part and
+% to put the formatted result on the left side, using a \texttt{minipage}
+% environment. The possible highlighting must be suppressed and the comment
+% character desactivated before to input the formatted part.
+% \begin{macrocode}
+\newcommand{\SideBySide@Example}[1]{%
+\@tempdimb=\FV@XRightMargin
+\advance\@tempdimb -5mm
+\begin{minipage}[c]{\@tempdimb}
+ \fvset{xrightmargin=0pt}
+ \catcode`\£=9\relax%
+ \NoHighlight@Attributes % To suppress possible highlighting
+ #1
+\end{minipage}%
+\@tempdimb=\textwidth
+\advance\@tempdimb -\FV@XRightMargin
+\advance\@tempdimb 5mm
+\begin{minipage}[c]{\@tempdimb}
+ \VerbatimInput[gobble=0,commentchar=£,commandchars=§µ¶,numbersep=3pt,
+ xleftmargin=5mm,xrightmargin=0pt]{\jobname.tmp}
+\end{minipage}}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Example environments using the \texttt{pspicture} PSTricks one}
+%
+% Of course, PSTricks must be available to be able to use them.
+% \begin{macrocode}
+\ifx\PSTricksLoaded\endinput
+% \end{macrocode}
+%
+% Grid definition (using PSTricks).
+% \begin{macrocode}
+ \newcommand{\showgrid}{\FvrbEx@Gridtrue}
+ \newpsobject{FvrbExGrid}{psgrid}{subgriddiv=0,griddots=10,gridlabels=7pt}
+% \end{macrocode}
+%
+% \DescribeEnv{PCenterExample}
+% \texttt{PCenterExample} is an environment to show the verbatim code and
+% the result just below, inside a \texttt{center} environment.
+% \begin{macrocode}
+ \def\PCenterExample{\@ifnextchar[{\Pst@Example}{\Pst@@Example}}
+% \end{macrocode}
+%
+% \begin{macro}{\endPCenterExample}
+% \cs{endPCenterExample} is a macro for the \texttt{PCenterExample}
+% environment to close the verbatim part and to put the formatted result below,
+% inside a PSTricks \texttt{pspicture} environment, and centering it.
+% \begin{macrocode}
+ \def\endPCenterExample{%
+ \end{VerbatimOut}%
+ \Below@Example{%
+ \center
+ \expandafter\pspicture\Picture@Size
+ \ifFvrbEx@Grid\FvrbExGrid\fi\relax
+ \input{\jobname.tmp}%
+ \endpspicture
+ \endcenter
+ \smallskip}}
+% \end{macrocode}
+% \end{macro}
+%
+% \DescribeEnv{PSideBySideExample}
+% \texttt{PSideBySideExample} is an environment to show the verbatim code and
+% to put the formatted result on the left side, inside a PSTricks
+% \texttt{pspicture} environment.
+% \begin{macrocode}
+ \def\PSideBySideExample{\@ifnextchar[{\Pst@Example}{\Pst@@Example}}
+% \end{macrocode}
+%
+% \begin{macro}{\endPSideBySideExample}
+% \cs{endPSideBySideExample} is a macro for the \texttt{PSideBySideExample}
+% environment to close the verbatim code and to put the formatted result on
+% the left side, inside a PSTricks \texttt{pspicture} environment.
+% \begin{macrocode}
+ \def\endPSideBySideExample{%
+ \end{VerbatimOut}%
+ \SideBySide@Example{%
+ \ifFvrbEx@Grid\vspace{5pt}\fi
+ \expandafter\pspicture\Picture@Size
+ \ifFvrbEx@Grid\FvrbExGrid\fi\relax
+ \input{\jobname.tmp}%
+ \endpspicture
+ \ifFvrbEx@Grid\vspace{5pt}\fi
+ \smallskip}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\Pst@Example}
+% \cs{Pst@Example} is an internal macro to set locally the \FVrbPackage{}
+% options if needed (both for \texttt{PCenterExample} and
+% \texttt{PSideBySideExample} environments).
+% \begin{macrocode}
+ \def\Pst@Example[#1]{\fvset{#1}\Pst@@Example}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\Pst@@Example}
+% \cs{Pst@@Example} is an internal macro to define the starting point of the
+% \texttt{pspicture} environment to used.
+% \begin{macrocode}
+ \def\Pst@@Example#1(#2,#3){%
+ \catcode`\^^M=\active
+ \@ifnextchar({\catcode`\^^M=5\Pst@@@Example(#2,#3)}
+ {\catcode`\^^M=5\Pst@@@Example(0,0)(#2,#3)}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\Pst@@@Example}
+% \cs{Pst@@@Example} is an internal macro to transmit the size of the
+% \texttt{pspicture} environment to used and to call the relevant internal
+% macro to insert the verbatim part.
+% \begin{macrocode}
+ \def\Pst@@@Example(#1,#2)(#3,#4){%
+ \def\Picture@Size{(#1,#2)(#3,#4)}%
+ \Begin@Example}
+% \end{macrocode}
+% \end{macro}
+%
+% End of the code for environments using PSTricks.
+% \begin{macrocode}
+\fi % End \ifx\PSTricksLoaded
+% \end{macrocode}
+%</fvrb-ex>
+%
+% \section{\HbawPackage{} code}
+%
+%<*hbaw>
+%
+% \iffalse meta-comment, etc.
+%% Package `hbaw'
+%%
+% \fi
+%
+% What we need.
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+% \end{macrocode}
+%
+% Who we are.
+% \begin{macrocode}
+\def\fileversion{1.4}
+\def\filedate{1998/03/19}
+\ProvidesPackage{hbaw}[\filedate]
+\message{`hbaw' v\fileversion, \filedate\space (Denis Girou)}
+% \end{macrocode}
+%
+% \begin{macro}{\FvrbEx@ColoredBox}
+% \cs{FvrbEx@ColoredBox} is an internal macro to print some text in bold face
+% in a defined color, inside a colored box of another color.
+% \begin{macrocode}
+\newcommand{\FvrbEx@ColoredBox}[3]{%
+\fboxsep=1pt\fcolorbox{#2}{#2}{\textcolor{#3}{\textbf{#1}}}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\Highlight@Attributes}
+% \cs{Highlight@Attributes} is an internal macro to define a serie of
+% highlighting macros to emphasize text in a black and white mode.
+% All have a corresponding version in color mode, using the \HcolorPackage{}
+% package. We take care here of possible mathematic material.
+% \begin{macrocode}
+\def\Highlight@Attributes{%
+% \end{macrocode}
+% \end{macro}
+%
+% Some font changes.
+% \begin{macrocode}
+\def\HLa##1{\ifmmode\mathbf{##1}\else\textbf{##1}\fi}
+\def\HLb##1{\ifmmode\mathsl{##1}\else\textsl{##1}\fi}
+\def\HLc##1{##1}
+\def\HLd##1{##1}
+\def\HLe##1{\ifmmode\mathbf{##1}\else\textbf{##1}\fi}
+\def\HLf##1{##1}
+\def\HLq##1{##1}
+\def\HLr##1{##1}
+\def\HLz##1{##1}
+% \end{macrocode}
+%
+% Bold text.
+% \begin{macrocode}
+\def\HLBFa##1{\ifmmode\mathbf{##1}\else\textbf{##1}\fi}
+\def\HLBFb##1{\ifmmode\mathbf{##1}\else\textbf{##1}\fi}
+\def\HLBFc##1{\ifmmode\mathbf{##1}\else\textbf{##1}\fi}
+\def\HLBFd##1{\ifmmode\mathbf{##1}\else\textbf{##1}\fi}
+\def\HLBFe##1{\ifmmode\mathbf{##1}\else\textbf{##1}\fi}
+\def\HLBFf##1{\ifmmode\mathbf{##1}\else\textbf{##1}\fi}
+\def\HLBFz##1{\ifmmode\mathbf{##1}\else\textbf{##1}\fi}
+% \end{macrocode}
+%
+% Italic text (\verb+\textsl+ rather than \verb+\textit+ due to the problem
+% of the coding of the \$ character).
+% \begin{macrocode}
+\def\HLITa##1{\ifmmode\mathnormal{##1}\else\textsl{##1}\fi}
+\def\HLITb##1{\ifmmode\mathnormal{##1}\else\textsl{##1}\fi}
+\def\HLITc##1{\ifmmode\mathnormal{##1}\else\textsl{##1}\fi}
+\def\HLITd##1{\ifmmode\mathnormal{##1}\else\textsl{##1}\fi}
+\def\HLITe##1{\ifmmode\mathnormal{##1}\else\textsl{##1}\fi}
+\def\HLITf##1{\ifmmode\mathnormal{##1}\else\textsl{##1}\fi}
+\def\HLITz##1{\ifmmode\mathnormal{##1}\else\textsl{##1}\fi}
+% \end{macrocode}
+%
+% Small capitals text.
+% \begin{macrocode}
+\def\HLSCa##1{\ifmmode\mathit{##1}\else\textsc{##1}\fi}
+\def\HLSCb##1{\ifmmode\mathit{##1}\else\textsc{##1}\fi}
+\def\HLSCc##1{\ifmmode\mathit{##1}\else\textsc{##1}\fi}
+\def\HLSCd##1{\ifmmode\mathit{##1}\else\textsc{##1}\fi}
+\def\HLSCe##1{\ifmmode\mathit{##1}\else\textsc{##1}\fi}
+\def\HLSCf##1{\ifmmode\mathit{##1}\else\textsc{##1}\fi}
+\def\HLSCz##1{\ifmmode\mathit{##1}\else\textsc{##1}\fi}
+% \end{macrocode}
+%
+% Teletype writer text.
+% \begin{macrocode}
+\def\HLTTa##1{\ifmmode\mathtt{##1}\else\texttt{##1}\fi}
+\def\HLTTb##1{\ifmmode\mathtt{##1}\else\texttt{##1}\fi}
+\def\HLTTc##1{\ifmmode\mathtt{##1}\else\texttt{##1}\fi}
+\def\HLTTd##1{\ifmmode\mathtt{##1}\else\texttt{##1}\fi}
+\def\HLTTe##1{\ifmmode\mathtt{##1}\else\texttt{##1}\fi}
+\def\HLTTf##1{\ifmmode\mathtt{##1}\else\texttt{##1}\fi}
+\def\HLTTq##1{\ifmmode\mathtt{##1}\else\texttt{##1}\fi}
+\def\HLTTr##1{\ifmmode\mathtt{##1}\else\texttt{##1}\fi}
+\def\HLTTz##1{\ifmmode\mathtt{##1}\else\texttt{##1}\fi}
+% \end{macrocode}
+%
+% Italic and teletype writer text.
+% \begin{macrocode}
+\def\HLITTTa##1{\ifmmode\mathtt{##1}\else\textsl{\texttt{##1}}\fi}
+\def\HLITTTb##1{\ifmmode\mathtt{##1}\else\textsl{\texttt{##1}}\fi}
+\def\HLITTTc##1{\ifmmode\mathtt{##1}\else\textsl{\texttt{##1}}\fi}
+\def\HLITTTd##1{\ifmmode\mathtt{##1}\else\textsl{\texttt{##1}}\fi}
+\def\HLITTTe##1{\ifmmode\mathtt{##1}\else\textsl{\texttt{##1}}\fi}
+\def\HLITTTf##1{\ifmmode\mathtt{##1}\else\textsl{\texttt{##1}}\fi}
+\def\HLITTTz##1{\ifmmode\mathtt{##1}\else\textsl{\texttt{##1}}\fi}
+% \end{macrocode}
+%
+% Black text inside a colored box.
+% \begin{macrocode}
+\def\HLCBBa##1{\FvrbEx@ColoredBox{##1}{blue}{black}}
+\def\HLCBBb##1{\FvrbEx@ColoredBox{##1}{cyan}{black}}
+\def\HLCBBc##1{\FvrbEx@ColoredBox{##1}{green}{black}}
+\def\HLCBBd##1{\FvrbEx@ColoredBox{##1}{magenta}{black}}
+\def\HLCBBe##1{\FvrbEx@ColoredBox{##1}{red}{black}}
+\def\HLCBBf##1{\FvrbEx@ColoredBox{##1}{yellow}{black}}
+\def\HLCBBz##1{\FvrbEx@ColoredBox{##1}{black}{black}}
+% \end{macrocode}
+%
+% White text inside a colored box (we replace cyan and yellow by green because
+% these colors are not well seen in black and white mode).
+% \begin{macrocode}
+\def\HLCBWa##1{\FvrbEx@ColoredBox{##1}{blue}{white}}
+\def\HLCBWb##1{\FvrbEx@ColoredBox{##1}{green}{white}}
+\def\HLCBWc##1{\FvrbEx@ColoredBox{##1}{green}{white}}
+\def\HLCBWd##1{\FvrbEx@ColoredBox{##1}{magenta}{white}}
+\def\HLCBWe##1{\FvrbEx@ColoredBox{##1}{red}{white}}
+\def\HLCBWf##1{\FvrbEx@ColoredBox{##1}{green}{white}}
+\def\HLCBWz##1{\FvrbEx@ColoredBox{##1}{black}{white}}
+% \end{macrocode}
+%
+% Underlined text.
+% \begin{macrocode}
+\def\HLSa##1{\underline{##1}}
+\def\HLSb##1{\underline{##1}}
+\def\HLSc##1{\underline{##1}}
+\def\HLSd##1{\underline{##1}}
+\def\HLSe##1{\underline{##1}}
+\def\HLSf##1{\underline{##1}}
+\def\HLSz##1{\underline{##1}}
+% \end{macrocode}
+%
+% Underlined text (same than preceding in this black and white version).
+% \begin{macrocode}
+\def\HLSaa##1{\underline{##1}}
+\def\HLSbb##1{\underline{##1}}
+\def\HLScc##1{\underline{##1}}
+\def\HLSdd##1{\underline{##1}}
+\def\HLSee##1{\underline{##1}}
+\def\HLSef##1{\underline{##1}}
+\def\HLSez##1{\underline{##1}}
+% \end{macrocode}
+%
+% End of \cs{Highlight@Attributes}.
+% \begin{macrocode}
+}
+% \end{macrocode}
+%
+% \begin{macro}{\NoHighlight@Attributes}
+% \cs{NoHighlight@Attributes} is an internal macro to inhibit all
+% the highlighting macros define by \cs{Highlight@Attributes}. It is
+% necessary to call it before to insert the formatted part, as highlighting
+% process must concern only the verbatim part.
+% \end{macro}
+%
+% \begin{macrocode}
+\def\NoHighlight@Attributes{%
+% \end{macrocode}
+%
+% First, we re-establish the active catcodes for the verbatim mode.
+% \begin{macrocode}
+\catcode`\§=0\relax%
+\catcode`\µ=1\relax%
+\catcode`\¶=2\relax%
+% \end{macrocode}
+%
+% Desactivation of the highlighting macros.
+% \begin{macrocode}
+\def\HLa##1{##1}%
+\def\HLb##1{##1}%
+\def\HLc##1{##1}%
+\def\HLd##1{##1}%
+\def\HLe##1{##1}%
+\def\HLf##1{##1}%
+\def\HLBFa##1{##1}%
+\def\HLBFb##1{##1}%
+\def\HLBFc##1{##1}%
+\def\HLBFd##1{##1}%
+\def\HLBFe##1{##1}%
+\def\HLBFf##1{##1}%
+\def\HLITa##1{##1}%
+\def\HLITb##1{##1}%
+\def\HLITc##1{##1}%
+\def\HLITd##1{##1}%
+\def\HLITe##1{##1}%
+\def\HLITf##1{##1}%
+\def\HLCBBa##1{##1}%
+\def\HLCBBb##1{##1}%
+\def\HLCBBc##1{##1}%
+\def\HLCBBd##1{##1}%
+\def\HLCBBe##1{##1}%
+\def\HLCBBf##1{##1}%
+\def\HLCBBz##1{##1}%
+\def\HLCBWa##1{##1}%
+\def\HLCBWb##1{##1}%
+\def\HLCBWc##1{##1}%
+\def\HLCBWd##1{##1}%
+\def\HLCBWe##1{##1}%
+\def\HLCBWf##1{##1}%
+\def\HLCBWz##1{##1}%
+% \end{macrocode}
+%
+% End of \cs{NoHighlight@Attributes}.
+% \begin{macrocode}
+}
+% \end{macrocode}
+%
+% Activation of the highlighting macros.
+% \begin{macrocode}
+\Highlight@Attributes
+% \end{macrocode}
+%
+%</hbaw>
+%
+% \section{\HcolorPackage{} code}
+%
+%<*hcolor>
+%
+% \iffalse meta-comment, etc.
+%% Package `hcolor'
+%%
+% \fi
+%
+% What we need.
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+% \end{macrocode}
+%
+% Who we are.
+% \begin{macrocode}
+\def\fileversion{1.4}
+\def\filedate{1998/03/19}
+\ProvidesPackage{hcolor}[\filedate]
+\message{`hcolor' v\fileversion, \filedate\space (Denis Girou)}
+% \end{macrocode}
+%
+% \begin{macro}{\FvrbEx@ColoredUnderline}
+% \cs{FvrbEx@ColoredUnderline} is an internal macro to underline some text in
+% color.
+% \begin{macrocode}
+\newcommand{\FvrbEx@ColoredUnderline}[3]{%
+$\setbox\z@\hbox{\begingroup#3\endgroup}%
+\dp\z@\z@\m@th\color{#1}\underline{\textcolor{#2}{\box\z@}}$}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\FvrbEx@ColoredBox}
+% \cs{FvrbEx@ColoredBox} is an internal macro to print some text in bold face
+% in a defined color, inside a colored box of another color.
+% \begin{macrocode}
+\newcommand{\FvrbEx@ColoredBox}[3]{%
+\fboxsep=1pt\fcolorbox{#2}{#2}{\textcolor{#3}{\textbf{#1}}}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\Highlight@Attributes}
+% \cs{Highlight@Attributes} is an internal macro to define a serie of
+% highlighting macros to emphasize text in a black and white mode.
+% All have a corresponding version in black and white mode, using the
+% \HbawPackage{} package. We do not take care here of possible mathematic
+% material, but it can be done...
+% \begin{macrocode}
+\def\Highlight@Attributes{%
+% \end{macrocode}
+% \end{macro}
+%
+% Some font changes.
+% \begin{macrocode}
+\def\HLa##1{\textcolor{blue}{##1}}
+\def\HLb##1{\textcolor{cyan}{##1}}
+\def\HLc##1{\textcolor{green}{##1}}
+\def\HLd##1{\textcolor{magenta}{##1}}
+\def\HLe##1{\textcolor{red}{##1}}
+\def\HLf##1{\textcolor{yellow}{##1}}
+\def\HLq##1{\textcolor{PaleGreen}{##1}}
+\def\HLr##1{\textcolor{SlateBlue}{##1}}
+\def\HLz##1{\textcolor{black}{##1}}
+% \end{macrocode}
+%
+% Colored bold text.
+% \begin{macrocode}
+\def\HLBFa##1{\textcolor{blue}{\textbf{##1}}}
+\def\HLBFb##1{\textcolor{cyan}{\textbf{##1}}}
+\def\HLBFc##1{\textcolor{green}{\textbf{##1}}}
+\def\HLBFd##1{\textcolor{magenta}{\textbf{##1}}}
+\def\HLBFe##1{\textcolor{red}{\textbf{##1}}}
+\def\HLBFf##1{\textcolor{yellow}{\textbf{##1}}}
+\def\HLBFz##1{\textcolor{black}{\textbf{##1}}}
+% \end{macrocode}
+%
+% Colored italic text (\verb+\textsl+ rather than \verb+\textit+ due to the
+% problem of the coding of the \$ character).
+% \begin{macrocode}
+\def\HLITa##1{\textcolor{blue}{\textsl{##1}}}
+\def\HLITb##1{\textcolor{cyan}{\textsl{##1}}}
+\def\HLITc##1{\textcolor{green}{\textsl{##1}}}
+\def\HLITd##1{\textcolor{magenta}{\textsl{##1}}}
+\def\HLITe##1{\textcolor{red}{\textsl{##1}}}
+\def\HLITf##1{\textcolor{yellow}{\textsl{##1}}}
+\def\HLITz##1{\textcolor{black}{\textsl{##1}}}
+% \end{macrocode}
+%
+% Colored small capitals text.
+% \begin{macrocode}
+\def\HLSCa##1{\textcolor{blue}{\textsc{##1}}}
+\def\HLSCb##1{\textcolor{cyan}{\textsc{##1}}}
+\def\HLSCc##1{\textcolor{green}{\textsc{##1}}}
+\def\HLSCd##1{\textcolor{magenta}{\textsc{##1}}}
+\def\HLSCe##1{\textcolor{red}{\textsc{##1}}}
+\def\HLSCf##1{\textcolor{yellow}{\textsc{##1}}}
+\def\HLSCz##1{\textcolor{black}{\textsc{##1}}}
+% \end{macrocode}
+%
+% Colored teletype writer text.
+% \begin{macrocode}
+\def\HLTTa##1{\textcolor{blue}{\texttt{##1}}}
+\def\HLTTb##1{\textcolor{cyan}{\texttt{##1}}}
+\def\HLTTc##1{\textcolor{green}{\texttt{##1}}}
+\def\HLTTd##1{\textcolor{magenta}{\texttt{##1}}}
+\def\HLTTe##1{\textcolor{red}{\texttt{##1}}}
+\def\HLTTf##1{\textcolor{yellow}{\texttt{##1}}}
+\def\HLTTq##1{\textcolor{ForestGreen}{\texttt{##1}}}
+\def\HLTTr##1{\textcolor{PineGreen}{\texttt{##1}}}
+\def\HLTTz##1{\textcolor{black}{\texttt{##1}}}
+% \end{macrocode}
+%
+% Colored italic and teletype writer text.
+% \begin{macrocode}
+\def\HLITTTa##1{\textcolor{blue}{\textsl{\texttt{##1}}}}
+\def\HLITTTb##1{\textcolor{cyan}{\textsl{\texttt{##1}}}}
+\def\HLITTTc##1{\textcolor{green}{\textsl{\texttt{##1}}}}
+\def\HLITTTd##1{\textcolor{magenta}{\textsl{\texttt{##1}}}}
+\def\HLITTTe##1{\textcolor{red}{\textsl{\texttt{##1}}}}
+\def\HLITTTf##1{\textcolor{yellow}{\textsl{\texttt{##1}}}}
+\def\HLITTTz##1{\textcolor{black}{\textsl{\texttt{##1}}}}
+% \end{macrocode}
+%
+% Black text inside a colored box.
+% \begin{macrocode}
+\def\HLCBBa##1{\FvrbEx@ColoredBox{##1}{blue}{black}}
+\def\HLCBBb##1{\FvrbEx@ColoredBox{##1}{cyan}{black}}
+\def\HLCBBc##1{\FvrbEx@ColoredBox{##1}{green}{black}}
+\def\HLCBBd##1{\FvrbEx@ColoredBox{##1}{magenta}{black}}
+\def\HLCBBe##1{\FvrbEx@ColoredBox{##1}{red}{black}}
+\def\HLCBBf##1{\FvrbEx@ColoredBox{##1}{yellow}{black}}
+\def\HLCBBz##1{\FvrbEx@ColoredBox{##1}{black}{black}}
+% \end{macrocode}
+%
+% White text inside a colored box.
+% \begin{macrocode}
+\def\HLCBWa##1{\FvrbEx@ColoredBox{##1}{blue}{white}}
+\def\HLCBWb##1{\FvrbEx@ColoredBox{##1}{cyan}{white}}
+\def\HLCBWc##1{\FvrbEx@ColoredBox{##1}{green}{white}}
+\def\HLCBWd##1{\FvrbEx@ColoredBox{##1}{magenta}{white}}
+\def\HLCBWe##1{\FvrbEx@ColoredBox{##1}{red}{white}}
+\def\HLCBWf##1{\FvrbEx@ColoredBox{##1}{yellow}{white}}
+\def\HLCBWz##1{\FvrbEx@ColoredBox{##1}{black}{white}}
+% \end{macrocode}
+%
+% Colored underlined text.
+% \begin{macrocode}
+\def\HLSa##1{\color{blue}\underline{##1}}
+\def\HLSb##1{\color{cyan}\underline{##1}}
+\def\HLSc##1{\color{green}\underline{##1}}
+\def\HLSd##1{\color{magenta}\underline{##1}}
+\def\HLSe##1{\color{red}\underline{##1}}
+\def\HLSf##1{\color{yellow}\underline{##1}}
+\def\HLSz##1{\color{black}\underline{##1}}
+% \end{macrocode}
+%
+% Colored underlined colored text (with the same color).
+% \begin{macrocode}
+\def\HLSaa##1{\FvrbEx@ColoredUnderline{blue}{black}{##1}}
+\def\HLSbb##1{\FvrbEx@ColoredUnderline{cyan}{black}{##1}}
+\def\HLScc##1{\FvrbEx@ColoredUnderline{green}{black}{##1}}
+\def\HLSdd##1{\FvrbEx@ColoredUnderline{magenta}{black}{##1}}
+\def\HLSee##1{\FvrbEx@ColoredUnderline{red}{black}{##1}}
+\def\HLSef##1{\FvrbEx@ColoredUnderline{yellow}{black}{##1}}
+\def\HLSez##1{\FvrbEx@ColoredUnderline{black}{black}{##1}}
+% \end{macrocode}
+%
+% End of \cs{Highlight@Attributes}.
+% \begin{macrocode}
+}
+% \end{macrocode}
+%
+% \begin{macro}{\NoHighlight@Attributes}
+% \cs{NoHighlight@Attributes} is an internal macro to inhibit all
+% the highlighting macros define by \cs{Highlight@Attributes}. It is
+% necessary to call it before to insert the formatted part, as highlighting
+% process must concern only the verbatim one.
+% \end{macro}
+%
+% \begin{macrocode}
+\def\NoHighlight@Attributes{%
+% \end{macrocode}
+%
+% First, we re-establish the active catcodes for the verbatim mode.
+% \begin{macrocode}
+\catcode`\§=0\relax%
+\catcode`\µ=1\relax%
+\catcode`\¶=2\relax%
+% \end{macrocode}
+%
+% Desactivation of the highlighting macros.
+% \begin{macrocode}
+\def\HLa##1{##1}%
+\def\HLb##1{##1}%
+\def\HLc##1{##1}%
+\def\HLd##1{##1}%
+\def\HLe##1{##1}%
+\def\HLf##1{##1}%
+\def\HLBFa##1{##1}%
+\def\HLBFb##1{##1}%
+\def\HLBFc##1{##1}%
+\def\HLBFd##1{##1}%
+\def\HLBFe##1{##1}%
+\def\HLBFf##1{##1}%
+\def\HLITa##1{##1}%
+\def\HLITb##1{##1}%
+\def\HLITc##1{##1}%
+\def\HLITd##1{##1}%
+\def\HLITe##1{##1}%
+\def\HLITf##1{##1}%
+\def\HLCBBa##1{##1}%
+\def\HLCBBb##1{##1}%
+\def\HLCBBc##1{##1}%
+\def\HLCBBd##1{##1}%
+\def\HLCBBe##1{##1}%
+\def\HLCBBf##1{##1}%
+\def\HLCBBz##1{##1}%
+\def\HLCBWa##1{##1}%
+\def\HLCBWb##1{##1}%
+\def\HLCBWc##1{##1}%
+\def\HLCBWd##1{##1}%
+\def\HLCBWe##1{##1}%
+\def\HLCBWf##1{##1}%
+\def\HLCBWz##1{##1}%
+% \end{macrocode}
+%
+% End of \cs{NoHighlight@Attributes}.
+% \begin{macrocode}
+}
+% \end{macrocode}
+%
+% Activation of the highlighting macros.
+% \begin{macrocode}
+\Highlight@Attributes
+% \end{macrocode}
+%
+%</hcolor>
+%
+% \section{Test file}
+%
+%<*t-fvrbex>
+% \iffalse meta-comment, etc.
+%% File `t-fvrbex'
+%%
+% \fi
+%
+% \begin{macrocode}
+\documentclass{article}
+
+\newif\ifpstricks
+\IfFileExists{pstricks.sty}
+{\usepackage[bawcolor,pstricks]{fvrb-ex}\pstrickstrue}
+{\usepackage[bawcolor]{fvrb-ex}}
+
+\begin{document}
+
+\title{Test file for the `\textsf{fvrb-ex}' package}
+\author{Denis Girou\\CNRS/IDRIS\\Orsay -- France\\
+ {\footnotesize email: Denis.Girou@idris.fr}}
+\date{Version 1.2\\March 27, 1998}
+
+\maketitle
+
+\RecustomVerbatimEnvironment{Verbatim}{Verbatim}
+ {gobble=2,commentchar=£,numbers=left,numbersep=3pt,frame=single}
+
+\section{\texttt{Example} environment}
+
+\begin{Verbatim}
+ \begin{Example}
+ First verbatim line.
+ Second verbatim line.
+ Third verbatim line.
+ \end{Example}
+\end{Verbatim}
+
+\begin{Example}
+ First verbatim line.
+ Second verbatim line.
+ Third verbatim line.
+\end{Example}
+
+\begin{Verbatim}
+ \begin{Example}[frame=lines,framerule=1mm,numbers=left]
+ First verbatim line.
+ Second verbatim line.
+ Third verbatim line.
+ \end{Example}
+\end{Verbatim}
+
+\begin{Example}[frame=lines,framerule=1mm,numbers=left]
+ First verbatim line.
+ Second verbatim line.
+ Third verbatim line.
+\end{Example}
+
+\section{\texttt{CenterExample} environment}
+
+\begin{Verbatim}
+ \begin{CenterExample}[frame=single,numbers=right]
+ First verbatim line.
+ Second verbatim line.
+ Third verbatim line.
+ \end{CenterExample}
+\end{Verbatim}
+
+\begin{CenterExample}[frame=single,numbers=right]
+ First verbatim line.
+ Second verbatim line.
+ Third verbatim line.
+\end{CenterExample}
+
+\begin{Verbatim}
+ \begin{CenterExample}[frame=lines,numbers=left]
+ §HLaµFirst¶ verbatim line.
+ §HLbµSecond¶ verbatim line.
+ §HLCBWzµThird¶ verbatim line.
+ \end{CenterExample}
+\end{Verbatim}
+
+\begin{CenterExample}[frame=lines,numbers=left]
+ §HLaµFirst¶ verbatim line.
+ §HLbµSecond¶ verbatim line.
+ §HLCBWzµThird¶ verbatim line.
+\end{CenterExample}
+
+\section{\texttt{SideBySideExample} environment}
+
+\begin{Verbatim}
+ \begin{SideBySideExample}[xrightmargin=5cm,frame=lines,
+ numbers=left]
+ First verbatim line.
+ Second verbatim line.
+ Third verbatim line.
+ \end{SideBySideExample}
+\end{Verbatim}
+
+\begin{SideBySideExample}[xrightmargin=5cm,frame=single,numbers=left]
+ First verbatim line.
+ Second verbatim line.
+ Third verbatim line.
+\end{SideBySideExample}
+
+\ifpstricks % If PSTricks is available
+
+\section{\texttt{PCenterExample} environment}
+
+\begin{Verbatim}
+ \fvset{frame=lines,framerule=0.5mm,numbers=left}
+
+ \begin{PCenterExample}(-0.5,-0.5)(0.5,0.5)
+ \setlength{\unitlength}{1cm}
+ \put(0,0){\circle{1}}
+ \end{PCenterExample}
+
+ \showgrid
+ \begin{PCenterExample}(-1,-1)(1,1)
+ \setlength{\unitlength}{1cm}
+ \put(0,0){\circle{1}}
+ \end{PCenterExample}
+\end{Verbatim}
+
+{\fvset{frame=lines,framerule=0.5mm,numbers=left}
+\begin{PCenterExample}(-0.5,-0.5)(0.5,0.5)
+ \setlength{\unitlength}{1cm}
+ \put(0,0){\circle{1}}
+\end{PCenterExample}
+\showgrid
+\begin{PCenterExample}(-1,-1)(1,1)
+ \setlength{\unitlength}{1cm}
+ \put(0,0){\circle{1}}
+\end{PCenterExample}
+}
+
+\section{\texttt{PSideBySideExample} environment}
+
+\begin{Verbatim}
+ \fvset{frame=single,xrightmargin=5cm}
+ \begin{PSideBySideExample}(-2,-1)(2,1)
+ \psellipse*[linecolor=yellow](2,1)
+ \end{PSideBySideExample}
+ \showgrid
+ \begin{PSideBySideExample}(-2,-1)(2,1)
+ \psellipse[linestyle=dashed](2,1)
+ \end{PSideBySideExample}
+\end{Verbatim}
+
+{\fvset{frame=single,xrightmargin=5cm}
+\begin{PSideBySideExample}(-2,-1)(2,1)
+ \psellipse*[linecolor=yellow](2,1)
+\end{PSideBySideExample}
+
+\showgrid
+\begin{PSideBySideExample}(-2,-1)(2,1)
+ \psellipse[linestyle=dashed](2,1)
+\end{PSideBySideExample}
+}
+
+\begin{Verbatim}
+ \fvset{frame=single,xrightmargin=5cm}
+ \begin{PSideBySideExample}(-2,-1)(2,1)
+ \psellipse[linestyle=§HLCBWeµdashed¶](2,1)
+ \end{PSideBySideExample}
+ \begin{PSideBySideExample}[numbers=right](-2,-1)(2,1)
+ \psellipse[linestyle=§HLeµdotted¶](2,1)
+ \end{PSideBySideExample}
+\end{Verbatim}
+
+{\fvset{frame=single,xrightmargin=5cm}
+\begin{PSideBySideExample}(-2,-1)(2,1)
+ \psellipse[linestyle=§HLCBWeµdashed¶](2,1)
+\end{PSideBySideExample}
+\begin{PSideBySideExample}[numbers=right](-2,-1)(2,1)
+ \psellipse[linestyle=§HLeµdotted¶](2,1)
+\end{PSideBySideExample}
+
+
+\else % If PSTricks is not available
+\begin{quote}
+ \section{\texttt{PCenterExample} and \texttt{PSideBySideExample}
+environments}
+
+ \textbf{\large Warning!} These two environments are not demonstrated here,
+because PSTricks was not found on this platform.
+\end{quote}
+\fi
+
+\end{document}
+% \end{macrocode}
+%
+%</t-fvrbex>
+%
+% \Finale
+% \PrintIndex
+% \PrintChanges
+%
+\endinput
+%%
+%% End of file `fvrb-ex.dtx'