\DocumentMetadata{testphase = {phase-II,sec,toc,graphic,minipage,text}}
\documentclass[a4paper]{article}

\usepackage[T1]{fontenc} % encoding
\renewcommand{\familydefault}{\sfdefault} % sans-serif font
\usepackage[nopatch=footnote]{microtype} % better font looking

\usepackage[french]{babel} % langages
\frenchsetup{SmallCapsFigTabCaptions=false}
\usepackage{csquotes}
\MakeOuterQuote{"}

% Add \extra info to title
\makeatletter
\providecommand{\extra}[1]{
  \apptocmd{\@author}{
    \end{tabular}
    \par\vspace*{0.7em}
    \begin{tabular}[t]{c}
    #1}{}{}
}
\makeatother


% Alias
\def\matthieu{Matthieu Tonino}
\def\anri{Anri Kennel}
\def\lsys{L-système}
\def\xml{\texttt{XML}}
\def\xsl{\texttt{XSL}}
\def\xsd{\texttt{XSD}}
\def\csv{\texttt{CSV}}
\def\svg{\texttt{SVG}}


% Métadonnées
\def\mytitle{Rapport de projet sur les~\lsys{}s}
\def\myauthor{\matthieu~et \anri}
\def\mysubject{Format de documents et XML}
\def\mylocation{Université Paris Cité}

\usepackage[
  pdfauthor={\myauthor},   % author  metadata
  pdftitle={\mytitle},     % title   metadata
  pdfsubject={\mysubject}, % subject metadata
  hidelinks,               % clickable links in table of contents
]{hyperref}

\title{\mytitle}
\author{\matthieu\thanks{\matthieu : 00000000}~
        et \anri\thanks{\anri : 22302653}}
\extra{\mysubject~$\cdot$ \mylocation}
\date{Année universitaire 2023-2024}

\begin{document}
\maketitle
\flushbottom
\tableofcontents
\clearpage

\section[Description]{Description du projet}
Le projet a pour but de générer un fichier \svg~en partant d'un \lsys~en
utilisant des transformations de \xml~par \xsl.

\subsection{Gestion de projet}
Nous avons écrit un \texttt{Makefile} pour nous faciliter le développement.

\subsubsection*{Une commande qui fait tout}
\begin{description}
  \item[\texttt{make nom=snow n=3}] génère une image \svg~sous
        \texttt{image.svg} qui correspond au \lsys~"snow" avec trois itérations.
\end{description}

\subsubsection*{Possibilité de faire qu'une action à la fois}
\begin{description}
  \item[\texttt{make generation}] génère le fichier \xml~des \lsys{}s.
  \item[\texttt{make tortue nom=koch5 n=4}] génère le fichier \xml~du
        \lsys{}~"koch5" avec quatre itérations.
  \item[\texttt{make traceur}] génère le fichier \xml~du traceur.
  \item[\texttt{make svg}] génère le fichier \svg.
\end{description}

\subsubsection*{Des utilitaires}
\begin{description}
  \item[\texttt{make saxon}] télécharge Saxon pour la transformation
        des fichiers \xml~via \xsl.
  \item[\texttt{make clean}] supprime les fichiers générés.
\end{description}

\section{Explication des choix}
Dans cette partie, nous justifions nos décisions.

\subsection{Conception}
Nous avons choisi le langage de programmation Python pour réaliser la
première partie du projet parce que c'est un langage simple pour ce que nous
voulons faire, qu'il est doté d'une librairie qui permet de générer des fichiers
\xml~et que nous maitrisons tous les deux.

\subsection{Implémentation}
% TODO


\section{Répartition des tâches}
La conversion du fichier \csv~en fichier \xml, ainsi que la transformation
du fichier XML ainsi générer en fichier \xml~de la tortue ont étés faits
par \anri.
La conversion du fichier \xml~de la tortue en fichier \xml~du traceur a été
écrite par \matthieu.
Chacun a écrit les fichiers \xsd~correspondant à ses fichiers \xml.

% TODO: XML -> SVG : XSLT (qui?)

\subsection[Chronologie]{Chronologie des tâches}
\def\sp{\hspace{8pt}} % petit espace pour l'alignement
\begin{description}
  \item[15 avril] Début de l'écriture du parseur \csv~vers \xml
  \item[17 avril] Transformation du fichier \csv~vers \xml~achevé
  \item[26 avril] Écriture du schéma \xml~validant le format du fichier \xml~généré
  \item[27 avril] Écriture des fichiers \xsl~et \xsd~pour la tortue
  \item[2 mai\sp] Écriture des fichiers \xsl~et \xsd~pour le traceur
  \item[4 mai\sp] Écriture des fichiers \xsl~pour la conversion en \svg
\end{description}


\section{Limitations}
Dans cette partie nous abordons les limitations de notre projet.

% \subsection{Difficultés rencontrées}
% TODO - uniquement si on a galéré

%\subsubsection*{Bugs}
% TODO - uniquement s'il y a des bugs
%  Problème: quand `n' est grand, on a un problème de mémoire

%\subsection{Omissions} % Ce qu'il manque
% TODO - uniquement s'il y a des omissions

\end{document}
