verbatim.tex (1137B)
1 % Usage: 2 % \Vbeg[local init]<<an arbitrary delimiter 3 % {this} %is 4 % $all$ ~verbatim-- 5 % an arbitrary delimiter 6 % Back to non-verbatim. 7 \newtoks\Vbol \Vbol={} 8 \newtoks\Vibl \Vibl={\leavevmode\endgraf} 9 \newtoks\Vend \Vend={} 10 \def\@Vterm{\errmessage{Vbeg delimiter should be on new line}} 11 \def\@Vproc{% 12 \ifx\@Vnext\@Vterm% End of verbatim? 13 \let\@Vterm=\relax% Silence error message. 14 \the\Vend 15 \else 16 \@Vibl\def\@Vibl{\the\Vibl}\the\Vbol 17 \fi 18 } 19 \beggroup 20 \obeylines% Lines must end with % 21 \gdef\Vbeg#1<<{% 22 \beggroup% 23 \def\@Verb##1^^M{% Scan delimiter like Unix here doc. 24 \def\@@Verb####1##1{% 25 \futurelet\@Vnext\@Vproc####1\@Vterm% 26 \endgroup% 27 }% 28 \@@Verb% 29 }% 30 \let\@Vibl=\relax% 31 \def\do##1{\catcode`##1=12 }\dospecials% Init specials 32 \def\par{\futurelet\@Vnext\@Vproc}% 33 \obeylines% Init lines 34 \@Vobeyspaces% Init spaces 35 #1% User post-init 36 \@Verb% 37 }% 38 \endgroup 39 40 \def\dospecials{% 41 \do\ \do\\\do\{\do\}\do\$\do\&% 42 \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~% 43 } 44 45 % Like Plain TeX \obeyspaces, but use control spaces, not \space. 46 {\obeyspaces\gdef\@Vobeyspaces{\let =\ \obeyspaces}} 47 48 49 \endinput