%-------------------------------------------------------------------------------
% Module créé par Vincent Guyot pour définir un modèle de travail de maturité
% Mis à jour le 2 février 2012

% Ce fichier est soumis à la licence libre GFDL dont on peut trouver
% les conditions sur le net.
%--------------------------------------------------------------------------------

\ProvidesPackage{TM}

% Définitions générales
\usepackage[german,english,french]{babel}	% Gestion de la typographie française
\usepackage[utf8]{inputenc}	% Accents
%\usepackage[OT1]{fontenc}	% Encodage
\usepackage[T1]{fontenc}	% Encodage

% Géométrie de la page
\usepackage{geometry}
%\geometry{verbose,a4paper,lmargin=2cm,rmargin=2cm}	% règle les marges de la page

% Structure du document
\usepackage{emptypage}
\usepackage{nextpage}		% Permet \cleartooddpage, \cleartoevenpage et \cleartooddpage[\thispagestyle{empty}]
\usepackage[Lenny]{fncychap}	% Titres de chapitres avec un filet
\usepackage{fancybox}		% Styles de filets de boites
%\usepackage{fancyheadings}	% Entêtes et pieds de page
\usepackage{fancyhdr}
\fancypagestyle{plain}{%
\fancyhf{} % clear all header and footer fields
\fancyfoot[C]{\bfseries \thepage} % except the center
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}}
\setlength{\headheight}{22.5pt}		% pour éliminer une erreur qui disait que la largeur de l'entête était trop petite (12pt)

%\usepackage{minitoc}		% Minitable des matières des chapitres
\usepackage{layout}		% Redéfinition des caractéristiques de la page
\usepackage{setspace}		% Interligne du document

% Bibliographie
%\usepackage[pageref]{biblatex}
%\usepackage[autocite=plain]{biblatex}
\usepackage{csquotes}
% biblatex est dans un commande pour permettre le choix du style de biblio dans
% le fichier config.tex
\newcommand{\choixstylebiblio}{
    \usepackage[backend=biber,sortcites,hyperref=true,backref=true,style=\lestyledebiblio,labeldate=long]{biblatex}
    \addbibresource{main.bib}
    % Pour permettre une biblio complète (\nocite{•}) en plus des autres
	% on ajoute tous les éléments cités dans le texte à la catégorie « cited ».
	\DeclareBibliographyCategory{cited}
	\AtEveryCitekey{\addtocategory{cited}{\thefield{entrykey}}}
}

%\addbibresource{mini.bib}
%\usepackage{multibib}		% Plusieurs bibliographies
\usepackage{tocloft}		% Pour faire une table des crédits photographiques

% Images
\usepackage{graphicx}		% Placement des figures
\usepackage{pstricks}
\usepackage{fix-cm}			% Pour avoir des fontes plus grandes que Huge (corr.bug)
\usepackage{epsfig}
\usepackage{float}
\usepackage{pdfpages}		% Pour inclure des pdf

% Tableaux
\usepackage{longtable}
\usepackage{multirow}		% Fusion des lignes d'un tableau
\usepackage{longtable}		% Longues tables
\usepackage{tabularx}		% Tableaux
\usepackage[figuresleft]{rotating}		% Rotation avec les figures dans le même sens
\usepackage{lscape}			% En format paysage
%\usepackage{pdflscape}		% Pour faire tourner la page dans le pdf uniquement. Mais
							% attention, il faut ajouter -dAutoRotatePages=/None à 									% ps2pdf pour éviter une double rotation
% Listes
\usepackage{paralist}		% Divers styles de listes
\usepackage{textcase}		% Mettre en majuscule ou minuscule sans bugs

% Listings
\usepackage{listings}		% Listings et sa configuration
\lstdefinelanguage{JavaScript}{
      morekeywords={break, case, catch, continue, debugger, default, delete, do, else, false, finally, for, function, if, in, instanceof, new, null, return, switch, this, throw, true, try, typeof, var, void, while, with},
      morecomment=[s]{/*}{*/},
      morecomment=[l]//,
      morestring=[b]",
      morestring=[b]'
    }
\lstdefinelanguage{CSS}{
      keywords={accelerator,azimuth,background,background-attachment,
            background-color,background-image,background-position,
            background-position-x,background-position-y,background-repeat,
            behavior,border,border-bottom,border-bottom-color,
            border-bottom-style,border-bottom-width,border-collapse,
            border-color,border-left,border-left-color,border-left-style,
            border-left-width,border-right,border-right-color,
            border-right-style,border-right-width,border-spacing,
            border-style,border-top,border-top-color,border-top-style,
            border-top-width,border-width,bottom,caption-side,clear,
            clip,color,content,counter-increment,counter-reset,cue,
            cue-after,cue-before,cursor,direction,display,elevation,
            empty-cells,filter,float,font,font-family,font-size,
            font-size-adjust,font-stretch,font-style,font-variant,
            font-weight,height,ime-mode,include-source,
            layer-background-color,layer-background-image,layout-flow,
            layout-grid,layout-grid-char,layout-grid-char-spacing,
            layout-grid-line,layout-grid-mode,layout-grid-type,left,
            letter-spacing,line-break,line-height,list-style,
            list-style-image,list-style-position,list-style-type,margin,
            margin-bottom,margin-left,margin-right,margin-top,
            marker-offset,marks,max-height,max-width,min-height,
            min-width,-moz-binding,-moz-border-radius,
            -moz-border-radius-topleft,-moz-border-radius-topright,
            -moz-border-radius-bottomright,-moz-border-radius-bottomleft,
            -moz-border-top-colors,-moz-border-right-colors,
            -moz-border-bottom-colors,-moz-border-left-colors,-moz-opacity,
            -moz-outline,-moz-outline-color,-moz-outline-style,
            -moz-outline-width,-moz-user-focus,-moz-user-input,
            -moz-user-modify,-moz-user-select,orphans,outline,
            outline-color,outline-style,outline-width,overflow,
            overflow-X,overflow-Y,padding,padding-bottom,padding-left,
            padding-right,padding-top,page,page-break-after,
            page-break-before,page-break-inside,pause,pause-after,
            pause-before,pitch,pitch-range,play-during,position,quotes,
            -replace,richness,right,ruby-align,ruby-overhang,
            ruby-position,-set-link-source,size,speak,speak-header,
            speak-numeral,speak-punctuation,speech-rate,stress,
            scrollbar-arrow-color,scrollbar-base-color,
            scrollbar-dark-shadow-color,scrollbar-face-color,
            scrollbar-highlight-color,scrollbar-shadow-color,
            scrollbar-3d-light-color,scrollbar-track-color,table-layout,
            text-align,text-align-last,text-decoration,text-indent,
            text-justify,text-overflow,text-shadow,text-transform,
            text-autospace,text-kashida-space,text-underline-position,top,
            unicode-bidi,-use-link-source,vertical-align,visibility,
            voice-family,volume,white-space,widows,width,word-break,
            word-spacing,word-wrap,writing-mode,z-index,zoom},
            sensitive=true,
            morecomment=[l]{//},
            morecomment=[s]{/*}{*/},
            morestring=[b]',
            morestring=[b]",
            alsoletter={:},
            alsodigit={-}
          }
   \lstdefinelanguage{HTML5}{
            language=html,
            sensitive=true,
            alsoletter={<>=-},
            otherkeywords={
            % HTML tags
            <, </, >,
            </a, <a, </a>,
            </abbr, <abbr, </abbr>,
            </address, <address, </address>,
            </area, <area, </area>,
            </area, <area, </area>,
            </article, <article, </article>,
            </aside, <aside, </aside>,
            </audio, <audio, </audio>,
            </audio, <audio, </audio>,
            </b, <b, </b>,
            </base, <base, </base>,
            </bdi, <bdi, </bdi>,
            </bdo, <bdo, </bdo>,
            </blockquote, <blockquote, </blockquote>,
            </body, <body, </body>,
            </br, <br, </br>,
            </button, <button, </button>,
            </canvas, <canvas, </canvas>,
            </caption, <caption, </caption>,
            </cite, <cite, </cite>,
            </code, <code, </code>,
            </col, <col, </col>,
            </colgroup, <colgroup, </colgroup>,
            </data, <data, </data>,
            </datalist, <datalist, </datalist>,
            </dd, <dd, </dd>,
            </del, <del, </del>,
            </details, <details, </details>,
            </dfn, <dfn, </dfn>,
            </div, <div, </div>,
            </dl, <dl, </dl>,
            </dt, <dt, </dt>,
            </em, <em, </em>,
            </embed, <embed, </embed>,
            </fieldset, <fieldset, </fieldset>,
            </figcaption, <figcaption, </figcaption>,
            </figure, <figure, </figure>,
            </footer, <footer, </footer>,
            </form, <form, </form>,
            </h1, <h1, </h1>,
            </h2, <h2, </h2>,
            </h3, <h3, </h3>,
            </h4, <h4, </h4>,
            </h5, <h5, </h5>,
            </h6, <h6, </h6>,
            </head, <head, </head>,
            </header, <header, </header>,
            </hr, <hr, </hr>,
            </html, <html, </html>,
            </i, <i, </i>,
            </iframe, <iframe, </iframe>,
            </img, <img, </img>,
            </input, <input, </input>,
            </ins, <ins, </ins>,
            </kbd, <kbd, </kbd>,
            </keygen, <keygen, </keygen>,
            </label, <label, </label>,
            </legend, <legend, </legend>,
            </li, <li, </li>,
            </link, <link, </link>,
            </main, <main, </main>,
            </map, <map, </map>,
            /mark, <mark, </mark>,
            </math, <math, </math>,
            </menu, <menu, </menu>,
            </menuitem, <menuitem, </menuitem>,
            </meta, <meta, </meta>,
            </meter, <meter, </meter>,
            </nav, <nav, </nav>,
            </noscript, <noscript, </noscript>,
            </object, <object, </object>,
            </ol, <ol, </ol>,
            </optgroup, <optgroup, </optgroup>,
            </option, <option, </option>,
            </output, <output, </output>,
            </p, <p, </p>,
            </param, <param, </param>,
            </pre, <pre, </pre>,
            </progress, <progress, </progress>,
            </q, <q, </q>,
            </rp, <rp, </rp>,
            </rt, <rt, </rt>,
            </ruby, <ruby, </ruby>,
            </s, <s, </s>,
            </samp, <samp, </samp>,
            </script, <script, </script>,
            </section, <section, </section>,
            </select, <select, </select>,
            </small, <small, </small>,
            </source, <source, </source>,
            </span, <span, </span>,
            </strong, <strong, </strong>,
            </style, <style, </style>,
            </summary, <summary, </summary>,
            </sup, <sup, </sup>,
            </svg, <svg, </svg>,
            </table, <table, </table>,
            </tbody, <tbody, </tbody>,
            </td, <td, </td>,
            </template, <template, </template>,
            </textarea, <textarea, </textarea>,
            </tfoot, <tfoot, </tfoot>,
            </th, <th, </th>,
            </thead, <thead, </thead>,
            </time, <time, </time>,
            </title, <title, </title>,
            </tr, <tr, </tr>,
            </track, <track, </track>,
            </u, <u, </u>,
            </ul, <ul, </ul>,
            </var, <var, </var>,
            </video, <video, </video>,
            </wbr, <wbr, </wbr>,
            />, <!
            },
            ndkeywords={
            % General
            =,
            % HTML attributes
            accept=, accept-charset=, accesskey=, action=, align=, alt=, async=,
            autocomplete=, autofocus=, autoplay=, autosave=, bgcolor=, border=,
            buffered=, challenge=, charset=, checked=, cite=, class=, code=,
            codebase=, color=, cols=, colspan=, content=, contenteditable=,
            contextmenu=, controls=, coords=, data=, datetime=, default=, defer=,
            dir=, dirname=, disabled=, download=, draggable=, dropzone=, enctype=,
            for=, form=, formaction=, headers=, height=, hidden=, high=, href=,
            hreflang=, http-equiv=, icon=, id=, ismap=, itemprop=, keytype=,
            kind=, label=, lang=, language=, list=, loop=, low=, manifest=, max=,
            maxlength=, media=, method=, min=, multiple=, name=, novalidate=,
            open=, optimum=, pattern=, ping=, placeholder=, poster=, preload=,
            pubdate=, radiogroup=, readonly=, rel=, required=, reversed=, rows=,
            rowspan=, sandbox=, scope=, scoped=, seamless=, selected=, shape=,
            size=, sizes=, span=, spellcheck=, src=, srcdoc=, srclang=, start=,
            step=, style=, summary=, tabindex=, target=, title=, type=, usemap=,
            value=, width=, wrap=,
            % CSS properties
            accelerator:,azimuth:,background:,background-attachment:,
            background-color:,background-image:,background-position:,
            background-position-x:,background-position-y:,background-repeat:,
            behavior:,border:,border-bottom:,border-bottom-color:,
            border-bottom-style:,border-bottom-width:,border-collapse:,
            border-color:,border-left:,border-left-color:,border-left-style:,
            border-left-width:,border-right:,border-right-color:,
            border-right-style:,border-right-width:,border-spacing:,
            border-style:,border-top:,border-top-color:,border-top-style:,
            border-top-width:,border-width:,bottom:,caption-side:,clear:,
            clip:,color:,content:,counter-increment:,counter-reset:,cue:,
            cue-after:,cue-before:,cursor:,direction:,display:,elevation:,
            empty-cells:,filter:,float:,font:,font-family:,font-size:,
            font-size-adjust:,font-stretch:,font-style:,font-variant:,
            font-weight:,height:,ime-mode:,include-source:,
            layer-background-color:,layer-background-image:,layout-flow:,
            layout-grid:,layout-grid-char:,layout-grid-char-spacing:,
            layout-grid-line:,layout-grid-mode:,layout-grid-type:,left:,
            letter-spacing:,line-break:,line-height:,list-style:,
            list-style-image:,list-style-position:,list-style-type:,margin:,
            margin-bottom:,margin-left:,margin-right:,margin-top:,
            marker-offset:,marks:,max-height:,max-width:,min-height:,
            min-width:,transition-duration:,transition-property:,
            transition-timing-function:,transform:,
            -moz-transform:,-moz-binding:,-moz-border-radius:,
            -moz-border-radius-topleft:,-moz-border-radius-topright:,
            -moz-border-radius-bottomright:,-moz-border-radius-bottomleft:,
            -moz-border-top-colors:,-moz-border-right-colors:,
            -moz-border-bottom-colors:,-moz-border-left-colors:,-moz-opacity:,
            -moz-outline:,-moz-outline-color:,-moz-outline-style:,
            -moz-outline-width:,-moz-user-focus:,-moz-user-input:,
            -moz-user-modify:,-moz-user-select:,orphans:,outline:,
            outline-color:,outline-style:,outline-width:,overflow:,
            overflow-X:,overflow-Y:,padding:,padding-bottom:,padding-left:,
            padding-right:,padding-top:,page:,page-break-after:,
            page-break-before:,page-break-inside:,pause:,pause-after:,
            pause-before:,pitch:,pitch-range:,play-during:,position:,quotes:,
            -replace:,richness:,right:,ruby-align:,ruby-overhang:,
            ruby-position:,-set-link-source:,size:,speak:,speak-header:,
            speak-numeral:,speak-punctuation:,speech-rate:,stress:,
            scrollbar-arrow-color:,scrollbar-base-color:,
            scrollbar-dark-shadow-color:,scrollbar-face-color:,
            scrollbar-highlight-color:,scrollbar-shadow-color:,
            scrollbar-3d-light-color:,scrollbar-track-color:,table-layout:,
            text-align:,text-align-last:,text-decoration:,text-indent:,
            text-justify:,text-overflow:,text-shadow:,text-transform:,
            text-autospace:,text-kashida-space:,text-underline-position:,top:,
            unicode-bidi:,-use-link-source:,vertical-align:,visibility:,
            voice-family:,volume:,white-space:,widows:,width:,word-break:,
            word-spacing:,word-wrap:,writing-mode:,z-index:,zoom:
            },
            morecomment=[s]{<!--}{-->},
            tag=[s]
    }
\lstset{%
        % Basic design
        backgroundcolor=\color{editorGray},
        basicstyle={\small\ttfamily},
        frame=leftline,
        % Line numbers
        %xleftmargin={0pt}, % dysfonctionnent
        numbers=left,
        stepnumber=1,
        firstnumber=1,
        numberfirstline=true,
        % Code design
        keywordstyle=\color{blue}\bfseries,
        commentstyle=\color{darkgray}\ttfamily,
        ndkeywordstyle=\color{editorGreen}\bfseries,
        stringstyle=\color{editorOcher},
        % Code
        %language=HTML5,
        alsodigit={.:;},
        tabsize=2,
        showtabs=false,
        showspaces=false,
        showstringspaces=false,
        extendedchars=true,
        breaklines=true,
%    }
%
%\lstloadlanguages{Python}
%\lstset{language=Python,escapechar=|}
%\lstset{
literate=
	{á}{{\'a}}1 {é}{{\'e}}1 {í}{{\'i}}1 {ó}{{\'o}}1 {ú}{{\'u}}1
	{Á}{{\'A}}1 {É}{{\'E}}1 {Í}{{\'I}}1 {Ó}{{\'O}}1 {Ú}{{\'U}}1
	{à}{{\`a}}1 {è}{{\`e}}1 {ì}{{\`i}}1 {ò}{{\`o}}1 {ù}{{\`u}}1
	{À}{{\`A}}1 {È}{{\'E}}1 {Ì}{{\`I}}1 {Ò}{{\`O}}1 {Ù}{{\`U}}1
	{ä}{{\"a}}1 {ë}{{\"e}}1 {ï}{{\"i}}1 {ö}{{\"o}}1 {ü}{{\"u}}1
	{Ä}{{\"A}}1 {Ë}{{\"E}}1 {Ï}{{\"I}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1
	{â}{{\^a}}1 {ê}{{\^e}}1 {î}{{\^i}}1 {ô}{{\^o}}1 {û}{{\^u}}1
	{Â}{{\^A}}1 {Ê}{{\^E}}1 {Î}{{\^I}}1 {Ô}{{\^O}}1 {Û}{{\^U}}1
	{œ}{{\oe}}1 {Œ}{{\OE}}1 {æ}{{\ae}}1 {Æ}{{\AE}}1 {ß}{{\ss}}1
	{ű}{{\H{u}}}1 {Ű}{{\H{U}}}1 {ő}{{\H{o}}}1 {Ő}{{\H{O}}}1
	{ç}{{\c c}}1 {Ç}{{\c C}}1 {ø}{{\o}}1 {å}{{\r a}}1 {Å}{{\r A}}1
	{€}{{\EUR}}1 {£}{{\pounds}}1 {°}{{~\textdegree}}1,
	escapeinside={(*@}{@*)},
	backgroundcolor=\color{lightgray!20!white}
}

% Unités et graphes
\usepackage{siunitx}
\usepackage[siunitx]{gnuplottex} % pour permettre l'utilisation de gnuplot avec siunitx

% Subfig
%\usepackage{subfig}			% Pour faire des sous-figures
% Subfigures (attention, subfig est incompatible avec subcaption,
% mais subcaption est bien supporté par hyperref
\usepackage{subcaption}

% Couleurs
\usepackage{color}		% Couleurs
\usepackage{xcolor}
   \definecolor{editorGray}{rgb}{0.95, 0.95, 0.95}
   \definecolor{editorOcher}{rgb}{1, 0.5, 0} % #FF7F00 -> rgb(239, 169, 0)
   \definecolor{editorGreen}{rgb}{0, 0.5, 0} % #007C00 -> rgb(0, 124, 0)

% Environnements particuliers
%\usepackage[hyphens]{url}		% Urls
\usepackage[hyphens]{url}		% Urls
\usepackage{moreverb}		% Texte non interprété. Plus complet que verbatim
\usepackage{acronym}		% Acronymes
\usepackage{amsmath}	% pour divers modules de maths
\usepackage{textcomp}
\usepackage{multicol}

% Notes de fin de document
\usepackage{enotez}
\setenotez{
  reset = true,
  backref = true,
  totoc = chapter,
  split = chapter,
  list-style = itemize
}
% Notes de bas de page
\renewcommand{\thefootnote}{\alph{footnote}} % pour mettre les notes de bas de page en alphabétique

%\renewcommand{\enoteheading}{% Redéfinit les entêtes de notes
%  \chapter{\notesname}% Redéfinit le titre des notes comme chapitre
  %\newcommand{\titreheaderendnotes}{\MakeUp­per­case{\notesname}}
  %\markboth{NOTES FINALES}{NOTES FINALES}%
%  }
  
\usepackage{tocbibind}	% Table des matières, liste des figures, liste des tableaux
						% dans la table des matières.

% Divers
\usepackage{ifthen}		% Tests
\usepackage{ifdraft}	% Tests sur la présence de draft dans le documentclass
\usepackage{calc}		% Calculs avec latex
%\usepackage{eurosym}		% Symbole euro
\usepackage{comment}		% Commentaires sur plusieurs lignes
\usepackage{shapepar}		% Justification du texte selon une forme
\usepackage{lipsum}
\usepackage{makeidx}		% pour permettre de construire un index
\makeindex

% Reste à faire
\usepackage[obeyDraft]{todonotes}

%--------------Gestion des langues------------------------------------------------------

\newcommand{\choixdelalangue}{
\ifthenelse{\equal{\lalangue}{francais}}{
    \selectlanguage{french}	% Gestion de la typographie française
    }{
      \ifthenelse{\equal{\lalangue}{english}}{
        \selectlanguage{english}	% Gestion de la typographie anglaise
      }{
        \ifthenelse{\equal{\lalangue}{deutch}}{
          \selectlanguage{german}	% Gestion de la typographie allemande
        }{}
      }
    }
}

% Traduction pour le package enotez en fonction de la langue
% Pas besoin d'if car la traduction se fait en fonction de la
% langue choisie pour babel
\DeclareTranslation{French}{enotez-title}{Remarques}
\DeclareTranslation{French}{enotez-splitted-title}{Remarques au <name> <ref>}
\DeclareTranslation{French}{enotez-section}{section}
\DeclareTranslation{French}{enotez-chapter}{chapitre}

\DeclareTranslation{English}{enotez-title}{Notes}
\DeclareTranslation{English}{enotez-splitted-title}{Notes for <name> <ref>}
\DeclareTranslation{English}{enotez-section}{section}
\DeclareTranslation{English}{enotez-chapter}{chapter}

\DeclareTranslation{German}{enotez-title}{Anmerkungen}
\DeclareTranslation{German}{enotez-splitted-title}{Anmerkungen zu <name> <ref>}
\DeclareTranslation{German}{enotez-section}{Abschnitt}
\DeclareTranslation{German}{enotez-chapter}{Kapitel}

%--------------Définition des fontes-----------------------------------------------------------------------------------------------
% Choisissez la fonte que vous désirez : \usefont{encoding}{family}{series}{shape}
\newcommand{\courrier}{\fontfamily{pcr}\selectfont}
\newcommand{\helv}{\fontfamily{phv}\selectfont}
\newcommand{\helvbold}{\fontfamily{phv}\fontseries{b}\selectfont}
%\newcommand{\helv}{\fontfamily{phv}\fontseries{b}\fontsize{9}{11}\selectfont}
%\newcommand{\helv}{\fontfamily{phv}}\selectfont}
\newcommand{\palatino}{\fontfamily{ppl}\selectfont}
\newcommand{\cmdunhill}{\usefont{OT1}{cmdh}{m}{n}} % computer modern dunhill

%-------------En raison d'erreurs dues à la présence de déclarations de fontes
%-------------obsolètes telles que \rm, remplacée par \rmfamily et qui apparaissent
%-------------au passage de la classe book à scrbook.
\renewcommand{\rm}{\rmfamily}
\renewcommand{\sf}{\sffamily}
\renewcommand{\tt}{\ttfamily}
\renewcommand{\bf}{\bfseries}
\renewcommand{\sc}{\scshape}

%----------------Les éléments de la page de titre------------------------------------------------------------------------------
% Placement de la page de titre.
% - si on compile en postscript, la page de titre est pagetitre.tex dans les pages spéciales.
% - si on compile en latex2pdf et si une page de titre spéciale nommée page_titre.pdf
%   n'existe pas, la page de titre est pagetitre.tex.
% - si on compile en latex2pdf et si une page de titre spéciale nommée page_titre.pdf
%   existe, alors on l'inclut à la place de la page de titre normale.
\newcommand{\pagetitre}{
	\ifthenelse{\boolean{pdf}}{
		\IfFileExists{./pagesspeciales/page_titre.pdf}{
			\includepdf{pagesspeciales/page_titre.pdf}
		}{
			\ifthenelse{\equal{\typedepagetitre}{defautpagetitre}}{\include{pagesspeciales/pagetitre}}{}
		\ifthenelse{\equal{\typedepagetitre}{imagepagetitre}}{\include{pagesspeciales/pagetitreimage}}{}
		}
	}{
		\ifthenelse{\equal{\typedepagetitre}{defautpagetitre}}{\include{pagesspeciales/pagetitre}}{}
		\ifthenelse{\equal{\typedepagetitre}{imagepagetitre}}{\include{pagesspeciales/pagetitreimage}}{}
	}
}
% La date du travail
\newcommand{\workdate}{\workdatemonth~\workdateyear}

% Titre du travail
\newcommand{\theworktitle}{
    \begin{Huge}
        {\sf \worktitle \\}
    \end{Huge}
    \vspace{0.2cm}%
    \ifthenelse{\equal{\worksubtitle}{}}{}{\begin{Large} {\sf \worksubtitle} \end{Large}}%
}

% Pied de page
\newcommand{\titlepagefooter}{
\ifthenelse{\equal{\loption}{Atelier interdisciplinaire} \or \equal{\loption}{Interdisciplinary workshop} \or \equal{\loption}{Interdisziplinärer Arbeitsgruppe}}{\newcommand{\oc}{\loption}}{\newcommand{\oc}{\loption{} \textsc{\domaine}}}
\begin{tabular}{lcr} \hline
 \ifthenelse{\isundefined{\leslogos}}{
  \multirow{5}{*}{\includegraphics[height=1cm]{logo1}} &  & \multirow{5}{*}{\includegraphics[height=1cm]{logo2}} \\
  }{\\}
  & \oc &  \\
  & \ifthenelse{\isundefined{\ecole}}
  	{\ifthenelse{\equal{\lalangue}{english}}
  		{\newcommand{\ecole}{Blaise-Cendrars high school}\ecole}
  		{\ifthenelse{\equal{\lalangue}{deutch}}
  			{\newcommand{\ecole}{Gymnasium Blaise Cendrars}\ecole}
  			{\newcommand{\ecole}{Lycée Blaise-Cendrars}\ecole}
  		}
  	}{\ecole} &  \\
  & \ifthenelse{\isundefined{\adressedelecole}}
  	{\ifthenelse{\equal{\lalangue}{english}}
  		{\newcommand{\adressedelecole}{La Chaux-de-Fonds (Switzerland)}%
  		\adressedelecole}
  		{\ifthenelse{\equal{\lalangue}{deutch}}
  			{\newcommand{\adressedelecole}{La Chaux-de-Fonds (Schweiz)}%
  			\adressedelecole}
  			{\newcommand{\adressedelecole}{La Chaux-de-Fonds (Suisse)}%
  			\adressedelecole}
  		}
  	}{\adressedelecole} &  \\
  & & \\
\end{tabular}
}

%-------------------Les différentes pages---------------------------------------------------------
% Définit le style des entête et pieds de page.
\fancypagestyle{videavecpage}{%
    \fancyhead{}
    \renewcommand{\headrulewidth}{0pt}
}

\fancypagestyle{videsanspage}{%
    \fancyhead{}
    \fancyfoot{}
    \renewcommand{\headrulewidth}{0pt}
}

\fancypagestyle{laposteface}{%
	\fancyhf{}
	\renewcommand{\chaptermark}[1]{\markboth{\uppercase{##1}}{}}
    \fancyhead[RE,LO,LE,RO]{\leftmark}
    \renewcommand{\headrulewidth}{0pt}
}

\pagestyle{fancy}
% Retire le filet sous l'entête
\renewcommand{\headrulewidth}{0pt}

% Profondeur de la table des matières
\setcounter{tocdepth}{5}

% Page de pensée ou de citations
\newcommand{\pensee}{
  \ifthenelse{\isundefined{\unepensee}}{\include{pagesspeciales/citations}}
}

% Page de préambule/dédicace/remerciements
\newcommand{\dedicace}{
  \ifthenelse{\isundefined{\unededicace}}{\include{pagesspeciales/remerciements}}
}

% Page de résumé
\newcommand{\resume}{
  \ifthenelse{\isundefined{\unresume}}{\include{pagesspeciales/resume}}
}

% Liste des figures
\newcommand{\listefig}{
  \ifthenelse{\isundefined{\unelistefig}}{
  	\ifthenelse{\isundefined{\titrelistedesfigures}}{
  	  \ifthenelse{\equal{\lalangue}{francais}}{
  	    \renewcommand{\listfigurename}{Liste des figures}}{}
  	    }{
  		\renewcommand{\listfigurename}{\titrelistedesfigures}
  		}
  \cleardoublepage
  \listoffigures    % liste des figures   (fichier .lof) 
  }
}

% Commande de crédit photographique
\newcommand{\listcreditsname}{\textnormal{Crédits photographiques}}
\newlistof{credits}{exp}{\listcreditsname}
\newcommand{\credit}[1]{%
		\refstepcounter{credits}
		\addcontentsline{exp}{credits}
		{\protect\numberline{\thefigure } #1}\par}

% Liste des tables
\newcommand{\listetbl}{
  \ifthenelse{\isundefined{\unelistetbl}}{
    \ifthenelse{\isundefined{\titrelistedestables}}{
  		}
  		{\renewcommand{\listtablename}{\titrelistedestables}}
    \cleardoublepage
    \listoftables    % liste des tables    (fichier .lot)
    }
}

% Liste des crédits photographiques
% En raison d'une limitation du nombre de listes par LaTeX qui donnait l'erreur
% "no room for a \string", les crédits photographiques ont été déplacé dans les
% notes de fin. À l'appel d'une commande de figure, une note de fin de document
% est créée contenant le paramètre #5 de la fonction \credit. Une commande \url
% peut y être placée et hyperref en tiendra compte.

% Liste des listings
\newcommand{\listelst}{
  \ifthenelse{\isundefined{\unelistelst}}{
    \ifthenelse{\isundefined{\titrelistedescodes}}{
  	   \ifthenelse{\equal{\lalangue}{english}}{
  	     \renewcommand{\lstlistlistingname}{Listings}}
  	     {\ifthenelse{\equal{\lalangue}{deutch}}{
			\renewcommand{\lstlistlistingname}{Liste der Quellcodes}}
			{\renewcommand{\lstlistlistingname}{Liste des codes sources}} 	     
  	   }
  	}{\renewcommand{\lstlistlistingname}{\titrelistedescodes}}
    \cleardoublepage
    \lstlistoflistings    % liste des listings    (fichier .lol)
    \addcontentsline{toc}{chapter}{\lstlistlistingname}
  }
}

% Liste des acronymes
\newcommand{\acronyme}{
  \ifthenelse{\isundefined{\unacronyme}}{\include{pagesspeciales/acronymes}}{}
}

% Page de licence
\newcommand{\licence}{
  \ifthenelse{\isundefined{\unelicence}}{\include{pagesspeciales/licence}}{}
}

% Page de site officiel
\newcommand{\site}{
  \ifthenelse{\isundefined{\unsite}}{\include{pagesspeciales/website}}{}
}

% Page de cdrom officiel
\newcommand{\cdrom}{
  \ifthenelse{\isundefined{\uncdrom}}{\include{pagesspeciales/cdrom}}{}
}

% ``<name> <ref>'' is a placeholder for e.g. ``section 1'':




% Page de note de fin (probablement non fonctionnel avec enotez
% mais laissé au cas où endnotes serait le paquet choisi.
\newcommand{\notesdefin}{
  \ifthenelse{\isundefined{\lesnotesdefin}}{
  	\ifthenelse{\isundefined{\titrelistedesnotesdefin}}{
	  \ifthenelse{\equal{\lalangue}{english}}{
	    \renewcommand\notesname{Endnotes}
	    }{\ifthenelse{\equal{\lalangue}{deutch}}{
	    \renewcommand\notesname{Endnoten}
	    }{\renewcommand\notesname{Notes finales}}
	  }
	}{\renewcommand\notesname{\titrelistedesnotesdefin}}
    \theendnotes
    \cleartooddpage
  }
}

% Page d'index
\newcommand{\lindex}{
  \ifthenelse{\isundefined{\unindex}}{}{
	%\cleardoublepage
  	\printindex
  	%\addcontentsline{toc}{chapter}{\indexname}  
  }
}

% Pages d'annexes
\newcommand{\annexes}{
  \ifthenelse{\isundefined{\lesannexes}}{
  	\ifthenelse{\equal{\lalangue}{english}}
  		{\newcommand{\entetedannexe}{Appendix}}
  		{\ifthenelse{\equal{\lalangue}{deutch}}
  			{\newcommand{\entetedannexe}{Anhang}}
  			{\newcommand{\entetedannexe}{Annexe}}
  		}
  	\renewcommand\chaptername{\entetedannexe}
  	\touteslesannexes}
}

%------------------Les chapitres-------------------------------------------------------
\newcommand{\leschapitres}{
  \ifthenelse{\not{\equal{\nbchap}{}}}{
    \newcounter{comptechap}
    \def\StartValue{1}
    \def\MaxValue{\nbchap}

    \setcounter{comptechap}{\StartValue}
    \whiledo{\not{\value{comptechap}>\MaxValue}}{
      \include{chapitres/chapter\thecomptechap}
      \stepcounter{comptechap}
    }
  }{}
}

%------------------Les annexes-------------------------------------------------------
\newcommand{\touteslesannexes}{
  \ifthenelse{\not{\equal{\nbannexes}{}}}{
    \newcounter{compteannexes}
    \def\StartValue{1}
    \def\MaxValue{\nbannexes}

    \setcounter{compteannexes}{\StartValue}
    \whiledo{\not{\value{compteannexes}>\MaxValue}}{
      \include{chapitres/annexe\thecompteannexes}
      \stepcounter{compteannexes}
    }
  }{}
}

%------------------Environnements-----------------------------------------
% Redéfinition de l'environnement de citations
\newcounter{Citctr} \newsavebox{\Citname}
\newenvironment{Citation}[1]
  {%\ifthenelse{\equal{#1}{}}{\typein{A reference is missing !}}%
   \sbox\Citname{\emph{#1}}%
   \refstepcounter{Citctr}\begin{description}
   \item[Citation \arabic{Citctr}]}
  {\hspace*{\fill}\nolinebreak[1]%
   \quad\hspace*{\fill}%
   \finalhyphendemerits=0
   \usebox{\Citname}\end{description} 
   }

%------------------Commandes diverses------------------------------------------
% Redéfinition de la commande \url
%\renewcommand\url{\begingroup \small \urlstyle{sf}\Url}

% Commande pour les urls dans la bibliographie des sites web
% Par exemple \biburl{http://www.cvgg.org/}{1}{January}{2012}
%\newcommand{\lastVisited}[3]{
%\ifthenelse{\equal{\lalangue}{francais}}{
%  		(dernière consultation le #1 #2 #3)
%    }{
%    	\ifthenelse{\equal{\lalangue}{english}}{
%			(last consulted on #2 #1, #3)
%    	}{
%			\ifthenelse{\equal{\lalangue}{deutch}}{
%			(letzte Konsultation zu #1 #2 #3)
%    		}{} 	
%    	}
%    }
%}
%\newcommand{\biburl}[4]{{\apath{#1} \lastVisited{#2}{#3}{#4}}}

% Par exemple \biburlarticle{http://www.cvgg.org/article.html}{14}{juillet}{2012}
%\newcommand{\biburlarticle}[4]{[Obtenu le #2 #3 #4 de {\small\apath{#1}}]}

% Définition de la bibliographie web et de son titre
%\newcommand{\titredelabiblioweb}{
%  	\ifthenelse{\equal{\lalangue}{francais}}{
%  		\newcites{web}{Sites web}
%    }{
%    	\ifthenelse{\equal{\lalangue}{english}}{
%			\newcites{web}{Websites}
%    	}{
%			\ifthenelse{\equal{\lalangue}{deutch}}{
%			\newcites{web}{Webseiten}
%    		}{} 	
%    	}
%    }
%}

\newcommand{\online}{[online]}

% Impression d'un filigrane de version provisoire.
%  Prints your review date and 'Draft Version' (From Josullvn, CS, CMU)
%  Seems no to work properly on Linux. On Windows OK !
% Ai retiré la date, car les accents étaient mal traduits malgré babel.
% Mais la date provisoire est définie sur la page de titre.
\newcommand{\reviewtimetoday}[2]{\special{!userdict begin
/bop-hook{gsave 20 710 translate 45 rotate 0.8 setgray
/Times-Roman findfont 18 scalefont setfont 0 0   moveto () show
0 -12 moveto (#2) show grestore}def end}}

\newcommand{\draftoufinal}{
  \ifdraft{
    \ifthenelse{\equal{\lalangue}{english}}{
      \reviewtimetoday{\today}{* Draft Version *}
    }{
     \ifthenelse{\equal{\lalangue}{deutch}}{
        \reviewtimetoday{\today}{* Draft *}  
       }{
        \reviewtimetoday{\today}{* Version provisoire *}
       }
    }
  }
}

% Entête et pied de page
\renewcommand{\chaptermark}[1]{  % pour avoir Chapter 1. Introduction
\markboth{\chaptername\
\thechapter.\ #1}{}}

\renewcommand{\sectionmark}[1]{ % pour avoir 1.2. Strucutre du document
\markright{\thesection.\ #1}{}}

%\lhead[\fancyplain{} \rmfamily \thepage]{\fancyplain{} \itshape \rightmark}
%\lhead[\fancyplain{} \itshape \rightmark]{\fancyplain{} \itshape \rightmark}
%\chead{}
%\rhead[\fancyplain{} \itshape \leftmark]{\fancyplain{} \rmfamily \thepage}
%\rhead{}
\fancyhead[RO,LE]{\fancyplain{} \itshape \rightmark}
\fancyfoot[C]{\fancyplain{}  \rmfamily \thepage}
%\lfoot{}
%\cfoot{}
%\cfoot[\fancyplain{} \rmfamily \thepage]{\fancyplain{}  \rmfamily \thepage}
%\rfoot{}

% Pour les énumérations à l'intérieur d'un paragraphe, par exemple, "il y a trois possibilités :
% (i) blabla1 (ii) blabla2 (iii) blabla3"
\newenvironment{sinparaenum}%
{\begin{inparaenum}[\itshape(i)\upshape]}%
{\end{inparaenum}}

%-------------Les figures---------------------------------------------------
% Dimensions des figures insérées.
\newlength{\bigfigurewidth}
\setlength{\bigfigurewidth}{0.96\textwidth}

\newlength{\normalfigurewidth}
\setlength{\normalfigurewidth}{0.77\textwidth}

\newlength{\smallfigurewidth}
\setlength{\smallfigurewidth}{0.57\textwidth}

\newlength{\tinyfigurewidth}
\setlength{\tinyfigurewidth}{0.27\textwidth}

% La structure pour insérer les figures.
\newcommand{\tmfigure}[5]{
  \begin{figure} [t]
    \begin{center}
       \includegraphics[width=#2]{#1}
       \caption[#3]{\label{#4} #3 \endnote{\protect #5}}
       \credit{#5}
     \end{center}
  \end{figure}
}

% Quatre types de figures sont possibles : grande (B), normale (N), petite (S) et très petite (T).
\newcommand{\tmfigureB}[4]{\tmfigure{#1}{\bigfigurewidth}{#2}{#3}{#4}}
\newcommand{\tmfigureN}[4]{\tmfigure{#1}{\normalfigurewidth}{#2}{#3}{#4}}
\newcommand{\tmfigureS}[4]{\tmfigure{#1}{\smallfigurewidth}{#2}{#3}{#4}}
\newcommand{\tmfigureT}[4]{\tmfigure{#1}{\tinyfigurewidth}{#2}{#3}{#4}}

%----------------Les références-----------------------------------------------------------------
% Commande pour référencer les figures
% Je préfère sans le mot 'figure' automatiquement devant car on peut devoir le mettre au pluriel
\newcommand{\figref}[1]{\ref{#1}}

% Commande pour référencer les tables
\newcommand{\tableref}[1]{\ref{#1}}

% Commande pour référencer les codes
\newcommand{\listingref}[1]{\ref{#1}}

%----------------Le code en ligne-------------------------------------------------------------
% On peut utiliser cette commande pour le code en ligne
%\newcommand{\src}[1]{\begin{sf}\small{#1}\end{sf}}
\newcommand\src[1]{{\helv{\footnotesize{#1}}}}           % le code source est mis en Helvetica
% Une meilleures solution pourrait être :
% \newcommand{\src}[1]{\listinline!#1!}
% Finalement, il est plus simple de mettre directement : \lstinline|code|


\newcommand\footsrc[1]{{\helv{\scriptsize{#1}}}}  % le code source est mis en Helvetica - dans les notes de bas de page

% On peut utiliser cette commande pour les url, chemins, ...
\newcommand{\apath}[1]{\url{#1}}


\newcommand*{\indexsection}[1]{%
  \ifx\empty#1\empty\else
  \hspace{0pt plus 2fil}{{\sectfont #1}}\hspace{0pt plus
    1fil}\nopagebreak
  \fi
}

% Pour mettre le texte entre guillemets. Par exemple : \squote{de facto}
\newcommand{\squote}[1]{``#1''}


% Définition et configuration de l'environnement listings
\definecolor{listinggray}{gray}{0.9}
\definecolor{commentgreen}{rgb}{0,0.7,0} 

\lstset {
showstringspaces=false,
frame=none,
extendedchars=true,
basicstyle=\normalfont\helv\footnotesize,
numbers=left,
numberstyle=\tiny,
numbersep=5pt,
stepnumber=2,
language=Java,
breaklines,
tabsize=2,
backgroundcolor=\color{listinggray},
rulecolor=\color{blue},
linewidth=\linewidth,
keywordstyle=\bfseries\color{blue},
commentstyle=\color{commentgreen},
captionpos=b,
abovecaptionskip=\medskipamount,
belowcaptionskip=\medskipamount,
escapeinside={(*@}{@*)},
}

% Ce code permet de compiler avec latex ou pdflatex en changeant le suffix du nom
% de fichier des figures :
%.eps si latex est utilisé et .pdf, .jpg ou .png si pdflatex est utilisé

\ifthenelse{\boolean{pdf}}{
	\pdftrue % on compile en pdflatex
	\pdfcompresslevel=9     % niveau de compression pour le texte et les images ;
	\DeclareGraphicsExtensions{.pdf,.jpg,.png}
}{
	\pdffalse		
	\DeclareGraphicsExtensions{.eps}
}

% Ce code permet de ne pas activer hyperref si le choix de la fortie papier est
% fait dans la configuration (config.tex), d'activer hyperref pour pdflatex si
% les images sont .pdf, .jpg ou .png ou d'activer hyperref pour LaTeX-dvi si les
% images sont en eps.

\newcommand{\choixsortie}{
\ifthenelse{\not\isundefined{\laversionpdf}}{
	\ifthenelse{\boolean{pdf}}{
		\usepackage[pdftex]{hyperref}
		\hypersetup{
			breaklinks=true,
			plainpages=false,
			colorlinks=true,
			%pdfborder={0 0 0},
			linkcolor=blue,
			citecolor=blue,
			urlcolor=blue
		}
	}{
		%\usepackage{xcolor}
		% pagebackref ne doit pas être dans hypersetup
		\usepackage[dvips,ps2pdf]{hyperref}
		%\usepackage{hyperref}
		\hypersetup{
			breaklinks=true,
			plainpages=false,
			colorlinks=true,
			linkcolor=blue,
			citecolor=blue,
			urlcolor=blue,
			hypertexnames=true
		}
		%\usepackage{hypdvips}
		\usepackage[hyphenbreaks]{breakurl}
		%\urlstyle{sf}
	}
}{}
}

% Commandes de styles de bibliographie
\newcommand{\ressources}{
  	\ifthenelse{\equal{\lalangue}{english}}
  		{\newcommand{\lesressources}{Books}
  		 \newcommand{\lesressourcesenligne}{Online resources}}
  		{\ifthenelse{\equal{\lalangue}{deutch}}
  			{\newcommand{\lesressources}{Bücher}
  			 \newcommand{\lesressourcesenligne}{Online Ressourcen}}
  			{\newcommand{\lesressources}{Livres}
  			 \newcommand{\lesressourcesenligne}{Ressources en ligne}}
  		}
}

\newcommand{\choixstyledebiblio}{
	\bibliographystyle{\lestyledebiblio}	
}

% Définition des valeurs de pénalités pour éléminer les coupures de premières et dernières lignes de page.
\clubpenalty=9999
\widowpenalty=9999

\newcommand{\corrbug}{
% --------------------------------------------------------
% Correction d'un petit bug de listings qui mène sans cela à un : Undefined control sequence. \lstlistoflistings
\makeatletter
\@ifundefined{float@listhead}{}{%
    \renewcommand*{\lstlistoflistings}{%
        \begingroup
    	    \if@twocolumn
                \@restonecoltrue\onecolumn
            \else
                \@restonecolfalse
            \fi
            \float@listhead{\lstlistlistingname}%
            \setlength{\parskip}{\z@}%
            \setlength{\parindent}{\z@}%
            \setlength{\parfillskip}{\z@ \@plus 1fil}%
            \@starttoc{lol}%
            \if@restonecol\twocolumn\fi
        \endgroup
    }%
}
\makeatother
% --------------------------------------------------------
}