summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/verbatimbox/verbatimbox.sty
blob: 5a4e0a25499859cac46541bb05a3236055104563 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
\ProvidesPackage{verbatimbox}
        [2007/03/16 v1.0]
% verbatimbox.sty is based on boxedverbatim environment found
% in moreverb.sty.
%
% It adds the verbbox environment and theverbbox command.
%
% 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 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.
% 
\NeedsTeXFormat{LaTeX2e}
\@ifundefined{verbatim@processline}{\RequirePackage{verbatim}}{}

\global\newsavebox{\savedverbbox}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% The verbbox environment is based on 
% the boxedverbatim environment found in moreverb.sty
%
\def\verbbox{%
  \def\verbatim@processline{%
    {\setbox0=\hbox{\the\verbatim@line}%
    \hsize=\wd0 \the\verbatim@line\par}}%
  \@minipagetrue%
  \@tempswatrue%
  \setbox0=\vbox\bgroup \verbatim
}
\def\endverbbox{%
  \endverbatim
  \unskip\setbox0=\lastbox %
  \egroup
  \global\sbox{\savedverbbox}{\box0}
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\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}}
  \else%
    \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.
%
\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