%% %% This is file `environ.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% environ.dtx (with options: `package') %% %% __________________________________ %% Copyright (C) 2007 Will Robertson %% %% License information appended. %% \ProvidesPackage{environ}[2008/06/18 v0.2 A new way to define environments] \def\environbodyname#1{\def\env@BODY{#1}} \environbodyname\BODY \def\environfinalcode#1{% \def\env@finalcode{#1}} \environfinalcode{\ignorespacesafterend} \def\longdef@c#1{% \expandafter\long\expandafter\def\csname#1\endcsname} \catcode`\Q=3 \long\def\trim@spaces#1{\romannumeral-`\q\trim@trim@\noexpand#1Q Q} \long\def\trim@trim@#1 Q{\trim@trim@@#1Q} \long\def\trim@trim@@#1Q#2{#1} \catcode`\Q=11 \unless\ifdefined\collect@body \newtoks\@emptytoks \newtoks\@envbody \def\collect@body#1{% \@envbody{\expandafter#1\expandafter{\the\@envbody}}% \edef\process@envbody{\the\@envbody\noexpand\end{\@currenvir}}% \@envbody\@emptytoks \def\begin@stack{b}% \begingroup \expandafter\let\csname\@currenvir\endcsname\collect@@body \edef\process@envbody{% \expandafter\noexpand\csname\@currenvir\endcsname}% \process@envbody } \def\push@begins#1\begin#2{% \ifx\end#2\else b\expandafter\push@begins \fi} \def\addto@envbody#1{% \global\@envbody\expandafter{\the\@envbody#1}} \def\collect@@body#1\end#2{% \edef\begin@stack{% \push@begins#1\begin\end \expandafter\@gobble\begin@stack}% \ifx\@empty\begin@stack \endgroup \@checkend{#2}% \addto@envbody{#1}% \else \addto@envbody{#1\end{#2}}% \fi \process@envbody} \fi \long\def\Collect@Body#1{% \@envbody{\expandafter#1\expandafter{\the\@envbody}}% \edef\process@envbody{\the\@envbody\noexpand\end{\@currenvir}}% \@envbody\@emptytoks \def\begin@stack{b}% \begingroup \expandafter\let\csname\@currenvir\endcsname\Collect@@Body \edef\process@envbody{% \expandafter\noexpand\csname\@currenvir\endcsname}% \process@envbody } \long\def\Push@Begins#1\begin#2{% \ifx\end#2\else b\expandafter\Push@Begins \fi} \long\def\Addto@Envbody#1{% \global\@envbody\expandafter{\the\@envbody#1}} \long\def\Collect@@Body#1\end#2{% \edef\begin@stack{% \Push@Begins#1\begin\end\expandafter\@gobble\begin@stack}% \ifx\@empty\begin@stack \endgroup \@checkend{#2}% \Addto@Envbody{#1}% \else \Addto@Envbody{#1\end{#2}}% \fi \process@envbody} \def\NewEnviron{% \let\env@newcommand\newcommand \let\env@newenvironment\newenvironment \env@NewEnviron} \def\RenewEnviron{% \let\env@newcommand\renewcommand \let\env@newenvironment\renewenvironment \env@NewEnviron} \def\env@NewEnviron#1{% \@ifnextchar[ {\env@new@i{#1}} {\env@new@iii{#1}{}}} \def\env@new@i#1[#2]{% \@ifnextchar[ {\env@new@ii{#1}[#2]} {\env@new@iii{#1}{[#2]}}} \def\env@new@ii#1[#2][#3]{% \env@new@iii{#1}{[#2][#3]}} \long\def\env@new@iii#1#2#3{% \@temptokena={\env@new{#1}{#2}{#3}}% \@ifnextchar[{% \the\@temptokena }{% \expandafter\the\expandafter \@temptokena\expandafter[\env@finalcode]% }} \long\def\env@new#1#2#3[#4]{% \env@newenvironment{#1}{% \expandafter\Collect@Body\csname env@#1@parse\endcsname }{#4} \longdef@c{env@#1@parse}##1{% \csname env@#1@save@env\endcsname##1\env@nil \csname env@#1@process\endcsname##1\env@nil}% \expandafter\env@newcommand \csname env@#1@save@env\endcsname#2{\env@save}% \expandafter\env@newcommand \csname env@#1@process\endcsname#2{#3\env@ignore}} \long\def\env@save#1\env@nil{% \expandafter\edef\env@BODY{% \unexpanded\expandafter \expandafter\expandafter{\trim@spaces{#1}}}} \long\def\env@ignore#1\env@nil{} \newcommand\NewEnvironment{% \let\env@newenvironment\newenvironment \let\env@newcommand\newcommand \Make@Environment} \newcommand\RenewEnvironment{% \let\env@newenvironment\renewenvironment \let\env@newcommand\renewcommand \Make@Environment} \newcommand\Make@Environment[2]{% \expandafter\let\csname env@args@#1\endcsname\ignorespaces \env@newenvironment{#1}{% \expandafter\Collect@Body\csname env@@#1\endcsname}{\ignorespacesafterend}% \longdef@c{env@@#1}##1{% \csname env@@@#1\endcsname{% \csname env@args@#1\endcsname##1\unskip}}% \longdef@c{env@@@#1}##1{#2}} \newcommand\EnvironArgs[1]{% \@ifnextchar[ {\Env@Args{#1}} {\Env@Args{#1}[0]}} \long\def\Env@Args#1[#2]{% \@ifnextchar[ {\Env@@@Args{#1}[#2]} {\Env@@Args{#1}[#2]}} \long\def\Env@@Args#1[#2]#3{% \expandafter\renewcommand\csname env@args@#1\endcsname[#2]{% #3\ignorespaces}} \long\def\Env@@@Args#1[#2][#3]#4{% \expandafter\renewcommand\csname env@args@#1\endcsname[#2][#3]{% #4\ignorespaces}} %% %% Copyright (C) 2007 by Will Robertson %% %% Distributable under the LaTeX Project Public License, %% version 1.3c or higher (your choice). The latest version of %% this license is at: http://www.latex-project.org/lppl.txt %% %% This work is "maintained" (as per LPPL maintenance status) %% by Will Robertson. %% %% This work consists of the file environ.dtx %% and the derived files environ.pdf, %% environ.sty, and %% environ.ins. %% %% %% End of file `environ.sty'.