upload apache
[bottlenecks.git] / rubbos / app / apache2 / manual / style / latex / atbeginend.sty
1 % atbeginend.sty 
2 %
3 % defines
4 % \BeforeBegin{environment}{code-to-execute}
5 % \BeforeEnd  {environment}{code-to-execute}
6 % \AfterBegin {environment}{code-to-execute}
7 % \AfterEnd   {environment}{code-to-execute}
8 %
9 % Save \begin and \end to \BeginEnvironment and \EndEnvironment
10 \let\BeginEnvironment=\begin
11 \let\EndEnvironment=\end
12
13 \def\IfUnDef#1{\expandafter\ifx\csname#1\endcsname\relax}
14
15 % Null command needed to for \nothing{something}=.nothing.
16 \def\NullCom#1{}
17
18 \def\begin#1{%
19 %
20 % if defined \BeforeBeg for this environment, execute it
21 \IfUnDef{BeforeBeg#1}\else\csname BeforeBeg#1\endcsname\fi%
22 %
23 %
24 %
25 \IfUnDef{AfterBeg#1}% This is done to skip the command for environments
26                      % which can take arguments, like multicols; YOU MUST NOT
27                      % USE \AfterBegin{...}{...} for such environments!
28         \let\SaveBegEng=\BeginEnvironment%
29 \else%
30         % Start this environment
31                 \BeginEnvironment{#1}%
32         % and execute code after \begin{environment}
33                 \csname AfterBeg#1\endcsname%
34         % 
35         \let\SaveBegEng=\NullCom%
36 \fi%
37 \SaveBegEng{#1}%
38 }
39
40
41 \def\end#1{%
42 %
43 % execute code before \end{environment}
44 \IfUnDef{BeforeEnd#1}\else\csname BeforeEnd#1\endcsname\fi%
45 %
46 % close this environment
47 \EndEnvironment{#1}%
48 %
49 % and execute code after \begin{environment}
50 \IfUnDef{AfterEnd#1}\else\csname AfterEnd#1\endcsname\fi%
51 }
52
53
54 %% Now, define commands
55 % \BeforeBegin{environment}{code-to-execute}
56 % \BeforeEnd  {environment}{code-to-execute}
57 % \AfterBegin {environment}{code-to-execute}
58 % \AfterEnd   {environment}{code-to-execute}
59
60 \def\BeforeBegin#1#2{\expandafter\gdef\csname BeforeBeg#1\endcsname
61 {#2}}
62 \def\BeforeEnd  #1#2{\expandafter\gdef\csname BeforeEnd#1\endcsname
63 {#2}}
64 \def\AfterBegin #1#2{\expandafter\gdef\csname AfterBeg#1\endcsname {#2}}
65 \def\AfterEnd   #1#2{\expandafter\gdef\csname AfterEnd#1\endcsname{#2}}