% Compilé avec makeDoc.pl -sujet=doc-tb tb
\documentclass{tb}

\usepackage{pgfbaseimage}

\title[Documentation de la classe \texttt{tb}]{Documentation de la classe \texttt{tb}\footnote{valable pour la \tbClasseVersionDate}}

\author{Fabien Dagnat\footnote{\mailtb{fabien.dagnat}}}

\subtitle{}
\type{}
\matiere{}
\numero{}
\code{}
\withAuthors
\withDate

\begin{document}

\maketitle

Cette classe a été écrite pour uniformiser et faciliter la production
de documents pédagogiques. Elle permet de produire différentes formes
de documents : des cours (transparents), des sujets de travaux
pratiques, des fiches programmes, \ldots

\section{Modes et variables}

Son principe de fonctionnement repose sur deux notions :
\begin{enumerate}
\item les modes,
\item les variables.
\end{enumerate}

\subsection{Modes}

Un \emph{mode} est une option de la classe. La définition d'un mode
(macro \verb+\tb@DEFINE@MODE+) \texttt{toto} provoque la définition
d'un booléen \verb+tb@mode@toto+ initialement positionné à faux. La
liste des modes possibles est mémorisée (macro
\verb+\tb@MODE@LIST+) et chaque mode définit une option pour la
classe. Si cette option est présente, le booléen devient vrai.  Pour
chaque mode, un environnement de même nom est défini, si le mode est
actif son contenu est traité sinon il n'est pas exécuté.

Plusieurs utilisations des modes sont faites dans la classe :
\begin{itemize}
\item Choix du type du document
\item Définition des parties du document à inclure
\item Positionnement par défaut de valeurs (les variables)
\end{itemize}

La liste des modes définis par défaut est :
\begin{itemize}
\item \texttt{correction} : permet de définir deux sous document à l'intérieur
  du document, un pour le sujet, un pour la correction (voir section
  \ref{sec:correction}).
\item \texttt{mastere}, \texttt{majeure}, \texttt{mineure},
  \texttt{fip}, \texttt{master}, \texttt{fc}, \texttt{option} :
  définissent les différentes formations à l'école en positionnant la
  valeur de certaines variables (voir figure \ref{fig:formations}).
\item \texttt{cours}, \texttt{devoir}, \texttt{ficheprog} : les grands
  types de documents (voir section \ref{sec:typesdocs}).
\item \texttt{gl}, \texttt{po}, \texttt{conc}, \texttt{base},
  \texttt{avance} : définissent des matières au sein des formations.
\end{itemize}

\subsection{Variables}

Une variable \texttt{titi} est une valeur à laquelle sont associées
des macros :
\begin{itemize}
\item \verb+\tb@var@titi+ : la valeur (initialement \guillemotleft{} titi to
  define \guillemotright),
\item \verb+\titi+ : une macro prenant un argument permettant de
  mettre à jour la valeur (macro précédente),
\item \verb+\debugtiti+ : qui permet d'afficher le contenu actuel de
  la variable.
\end{itemize}
Les variables sont définies par la macro \verb+\tb@DEFINE+ et
mémorisée dans une liste qui est stockée dans la macro
\verb+\tb@VAR@LIST+. La commande \verb+\debug+ permet d'appeler la
macro d'affichage (\verb+\debugNOM+) sur toutes les variables.

La liste des variables définies par défaut est :
\begin{itemize}
\item \texttt{type} : le nom de la formation,
\item \texttt{matiere} : le nom de la matière,
\item \texttt{code} : le code du module (par exemple INF302)
\item \texttt{numero} : le numéro du document (par exemple TP3)
\item \texttt{titre} : le titre du document
\item \texttt{titrecourt} : une version courte du titre (pour les entêtes)
\item \texttt{soustitre} : le sous titre
\item \texttt{soustitrecourt} : une version courte du sous titre (pour les entêtes)
\item \texttt{version} : la version du document
\end{itemize}

Chaque document, selon ses options, positionne par défaut la valeur
de certaines de ces variables. Tout d'abord, le \texttt{numero} doit
toujours être fournis excepté pour les sujets de devoir
(\texttt{devoir}) et les fiches programmes
(\texttt{ficheprog}) pour lesquels la variable vaut respectivement
\emph{Examen} et \emph{Fiche Programme}. Les autres valeurs par défaut
sont décrites dans la figure \ref{fig:formations}.

\begin{figure}
  \centering
  \small
  \label{fig:formations}
  \begin{tabular}{|l|l|l|l|}\hline%l|}\hline
    option(s) & \texttt{type}              & \texttt{matiere}               & \texttt{code} \\\hline% & \texttt{numero} \\\hline
%    devoir & & & & Examen \\\hline
%    ficheprog & & & & Fiche Programme \\\hline
    mastere   & Mastère           & Base en Mod. et Prog. & ISIC302  \\\hline
    master    & MR2A Informatique & Module MMPFPSD        & \{\}      \\\hline
    option & 3\ieme{} année, Filière SLR & Bloc IDL & \{\}  \\\hline
    fc & Formation Continue & & \{\}   \\\hline
    fc \& base & Formation Continue & Introduction à Java & \{\}  \\\hline
    fc \& avance & Formation Continue & Java Avancé & \{\}   \\\hline
    fip & FIP & Programmation Objet & INF103 \\\hline
    majeure & Majeure Informatique & & \\\hline
    majeure \& conc & Majeure Informatique & Concurrence et Distribution & INF411 \\\hline
    majeure \& po & Majeure Informatique & Programmation Objet & INF303 \\\hline
    majeure \& gl & Majeure Informatique & Génie Logiciel & INF302 \\\hline
    majeure \& po \& gl & Majeure Informatique & Génie Logiciel \& Programmation Objet & INF302/303 \\\hline
    mineure & Mineure Informatique & & \\\hline
    mineure \& po & Mineure Informatique & Programmation Objet & INF203 \\\hline
    mineure \& gl & Mineure Informatique & Génie Logiciel & INF202 \\\hline
    mineure \& po \& gl & Mineure Informatique & Génie Logiciel \& Programmation Objet & INF202/203 \\\hline
  \end{tabular}
  \caption{Le positionnement par défaut des variables selon les options.}
\end{figure}

Le positionnement spécifique de ces variables se fait évidemment à
travers la macro qui porte leur nom. Pour la gestion des titre et sous
titre, les macros usuelles (\texttt{title} et \texttt{subtitle}) de
\LaTeX sont redéfinies pour travailler avec les variables
correspondantes.  Elles prendront en paramètre optionnel la version
courte du titre : \verb+\titre[+un titre court\verb+]{+un titre
  long\verb+}+. Si le premier argument est absent la valeur du
titre court est égale à celle du titre long.

\subsection{Booléens}
\label{sec:booleen}
En plus des modes, les booléens suivant sont définis\footnote{Ils
  doivent être uniquement modifiés en entête du document.} :
\begin{itemize}
\item \verb+tb@boolean@inCorrection+ : variable interne pour
  contrôler la forme d'affichage des corrections (\textbf{ne pas y
    toucher !})
\item \verb+tb@boolean@handout+ : indique si le document est
  destiné à l'impression (se positionne par l'option \texttt{handout})
\item \verb+tb@boolean@withAuthors+ : contrôle l'apparition des
  auteurs sur la page de titre ; par défaut à vrai pour les cours, les
  fiches programmes et les documents pour le master (se manipule par
  les macros \verb+\withAuthors+ et \verb+\withoutAuthors+)
\item \verb+tb@boolean@withDate+ : contrôle l'apparition de la date
  sur la page de titre ; par défaut à vrai uniquement pour les devoirs
  (se manipule par les macros \verb+\withDate+ et \verb+\withoutDate+)
\item \verb+tb@boolean@withCorrection+ : permet de forcer
  l'apparition ou la disparition de correction\footnote{La différence
    par rapport à l'option correction est que cela permet d'avoir le
    contenu des environnements sujet et correction.} (se manipule par
  les macros \verb+\withCorrection+ et \verb+\withoutCorrection+)
\item \verb+tb@boolean@withSection+ : dans les cours, ajoute au
  début de chaque section un transparent d'avancement contenant la
  liste des sections avec la section courante mise en valeur (se
  manipule par les macros \verb+\withSection+ et
  \verb+\withoutSection+)
\item \verb+tb@boolean@withIdentity+ : permet d'ajouter un
  cartouche d'identification demandant les noms et prénoms ; par
  défaut à vrai pour les devoirs sauf ceux de master (se manipule par
  les macros \verb+\withIdentity+ et \verb+\withoutIdentity+)
\end{itemize}

\section{Types de documents}
\label{sec:typesdocs}

La classe permet de créer des documents de deux types :
\begin{itemize}
\item des transparents (en utilisant la classe \texttt{beamer}) si
  l'option cours est spécifiée,
\item des sujets (en utilisant la classe article) sinon.
\end{itemize}

Elle est conçue pour produire des documents en français ou en anglais.
Par défaut la langue est le français et une option \texttt{english}
permet de basculer en anglais. Pour avoir un document dans les deux
langues, il existe une option \texttt{francais} à utiliser en
complément de l'option \texttt{english}. La langue par défaut
correspond à l'option positionnée en deuxième. Dans le texte, il est
alors possible de changer de langue (voir la documentation de
\texttt{babel}).

Pour les langues, elle utilise les paquetages \texttt{babel} (option
\texttt{francais} et \texttt{english}), \texttt{inputenc} (option
\texttt{latin9}) et \texttt{fontenc} (option \texttt{T1}). De plus,
pour utiliser des fontes modernes permettant de produire des documents
postscripts aussi bien que des pdf, le document est composé avec les
fontes du paquetage \texttt{lmodern}.

Un document peut contenir une option \texttt{handout} qui spécifie que
le document est destiné à l'impression, le comportement est alors
spécifique à chaque type de document et sera décrit dans les sous
sections les concernant.

\subsection{Cours}

Ce type de documents repose sur la classe beamer, seules certaines
options de mises en page sont fixées. L'exemple de document minimal
ci-dessous produit le document présenté figure \ref{fig:cours}.

\lstinputlisting[language={},numbers=left,numbersep=5pt,numberstyle=\tiny]{exemples/cours.tex}

\begin{figure}
  \centering
  \pgfimage[page=1,width=8.5cm]{exemples/cours}
  \hfill
  \pgfimage[page=2,width=8.5cm]{exemples/cours}
  
  \pgfimage[page=3,width=8.5cm]{exemples/cours}
  \hfill
  \pgfimage[page=4,width=8.5cm]{exemples/cours}

  \pgfimage[page=5,width=8.5cm]{exemples/cours}
  \hfill
  \pgfimage[page=6,width=8.5cm]{exemples/cours}

  \caption{Un document de cours minimal}
  \label{fig:cours}
\end{figure}

\begin{remarque}
  Attention, par défaut, le texte en dehors des environnement
  \texttt{frame} est ignoré y compris la définition de macro !
\end{remarque}

Le document essaye de suivre la charte graphique de l'école (cette
partie a été développée à partir du travail de Christophe Lohr).

Il est conseiller de parcourir la documentation de \texttt{beamer}
pour connaître ses possibilités.

Dans la version imprimable, lorsque l'on utilise l'option
\texttt{handout}, liens du document ne sont pas ajoutés et le document
est généré en quatre transparents par page.

\subsection{Autres documents}

Par défaut, les options a4 et 12pt sont positionnées\footnote{Ce n'est
  pas encore (?) modifiable.}.  Des exemples de documents simples sont
donnés en annexe page \pageref{ann:typededocs}.

\subsubsection{Basique}

\paragraph{Les auteurs}
La macro usuelle \verb+\author+ peut être utilisée dans tous les
documents. L'apparition de son contenu dans les pages de titre est
contrôlée par l'état du booléen présenté en section \ref{sec:booleen}
: \verb+\tb@boolean@withAuthors+. Son affichage a lieu par défaut
uniquement pour les cours et les fiches programmes.

\paragraph{Entête et pied de pages}
Les documents ont des entêtes et des pieds de pages imposés par défaut :
  \begin{itemize}
  \item en haut à gauche : (code --) \textsc{matière},
  \item en haut à droite : (numéro) (-- \textbf{titre court}),
  \item en bas à gauche : TELECOM Bretagne (-- type),
  \item en bas au centre : \emph{le numéro de page},
  \item en bas à droite : la date
  \end{itemize}

\paragraph{La page de titre}
Pour les documents de type texte, la page de titre est produite à
partir de la macro usuelle de \LaTeX, \verb+\maketitle+. Son
utilisation provoque l'affichage de :

\vspace*{4mm}
\begin{minipage}{1.0\linewidth}
  \begin{center}
    \includegraphics[width=4cm]{logotb}
    \vspace*{1.0em}\par
    {\LARGE\bf ({\color{blue}\texttt{numero} -- }) 
      {\color{blue}\texttt{titre}}}
    \\[2mm]{\Large\bf({\color{blue}\texttt{sous-titre}})}%
    \\[2mm]{\large\bf (\texttt{date})}%
    \\[2mm]{\bf\sc(\texttt{auteurs})}%
    \\[2mm]{\Large\bf({\color{red}Correction})}%
  \end{center}%
\end{minipage}
\vspace*{2mm}

Les informations entre parenthèses n'apparaissent que si elles ne sont
pas vides. L'affichage des auteurs et de la date sont contrôlés par
les booléens présentés en section \ref{sec:booleen}. Enfin, correction
n'apparaît que si le document est en mode correction (voir section
\ref{sec:correction}).

Dans le mode \texttt{devoir} apparaît, en plus, un cartouche pour que
les élèves puissent s'identifier :

\vspace*{4mm}
\begin{minipage}{1.0\linewidth}
  \begin{center}
    \cartouche
  \end{center}
\end{minipage}

\subsubsection{Devoir}

Pour les devoirs, les choix suivants sont faits par défaut :
\begin{itemize}
\item le numéro vaut : Contrôle,
\item le titre vaut : type(, code) (le code n'apparaît que s'il n'est pas vide),
\item le sous titre vaut : matière,
\item la date est affichée,
\item le cartouche est affiché (sauf pour le master),
\item les entêtes et pieds de pages suivants sont modifiés :
  \begin{itemize}
  \item en haut à droite : le numéro,
  \item en bas au centre : \emph{le numéro de page} sur \emph{le nombre total de page},
  \end{itemize}
\end{itemize}

\subsubsection{Fiche Programme}

Pour les fiches programmes, le titre et le sous titre sont définis par
défaut.  Ils valent :
\begin{itemize}
\item le numéro vaut : Fiche Programme,
\item le titre vaut : type
\item le sous titre vaut : matière,
\item les auteurs sont affichés,
\item les entêtes et pieds de pages suivants sont modifiés :
  \begin{itemize}
  \item en haut à droite : le numéro,
  \end{itemize}
\end{itemize}

\section{La gestion de corrections}
\label{sec:correction}

Une option correction existe pour tout type de document. Cette option
permet gérer un document contenant deux types d'information : un sujet
(pour les élèves) et une correction (pour les enseignants et
éventuellement les élèves).

Dans le paquetage sont définis deux environnements : \texttt{sujet} et
\texttt{correction}. Par défaut (pas d'option correction), les
environnements \texttt{correction} sont ignorés et les sujets traités. 

Si l'option correction est choisie :
\begin{itemize}
\item Le mot Correction apparaît en rouge dans le titre,
\item Le contenu des environnements \texttt{sujet} sont ignorés,
\item Le contenu des environnements \texttt{correction} sont traités
  puis affiché dans un cadre rouge et avec un fond légèrement rougi.
\end{itemize}

Par exemple, le code suivant :

\lstinputlisting[language={},numbers=left,numbersep=5pt,numberstyle=\tiny]{exemples/texte.tex}

produit le document suivant :

\pgfimage[width=7cm]{exemples/texte}

et si on ajoute l'option correction :

\pgfimage[page=1,width=7cm]{exemples/texte-correction}
\hfill
\pgfimage[page=2,width=7cm]{exemples/texte-correction}


\section{Les autres fonctionnalités offertes}

\subsection{Inclusion de Java}

Les fonctionnalités liées à l'inclusion de code Java sont regroupées
au sein du fichier \texttt{java.sty}. Elles utilisent le paquetage
\texttt{listings} et prédéfissent des styles de formatage.

Les trois fonctions sont :
\begin{itemize}
\item la macro \verb+\java+ qui permet d'insérer dans du texte des
  termes en utilisant la typographie java,
\item l'environnement \texttt{Java} qui permet d'insérer un programme,
\item la macro \verb+inputJava+ qui permet d'insérer un fichier
  contenant du Java.
\end{itemize}

L'environnement \texttt{Java} et la macro \verb+\inputJava+ prennent
un argument optionnel qui peut contenir toutes les options du
paquetage \texttt{listings}. Il est ainsi, par exemple, possible de
modifier tous les choix de présentation. Parmi les options
interéssantes surtout pour l'inclusion de fichier figure
\texttt{firstline} et \texttt{lastline} qui permettent de n'inclure
qu'une partie du fichier\footnote{Attention, tous les changements de
  lignes dans le fichier risque de décaler le contenu inclu par la
  macro !}.

Par défaut :
\begin{itemize}
\item pour les cours, le code est toujours affiché en
  \emph{footnotesize} et est numéroté (sauf en FC),
\item pour les textes :
  \begin{itemize}
  \item le code est affiché en :
    \begin{itemize}
    \item normal, par l'environnement et dans les devoirs,
    \item sinon, en \emph{small} ;
    \end{itemize}
  \item pour l'inclusion (macro \verb+\inputJava+), un cadre et un
    fond sont ajoutés (sauf pour les devoirs et à l'intérieur des
    corrections (\emph{i.e.} dans l'environnement \texttt{correction}).
  \end{itemize}
\end{itemize}

\subsection{Diverses macros}

Les macros suivantes peuvent être utilisées :
\begin{itemize}
\item \verb+\centereddbend+ qui affiche \centereddbend.
\item \verb+\afaire{quelque chose}+ qui affiche \afaire{quelque chose}.
\item \verb+\bfvert{toto}+ qui affiche \bfvert{toto}.
\item \verb+\fluo{titi}+ qui affiche \fluo{titi}.
\item \verb+\moodle+ qui affiche l'adresse de l'espace moodle du
  cours, par défaut utilise le type de cours ; il y a trois cours
  définit pour mineure Glop (668), pour majeure Glop (23) et pour
  option F2B201 aka IDL (174)\footnote{Dans le cas d'une utilisation
    plus large de la classe, il conviendrait de la redéfinir plus
    précisément.}. Si un argument optionnel \texttt{uuu} est donné à
  la macro elle affiche l'adresse : \moodle[uuu]. Dans le fichier pdf
  (sans l'option \texttt{handout}), un lien vers la page est ajouté.
\item \verb+\mailtb{tutu}+ qui crée un lien vers le mél de
  tutu (adresse \texttt{mailto\string:}) et affiche :

  \mailtb{tutu}
\item \verb+\unSchema[1]{2}{3}{4}+ qui permet d'inclure une figure (2)
  en la centrant et lui appliquant les modificateurs (1) (la syntaxe
  est celle de \verb+\includegraphics+) ; (3) est la légende et (4) le
  label par lequel on pourra reférencer la figure.
\item \verb+\annexes+ qui permet de passer aux annexes et d'afficher
  une boite signalant que l'on passe aux annexes (voir page
  \pageref{ann:typededocs}).
\item Deux envirronements \texttt{remarque} et \texttt{remarques}:

  \begin{minipage}{0.45\linewidth}
\begin{verbatim}
\begin{remarque}
  Une seule remarque.
\end{remarque}
\end{verbatim}
  \end{minipage}
  \hfill
  \begin{minipage}{0.45\linewidth}
    \begin{remarque}
      Une seule remarque.
    \end{remarque}
  \end{minipage}

  \vspace*{3mm}
  \begin{minipage}{0.45\linewidth}
\begin{verbatim}
\begin{remarques}
\item Une première remarque.
\item \dots
\item Une dèrnière remarque.
\end{remarques}
\end{verbatim}
  \end{minipage}
  \hfill
  \begin{minipage}{0.45\linewidth}
    \begin{remarques}
    \item Une première remarque.
    \item \dots
    \item Une dèrnière remarque.
    \end{remarques}
  \end{minipage}
\end{itemize}

\subsection{Des paquetages annexes}

Un certains nombres de paquetages annexes sont fournis et ont (ou
bientôt auront) une documentation associée (ils sont alors marqué par
une *). Ils ne sont pas encore totalement indépendant de la classe
\texttt{tb} mais j'y travaille.

Ces paquetages sont :
\begin{itemize}
\item \texttt{automate} : des macros pour les automates (pour l'instant pas grand chose).
\item \texttt{beamerthemeTELECOMBretagne} : le thème beamer suivant la
  charte graphique de l'école, il se contente de charger les trois
  fichiers suivant :
  \begin{itemize}
  \item \texttt{beamercolorthemeTELECOMBretagne},
  \item \texttt{beamerinnerthemeTELECOMBretagne} et
  \item \texttt{beamerouterthemeTELECOMBretagne}.
  \end{itemize}
\item \texttt{boites-tb} : des boites utilisées pour les sujets
  d'examen et les correction.
\item \texttt{cours} : la partie cours (chargement du thème beamer entre autre)
\item \texttt{exercice}$^*$ : la gestion des exercices.
\item \texttt{fractal} : des macros pour faire des composants fractal
\item \texttt{java} : le paquetages Java a été présenté plus tôt dans ce document.
\item \texttt{object}$^*$ : macros tikz pour faire les dessins de gestion de la mémoire.
\item \texttt{ocaml} : inclusion de listings ocaml.
\item \texttt{posterGET} : poster au format GET.
\item \texttt{qcm} : quelques macros pour qcm.
\item \texttt{sauna} : des macros de sauna pour dessiner des
  composants (utilisée dans le cours de master).
\item \texttt{texte} : la partie document autre que cours.
\item \texttt{uml}$^*$ : des macros tikz pour les schémas UML.
\end{itemize}

\section{Compiler un document}

\subsection{Exigences}

Pour compiler les documents, il est fortement conseillé d'utiliser
\texttt{pdflatex}. La classe doit fonctionner avec latex+dvips+ps2pdf,
mais n'a pas été testée dans cet environnement depuis longtemps.  

Les paquetages latex suivants doivent etre installés sur la machines et
accessibles :
\begin{itemize}
\item standards (dans la Texlive\footnote{La tetex n'étant plus
    maintenue, votre serviteur utilise maintenant la
    texlive. L'opteron ne l'utilise pas encore mais cela ne saurait
    tarder\dots} et dispo sur l'opteron) : \emph{babel},
  \emph{inputenc}, \emph{fontenc}, \emph{lmodern}, \emph{textcomp},
  \emph{xcolor}, \emph{graphicx}, \emph{ifthen}, \emph{verbatim},
  \emph{fancyhdr}, \emph{trace}, \emph{beamer}, \emph{manfnt},
  \emph{calc}, \emph{lastpage}, \emph{newfile}, \emph{pgfpages},
  \emph{ifpdf}, \emph{hyperref}, \emph{amsthm}, \emph{geometry},
  \emph{listings}, \emph{amssymb}, \emph{xkeyval}
\item TB : \emph{cours}, \emph{texte}, \emph{boites-tb}, \emph{java}, \emph{exercice} ; il y a
  alors deux manières :
  \begin{itemize}
  \item copier le contenu du repertoire
    \texttt{svn.enstb.org/ens/utils/styles/trunk} dans votre
    arborescence latex locale (puis \texttt{texhash} bien sur\dots)
  \item modifier votre variable d'environnement \verb+TEXINPUTS+ pour
    y ajouter le repertoire contenant le paquetage
  \end{itemize}
\item moins courant, pas sur CTAN pour l'instant : \emph{translator} que
  l'on peut recupérer sur le CVS de beamer sur sourceforge par :
{\footnotesize
\begin{verbatim}
cvs -d:pserver:anonymous@latex-beamer.cvs.sourceforge.net:/cvsroot/latex-beamer login
cvs -z3 -d:pserver:anonymous@latex-beamer.cvs.sourceforge.net:/cvsroot/latex-beamer \
co -P translator
\end{verbatim}
}
  Ensuite appliquer une des deux méthodes précédemment citées.
\end{itemize}

Si dans votre document vous utilsez les macros (non documentées)
\verb+pscode+ ou \verb+herepscode+, la commande latex doit avoir
l'option \texttt{-shell-escape} et vous devez avoir le script Perl
\texttt{buildmacro.pl} (situé dans
\texttt{svn.enstb.org/ens/utils/scripts}). Perl doit du coup être
installé ainsi que :
\begin{itemize}
\item \texttt{latexmk},
\item \texttt{ps2eps},
\item \texttt{epstopdf},
\item le paquetage latex \emph{pstricks}
\end{itemize}
Normalement, après une période de transition, plus de documents ne
devrait contenir de postscript (si ce n'est les archives bien
sur\dots). En effet, pour simplifier à la fois la production des
figures mais aussi se passer des compléxités liées à ce processus, les
documents vont basculer en \texttt{tikz} (c'est déjà vrai pour les
cours).

Une documentation détaillée est disponible là :
\url{https://info.enstb.org/enseignement/tc/MineureGlop/HOWTO}. Elle
parfois obsolète, mais c'est mieux que rien.

\subsection{Script pour aider à la compilation}

Un script, conçu et utilisé par votre serviteur, automatise un certain
nombre de tâche pour produire les documents. Ce script est appelé
\texttt{makeDoc.pl}. Il prend en paramètre une liste de fichier latex
(l'extension tex peut être omise) et les compile et produit les pdf
correspondant. Le processus de compilation est contrôlé par les
options suivantes :
\begin{itemize}
\item \verb+-d+ : affichage des sorties de latex (par défaut, elles
  sont escamotées),
\item \verb+-f+ : permet de forcer l'exécution complète du script
  (même en cas d'erreur, sauf si elles sont fatales),
\item \verb+-dd+ : les fichiers générés par le processus ne sont pas
  effacés (aide au debogage),
\item \verb+-handout+ : ajoute l'option \texttt{handout} aux
  documents,
\item \verb+-snm+ : permet de conserver le fichier snm (si vous ne
  savez pas ce que c'est, c'est que vous n'avez pas besoin de cette
  option),
\item \verb+-aux+ : permet de conserver le fichier aux (même remarque
  que ci-dessus),
\item \verb+-cor+ : va générer la correction (utilise l'option
  \texttt{correction}),
\item \verb+norename+ : par défaut le script renomme le fichier
  résultant (en sujet, correction ou cours selon son type), avec cette
  option le fichier résultant gardera le nom du fichier latex
  original.
\item \verb+mineure+ : remplace l'option \texttt{majeure} du document
  par une option \texttt{mineure} ou l'ajoute. Les fichiers générés se
  voit ajouter l'extension \verb+-mineure+.
\item \verb+cours=qqchose+ : \texttt{qqchose} devient le nom utilisé
  pour les cours
\item \verb+sujet=qqchose+ : \texttt{qqchose} devient le nom utilisé
  pour les sujets
\end{itemize}

Le script utilise \texttt{latexmk} pour automatiser le nombre de
compilations (qui peut être grand).


\annexes
\label{ann:typededocs}
\input{exemples/res.tex}


\end{document}
