123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183 |
- %if False
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- % polycode.fmt
- %
- % better code environment for poly style in lhs2TeX
- %
- % Permission is granted to include this file (or parts of this file)
- % literally into other documents, regardless of the conditions or
- % license applying to these documents.
- %
- % Andres Loeh, February 2006, ver 1.9
- %
- % TODO: use \[ \] in arrayhs (fleqn problem)
- % think about penalties and better pagebreaks
- % by using \allowdisplaybreaks
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %endif
- %if not lhs2tex_polycode_fmt_read
- %let lhs2tex_polycode_fmt_read = True
- %include lhs2TeX.fmt
- %
- %if style /= newcode
- %
- %if False
- % The follwing subst replaces the bad default from lhs2TeX.fmt.
- % The idea is to just provide the basic structure in the subst, and
- % let the rest be handled by a LaTeX environment.
- %endif
- %
- %subst code a = "\begin{hscode}\SaveRestoreHook'n" a "\ColumnHook'n\end{hscode}\resethooks'n"
- %
- %
- % This package provides two environments suitable to take the place
- % of hscode, called "plainhscode" and "arrayhscode".
- %
- % The plain environment surrounds each code block by vertical space,
- % and it uses \abovedisplayskip and \belowdisplayskip to get spacing
- % similar to formulas. Note that if these dimensions are changed,
- % the spacing around displayed math formulas changes as well.
- % All code is indented using \leftskip.
- %
- % Changed 19.08.2004 to reflect changes in colorcode. Should work with
- % CodeGroup.sty.
- %
- \ReadOnlyOnce{polycode.fmt}%
- \makeatletter
- \newcommand{\hsnewpar}[1]%
- {{\parskip=0pt\parindent=0pt\par\vskip #1\noindent}}
- % can be used, for instance, to redefine the code size, by setting the
- % command to \small or something alike
- \newcommand{\hscodestyle}{}
- % The command \sethscode can be used to switch the code formatting
- % behaviour by mapping the hscode environment in the subst directive
- % to a new LaTeX environment.
- \newcommand{\sethscode}[1]%
- {\expandafter\let\expandafter\hscode\csname #1\endcsname
- \expandafter\let\expandafter\endhscode\csname end#1\endcsname}
- % "compatibility" mode restores the non-polycode.fmt layout.
- \newenvironment{compathscode}%
- {\par\noindent
- \advance\leftskip\mathindent
- \hscodestyle
- \let\\=\@@normalcr
- \(\pboxed}%
- {\endpboxed\)%
- \par\noindent
- \ignorespacesafterend}
- \newcommand{\compaths}{\sethscode{compathscode}}
- % "plain" mode is the proposed default.
- \newenvironment{plainhscode}%
- {\hsnewpar\abovedisplayskip
- \advance\leftskip\mathindent
- \hscodestyle
- \let\\=\@@normalcr
- \(\pboxed}%
- {\endpboxed\)%
- \hsnewpar\belowdisplayskip
- \ignorespacesafterend}
- % Here, we make plainhscode the default environment.
- \newcommand{\plainhs}{\sethscode{plainhscode}}
- \plainhs
- % The arrayhscode is like plain, but makes use of polytable's
- % parray environment which disallows page breaks in code blocks.
- \newenvironment{arrayhscode}%
- {\hsnewpar\abovedisplayskip
- \advance\leftskip\mathindent
- \hscodestyle
- \let\\=\@@normalcr
- \(\parray}%
- {\endparray\)%
- \hsnewpar\belowdisplayskip
- \ignorespacesafterend}
- \newcommand{\arrayhs}{\sethscode{arrayhscode}}
- % The mathhscode environment also makes use of polytable's parray
- % environment. It is supposed to be used only inside math mode
- % (I used it to typeset the type rules in my thesis).
- \newenvironment{mathhscode}%
- {\parray}{\endparray}
- \newcommand{\mathhs}{\sethscode{mathhscode}}
- % texths is similar to mathhs, but works in text mode.
- \newenvironment{texthscode}%
- {\(\parray}{\endparray\)}
- \newcommand{\texths}{\sethscode{texthscode}}
- % The framed environment places code in a framed box.
- \def\codeframewidth{\arrayrulewidth}
- \RequirePackage{calc}
- \newenvironment{framedhscode}%
- {\parskip=\abovedisplayskip\par\noindent
- \hscodestyle
- \arrayrulewidth=\codeframewidth
- \tabular{@@{}||p{\linewidth-2\arraycolsep-2\arrayrulewidth-2pt}||@@{}}%
- \hline\framedhslinecorrect\\{-1.5ex}%
- \let\endoflinesave=\\
- \let\\=\@@normalcr
- \(\pboxed}%
- {\endpboxed\)%
- \framedhslinecorrect\endoflinesave{.5ex}\hline
- \endtabular
- \parskip=\belowdisplayskip\par\noindent
- \ignorespacesafterend}
- \newcommand{\framedhslinecorrect}[2]%
- {#1[#2]}
- \newcommand{\framedhs}{\sethscode{framedhscode}}
- % The inlinehscode environment is an experimental environment
- % that can be used to typeset displayed code inline.
- \newenvironment{inlinehscode}%
- {\(\def\column##1##2{}%
- \let\>\undefined\let\<\undefined\let\\\undefined
- \newcommand\>[1][]{}\newcommand\<[1][]{}\newcommand\\[1][]{}%
- \def\fromto##1##2##3{##3}%
- \def\nextline{}}{\) }%
- \newcommand{\inlinehs}{\sethscode{inlinehscode}}
- % The joincode environment is a separate environment that
- % can be used to surround and thereby connect multiple code
- % blocks.
- \newenvironment{joincode}%
- {\let\orighscode=\hscode
- \let\origendhscode=\endhscode
- \def\endhscode{\def\hscode{\endgroup\def\@@currenvir{hscode}\\}\begingroup}
- %\let\SaveRestoreHook=\empty
- %\let\ColumnHook=\empty
- %\let\resethooks=\empty
- \orighscode\def\hscode{\endgroup\def\@@currenvir{hscode}}}%
- {\origendhscode
- \global\let\hscode=\orighscode
- \global\let\endhscode=\origendhscode}%
- \makeatother
- \EndFmtInput
- %
- %endif
- %endif
|