From 92907645c9411e22438b1985c91326a88337ba03 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Thu, 25 Apr 2013 22:32:41 +0000 Subject: verbatimbox (25apr13) git-svn-id: svn://tug.org/texlive/trunk@30104 c570f23f-e606-0410-a88d-b1316a301751 --- .../tex/latex/verbatimbox/verbatimbox.sty | 176 ++++++++++++++------- 1 file changed, 120 insertions(+), 56 deletions(-) (limited to 'Master/texmf-dist/tex/latex/verbatimbox/verbatimbox.sty') diff --git a/Master/texmf-dist/tex/latex/verbatimbox/verbatimbox.sty b/Master/texmf-dist/tex/latex/verbatimbox/verbatimbox.sty index a646c22b537..e237b3798e0 100644 --- a/Master/texmf-dist/tex/latex/verbatimbox/verbatimbox.sty +++ b/Master/texmf-dist/tex/latex/verbatimbox/verbatimbox.sty @@ -1,5 +1,8 @@ \ProvidesPackage{verbatimbox} - [2013/04/15 v2.01] + [2013/04/24 v3.0 +Routines for placing verbatim text into boxes, useful in places where +the verbatim environment is inaccessible. Secondarily, for adding +vertical buffer around an object.] % % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.3 @@ -16,51 +19,37 @@ % verbatimbox.sty is based on boxedverbatim environment found % in moreverb.sty. % -% It adds the verbbox environment, the verbfilebox command, -% and theverbbox command. +% An enabling routine, \addvbuffer[]{} shares some functional +% similarities to \raisebox, but it is not the same. % -% The verbbox environment is just like boxedverbatim, except: -% -% 1) verbbox has no framed place around it; and -% 2) the verbatim box is not output, -% but saved in the global box named \savedverbbox. -% -% The verbfilebox command, rather than taking the typed input, takes -% the contents of a file and puts it into a verbatim environment -% inside of a saved box which is not immediately printed. -% -% The command \theverbbox will output the verbatim box most recently -% created within the verbbox environment (that is, \savedverbbox). -% The [t] option to \theverbbox is made for outputting a verbbox -% in a tabular environment. Without the [t], insufficient vertical -% space is allocated above the box. -% -% This routine allows the verbatim environment to be stuffed into a -% LaTeX box, which can then be embedded in other LaTeX constructs. -% -% This routine is useful, because there are many LaTeX environments -% in which a verbatim environment cannot be simply opened, but -% in which a box can be simply placed (e.g., tabular). -% -% An enabling routine \addvbuffer{}, is available for general -% use. It adds vertical buffer space above and below the argument -% of the command. The vertical space added above the original box -% is the length \boxtopsep; below the box, it is \boxbottomsep. It -% shares some functional similarities to \raisebox, but it is not the -% same. -% -% 2.01 Added LPPL License info to package +% 2.01 -Added LPPL License info to package +% 3.0 -Added myverbbox environment +% -Corrected problem when no optional arguments are passed to +% verbbox environment +% -Added optional arguments to \addvbuffer +% -Fixed \verbfilebox so that it restored \verbatim@processline +% -Produced real documentation \NeedsTeXFormat{LaTeX2e} \@ifundefined{verbatim@processline}{\RequirePackage{verbatim}}{} +\usepackage{stringstrings} + +% Following 3 lines thanks to Prof. Enrico Gregorio, from: +% http://tex.stackexchange.com/questions/42318/ +% removing-a-backslash-from-a-character-sequence +\begingroup\lccode`\|=`\\ +\lowercase{\endgroup\def\removebs#1{\if#1|\else#1\fi}} +\newcommand{\@macro@name}[1]{\expandafter\removebs\string#1} +% \global\newsavebox{\savedverbbox} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newcounter{VerbboxLineNo} +%%%%%ORIGINAL FORM%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % The verbbox environment is based on % the boxedverbatim environment found in moreverb.sty % The optional argument allows the user to modify properties of the text -% such as fontsize +% such as fontsize % -\newenvironment{verbbox}[1][]{% +\newenvironment{origverbbox}[1][]{% \def\verbatim@processline{% {\setbox0=\hbox{\the\verbatim@line}% \hsize=\wd0 \the\verbatim@line\par}}% @@ -74,6 +63,68 @@ \egroup \global\sbox{\savedverbbox}{\box0} } +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% David Carlisle provided the \verbbox@inner approach to avoid +% problem when no optional argument is provided to verbbox environment: +% http://tex.stackexchange.com/questions/109030/optional-arguments-in +% -verbatim-environments +\newcommand\verbbox@inner[1][]{{\nfss@catcodes\scantokens{\gdef\@tmp{#1}}}} +\def\@tmp{} + +\newenvironment{verbbox}{% + \setcounter{VerbboxLineNo}{-1}% +% FOR SOME REASON, USING \my@par INSTEAD OF \par PREVENTS EXTRA SPACE +% ABOVE verbbox WHEN USING OPTIONAL ARGUMENTS + \let\my@par\par% + \def\verbatim@processline{% +% FIRST \@tmp APPLIES OPTIONAL ARGUMENT TO EACH VERBATIM LINE +% SECOND \@tmp MAKES SURE ANY PRINTED MATTER OF OPTIONAL ARGUMENT +% IS ACCOUNTED FOR IN VERBATIM BOX WIDTH + {\addtocounter{VerbboxLineNo}{1}% + \@tmp\setbox0=\hbox{\@tmp\the\verbatim@line}% + \hsize=\wd0 \the\verbatim@line\my@par}}% + \@minipagetrue% + \@tempswatrue% + \setbox0=\vbox\bgroup \verbatim\verbbox@inner% +} +{% + \endverbatim% + \unskip\setbox0=\lastbox % + \egroup% + \global\sbox{\savedverbbox}{\box0}% + \global\def\@tmp{}% +} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% The myverbbox environment is altered from verbbox environment +% The optional argument allows the user to modify properties of +% the text such as fontsize +% The mandatory argument is a command which is formed so as to +% regurgitate the boxed content created within the environment +% +\newenvironment{myverbbox}[2][]{% + \setcounter{VerbboxLineNo}{0}% + \def\verbatim@processline{% +% THE FIRST #1 ACCOUNTS FOR NON-PRINTING COMMANDS; THE SECOND #1 IS FOR +% PRINTED OPTIONAL MATERIAL + {\addtocounter{VerbboxLineNo}{1}% + #1\setbox0=\hbox{#1\the\verbatim@line}% + \hsize=\wd0 \the\verbatim@line\par}}% + \@minipagetrue% + \@tempswatrue% + \global\edef\sv@name{\@macro@name{#2}}% + \@ifundefined{\sv@name content}{% + \expandafter\newsavebox\expandafter{\csname\sv@name content\endcsname}% + }% + \expandafter\global\expandafter\edef\csname\sv@name\endcsname{\usebox{% + \csname\sv@name content\endcsname}}% + \setbox0=\vbox\bgroup \verbatim +} +{% + \endverbatim% + \unskip\setbox0=\lastbox % + \egroup% + \global\sbox{\csname\sv@name content\endcsname}{\box0}% +} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % The verbfilebox command is like the verbbox environment, but takes @@ -81,51 +132,64 @@ % The optional argument allows the user to modify properties of the text % such as fontsize % Example: \verbfilebox[\scriptsize]{myfile} + +\let\sv@verbatim@processline\verbatim@processline + \newcommand\verbfilebox[2][]{% + \setcounter{VerbboxLineNo}{0}% \def\verbatim@processline{% - {\setbox0=\hbox{\the\verbatim@line}% + {\addtocounter{VerbboxLineNo}{1}% + #1\setbox0=\hbox{#1\the\verbatim@line}% \hsize=\wd0 \the\verbatim@line\par}}% \@minipagetrue% \@tempswatrue% - \setbox0=\vbox\bgroup #1 \verbatiminput{#2} + \setbox0=\vbox\bgroup \verbatiminput{#2} \unskip\setbox0=\lastbox % \egroup \global\sbox{\savedverbbox}{\box0} + \let\verbatim@processline\sv@verbatim@processline } - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \newcommand\theverbbox[1][x]{% \if #1t% % The t option is for outputting the savedverbbox inside a tabular % environment (else insufficent vertical space above box) - \boxtopsep = 3pt - \boxbottomsep = 0pt - \addvbuffer{\usebox{\savedverbbox}} + \addvbuffer[\the\boxtopsep~\the\boxbottomsep]{\usebox{\savedverbbox}}% \else% - \usebox{\savedverbbox} + \usebox{\savedverbbox}% \fi% } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % \addvbuffer is based on \fbox, % but without a frame. Empty buffer space % is added above and below the object, making a new box. -% Above the box is added \boxtopsep (initially 3pt) vertical space. -% Below the box is added \boxbottomsep (initially 0pt) vertical space. -% This routine is called when a savedverbbox is output in a tabular -% environment. +% An optional argument can specify the buffer spaces or, if no +% optional argument is specified: +% above the box is added \boxtopsep (initially 3pt) vertical space; +% below the box is added \boxbottomsep (initially 0pt) vertical space. % \newdimen\boxtopsep \newdimen\boxbottomsep \newdimen\ps@tempdima \newbox\ps@tempboxa -\boxtopsep = 3pt -\boxbottomsep = 0pt -\long\def\addvbuffer#1{\leavevmode\setbox\ps@tempboxa\hbox{#1}\ps@tempdima - 0pt \advance\ps@tempdima \dp\ps@tempboxa \hbox{\lower \ps@tempdima\hbox - {\vbox{\hbox{\vbox{\vskip\boxtopsep \box\ps@tempboxa \vskip - \boxbottomsep}}}}}} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\endinput +\setlength\boxtopsep{3pt} +\setlength\boxbottomsep{0pt} +\long\def\add@vbuffer#1{\leavevmode\setbox\ps@tempboxa\hbox{#1}\ps@tempdima + 0pt \advance\ps@tempdima \dp\ps@tempboxa \hbox{\lower\ps@tempdima\hbox + {\vbox{\hbox{\vbox{\vskip\boxtop@sep \box\ps@tempboxa \vskip + \boxbottom@sep}}}}}} +\global\newlength\boxtop@sep +\global\newlength\boxbottom@sep +\newcommand\addvbuffer[2][{\the\boxtopsep} \the\boxbottomsep]{% + \getargs{#1}% + \setlength\boxtop@sep{\argi}% + \if1\narg\setlength\boxbottom@sep{\argi}\else% + \setlength\boxbottom@sep{\argii}\fi% + \add@vbuffer{#2}% +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\endinput -- cgit v1.2.3