mirror of
https://github.com/apache/httpd.git
synced 2025-11-06 16:49:32 +03:00
Lots of things remain to be done here; see TODO for some ideas. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@100172 13f79535-47bb-0310-9956-ffa450edef68
66 lines
1.8 KiB
TeX
66 lines
1.8 KiB
TeX
% 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}}
|