% \iffalse meta-comment
% enumitem-zref : 2011/02/18 v1.8 - Extended references for enumitem pkg]
%
% 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 enumitem-zref.dtx
% and the derived files
%    enumitem-zref.sty, enumitem-zref.pdf, enumitem-zref.ins,
%    enumitem-zexample.tex
%
% Unpacking:
%    (a) If enumitem-zref.ins is present:
%           etex enumitem-zref.ins
%    (b) Without enumitem-zref.ins:
%           etex enumitem-zref.dtx
%    (c) If you insist on using LaTeX
%           latex \let\install=y\input{enumitem-zref.dtx}
%        (quote the arguments according to the demands of your shell)
%
% Documentation:
%           (pdf)latex enumitem-zref.dtx
% Copyright (C) 2010 by Florent Chervet <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
\tracingonline=0
\Msg{************************************************************************}
\Msg{* Installation}
\Msg{* Package: 2011/02/18 v1.8 - Extended references to items for enumitem package and hyperref}
\Msg{************************************************************************}

\keepsilent
\askforoverwritefalse

\let\MetaPrefix\relax
\preamble

This is a generated file.

enumitem-zref : 2011/02/18 v1.8 - Extended references to items for enumitem package and hyperref

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 enumitem-zref.dtx
and the derived files
   enumitem-zref.sty, enumitem-zref.pdf, enumitem-zref.ins,
   enumitem-zexample.tex

enumitem-zref : Extended references to items for enumitem package and hyperref
Copyright (C) 2010 by Florent Chervet <florent.chervet@free.fr>

\endpreamble
\let\MetaPrefix\DoubleperCent

\generate{%
   \file{enumitem-zref.ins}{\from{enumitem-zref.dtx}{install}}%
   \file{enumitem-zref.sty}{\from{enumitem-zref.dtx}{package}}%
   \file{enumitem-zexample.tex}{\from{enumitem-zref.dtx}{example}}%
}

\askforoverwritefalse
\generate{%
   \file{enumitem-zref.drv}{\from{enumitem-zref.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{*     enumitem-zref.sty}
\Msg{*}
\Msg{* To produce the documentation run the file `enumitem-zref.dtx'}
\Msg{* through LaTeX.}
\Msg{*}
\Msg{* Happy TeXing!}
\Msg{*}
\Msg{************************************************************************}

\endbatchfile
%</install>
%<*ignore>
\fi
%</ignore>
%<*driver>
\edef\thisfile{\jobname}
\def\thisinfo{Extended references to items for enumitem package}
\def\thisdate{2011/02/18}
\def\thisversion{1.8}
\PassOptionsToPackage{svgnames,dvipsnames}{xcolor}
\PassOptionsToPackage{hyperfootnotes,verbose}{hyperref}
\def\CTANbaseurl{http://www.ctan.org/tex-archive/}
\def\CTANhref#1{\href{\CTANbaseurl help/Catalogue/entries/#1.html}{\nolinkurl{CTAN:help/Catalogue/entries/#1.html}}}
\let\loadclass \LoadClass
\def\LoadClass#1{\loadclass[abstracton]{scrartcl}\let\scrmaketitle\maketitle\AtEndOfClass{\let\maketitle\scrmaketitle}}
{\makeatletter{\endlinechar`\^^J\obeyspaces
 \gdef\ErrorUpdate#1=#2,{\@ifpackagelater{#1}{#2}{}{\let\CheckDate\errmessage\toks@\expandafter{\the\toks@
        \thisfile-documentation: updates required !
              package #1 must be later than #2
              to compile this documentation.}}}}%
 \gdef\CheckDate#1{{\let\CheckDate\relax\toks@{}\@for\x:=\thisfile=\thisdate,#1\do{\expandafter\ErrorUpdate\x,}\CheckDate\expandafter{\the\toks@}}}}
\AtBeginDocument{\CheckDate{interfaces=2011/02/12,tabu=2011/02/17}}
\documentclass[a4paper,oneside]{ltxdoc}
\AtBeginDocument{\DeleteShortVerb{\|}}
\usepackage[latin1]{inputenc}
\usepackage[american]{babel}
\usepackage[T1]{fontenc}
\usepackage{ltxnew,etoolbox,geometry,graphicx,xcolor,needspace,calc}       % general tools
\usepackage{lmodern,bbding,hologo,relsize,moresize,manfnt,pifont,upgreek}  % fonts
\usepackage[official]{eurosym}                                             % font
\usepackage{xspace,tocloft,titlesec,fancyhdr,lastpage,enumitem,marginnote} % paragraphs & pages management
\usepackage{holtxdoc,bookmark,hypbmsec}                                    % hyper-links
\usepackage{array,delarray,longtable,colortbl,multirow,makecell,booktabs}  % tabulars
\usepackage{tabu}[2011/02/17]\tracingtabu=2                                % tabulars
\usepackage{pifont,engrec,amsmath,wasysym}
\usepackage{embedfile,framed,atveryend,catchfile}
\usepackage[expansion=all,protrusion=all,shrink=30]{microtype}
\usepackage{interfaces}[2011/02/12]
\usetikz{basic,chains}
\RequirePackage{grffile,eso-pic}% to include the example
\csname endofdump\endcsname
\CodelineNumbered
\usepackage[greek]{enumitem-zref}
\usepackage{fancyvrb}\fvset{gobble=1,listparameters={\topsep=0pt}}
\lastlinefit999
\geometry{top=0pt,includeheadfoot,headheight=.6cm,headsep=.6cm,bottom=.6cm,footskip=.5cm,left=3cm,right=1.2cm}
\hypersetup{%
  pdftitle={The enumitem-zref package},
  pdfsubject={Extended references to items for enumitem package},
  pdfauthor={Florent CHERVET},
  colorlinks,linkcolor=reflink,
  pdfstartview={FitH},
  pdfkeywords={tex, e-tex, latex, package, enumitem, zref, enumerate, itemize, description, lists, pdftex},
  bookmarksopen=true,bookmarksopenlevel=3}
\embedfile{\thisfile.dtx}
\begin{document}
   \DocInput{\thisfile.dtx}
\end{document}
%</driver>
% \fi
%
% \CheckSum{1718}
%
% \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{\begin,\CodelineIndex,\CodelineNumbered,\def,\DisableCrossrefs,\~,\@ifpackagelater,\z@,\@ne,\linebreak,\maxdimen,\newrobustcmd}
% \DoNotIndex{\DocInput,\documentclass,\EnableCrossrefs,\end,\GetFileInfo,\tw@,\thr@@,\TMP@EnsureCode,\sloppy,\SetupKeyvalOptions,\sep,\scriptsize,\reset@font}
% \DoNotIndex{\NeedsTeXFormat,\OnlyDescription,\RecordChanges,\usepackage}
% \DoNotIndex{\ProvidesClass,\ProvidesPackage,\ProvidesFile,\RequirePackage}
% \DoNotIndex{\filename,\fileversion,\filedate,\let}
% \DoNotIndex{\@listctr,\@nameuse,\csname,\else,\endcsname,\expandafter,\catcode,\@M,\@eha,\@firstofone,\@ifnextchar,\@nil,\@nnil,\@spaces,\@sptoken,\@undefined}
% \DoNotIndex{\gdef,\global,\if,\item,\newcommand,\nobibliography,\@unknownoptionerror,\bfseries,\psi,\ifnum,\ifcase,\unless,\unexpanded,\zen@AtEnd}
% \DoNotIndex{\par,\providecommand,\relax,\renewcommand,\renewenvironment}
% \DoNotIndex{\stepcounter,\usecounter,\nocite,\fi}
% \DoNotIndex{\@fileswfalse,\@gobble,\@ifstar,\@unexpandable@protect}
% \DoNotIndex{\AtBeginDocument,\AtEndDocument,\begingroup,\endgroup}
% \DoNotIndex{\frenchspacing,\MessageBreak,\newif,\PackageWarningNoLine}
% \DoNotIndex{\protect,\string,\xdef,\ifx,\texttt,\@biblabel,\bibitem}
% \DoNotIndex{\z@,\wd,\wheremsg,\vrule,\voidb@x,\verb,\bibitem}
% \DoNotIndex{\FrameCommand,\MakeFramed,\FrameRestore,\hskip,\hfil,\hfill,\hsize,\hspace,\hss,\hbox,\hb@xt@,\endMakeFramed,\escapechar}
% \DoNotIndex{\do,\date,\if@tempswa,\@tempdima,\@tempboxa,\@tempswatrue,\@tempswafalse,\ifdefined,\ifhmode,\ifmmode,\cr}
% \DoNotIndex{\box,\author,\advance,\multiply,\Command,\outer,\next,\leavevmode,\kern,\title,\toks@,\trcg@where,\tt}
% \DoNotIndex{\the,\width,\star,\space,\section,\subsection,\textasteriskcentered,\textwidth}
% \DoNotIndex{\",\:,\@empty,\@for,\@gtempa,\@latex@error,\@namedef,\@nameuse,\@tempa,\@testopt,\@width,\\,\m@ne,\makeatletter,\makeatother}
% \DoNotIndex{\maketitle,\parindent,\setbox,\x,\kernel@ifnextchar}
% \DoNotIndex{\KVS@CommaComma,\KVS@CommaSpace,\KVS@EqualsSpace,\KVS@Equals,\KVS@Global,\KVS@SpaceEquals,\KVS@SpaceComma,\KVS@Comma}
% \DoNotIndex{\DefineShortVerb,\DeleteShortVerb,\UndefineShortVerb,\MakeShortVerb,\endinput,\protected,\gappto,\g@addto@macro,\globcount}
% \makeatletter\DeleteShortVerb{\|}
% \newrobustcmd*\ClearPage{\@ifstar\clearpage{}}
% \newrobustcmd*\FC{{\color{copper}\usefont{T1}{fts}xn FC}}
% \providecommand\lsstyle{}^^A if no microtype
% \catcode`\§ \active   \def§{\@ifnextchar §{\par\nobreak\vskip-2\parskip\nobreak}{\par\nobreak\vskip-\parskip\nobreak}}
% \colorlet{pkgcolor}{teal} \protected\def\pkgcolor{\color{pkgcolor}}
% \newcommand\texorpdf[2]{\texorpdfstring{#1{#2}}{#2}}
% \def\thispackage{\@ifstar{\xpackage{\thisfile}\xspace}{\xpackage{{\pkgcolor\thisfile}}\xspace}}
% \def\ThisPackage{\Xpackage{\thisfile}\xspace}
% \def\Xpackage{\@dblarg\X@package}
% \def\X@package[#1]#2{\@testopt{\X@@package{#1}{#2}}{}}
% \def\X@@package#1#2[#3]{\xpackage{#2\footnote{\noindent\xpackage{#2}: \CTANhref{#1}#3}}\xspace}
% \def\Underbrace#1_#2{$\underbrace{\vtop to2ex{}\hbox{#1}}_{\footnotesize\hbox{#2}}$}
%
% \def\thisfootinfo{{\let\@thefnmark\@empty\let\@makefntext\@firstofone
% \footnotetext{\par\vskip-\baselineskip\smallskip\noindent
% This documentation is produced with the \textt{DocStrip} utility.\par
% \begin{tabu}{X[-3]X[-1]X}
% \smex To get the package,                   &run:          &\texttt{etex \thisfile.dtx}                  \\
% \smex To get the documentation              &run (thrice): &\textt{pdflatex \thisfile.dtx}               \\
% \leavevmode\hphantom\smex To get the index, &run:          &\texttt{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.}}}
%
% \parindent\z@\parskip.4\baselineskip\topsep\parskip\partopsep\z@\leftmargini=2cm\clubpenalty20000\widowpenalty\clubpenalty
% \def\smex{\leavevmode\hb@xt@2em{\hfil$\longrightarrow$\hfil}}
% \def\ttdefault{lmvtt}
% \newrobustcmd\verbfont{\usefont{T1}{\ttdefault}{\f@series}{n}}    \let\vb\verbfont
% \newrobustcmd\vbbf{\usefont{T1}{\ttdefault}bn}
% \renewrobustcmd\#[1]{{\usefont{T1}{pcr}{bx}{n}\char`\##1}}
% \newrobustcmd*\grabcs{\leavevmode\hbox\bgroup\bgroup\makeatletter\aftergroup\endgrabcs}
% \def\endgrabcs{\egroup\xspaceverb}
% \renewrobustcmd*\cs{\grabcs\cs@}
% \newrobustcmd*\cs@[2][]{\begingroup\escapechar\m@ne\def\x ##1{\endgroup\@maybehyperlink{##1}{\texttt{#1{\@backslashchar##1}}}}\expandafter\x\expandafter{\string#2}\egroup}
% \newcommand*\cs@pdf[1]{\@backslashchar\if\@backslashchar\string#1 \else\string#1\fi}
% \newrobustcmd*\csbf{\cs[\textbf]}
% \newrobustcmd*\csref[2][]{{\escapechar\m@ne\edef\my@tempa{\string#2}\edef\x ##1{\noexpand\hyperref{}{declcs}{\my@tempa}{\noexpand\cs[{##1}]{\my@tempa}}}\expandafter}\x{#1}}
% \newcommand\env{\texorpdfstring \env@ \env@pdf}
% \newcommand*\env@pdf[1]{#1}
% \newrobustcmd*\env@{\@ifstar {\env@starsw[environment]}{\env@starsw[]}}
% \def\env@starsw[#1]#2{\textt{#2}\ifblank{#1}{}{ #1}\Xspace}
% \newrobustcmd*\@maybehyperlink [2]{\ifcsname zen@declcs.\detokenize{#1}\endcsname \hyperref{}{declcs}{#1}{#2}\else #2\fi}
% \newrobustcmd\csred[1]{\textcolor{red}{\cs{#1}}}
% \newrobustcmd\CSbf[1]{\textbf{\CS{#1}}}
% \newrobustcmd\texttbf[1]{\textbf{\texttt{#1}}}
% \newrobustcmd\textitbf[1]{\textit{\textbf{#1}}}
% \renewrobustcmd*\bf{\bfseries}\newcommand\nnn{\normalfont\mdseries\upshape}\newcommand\nbf{\normalfont\bfseries\upshape}
% \newrobustcmd*\blue{\color{blue}}\newcommand*\red{\color{dr}}\newcommand*\green{\color{green}}\newcommand\rred{\color{red}}
% \newrobustcmd\rrbf{\color{red}\bfseries}
% \newrobustcmd*\pdf{\textsc{pdf}}
% \definecolor{copper}{rgb}{0.67,0.33,0.00}  \newcommand\copper{\color{copper}}
% \definecolor{daleif1}{rgb}{.647,.129,.149}
% \definecolor{dg}{rgb}{0.02,0.29,0.00}      \newcommand\dg{\color{dg}}
% \definecolor{db}{rgb}{0,0,0.502}           \newcommand\db{\color{db}}
% \definecolor{dr}{rgb}{0.75,0.00,0.00}      \let\dr\red
% \definecolor{lk}{rgb}{0.2,0.2,0.2}         \newrobustcmd\lk{\color{lk}}
% \newrobustcmd\bk{\color{black}}\newcommand\md{\mdseries}
% \newrobustcmd\ie{\emph{ie.}\,}
% \newrobustcmd\etc{{\bk\emph{etc.}}}
% \newrobustcmd\textt[2][]{\texorpdf\texttt{#1#2}}
% \newcommand\cellstrut{}\let\cellstrut\bottopstrut
% \def\M{\@ifstar{\M@i\@firstofone}{\M@i\meta}}
% \def\M@i#1{\@ifnextchar[\M@square
%   {\ifx (\@let@token^^A)
%          \expandafter\M@paren
%    \else\ifx |\@let@token
%           \expandafter\expandafter\expandafter\M@bar
%    \else  \expandafter\expandafter\expandafter\M@brace
%    \fi\fi#1}}
% \def\M@square #1[#2]{\M@Bracket[{#1{#2}}]}
% \def\M@paren  #1(#2){\M@Bracket({#1{#2}})}
% \def\M@bar    #1|#2|{\M@Bracket\textbar{#1{#2}}\textbar}
% \def\M@brace  #1#2{\M@Bracket\{{#1{#2}}\}}
% \def\M@Bracket#1#2#3{{\ttfamily#1#2#3}}
% \newrobustcmd*\thisyear{\begingroup
%    \def\thisyear##1/##2\@nil{\endgroup
%       \oldstylenums{\ifnum##1=2010\else 2010\,\textendash\,\fi ##1}^^A
%    }\expandafter\thisyear\thisdate\@nil
% }
% \newenvironment{movepage}[2][]{%
%    \advance\hsize by\dimexpr#2\relax
%    \hoffset\dimexpr\ifblank{#1}{-\dimexpr#2\relax}{\dimexpr#1\relax}\relax
%    \linewidth\hsize
%    \textwidth\hsize
% }{\clearpage}
% \DefineVerbatimEnvironment{VerbLines}{Verbatim}{frame=lines,framesep=6pt,fontfamily=\ttdefault,fontseries=m}
% \DefineVerbatimEnvironment{VerbLines*}{Verbatim}{frame=lines,framesep=6pt,fontfamily=\ttdefault,fontseries=m,commandchars=$()}
% \DefineVerbatimEnvironment{Verb*}{Verbatim}{fontfamily=\ttdefault,fontseries=m,commandchars=$()}
%
% \newrobustcmd*\csanchor[2][]{^^A
%   \immediate\write\@mainaux{\csgdef{zen@declcs.\string\detokenize{#2}}{}}^^A
%   \raisedhyperdef[14pt]{declcs}{#2}{\cs[{#1}]{#2}}^^A
% }
% \renewrobustcmd\declcs[2][]{^^A
%   \if@nobreak \par\nobreak
%   \else \par\addvspace\parskip
%         \Needspace{.08\textheight}\fi
%   \changefont{size+=2.5pt,spread=1,fam=\ttdefault}^^A
%   \def\*{\unskip\,\texttt{*}}\noindent
%   \hskip-\leftmargini
%   \begin{tabu}{|l|}\hline
%     \expandafter\SpecialUsageIndex\csname #2\endcsname
%     \csanchor[{#1}]{#2}}
% \renewcommand\enddeclcs{%
%     \crcr \hline \end{tabu}\nobreak
%     \par  \nobreak \noindent
%     \ignorespacesafterend
%  }
% \def\declmargin{\hspace*{\dimexpr-\leftmargini+\arrayrulewidth+\tabcolsep}}
% \pretocmd\textasteriskcentered{\usefont{OMS}{cmsy}mn}{}{}
% \let\plainllap\llap
% \newrobustcmd\macro@llap[1]{{\global\let\llap\plainllap
%  \setbox0=\hbox\bgroup \raisedhyperdef{macro}{\saved@macroname}{#1}\egroup
%  \ifdim\wd0>20mm
%     \hbox to\z@ \bgroup\hss \hbox to20mm{\unhcopy0\hss}\egroup
%     \edef\@tempa{\hskip\dimexpr\the\wd0-20mm}\global\everypar\expandafter{\the\expandafter\everypar
%                                                                            \@tempa \global\everypar{}}^^A
%  \else \llap{\unhbox0}\fi}}
%  \AtBeginEnvironment{macro}{\if@nobreak\else\Needspace{2\baselineskip}\fi
%     \MacrocodeTopsep\z@skip \MacroTopsep\z@skip \parsep\z@ \topsep\z@ \itemsep\z@ \partopsep\z@
%     \let\llap\macro@llap}
%  \AtEndEnvironment{macro}{\goodbreak\vskip.3\parskip}
%
% \newrobustcmd*\IMPLEMENTATION{%
%     ^^A\geometry{top=0pt,includeheadfoot,headheight=.6cm,headsep=.6cm,bottom=.6cm,footskip=.5cm,left=3.5cm,right=1.2cm}
%     \newgeometry{top=0pt,includeheadfoot,headheight=.6cm,headsep=.6cm,bottom=.6cm,footskip=.5cm,left=3.5cm,right=.5cm}
%     \pagesetup*{
%        right/offset-=.7cm,
%        head/left+=\ \ (i\,m\,p\,l\,e\,m\,e\,n\,t\,a\,t\,i\,o\,n),
%      }%
%     \bookmarksetup{openlevel=1}
%     \sectionformat\section{bookmark={color=black,bold*,bold=false}}
%     \section(Implementation)[\mdseries\scshape\pmb{Implementation}]{Implementation} \label{sec:implementation}
%     \addtocontents{toc}{\tocsetup{subsection/font+=\smaller,section/skip*=.5,subsection/skip-=1pt}}}
%
% \newcommand\tikzlabel[2][]{\tikz[{remember picture,#1}]\coordinate ({#2});\ignorespaces}
%
% \AddEnumerateCounter\engrec\@grec{\@grec{23}}
% \bottomtitles=.15\textheight
% \pagesetup[plain]{
%  norules, font=\scriptsize,
%  left/offset=2cm,
%  right/offset=.5cm,
%  foot/left/offset+=.5cm,
%  foot/right=\oldstylenums{\thepage} / \oldstylenums{\pageref{LastPage}}
%  }
% \pagesetup[corpus]{
%  pagestyle=plain,
%  head/font=\footnotesize\color{LightSteelBlue},
%  head/left=\moveleft1cm\vbox to\z@{\vss\setbox0=\null\ht0=\z@\wd0=\paperwidth\dp0=\headheight\rlap{\colorbox{GhostWhite}{\box0}}}\vskip-\headheight\thispackage,
%  head/right=\thisinfo,
%  foot/left/font+=\color[gray]{.35},
%  foot/left=\vbox to\baselineskip{\vss{{\rotatebox[origin=l]{90}{\thispackage\,[rev.\thisversion]\,\copyright\,\thisyear\,\lower.4ex\hbox{\pkgcolor\NibRight}\,\FC}}}},
%  foot/right=\oldstylenums{\thepage} / \oldstylenums{\pageref{LastPage}}
%  }
%  \pagesetup[firstpage]{
%  pagestyle=plain,norules,
%  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}}}}},
%  }
%  \sectionformat\section[hang]{
%  font=\LARGE\bfseries,
%  bookmark={color=MidnightBlue,bold},
%  bottom=\smallskipamount,
%  left=-1cm,
%  }
%  \sectionformat\subsection[hang]{
%  font=\Large\bfseries,
%  top=.5\smallskipamount,
%  bottom=.5\smallskipamount,
%  left=-1cm,
%  }
%  \sectionformat\subsubsection[hang]{
%  font=\large\bfseries,
%  top=.5\smallskipamount,
%  bottom=.5\smallskipamount,
%  left=-1cm,
%  bookmark={color=RoyalBlue},
%  }
%
% \newcommand\macrocodecolor{\color{macrocode}}\definecolor{macrocode}{rgb}{0.05,0.02,0.07}
% \newcommand\reflinkcolor{\color{reflink}}\colorlet{reflink}{MidnightBlue}
% \let\stf \textasteriskcentered
% \newrobustcmd*\stform{\@ifnextchar*{\@stform[]\textasteriskcentered\@gobble}\@stform}
% \newrobustcmd*\@stform[2][\string]{\texttbf{\rred#1#2}\Xspace}
% \newrobustcmd*\xspaceverb{\ifnum\catcode`\ =\active\else\expandafter\xspace\fi}
% \let\Xspace\xspaceverb
%
% \makeatother
%
% \title{\vspace*{-36pt}\bfseries\href{http://www.tex.ac.uk/tex-archive/help/Catalogue/entries/enumitem-zref.html}{\HUGE\thispackage}\vspace*{6pt}}
% \date{}
% \author{\small\thisdate~--~\hyperref[v\thisversion]{version \thisversion}}
% \subtitle{\begin{tabu}{c}\LARGE \thisinfo\\[.3ex]\large The \cs\refitem command \\[.5ex] \small\FC\end{tabu}\vspace*{-24pt}}
% \maketitle
%
% \deffootnote{1em}{0pt}{\rlap{\thefootnotemark.}\kern1em}
% {\vspace*{-1.3cm}\let\quotation\relax\let\endquotation\relax
% \begin{abstract}\parskip\medskipamount\parindent0pt\lastlinefit0\leftskip.5cm\rightskip\leftskip
%
% \thispackage, as a companion package for \Xpackage{enumitem}, extends the references mechanism
% for lists of items and allows hyperlinks to any items in lists formatted by \xpackage{enumitem}.
% Hyper-references to lists seems not always necessary, but their importance rise much when a document
% contains lists that can stretch out on several pages.
%
% Primarily intented for \texttbf{enumerate} environments (\ie numbered lists),
% \thispackage* can also reference any item in \texttbf{description} or \texttbf{itemize}
% environments: restrictions can be set with the \hyperref[package options]{package options}.
%
% A \hyperref[sec:naturalrefscheme]{natural reference scheme} for referencing items anywhere in the
% document is provided with three modalities (the \hyperref[commarefscheme]{\emph{commaref}} scheme,
% the \hyperref[refitemscheme]{\emph{refitem}} scheme and the \hyperref[userscheme]{\emph{user}} scheme).
% The references can be typeset differently with the command
% \hyperref[refitem]{\cs{refitem}}, its options and eventually arbitrary text.
%
% Additionnally, \thispackage* allows to typeset greek-enumerated lists with the
% \refitem{package options{greek}}[\textt{greek}] or \refitem{package options{greekctr}}[\textt{greekctr}]
% package options, which use code from packages \Xpackage{alphalph} and \Xpackage{engrec} or \Xpackage{greekctr}.
%
% References to items in external documents compiled with \xpackage{enumitem-zref} is also possible
% with \hologo{pdfTeX}\footnote{This is not \xpackage{xr} but ``pure'' \pdf.}.
%
% \thispackage* requires and is based on the packages \xpackage{enumitem} by Javier Bezos
% and \Xpackage{zref} by Heiko Oberdiek.
% It works with an \eTeX{} distribution of \LaTeX.
%
% \end{abstract}}
%
%  \thisfootinfo
%
% \enlargethispage\baselineskip
% \tocsetup{
%  before=\colorlet{reflink}{black},
%  pagestyle=firstpage,
%  section/skip=4pt plus2pt minus2pt,
%  section/dotsep,section/leaders,
%  subsection/skip=0pt plus2pt minus2pt,
%  subsubsection/pagenumbers=off,
%  subsubsection/dotsep=,
%  subsubsection/font=\small,
%  title=Contents\quad{\pkgcolor\leaders\vrule height3.4pt depth-3pt\hfill\null}\kern0pt\vskip-6pt,
%  title/top=6pt plus2pt,
%  bookmark={text=Contents,bold},
%  columns=2,
%  multicols/beforeend=\aftergroup\tochrule,
%  }
%  \def\tochrule{\leavevmode{\pkgcolor\hrule}}
% \begingroup\let\footnoterule\relax
% \tableofcontents
% \clearpage \endgroup
%
% \pagestyle{corpus}
%
% {
% \sectionformat\section{font=\centering\lsstyle\bfseries\LARGE,label=}
% \value{secnumdepth}=0\relax
% \section(\cs{refitem} properties summary){Summary of the properties for \cs{refitem}}
% }
%
% \colorlet{reference}{DarkGreen}
% \colorlet{properties}{RoyalBlue}
%
% \subsection*{Terms definitions}
%
%
% \begin{itemize}[labelsep=2em,leftmargin=3cm]
% \item [\cs{label}\M*{user}]    This is a user \emph{label}.
% \item [{\cs{item}\M*[user]}]   This is a user \emph{item}.
% \item [\cs{item}]              This is an \emph{automatic} item.
% \end{itemize}
%
% \marginnote\dbend User items are labelized, hence expanded (with \cs\protect).
%
% The \cs\label command can be put inside the optional argument of \cs\item:\par
% \centerline{ \cs{item}\M*[ text \cs{label}\M*{label of the item}] }§
% or in the paragraph that follows.
%
% Package \xpackage{hyperref}'s \textt{[verbose]} option reports all inserted
% anchor names in the \xext{log} file.
%
% \subsection*{Syntax for \cs{refitem}}
%
% {\large
% \begin{tikzpicture}
%
% \node at (0,0) (refitem) [anchor=west] {\cs{refitem}}
%    node [anchor=west] at (refitem.east) (reference) {\M*{\textcolor{reference}{reference}}}
%    node [anchor=west] at (reference.east) (properties) {\M*[\textcolor{properties}{properties to display}]};
%
% \node at (0,-4) [anchor=west] (refdesc) {reference with either:}
%    node [anchor=west] at (refdesc.east) {%
%                               \begin{tabu}spread0pt \{{X[-1r]X[-1]}.
%                               The \hyperref[refitemscheme]{\emph{refitem}} scheme: &\textt{listname\M*{label}\M*{label}\M*{label}...} \\
%                               The \hyperref[commarefscheme]{\emph{commaref}} scheme:& \textt{listname,index,index,index,...} \\
%                               The \hyperref[userscheme]{\emph{user}} scheme: &\textt{reference} to a \cs{label} command
%                               \end{tabu}};
% \draw [->,color=reference] (refdesc.north) -- (reference.south);
%
% \node at (7,-2) [anchor=west] (propdesc) {
%           \begin{tabu}spread0pt {X[-1]} Optional text containing properties\\
%                               Default is \M*[\textcolor{properties}{\cs{ref}} ]\end{tabu}};
%
% \draw [->,color=properties] (propdesc.north) -- (properties);
%
% \end{tikzpicture}}
%
%
% The order in which the properties are given is related to the depth of the list:§§
% \begin{tikzpicture}[start chain, node distance=.5cm and 1.5cm]
% \node [on chain] at (0,0) {\textbf[}
%        node [on chain,color=properties] (grandparents) {\cs{ref}}
%                       node [on chain,color=properties] (parents) {\cs{ref}}
%                                         node [on chain,color=properties] (item) {\cs{ref}} node [on chain] {\textbf]};
% \node at ($(item.south)+(0,-1.5)$) (itemref) {\begin{tabu}{c} refers to\\ the item\\ \refitem{tikzex,1,2}\end{tabu}};
% \draw [->] (itemref.north) -- (item.south);
%
% \node at ($(parents.south)+(0,-1.5)$) (parentsref) {\begin{tabu}{c} refers to\\ the parent\\ \refitem{tikzex,1}\end{tabu}};
% \draw [->] (parentsref.north) -- (parents.south);
%
% \node at ($(grandparents.south)+(0,-1.5)$) (grandparentsref) {\begin{tabu}{c} refers to the\\ second ancestor\\ \itshape Here an\\\itshape empty string\end{tabu}};
% \draw [->] (grandparentsref.north) -- (grandparents.south);
%
% \filldraw [MistyRose] (12,-1.3) rectangle (15,-1.8);
%
% \node (list) [on chain,yshift=-1cm,xshift=-1cm] {\begin{tabu}to6cm{X}
%        \begin{enumerate}[label=\arabic*.,name=tikzex]
%        \item One
%           \begin{enumerate}[label=\roman*)]
%           \item sub item
%           \item sub item
%           \end{enumerate}
%        \item Two
%        \end{enumerate}   \end{tabu}};
%
% \end{tikzpicture}
%
% \smallskip
%
% \newtabulinestyle{dotted=on 1pt off2pt}
% \def\dash{\hbox{$\scriptscriptstyle\mkern2mu\cdotp\mkern2mu$}}
%
% \AtBeginShipoutNext{\AtBeginShipoutUpperLeft{^^A
%     \tikz[remember picture,overlay]\draw [<->] (common properties start) -- (common properties end)
%                                     node [midway,above,rotate=90] {\scriptsize\lsstyle\begin{tabu}{X[-1,c]} most common\\ properties\end{tabu}};}}
%
% {\def\arraystretch{1}\def\margintext#1{\noalign{\vtop to0pt{\marginnote{\ttfamily\small #1}[-2.5ex]\vss}}}
% \begin{tabu}{>{\leavevmode\color{properties}}X[2.3]X[8]>{\bfseries\sffamily}X[-2c]} \hline \tabucline-
% \rowfont[c]{\color{black}\bfseries}
% Property          &Description                                                                                     &Examples                          \\ \tabucline[\dash]-
% \tikzlabel[yshift=1ex,xshift=-.3cm]{common properties start}
% \cs{label}        &The item label: automatic or user defined by \cs{item}\M*[...]                                  &II)\,  \textmd{or}\,  \textbullet \\
% \cs{label\stform*}&For automatic labels in \textt{enumerate} lists: the label without any text around (useful to ``concatenate'' labels).
%                    Otherwise, the same as \cs{label}.                                                              &II\, \textmd{or}\, \textbullet    \\
% \cs{ref}          &If the \textt{ref} key of \xpackage{enumitem} has been set, the ``evaluation'' of the \textt{ref} key.
%                   Otherwise, the same as \cs{label}                                                                &II)\, \textmd{or}\, \textbullet                                                                             \\
% \tikzlabel[xshift=-.3cm]{common properties end}
% \cs{ref\stform*}  &The same as \cs{label\stform*}                                                                  &II\, \textmd{or}\, \textbullet    \\ \tabucline[\dash]-
% \cs{listname}     &The name given to the list with the key \textt{name}. \\
% \cs{depth}        &The list depth. \\
% \cs{index}        &The index of the item in the list. Every item is counted.\\
% \cs{listctr}      &The value of \cs{@listctr} for the item -- only inside \textt{enumerate} lists.
%                    May be different from \cs{index} if the list contains user \emph{items}. \\
% \cs{type}         &The type of the list: either \textt{enumerate} or \textt{itemize} or \textt{description}. \\
% \cs{currentlabel} &\LaTeX's \cs{@currentlabel} \\
% \cs{anchor} &The name of the anchor set for the item. \\ \margintext{\textsuperscript{hyperref}}
% \cs{currentlabelname}&\xpackage{hyperref}'s (or \xpackage{nameref}'s) \cs{@currentlabelname} \\ \margintext{\textsuperscript{hyperref}}
% \textt{\string\refitem}   &The list of references with the \hyperref[refitemscheme]{\emph{refitem}} scheme for the item. & \mdseries\csref{zeninfo} \\
% \cs{commaref}     &The list of references with the \hyperref[commarefscheme]{\emph{commaref}} scheme for the item. & \mdseries\csref{zeninfo} \\
% \cs{default}      &The same as \cs{ref} & \\ \tabucline-
% \end{tabu}}
%
%
% \clearpage
%
% \section{Forewords}
%
% \subsection{Numbered lists, not numbered lists and \texorpdf\xpackage{hyperref}}
% \label{sec:numberedlists}
%
% \LaTeX{} defines two ``classes'' of lists of items:
% \begin{itemize}[leftmargin=1cm]
% \item \texttbf{enumerate} lists which are \textit{numbered} (\ie a counter gives an index to each item in the list),
% \item \texttbf{description} and \texttbf{itemize} lists which are \textit{not numbered} (no counter, thus no index).
%\end{itemize}
%
% When \xpackage{hyperref} is used in \textit{numbered lists}, each \cs{item} gives \xpackage{hyperref}
% the opportunity to define an anchor, whose name is chosen considering the current value of the \emph{index}.
%
%
% Different cases have to be considered:
% \begin{enumerate}[label=\arabic*),name=numberedlists,leftmargin=1cm]
% \item We are in a \emph{numbered} list (\ie \textt{enumerate}):
%     \begin{enumerate}[label=\roman*),leftmargin=*]
%     \item if the item is automatic (\cs{item} without option), \xpackage{hyperref} puts an anchor named \texttt{Item.IDX}.
%     \item if the item is user defined (\cs{item}\M*[user item]), \xpackage{hyperref} does not put an anchor.
%     \end{enumerate}
% \item We are not in a \emph{numbered} list (\ie \texttt{description} or \texttt{itemize}):
%     \begin{enumerate}[label=\roman*),leftmargin=*]
%     \item[] \xpackage{hyperref} does not put an anchor.
%     \end{enumerate}
% \end{enumerate}
%
% Moreover, when \xpackage{hyperref} is loaded, the expansion of the \cs{label} command leads to the expansion of the item label
% (with \cs{protect}) for it is written to the \xext{aux} file:
% \begin{itemize}
% \item in the case \refitem{numberedlists{1}{i}}[\ref*\,\ref]
% \item and also in the case \refitem{numberedlists{1}{ii}}[\ref*\,\ref] if:
%     \begin{itemize}[label=-]
%     \item the list is a \textt{description} list, and
%     \item package \xpackage{nameref} is loaded, and
%     \item the \cs{label} command appears inside the \textt{user item} text.
%     \end{itemize}
% \end{itemize}
%
%
% {\flushright\smaller\lk I was guardedly affraid about those rules when I understood them, as you may be...\par}
%
% \thispackage adds an anchor in the cases \refitem{numberedlists,1,2}[\ref*\,\ref] and \refitem{numberedlists,2}.
% The item label text is always expanded (with \cs{protect} and \xpackage{babel} protection).
%
%
% \subsection(A "natural" reference scheme for lists){A ``natural'' reference scheme for lists}
% \label{sec:naturalrefscheme}
%
% \thispackage provides \textbf{3 ways} to reference a specific item in a list. The first 2 can be used to reference
% items in lists of external documents as well.
%
% References are made with the command: \csref{refitem}, but \cs{hyperref} can be used as well.
%
% \makeatletter
% \newrobustcmd*\presitem{\@ifstar\presitem@star\presitem@nost}
% \newrobustcmd*\presitem@nost[1]{this is the item \presitem@star{#1}}
% \newrobustcmd*\presitem@star[1]{\ifdim\lastskip<.4em\unskip\hskip.4em\fi\textcolor{reference}{\textt{#1}}}
% \newrobustcmd*\namelist[1]{\texttt{`#1'}}
% \makeatother
%
% \cs{subitem} and \cs{subsubitem} provided in some classes cannot be referenced with \thispackage*.
%
% \subsubsection(The commaref scheme){The \textit{\db commaref} scheme}
% \label{commarefscheme}
%
% Assuming you gave a name to your \textt{enumerate}, \textt{description} or \textt{itemize} list,
% and let's say this name is \namelist{myList}, each item is given an index.
% Any item is indexed, whether it's printed by the mean of a user item or an an automatic item.
% Then:
% \begin{itemize}[name=commaref-myList]
%  \item \presitem{myList,1}
%  \item \presitem{myList,2}
% \begin{itemize}[itemindent=2cm,font=\bfseries]
%  \item \presitem{myList,2,1}
%  \item \presitem{myList,2,2}
%  \item [user-defined] \presitem{myList,2,3}
% \end{itemize}
%\end{itemize}
%
% Reference to the third item can be made with:
%
% \begin{tabu}{lX}
% \cs[\red]{refitem}\M*{myList,2,1}                                &this prints: \refitem{commaref-myList,2,1} for it is the first item in the inner list. \\
% \cs[\red]{refitem}\M*{myList,2,1}\M*[\cs{ref}.\cs{ref}]          &prints: \refitem{commaref-myList,2,1}[\ref.\ref].                                      \\
% \cs[\red]{refitem}\M*{myList,2,1}\M*[\cs{label}\cs{ }\cs{label}] &prints: \refitem{commaref-myList,2,1}[\label\ \label].
% \end{tabu}
%
%
% Nothing simplest, no more comment...
%
% \subsubsection(The refitem scheme){The \textit{\db refitem} scheme}
% \label{refitemscheme}
%
% \begin{enumerate}[label=\Alph*),name=refitem-myList]
% \item \presitem{myList\M*{A}}.
% \item \presitem{myList\M*{B}} (as you'd have expected...)
%     \begin{enumerate}[label=\roman*)]
%     \item \presitem{myList\M*{B}\M*{i}}. \\
%            and is \emph{also} \presitem*{innerlist\{i\}} if this nested list has been named \namelist{innerlist}.
%     \item \presitem{myList\{B\}\{ii\}} \quad (or \presitem*{innerlist\{ii\}}).
%        \begin{enumerate}[label=\engrec*)\ ,ref=\engrec*]
%        \item \presitem{myList\{B\}\{ii\}\{\string\alpha\}} (with the package option \texttt{[greek]}).
%        \item \presitem{myList\{B\}\{ii\}\{\string\beta\}} \quad (or \presitem*{innerlist\{ii\}\{\string\beta\}}).
%        \end{enumerate}
%     \end{enumerate}
% \item \presitem{myList\{C\}} (as you'd have expected...)
% \item[\textbf{perso}] \presitem{myList\{perso\}}.
% \item \presitem{myList\{D\}} and is also \presitem*{myList,5} in the \textit{commaref} scheme.
%     \begin{itemize}
%     \item \presitem{myList\{D\}\{1\}}
%     \item \presitem{myList\{D\}\{2\}} \\
%           inside \textt{itemize} lists, labels are replaced by their arabic index in the \textit{refitem} scheme.
%     \end{itemize}
% \end{enumerate}
%
% And here is a reference to:
%
% \begin{tabu}{lX}
% \cs[\red]{refitem}\M*{myList\M*{B}\M*{ii}\M*{\cs{alpha}}} & \refitem{refitem-myList{B}{ii}{\alpha}} \\
% \cs[\red]{refitem}\M*{myList\M*{B}\M*{ii}\M*{\cs{alpha}}}\M*[\cs{label}\cs{ }\cs{label}\cs{ }\cs{label}] & \refitem{refitem-myList{B}{ii}{\alpha}}[\label\ \label\ \label] \\
% \cs[\red]{refitem}\M*{myList\M*{B}\M*{ii}\M*{\cs{alpha}}}\M*[\cs{label\stf}-{}-\cs{label\stf}-{}-\cs{label}] & \refitem{refitem-myList{B}{ii}{\alpha}}[\label*--\label*--\label] \\
% \end{tabu}
%
% Now what happens with a description list:
%
% \begin{enumerate}[label=\arabic*\textdegree),name=refitem-myList2]
% \item \presitem{myList\M*{1}}
% \item \presitem{myList\M*{2}}
%        \begin{description}
%        \item [First description label]  \presitem{myList\M*{2}\M*{first description label}}
%        \item [And a second one]         \presitem{myList\M*{2}\M*{and a second one}}
%        \end{description}
% \item \presitem{myList\M*{3}}
% \end{enumerate}
%
% \begin{tabu}{lX}
% \cs[\red]{refitem}\M*{myList\M*{2}\M*{first description label}} & \refitem{refitem-myList2{2}{first description label }} \\
% \cs[\red]{refitem}\M*{myList2\M*{2}\M*{first description label}}\M*[\cs{ref\stf}, \cs{label}] & \refitem{refitem-myList2{2}{first description label }}[\ref*, \label] \\
% \cs[\red]{refitem}\M*{myList2\M*{2}\M*{first description label}}\M*[\cs{ref}\cs{ }\cs{ref}] & \refitem{refitem-myList2{2}{first description label }}[\ref\ \ref] \\
% \end{tabu}
%
% The correspondance between the reference name and the reference that is finally printed is immediate:
% the \emph{refitem} scheme is almost useful when used with \xpackage{hyperref}.
%
% The list name \textt{myList} is case sensitive, but the item number \M*{B} or \M*{first description label} is not.
% This can be changed with the \refitem{package options{CaSeS}} package option. Trailing spaces in the item label
% are always removed from the reference name in the \hyperref[refitemscheme]{\emph{refitem}} scheme.
%
%
% \subsubsection({The user scheme (\cs{label})}){The \textit{\db user} scheme: with the \cs{label} command}
% \label{userscheme}
%
% \begin{enumerate}[label=\arabic*\,\textendash,name=user-myList,ref=\arabic*]
% \item \presitem{myList,1} and \presitem*{myList\{1\}} and as long as I type \cs{label}\M*{Important Item} it is also named \presitem*{Important Item}.
% \item \presitem{myList,2} and \presitem*{myList\{2\}}.
%     \begin{enumerate}[label=\alph*)\ ]
%     \item \presitem{myList,2,1} and \presitem*{myList\{2\}\{a\}}.
%     \item \presitem{myList,2,2} and \presitem*{myList\{2\}\{b\}} and as long as I type:\\
%           \cs{label}\M*{Important subitem} it is also named  \presitem*{Important subitem}. \label{Important subitem}
%     \end{enumerate}
% \end{enumerate}
%
% Then you get:
%
% \begin{tabu}{X[-5]X}
% \cs[\red]{refitem}\M*{Important subitem}                                      &\refitem{Important subitem}                       \\
% \cs[\red]{refitem}\M*{Important subitem}\M*[\cs{label}\cs{ }\cs{label}]       &\refitem{Important subitem}[\label\ \label]       \\
% \cs[\red]{refitem}\M*{Important subitem}\M*[\cs{ref\stf} sub point \cs{ref}] &\refitem{Important subitem}[\ref* sub point \ref]
% \end{tabu}
%
% The reference is case sentitive.
%
% \section{User Interface}
% \label{sec:userinterface}
%
% \subsection{Naming lists}
%
% To use the reference schemes defined by \thispackage, it is necessary to give lists a name. For that purpose,
% two new keys: \textt{name}\, and\, \textt{name\stform*} have been added to the keys provided by \xpackage{enumitem}.
%
% The key \textt{`name'} gives a name to the list, while \textt{name\stform*} is a bit more clever
% and should be used in every circonstances when lists are nested, almost when lists are automatically
% named by the mean of the paragraph they belong to. Example:
%
% \begin{Verb*}
%  \newlist{myList}{enumerate}{3}
%  \setlist[myList]{ label* = \arabic*.,  name* = \arabic{section}.\arabic{subsection}}
% \end{Verb*}
%
% In case of nested lists,\, \texttt{name\stform*}\, will compare the name you gave to the list with the name
% of its parent list, and ignore the key in case of equality.
%
% This gives:
%
% \newlist{naming-myList}{enumerate}{3}
% \setlist[naming-myList]{ label*=\arabic*., name* = \arabic{section}.\arabic{subsection}}
%
% \begin{naming-myList}[itemsep=0pt]
% \item First item
% \item Second item
%     \begin{naming-myList}[itemsep=0pt]
%     \item sub item
%     \item another sub item
%     \item a last sub item \cs{label}\M*{for further reference} \label{for further reference}
%     \end{naming-myList}
% \end{naming-myList}
%
% And then:
%
% \begin{tabu}{lX[c]X}
% \cs[\red]{refitem}\M*{2.1,2,3}               &\refitem{2.1,2,3}               &in the \hyperref[commarefscheme]{\emph{commaref}} scheme \\
% \cs[\red]{refitem}\M*{2.1\M*{2}\M*{3}}       &\refitem{2.1{2}{3}}             &in the \hyperref[refitemscheme]{\emph{refitem}} scheme   \\
% \cs[\red]{refitem}\M*{for further reference} &\refitem{for further reference} &in the \hyperref[userscheme]{\emph{user}} scheme   \\
% \end{tabu}
%
% \medbreak
%
% To name your lists automatically it is also possible to use (these are examples):
%
% \begin{itemize}[itemsep=0pt,topsep=0pt]
% \item \xpackage{interfaces-hypbmsec} with package \xpackage{hypbmsec}:\\
%         \textt{name\stform* = \cs{csname} the\cs{lastsectionname}\cs{endcsname}}
% \item package \xpackage{refcount}: \textt{name\stform* = \cs{getrefbykeydefault}\M*{reference}\M*{anchor}\M*{default}}.
% \end{itemize}
%
%
% \subsection(Making references: \cs{refitem}){Referencing the items : \csbf{refitem}}
% \label{refitem}
%
% \begin{declcs}{refitem}\M{reference}\M*[text with properties \cs{ref}, \cs{label} \etc.]\textsuperscript{babel}\\
%              \cs{refitem}\stform* \\
% \end{declcs}
%
% \thispackage provides \cs{refitem} to reference the items of lists with the following possible syntaxes:
%
% {\tabcolsep=4pt
% \begin{tabu}{X[-1]<{\cellstrut}X} \toprule      \savetabu{refitem}
% \cs{refitem}\M*{\textcolor{reference}{refname}}\M*[\textcolor{properties}{properties}]
%                 & displays a reference to \textt{\dg refname}                    \par
%                    the text displayed depends on the optional \textcolor{properties}{\textt{properties}} \par
%                    whose default value is \cs{ref}. \\ \tabucline[\dash]-
% \cs{refitem}\stform*\M*{\textcolor{reference}{refname}}\M*[\textcolor{properties}{properties}]
%                 & can be used when you want a reference but no hyperlink. \\ \bottomrule
% \end{tabu}}
%
% If the reference \textcolor{reference}{\textt{rename}} does not point to an item, \cs{refitem}
% behaves like \cs{ref} (or \cs{ref\stf}) and the \M*[properties] are ignored.
% A warning is displayed in the \xext{log} file.
%
% The properties available with \cs{refitem} are:
%
% \begin{enumerate}[labelwidth=2.4cm,leftmargin=2.6cm,align=left]
% \item [\csbf{ref}] This is the default property: the same as \LaTeX's \cs{ref} command: it expands
%       to the text corresponding to the \textt{ref} key of the \xpackage{enumitem} list environment,
%       which by default is:
%       \begin{itemize}[leftmargin=1cm]
%       \item in \textt{enumerate} lists: the same as the \textt{label}.
%       \item in \textt{itemize} lists: the index of the item.
%       \item in \textt{description} lists: the user defined label, or if no label has been given to
%             the \cs{item} command, the index of the item.
%       \end{itemize}
% \item [\csbf{label}] The label is printed, whatever value the \textt{ref\ key} has been given. For \textt{description},
%      the label may be empty.
% \item [\csbf{label\stf} \csbf{ref\stf}] This is a variant of \cs{label}: automatic labels in \textt{enumerate} lists are related
%       to a counter. \cs{ref\stf} or \cs{label\stf} prints the formatted value of the counter, without any text around.
%       For \textt{itemize}, \textt{description} or user items inside \textt{enumerate} lists, this is the same as \cs{label}.
% \item [\cs{page}] The same as \cs{pageref}.
% \item [\cs{name}] The name that has been given to the list.
% \item [\cs{depth}] The depth of the list (equal to\, \textt 1\, if the list is not nested).
% \item [\cs{index}] The index of the item; user defined items are counted.
% \item [\cs{listctr}] The item number inside numbered lists (\ie \textt{enumerate}); user defined items are not counted:
%        this is the value of the counter \cs{@listctr}.
% \item [\cs{type}] The type of the list (\ie \textt{enumerate}, \textt{itemize} or \textt{description})
% \item [\cs{refitem}] The list of references names that can be invoked with \cs{refitem} for this specific item
%       in the \hyperref[refitemscheme]{\emph{refitem}} scheme (see also \csref{zeninfo}).
% \item [\cs{commaref}] The list of references names that can be invoked with \cs{refitem} for this specific item
%       in the \hyperref[commarefscheme]{\emph{commaref}} scheme (see also \csref{zeninfo}).
% \end{enumerate}
%
% \begin{declcs}{refitem}\M*[file:\textellipsis]\M{reference}\M{text}\textsuperscript{babel}
% \end{declcs}
%
% For reference to external files (to make hyperlinks), \cs{refitem} can be invoked with the following syntax:
%
% \begin{tabu}{X[-1]<{\cellstrut}X}\toprule
% \cs{refitem}\M*[file:\textellipsis]\M*{{\dg refname}}\M*{{\bf text}}
%                 &Can be used for references to an external \xext{pdf} file. \\ \tabucline[dotted]-
% \cs{refitem}\M*[]\M*{{\dg refname}}\M*{{\bf text}}
%                 & The current file is used by default...
% \\ \bottomrule
% \end{tabu}
%
% Only the \hyperref[refitemscheme]{\emph{refitem}} and the \hyperref[commarefscheme]{\emph{commaref}} schemes can be used.
% The \hyperref[userscheme]{user} scheme cannot be used presently for external files. An implementation ``à la \xpackage{xr}''
% might be provided in a further release.
%
%
% \iffalse
% \begin{tabu}{|>{\ttfamily}l<{\cellstrut}X[m]|}
% \multicolumn{2}{c}{\makecell[c]{\cellstrut\Large\bfseries Available properties \\
%                 \bfseries\large\cellstrut   For the usage of those properties, please refer to the \hyperref[sec:completeexample]{complete example}.%
%                                 }} \\ \hline
% \csbf[\db]{ref}  &
%     This is the default property.
%     The same as \LaTeX's\, \cs{ref}: the text corresponding to the \texttt{ref} key of the
%     \xpackage{enumitem} list environment is printed, which by default is the same as the
%     \textt{label} key in \textt{enumerate} lists. For \textt{itemize} lists, \cs{ref}
%     is the index of the item. \par
%     See \Xpackage{enumitem} package documentation for explanation of the \textt{ref\ key}. \\\hline
% \csbf[\db]{label} &
%     The label will be printed, whatever value the \textt{ref\ key} has been given. \\\hline
% \csbf[\db]{page} & The page will be printed, like ``standard'' \LaTeX-\cs{pageref} \\\hline\hline
% \cs{name} & the list name it is has one (otherwise an empty string)\\ \tabucline[on1pt off 2pt]-
% \cs{depth} &  the list depth \\ \tabucline[on1pt off 2pt]-
% \cs{index} &  the \textbf{index} of the item: user defined items \textbf{are counted}\\ \tabucline[on1pt off 2pt]-
% \cs{listctr} & the \textbf{item number}: user defined items are \textbf{not counted}\\ \tabucline[on1pt off 2pt]-
% \cs{type} & the type of the list (\ie \texttt{enumerate} or \texttt{itemize} or \texttt{description}) \\   \tabucline[on1pt off 2pt]-
% \cs{refitem} & the list of references names that can be invoked with \cs{refitem} for this specific item
%           using the \textit{refitem} scheme (see \hyperref[subsec:zeninfo]{\cs{zeninfo}}) \\ \tabucline[on1pt off 2pt]-
% \cs{commaref} &
%        the list of references names usable with \cs{refitem} for this specific item using the \textit{commaref}
%        scheme (see \hyperref[subsec:zeninfo]{\cs{zeninfo}})\\   \hline\hline
% \end{tabu}
% \fi
%
%
% \subsection[The package options]{\thispackage* package options}
% \label{subsec:packageoptions}\label{package options}
%
% \thispackage can be loaded with the following options:
% \newcommand\CheckOK{{\scriptsize\textcolor{ForestGreen}\CheckmarkBold}}
% \newcommand\CheckFAIL{{\scriptsize\textcolor{Crimson}\XSolidBrush}}
%
% \AtBeginShipoutNext{\AtBeginShipoutUpperLeft{\tikz[remember picture,overlay]
%        \draw [<->] (package options start) -- (package options end)
%                    node [midway,above,rotate=90] {\lsstyle\scriptsize\ttfamily defaults};}}
% \enlargethispage{1.5\baselineskip}
% \begin{itemize}[font=\ttfamily,labelwidth=2cm,leftmargin=\widthof{description\hbox to1em{}},labelsep=6pt,align=left,name=package options]
% \item[enumerate] disables the references for \textt{itemize} and \textt{description} lists:            \marginnote{\tikzlabel[xshift=-.2cm,yshift=.2cm]{package options start}\scriptsize\textt{true}}
%                 only enumerated lists can be referenced.
% \item [itemize] enables/disables the references for \textt{itemize} lists.                                      \marginnote{\scriptsize\textt{true}}
% \item [description] enables/disables the references for \textt{description} lists.                              \marginnote{\scriptsize\textt{true}}
% \item [greek]  Defines \cs{engrec} (lowercase) and \cs{EnGrec} (uppercase) to make enumerate           \marginnote{\scriptsize\textt{false}}
%              lists of items with the greek alphabet as the label (package \xpackage{engrec}).\\
%        \cs{engrec} and \cs{EnGrec} can be used in place of \cs{arabic} (f.ex. \textt{label=\cs{engrec}*}).
% \item [greekctr] Defines \cs{greek} and \cs{Greek} (like \textt{greek} option but with package \Xpackage{greekctr}).  \marginnote{\scriptsize\textt{false}}
% \item [CaSeS] Activate this option to get CaSeS sEnSiTiV references in the \marginnote{\tikzlabel[xshift=-.2cm,yshift=-.5cm]{package options end}\scriptsize\textt{false}}
%       \hyperref[refitemscheme]{\emph{refitem}} scheme. This option applies only
%        to the \hyperref[refitemscheme]{refitem} scheme.
%       List names are always case sensitive.\\
%       If this option is enabled with \xpackage{hyperref}, anchors corresponding to the
%       \hyperref[refitemscheme]{\emph{refitem}} scheme will be case sensitiv as well. \\
%       Package \xpackage{hyperref}'s \textt{[verbose]} option allows to see anchor names in the \xext{log} file. \par
%       \centering
%       \begin{tabu}to .8\linewidth{X[2r]@{\hskip1cm}XX} \tabucline-
%       \rowfont[c]{\bfseries\ttfamily} & CaSeS = true & CaSeS = false \\ \tabucline[\dash]-
%       &
%       \begin{enumerate}[label=\Roman*),before=\vspace*{-\baselineskip}]
%       \item First
%       \item Second
%       \end{enumerate}
%        &
%       \begin{enumerate}[label=\Roman*),before=\vspace*{-\baselineskip}]
%       \item First
%       \item Second
%       \end{enumerate}  \\ \tabucline[\dash]-
%
%       \cs{refitem}\M*{myList\M*{I}} &\CheckOK   works        &   \CheckOK   works        \\
%       \cs{refitem}\M*{myList\M*{i}} &\CheckFAIL doesn't work &   \CheckOK   works \\
%       \cs{refitem}\M*{mylist\M*{I}} &\CheckFAIL doesn't work &   \CheckFAIL doesn't work \\
%
%       \multicolumn3c{List names are always case sensitive.} \\ \tabucline-
%       \end{tabu}
% \end{itemize}
%
% {\small
% \begin{tabu}{>{\ttfamily}X[-4r]*3{X[c]}} \tabucline-
%  \multicolumn4c{\textbf{Types of lists that can be referenced}} \\
%  \rowfont{\normalfont\itshape}
%  \hfill\textup{Package option}\hfill\null         &enumerate                                                      &itemize      &description \\\tabucline-
%  [enumerate]                     &\textbullet                                                    &             &            \\\tabucline[\dash]-
%  [itemize]                       &\textbullet                                                    &\textbullet  &            \\\tabucline[\dash]-
%  [description]                   &\textbullet                                                    &             &\textbullet \\\tabucline[\dash]-
%  [enumerate,itemize]             &\textbullet                                                    &\textbullet  &            \\\tabucline[\dash]-
%  [enumerate,description]         &\textbullet                                                    &             &\textbullet \\\tabucline[\dash]-
%  [itemize,description]           &\textbullet                                                    &\textbullet  &\textbullet \\\tabucline[\dash]-
%  [enumerate,itemize,description] &\textbullet                                                    &\textbullet  &\textbullet \\\tabucline[\dash]-
%  {\normalfont none of the above} &\textbullet                                                    &\textbullet  &\textbullet \\\tabucline-
% \end{tabu}}
%
% \footnotetext{\parbox[t]{\linewidth}{For the French language with \xpackage{babel} \textt{frenchb}-setup,
% \textt{itemize} lists can be processed by \thispackage* only if the option:
%
% \centerline{\cs{frenchbsetup}\M*{CompactItemize=false}}
%
% has been set. This option is automatically set by \xpackage{enumitem-zref} when option \textt{[itemize]}
% is passed.}}
%
%
% \subsection[{If your are lost \cs{zeninfo} is your friend}]{If your are lost \csbf{zeninfo} is your friend}
% \label{subsec:ifyouarelost} \label{subsec:zeninfo}
%
% \begin{declcs}{zeninfo}\M[info-key]
% \end{declcs}
%
% In the paragraph following an item, \cs{zeninfo} reports some informations about the references to the current item:
%
% \begin{tabu}{@{}>{\ttfamily\bfseries}X[-1]X}
% depth      &The depth of the list. \\
% index      &The index of the item. \\
% commaref   &The references that can be used to reference the item in the \hyperref[commarefscheme]{\emph{commaref}} scheme. \\
% refitem    &The reference that can be used to reference the item in the \hyperref[refitemscheme]{\emph{refitem}} scheme. \\
% anchor     &The anchor set for the item (if \xpackage{hyperref}).
% \end{tabu}
%
% With no argument, \cs{zeninfo} prints all these informations.
% \bigskip
%
% Example with the \xpackage{pifont} package:
%
% \begin{Verb*}
% \newcommand\@Ding[1]{\ding{\number\numexpr#1 + 171}}
% \newcommand\Ding[1]{\@Ding{\value{#1}}}
% \AddEnumerateCounter \Ding \@Ding {}
%
% \begin{enumerate}[label=\Ding*,name=dingList]
% \item One
% \item Two
% \item Three              ($rred(\zeninfo))
% \end{enumerate}
% \end{Verb*}
%
% {\makeatletter
% \newcommand\@Ding[1]{\ding{\number\numexpr#1+171}}
% \newcommand\Ding[1]{\@Ding{\value{#1}}}
% \AddEnumerateCounter\Ding\@Ding{}
%
% \begin{enumerate}[label=\Ding*,name=dingList]
% \item One
% \item Two
% \item Three     \textcolor{ForestGreen}\zeninfo
% \end{enumerate}
%
% Now:
%
% {\centering
% \begin{tabu}{X[-1r]X[-1c]X[-1]}
% \cs[\rred]{refitem}\M*{dingList\M*{\cs{@Ding}\M*{3}}} & produces & \refitem{dingList{\@Ding{3}}}
% \end{tabu}\par}
%
% Note that for this purpose:
% \begin{itemize}
% \item \cs{@Ding} could be named differently (without \textt @).
% \item the \hyperref[commarefscheme]{\emph{commaref}} scheme is easier: \cs{refitem}\M*{dingList,3} gives \refitem{dingList,3}.
% \end{itemize}
%
% This example shows the output of \textcolor{ForestGreen}{\cs{zeninfo}}.
%
% }
%
%
%
%
% \StopEventually{
% }
% \clearpage
% \section{Flow chart of expansion: How does it work ?}
%
% \begin{center}
%
% \hspace*{-1.5cm}
% \begin{tikzpicture}[framed,scale=.75,
%       start chain=going below,every join/.style={->},node distance=.5cm and .5cm]
%
%    \node [on chain,font=\bfseries] (beginenv) {\cs{begin}\M*{list environment}}
%     node [on chain] (H) {}
%     node [on chain=going right] (enit@@list) {%
%       \begin{tabu}spread0pt {X[-1]} set the standard keys stored into \cs{enit@@list}\\ set the automatic \textt{name} key without argument.\end{tabu}};
%    \draw [->] (beginenv) |- (enit@@list);
%    \node [on chain,join] (zen@autoname) {\cs{zen@autoname} (callback)}
%    node [on chain=going right,join,node distance=2cm] (zen@autonamedesc) {%
%       \begin{tabu}spread0pt \{{X[-1]}. \rowfont[c]{} saves:\\ \cs{zen@@priorlistname} \\ \cs{zen@@priorcommaref} \\ \cs{zen@@priorrefitem}\\
%                              \rowfont[c]{} defines: \\ \cs{zen@@grouplevel} \\ \cs{zen@@depth} \\
%                              \rowfont[c]{} overloads: \\ \cs{@trivlist} \end{tabu}};
%    \node [yshift=-.5cm] (HH) at (zen@autonamedesc.south -| H) {};
%    \chainin (HH);
%    \node [on chain=going right] (enit@@enum) {set the standard keys stored into \cs{enit@@enum}, \cs{enit@@item} or \cs{enit@@desc}};
%    \draw [->] (H) |- (enit@@enum);
%    \chainin (HH);
%    \node [on chain] (HHH) {}
%     node [on chain=going right] (userkeys) {set the user keys for the environment};
%    \draw [->] (HH) |- (userkeys);
%    \node [on chain] (HH) {};
%    \node (keyname) at (HH -| zen@autoname) {key \textt{name}};
%    \chainin (keyname);
%    \draw [->] (userkeys) |- (keyname.west);
%    \node (keynamecallback) at (keyname -| zen@autonamedesc.west) [anchor=west] {\begin{tabu}spread0pt \{{X[-1]}. \rowfont[c]{} defines:\\ \cs{zen@@listname}\end{tabu}};
%    \chainin (keynamecallback);
%    \draw [->] (keyname) -- (keynamecallback);
%
%    \node [yshift=0cm] (HH) at (keynamecallback.south -| H) {};
%    \chainin (HH);
%    \node [on chain=going right] (expandlist) {expand \cs{list}};
%    \draw [->] (HHH) |- (expandlist);
%    \node [on chain] (HH) {} node [on chain=going right] (expand @trivlist) {\cs{@trivlist}};
%    \draw [->] (expandlist) |- (expand @trivlist);
%    \node [on chain] (HH) {} node [on chain=going right] (expand zen@setupref) {expand \cs{zen@setupref}};
%    \draw [->] (expand @trivlist) |- (expand zen@setupref);
%    \node [on chain=going right] {}
%     node [on chain=going right,join= with expand zen@setupref] (zen@setuprefdesc) {\begin{tabu}spread0pt \{{X[-1]}.
%             overloads: \cs{makelabel}\\
%             defines \cs{zen@refitem@fun}\footnotemark
%             \end{tabu}};
%    \node [yshift=-1cm] (Hitem) at (H |- zen@setuprefdesc) {};
%    \chainin (Hitem);
%    \node [on chain=going right] (item) {expand \cs{item}};
%    \draw [->] (Hitem |- expandlist) |- (item);
%    \node [on chain] (HH) {} node [on chain=going right] (makelabel) {\cs{makelabel}};
%    \draw [->] (item) |- (makelabel);
%    \node [on chain] (HH) {} node [on chain=going right] (zen@makeref) {\cs{zen@makeref}};
%    \draw [->] (makelabel) |- (zen@makeref);
%    \node [on chain=going right,join] (zen@makerefdesc) {%
%          \begin{tabu}spread0pt \{{X[-1]X[-2]}.
%                \rowfont[c]{} defines: &  \\
%                \cs{zen@@ref}            &\xpackage{zref} property (\cs{ref})\\
%                \cs{zen@@starlabel}      &\xpackage{zref} property (\cs{label\textasteriskcentered})\\
%                \cs{zen@@commaref}       &(\hyperref[commarefscheme]{\emph{commaref}} scheme) \\
%                \cs{zen@@refitem}        &(\hyperref[refitemscheme]{\emph{refitem}} scheme)  \\
%                \cs{zen@@anchor}         &\xpackage{hyperref}      \\
%                \multicolumn2l{\cs{refstepcounter\M*{zenItem}}} if no anchor \\
%                 & has been set by \xpackage{hyperref}.
%          \end{tabu}};
%    \node[yshift=-.5cm] (HH) at (makelabel |- zen@makerefdesc.south) {};
%    \chainin (HH);
%    \node [on chain=going right] (makelabelORI) {original \cs{makelabel}: typeset the label};
%    \draw [->] (makelabel) |- (makelabelORI);
%    \chainin (HH);
%    \node [on chain] {} node [on chain=going right] (zen@labelize) {\cs{zen@labelize}};
%    \draw [->] (HH) |- (zen@labelize);
%    \node [on chain=going right,join] (zen@labelizedesc) {\begin{tabu}spread0pt \{{X[-1]}. insert anchors\\ write \xpackage{zref} labels. \end{tabu}};
%    \node (HH) at (H |- zen@labelizedesc.south) {};
%    \chainin (HH);
%    \node [on chain,join = with Hitem,font=\bfseries] (endenv) {\cs{end}\M*{list environment}};
%
% \end{tikzpicture}
%
% \footnotetext{Used for the property \cs{label\textasteriskcentered}
%    and to define the label (and the anchor) in the \emph{refitem} scheme.}
%
% \end{center}
% \clearpage
%
% \StopEventually{
% }
%
% \IMPLEMENTATION
%
% \subsection{Identification and requirements}
%
% The package namespace is \texttbf{\db\string\zen@}
%
%    \begin{macrocode}
%<*package>
\NeedsTeXFormat{LaTeX2e}[2005/12/01]
\ProvidesPackage{enumitem-zref}[2011/02/18 v1.8 - Extended references for enumitem pkg]
\RequirePackage{ltxcmds,etoolbox,kvoptions,gettitlestring,enumitem}
\RequirePackage{zref}[2010/05/01]
\RequirePackage{zref-user,zref-counter}
\GetTitleStringDisableCommands{\let\enit@format \@empty}
%    \end{macrocode}
%
%    Some \cs{catcode} assertions:
%
%    \begin{macrocode}
\let\zen@AtEnd \@empty
\def\TMP@EnsureCode#1#2{{%
   \count@\catcode#1\relax
   \toks@\expandafter{\zen@AtEnd \catcode#1 }
   \xdef\zen@AtEnd{\the\toks@ \the\count@\relax}}
   \catcode#1 #2\relax
}
\TMP@EnsureCode{40}{12}    % (
\TMP@EnsureCode{41}{12}    % )
\TMP@EnsureCode{`\Ï}{14}   % Ï (default comment: itemize option)
\TMP@EnsureCode{`\Ð}{14}   % Ð (default comment: description option)
\TMP@EnsureCode{`\Ë}{9}    % Ë (default ignore: external option)
%    \end{macrocode}
%
% \subsection{The package options}
%
%    \begin{macrocode}
\SetupKeyvalOptions{family=zen,prefix=zen@}
\DeclareBoolOption{CaSeS}
\DeclareBoolOption{itemize}
\DeclareBoolOption{description}
\DeclareBoolOption{enumerate}
\DeclareVoidOption{greek}{\AtEndOfPackage\zen@option@greek}
\def\zen@option@greek{%
   \RequirePackage{engrec,alphalph}
   \let\zen@grecORI \@grec \let\zen@GrecORI \@Grec
   \let\@grec \relax       \let\@Grec \relax
   \newalphalph\@grec[wrap]\zen@grecORI{24}
   \newalphalph\@Grec[wrap]\zen@GrecORI{24}
   \AddEnumerateCounter\engrec\@grec{\@grec{23}}% widest is \psi
   \AddEnumerateCounter\EnGrec\@Grec{\@Grec{12}}% widest is M
   \let\zen@option@greek \relax
}% \zen@option@greek
\DeclareVoidOption{greekctr}{\AtEndOfPackage\zen@option@greekctr}
\def\zen@option@greekctr{%
   \RequirePackage{greekctr,alphalph}
   \let\zen@greekORI \@greek \let\zen@GreekORI \@Greek
   \let\@greek \relax        \let\@Greek \relax
   \newalphalph\@greek[wrap]\zen@greekORI{24}%
   \newalphalph\@Greek[wrap]\zen@GreekORI{24}%
   \AddEnumerateCounter\greek\@greek{\@greek{23}}% widest is \psi
   \AddEnumerateCounter\Greek\@Greek{\@Greek{12}}% widest is M
   \let\zen@option@greekctr \relax
}% \zen@option@greekctr
\DeclareVoidOption{external}{\catcode`\Ë 14\relax}% Ë = comment
\DeclareDefaultOption{\@unknownoptionerror}
\AtBeginDocument{%
   \@ifpackageloaded{greekctr} \zen@option@greekctr \relax
   \@ifpackageloaded{engrec} \zen@option@greek      \relax
}
\ProcessLocalKeyvalOptions{zen}
\ifzen@enumerate\else
   \ifzen@itemize     \zen@enumeratetrue\else
   \ifzen@description \zen@enumeratetrue\else
   \zen@enumeratetrue \zen@itemizetrue \zen@descriptiontrue
   \fi\fi
   \ifzen@enumerate\else
      \zen@enumeratetrue \PackageWarning{enumitem-zref}
             {Option `enumerate = false' has no effect}%
   \fi
\fi
\ifzen@itemize    \catcode`\Ï 9  \fi   % ignore Ï
\ifzen@description\catcode`\Ð 9  \fi   % ignore Ð
\AtBeginDocument{\zen@item@comma \setcounter{zenItem}\z@}
%    \end{macrocode}
%
% Babel French: \xfile{frenchb} redefines \cs{itemize} at begin document.
%
% Therefore, when option \texttt{[itemize]} of \thispackage is used, one have to ensure that
% babel-french setup \texttt{CompactItemize=false} is set:
%
%    \begin{macrocode}
Ï \AtEndPreamble{\ifdefined\frenchbsetup\frenchbsetup{CompactItemize=false}\fi}% [itemize] option
%    \end{macrocode}
%
% \subsection{Some constants}
%
%    \begin{macro}{zenItem}
%
%    is the global \LaTeX{} counter for \xpackage{zref} labels and anchors added by \thispackage*
%
%    \begin{macro}{\c@zenidx}
%
%    is the local counter for the index of the items.
%    Every item is counted.
%
%    \begin{macro}{\zen@toks}
%
%    A token to be used by \cs{refitem} at the time the (optional) properties are analyzed:
%    we can't use \cs{toks@} at this time, because \cs{toks@} could have been set to a value
%    anywhere else.
%
%    \begin{macrocode}
\newcounter{zenItem}
\globcount\c@zenidx
\newtoks\zen@toks
%    \end{macrocode}
%    \end{macro}
%    \end{macro}
%    \end{macro}
%
%    \begin{macro}{\zen@@autolabel}
%
%    To check if the item user-defined or automatic.
%
%    \begin{macrocode}
\def\zen@@autolabel{\@itemlabel}
%    \end{macrocode}
%    \end{macro}
%
%    \begin{macro}{\zen@@noreference}
%
%    How to display undefined references.
%
%    \begin{macrocode}
\def\zen@@noreference{\nfss@text{\reset@font\bfseries ??}}
%    \end{macrocode}
%    \end{macro}
%
%    \begin{macro}{\zen@Hy@anchor}
%
%    is used to put the anchors for the items.
%    It's a wrapper for \xpackage{hyperref} \cs{Hy@raisedlink}.
%
%    \begin{macrocode}
\protected\def\zen@Hy@anchor#1{%
   \Hy@raisedlink{\hyper@anchorstart{#1}\hyper@anchorend}%
}% \zen@Hy@anchor (wrapper for \Hy@raisedlink)
%    \end{macrocode}
%    \end{macro}
%
%    \begin{macro}{\zen@lowercase}
%    \begin{macro}{\zen@CaSeS}
%
%    is used to make lowercase references in the \hyperref[refitemscheme]{\emph{refitem}} scheme,
%    when the package option \refitem{package options{cases}} is not active.
%
%    \begin{macrocode}
\let\zen@CaSeS \@firstofone
\ifzen@CaSeS   \let\zen@lowercase \zen@CaSeS
\else          \let\zen@lowercase \lowercase
\fi
%    \end{macrocode}
%    \end{macro}
%    \end{macro}
%
%    \begin{macro}{\zen@ifrefundefined}
%
%    Switch to the first part if the \LaTeX{} label exists, to the second part otherwise.
%    \begin{macrocode}
\def\zen@ifrefundefined#1{\ltx@IfUndefined{r@#1}}
%    \end{macrocode}
%    \end{macro}
%
%    \begin{macro}{\zen@box}
%
%    A utility to expand code inside a temporary \cs{vbox}
%
%    \begin{macrocode}
\def\zen@box{\hfuzz\maxdimen \vfuzz\hfuzz \hbadness\@M \vbadness\hbadness
             \tracinglostchars\z@ \everypar{}\setbox\z@=\vbox}
%    \end{macrocode}
%    \end{macro}
%
% \subsection{Properties for the zref list: zen@list}
%
%    \begin{macro}{\zen@unique}
%
%    is the unique counter to create unique labels for \xpackage{zref} references (internal use only):
%
%    \begin{macrocode}
\zref@newlist{zen@list}
\def\zen@{zen>\the\c@zenItem}
\zref@newprop{zen@}[]\zen@
\def\zen@temp#1#2#3{%
   \zref@newprop{zen@#2}[\zen@@noreference]{#3}%
   \ifx U#1\expandafter\let\csname zen@extract@#2\endcsname\unexpanded
   \else   \expandafter\let\csname zen@extract@#2\endcsname\detokenize
   \fi
}%
\zref@newprop*{zen@page}[\zen@@noreference]\thepage
\expandafter\let\csname zen@extract@page\endcsname\unexpanded
\zen@temp U{anchor}\zen@@anchor
\zen@temp U{default}\zen@@ref
\zen@temp U{type}{\ifdefined\zen@@type\ifnum\zen@@type<\z@\else \enit@type \fi\fi}
\zen@temp D{listname}\zen@@listname
\zen@temp U{depth}{\the\@listdepth}
\zen@temp U{index}{\the\c@zenidx}
\zen@temp U{listctr}{\ifdefined\@listctr \the\value\@listctr\fi}
\zen@temp U{parents}\zen@@parents
\zen@temp U{label}\zen@@itemlabel
\zen@temp U{starlabel}\zen@@starlabel
\zen@temp U{ref}\zen@@ref
\zen@temp U{item}\@itemlabel
\zen@temp U{currentlabel}\@currentlabel
\zen@temp U{currentlabelname}\@currentlabelname
\zen@temp D{refitem}\zen@@refitem
\zen@temp D{commaref}\zen@@commaref
\zen@temp U{counter}{\zref@getcurrent{counter}}
\zref@addprop{zen@list}{%
   zen@default,zen@page,zen@type,zen@depth,zen@listctr,%
   zen@listname,zen@index,zen@label,zen@ref,zen@starlabel,%
   zen@parents,zen@refitem,zen@commaref,zen@item,zen@currentlabel,zen@counter}
\newif\ifzen@Hy
\AtBeginDocument{%
   \ifdefined\hyper@anchor \zen@Hytrue
      \zref@addprop{zen@list}{zen@anchor,zen@currentlabelname}%
   \else \zen@Hyfalse   \let\zen@refHy \zen@refText
   \fi
}
%    \end{macrocode}
%    \end{macro}
%
% \subsection{Normalisation of references and item labels}
%
%    \begin{macro}{\zen@Normalize}
%
%    \begin{macrocode}
\def\zen@Normalize#1#2#3{\begingroup \let\zen@=#1%
   \def\GetTitleStringResult{#3}\toks@{}%
   \ifx \GetTitleStringResult\@empty \else
      \zen@NormalizeCommands     \GetTitleStringExpand{#3}%
      \expandafter\zen@trailingspaces \GetTitleStringResult{\@nnil}\@nnil
   \fi
   \edef\x{\endgroup
      \def\noexpand#2{\expandafter\zen@zap@doublespaces
                      \detokenize\expandafter{\GetTitleStringResult} \@empty}%
      \def\noexpand\zen@temp {\expandafter\zen@zap@doublespaces
                     \detokenize\expandafter{\the\toks@} \@empty}%
   }\x
}% \zen@Normalize
\def\zen@trailingspaces#1#{\toks@{#1}\expandafter\zen@trailingsp@ces}
{\catcode47 = 8 % /
\gdef\zen@trailingsp@ces#1{%
   \ifx \@nnil#1\@empty \expandafter\remove@to@nnil
   \else \zen@{\toks@\expandafter{\the\expandafter\toks@
                        \expandafter{\romannumeral0\zen@postspace #1/ /}}}%
         \expandafter\zen@trailingsp@ces        % (loop)
   \fi
}% \zen@trailingsp@ces
\gdef\zen@postspace#1 /{\zen@postsp@ce#1/}
\gdef\zen@postsp@ce#1/#2{ #1}
}% \catcode group
\def\zen@NormalizeCommands{%
   \let\ensuremath \@firstofone         % \ensuremath (engrec package)
   \let\relax \@empty
   \csname @safe@activestrue\endcsname
}% \zen@NormalizeCommands
\def\zen@zap@doublespaces#1 #2{%
   #1%
   \ifx#2\@empty\else\space\expandafter\zen@zap@doublespaces\fi
   #2%
}% \zen@zap@doublespaces
%    \end{macrocode}
%    \end{macro}
%
%
% \subsection{Keys \textt{name} and \textt{name\stf} are added to \xpackage{enumitem} environments}
%
%    \begin{macrocode}
\define@key{enumitem}{name}[]{\zen@namelist{#1}}
\define@key{enumitem}{name*}[]{\zen@starnamelist{#1}}
%    \end{macrocode}
%
%    \begin{macro}{\zen@namelist}
%
%    is the callback for the key \texttt{name}.
%
%    \begin{macrocode}
Ë \AtBeginDocument{\gappto\enit@@list{,name}}% ignore if [external]
\def\zen@namelist #1{%
   \ifdefined\zen@@grouplevel\else \let\zen@@grouplevel \z@ \fi
   \ifnum\zen@@grouplevel<\currentgrouplevel% first (automatic) assignment  to name
      \zen@type                             % = (automatic from \enit@@list)
      \ifcase\zen@@type             % (case 0) = enum
         \zen@autoname
      \or                           % (case 1) = itemize
Ï        \zen@autoname              % [itemize] option only
      \or                           % (case 2) = description
Ð        \zen@autoname              % [description] option only
      \fi
   \else \zen@Normalize\zen@CaSeS\zen@@listname {#1}%
         \let\zen@@listname \zen@temp
   \fi
}% \zen@namelist (code for key name)
%    \end{macrocode}
%    \end{macro}
%
%    \begin{macro}{\zen@starnamelist}
%
%    is the callback for the key \textt{name\stf}.
%
%    \begin{macrocode}
\def\zen@starnamelist #1{% (1st automatic assignment to name done before)
   \zen@Normalize\zen@CaSeS\zen@@listname{#1}%
   \let\zen@@listname \zen@temp
   \ifx \zen@@priorlistname\zen@@listname
        \let\zen@@listname \@empty \fi
   \zen@namelist\zen@@listname
}% \zen@starnamelist (code for key name*)
%    \end{macrocode}
%    \end{macro}
%
%    \begin{macro}{\zen@autoname}
%
%    is the callback for the key \textt{name} automatically set without argument
%    by \cs{setkeys}\M*{enit@@list}. This corresponds to some setup:
%
%    \begin{itemize}
%    \item save the prior list name \etc.
%    \item define the group level,
%    \item define the list depth,
%    \item reset the index,
%    \item save the definition of \cs{@trivlist} and overload it temporarily
%          until its next expansion at the beginning of the list.
%    \end{itemize}
%
%    \begin{macrocode}
\def\zen@autoname{% (1st automatic assignment to key name (by \enit@@list))
   \unless \ifx\zen@@listname\@empty
      \let\zen@@priorlistname \zen@@listname \fi
   \unless\ifdefined\zen@@priorlistname \let\zen@@priorlistname \@empty\fi
   \let\zen@@listname \@empty
   \ifdefined\zen@@commaref \let\zen@@priorcommaref \zen@@commaref
   \else                    \let\zen@@priorcommaref \@empty
                            \let\zen@@commaref      \@empty
   \fi
   \ifdefined\zen@@refitem \let\zen@@priorrefitem \zen@@refitem
   \else                   \let\zen@@priorrefitem \@empty
                           \let\zen@@refitem      \@empty
   \fi
   \edef\zen@@grouplevel {\the\currentgrouplevel}%
   \edef\zen@@depth {\number\@listdepth}%
   \ifnum \zen@@depth>\@ne \edef\zen@@parents{{\the\c@zenItem}\zen@@parents}%
   \else                   \let\zen@@parents \@empty \fi
   \let\zen@refitem@fun \@undefined
   \ifcase \zen@@type \zen@prepare@resume \fi   % (enumerate only: key resume)
   \c@zenidx \z@
   \let\zen@trivlistORI \@trivlist
   \let\@trivlist \zen@trivlist
}% \zen@name@list
\def\zen@prepare@resume{\expandafter\def\expandafter\enit@endenumerate
   \expandafter{\enit@endenumerate \zen@endenumerate}%
}% \zen@prepare@resume
\def\zen@endenumerate{% saves the value of \c@zenidx at the exit of enum envir
   \zen@toks\expandafter{\enit@afterlist}%
   \xdef\enit@afterlist{\the\zen@toks
       \def\expandafter\noexpand
         \csname enit@resume@\@currenvir\endcsname{%
         \csname c@\@listctr\endcsname
         \the\csname c@\@listctr\endcsname
         \c@zenidx \the\c@zenidx\relax}}%
}% \zen@prepare@resume
%    \end{macrocode}
%    \end{macro}
%
%    \begin{macro}{\zen@trivlist}
%
%    \cs{@trivlist} is temporarily overloaded, and the original definition
%    is immediately restored at the time it will be expanded, just after having
%    set all the specified keys for the list environment.
%
%    The overload sets \cs{zen@setuprefs} to be expanded at the end of \cs{@trivlist}.
%
%    \begin{macrocode}
\def\zen@trivlist{%
   \let\@trivlist \zen@trivlistORI     % restore orginal immediately
   \@trivlist     \zen@setuprefs
}% \zen@trivlist
%    \end{macrocode}
%    \end{macro}
%
%    \begin{macro}{\zen@type}
%
%    expands to:§
%    \begin{enumerate}[label=,leftmargin=2cm,itemsep=0pt,parsep=0pt]
%     \item[0] if \texttt{enumerate}
%     \item[1] if \texttt{itemize} (and \texttt{[itemize]} option is active)
%     \item[2] if \texttt{description} (and \texttt{[description]} option is active)
%     \item[-1] in any other case
%    \end{enumerate}
%
%    \begin{macrocode}
\def\zen@type{%
   \ifdefined\enit@type
      \expandafter\strip@prefix        \if e\enit@type>\let\zen@@type\z@  % enum begins with e
      \else>\expandafter\strip@prefix  \if i\enit@type>\let\zen@@type\@ne % item begins with i
      \else>\expandafter\strip@prefix  \if d\enit@type>\let\zen@@type\tw@ % desc begins with d
      \else>\let\zen@@type\m@ne
      \fi\fi\fi
   \else    \let\zen@@type\m@ne
   \fi
}% \zen@type
%    \end{macrocode}
%    \end{macro}
%
%
% \subsection{Overloading \cs{makelabel}}
%
%    \begin{macro}{\zen@setuprefs}
%
%    expands just at the end of \cs{@trivlist}. \cs{makelabel} is overloaded
%    in order to make the references and write the labels into the \xext{aux} file.
%
%    \begin{macro}{\zen@makelabel}
%    \begin{macrocode}
\def\zen@setuprefs{%
   \edef \zen@temp{\zen@@priorlistname\zen@@listname}%
   \ifx \zen@temp\@empty
      \ifx \makelabel\zen@makelabel \let\makelabel \zen@makelabelORI \fi
   \else
      \ifx \makelabel\zen@makelabel \else
         \let \zen@makelabelORI \makelabel
         \let \makelabel \zen@makelabel   \fi
   \fi
   \let\zeninfo \zen@info
   \ifcase \zen@@type         % enumerate only (key start)
      \ifnum \c@zenidx=\z@ \c@zenidx\value\@enumctr\relax \fi
   \fi
   \zen@refitem@implicit
}% \zen@setuprefs
\def\zen@makelabel#1{\zen@makeref{#1}\zen@makelabelORI{#1}\zen@labelize}
%    \end{macrocode}
%    \end{macro}
%    \end{macro}
%
%
%    \begin{macro}{\zen@refitem@implicit}
%
%    defines \cs{zen@refitem@fun} which cancels text around the formatted counter
%    in \textt{enumerate} lists (\ie numbered lists). This will be used at the time
%    of \cs{makelabel} to create the \textt{refitem} and the property \cs{label\stf}
%    (which corresponds to \xpackage{zref} property \textt{zen@starlabel}).
%
%    \begin{macrocode}
\def\zen@refitem@implicit{% determine value of key refitem according to the label
   \def\zen@gtemp {{\the\c@zenidx}}%
   \ifnum \zen@@type=\z@      % enumerate
      {\let\enit@refstar \zen@refitemfromlabel
       \enit@labellist   \zen@box{\@itemlabel}}%
   \fi
   \let\zen@refitem@fun \zen@gtemp
}% \zen@refitem@implicit
\def\zen@refitemfromlabel#1{\def#1##1{0%
   \def\zen@temp{##1}\ifx \zen@temp\@enumctr
                     \gdef\zen@gtemp{{#1{##1}}}\fi}%
}% \zen@refitemfromlabel
%    \end{macrocode}
%    \end{macro}
%
%
% \subsection{Creating references}
%
%    \begin{macro}{\zen@makeref}
%
%    is expanded just before the original version of \cs{makelabel}
%
%    The aim is to set the \xpackage{zref} properties defined by \thispackage*
%    for the current item, and to define the anchor names.
%
%    \begin{macrocode}
\def\zen@makeref#1{% #1 = argument of \makelabel
   \def\zen@@itemlabel{#1}\advance\c@zenidx \@ne
   \ifx \zen@@itemlabel\zen@@autolabel
      \if@nmbrlist
         \global\advance\c@zenItem \@ne
         \let\zen@@ref \@currentlabel
      \else
         {\refstepcounter{zenItem}}%
         \let\zen@@ref \zen@refitem@fun
      \fi
      \let\zen@@starlabel \zen@refitem@fun
      \zen@Normalize\zen@lowercase\zen@currentrefitem \zen@refitem@fun
   \else                                  % user defined label
      {\refstepcounter{zenItem}}%
      \zen@Normalize\zen@lowercase\zen@@ref {{\zen@@itemlabel}}%
      \let\zen@@starlabel \zen@@ref
   \fi
   \let\zen@currentrefitem \zen@temp      % \zen@temp defined by \zen@Normalize
   \let\zen@@anchor \@currentHref
   \zen@makeref@item@comma
}% \zen@makeref
%    \end{macrocode}
%    \end{macro}
%
%    \begin{macro}{\zen@labelize}
%
%    is expanded just after the original version of \cs{makelabel}
%
%    \textt{zlabel}{\smaller s} are written into the \xext{aux} file.
%
%    \begin{macrocode}
\def\zen@labelize{%
   \ifzen@Hy \zen@anchors
             \zref@labelbyprops{zen->\@currentHref}{zen@}\fi
   \zref@labelbylist\zen@{zen@list}%
   \zen@keeplabel
}% \zen@makeref
%    \end{macrocode}
%    \end{macro}
%
%    \begin{macro}{\zen@makeref@item@comma}
%
%    Creates the references for the \hyperref[commarefscheme]{\emph{commaref}}
%    and the \hyperref[refitemscheme]{\emph{refitem}} schemes.
%
%    \begin{macrocode}
\def\zen@makeref@item@comma{%
\begingroup    % to avoid silent assignment to \relax
   \edef\x{\endgroup
      \def\noexpand\zen@@commaref{%
         \expandafter\zen@commaref@\zen@@priorcommaref \@nnil}%
      \def\noexpand\zen@@refitem{%
        \expandafter\zen@refitem@\zen@@priorrefitem \@nnil}%
   }\x
}% \zen@makeref@item@comma
\def\zen@refitem@#1{%
   \ifx\@nnil#1%
      \ifx \zen@@listname\@empty \else
         {\zen@@listname\zen@currentrefitem}\fi
   \else {#1\zen@currentrefitem}\expandafter\zen@refitem@ % loop
   \fi
}% \zen@refitem@
\def\zen@commaref@#1{%
   \ifx\@nnil#1%
      \ifx \zen@@listname\@empty \else
         {\zen@@listname,\the\c@zenidx}\fi
   \else {#1,\the\c@zenidx}\expandafter\zen@commaref@     % loop
   \fi
}% \zen@commaref@
%    \end{macrocode}
%    \end{macro}
%
%
%    \begin{macro}{\zen@anchors}
%
%    Put the \pdf anchors for the current item.
%
%    \begin{macrocode}
\let\zen@list@anchors\@empty
\def\zen@anchors{\begingroup
   \def\zen@@anchors{\endgroup}%
   \expandafter\expandafter\expandafter\zen@anchors@
         \expandafter\zen@@commaref \zen@@refitem \@nnil
   \zen@@anchors
}% \zen@anchors
\def\zen@anchors@#1{%
   \ifx \@nnil#1\else
      \expandafter\in@\csname refitem.#1\expandafter\endcsname\expandafter{\zen@list@anchors}%
      \ifin@   \zen@anchor@ignore{#1}%
      \else
         \edef\zen@@anchors{\zen@@anchors\zen@Hy@anchor{refitem.#1}}%
         \xdef\zen@list@anchors{%
            \unexpanded\expandafter{\zen@list@anchors}%
            \expandafter\noexpand\csname refitem.#1\endcsname}%
      \fi
      \expandafter\zen@anchors@   % loop
   \fi
}% \zen@anchors@ (loop)
\def\zen@anchor@ignore#1{\PackageInfo{enumitem-zref}{Ignored anchor `#1'}}
%    \end{macrocode}
%    \end{macro}
%
%    \begin{macro}{\zen@keeplabel}
%
%    As far as references are built and written inside \cs{makelabel} (which was overloaded)
%    they are built inside a group (inside a \cs{sbox}, and thus inside a \cs{color@setgroup}...\cs{color@endgroup}
%    group if packages \xpackage{color} or \xpackage{xcolor} are used, and may be inside other grouping levels
%    depending on the user need (she may have redefined \cs{makelabel} for a special purpose).
%
%    Therefore, we take advantage of the e-\TeX{} command \cs{currentgrouplevel} in order to
%    decide how many levels of grouping we have to ``pass through'' for keeping the current
%    values of \cs{z@zenidx} (the item \emph{index}), \cs{zen@@refitem},\, and\, \cs{zen@@commaref}.
%
%    The ``target'' group level has been saved into \cs{zen@@grouplevel} at the beginning of the
%    environment, while setting the automatic \texttt{name} key for the first time.
%
%    \begin{macrocode}
\def\zen@keep#1{\def\noexpand#1{\unexpanded\expandafter{#1}}}%
\def\zen@keeplabel{%
   \xdef\zen@gtemp{%
      \noexpand\ifnum \zen@@grouplevel<\currentgrouplevel
         \aftergroup \noexpand\zen@gtemp
      \noexpand\else
         \c@zenidx \the\c@zenidx\relax
         \zen@keep \zen@@refitem
         \zen@keep \zen@@commaref
         \ifzen@Hy \zen@keep\zen@@anchor\fi
      \noexpand\fi
   }\aftergroup\zen@gtemp
}% \zen@keeplabel
%    \end{macrocode}
%    \end{macro}
%
%
% \subsection[{Extracting zref properties}]{Extracting \xpackage{zref} properties}
%
%    \begin{macro}{\zen@extract}
%
%    A wrapper to \cs{zref@extractdefault} which can also \cs{detokenize} the result.
%
%    \begin{macrocode}
\newcommand*\zen@extract[3]{% #1=ref #2=prop #3=def
   \csname zen@extract@#2\endcsname\expandafter\expandafter%
      \expandafter{\zref@extractdefault{zen>\number#1}{zen@#2}{#3}}%
}% \zen@extract
%    \end{macrocode}
%    \end{macro}
%
%
% \subsection{Referencing the items: \cs{refitem}}
%
%    \begin{macro}{\refitem}
%
%    The general macro to print references and insert hyperlinks,
%    with a star variant (no hyperlink).
%
%    \begin{macrocode}
\newrobustcmd*\refitem{\begingroup \@ifstar
   {\zen@refitemOpt \zen@reftext }%          no hyperlink
   {\zen@refitemOpt \zen@refHy }%
}% \refitem
\def\zen@refHy{%
%%   \edef\zen@@anchor{\zen@extract\c@zenItem{anchor}{}\unexpanded}%
%%   \ifx \zen@@anchor\@empty \zen@@text
%%   \else
   \hyperref{}{}{\zref@extract{zen>\the\c@zenItem}{zen@anchor}}\zen@@text
%%   \fi
}% \zen@ref
\def\zen@refText{\zen@@text}
%    \end{macrocode}
%    \end{macro}
%
%    \begin{macro}{\zen@refitemOpt}
%
%    If the first argument is an option, then \cs{refitem} makes a hyperlink
%    to an external document.
%
%    \begin{macrocode}
\def\zen@refitemOpt#1{\let\zen@ref@#1\@ifnextchar[\zen@refitemExternal \zen@refitemRef }
\def\zen@refitemRef #1{\@tempswatrue \let\zen@lastwarn \m@ne
   \zen@Normalize\zen@lowercase\zen@@label {#1}%
   \zen@ifrefundefined \zen@@label
     {\expandafter\expandafter\expandafter \zen@refused
       \csname\ifcsname zen@refitem(\zen@temp)\endcsname
                        zen@refitem(\zen@temp)\else
                        zen@norefitem\fi\endcsname>}%
      \zen@refitemFromAnchor
}% \zen@refitemRef
\def\zen@norefitem {\z@>0}
%    \end{macrocode}
%    \end{macro}
%
%    \begin{macro}{\zen@refused}
%
%    Checks if the label exists in the \hyperref[commarefscheme]{\emph{commaref}} scheme
%    or in the \hyperref[refitemscheme]{\emph{refitem}} scheme.
%
%    \begin{macrocode}
\def\zen@refused#1>#2>{%
   \ifcase#1\relax
         \@tempswafalse    \refused\zen@@label
         \let\zen@ref@ \zen@refText % do not create a hyperlink if no reference
   \or   \let\zen@@label \zen@temp \c@zenItem =#2\relax
   \else \let\zen@@label \zen@temp \zen@MultipleLabels
         \c@zenItem =#2\relax
   \fi
   \zen@refitem@prop
}% \zen@refused
%    \end{macrocode}
%    \end{macro}
%
%    \begin{macro}{\zen@refitemFromAnchor}
%
%    When \cs{refitem} refers to a user item, we can reached the \xpackage{zref} properties
%    with the chain:
%
%    \tikz[start chain=going right,every join/.style={->}]
%              \node [on chain] {\LaTeX{} label}
%              node [on chain,join] {\xpackage{hyperref} anchor}
%              node [on chain,join] {\thispackage* label}
%              node [on chain,join] {property};
%
%    \begin{macrocode}
\def\zen@refitemFromAnchor{%
   \edef\zen@@anchor{\getrefbykeydefault\zen@@label{anchor}{}}%
   \ifx \zen@@anchor\@empty
      \@tempswafalse \G@refundefinedtrue \zen@warn\z@
      \let\zen@ref@ \zen@refText
   \else
      \edef\zen@temp{\zref@extractdefault{zen->\zen@@anchor}{zen@}{}}%
      \ifx \zen@temp\@empty
         \@tempswafalse \G@refundefinedtrue \zen@warn\@ne
         \ifzen@Hy \ifx\zen@ref@ \zen@refHy \def\zen@ref@{\ref{\zen@@label}}%
                   \else \def\zen@ref@ {\ref*{\zen@@label}}%
                   \fi
         \else \def\zen@ref@{\ref{\zen@@label}}%
         \fi
      \else \c@zenItem \expandafter\strip@prefix\zen@temp\relax
      \fi
   \fi
   \zen@refitem@prop
}% \zen@refitemFromAnchor
%    \end{macrocode}
%    \end{macro}
%
%    \begin{macrocode}
\def\zen@warn#1{\let\zen@lastwarn#1%
   \message{Package enumitem-zref Warning:
   \ifcase#1 %
      \string\refitem{\zen@@label}:
      User references to \string\label\space^^J\zen@spaces
      require hyperref and the appropriate options for enumitem-zref^^J\zen@spaces
      \ifzen@Hy Check the options given to package enumitem-zref.
      \else Package hyperref is not loaded.\fi
   \or User reference does not point to an item!^^J\zen@spaces
       \string\refitem{\zen@@label}
   \fi\on@line^^J^^J}}
\edef\zen@spaces{\@spaces\@spaces}
%    \end{macrocode}
%
%
%    \begin{macro}{\zen@refitem@prop}
%
%    tests if \cs{refitem} has a following optional argument: the properties.
%
%    As long as the optional argument is in last position, we have to take a special
%    care about the the spaces  (\cs{@ifnextchar} removes spaces).
%
%    \begin{macrocode}
\def\zen@refitem@prop{\futurelet\zen@temp \zen@refitemProp}
\def\zen@gobblespace#1 {#1}%
\let\zen@space \relax
\def\zen@refitemProp{%
   \ifcase 0\ifx \zen@temp[\else
            \ifx \zen@temp\@sptoken 1\else
            2\fi\fi\relax
         \expandafter \zen@refitemPrint
   \or   \let\zen@space\space
         \expandafter\zen@gobblespace\expandafter\zen@refitem@prop
   \else \expandafter\zen@refitemPrint \expandafter[\expandafter]%
   \fi
}% \zen@refitemProp
%    \end{macrocode}
%    \end{macro}
%
%
%    \begin{macro}{\zen@refitemPrint}
%
%    is the final macro to print the reference made by \cs{refitem}.
%    The properties, if specified, are first analyzed by \cs{zen@refitemText}.
%
%    \begin{macrocode}
\long\def\zen@refitemPrint[#1]{\def\zen@@text{#1}%
   \if@tempswa    % got a reference
      \ifx \zen@@text\@empty
           \edef\zen@@text{{\zen@extract\c@zenItem{default}\zen@@noreference}\zen@space}%
      \else\zen@refitemText
      \fi
   \else
      \ifx  \zen@@text\@empty \def\zen@@text{\zen@@noreference\zen@space}%\refused\zen@@label
      \else \zen@refitem@noText
      \fi
   \fi
   \zen@ref@
   \endgroup
}% \zen@refitemPrint
%    \end{macrocode}
%    \end{macro}
%
%    \begin{macro}{\zen@refitemText}
%
%    creates the text to be typeset for the reference, depending on the properties
%    given by the user as the last optional argument to \cs{refitem}.
%
%    \begin{macrocode}
\def\zen@refitemText{\zen@propcount
   \ifnum \c@zenidx>\z@    \advance\c@zenidx \m@ne
      \ifnum \c@zenidx>\z@
         \edef\zen@@parents{\zen@extract\c@zenItem{parents}{}}%
         \edef\zen@@depth{\zen@extract\c@zenItem{depth}0}%
      \else \let\zen@@depth \@ne     % shortcut (only one property)
      \fi
      \def\ref{\@ifstar{\zen@ancestorprop{starlabel}}{\zen@ancestorprop{ref}}}%
      \def\label{\@ifstar{\zen@ancestorprop{starlabel}}{\zen@ancestorprop{label}}}%
      \def\default{\zen@ancestorprop{default}}\def\counter{\zen@ancestorprop{counter}}%
      \def\type{\zen@ancestorprop{type}}\def\listname{\zen@ancestorprop{listname}}%
      \def\index{\zen@ancestorprop{index}}\def\listctr{\zen@ancestorprop{listctr}}%
      \def\depth{\zen@ancestorprop{depth}}\def\refitem{\zen@ancestorprop{refitem}}%
      \def\anchor{\zen@ancestorprop{anchor}}\def\commaref{\zen@ancestorprop{commaref}}%
      \def\page{\zen@ancestorprop{page}}\def\currentlabel{\zen@ancestorprop{currentlabel}}%
      \def\currentlabelname{\zen@ancestorprop{currentlabelname}}%
      {\zen@box{\zen@@text
               \expandafter}\expandafter}\expandafter\zen@toks
                     \expandafter{\the\zen@toks \zen@nil}%
      \def\ref{\the\zen@toks}\zen@clprops
      \def\ref{\@ifstar{\the\zen@toks}{\the\zen@toks}}\let\label\ref
      \long\def\zen@##1##2\zen@nil{\zen@toks{##2\zen@nil}##1}\let\zen@nil\relax
   \fi
}% \zen@refitemText
\def\zen@ancestorprop#1{%
   \ifnum \zen@@depth>\c@zenidx
      \advance\c@zenidx \m@ne
      \ifnum \c@zenidx<\z@    \let\zen@ \c@zenItem
      \else                   \edef\zen@{\zen@ancestor}%
      \fi
      \edef\zen@temp{{\zen@extract\zen@{#1}\zen@@noreference}}%
   \else \def\zen@temp{{}}\advance\c@zenidx \m@ne
   \fi
   \zen@toks\expandafter{\the\expandafter\zen@toks \expandafter\zen@ \zen@temp}%
}% \zen@ancestorproperty
\def\zen@ancestor{\expandafter\ltx@car\romannumeral0\expandafter\ltx@GobbleNum
   \expandafter{\the\expandafter\c@zenidx\expandafter}\zen@@parents{}{}{}\@nil % no need of {}...
}% \zen@getancestor
\def\zen@propcount{\c@zenidx\z@
   \def\ref{\advance\c@zenidx \@ne}\zen@clprops
   {\zen@box{\zen@@text \expandafter}\expandafter}\expandafter
                               \c@zenidx \the\c@zenidx\relax
}% \zen@propcount
\def\zen@clprops{\let\label\ref    \let\page\ref
   \let\none\ref  \let\default\ref \let\counter\ref \let\listname\ref
   \let\anchor\ref \let\depth\ref  \let\type\ref    \let\index\ref   \let\listctr\ref
   \let\refitem\ref \let\commaref\ref \let\currentlabel\ref \let\currentlabelname\ref
}% \zen@clprops
\def\zen@refitem@noText{\let\ref \zen@@noreference \zen@clprops}
%    \end{macrocode}
%    \end{macro}
%
%
%    \begin{macro}{\zen@refitemExternal}
%
%    for references to an anchor in an external document with \cs{hyperref}:
%
%    \begin{macrocode}
\def\zen@refitemExternal[#1]#2{%
   \toks@{#1}\zen@Normalize\zen@lowercase\zen@@label {#2}%
   \edef\zen@ref@{\endgroup
      \noexpand\hyperref{\the\toks@}{refitem}{\zen@temp}%
   }\zen@ref@
}% \zen@Hy@external
%    \end{macrocode}
%    \end{macro}
%
%
% \subsection{Undefined references and duplicate labels management}
%
%
%    \begin{macro}{\zen@MultipleLabels}
%
%    \begin{macrocode}
\def\zen@MultipleLabels{%
   \PackageWarning{enumitem-zref}
      {`\zen@@label' on page \thepage \space multiple defined\MessageBreak
       Only the first one will be referenced}% et mettre ici la liste des références correspondant aux alias
}% \zen@MultipleLabels
%    \end{macrocode}
%    \end{macro}
%
% \subsection{\cs{zeninfo} (If you are lost...)}
%
%    \begin{macro}{\zen@info}
%
%    \cs{zeninfo} executes \cs{zen@info} when inside environments:
%
%    \begin{macrocode}
\newrobustcmd*\zen@info[1][]{\begingroup \sloppy
   \def\sep##1{##1\hskip\z@ plus.001fil\relax\linebreak[2]}%
   \ifcase\zen@whichinfo{#1}   \zen@@depth      % case 0 (depth)
   \or                         \the\c@zenidx    % case 1 (index)
   \or                                          % case 2 (type)
      \ifcase\zen@@type enumerate\or itemize\or description\or unknown\fi
   \or anchor=\ifzen@Hy\zen@@anchor\else no hyperref\fi % case 3 (anchor)
   \or refitem=\sep{}\detokenize\expandafter{\zen@@refitem}% case 4 (refitem)
   \or commaref=\sep{}\detokenize\expandafter{\zen@@commaref}% case 5 (commaref)
   \else                                        % (case -1) give all infos
      {\ifdefined\scriptsize\scriptsize\fi
          zeninfo:\sep{}depth=\sep{}\zen@@depth
                  \sep/ idx=\sep{}\the\c@zenidx
         \ifcase\zen@@type \sep/ ctr=\sep{}\the\value\@listctr \fi % enumerate only
                  \sep/ commaref=\sep{}\detokenize\expandafter{\zen@@commaref}%
                  \sep/ refitem=\sep{}\detokenize\expandafter{\zen@@refitem}%
         \ifzen@Hy\sep/ anchor=\sep{}\zen@@anchor \fi
      }%
   \fi\endgroup
}% \zen@info
%    \end{macrocode}
%    \end{macro}
%
%    \begin{macro}{\zeninfo}
%
%    is executed when out of scope:
%
%    \begin{macrocode}
\newrobustcmd\zeninfo[1][]{\begingroup
   \ifdefined\zen@@type
   \ifcase \zen@@type \zeninfo@err
Ï  \or                \zeninfo@err
Ð  \or                \zeninfo@err
   \else\zeninfo@err[{in environment \@currenvir\MessageBreak
                      You should be in a list environment}]%
   \fi\endgroup
}% \zeninfo (out of scope)
\newcommand*\zeninfo@err[1][{you should give a name to your \@currenvir\space list}]{%
   \PackageError{enumitem-zref}
      {\string\zeninfo\space is not available\MessageBreak
      #1}\@eha
}% \zeninfo@err
%    \end{macrocode}
%    \end{macro}
%
%    \begin{macro}{\zen@whichinfo}
%
%    \begin{macrocode}
\def\zen@whichinfo#1{%
   \expandafter\strip@prefix      \if d#1>\z@   % depth  (begins with  d)
   \else>\expandafter\strip@prefix\if i#1>\@ne  % index  (begins with  i)
   \else>\expandafter\strip@prefix\if t#1>\tw@  % type   (begins with  t)
   \else>\expandafter\strip@prefix\if a#1>\thr@@% anchor (begins with  a)
   \else>\expandafter\strip@prefix\if r#1>4     % refitem(begins with  r)
   \else>\expandafter\strip@prefix\if c#1>5     % commaref(begins with c)
   \else>\m@ne
   \fi\fi\fi\fi\fi\fi
}% \zen@whichinfo
%    \end{macrocode}
%    \end{macro}
%
%
% \subsection{Create the references At Begin Document for the \texorpdf\emph{refitem} and the \texorpdf\emph{commaref} schemes}
%
%    \begin{macro}{\zen@item@comma}
%
%    \begin{macrocode}
\def\zen@item@comma{%
   \begingroup \c@zenidx \@ne %%\loggingall
   \@whilesw \ifcsname Z@R@zen>\the\c@zenidx\endcsname\fi
                     {\advance\c@zenidx \@ne}%
   \@whilenum \c@zenidx>\@ne
   \do{\advance \c@zenidx \m@ne
      \zref@wrapper@unexpanded{%
      \edef\zen@refitem{%
            \zref@extractdefault{zen>\the\c@zenidx}{zen@refitem}{}%
            \zref@extractdefault{zen>\the\c@zenidx}{zen@commaref}{}}%
       \edef\zen@refitem{\expandafter
            \zen@item@comma@ \zen@refitem \@nnil}%
       \expandafter\zen@def@item@comma@ \zen@refitem \@nnil}}%
   \endgroup
}% \zen@item@comma
\def\zen@item@comma@ #1{%
   \ifx\@nnil#1\else
      \expandafter\noexpand\csname zen@refitem(\detokenize{#1})\endcsname
      \expandafter\zen@item@comma@ % (loop)
   \fi
}% \zen@item@comma@
%    \end{macrocode}
%    \end{macro}
%
%    \begin{macro}{\zen@def@item@comma@}
%
%    \begin{macrocode}
\def\zen@def@item@comma@ #1{\ifx\@nnil#1\else
      \zen@def@item@comma{#1}\expandafter\zen@def@item@comma@ \fi % loop
}% \zen@def@item@comma@
%    \end{macrocode}
%    \end{macro}
%
%    \begin{macro}{\zen@def@item@comma}
%
%    \begin{macrocode}
\newif\ifzen@duplicatealiases
\def\zen@def@item@comma #1{%
   \xdef#1{%
      \ifdefined#1%
         \ifx\relax#1\@empty         \@ne>\the\c@zenidx% create new
         \else \expandafter
            \ifnum\expandafter\strip@prefix#1=\c@zenidx% redefinition to the same location
               #1%
            \else
               \number\numexpr1+#1% increment multiplicity
            \fi
         \fi
      \else                      \@ne>\the\c@zenidx% create new
      \fi}%
   \ifzen@duplicatealiases\else
   \expandafter\expandafter\expandafter\strip@prefix
      \expandafter\strip@prefix\ifnum\@ne<#1>\global\zen@duplicatealiasestrue\else>>\fi
   \fi
}% \zen@def@item@comma
%    \end{macrocode}
%    \end{macro}
%
%    \begin{macrocode}
\zen@AtEnd \let\zen@AtEnd\@undefined
%</package>
%    \end{macrocode}
%
% \restoregeometry
% \sectionformat\section{label=,font=\LARGE\bfseries,mark=\marksthe{section}{#1}}
% \sectionformat\subsection{font+=\smaller,left=0pt}
% \pagesetup{pagestyle=corpus,head/left+=\ {\lsstyle(\thefirstmarks{section})}}
%
% \begin{thebibliography}{9}
%
% \bibitem{enumitem}
%   \textit{The \xpackage{enumitem} package}; Javier Bezos\\
%   2009/05/18 v2.2 -- Customized lists \\
%   \CTANhref{enumitem}
%
% \bibitem{zref}
%   \textit{The \xpackage{zref} package}; Heiko Oberdiek\\
%   2010/05/01 v2.17 -- New reference scheme for LaTeX2e \\
%   \CTANhref{zref}
%
% \bibitem{gettitlestring}
%   \textit{The \xpackage{gettitlestring} package}; Heiko Oberdiek\\
%   2009/12/18 v1.3 -- Cleanup title references\\
%   \CTANhref{gettitlestring}
%
% \bibitem{engrec}
%     \textit{The \xpackage{engrec} package}; Yvon Henel \\
%     2008/05/07 v1.1 -- Greek letters from counters\\
%     \CTANhref{engrec}
%
% \end{thebibliography}
%
% \setitemize{leftmargin=2em}
% \sectionformat\subsection{font=\normalsize\bfseries\pkgcolor}
% \bottomtitles=-1pt
% \begin{History}
%
%   \begin{Version}{2011/02/18 v1.8}\HistLabel{v1.8}
%   \item Documentation recompiled after \Xpackage{tabu} package v2.5 release.
%   \end{Version}
%
%   \begin{Version}{2010/12/30 v1.75}\HistLabel{v1.75}
%   \item Bug fixed with empty items and nested lists.
%   \end{Version}
%
%   \begin{Version}{2010/12/27 v1.7}\HistLabel{v1.7}
%   \item Documentation improvement.
%   \item No modification in the package file.
%   \end{Version}
%
%   \begin{Version}{2010/12/17 v1.5}\HistLabel{v1.5}
%   \item \thispackage now works with the keys: \textt{start=},\, \textt{resume},\, and\, \textt{resume\stf}\,
%         of \xpackage{enumitem} package.
%   \item Package option: \refitem{package options{greekctr}}[\textt{greekctr}] added as an alternative to the
%        \refitem{package options{greek}}[\textt{greek}] package option: \textt{greekctr} is based on the
%         \Xpackage{greekctr} package while \textt{greek} is based on \Xpackage{engrec}.
%         Both uses code of \Xpackage{alphalph} in order to make the counters \textsl{wrap} around the greek alphabet. \\
%         Options \refitem{package options{greek}}[\textt{greek}] and/or \refitem{package options{greekctr}}[\textt{greekctr}]
%         are automatically loaded \cs{AtBeginDocument} if the \xpackage{engrec} / \xpackage{greekctr} packages are detected.
%   \end{Version}
%
%   \begin{Version}{2010/12/10 v1.2}\HistLabel{v1.2}
%   \item Bug encountered in \cs\zen@anchors@: \\
%        \cs\ifx\#1\cs\@nnil is not the same as \cs\ifx\cs\@nnil\#1\quad !!
%   \end{Version}
%
%   \begin{Version}{2010/12/02 v1.1}\HistLabel{v1.1}
%   \item The first version.
%   \end{Version}
%
% \end{History}
%
% \clearpage
% \PrintIndex
%
% \Finale