diff options
Diffstat (limited to 'usergrps/uktug/baskervi/6_4/fancyvrb.rc')
-rw-r--r-- | usergrps/uktug/baskervi/6_4/fancyvrb.rc | 335 |
1 files changed, 335 insertions, 0 deletions
diff --git a/usergrps/uktug/baskervi/6_4/fancyvrb.rc b/usergrps/uktug/baskervi/6_4/fancyvrb.rc new file mode 100644 index 0000000000..8fd06a54a8 --- /dev/null +++ b/usergrps/uktug/baskervi/6_4/fancyvrb.rc @@ -0,0 +1,335 @@ +\def\filedate{1996/09/23} +\ProvidesFile{fancyvrb.rc}[\filedate\space fancyvrb customization +by Sebastian Rahtz] +% Define verbatim and example environments: +% Verbatim - indented like quote environment, \small font. +% nVerbatim - Like "Verbatim", but numbered. +% example - code and output, side by side +% example* - one above other +% example** - one above other, with frames +% Example - Rendered as PS, like original, side by side +% Example* - Rendered as PS, one above other +% Example** - Rendered as PS, one above other, with frames +% Escape - Rendered as PS, with *no* verbatim text +% PSTExample - PSTricks picture, like original, side by side +% GridPSTExample - PSTricks (gridded) picture, like original, side by side +% The example environments have the following steps in common: +% 1. Save example verbatim to numbered example file +% 2. Input file verbatim or EPS file +% 3. Input again +% All of them save their text as files in the \EXdir directory +% (this needs a trailing / as part of the definition) +% +\RequirePackage{ifthen} +\RequirePackage{graphicx} +\RequirePackage{calc} +\def\ExampleFraction{.5} +\def\CodeFraction{.5} +% variable features +% +\def\EXdir{} +\def\EXprefix{} +\def\EXclass{article} +\def\PreambleCommands{} +\def\EscapeParameters{} +% +\@ifundefined{fullwidth}{\let\fullwidth\textwidth}{} +\@ifundefined{thechapter}{\newcounter{chapter}}{} +% +\newcounter{eps@counter}[section] +\renewcommand\theeps@counter{% + \arabic{chapter}-\arabic{section}-\arabic{eps@counter}} +\newcounter{side@count} +%\newwrite\exepsfile +%\immediate\openout\exepsfile \EXdir\jobname.expslist\relax + +\def\EPSinput{\@ifnextchar[{\@EPSinput}{\@EPSinput[]}} +\def\@EPSinput[#1]#2{% +\IfFileExists{\EXdir\EXprefix#2.eps}% + {\ifx\\#1\\\else\typeout{Change EPS input to #1}\fi + \includegraphics[#1]{\EXdir\EXprefix#2.eps}} + {\underline{\EXdir\EXprefix#2}}% +} + + +\def\SideBySideEx#1{% +\bgroup\def\baselinestretch{1}% +\trivlist\item[]% + \leavevmode + \global\advance\c@side@count by 1 + \label{\thechapter.\theside@count}% + \IdentifyExample{-1,0}% + \ifthenelse{\isodd{\pageref{\thechapter.\theside@count}}}{% + \makebox[\fullwidth][l]{\@@Display{#1}\hspace{5mm} + \BVerbatimInput[fontsize=\small]{\EXdir\EXprefix\theeps@counter}}% + }{% + \makebox[\fullwidth][r]{\@@Display{#1}\hspace{5mm} + \BVerbatimInput[fontsize=\small]{\EXdir\EXprefix\theeps@counter}}% + }% + \endtrivlist + \egroup +} +\newsavebox{\@display} +\def\@@Display#1{% + \savebox{\@display}{% +\begin{minipage}[b]{\CodeFraction\fullwidth}#1\end{minipage}% +} + \raisebox{\depth}{\usebox{\@display}}% +} + +\newcommand{\BeginExample}{% + \multiply\topsep by 2 + \global\advance\c@eps@counter\@ne + \edef\@tempa{% + \write\@auxout{\string + \newlabel{ex-\theeps@counter}{{\theeps@counter}{\noexpand\the\c@page}}}} + \@tempa + \nobreak + \VerbatimEnvironment + \catcode`\<=12 + \begin{VerbatimOut}{\EXdir\EXprefix\theeps@counter.tex}% +} +\newcommand{\EndExample}{% + \end{VerbatimOut}% +} + +\def\IdentifyExample#1{% + %\typeout{Here is example \theeps@counter}% + \rput[b]{0}(#1){\psframebox[linecolor=gray]{{\small\theeps@counter}}}% +} +\def\EndRuleExample{\vskip 7pt \hrule height 1.5pt\relax} + + + +\def\FVE@VerbatimOut{\Write@Ex{\string\end{document}}% +\immediate\closeout\FV@OutFile\endgroup\@esphack} + +\def\Write@Ex#1{% + \begingroup + \let\protect\@unexpandable@protect + \edef\reserved@a{\immediate\write\FV@OutFile{#1}} + \reserved@a + \endgroup +} + +\def\Write@OneEx#1{% + {\@temptokena\expandafter{#1}% + \immediate\write\FV@OutFile{\the\@temptokena}% + }% +} + +\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 + \Write@Ex{\string\documentclass{\EXclass}}% + \Write@Ex{\string\nonstopmode}% +% notice that this different command to write the preamble +% commands means that all verbatim code gets the current +% preamble commands printed out + \Write@OneEx{\PreambleCommands}% + \Write@Ex{\string\pagestyle{empty}}% + \Write@Ex{\EX@extra}% + \Write@Ex{\string\begin{document}}% + \let\FV@FontScanPrep\relax + \FV@Scan} + +% +% allows for numbered verbatim carrying on where the last +% ended +% +\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{continue}% + \ifx\@tempa\@tempb + \def\FV@SetLineNo{}% + \else + \def\@tempb{last}% + \ifx\@tempa\@tempb + \let\FV@SetLineNo\relax + \else + \def\FV@SetLineNo{\c@FancyVerbLine#1}% + \fi + \fi +\fi +} + +\newif\ifgrid +\gridfalse +%-------------------------------------------------------- +% here are the environment definitions +%-------------------------------------------------------- +\def\PSTExample(#1,#2)(#3,#4){% + \def\PictureSize{(#1,#2)(#3,#4)}% + \def\Write@Ex##1{}% +% \def\Write@OneEx##1{} + \BeginExample + } +\def\endPSTExample{% + \EndExample + \SideBySideEx{% + %\ifgrid\vskip 8pt \else\relax\fi + \expandafter\pspicture\PictureSize + \ifgrid\usergrid\else\relax\fi + \input{\EXdir\theeps@counter}% + \endpspicture + %\ifgrid\vskip 8pt \fi + }% +} + +\newenvironment{GridPSTExample}{\gridtrue\PSTExample}{\endPSTExample} + +\def\PSTInlineExample(#1,#2){% + \def\PictureSize{(-.2,-.5)(#1,#2)}% + \def\Write@Ex##1{}% +% \def\Write@OneEx##1{} + \BeginExample + } +\def\endPSTInlineExample{% + \EndExample + \expandafter\pspicture\PictureSize + \usergrid + \input{\EXdir\theeps@counter}% + \endpspicture + \hspace{16pt}% + \BVerbatimInput[gobble=0,fontsize=\small]{\EXdir\theeps@counter}% +} +% side by side +\newenvironment{example}{% + \def\Write@Ex##1{}% +% \def\Write@OneEx##1{} + \BeginExample}% + {\EndExample\SideBySideEx{\input{\EXdir\theeps@counter}}} + +% one above the other +\newenvironment{example*}% + {\def\Write@Ex##1{}\def\Write@Ex##1{}\BeginExample}% + {% + \EndExample + \VerbatimInput[gobble=0,fontsize=\small]{\EXdir\theeps@counter}% + \IdentifyExample{-1,0}% + \begin{center} + \leavevmode\input{\EXdir\theeps@counter}\par + \end{center} +} +% one above the other, line numbered +\newenvironment{numexample*}% + {\def\Write@Ex##1{}\def\Write@Ex##1{}\BeginExample}% + {% + \EndExample + \VerbatimInput[gobble=0,numbers=left, + fontsize=\small]{\EXdir\theeps@counter}% + \IdentifyExample{-1,0}% + \begin{center} + \leavevmode\input{\EXdir\theeps@counter}\par + \end{center} +} + +% with a frame, one above the other +\newenvironment{example**}% +{\def\Write@Ex##1{}\def\Write@Ex##1{}\BeginExample}% +{% +\EndExample +\VerbatimInput[gobble=0,fontsize=\small, + frame=topline,framerule=1.5pt]{\EXdir\theeps@counter}% + \IdentifyExample{-1,0}% +\begin{center} +\input{\EXdir\theeps@counter} + \EndRuleExample +\end{center} +} + +% now the ones which write stuff for an EPS file +% for side by side examples, the text width of the separate file +% needs to be half the normal width. +\def\EX@extra{} +\def\HalfWidth{% + \def\EX@extra{% + \string\makeatletter + \string\@tempdima\string\textwidth + \string\textwidth\ExampleFraction\string\@tempdima + \string\addtolength{\string\textwidth}{-6mm} + \string\makeatother} +} +\def\Setup@Escape{% + \edef\FancyVerbStopString{\string\end{document}}% + \edef\FancyVerbStartString{\string\begin{document}}% +} +% side by side +\newenvironment{Example}{% + \HalfWidth + \BeginExample} % + {\EndExample +\Setup@Escape +\SideBySideEx{\EPSinput{\theeps@counter}}} + +% first verbatimcode, then actual example +\newenvironment{Example*}{\BeginExample}% + {\EndExample + \Setup@Escape + \IdentifyExample{-1,0}% + \begin{center}\leavevmode\def\baselinestretch{1}% + \VerbatimInput[gobble=0,fontsize=\small]{\EXdir\EXprefix\theeps@counter}% + \EPSinput{\theeps@counter}% + \end{center}% +} + +% one above the other, framed +\newenvironment{Example**}% +{\BeginExample}% +{% +\EndExample +\Setup@Escape + \IdentifyExample{-1,0}% + \VerbatimInput[gobble=0,fontsize=\small, + frame=topline,framerule=1.5pt]{\EXdir\EXprefix\theeps@counter}% +\EPSinput{\theeps@counter} +\EndRuleExample +} + +% no verbatim text at all, just to run the thing separately +\newenvironment{Escape}% +{\BeginExample}% +{% +\EndExample +\Setup@Escape + \IdentifyExample{-1,0}% +\expandafter\EPSinput\expandafter + [\EscapeParameters]{\theeps@counter} +} +% +% compatibility with Michel, with moreverb, and verbatim package +% +\def\SixPt{\fontsize{6}{7\p@}\selectfont} +% +% input files verbatim, numbered and unnumbered +% +\def\verbfile#1{\VerbatimInput[fontsize=\small]{#1}} +\let\verbatiminput\verbfile +\def\listinginput#1#2{\VerbatimInput[fontsize=\small,firstnumber=#1,numbers=left]{#2}} +% +% verbatim in various sizes; these are all Verbatim, ie flush left, +% not LVerbatim, which uses a list, and is indented +\DefineVerbatimEnvironment{verbatim}{Verbatim}{fontsize=\normalsize} +% +\DefineVerbatimEnvironment{sssverbatim}{Verbatim}{fontsize=\SixPt} +\DefineVerbatimEnvironment{ssverbatim}{Verbatim}{fontsize=\scriptsize} +\DefineVerbatimEnvironment{fverbatim}{Verbatim}{fontsize=\footnotesize} +\DefineVerbatimEnvironment{sverbatim}{Verbatim}{fontsize=\small} +\DefineVerbatimEnvironment{verbatim}{Verbatim}{fontsize=\normalsize} +% numbered +\DefineVerbatimEnvironment{nverbatim}{Verbatim}{fontsize=\small,numbers=left} +\DefineVerbatimEnvironment{continueverbatim}{Verbatim}{fontsize=\small, + firstnumber=continue,numbers=left} +\endinput + |