summaryrefslogtreecommitdiffstats
path: root/rubbos/app/apache2/manual/style/latex/atbeginend.sty
blob: 8729fa6caee6345b434c77499b0bb96cda4b3129 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
% atbeginend.sty 
%
% defines
% \BeforeBegin{environment}{code-to-execute}
% \BeforeEnd  {environment}{code-to-execute}
% \AfterBegin {environment}{code-to-execute}
% \AfterEnd   {environment}{code-to-execute}
%
% Save \begin and \end to \BeginEnvironment and \EndEnvironment
\let\BeginEnvironment=\begin
\let\EndEnvironment=\end

\def\IfUnDef#1{\expandafter\ifx\csname#1\endcsname\relax}

% Null command needed to for \nothing{something}=.nothing.
\def\NullCom#1{}

\def\begin#1{%
%
% if defined \BeforeBeg for this environment, execute it
\IfUnDef{BeforeBeg#1}\else\csname BeforeBeg#1\endcsname\fi%
%
%
%
\IfUnDef{AfterBeg#1}% This is done to skip the command for environments
		     % which can take arguments, like multicols; YOU MUST NOT
		     % USE \AfterBegin{...}{...} for such environments!
	\let\SaveBegEng=\BeginEnvironment%
\else%
	% Start this environment
		\BeginEnvironment{#1}%
	% and execute code after \begin{environment}
		\csname AfterBeg#1\endcsname%
	% 
	\let\SaveBegEng=\NullCom%
\fi%
\SaveBegEng{#1}%
}


\def\end#1{%
%
% execute code before \end{environment}
\IfUnDef{BeforeEnd#1}\else\csname BeforeEnd#1\endcsname\fi%
%
% close this environment
\EndEnvironment{#1}%
%
% and execute code after \begin{environment}
\IfUnDef{AfterEnd#1}\else\csname AfterEnd#1\endcsname\fi%
}


%% Now, define commands
% \BeforeBegin{environment}{code-to-execute}
% \BeforeEnd  {environment}{code-to-execute}
% \AfterBegin {environment}{code-to-execute}
% \AfterEnd   {environment}{code-to-execute}

\def\BeforeBegin#1#2{\expandafter\gdef\csname BeforeBeg#1\endcsname
{#2}}
\def\BeforeEnd  #1#2{\expandafter\gdef\csname BeforeEnd#1\endcsname
{#2}}
\def\AfterBegin #1#2{\expandafter\gdef\csname AfterBeg#1\endcsname {#2}}
\def\AfterEnd   #1#2{\expandafter\gdef\csname AfterEnd#1\endcsname{#2}}