%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 2013, ver 1.12 % % 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 == poly % %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 \let\hspre\(\let\hspost\)% \pboxed}% {\endpboxed\)% \par\noindent \ignorespacesafterend} \newcommand{\compaths}{\sethscode{compathscode}} % "plain" mode is the proposed default. % It should now work with \centering. % This required some changes. The old version % is still available for reference as oldplainhscode. \newenvironment{plainhscode}% {\hsnewpar\abovedisplayskip \advance\leftskip\mathindent \hscodestyle \let\hspre\(\let\hspost\)% \pboxed}% {\endpboxed% \hsnewpar\belowdisplayskip \ignorespacesafterend} \newenvironment{oldplainhscode}% {\hsnewpar\abovedisplayskip \advance\leftskip\mathindent \hscodestyle \let\\=\@@normalcr \(\pboxed}% {\endpboxed\)% \hsnewpar\belowdisplayskip \ignorespacesafterend} % Here, we make plainhscode the default environment. \newcommand{\plainhs}{\sethscode{plainhscode}} \newcommand{\oldplainhs}{\sethscode{oldplainhscode}} \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