MODO "VERBATIM" IN TEX

Per listare inalterato un file esterno vedi punto a)
Per listare inalterato un brano inserito in un file TEX vedi punto b)

a)
==========================================================================
Il seguente insieme di macro permette di listare inalterato un file
esterno richiamabile da un file TEX. Interpreta correttamente i TAB
(a intervalli fissi di 8 caratteri), le linee vuote, i blanks, ANCHE
SE ALL'INIZIO DELLA RIGA, e tutti i caratteri printabili (compresi 
quelli particolari del Tex).
-------------------------------------------------------------------
\def\uncatcodespecials{\def\do##1{\catcode`##1=12 }\dospecials}
\def\listing#1{\par\begingroup\setupverbatim\input#1 \endgroup}
\def\setupverbatim{\tt \def\par{\leavevmode\egroup\box0\endgraf}
     \uncatcodespecials\obeylines\obeyspaces \catcode`\`=\active
     \catcode`\^^I=\active
     \everypar{\startbox}} {\obeyspaces\global\let =\ }
{\catcode`\`=\active \gdef`{\relax\lq}}
\newdimen\w \setbox0=\hbox{\tt\space} \w=8\wd0
\def\startbox{\setbox0=\hbox\bgroup}
{\catcode`\^^I=\active
   \gdef^^I{\leavevmode\egroup \dimen0=\wd0
   \divide\dimen0 by \w \multiply\dimen0 by \w \advance\dimen0 by \w
   \wd0=\dimen0 \box0 \startbox}}
-------------------------------------------------------------------
USO : \listing{nome del file}
==========================================================================

b)
==========================================================================
Il seguente insieme di macro permette di listare inalterato un brano
inserito in un file TEX. Interpreta correttamente i TAB, (a intervalli
fissi di 8 caratteri), le linee vuote, i blanks, ANCHE SE ALL'INIZIO
DELLA RIGA, e tutti i caratteri printabili (compreso quelli particolari
del Tex). Unica precauzione: le parentesi graffe sono accettate a patto
che siano bilanciate, cioe' che per ogni par. aperta esista anche una
(sola e successiva) par. chiusa.
-------------------------------------------------------------------
\def\uncatcodespecials{\def\do##1{\catcode`##1=12 }\dospecials}
\def\sic{\begingroup\tt\uncatcodespecials 
         \def\par{\egroup\box0\endgraf\leavevmode\startbox}
         \obeylines \obeyspaces \catcode`\`=\active
         \catcode`\^^I=\active \doverbatim}
{\obeyspaces\global\let =\ }
{\catcode`\`=\active \gdef`{\relax\lq}}
\newdimen\w \setbox0=\hbox{\tt\space} \w=8\wd0
\newcount\balance
{\catcode`<=1 \catcode`>=2 \catcode`\{=12 \catcode`\}=12
  \gdef\doverbatim{<\balance=1\startbox\verbatimloop>      
  \gdef\verbatimloop#1<\def\dopo<#1\verbatimloop>%
    \if#1{\advance\balance by1 %
    \else\if#1}\advance\balance by-1 %
               \ifnum\balance=0\let\dopo=\lafine\fi\fi\fi \dopo>
  \gdef\startbox<\setbox0=\hbox\bgroup>
  \gdef\lafine<\egroup\box0\endgroup>
  <\catcode`\^^I=\active
     \gdef^^I<\egroup \dimen0=\wd0
       \divide\dimen0 by \w \multiply\dimen0 by \w \advance\dimen0 by \w
       \wd0=\dimen0 \box0 \startbox>>>
-------------------------------------------------------------------
USO : \sic{.... brano inserito.....}
==========================================================================

                                             T. Ficarra