% This macro source file is from the four volume series % "TeX in Practice" by Stephan von Bechtolsheim, published % 1993 by Springer-Verlag, New York. % Copyright 1993 Stephan von Bechtolsheim. % No warranty or liability is assumed. % This macro may be copied freely if no fees other than % media cost or shipping charges are charged and as long % as this copyright and the following source code itself % is not changed. Please see the series for further information. % % Version: 1.0 % Date: May 1, 1993 % % % This source code is documented in 18.3.13, p. III-45. % Original source in file "tokens1.TEX", starting line 2639. \wlog{L: "verbdisp.tip" ["tokens1.TEX," l. 2639, p. III-45]}% % This file DOES belong to format "texip." \InputD{everypar.tip} \InputD{futpar.tip} \InputD{parin.tip} \InputD{verb-bas.tip} \InputD{testdef.tip} \InputD{gobble.tip} \InputD{loadedla.tip} \newdimen\LeftSkipVerbatim \LeftSkipVerbatim = 0.3in \def\VerbatimFont{\tt} \newcount\VerbatimTab \VerbatimTab = 8 \newif\ifVerbLineNum \VerbLineNumtrue \newskip\DisplayVerbatimVskip \DisplayVerbatimVskip = 0pt plus 2pt minus 1pt \newif\ifCaretTab \CaretTabfalse \newtoks\VerbatimTokBegin \VerbatimTokBegin = {} \newtoks\VerbatimTokLine \VerbatimTokLine = {} \newtoks\VerbatimTokEnd \VerbatimTokEnd = {} \catcode`\@ = 11 \newdimen\@VerbatimLr \@VerbatimLr = 1.5pt \newif\if@IgnoreFirstNewLine \if\FormatIsLaTeXConditional \def\@VerbatimPar{\par\@@par}% \def\@VerbatimNlf{\tiny}% \else \def\@VerbatimPar{\par}% \def\@VerbatimNlf{\tiny}% \fi \newcount\@VerbatimLineNumber \newif\if@VerbatimL \newdimen\Verb@TabSize \def\@VObeySpaces{% \MakeActive{\ }% \@@VObeySpaces } {% \MakeActive{\ }% \gdef\@@VObeySpaces{% \def {\VerbControlSpace}% }% } \def\@VObeyTabs{% \MakeTabActive \@@VObeyTabs } { \MakeTabActive \gdef\@@VObeyTabs{% \def^^I{\Verb@Tab}% } } \def\Verb@Tab{% \leavevmode \egroup \dimen0 = \wd0 \divide\dimen0 by \Verb@TabSize \advance\dimen0 by 1sp \multiply\dimen0 by \Verb@TabSize \wd0 = \dimen0 \box0 \setbox 0 = \hbox\bgroup } \def\@VObeyEol{% \MakeEolActive % \@@VObeyEol } { \MakeEolActive % \gdef\@@VObeyEol{% \let^^M = \Verb@Eol% }% } \def\Verb@Eol{% \if@IgnoreFirstNewLine \else \leavevmode \egroup \box 0 \endgraf \fi \@IgnoreFirstNewLinefalse } \def\@VCaret{% \MakeActive{\^}% \@@VCaret } { \MakeActive{\^}% \gdef\@@VCaret{% \def^{% \futurelet\@VSymbol\@@VCaretTwo }% \def\@@VCaretTwo{% \ifx \@VSymbol^% \let\@VerbNext = \@@VCaretThree \else \CaretText \let\@VerbNext = \relax \fi \@VerbNext }% \def\@@VCaretThree ^{% \futurelet\@VSymbol\@@VCaretFour }% \def\@@VCaretFour{% \ifx \@VSymbol I% \Verb@Tab \else \CaretText\CaretText\@VSymbol \fi \GobbleOne }% }% } \def\@StartVerbatim #1{% \begingroup \@VerbatimPar \vskip\DisplayVerbatimVskip \if\FormatIsLaTeXConditional \else \CancelSuppressNextParIndent \fi \setbox0 = \hbox{\VerbatimFont X} \Verb@TabSize = \wd0 \multiply\Verb@TabSize by \VerbatimTab \parskip = 0pt \parindent = 0pt \leftskip = \LeftSkipVerbatim \rightskip = 0pt \parfillskip = 0pt plus 1fil \spaceskip = 0pt \xspaceskip = 0pt \VerbatimFont \if@VerbatimL \else \global\@VerbatimLineNumber = 0 \fi \global\@VerbatimLfalse \ifnum #1 = 0 \@IgnoreFirstNewLinetrue \else \@IgnoreFirstNewLinefalse \fi \if\FormatIsLaTeXConditional \everypar = {\EveryParZ}% \fi \def\EveryParZ{% \the\VerbatimTokLine \global\advance\@VerbatimLineNumber by 1 \ifVerbLineNum \raise \@VerbatimLr \hbox to 0pt{% \hss \@VerbatimNlf \the\@VerbatimLineNumber \hskip 10pt }% \fi \setbox 0 = \hbox\bgroup }% \MkOthers \@VObeySpaces \@VObeyTabs \@VObeyEol \ifCaretTab \@VCaret \fi } \def\@DoneVerbatim{% \endgroup \vskip\DisplayVerbatimVskip \def\@VerbatimEndSpecialDeal{}% \if\FormatIsLaTeXConditional \else \def\@VerbatimEndSpecialDeal{% \ParLookAhead {\SuppressNextParIndent}% {} }% \fi \@VerbatimEndSpecialDeal } \def\BeginVerbatim{% \@StartVerbatim{0}% \@BeginVerbatim } { \catcode `| = 0 % | becomes escape character. \catcode`\\ =12 % \ becomes regular character. |gdef|@BeginVerbatim #1\EndVerbatim{% #1% |@DoneVerbatim } } \def\BVerB{% \@StartVerbatim{0}% \@BVerB } { \catcode `| = 0 % | becomes escape character. \catcode`\\ =12 % \ becomes regular character. |gdef|@BVerB #1\EVerB{% #1% |@DoneVerbatim } } \def\AppendVerbatimL #1{% \global\@VerbatimLtrue \global\advance\@VerbatimLineNumber by #1\relax } \def\StartVerbatimL #1{% \global\@VerbatimLtrue \global\@VerbatimLineNumber = #1\relax } \newcount\@SaveVerbatimLineNumber \def\PushVerbatimL{% \global\@SaveVerbatimLineNumber = \@VerbatimLineNumber \global\VerbLineNumfalse } \def\PopVerbatimL{% \global\@VerbatimLineNumber = \@SaveVerbatimLineNumber \global\VerbLineNumtrue } \catcode`\@ = 12