From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 2 Sep 2019 13:46:59 +0900 Subject: Initial commit --- macros/latex/contrib/fancyvrb/Changes | 23 + macros/latex/contrib/fancyvrb/README | 39 + macros/latex/contrib/fancyvrb/doc/fancyvrb-doc.pdf | Bin 0 -> 161872 bytes macros/latex/contrib/fancyvrb/doc/fancyvrb-doc.tex | 1397 ++++++++++++++++++++ .../latex/contrib/fancyvrb/latex/fancyvrb-ex.sty | 144 ++ macros/latex/contrib/fancyvrb/latex/fancyvrb.sty | 1339 +++++++++++++++++++ macros/latex/contrib/fancyvrb/latex/hbaw.sty | 161 +++ macros/latex/contrib/fancyvrb/latex/hcolor.sty | 164 +++ 8 files changed, 3267 insertions(+) create mode 100644 macros/latex/contrib/fancyvrb/Changes create mode 100644 macros/latex/contrib/fancyvrb/README create mode 100644 macros/latex/contrib/fancyvrb/doc/fancyvrb-doc.pdf create mode 100644 macros/latex/contrib/fancyvrb/doc/fancyvrb-doc.tex create mode 100644 macros/latex/contrib/fancyvrb/latex/fancyvrb-ex.sty create mode 100644 macros/latex/contrib/fancyvrb/latex/fancyvrb.sty create mode 100644 macros/latex/contrib/fancyvrb/latex/hbaw.sty create mode 100644 macros/latex/contrib/fancyvrb/latex/hcolor.sty (limited to 'macros/latex/contrib/fancyvrb') diff --git a/macros/latex/contrib/fancyvrb/Changes b/macros/latex/contrib/fancyvrb/Changes new file mode 100644 index 0000000000..c1b5791665 --- /dev/null +++ b/macros/latex/contrib/fancyvrb/Changes @@ -0,0 +1,23 @@ +--- fancyvrb.sty +3.2a 2019/01/15 - added missing style files (hv) +3.2 2019/01/08 - remove the loading of package xcolor (hv) +3.1a 2018/11/20 - small changes to the documentation (hv) +3.1 2018/11/17 - load package xcolor only if it is not done already (hv) +3.0 2018/11/01 - remove the example part from francyvrb (hv) +2.9 2018/10/31 - made \UseVerb robust (hv) +2.81 2011/04/06 - added optional argument vspace for the + vertical space (default \topsep) (hv) +2.8 2010/05/14 - fixed several trailing spaces (hv) + - changed license to LPPL +2.7a 2008/02/07 - NMM fixed lastline=firstline bug +2.7 2000/03/21 - changed how fancyvrb.cfg included DG/SR +2.6 1998/07/17 - Three bug corrected, options numberblanklines, + label, labelposition and leftline added and few + precisions. +v2.5 1998/01/28 - First public release. +v2.0 1994/03/30 - First version personally shown by Timothy + \textsc{van Zandt} + + +--- fancyvrb-ex.sty +0.01 2018/11/01 - first CTAN version \ No newline at end of file diff --git a/macros/latex/contrib/fancyvrb/README b/macros/latex/contrib/fancyvrb/README new file mode 100644 index 0000000000..e78fec959f --- /dev/null +++ b/macros/latex/contrib/fancyvrb/README @@ -0,0 +1,39 @@ + + -------------------------------------------------- + | `fancyvrb' | + | | + | Timothy Van Zandt (Princeton University - USA) | + | | + | Packaging, documentation and support | + | Denis Girou (CNRS/IDRIS - France) | + | | + | Sebastian Rahtz (Elsevier - GB) | + | Herbert Voss, Berlin (hvoss@tug.org) | + -------------------------------------------------- + +Report bugs to hvoss@tug.org + + + The `fancyvrb' package provides very sophisticated facilities for reading +and writing verbatim TeX code. Users can perform common tasks like changing +font family and size, numbering lines, framing code examples, colouring text +and conditionally processing text. + + `fancyvrb' was heavily used in the typesetting of the "LaTeX Graphics +Companion", by Michel Goossens, Sebastian Rahtz and Frank Mittelbach, Addison +Wesley, 1997. + + It was presented March 31, 1998 for EuroTeX'98. The original paper is +available on "Cahiers GUTenberg" +. + Comments, suggestions and bug reports (with version number and the +keyword "fancyvrb" in the subject of the message) to + + The `fancyvrb-ex' package provides some example environments to +show LaTeX code and output side by side or on top on each other. + + + +%% This package may be distributed under the terms of the LaTeX Project Public +%% License, as described in lppl.txt in the base LaTeX distribution. +%% Either version 1.3 or, at your option, any later version. diff --git a/macros/latex/contrib/fancyvrb/doc/fancyvrb-doc.pdf b/macros/latex/contrib/fancyvrb/doc/fancyvrb-doc.pdf new file mode 100644 index 0000000000..25f66f3824 Binary files /dev/null and b/macros/latex/contrib/fancyvrb/doc/fancyvrb-doc.pdf differ diff --git a/macros/latex/contrib/fancyvrb/doc/fancyvrb-doc.tex b/macros/latex/contrib/fancyvrb/doc/fancyvrb-doc.tex new file mode 100644 index 0000000000..ce6e39df8d --- /dev/null +++ b/macros/latex/contrib/fancyvrb/doc/fancyvrb-doc.tex @@ -0,0 +1,1397 @@ +\documentclass{article} +%\usepackage[T1]{fontenc} +%\usepackage[charter]{mathdesign} +\usepackage{libertinus} +%\usepackage[scaled=0.84]{beramono} +\setmonofont[Scale=MatchLowercase,FakeStretch=0.9]{AnonymousPro} + +\newif\ifChangeBar \ChangeBarfalse +\usepackage{fancyvrb} +\usepackage[pstricks]{fancyvrb-ex} +\usepackage{xurl} +\usepackage[colorlinks,linktocpage]{hyperref} +\parskip=3pt plus 1pt minus 1pt +% + +\newcommand\FBoxPackage{`\textsf{fancybox}'} +\newcommand\FVrbPackage{`\textsf{fancyvrb}'} +\newcommand\cs[1]{\texttt{\textbackslash#1}} +% +% From ltugboat.cls +% +% Typeset the name of an environment +\providecommand\env[1]{\textsf{#1}} +\providecommand\clsname[1]{\textsf{#1}} +\providecommand\pkgname[1]{\textsf{#1}} +\providecommand\optname[1]{\textsf{#1}} +\providecommand\progname[1]{\textsf{#1}} +% +% A list of options for a package/class +\newenvironment{optlist}{\begin{description}% + \renewcommand\makelabel[1]{% + \descriptionlabel{\mdseries\optname{##1}}}% + \itemsep0.25\itemsep}% + {\end{description}} +% +% Utility macros +% +% Special dashes + +\makeatletter +\def\thinskip{\hskip 0.16667em\relax} +\def\endash{--} +\def\emdash{\endash-} +\def\d@sh#1#2{\unskip#1\thinskip#2\thinskip\ignorespaces} +\def\dash{\d@sh\nobreak\endash} +\def\Dash{\d@sh\nobreak\emdash} +\makeatother +\newif\ifPostScriptFonts \PostScriptFontstrue +% +\setlength{\columnseprule}{0.6pt} +% +\newif\ifmulticols +%\IfFileExists{multicol.sty}{\multicolstrue}{} +\newif\ifpstricks +\pstrickstrue +% +\title{The `\textsf{fancyvrb}' package\\Fancy Verbatims in \LaTeX} +\author{Timothy Van Zandt\\Princeton University\\Princeton -- USA\\[5mm] +% {\footnotesize \url{tvz@Princeton.EDU}}\\[5mm] + {Packaging and documentation by}\\ + {\footnotesize Denis Girou (CNRS/IDRIS -- France),}\\[-2mm] + {\footnotesize Sebastian Rahtz (Elsevier -- GB)}\\[-2mm] + {\footnotesize and}\\[-2mm] + {\footnotesize Herbert Voß\ (FU Berlin -- DE)} + } +\date{Version 3.2a\\ \today} + +\fvset{frame=single,xrightmargin=0cm,numbers=left,numbersep=3pt,commentchar=Z} + +\begin{document} +\maketitle +% +\begin{abstract} + This package provides very sophisticated facilities for reading and + writing verbatim \TeX{} code. Users can perform common tasks like changing + font family and size, numbering lines, framing code examples, colouring + text and conditionally processing text. +\end{abstract} + +\begin{center} +Report bugs to \url{hvoss@tug.org} +\end{center} + +\vfill +Thanks to +Philippe Esperet, %\url{esperet@marie.polytechnique.fr}, +Michael Friendly, %\url{friendly@hotspur.psych.yorku.ca}, +Mario Hassler, %\url{HASSLER@ippnv2.ipp.kfa-juelich.de}, +Mikhail Kolodin, %\url{myke@morrigan.spb.su}, +Andreas Matthias, +Frank Mittelbach, +Rolf Niepraschk, %\url{Rolf.Niepraschk@gmx.de}, +Ulrich M. Schwarz, +Thomas Siegel,% \url{siegel@aix520.informatik.uni-leipzig.de}, +and +Vladimir Volovich. %\url{vvv@vvv.vsu.ru}. +\clearpage +\tableofcontents +\clearpage +%\part{\texttt{fancyvrb} package by Timothy Van Zandt} + + +\part{Package \texttt{fancyvrb}} + + +\section{Introduction} +% + \FVrbPackage{} is the development of the \emph{verbatim} macros of the +\FBoxPackage{} package, Section 11 of \cite{FancyBox}. It offers six kinds +of extended functionality, compared to the standard \LaTeX{} +\textsf{verbatim} environment: + +\begin{enumerate} + \item verbatim commands can be used in footnotes, + \item several verbatim commands are enhanced, + \item a variety of verbatim environments are provided, with many + parameters to change the way the contents are printed; it is also possible + to define new customized verbatim environments, + \item a way is provided to save and restore verbatim text and environments, + \item there are macros to write and read files in verbatim mode, with the + usual versatility, + \item you can build \emph{example} environments (showing both result and + verbatim text), with the same versatility as normal verbatim. +\end{enumerate} + + The package works by scanning a line at a time from an environment or a +file. This allows it to pre-process each line, rejecting it, removing +spaces, numbering it, etc, before going on to execute the body of the line +with the appropriate catcodes set. + +\section{Verbatim material in footnotes} + + After a \cs{VerbatimFootnotes} macro declaration (to use after the +preamble), it is possible to put verbatim commands and environments +(the \LaTeX{} or \FVrbPackage{} ones) in footnotes, unlike in standard +\LaTeX: + +\begin{Example} + \VerbatimFootnotes + We can put verbatim\footnote{\verb+_Yes!_+} text in footnotes. +\end{Example} + +\section{Improved verbatim commands} +% + The \cs{DefineShortVerb} macro allows us to define a special character as +an abbreviation to enclose verbatim text and the \cs{UndefineShortVerb} +macro suppresses the special meaning of the specified character (the same +functionalities are provided in the \LaTeX{} `\textsf{shortvrb}' package): + +\fvset{xrightmargin=4.8cm} + +\begin{SideBySideExample} + \DefineShortVerb{\|} + We can simply write \Verb+_verbatim_+ + material using a single |_delimiter_| + \UndefineShortVerb{\|} + \DefineShortVerb{\+} + And we can +_change_+ the character. +\end{SideBySideExample} + + To make matters more versatile, we can nominate \emph{escape} characters +in verbatim text (using the \cs{Verb} macro or with a `shortverb' character +defined), to perform formatting or similar tasks, using the +\texttt{commandchars} parameter as shown for environments in paragraph +\ref{sec:commandchars}. + +\section{Verbatim environments} + +Several verbatim environments are available, each with a lot of +parameters to customize them. In the following examples we use the +\texttt{Verbatim} environment, which is the equivalent of the standard +\texttt{verbatim}. The parameters can be set globally using the \cs{fvset} +macro or in an optional argument after the start of the +environment\footnote{For clarification in this paper, note that we +generally indent each verbatim line with two +spaces.}$^,$\footnote{This mechanism uses the +`\textbf{keyval}' package from the standard \LaTeX{} graphics +distribution, written by David \textsc{Carlisle}.}. + +\begin{SideBySideExample} + \begin{Verbatim} + First verbatim line. + Second verbatim line. + \end{Verbatim} +\end{SideBySideExample} + +\subsection{Customization of verbatim environments} + + The appearance of verbatim environments can be changed in many and +varied ways; here we list the keys that can be set. + +\subsubsection{Comments} + +\begin{optlist} + \item[commentchar (character)]: character to define comments in the + verbatim code, so that lines starting with this character will not be + printed (\emph{Default: empty}). +\end{optlist} + +\begin{SideBySideExample} + \begin{Verbatim}[commentchar=!] + A comment + Verbatim line. + ! A comment that you will not see + \end{Verbatim} +\end{SideBySideExample} + + Take care to a special effect if the comment character is not the first +non blank one: it is because this character is in fact managed as the \TeX{} +comment one, that is to say that it gobble the newline character too. So, in +this case, the current line will be joined with the next one and, more, the +last one will be lost if it contain a comment, as \FVrbPackage{} print a +line only after finding it end character, which will never occured in this +case... + +\begin{SideBySideExample} + \begin{Verbatim}[commentchar=\%] + First line. % First line + Second. + Third line. % Third line lost... + \end{Verbatim} +\end{SideBySideExample} + +\subsubsection{Initial characters to suppress} + +\begin{optlist} + \item[gobble (integer)]: number of characters to suppress at the beginning + of each line (up to a maximum of 9), mainly useful when environments are + indented + (\emph{Default: empty} \Dash no character suppressed). +\end{optlist} + +\begin{SideBySideExample} + \begin{Verbatim} + Verbatim line. + \end{Verbatim} + + \begin{Verbatim}[gobble=2] + Verbatim line. + \end{Verbatim} + + \begin{Verbatim}[gobble=8] + Verbatim line. + \end{Verbatim} +\end{SideBySideExample} + +\subsubsection{Customization of formatting} + +\begin{optlist} + \item[formatcom (command)]: command to execute before printing verbatim + text + (\emph{Default: empty}). +\end{optlist} + +\begin{SideBySideExample} + \begin{Verbatim}[formatcom=\color{red}] + First verbatim line. + Second verbatim line. + \end{Verbatim} +\end{SideBySideExample} + +\subsubsection{Changing individual line formatting} + + The macro \cs{FancyVerbFormatLine} defines the way each line is formatted. +Its default value is \verb+\def\FancyVerbFormatLine#1{#1}+, but we can +redefine it at our convenience (\texttt{FancyVerbLine} is the name of the +line counter): + +{\fvset{fontsize=\small} +\begin{SideBySideExample} + Z\fvset{fontsize=\normalsize} + \renewcommand{\FancyVerbFormatLine}[1]{% + \makebox[0cm][l]{$\Rightarrow$}#1} + \begin{Verbatim} + First verbatim line. + Second verbatim line. + Third verbatim line. + \end{Verbatim} +\end{SideBySideExample} + +\begin{SideBySideExample} + \renewcommand{\FancyVerbFormatLine}[1]{% + \ifodd\value{FancyVerbLine}% + \MakeUppercase{#1}\else#1\fi} + \begin{Verbatim} + First verbatim line. + Second verbatim line. + Third verbatim line. + \end{Verbatim} +\end{SideBySideExample} +} + +\subsubsection{Fonts} + +\begin{optlist} + \item[fontfamily (family name)]: font family to use. + \texttt{tt}, \texttt{courier} and \texttt{helvetica} are pre-defined + (\emph{Default:~tt}). +\end{optlist} + +\ifPostScriptFonts We can guess that PostScript fonts are available + +\begin{SideBySideExample} + \begin{Verbatim}[fontfamily=helvetica] + Verbatim line. + \end{Verbatim} +\end{SideBySideExample} + +\else +\begin{quote} + \textbf{\large Warning!} PostScript fonts seems not available on your + platform (we are looking for the file \texttt{times.sty}, so we will + not show the examplaes using such PostScript fonts. +\end{quote} +\fi + +\begin{optlist} + \item[fontsize (font size)]: size of the font to use + (\emph{Default: auto} \Dash the same as the current font). If you use the + `\textsf{relsize}' package too, you can require a change of the size + proportional to the current one (for instance: + \verb+fontsize=\relsize{-2}+). +\end{optlist} + +\ifPostScriptFonts We can guess that PostScript fonts are available + +\begin{SideBySideExample} + \begin{Verbatim}[fontsize=\small] + Verbatim line. + \end{Verbatim} + + \begin{Verbatim}[fontfamily=courier, + fontsize=\large] + Verbatim line. + \end{Verbatim} +\end{SideBySideExample} + +\else +\begin{SideBySideExample} + \begin{Verbatim}[fontsize=\small] + Verbatim line. + \end{Verbatim} +\end{SideBySideExample} +\fi + +\begin{optlist} + \item[fontshape (font shape)]: font shape to use + (\emph{Default: auto} \Dash the same as the current font). +\end{optlist} + +\ifPostScriptFonts We can guess that PostScript fonts are available + +\begin{SideBySideExample} + \begin{Verbatim}[fontfamily=courier, + fontshape=it] + Verbatim line. + \end{Verbatim} +\end{SideBySideExample} + +\else + +\begin{SideBySideExample} + \begin{Verbatim}[fontshape=it] + Verbatim line. + \end{Verbatim} +\end{SideBySideExample} +\fi + +\begin{optlist} + \item[fontseries (series name)]: \LaTeX{} font `series' to use + (\emph{Default: auto} \Dash the same as the current font). +\end{optlist} + +\ifPostScriptFonts We can guess that PostScript fonts are available + +\begin{SideBySideExample} + \begin{Verbatim}[fontfamily=courier, + fontseries=b] + Verbatim line. + \end{Verbatim} +\end{SideBySideExample} + +\else +\begin{SideBySideExample} + \begin{Verbatim}[fontseries=b] + Verbatim line. + \end{Verbatim} +\end{SideBySideExample} +\fi + +\subsubsection{Types and characteristics of frames} + +\begin{optlist} + \item[frame + (none$\mid$leftline$\mid$topline$\mid$bottomline$\mid$lines$\mid$single)]: + type of frame around the verbatim environment + (\emph{Default: none} \Dash no frame). With \textsf{leftline} and + \textsf{single} modes, a space of a length given by the \LaTeX{} + \cs{fboxsep} macro is added between the left vertical line and the text. +\end{optlist} + + Problem at the top of a page... + +\begin{SideBySideExample} + \begin{Verbatim}[frame=leftline] + Verbatim line. + \end{Verbatim} + + \begin{Verbatim}[frame=topline] + Verbatim line. + \end{Verbatim} + + \begin{Verbatim}[frame=bottomline] + Verbatim line. + \end{Verbatim} + + \begin{Verbatim}[frame=lines] + Verbatim line. + \end{Verbatim} + + \begin{Verbatim}[frame=single] + Verbatim line. + \end{Verbatim} +\end{SideBySideExample} + +\begin{optlist} + \item[framerule (dimension)]: width of the rule of the frame + (\emph{Default: 0.4pt if framing specified}). +\end{optlist} + +\begin{SideBySideExample} + \begin{Verbatim}[frame=single, + framerule=1mm] + Verbatim line. + \end{Verbatim} +\end{SideBySideExample} + +\begin{optlist} + \item[framesep (dimension)]: width of the gap between the frame and + the text (\emph{Default: \cs{fboxsep}}). +\end{optlist} + +\begin{SideBySideExample} + \begin{Verbatim}[frame=single, + framesep=5mm] + Verbatim line. + \end{Verbatim} +\end{SideBySideExample} + +\begin{optlist} + \item[rulecolor (color command)]: color of the frame rule, expressed + in the standard \LaTeX{} way + (\emph{Default: black}). +\end{optlist} + +\begin{SideBySideExample} + \begin{Verbatim}[frame=single, + rulecolor=\color{red}] + Verbatim line. + \end{Verbatim} +\end{SideBySideExample} + +\begin{optlist} + \item[fillcolor (color command)]: color used to fill the space + between the frame and the text (its thickness is given by + \texttt{framesep}) + (\emph{Default: none} \Dash no color). +\end{optlist} + +\begin{SideBySideExample} + \begin{Verbatim}[frame=single, + framerule=1mm,framesep=3mm, + rulecolor=\color{red}, + fillcolor=\color{yellow}] + Verbatim line. + \end{Verbatim} +\end{SideBySideExample} + +\subsubsection{Label for the environment} + +\begingroup +\newcommand\Vitem{\SaveVerb[aftersave={\item[\UseVerb{Vitem}]}]{Vitem}} +\DefineShortVerb{\|} + +\begin{optlist} + \Vitem|label ({[string]string})|: label(s) to print on top, bottom or + both frame lines of the environment to describe it content + (\emph{Default: empty} \Dash no label). + If the label(s) contains special characters, as a comma or an equal sign, + it must be put inside a group. If only one string is given, it will be + used for both top and bottom lines (if the two are printed), but if an + optional first label is given too, this one will be used for the top line + and the second one for the bottom line. Note also that, if another value + than \textsf{topline}, \textsf{bottomline}, \textsf{lines} or + \textsf{single} is used for the \textsf{frame} parameter, the label(s) + will not be printed. +\end{optlist} +\endgroup + + Problem at the top of a page... + +\begin{SideBySideExample} + \fvset{gobble=2} + \begin{Verbatim}[frame=single, + label=My text] + First verbatim line. + Second verbatim line. + \end{Verbatim} + + \begin{Verbatim}[frame=topline, + framesep=4mm, + label=\fbox{\Large\emph{The code}}] + First verbatim line. + Second verbatim line. + \end{Verbatim} +\end{SideBySideExample} + +\begin{optlist} + \item[labelposition (none$\mid$topline$\mid$bottomline$\mid$all)]: + position where to print the label if one is defined, which must be + coherent with the kind of frame chosen + (\emph{Default: none if the label is empty, topline if one label is + defined and all if two are defined}). + Of course, some incompatible options (like + \textsf{frame=topline,labelposition=bottomline}) will not print the + label. +\end{optlist} + + Problem at the top of a page... + +\begin{SideBySideExample} + \fvset{gobble=2} + \begin{Verbatim}[frame=single, + framesep=2mm, + label=Text,labelposition=all] + First verbatim line. + Second verbatim line. + \end{Verbatim} + + \begin{Verbatim}[frame=lines, + label=Text,labelposition=topline] + First verbatim line. + Second verbatim line. + \end{Verbatim} +\end{SideBySideExample} + +\begin{SideBySideExample} + \begin{Verbatim}[frame=bottomline, + framesep=3mm, + label=\textit{Code included}, + labelposition=bottomline] + First verbatim line. + Second verbatim line. + \end{Verbatim} + + \begin{Verbatim}[frame=lines, + framesep=3mm, + label={[Beginning of code]End of code}] + First verbatim line. + Second verbatim line. + \end{Verbatim} +\end{SideBySideExample} + +\subsubsection{Line numbering} + +\begin{optlist} + \item[numbers (none$\mid$left$\mid$right)]: numbering of the verbatim lines + (\emph{Default: none} \Dash no numbering). If requested, this numbering is + done \emph{outside} the verbatim environment. +\end{optlist} + +\begin{SideBySideExample} + \begin{Verbatim}[gobble=2,numbers=left] + First verbatim line. + Second verbatim line. + \end{Verbatim} + + \begin{Verbatim}[gobble=2, + numbers=right,numbersep=0pt] + First verbatim line. + Second verbatim line. + \end{Verbatim} +\end{SideBySideExample} + +\begin{optlist} + \item[numbersep (dimension)]: gap between numbers and verbatim lines + (\emph{Default: 12pt}). +\end{optlist} + +\begin{SideBySideExample} + \begin{Verbatim}[gobble=2, + numbers=left,numbersep=2pt] + First verbatim line. + Second verbatim line. + \end{Verbatim} +\end{SideBySideExample} + +\begin{optlist} + \item[firstnumber (auto$\mid$last$\mid$integer)]: number of the first line + (\emph{Default: auto} \Dash numbering starts from 1). \textsf{last} means + that the numbering is continued from the previous verbatim environment. If + an integer is given, its value will be used to start the numbering. +\end{optlist} + +\begin{SideBySideExample} + \fvset{gobble=2, + numbers=left,numbersep=3pt} + \begin{Verbatim} + Verbatim line. + \end{Verbatim} + + \begin{Verbatim}[firstnumber=last] + Verbatim line. + \end{Verbatim} + + \begin{Verbatim}[firstnumber=100] + Verbatim line. + \end{Verbatim} +\end{SideBySideExample} + +\begin{optlist} + \item[stepnumber (integer)]: interval at which line numbers are printed + (\emph{Default:~1} \Dash all lines are numbered). +\end{optlist} + +\begin{SideBySideExample} + \begin{Verbatim}[gobble=2,numbers=left, + numbersep=3pt,stepnumber=2] + First verbatim line. + Second verbatim line. + Third verbatim line. + \end{Verbatim} +\end{SideBySideExample} + + The macro \cs{theFancyVerbLine} defines the typesetting style of the +numbering, and the counter used is \texttt{FancyVerbLine}: + +\begin{SideBySideExample} + \renewcommand{\theFancyVerbLine}{% + \textcolor{red}{\small + 8.\alph{FancyVerbLine}}} + \begin{Verbatim}[gobble=2, + numbers=left,numbersep=2pt] + First verbatim line. + Second verbatim line. + Third verbatim line. + \end{Verbatim} +\end{SideBySideExample} + +\ifChangeBar\begin{changebar}\fi +\begin{optlist} + \item[numberblanklines (boolean)]: to number or not the empty lines + (really empty or containing blank characters only) + (\emph{Default: true} \Dash all lines are numbered). +\end{optlist} + +\begin{SideBySideExample} + \begin{Verbatim}[gobble=2,numbers=left, + numbersep=3pt, + numberblanklines=false] + First verbatim line. + + + Second verbatim line. + \end{Verbatim} +\end{SideBySideExample} +\ifChangeBar\end{changebar}\fi +% +\subsubsection{Selection of lines to print} + +\begin{optlist} + \item[firstline (integer)]: first line to print + (\emph{Default: empty} \Dash all lines from the first are printed). +\end{optlist} + +\begin{SideBySideExample} + \begin{Verbatim}[gobble=2,firstline=2, + numbers=left,numbersep=2pt] + First verbatim line. + Second verbatim line. + Third verbatim line. + \end{Verbatim} +\end{SideBySideExample} + +\begin{optlist} + \item[lastline (integer)]: last line to print + (\emph{Default: empty} \Dash all lines until the last one are printed). +\end{optlist} + +\begin{SideBySideExample} + \begin{Verbatim}[gobble=2,lastline=1, + numbers=left,numbersep=2pt] + First verbatim line. + Second verbatim line. + Third verbatim line. + \end{Verbatim} +\end{SideBySideExample} + +Instead of specifying a firstline at which to start printing a range +of lines, you can define a start string; the start of the range is +the first line that exactly equals the string. (The comparison is made +before any characters are gobbled off the front of the line.) Similarly for a stop +string. You can mix line-numbers and strings, e.g.\ start at +firstline, and end at a stop string. Specifying the strings is a +bit klunky. Initially you must define the strings with +\cs{newcommand*} as in: + +\begin{SideBySideExample}[gobble=2] + \newcommand*\FancyVerbStartString{FROM} + \newcommand*\FancyVerbStopString{TO} + \begin{Verbatim} + First verbatim line. + FROM + Second verbatim line. + TO + Third verbatim line. + \end{Verbatim} +\end{SideBySideExample} + +\noindent To redefine the strings, you must use \cs{renewcommand*}. + +\subsubsection{Spaces and tab characters} + +\begin{optlist} + \item[showspaces (boolean)]: print a special character representing each + space + (\emph{Default: false} \Dash spaces not shown). +\end{optlist} + +\begin{SideBySideExample} + \begin{Verbatim}[showspaces=true] + Verbatim line. + \end{Verbatim} +\end{SideBySideExample} + + In practice, all verbatim environments have a~\texttt{*} variant, which +sets \texttt{showspaces=true}: + +\begin{SideBySideExample} + \begin{Verbatim*} + Verbatim line. + \end{Verbatim*} +\end{SideBySideExample} + + There are also some parameters to determine the way tab characters are +interpreted (using tabs is in fact a rather old-fashioned style of coding): + +\begin{optlist} + \item[showtabs (boolean)]: explicitly show tab characters + (\emph{Default: false} \Dash tab characters not shown). +\end{optlist} + +\begin{optlist} + \item[obeytabs (boolean)]: position characters according to the tabs + (\emph{Default: false} \Dash tab characters are added to the current + position). +\end{optlist} + +\begin{optlist} + \item[tabsize (integer)]: number of spaces given by a tab character + (\emph{Default:~8}). +\end{optlist} + +\subsubsection{Space between lines} + +\begin{optlist} + \item[baselinestretch (auto$\mid$dimension)]: value to give to the usual + `baselinestretch' \LaTeX{} parameter + (\emph{Default: auto} \Dash its current value just before the verbatim + command). +\end{optlist} + +\begin{SideBySideExample} + \begin{Verbatim}[baselinestretch=2] + First verbatim line. + Second verbatim line. + \end{Verbatim} +\end{SideBySideExample} + +\subsubsection{Escape characters for inserting commands} + +\begin{optlist} + \item[commandchars (three characters)]: characters which define the + character which starts a macro and marks the beginning and end of a group; + thus lets us introduce \emph{escape} sequences in verbatim code. Of + course, it is better to choose special characters which are not used in + the verbatim text! (\emph{Default: empty}). + \label{sec:commandchars} +\end{optlist} + +\begin{SideBySideExample} + \begin{Verbatim}[commandchars=\\\{\}] + \textit{This is a comment} + First verbatim line. + \fbox{Second} verbatim line. + \textcolor{red}{Third} verbatim line. + \end{Verbatim} + + \begin{Verbatim}[commandchars=+\[\]] + +textit[\textbf{Verbatim} line]. + \end{Verbatim} +\end{SideBySideExample} + +\ifChangeBar\begin{changebar}\fi + Using this way, it is also possible to put labels to be able, later, to +make reference to some lines of the verbatim environments: + +\begin{SideBySideExample} + \begin{Verbatim}[commandchars=\\\{\}, + numbers=left,numbersep=2pt] + First verbatim line. + Second line.\label{vrb:Important} + Third verbatim line. + \end{Verbatim} + + As I previously shown + line~\ref{vrb:Important}, it is... +\end{SideBySideExample} +\ifChangeBar\end{changebar}\fi + +\subsubsection{Margins} + +\begin{optlist} + \item[xleftmargin (dimension)]: indentation to add at the start of each + line + (\emph{Default:~0pt} \Dash no left margin). +\end{optlist} + +\begin{SideBySideExample} + \begin{Verbatim}[frame=single, + xleftmargin=5mm] + Verbatim line. + \end{Verbatim} +\end{SideBySideExample} + +\begin{optlist} + \item[xrightmargin (dimension)]: right margin to add after each line + (\emph{Default:~0pt} \Dash no right margin). +\end{optlist} + +\begin{SideBySideExample} + \begin{Verbatim}[frame=single, + xrightmargin=1cm] + Verbatim line. + \end{Verbatim} +\end{SideBySideExample} + +\begin{optlist} + \item[resetmargins (boolean)]: reset the left margin, which is useful if + we are inside other indented environments (\emph{Default: false} \Dash no + reset of the margin). +\end{optlist} + +{% +\DefineVerbatimEnvironment{Verbatim}{Verbatim}{gobble=0,numbers=none} +\begin{SideBySideExample} + \begin{itemize} + \item First item + \begin{Verbatim}[frame=single] + Verbatim line. + \end{Verbatim} + \item Second item + \begin{Verbatim}[frame=single, + resetmargins=true] + Verbatim line. + \end{Verbatim} + \end{itemize} +\end{SideBySideExample} +} + +\subsubsection{Overfull box messages} + +\begin{optlist} + \item[hfuzz (dimension)]: value to give to the \TeX{} \cs{hfuzz} dimension + for text to format. This can be used to avoid seeing some unimportant + \emph{Overfull box} messages (\emph{Default:~2pt}). +\end{optlist} + +\subsubsection{Page breaks} + +\begin{optlist} + \item[samepage (boolean)]: in very special circumstances, we may want to + make sure that a verbatim environment is not broken, even if it does not + fit on the current page. To avoid a page break, we can set the + \texttt{samepage} parameter to \emph{true} (\emph{Default: false}). +\end{optlist} + +\subsubsection{Catcode characters} + +\begin{optlist} + \item[codes (macro)]: to specify \emph{catcode} changes (\emph{Default: + empty}). +\end{optlist} + + For instance, this allows us to include formatted mathematics in verbatim +text: + +{\fvset{fontsize=\small} +\begin{SideBySideExample} + Z\fvset{fontsize=\normalsize} + \begin{Verbatim}[commandchars=\\\{\}, + codes={\catcode`$=3\catcode`^=7}] + x=1/sqrt(z**2) ! $\frac{1}{\sqrt{z^2}}$ + \end{Verbatim} +\end{SideBySideExample} +} %$ + + +\subsubsection{Active characters} + +\begin{optlist} + \item[defineactive (macro)]: to define the effect of \emph{active} + characters + (\emph{Default: empty}). +\end{optlist} + + This allows us to do some devious tricks: see the example in Section +\ref{sec:VerbatimInclude} on page~\pageref{sec:VerbatimInclude}. + +\subsection{Different kinds of verbatim environments} + +\subsubsection{Verbatim environment} + + This is the `normal' verbatim environment which we have been using up to +now. + +\subsubsection{BVerbatim environment} + + This environment puts the verbatim material in a \TeX{} box. Some +parameters do not work inside this environment (notably the framing ones), +but two new ones are available: + +\begin{optlist} + \item[boxwidth (auto$\mid$dimension)]: size of the box used + (\emph{Default: auto} \Dash the width of the longest line is used). +\end{optlist} + +\begin{optlist} + \item[baseline (b$\mid$c$\mid$t)]: position of the baseline (on the + \texttt{baseline}, the \texttt{center} or the \texttt{top} of the box) + (\emph{Default: b}). +\end{optlist} + +\begin{SideBySideExample} + \fvset{gobble=2} + \begin{BVerbatim} + First + Second + \end{BVerbatim} + \begin{BVerbatim}[baseline=c] + First + Second + \end{BVerbatim} +\end{SideBySideExample} + +\begin{SideBySideExample} + \begin{BVerbatim}[boxwidth=2cm] + First + Second + \end{BVerbatim} + \begin{BVerbatim}[boxwidth=2cm, + baseline=t] + First + Second + \end{BVerbatim} +\end{SideBySideExample} + +\subsubsection{LVerbatim environment} + + This environment puts verbatim material into \LaTeX{} `LR' mode (the +so-called \emph{left-to-right} mode, which in fact is the same thing that +\TeX{} itself calls \emph{restricted horizontal mode}). + +\subsubsection{Personalized environments} + +\ifChangeBar\begin{changebar}\fi +\VerbatimFootnotes + It is easy to define personal customized environments. You can redefine +the existing ones using the \cs{RecustomVerbatimEnvironment} macro or create +your own ones, using the \cs{DefineVerbatimEnvironment} macro\footnote{% +\ifChangeBar\begin{changebar}\fi +For verbatim commands, the \cs{CustomVerbatimCommand} and +\cs{RecustomVerbatimCommand} macros also exist; for instance: + +\noindent +\verb+\RecustomVerbatimCommand{\VerbatimInput}{VerbatimInput}{frame=lines}+ +\ifChangeBar\end{changebar}\fi}. +In each case, you specify the name of the new environment, the type of +environment on which it is based, and a set of initial option values. The +options can be overridden with an optional argument in the normal way: + +\begin{SideBySideExample} + \RecustomVerbatimEnvironment + {Verbatim}{Verbatim} + {gobble=2,frame=single} + \begin{Verbatim} + First verbatim line. + Second verbatim line. + \end{Verbatim} +\end{SideBySideExample} +\ifChangeBar\end{changebar}\fi + +\begin{SideBySideExample} + \DefineVerbatimEnvironment% + {MyVerbatim}{Verbatim} + {gobble=2,numbers=left,numbersep=2mm, + frame=lines,framerule=0.8mm} + \begin{MyVerbatim} + First verbatim line. + Second verbatim line. + \end{MyVerbatim} + + \begin{MyVerbatim}[numbers=none, + framerule=1pt] + First verbatim line. + Second verbatim line. + \end{MyVerbatim} +\end{SideBySideExample} + +\section{Saving and restoring verbatim text and environments} + + The \cs{SaveVerb} and \cs{UseVerb} macros allow us to save and restore +verbatim material. \cs{UseVerb} itself is robust: + +% \DefineShortVerb{\|} +% \SaveVerb{Verb}|_verbatim_| +\begin{SideBySideExample} + \DefineShortVerb{\|} + \SaveVerb{Verb}|_verbatim_| + I have saved \UseVerb{Verb} and reuse + it later as many times as I want + \subsection*{Using \UseVerb{Verb}} + \UseVerb{Verb}. +\end{SideBySideExample} + + This also provides a solution to putting verbatim text inside \LaTeX{} +commands which do not normally permit it: % (used package \texttt{marginnote}): + +{\fvset{frame=single,xrightmargin=0cm} +\begin{Example} + \DefineShortVerb{\|}\SaveVerb{Verb}|_OK^| \marginpar{\UseVerb{Verb}} +\end{Example} +} + + There is a useful ability to use verbatim text as the item text in a +description list (something not normally permitted in \LaTeX), using the +\texttt{aftersave} parameter: + +\begin{optlist} + \item[aftersave (macro)]: macro to dynamically save some verbatim material + (\emph{Default: empty}). +\end{optlist} + +\begin{SideBySideExample} + \newcommand{\Vitem}{% + \SaveVerb[aftersave={% + \item[\UseVerb{Vitem}]}]{Vitem}} + \DefineShortVerb{\|} + \begin{description} + \Vitem|\MyCommand|: my command + \end{description} +\end{SideBySideExample} + + In the same way, we can use and restore (in normal, boxed and LR mode, +using \cs{UseVerbatim}, \cs{BUseVerbatim} and \cs{LUseVerbatim} respectively) +entire verbatim environments: + +\begin{SideBySideExample} + Z\fvset{gobble=0,numbers=none} + \begin{SaveVerbatim}{VerbEnv} + Verbatim line. + \end{SaveVerbatim} + \UseVerbatim{VerbEnv} + and \UseVerbatim{VerbEnv} +\end{SideBySideExample} + +\begin{SideBySideExample} + Z\fvset{gobble=0,numbers=none} + \begin{SaveVerbatim}[gobble=5]{VerbEnv} + First + Second + \end{SaveVerbatim} + + \fbox{\BUseVerbatim{VerbEnv}} + and \BUseVerbatim{VerbEnv}. + + \LUseVerbatim{VerbEnv} and + \LUseVerbatim{VerbEnv} +\end{SideBySideExample} + +\section{Writing and reading verbatim files} +\label{sec:VerbatimInclude} + + The command \cs{VerbatimInput} (the variants \cs{BVerbatimInput} and +\cs{LVerbatimInput} also exist) allows inclusion of the contents of a file +with verbatim formatting. Of course, the various parameters which we have +described for customizing can still be used: + +%The file we will use for \VerbatimInput + +\typeout{*************************************} +\typeout{* Created files: hello.f90, file.txt} +\typeout{* See fancyhdr.dvi for an explanation} +\typeout{*************************************} + +\begin{VerbatimOut}{hello.f90} + ! A "hello" program + + program hello + print *,"Hello world" + end program hello +\end{VerbatimOut} + +\begin{SideBySideExample} + Z\RecustomVerbatimCommand{\VerbatimInput}{VerbatimInput}{gobble=4} + \fvset{fontsize=\small} + \VerbatimInput{hello.f90} + + \fvset{frame=single,numbers=left, + numbersep=3pt} + \VerbatimInput{hello.f90} + + \VerbatimInput[firstline=3, + rulecolor=\color{green}] + {hello.f90} + + \VerbatimInput[frame=lines, + fontshape=sl,fontsize=\footnotesize] + {hello.f90} +\end{SideBySideExample} + + We can make use of the `defineactive' parameter to set the comment lines + in the program text in a different style: + +\begin{SideBySideExample} + Z\RecustomVerbatimCommand{\VerbatimInput}{VerbatimInput}{gobble=4} + \def\ExclamationPoint{\char33} + \catcode`!=\active + \VerbatimInput% + [defineactive=% + \def!{\color{cyan}\itshape + \ExclamationPoint}] + {hello.f90} +\end{SideBySideExample} + + It is important to note that if the contents of the file does not fit on +the page, it will be automatically broken across pages as needed (unless the +\texttt{samepage} parameter has been set to \texttt{true}). + + There is also a \verb+VerbatimOut+ environment to write verbatim text to an +output file, in the same way: + +\begin{SideBySideExample} + \begin{VerbatimOut}{file.txt} + I write that. + And that too. + \end{VerbatimOut} + + \VerbatimInput[frame=single, + numbers=left,numbersep=6pt]{file.txt} +\end{SideBySideExample} + +\ifChangeBar\begin{changebar}\fi +\section{Automatic pretty printing} + + Obviously, automatic \emph{pretty printing} is outside the scope of this +package. Nevertheless, this is specially interesting for verbatim +inclusion of programming code files or fragments. In the \LaTeX{} world +(not speaking of the \emph{literate programming} way), there are software +for some special languages, as the `\textsf{C++2LaTeX}' package from Norbert +\textsc{Kiesel}, but mainly two generic ones, which use completely different +modes (an external preprocessor written in C and a \TeX{} based solution): +the `\textsf{LGrind}'~\cite{LGrind} system, currently maintened by Michael +\textsc{Piefel}, and the `\textsf{listings}'~\cite{Listings} package from +Carsten \textsc{Heinz}. + + Future versions of \FVrbPackage{} and `\textsf{listings}' packages are +planned to cooperate, which will offer great advantages to both users of the +two actual packages, and will allow \FVrbPackage{} users to have automatic +pretty printing of programming codes. + +\section{Known problems} + +\begin{itemize} + \item Vladimir \textsc{Volovich} \verb++ reported that the + special character \verb+\th+, available with T1 encoding, can't be + included as verbatim with \FVrbPackage. It can be true for other special + characters too. +\end{itemize} + +\iffalse + +\section{Thanks} + + For interesting comments and suggestions, we would like to thank specially +(alphabetic order): Philippe \textsc{Esperet} +\url{esperet@marie.polytechnique.fr}, Michael \textsc{Friendly} +\url{friendly@hotspur.psych.yorku.ca}, Rolf \textsc{Niepraschk} +\url{niepraschk@gmx.de} and for bug reports Mario \textsc{Hassler} +\relax\unskip\break +\url{HASSLER@ippnv2.ipp.kfa-juelich.de}, Mikhail \textsc{Kolodin} +\relax\unskip\break +\url{myke@morrigan.spb.su}, Andreas Matthias, Ulrich M. Schwarz, and Vladimir \textsc{Volovich} +\verb++. + + +\fi +\section{Conclusion} + + There are a few other possibilities that we have not described here. +Note specially that it is possible to define a customization file +(\texttt{fancyvrb.cfg}) loaded at the end of the package, to store +definitions of your customized commands and environments and to redefine +the attributes of existing ones. + + +\clearpage + + +\part{Package \texttt{fancyvrb-ex}} +This package defines some example environments which can write input code +and output side by side or on top of each other. They are all used for this documentation of \texttt{fancyvrb}. + +\section{\texttt{Example} environment} + +\begin{Verbatim}[gobble=2] + \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}[gobble=2] + \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} + +\newpage + +\section{\texttt{CenterExample} environment} + +\begin{Verbatim}[gobble=2] + \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} + + +\section{\texttt{SideBySideExample} environment} + +\begin{Verbatim}[gobble=2] + \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} + +\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}[gobble=2] + \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}[gobble=2] + \fvset{frame=single,xrightmargin=5cm} + \begin{PSideBySideExample}(-2,-1)(2,1) + \psellipse[linestyle=dashed](2,1) + \end{PSideBySideExample} + \begin{PSideBySideExample}[numbers=right](-2,-1)(2,1) + \psellipse[linestyle=dotted](2,1) + \end{PSideBySideExample} +\end{Verbatim} + +{\fvset{frame=single,xrightmargin=5cm} +\begin{PSideBySideExample}(-2,-1)(2,1) + \psellipse[linestyle=dashed](2,1) +\end{PSideBySideExample} + +\begin{PSideBySideExample}[numbers=right](-2,-1)(2,1) + \psellipse[linestyle=dotted](2,1) +\end{PSideBySideExample} +} + + + + + + + +\begin{thebibliography}{1} + \bibitem{FancyBox} Timothy \textsc{van Zandt}, + \textit{Documentation for `fancybox': Box tips and tricks for \LaTeX}. + Available from \url{CTAN: macros/latex/contrib/supported/fancybox}, 1993. + + \bibitem{FancyVrb} Timothy \textsc{van Zandt}, + \textit{`fancyvrb': Fancy Verbatims in \LaTeX}. + Available from \url{CTAN: macros/latex/contrib/supported/fancyvrb}, 1998. + + \bibitem{LGrind} Various authors (current maintainer: Michael + \textsc{Piefel}), + \textit{The `LGrind' package}. + Available from \url{CTAN: support/lgrind}, 1998. + + \bibitem{Listings} Carsten \textsc{Heinz}, + \textit{The `Listings' package}. + Available from \url{CTAN: macros/latex/contrib/supported/listings}, 1996-1997. +\end{thebibliography} + + + + + + + + +\end{document} diff --git a/macros/latex/contrib/fancyvrb/latex/fancyvrb-ex.sty b/macros/latex/contrib/fancyvrb/latex/fancyvrb-ex.sty new file mode 100644 index 0000000000..054ede2ada --- /dev/null +++ b/macros/latex/contrib/fancyvrb/latex/fancyvrb-ex.sty @@ -0,0 +1,144 @@ +%% +%% This is file `fancyvrb-ex.sty', +%% +%% COPYRIGHT 2018-, by Herbert Voss +%% +%% This package may be distributed under the terms of the LaTeX Project Public +%% License, as described in lppl.txt in the base LaTeX distribution. +%% Either version 1.3 or, at your option, any later version. +%% +%% DESCRIPTION: +%% fancyvrb.sty is a LaTeX style option, containing flexible +%% verbatim environments and commands and extensive documentation. +%% it is based on the work of Denis Girou +%% +\NeedsTeXFormat{LaTeX2e} +\def\fileversion{0.01} +\def\filedate{2018/11/01} +\ProvidesPackage{fancyvrb-ex}[\filedate] +\message{Style option: `fancyvrb-ex' v\fileversion \space <\filedate> (tvz)} +\csname fancyvrb-ex@loaded\endcsname +\expandafter\let\csname fancyvrb-ex@loaded\endcsname\endinput +\newif\ifEX@pstricks \EX@pstricksfalse +\DeclareOption{pstricks}{\EX@pstrickstrue} +\newif\ifEX@color\EX@colorfalse +\DeclareOption{color}{\global\EX@colortrue} +\ProcessOptions +\RequirePackage{fancyvrb} % Standard LaTeX `color' package +\RequirePackage{xcolor} % Standard LaTeX `color' package +\def\FV@Error#1#2{% + \edef\@tempc{#2}\expandafter\errhelp\expandafter{\@tempc}% + \errmessage{FancyVerb Error:^^J\space\space #1^^J}} + +\def\FV@eha{Your command was ignored. Type to continue.} + +% The exa part of fancyvrb +% +\def\Highlight@Attributes{} % Default=nothing +\def\NoHighlight@Attributes{} % Default=nothing +\ifEX@color + \RequirePackage{hcolor} % Color version +\else + \RequirePackage{hbaw} % black and white version +\fi +\ifEX@pstricks\RequirePackage{pstricks}\fi +% +%\fvset{gobble=0} +\newif\ifFvrbEx@Grid +% +\def\Example{% +\catcode`\^^M=\active +\@ifnextchar[{\catcode`\^^M=5\Example@}{\catcode`\^^M=5\Begin@Example}} +% +\def\endExample{% +\end{VerbatimOut}% +\Below@Example{\input{\jobname.tmp}}} +% +\def\Example@[#1]{\fvset{#1}\Begin@Example} +% +\def\CenterExample{% +\catcode`\^^M=\active +\@ifnextchar[{\catcode`\^^M=5\Example@}{\catcode`\^^M=5\Begin@Example}} +% +\def\endCenterExample{% +\end{VerbatimOut}% +\center +\Below@Example{\input{\jobname.tmp}} +\endcenter} +% +\def\SideBySideExample{% +\catcode`\^^M=\active +\@ifnextchar[{\catcode`\^^M=5\Example@}% + {\catcode`\^^M=5\Begin@Example}} +\def\endSideBySideExample{% +\end{VerbatimOut}% +\SideBySide@Example{\input{\jobname.tmp}}} +\newcommand\Begin@Example{% +\parindent=0pt +\multiply\topsep by 2 +\VerbatimEnvironment +\begin{VerbatimOut}[codes={\catcode`\^^a3=12\catcode`\^^a7=12\catcode`\^^b5=12% + \catcode`\^^b6=12}]{\jobname.tmp}} +\newcommand\Below@Example[1]{% +\VerbatimInput[gobble=0,commentchar=^^a3,commandchars=^^a7^^b5^^b6,numbersep=3pt]% + {\jobname.tmp} +\catcode`\^^a3=9\relax% +\NoHighlight@Attributes % To suppress possible highlighting +\ifFvrbEx@Grid\vspace{5pt}\fi +#1% +\ifFvrbEx@Grid\vspace{5pt}\fi +\par} +\newcommand{\SideBySide@Example}[1]{% +\@tempdimb=\FV@XRightMargin +\advance\@tempdimb -5mm +\begin{minipage}[c]{\@tempdimb} + \fvset{xrightmargin=0pt} + \catcode`\^^a3=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=^^a3,commandchars=^^a7^^b5^^b6,numbersep=3pt, + xleftmargin=5mm,xrightmargin=0pt]{\jobname.tmp} +\end{minipage}} +\ifx\PSTricksLoaded\endinput + \newcommand\showgrid{\FvrbEx@Gridtrue} + \newpsobject{FvrbExGrid}{psgrid}{subgriddiv=0,griddots=10,gridlabels=7pt} + \def\PCenterExample{\@ifnextchar[{\Pst@Example}{\Pst@@Example}} + \def\endPCenterExample{% + \end{VerbatimOut}% + \Below@Example{% + \center + \expandafter\pspicture\Picture@Size + \ifFvrbEx@Grid\FvrbExGrid\fi\relax + \input{\jobname.tmp}% + \endpspicture + \endcenter + \smallskip}} + \def\PSideBySideExample{\@ifnextchar[{\Pst@Example}{\Pst@@Example}} + \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}} + \def\Pst@Example[#1]{\fvset{#1}\Pst@@Example} + \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)}} + \def\Pst@@@Example(#1,#2)(#3,#4){% + \def\Picture@Size{(#1,#2)(#3,#4)}% + \Begin@Example} +\fi % End \ifx\PSTricksLoaded +%% +\endinput +%% +%% End of file `fancyvrb-ex.sty'. diff --git a/macros/latex/contrib/fancyvrb/latex/fancyvrb.sty b/macros/latex/contrib/fancyvrb/latex/fancyvrb.sty new file mode 100644 index 0000000000..e265f3965d --- /dev/null +++ b/macros/latex/contrib/fancyvrb/latex/fancyvrb.sty @@ -0,0 +1,1339 @@ +%% +%% This is file `fancyvrb.sty', +%% +%% COPYRIGHT 1992-1999, by Timothy Van Zandt +%% 2010-2019, by Herbert Voss +%% +%% This package may be distributed under the terms of the LaTeX Project Public +%% License, as described in lppl.txt in the base LaTeX distribution. +%% Either version 1.3 or, at your option, any later version. +%% +%% DESCRIPTION: +%% fancyvrb.sty is a LaTeX style option, containing flexible +%% verbatim environments and commands and extensive documentation. +%% +\NeedsTeXFormat{LaTeX2e} +\def\fileversion{3.2a} +\def\filedate{2019/01/15} +\ProvidesPackage{fancyvrb}[\filedate] +\message{Style option: `fancyvrb' v\fileversion \space <\filedate> (tvz)} +\csname fancyvrb@loaded\endcsname +\let\fancyvrb@loaded\endinput +%\ProcessOptions +%\@ifpackageloaded{xcolor}{}{\RequirePackage{xcolor}} % Standard LaTeX `color' package +\def\FV@Error#1#2{% + \edef\@tempc{#2}\expandafter\errhelp\expandafter{\@tempc}% + \errmessage{FancyVerb Error:^^J\space\space #1^^J}} + +\def\FV@eha{Your command was ignored. Type to continue.} +%% DG/SR modification begin - Jan. 21, 1998 +%% Suggested by Bernard Gaulle to solve a compatibility problem with `french' +%% (it introduce the restriction to put \VerbatimFootnotes AFTER the preambule) +%%\def\VerbatimFootnotes{\let\@footnotetext\V@footnotetext} +\let\V@footnote\footnote +\def\VerbatimFootnotes{% +\let\@footnotetext\V@footnotetext% +\let\footnote\V@footnote} +%% DG/SR modification end +\long\def\V@footnotetext{% + \afterassignment\V@@footnotetext + \let\@tempa} +\def\V@@footnotetext{% + \insert\footins\bgroup + \csname reset@font\endcsname + \footnotesize + \interlinepenalty\interfootnotelinepenalty + \splittopskip\footnotesep + \splitmaxdepth\dp\strutbox + \floatingpenalty \@MM + \hsize\columnwidth + \@parboxrestore + \edef\@currentlabel{\csname p@footnote\endcsname\@thefnmark}% + \@makefntext{}% + \rule{\z@}{\footnotesep}% + \bgroup + \aftergroup\V@@@footnotetext + \ignorespaces} +\def\V@@@footnotetext{\strut\egroup} +\RequirePackage{keyval} +\def\define@booleankey#1#2#3#4{% + \@namedef{KV@#1@#2@default}{#3}% + \@namedef{KV@#1@#2@false}{#4}% + \@namedef{KV@#1@#2}##1{\KV@booleankey{##1}{#1}{#2}}} +\def\KV@booleankey#1#2#3{% + \edef\@tempa{#1}\expandafter\KV@@booleankey\@tempa\relax\@nil{#2}{#3}} +\def\KV@@booleankey#1#2\@nil#3#4{% + \@nameuse{KV@#3@#4@\if t#1default\else\if T#1default\else false\fi\fi}} +\def\FV@None{none} +\def\FV@Auto{auto} +\def\fvset#1{\setkeys{FV}{#1}} +\def\FV@Command#1#2{% + \@ifstar + {\def\FV@KeyValues{#1,showspaces}\FV@@Command{#2}}% + {\def\FV@KeyValues{#1}\FV@@Command{#2}}} +\def\FV@@Command#1{% + \@ifnextchar[% + {\FV@GetKeyValues{\@nameuse{FVC@#1}}}% + {\@nameuse{FVC@#1}}} +\def\FV@GetKeyValues#1[#2]{% + \expandafter\def\expandafter\FV@KeyValues\expandafter{\FV@KeyValues,#2}#1} +\def\@CustomVerbatimCommand#1#2#3#4{% + \begingroup\fvset{#4}\endgroup % If there are errors, it easier to locate. +%% DG/SR modification begin - Jan. 13, 1998 +%% \def\@tempa##1##2\@nil{\def\@tempa{##2}}% +%% \expandafter\@tempa\string#3\@empty\@nil +%% \@ifundefined{FVC@\@tempa}% + \@ifundefined{FVC@#3}% +%% DG/SR modification end + {\FV@Error{Command `\string#3' is not a FancyVerb command.}\@eha}% + {#1{#2}{\FV@Command{#4}{#3}}}} +\def\CustomVerbatimCommand{\@CustomVerbatimCommand\newcommand} +\def\RecustomVerbatimCommand{\@CustomVerbatimCommand\renewcommand} +\def\FV@Environment#1#2{% + \def\FV@KeyValues{#1}% + \catcode`\^^M=\active + \@ifnextchar[% + {\catcode`\^^M=5 \FV@GetKeyValues{\@nameuse{FVB@#2}}}% + {\catcode`\^^M=5 \@nameuse{FVB@#2}}} +\def\CustomVerbatimEnvironment{\@CustomVerbatimEnvironment\newenvironment} +\def\RecustomVerbatimEnvironment{\@CustomVerbatimEnvironment\renewenvironment} +\def\@CustomVerbatimEnvironment#1#2#3#4{% + \begingroup\fvset{#4}\endgroup % If there are errors, it easier to locate. + \@ifundefined{FVB@#3}% + {\FV@Error{`#3' is not a FancyVerb environment.}\@eha}% + {#1{#2}{\FV@Environment{#4}{#3}}{\@nameuse{FVE@#3}}% + #1{#2*}{\FV@Environment{#4,showspaces}{#3}}{\@nameuse{FVE@#3}}}} +\def\DefineVerbatimEnvironment#1#2#3{% + \@namedef{#1}{\FV@Environment{#3}{#2}}% + \@namedef{end#1}{\@nameuse{FVE@#2}}% + \@namedef{#1*}{\FV@Environment{#3,showspaces}{#2}}% + \@namedef{end#1*}{\@nameuse{FVE@#2}}} +\def\FV@UseKeyValues{% + \ifx\FV@KeyValues\@empty\else + \def\KV@prefix{KV@FV@}% + \expandafter\KV@do\FV@KeyValues,\relax,% + \def\FV@KeyValues{}% + \fi} +\def\FV@CatCodes{% + \let\do\@makeother\dospecials % The usual stuff. + \FV@ActiveWhiteSpace % See below. + \FV@FontScanPrep % See below. + \FV@CatCodesHook % A style hook. + \FancyVerbCodes} % A user-defined hook. +\def\FV@ActiveWhiteSpace{% + \catcode`\^^M=\active % End of line + \catcode`\ =\active % Space + \catcode`\^^I=\active} % Tab +\def\FV@CatCodesHook{} +\def\FV@AddToHook#1#2{% + \expandafter\def\expandafter#1\expandafter{#1#2\relax}} +\define@key{FV}{codes}[]{\def\FancyVerbCodes{#1\relax}} +\define@key{FV}{codes*}{% + \expandafter\def\expandafter\FancyVerbCodes\expandafter{\FancyVerbCodes#1\relax}} +\fvset{codes} +% +\define@key{FV}{vspace}[\topsep]{\def\FancyVerbVspace{#1}} +\fvset{vspace} +% +\define@key{FV}{commandchars}[\\\{\}]% + {\def\@tempa{#1}% + \ifx\@tempa\FV@None + \let\FV@CommandChars\relax + \else + \FV@DefineCommandChars#1\relax\relax\relax + \fi} +\def\FV@DefineCommandChars#1#2#3{% + \def\FV@CommandChars{% + \catcode`#1=0\relax\catcode`#2=1\relax\catcode`#3=2\relax}} +\FV@AddToHook\FV@CatCodesHook\FV@CommandChars +\define@key{FV}{commentchar}[\%]{% + \def\@tempa{#1}% + \ifx\@tempa\FV@None + \let\FV@CommentChar\relax + \else + \def\FV@CommentChar{\catcode`#1=14}% + \fi} +\FV@AddToHook\FV@CatCodesHook\FV@CommentChar +\fvset{commandchars=none,commentchar=none} +\define@key{FV}{firstline}{% + \afterassignment\FV@ParseStart\@tempcnta=0#1\relax\@nil{#1}} +\def\FV@ParseStart#1\relax\@nil#2{% + \ifx\@nil#1\@nil + \edef\FancyVerbStartNum{\the\@tempcnta}% + \let\FancyVerbStartString\relax + \else + \edef\FancyVerbStartString{#2}% + \fi} +\def\KV@FV@firstline@default{% + \let\FancyVerbStartNum\z@ + \let\FancyVerbStartString\relax} +\define@key{FV}{lastline}{% + \afterassignment\FV@ParseStop\@tempcnta=0#1\relax\@nil{#1}} +\def\FV@ParseStop#1\relax\@nil#2{% + \ifx\@nil#1\@nil + \edef\FancyVerbStopNum{\the\@tempcnta}% + \let\FancyVerbStopString\relax + \else + \edef\FancyVerbStopString{#2}% + \fi} +\def\KV@FV@lastline@default{% + \let\FancyVerbStopNum\z@ + \let\FancyVerbStopString\relax} +\fvset{firstline,lastline} +\newcount\FV@CodeLineNo +\def\FV@PreProcessLine{% + \global\advance\FV@CodeLineNo\@ne + \FV@FindStartStop} +\def\FV@@PreProcessLine{% + \FV@StepLineNo + \FV@Gobble + \expandafter\FV@ProcessLine\expandafter{\FV@Line}} +\def\FV@FindStartStop{\FV@DefineFindStart\FV@FindStartStop} +%% \def\FV@DefinePreProcessLine{% +%% \setcounter{FancyVerbLine}{0}% +%% \FV@DefineFindStart} +\def\FV@DefineFindStart{% + \ifx\FancyVerbStartString\relax + \ifnum\FancyVerbStartNum<\tw@ + \FV@DefineFindStop + \else + \let\FV@FindStartStop\FV@FindStartNum + \fi + \else + \let\FV@FindStartStop\FV@FindStartString + \fi} +\def\FV@FindStartNum{% + \ifnum\FancyVerbStartNum>\FV@CodeLineNo\else + \FV@DefineFindStop + \expandafter\FV@@PreProcessLine + \fi} +%% SR modification begin - 1996 +\def\FV@FindStartString{% + \expandafter\FV@@FindStartString +{\meaning\FV@Line}% +{\meaning\FancyVerbStartString}% +} +\def\FV@@FindStartString#1#2{% +\edef\@fooA{#1}\edef\@fooB{#2}% + \ifx\@fooA\@fooB\FV@DefineFindStop\fi +} +%% SR modification end +\def\FV@DefineFindStop{% + \ifx\FancyVerbStopString\relax + \ifnum\FancyVerbStopNum<\@ne + \let\FV@FindStartStop\FV@@PreProcessLine + \else + \let\FV@FindStartStop\FV@FindStopNum + \fi + \else + \let\FV@FindStartStop\FV@FindStopString + \fi} +\def\FV@FindStopNum{% + \ifnum\FancyVerbStopNum>\FV@CodeLineNo + \else + \let\FV@FindStartStop\relax + \ifeof\FV@InFile\else + \immediate\closein\FV@InFile + \fi + \fi + \ifnum\FancyVerbStopNum<\FV@CodeLineNo + \else + \FV@@PreProcessLine + \fi} +%% SR modification begin - 1996 +\def\FV@FindStopString{% + \expandafter\FV@@FindStopString +{\meaning\FV@Line}% +{\meaning\FancyVerbStopString}% +} +\def\FV@@FindStopString#1#2{% +\edef\@fooA{#1}\edef\@fooB{#2}% + \ifx\@fooA\@fooB + \let\FV@FindStartStop\relax + \ifeof\FV@InFile\else + \immediate\closein\FV@InFile + \fi + \else + \expandafter\FV@@PreProcessLine + \fi} +%% SR modification end +\def\FV@@Gobble{% + \expandafter\expandafter\expandafter\FV@@@Gobble + \expandafter\FV@@@@Gobble\FV@Line + \@nil\@nil\@nil\@nil\@nil\@nil\@nil\@nil\@nil\@nil\@@nil} +\def\FV@@@Gobble#1\@nil#2\@@nil{\def\FV@Line{#1}} +\define@key{FV}{gobble}{% + \@tempcnta=#1\relax + \ifnum\@tempcnta<\@ne + \let\FV@Gobble\relax + \else + \ifnum\@tempcnta>9 + \FV@Error{gobble parameter must be less than 10}\FV@eha + \else + \renewcommand{\FV@@@@Gobble}[\@tempcnta]{}% + \let\FV@Gobble\FV@@Gobble + \fi + \fi} +\def\FV@@@@Gobble{} +\def\KV@FV@gobble@default{\let\FV@Gobble\relax} +\fvset{gobble} +\def\FV@Scan{% + \FV@CatCodes + \VerbatimEnvironment + \FV@DefineCheckEnd + \FV@BeginScanning} +\def\VerbatimEnvironment{% + \ifx\FV@EnvironName\relax\xdef\FV@EnvironName{\@currenvir}\fi} +\let\FV@EnvironName\relax +\begingroup +\catcode`\!=0 +\catcode`\[=1 +\catcode`\]=2 +!gdef!FV@CheckEnd@i#1[!FV@@CheckEnd#1\end{}!@nil] +!gdef!FV@@CheckEnd@i#1\end#2#3!@nil[!def!@tempa[#2]!def!@tempb[#3]] +!gdef!FV@@@CheckEnd@i[\end{}] +\catcode`!\=12 + +!gdef!FV@CheckEnd@ii#1[!FV@@CheckEnd#1\end{}!@nil] +!gdef!FV@@CheckEnd@ii#1\end#2#3!@nil[!def!@tempa[#2]!def!@tempb[#3]] +!gdef!FV@@@CheckEnd@ii[\end{}] +!catcode`!{=12 +!catcode`!}=12 + +!gdef!FV@CheckEnd@iii#1[!FV@@CheckEnd#1\end{}!@nil] +!gdef!FV@@CheckEnd@iii#1\end{#2}#3!@nil[!def!@tempa[#2]!def!@tempb[#3]] +!gdef!FV@@@CheckEnd@iii[\end{}] +!catcode`!\=0 + +!gdef!FV@CheckEnd@iv#1[!FV@@CheckEnd#1\end{}!@nil] +!gdef!FV@@CheckEnd@iv#1\end{#2}#3!@nil[!def!@tempa[#2]!def!@tempb[#3]] +!gdef!FV@@@CheckEnd@iv[\end{}] +\endgroup +\def\FV@BadCodes#1{% + \FV@Error + {\string\catcode\space of \expandafter\@gobble\string#1 is wrong: + \the\catcode`#1}% + {Only the following catcode values are allowed: + ^^J\@spaces \expandafter\@gobble\string\\ \space\space --> 0 or 12. + ^^J\@spaces \string{ \string} --> 1 and 2, resp., or both 12. + ^^JTo get this error, either you are a hacker or you got bad advice.}% + \def\FV@CheckEnd##1{\iftrue}} +\def\FV@DefineCheckEnd{% + \ifnum\catcode`\\=\z@ + \ifnum\catcode`\{=\@ne + \let\FV@CheckEnd\FV@CheckEnd@i + \let\FV@@CheckEnd\FV@@CheckEnd@i + \let\FV@@@CheckEnd\FV@@@CheckEnd@i + \else + \ifnum\catcode`\{=12 + \let\FV@CheckEnd\FV@CheckEnd@iv + \let\FV@@CheckEnd\FV@@CheckEnd@iv + \let\FV@@@CheckEnd\FV@@@CheckEnd@iv + \else + \FV@BadCodes\{% + \fi + \fi + \else + \ifnum\catcode`\\=12 + \ifnum\catcode`\{=\@ne + \let\FV@CheckEnd\FV@CheckEnd@ii + \let\FV@@CheckEnd\FV@@CheckEnd@ii + \let\FV@@@CheckEnd\FV@@@CheckEnd@ii + \else + \ifnum\catcode`\{=12 + \let\FV@CheckEnd\FV@CheckEnd@iii + \let\FV@@CheckEnd\FV@@CheckEnd@iii + \let\FV@@@CheckEnd\FV@@@CheckEnd@iii + \else + \FV@BadCodes\{% + \fi + \fi + \else + \FV@BadCodes\\% + \fi + \fi} +\begingroup +\catcode`\^^M=\active + \gdef\FV@BeginScanning#1^^M{% + \def\@tempa{#1}\ifx\@tempa\@empty\else\FV@BadBeginError\fi% + \FV@GetLine}% +\endgroup +\def\FV@BadBeginError#1{% + \expandafter\@temptokena\expandafter{\@tempa}% + \FV@Error + {Extraneous input `\the\@temptokena' between + \string\begin{\FV@EnvironName}[] and line end}% + {This input will be discarded. Hit to continue.}} +%% DG/SR modification begin - May. 18, 1998 (added code to turn off ligatures) +%% \def\FV@GetLine{\expandafter\FV@CheckScan\FancyVerbGetLine} +\def\FV@GetLine{\@noligs\expandafter\FV@CheckScan\FancyVerbGetLine} +%% DG/SR modification end +\begingroup +\catcode`\^^M=\active% +\gdef\FancyVerbGetLine#1^^M{% + \@nil% + \FV@CheckEnd{#1}% + \ifx\@tempa\FV@EnvironName% % True if end is found + \ifx\@tempb\FV@@@CheckEnd\else\FV@BadEndError\fi% + \let\next\FV@EndScanning% + \else% + \def\FV@Line{#1}% + \def\next{\FV@PreProcessLine\FV@GetLine}% + \fi% + \next}% +\endgroup +\def\FV@BadEndError{% + \expandafter\@temptokena\expandafter{\@tempb}% + \FV@Error + {Extraneous input `\the\@temptokena' between + \string\end{\FV@EnvironName} and line end}% + {This input will be discarded. Type to continue.}} +\def\FV@EndScanning{% + \edef\next{\noexpand\end{\FV@EnvironName}}% + \global\let\FV@EnvironName\relax + \next} +\@ifundefined{@currenvline}{\let\@currenvline\@empty}{} +\def\FV@CheckScan#1{\@ifnextchar\@nil{\@gobble}{\FV@EOF}} +\def\FV@CheckScan#1{\ifx\@nil#1\@empty\else\expandafter\FV@EOF\fi} +\def\FV@EOF{% + \FV@Error{Couldn't find `\string\end{\FV@EnvironName}' to end + a verbatim environment\@currenvline.}% + {Probably you mistyped the environment name or included an extraneous + ^^Jspace, or are using an improperly defined verbatim environment. + ^^JHit return and I will try to terminate this job.}% + \FV@EndScanning + \end{document}} + % \subsection{Input} +\newread\FV@InFile +\def\FV@Input#1{% + \immediate\openin\FV@InFile #1\relax + \ifeof\FV@InFile + \FV@Error{No verbatim file #1}\FV@eha + \immediate\closein\FV@InFile + \else + \FV@CatCodes + \expandafter\FV@@Input + \fi} +\def\FV@@Input{% + \def\FV@Line{}% + \FV@ReadLine + \ifeof\FV@InFile + \ifx\FV@Line\@empty\else + \FV@PreProcessLine + \fi + \immediate\closein\FV@InFile + \else + \FV@PreProcessLine + \expandafter\FV@@Input + \fi} +\begingroup +\catcode`\^^M=\active +\gdef\FV@ReadLine{% + \ifeof\FV@InFile\else + \immediate\read\FV@InFile to\@tempa% + \expandafter\FV@@ReadLine\@tempa^^M\relax^^M\@nil% + \fi} +\gdef\FV@@ReadLine#1^^M#2^^M#3\@nil{% + \expandafter\def\expandafter\FV@Line\expandafter{% + \FV@Line#1}% + \ifx\relax#2\@empty\expandafter\FV@ReadLine\fi}% +\endgroup +\def\FV@FormattingPrep{% + \global\FV@CodeLineNo\z@ + \frenchspacing % Cancels special punctuation spacing. + \FV@SetupFont % See below. + \FV@DefineWhiteSpace % See below. + \FancyVerbDefineActive + \FancyVerbFormatCom} % A user-defined hook (formatcom parameter). +\expandafter\ifx\csname selectfont\endcsname\relax +\def\FV@SetupFont{% + \FV@BaseLineStretch + \ifx\@currsize\small\normalsize\else\small\fi\@currsize + \FV@FontSize + \FV@FontFamily} + +\else + +\def\FV@SetupFont{% + \FV@BaseLineStretch + \FV@FontSize + \FV@FontFamily + \FV@FontSeries + \FV@FontShape + \selectfont +%% DG/SR modification begin - May. 18, 1998 (added code to turn off ligatures) + \@noligs} +%% DG/SR modification end +\fi +\define@key{FV}{fontsize}{% + \def\@tempa{#1}% + \ifx\@tempa\FV@Auto + \let\FV@FontSize\relax + \else + \def\FV@FontSize{#1}% + \fi} +\def\KV@FV@fontsize@default{\let\FV@FontSize\relax} +\define@key{FV}{baselinestretch}[auto]{% + \def\@tempa{#1}% + \ifx\@tempa\FV@Auto + \let\FV@BaseLineStretch\relax + \else + \def\FV@BaseLineStretch{\def\baselinestretch{#1}}% + \fi} +\def\KV@FV@baselinestretch@default{\let\FV@BaseLineStretch\relax} +\define@key{FV}{fontfamily}{% + \@ifundefined{FV@fontfamily@#1}% + {\def\FV@FontScanPrep{}\def\FV@FontFamily{\fontfamily{#1}}} + {\csname FV@fontfamily@#1\endcsname}} +\define@key{FV}{fontseries}{% + \def\@tempa{#1}% + \ifx\@tempa\FV@Auto + \let\FV@FontSeries\relax + \else + \def\FV@FontSeries{\fontseries{#1}}% + \fi} +\define@key{FV}{fontshape}{% + \def\@tempa{#1}% + \ifx\@tempa\FV@Auto + \let\FV@FontShape\relax + \else + \def\FV@FontShape{\fontshape{#1}}% + \fi} +\def\FV@MakeActive#1{% + \catcode`#1=\active + \def\next##1{\expandafter\def\expandafter\FV@MakeUnActive\expandafter{% + \FV@MakeUnActive\def##1{\string##1}}}% + \begingroup\lccode`~=`#1\relax\expandafter\next\expandafter~\endgroup} +\def\FV@MakeUnActive{} +\begingroup +\catcode`\`=\active +\gdef\FV@fontfamily@tt{\def\FV@FontScanPrep{\FV@MakeActive\`}\def\FV@FontFamily{\ttfamily\edef`{{\string`}}}} +\gdef\FV@fontfamily@cmtt{\def\FV@FontScanPrep{\FV@MakeActive\`}\def\FV@FontFamily{\edef`{{\string`}}\fontfamily{cmtt}}} +\endgroup +\@namedef{FV@fontfamily@cmtt-spanish}{\def\FV@FontScanPrep{}\def\FV@FontFamily{\fontfamily{cmtt}}} +\@namedef{FV@fontfamily@courier}{\def\FV@FontScanPrep{}\def\FV@FontFamily{\fontfamily{pcr}}} +\@namedef{FV@fontfamily@helvetica}{\def\FV@FontScanPrep{}\let\FV@FontFamily\sffamily} +% \def\FV@FontFamily{\fontfamily{phv}}} +\def\myFont{} +\@namedef{FV@fontfamily@myFont}{\def\FV@FontScanPrep{}\def\FV@FontFamily{\myFont}} +\fvset{fontfamily=tt,fontsize=auto,fontshape=auto,fontseries=auto,baselinestretch=auto} +\begingroup +\catcode`\ =\active +\catcode`\^^I=\active +\gdef\FV@DefineWhiteSpace{\def {\FV@Space}\def^^I{\FV@Tab}}% +\endgroup +\define@key{FV}{defineactive}[]{\def\FancyVerbDefineActive{#1\relax}} +\define@key{FV}{defineactive*}{% + \expandafter\def\expandafter\FancyVerbDefineActive\expandafter{% + \FancyVerbDefineActive#1\relax}} +\fvset{defineactive} +\define@booleankey{FV}{showspaces}% + {\def\FV@Space{{\FancyVerbSpace}}}% + {\def\FV@Space{\ }} +{\catcode`\ =12 \gdef\FancyVerbSpace{\tt }} +\fvset{showspaces=false} +\def\FV@Tab{\hbox to\FancyVerbTabSize\fontdimen2\font{\hss\FV@TabChar}} +\define@key{FV}{tabsize}{% + \@tempcnta=#1\relax + \ifnum\@tempcnta>100 + \FV@Error{Tab size too large: `\the\@tempcnta'. (Max size = 100)}\FV@eha + \else + \edef\FancyVerbTabSize{\the\@tempcnta}% + \fi} +\define@booleankey{FV}{showtabs}% + {\def\FV@TabChar{\FancyVerbTab}}% + {\let\FV@TabChar\relax} +\fvset{tabsize=8,showtabs=false} +\def\FancyVerbTab{% + \valign{% + \vfil##\vfil\cr + \hbox{$\scriptscriptstyle-$}\cr + \hbox to 0pt{\hss$\scriptscriptstyle\rangle\mskip -.8mu$}\cr + \hbox{$\scriptstyle\mskip -3mu\mid\mskip -1.4mu$}\cr}} +\newbox\FV@TabBox +\def\FV@@ObeyTabsInit{% + \@tempdimb=\FancyVerbTabSize\fontdimen\tw@\font + \edef\FV@ObeyTabSize{\number\@tempdimb}% + \advance\@tempdimb\fontdimen\tw@\font + \advance\@tempdimb-\FancyVerbTabSize sp % Allow for rounding errors. + \edef\FV@@ObeyTabSize{\number\@tempdimb}% + \let\FV@ObeyTabs\FV@@ObeyTabs + \let\FV@Tab\FV@TrueTab} +\def\FV@@ObeyTabs#1{\setbox\FV@TabBox=\hbox{#1}\box\FV@TabBox} +\let\FV@ObeyTabs\relax +\def\FV@TrueTab{% + \egroup + \@tempdima=\FV@ObeyTabSize sp\relax + \@tempcnta=\wd\FV@TabBox + \advance\@tempcnta\FV@@ObeyTabSize\relax + \divide\@tempcnta\@tempdima + \multiply\@tempdima\@tempcnta + \advance\@tempdima-\wd\FV@TabBox + \setbox\FV@TabBox=\hbox\bgroup + \unhbox\FV@TabBox\kern\@tempdima\hbox to\z@{\hss\FV@TabChar}} +\define@booleankey{FV}{obeytabs}% + {\let\FV@ObeyTabsInit\FV@@ObeyTabsInit}% + {\let\FV@ObeyTabsInit\relax} +\fvset{obeytabs=false} +\define@key{FV}{formatcom}[]{\def\FancyVerbFormatCom{#1\relax}} +\define@key{FV}{formatcom*}{% + \expandafter\def\expandafter\FancyVerbFormatCom\expandafter{% + \FancyVerbFormatCom#1\relax}} +\fvset{formatcom} +\def\FancyVerbFormatLine#1{\FV@ObeyTabs{#1}} +\define@key{FV}{xleftmargin}{\def\FV@XLeftMargin{#1}} +\let\FV@XLeftMargin\z@ +\define@key{FV}{xrightmargin}{\def\FV@XRightMargin{#1}} +\let\FV@XRightMargin\z@ +\define@booleankey{FV}{resetmargins}% + {\let\if@FV@ResetMargins\iftrue} + {\let\if@FV@ResetMargins\iffalse} +\fvset{resetmargins=false} +\define@key{FV}{listparameters}{\def\FV@ListParameterHook{#1}} +\def\FV@ListParameterHook{} +\define@key{FV}{hfuzz}{% + \@tempdima=#1\relax + \edef\FancyVerbHFuzz{\number\@tempdima sp}} +\fvset{hfuzz=2pt} +\define@booleankey{FV}{samepage}% + {\def\FV@InterLinePenalty{\interlinepenalty\@M}}% + {\let\FV@InterLinePenalty\relax} +\fvset{samepage=false} +\def\FV@List#1{% + \begingroup + \FV@UseKeyValues + \FV@LeaveVMode + \if@inlabel\else\setbox\@labels=\box\voidb@x\fi + \FV@ListNesting{#1}% + \FV@ListParameterHook + \FV@ListVSpace + \FV@SetLineWidth + \FV@InterLinePenalty + \let\FV@ProcessLine\FV@ListProcessLine@i + \FV@CatCodes + \FV@FormattingPrep + \FV@ObeyTabsInit + \FV@BeginListFrame} +\def\FV@LeaveVMode{% + \if@noskipsec + \leavevmode + \else + \if@FV@ResetMargins\if@inlabel\leavevmode\fi\fi + \fi + \ifvmode\@noparlisttrue\else\@noparlistfalse\unskip\par\fi} +\def\FV@ListNesting#1{% + \if@FV@ResetMargins + \@listdepth=\z@ + \else + \ifnum\@listdepth>5\relax + \@toodeep + \else + \advance\@listdepth\@ne + \fi + \fi + \rightmargin\z@ + \csname @list\romannumeral\the\@listdepth\endcsname + \ifnum#1=\z@ + \rightmargin\z@ + \leftmargin\z@ + \fi} +\def\FV@ListVSpace{% +% \@topsepadd\topsep + \@topsepadd=\FancyVerbVspace + \if@noparlist\advance\@topsepadd\partopsep\fi + \if@inlabel + \vskip\parskip + \else + \if@nobreak + \vskip\parskip + \clubpenalty\@M + \else + \addpenalty\@beginparpenalty + \@topsep\@topsepadd + \advance\@topsep\parskip + \addvspace\@topsep + \fi + \fi + \global\@nobreakfalse + \global\@inlabelfalse + \global\@minipagefalse + \global\@newlistfalse} +\def\FV@SetLineWidth{% + \if@FV@ResetMargins\else + \advance\leftmargin\@totalleftmargin + \fi + \advance\leftmargin\FV@XLeftMargin\relax + \advance\rightmargin\FV@XRightMargin\relax + \linewidth\hsize + \advance\linewidth-\leftmargin + \advance\linewidth-\rightmargin + \hfuzz\FancyVerbHFuzz\relax} +\def\FV@ListProcessLine#1{% + \hbox to \hsize{% + \kern\leftmargin + \hbox to \linewidth{% + \FV@LeftListNumber + \FV@LeftListFrame + \FancyVerbFormatLine{#1}\hss +%% DG/SR modification begin - Jan. 28, 1998 (for numbers=right add-on) +%% \FV@RightListFrame}% + \FV@RightListFrame + \FV@RightListNumber}% +%% DG/SR modification end + \hss}} +\def\FV@ListProcessLine@i#1{% + \hbox{% + \ifvoid\@labels\else + \hbox to \z@{\kern\@totalleftmargin\box\@labels\hss}% + \fi + \FV@ListProcessLine{#1}}% + \let\FV@ProcessLine\FV@ListProcessLine@ii} +\def\FV@ListProcessLine@ii#1{% + \setbox\@tempboxa=\FV@ListProcessLine{#1}% + \let\FV@ProcessLine\FV@ListProcessLine@iii} +\def\FV@ListProcessLine@iii#1{% + {\advance\interlinepenalty\clubpenalty\penalty\interlinepenalty}% + \box\@tempboxa + \setbox\@tempboxa=\FV@ListProcessLine{#1}% + \let\FV@ProcessLine\FV@ListProcessLine@iv} +\def\FV@ListProcessLine@iv#1{% + \penalty\interlinepenalty + \box\@tempboxa + \setbox\@tempboxa=\FV@ListProcessLine{#1}}% +\def\FV@EndList{% + \FV@ListProcessLastLine + \FV@EndListFrame + \@endparenv + \endgroup + \@endpetrue} +\def\FV@ListProcessLastLine{% + \ifx\FV@ProcessLine\FV@ListProcessLine@iv + {\advance\interlinepenalty\widowpenalty\penalty\interlinepenalty}% + \box\@tempboxa + \else + \ifx\FV@ProcessLine\FV@ListProcessLine@iii + {\advance\interlinepenalty\widowpenalty + \advance\interlinepenalty\clubpenalty + \penalty\interlinepenalty}% + \box\@tempboxa + \else + \ifx\FV@ProcessLine\FV@ListProcessLine@i + \FV@Error{Empty verbatim environment}{}% + \FV@ProcessLine{}% + \fi + \fi + \fi} +\def\FV@VerbatimBegin{\FV@List\z@} +\def\FV@VerbatimEnd{\FV@EndList} +\def\FVB@Verbatim{\FV@VerbatimBegin\FV@Scan} +\def\FVE@Verbatim{\FV@VerbatimEnd} +\DefineVerbatimEnvironment{Verbatim}{Verbatim}{} +\def\FV@UseVerbatim#1{% + \FV@VerbatimBegin#1\FV@VerbatimEnd + \@doendpe\global\@ignorefalse\ignorespaces} +\def\VerbatimInput{\FV@Command{}{VerbatimInput}} +\def\FVC@VerbatimInput#1{\FV@UseVerbatim{\FV@Input{#1}}} +\def\FV@LVerbatimBegin{\FV@List\@ne} +\def\FV@LVerbatimEnd{\FV@EndList} +\def\FVB@LVerbatim{\FV@LVerbatimBegin\FV@Scan} +\def\FVE@LVerbatim{\FV@LVerbatimEnd} +\DefineVerbatimEnvironment{LVerbatim}{LVerbatim}{} +\def\FV@LUseVerbatim#1{% + \FV@LVerbatimBegin#1\FV@LVerbatimEnd + \@doendpe\global\@ignorefalse\ignorespaces} +\def\LVerbatimInput{\FV@Command{}{LVerbatimInput}} +\def\FVC@LVerbatimInput#1{\FV@LUseVerbatim{\FV@Input{#1}}} +\def\FV@Frame@none{% + \let\FV@BeginListFrame\relax + \let\FV@LeftListFrame\relax + \let\FV@RightListFrame\relax + \let\FV@EndListFrame\relax} +\def\FV@Frame@single{% + \let\FV@BeginListFrame\FV@BeginListFrame@Single + \let\FV@LeftListFrame\FV@LeftListFrame@Single + \let\FV@RightListFrame\FV@RightListFrame@Single + \let\FV@EndListFrame\FV@EndListFrame@Single} +\def\FV@Frame@lines{% + \let\FV@BeginListFrame\FV@BeginListFrame@Lines + \let\FV@LeftListFrame\relax + \let\FV@RightListFrame\relax + \let\FV@EndListFrame\FV@EndListFrame@Lines} +\def\FV@Frame@topline{% + \let\FV@BeginListFrame\FV@BeginListFrame@Lines + \let\FV@LeftListFrame\relax + \let\FV@RightListFrame\relax + \let\FV@EndListFrame\relax} +\def\FV@Frame@bottomline{% + \let\FV@BeginListFrame\relax + \let\FV@LeftListFrame\relax + \let\FV@RightListFrame\relax + \let\FV@EndListFrame\FV@EndListFrame@Lines} +%% To define a frame with only a left line +\def\FV@Frame@leftline{% + % To define the \FV@FrameFillLine macro (from \FV@BeginListFrame) + \ifx\FancyVerbFillColor\relax + \let\FV@FrameFillLine\relax + \else + \@tempdima\FV@FrameRule\relax + \multiply\@tempdima-\tw@ + \edef\FV@FrameFillLine{% + {\noexpand\FancyVerbFillColor{\vrule\@width\number\@tempdima sp}% + \kern-\number\@tempdima sp}}% + \fi + \let\FV@BeginListFrame\relax + \let\FV@LeftListFrame\FV@LeftListFrame@Single + \let\FV@RightListFrame\relax + \let\FV@EndListFrame\relax} +\def\FV@BeginListFrame@Single{% + \lineskip\z@ + \baselineskip\z@ + \ifx\FancyVerbFillColor\relax + \let\FV@FrameFillLine\relax + \else + \@tempdima\FV@FrameRule\relax + \multiply\@tempdima-\tw@ + \edef\FV@FrameFillLine{% + {\noexpand\FancyVerbFillColor{\vrule\@width\number\@tempdima sp}% + \kern-\number\@tempdima sp}}% + \fi +%% DG/SR modification begin - May. 19, 1998 +%% \FV@SingleFrameLine + \FV@SingleFrameLine{\z@}% +%% DG/SR modification end + \penalty\@M + \FV@SingleFrameSep + \penalty\@M} +%% DG/SR modification begin - May. 19, 1998 +\define@key{FV}{label}{% + \def\@tempa{#1}% + \ifx\@tempa\FV@None + \let\FV@LabelBegin\relax + \let\FV@LabelEnd\relax + \else + \FV@Label@i#1\@nil% + \fi} +\def\FV@Label@i{\@ifnextchar[{\FV@Label@ii}{\FV@Label@ii[]}} +\def\FV@Label@ii[#1]#2\@nil{% + \def\@tempa{#1}% + \ifx\@tempa\empty + \def\FV@LabelBegin{#2}% + \else + \def\FV@LabelBegin{#1}% + \def\FV@LabelPositionBottomLine{\@ne}% + \fi + \def\FV@LabelEnd{#2}} +\fvset{label=none} +\define@key{FV}{labelposition}[none]{% + \@ifundefined{FV@LabelPosition@#1}% + {\FV@Error{Label position `#1' not defined.}\FV@eha}% + {\@nameuse{FV@LabelPosition@#1}}} +\def\FV@LabelPosition@none{% + \let\FV@LabelPositionTopLine\relax% + \let\FV@LabelPositionBottomLine\relax} +\def\FV@LabelPosition@topline{% + \def\FV@LabelPositionTopLine{\@ne}% + \let\FV@LabelPositionBottomLine\relax} +\def\FV@LabelPosition@bottomline{% + \let\FV@LabelPositionTopLine\relax% + \def\FV@LabelPositionBottomLine{\@ne}} +\def\FV@LabelPosition@all{% + \def\FV@LabelPositionTopLine{\@ne}% + \def\FV@LabelPositionBottomLine{\@ne}} +\fvset{labelposition=topline} +%% DG/SR modification end +%% DG/SR modification begin - May. 19, 1998 +%% \def\FV@SingleFrameLine{% +\def\FV@SingleFrameLine#1{% +%% DG/SR modification end + \hbox to\z@{% + \kern\leftmargin +%% DG/SR modification begin - Jun. 22, 1998 + \ifnum#1=\z@ + \let\FV@Label\FV@LabelBegin + \else + \let\FV@Label\FV@LabelEnd + \fi + \ifx\FV@Label\relax +%% DG/SR modification end + \FancyVerbRuleColor{\vrule \@width\linewidth \@height\FV@FrameRule}% +%% DG/SR modification begin - Jun. 22, 1998 + \else + \ifnum#1=\z@ + \setbox\z@\hbox{\strut\enspace\FV@LabelBegin\enspace\strut}% + \else + \setbox\z@\hbox{\strut\enspace\FV@LabelEnd\enspace\strut}% + \fi + \@tempdimb=\dp\z@ + \advance\@tempdimb -.5\ht\z@ + \@tempdimc=\linewidth + \advance\@tempdimc -\wd\z@ + \divide\@tempdimc\tw@ + \ifnum#1=\z@ % Top line + \ifx\FV@LabelPositionTopLine\relax + \FancyVerbRuleColor{\vrule \@width\linewidth \@height\FV@FrameRule}% + \else + \FV@FrameLineWithLabel + \fi + \else % Bottom line + \ifx\FV@LabelPositionBottomLine\relax + \FancyVerbRuleColor{\vrule \@width\linewidth \@height\FV@FrameRule}% + \else + \FV@FrameLineWithLabel + \fi + \fi + \fi +%% DG/SR modification end + \hss}} +%% DG/SR modification begin - May. 19, 1998 +\def\FV@FrameLineWithLabel{% + \ht\z@\@tempdimb\dp\z@\@tempdimb% + \FancyVerbRuleColor{% + \vrule \@width\@tempdimc \@height\FV@FrameRule + \raise\@tempdimb\box\z@ + \vrule \@width\@tempdimc \@height\FV@FrameRule}} +%% DG/SR modification end +\def\FV@BeginListFrame@Lines{% + \begingroup + \lineskip\z@skip +%% DG modification begin - June 18, 1997 (effect of \baselineskip too earlier) +%% \baselineskip\z@skip +%% \FV@SingleFrameLine +%% DG/SR modification begin - May. 19, 1998 +%% \FV@SingleFrameLine + \FV@SingleFrameLine{\z@}% +%% DG/SR modification end + \kern-0.5\baselineskip\relax + \baselineskip\z@skip +%% DG modification end + \kern\FV@FrameSep\relax + \endgroup}% +\def\FV@EndListFrame@Lines{% + \begingroup + \baselineskip\z@skip + \kern\FV@FrameSep\relax + \FV@SingleFrameLine{\@ne}% + \endgroup} +\def\FV@SingleFrameSep{% + \hbox to \z@{% + \kern\leftmargin + \hbox to\linewidth{% + \FancyVerbRuleColor{% + \ifx\FancyVerbFillColor\relax + \vrule\@width 0pt\@height\FV@FrameSep\relax + \fi + \vrule\@width\FV@FrameRule\relax + \ifx\FancyVerbFillColor\relax + \hfil + \else + {\FancyVerbFillColor\leaders\hrule\@height\FV@FrameSep\hfil}% + \fi + \ifx\FancyVerbFillColor\relax + \vrule\@width 0pt\@height\FV@FrameSep\relax + \fi + \vrule\@width\FV@FrameRule\relax}}% + \hss}} +\def\FV@LeftListFrame@Single{% + \strut + {\FancyVerbRuleColor{\vrule \@width\FV@FrameRule}}% + \FV@FrameFillLine + \ifx\FancyVerbFillColor\relax + \kern\FV@FrameSep + \else + {\noexpand\leavevmode\FancyVerbFillColor{\vrule\@width\FV@FrameSep}}% + \fi} +\def\FV@RightListFrame@Single{% + \ifx\FancyVerbFillColor\relax + \kern\FV@FrameSep + \else + {\noexpand\leavevmode\FancyVerbFillColor{\vrule\@width\FV@FrameSep}}% + \fi + {\noexpand\leavevmode\FancyVerbRuleColor{\vrule\@width\FV@FrameRule}}} +\def\FV@EndListFrame@Single{% + \penalty\@M + \FV@SingleFrameSep + \penalty\@M + \FV@SingleFrameLine{\@ne}} +\define@key{FV}{framerule}{% + \@tempdima=#1\relax + \edef\FV@FrameRule{\number\@tempdima sp\relax}} +\def\KV@FV@framerule@default{\let\FV@FrameRule\fboxrule} +\define@key{FV}{framesep}{% + \@tempdima=#1\relax + \edef\FV@FrameSep{\number\@tempdima sp\relax}} +\def\KV@FV@framesep@default{\let\FV@FrameSep\fboxsep} +\fvset{framerule,framesep} +\define@key{FV}{rulecolor}{% + \def\@tempa{#1}% + \ifx\@tempa\FV@None + \let\FancyVerbRuleColor\relax + \else + \let\FancyVerbRuleColor\@tempa + \fi} +\define@key{FV}{fillcolor}{% + \def\@tempa{#1}% + \ifx\@tempa\FV@None + \let\FancyVerbFillColor\relax + \else + \let\FancyVerbFillColor\@tempa + \fi} +\fvset{rulecolor=none,fillcolor=none} +\def\FV@Frame@double{% + \let\FV@FrameBegin\FV@FrameBegin@double + \let\FV@FrameLine\FV@FrameLine@double + \let\FV@FrameEnd\FV@FrameEnd@double} +\define@key{FV}{frame}[none]{% + \@ifundefined{FV@Frame@#1}% + {\FV@Error{Frame style `#1' not defined.}\FV@eha}% + {\@nameuse{FV@Frame@#1}}} +\fvset{frame=none} +\newcounter{FancyVerbLine} +\define@key{FV}{firstnumber}[auto]{% + \def\@tempa{#1}\def\@tempb{auto}% + \ifx\@tempa\@tempb + \def\FV@SetLineNo{% + \c@FancyVerbLine\FV@CodeLineNo% + \advance\c@FancyVerbLine\m@ne}% + \else% + \def\@tempb{last}% + \ifx\@tempa\@tempb + \let\FV@SetLineNo\relax% + \else% + \def\FV@SetLineNo{% + \c@FancyVerbLine#1% + \advance\c@FancyVerbLine\m@ne}% + \fi% + \fi} +\define@booleankey{FV}{numberblanklines}% + {\let\if@FV@NumberBlankLines\iftrue} + {\let\if@FV@NumberBlankLines\iffalse} +\fvset{numberblanklines=true} +\def\FV@refstepcounter#1{% + \stepcounter{#1}% + \protected@edef\@currentlabel{\csname p@#1\endcsname\arabic{FancyVerbLine}}% +} +\def\FV@StepLineNo{% + \FV@SetLineNo% + \def\FV@StepLineNo{% + \if@FV@NumberBlankLines% + \FV@refstepcounter{FancyVerbLine}% + \else% + \ifx\FV@Line\empty% + \else% + \FV@refstepcounter{FancyVerbLine}% + \fi% + \fi}% + \FV@StepLineNo} +\def\theFancyVerbLine{\rmfamily\tiny\arabic{FancyVerbLine}} +\define@key{FV}{numbers}[none]{% + \@ifundefined{FV@Numbers@#1}% + {\FV@Error{Numbers style `#1' not defined.}\FV@eha}% + {\@nameuse{FV@Numbers@#1}}} +\def\FV@Numbers@none{% +\let\FV@LeftListNumber\relax +\let\FV@RightListNumber\relax} +\newcount\FV@StepNumber +\define@key{FV}{stepnumber}{\FV@StepNumber#1} +\def\KV@FV@stepnumber@default{\FV@StepNumber\@ne} +\fvset{stepnumber} +\def\FV@Numbers@left{% + \let\FV@RightListNumber\relax + \def\FV@LeftListNumber{% + \@tempcnta=\FV@CodeLineNo + \@tempcntb=\FV@CodeLineNo + \divide\@tempcntb\FV@StepNumber + \multiply\@tempcntb\FV@StepNumber + \ifnum\@tempcnta=\@tempcntb + \if@FV@NumberBlankLines + \hbox to\z@{\hss\theFancyVerbLine\kern\FV@NumberSep}% + \else + \ifx\FV@Line\empty + \else + \hbox to\z@{\hss\theFancyVerbLine\kern\FV@NumberSep}% + \fi + \fi + \fi}} +\def\FV@Numbers@right{% + \let\FV@LeftListNumber\relax + \def\FV@RightListNumber{% + \@tempcnta=\FV@CodeLineNo + \@tempcntb=\FV@CodeLineNo + \divide\@tempcntb\FV@StepNumber + \multiply\@tempcntb\FV@StepNumber + \ifnum\@tempcnta=\@tempcntb +%% DG/SR modification begin - Apr. 28, 1998 +%% \hbox to \z@{\kern\FV@NumberSep\theFancyVerbLine\hss}% + \if@FV@NumberBlankLines + \hbox to\z@{\kern\FV@NumberSep\theFancyVerbLine\hss}% + \else + \ifx\FV@Line\empty + \else + \hbox to\z@{\kern\FV@NumberSep\theFancyVerbLine\hss}% + \fi + \fi +%% DG/SR modification end + \fi}} +%% DG modification end +\define@key{FV}{numbersep}{% + \@tempdima=#1\relax + \edef\FV@NumberSep{\number\@tempdima sp\relax}} +\fvset{numbers=none,numbersep=12pt,firstnumber=auto} +\def\FV@BVerbatimBegin{% + \begingroup + \FV@UseKeyValues + \FV@BeginVBox + \let\FV@ProcessLine\FV@BProcessLine + \FV@FormattingPrep + \FV@ObeyTabsInit}% +\def\FV@BVerbatimEnd{\FV@EndVBox\endgroup} +\def\FV@BeginVBox{% + \leavevmode + \hbox\ifx\FV@boxwidth\relax\else to\FV@boxwidth\fi\bgroup + \ifcase\FV@baseline\vbox\or\vtop\or$\vcenter\fi\bgroup} +\def\FV@EndVBox{\egroup\ifmmode$\fi\hfil\egroup} +\define@key{FV}{boxwidth}{% + \def\@tempa{#1}\def\@tempb{auto}% + \ifx\@tempa\@tempb + \let\FV@boxwidth\relax + \else + \@tempdima=#1\relax + \edef\FV@boxwidth{\number\@tempdima sp}% + \fi} +\def\KV@FV@boxwidth@default{\let\FV@boxwidth\relax} +\define@key{FV}{baseline}{% + \if t#1\@empty\let\FV@baseline\@ne\else + \if c#1\@empty\let\FV@baseline\tw@\else\let\FV@baseline\z@\fi + \fi} +\fvset{baseline=b,boxwidth} +\def\FV@BProcessLine#1{\hbox{\FancyVerbFormatLine{#1}}} +\def\FVB@BVerbatim{\FV@BVerbatimBegin\FV@Scan} +\def\FVE@BVerbatim{\FV@BVerbatimEnd} +\DefineVerbatimEnvironment{BVerbatim}{BVerbatim}{} +\def\FV@BUseVerbatim#1{\FV@BVerbatimBegin#1\FV@BVerbatimEnd} +\def\BVerbatimInput{\FV@Command{}{BVerbatimInput}} +\def\FVC@BVerbatimInput#1{\FV@BUseVerbatim{\FV@Input{#1}}} +\def\SaveVerbatim{\FV@Environment{}{SaveVerbatim}} +\def\FVB@SaveVerbatim#1{% + \@bsphack + \begingroup + \FV@UseKeyValues +%% \FV@BeginVBox +%% \let\FV@ProcessLine\FV@BProcessLine +%% \FV@FormattingPrep +%% \FV@ObeyTabsInit% +%% + \def\SaveVerbatim@Name{#1}% + \gdef\FV@TheVerbatim{}% + \def\FV@ProcessLine##1{% + \expandafter\gdef\expandafter\FV@TheVerbatim\expandafter{% + \FV@TheVerbatim\FV@ProcessLine{##1}}}% + \gdef\FV@TheVerbatim{}% + \FV@Scan} +\def\FVE@SaveVerbatim{% + \expandafter\global\expandafter\let + \csname FV@SV@\SaveVerbatim@Name\endcsname\FV@TheVerbatim +%% \expandafter\gdef +%% \csname FV@SV@\SaveVerbatim@Name\endcsname{\FV@TheVerbatim} +%% \FV@EndVBox +%% \endgroup} + \endgroup\@esphack} +\DefineVerbatimEnvironment{SaveVerbatim}{SaveVerbatim}{} +\def\FV@CheckIfSaved#1#2{% + \@ifundefined{FV@SV@#1}% + {\FV@Error{No verbatim text has been saved under name `#1'}\FV@eha}% + {#2{\csname FV@SV@#1\endcsname}}} +\def\UseVerbatim{\FV@Command{}{UseVerbatim}} +\def\FVC@UseVerbatim#1{\FV@CheckIfSaved{#1}{\FV@UseVerbatim}} +\def\LUseVerbatim{\FV@Command{}{LUseVerbatim}} +\def\FVC@LUseVerbatim#1{\FV@CheckIfSaved{#1}{\FV@LUseVerbatim}} +\def\BUseVerbatim{\FV@Command{}{BUseVerbatim}} +\def\FVC@BUseVerbatim#1{\FV@CheckIfSaved{#1}{\FV@BUseVerbatim}} +\newwrite\FV@OutFile +\def\VerbatimOut{\FV@Environment{}{VerbatimOut}} +\def\FVB@VerbatimOut#1{% + \@bsphack + \begingroup + \FV@UseKeyValues + \FV@DefineWhiteSpace + \def\FV@Space{\space}% + \FV@DefineTabOut + \def\FV@ProcessLine{\immediate\write\FV@OutFile}% + \immediate\openout\FV@OutFile #1\relax + \let\FV@FontScanPrep\relax +%% DG/SR modification begin - May. 18, 1998 (to avoid problems with ligatures) + \let\@noligs\relax +%% DG/SR modification end + \FV@Scan} +\def\FVE@VerbatimOut{\immediate\closeout\FV@OutFile\endgroup\@esphack} +\DefineVerbatimEnvironment{VerbatimOut}{VerbatimOut}{} +\def\FV@DefineTabOut{% + \def\FV@Tab{}% + \@tempcnta=\FancyVerbTabSize\relax + \loop\ifnum\@tempcnta>\z@ + \edef\FV@Tab{\FV@Tab\space}% + \advance\@tempcnta\m@ne + \repeat} +\def\SaveVerb{\FV@Command{}{SaveVerb}} +\begingroup +\catcode`\^^M=\active% +\gdef\FVC@SaveVerb#1#2{% + \@namedef{FV@SV@#1}{}% + \begingroup% + \FV@UseKeyValues% + \FV@CatCodes% + \outer\def^^M{\FV@EOL}% + \global\let\@tempg\FancyVerbAfterSave% + \catcode`#2=12% + \def\@tempa{\def\FancyVerbGetVerb####1####2}% + \expandafter\@tempa\string#2{\endgroup\@namedef{FV@SV@#1}{##2}\@tempg}% + \FancyVerbGetVerb\FV@EOL}% +\endgroup +\def\FV@EOL{% + \endgroup + \FV@Error% + {Could not find the end delimiter of a short verb command}% + {You probably just forget the end delimiter of a \string\Verb\space or + \string\SaveVerb^^J% + command, or you broke the literal text across input lines.^^J% + Hit to procede.}} +\define@key{FV}{aftersave}{\def\FancyVerbAfterSave{#1}} +\fvset{aftersave=} +\def\FV@UseVerb#1{\mbox{\FV@UseKeyValues\FV@FormattingPrep#1}} +\DeclareRobustCommand\UseVerb{\FV@Command{}{UseVerb}} +\def\FVC@UseVerb#1{% + \@ifundefined{FV@SV@#1}% + {\FV@Error{Short verbatim text never saved to name `#1'}\FV@eha}% + {\FV@UseVerb{\@nameuse{FV@SV@#1}}}} +\def\Verb{\FV@Command{}{Verb}} +\begingroup +\catcode`\^^M=\active% +\gdef\FVC@Verb#1{% + \begingroup% + \FV@UseKeyValues% + \FV@FormattingPrep% + \FV@CatCodes% + \outer\def^^M{}% + \catcode`#1=12% + \def\@tempa{\def\FancyVerbGetVerb####1####2}% + \expandafter\@tempa\string#1{\mbox{##2}\endgroup}% + \FancyVerbGetVerb\FV@EOL}% +\endgroup +\def\DefineShortVerb{\FV@Command{}{DefineShortVerb}} +\def\FVC@DefineShortVerb#1{% + \@ifundefined{FV@CC@\string#1}% + {\FVC@@DefineShortVerb#1}% + {\FV@Error{`\expandafter\@gobble\string#1' is already a short + verb character.}\FV@eha}} +\def\FVC@@DefineShortVerb#1{% + \begingroup + \lccode`\~=`#1% + \lowercase{\gdef\@tempg{\edef~}\global\let\@temph~}% + \endgroup + \expandafter\let\csname FV@AC@\string#1\endcsname\@temph + \expandafter\edef\csname FV@CC@\string#1\endcsname{\the\catcode`#1}% + \expandafter\let\csname FV@KV@\string#1\endcsname\FV@KeyValues + \@tempg{% + \let\noexpand\FV@KeyValues\expandafter\noexpand + \csname FV@KV@\string#1\endcsname + \noexpand\FVC@Verb\expandafter\@gobble\string#1}% + \expandafter\def\expandafter\dospecials\expandafter{\dospecials\do#1}% + \expandafter\def\expandafter\@sanitize\expandafter{\@sanitize\@makeother#1}% + \catcode`#1=\active}% +\def\UndefineShortVerb#1{% + \@ifundefined{FV@CC@\string#1}% + {\FV@Error{`\expandafter\@gobble\string#1' is not a short + verb character}\FV@eha}% + {\FV@UndefineShortVerb#1}} +\def\FV@UndefineShortVerb#1{% + \catcode`#1=\csname FV@CC@\string#1\endcsname +%% DG/SR modification begin - Jun. 12, 1998 + \expandafter\let\csname FV@CC@\string#1\endcsname\relax +%% DG/SR modification end + \begingroup + \lccode`\~=`#1% + \lowercase{\gdef\@tempg{\let~}}% + \endgroup + \expandafter\@tempg\csname FV@AC@\string#1\endcsname + \def\@tempa##1\do#1##2\@nil##3\@nil##4\@@nil{##3\def\dospecials{##1##2}\fi}% + \expandafter\@tempa\dospecials\@nil\iftrue\@nil\do#1\@nil\iffalse\@nil\@@nil + \def\@tempa##1\@makeother#1##2\@nil##3\@nil##4\@@nil{% + ##3\def\@sanitize{##1##2}\fi}% + \expandafter\@tempa\@sanitize\@nil\iftrue\@nil\do#1\@nil\iffalse\@nil\@@nil} +\def\SaveMVerb{\FV@Command{}{SaveMVerb}} +\begingroup +\catcode`\^^M=\active% +\gdef\FVC@SaveMVerb#1#2{% + \@ifundefined{FV@SVM@#1}{}% + {\FV@Error{Moving verbatim name `#1' already used}% + {I will overwrite the old definition. Hit to continue.}}% + \global\@namedef{FV@SVM@#1}{}% + \begingroup% + \let\FV@SavedKeyValues\FV@KeyValues% + \FV@UseKeyValues% + \FV@CatCodes% + \outer\def^^M{}% + \global\let\@tempg\FancyVerbAfterSave% + \catcode`#2=12% + \def\@tempa{\def\FancyVerbGetVerb####1####2}% + \expandafter\@tempa\string#2{% + \if@filesw + \FV@DefineWhiteSpace% + \let\FV@Space\space% + \let\FV@Tab\space% + \FV@MakeUnActive% + \let\protect\string + \immediate\write\@auxout{% + \noexpand\SaveGVerb[\FV@SavedKeyValues]{#1}\string#2##2\string#2}% + \fi + \endgroup% + \@namedef{FV@SV@#1}{##2}% + \@tempg}% + \FancyVerbGetVerb\FV@EOL}% +\endgroup +\def\SaveGVerb{\FV@Command{}{SaveGVerb}} +\begingroup +\catcode`\^^M=\active% +\gdef\FVC@SaveGVerb#1#2{% + \global\@namedef{FV@SVG@#1}{}% + \begingroup% + \FV@UseKeyValues% + \FV@CatCodes% + \outer\def^^M{}% + \catcode`#2=12% + \def\@tempa{\def\FancyVerbGetVerb####1####2}% + \expandafter\@tempa\string#2{\endgroup\global\@namedef{FV@SVG@#1}{##2}}% + \FancyVerbGetVerb\FV@EOL}% +\endgroup +\def\UseMVerb{\protect\pUseMVerb} +\def\pUseMVerb{\FV@Command{}{pUseMVerb}} +\def\FVC@pUseMVerb#1{% + \expandafter\ifx \csname FV@SVM@#1\endcsname\relax + \expandafter\ifx \csname FV@SVG@#1\endcsname\relax + \@warning{Moving verbatim text not defined for name `#1'}\FV@eha + {\bf ??}% + \else + \FV@UseVerb{\@nameuse{FV@SVG@#1}}% + \fi + \else + \FV@UseVerb{\@nameuse{FV@SVM@#1}}% + \fi} +\expandafter\ifx\csname documentclass\endcsname\relax + \def\lrbox#1{% + \edef\@tempa{% + \endgroup + \setbox#1\hbox{% + \begingroup\aftergroup}% + \def\noexpand\@currenvir{\@currenvir}}% + %\def\noexpand\@currenvline{\on@line}}% + \@tempa + \@endpefalse + \bgroup + \ignorespaces} + \def\endlrbox{\unskip\egroup} +\fi +% +%% +\InputIfFileExists{fancyvrb.cfg}{}{} +%% +\endinput +%% +%% End of file `fancyvrb.sty'. diff --git a/macros/latex/contrib/fancyvrb/latex/hbaw.sty b/macros/latex/contrib/fancyvrb/latex/hbaw.sty new file mode 100644 index 0000000000..728f4fe345 --- /dev/null +++ b/macros/latex/contrib/fancyvrb/latex/hbaw.sty @@ -0,0 +1,161 @@ +%% +%% This is file `hbaw.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% fvrb-ex.dtx (with options: `hbaw') +%% +%% IMPORTANT NOTICE: +%% +%% For the copyright see the source file. +%% +%% Any modified versions of this file must be renamed +%% with new filenames distinct from hbaw.sty. +%% +%% For distribution of the original source see the terms +%% for copying and modification in the file fvrb-ex.dtx. +%% +%% This generated file may be distributed as long as the +%% original source files, as listed above, are part of the +%% same distribution. (The sources need not necessarily be +%% in the same archive or directory.) +%% +%% 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) +%% March 27, 1998 +%% +%% Package `hbaw' +%% +\NeedsTeXFormat{LaTeX2e} +\def\fileversion{1.4} +\def\filedate{1998/03/19} +\ProvidesPackage{hbaw}[\filedate] +\message{`hbaw' v\fileversion, \filedate\space (Denis Girou)} +\newcommand{\FvrbEx@ColoredBox}[3]{% +\fboxsep=1pt\fcolorbox{#2}{#2}{\textcolor{#3}{\textbf{#1}}}} +\def\Highlight@Attributes{% +\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} +\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} +\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} +\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} +\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} +\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} +\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}} +\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}} +\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}} +\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}} +} +\def\NoHighlight@Attributes{% +\catcode`\^^a7=0\relax% +\catcode`\^^b5=1\relax% +\catcode`\^^b6=2\relax% +\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}% +} +\Highlight@Attributes +\endinput +%% +%% End of file `hbaw.sty'. diff --git a/macros/latex/contrib/fancyvrb/latex/hcolor.sty b/macros/latex/contrib/fancyvrb/latex/hcolor.sty new file mode 100644 index 0000000000..64a29b5666 --- /dev/null +++ b/macros/latex/contrib/fancyvrb/latex/hcolor.sty @@ -0,0 +1,164 @@ +%% +%% This is file `hcolor.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% fvrb-ex.dtx (with options: `hcolor') +%% +%% IMPORTANT NOTICE: +%% +%% For the copyright see the source file. +%% +%% Any modified versions of this file must be renamed +%% with new filenames distinct from hcolor.sty. +%% +%% For distribution of the original source see the terms +%% for copying and modification in the file fvrb-ex.dtx. +%% +%% This generated file may be distributed as long as the +%% original source files, as listed above, are part of the +%% same distribution. (The sources need not necessarily be +%% in the same archive or directory.) +%% +%% 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) +%% March 27, 1998 +%% +%% Package `hcolor' +%% +\NeedsTeXFormat{LaTeX2e} +\def\fileversion{1.4} +\def\filedate{1998/03/19} +\ProvidesPackage{hcolor}[\filedate] +\message{`hcolor' v\fileversion, \filedate\space (Denis Girou)} +\newcommand\FvrbEx@ColoredUnderline[3]{% + $\setbox\z@\hbox{\begingroup#3\endgroup}% + \dp\z@\z@\m@th\color{#1}\underline{\textcolor{#2}{\box\z@}}$} +\renewcommand\FvrbEx@ColoredBox[3]{% + \fboxsep=1pt\fcolorbox{#2}{#2}{\textcolor{#3}{\textbf{#1}}}} +%\catcode`\^^a7=0 +%\catcode`\^^b5=1 +%\catcode`\^^b6=2 +\def\Highlight@Attributes{% +\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}} +\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}}} +\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}}} +\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}}} +\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}}} +\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}}}} +\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}} +\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}} +\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}} +\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}} +} +\def\NoHighlight@Attributes{% +\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}% +} +\Highlight@Attributes +\endinput +%% +%% End of file `hcolor.sty'. -- cgit v1.2.3