From b3b234f726cad9f675c19a717a2bdd179d4063aa Mon Sep 17 00:00:00 2001 From: Martin Mares Date: Sat, 25 Sep 2010 15:08:58 +0200 Subject: [PATCH] First attempts at a new verbatim environment --- ucwmac-test.tex | 30 +++++++++++++++-- ucwmac.tex | 89 ++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 116 insertions(+), 3 deletions(-) diff --git a/ucwmac-test.tex b/ucwmac-test.tex index 6786417..0987ff5 100644 --- a/ucwmac-test.tex +++ b/ucwmac-test.tex @@ -37,16 +37,42 @@ misinterpreted\dots{} --- Douglas Addams: HHG \:Third: \itemize\istar \:Primus - \:Secundus + \: Secundus %% are spaces eaten correctly? \:Tertius \:Graecus: \numlist\ngreek \:alpha \:beta - \:gamma + \: gamma \endlist \endlist \:Fourth \endlist +\hd{Inline verbatim} + +Lo and behold: |a quick brown fox| {\showspacestrue |jumps over the lazy dog|} |!@#$%^&*()\_| + +\hd{Block verbatim} + +\noindent Pre-verbatim +\showspacestrue +\verbatim{ +abracadabra {!@#$%^&*()\_} +1 tab +12 tab +123 tab +1234 tab +12345 tab +123456 tab +1234567 tab +12345678 tab tab +123456789 tab45678 tab +123456789 tab45678 tab&space +123456789 tabtab + +123456789 tabtab +} +\noindent Post-verbatim + \bye diff --git a/ucwmac.tex b/ucwmac.tex index b5f9877..afd2829 100644 --- a/ucwmac.tex +++ b/ucwmac.tex @@ -211,7 +211,94 @@ \zeta\or\eta\or\theta\or\iota\or\kappa\or\lambda\or\mu\or\nu\or\xi\or\pi\or\rho \or\sigma\or\tau\or\upsilon\or\phi\or\chi\or\psi\or\omega\fi$)} -\def\itm{\:} +%%% Verbatim typesetting %%% + +% New \frenchspacing, which doesn't leave unwanted spaces in text. +\def\frenchsp@cing{\sfcode`\.\@m \sfcode`\?\@m \sfcode`\!\@m% +\sfcode`\:\@m \sfcode`\;\@m \sfcode`\,\@m} + +% Typesetting of one verbatim word + +\newif\ifshowspaces +\showspacesfalse + +\def\make@ther#1{\catcode`#1=12\relax} +\def\setverb@tim{\tt\frenchsp@cing\catcode`\`=13\catcode`\'=13\n@ligs% +\let\do=\make@ther\dospecials\obeyspaces\showsp@ces} + +{\catcode`'=13 +\catcode``=13 +\gdef\n@ligs{\def`{\relax\lq}\def'{\relax\rq}}} + +{\obeyspaces +\global\chardef\sp@ce=32 +\gdef\showsp@ces{\ifshowspaces\let =\sp@ce\fi} +\global\let =\ } + +\catcode124=\active % Make | active +\def\ttst@rt{\begingroup\setverb@tim\let|=\endgroup} +\let|=\ttst@rt + +% Typesetting of verbatim block (enclosed in balanced {}'s) + +\newskip\verbglue +\newskip\verblineglue +\newskip\verbleftskip +\newskip\verbrightskip + +\verbglue=3pt plus 1pt minus 0.3pt +\verblineglue=0pt plus 1.5pt +\verbleftskip=1in +\verbrightskip=0pt plus 1fil +\def\verblocaldefs{} + +\newdimen\tabwidth +\newcount\tabsize +\tabsize=8 +\newdimen\t@b + +\newdimen\v@rbspace + +\def\verbship{% + \ifdim\wd0>0pt + \ifdim\v@rbspace>0pt \vskip\v@rbspace \fi + \line{\hskip\verbleftskip \vrule\box0\vrule \hskip\verbrightskip} + \v@rbspace=0pt + \else + \advance\v@rbspace by 0.3\baselineskip %FIXME + \fi +} + +\newcount\verbcnt +\def\v@rbend{\par\egroup\endgroup\vskip\verbglue} +\def\v@rbl{\ifnum\verbcnt>0\{\fi\global\advance\verbcnt by 1\relax} +\def\v@rbr{\ifnum\verbcnt>1\}\else\v@rbend\fi\global\advance\verbcnt by -1\relax} + +\def\v@rbparams{\setverb@tim\raggedbottom +\verbcnt=0 +\v@rbspace=-1000pt +\catcode124=12\setupt@bs\vskip\verbglue\defb@x\obeylines} + +\def\startb@x{\setbox0=\hbox\bgroup} +\def\defb@x{\def\par{\egroup\verbship\startb@x}} + +{\catcode`\^^I=\active +\gdef\setupt@bs{\catcode`\^^I=\active +\setbox0=\hbox{\tt\ }\tabwidth=\wd0\multiply\tabwidth by \tabsize%FIXME!!! +\def^^I{\egroup\t@b=\wd0\divide\t@b by \tabwidth% +\multiply\t@b by \tabwidth% +\advance\t@b by \tabwidth\advance\t@b by -\wd0\startb@x\box0\hbox to \t@b{}}% +}} + +{ +\catcode`[=1\catcode`]=2\catcode123=\active\catcode125=\active +\gdef\verbatim[\begingroup\v@rbparams\catcode123=\active\catcode125=\active% +\let{=\v@rbl\let}=\v@rbr\chardef\{=123\chardef\}=125\verblocaldefs\startb@x% +]] + +% Input file verbatim + +\def\verbinput#1{\begingroup\v@rbparams\verblocaldefs\input #1\endgroup} %%% Epilog %%% -- 2.39.2