[project @ 2001-09-24 22:29:02 by gla]
authorgla <unknown>
Mon, 24 Sep 2001 22:29:02 +0000 (22:29 +0000)
committergla <unknown>
Mon, 24 Sep 2001 22:29:02 +0000 (22:29 +0000)
ghc/docs/storage-mgt/code.sty [new file with mode: 0644]

diff --git a/ghc/docs/storage-mgt/code.sty b/ghc/docs/storage-mgt/code.sty
new file mode 100644 (file)
index 0000000..f5ec2f5
--- /dev/null
@@ -0,0 +1,83 @@
+\r
+% I have enclosed code.sty, which achieves 99% of what you want without\r
+% the need for a separate preprocessor. At the start of your document\r
+% you write "\makeatactive". From then on, inline code is written as @\x\r
+% -> x_1 & y@. The only difference with what you are used to, is that\r
+% instead of\r
+% \r
+% @\r
+%   foo :: Int -> Int\r
+%   foo = \n -> n+1\r
+% @\r
+% \r
+% you have to write\r
+% \r
+% \begin{code}\r
+%   foo :: Int -> Int\r
+%   foo = \n -> n+1\r
+% \end{code}\r
+% \r
+% and that you cannot use @ in \section{} and \caption{}. For the paper that occured twice, in which case I had to replace @...@ b y \texttt{...}.\r
+% \r
+% \r
+% code.sty  --- nice verbatim mode for code\r
+\r
+\def\icode{%\r
+    \relax\ifmmode\hbox\else\leavevmode\null\fi\r
+    \bgroup\r
+    %\begingroup\r
+    \@noligs\r
+    \verbatim@font\r
+    \verb@eol@error\r
+    \let\do\@makeother \dospecials\r
+    \@vobeyspaces\r
+    \frenchspacing\r
+    \@icode}\r
+\def\@icode#1{%\r
+    \catcode`#1\active\r
+    \lccode`\~`#1%\r
+    \lowercase{\let~\icode@egroup}}\r
+\def\icode@egroup{%\r
+    %\endgroup}\r
+    \egroup}\r
+\r
+% The \makeatactive command:\r
+% makes @ active, in such a way that @...@ behaves as \icode@...@:\r
+{\r
+\catcode`@=\active\r
+\gdef\makeatactive{\r
+     \catcode`@=\active \def@{\icode@}\r
+     % Since @ becomes active, it has to be taken care of in verbatim-modes:\r
+     \let\olddospecials\dospecials \def\dospecials{\do\@\olddospecials}}\r
+}\r
+% \gdef\makeatother{\g@remfrom@specials{\@}\@makeother\@}\r
+\gdef\makeatother{\@makeother\@}\r
+\r
+\newcommand\codetabwidth{42pt}\r
+{\catcode`\^^I=\active%\r
+\gdef\@vobeytab{\catcode`\^^I\active\let^^I\@xobeytab}}\r
+\def\@xobeytab{\leavevmode\penalty10000\hskip\codetabwidth}\r
+\r
+\begingroup \catcode `|=0 \catcode `[= 1\r
+\catcode`]=2 \catcode `\{=12 \catcode `\}=12\r
+\catcode`\\=12 |gdef|@xcode#1\end{code}[#1|end[code]]\r
+|endgroup\r
+\def\@code{\trivlist \item\relax\r
+  \if@minipage\else\vskip\parskip\fi\r
+  \leftskip\@totalleftmargin\rightskip\z@skip\r
+  \parindent\z@\parfillskip\@flushglue\parskip\z@skip\r
+  \@@par\r
+  \@tempswafalse\r
+  \def\par{%\r
+    \if@tempswa\r
+      \leavevmode \null \@@par\penalty\interlinepenalty\r
+    \else\r
+      \@tempswatrue\r
+      \ifhmode\@@par\penalty\interlinepenalty\fi\r
+    \fi}%\r
+  \obeylines \verbatim@font \@noligs\r
+  \let\do\@makeother \dospecials\r
+  \everypar \expandafter{\the\everypar \unpenalty}%\r
+}\r
+\def\code{\@code \frenchspacing\@vobeytab\@vobeyspaces \@xcode}\r
+\def\endcode{\if@newlist \leavevmode\fi\endtrivlist}\r