\chardef\escape=0
\chardef\open=1
\chardef\close=2
\chardef\letter=11
\chardef\other=12
%\chardef\active=13 % is defined in Plain already
\chardef\uscode=\catcode`\_
\catcode`\_=\letter
%\font\tentex=cmtex10 % typewriter extended ASCII 10pt
%\let\ttex=\tentex % only with base size 10pt
\def\ttex{\tt} % as a substitute
\def\setup_verbatim{%
\def\do##1{\catcode`##1\other}\dospecials
\parskip\z@skip \parindent\z@
\catcode`\`\active \@noligs
\obeylines \@vobeyspaces \obeytabs \frenchspacing
\ttex
}
\let\tab=\space
\begingroup
\catcode`\^^I=\active% % Attention: no tabs!
\gdef\obeytabs{\catcode`\^^I=\active\def^^I{\tab}}
\global\let^^I=\tab% % if an active tab appears in a \write
\endgroup
\let\origvert=|
\chardef\vbar=`\|
\def\makebaractive{\catcode`\|\active}
\def\makebarother{\catcode`\|\other}
\makebaractive
\def|{%
\leavevmode
\hbox\bgroup
\let\par\space \setup_verbatim
\let|\egroup
}
\let\@@verbatim=\@verbatim
\def\@verbatim{%
\makebarother
\@@verbatim
}
\let\@@tabarray=\@tabarray
\def\@tabarray{%
\makebarother
\@@tabarray
}
\def\multicolumn#1{%
\multispan{#1}%
\begingroup
\makebarother
\restof_multicolumn
}
\def\restof_multicolumn#1#2{%
\@mkpream{#1}%
\def\@sharp{#2}%
\let\protect\relax
\let\@startpbox\@@startpbox \let\@endpbox\@@endpbox
\@arstrut \@preamble
\endgroup
\ignorespaces
}
\let\@@mkpream=\@mkpream
\def\@mkpream#1{%
\@@mkpream{#1}%
\makebaractive
}
\begingroup
\def\@makeother{\noexpand\@makeother\noexpand}
\xdef\@sanitize{\@sanitize\@makeother\|}
\endgroup
\newif\if@print
\def\begin_verbatim{%
\endgraf
\bigbreak
\begingroup
\setup_verbatim \makebarother
\@printtrue
\ignore_rest_line
}
\let\end_verbatim=\endgroup % internal command !
\begingroup
\obeylines% % ^^M is active! ==> every line must end with %
\gdef\ignore_rest_line#1^^M{\set_next_line}%
\gdef\set_next_line#1^^M{\do_set{#1}}%
\endgroup
\def\do_set#1{%
\endgraf
\check_print{#1}%
\if@print \indent \print_char#1\end_line\end_line
\else \let\set_next_line\end_verbatim
\fi
\set_next_line
}
\let\end_line=\relax
\begingroup
\obeyspaces\obeytabs
\gdef\check_print#1{\cut_at_tab#1^^I\end_line}
\gdef\cut_at_tab#1^^I#2\end_line{\check_first_part#1 \end_line}% blank !
\gdef\check_first_part#1 #2\end_line{\do_check{#1}}
\endgroup
\def\do_check#1{%
\def\@line{#1}%
\ifx \@line\end_verbatim_line \@printfalse
\fi
}
\newcount\char_count \char_count\z@
\def\print_char#1#2\end_line{%
\print_first_char{#1}%
\print_rest_of_line{#2}%
}
{\obeytabs\gdef\@tab{^^I}}
\def\print_first_char#1{%
\def\@char{#1}%
\advance \char_count\@ne
\ifx \@char\@tab \print_tab
\else \@char
\fi
}
\newcount\count_mod_viii
\def\mod_viii#1{%
\count@ #1\relax \count_mod_viii\count@
\divide \count@ 8\relax
\multiply \count@ 8\relax
\advance \count_mod_viii -\count@
}
\def\print_tab{%
\loop \space \mod_viii\char_count
\ifnum \count_mod_viii>\z@
\advance \char_count\@ne
\repeat
}
\def\print_rest_of_line#1{%
\def\@line{#1}%
\ifx \@line\empty \char_count\z@
\def\next##1\end_line{\relax}%
\else \let\next\print_char
\fi
\next#1\end_line
}
{\catcode`\/=\escape % / is temporary escape char
\catcode`\\=\other
/gdef/beginprog{%
/gdef/end_verbatim_line{\endprog}%
/begin_verbatim
}
/gdef/beginverbatim{%
/gdef/end_verbatim_line{\endverbatim}%
/begin_verbatim
}
} % here \endgroup can't be used
\newskip\pre_sect_skip \pre_sect_skip=2pc plus 1pc minus 6pt
\def\chap_intro{%
\gdef\thesection{\arabic{section}.}%
\gdef\chap_intro{\newpage}%
\addvspace{\pre_sect_skip}%
}
\def\sect_intro{%
\gdef\thesection{\arabic{section}.}%
\global\let\sect_intro\relax
}
\def\chap#1.{%
\chap_intro
\@startsection{section}{1}%
{\z@}%
{\m@ne sp}%
{\medskipamount}%
{\normalsize\bf}%
{#1.}%
}
\def\sect{%
\sect_intro
\@startsection{section}{1}%
{\z@}%
{\pre_sect_skip}%
{\m@ne sp}%
{\normalsize\bf}%
{\null}%
}
\catcode`\_=\uscode
\endinput