ConfigureEnv

In the following, a list configuration is requested only if either the third or the fourth parameter is not empty.

<..config latex.ltx utilities..>
 \long\def\ConfigureEnv#1#2#3#4#5{%
    \def\:temp{#2#3#4#5}\ifx \:temp\empty \let\:temp=\null
    \else   \def\:temp{#2#3}\fi
    \ifx \:temp\empty \else
       \expandafter\def\csname before:begin#1\endcsname
          {#2\def\after:end{#3}}%
    \fi
    \def\:temp{#2#3#4#5}\ifx \:temp\empty \let\:temp=\null
    \else   \def\:temp{#4#5}\fi
    \ifx \:temp\empty
                    \else \ConfigureList{#1}{#4}{#5}{}{}\fi}
 -_-_-

<..config latex.ltx utilitiesNO..>
 \NewConfigure{TraceEnv}[4]{\def\trc:Bg{#1}\def\trc:eBg{#2}%
    \def\trc:Nd{#3}\def\trc:eNd{#4}}
 \NewConfigure{TraceList}[8]{\def\trc:Ls{#1}\def\trc:eLs{#2}%
    \def\trc:El{#3}\def\trc:eEl{#4}\def\trc:It{#5}\def\trc:eIt{#6}%
    \def\trc:iT{#7}\def\trc:eiT{#8}}
 -_-_-

<..latex trace configurations..>
 \:CheckOption{hooks+}  \if:Option
     \def\trc:wrt{\immediate\write16}
 \else \:CheckOption{hooks}  \if:Option
     \let\trc:wrt=\:gobble
 \fi\fi
 
 -_-_-

XML as a backend for LaTeX

<..latex.ltx latex trace configurations..>
 <.latex.ltx non trace configurations.>
 \:CheckOption{hooks++} \if:Option
    <.latex.ltx latex edit+ commands.>
 \else \:CheckOption{hooks+}  \if:Option
        \def\trc:wrt{\immediate\write16}
     \else \:CheckOption{hooks}  \if:Option
        \let\trc:wrt=\:gobble
     \fi\fi
  \if:Option
    \if:latex <.latex.ltx latex edit commands.>\fi
 \fi\fi
 -_-_-

<..latex.ltx latex edit+ commands..>
 \long\def\ConfigureEnv#1#2#3#4#5{%
       \expandafter\def\csname before:begin#1\endcsname{%
            \ifx \EndPicture\:Undef\a:trc Env(#1)1\b:trc\fi
            #2\ifx \EndPicture\:Undef\c:trc Env(#1)1\d:trc\fi
           \def\after:end{%
                 \ifx \EndPicture\:Undef\a:trc END(#1)2\b:trc\fi
                 #3\ifx \EndPicture\:Undef\c:trc END(#1)2\d:trc\fi
           }}%
        \ConfigureList{#1}{#4}{#5}{}{}}
 -_-_-

<..latex.ltx latex edit commands..>
 \long\def\ConfigureEnv#1#2#3#4#5{%
       \expandafter\def\csname before:begin#1\endcsname{%
          \def\:temp{#2}\ifx \:temp\empty
            \ifx \EndPicture\:Undef\a:trc Env(#1)1\b:trc\fi
            #2\ifx \EndPicture\:Undef\c:trc Env(#1)1\d:trc\fi
          \else #2\fi
           \def\after:end{%
               \def\:temp{#3}\ifx \:temp\empty
                 \ifx \EndPicture\:Undef\a:trc Env(#1)2\b:trc\fi
                 #3\ifx \EndPicture\:Undef\c:trc Env(#1)2\d:trc\fi
               \else #3\fi
           }}%
        \ConfigureList{#1}{#4}{#5}{}{}}
 -_-_-

<..hooks+ for ConfigureEnv..>
 \:CheckOption{hooks+}  \if:Option
    \pend:defI\begin{\expandafter
       \ifx\csname before:begin##1\endcsname\relax
       \expandafter\ifx\csname bfr:begin##1\endcsname\relax
          \immediate\write16{....\string\ConfigureEnv{##1}{}{}{}{}}%
          \expandafter\let\csname bfr:begin##1\endcsname=\empty
       \fi\fi}
 \fi
 -_-_-