atbeginend.sty revision 273eafe6bf1d6f7e307eada091fef9a80ab1f440
beaad6ac31022179c44d88536811e9ccd9425696nd% atbeginend.sty
beaad6ac31022179c44d88536811e9ccd9425696nd%
beaad6ac31022179c44d88536811e9ccd9425696nd% Copyright 2003-2005 The Apache Software Foundation or its licensors,
db878466c5e95073429dda0bdd001f45e9486e16fielding% as applicable.
db878466c5e95073429dda0bdd001f45e9486e16fielding%
db878466c5e95073429dda0bdd001f45e9486e16fielding% Licensed under the Apache License, Version 2.0 (the "License");
db878466c5e95073429dda0bdd001f45e9486e16fielding% you may not use this file except in compliance with the License.
db878466c5e95073429dda0bdd001f45e9486e16fielding% You may obtain a copy of the License at
db878466c5e95073429dda0bdd001f45e9486e16fielding%
beaad6ac31022179c44d88536811e9ccd9425696nd% http://www.apache.org/licenses/LICENSE-2.0
beaad6ac31022179c44d88536811e9ccd9425696nd%
beaad6ac31022179c44d88536811e9ccd9425696nd% Unless required by applicable law or agreed to in writing, software
beaad6ac31022179c44d88536811e9ccd9425696nd% distributed under the License is distributed on an "AS IS" BASIS,
beaad6ac31022179c44d88536811e9ccd9425696nd% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
beaad6ac31022179c44d88536811e9ccd9425696nd% See the License for the specific language governing permissions and
beaad6ac31022179c44d88536811e9ccd9425696nd% limitations under the License.
beaad6ac31022179c44d88536811e9ccd9425696nd
beaad6ac31022179c44d88536811e9ccd9425696nd% defines
beaad6ac31022179c44d88536811e9ccd9425696nd% \BeforeBegin{environment}{code-to-execute}
01c674544bd4c211141bcd9fb09b96ffc18c6c3dnd% \BeforeEnd {environment}{code-to-execute}
01c674544bd4c211141bcd9fb09b96ffc18c6c3dnd% \AfterBegin {environment}{code-to-execute}
7e68fce3cbd2246164e045a51ecd77f9f26680ednd% \AfterEnd {environment}{code-to-execute}
d7e78dbedfc2093a291c4e52eda53c4cbdd606a1nd%
d7e78dbedfc2093a291c4e52eda53c4cbdd606a1nd% Save \begin and \end to \BeginEnvironment and \EndEnvironment
01c674544bd4c211141bcd9fb09b96ffc18c6c3dnd\let\BeginEnvironment=\begin
3726777f47ac4bba3e21b075905959bbea47e72eerikabele\let\EndEnvironment=\end
3726777f47ac4bba3e21b075905959bbea47e72eerikabele
3726777f47ac4bba3e21b075905959bbea47e72eerikabele\def\IfUnDef#1{\expandafter\ifx\csname#1\endcsname\relax}
3726777f47ac4bba3e21b075905959bbea47e72eerikabele
7e68fce3cbd2246164e045a51ecd77f9f26680ednd% Null command needed to for \nothing{something}=.nothing.
7e68fce3cbd2246164e045a51ecd77f9f26680ednd\def\NullCom#1{}
7e68fce3cbd2246164e045a51ecd77f9f26680ednd
7e68fce3cbd2246164e045a51ecd77f9f26680ednd\def\begin#1{%
3726777f47ac4bba3e21b075905959bbea47e72eerikabele%
7e68fce3cbd2246164e045a51ecd77f9f26680ednd% if defined \BeforeBeg for this environment, execute it
f1110149b5b6c28ecc39d1958d98ad9cfa8e41f3nd\IfUnDef{BeforeBeg#1}\else\csname BeforeBeg#1\endcsname\fi%
7e68fce3cbd2246164e045a51ecd77f9f26680ednd%
e5343521634b71f10f0e88374d88bd5a45f75f68nd%
66e48875fca2df6669dab4f2690ee36c6913c0ffnd%
66e48875fca2df6669dab4f2690ee36c6913c0ffnd\IfUnDef{AfterBeg#1}% This is done to skip the command for environments
7e68fce3cbd2246164e045a51ecd77f9f26680ednd % which can take arguments, like multicols; YOU MUST NOT
7e68fce3cbd2246164e045a51ecd77f9f26680ednd % USE \AfterBegin{...}{...} for such environments!
3726777f47ac4bba3e21b075905959bbea47e72eerikabele \let\SaveBegEng=\BeginEnvironment%
7e68fce3cbd2246164e045a51ecd77f9f26680ednd\else%
7e68fce3cbd2246164e045a51ecd77f9f26680ednd % Start this environment
7e68fce3cbd2246164e045a51ecd77f9f26680ednd \BeginEnvironment{#1}%
bdbf46e4950b6f633073f803486962e82c2f086and % and execute code after \begin{environment}
7e68fce3cbd2246164e045a51ecd77f9f26680ednd \csname AfterBeg#1\endcsname%
7e68fce3cbd2246164e045a51ecd77f9f26680ednd %
7e68fce3cbd2246164e045a51ecd77f9f26680ednd \let\SaveBegEng=\NullCom%
fffabed77cd6264da64fa3d267243d1d76897049nd\fi%
7e68fce3cbd2246164e045a51ecd77f9f26680ednd\SaveBegEng{#1}%
7e68fce3cbd2246164e045a51ecd77f9f26680ednd}
7e68fce3cbd2246164e045a51ecd77f9f26680ednd
f4a6ce7d0d0311e4da2d4df6812263c562a05a3end
f4a6ce7d0d0311e4da2d4df6812263c562a05a3end\def\end#1{%
7e68fce3cbd2246164e045a51ecd77f9f26680ednd%
7e68fce3cbd2246164e045a51ecd77f9f26680ednd% execute code before \end{environment}
7e68fce3cbd2246164e045a51ecd77f9f26680ednd\IfUnDef{BeforeEnd#1}\else\csname BeforeEnd#1\endcsname\fi%
7e68fce3cbd2246164e045a51ecd77f9f26680ednd%
7e68fce3cbd2246164e045a51ecd77f9f26680ednd% close this environment
7e68fce3cbd2246164e045a51ecd77f9f26680ednd\EndEnvironment{#1}%
7e68fce3cbd2246164e045a51ecd77f9f26680ednd%
7e68fce3cbd2246164e045a51ecd77f9f26680ednd% and execute code after \begin{environment}
7e68fce3cbd2246164e045a51ecd77f9f26680ednd\IfUnDef{AfterEnd#1}\else\csname AfterEnd#1\endcsname\fi%
7e68fce3cbd2246164e045a51ecd77f9f26680ednd}
7e68fce3cbd2246164e045a51ecd77f9f26680ednd
7e68fce3cbd2246164e045a51ecd77f9f26680ednd
7e68fce3cbd2246164e045a51ecd77f9f26680ednd%% Now, define commands
7e68fce3cbd2246164e045a51ecd77f9f26680ednd% \BeforeBegin{environment}{code-to-execute}
7e68fce3cbd2246164e045a51ecd77f9f26680ednd% \BeforeEnd {environment}{code-to-execute}
7e68fce3cbd2246164e045a51ecd77f9f26680ednd% \AfterBegin {environment}{code-to-execute}
7e68fce3cbd2246164e045a51ecd77f9f26680ednd% \AfterEnd {environment}{code-to-execute}
f1110149b5b6c28ecc39d1958d98ad9cfa8e41f3nd
7e68fce3cbd2246164e045a51ecd77f9f26680ednd\def\BeforeBegin#1#2{\expandafter\gdef\csname BeforeBeg#1\endcsname
7e68fce3cbd2246164e045a51ecd77f9f26680ednd{#2}}
7e68fce3cbd2246164e045a51ecd77f9f26680ednd\def\BeforeEnd #1#2{\expandafter\gdef\csname BeforeEnd#1\endcsname
7e68fce3cbd2246164e045a51ecd77f9f26680ednd{#2}}
e5343521634b71f10f0e88374d88bd5a45f75f68nd\def\AfterBegin #1#2{\expandafter\gdef\csname AfterBeg#1\endcsname {#2}}
7e68fce3cbd2246164e045a51ecd77f9f26680ednd\def\AfterEnd #1#2{\expandafter\gdef\csname AfterEnd#1\endcsname{#2}}
bdbf46e4950b6f633073f803486962e82c2f086and