% \iffalse meta-comment
%<*internal>
\iffalse
%</internal>
%<*readme>
denisbdoc - A personal package for documenting classes and packages, version 0.2
================================================================================

This (quick 'n dirty) package is just for documenting the classes I've written.

Installation
------------

The package is supplied in `dtx` format. If you want to unpack the `.dtx`
yourself, running `tex denisbdoc.dtx` will extract the package.

This package is currently not documented.
%</readme>
%<*internal>
\fi
\def\nameofplainTeX{plain}
\ifx\fmtname\nameofplainTeX\else
  \expandafter\begingroup
\fi
%</internal>
%<*install>
\input l3docstrip.tex
\askforoverwritefalse
\preamble
-----------------------------------------------------------------------
-----------------------------------------------------------------------------
denisbdoc --- A personal dirty package for documenting packages, version 0.2

Maintained by Denis Bitouz'e
E-mail: denis.bitouze@lmpa.univ-littoral.fr
Released under the LaTeX Project Public License v1.3c or later
See http://www.latex-project.org/lppl.txt
-----------------------------------------------------------------------------

\endpreamble
\postamble
Copyright (C) 2015, 2016 by
  Denis Bitouz'e <denis.bitouze@lmpa.univ-littoral.fr>

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

This work is "maintained" (as per LPPL maintenance status) by
  Denis Bitouz'e.

This work consists of the file  denisbdoc.dtx
                                denisbdoc.sty and
                                denisbdoc.ins.
\endpostamble
\usedir{tex/latex/denisbdoc}
\generate{
  \file{\jobname.sty}{\from{\jobname.dtx}{package}}
}
%</install>
%<install>\endbatchfile
%<*internal>
\usedir{source/latex/denisbdoc}
\generate{
  \file{\jobname.ins}{\from{\jobname.dtx}{install}}
}
\nopreamble\nopostamble
\usedir{doc/latex/denisbdoc}
\generate{
  \file{README.md}{\from{\jobname.dtx}{readme}}
}
\usedir{/}
\generate{
  \file{README.md}{\from{\jobname.dtx}{readme}}
}%
\ifx\fmtname\nameofplainTeX
  \expandafter\endbatchfile
\else
  \expandafter\endgroup
\fi
%</internal>
%<*driver|package>
\RequirePackage{expl3,l3keys2e,xparse}
%</driver|package>
%<*driver>
% \documentclass[english,french]{ltxdoc}
% \usepackage{denisbdoc}
% % Silence annoying fp package messages
% %\DisableImplementation
% \begin{document}
%   \DocInput{\jobname.dtx}
% \end{document}
%</driver>
% \fi
%
% \GetFileInfo{\jobname.sty}
%
%\title{^^A
%  \textsf{denisbdoc} --- A personal package for documenting packages\thanks{^^A
%    This file describes \fileversion, last revised \filedate.^^A
%  }^^A
%}
%\author{^^A
%  Denis Bitouz'e\thanks
%    {^^A
%      E-mail: \href{mailto:denis.bitouze@lmpa.univ-littoral.fr}
%      {\texttt{denis.bitouze@lmpa.univ-littoral.fr}}^^A
%    }^^A
%}
%\date{Released \filedate}
%
%\maketitle
%
%\changes{v0.1}{2015/03/15}{First CTAN version}
%\changes{v0.2}{2016/04/04}{Second CTAN version}
%
%\begin{abstract}
% ...
%\end{abstract}
%
%\tableofcontents
%
%\begin{documentation}
%
%\section{Introduction}
%
% ...
%
%\section{Installation}
%
% The package is supplied in \file{dtx} format and as a pre-extracted
% zip file, \file{\jobname.tds.zip}. The later is most convenient for
% most users: simply unzip this in your local texmf directory and
% run \texttt{texhash} to update the database of file locations. If
% you want to unpack the \file{dtx} yourself, running
% \texttt{tex \jobname.dtx} will extract the package whereas
% \texttt{latex \jobname.dtx} will extract it and also typeset the
% documentation.
%
% The package requires \LaTeX3 support as provided in the
% \pkg{l3kernel} and \pkg{l3packages} bundles. Both of these are available
% on \href{http://www.ctan.org}{\textsc{ctan}} as ready-to-install
% zip files. Suitable versions are available in MiK\TeX{}~2.9 and
% \TeX{}~Live 2014 (updating the relevant packages online may be
% necessary). \LaTeX3, and so \pkg{denisbdoc}, requires the \eTeX{}
% extensions: these are available on all modern \TeX{} systems.
%
% Typesetting the documentation requires a number of packages in
% addition to those needed to use the package. This is mainly
% because of the number of demonstration items included in the text. To
% compile the documentation without error, you will need the packages:
%\begin{itemize}
% \item \pkg{amsmath}
% \item \pkg{booktabs}
% \item \pkg{cancel}
% \item \pkg{caption}
% \item \pkg{cleveref}
% \item \pkg{colortbl}
% \item \pkg{csquotes}
% \item \pkg{helvet}
% \item \pkg{mathpazo}
% \item \pkg{multirow}
% \item \pkg{listings}
% \item \pkg{pgfplots}
% \item \pkg{xcolor}
%\end{itemize}
%
%\end{documentation}
%
%\begin{implementation}
%
%  \chapter{Implementation}
%
%    \begin{macrocode}
%<*package>
%    \end{macrocode}
%
%    \begin{macrocode}
%<@@=denisbdoc>
%    \end{macrocode}
%
% \section{Preliminaries}
%
% The usual preliminaries.
%    \begin{macrocode}
\ProvidesExplPackage {denisbdoc} {2016/04/04} {0.2}
  {A personal package for documenting packages}
%    \end{macrocode}
%
% Make sure that the version of \pkg{l3kernel} in use is sufficiently new.
% This will also trap any problems with \pkg{l3packages} (as the two are now
% tied together, version-wise).
%    \begin{macrocode}
\@ifpackagelater { expl3 } { 2012/11/21 }
  { }
  {
    \PackageError { denisbdoc } { Support~package~expl3~too~old }
      {
        You~need~to~update~your~installation~of~the~bundles~'l3kernel'~and~
        'l3packages'.\MessageBreak
        Loading~denisbdoc~will~abort!
      }
    \tex_endinput:D
  }
%    \end{macrocode}
%
% \section{Packages}
%
%    \begin{macrocode}
\PassOptionsToPackage{obeyspaces}{url}
%    \end{macrocode}
%
%    \begin{macrocode}
\pdftex_if_engine:TF
  {
    \RequirePackage[T1]{fontenc}
    \RequirePackage[utf8]{inputenc}
  }{
    \RequirePackage{fontspec}
  }
\RequirePackage{xpatch}%
%    \end{macrocode}
%
% In order to as many write \enquote{streams} in auxiliary files as needed. It
% is loaded at the end of preamble, otherwise the compilation stops a long time
% at the line
% ×(/usr/local/texlive/2014/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg)×
% (trouble reported to the author).
%    \begin{macrocode}
\AtEndPreamble{\RequirePackage{morewrites}}%
%
% \let\denisbdoc@ORI@task\task
% \let\task\relax
% \RequirePackage{exsheets}
% \let\task\denisbdoc@ORI@task
\RequirePackage{parskip}%
% \RequirePackage{amsthm}%
% \RequirePackage{thmtools}%
\RequirePackage{fixfoot}%
\RequirePackage[inline]{enumitem}%
\RequirePackage{afterpage}%
\RequirePackage{tabulary}%
\RequirePackage{calc}%
\RequirePackage{subcaption}%
% \RequirePackage[lining]{libertine}%
\RequirePackage{siunitx}%
% \RequirePackage[a4paper]{geometry}%
\RequirePackage[nottoc,notindex]{tocbibind}%
\RequirePackage{varioref}%
\RequirePackage{booktabs}%
\RequirePackage[xr]{zref}%
\RequirePackage[multiple% ,bottom
]{footmisc}%
\RequirePackage{rotating}%
\RequirePackage{pdflscape}%
\RequirePackage{xspace}%
\RequirePackage{hologo}%
\RequirePackage{xifthen}%
\RequirePackage{refcount}%
\RequirePackage{iflang}%
\RequirePackage{ifpdf}%
\RequirePackage{amssymb}%
\RequirePackage{tocvsec2}%
\RequirePackage{csquotes}%
\RequirePackage{tikz}%
%
\RequirePackage[xindy]{imakeidx}
%
\RequirePackage{scrlfile}
\BeforePackage{doc}{\let\oldmaketitle\maketitle}
\AfterPackage{doc}{\let\maketitle\oldmaketitle}
%
\let\EUR\relax
\@ifpackageloaded{tcolorbox}{%
}{%
  \RequirePackage{tcolorbox}%
}%
%    \end{macrocode}
%
% We momentarily switch to a \enquote{normal} category code régime in which the
% colon (:) is treated as \enquote{letter}, which is necessary when colon is
% used in code (here \pkg{TikZ} and \pkg{tcolorbox}).
%    \begin{macrocode}
\ExplSyntaxOff
\ifpdf
\tcbuselibrary{listingsutf8}
\else
\tcbuselibrary{listings}
\RequirePackage{fontawesome}%
\lstMakeShortInline[style=dbtex]×
\fi
\tcbuselibrary{%
  documentation,theorems,breakable,skins%
}
\usetikzlibrary{trees,backgrounds,fit,calc,positioning}
\RequirePackage{attachfile2}
\ExplSyntaxOn
\RequirePackage{comment}%
\RequirePackage{path}%
\RequirePackage{textcase}%
\@ifpackageloaded{biblatex}{%
}{%
  \RequirePackage[backend=biber,style=authortitle,autopunct=false,useprefix=true,backref,dashed=false]{biblatex}%
}%
\RequirePackage{babel}%
% \RequirePackage[useregional]{datetime2}%
\RequirePackage[nodayofweek]{datetime}%
% \RequirePackage{floatrow}%
% \RequirePackage{subcaption}%
\@ifpackageloaded{hyperref}{%
}{%
  \RequirePackage{hyperref}%
}%
\@ifpackageloaded{nameref}{%
}{%
  \RequirePackage{nameref}%
}%
\@ifpackageloaded{hypcap}{%
}{%
  \RequirePackage[all]{hypcap}%
}%
\@ifpackageloaded{bookmark}{%
}{%
  \RequirePackage[numbered]{bookmark}%
}%
\@ifpackageloaded{glossaries}{%
}{%
  \RequirePackage[nowarn]{glossaries}%
  \makeglossaries
  \setglossarystyle{indexhypergroup}
  \setacronymstyle{long-sc-short}
}%
\@ifpackageloaded{cleveref}{%
}{%
  \RequirePackage{cleveref}%
}%
%    \end{macrocode}
% We apply a patch currently necessary (cf. \url|http://tex.stackexchange.com/a/233524/18401|).
%    \begin{macrocode}
\ifundef{\inpenc@prehook}{%
}{%
  \inpenc@prehook=\expandafter{\the\inpenc@prehook
    \xdef\saved@percent@catcode{\the\catcode`\%}%
    \catcode`\%14\relax
  }%
  \inpenc@posthook=\expandafter{\the\inpenc@posthook
    \catcode`\%\saved@percent@catcode\relax
  }%
}%
%    \end{macrocode}
%
%    \begin{macrocode}
\DeclareUrlCommand\urldirectory{\urlstyle{tt}}
%    \end{macrocode}
%
% We switch to the category code régime of LaTeX3.
%    \begin{macrocode}
\ExplSyntaxOn
%    \end{macrocode}
%
% \section{Strings and keywords}
%
% We now declare some private string constants.
%
% \begin{macro}{\c_@@_template_string_tl}
% \begin{macro}{\c_@@_sample_string_tl}
% \begin{macro}{\c_@@_flattemplate_string_tl}
% \begin{macro}{\c_@@_flatsample_string_tl}
% \begin{macro}{\c_@@_treetemplate_string_tl}
% \begin{macro}{\c_@@_treesample_string_tl}
%    \begin{macrocode}
\tl_const:Nn \c_@@_template_string_tl {canevas}
\tl_const:Nn \c_@@_sample_string_tl {specimens}
\tl_const:Nn \c_@@_flattemplate_string_tl {\c_@@_template_string_tl/a-plat}
\tl_const:Nn \c_@@_flatsample_string_tl {\c_@@_sample_string_tl/a-plat}
\tl_const:Nn \c_@@_treetemplate_string_tl {\c_@@_template_string_tl/en-arborescence}
\tl_const:Nn \c_@@_treesample_string_tl {\c_@@_sample_string_tl/en-arborescence}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\c_@@_unixtldirectory_string_tl}
% \begin{macro}{\c_@@_tlversion_string_tl}
% \begin{macro}{\c_@@_wintldirectory_string_tl}
% \begin{macro}{\c_@@_tldistdirectory_string_tl}
% \begin{macro}{\c_@@_docdirectory_string_tl}
% \begin{macro}{\c_@@_texdirectory_string_tl}
% \begin{macro}{\c_@@_sourcedirectory_string_tl}
% \begin{macro}{\c_@@_jobdirectory_string_tl}
% \begin{macro}{\c_@@_jobdocdirectory_string_tl}
% \begin{macro}{\c_@@_miktexdistdirectory_string_tl}
%    \begin{macrocode}
\tl_const:Nn \c_@@_unixtldirectory_string_tl {/usr/local/}
\tl_const:Nn \c_@@_tlversion_string_tl {2014}
\tl_const:Nn \c_@@_wintldirectory_string_tl {c:/}
\tl_const:Nn \c_@@_tldistdirectory_string_tl {texlive/\tlversion/texmf-dist/}
\tl_const:Nn \c_@@_miktexdistdirectory_string_tl {[TODO]}
\tl_const:Nn \c_@@_docdirectory_string_tl {doc/}
\tl_const:Nn \c_@@_texdirectory_string_tl {tex/}
\tl_const:Nn \c_@@_sourcedirectory_string_tl {source/}
\tl_const:Nn \c_@@_jobdirectory_string_tl {latex/\jobname}
\tl_const:Nn \c_@@_jobdocdirectory_string_tl {\docdirectory\jobdirectory}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% For the asides opening and eventuelly closing punctuation marks.
%    \begin{macrocode}
\tl_const:Nn \c_@@_aside_string_tl {---}
%    \end{macrocode}
%
% \subsection{Colors}
%
%    \begin{macrocode}
\colorlet{specimens}{yellow!30}
\colorlet{canevas}{green!30}
\colorlet{doc}{specimens!50!canevas}
\colorlet{en-arborescence}{red!20}
\colorlet{a-plat}{blue!20}
\colorlet{texcs}{blue}
\colorlet{environment}{teal}
\colorlet{key}{purple}
\colorlet{value}{violet}
\colorlet{keyword4}{key}
\colorlet{keyword5}{magenta}
\colorlet{comment}{gray}
\colorlet{string}{cyan}
\colorlet{math}{green!50!black}
\colorlet{meta}{brown}
\colorlet{preamble}{violet}
%    \end{macrocode}
%
% \subsection{Skips}
%
%    \begin{macrocode}
\skip_const:Nn \c_@@_listings_aboveskip_skip { \c_zero_dim plus 6pt }%
\skip_const:Nn \c_@@_listings_belowskip_skip { \c_zero_dim plus 6pt }%
%    \end{macrocode}
%
% \section{Local languages definitions for \Package{listings}}
%
% Now, we extend (or define new) local languages for the \Package{listings}.
%
% \subsubsection{Extension of the \enquote{LaTeX} TeX dialect}
%
%    \begin{macrocode}
\lstdefinelanguage[extLaTeX]{TeX}[LaTeX]{TeX}{%
  moretexcs={%
    footnotesize,huge,Huge,large,Large,LARGE,large,Large,scriptsize,tiny,%
    includegraphics,cite,ttwplink,vref,LTXtable,tableofcontents,frontmatter,mainmatter,%
    part,chapter,section,subsection,subsubsection,paragraph,subparagraph,RequirePackage,%
    listoftables,listoffigures,lstlistingname,si,SI,ohm,num,space,shorthandon,shorthandoff,%
    abstractname,appendixname,contentsname,listfigurename,listtablename,indexname,%
    figurename,tablename,chaptername,pagename,seename,alsoname,proofname,bibname,glossaryname,%
    addto,captionsenglish,captionsfrench,lipsum,partname,refname,renewcommand*,%
    appendix,lstlistoflistings,graphicpath,loadglsentries,hypersetup,detect-all,SetWatermarkColor,%
    @pnumwidth,bookmarksetup,DeclareTextCommand,text,iiint,NewPairedDelimiter,%
    norm,lnorm,llnorm,lpnorm,supnorm,abs,prt,brk,brc,lrangle,leqgeq,%
    norm*,lnorm*,llnorm*,lpnorm*,supnorm*,abs*,prt*,brk*,brc*,lrangle*,leqgeq*%
  },%
  morekeywords=[1]{% Environments' names
    tabular,tabulary,math,document,minipage,eqnarray,eqnarray*,align,align*,%
    equation,gather,multline,flalign,equation*,gather*,multline*,flalign*,%
    itemize,itemize*,enumerate,enumerate*,description,description*,%
  },%
  morekeywords=[2]{% Keys of key-value lists and packages' names
    bookmarksdepth,see,babel,colorlinks,linktoc,width,left,right,subscript%
  },%
  morekeywords=[3]{% Values of key-value lists
    german,ngerman,french,english,spanish%
  }, alsoletter={-*@1234560}%
}%
\lstdefinelanguage[glossaries]{TeX}[LaTeX]{TeX}%
{%
  % Séquences de contrôles (communément appelées commandes ou macros)
  moretexcs={%
    makeglossaries,printglossaries,printglossary,newglossaryentry,gls,Gls,GLS,glspl,Glspl,GLSpl,newacronym,%
    glsuseri,glsuserii,glsuseriii,glsuseriv,glsuserv,glsuservi,glsshortpluralkey,glslongpluralkey,loadglsentries,%
    glsadd,glstextformat,glsnamefont,glossarypreamble,glossarypostamble,acrshort,acrshort*,acrlong,acrfull,%
    Acrshort,ACRshort,Acrlong,ACRlong,Acrfull,ACRfull,acrshortpl,Acrshortpl,acrlongpl,Acrlongpl,acrfullpl,Acrfullpl,%
    Acrlong*,acronymtype,printacronyms,printsymbols%
  },%
  % Environments' names
  morekeywords={%
  },%
  % Mots-clés de niveau 2 : arguments obligatoires et environnements
  morekeywords=[2]{%
    first,firstplural,plural,sort,nonumberlist,name,acronym,acronyms,symbols,%
    user1,user2,user3,user4,user5,user6,hyper,style,xindy,toc,%
    useri,userii,useriii,useriv,userv,uservi%
  },%
  % Mots-clés de niveau 3 : arguments optionnels valeurs de clés dans clé=valeur
  morekeywords=[3]{%
    listgroup,listhypergroup,%
    % textrm,textit,textsf,textsl,texttt,textup,textbf,textsc,textmd,emph,%
    hyperrm,hyperit,hypersf,hypersl,hypertt,hyperup,hyperbf,hypersc,hypermd,hyperemph%
  },%
  sensitive%
}[keywords,tex,comments]%
%
\lstdefinelanguage[biblatex]{TeX}[LaTeX]{TeX}%
{%
  % Séquences de contrôles (communément appelées commandes ou macros)
  moretexcs={%
    printbibliography,SetCiteCommand,autocite,addbibresource,fullcite,%
    textcite,cite,citeauthor%
  },%
  % Mots-clés de niveau 1 : arguments optionnels
  morekeywords={%
    abstract,addendum,afterword,annotation,annotator,author,authortype,%
    bookauthor,bookpagination,booksubtitle,booktitle,booktitleaddon,%
    chapter,commentator,date,doi,edition,editor,editora,editorb,%
    editorc,editortype,editoratype,editorbtype,editorctype,eid,eprint,%
    eprintclass,eprinttype,eventdate,eventtitle,file,foreword,holder,%
    howpublished,indextitle,institution,introduction,isan,isbn,ismn,%
    isrn,issn,issue,issuesubtitle,issuetitle,iswc,journalsubtitle,%
    journaltitle,label,language,library,location,mainsubtitle,%
    maintitle,maintitleaddon,month,nameaddon,note,number,organization,%
    origdate,origlanguage,origlocation,origpublisher,origtitle,pages,%
    pagetotal,pagination,part,publisher,pubstate,reprinttitle,series,%
    shortauthor,shorteditor,shorthand,shorthandintro,shortjournal,%
    shortseries,shorttitle,subtitle,title,titleaddon,translator,type,%
    url,urldate,venue,version,volume,volumes,year,crossref,entryset,%
    entrysubtype,execute,gender,hyphenation,indexsorttitle,keywords,%
    options,presort,sortkey,sortname,sorttitle,sortyear,xref,annote,%
    archiveprefix,journal,key,pdf,primaryclass,school,address,%
    %
    backend,style,citestyle,bibstyle,sorting,maxnames,minnames,maxitems,minitems,%
    backref,abbreviate,firstinits,prenote,postnote,useprefix%
  },%
  % Mots-clés de niveau 2 : arguments obligatoires et environnements
  morekeywords=[2]{%
    % title,
    heading%
  },%
  % Mots-clés de niveau 3 : arguments optionnels valeurs de clés dans clé=valeur
  morekeywords=[3]{%
    bibintoc,skipbib%
  },%
  sensitive%
}[keywords,tex,comments]%
%
% \lst@definelanguage[biblatex]{TeX}[LaTeX]{TeX}%
% {%
%   % Séquences de contrôles (communément appelées commandes ou macros)
%   moretexcs={%
%     cite,Cite,parencite,Parencite,footcite,footcitetext,%
%     textcite,Textcite,supercite,cites,Cites,parencites,%
%     Parencites,footcitesfootcitetexts,textcites,Textcites,%
%     supercites,autocite,Autocite,autocite*,Autocite*,autocites,%
%     Autocites,citeauthor,Citeauthor,citetitle,citetitle*,%
%     citeyear,citeurl,parentext,brackettext,nocite,fullcite,%
%     footfullcite,volcite,Volcite,pvolcite,Pvolcite,fvolcite,%
%     ftvolcite,tvolcite,Tvolcite,avolcite,Avolcite,notecite,%
%     Notecite,pnotecite,Pnotecite,fnotecite,citename,citelist,%
%     citefield,printbibliography,bibliography,citedate,%
%     ExecuteBibliographyOptions,defbibnote,psq,psqq,addbibresource%
%   },%
%   % directives
%   directives={%
%     article,book,inbook,bookinbook,suppbook,booklet,collection,%
%     conference,incollection,suppcollection,manual,misc,online,%
%     patent,periodical,suppperiodical,proceedings,inproceedings,%
%     reference,inreference,report,thesis,unpublished,%
%     Article,Book,Inbook,Bookinbook,Suppbook,Booklet,Collection,%
%     conference,Incollection,Suppcollection,Manual,Misc,Online,%
%     patent,Periodical,Suppperiodical,Proceedings,Inproceedings,%
%     reference,Inreference,Report,Thesis,Unpublished,%
%     ARTICLE,BOOK,INBOOK,BOOKINBOOK,SUPPBOOK,BOOKLET,COLLECTION,%
%     CONFERENCE,INCOLLECTION,SUPPCOLLECTION,MANUAL,MISC,ONLINE,%
%     PATENT,PERIODICAL,SUPPPERIODICAL,PROCEEDINGS,INPROCEEDINGS,%
%     REFERENCE,INREFERENCE,REPORT,THESIS,UNPUBLISHED,%
%     string,String,STRING,comment%
%   },%
%   % Mots-clés de niveau 3 : attributs et options de biblatex
%   morekeywords=[3]{%
%     abstract,addendum,afterword,annotation,annotator,author,authortype,%
%     bookauthor,bookpagination,booksubtitle,booktitle,booktitleaddon,%
%     chapter,commentator,date,doi,edition,editor,editora,editorb,%
%     editorc,editortype,editoratype,editorbtype,editorctype,eid,eprint,%
%     eprintclass,eprinttype,eventdate,eventtitle,file,foreword,holder,%
%     howpublished,indextitle,institution,introduction,isan,isbn,ismn,%
%     isrn,issn,issue,issuesubtitle,issuetitle,iswc,journalsubtitle,%
%     journaltitle,label,language,library,location,mainsubtitle,%
%     maintitle,maintitleaddon,month,nameaddon,note,number,organization,%
%     origdate,origlanguage,origlocation,origpublisher,origtitle,pages,%
%     pagetotal,pagination,part,publisher,pubstate,reprinttitle,series,%
%     shortauthor,shorteditor,shorthand,shorthandintro,shortjournal,%
%     shortseries,shorttitle,subtitle,title,titleaddon,translator,type,%
%     url,urldate,venue,version,volume,volumes,year,crossref,entryset,%
%     entrysubtype,execute,gender,hyphenation,indexsorttitle,keywords,%
%     options,presort,sortkey,sortname,sorttitle,sortyear,xref,annote,%
%     archiveprefix,journal,key,pdf,primaryclass,school,address,%
%     %
%     backend,style,citestyle,bibstyle,sorting,maxnames,minnames,maxitems,minitems,%
%     backref,abbreviate,firstinits,prenote,postnote,useprefix%
%   },%
%   % Mots-clés de niveau 4 : valeurs des attributs identifiées
%   morekeywords=[3]{%
%     submitted,inpress,danish dutch,american,USenglish,english,%
%     british,UKenglish,canadian,australian,newzealand,finnish,french,%
%     francais,canadien,german,ngerman,austrian,naustrian,greek,%
%     italian,norsk,nynorsk,brazil,portuges,spanish,swedish,%
%     %
%     biber,numeric,numeric-comp,numeric-verb,alphabetic,%
%     alphabetic-verb,authoryear,authoryear-comp,authoryear-ibid,%
%     authoryear-icomp,authortitle,authortitle-comp,authortitle-ibid,%
%     authortitle-icomp,authortitle-terse,authortitle-tcomp,%
%     authortitle-ticomp,verbose,verbose-ibid,verbose-note,%
%     verbose-inote,verbose-trad1,verbose-trad2,verbose-trad3,%
%     reading,draft,debug,%
%     inline,footnote,superscript,plain,skipbib,%
%     nyt,ynt,none,false%
%   },%
%   alsoletter={-123},%
%   sensitive=true,%
%   delim=*[directive]@
%   %
% }[keywords,directives,tex,comments]%
%
\lstdefinelanguage[csquotes]{TeX}[LaTeX]{TeX}%
{%
  % Séquences de contrôles (communément appelées commandes ou macros)
  moretexcs={%
    enquote,textelp,textins,blockcquote%
  },%
  % Mots-clés de niveau 1 : arguments optionnels
  morekeywords={%
  },%
  % Mots-clés de niveau 2 : arguments obligatoires et environnements
  morekeywords=[2]{%
    % title,
  },%
  % Mots-clés de niveau 3 : arguments optionnels valeurs de clés dans clé=valeur
  morekeywords=[3]{%
    skipbib%
  },%
  % Mots-clés de niveau 4 : arguments optionnels valeurs de clés dans clé=valeur
  morekeywords=[4]{%
  },%
  sensitive%
}[keywords,tex,comments]%
%
\lstdefinelanguage[tcolorbox]{TeX}[LaTeX]{TeX}%
{%
  % Séquences de contrôles (communément appelées commandes ou macros)
  moretexcs={%
    tcbset,tcbuselibrary%
  },%
  % Mots-clés de niveau 1 : arguments optionnels
  morekeywords={%
  },%
  % Mots-clés de niveau 2 : arguments obligatoires et environnements
  morekeywords=[2]{%
    colback,beamer,skins,listing,only,options,and,text%
  },%
  % Mots-clés de niveau 3 : arguments optionnels valeurs de clés dans clé=valeur
  morekeywords=[3]{%
    lightgray,red!50!white%
  },%
  sensitive,%
}[keywords,tex,comments]%
%
\lstdefinelanguage[listings]{TeX}[LaTeX]{TeX}%
{%
  % Séquences de contrôles (communément appelées commandes ou macros)
  moretexcs={%
    lstset,lstinline,lstinputlisting,lstMakeShortInline,lstDeleteShortInline,lstdefinestyle%
  },%
  % Environments' names
  morekeywords={%
    listing,listingutf8%
  },%
  % Environments' names
  morekeywords=[1]{%
    lstlisting,%
  },%
  % Keys of key-value lists
  morekeywords=[2]{%
    language,showtabs,escapeinside,mathescape,basicstyle,keywordstyle,commentstyle,%
    stringstyle,numbers,frame,framesep,escapechar,tab,aboveskip,belowskip,%
    linerange,backgroundcolor,rulecolor,framerule,inputencoding,stepnumber,numberstyle,%
    rulesepcolor,style%
  },%
  % Values of key-value lists
  morekeywords=[3]{%
    Ada,left,single,shadowbox,Python%
  },%
  sensitive%
}[keywords,tex,comments]%
%
\lstdefinelanguage[xcolor]{TeX}[LaTeX]{TeX}%
{%
  % Séquences de contrôles (communément appelées commandes ou macros)
  moretexcs={%
    textcolor,fcolorbox,colorbox,color,rowcolors,arrayrulecolor,rownum%
  },%
  % Mots-clés de niveau 1 : arguments optionnels
  morekeywords={%
    %
  },%
  % Mots-clés de niveau 2 : arguments obligatoires et environnements
  morekeywords=[2]{%
    lightgray,red,blue,brown,purple,magenta,green,black,cyan,yellow,%
  },%
  % Mots-clés de niveau 3 : arguments optionnels valeurs de clés dans clé=valeur
  morekeywords=[3]{%
    %
  },%
  sensitive%
}[keywords,tex,comments]%
%
\lstdefinelanguage[hyperref]{TeX}[LaTeX]{TeX}%
{%
  % Séquences de contrôles (communément appelées commandes ou macros)
  moretexcs={%
    href,url,hypersetup,hypertarget,hyperlink,pdfstringdefDisableCommands,texorpdfstring%
  },%
  % Mots-clés de niveau 1 : arguments optionnels
  morekeywords={%
    %
  },%
  % Mots-clés de niveau 2 : arguments obligatoires et environnements
  morekeywords=[2]{%
    breaklinks,colorlinks,bookmarks,pdfborderstyle,pdfborder,all%
  },%
  sensitive%
}[keywords,tex,comments]%
% \end{macrocode}
%
% Definition of the \enquote{yad} \TeX{} dialect.
%    \begin{macrocode}
\lstdefinelanguage[yad]{TeX}[LaTeX]{TeX}{%
  moretexcs={% Control sequences' names
    author,title,subtitle,academicfield,speciality,date,supervisor,cosupervisor,comonitor,%
    referee,guest,examiner,committeepresident,pres,institute,coinstitute,company,doctoralschool,%
    laboratory,dedication,frontepigraph,keywords,subject,expression,tableofcontents,submissiondate,%
    maketitle,makedisclaimer,makekeywords,makelaboratory,makeabstract,makededications,makefrontepigraphs,%
    % acknowledgements,frenchabstract,foreword,preface,caution,
    makebackcover,ordernumber,chapter*,%
    disclaimer,newglssymbol,yadsetup%
  },%
  % Environments' names
  morekeywords={%
    yathesis%
  },%
  morekeywords=[1]{% Environments' names
    abstract,dedicationspage,epigraphspage,epigraphs,%
    glossaries,otherlanguage%
  },%
  morekeywords=[2]{% Keys of key-value lists
    professor,seniorresearcher,mcf,juniorresearcher,mcf*,%
    juniorresearcher*,corporation,corps,male,female,%
    distinction,award,affiliation,sepcorpaffilfrench,affiliationsecondary,sepcorpaffilenglish,%
    logo,url,nologo,space,mainlanguage,secnumdepth,tocdepth,depth,version,output,logoheight,%
    address,telephone,fax,email,type,acronym,heading,nowarning,noerror,nofrontcover,role,%
    hyperfootnotes,hyperindex,plainpages,pdfpagemode,pdfpagelayout,locale,gray,frametitle,%
    graphicx,adjustbox,setspace,xcolor,datatool,titleps,draftwatermark,babel,datetime,%
    bookmark,fncychap,%
  },%
  morekeywords=[3]{% Values of key-value lists
    single,onehalf,double,doctor,yadsymbolstyle,%
    part,chapter,section,subsection,subsubsection,paragraph,subparagraph,%
    none,true,false,UseOutlines,TwoPageRight,UK,FR,dvipsnames,table,%
    Sonny,Lenny,Glenn,Conny,Rejne,Bjarne,PetersLenny,Bjornstrup,%
    screen,draft,inprogress,inprogress*,submitted,submitted*,final,paper,paper*,%
    fbox,shadowbox,ovalbox,supervisor*,cosupervisor*,comonitor*,%
  },%
  morekeywords=[4]{% Class and packages options
    warn,nodayofweek,unicode,nostamp,all,numbered,a4paper,leqno,fleqn,10pt,11pt,12pt,%
    detect-all,breaklinks,oneside%
  },%
  morekeywords=[5]{% Translation labels
    email,phone,fax,caution,draft,prepared-at,prepared-at-pl,juniorresearcher,juniorresearcher*,%
    committeemembers,estimateddefensedate,seniorresearcher,supervisors-in-committee,%
    supervisors-in-committee-pl,aim,aimand,examiners,examiners-pl,guests,guests-pl,mcf,mcf*,%
    professor,referees,referees-pl,website,defendedon,supervisedby,thesisdefendedby,thesistitle,%
    inprogress,universitydepartment,inprogressfoottext,submittedfoottext
  },%
  alsoletter={!-*1234560}%
}%
%    \end{macrocode}
%
% Definition of the \enquote{gzt} \TeX{} dialect.
%    \begin{macrocode}
\lstdefinelanguage[gzt]{TeX}[LaTeX]{TeX}{%
  moretexcs={% Control sequences' names
    editorinchief,editor,president,classdesigner,classmaintainer,fontdesigner,%
    graphicdesigner,issuesetup,journalsetup,interviewee,academicsignature,%
    subtitle,editorial,gzttableofcontents,minitoc,presidentmessage,%
    acknowledgements,printminibios,aboutfrontcover,rubric,mathematics,%
    dossier,community,interview,teaching,parity,tellme,information,%
    rearviewmirror,tribute,books,email,question,smf,cad,Cad,gzt,%
    century,century*,aside,aside*,gztinput,gztnewtheorem,N,Z,D,Q,R,C,K,%
    printauthorsdetails,date,title,author,maketitle,item,printbibliography,%
    vec,surname,usetikzlibrary,arccos,arcsin,arctan,log,lg,le,leq,ge,geq,%
    gztverb,th,epigraph%
  },%
  % Environments' names
  morekeywords={%
    gzt,gztarticle%
  },%
  morekeywords=[1]{% Environments' names
    abstract,minitoclist,bookreview,bookadvertisement,%
    gztfigure,gztfigure*,gzttable,gzttable*,gztscan,gztcode,%
    theorem,theoreme,corollary,corollaire,conjecture,proposition,%
    lemma,lemme,axiom,axiome,definition,remark,remarque,example,exemple,notation,%
    theorem*,theoreme*,corollary*,corollaire*,conjecture*,proposition*,proof,preuve,%
    lemma*,lemme*,axiom*,axiome*,definition*,remark*,remarque*,example*,exemple*,notation*%
  },%
  morekeywords=[2]{% Keys of key-value lists
    number,month,year,publisher,address,phone,fax,email,url,issn,isbn,short,minishort,notintoc,%
    abstract,frenchtitle,englishtitle,% title,label,%
    pictogram,list,help,diameter,textwidth,xshift,yshift,%
    affiliation,email,minibio,photo,webpage,frontcover,bibkey,copyright%
  },%
  morekeywords=[3]{% Values of key-value lists
    true,false,theorem,definition,proof%
  },%
  morekeywords=[4]{% Class and packages options
    pagegrid,forprinter,cover,forauthors,%
  },%
  alsoletter={!-*1234560}%
}%
%    \end{macrocode}
%
% Definition of the \enquote{nwejm} \TeX{} dialect.
%    \begin{macrocode}
\lstdefinelanguage[nwejm]{TeX}[LaTeX]{TeX}{%
  moretexcs={% Control sequences' names
    editorinchief,editor,president,classdesigner,classmaintainer,fontdesigner,%
    graphicdesigner,issuesetup,journalsetup,interviewee,academicsignature,%
    subtitle,editorial,nwejmtableofcontents,minitoc,presidentmessage,%
    acknowledgements,printminibios,aboutfrontcover,rubric,mathematics,%
    dossier,community,interview,teaching,parity,tellme,information,%
    rearviewmirror,tribute,books,email,question,smf,ie,Ie,nwejm,%
    century,century*,aside,aside*,nwejminput,nwejmnewtheorem,N,Z,D,Q,R,C,K,%
    printauthorsdetails,date,title,author,maketitle,item,printbibliography,%
    vec,surname,usetikzlibrary,arccos,arcsin,arctan,log,lg,le,leq,ge,geq,set,%
    nwejmverb,th,epigraph,keywords,msc,acknowledgments,E,I,grad,Div,curl,rot,supp,%
    DeclareMathOperator,BinaryOperators,dif%
  },%
  % Environments' names
  morekeywords={%
    nwejm,nwejmart,assertions,hypotheses%
  },%
  morekeywords=[1]{% Environments' names
    abstract,minitoclist,bookreview,bookadvertisement,%
    nwejmfigure,nwejmfigure*,nwejmtable,nwejmtable*,nwejmscan,nwejmcode,%
    theorem,theoreme,corollary,corollaire,conjecture,proposition,%
    lemma,lemme,axiom,axiome,definition,remark,remarque,example,exemple,notation,%
    theorem*,theoreme*,corollary*,corollaire*,conjecture*,proposition*,proof,preuve,%
    lemma*,lemme*,axiom*,axiome*,definition*,remark*,remarque*,example*,exemple*,notation*%
  },%
  morekeywords=[2]{% Keys of key-value lists
    number,month,year,publisher,address,phone,fax,email,url,issn,isbn,short,minishort,notintoc,%
    abstract,frenchtitle,englishtitle,% title,label,%
    pictogram,list,help,diameter,textwidth,xshift,yshift,%
    affiliation,affiliationtagged,email,minibio,photo,webpage,frontcover,bibkey,copyright%
  },%
  morekeywords=[3]{% Values of key-value lists
    true,false,theorem,definition,proof%
  },%
  morekeywords=[4]{% Class and packages options
    pagegrid,forprinter,cover,forauthors,%
  },%
  alsoletter={!-*1234560}%
}%
%    \end{macrocode}
%
% Enhancements of the \enquote{bash} ×sh× dialect.
%    \begin{macrocode}
\lstdefinelanguage{bash}[]{sh}%
{%
  morekeywords={%
    ssh-keygen,rsa,mkdir,cp,chmod,git,clone,tree,pull,lgr,lga,commit,%
    ls,add,record,push%
  },%
  alsoletter={!-*}%
}%
%    \end{macrocode}
%
% \section{Settings}
%
\hypersetup{colorlinks}%
%
\presetkeys{todonotes}{fancyline, color=white}{}%
%
\setlength\bibinitsep{1.25\baselineskip}
%
% \setglossarystyle{indexhypergroup}
% \setacronymstyle{long-sc-short}
%
% \SetupExSheets[question]{type=exam}
% \SetupExSheets[solution]{print=true}
%
\SetCiteCommand{\autocite}
%
\renewcommand{\ttdefault}{lmtt}
%
% \renewcommand{\generalname}{Général}%
%
% \xapptocmd{\@chapter}{%
\xapptocmd{\@section}{%
  \addtocontents{dbwarninglist}{\protect\addvspace{10\p@}}%
  \addtocontents{dbremarklist}{\protect\addvspace{10\p@}}%
  \addtocontents{dbexamplelist}{\protect\addvspace{10\p@}}%
  \addtocontents{dbfaqlist}{\protect\addvspace{10\p@}}%
}{}{}
%
\sisetup{locale=FR,detect-all}
% \floatsetup[table]{style=plaintop}
%
% \lstset{%
%   breaklines=true,
%   basicstyle=\normalfont\ttfamily,
%   commentstyle=\color{comment}\itshape,
%   keywordstyle=\color{environment},
%   keywordstyle=[2]\color{key},
%   keywordstyle=[3]\color{value},
%   keywordstyle=[4]\color{keyword4},
%   keywordstyle=[5]\color{keyword5},
%   moredelim=*[s][\color{math}\ttfamily]{\[}{\]},
%   moredelim=*[s][\color{math}\ttfamily]{$}{$},
%   stringstyle=\color{string},
%   columns=flexible,
%   % prebreak={\space\Righttorque},
%   % postbreak={\space\Lefttorque}
% }%
\lstdefinestyle{dbtex}{%
  escapechar=",
  language=[LaTeX]TeX,
  alsolanguage=[extLaTeX]TeX,
  alsolanguage=[glossaries]TeX,
  alsolanguage=[biblatex]TeX,
  alsolanguage=[csquotes]TeX,
  alsolanguage=[tcolorbox]TeX,
  alsolanguage=[listings]TeX,
  alsolanguage=[xcolor]TeX,
  alsolanguage=[hyperref]TeX,
  alsolanguage=[yad]TeX,
  alsolanguage=[gzt]TeX,
  alsolanguage=[nwejm]TeX,
  texcsstyle=*\color{texcs},
  breaklines=true,
  basicstyle=\normalfont\ttfamily,
  commentstyle=\color{comment}\itshape,
  keywordstyle={\color{environment}},
  keywordstyle={[1]\color{environment}},
  keywordstyle={[2]\color{key}},
  keywordstyle={[3]\color{value}},
  keywordstyle={[4]\color{keyword4}},
  keywordstyle={[5]\color{keyword5}},
  moredelim=*[s][\color{math}\ttfamily]{\\[}{\\]},
  moredelim=*[s][\color{math}\ttfamily]{$}{$},
  stringstyle=\color{string},
  columns=flexible,
  keepspaces,
  numberstyle=\small,
  inputencoding=utf8/latin1,
  aboveskip=\c_@@_listings_aboveskip_skip,
  belowskip=\c_@@_listings_belowskip_skip
}%
\lstset{style=dbtex}
% \lstMakeShortInline[style=dbtex]|
%    \end{macrocode}
%
%    \begin{macrocode}
\tcbset{dbtcb/.style={%
    breakable,
    fonttitle=\bfseries,
    enlarge~top~by=1mm,
    separator~sign~dash
  }%
}%
%
\tcbset{%
  /tcb/doclang/environment~content=contenu~de~l'environnement,
  /tcb/doclang/color=~(couleur),
  /tcb/doclang/colors=Couleurs,
  /tcb/doclang/environments=Environnements,
  /tcb/doclang/keys=Clés,
  /tcb/doclang/values=Valeurs,
  /tcb/doclang/pageshort=p.,
  /tcb/documentation~listing~style=dbtex,
  /tcb/color~command=texcs,
  /tcb/color~environment=environment,
  /tcb/color~key=key,
  /tcb/color~value=value,
  index~format=pgfchapter,
  index~colorize,
  index~annotate=false,
  enhanced,
  listing~style=dbtex,
  every~box/.style={documentation~listing~style=dbtex},
% index~actual={},
% doc~left~indent=-15mm,
% doc~right~indent=-15mm+2em
% }%
% \tcbset{%
  codes/.style={%
    listing~only,
    enlarge~top~by=\medskipamount,
    colframe=ExampleFrame,
    colback=ExampleBack,
    fonttitle=\bfseries,
    fontupper=\small,
    split=0.5,
    enhanced,
    breakable,
    listing~style=dbtex,
  }%
}%
\tcbset{samples/.style={%
    codes,
    % listing~options={rangebeginprefix=\\,rangeendsuffix=\}}
  }%
}%
%    \end{macrocode}
%
% Suppression du gras dans la commande ×\docAuxCommand× :
%    \begin{macrocode}
\def\disp@com#1{\colDef{\ttfamily#1}}
%    \end{macrocode}
%
% For the \yatcl' documentation, using \Class{ltxdoc}, we need to
% perform some changes in \Package{glossaries} provided by its author.
%    \begin{macrocode}
% \renewcommand*{\newacronymhook}{%
%   \edef\tmp{\noexpand\textsc{\the\glsshorttok}}%
%   \expandafter\glsshorttok\expandafter{\tmp}%
% }%
% \renewcommand*{\acrpluralsuffix}{\textup{\glspluralsuffix}}
%    \end{macrocode}
% On définit une nouvelle clé pour la commande ×\includegraphics× de
% sorte à pouvoir inclure les pages d'un \File{.pdf} externe en
% indiquant non pas des numéros de pages absolus, mais plutôt des
% références qui devront être labellisées au moyen de la commande
% ×\zlabel× du \Package{zref} (ce dernier devant être chargé dans le
% \File{.tex} externe du \File{.pdf} avec les options ×user× et
% ×abspage×).
%    \begin{macrocode}
\define@key{Gin}{bylabel}{%
    \edef\@tempa{{Gin}{page=\zref@extract{#1}{abspage}}}%
    \expandafter\setkeys\@tempa%
}%
%    \end{macrocode}
%
% \section{Macros, environments and theorems}
%
% \subsection{Macros}
%
%    \begin{macrocode}
\cs_new_protected:Nn \_@@_alert:n
{
  \begingroup
  \color{red}
  #1
  \endgroup
}%
\NewDocumentCommand \alert {m}
{
  \_@@_alert:n {#1}
}%
\cs_set_eq:NN \_@@_orig_changes \changes
\DeclareDocumentCommand \changes { smmm } {
  \_@@_orig_changes{#2}{#3}{%
    \IfBooleanTF {#1}
    {
      \alert{#4}%
    }
    {
      #4%
    }
  }
}
%
\cs_new_protected:Nn \_@@_package:nnn
{
  \texorpdfstring{%
    \IfBooleanTF {#1}
    {
      \tl_if_empty:nTF {#2}
      {%
        \href{http://www.ctan.org/pkg/#3}{\textsf{#3}}%
      }{%
        \href{#2}{\textsf{#3}}%
      }%
    }
    {
      \textsf{#3}%
    }
  }{%
    \textsf{#3}
  }%
}%
\NewDocumentCommand{\package}{ s O{} m } {
  \_@@_package:nnn {#1}{#2}{#3}
}
\NewDocumentCommand{\Package}{ s O{} m } {
  \IfLanguageName{french}{package~}{}%
  \_@@_package:nnn {#1}{#2}{#3}
  \IfLanguageName{english}{~package}{}%
}
%
\NewDocumentCommand{\class}{ s O{} m } {
  \_@@_package:nnn {#1}{#2}{#3}
}
\NewDocumentCommand{\Class}{ s O{} m } {
  \IfLanguageName{french}{classe~}{}%
  \_@@_package:nnn {#1}{#2}{#3}
  \IfLanguageName{english}{~class}{}%
}
%
\cs_new_protected:Nn \_@@_format:n
{
  \textsc{#1}
}
\NewDocumentCommand{\format}{ m }
{%
  \_@@_format:n {#1}
}
\NewDocumentCommand{\Format}{ m }
{%
  \IfLanguageName{french}{format~}{}%
  \_@@_format:n {#1}%
  \IfLanguageName{english}{~format}{}%
}%
\cs_new_protected:Nn \_@@_file:n
{
  % \bgroup% \color{magenta}
  \texttt{#1}
  % \egroup
}
\NewDocumentCommand{\file}{ m }
{%
  \_@@_file:n {#1}
}
\NewDocumentCommand{\File}{ m }
{%
  \IfLanguageName{french}{fichier~}{}%
  \_@@_file:n {#1}%
  \IfLanguageName{english}{~file}{}%
}%
\NewDocumentCommand{\folder}{ m }
{
  \_@@_file:n {#1}%
}
\NewDocumentCommand{\Folder}{ m }
{%
  \IfLanguageName{french}{répertoire~}{}%
  \_@@_file:n {#1}%
  \IfLanguageName{english}{~directory}{}%
}%
%
\NewDocumentCommand{\program}{ m }
{
  \_@@_file:n {#1}%
}
%
\cs_new_protected:Nn \_@@_links:nnn
{
  \cs_if_exist:NTF \faExternalLink {%
    % \href{#2#3#1}{\texttt{#3}}~\href{http://mirror.ctan.org/macros/latex/contrib/yathesis/#2#3#1}{\faExternalLink}
    \texttt{#3}~\textnormal{(\attachfile{#2#3#1})}
  }{
    % \href{#2#3#1}{\texttt{#3}}~\href{http://mirror.ctan.org/macros/latex/contrib/yathesis/#2#3#1}{}
    \texttt{#3}~\textnormal{(\attachfile{#2#3#1})}
  }
}
\cs_new_protected:Nn \_@@_etctree:
{
  ...
}
\NewDocumentCommand{\etctree}{  }
{
  \_@@_etctree:%
}
\cs_new_protected:Nn \_@@_filetree:n
{
  \_@@_links:nnn {}{\folder/\subfolder/}{#1}
}
\NewDocumentCommand{\filetree}{ m }
{%
  \_@@_filetree:n {#1}
}
\NewDocumentCommand{\pdffiletree}{ m }
{%
  \_@@_filetree:n {#1.pdf}
}
\NewDocumentCommand{\texfiletree}{ m }
{%
  \_@@_filetree:n {#1.tex}
}
\cs_new_protected:Nn \_@@_zip_filetree:
{
  \bgroup% \color{magenta}
  \bfseries
  \color{red}
  \_@@_links:nnn {}{\folder/}{\subfolder.zip}
  \egroup
}
\NewDocumentCommand{\zipfiletree}{  }
{%
  \_@@_zip_filetree: {}
}
\cs_new_protected:Nn \_@@_directory_filetree:
{
  \bgroup% \color{magenta}
  \bfseries
  \color{blue}
  \_@@_links:nnn {.}{}{\folder/}
  \egroup
}
\NewDocumentCommand{\directorytree}{  }
{%
  \_@@_directory_filetree: {}
}
\cs_new_protected:Nn \_@@_subdirectory_filetree:
{
  \bgroup% \color{magenta}
  \bfseries
  \color{blue}
  \_@@_links:nnn {.}{\folder/}{\subfolder/}
  \egroup
}
\NewDocumentCommand{\subdirectorytree}{  }
{%
  \_@@_subdirectory_filetree: {}
}
%
\cs_new_protected:Nn \_@@_mandatory:
{
  \hyperref[sec-comm-oblig]{%
    \textcolor{red!75!black}{
      \pdftex_if_engine:TF
      {
        % \string!
        \ding{52}
      }{
        \faLock
        % \ding{52}
      }%
    }
    \ifnum\getpagerefnumber{sec-comm-oblig}=\thepage%
    \else%
    \textsuperscript{\ding{213}\,\kvtcb@text@pageshort\,\pageref*{sec-comm-oblig}}%
    \fi%
  }%
}
\NewDocumentCommand{\mandatory}{  }
{
  \_@@_mandatory: {}
}%
%
\NewDocumentCommand{\unixtldirectory}{}
{
  \directory{\c_@@_unixtldirectory_string_tl}
}%
\NewDocumentCommand{\tlversion}{}
{
  \directory{\c_@@_tlversion_string_tl}
}%
\NewDocumentCommand{\wintldirectory}{}
{
  \directory{\c_@@_wintldirectory_string_tl}
}%
\NewDocumentCommand{\tldistdirectory}{}
{
  \directory{\c_@@_tldistdirectory_string_tl}
}%
\NewDocumentCommand{\miktexdistdirectory}{}
{
  \directory{\c_@@_miktexdistdirectory_string_tl}
}%
\NewDocumentCommand{\docdirectory}{}
{
  \directory{\c_@@_docdirectory_string_tl}
}%
\NewDocumentCommand{\texdirectory}{}
{
  \directory{\c_@@_texdirectory_string_tl}
}%
\NewDocumentCommand{\sourcedirectory}{}
{
  \directory{\c_@@_sourcedirectory_string_tl}
}%
\NewDocumentCommand{\jobdirectory}{}
{
  \directory{\c_@@_jobdirectory_string_tl}
}%
\NewDocumentCommand{\jobdocdirectory}{}
{
  \directory{\c_@@_jobdocdirectory_string_tl}
}%
%    \end{macrocode}
%
%    \begin{macrocode}
\NewDocumentCommand{\pdf}{}
{
  \textsc{pdf}
}
%    \end{macrocode}
%
% \begin{macro}{\aside}
%    \begin{macrocode}
\DeclareDocumentCommand \aside { s m } {%
  \IfBooleanTF {#1}
  {
    \c_@@_aside_string_tl{}~#2
  }
  {
    \c_@@_aside_string_tl{}~#2~\c_@@_aside_string_tl
  }
}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{century}
%    \begin{macrocode}
% \cs_new_protected:Nn \_@@_century:n
% {
%   \textsc{
%     \int_to_roman:n {#1}
%   }%
%   \int_compare:nNnTF { #1 } > { 1 }{\ieme}{\ier} si\`ecle%
% }
% \NewDocumentCommand \century { m } {%
%   \_@@_century:n {#1}%
% }
%    \end{macrocode}
% \end{macro}
% On définit une commande d'inclusion de \enquote{copie d'écran} qui
% inclut une page d'un \File{.pdf} externe en indiquant non pas des
% numéros de pages absolus, mais plutôt des références stipulées au
% moyen de la clé ×bylabel× ci-dessus. Ceci nécessite de charger le
% \Package{zref} avec l'option ×xr× dans le \File{.tex} où sont
% incluses les pages du \File{.pdf} externe.
%    \begin{macrocode}
\zexternaldocument{\c_@@_treesample_string_tl/these}%
\cs_new_protected:Nn \_@@_screenshot:nn
{
  \fbox{\includegraphics[bylabel=#2,width=#1\linewidth-2\fboxsep-2\fboxrule]{\c_@@_treesample_string_tl/these}}%
}
\NewDocumentCommand \screenshot { O{.45} m } {%
  \_@@_screenshot:nn {#1}{#2}
}
%    \end{macrocode}
%
%    \begin{macrocode}
\cs_new_protected:Nn \_@@_meta:nn
{
    \bgroup%
    \normalfont
    \ttfamily%
    \textcolor{#1}{$\langle$\emph{#2}$\rangle$}%
    \egroup%
}
\AtBeginDocument{%
  \RenewDocumentCommand{\meta}{ O{meta} m } {
    \_@@_meta:nn {#1}{#2}
  }
}%
%    \end{macrocode}
%
% \subsection{Environments}
%
%    \begin{macrocode}
\NewTCBListing{preamblecode}{ O{} }{%
  codes,%
  drop~lifted~shadow,
  #1%
}
\NewTCBListing{bodycode}{ O{} }{%
  codes,%
  #1%
}
\NewTCBInputListing{\preamblesample}{ O{these.tex} m m }{%
  samples,
  drop~lifted~shadow,
  listing~file={\c_@@_treesample_string_tl/#1},
  listing~options={rangebeginprefix=\\,rangeendsuffix=\},#2},
  #3,
}%
\NewTCBInputListing{\bodysample}{ O{these.tex} m m }{%
  samples,
  listing~file={\c_@@_treesample_string_tl/#1},
  listing~options={rangebeginprefix=\\,rangeendsuffix=\},#2},
  #3,
}%
% \newtcbinputlisting{\preamblesample}[3][these.tex]{%
%   samples,
%   drop~lifted~shadow,
%   listing~file={\c_@@_treesample_string_tl/#1},
%   listing~options={rangebeginprefix=\\,rangeendsuffix=\},#2},
%   #3,
% }%
% \newtcbinputlisting{\bodysample}[3][these.tex]{%
%   samples,
%   listing~file={\c_@@_treesample_string_tl/#1},
%   listing~options={rangebeginprefix=\\,rangeendsuffix=\},#2},
%   #3,
% }%
%    \end{macrocode}
%
% \subsection{Theorems}
%
%    \begin{macrocode}
\tl_new:N \g_@@_number_within_tl
\tl_set:Nn \g_@@_number_within_tl {chapter}
\@ifclassloaded{gztarticle}{\tl_set:Nn \g_@@_number_within_tl {section}}{}%
\@ifclassloaded{nwejmart}{\tl_set:Nn \g_@@_number_within_tl {section}}{}%
%    \end{macrocode}
%
%    \begin{macrocode}
\newtcbtheorem[list~inside=dbwarninglist,number~within=\g_@@_number_within_tl,crefname={avertissement}{avertissements}]{dbwarning}{Avertissement}{%
  colback=red!5!white,
  colframe=red!75!black,
  dbtcb
}{wa}
%
\newtcbtheorem[list~inside=dbexamplelist,number~within=\g_@@_number_within_tl,crefname={exemple}{exemples}]{dbexample}{Exemple}{%
  colback=lime!5!white,
  colframe=lime!75!black,
  dbtcb
}{ex}
%
\newtcbtheorem[list~inside=dbremarklist,number~within=\g_@@_number_within_tl,crefname={remarque}{remarques}]{dbremark}{Remarque}{%
  colback=cyan!5!white,
  colframe=cyan!75!black,
  dbtcb
}{rq}
\newtcbtheorem[list~inside=dbfaqlist,number~within=\g_@@_number_within_tl,crefname={question}{questions}]{dbfaq}{Question}{%
  colback=lightgray!5!white,
  colframe=lightgray!75!black,
  fontupper=\slshape,
  dbtcb
}{faq}
%    \end{macrocode}
%
% \section{Macros for menu entries}
%
% The following code is borrowed from
% \href{http://tex.stackexchange.com/a/40637/18401}{Enrico Gregorio (egreg)}.
%    \begin{macrocode}
\NewDocumentCommand{\menuentry}{ O{} m }
  {
   \group_begin: % to segregate local changes to keys and font
   \keys_set:nn { menuentry } { #1 }
   \exp_args:NNx \seq_set_split:Nnn \l_menuentry_seq { \l_menuentry_inputsep_tl } { #2 }
   \tl_use:N \l_menuentry_font_tl
   \bool_set_false:N \l_tmpa_bool
   \seq_map_function:NN \l_menuentry_seq \menuentry_process:n
   \group_end:
  }
\NewDocumentCommand{\menuentryset} { m }
  { \keys_set:nn { menuentry } { #1 } }

\tl_new:N \l_menuentry_font_tl
\tl_new:N \l_menuentry_sep_tl
\tl_new:N \l_menuentry_inputsep_tl
\seq_new:N \l_menuentry_seq

\cs_new:Npn \menuentry_process:n #1
  {
   \bool_if:NTF \l_tmpa_bool
     { \l_menuentry_sep_tl }
     { \bool_set_true:N \l_tmpa_bool }
   \tl_if_empty:nTF { #1 } {EMPTY~ARG!} { #1 }
  }
\keys_define:nn { menuentry }
  {
   menufont .tl_set:N = \l_menuentry_font_tl ,
   menusep  .tl_set:N = \l_menuentry_sep_tl,
   inputsep .tl_set:N = \l_menuentry_inputsep_tl,
  }
\keys_set:nn { menuentry }
  {
   menufont = \sffamily ,
   menusep  = ${}\to{}$
 }%    \end{macrocode}
\menuentryset{inputsep=>}
%
% \section{Definitions specific to peticular classes or packages}
%
% \subsection{\Class{yathesis}}
%
%    \begin{macrocode}
\tl_const:Nn \c_@@_yat_class_name_tl {yathesis}
\tl_const:Nn \c_@@_configuration_directory_string_tl {configuration}
\tl_const:Nn \c_@@_configuration_file_string_tl {thesis.cfg}
\tl_const:Nn \c_@@_characteristics_file_string_tl {characteristics.tex}
\tl_const:Nn \c_@@_macros_file_file_string_tl {macros.tex}
\tl_const:Nn \c_@@_auxiliary_directory_string_tl {auxiliaires}
\tl_const:Nn \c_@@_glossary_file_string_tl {glossaire.tex}
\tl_const:Nn \c_@@_acronyms_file_string_tl {acronymes.tex}
\tl_const:Nn \c_@@_symbols_file_string_tl {symboles.tex}
\tl_const:Nn \c_@@_images_directory_string_tl {images}
\tl_const:Nn \c_@@_thesis_master_file_string_tl {these}
%    \end{macrocode}
%
% \begin{macro}{\yat}
% \begin{macro}{\yatpa}
% \begin{macro}{\yatcl}
%    \begin{macrocode}
\NewDocumentCommand \yat { }
{%
  \textsl{\texttt{\c_@@_yat_class_name_tl}}\xspace
}
\NewDocumentCommand \yatpa { }
{%
  \Package{\yat}\xspace
}
\NewDocumentCommand \yatcl { }
{%
  \Class{\yat}\xspace
}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
%    \begin{macrocode}
\NewDocumentCommand \configurationdirectory { }
{%
  \c_@@_configuration_directory_string_tl
}
\NewDocumentCommand \configurationfile { }
{%
  \c_@@_configuration_file_string_tl
}
\NewDocumentCommand \characteristicsfile { }
{%
  \c_@@_characteristics_file_string_tl
}
\NewDocumentCommand \macrosfile { }
{%
  \c_@@_macros_file_string_tl
}
\NewDocumentCommand \auxiliarydirectory { }
{%
  \c_@@_auxiliary_directory_string_tl
}
\NewDocumentCommand \glossaryfile { }
{%
  \c_@@_glossary_file_string_tl
}
\NewDocumentCommand \acronymsfile { }
{%
  \c_@@_acronyms_file_string_tl
}
\NewDocumentCommand \symbolsfile { }
{%
  \c_@@_symbols_file_string_tl
}
\NewDocumentCommand \imagesdirectory { }
{%
  \c_@@_images_directory_string_tl
}
\NewDocumentCommand \thesismasterfile { }
{%
  \c_@@_thesis_master_file_string_tl
}
%    \end{macrocode}
%
% \subsection{\Class{gzt}}
%
%    \begin{macrocode}
\tl_const:Nn \c_@@_gzt_class_name_tl {gzt}
\tl_const:Nn \c_@@_gztauthor_class_name_tl {gztarticle}
\tl_const:Nn \c_@@_journal_short_title_string_tl {Gazette}
\tl_const:Nn \c_@@_journal_title_string_tl {
  \c_@@_journal_short_title_string_tl{}~des~Math\'ematiciens%
}
%    \end{macrocode}
%
% \begin{macro}{\gzt}
% \begin{macro}{\gztcl}
%    \begin{macrocode}
% \NewDocumentCommand \gzt { s } {
%   \IfBooleanTF {#1}
%   {
%     \textit{\c_@@_journal_title_string_tl}
%   }
%   {
%     \textit{\c_@@_journal_short_title_string_tl}
%   }
% }
% \NewDocumentCommand \gztcl { }
% {%
%   \Class{\textsl{\texttt{\c_@@_gzt_class_name_tl}}}
% }
\NewDocumentCommand \gztauthor { }
{%
  \textsl{\texttt{\c_@@_gztauthor_class_name_tl}}
}
\NewDocumentCommand \gztauthorcl { }
{%
  \Class{\textsl{\texttt{\c_@@_gztauthor_class_name_tl}}}
}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \subsection{\Class{nwejm}}
%
%    \begin{macrocode}
\tl_const:Nn \c_@@_nwejm_class_name_tl {nwejm}
\tl_const:Nn \c_@@_nwejmauthor_class_name_tl {nwejmart}
%    \end{macrocode}
%
% \begin{macro}{\nwejm}
% \begin{macro}{\nwejmcl}
%    \begin{macrocode}
\ProvideDocumentCommand \nwejm { s } {
  \IfBooleanTF {#1}
  {
    \textit{\c_@@_journal_title_string_tl}
  }
  {
    \textit{\c_@@_journal_short_title_string_tl}
  }
}
\ProvideDocumentCommand \nwejmcl { }
{%
  \Class{\textsl{\texttt{\c_@@_nwejm_class_name_tl}}}
}
\NewDocumentCommand \nwejmauthor { }
{%
  \textsl{\texttt{\c_@@_nwejmauthor_class_name_tl}}
}
\NewDocumentCommand \nwejmauthorcl { }
{%
  \Class{\textsl{\texttt{\c_@@_nwejmauthor_class_name_tl}}}
}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% We switch to a \enquote{normal} category code régime.
%    \begin{macrocode}
\ExplSyntaxOff
%    \end{macrocode}
%
%    \begin{macrocode}
% \addbibresource{\jobname.bib}
%    \end{macrocode}
%
%    \begin{macrocode}
%</package>
%    \end{macrocode}
%
% \end{implementation}
%
% \PrintChanges
%
% \PrintIndex
\endinput

% Local Variables:
% mode: doctex
% eval: (doctex-mode)
% TeX-engine: xetex
% TeX-command-default: "TeX"
% TeX-master: t
% ispell-local-dictionary: "francais"
% End:
