diff options
author | Karl Berry <karl@freefriends.org> | 2006-01-11 23:53:13 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-01-11 23:53:13 +0000 |
commit | 1b390e7c0060de46864273dd300d12affa5d9735 (patch) | |
tree | 07385aa5bf7cccb8b943820b8689295bdbdbae8d /Master/texmf-dist/source/latex/fancyvrb/fvrb-ex.dtx | |
parent | f1ba088253f565d5cb2d934517f7c9af1a72c154 (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.dtx | 1564 |
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' |