~ chicken-core (chicken-5) dce56fc3ba120ebdb40a0d4b4b65de8922ae87ca


commit dce56fc3ba120ebdb40a0d4b4b65de8922ae87ca
Author:     felix <felix@call-with-current-continuation.org>
AuthorDate: Mon Jan 4 08:57:43 2010 +0100
Commit:     felix <felix@call-with-current-continuation.org>
CommitDate: Mon Jan 4 08:57:43 2010 +0100

    unixified line-terminators

diff --git a/tests/slatex.sty b/tests/slatex.sty
index 15a3f203..f487e6b1 100644
--- a/tests/slatex.sty
+++ b/tests/slatex.sty
@@ -1,547 +1,547 @@
-% slatex.sty
-% SLaTeX v. 2.2
-% style file to be used in (La)TeX when using SLaTeX
-% (c) Dorai Sitaram, Rice U., 1991, 1994
-
-% This file (or a soft link to it) should be in some
-% directory in your TEXINPUTS path (i.e., the one
-% (La)TeX scours for \input or \documentstyle option
-% files).
-
-% Do not attempt to debug this file, since the results
-% are not transparent just to (La)TeX.  The Scheme part
-% of SLaTeX depends on information laid out here -- so
-% (La)TeX-minded debugging of this file will almost
-% inevitably sabotage SLaTeX.
-
-% It's possible you don't find the default style set
-% out here appealing: e.g., you may want to change the
-% positioning of displayed code; change the fonts for
-% keywords, constants, and variables; add new keywords,
-% constants, and variables; use your names instead of
-% the provided \scheme, [\begin|\end]{schemedisplay},
-% [\begin|\end]{schemebox}, (or \[end]schemedisplay,
-% \[end]schemebox for TeX), which might be seem too
-% long or unmnemonic, and many other things.  The clean
-% way to do these things is outlined in the
-% accompanying manual, slatex-d.tex.  This way is both
-% easier than messing with this .sty file, and safer
-% since you will not unwittingly break SLaTeX.
-
-%%%
-
-% to prevent loading slatex.sty more than once
-
-\ifx\slatexignorecurrentfile\UNDEFINED
-\else\endinput\fi
-
-% use \slatexignorecurrentfile to disable slatex for
-% the current file.  (Unstrangely, the very definition
-% disables slatex for the rest of _this_ file, slatex.sty.)
-
-\def\slatexignorecurrentfile{}
-
-% checking whether we're using LaTeX or TeX?
-
-\newif\ifusinglatex
-\ifx\newenvironment\UNDEFINED\usinglatexfalse\else\usinglatextrue\fi
-
-% make @ a letter for TeX
-\ifusinglatex\relax\else
-\edef\atcatcodebeforeslatex{\the\catcode`@}
-\catcode`@11
-\fi
-
-% identification of TeX/LaTeX style for schemedisplay.
-% Do \defslatexenvstyle{tex} to get TeX environment
-% style in LaTeX
-\def\defslatexenvstyle#1{\gdef\slatexenvstyle{#1}}
-
-\ifusinglatex\defslatexenvstyle{latex}\else\defslatexenvstyle{tex}\fi
-
-% TeX doesn't have sans-serif; use roman instead
-\ifx\sf\UNDEFINED\def\sf{\rm}\fi
-
-% tabbing from plain TeX
-%
-\newif\ifus@ \newif\if@cr
-\newbox\tabs \newbox\tabsyet \newbox\tabsdone
-%
-\def\cleartabs{\global\setbox\tabsyet\null \setbox\tabs\null}
-\def\settabs{\setbox\tabs\null \futurelet\next\sett@b}
-\let\+=\relax % in case this file is being read in twice
-\def\sett@b{\ifx\next\+\let\next\relax
-    \def\next{\afterassignment\s@tt@b\let\next}%
-\else\let\next\s@tcols\fi\next}
-\def\s@tt@b{\let\next\relax\us@false\m@ketabbox}
-\def\tabalign{\us@true\m@ketabbox} % non-\outer version of \+
-\outer\def\+{\tabalign}
-\def\s@tcols#1\columns{\count@#1 \dimen@\hsize
-  \loop\ifnum\count@>\z@ \@nother \repeat}
-\def\@nother{\dimen@ii\dimen@ \divide\dimen@ii\count@
-  \setbox\tabs\hbox{\hbox to\dimen@ii{}\unhbox\tabs}%
-  \advance\dimen@-\dimen@ii \advance\count@\m@ne}
-%
-\def\m@ketabbox{\begingroup
-  \global\setbox\tabsyet\copy\tabs
-  \global\setbox\tabsdone\null
-  \def\cr{\@crtrue\crcr\egroup\egroup
-    \ifus@\unvbox\z@\lastbox\fi\endgroup
-    \setbox\tabs\hbox{\unhbox\tabsyet\unhbox\tabsdone}}%
-  \setbox\z@\vbox\bgroup\@crfalse
-    \ialign\bgroup&\t@bbox##\t@bb@x\crcr}
-%
-\def\t@bbox{\setbox\z@\hbox\bgroup}
-\def\t@bb@x{\if@cr\egroup % now \box\z@ holds the column
-  \else\hss\egroup \global\setbox\tabsyet\hbox{\unhbox\tabsyet
-      \global\setbox\@ne\lastbox}% now \box\@ne holds its size
-    \ifvoid\@ne\global\setbox\@ne\hbox to\wd\z@{}%
-    \else\setbox\z@\hbox to\wd\@ne{\unhbox\z@}\fi
-    \global\setbox\tabsdone\hbox{\box\@ne\unhbox\tabsdone}\fi
-  \box\z@}
-% finished (re)defining TeX's tabbing macros
-
-% above from plain.tex; was disabled in lplain.tex.  Do
-% not modify above unless you really know what you're
-% up to.  Make all changes you want to following code.
-% The new env is preferable to LaTeX's tabbing env
-% since latter accepts only a small number of tabs
-
-% following retrieves something like LaTeX's tabbing
-% env without the above problem (it also creates a box
-% for easy manipulation!)
-
-\def\lat@xtabbing{\leavevmode\hbox\bgroup\vbox\bgroup
- \def\={\cleartabs&} \def\>{&} \def\\{\cr\tabalign} \tabalign}
-\def\endlat@xtabbing{\cr\egroup\egroup}
-
-%new
-
-\def\lat@xtabbing{\begingroup
-\def\={\cleartabs&} \def\>{&}%
-\def\\{\cr\tabalign\lat@xtabbingleftmost}%
-\tabalign\lat@xtabbingleftmost}
-\def\endlat@xtabbing{\cr\endgroup}
-\let\lat@xtabbingleftmost\relax
-
-% stuff for formating Scheme code
-
-\newskip\par@nlen \newskip\brack@tlen \newskip\quot@len
-\newskip\h@lflambda
-
-\newbox\garb@ge
-\def\s@ttowidth#1#2{\setbox\garb@ge\hbox{#2}#1\wd\garb@ge\relax}
-
-\s@ttowidth\par@nlen{$($}       % size of paren
-\s@ttowidth\brack@tlen{$[$}     % size of bracket
-\s@ttowidth\quot@len{'}         % size of quote indentation
-\s@ttowidth\h@lflambda{ii}      % size of half of lambda indentation
-
-\def\PRN{\hskip\par@nlen}       % these are used by SLaTeX's codesetter
-\def\BKT{\hskip\brack@tlen}
-\def\QUO{\hskip\quot@len}
-\def\HL{\hskip\h@lflambda}
-
-\newskip\abovecodeskip \newskip\belowcodeskip
-\newskip\leftcodeskip \newskip\rightcodeskip
-
-% the following default assignments give a flushleft
-% display
-
-\abovecodeskip=\medskipamount \belowcodeskip=\medskipamount
-\leftcodeskip=0pt \rightcodeskip=0pt
-
-% adjust above,below,left,right codeskip's to personal
-% taste
-
-% for centered displays
-%
-% \leftcodeskip=0pt plus 1fil
-% \rightcodeskip=0pt plus 1fil
-%
-% if \rightcodeskip != 0pt, pagebreaks within Scheme
-% blocks in {schemedisplay} are disabled
-
-\def\checkfollpar{\futurelet\next\checkfollparII}
-\def\checkfollparII{\ifx\next\par\let\next\relax
-\else\par\noindent\let\next\ignorespaces\fi\next}
-
-% the following are the default font assignments for
-% words in code.  Change them to suit personal taste
-
-\def\keywordfont#1{{\bf #1}}
-\def\variablefont#1{{\it #1\/}}
-\def\constantfont#1{{\sf #1}}
-\def\datafont#1{\constantfont{#1}}
-
-\def\schemecodehook{}
-
-%program listings that allow page breaks but
-%can't be centered
-
-\def\ZZZZschemedisplay{\edef\thez@skip{\the\z@skip}%
-\edef\@tempa{\the\rightcodeskip}%
-\ifx\@tempa\thez@skip\let\next\ZZZZschemeprogram
-\else\let\next\ZZZZschemeprogramII\fi\next}
-
-\def\endZZZZschemedisplay{\edef\thez@skip{\the\z@skip}%
-\edef\@tempa{\the\rightcodeskip}%
-\ifx\@tempa\thez@skip\let\next\endZZZZschemeprogram
-\else\let\next\endZZZZschemeprogramII\fi\next}
-
-\def\ZZZZschemeprogram{\vskip\abovecodeskip
-\begingroup
-\schemecodehook
-\let\sy=\keywordfont \let\cn=\constantfont
-\let\va=\variablefont \let\dt=\datafont
-\def\lat@xtabbingleftmost{\hskip\leftcodeskip\relax}%
-\lat@xtabbing}
-
-\def\endZZZZschemeprogram{\endlat@xtabbing
-\endgroup
-\vskip\belowcodeskip
-\ifusinglatex\let\next\@endparenv
-\else\let\next\checkfollpar\fi\next}
-
-\def\ZZZZschemeprogramII{\vskip\abovecodeskip
-\begingroup
-\noindent
-%\schemecodehook %\ZZZZschemebox already has it
-\hskip\leftcodeskip
-\ZZZZschemebox}
-
-\def\endZZZZschemeprogramII{\endZZZZschemebox
-\hskip\rightcodeskip
-\endgroup
-\vskip\belowcodeskip
-\ifusinglatex\let\next\@endparenv
-\else\let\next\checkfollpar\fi\next}
-
-%
-
-\def\ZZZZschemebox{%
-\leavevmode\hbox\bgroup\vbox\bgroup
-\schemecodehook
-\let\sy=\keywordfont \let\cn=\constantfont
-\let\va=\variablefont \let\dt=\datafont
-\lat@xtabbing}
-\def\endZZZZschemebox{\endlat@xtabbing
-\egroup\egroup\ignorespaces}
-
-%in-text
-
-\def\ZZZZschemecodeintext{\begingroup
-  \let\sy\keywordfont \let\cn\constantfont
-  \let\va\variablefont \let\dt\datafont}
-
-\def\endZZZZschemecodeintext{\endgroup\ignorespaces}
-
-\def\ZZZZschemeresultintext{\begingroup
-  \let\sy\datafont \let\cn\constantfont
-  \let\va\datafont \let\dt\datafont}
-
-\def\endZZZZschemeresultintext{\endgroup\ignorespaces}
-
-% \comm@nt<some-char>...text...<same-char> comments out
-% TeX source analogous to
-% \verb<some-char>...text...<same-char>.  Sp. case:
-% \comm@nt{...text...} == \comm@nt}...text...}
-
-\def\@makeother#1{\catcode`#112\relax}
-
-\def\comm@nt{%
-  \begingroup
-  \let\do\@makeother \dospecials
-  \@comm}
-
-\begingroup\catcode`\<1\catcode`\>2
-\catcode`\{12\catcode`\}12
-\long\gdef\@comm#1<%
-  \if#1{\long\def\@tempa ##1}<\endgroup>\else
-	\long\def\@tempa ##1#1<\endgroup>\fi
-  \@tempa>
-\endgroup
-
-% input file if possible, else relax
-
-\def\inputifpossible#1{%
-  \immediate\openin0=#1\relax%
-  \ifeof0\relax\else\input#1\relax\fi%
-  \immediate\closein0}
-
-\def\ZZZZinput#1{\input#1\relax}
-
-% you may replace the above by
-%
-% \def\ZZZZinput#1{\inputifpossible{#1}}
-%
-% if you just want to call (La)TeX on your text
-% ignoring the portions that need to be SLaTeX'ed
-
-%use \subjobname rather than \jobname to generate
-%slatex's temp files --- this allows us to change
-%\subjobname for more control, if necessary.
-
-\let\subjobname\jobname
-
-% counter for generating temp file names
-
-\newcount\sch@mefilenamecount
-\sch@mefilenamecount=-1
-
-% To produce displayed Scheme code:
-% in LaTeX:
-% \begin{schemedisplay}
-%   ... indented program (with sev'l lines) ...
-% \end{schemedisplay}
-%
-% in TeX:
-% \schemedisplay
-%   ... indented program (with sev'l lines) ...
-% \endschemedisplay
-
-\begingroup\catcode`\|=0\catcode`\[=1\catcode`\]=2%
-\catcode`\{=12\catcode`\}=12\catcode`\\=12%
-|gdef|defschemedisplaytoken#1[%
-  |long|expandafter|gdef|csname ZZZZcomment#1|endcsname[%
-    |begingroup
-    |let|do|@makeother |dospecials
-    |csname ZZZZcomment|slatexenvstyle II#1|endcsname]%
-  |long|expandafter|gdef|csname ZZZZcommentlatexII#1|endcsname##1\end{#1}[%
-    |endgroup|end[#1]]%
-  |long|expandafter|gdef|csname ZZZZcommenttexII#1|endcsname##1\end#1[%
-    |endgroup|csname end#1|endcsname]%
-  |long|expandafter|gdef|csname #1|endcsname[%
-    |global|advance|sch@mefilenamecount by 1|relax%
-    |ZZZZinput[|filehider Z|number|sch@mefilenamecount|subjobname.tex]%
-    |csname ZZZZcomment#1|endcsname]%
-  |long|expandafter|gdef|csname end#1|endcsname[]]%
-|endgroup
-
-\defschemedisplaytoken{schemedisplay}
-
-\def\undefschemedisplaytoken#1{%
-  \expandafter\gdef\csname#1\endcsname{\UNDEFINED}}
-
-% \scheme|...program fragment...| produces Scheme code
-% in-text.  Sp. case: \scheme{...} == \scheme}...}
-
-\def\defschemetoken#1{%
-  \long\expandafter\def\csname#1\endcsname{%
-    \global\advance\sch@mefilenamecount by 1\relax%
-    \ZZZZinput{\filehider Z\number\sch@mefilenamecount\subjobname.tex}%
-    \comm@nt}}
-\defschemetoken{scheme}
-
-\def\undefschemetoken#1{%
-  \expandafter\gdef\csname#1\endcsname{\UNDEFINED}}
-
-% \schemeresult|...program fragment...| produces a
-% Scheme code result in-text: i.e. keyword or variable
-% fonts are replaced by the data font.  Sp. case:
-% \schemeresult{...} == \schemeresult}...}
-
-\def\defschemeresulttoken#1{%
-  \long\expandafter\def\csname#1\endcsname{%
-    \global\advance\sch@mefilenamecount by 1\relax%
-    \ZZZZinput{\filehider Z\number\sch@mefilenamecount\subjobname.tex}%
-    \comm@nt}}
-\defschemeresulttoken{schemeresult}
-
-\def\undefschemeresulttoken#1{%
-  \expandafter\gdef\csname#1\endcsname{\UNDEFINED}}
-
-% To produce a box of Scheme code:
-% in LaTeX:
-% \begin{schemebox}
-%   ... indented program (with sev'l lines) ...
-%  \end{schemebox}
-%
-% in TeX:
-% \schemebox
-%   ... indented program (with sev'l lines) ...
-% \endschemebox
-
-\begingroup\catcode`\|=0\catcode`\[=1\catcode`\]=2%
-\catcode`\{=12\catcode`\}=12\catcode`\\=12%
-|gdef|defschemeboxtoken#1[%
-  |long|expandafter|gdef|csname ZZZZcomment#1|endcsname[%
-    |begingroup
-    |let|do|@makeother |dospecials
-    |csname ZZZZcomment|slatexenvstyle II#1|endcsname]%
-  |long|expandafter|gdef|csname ZZZZcommentlatexII#1|endcsname##1\end{#1}[%
-    |endgroup|end[#1]]%
-  |long|expandafter|gdef|csname ZZZZcommenttexII#1|endcsname##1\end#1[%
-    |endgroup|csname end#1|endcsname]%
-  |long|expandafter|gdef|csname #1|endcsname[%
-    |global|advance|sch@mefilenamecount by 1|relax%
-    |ZZZZinput[|filehider Z|number|sch@mefilenamecount|subjobname.tex]%
-    |csname ZZZZcomment#1|endcsname]%
-  |long|expandafter|gdef|csname end#1|endcsname[]]%
-|endgroup
-
-\defschemeboxtoken{schemebox}
-
-\def\undefschemeboxtoken#1{%
-  \expandafter\gdef\csname#1\endcsname{\UNDEFINED}}
-
-% for wholesale dumping of all-Scheme files into TeX (converting
-% .scm files to .tex),
-% use
-%   \schemeinput{<filename>}
-% .scm, .ss, .s extensions optional
-
-\def\defschemeinputtoken#1{%
-  \long\expandafter\gdef\csname#1\endcsname##1{%
-    \global\advance\sch@mefilenamecount by 1\relax%
-    \ZZZZinput{\filehider Z\number\sch@mefilenamecount\subjobname.tex}}}
-\defschemeinputtoken{schemeinput}
-
-\def\undefschemeinputtoken#1{%
-  \expandafter\gdef\csname#1\endcsname{\UNDEFINED}}
-
-% delineating a region that features typeset code
-% not usually needed, except when using \scheme and schemedisplay
-% inside macro-args and macro-definition-bodies
-% in LaTeX:
-% \begin{schemeregion}
-%   ...
-% \end{schemeregion}
-%
-% in TeX:
-% \schemeregion
-% ...
-% \endschemeregion
-
-\begingroup\catcode`\|=0\catcode`\[=1\catcode`\]=2%
-\catcode`\{=12\catcode`\}=12\catcode`\\=12%
-|gdef|defschemeregiontoken#1[%
-  |long|expandafter|gdef|csname ZZZZcomment#1|endcsname[%
-    |begingroup
-    |let|do|@makeother |dospecials
-    |csname ZZZZcomment|slatexenvstyle II#1|endcsname]%
-  |long|expandafter|gdef|csname ZZZZcommentlatexII#1|endcsname##1\end{#1}[%
-    |endgroup|end[#1]]%
-  |long|expandafter|gdef|csname ZZZZcommenttexII#1|endcsname##1\end#1[%
-    |endgroup|csname end#1|endcsname]%
-  |long|expandafter|gdef|csname #1|endcsname[%
-    |global|advance|sch@mefilenamecount by 1|relax%
-    |ZZZZinput[|filehider Z|number|sch@mefilenamecount|subjobname.tex]%
-    |csname ZZZZcomment#1|endcsname]%
-  |long|expandafter|gdef|csname end#1|endcsname[]]%
-|endgroup
-
-\defschemeregiontoken{schemeregion}
-
-\def\undefschemeregiontoken#1{%
-  \expandafter\gdef\csname#1\endcsname{\UNDEFINED}}
-
-% introducing new code-tokens to the keyword, variable and constant
-% categories
-
-\def\comm@ntII{%
-  \begingroup
-  \let\do\@makeother \dospecials
-  \@commII}
-
-\begingroup\catcode`\[1\catcode`\]2
-\catcode`\{12\catcode`\}12
-\long\gdef\@commII{[%
-  \long\def\@tempa ##1}[\endgroup]\@tempa]%
-\endgroup
-
-\let\setkeyword\comm@ntII
-\let\setvariable\comm@ntII
-\let\setconstant\comm@ntII
-
-% \defschememathescape makes the succeeding grouped character an
-% escape into latex math from within Scheme code;
-% this character can't be }
-
-\let\defschememathescape\comm@ntII
-\let\undefschememathescape\comm@ntII
-
-% telling SLaTeX that a certain Scheme identifier is to
-% be replaced by the specified LaTeX expression.
-% Useful for generating ``mathematical''-looking
-% typeset code even though the corresponding Scheme
-% code is ascii as usual and doesn't violate
-% identifier-naming rules
-
-\def\setspecialsymbol{%
-  \begingroup
-  \let\do\@makeother \dospecials
-  \@commIII}
-
-\begingroup\catcode`\[1\catcode`\]2
-\catcode`\{12\catcode`\}12
-\long\gdef\@commIII{[%
-  \long\def\@tempa ##1}[\endgroup\@gobbleI]\@tempa]%
-\endgroup
-
-\def\@gobbleI#1{}
-
-% \unsetspecialsymbol strips Scheme identifier(s) of
-% any ``mathematical'' look lent by the above
-
-\let\unsetspecialsymbol\comm@ntII
-
-% enabling/disabling slatex
-
-\def\slatexdisable#1{\expandafter\gdef\csname#1\endcsname{}}
-
-% \schemecasesensitive takes either true or false as
-% argument
-
-\def\schemecasesensitive#1{}
-
-%for latex only: use \slatexseparateincludes before the
-%occurrence of any Scheme code in your file, if you
-%want the various \include'd files to have their own
-%pool of temporary slatex files.  This lets you juggle
-%your \include's in successive runs of LaTeX without
-%having to worry that the temp. files may interfere.
-%By default, only a single pool of temp files is used.
-%Warning: On DOS, if your \include'd files have fairly
-%similar names, avoid \slatexseparateincludes since the
-%short filenames on DOS will likely confuse the temp
-%file pools of different \include files.
-
-\def\slatexseparateincludes{%
-\gdef\include##1{{\def\subjobname{##1}%
-\sch@mefilenamecount=-1%
-\@include##1 }}}
-
-% convenient abbreviations for characters
-
-\begingroup
-\catcode`\|=0
-|catcode`|\=12
-|gdef|ttbackslash{{|tt|catcode`|\=12\}}
-|endgroup
-\mathchardef\lt="313C
-\mathchardef\gt="313E
-\begingroup
-  \catcode`\@12%
-  \global\let\atsign@%
-\endgroup
-\chardef\dq=`\"
-
-% leading character of slatex filenames: . for unix to
-% keep them out of the way
-
-\def\filehider{.}
-
-% since the above doesn't work of dos, slatex on dos
-% will use a different character, and make the
-% redefinition available through the following
-
-\inputifpossible{xZfilhid.tex}
-
-% @ is no longer a letter for TeX
-
-\ifusinglatex\relax\else
-\catcode`@\atcatcodebeforeslatex
-\fi
-
-\message{*** Check: Are you sure you called SLaTeX? ***}
+% slatex.sty
+% SLaTeX v. 2.2
+% style file to be used in (La)TeX when using SLaTeX
+% (c) Dorai Sitaram, Rice U., 1991, 1994
+
+% This file (or a soft link to it) should be in some
+% directory in your TEXINPUTS path (i.e., the one
+% (La)TeX scours for \input or \documentstyle option
+% files).
+
+% Do not attempt to debug this file, since the results
+% are not transparent just to (La)TeX.  The Scheme part
+% of SLaTeX depends on information laid out here -- so
+% (La)TeX-minded debugging of this file will almost
+% inevitably sabotage SLaTeX.
+
+% It's possible you don't find the default style set
+% out here appealing: e.g., you may want to change the
+% positioning of displayed code; change the fonts for
+% keywords, constants, and variables; add new keywords,
+% constants, and variables; use your names instead of
+% the provided \scheme, [\begin|\end]{schemedisplay},
+% [\begin|\end]{schemebox}, (or \[end]schemedisplay,
+% \[end]schemebox for TeX), which might be seem too
+% long or unmnemonic, and many other things.  The clean
+% way to do these things is outlined in the
+% accompanying manual, slatex-d.tex.  This way is both
+% easier than messing with this .sty file, and safer
+% since you will not unwittingly break SLaTeX.
+
+%%%
+
+% to prevent loading slatex.sty more than once
+
+\ifx\slatexignorecurrentfile\UNDEFINED
+\else\endinput\fi
+
+% use \slatexignorecurrentfile to disable slatex for
+% the current file.  (Unstrangely, the very definition
+% disables slatex for the rest of _this_ file, slatex.sty.)
+
+\def\slatexignorecurrentfile{}
+
+% checking whether we're using LaTeX or TeX?
+
+\newif\ifusinglatex
+\ifx\newenvironment\UNDEFINED\usinglatexfalse\else\usinglatextrue\fi
+
+% make @ a letter for TeX
+\ifusinglatex\relax\else
+\edef\atcatcodebeforeslatex{\the\catcode`@}
+\catcode`@11
+\fi
+
+% identification of TeX/LaTeX style for schemedisplay.
+% Do \defslatexenvstyle{tex} to get TeX environment
+% style in LaTeX
+\def\defslatexenvstyle#1{\gdef\slatexenvstyle{#1}}
+
+\ifusinglatex\defslatexenvstyle{latex}\else\defslatexenvstyle{tex}\fi
+
+% TeX doesn't have sans-serif; use roman instead
+\ifx\sf\UNDEFINED\def\sf{\rm}\fi
+
+% tabbing from plain TeX
+%
+\newif\ifus@ \newif\if@cr
+\newbox\tabs \newbox\tabsyet \newbox\tabsdone
+%
+\def\cleartabs{\global\setbox\tabsyet\null \setbox\tabs\null}
+\def\settabs{\setbox\tabs\null \futurelet\next\sett@b}
+\let\+=\relax % in case this file is being read in twice
+\def\sett@b{\ifx\next\+\let\next\relax
+    \def\next{\afterassignment\s@tt@b\let\next}%
+\else\let\next\s@tcols\fi\next}
+\def\s@tt@b{\let\next\relax\us@false\m@ketabbox}
+\def\tabalign{\us@true\m@ketabbox} % non-\outer version of \+
+\outer\def\+{\tabalign}
+\def\s@tcols#1\columns{\count@#1 \dimen@\hsize
+  \loop\ifnum\count@>\z@ \@nother \repeat}
+\def\@nother{\dimen@ii\dimen@ \divide\dimen@ii\count@
+  \setbox\tabs\hbox{\hbox to\dimen@ii{}\unhbox\tabs}%
+  \advance\dimen@-\dimen@ii \advance\count@\m@ne}
+%
+\def\m@ketabbox{\begingroup
+  \global\setbox\tabsyet\copy\tabs
+  \global\setbox\tabsdone\null
+  \def\cr{\@crtrue\crcr\egroup\egroup
+    \ifus@\unvbox\z@\lastbox\fi\endgroup
+    \setbox\tabs\hbox{\unhbox\tabsyet\unhbox\tabsdone}}%
+  \setbox\z@\vbox\bgroup\@crfalse
+    \ialign\bgroup&\t@bbox##\t@bb@x\crcr}
+%
+\def\t@bbox{\setbox\z@\hbox\bgroup}
+\def\t@bb@x{\if@cr\egroup % now \box\z@ holds the column
+  \else\hss\egroup \global\setbox\tabsyet\hbox{\unhbox\tabsyet
+      \global\setbox\@ne\lastbox}% now \box\@ne holds its size
+    \ifvoid\@ne\global\setbox\@ne\hbox to\wd\z@{}%
+    \else\setbox\z@\hbox to\wd\@ne{\unhbox\z@}\fi
+    \global\setbox\tabsdone\hbox{\box\@ne\unhbox\tabsdone}\fi
+  \box\z@}
+% finished (re)defining TeX's tabbing macros
+
+% above from plain.tex; was disabled in lplain.tex.  Do
+% not modify above unless you really know what you're
+% up to.  Make all changes you want to following code.
+% The new env is preferable to LaTeX's tabbing env
+% since latter accepts only a small number of tabs
+
+% following retrieves something like LaTeX's tabbing
+% env without the above problem (it also creates a box
+% for easy manipulation!)
+
+\def\lat@xtabbing{\leavevmode\hbox\bgroup\vbox\bgroup
+ \def\={\cleartabs&} \def\>{&} \def\\{\cr\tabalign} \tabalign}
+\def\endlat@xtabbing{\cr\egroup\egroup}
+
+%new
+
+\def\lat@xtabbing{\begingroup
+\def\={\cleartabs&} \def\>{&}%
+\def\\{\cr\tabalign\lat@xtabbingleftmost}%
+\tabalign\lat@xtabbingleftmost}
+\def\endlat@xtabbing{\cr\endgroup}
+\let\lat@xtabbingleftmost\relax
+
+% stuff for formating Scheme code
+
+\newskip\par@nlen \newskip\brack@tlen \newskip\quot@len
+\newskip\h@lflambda
+
+\newbox\garb@ge
+\def\s@ttowidth#1#2{\setbox\garb@ge\hbox{#2}#1\wd\garb@ge\relax}
+
+\s@ttowidth\par@nlen{$($}       % size of paren
+\s@ttowidth\brack@tlen{$[$}     % size of bracket
+\s@ttowidth\quot@len{'}         % size of quote indentation
+\s@ttowidth\h@lflambda{ii}      % size of half of lambda indentation
+
+\def\PRN{\hskip\par@nlen}       % these are used by SLaTeX's codesetter
+\def\BKT{\hskip\brack@tlen}
+\def\QUO{\hskip\quot@len}
+\def\HL{\hskip\h@lflambda}
+
+\newskip\abovecodeskip \newskip\belowcodeskip
+\newskip\leftcodeskip \newskip\rightcodeskip
+
+% the following default assignments give a flushleft
+% display
+
+\abovecodeskip=\medskipamount \belowcodeskip=\medskipamount
+\leftcodeskip=0pt \rightcodeskip=0pt
+
+% adjust above,below,left,right codeskip's to personal
+% taste
+
+% for centered displays
+%
+% \leftcodeskip=0pt plus 1fil
+% \rightcodeskip=0pt plus 1fil
+%
+% if \rightcodeskip != 0pt, pagebreaks within Scheme
+% blocks in {schemedisplay} are disabled
+
+\def\checkfollpar{\futurelet\next\checkfollparII}
+\def\checkfollparII{\ifx\next\par\let\next\relax
+\else\par\noindent\let\next\ignorespaces\fi\next}
+
+% the following are the default font assignments for
+% words in code.  Change them to suit personal taste
+
+\def\keywordfont#1{{\bf #1}}
+\def\variablefont#1{{\it #1\/}}
+\def\constantfont#1{{\sf #1}}
+\def\datafont#1{\constantfont{#1}}
+
+\def\schemecodehook{}
+
+%program listings that allow page breaks but
+%can't be centered
+
+\def\ZZZZschemedisplay{\edef\thez@skip{\the\z@skip}%
+\edef\@tempa{\the\rightcodeskip}%
+\ifx\@tempa\thez@skip\let\next\ZZZZschemeprogram
+\else\let\next\ZZZZschemeprogramII\fi\next}
+
+\def\endZZZZschemedisplay{\edef\thez@skip{\the\z@skip}%
+\edef\@tempa{\the\rightcodeskip}%
+\ifx\@tempa\thez@skip\let\next\endZZZZschemeprogram
+\else\let\next\endZZZZschemeprogramII\fi\next}
+
+\def\ZZZZschemeprogram{\vskip\abovecodeskip
+\begingroup
+\schemecodehook
+\let\sy=\keywordfont \let\cn=\constantfont
+\let\va=\variablefont \let\dt=\datafont
+\def\lat@xtabbingleftmost{\hskip\leftcodeskip\relax}%
+\lat@xtabbing}
+
+\def\endZZZZschemeprogram{\endlat@xtabbing
+\endgroup
+\vskip\belowcodeskip
+\ifusinglatex\let\next\@endparenv
+\else\let\next\checkfollpar\fi\next}
+
+\def\ZZZZschemeprogramII{\vskip\abovecodeskip
+\begingroup
+\noindent
+%\schemecodehook %\ZZZZschemebox already has it
+\hskip\leftcodeskip
+\ZZZZschemebox}
+
+\def\endZZZZschemeprogramII{\endZZZZschemebox
+\hskip\rightcodeskip
+\endgroup
+\vskip\belowcodeskip
+\ifusinglatex\let\next\@endparenv
+\else\let\next\checkfollpar\fi\next}
+
+%
+
+\def\ZZZZschemebox{%
+\leavevmode\hbox\bgroup\vbox\bgroup
+\schemecodehook
+\let\sy=\keywordfont \let\cn=\constantfont
+\let\va=\variablefont \let\dt=\datafont
+\lat@xtabbing}
+\def\endZZZZschemebox{\endlat@xtabbing
+\egroup\egroup\ignorespaces}
+
+%in-text
+
+\def\ZZZZschemecodeintext{\begingroup
+  \let\sy\keywordfont \let\cn\constantfont
+  \let\va\variablefont \let\dt\datafont}
+
+\def\endZZZZschemecodeintext{\endgroup\ignorespaces}
+
+\def\ZZZZschemeresultintext{\begingroup
+  \let\sy\datafont \let\cn\constantfont
+  \let\va\datafont \let\dt\datafont}
+
+\def\endZZZZschemeresultintext{\endgroup\ignorespaces}
+
+% \comm@nt<some-char>...text...<same-char> comments out
+% TeX source analogous to
+% \verb<some-char>...text...<same-char>.  Sp. case:
+% \comm@nt{...text...} == \comm@nt}...text...}
+
+\def\@makeother#1{\catcode`#112\relax}
+
+\def\comm@nt{%
+  \begingroup
+  \let\do\@makeother \dospecials
+  \@comm}
+
+\begingroup\catcode`\<1\catcode`\>2
+\catcode`\{12\catcode`\}12
+\long\gdef\@comm#1<%
+  \if#1{\long\def\@tempa ##1}<\endgroup>\else
+	\long\def\@tempa ##1#1<\endgroup>\fi
+  \@tempa>
+\endgroup
+
+% input file if possible, else relax
+
+\def\inputifpossible#1{%
+  \immediate\openin0=#1\relax%
+  \ifeof0\relax\else\input#1\relax\fi%
+  \immediate\closein0}
+
+\def\ZZZZinput#1{\input#1\relax}
+
+% you may replace the above by
+%
+% \def\ZZZZinput#1{\inputifpossible{#1}}
+%
+% if you just want to call (La)TeX on your text
+% ignoring the portions that need to be SLaTeX'ed
+
+%use \subjobname rather than \jobname to generate
+%slatex's temp files --- this allows us to change
+%\subjobname for more control, if necessary.
+
+\let\subjobname\jobname
+
+% counter for generating temp file names
+
+\newcount\sch@mefilenamecount
+\sch@mefilenamecount=-1
+
+% To produce displayed Scheme code:
+% in LaTeX:
+% \begin{schemedisplay}
+%   ... indented program (with sev'l lines) ...
+% \end{schemedisplay}
+%
+% in TeX:
+% \schemedisplay
+%   ... indented program (with sev'l lines) ...
+% \endschemedisplay
+
+\begingroup\catcode`\|=0\catcode`\[=1\catcode`\]=2%
+\catcode`\{=12\catcode`\}=12\catcode`\\=12%
+|gdef|defschemedisplaytoken#1[%
+  |long|expandafter|gdef|csname ZZZZcomment#1|endcsname[%
+    |begingroup
+    |let|do|@makeother |dospecials
+    |csname ZZZZcomment|slatexenvstyle II#1|endcsname]%
+  |long|expandafter|gdef|csname ZZZZcommentlatexII#1|endcsname##1\end{#1}[%
+    |endgroup|end[#1]]%
+  |long|expandafter|gdef|csname ZZZZcommenttexII#1|endcsname##1\end#1[%
+    |endgroup|csname end#1|endcsname]%
+  |long|expandafter|gdef|csname #1|endcsname[%
+    |global|advance|sch@mefilenamecount by 1|relax%
+    |ZZZZinput[|filehider Z|number|sch@mefilenamecount|subjobname.tex]%
+    |csname ZZZZcomment#1|endcsname]%
+  |long|expandafter|gdef|csname end#1|endcsname[]]%
+|endgroup
+
+\defschemedisplaytoken{schemedisplay}
+
+\def\undefschemedisplaytoken#1{%
+  \expandafter\gdef\csname#1\endcsname{\UNDEFINED}}
+
+% \scheme|...program fragment...| produces Scheme code
+% in-text.  Sp. case: \scheme{...} == \scheme}...}
+
+\def\defschemetoken#1{%
+  \long\expandafter\def\csname#1\endcsname{%
+    \global\advance\sch@mefilenamecount by 1\relax%
+    \ZZZZinput{\filehider Z\number\sch@mefilenamecount\subjobname.tex}%
+    \comm@nt}}
+\defschemetoken{scheme}
+
+\def\undefschemetoken#1{%
+  \expandafter\gdef\csname#1\endcsname{\UNDEFINED}}
+
+% \schemeresult|...program fragment...| produces a
+% Scheme code result in-text: i.e. keyword or variable
+% fonts are replaced by the data font.  Sp. case:
+% \schemeresult{...} == \schemeresult}...}
+
+\def\defschemeresulttoken#1{%
+  \long\expandafter\def\csname#1\endcsname{%
+    \global\advance\sch@mefilenamecount by 1\relax%
+    \ZZZZinput{\filehider Z\number\sch@mefilenamecount\subjobname.tex}%
+    \comm@nt}}
+\defschemeresulttoken{schemeresult}
+
+\def\undefschemeresulttoken#1{%
+  \expandafter\gdef\csname#1\endcsname{\UNDEFINED}}
+
+% To produce a box of Scheme code:
+% in LaTeX:
+% \begin{schemebox}
+%   ... indented program (with sev'l lines) ...
+%  \end{schemebox}
+%
+% in TeX:
+% \schemebox
+%   ... indented program (with sev'l lines) ...
+% \endschemebox
+
+\begingroup\catcode`\|=0\catcode`\[=1\catcode`\]=2%
+\catcode`\{=12\catcode`\}=12\catcode`\\=12%
+|gdef|defschemeboxtoken#1[%
+  |long|expandafter|gdef|csname ZZZZcomment#1|endcsname[%
+    |begingroup
+    |let|do|@makeother |dospecials
+    |csname ZZZZcomment|slatexenvstyle II#1|endcsname]%
+  |long|expandafter|gdef|csname ZZZZcommentlatexII#1|endcsname##1\end{#1}[%
+    |endgroup|end[#1]]%
+  |long|expandafter|gdef|csname ZZZZcommenttexII#1|endcsname##1\end#1[%
+    |endgroup|csname end#1|endcsname]%
+  |long|expandafter|gdef|csname #1|endcsname[%
+    |global|advance|sch@mefilenamecount by 1|relax%
+    |ZZZZinput[|filehider Z|number|sch@mefilenamecount|subjobname.tex]%
+    |csname ZZZZcomment#1|endcsname]%
+  |long|expandafter|gdef|csname end#1|endcsname[]]%
+|endgroup
+
+\defschemeboxtoken{schemebox}
+
+\def\undefschemeboxtoken#1{%
+  \expandafter\gdef\csname#1\endcsname{\UNDEFINED}}
+
+% for wholesale dumping of all-Scheme files into TeX (converting
+% .scm files to .tex),
+% use
+%   \schemeinput{<filename>}
+% .scm, .ss, .s extensions optional
+
+\def\defschemeinputtoken#1{%
+  \long\expandafter\gdef\csname#1\endcsname##1{%
+    \global\advance\sch@mefilenamecount by 1\relax%
+    \ZZZZinput{\filehider Z\number\sch@mefilenamecount\subjobname.tex}}}
+\defschemeinputtoken{schemeinput}
+
+\def\undefschemeinputtoken#1{%
+  \expandafter\gdef\csname#1\endcsname{\UNDEFINED}}
+
+% delineating a region that features typeset code
+% not usually needed, except when using \scheme and schemedisplay
+% inside macro-args and macro-definition-bodies
+% in LaTeX:
+% \begin{schemeregion}
+%   ...
+% \end{schemeregion}
+%
+% in TeX:
+% \schemeregion
+% ...
+% \endschemeregion
+
+\begingroup\catcode`\|=0\catcode`\[=1\catcode`\]=2%
+\catcode`\{=12\catcode`\}=12\catcode`\\=12%
+|gdef|defschemeregiontoken#1[%
+  |long|expandafter|gdef|csname ZZZZcomment#1|endcsname[%
+    |begingroup
+    |let|do|@makeother |dospecials
+    |csname ZZZZcomment|slatexenvstyle II#1|endcsname]%
+  |long|expandafter|gdef|csname ZZZZcommentlatexII#1|endcsname##1\end{#1}[%
+    |endgroup|end[#1]]%
+  |long|expandafter|gdef|csname ZZZZcommenttexII#1|endcsname##1\end#1[%
+    |endgroup|csname end#1|endcsname]%
+  |long|expandafter|gdef|csname #1|endcsname[%
+    |global|advance|sch@mefilenamecount by 1|relax%
+    |ZZZZinput[|filehider Z|number|sch@mefilenamecount|subjobname.tex]%
+    |csname ZZZZcomment#1|endcsname]%
+  |long|expandafter|gdef|csname end#1|endcsname[]]%
+|endgroup
+
+\defschemeregiontoken{schemeregion}
+
+\def\undefschemeregiontoken#1{%
+  \expandafter\gdef\csname#1\endcsname{\UNDEFINED}}
+
+% introducing new code-tokens to the keyword, variable and constant
+% categories
+
+\def\comm@ntII{%
+  \begingroup
+  \let\do\@makeother \dospecials
+  \@commII}
+
+\begingroup\catcode`\[1\catcode`\]2
+\catcode`\{12\catcode`\}12
+\long\gdef\@commII{[%
+  \long\def\@tempa ##1}[\endgroup]\@tempa]%
+\endgroup
+
+\let\setkeyword\comm@ntII
+\let\setvariable\comm@ntII
+\let\setconstant\comm@ntII
+
+% \defschememathescape makes the succeeding grouped character an
+% escape into latex math from within Scheme code;
+% this character can't be }
+
+\let\defschememathescape\comm@ntII
+\let\undefschememathescape\comm@ntII
+
+% telling SLaTeX that a certain Scheme identifier is to
+% be replaced by the specified LaTeX expression.
+% Useful for generating ``mathematical''-looking
+% typeset code even though the corresponding Scheme
+% code is ascii as usual and doesn't violate
+% identifier-naming rules
+
+\def\setspecialsymbol{%
+  \begingroup
+  \let\do\@makeother \dospecials
+  \@commIII}
+
+\begingroup\catcode`\[1\catcode`\]2
+\catcode`\{12\catcode`\}12
+\long\gdef\@commIII{[%
+  \long\def\@tempa ##1}[\endgroup\@gobbleI]\@tempa]%
+\endgroup
+
+\def\@gobbleI#1{}
+
+% \unsetspecialsymbol strips Scheme identifier(s) of
+% any ``mathematical'' look lent by the above
+
+\let\unsetspecialsymbol\comm@ntII
+
+% enabling/disabling slatex
+
+\def\slatexdisable#1{\expandafter\gdef\csname#1\endcsname{}}
+
+% \schemecasesensitive takes either true or false as
+% argument
+
+\def\schemecasesensitive#1{}
+
+%for latex only: use \slatexseparateincludes before the
+%occurrence of any Scheme code in your file, if you
+%want the various \include'd files to have their own
+%pool of temporary slatex files.  This lets you juggle
+%your \include's in successive runs of LaTeX without
+%having to worry that the temp. files may interfere.
+%By default, only a single pool of temp files is used.
+%Warning: On DOS, if your \include'd files have fairly
+%similar names, avoid \slatexseparateincludes since the
+%short filenames on DOS will likely confuse the temp
+%file pools of different \include files.
+
+\def\slatexseparateincludes{%
+\gdef\include##1{{\def\subjobname{##1}%
+\sch@mefilenamecount=-1%
+\@include##1 }}}
+
+% convenient abbreviations for characters
+
+\begingroup
+\catcode`\|=0
+|catcode`|\=12
+|gdef|ttbackslash{{|tt|catcode`|\=12\}}
+|endgroup
+\mathchardef\lt="313C
+\mathchardef\gt="313E
+\begingroup
+  \catcode`\@12%
+  \global\let\atsign@%
+\endgroup
+\chardef\dq=`\"
+
+% leading character of slatex filenames: . for unix to
+% keep them out of the way
+
+\def\filehider{.}
+
+% since the above doesn't work of dos, slatex on dos
+% will use a different character, and make the
+% redefinition available through the following
+
+\inputifpossible{xZfilhid.tex}
+
+% @ is no longer a letter for TeX
+
+\ifusinglatex\relax\else
+\catcode`@\atcatcodebeforeslatex
+\fi
+
+\message{*** Check: Are you sure you called SLaTeX? ***}
Trap