% \iffalse meta-comment
% fcltxdoc : 2011/03/12 v1.0 - Private additional ltxdoc support (FC)]
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either
% version 1.3 of this license or (at your option) any later
% version. The latest version of this license is in
%    http://www.latex-project.org/lppl.txt
%
% lppl copyright 2010-2011 by FC <florent.chervet@free.fr>
%<*ignore>
\begingroup
  \def\x{LaTeX2e}%
\expandafter\endgroup
\ifcase 0\ifx\install y1\fi\expandafter
         \ifx\csname processbatchFile\endcsname\relax\else1\fi
         \ifx\fmtname\x\else 1\fi\relax
\else\csname fi\endcsname
%</ignore>
%<*install>
\input docstrip.tex
\Msg{************************************************************************}
\Msg{* Installation}
\Msg{* Package fcltxdoc: 2011/03/12 v1.0 - Private additional ltxdoc support (FC)}
\Msg{************************************************************************}

\keepsilent
\askforoverwritefalse

\let\MetaPrefix \relax
\preamble

This is a generated file.
Copyright (FC) 2010-2011 - lppl

This work may be distributed and/or modified under the
conditions of the LaTeX Project Public License, either
version 1.3 of this license or (at your option) any later
version. The latest version of this license is in
   http://www.latex-project.org/lppl.txt

This work consists of the main source file fcltxdoc.dtx
and the derived files
   fcltxdoc.sty, fcltxdoc.pdf, fcltxdoc.ins, fcltxdoc.drv.


fcltxdoc: 2011/03/12 v1.0 - Private additional ltxdoc support (FC)

This package is not intended for public use.
It is required to compile some of my documentations files.

------------------------------------------------------------------------------
\endpreamble
\let\MetaPrefix \DoubleperCent
{
\catcode164=9
\generate{%
   \file{fcltxdoc.ins}{\from{fcltxdoc.dtx}{install}}%
   \file{fcltxdoc.sty}{\from{fcltxdoc.dtx}{package}}%
}
}
\askforoverwritefalse
\generate{%
   \file{fcltxdoc.drv}{\from{fcltxdoc.dtx}{driver}}%
}
\obeyspaces
\Msg{************************************************************************}
\Msg{*                                                                      *}
\Msg{* To finish the installation you have to move the following            *}
\Msg{* file into a directory searched by TeX:                               *}
\Msg{*                                                                      *}
\Msg{*                      fcltxdoc.sty                                    *}
\Msg{*                                                                      *}
\Msg{* To produce the documentation run the file `copypaste.dtx'            *}
\Msg{*                  through pdfLaTeX.                                   *}
\Msg{*                                                                      *}
\Msg{************************************************************************}

\endbatchfile
%</install>
%<*ignore>
\fi
%</ignore>
%<*driver>
\def\thisinfo {Private additional ltxdoc support}
\def\thisversion {1.0}
\PassOptionsToPackage{}{hyperref}
\PassOptionsToPackage{linegoal,full}{tabu}
\RequirePackage [latin1]{inputenc}
\RequirePackage [\detokenize{§§},scrartcl]{fcltxdoc}
\RequirePackage {calc}
\csname endofdump\endcsname
\let\microtypeYN=n
\RequirePackage {tabu}
\CheckDates {interfaces=2011/02/12,linegoal=2011/02/25}
\documentclass[a4paper,oneside]{ltxdoc}
\AtBeginDocument{\catcode164=14}
\RequirePackage{ragged2e,lmodern,pifont,upgreek}
\ifx y\microtypeYN
   \usepackage[expansion=all,stretch=20,shrink=60]{microtype}\fi            % font (microtype)
\usepackage {logbox}
\lstset{
backgroundcolor=\color{GhostWhite!200},
commentstyle=\ttfamily\color{violet},
keywordstyle=[3]{\color{black}\bfseries},
morekeywords=[3]{&,\\},
keywordstyle=[4]{\color{red}\bfseries},
%%    morekeywords=[4]{red},
keywordstyle=[5]{\color{blue}\bfseries},
morekeywords=[5]{blue},
keywordstyle=[6]{\color{green}\bfseries},
morekeywords=[6]{green},
keywordstyle=[7]{\color{yellow}\bfseries},
morekeywords=[7]{yellow},
keywordstyle=[8]{\color{FireBrick!80}\bfseries},
morekeywords=[8]{
},
keywordstyle=[9]{\color{pkgcolor}\bfseries},
morekeywords=[9]{
},
keywordstyle=[10]{\color{pkgcolor}\bfseries\slshape},
morekeywords=[10]{},
extendedchars={true},
alsoletter={&},
}
\CodelineNumbered
\RequirePackage {geometry}
\geometry {top=0pt,includeheadfoot,headheight=.6cm,headsep=.6cm,bottom=.6cm,footskip=.5cm,left=30mm,right=1.5cm}
\hypersetup{%
  pdfsubject={Private additional ltxdoc support},
  pdfauthor={Florent CHERVET},
  pdfstartview=FitH 0,
  pdfkeywords={tex, e-tex, latex, package, doc, doc.sty, dtx, documentation},
  }
\begin{document}
   \DocInput{\thisfile.dtx}
\end{document}
%</driver>
% \fi
%
% \CheckSum{-0}
%
% \CharacterTable
%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
%   Digits        \0\1\2\3\4\5\6\7\8\9
%   Exclamation   \!     Double quote  \"     Hash (number) \#
%   Dollar        \$     Percent       \%     Ampersand     \&
%   Acute accent  \'     Left paren    \(     Right paren   \)
%   Asterisk      \*     Plus          \+     Comma         \,
%   Minus         \-     Point         \.     Solidus       \/
%   Colon         \:     Semicolon     \;     Less than     \<
%   Equals        \=     Greater than  \>     Question mark \?
%   Commercial at \@     Left bracket  \[     Backslash     \\
%   Right bracket \]     Circumflex    \^     Underscore    \_
%   Grave accent  \`     Left brace    \{     Vertical bar  \|
%   Right brace   \}     Tilde         \~}
%
% \DoNotIndex{\tabu@AtEnd,\tabu@,\tabu@@,\tracingtabu,\LNGL@setlinegoal,\tabu@msgalign@PT}
% \DoNotIndex{\tabu@l@@d@rs,\@length,\@thick,\@skip,\@box,\@unbox,\@ss,\@therule,\tabu@color,\tabu@stack,\tabu@spaces,}
% \DoNotIndex{\tabu@fornoopORI,\tabu@m@ybesiunitx,\tabu@multic@lumn,\tabu@multicolumnORI,\tabu@s@ved,\tabu@startpboxORI,\tabucline@sc@n}
% \DoNotIndex{\o,\P,\T,\O,\0,\@cdr,\@currenvir,\active,\next,\leavevmode,\star,\space,\textasteriskcentered}
% \DoNotIndex{\escapechar,\endlinechar}
% \DoNotIndex{\cr,\crcr,\copy,\box,\hbox,\vbox,\vtop,\wd,\ht\,\dp,\hrule,\vrule,\fbox,\fboxsep,\voidb@x,\hb@xt@}
% \DoNotIndex{\hss,\vss,\hfil,\hfill,\hskip,\hspace,\vskip,\vspace,\kern,\hsize,\vsize,\par,\endgraf}
% \DoNotIndex{\nobreak,\break,\penalty,\width,\@width,\@height,\@depth}
% \DoNotIndex{\if,\fi,\ifnum,\ifodd,\ifdim,\ifcsname,\ifdefined,\ifcat,\ifcase,\iftrue,\iffalse,\ifmmode,\ifhmode,\ifvmode}
% \DoNotIndex{\global,\advance,\multiply,\divide,\dimexpr,\glueexpr}
% \DoNotIndex{\the,\toks,\number}
% \DoNotIndex{\string,\protect,\@unexpandable@protect,\@typeset@protect}
% \DoNotIndex{\begingroup,\endgroup,\bgroup,\egroup,\color@begingroup,\color@egroup}
% \DoNotIndex{\newcommand,\providecommand,\renewcommand,\renewenvironment,\newrobustcmd,\renewrobustcmd,\providerobustcmd}
% \DoNotIndex{\@namedef,\@nameuse,\@ifstar,\@ifnextchar,\kernel@ifnextchar}
% \DoNotIndex{\stepcounter,\usecounter,\count@,\toks@,\dimen@,\dimen@i,\dimen@ii}
% \DoNotIndex{\if@tempswa,\@tempswatrue,\@tempswafalse,\@tempdima,\@tempdimb,\@tempdimc,\@tempcnta,\@tempcntb,\@tempboxa}
% \DoNotIndex{\@lowpenalty,\@medpenalty,\maxdimen,\@listctr,\@mpfn}
% \DoNotIndex{\@empty,\@gobble,\@ifundefined,\g@addto@macro,\verb,}
% \DoNotIndex{\@for,\@tfor,\@nil,\@nnil,\in@@}
% \DoNotIndex{\@currentHref,\@currentlabel,\@currentlabelname,\Hy@footnote@currentHref,\Hy@raisedlink,\hyper@@anchor,\ifHy@nesting}
% \DoNotIndex{\color,\set@color,\@frameb@x,}
% \DoNotIndex{\Command,\FrameCommand,\MakeFramed,\FrameRestore,\endMakeFramed}
% \DoNotIndex{\CT@arc@,\CT@drsc@,\CT@end}
% \DoNotIndex{\col@sep,\NC@list,\NC@do,\NC@,\NC@rewrite@,\@nextchar,\@startpbox,\@endpbox,\@addtopreamble,\@lastchclass,\@chnum,\@chclass}
% \DoNotIndex{\@preamerr}
% \DoNotIndex{\adl@array,\@preamerror,\adl@xarraydashrule,\adl@ncol,\adl@box,\adl@vlineR,\adl@vlineL,\adl@leftrulefalse,\adl@dashgapcolor,^^A <arydshln>
%             \adl@colhtdp,\adl@class@start,\adl@arrayrestore\ifadl@inactive,\ifadl@leftrule,\ifadl@zwvrule,\adl@act@@endpbox,\adl@act@endpbox,^^A
%             \tabu@adl@act@endpbox,\tabu@adl@xarraydashrule,\tabu@adl@endtrial}
% \DoNotIndex{\FV@RightListNumber,\FV@RightListFrame,\FancyVerbFormatLine}
% \DoNotIndex{\tabu@FV@@@CheckEnd,\tabu@FV@@CheckEnd,\tabu@FV@DefineCheckEnd,\tabu@FV@ListProcessLine}
% \DoNotIndex{\cellspacetoplimit,\bcolumn}
% \makeatletter
%
% \colorlet {pkgcolor}{RoyalBlue!100!Indigo!170} \colorlet{csrefcolor}{pkgcolor}
% \colorlet {linkcolor}{RoyalBlue!100!Indigo!170}
% \AtBeginEnvironment {declcs}{\changefont{size+=1pt}\tabusetup* {everyrow=\rowcolor{WhiteSmoke!60},rule width=\heavyrulewidth,line style= }}
% \AtBeginEnvironment {declcs*}{\changefont{size+=1pt}\tabusetup* {everyrow=\rowcolor{WhiteSmoke!60},rule width=\heavyrulewidth , line style= }}
% \AtBeginEnvironment {declenv}{\changefont{size+=1pt}\tabusetup* {everyrow=\rowcolor{WhiteSmoke!60},rule width=\heavyrulewidth, line style= }}
% \parindent\z@\parskip.4\baselineskip \topsep\parskip \partopsep\z@skip ^^A\leftmargini =.5\dimexpr\nGm@lmargin \relax
%
% \colorlet{macrocode}{black}
% \def\macro@font{\def\Cr@scale{.85}\changefont{fam=pcrs,siz=9pt,ser=m,color=macrocode,spread=1}\let\AltMacroFont\macro@font}
% \def\meta@font@select {\ttfamily\itshape}
% \def\MacroFont{\def\Cr@scale{.85}\changefont{fam=pcrs,siz=10pt,ser=b,color=macrocode}}
%
% ^^A% \newlist{itempunct}{itemize}{1}
% ^^A% \setlist[itempunct]{nolistsep,font=\smaller,leftmargin=1.7em,label=\textbullet}
% \def\ttdefault{lmvtt}
% \providerobustcmd*\FC[1][\color{copper}]{{#1\usefont{T1}{fts}xn FC}}
% \newrobustcmd*\thisyear{\begingroup
%    \def\thisyear##1/##2\@nil{\endgroup
%       \oldstylenums{\ifnum##1=2011\else 2011\,\textendash\,\fi ##1}^^A
%    }\expandafter\thisyear\thisdate\@nil
% }
% \newsavebox\tempbox
%
% \bookmarksetup{open=true,openlevel=2}
% \pagesetup{%
%  head/rule/width=.0pt,
%  left/offset=2cm,foot/left/offset+=.5cm,right/offset=1cm,
%  head/font=\scriptsize,
%  head/color=RoyalBlue!80!Indigo!40,
%  head/left=\moveleft1cm\vbox to\z@{\vss\setbox0=\null\ht0=\z@\wd0=\paperwidth\dp0=\headheight\rlap{\colorbox{AliceBlue!55}{\box0}}}\vskip-\headheight\thispackage,
%  head/right=\thisinfo,
%  foot/font=\color{gray!80}\scriptsize,
%  foot/left=\vbox to\baselineskip{\vss{{\rotatebox[origin=l]{90}{\thispackage\,[rev.\thisversion]\,\copyright\,\thisyear\,\lower.4ex\hbox{\pkgcolor\NibRight}\,\FC}}}},
%  foot/right=\oldstylenums{\arabic{page}} / \oldstylenums{\pageref{LastPage}}%
%  }
% \pagesetup[plain]{%
%  norules,font=\scriptsize,
%  foot/right=\oldstylenums{\arabic{page}} / \oldstylenums{\pageref{LastPage}},
%  left/offset=3cm,foot/left/offset+=.5cm,right/offset=1cm,
%  foot/left=\vbox to\baselineskip{\vss{{\rotatebox[origin=l]{90}{\thispackage\,[rev.\thisversion]\,\copyright\,\thisyear\,\lower.4ex\hbox{\pkgcolor\NibRight}\,\FC\quad \xemail{florent.chervet at free.fr}}}}},
% }
% \pagestyle{fancy}
% \bottomtitles=.15\textheight
% \sectionformat\section {
%        mark=\marksthe* {section}{#1},
%        left=\declmarginwidth,
%        top=\medskipamount,
%        bottom=\smallskipamount,
%        font=\normalfont\LARGE\bfseries,
%        bookmark={bold,color=[rgb]{0.02,0.05,.2}},
%        break=\goodbreak}
% \sectionformat\subsection{%
%     top=\medskipamount,
%     bottom=.5\smallskipamount,
%     left=.5\declmarginwidth,
%     bookmark={color=[rgb]{0.02,0.05,.1}},
%     font=\normalfont\Large\bfseries,
%     break=\addpenalty{-\@highpenalty}}
% \sectionformat\subsubsection{
%     bookmark={italic=false,color=lk},
%     font=\normalfont\large\bfseries\color{lk},
%     label=,
%     top=\medskipamount,
%     bottom=.5\smallskipamount,
%     break=\addpenalty{-\@medpenalty}}
% ^^A% \setitemize{itemsep=\parskip,topsep=0pt,labelsep=1em,parsep=0pt,beginpenalty=10000}
% \tikzset{every picture/.add style={}{/utils/exec=\changefont{spread=1}}}
% \newrobustcmd*\IMPLEMENTATION{%
%     ^^A\geometry{top=0pt,includeheadfoot,headheight=.6cm,headsep=.6cm,bottom=.6cm,footskip=.5cm,left=4cm,right=1.5cm}
%     \newgeometry {top=0.8cm,headheight=.5cm,headsep=.3cm,bottom=1.2cm,footskip=.5cm,left=30mm,right=3mm }
%     \pagesetup*{
%       ^^Aleft/offset-=10mm,
%       right/offset-=12mm,
%       foot/left=\vbox to\baselineskip{\vss{{\rotatebox[origin=l]{90}{\thispackage\,[rev.\thisversion]}}}},
%      }%
%     \clearpage
%     \tocsetup{depth-=1}
%     \addtocontents{toc}{\tocsetup{subsection/font+=\string\smaller,subsection/skip=-2pt plus2pt minus2pt}}
%     \sectionformat\section{bookmark/color=black}\sectionformat\subsection{bookmark/color=black}
%     \bookmarksetup{bold*,openlevel=3} \hfuzz=3mm
%     \section(IMPLEMENTATION)[\scshape{Implementation}]{\textlarger{Implementation}}\label{implementation}}
%
% \new\def\paragraphcolumns{\texttbf p,\, \texttbf m,\, \texttbf b\, and\, \texttbf X\, columns}
%
% \new\def\abovebelow{\@ifstar {\@above@below{}}{\@above@below\smaller\color{black!75}}}
% \new\def\@above@below #1^#2_#3 {\textmd{\^{ }\textsuperscript{\scriptsize#1\textt{#2}}\,\myunderscore\textsubscript{\scriptsize#1\textt{#3}}}}
% \new\def\lk{\color{lk}}
% \makeatother
%
% \deffootnote{1em}{0pt}{\rlap{\textsuperscript{\thefootnotemark}}\kern1em}
%
% \newtabulinestyle{  a             =.7pt on 3pt Crimson off4pt yellow,
%                     b             =.7pt on 3pt LawnGreen off3pt,
%                     c             =1.4pt on 3pt DarkSlateBlue off3pt,
%                     test          =1pt blue,
%                     testdash      =.7pt on1.2pt off 2pt blue,
% }
% \def\dash{\hbox{$\scriptscriptstyle\cdotp$}}
%
% \title{\vspace*{-36pt}The \thispackage\unskip\Footnotemark{*}\kern.5em package\vspace*{6pt}}
% \date{}
% \author{\small\thisdate~--~\hyperref[\thisversion]{version \thisversion}}
% \subtitle{\tabubox {X[c]} { \lsstyle Private additional ltxdoc support.\\ \small\FC }}
%
% \maketitle
%
% \Footnotetext{*}{This documentation is produced with the \textt{DocStrip} utility.\par
% \begin{tabu} {X[-3]X[-1]X}
% \smex To get the package,                   &run:          &\textt{etex \thisfile.dtx}                  \\
% \smex To get the documentation              &run (thrice): &\textt{pdflatex \thisfile.dtx}               \\
% \leavevmode\hphantom\smex To get the index, &run:          &\textt{makeindex -s gind.ist \thisfile.idx}
% \end{tabu}§
% The \xext{dtx} file is embedded into this pdf file thank to \Xpackage{embedfile} by H. Oberdiek.
% }
%
% \deffootnote{1em}{0pt}{\rlap{\thefootnotemark.}\kern1em}
%
% \begin{Abstract}[\leftmargin=2em\rightmargin\leftmargin]\parindent0pt\lastlinefit0\noindent\parskip\medskipamount
%
%   \thispackage provides some facilities to print documentation (\xext{dtx}) files. Most of them
%   are further development of commands defined in the undocumented package \xpackage{holtxdoc}.
%
%   The package makes a strong use of \Xpackage{hyperref} and the syntax has been thought to be easy.
%
%   \thispackage is not intended for public use... {\quad\color{llk}...but it may be used -- or copied -- by the public!}
%
%   It is required to compile -- with \hologo{pdfTeX} -- some of my documentation files.
%
% \end{Abstract}
%
% \tocsetup{
%     depth=3,
%     dot=$\scriptscriptstyle\ldotp$,
%     dotsep=1mu,
%     title/top=8pt plus2pt minus4pt,
%     title/bottom=4pt,
%     title=Contents\quad\leaders\vrule height3.1pt depth-3pt\hfill\null,
%     bookmark={text=Contents,bold},
%     after=\leavevmode\hrule height3.1pt depth-3pt,
%     twocolumns=false,
%     section/skip=2pt plus2pt minus2pt,
%     section/leaders=\leaders\hbox{$\mathsurround=0pt\mkern1mu\hbox{$\mathbf\ldotp$}\mkern1mu$}\hfill,
%     section/dotsep,
%     subsection/skip=0pt plus2pt minus 2pt,
%     subsection/numwidth+=5pt,
%     subsubsection/font=\slshape,
%     subsubsection/pagenumbers=off,
%     subsubsection/skip-=1pt,subsubsection/numwidth-=4pt,
% }
%
% {%
%  \hypersetup{linkcolor=black}
%  \tableofcontents
% }
%
% \section(The main macros){The main macros: \cs{cs}, \cs{env}, \cs{M}, \cs{stform}, \env{declcs}, \env{declenv}}
%
% \begin{declcs}[ *4 l ]\cs\M*{Command} &\cs\cs*\M*{Command}&\cs\cs\M[font]\M*{Command}&\cs\cs*\M[font]\M*{Command} \\
%                      \cs\cs\cs\Command &\cs\cs*\cs\Command &\cs\cs\M[font]\cs\Command &\cs\cs*\M[font]\cs\command \\
%                      \multicolumn2c{\cs\cs\cs\Command*} & \multicolumn-c{\cs\cs\M*{Command}*} \\
% \end{declcs}
%
% The control sequence \cs\cs prints a control sequence.
% Both syntaxes are possible, with star form for the presented command:\par
% \begin{shorttabu} { >{\columncolor{GhostWhite!200}}X[-4] !{$\longrightarrow$} X[c] } \savetabu{present} \toprule \rowfont[c]\slshape
%   \multicolumn1c{Source file} & Result (typesetting) \\
%   \cs\cs\M*{Command}         or  \cs\cs\cs\Command        &\cs\Command  \\
%   \cs\cs\M*{Command}\stform*  or  \cs\cs\cs\Command\stform* &\cs\Command* \\ \bottomrule
% \end{shorttabu}
%
% If the control sequence has been declared with the \env{declcs}* then a hyperlink is created automatically
% (\cs\cs\M*{Command} becomes the same as \Verb+\ref{declcs.\string\Command}+ and \cs\cs* the same as
% \Verb+\ref*{\declcs.\string\Command}+: in other words, \cs*\cs* avoids the hyperlink).
%
% With the syntax \cs\cs\cs\Command, the argument (\cs\Command) is collected in a context
% where \texttbf @ is a letter. This syntax does not work in moving arguments: inside the
% title of a \cs\section for example, the only syntax \cs*\cs\M*{Command} shall be used.
%
% \cs\begin and \cs\end have a natural special behaviour: if followed by\, \{ \, the sequence:§
% \shorttabubox {  X } {
%                                 \cs\cs\cs{begin}\M*{environment} \\
% \noindent\llap{is replaced by: }\cs\cs\cs{begin}\cs\M*\M*{\cs\env\M*{environment}} }
%
%
% \cs\cs\M*[\cs\textbf]\cs\Command allows to print the control sequence
% in boldface: \cs[\textbf]\Command and \cs\cs\M*[\cs\color\M*{red}]\cs\Command
% prints it red: \cs[\color{red}]\Command.
% This extension and the star form should be avoided in moving arguments. In the process of \textsc{pdf} string encoding,
% \cs\cs is redefined to be equal to \cs\string with the possibility to write \cs\cs\cs\Command as well. Useful for
% \textsc{pdf} comments or bookmarks.
% To disable hyperlinks inside section titles for example, a hook must be set, for example in the \meta{font} key of
% a package that provides formatting for sectioning commands (example with \xpackage{titlesec}:§§
% \shorttabubox {X} {
% \cs\sectionformat\cs\section\keyvalue{font$+=$\cs\def\cs\csref\M*{\cs\ref*}} \\
% \noindent\llap{or :\quad }\cs\sectionformat\cs\section\keyvalue{before$+=$\cs\def\cs\csref\M*{\cs\ref*}} }\par
%
% or in the table of contents only with the \xpackage{tocloft}*:§§
% \shorttabubox {X} {
% \cs\tocsetup \keyvalue{before$+=$\cs\def\cs\csref \M*{\cs\ref*}}  \rlap{\quad ). }}
%
% More generally, the font  in which the control sequence is displayed is stored in the macro \cs\cs@font,
% by default: \M*{\cs\hypersetup \keyvalue{linkcolor=csrefcolor}\cs\textt}.
%
% \begin{declcs}[ *4 l ]\env\M*{environment}  & \cs\env*\M*{environment}  &  \cs\env\M[font]\M*{envir} & \cs\env*\M[font]\M*{envir} \\
%        \cs\env\M*{environment}\stform*       & \cs\env*\M*{environment}\stform* &\cs\env\M[font]\M*{envir}\stform* & \cs\env*\M[font]\M*{envir}\stform* \\
% \end{declcs}
%
% The control sequence \cs\env prints the name of an environment (in \cs\ttfamily font). When followed by a star
% the word ``\textt{environment}'' is inserted after the name:§
% \begin{shorttabu}{ \preamble{present} } \toprule \rowfont[c]\slshape
%   \multicolumn1c{Source file} & Result (typesetting) \\
%   \cs\env\M*{name} or \cs\env\M*{name}\stform* & \env{name} or \env{name}* \\ \bottomrule
% \end{shorttabu}
%
% If the environment has been declared (with the \env{declenv}*) then a hyperlink is created automatically
% (\cs\env\M*{name} becomes the same as \Verb+\ref{declcs.\string\name}+, with \cs\env* it becomes the same as
% \Verb+\ref*{declcs.\string\name}+: in other words, \cs*\env* avoids the hyperlink).
%
% Moreover, \cs\env\M*[\cs\itshape]\M*{environment} will print the name in italic: \env[\itshape]{environment}. This extension,
% as well as the star form should be avoided in moving arguments.
%
% \begin{declcs}[  *4l  ]\M\M {arg} & \cs\M\M[arg] & \cs\M\M(arg) & \cs\M\M|arg| \\
%                      \cs\M*\M*{arg} & \cs\M*\M*[arg] & \cs\M*\M*(arg) & \cs\M*\M*|arg| \\
% \end{declcs}
%
% \cs\M is a general command to typeset arguments: the star form \cs\M* removes the ``angle brackets''
% around. Braces, square brackets, parenthesis and vertical bar \stform| are supported, whatever there
% category code are and even if they change alongside the document.
%
% \cs\M is not allowed in pdf strings (an explicit \cs\texorpdfstring construction is required).
%
% \begin{declcs}[  *5 l  ]\stform* & \cs\stform\stform+ & \cs\stform\stform- & \cs\stform\stform| & \etc
% \end{declcs}
%
% \cs\stform is named for ``\emph{starred form}''. The star \cs\stform* is printed with \cs\textasteriskcentered,
% and for the other symbols \cs\stform expands to \cs\string. The font is \cs\ttfamily\cs\bfseries.
%
% \cs\stform is robust (\ie can be used inside moving arguments) and can be used inside pdf strings: in this case
% it expands to \cs\string.
%
% Example: \shorttabubox {X} { a vertical bar \stform| can be printed with \cs\stform\stform|. }
%
% \begin{declenv}[ ll ]{declcs}\M*[preamble]\M[font]\M*{Command}& \cs\\ \\
%        \qquad Other \cs\cs or \cs\csanchor  ...    &  \\
%        \cs{end}{declcs}\csanchor\declcsbookmark\cs\Command & \\
%   \multicolumn2c{\normalfont\itshape or} \\[^-1mm _1mm]
%        \cs{begin}{declcs}\M*[preamble]\M[font]\cs\Command & \cs\\ \\
% \end{declenv}
%
%  The \env{declcs}* (also defined in \xpackage{holtxdoc}) presents a control sequence.
%  Like for \cs\cs, both syntaxes for the argument are allowed:\par
%  \begin{shorttabu} {*3{X[-1c]}}
%   \cs{begin}\M*{declcs}\M*{Command} & or & \cs{begin}\M*{declcs}\cs\Command.
%   \end{shorttabu}
%
%  The environment is typeset inside a single-framed \env{tabu} with only one column whose preamble is \M*{ l }.
%  It is possible to change the preamble, add columns \etc with the optional argument. The second optional argument
%  allows to change the font of \cs\Command. Finally if the first optional argument is empty, it defaults to \M*[ l ] so that:\par
%  \begin{shorttabu}{X}
%                                   \cs{begin}\M*{declenv}\M*[]\M*[\cs\itshape]\cs\Command \\
%  \noindent\llap{is the same as: }\cs{begin}\M*{declenv}\M*[ l ]\M*[\cs\itshape]\cs\Command \\
%  \end{shorttabu}
%
%  \cs\declcsbookmark can be used at the end of the \env{declcs}* to add a bookmark whose text is \cs\Command,
%  whose level is \keyvalue*{rellevel=1, keeplevel}: see the \Xpackage{bookmark} package.
%
%   Further formatting of the \env{tabu}* can be obtained easily with the \Xpackage{etoolbox} hook:§
%   \shorttabubox{XcX} {\cs\AtBeginEnvironment & and & \cs\tabusetup* }
%
%   For example,
%   in this very documentation the setting is:§
%   \tabusetup* {line style=.4pt gray!50 on2pt off1pt, linesep=1mm, frame=tabu}
%   \begin{shorttabu}{ X[l] }
%   \cs\AtBeginEnvironment\M*{declcs} \{ \cs\changefont\M*{size\stform+=$1pt$} \\
%   \rowfont[r]{}
%   \cs\tabusetup* \keyvalue{everyrow=\cs\rowcolor\M*{WhiteSmoke!60},rule width=\cs\heavyrulewidth}
%   \\
%   \end{shorttabu} \par
%
%  An anchor and a label are set, for further references by the \cs\cs command. The anchor is set by the command
%  \cs\csanchor, which share the same syntax as \cs\cs and can be used alone if required.
%
% \begin{declenv}[ ll ]{declcs\stform*}\M*[preamble]\M[font]\M*{Command}& \cs\\ \\
%        \qquad Other \cs\cs or \cs\csanchor  ...    &  \\
%        \cs{end}\M*{\env{declcs\stform*}} & \\
%   \multicolumn-c{\normalfont\itshape or} \\[^-1mm _1mm]
%        \cs{begin}\M*{\env{declcs\stform*}}\M*[preamble]\M[font]\cs\Command & \cs\\ \\
% \end{declenv}
%
% \env{declcs\stform*} is a variant of \env{declcs} which is based on \env{longtabu} instead of \env{tabu}.
%
% Used to present a command with a long list of keys for example, for page breaks are allowed.
%
% \begin{declenv}{declenv}\M*[preamble]\M*{name of the environment}\cs\M*\M*[options]\cs\M*\M*{parameter} \cs\\ \\
%           \qquad content of the environment (optional)
% \end{declenv}
%
% The \env{declenv}* is designed to present an environment. Just like \env{declcs} an anchor and a label are set,
% for references by the \cs\env command. The anchor is set by the \cs\envanchor command which share the same syntax
% as \cs\env and can be used alone if required.
%
% \csname @gobble\endcsname {
% \subsection{Extra spacing}
%
% \cs\extra@sf is defined with \cs\mathchardef to be $2999$.
%
% \begin{declcs}\ensurespaceextra \\
%               \csanchor\xspaceextra
% \end{declcs}
%
% \cs\ensurespaceextra controls the extra space on the left: if there is a space on the left, then replaces
% it by a new on with \cs\spacefactor$=$ \cs\extra@sf.
%
% \cs\xspaceextra does \cs\xspace (if not in verbatim mode) with \cs\spacefactor$=$\cs\extra@sf.
% }
%
% \section{Some other macros and extensions}
%
%  \begin{declcs}[  *2l  ]\xext\M{file extension}   &\cs\xext\M{file extension}\stform* \\
%               \csanchor\xpackage\M*{package name} &\cs\xpackage\M*{package name}\stform* \\
%               \csanchor\xclass\M*{class name}     &\cs\xclass\M*{class name}\stform*     \\
%               \csanchor\xfile\M*{file name}       &\cs\xfile\M*{file name}\stform*       \\
%               \csanchor\xmodule\M*{module name}   &\cs\xmodule\M*{module name}\stform*   \\
%  \end{declcs}
%
%  \cs\xext is defined by \xpackage{holtxdoc} to print -- in \cs\ttfamily -- a file extension preceded by a dot:§
%  \shorttabubox { *2 X[c] }{ \cs\xext\M*{aux} & \xext{aux} }
%
%  \thispackage redefines the command with the same \stform* extension the \cs\env command provides:§
%  \tabusetup* {frame=booktabs}
%  \begin{shorttabu} { X[-4 _GhostWhite!200] !{$\longrightarrow$} X[c] } \savetabu{present} \rowfont[c]\slshape
%   \multicolumn1c{Source file}      &Result (typesetting) \\
%   \cs\xext\M*{aux}                 &\xext{aux}           \\
%   \cs\xext\M*{aux}\stform*         &\xext{aux}*          \\
%   \cs\xpackage\M*{package}\stform* &\xpackage{package}*  \\
%   \cs\xclass\M*{class}\stform*     &\xclass{class}*      \\
%   \cs\xfile\M*{filename}\stform*   &\xfile{filename}*    \\
%   \cs\xmodule\M*{module}\stform*   &\xmodule{module}*    \\
%  \end{shorttabu}
%
% \section{The package options}
% \label{The package options.sec}
%
% \subsection{The \texorpdfstring{\M*[nopackages]}{[nopackages]} option}
% \label{The nopackages option.subsec}
%
% Every command is defined with \cs\providecommand, \cs\providerobustcmd or \cs\provide (from \Xpackage{ltxnew}).
%
% The package option \M*[nopackages] avoids the loading of the packages. Nevertheless, the commands provided
% by \thispackage are provided and some of them will certainly lead to an \textt{undefined control sequence}
% if a package is missing: this option is only usefull if one loads (some of) the required packages
% at a later or previous time, or if only a ``chosen set'' of the commands provided here are used.
%
% {\makeatletter
%   \newcommand*\packageInfo [1][]{\packageInfobis}
%   \def\packageInfobis #1#{\getpackageinfo{#1}}
%                                                                           \def\packages {etex,ltxnew,etexcmds,ltxcmds,etoolbox}
% \tabusetup* {colsep=.5pt,frame=^{\tabucline[\heavyrulewidth]-} _{\tabucline[\heavyrulewidth]-},everyrow=\tabucline[tabudotted]-}
% \begin{longtabu}{ >{\sffamily\bfseries} X[-1] >\ttfamily X }
%           \rowbackground{fill=AliceBlue!500,cell fading=o}\rowfont\bfseries
% \multicolumn -{>\centering p*}{Packages loaded by \thispackage with the \M*[nopackages] option}
% \\[=1mm] \everyrow*{\hline}\endfirsthead
% \repeatcell \packages {rows=2,transpose,
%   text/row1=\c,
%   text/row2=\expandafter \packageInfo \c{},
%   }
% \end{longtabu}
%
%   \appto\packages{,[T1]fontenc,graphicx,grffile,{[svgnames,table]xcolor},needspace,moresize,relsize,manfnt,[official]eurosym,fancyhdr,lastpage,marginnote,framed,%
%       newgeometry,[explicit]titlesec,tocloft,[hyperfoonotes]hyperref,bookmark,hypbmsec,enumitem-zref,fancyvrb,listings,%
%       nccfoots,nccstretch,linegoal,delarray,multirow,makecell,booktabs,embedfile,interfaces,pgf,tikz}
%
% \tabusetup* {tracing level=0, everyrow=\tabucline[tabudotted]-, frame=tabubooktabs }
%
% \begin{longtabu}{>{\sffamily\bfseries} X[-1]>\ttfamily X} \rowbackground{fill=AliceBlue!500,cell fading=o}
% \rowfont[c]\bfseries
% \multicolumn -{ p*}{Packages loaded by \thispackage without the \M*[nopackages] option}
%          \\[=1mm] \hline \endfirsthead
% \repeatcell \packages
%   {rows=2,transpose,
%   text/row1=\c,
%   text/row2=\expandafter \packageInfo \c{},
%   }
% \end{longtabu}
% }
%
% \subsection(The ... package option){The \M*[\protect\S\protect\S] package option}
% ^^A\label{The \detokenize{§§} package option.subsec}
%
% The \M*[\S\S] option makes \S an active character whose meaning is \cs\par\cs\nobreak.
%
% \S\S\, is defined as \cs\par\cs\nobreak\cs\vskip$-$\cs\parskip.
%
% {
% \setbox0=\vbox{
% \section{Colors provided and general setup}
%
% \thispackage provides (with \cs\providecolorlet -- an addition to the \Xpackage{xcolor} package) the following \emph{named} colors:}
%
% \logbox0
%
%
% \newtabucellcommand\MyColor {\cellcolor{#1 ^FloralWhite }#1}
% \tabusetup* {frame=tabubooktabs}
% \begin{tabu} { >{\ttfamily\MyColor} X[-1 m ] X }
%   pkgcolor   &color for the package name printed with \cs\thispackage                                                                                                        \\
%   csrefcolor &color for the references to the commands defined by the package (\cs\cs)                                                                                       \\
%   macrocode  &color for the code in the \emph{implementation} part.                                                                                                          \\
%   linkcolor  &\cs\hypersetup \keyvalue{linkcolor=linkcolor}: \cs\colorlet\M*{linkcolor}\M*{green} has generally the same effect as \cs\hypersetup \keyvalue{linkcolor=green} \\
%   urlcolor   &\emph{Idem}: \cs\hypersetup\keyvalue{urlcolor=urlcolor}                                                                                                        \\
%   filecolor  &\emph{Idem}: \cs\hypersetup\keyvalue{filecolor=filecolor}                                                                                                      \\
%   menucolor  &\emph{Idem}: \cs\hypersetup\keyvalue{menucolor=menucolor}                                                                                                      \\
%   runcolor   &\emph{Idem}: \cs\hypersetup\keyvalue{runcolor=runcolor}                                                                                                        \\
% \end{tabu}
%
% Those colors shall be chosen after \cs\begin{document}: \cs\colorlet\M*{pkgcolor}\M*{blue} for example.
%
%
% \clearpage
% }
%
% \IMPLEMENTATION
%
% \subsection{Identification, Options and Requirements}
% \label{Identification and Requirements}
%
%    \begin{macrocode}
%<*package>
\NeedsTeXFormat{LaTeX2e}[2005/12/01]
\ProvidesPackage{fcltxdoc}
    [2011/03/12 v1.0 - Private additional ltxdoc support (FC)]
\RequirePackage {etex}\def\etex@loggingall {\tracingall \tracingonline\z@ }
\reserveinserts 3
\RequirePackage {filehook}
\RequirePackage {ltxnew,etexcmds,ltxcmds,etoolbox}      % general tools (commands)
%    \end{macrocode}
%
%    Minimal catcode ascertaining for loading \thispackage* in good conditions:
%
%    \begin{macrocode}
\AtEndOfPackage{\fcltx@AtEnd \let\fcltx@AtEnd \@undefined}
\def\fcltx@AtEnd {}
\def\TMP@EnsureCode#1={%
    \edef\fcltx@AtEnd{\fcltx@AtEnd
                     \catcode#1 \the\catcode#1}%
    \catcode#1=%
}% \TMP@EnsureCode
\TMP@EnsureCode 33 = 12 % !
\TMP@EnsureCode 58 = 12 % :
\TMP@EnsureCode124 = 12 % | = text bar
\TMP@EnsureCode 36 =  3 % $ = math shift
\TMP@EnsureCode 38 =  4 % & = tab alignmment character
\TMP@EnsureCode 32 = 10 % space
\TMP@EnsureCode 94 =  7 % ^
\TMP@EnsureCode 95 =  8 % _
%    \end{macrocode}
%
% \subsubsection{Options}
%
%    \begin{macrocode}
\DeclareOption {amsmath}{\AtEndOfPackage{%
    \RequirePackage{amsmath,amsfonts,amsopn,amssymb}
    \newrobustcmd*\dpartial [2]{\displaystyle\genfrac{}{}{}{}
                                        {\partial\mkern.2\thinmuskip#1}
                                        {\partial\mkern.2\thinmuskip#2}}
    \newrobustcmd*\dtotal [2]{\displaystyle\genfrac{}{}{}{}
                                        {\text d\mkern.2\thinmuskip#1}
                                        {\text d\mkern.2\thinmuskip#2}}}
}% amsmath (package option)
\def\fcltx@articleclass {article}
\DeclareOption {scrartcl}{\def\fcltx@articleclass{scrartcl}\let\loadclass \LoadClass
    \def\LoadClass #1{\let\tablename \relax \let\c@table \relax \let\fnum@table \relax
                      \let\abovecaptionskip \relax \let\belowcaptionskip \relax \let\@makecaption \relax
                      \loadclass[abstracton]{scrartcl}\let\scrmaketitle =\maketitle
                      \AtEndOfClass{\let\maketitle =\scrmaketitle}}}
\DeclareOption {nopackages}{%
    \let\fcltx@nopackages \relax}
\DeclareOption {activepar}{\AtBeginDocument{\fcltx@activepar}}
\DeclareOption {\detokenize{§§}}{\ExecuteOptions{activepar}}
{\catcode`\§=\active
\gdef\fcltx@activepar{\catcode`\§=\active
    \def §{\@ifnextchar §{\par\nobreak \vskip-\parskip \ignorespaces }
                         {\par\nobreak \ignorespaces }}%
}% \fcltx@activepar
}% \catcode
\DeclareOption {hyperlistings}{%
    \AtBeginEnvironment {lstlisting}{\let\lsthk@OutputBox \lsthk@OutputBox@fcltxH@@k }%
    \AtEndOfPackageFile*{listings}{\preto\lst@InitFinalize {\let\lsthk@OutputBox \lsthk@OutputBox@fcltxH@@k }}%
}% hyperlistings
\ProcessOptions*
%    \end{macrocode}
%
% \subsubsection{Packages loading}
%
%    \begin{macrocode}
\PassOptionsToPackage {svgnames}{xcolor}
\RequirePackage {xspace}
%% Opacity problem with current pgf version...
\ifdefined\pdfpageattr \pdfpageattr{/Group <</S /Transparency /I true /CS /DeviceRGB>>}\fi
\csname \ifdefined\fcltx@nopackages iffalse\else
                                    iftrue\fi       \endcsname
\PassOptionsToPackage {T1}{fontenc}
\PassOptionsToPackage {normalem}{ulem}
\PassOptionsToPackage {pdfencoding=auto,hyperfootnotes}{hyperref}
\PassOptionsToPackage {official}{eurosym}
\PassOptionsToPackage {explicit}{titlesec}
\RequirePackage {fontenc}
\RequirePackage {hologo}                                % before graphicx (bug)
\RequirePackage {graphicx,grffile,needspace}     % general tools
\RequirePackage {Escan}
\RequirePackage {moresize,manfnt,bbding,eurosym}        % fonts
\RequirePackage {fancyhdr,lastpage,marginnote,framed}   % empagement
\RequirePackage {ulem}
\RequirePackage {nccfoots,nccstretch}                   % \Footnote / \stretchwith
\RequirePackage {linegoal}                              % \linegoal
\RequirePackage {array,delarray,makecell,booktabs}      % tabulars
\RequirePackage {embedfile}                             % .dtx enclosed in .pdf
\RequirePackage {interfaces}                            % interfaces
\usetikz {basic,chains,positioning,patterns,fadings}     % TikZ
\AtEndOfClassFile* \fcltx@articleclass{%
    \RequirePackage {relsize,titlesec,tocloft} % other general tools
    \RequirePackage [numbered]{hypdoc}[2010/03/26]
    \RequirePackage {hyperref}[2010/03/30]
    \RequirePackage {pdftexcmds}[2010/04/01]
    \RequirePackage {enumitem}
    \setitemize{parsep=\parskip,topsep=0pt,partopsep=0pt,itemsep=0pt}
    \RequirePackage {bookmark,hypbmsec}                 % bookmarks and hyper-links
%%    \RequirePackage {enumitem-zref}
    \RequirePackage {fancyvrb}                          % verbatim and listings
    \catcode`\&=7
    \RequirePackage {listings}
    \catcode`\&=4
    \AtBeginDocument{%
%%        \let\c@lstlisting \relax
%%        \newlistof {lstlisting}{lol}{List of listings}
        \listofsetup {lol}{before=\def\csref {\ref*}}}%
}% \AfterClass
\lastlinefit100\widowpenalty=5000\clubpenalty=8000
\else   % <[nopackages] option>
    \RequirePackage {xcolor}
\fi     % <[nopackages] option>
%    \end{macrocode}
%
%    \begin{macrocode}
\AtEndOfPackageFile* {interfaces-tocloft}{
    \tocsetup {before+=\def\csref {\ref*}}%
}% \AfterPackage interfaces-tocloft
\AtEndOfPackageFile* {hyperref}{\pdfstringdefDisableCommands{%
            \def\\{\textCR\ignorespaces}%       <for pdfcomment to insert ..
            \def\par{\textCR\ignorespaces}}% .. a line break inside a comment>
}% \AfterPackage
\AtEndOfPackageFile*{fancyvrb}{%
\fvset {gobble=1,framesep=6pt,fontfamily=cmtt,listparameters={\topsep=0pt}}% verbatim basic settings
}
\AtEndOfPackageFile*{listings}{%
\lstset{gobble=1,                                   % listings basic settings
        language=[LaTeX]TeX,
        basicstyle=\usefont{T1}{cmtt}mn\footnotesize,
        breaklines=true,
        alsoletter={*},
        commentstyle=\ttfamily\color{violet},
        moretexcs=[1]{tikz},
        keywordstyle=[2]{\color{ForestGreen}\slshape},
        keywords=[2]{tabular,caption,tabu*,shorttabu*,shorttabu,table,tabu,tabularx,longtable,%
                        Verbatim,lstlisting,Escan-left,Escan-right,Escan-bottom,Escan-top,%
                        align*,align,equation*,equation,split,multline*,multline},
%%        texcsstyle=[3]{\color{ForestGreen}\slshape},
%%        moretexcs=[3]{tabubox*,tabubox,shorttabubox*,shorttabubox},
        texcsstyle=[55]{\color{DarkBlue}},
        texcs=[55]{hline,hhline,firsthline,lasthline,arrayrulewidth,arrayrulecolor},
        texcsstyle=[90]\color{Fuchsia},
        moretexcs=[90]{section*,section,subsection*,
                        subsection,subsubsection*,
                        subsubsection,paragraph*,paragraph,
                        subparagraph*,subparagraph},
        deletetexcs=[1]{section,subsection,subsubsection,paragraph,subparagraph},
        keywordstyle=[100]\color{red},
        texcsstyle=[100]\color{red},
        texcsstyle=[77]{\color{pkgcolor}},
        texcs=[77]{},
}
\define@key{lst}{red}[]{\kvsetkeys{lst}{morekeywords={[100]{#1}}}}
\define@key{lst}{csred}[]{\kvsetkeys{lst}{moretexcs={[100]{#1}}}}
\define@key{lst}{font}[]{\kvsetkeys{lst}{basicstyle={#1}}}
\define@key{lst}{font+}[]{\appto\lst@basicstyle{#1}}
\define@key{lst}{color}[]{\@expandtwoargs\kvsetkeys {lst}%
                            {backgroundcolor=\ifcat$\detokenize{#1}$\else\noexpand\color{#1}\fi}}
\gdef\lst@DefineKeywords#1#2#3{% overwrites to the last definition
    \lst@ifsensitive
        \def\lst@next{\lst@for#2}%
    \else
        \def\lst@next{\uppercase\expandafter{\expandafter\lst@for#2}}%
    \fi
    \fcltx@iflstclass {#2}>{90}
        {\lst@next\do {\global\expandafter\let\csname\@lst#1@##1\endcsname#3}}% <no test>
        {\lst@next\do {\expandafter \ifx \csname \@lst #1@##1\endcsname\relax \global\expandafter\let\csname \@lst #1@##1\endcsname #3\fi }}%
}% After package listings
\def\fcltx@iflstclass #1\@nil {\def\fcltx@iflstclass ##1##2##3{%
    \expandafter\fcltx@ifclass@filter \string##1\@nil
    \ifnum \@tempcnta ##2##3 \expandafter\@firstoftwo \else \expandafter\@secondoftwo \fi }%
}\expandafter\fcltx@iflstclass \string\lst@keywords \@nil
\def\fcltx@ifclass@filter #1#2{\def\fcltx@ifclass@filter ##1\@nil
    {\fcltx@ifcl@ss@filter ##1#1{}##1#2\@nil }%
}\@expandtwoargs \fcltx@ifclass@filter {\string\lst@keywords }{\string\lst@texcs }
\def\fcltx@ifcl@ss@filter #1#2{\def\fcltx@ifcl@ss@filter ##1#1##2#2##3\@nil
   {\@defaultunits \@tempcnta \number0##2==\@nnil
    \ifnum \@tempcnta =\z@ \@defaultunits \@tempcnta \number 0##3==\@nnil \fi }%
}\@expandtwoargs \fcltx@ifcl@ss@filter {\string\lst@keywords }{\string\lst@texcs }
\def\lstset {\begingroup \lst@setcatcodes \expandafter\endgroup \lstset@ }
\def\lstset@ #1{\kvsetkeys {lst}{#1}}
}% \AfterPackage listings
%    \end{macrocode}
%
% \subsection{Generic macros}
%
%    \begin{macro}{\pdfstringDisableCommands}
%
%   Does it At BeginDocument !
%
%    \begin{macrocode}
\providecommand\pdfstringDisableCommands [1]{\AtBeginDocument{%
    \ifdefined \pdfstringdefDisableCommands
        \let\pdfstringDisableCommands =\pdfstringdefDisableCommands
        \pdfstringdefDisableCommands{#1}\fi}}
%    \end{macrocode}
%    \end{macro}
%
% \subsubsection(TabU logo)[TabU logo]{The \TabU logo}
%
%    \begin{macro}{\TabU}
%
%
%    \begin{macrocode}
\providerobustcmd*\TabU [1][\TabUcolor]{\leavevmode
    {#1{{\fontsize{1.618\dimexpr\f@size\p@}{1.618\dimexpr\f@size\p@}\usefont U{eur}mn\char"1C}%
        $_\aleph \mkern.1666mu b\mskip3mu\mathsurround\z@$\lower.261ex\hbox{\rotatebox[origin=c]{-90}{\usefont{T1}{lmss}mn U}}}}%
    \ifmmode\else\ifhmode \spacefactor3000 \xspaceverb \fi\fi }
\def\TabUcolor {\color{copper}}
\pdfstringDisableCommands{\def\TabU {TabU }}
%    \end{macrocode}
%    \end{macro}
%
% \subsubsection{Control}
%
%    \begin{macro}{\CheckDates}
%
%   \cs\CheckDates\M*{package=date, package=date,...}
%
%    \begin{macrocode}
{\endlinechar`\^^J\obeyspaces%
\gdef\ErrorUpdate#1=#2,{\@ifpackagelater{#1}{#2}\relax%
            {\let\CheckDates=\errmessage%
             \toks@=\expandafter{\the\toks@
                        \thisfile-documentation: updates required !
                        package #1 must be later than #2
                        to compile this documentation.}}%
}% \ErrorUpdate
\gdef\CheckDates#1{\AtBeginDocument{{%
    \toks@{}\let\CheckDates=\relax%
    \@for\x:=\thisfile=\thisdate,#1\do{\expandafter\ErrorUpdate\x,}%
    \CheckDates\expandafter{\the\toks@}}}%
}% \CheckDates
}% \catcode
%    \end{macrocode}
%    \end{macro}
%
%    \begin{macro}{\showfile}
%    \begin{macrocode}
\providerobustcmd*\showfile{\makeatletter \show\@currname }%
%    \end{macrocode}
%    \end{macro}
%
%    \begin{macro}{\currentenvir}
%    \begin{macro}{\ifcurrenvir}
%    \begin{macrocode}
\providecommand*\currentenvir {\@currenvir}
\providecommand*\ifcurrenvir [1]{\expandafter
    \ifx    \csname #1\expandafter\endcsname \csname \@currenvir\endcsname
            \expandafter\@firstoftwo
    \else   \expandafter\@secondoftwo
    \fi
}% \ifcurrenvir
%    \end{macrocode}
%    \end{macro}
%    \end{macro}
%
%    \begin{macro}{\ifrefundefined}
%
%   \cs\ifincsname (\hologo{pdfTeX}) is buggy: inside \cs\ifcsname ... \cs\endcsname
%   \cs\ifincsname evaluates to \textt{false} !
%
%    \begin{macrocode}
\providerobustcmd*\ifrefundefined [1]{\begingroup \csname @safe@activestrue \endcsname %<babel>
    \expandafter\endgroup \csname @\ifcsname r@#1\endcsname second\else
                                                            first\fi oftwo\endcsname
}% \ifrefundefined
%    \end{macrocode}
%    \end{macro}
%
% \subsubsection{Fonts and spacing}
%
%    \begin{macro}{\texorpdf}
%
%   \cs\texorpdf\cs\textt\M*{some text} $\Longleftrightarrow$ \cs\texorpdfstring\M*{\cs\textt\M*{some text}}\M*{some text}
%
%    \begin{macro}{\xspaceverb}
%
%    Disable \cs\xspace inside \env{Verbatim}*.
%
%    \begin{macrocode}
\providecommand\texorpdf[2]  {\texorpdfstring{{#1{#2}}}{#2}}
\providerobustcmd*\xspaceverb {\ifnum \catcode 32=\active \else \expandafter\xspace \fi}
\provide\let\fcltx@NormalSharpChar \#
\renewrobustcmd \#{%
    \ifnum \catcode 32=\active  \expandafter\fcltx@NormalSharpChar
    \else                       \expandafter\fcltx@SharpChar        \fi
}% \#
\provide\def\fcltx@SharpChar #1{{\usefont{T1}{pcr}{bx}{n}\char`\##1}}
\providecommand\textt       {\texttt}
\providecommand\textsfbf [1]{\textsf{\textbf{#1}}} \provide\let\textbfsf =\textsfbf
\providecommand\textttbf [1]{\texttt{\textbf{#1}}} \provide\let\textbftt =\textttbf
                                                    \provide\let\texttbf  =\textttbf
\providecommand\textitbf [1]{\textit{\textbf{#1}}} \provide\let\textbfit =\textitbf
\providecommand\textslbf [1]{\textsl{\textbf{#1}}} \provide\let\textbfsl =\textslbf
\providecommand\textscbf [1]{\textsc{\textbf{#1}}} \provide\let\textbfsc =\textscbf
\providecommand\textscit [1]{\textsc{\textit{#1}}} \provide\let\textitsc =\textscit
\providecommand\textscsl [1]{\textsc{\textsl{#1}}} \provide\let\textslsc =\textscsl
\providerobustcmd*\abs[1]{\left\lvert#1\right\rvert}
\provide\protected\def\Underbrace #1_#2{$\underbrace{\vtop to2ex{}\hbox{#1}}_{\footnotesize\hbox{#2}}$}
\provide\let\cellstrut=\bottopstrut
\AtBeginDocument {%
\providerobustcmd*\ie  {\ifmmode \mbox{\emph{ie.}}\else \emph{ie.}\spacefactor\@cclv \xspaceverb \fi}
\providerobustcmd*\eg  {\ifmmode \mbox{\emph{e.g.}}\else \emph{e.g.}\spacefactor\@cclv \xspaceverb \fi }
\providerobustcmd*\etc {\ifmmode \mbox{\emph{etc.}}\else
                        \ifhmode \ifdim\lastskip>\z@ \unskip\spacefactor\@cclv\space \fi\fi
                        \emph{etc.}\fi \@ifnextchar .{\expandafter\xspaceverb\@gobble}\xspaceverb
}% \etc
}% \AtBeginDocument
\pdfstringDisableCommands      {\let\textt \@empty
    \let\textbftt \@firstofone  \let\textttbf \@firstofone  \let\texttbf  \@firstofone
    \let\textsfbf \@firstofone  \let\textbfsf \@firstofone  \let\textitbf \@firstofone
    \let\textbfit \@firstofone  \let\textslbf \@firstofone  \let\textbfsl \@firstofone
    \let\textscbf \@firstofone  \let\textbfsc \@firstofone  \let\textscit \@firstofone
    \let\textitsc \@firstofone  \let\textscsl \@firstofone  \let\textslsc \@firstofone
    \def\ie {ie.}\def\etc {etc.}\let\textcolor \@secondoftwo
}
%    \end{macrocode}
%    \end{macro}
%    \end{macro}
%
%    \begin{macro}{\MathVersion}
%
%    A version of \LaTeX{} \cs\mathversion that also works in mathematical mode !
%
%    \begin{macrocode}
\providerobustcmd*\MathVersion [1]{\ifcsundef{mv@#1}
    {\@latex@error{Math version `#1' is not defined}\@eha}
    {\edef\math@version{#1}\gdef\glb@currsize{}\aftergroup\glb@settings
     \ifmmode \check@mathfonts \fi}%
}% \MathVersion
%    \end{macrocode}
%    \end{macro}
%
%
%    \begin{macro}{\xspaceverb}
%
%    When used inside a \env{Verbatim}* with special command chars (typically \,\texttbf(\, and \,\texttbf)\, used as group delimiters)
%    \cs\xspace breaks because of \cs\scantokens.
%
%    \cs\xspaceverb checks whether the catcode of the space is active, and does nothing in this case.
%
%    \cs\, is allowed inside pdf strings.
%
%    \begin{macrocode}
%%\provide\mathchardef\extra@sf =2999 % "extra" spacefactor
%%\providecommand*\extrasf{\ifmmode\else\ifhmode \unskip \spacefactor\extra@sf \space \fi\fi }
\providecommand*\xspaceverb  {\ifnum\catcode`\ =\active\else \expandafter\xspace \fi}
%%\providerobustcmd*\xspaceextra {%
%%    \ifhmode\ifmmode\else \ifdim \fontdimen4\font>\z@ \spacefactor\extra@sf \fi \xspaceverb \fi\fi }
\xspacesetup {exceptions+=\xspaceverb}
\providerobustcmd*\ensurespaceextra {%
    \ifhmode\ifmmode\else \ifdim\fontdimen4\font>\z@
        \ifdim \lastskip>100sp \ifdim \lastskip>\fontdimen4\font \else % \ifnum \spacefactor<\extra@sf
                    \unskip
                    \hskip \glueexpr \fontdimen4\font+.1666em\relax
        \fi\fi\fi\fi\fi }
\pdfstringDisableCommands{\let\, \@empty}
%    \end{macrocode}
%    \end{macro}
%
% \subsection{\cs\cs, hyper links and \textt{key=value}}
%
% \subsubsection{\cs{cs}, \cs{csanchor} and \cs{env}}
%
%    \begin{macro}{\cs}
%    \begin{macro}{\csanchor}
%
%   \cs\cs prints a control sequence: both syntaxes: \cs\M*{name} and \cs\name are allowed.
%
%   \cs\csanchor puts an anchor (generally made inside the \env{declcs}*) and a label.
%
%   If the label exists, then \cs\cs puts a hyperlink to this label: in this case, \cs\cs is just \cs\ref\M*{declcs.name}.
%
%   Spacing around the control sequences are adjusted by \cs\spacefactor$=2999$ (for a fixed width font,
%   the space is not stretchable: \cs\spacefactor$=2999$ will double the space, and this is too much).
%
%    \begin{macrocode}
\AtBeginDocument{%
    \ifdefined\cs  \expandafter\renewrobustcmd
    \else          \expandafter\providerobustcmd \fi
                                                *\cs {\ensurespaceextra \leavevmode \begin@grabcs \cs@ }
    \xspacesetup {exceptions+=\cs}
    \pdfstringDisableCommands {\let\cs \cs@pdf }
    \providerobustcmd\meta [1]{\ensuremath\langle \hbox{#1}\/\ensuremath\rangle }
}% \AtBeginDocument
\providerobustcmd*\csbf {\cs [\textbf ]}
\providerobustcmd\cs@ [2][]{\cs@getrefname {#2}\@tempa
    \edef\@tempc {\detokenize \expandafter{\@tempa }}%
    \edef\@tempb {\string\begin}\ifx \@tempc\@tempb \aftergroup\@ne \else
    \edef\@tempb {\string\end}\ifx \@tempc\@tempb   \aftergroup\@ne \else
                                                    \aftergroup\z@  \fi\fi
    \def\x ##1\@nnil {\cs@hyper  {##1} {\cs@font {#1{\string ##1}}}
                                       {\cs@font {#1{\csref {declcs.\string ##1}}}}%
    }\expandafter \x \@tempa \@nnil \egroup
}% \cs@
\def\cs@string {\string\\\string }% for \env => \cs@string becomes only \string (no addition of \ )
\providerobustcmd*\csref {\ref}
\long\def\cs@getrefname #1#2{\begingroup \escapechar\m@ne \csname @safe@activestrue\endcsname
                                    \let\stform \string
                                    \let\lst@UM \string
                                    \let\meta   \@firstofone
    \protected@edef #2{\endgroup \def\noexpand #2{\cs@string #1}}#2%
}% \cs@getrefname
\def\begin@grabcs #1{\hbox\bgroup\bgroup \aftergroup\cs@next
                     \makeatletter      \@ifstar {\def\csref {\ref*}#1}{#1}}
\provide\def\cs@next   #1{\egroup \ifnum #1=\z@ \expandafter\cs@nextnormal \else \expandafter\cs@nextbeginend \fi }
\provide\def\cs@nextnormal {\@ifstar   {\stform*\xspaceverb}\xspaceverb }
\provide\def\cs@nextbeginend{\@ifnextchar\bgroup \cs@nextenv \xspaceverb }
\provide\def\cs@nextenv #1{\M*{\env{#1}}}
\provide\def\cs@font  {\ifdefined\hypersetup \hypersetup {linkcolor=csrefcolor}\fi\textt }
\providerobustcmd*\cs@hyper   [1]{\ifrefundefined {declcs.#1}}
\providerobustcmd*\csanchor [2][]{\begingroup \def\cs@next {\egroup \endgroup \bgroup \cs@next}%
                                              \let\cs@hyper \cs@anchor \cs[{#1}]{#2}}
\providerobustcmd*\cs@anchor [3] {%
    \ifodd  \expandafter\ifx \csname \@gobble #1\endcsname\begin 0 \fi
            \expandafter\ifx \csname \@gobble #1\endcsname\end   0 \fi
        1   \def\@currentHref {declcs.\string\string\space #1}\def\@currentlabel {\protecting{#2}}%
            \settoheight \dimen@ {#2}\advance\dimen@ \dimexpr \dp\strutbox+\arrayrulewidth \relax
            \raisedhyperdef [\dimen@ ]{declcs}{#1}{\ifrefundefined{declcs.#1}{#2}{#3}%
                                                   \label{declcs.\string\string\space #1}}%
            \ifdefined\SpecialUsageIndex \expandafter\SpecialUsageIndex \csname \@gobble #1\endcsname \fi
    \else   #2\fi
}% \cs@anchor
\providecommand*\cs@pdf[1]{\string\\\if\@backslashchar\string#1 \else\string#1\fi}% <note the spaces!>
%    \end{macrocode}
%    \end{macro}
%    \end{macro}
%
%    \begin{macro}{\env}
%
%    \cs\env displays an environment in \cs\ttfamily font. \cs\env\stform* adds the word ``\textt{environment}'' after.
%
%    \begin{macrocode}
\providerobustcmd*\env {\leavevmode \begingroup \let\cs@string \string
    \def\cs@next ##1{\egroup \endgroup \@ifstar{ environment\xspaceverb}\xspaceverb}\begin@grabcs   \cs@ }
\providerobustcmd*\envanchor {\leavevmode \begingroup \let\cs@hyper \cs@anchor \let\cs@string \string
    \def\cs@next ##1{\egroup \endgroup }\begin@grabcs \cs@ }
\pdfstringDisableCommands{\let\env \@firstofone }
%    \end{macrocode}
%    \end{macro}
%
% \subsection{\env {lstlisting} hyperlinks}
%
% This correspond to the \M*[hyperlistings] option of \thispackage.
%
%    \begin{macro}{\lsthk@OutputBox@fcltxH@@k }
%
%   The \xpackage{listings}* allow to define an arbitrary hook before the building of the box to be ouput:
%   \cs\@tempboxa contains the word to print.
%
%    \begin{macrocode}
\def\lsthk@OutputBox@fcltxH@@k {\begingroup \let\lst@UM \@empty
    \edef \@tempc {\the\lst@token }\edef \@tempc {\@tempc }%
                            \expandafter \cs@getrefname \expandafter {\@tempc }\@tempa
    \ifrefundefined {declcs.\@tempa}
        {\let\cs@string =\string % <environments>
            \expandafter \cs@getrefname \expandafter {\@tempc }\@tempa
            \ifrefundefined {declcs.\@tempa }{\endgroup }\fcltx@sethyperlistings
        }
        \fcltx@sethyperlistings
}% \lsthk@OutputBox@fcltxH@@k
\def\fcltx@sethyperlistings {\global\let \fcltx@hyperlistinganchor =\@tempa
                             \endgroup \aftergroup \fcltx@dohyperlistings }% after \hbox
\def\fcltx@dohyperlistings {\def\lst@alloverstyle ##1{\fcltx@hyperlistings ##1}}
\def\fcltx@hyperlistings {\setbox\@tempboxa
    \hbox   \bgroup
            \rlap  {\hypersetup {linkcolor=.}\relax \fboxrule \z@
                    \hyperref {}{declcs}\fcltx@hyperlistinganchor
                              {\boxframe {\wd\@tempboxa}{\ht\@tempboxa}{\dp\@tempboxa}}}%
            \unhbox\@tempboxa
            \egroup
}% \fcltx@hyperlistings
%    \end{macrocode}
%    \end{macro}
%
%
% \subsubsection{The \env{declcs} and \env{declenv} environments}
%
%    \begin{environment}{declcs}
%    \begin{environment}{declcs*}
%
%    The \env{declcs}* is defined in \xpackage{holtxdoc} and redefined here in order to allow both syntaxes:§
%    \begin{tabu}{X[r]X[-1c]X[l]}
%    \cs{begin}\M*{declcs}\M*{command} & and & \cs{begin}\M*{declcs}\cs\command
%    \end{tabu}
%
%    \env{declcs\stform*} is based on \env{longtabu} instead of \env{tabu}.
%
%    \begin{macrocode}
\newenvironment{declcs} [1][ l ]{%
    \@testopt {\declcs@twoopt{#1}}{}}
    {\crcr
     \end{tabu}\par \nobreak \ignorespacesafterend }
\def\declcs@twoopt #1[#2]#3{%
    \if@nobreak \par\nobreak
    \else       \needspace{.08\textheight}\vskip2\parskip \fi
    \changefont{spread=1,fam=\ttdefault }%
    \tabusetup {tabu target=\dimexpr\linewidth-\declmarginwidth , frame=tabu }%
    \declmargin
    \ifblank {#1}{\begin{tabu} {  l  }}{\begin{tabu}spread0pt { #1 }}
                                                        \csanchor [{#2}]{#3}}%
\newenvironment{declcs*} [1][ l ]{%
    \@testopt {\declcs@s@twoopt{#1}}{}}
    {\crcr
     \end{longtabu}\nobreak \ignorespacesafterend }
\def\declcs@s@twoopt #1[#2]#3{%
    \if@nobreak \par\nobreak
    \else       \needspace{.08\textheight}\vskip2\parskip \fi
    \changefont{spread=1,fam=\ttdefault }%
    \tabusetup {longtabu = <\declmarginwidth , frame=tabu }
    \ifblank {#1}{\begin{longtabu} {  l  }}{\begin{longtabu}spread0pt { #1 }}
                                                        \csanchor [{#2}]{#3}}%
\def\declmarginwidth {\dimexpr -\leftmargini +\arrayrulewidth +\tabcolsep\relax}
\def\declmargin {\hspace*\declmarginwidth }
\AtBeginDocument{\ifdefined\nGm@lmargin         \leftmargini = .5\dimexpr \nGm@lmargin \relax
                 \else \ifdefined\Gm@lmargin    \leftmargini = .5\dimexpr \Gm@lmargin \relax   \fi\fi }
%    \end{macrocode}
%    \end{environment}
%    \end{environment}
%
%    \begin{macro}{\declcsbookmark}
%
% Insert a bookmark for the \env{declcs} or \env{declenv} environments.
%
%    \begin{macrocode}
\providecommand*\declcsbookmark {\@ifstar \declcsbookmark@star \declcsbookmark@nost }
\providecommand*\declcsbookmark@nost [2][]{\bookmark [{dest=declcs.\string#2,rellevel=1,keeplevel,color=lk,#1}] {\cs#2}}
\providecommand*\declcsbookmark@star [2][]{\bookmark [{rellevel=1,keeplevel,color=lk,#1}] {#2}}
%    \end{macrocode}
%    \end{macro}
%
%    \begin{environment}{declenv}
%
%    This is \env{declcs} but for an environment.
%
%    \begin{macrocode}
\newenvironment{declenv} [1][ l ]%
    {\@testopt {\declenv@twoopt {#1}}{}}
    {\crcr  \multicolumn -{p*}{\declenv@AtEnd}
     \\  \end{tabu}\nobreak \par \nobreak \noindent
     \ignorespacesafterend}
\def\declenv@twoopt #1[#2]#3{%
    \if@nobreak \par\nobreak
    \else       \par\addvspace\parskip
                \Needspace{.08\textheight}\fi
    \changefont{spread=1,fam=\ttdefault}\hskip-\leftmargini
    \def\declenv@AtEnd{\cs{end}\M*{\env [{#2}]{#3}}}%
    \tabusetup* {framed=tabu}%
    \ifblank {#1}{\begin{tabu}{ l }}{\begin{tabu}{ #1 }}\cs{begin}\M*{\envanchor [{#2}]{#3}}}
%    \end{macrocode}
%    \end{environment}
%
%    \begin{macro}{\keyvalue}
%
%    To typeset a \keyvalue{key=value} pair, with extra spacing around.
%    \cs\keyvalue points to \cs\textt: \cs\keyvalue is not in the list of \cs\pdfstringdefDisableCommands.
%
%    This is a test.
%
%    \begin{macrocode}
\providerobustcmd*\keyvalue {\@ifstar   {\@testopt{\fcltx@keyvalue {}{}}\textt }
                                        {\@testopt{\fcltx@keyvalue \{\}}\textt }}
\provide\def\fcltx@keyvalue #1#2[#3]#4{#3{#1#4#2}\xspaceverb }
\pdfstringDisableCommands{\let\keyvalue \@firstofone}
%    \end{macrocode}
%    \end{macro}
%
%    \begin{macro}{\xext}
%    \begin{macro}{\xpackage}
%    \begin{macrocode}
\providerobustcmd*\fcltx@xfiles [4]{\@ifstar{#1{#2#4}#3}{#1{#2#4}}}
\def\fcltx@xx #1#2#3#4{\provide\def #1{\fcltx@xfiles {#2}{#3}{#4}}}
\fcltx@xx \xext     \textt   .{ file}
\fcltx@xx \xfile    \textt  {}{ file}
\fcltx@xx \xpackage \textsf {}{ package}
\fcltx@xx \xmodule  \textsf {}{ module}
\fcltx@xx \xclass   \textsf {}{ class}
\providecommand*\xemail[1]{\textless\textt{#1}\textgreater }
\pdfstringDisableCommands{%
    \let\xext       \@firstofone    \let\xpackage   \@firstofone
    \let\xmodule    \@firstofone    \let\xclass     \@firstofone
    \let\xemail     \@firstofone
}%
\xspaceaddexceptions {\Footnotemark }
%    \end{macrocode}
%    \end{macro}
%    \end{macro}
%
%    \begin{macro}{\CTANhref}
%
%   \cs\CTANhref\M*{package} or \cs\CTANhref\M*[package]\M{general text}.
%
%   \cs\Xpackage\M{package} is \cs\CTANhref\M[package]\M*{\cs\xpackage\M{package}}%
%
%    \begin{macrocode}
\providerobustcmd*\CTANhref [2][]{\ifblank{#1}
    {\href {http://www.ctan.org/tex-archive/help/Catalogue/entries/#2.html}
                          {\nolinkurl{CTAN:help/Catalogue/entries/#2.html}}}
    {\href {http://www.ctan.org/tex-archive/help/Catalogue/entries/#1.html}{#2}}%
}% \CTANhref
\pdfstringDisableCommands{\let\CTANhref \@firstofone }
\providerobustcmd*\Xpackage [1]{\@ifstar    {\CTANhref [{#1}]{\xpackage {#1}} package\xspaceverb }
                                            {\CTANhref [{#1}]{\xpackage {#1}}\xspaceverb }}
\pdfstringDisableCommands{\let\Xpackage \@firstofone }
\providerobustcmd*\thispackage {\@ifstar          {\xpackage\thisfile \xspaceverb}%
                                {{\color {pkgcolor}\xpackage\thisfile}\xspaceverb}}
\pdfstringDisableCommands {\let\thispackage \thisfile }
%    \end{macrocode}
%    \end{macro}
%
%
%    \begin{macro}{\M}
%
%    Displays parameters with braces, bracket, parenthesis or textbar around.
%
%    \begin{macrocode}
\providerobustcmd*\M {\scan@char *\M@ifstar }
\providerobustcmd*\M@ifstar [1]{\@ifnextchar #1{\@firstoftwo
                                                {\let\M@meta \@firstofone \scan@char {|[]()}\M@i }}
                                                {\let\M@meta \meta        \scan@char {|[]()}\M@i }}
\xspacesetup {exceptions+=\M\}]}
\providerobustcmd*\scan@char [2]{\begingroup     \endlinechar \m@ne
    \scantokens{\def\:{#1}}\expandafter \endgroup \expandafter #2\:}
\providerobustcmd*\M@i [5]{\begingroup \@ifnextchar [% ]
    {\iftrue\M@char [][]\fi }
    {\ifcase    \ifx #1\@let@token  \z@     \else
                \ifx #2\@let@token  \@ne    \else
                \ifx #4\@let@token  \tw@    \else
                                    \m@ne   \fi\fi\fi
            \M@char{#1}{#1}{\stform|}{\stform|}%
    \or     \M@char{#2}{#3}[]%
    \or     \M@char{#4}{#5}()%
    \else   \M@char{}{}\{\}%
    \fi     }%
}% \M@i
\provide\def\M@square   #1[#2]{\M@Bracket [{#1}{#2}]}
\provide\def\M@char #1#2#3#4#5\fi {\fi \def\M@char #1##1#2{\M@ch@r {#3}{##1}{#4}}\M@char }
\provide\def\M@ch@r #1#2#3{\endgroup {\ttfamily #1\ifblank{#2}{{\,}}{\M@meta{#2}}#3}}
%    \end{macrocode}
%    \end{macro}
%
% \subsection{\cs{stform} and some symbols}
%
%    \begin{macro}{\CopyRight}
%    \begin{macrocode}
\providerobustcmd*\CopyRight {\begingroup \@ifnextchar \bgroup
    {\afterassignment\Copy@Right \count@ =\@firstofone }
    {\afterassignment\Copy@Right \count@ =}%
}% \CopyRight
\provide\def\Copy@Right {%
    \def\Copy@Right ##1!##2/##3\@nil {\endgroup \copyright\,%
        \oldstylenums {\ifnum ##2=##1\relax \else ##1\,\textendash\,\fi ##2}%
    }\expandafter\Copy@Right \the\expandafter\count@\expandafter!\thisdate \@nil
}% \Copy@Right
%    \end{macrocode}
%    \end{macro}
%
%    \begin{macro}{\stform}
%
%    \cs\stform* displays a centered star using \cs\textasteriskcentered
%    from the \xpackage{textcomp} package.
%
%    \begin{macrocode}
\pretocmd\textasteriskcentered {\usefont{OMS}{cmsy}mn}{}{}
\ifdefined\ifincsname
        \providecommand*\stform {\ifincsname \expandafter\string \else \expandafter\@stform \fi}
\else   \providerobustcmd*\stform {\@stform }
\fi
\providerobustcmd*\@stform    {\ensurespaceextra \@ifnextchar*
                                    {\@@stform[]\textasteriskcentered\@gobble }
                                    {\ifx -\@let@token \@@stform[]\textendash\expandafter\@gobble
                                     \else              \expandafter\@@stform
                                     \fi}}
\providecommand*\@@stform [2][\string]{\texttbf{\stform@font #1#2}\xspaceverb }
\def\stform@font{}
\pdfstringDisableCommands{\let\stform =\string }
\xspacesetup {exceptions+=\stform}
%    \end{macrocode}
%    \end{macro}
%
%    \begin{macro}{\myunderscore}
%
%    Unable to find any underscore character suitable to me, I provide \cs\myunderscore
%    as a simple \cs\vrule...
%
%    \begin{macrocode}
\providerobustcmd*\myunderscore {\ifvmode \noindent \fi \vrule height-\p@ depth1.6\p@ width.4em}
%    \end{macrocode}
%    \end{macro}
%
%    \begin{macro}{\smex}
%
%    A long right arrow inside a box of width $2em$ \smex I don't remember why i called it \cs\smex ???
%
%    \begin{macrocode}
\providerobustcmd*\smex {\leavevmode \hb@xt@2em{\hss $\longrightarrow$\hss }}
%    \end{macrocode}
%    \end{macro}
%
%    \begin{macrocode}
\providerobustcmd*\CheckOK {\textsmaller[2]{\textcolor{ForestGreen}\CheckmarkBold}}
\providerobustcmd*\CheckFAIL {\textsmaller[2]{\textcolor{Crimson}\XSolidBrush}}
\providerobustcmd*\CheckTODO{\textsmaller[2]{\textcolor{MediumBlue}\Peace}}
%    \end{macrocode}
%
% \subsection{Some colors definitions}
%
%   All those colors can be redefined later if wanted.
%
%    \begin{macrocode}
\providecommand*\ifcolorundef[3]{\romannumeral0\ifcsundef{\string\color@#1}{ #2}{ #3}}%
\providerobustcmd*\providecolorlet [2]{\ifcolorundef{#1}{\colorlet{#1}{#2}}{}}
\providecolorlet    {pkgcolor}{teal}
\providecolorlet    {csrefcolor}{pkgcolor}
\providecolor       {macrocode}{rgb}{0.07,0.03,0.10}
\providecolor       {copper}{rgb}{0.67,0.33,0.00}
\providecolor       {dg}{rgb}{0.02,0.29,0.00}           % dg = dark green
\providecolor       {db}{rgb}{0,0,0.502}                % db = dark blue
\providecolor       {dr}{rgb}{0.75,0.00,0.00}           % dr = dark red
\providecolor       {lk}{rgb}{0.25,0.25,0.25}           % lk = 'light' black
\providecolor       {llk}{rgb}{0.40,0.40,0.40}          % llk = 'even more light' black
\provide\def\db  {\color{db}}    \provide\def\dg   {\color{dg}}
\provide\def\red {\color{dr}}    \provide\def\rred {\color{red}}
\providerobustcmd*\pkgcolor {\color {pkgcolor}}
\pdfstringDisableCommands{\let\pkgcolor \relax }
\AtEndOfPackageFile*{hyperref}{%
    \providecolorlet    {linkcolor}{CornflowerBlue!40!Indigo}
    \providecolorlet    {urlcolor}{magenta}
    \providecolorlet    {filecolor}{cyan}
    \providecolorlet    {menucolor}{red}
    \providecolorlet    {runcolor}{filecolor}
    \hypersetup         {linkcolor=linkcolor,
                         urlcolor=urlcolor,
                         filecolor=filecolor,
                         menucolor=menucolor,
                         runcolor=runcolor,
                         pdfpagemode=UseOutlines}
}% \AfterPackage
%    \end{macrocode}
%
%    \begin{environment}{Abstract}
%    \begin{environment}{quotation}
%
%
%
%    \begin{macrocode}
\newenvironment{Abstract}
          {\small\begin{center}\bfseries \abstractname\vspace{-.5em}\vspace{\z@}\end{center}\quotation}
          \endquotation
\AtEndOfClassFile*{ltxdoc}{
\renewenvironment{quotation}[1][\leftmargin=1.5em]
              {\list{}{\listparindent 1.5em
                       \itemindent    \listparindent
                       \rightmargin   \leftmargin
                       \parsep        \z@ \@plus\p@ #1}%
               \item\relax}
              {\endlist}
}% At End Of Class
%    \end{macrocode}
%    \end{environment}
%    \end{environment}
%
% \subsection{the \env{History} environment}
%
%    \begin{macro}{History}
%
%
%    \begin{macrocode}
\newenvironment{History}{%
    \section {History}%
    \def\Version ##1##2{\HistVersion {##1}{##2}\itemize }
    \let\endVersion =\enditemize
}{}
\providecommand*\HistVersion [2]{%
    \subsection* {[#1 v#2]}% hash-ok
    \addcontentsline {toc}{subsection}{\protect\numberline{v#2}[#1]}% hash-ok
    {\protected@edef \@currentlabel {#1}\label {#2}}%
}% \HistVersion
%    \end{macrocode}
%    \end{macro}
%
% \subsection{the \env{macro} environment}
%
%    \begin{macro}{macro}
%
%    Here we set an hanging indentation of the paragraph in front of the macro name, if the macro name
%    is too wide. This is achieved by the hooks provided by \xpackage{etoolbox}: \cs\AtBeginEnvironment
%    and \cs\AtEndEnvironment.
%
%    \begin{macrocode}
\let\plainllap =\llap
\newdimen \maxlabelwidth
\newrobustcmd\macro@llap [1]{\begingroup \global\let\llap =\plainllap
    \setbox0=\hbox{\setbox\strutbox =\hbox{\vrule height\ht\strutbox depth\z@ width\z@}% <height only>
                    #1}%
    \toks@ ={\ifdim \maxlabelwidth>\z@ \setbox\@labels
                                        =\llap{\hbox to\maxlabelwidth {\unhbox \@labels \hss}}\fi}%
    \toks@ =\expandafter%
            {\the\expandafter\toks@ \the\everypar \relax
                \ifdim \dimexpr \maxlabelwidth-\Gm@lmargin+(\Gm@rmargin+5mm)>\z@
                    \hangindent \dimexpr \maxlabelwidth-\Gm@lmargin+(\Gm@rmargin+5mm)\relax
                    \hangafter -\macro@cnt
                \fi
                \global\maxlabelwidth \z@
                \global\everypar \expandafter{\the\everypar \hangindent \z@ \hangafter \z@}}%
    \ifdim \wd0>\maxlabelwidth \global\maxlabelwidth \wd0 \fi
    \rlap{\unhbox0}\global\everypar \toks@
    \endgroup
}% \macro@llap
\AtEndOfClassFile* {ltxdoc}{\MacrocodeTopsep\z@skip    \MacroTopsep\z@skip }
\AtBeginEnvironment {macro}{\if@nobreak\else    \Needspace{2\baselineskip}\fi
    \let\llap =\macro@llap  \topsep\z@skip      \itemsep\z@skip
                            \partopsep\z@skip   \parsep\z@skip
    \parskip=2pt plus2pt minus2pt\relax
}
\AtEndEnvironment{macro}{\goodbreak \vskip.3\parskip }
%    \end{macrocode}
%    \end{macro}
%
% \subsubsection{\cs{getpackagedate} and \cs{getpackageinfo}}
%
%    \begin{macro}{\getpackagebanner}
%
%    Extract the banner of a loaded package.
%
%    \begin{macro}{\getpackagedate}
%
%    Extract the date from the banner of a loaded package.
%
%    \begin{macro}{\getpackageinfo}
%
%    Extract the info from the banner of a loaded package.
%
%    \begin{macrocode}
\providecommand*\getpackagebanner [1]{\ltx@ifpackageloaded{#1}
    {\csname ver@#1.\ltx@pkgextension\endcsname}
    {}%
}% \getpackagebanner
\providecommand*\getpackagedate [1]{\ltx@ifpackageloaded{#1}
    {\expandafter \expandafter  % <-note: only required if \pdfmatch undefined>
    \expandafter\fcltx@ParseVersionAsDate
                \csname ver@#1.\ltx@pkgextension\endcsname \@nil}%
    0%
}% \getpackagedate
\providecommand*\getpackageinfo [1]{\ltx@ifpackageloaded{#1}
    {\expandafter \expandafter  % <-note: only required if \pdfmatch undefined>
     \expandafter\LTXcmds@@ParseInfo
                \csname ver@#1.\ltx@pkgextension\endcsname \@nil}%
    {}%
}% \getpackageinfo
%    \end{macrocode}
%    \end{macro}
%    \end{macro}
%    \end{macro}
%
%    \begin{macrocode}
\ltx@IfUndefined{pdfmatch}{%
    \provide\def\LTXcmds@ParseInfo#1{%
        \LTXcmds@@ParseInfo#10000/00/00\@nil
    }%
    \provide\def\LTXcmds@@ParseInfo#1/#2/#3#4#5\@nil{%
        \if\space#5\else #5\fi
    }%
    \provide\def\fcltx@ParseVersionAsDate #1\@nil {%
        \fcltx@@ParseVersionAsDate #10000/00/00\@nil
    }%
    \provide\def\fcltx@@ParseVersionAsDate#1#2#3#4/#5#6/#7#8#9\@nil {#1#2#3#4/#5#6/#7#8}%
}{%
    \provide\def\LTXcmds@ParseInfo#1{%
        \ifnum\pdfmatch{%
        ^%
          (199[4-9]|[2-9][0-9][0-9][0-9])/%
          (0[1-9]|1[0-2])/%
          (0[1-9]|[1-2][0-9]|3[0-1])[[:space:]]*(.*$)%
        }{#1}=1 %
        \ltx@StripPrefix\pdflastmatch4 %
        \fi
    }%
    \provide\def\LTXcmds@@ParseInfo #1\@nil {\LTXcmds@ParseInfo {#1}}%
    \provide\def\fcltx@ParseVersionAsDate #1\@nil {
        \ifnum\pdfmatch{%
          ^%
          (199[4-9]|[2-9][0-9][0-9][0-9])/%
          (0[1-9]|1[0-2])/%
          (0[1-9]|[1-2][0-9]|3[0-1])%
        }{#1}=1 %
          \ltx@StripPrefix\pdflastmatch1 %
          /\ltx@StripPrefix\pdflastmatch2 %
          /\ltx@StripPrefix\pdflastmatch3 %
        \else
          0000/00/00%
        \fi}
}
%    \end{macrocode}
%
% \subsection{Verbatim support inside \cs{output} routine}
%
%    \begin{macro}{\FC@DefineCommandChars}
%
%   The \env{Verbatim}* provided by package \xpackage{fancyvrb} allow to define some
%   special command chars for \textt{escape char character} (\cs\catcode$=0$),
%   \textt{open group character} (\cs\catcode$=1$) and \textt{close group character} (\cs\catcode$=2$),
%   by the mean of the key:
%
%   \centerline{\keyvalue*{commandchars=\meta{escapechar}\meta{opengroup}\meta{closegroup}}.}
%
%   If a page break occurs while inside the \env{Verbatim}*, the standard category codes are not
%   restored, and the \cs\output routine may break (if for example, a file is read during the output routine).
%
%   Here, \cs\FV@DefineCommandChars is redefined in order to ignore the special category codes of
%   verbatim command chararacters category codes
%
%    \begin{macrocode}
\AtEndOfPackageFile*{fancyvrb}{%
\renewcommand*\FV@DefineCommandChars [3]{%
    \edef\FV@restoreCommandChars{\catcode`\noexpand#1 =\the\catcode`#1
                                 \catcode`\noexpand#2 =\the\catcode`#2
                                 \catcode`\noexpand#3 =\the\catcode`#3\relax}%
    \def \FV@CommandChars {\catcode `#1 =0 \catcode `#2 =1 \catcode `#3 =2\relax }%
    \output =\expandafter{\expandafter\FV@restoreCommandChars \the\output }}%
\DefineVerbatimEnvironment{Verb*}{Verbatim}{commandchars=$()}
}% \AfterPackage
%    \end{macrocode}
%    \end{macro}
%
% \subsection{Indexing: Do Not Index in general}
%
%    \begin{macrocode}
\AtEndOfClassFile* {ltxdoc}{%\message{Now DONOTINDEX !!!^^J}%
\DoNotIndex{%
    \begin,\end,\makeatletter,\makeatother,\@makeother,\filename,\fileversion,\filedate,\frenchspacing,%
    \CodelineIndex,\CodelineNumbered,\OnlyDescription,\RecordChanges,%
                                                        \DisableCrossrefs,\EnableCrossrefs,\GetFileInfo,%
    \def,\gdef,\xdef,\let,\csname,\endcsname,\outer,%
    \newcommand,\newrobustcmd,\providecommand,\providerobustcmd,%
    \newif,\@testopt,\endinput,\expandafter,\else,\relax,%
    \csdef,\csgdef,\csxdef,\cslet,\csletcs,\csundef,\csuse,%
    \csappto,\csgappto,\csxappto,\cseappto,\cspreto,\csxpreto,\csepreto,\csgpreto,%
    \preto,\appto,\epreto,\eappto,\xappto,\xpreto,\gpreto,\xpreto,%
    \~,\\,\&,\;,\,,\:,\[,\],\{,\},\^,\ ,%
    \@ifpackagelater,\@ifpackagewith,\@ifpackageloaded,%
    \m@ne,\z@,\z@skip,\@ne,\p@,\tw@,\thr@@,\@M,\m,\@,\@@,\@elt,\do,\@let@token,\@undefined,%
    \@tempa,
    \@firstofone,\@firstoftwo,\@secondoftwo,%
    \@eha,\@ehd,\on@line,%
    \DocInput,\documentclass,\NeedsTeXFormat,\ProvidesClass,\ProvidesPackage,\ProvidesFile,%
    \RequirePackage,\usepackage,\AtEndOfPackage,\AtBeginDocument,\AtEndDocument,\ProcessOptions,%
    \PackageWarningNoLine,\PackageInfoNoLine,%
    \DefineShortVerb,\DeleteShortVerb,\UndefineShortVerb,\MakeShortVerb,
    \title,\subtitle,\author,\date,\maketitle,\chapter,\section,\subsection,\subsubsection,%
    \paragraph,\subparagraph,\parindent,\parskip,%
    \TMP@EnsureCode,\nobibliography,\nocite,\bibitem,\item,%
    \MessageBreak,\@spaces,%
    \stform,\x,%
}
\CodelineIndex
\EnableCrossrefs
\IndexPrologue{%
  \section*{Index}%
  \markboth{Index}{Index}%
  Numbers written in italic refer to the page %
  where the corresponding entry is described; %
  numbers underlined refer to the %
  \ifcodeline@index
    code line of the %
  \fi
  definition; plain numbers refer to the %
  \ifcodeline@index
    code lines %
  \else
    pages %
  \fi
  where the entry is used.%
}
}% \AtEndOfClassFile
%    \end{macrocode}
%
% \subsection{Other miscellaneous (personal) commands}
%
%    \begin{macro}{\ClearPage}
%
%   \cs\ClearPage does nothing and \cs\ClearPage* does \cs\clearpage. This way it's possible to
%   clear a page or not, keeping trace of what we intended to do...
%
%    \begin{macrocode}
\providerobustcmd*\ClearPage {\@ifstar \clearpage \relax }
%    \end{macrocode}
%    \end{macro}
%
%    \begin{macro}{\uline}
%
%   \cs\uline (from the \Xpackage{ulem}*) has an optional argument to set the color
%   of the line.
%
%    \begin{macrocode}
\AtEndOfPackageFile*{ulem}{%
\renewcommand*\ULset[1][]{\UL@setULdepth
  \def\UL@leadtype{#1\leaders \hrule \@height\dimen@ \@depth\ULdepth }%
  \ifmmode \ULdepth-4\p@ \fi
  \dimen@-\ULdepth \advance\dimen@\ULthickness \ULon}
}
%    \end{macrocode}
%    \end{macro}
%
%    \begin{macro}{\HighLight}
%    \begin{macrocode}
\providerobustcmd*\HighLight [1][]{\begingroup \bgroup \aftergroup\endgroup
    \ULdepth=\dp\strutbox
    \edef\ULthickness{\the\dimexpr \ht\strutbox+\dp\strutbox }%
    \UL@setULdepth
    \ifcat$\detokenize{#1}$\let\fcltx@HL =\@gobble
    \else                  \let\fcltx@HL =\color    \fi
    \def\UL@leadtype {\dimen@ii\dimen@\fcltx@HL{#1}\dimen@\dimen@ii
                      \leaders \hrule \@depth\ULdepth \@height\dimen@ }%
    \dimen@-\ULdepth \advance\dimen@ \ULthickness
                                                    \ULon
}% \HighLight
%    \end{macrocode}
%    \end{macro}
%
%    \begin{macro}{\textsubscript }
%    \begin{macrocode}
\AtBeginDocument{%
    \providerobustcmd*\textsubscript [1]{\@textsubscript {\selectfont #1}}
    \providerobustcmd*\@textsubscript [1]{\m@th\ensuremath{_{\mbox{\fontsize\sf@size\z@#1}}}}
}
%    \end{macrocode}
%    \end{macro}
%
%
% \subsection{Setup At Begin Document}
%
%    \begin{macrocode}
\AtBeginDocument{\provide\let\lsstyle =\relax
                 \errorcontextlines=10\relax
                 \provide\let\thisfile =\jobname
                 \provide\let\thisversion =\@empty
                 \provide\edef\thisdate {\getpackagedate\thisfile}%
                 \provide\let\thisversion =\@empty
                 \ifdefined\hypersetup
                 \ifdefvoid\@pdftitle
                    {\hypersetup {pdftitle=The \jobname\space package}}
                    {}%
                 \fi
                 \ifdefined\embedfile
                    \IfFileExists{\jobname.dtx}{\embedfile{\jobname.dtx}}{}\fi
}% \AtBeginDocument
\AtEndOfPackageFile*{doc}{\AfterEndPreamble {\DeleteShortVerb {\|}}}
%    \end{macrocode}
%
%
% \subsection{Other stuff (patches) to remove after some package updates}
%
%    \begin{macro}{\marginnote}
%
%   Modification to get a correct positionning of the marginnote at first compilation time:
%
%    \begin{macrocode}
%\let\@mn@atthispage \@empty
%\AtEndOfPackageFile*{marginnote}{%
%\renewcommand\mn@zbox [1]{%
%    \bgroup
%        \ifcsname mn@note.\@mn@thispage.\@mn@atthispage\endcsname \h@false
%        \else                                                     \h@true
%        \fi
%        \ifh@
%            \vbox to\z@{\vss \@mn@margintest}\let\@mn@margintest \relax % Just set the label (\pdfsavepos)
%            \edef\marginnotevadjust {\the\dimexpr \marginnotevadjust-\baselineskip }%
%            \setbox\@tempboxa \hbox
%        \else
%            \setbox\@tempboxa \vbox
%        \fi                             {#1}%
%        \ht\@tempboxa =\ht\strutbox  \dp\@tempboxa =\dp\strutbox \wd\@tempboxa =\z@
%        \ifh@ \unhbox \else \box \fi    \@tempboxa
%    \egroup
%}% \mn@zbox
%}%
%    \end{macrocode}
%    \end{macro}
%
%    \begin{macrocode}
%</package>
%    \end{macrocode}
%
% \restoregeometry
% \bookmarksetup{bold*}
% \pagesetup*{
%  ^^Aleft/offset+=5mm,right/offset+=12mm,
%  head/color=LightSteelBlue,
%  }
%
% \begin{thebibliography}{9}^^A <- maximum width of labels
%
% \makeatletter
% \bibitem{doc}
%    \textitbf{The \xpackage{doc} and \xpackage{shortvbr} packages} \\
%    2006/02/02 v2.1d -- Standard LaTeX documentation package (FMi) \\
%    Franck Mittelbach \\
%    \getpackagedate{doc}
%    {\smaller\CTANhref{doc}}
%
%  \bibitem{hypdoc}
%    \textitbf{The \xpackage{hypdoc} package} \\
%    2010/03/26 v1.9 Hyper extensions for doc.sty (HO) \\
%   Heiko Oberdiek \\
%   {\smaller\CTANhref{hypdoc}}
%
%  \bibitem{holtxdoc}
%   \textitbf{The \xpackage{holtxdoc} package} \\
%   2010/04/24 v0.19 Private additional ltxdoc support (HO) \\
%   {\smaller\CTANhref{holtxdoc}}
%
% \end{thebibliography}
%
% \begin{History}
%
%   \addtocontents{toc}{\tocsetup{subsection/font+=\string\smaller}}
%   \sectionformat\subsection[hang]{
%       font=\normalsize\bfseries\pkgcolor,
%       top=\smallskipamount,
%       bottom=0pt,
%       break=\addpenalty{-\csname @medpenalty\endcsname},
%    }
%   \robustify\textbf \robustify\xfile ^^A\HistLabel does \edef on \@currentlabel (\protected@edef required !!)
%
%   \begin{Version}{2011/02/27}{1.0}
%   \item First version.
%   \end{Version}
%
%
% \end{History}
%
% ^^A\PrintIndex
%
% \Finale