summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/denisbdoc/denisbdoc.dtx
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/denisbdoc/denisbdoc.dtx
Initial commit
Diffstat (limited to 'macros/latex/contrib/denisbdoc/denisbdoc.dtx')
-rw-r--r--macros/latex/contrib/denisbdoc/denisbdoc.dtx2407
1 files changed, 2407 insertions, 0 deletions
diff --git a/macros/latex/contrib/denisbdoc/denisbdoc.dtx b/macros/latex/contrib/denisbdoc/denisbdoc.dtx
new file mode 100644
index 0000000000..c7d530e326
--- /dev/null
+++ b/macros/latex/contrib/denisbdoc/denisbdoc.dtx
@@ -0,0 +1,2407 @@
+% \iffalse meta-comment
+%<*internal>
+\iffalse
+%</internal>
+%<*readme>
+denisbdoc - A personal package for documenting classes and packages, v. 0.7
+===========================================================================
+
+**The (quick 'n dirty) `denisbdoc` package is just for documenting the classes
+I've written.**
+
+The class 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.7
+
+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, 2017 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}}
+}
+\nopreamble\nopostamble
+\generate{
+ \file{\jobname.xdy}{\from{\jobname.dtx}{xindy-style}}
+ \file{\jobname-chng.xdy}{\from{\jobname.dtx}{xindy-style-chng}}
+}
+%</install>
+%<install>\endbatchfile
+%<*internal>
+\usedir{source/latex/denisbdoc}
+\generate{
+ \file{\jobname.ins}{\from{\jobname.dtx}{install}}
+}
+\nopreamble\nopostamble
+\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}
+%\changes{v0.3}{2016/06/10}{Third CTAN version}
+%\changes{v0.4}{2016/10/24}{Fourth CTAN version}
+%\changes{v0.5}{2016/10/30}{Fifth CTAN version}
+%\changes{v0.6}{2016/12/08}{Sixth CTAN version}
+%\changes{v0.7}{2017/01/01}{Seventh 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} {2017/01/01} {0.7}
+ {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{Options}
+%
+% \begin{macrocode}
+\keys_define:nn { denisbdoc }
+{
+ yad .bool_gset:N = \g_@@_yad_bool,
+ gzt .bool_gset:N = \g_@@_gzt_bool,
+ nwejm .bool_gset:N = \g_@@_nwejm_bool,
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\ProcessKeysOptions { denisbdoc }
+% \end{macrocode}
+%
+% \section{Packages}
+%
+% \begin{macrocode}
+\PassOptionsToPackage{obeyspaces}{url}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\sys_if_engine_pdftex:TF
+ {
+ \RequirePackage[T1]{fontenc}
+ \RequirePackage[utf8]{inputenc}
+ }{
+ \RequirePackage{fontspec}
+ }
+\RequirePackage{xpatch}%
+\AtEndPreamble{%
+ \RequirePackage{mweights}%
+}%
+%
+% \let\denisbdoc@ORI@task\task
+% \let\task\relax
+% \RequirePackage{exsheets}
+% \let\task\denisbdoc@ORI@task
+\RequirePackage{parskip}%
+% \RequirePackage{amsthm}%
+% \RequirePackage{thmtools}%
+\RequirePackage{fixfoot}%
+\RequirePackage{marginnote}
+\RequirePackage[inline]{enumitem}%
+\RequirePackage{afterpage}%
+\RequirePackage{calc}%
+% \RequirePackage[lining]{libertine}%
+\RequirePackage{siunitx}%
+% \RequirePackage[a4paper]{geometry}%
+\RequirePackage{booktabs}%
+\RequirePackage{multirow}%
+\RequirePackage[xr]{zref}%
+\RequirePackage[multiple]{footmisc}%
+% \RequirePackage[multiple,bottom]{footmisc}%
+\RequirePackage{rotating}%
+\RequirePackage{pdflscape}%
+\RequirePackage{xspace}%
+\RequirePackage{accsupp}
+\RequirePackage{hologo}%
+\RequirePackage{xifthen}%
+\RequirePackage{refcount}%
+\RequirePackage{iflang}%
+\RequirePackage{ifpdf}%
+\RequirePackage{amssymb}%
+\RequirePackage{tocvsec2}%
+\RequirePackage{ltxcmds}%
+\RequirePackage{csquotes}%
+\RequirePackage{tikz}%
+\RequirePackage{translator}%
+% \RequirePackage{scrlfile}
+%
+\let\EUR\relax
+\RequirePackage{comment}%
+\RequirePackage{path}%
+\RequirePackage{textcase}%
+\RequirePackage{fontawesome}%
+\@ifpackageloaded{biblatex}{%
+% \end{macrocode}
+%
+% Réglage nécessaire sans quoi le titre courant \textquote{BIBLIOGRAPHIE}
+% apparaît en trop en entête et en pied de page
+% \begin{macrocode}
+\AtEndPreamble{%
+ \bool_if:nT {\g_@@_yad_bool} {%
+ % \defbibheading{bibintoc}[\bibname]{\chapter*{#1}}%
+ % % \defbibheading{subbibintoc}[\bibname]{\section*{#1}}%
+ % \defbibheading{YAD@localbibs@heading}[\translate{lbl-localbibname}]{%
+ % % \YAD@setsecnumdepth{none}%
+ % \section*{#1}%
+ % % \YAD@setsecnumdepth{\YAD@secnumdepth}%
+ % }%
+% \end{macrocode}
+%
+% Redéfinition de la commande d'insertion de la bibliographie et ce,
+% seulement si le \Package{biblatex} est chargé
+% \begin{macro}{\printbibliography}
+% \begin{macrocode}
+ \let\_@@_printbibliography_ORI\printbibliography%
+ \renewcommand{\printbibliography}[1][]{%
+ \pagestyle{biblio}%
+ \_@@_printbibliography_ORI[heading=bibintoc,#1]%
+ \pagestyle{ordinary}%
+ }%
+ }{%
+ }%
+}%
+}{%
+ \RequirePackage[backend=biber,style=authortitle,autopunct=false,useprefix=true,backref,dashed=false]{biblatex}%
+}%
+% \end{macrocode}
+%
+% In order to as many write \enquote{streams} in auxiliary files as needed. It
+% has to be loaded not too late (otherwise it cannot fix troubles it is used
+% for), but not too early (otherwise the compilation stops a long time at the
+% line:
+% ×/usr/local/texlive/.../texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg×,
+% trouble reported to the author).
+% \begin{macrocode}
+\RequirePackage{morewrites}%
+\RequirePackage{babel}%
+% \RequirePackage[useregional]{datetime2}%
+\RequirePackage[nodayofweek]{datetime}%
+% \RequirePackage{floatrow}%
+\RequirePackage{subcaption}%
+%
+% \Pkg{tocbibind} should be loaded before \pkg{imakeidx}, otherwise it would
+% destroy the |\indexprologue| feature of the latter.
+\RequirePackage{tocbibind}%
+\RequirePackage[xindy]{imakeidx}
+%
+% \@ifpackageloaded{hypdoc}{%
+% }{%
+% \let\oldmaketitle\maketitle
+% \RequirePackage{hypdoc}%
+% \let\maketitle\oldmaketitle
+% }%
+\RequirePackage{varioref}%
+\@ifpackageloaded{tcolorbox}{%
+}{%
+ \RequirePackage{tcolorbox}%
+}%
+\@ifpackageloaded{hyperref}{%
+}{%
+ \RequirePackage[hyperfootnotes=false,hyperindex=false]{hyperref}%
+}%
+\RequirePackage{attachfile2} \@ifpackageloaded{nameref}{%
+}{%
+ \RequirePackage{nameref}%
+}%
+\@ifpackageloaded{hypcap}{%
+}{%
+ \RequirePackage[all]{hypcap}%
+}%
+\@ifpackageloaded{bookmark}{%
+}{%
+ \RequirePackage[numbered]{bookmark}%
+}%
+\@ifpackageloaded{glossaries}{%
+}{%
+ % \RequirePackage{glossaries}%
+ \RequirePackage[xindy,hyperfirst=false,toc=false]{glossaries-extra}%
+ \makeglossaries%
+ \setglossarystyle{indexhypergroup}%
+ \setabbreviationstyle[acronym]{long-short-sc}%
+ \newcommand*{\formatfont}[1]{\textsc{#1}}%
+ \glssetcategoryattribute{format}{glossnamefont}{formatfont}%
+ \glssetcategoryattribute{format}{font}{formatfont}%
+ \renewcommand*{\glsxtrregularfont}[1]{%
+ \glshasattribute{\glslabel}{font}%
+ {\csuse{\glsgetattribute{\glslabel}{font}}{#1}}%
+ {#1}%
+ }%
+}%
+\@ifpackageloaded{cleveref}{%
+}{%
+ \RequirePackage{cleveref}%
+}%
+% \end{macrocode}
+%
+% Some code stolen from \pkg{hypdoc} in order page numbers in change history are
+% hyperlinks.
+% \begin{macrocode}
+\def\hdpindex#1#2{%
+ \csname\ifx\\#1\\relax\else#1\fi\endcsname{%
+ \hyperpage{#2}%
+ }%
+}
+\let\HDorg@wrglossary\@wrglossary
+\def\@wrglossary#1{%
+ \let\HDorg@encapchar\encapchar
+ \def\encapchar##1\encapchar##2\@nil{%
+ \HDorg@encapchar
+ hdpindex{##1}%
+ }%
+ \HDorg@wrglossary{#1\encapchar\encapchar\@nil}%
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\renewcommand{\acrpluralsuffix}{}
+% \end{macrocode}
+%
+% % Some hacks to avoid issues of \pkg{hypdoc} reported by me at
+% % \url{https://github.com/ho-tex/oberdiek/issues} (currently not used because
+% % this package has to much issues)).
+% % \begin{macrocode}
+% \@ifpackageloaded{hypdoc}{%
+% % \let\theglossary\HDorg@theglossary
+% \def\listoftables{%
+% % \end{macrocode}
+% %
+% % Hack against point 2 of this issue:
+% % \url{https://github.com/ho-tex/oberdiek/issues/12}.
+% % \begin{macrocode}
+% \bookmarksetup{startatroot}%
+% \cleardoublepage
+% % \end{macrocode}
+% %
+% % \begin{macrocode}
+% \ifHD@numbered
+% \else
+% \stepcounter{HD@unique}%
+% \pdfbookmark[\HD@guesstoclevel{\HDorg@listoftables}]%
+% % \end{macrocode}
+% %
+% % Hack against of this issue:
+% % \url{https://github.com/ho-tex/oberdiek/issues/8}.
+% % \begin{macrocode}
+% {\listtablename}%
+% % \end{macrocode}
+% %
+% % \begin{macrocode}
+% {toc\theHD@unique}%
+% \fi
+% \begingroup
+% \HD@sectionpatch
+% \HDorg@listoftables
+% \endgroup
+% }
+% \def\listoffigures{%
+% % \end{macrocode}
+% %
+% % Hack against point 2 of this issue:
+% % \url{https://github.com/ho-tex/oberdiek/issues/12}.
+% % \begin{macrocode}
+% \bookmarksetup{startatroot}%
+% \cleardoublepage
+% % \end{macrocode}
+% %
+% % \begin{macrocode}
+% \ifHD@numbered
+% \else
+% \stepcounter{HD@unique}%
+% \pdfbookmark[\HD@guesstoclevel{\HDorg@listoffigures}]%
+% % \end{macrocode}
+% %
+% % Hack against of this issue:
+% % \url{https://github.com/ho-tex/oberdiek/issues/8}.
+% % \begin{macrocode}
+% {\listfigurename}%
+% % \end{macrocode}
+% %
+% % \begin{macrocode}
+% {toc\theHD@unique}%
+% \fi
+% \begingroup
+% \HD@sectionpatch
+% \HDorg@listoffigures
+% \endgroup
+% }
+% \patchcmd{\HDorg@listoffigures}
+% {\chapter*{\listfigurename}}%
+% {%
+% \setsecnumdepth{none}%
+% \chapter{\listfigurename}%
+% \resetsecnumdepth*%
+% }%
+% {}%
+% {}
+% \patchcmd{\HDorg@listoftables}
+% {\chapter*{\listtablename}}%
+% {%
+% \setsecnumdepth{none}%
+% \chapter{\listtablename}%
+% \resetsecnumdepth*%
+% }%
+% {}%
+% {}
+% }{%
+% }
+% % \end{macrocode}
+%
+% A trouble with ×\NoAutoSpacing× from \package{frenchb} has been fixed since
+% version 3.2b 2016-04-18. But this cannot be discriminated directly (see
+% \url{http://tex.stackexchange.com/q/309680/18401}), hence we rely on
+% \Package{ltxcmds} for this:
+% \begin{macrocode}
+\ltx@iffilelater{frenchb.ldf}{2016/03/20}{%
+}{%
+ \DeclareRobustCommand*{\NoAutoSpacing}{\FBAutoSpaceGuillfalse%
+ \ifFB@active@punct\noautospace@beforeFDP\shorthandoff{;:!?}\fi%
+ \ifFB@xetex@punct\XeTeXinterchartokenstate=0 \fi%
+ \ifFB@luatex@punct\FB@addDPspace=0 \FB@addGUILspace=0 \fi%
+ }%
+}
+% \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}
+\pdftex_if_engine:TF
+ {
+ \lstMakeShortInline[style=dbtex]|
+ }{
+ \lstMakeShortInline[style=dbtex]×
+ }
+\fi
+\tcbuselibrary{%
+ documentation,theorems,breakable,skins,xparse%
+}
+\tcbset{%
+ commandshell/.style={%
+ colback=black,
+ colupper=white,
+ colframe=yellow!75!black,
+ breakable,
+ listing only,
+ listing options={style=tcblatex,language=bash,escapeinside={(*@}{@*)}},
+ every listing line={%
+ \textcolor{red}{%
+ \small\ttfamily\bfseries%
+ \BeginAccSupp{method=plain,ActualText={}}
+ \$
+ \EndAccSupp{}%
+ }
+ },
+ }
+}
+% \end{macrocode}
+%
+% We patch some \pkg{marginnote}'s internal macro in order |doc new| and |doc
+% update| margin notes provided by \pkg{tcolorbox} are always on the left hand
+% size and typesetted correctly.
+% \begin{macrocode}
+% \renewcommand{\tcbdocmarginnote}[2][]{%
+% \marginnote{%
+% \begin{tcolorbox}[enhanced jigsaw,size=fbox,boxrule=1pt,leftrule=0pt,rightrule=0pt,
+% arc=0pt,outer arc=1pt,boxsep=1pt,top=1pt,bottom=1pt,
+% nobeforeafter,width=\marginparwidth,
+% colframe=red!50!white,colback=red!25!yellow!5!white,fontupper=\scriptsize,
+% if odd page or oneside={flushright upper}{flushright upper},
+% doc@marginnote,#1]#2\end{tcolorbox}}}
+\tcbset{doc marginnote={if odd page or oneside={flushright upper}{flushright upper}}}
+\patchcmd{\@mn@margintest}{\@tempswafalse}{\@tempswatrue}{}{}
+\patchcmd{\@mn@margintest}{\@tempswafalse}{\@tempswatrue}{}{}
+\reversemarginpar
+% \end{macrocode}
+%
+% \begin{macrocode}
+\DeclareTotalTCBox{\commandshell}{ v }
+{ commandshell}{#1}
+\newtcblisting{listingshell}[1][]{%
+ % colback=black,
+ % colupper=white,
+ colback=white,
+ colupper=black,
+ colframe=yellow!75!black,
+ breakable,
+ listing only,
+ listing options={%
+ style=tcblatex,
+ language=bash,
+ escapeinside={(*@}{@*)},
+ upquote=true,
+ showstringspaces=false
+ },
+ every listing line={%
+ \textcolor{red}{%
+ \small\ttfamily\bfseries%
+ \BeginAccSupp{method=plain,ActualText={}}
+ \$
+ \EndAccSupp{}%
+ }
+ },
+ #1
+}
+\usetikzlibrary{trees,backgrounds,fit,calc,positioning}
+% \end{macrocode}
+%
+% The color of \package{attachfile(2)}'s links is by default too pale. We make
+% it the same as the \package{tcolorbox}' one:
+% \begin{macrocode}
+\attachfilesetup{color=Hyperlink}
+% \end{macrocode}
+%
+% In order to get \pkg{titleps}' header in index to include current index entry,
+% we define the following |\indexmark| command
+% (cf. \url{http://tex.stackexchange.com/q/335522/18401}) that will be inserted
+% inside the (level 0) |\targetindexentry| command below.
+% \begin{macrocode}
+\newcommand{\indexmark}[1]{\hypertarget{index:#1}{#1}\markboth{#1}{#1}}
+% \end{macrocode}
+%
+% In order to get \pkg{hyperref} and \pkg{xindy} work nicely together
+% (cf. \url{http://geekographie.maieul.net/172}).
+% \begin{macrocode}
+% \newcommand{\targetindexentry}[1]{\hypertarget{index:#1}{#1}}
+\newcommand{\targetindexentry}[1]{\indexmark{#1}}
+\newcounter{targeti}
+\newcommand{\targetindexentryi}[1]{\stepcounter{targeti}\hypertarget{\thetargeti:index:#1}{#1}}
+\newcounter{targetii}
+\newcommand{\targetindexentryii}[1]{\stepcounter{targetii}\hypertarget{\thetargetii:index:#1}{#1}}
+\newcommand{\seelink}[1]{\see{\hyperlink{index:#1}{#1}}}
+\newcommand{\indexdef}[1]{\index{#1|definition}}
+\newcommand{\indexex}[1]{%
+ \index{#1|example}%
+ \index{exemple!#1|example}%
+}
+\newcommand{\indexsee}[2]{\index{#1|see{#2}}}
+% \end{macrocode}
+%
+% We patch the |\printindex| command in order to store the symbolic name of the
+% current index in the |\DBD@index@symbolic@name| dedicated command that will be
+% used to uniquify the |\belowpdfbookmark| added at the beginning of each
+% |\lettergroup| in the customized |theindex| environment (defined in the
+% customized index style \File{denisbdoc.xdy}).
+% \begin{macrocode}
+\xpretocmd{\printindex}{\def\DBD@index@symbolic@name{#1}}{}{}
+% \end{macrocode}
+%
+% We patch the |\indexprologue| command in order to provide a navigation line at
+% the start of the index with links to each group that is present in the index
+% (see \url{http://tex.stackexchange.com/q/334200/18401})).
+% \begin{macrocode}
+% \renewcommand*{\marginfont}{\normalsize}
+% \renewcommand*{\marginnotevadjust}{.625\baselineskip}
+% %
+% \xpatchcmd{\theindex}{\imki@indexlevel{\indexname}}{%
+% \imki@indexlevel{%
+% \marginnote{\normalsize\csuse{DBD@indexnavigation@\csuse{DBD@index@symbolic@name}}}%
+% \indexname%
+% }
+% }{}{}%
+\xpatchcmd{\indexprologue}{#2}{%
+ #2
+ \par\bigskip
+ \csuse{DBD@indexnavigation@\csuse{DBD@index@symbolic@name}}%
+}{}{}%
+% \end{macrocode}
+%
+% We create a boolean which tests if the letter in the navigation bar is the 1st
+% one or not (in the latter case, a newline is added).
+% \begin{macrocode}
+\newif\if@DBD@no@first@letter@
+\@DBD@no@first@letter@false
+% \end{macrocode}
+%
+% \begin{macrocode}
+\newcommand*{\indexheading}[2]{%
+ \hypertarget{#2:#1}{\textbf{#1}}%
+ \protected@write\@auxout{}{\string\DBD@indexgroup{#1}{#2}}%
+}
+\newcommand*{\DBD@indexgroup}[2]{%
+ \csgappto{DBD@indexnavigation@#2}{%
+ \if@DBD@no@first@letter@
+ \,\textbar\,%
+ % \\
+ \else
+ \noindent
+ \@DBD@no@first@letter@true
+ \fi
+ \hyperlink{#2:#1}{\textbf{#1}}%
+ }%
+}
+% \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_@@_examples_path_tl {../exemples}
+\tl_const:Nn \c_@@_template_string_tl {\c_@@_examples_path_tl/canevas}
+\tl_const:Nn \c_@@_sample_string_tl {\c_@@_examples_path_tl/specimen}
+\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}
+\tl_const:Nn \c_@@_template_sample_zip_string_tl {canevas-specimen.zip}
+\tl_const:Nn \c_@@_these_aux_string_tl {these.aux}
+\tl_const:Nn \c_@@_these_snippets_directory_tl {extraits-these}
+% \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 {2016}
+\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*,%
+ pdfobjcompresslevel,chaptermark%
+ },%
+ 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,title,%
+ 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,refsegment%
+ },%
+ % Mots-clés de niveau 3 : arguments optionnels valeurs de clés dans clé=valeur
+ morekeywords=[3]{%
+ bibintoc,skipbib,chapter%
+ },%
+ sensitive%
+}[keywords,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,makebackcover,ordernumber,chapter*,disclaimer,newglssymbol,yadsetup,%
+ comue,%
+ % acknowledgements,frenchabstract,foreword,preface,caution,
+ },%
+ % Environments' names
+ morekeywords={%
+ yathesis%
+ },%
+ morekeywords=[1]{% Environments' names
+ abstract,dedicationspage,epigraphspage,epigraphs,%
+ glossaries,otherlanguage%
+ },%
+ morekeywords=[2]{% Keys of key-value lists
+ professor,seniorresearcher,mcf,associateprofessor,juniorresearcher,mcf*,associateprofessor*,%
+ 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,localtocs,localbibs,localbibs*%
+ },%
+ 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,%
+ coinstitute,company,institute,cosupervisor,cosupervisor*,comonitor,%
+ comonitor*,supervisor,supervisor*,academicfield,doctoralschool,keywords,%
+ ordernumber,committeepresident,committeepresident*,speciality%
+ },%
+ 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,articlesetup%
+ },%
+ % 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,%
+ gradient%
+ },%
+ 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}
+%
+% \begin{macrocode}
+\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}
+%
+% \end{macrocode}
+%
+% The \pkg{kpfonts} and \pkg{libertine}'s ttfamilies are not as nice as
+% \pkg{lmodern}'s one to my taste. So let's use the latter.
+% \begin{macrocode}
+\renewcommand{\ttdefault}{lmtt}
+% \end{macrocode}
+%
+% \pkg{lmodern} doesn't provide extended bold italic typewritter, hence
+% a warning when a command such as \pkg{tcolorbox}' |\docAuxCommand| is used in
+% a italic context. To get rid of this warning, we silently substitute bold
+% slanted to extended bold italic.
+% \begin{macrocode}
+{%
+ \ttfamily%
+ \DeclareFontShape{T1}{lmtt}{bx}{it}{<-> ssub * lmtt/b/sl}{}%
+}
+%
+% \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@}}%
+ \addtocontents{dbtablist}{\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={\c_space_tl\Righttorque},
+% % postbreak={\c_space_tl\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,
+ label~separator=-
+ }%
+}%
+%
+\tcbset{%
+ doc~head={%
+ % boxsep=4pt,arc=4pt,boxrule=0.6pt,%
+ % frame~style=fill,%
+ % colframe=red!50!black,%
+ interior~style={%
+ fill,%
+ color=yellow!10!white,%
+ }%
+ }%
+}
+\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~format=off,
+ 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
+ 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=\}}
+ }%
+}%
+\renewcommand*{\tcbdocnew}[1]{\scriptsize\sffamily\textcolor{green!50!black}{\bfseries
+Nouv.~:}~#1}
+\renewcommand*{\tcbdocupdated}[1]{\scriptsize\sffamily\textcolor{blue!75!black}{\bfseries
+\textsc{m.-à-j.}~:}~#1}
+% \end{macrocode}
+%
+% Suppression du gras dans la commande ×\docAuxCommand× :
+% \begin{macrocode}
+\def\disp@com#1{\colDef{\ttfamily#1}}
+% \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}
+%
+% We create a command that displays the translatation of expressions.
+% \begin{macrocode}
+\NewDocumentCommand \translateexpression { sm }
+{
+ \enquote{\foreignlanguage{french}{\translate{#2}}}~
+ ou~
+ \enquote{\foreignlanguage{english}{\translate{#2}}}%
+ \IfBooleanF {#1}
+ {
+ \selonlangue%
+ \index{expression!en~français!\enquote{\foreignlanguage{french}{\translate{#2}}}}%
+ \index{expression!en~anglais!\enquote{\foreignlanguage{english}{\translate{#2}}}}%
+ }
+}
+% \end{macrocode}
+%
+% Some hacks to avoid "\makeindex"'s “title” option from \pkg{imakeidx} ignored
+% if \pkg{tcolorbox}' indexation is used (see
+% \url{http://tex.stackexchange.com/q/332284/18401})).
+% \begin{macrocode}
+\expandafter\AtBeginDocument\expandafter{%
+ \expandafter\def\expandafter\theindex\expandafter{\theindex}%
+}
+\expandafter\AtBeginDocument\expandafter{%
+ \expandafter\def\expandafter\endtheindex\expandafter{\endtheindex}%
+}
+% \end{macrocode}
+%
+% Hack of \pkg{imakeidx} in order different indices have different extensions
+% that can be taken in account by \pkg{latexmk}'s custom dependencies and
+% subroutine (see \url{http://tex.stackexchange.com/q/336653/18401}). The
+% extensions of input and output files are specified by new |extin| and |extout|
+% options of |\makeindex|.
+% \begin{macrocode}
+\ExplSyntaxOff
+\def\imki@finalmessage#1{}% since you're using latexmk
+\def\imki@startidx#1#2{%
+ \if@filesw
+ \def\index{\@bsphack
+ \@ifnextchar [{\@index}{\@index[\imki@jobname]}}
+ \expandafter\newwrite\csname #1@idxfile\endcsname
+ \immediate\openout \csname #1@idxfile\endcsname #1.#2\relax
+ \typeout{Writing index file #1.#2}%
+ \fi}
+\xpatchcmd\imki@makeindex
+ {\imki@startidx\imki@name}
+ {\imki@startidx\imki@name\imki@extout}
+ {}{}
+\xpatchcmd\imki@build
+ {\imki@dokey\imki@title}
+ {\imki@dokey\imki@title
+ \imki@dokey\imki@extin
+ \imki@dokey\imki@extout}
+ {}{}
+\xpatchcmd{\imki@putindex}
+ {\imki@options}
+ {\c_space_tl~ -o~ #1.\imki@extin\imki@options}
+ {}{}
+\xpatchcmd{\imki@putindex}
+ {.idx}
+ {.\imki@extout}
+ {}{}
+\xpatchcmd{\imki@putindex}
+ {.ind}
+ {.\imki@extin}
+ {}{}
+\def\imki@extout{idx}\def\imki@extin{ind}
+\define@key{imki}{extout}{\def\imki@extout{#1}}
+\define@key{imki}{extin}{\def\imki@extin{#1}}
+\ExplSyntaxOn
+% \end{macrocode}
+%
+% \begin{macrocode}
+\cs_new_protected:Nn \_@@_alert:n
+{
+ \begingroup
+ \color{red}
+ #1
+ \endgroup
+}%
+\NewDocumentCommand \alert {m}
+{
+ \_@@_alert:n {#1}
+}%
+\DeclareDocumentCommand \changes { smmm } {
+ \IfBooleanTF {#1}
+ {
+ \tl_set:Nn \l_tmpa_tl {\alert{#4}}
+ }{
+ \tl_set:Nn \l_tmpa_tl {#4}
+ }
+ \ifx\@onlypreamble\@notprerr
+ \index[\jobname-changes]{\texttt{#2}~(#3)!\l_tmpa_tl}
+ \else
+ \index[\jobname-changes]{\texttt{#2}~(#3)!\emph{Globalement}!\l_tmpa_tl|gobble}
+ \fi
+}
+\DeclareDocumentCommand \PrintChanges { O{} } {
+ \indexprologue{#1}
+% \end{macrocode}
+%
+% The changes are printed in a numbered chapter hence subject to
+% cross-references.
+% \begin{macrocode}
+ \def\imki@indexlevel{\chapter}
+ \printindex[\jobname-changes]
+ \def\imki@indexlevel{\chapter*}
+}
+% \@ifpackageloaded{doc}{%
+% \renewcommand*{\changes@}[3]{%
+% \protected@edef\@tempa{%
+% \noexpand\glossary{\ttfamily#1\normalfont{}~(#2)\levelchar
+% \ifx\saved@macroname\@empty
+% \c_space_tl\actualchar\generalname
+% \else
+% \expandafter\@gobble\saved@macroname
+% \actualchar
+% \string\verb\quotechar*\verbatimchar\saved@macroname\verbatimchar
+% \fi
+% :\levelchar #3}}%
+% \@tempa
+% \endgroup
+% \@esphack
+% }
+% \cs_set_eq:NN \_@@_orig_changes \changes
+% \DeclareDocumentCommand \changes { smmm } {
+% \_@@_orig_changes{#2}{#3}{%
+% \IfBooleanTF {#1}
+% {
+% \alert{#4}%
+% }
+% {
+% #4%
+% }
+% }
+% }
+% }{%
+% }
+% \end{macrocode}
+%
+% In case of French language, we ask the plain style of \Package{csquotes} to be
+% the right ones.
+% \begin{macrocode}
+\IfLanguageName{french}{%
+ \DeclarePlainStyle{«~}{~»}%
+ {“}{”}
+}{}%
+% \end{macrocode}
+%
+% The following hack was provided by Clemens Niederberger
+% (see \url{http://tex.stackexchange.com/q/304980}).
+%
+% This saves the url with all characters catcode other:
+% \begin{macrocode}
+\tl_const:Nx \c_@@_standard_url_tl { \tl_to_str:n { http://www.ctan.org/pkg/ } }
+% \end{macrocode}
+% Separate formatting:
+% #1: package or class name
+% #2: extra argument (e.g. font attribute)
+\cs_new_protected:Npn \_@@_package_format:nn #1#2
+{
+ #2{\sffamily#1}
+}
+% The main macro
+% #1: boolean (true => no hyperlink)
+% #2: boolean (false => indexation)
+% #3: optional url
+% #4: package or class name
+% #5: index main entry (if #5 false)
+% #6: index subsubentry (if #5 false)
+% #7: extra argument for the package or class name (e.g. font attribute)
+\cs_new_protected:Npn \_@@_package:nnnnnnn #1#2#3#4#5#6#7
+{
+ \texorpdfstring
+ {
+ \bool_if:nTF {#1}
+ { \_@@_package_format:nn {#4}{#7} }
+ {
+ \tl_if_blank:nTF {#3}
+ {
+ \tl_set:Nx \l_tmpa_tl {\c_@@_standard_url_tl #4}
+ \href
+ { \l_tmpa_tl }
+ { \_@@_package_format:nn {#4}{#7} }
+ }
+ {
+ \href
+ { #3 }
+ { \_@@_package_format:nn {#4}{#7} }
+ }
+ }
+ \IfBooleanF{#2}
+ {
+ \tl_if_empty:nTF {#6}
+ {
+ \index{#5!liste!\textsf{#4}}
+ }{
+ \index{#5!liste!\textsf{#4}!#6}
+ }
+ }
+ }
+ {#4}
+}
+\NewDocumentCommand{\package}{ s t+ O{} m O{package} O{} O{} } {
+ \_@@_package:nnnnnnn {#1}{#2}{#3}{#4}{package}{#6}{#7}
+}
+\NewDocumentCommand{\Package}{ s t+ O{} m O{package} O{} O{} } {
+ \IfLanguageName{french}{package~}{}%
+ \_@@_package:nnnnnnn {#1}{#2}{#3}{#4}{package}{#6}{#7}
+ \IfLanguageName{english}{~package}{}%
+}
+%
+\NewDocumentCommand{\class}{ s t+ O{} m O{} O{} O{} } {
+ \IfLanguageName{french}{%
+ \_@@_package:nnnnnnn {#1}{#2}{#3}{#4}{classe}{#6}{#7}
+ }{}%
+ \IfLanguageName{english}{%
+ \_@@_package:nnnnnnn {#1}{#2}{#3}{#4}{class}{#6}{#7}
+ }{}%
+}
+\NewDocumentCommand{\Class}{ s t+ O{} m O{} O{} O{} } {
+ \IfLanguageName{french}{%
+ classe~%
+ \_@@_package:nnnnnnn {#1}{#2}{#3}{#4}{classe}{#6}{#7}
+ }{}%
+ \IfLanguageName{english}{%
+ \_@@_package:nnnnnnn {#1}{#2}{#3}{#4}{class}{#6}{#7}~%
+ 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 \ie { s } {%
+ \IfBooleanTF {#1}
+ {
+ \IfLanguageName{french}{%
+ c'est-\`{a}-dire
+ }{}%
+ \IfLanguageName{english}{%
+ id est
+ }{}%
+ }
+ {
+ \IfLanguageName{french}{%
+ c.-à-d
+ }{}%
+ \IfLanguageName{english}{%
+ i.e
+ }{}%
+ \@ifnextchar.%
+ {
+ }{
+ .\xspace
+ }%
+ }
+}
+%
+\NewDocumentCommand{\program}{ m }
+{
+ \_@@_file:n {#1}%
+}
+\NewDocumentCommand{\texstudio}{ }
+{
+ \program{TeXstudio}\xspace
+}
+\NewDocumentCommand{\emacs}{ }
+{
+ \program{Emacs}\xspace
+}
+\NewDocumentCommand{\texlive}{ }
+{
+ \href{http://www.tug.org/texlive/}{\TeX{}\c_space_tl{}Live}\xspace
+}
+\NewDocumentCommand{\miktex}{ }
+{
+ \href{http://www.tug.org/texlive/}{MiK\TeX}\xspace
+}
+\NewDocumentCommand{\linux}{ }
+{
+ Linux\index{Linux}\xspace
+}
+\NewDocumentCommand{\macos}{ }
+{
+ Mac OS\index{Mac OS}\xspace
+}
+\NewDocumentCommand{\windows}{ }
+{
+ Windows\index{Windows}\xspace
+}
+%
+\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 {../exemples}{}{\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}{}
+{
+ \directorytree{\c_@@_unixtldirectory_string_tl}
+}%
+\NewDocumentCommand{\tlversion}{}
+{
+ \directorytree{\c_@@_tlversion_string_tl}
+}%
+\NewDocumentCommand{\wintldirectory}{}
+{
+ \directorytree{\c_@@_wintldirectory_string_tl}
+}%
+\NewDocumentCommand{\tldistdirectory}{}
+{
+ \directorytree{\c_@@_tldistdirectory_string_tl}
+}%
+\NewDocumentCommand{\miktexdistdirectory}{}
+{
+ \directorytree{\c_@@_miktexdistdirectory_string_tl}
+}%
+\NewDocumentCommand{\docdirectory}{}
+{
+ \directorytree{\c_@@_docdirectory_string_tl}
+}%
+\NewDocumentCommand{\texdirectory}{}
+{
+ \directorytree{\c_@@_texdirectory_string_tl}
+}%
+\NewDocumentCommand{\sourcedirectory}{}
+{
+ \directorytree{\c_@@_sourcedirectory_string_tl}
+}%
+\NewDocumentCommand{\jobdirectory}{}
+{
+ \directorytree{\c_@@_jobdirectory_string_tl}
+}%
+\NewDocumentCommand{\jobdocdirectory}{}
+{
+ \directorytree{\c_@@_jobdocdirectory_string_tl}
+}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+\NewDocumentCommand{\version}{ m }
+{
+ Version~\texttt{#1}
+}
+% \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}
+\bool_if:nT {\g_@@_yad_bool} {%
+ %
+ \zexternaldocument{\c_@@_flatsample_string_tl/these}%
+ \bool_new:N \g_@@_these_aux_exists%
+ \msg_new:nnn{denisbdoc}{File~ `\c_@@_these_aux_string_tl'~ needed}{%
+ File~ `\c_@@_these_aux_string_tl'~ needed~ (otherwise~ this~ document~ will~
+ be~ incomplete)!~ Please~ go~ to~ `\c_@@_flatsample_string_tl'~
+ directory~ and~ run~ first:\\\\
+
+ \ \ latexmk~ -g~ -pdf~ -jobname=these~ -pdflatex="pdflatex~ \%O~ \string\ \\
+ \ \ '\string\RequirePackage\{etoolbox\}~ \string\ \\
+ \ \ \string\AtEndPreamble\{\string\RequirePackage\{yathesis-demo\}\}~ \string\ \\
+ \ \ \string\input\{\%S\}'"~ these.tex
+ \\\\
+ Afterwards,~ recompile~ this~ document.%
+ }%
+ \file_if_exist:nTF {\c_@@_flatsample_string_tl/\c_@@_these_aux_string_tl} { \bool_gset_true:N
+ \g_@@_these_aux_exists }{
+ % \bool_gset_false:N \g_@@_these_aux_exists
+ \msg_warning:nn{denisbdoc}{File~ `\c_@@_these_aux_string_tl'~ needed}
+ \AfterEndPreamble{%
+ \begin{dbwarning}{Documentation~incomplète~!}{documentation-incomplete}
+ La~ présente~ documentation~ est~ incomplète~ car~ le~
+ \File{\c_@@_these_aux_string_tl}~ est~ absent~ du~
+ \Folder{\c_@@_flatsample_string_tl}.~ Pour~ régler~ le~ problème,~
+ rendez-vous~ dans~ ce~ dossier~ et~ compilez~ le~ \File{these.tex}~ au~
+ moyen~ de~ la~ commande~ suivante\footnote{Sur~ une~ seule~ ligne.}~ :
+ \par\medskip
+
+ \lstinline[language=bash,upquote=true,commentstyle=,stringstyle=,showstringspaces=false]+latexmk~-g~ -norc~ -r~ ./latexmkrc~-jobname=these-pdflatex="pdflatex~\%O~'\\RequirePackage\{etoolbox\}\\AtEndPreamble\{\\RequirePackage\{yathesis-demo\}\}\\input\{\%S\}'"~these+
+ \end{dbwarning}
+ }
+ }
+ %
+ \msg_new:nnn{denisbdoc}{File~ `\c_@@_template_sample_zip_string_tl'~ needed}{%
+ File~ `canevas-specimen.zip'~ needed~ (otherwise~ this~ document~ will~ be~
+ incomplete)!~ Please~ get~ this~ file~ from~ the~ orignal~ yathesis'~
+ documentation~ and~ save~ it~ in~ `../exemples/'~ folder.~ Afterwards,~
+ recompile~ this~ document.%
+ }%
+ \file_if_exist:nTF {../\c_@@_template_sample_zip_string_tl} {}{
+ \msg_warning:nn{denisbdoc}{File~ `\c_@@_template_sample_zip_string_tl'~ needed}
+ \AfterEndPreamble{%
+ \begin{dbwarning}{Documentation~incomplète~!}{}
+ La~ version~ électronique~ (\pdf{})~ de~ la~ présente~ documentation~
+ est~ incomplète~ :~ normalement,~ les~ canevas~ et~ spécimens~ y~ sont~
+ intégrés~ par~ le~ biais~ de~ l'archive~ \gls{zip}~
+ \file{\c_@@_template_sample_zip_string_tl}~ (alors~ accessible~ par~
+ simple~ clic)~ mais~ ce~ n'est~ pas~ le~ cas~ ici,~ ce~ fichier~ étant~
+ absent~ du~ dossier~ parent.~ % \Folder{\c_@@_examples_path_tl}.~
+ Pour~ régler~ le~ problème,~ accédez~ à~ ce~ fichier~ attaché~ à~ la~
+ version~ électronique~ originale~ de~ la~ documentation~ de~
+ \yatcl{}\footnote{Disponible~ à~ l'adresse~
+ \url{http://ctan.org/pkg/yathesis},~ si~ besoin~ est.}~ et~ placez-le~
+ dans~ le~ \Folder{\c_@@_examples_path_tl}.
+ \end{dbwarning}
+ }
+ }
+ %
+ \cs_new_protected:Nn \_@@_screenshot:nn
+ {
+ \bool_if:NTF {\g_@@_these_aux_exists} {
+ \fbox{\includegraphics[bylabel=#2,width=#1\linewidth-2\fboxsep-2\fboxrule]{\c_@@_flatsample_string_tl/these}}%
+ }{%
+ \begin{dbwarning}{Copie~d'écran~manquante~!}{}
+ Il~ devrait~ ici~ y~ avoir~ une~ copie\c_space_tl ~ d'écran.~ Cf.~
+ \vref{wa-documentation-incomplete}~ pour~ plus~ de~ détails.
+ \end{dbwarning}
+ }
+ }
+ \NewDocumentCommand \screenshot { O{.45} m } {%
+ \_@@_screenshot:nn {#1}{#2}
+ }
+}
+% \end{macrocode}
+%
+% In order to get rid of the warning "PDF inclusion: multiple pdfs with page
+% group included in a single page" (see
+% \url{http://tex.stackexchange.com/q/183149/18401}).
+% \begin{macrocode}
+\pdfsuppresswarningpagegroup=1
+% \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{\preamblesampleold}{ O{these.tex} m m }{%
+ samples,
+ drop~lifted~shadow,
+ listing~file={\c_@@_treesample_string_tl/#1},
+ listing~options={rangebeginprefix=\\,rangeendsuffix=\},#2},
+ #3,
+}%
+\NewTCBInputListing{\preamblesample}{ m m m }{%
+ samples,
+ drop~lifted~shadow,
+ listing~file={\c_@@_these_snippets_directory_tl/#1},
+ listing~options={#2},
+ #3,
+}%
+\NewTCBInputListing{\bodysampleold}{ O{these.tex} m m }{%
+ samples,
+ listing~file={\c_@@_treesample_string_tl/#1},
+ listing~options={rangebeginprefix=\\,rangeendsuffix=\},#2},
+ #3,
+}%
+\NewTCBInputListing{\bodysample}{ m m m }{%
+ samples,
+ listing~file={\c_@@_these_snippets_directory_tl/#1},
+ listing~options={#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=\itshape,
+ dbtcb
+}{faq}
+\newtcbtheorem[list~inside=dbtabularlist,number~within=\g_@@_number_within_tl,crefname={tableau}{tableaux}]{dbtab}{Tableau}{%
+ colback=purple!5!white,
+ colframe=purple!75!black,
+ fontupper=\itshape,
+ dbtcb
+}{tab}
+% \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{\textsf{\c_@@_yat_class_name_tl}}
+}
+\NewDocumentCommand \yatpa { }
+{%
+ \Package+{\c_@@_yat_class_name_tl}[\itshape][]\xspace
+}
+\NewDocumentCommand \yatcl { }
+{%
+ \texorpdfstring{\class+{\c_@@_yat_class_name_tl}[][][\itshape]\xspace}{yathesis}
+}
+\NewDocumentCommand \yatCl { }
+{%
+ \texorpdfstring{\Class+{\c_@@_yat_class_name_tl}[][][\itshape]\xspace}{classe yathesis}
+}
+% \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+[http://ctan.org/pkg/gzt]{\gztauthor}
+}
+% \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{\c_@@_nwejm_class_name_tl}
+}
+\NewDocumentCommand \nwejmauthor { }
+{%
+ \class[\c_@@_standard_url_tl\c_@@_nwejm_class_name_tl]{\c_@@_nwejmauthor_class_name_tl}
+}
+\NewDocumentCommand \nwejmauthorcl { }
+{%
+ \Class[\c_@@_standard_url_tl\c_@@_nwejm_class_name_tl]{\c_@@_nwejmauthor_class_name_tl}
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% We PDFdisable some commands in order to avoid troubles in bookmarks.
+% \begin{macrocode}
+\pdfstringdefDisableCommands{%
+ \let\textcolor\@gobble
+ \def\yatcl{yathesis}
+ \def\yatCl{classe~yathesis}
+ \def\program#1{#1}
+}
+% \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}
+%</package>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*xindy-style>
+% \end{macrocode}
+%
+% \begin{macrocode}
+;; (define-attributes ("example"))
+;; (define-attributes ("definition"))
+(define-attributes (("default" "definition" "example")))
+(define-attributes ("textsf"))
+(markup-locref :open "\hyperpage{" :close "}" :attr "default")
+(markup-locref :open "\textbf{\hyperpage{" :close "}}" :attr "definition")
+(markup-locref :open "\textit{\hyperpage{" :close "}}" :attr "textit")
+(markup-locref :open "\textsf{\hyperpage{" :close "}}" :attr "textsf")
+(markup-locref :open "\emph{\hyperpage{" :close "}}" :attr "example")
+
+(markup-crossref-list :class "see" :open "\seelink{" :sep "; " :close "}{}")
+
+(define-crossref-class "hyperindexformat")
+(markup-crossref-list :class "hyperindexformat" :open
+ "\hyperindexformat{" :sep "; " :close "}{}")
+
+;; (merge-to "definition" "default" :drop)
+
+(markup-locref :open "\hyperpage{" :close "}")
+(markup-locref :open "\hyperpage{" :close "}" :attr "hyperpage")
+
+
+(markup-keyword-list :open "\targetindexentry{" :close "}" )
+(markup-keyword-list :open "\targetindexentryi{" :close "}" :depth 1)
+(markup-keyword-list :open "\targetindexentryii{" :close "}" :depth 2)
+
+(markup-index :open "~n
+% \bookmarksetup{open}
+\begin{theindex}
+ \providecommand*\lettergroupDefault[1]{}
+ \providecommand*\lettergroup[1]{%
+ \belowpdfbookmark{#1}{\csuse{DBD@index@symbolic@name}:#1}%
+ \par\indexheading{#1}{\csuse{DBD@index@symbolic@name}}\par
+ \nopagebreak
+ }
+ ~n"
+ :close "~n~n\end{theindex}~n"
+:tree)
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</xindy-style>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*xindy-style-chng>
+% \end{macrocode}
+%
+% \begin{macrocode}
+(define-crossref-class "hyperindexformat")
+(markup-crossref-list :class "hyperindexformat" :open
+ "\hyperindexformat{" :sep "; " :close "}{}")
+
+(markup-locref :open "\hyperpage{" :close "}")
+
+(markup-locref-list :sep ", ")
+(markup-locclass-list :open "\hspace*{\fill}\nobreakspace" :close "" )
+
+(define-attributes (("gobble" "default")))
+(markup-locref :open "\makeatletter\@gobble{" :close "}\makeatother" :attr "gobble")
+% (markup-locclass-list :open "" :sep "")
+
+% (markup-keyword-list :open "{\small " :close "}" )
+% (markup-keyword-list :open "{\small " :close "}" :depth 1)
+% (markup-keyword-list :open "{\small " :close "}" :depth 2)
+
+(markup-index :open "~n
+\clearpage
+\phantomsection
+\begin{theindex}
+ \small
+ \providecommand*\lettergroupDefault[1]{}
+ \providecommand*\lettergroup[1]{}
+ ~n"
+ :close "~n~n\end{theindex}~n"
+:tree)
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</xindy-style-chng>
+% \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: