From bf0327d7a92f5dd39a0d002f7c139470854ec8b9 Mon Sep 17 00:00:00 2001
From: pigeonmoelleux <pigeonmoelleux@crans.org>
Date: Thu, 24 Nov 2022 12:14:16 +0100
Subject: [PATCH 01/20] Correction README

---
 README.md                          | 68 ++++++++------------------
 docs/presentation/.gitignore       |  3 ++
 docs/presentation/presentation.tex | 78 ++++++++++++++++++++++++++++++
 3 files changed, 102 insertions(+), 47 deletions(-)
 create mode 100644 docs/presentation/.gitignore
 create mode 100644 docs/presentation/presentation.tex

diff --git a/README.md b/README.md
index ba84f65..1a77f36 100644
--- a/README.md
+++ b/README.md
@@ -1,62 +1,36 @@
 # Effovex
 
-Effovex (pronounced “f of x”) will be a document typesetter focused on
-(or perhaps entirely devoted to) mathematical formulae.  This is a
-software enginnering project by Antoine Guilmin Crépon, Balthazar
+Effovex (pronounced “f of x”) will be a document typesetter focused on (or perhaps entirely devoted to) mathematical formulae.  This is a software enginnering project by Antoine Guilmin Crépon, Balthazar Patiachvili and Jean Abou Samra at M1 MPRI in ENS Paris-Saclay.
 
-Patiachvili and Jean Abou Samra at M1 MPRI in ENS Paris-Saclay.
+## Installation
 
-## Effovex grammar
+To install and compile this project, you need to clone the repository, go in the folder then build the project with `cargo`.
 
+```bash
+$ git clone https://gitlab.crans.org/pigeonmoelleux/effovex.git
+$ cd effovex/
+$ cargo build
 ```
-<document> := 
-    """
-    <doc_type>
-    <declarations>*
-    
-    @begin(document)
-    <showable>*
-    @end(document)
-    """
 
-<doc_type> := document(<outputs_fmt>)
+## How to run effovex
 
-<output_fmt> := "pdf" | "png" | "svg"
+To run effovex on a specific .fx file, you can either run the project with cargo 
 
-<declarations> := (<dec_func> | <dec_env>)*
-
-<dec_func> :=
-    """
-    fn <name>(<LPAR> <name> <RPAR>)* {
-        return <showable>*
-    }
-    """
-
-<dec_env> :=
-    """
-    env <name>(<LPAR><name><RPAR>)* {
-        return <env>
-    }
-    """
-
-<LPAR> := "("
-<RPAR> := ")"
-<name> := [a-zA-Z][a-zA-Z0-9_-]*
+```bash
+$ cargo run -- path/to/example/file.fx
+```
 
-<env> = <name>
+or use the binary produced by cargo after the build.
 
-<showable> := <str> | <called_func> | <called_env> | <object>
+```bash
+$ cargo build
+$ ./target/debug/effovex path/to/example/file.fx
+```
 
-<str> := utf8 characters
+The output file will be placed in the same directory as the input file.
 
-<called_func> := "@<name>(<LPAR><showable><RPAR>)*"
+## User manual
 
-<called_env> := 
-    """
-    @begin<LPAR><name><RPAR>(<LPAR><showable><RPAR>)*
-    <showable>*
-    @end<LPAR><name><RPAR>
-    """
+The complete user manual can be found at [TODO](.).
 
-<object> := "@<name>(<LPAR><showable><RPAR>)*"
-```
\ No newline at end of file
+The source files are in [docs/user_manual/](docs/user_manual).
\ No newline at end of file
diff --git a/docs/presentation/.gitignore b/docs/presentation/.gitignore
new file mode 100644
index 0000000..e33478b
--- /dev/null
+++ b/docs/presentation/.gitignore
@@ -0,0 +1,3 @@
+*
+!*.tex
+!.gitignore
diff --git a/docs/presentation/presentation.tex b/docs/presentation/presentation.tex
new file mode 100644
index 0000000..8a7013e
--- /dev/null
+++ b/docs/presentation/presentation.tex
@@ -0,0 +1,78 @@
+\documentclass[12pt, aspectratio=169, 169]{beamer}
+
+\mode<presentation>{
+    \usetheme{Warsaw}
+    \useoutertheme{shadow}
+    \useoutertheme{infolines}
+}
+
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage[french]{babel}
+
+\title[Effovex]{Présentation de projet: Effovex}
+\author[J.A.Samra \& A.Guilmin-Crépon \& B.Patiachvili]{Jean Abou Samra, Antoine Guilmin-Crépon, Balthazar Patiachvili}
+\date[06/10/2022]{06 octobre 2022}
+
+\newcommand{\jump}[1][1]{\vspace{#1\baselineskip}}
+
+\begin{document}
+
+  \maketitle
+
+  \begin{frame}{Fonctionnalités}
+    
+    \begin{block}{Description}
+      Création d'un langage et d'un compilateur associé en Rust pour produire des documents PDF, SVG et PNG.
+    \end{block}
+
+    \begin{block}{Mi-parcours}
+      Avoir une base fonctionnelle capable de générer du texte et des bases de mathématiques
+    \end{block}
+
+    \begin{block}{Rendu final}
+      Finalisation de l'interface pour les packages et création de quelques packages de démonstration
+    \end{block}
+
+  \end{frame}
+
+  \begin{frame}{Langage et librairies}
+
+    \begin{block}{}
+      \large
+      \begin{center}
+        Rust
+      \end{center} \pause
+      \jump
+
+      Bibliothèques~:
+      \begin{itemize}
+        \item \textbf{Lexer et parser} : nom \pause $\longrightarrow$ parser dynamique \pause
+        \item \textbf{Génération}~: cairo \pause $\longrightarrow$ génération de PDF, SVG, PNG, \dots \pause
+        \item \textbf{Création de packages}~: libloading
+      \end{itemize}
+
+    \end{block}
+
+  \end{frame}
+
+  \begin{frame}{Structuration et répartition}
+    
+    \begin{block}{}
+      $\underbrace{\text{Langage effovex}}_{\text{Tous}} \longrightarrow \underbrace{\text{Parser}}_{\text{Jean}} \xrightarrow{\quad \text{AST} \quad} \underbrace{\text{Conversion AST-cairo}}_{\text{Balthazar}} \xrightarrow{\text{cairo}} \underbrace{\text{Génération}}_{\text{Antoine}}$
+    \end{block}
+    \jump
+
+    Interface pour l'ajout de packages : Balthazar \pause
+    \jump
+
+    Exemples de packages~:
+    \begin{itemize}
+      \item Arbres de preuves
+      \item Tableaux
+      \item Diagrammes commutatifs
+    \end{itemize}
+
+  \end{frame}
+
+\end{document}
\ No newline at end of file
-- 
GitLab


From e0de17fa6e04dcc5a60871f313b86cdc59cf9fdd Mon Sep 17 00:00:00 2001
From: Jean Abou Samra <jean@abou-samra.fr>
Date: Thu, 17 Nov 2022 10:37:40 +0100
Subject: [PATCH 02/20] Testing infrastructure

---
 .gitignore                |   2 +
 Cargo.lock                | 628 ++++++++++++++++++++++++++++++++++++++
 Cargo.toml                |   3 +-
 cargo-compare/Cargo.toml  |  13 +
 cargo-compare/src/main.rs | 395 ++++++++++++++++++++++++
 effovex/src/main.rs       |   2 +-
 6 files changed, 1041 insertions(+), 2 deletions(-)
 create mode 100644 cargo-compare/Cargo.toml
 create mode 100644 cargo-compare/src/main.rs

diff --git a/.gitignore b/.gitignore
index dc31d18..5d0ac10 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,5 @@
 /target
+/baseline
+/comparison
 .vscode
 *.pdf
\ No newline at end of file
diff --git a/Cargo.lock b/Cargo.lock
index 5c1486b..e78a895 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -2,18 +2,41 @@
 # It is not intended for manual editing.
 version = 3
 
+[[package]]
+name = "adler"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
+
 [[package]]
 name = "anyhow"
 version = "1.0.66"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "216261ddc8289130e551ddcd5ce8a064710c0d064a4d2895c67151c92b5443f6"
 
+[[package]]
+name = "atty"
+version = "0.2.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
+dependencies = [
+ "hermit-abi",
+ "libc",
+ "winapi",
+]
+
 [[package]]
 name = "autocfg"
 version = "1.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
 
+[[package]]
+name = "bit_field"
+version = "0.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dcb6dd1c2376d2e096796e234a70e17e94cc2d5d54ff8ce42b28cef1d0d359a4"
+
 [[package]]
 name = "bitflags"
 version = "1.3.2"
@@ -29,6 +52,24 @@ dependencies = [
  "generic-array",
 ]
 
+[[package]]
+name = "bumpalo"
+version = "3.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "572f695136211188308f16ad2ca5c851a712c464060ae6974944458eb83880ba"
+
+[[package]]
+name = "bytemuck"
+version = "1.12.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "aaa3a8d9a1ca92e282c96a32d6511b695d7d994d1d102ba85d279f9b2756947f"
+
+[[package]]
+name = "byteorder"
+version = "1.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
+
 [[package]]
 name = "cairo-rs"
 version = "0.16.1"
@@ -54,6 +95,17 @@ dependencies = [
  "system-deps",
 ]
 
+[[package]]
+name = "cargo-compare"
+version = "0.1.0"
+dependencies = [
+ "clap",
+ "html-builder",
+ "image-compare",
+ "similar",
+ "walkdir",
+]
+
 [[package]]
 name = "cfg-expr"
 version = "0.11.0"
@@ -69,6 +121,49 @@ version = "1.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
 
+[[package]]
+name = "clap"
+version = "4.0.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "91b9970d7505127a162fdaa9b96428d28a479ba78c9ec7550a63a5d9863db682"
+dependencies = [
+ "atty",
+ "bitflags",
+ "clap_derive",
+ "clap_lex",
+ "once_cell",
+ "strsim",
+ "termcolor",
+]
+
+[[package]]
+name = "clap_derive"
+version = "4.0.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0177313f9f02afc995627906bbd8967e2be069f5261954222dac78290c2b9014"
+dependencies = [
+ "heck",
+ "proc-macro-error",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "clap_lex"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0d4198f73e42b4936b35b5bb248d81d2b595ecb170da0bac7655c54eedfa8da8"
+dependencies = [
+ "os_str_bytes",
+]
+
+[[package]]
+name = "color_quant"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b"
+
 [[package]]
 name = "converter"
 version = "0.1.0"
@@ -88,6 +183,64 @@ dependencies = [
  "libc",
 ]
 
+[[package]]
+name = "crc32fast"
+version = "1.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "crossbeam-channel"
+version = "0.5.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c2dd04ddaf88237dc3b8d8f9a3c1004b506b54b3313403944054d23c0870c521"
+dependencies = [
+ "cfg-if",
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-deque"
+version = "0.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "715e8152b692bba2d374b53d4875445368fdf21a94751410af607a5ac677d1fc"
+dependencies = [
+ "cfg-if",
+ "crossbeam-epoch",
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-epoch"
+version = "0.9.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f916dfc5d356b0ed9dae65f1db9fc9770aa2851d2662b988ccf4fe3516e86348"
+dependencies = [
+ "autocfg",
+ "cfg-if",
+ "crossbeam-utils",
+ "memoffset",
+ "scopeguard",
+]
+
+[[package]]
+name = "crossbeam-utils"
+version = "0.8.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "edbafec5fa1f196ca66527c1b12c2ec4745ca14b50f1ad8f9f6f720b55d11fac"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "crunchy"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7"
+
 [[package]]
 name = "crypto-common"
 version = "0.1.6"
@@ -117,6 +270,50 @@ dependencies = [
  "parser",
 ]
 
+[[package]]
+name = "either"
+version = "1.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "90e5c1c8368803113bf0c9584fc495a58b86dc8a29edbf8fe877d21d9507e797"
+
+[[package]]
+name = "exr"
+version = "1.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8eb5f255b5980bb0c8cf676b675d1a99be40f316881444f44e0462eaf5df5ded"
+dependencies = [
+ "bit_field",
+ "flume",
+ "half",
+ "lebe",
+ "miniz_oxide 0.6.2",
+ "smallvec",
+ "threadpool",
+]
+
+[[package]]
+name = "flate2"
+version = "1.0.24"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f82b0f4c27ad9f8bfd1f3208d882da2b09c301bc1c828fd3a00d0216d2fbbff6"
+dependencies = [
+ "crc32fast",
+ "miniz_oxide 0.5.4",
+]
+
+[[package]]
+name = "flume"
+version = "0.10.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1657b4441c3403d9f7b3409e47575237dac27b1b5726df654a6ecbf92f0f7577"
+dependencies = [
+ "futures-core",
+ "futures-sink",
+ "nanorand",
+ "pin-project",
+ "spin",
+]
+
 [[package]]
 name = "futures-channel"
 version = "0.3.25"
@@ -160,6 +357,12 @@ dependencies = [
  "syn",
 ]
 
+[[package]]
+name = "futures-sink"
+version = "0.3.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "39c15cf1a4aa79df40f1bb462fb39676d0ad9e366c2a33b590d7c66f4f81fcf9"
+
 [[package]]
 name = "futures-task"
 version = "0.3.25"
@@ -200,6 +403,29 @@ dependencies = [
  "version_check",
 ]
 
+[[package]]
+name = "getrandom"
+version = "0.2.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31"
+dependencies = [
+ "cfg-if",
+ "js-sys",
+ "libc",
+ "wasi",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "gif"
+version = "0.11.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3edd93c6756b4dfaf2709eafcc345ba2636565295c198a9cfbf75fa5e3e00b06"
+dependencies = [
+ "color_quant",
+ "weezl",
+]
+
 [[package]]
 name = "gio"
 version = "0.16.2"
@@ -291,24 +517,213 @@ dependencies = [
  "system-deps",
 ]
 
+[[package]]
+name = "half"
+version = "2.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ad6a9459c9c30b177b925162351f97e7d967c7ea8bab3b8352805327daf45554"
+dependencies = [
+ "crunchy",
+]
+
 [[package]]
 name = "heck"
 version = "0.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9"
 
+[[package]]
+name = "hermit-abi"
+version = "0.1.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "html-builder"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "82ac906c24b99b5884b512a5d202d69a674ed27e349f332ae6e5d63e3845697a"
+
+[[package]]
+name = "image"
+version = "0.24.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "69b7ea949b537b0fd0af141fff8c77690f2ce96f4f41f042ccb6c69c6c965945"
+dependencies = [
+ "bytemuck",
+ "byteorder",
+ "color_quant",
+ "exr",
+ "gif",
+ "jpeg-decoder",
+ "num-rational",
+ "num-traits",
+ "png",
+ "scoped_threadpool",
+ "tiff",
+]
+
+[[package]]
+name = "image-compare"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1720968b7383cc9556661d32c7a779426f034f5a12ddf9fd381951dc7049f01d"
+dependencies = [
+ "image",
+ "itertools",
+ "rayon",
+ "thiserror",
+]
+
+[[package]]
+name = "itertools"
+version = "0.10.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
+dependencies = [
+ "either",
+]
+
+[[package]]
+name = "jpeg-decoder"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bc0000e42512c92e31c2252315bda326620a4e034105e900c98ec492fa077b3e"
+dependencies = [
+ "rayon",
+]
+
+[[package]]
+name = "js-sys"
+version = "0.3.60"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "49409df3e3bf0856b916e2ceaca09ee28e6871cf7d9ce97a692cacfdb2a25a47"
+dependencies = [
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "lebe"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8"
+
 [[package]]
 name = "libc"
 version = "0.2.137"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "fc7fcc620a3bff7cdd7a365be3376c97191aeaccc2a603e600951e452615bf89"
 
+[[package]]
+name = "lock_api"
+version = "0.4.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df"
+dependencies = [
+ "autocfg",
+ "scopeguard",
+]
+
+[[package]]
+name = "log"
+version = "0.4.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "memoffset"
+version = "0.6.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "miniz_oxide"
+version = "0.5.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "96590ba8f175222643a85693f33d26e9c8a015f599c216509b1a6894af675d34"
+dependencies = [
+ "adler",
+]
+
+[[package]]
+name = "miniz_oxide"
+version = "0.6.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b275950c28b37e794e8c55d88aeb5e139d0ce23fdbbeda68f8d7174abdf9e8fa"
+dependencies = [
+ "adler",
+]
+
+[[package]]
+name = "nanorand"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3"
+dependencies = [
+ "getrandom",
+]
+
+[[package]]
+name = "num-integer"
+version = "0.1.45"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
+dependencies = [
+ "autocfg",
+ "num-traits",
+]
+
+[[package]]
+name = "num-rational"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0"
+dependencies = [
+ "autocfg",
+ "num-integer",
+ "num-traits",
+]
+
+[[package]]
+name = "num-traits"
+version = "0.2.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "num_cpus"
+version = "1.14.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f6058e64324c71e02bc2b150e4f3bc8286db6c83092132ffa3f6b1eab0f9def5"
+dependencies = [
+ "hermit-abi",
+ "libc",
+]
+
 [[package]]
 name = "once_cell"
 version = "1.16.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "86f0b0d4bf799edbc74508c1e8bf170ff5f41238e5f8225603ca7caaae2b7860"
 
+[[package]]
+name = "os_str_bytes"
+version = "6.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3baf96e39c5359d2eb0dd6ccb42c62b91d9678aa68160d261b9e0ccbf9e9dea9"
+
 [[package]]
 name = "pango"
 version = "0.16.0"
@@ -414,6 +829,26 @@ dependencies = [
  "sha1",
 ]
 
+[[package]]
+name = "pin-project"
+version = "1.0.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ad29a609b6bcd67fee905812e544992d216af9d755757c05ed2d0e15a74c6ecc"
+dependencies = [
+ "pin-project-internal",
+]
+
+[[package]]
+name = "pin-project-internal"
+version = "1.0.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "069bdb1e05adc7a8990dce9cc75370895fbe4e3d58b9b73bf1aee56359344a55"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
 [[package]]
 name = "pin-project-lite"
 version = "0.2.9"
@@ -432,6 +867,18 @@ version = "0.3.26"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160"
 
+[[package]]
+name = "png"
+version = "0.17.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5d708eaf860a19b19ce538740d2b4bdeeb8337fa53f7738455e706623ad5c638"
+dependencies = [
+ "bitflags",
+ "crc32fast",
+ "flate2",
+ "miniz_oxide 0.6.2",
+]
+
 [[package]]
 name = "proc-macro-crate"
 version = "1.2.1"
@@ -485,6 +932,51 @@ dependencies = [
  "proc-macro2",
 ]
 
+[[package]]
+name = "rayon"
+version = "1.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bd99e5772ead8baa5215278c9b15bf92087709e9c1b2d1f97cdb5a183c933a7d"
+dependencies = [
+ "autocfg",
+ "crossbeam-deque",
+ "either",
+ "rayon-core",
+]
+
+[[package]]
+name = "rayon-core"
+version = "1.9.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "258bcdb5ac6dad48491bb2992db6b7cf74878b0384908af124823d118c99683f"
+dependencies = [
+ "crossbeam-channel",
+ "crossbeam-deque",
+ "crossbeam-utils",
+ "num_cpus",
+]
+
+[[package]]
+name = "same-file"
+version = "1.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
+dependencies = [
+ "winapi-util",
+]
+
+[[package]]
+name = "scoped_threadpool"
+version = "0.1.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1d51f5df5af43ab3f1360b429fa5e0152ac5ce8c0bd6485cae490332e96846a8"
+
+[[package]]
+name = "scopeguard"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
+
 [[package]]
 name = "serde"
 version = "1.0.147"
@@ -502,6 +994,12 @@ dependencies = [
  "digest",
 ]
 
+[[package]]
+name = "similar"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "420acb44afdae038210c99e69aae24109f32f15500aa708e81d46c9f29d55fcf"
+
 [[package]]
 name = "slab"
 version = "0.4.7"
@@ -517,6 +1015,21 @@ version = "1.10.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0"
 
+[[package]]
+name = "spin"
+version = "0.9.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7f6002a767bff9e83f8eeecf883ecb8011875a21ae8da43bffb817a57e78cc09"
+dependencies = [
+ "lock_api",
+]
+
+[[package]]
+name = "strsim"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
+
 [[package]]
 name = "syn"
 version = "1.0.103"
@@ -541,6 +1054,15 @@ dependencies = [
  "version-compare",
 ]
 
+[[package]]
+name = "termcolor"
+version = "1.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755"
+dependencies = [
+ "winapi-util",
+]
+
 [[package]]
 name = "thiserror"
 version = "1.0.37"
@@ -561,6 +1083,26 @@ dependencies = [
  "syn",
 ]
 
+[[package]]
+name = "threadpool"
+version = "1.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa"
+dependencies = [
+ "num_cpus",
+]
+
+[[package]]
+name = "tiff"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f17def29300a156c19ae30814710d9c63cd50288a49c6fd3a10ccfbe4cf886fd"
+dependencies = [
+ "flate2",
+ "jpeg-decoder",
+ "weezl",
+]
+
 [[package]]
 name = "toml"
 version = "0.5.9"
@@ -600,6 +1142,83 @@ version = "0.9.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
 
+[[package]]
+name = "walkdir"
+version = "2.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56"
+dependencies = [
+ "same-file",
+ "winapi",
+ "winapi-util",
+]
+
+[[package]]
+name = "wasi"
+version = "0.11.0+wasi-snapshot-preview1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+
+[[package]]
+name = "wasm-bindgen"
+version = "0.2.83"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eaf9f5aceeec8be17c128b2e93e031fb8a4d469bb9c4ae2d7dc1888b26887268"
+dependencies = [
+ "cfg-if",
+ "wasm-bindgen-macro",
+]
+
+[[package]]
+name = "wasm-bindgen-backend"
+version = "0.2.83"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4c8ffb332579b0557b52d268b91feab8df3615f265d5270fec2a8c95b17c1142"
+dependencies = [
+ "bumpalo",
+ "log",
+ "once_cell",
+ "proc-macro2",
+ "quote",
+ "syn",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-macro"
+version = "0.2.83"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "052be0f94026e6cbc75cdefc9bae13fd6052cdcaf532fa6c45e7ae33a1e6c810"
+dependencies = [
+ "quote",
+ "wasm-bindgen-macro-support",
+]
+
+[[package]]
+name = "wasm-bindgen-macro-support"
+version = "0.2.83"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+ "wasm-bindgen-backend",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-shared"
+version = "0.2.83"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1c38c045535d93ec4f0b4defec448e4291638ee608530863b1e2ba115d4fff7f"
+
+[[package]]
+name = "weezl"
+version = "0.1.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9193164d4de03a926d909d3bc7c30543cecb35400c02114792c2cae20d5e2dbb"
+
 [[package]]
 name = "winapi"
 version = "0.3.9"
@@ -616,6 +1235,15 @@ version = "0.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
 
+[[package]]
+name = "winapi-util"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
+dependencies = [
+ "winapi",
+]
+
 [[package]]
 name = "winapi-x86_64-pc-windows-gnu"
 version = "0.4.0"
diff --git a/Cargo.toml b/Cargo.toml
index 857e1eb..04636a8 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -4,4 +4,5 @@ members = [
     "parser",
     "converter",
     "effovex",
-]
\ No newline at end of file
+    "cargo-compare",
+]
diff --git a/cargo-compare/Cargo.toml b/cargo-compare/Cargo.toml
new file mode 100644
index 0000000..bc984e9
--- /dev/null
+++ b/cargo-compare/Cargo.toml
@@ -0,0 +1,13 @@
+[package]
+name = "cargo-compare"
+version = "0.1.0"
+edition = "2021"
+
+# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
+
+[dependencies]
+clap = { version = "4.0.17", features = ["derive"]}
+html-builder = "0.4.0"
+walkdir = "2.3.2"
+image-compare = "0.2.3"
+similar = "2.2.1"
diff --git a/cargo-compare/src/main.rs b/cargo-compare/src/main.rs
new file mode 100644
index 0000000..ef7748f
--- /dev/null
+++ b/cargo-compare/src/main.rs
@@ -0,0 +1,395 @@
+//! This script has two modes, normal and --baseline. If --baseline is passed, it creates a test
+//! baseline from the current cargo build in the baseline/ directory. This baseline contains logs
+//! and PNGs from all tests. In normal mode, it runs all the tests but in the comparison/ directory,
+//! and also generates an HTML page in comparison/ that shows the differences.
+
+use clap::Parser;
+use html_builder::{Buffer, Html5, Node};
+use similar::{ChangeTag, TextDiff};
+use std::collections::HashMap;
+use std::fmt::Write as FmtWrite;
+use std::fs::{create_dir_all, read_to_string, remove_dir_all, rename, File};
+use std::io::Write;
+use std::path::{Path, PathBuf};
+use std::process::{Command, ExitStatus, Output};
+use walkdir::WalkDir;
+
+#[derive(Parser)]
+#[command(version)]
+struct Cli {
+    #[arg(short, long)]
+    output_dir: Option<String>,
+    #[arg(short, long, default_value_t=String::from("target/debug/effovex"))]
+    executable: String,
+    #[arg(short, long)]
+    baseline: bool,
+}
+
+// A few wrappers around fs functions, returning Result<..., String>.
+
+/// Find all files with extension `ext` in the given directory.
+// TODO: Use a glob crate?
+fn glob_ext(dir: &Path, ext: &str) -> Result<Vec<PathBuf>, String> {
+    let mut result = Vec::new();
+    for entry_res in WalkDir::new(dir) {
+        match entry_res {
+            Err(err) => {
+                return Err(format!(
+                    "I/O error while traversing directory {}: {}",
+                    dir.to_string_lossy(),
+                    err
+                ))
+            }
+            Ok(entry) => {
+                let path = entry.path();
+                if path.is_file() {
+                    if let Some(found_ext) = path.extension() {
+                        // UTF-8 validation
+                        if let Some(string) = found_ext.to_str() {
+                            if string == ext {
+                                result.push(path.to_path_buf());
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+    Ok(result)
+}
+
+/// Remove everything under the given directory.
+fn nuke_dir(path: &Path) -> Result<(), String> {
+    if path.is_dir() {
+        match remove_dir_all(path) {
+            Ok(()) => Ok(()),
+            Err(err) => Err(format!(
+                "cannot remove directory {}: {}",
+                path.to_string_lossy(),
+                err
+            )),
+        }
+    } else {
+        Ok(())
+    }
+}
+
+/// Create all directory parents of the given path.
+fn mkdirs(path: &Path) -> Result<(), String> {
+    match create_dir_all(path) {
+        Ok(()) => Ok(()),
+        Err(err) => Err(format!(
+            "cannot create directory {}: {}",
+            path.to_string_lossy(),
+            err
+        )),
+    }
+}
+
+/// Run a command.
+fn run(cmd: &mut Command) -> Result<Output, String> {
+    match cmd.output() {
+        Err(err) => Err(format!("failed to spawn command: {}", err)),
+        Ok(output) => Ok(output),
+    }
+}
+
+/// Convert PDF file to PNG, putting the result in the same directory
+/// as the original. Uses the `convert` command provided by
+/// ImageMagick.
+// TODO: find a pure Rust crate to convert pdf to png, to obviate
+// dependency on ImageMagick?
+fn pdf2png(path: &Path) -> Result<(), String> {
+    assert!(path.extension().unwrap().to_str().unwrap() == "pdf");
+    let mut command = Command::new("convert");
+    let output_path = path.with_extension("png");
+    let status = run(command
+        .arg("-colorspace")
+        .arg("RGB")
+        .arg(path)
+        .arg(output_path))?
+    .status;
+    if status.success() {
+        Ok(())
+    } else {
+        Err(format!("convert failed for {}", path.to_string_lossy()))
+    }
+}
+
+/// Move a file.
+fn mv(f1: &Path, f2: &Path) -> Result<(), String> {
+    if let Err(err) = rename(f1, f2) {
+        Err(format!(
+            "can't move {} to {}: {}",
+            f1.to_string_lossy(),
+            f1.to_string_lossy(),
+            err
+        ))
+    } else {
+        Ok(())
+    }
+}
+
+/// Create a file and return the `File` object.
+fn create_file(path: &Path) -> Result<File, String> {
+    match File::create(path) {
+        Err(err) => Err(format!(
+            "failed to create {}: {}",
+            path.to_string_lossy(),
+            err
+        )),
+        Ok(file) => Ok(file),
+    }
+}
+
+/// All information about a given test in the baseline and the
+/// comparison directory.
+#[derive(Clone, Debug)]
+struct TestInfo {
+    /// Path to `.fx` file.
+    input_path: PathBuf,
+    /// Path to `.png` file in baseline.
+    baseline_path: Option<PathBuf>,
+    /// Path to `.log` file in baseline.
+    baseline_log_path: Option<PathBuf>,
+    /// Path to `.png` file in comparison.
+    output_path: Option<PathBuf>,
+    /// Path to `.log` file in comparison.
+    output_log_path: Option<PathBuf>,
+    /// Exit status.
+    status: Option<ExitStatus>,
+}
+
+/// Compile all tests, capturing .png output and log.
+fn compile_tests(cli: &Cli, output_dir: &Path) -> Result<Vec<TestInfo>, String> {
+    let mut res = Vec::new();
+    for path in glob_ext(Path::new("examples"), "fx")? {
+        eprintln!("Processing {}...", path.to_string_lossy());
+        let path_under_tests = path
+            .strip_prefix("examples")
+            .expect("path is in examples/, should have examples/ prefix");
+        let path_under_output_dir: &Path = &output_dir.join(path_under_tests);
+        // Create directory if it doesn't exist.
+        let prefix: &Path = path_under_output_dir.parent().unwrap();
+        mkdirs(prefix)?;
+        // TODO: implement -o,--output option in effovex.
+        let output_path_owned: PathBuf = path.with_extension("pdf");
+        let output_path: &Path = &output_path_owned;
+        let mut command = Command::new(&cli.executable);
+        let log_path = &path_under_output_dir.with_extension("log");
+        let file = create_file(log_path.as_path())?;
+        let exec = command.arg(&path).stderr(file);
+        match exec.output() {
+            Err(err) => {
+                return Err(format!("I/O error while running effovex command: {}", err));
+            }
+            Ok(output) => {
+                // If effovex fails, no output is produced.
+                let final_output_file: Option<PathBuf> = if output_path.is_file() {
+                    // move output to baseline/
+                    let output_wanted = output_dir.join(path_under_tests).with_extension("pdf");
+                    mv(output_path, &output_wanted)?;
+                    Some(output_wanted.with_extension("png"))
+                } else {
+                    None
+                };
+                res.push(TestInfo {
+                    input_path: path,
+                    baseline_path: None,     // Filled later
+                    baseline_log_path: None, // Filled later
+                    output_path: final_output_file,
+                    output_log_path: Some(log_path.to_path_buf()),
+                    status: Some(output.status),
+                });
+            }
+        }
+    }
+    Ok(res)
+}
+
+#[derive(Debug)]
+struct LogAndPng {
+    source: PathBuf,
+    log: PathBuf,
+    png: Option<PathBuf>,
+}
+
+fn get_logs_and_pngs() -> Result<Vec<LogAndPng>, String> {
+    let source = |path: &Path| {
+        Path::new("examples").join(path.strip_prefix("baseline").unwrap().with_extension("fx"))
+    };
+    let mut res = Vec::new();
+    for path in glob_ext(Path::new("baseline"), "log")? {
+        let png: PathBuf = path.with_extension("png");
+        let png_opt = if png.is_file() { Some(png) } else { None };
+        res.push(LogAndPng {
+            source: source(&path),
+            log: path,
+            png: png_opt,
+        });
+    }
+    Ok(res)
+}
+
+fn add_baseline_data(inp: Vec<TestInfo>) -> Result<Vec<TestInfo>, String> {
+    let mut map: HashMap<PathBuf, TestInfo> = HashMap::new();
+    for info in inp.iter() {
+        map.insert(info.input_path.clone(), (*info).clone());
+    }
+    let mut res = Vec::new();
+    for dat in get_logs_and_pngs()? {
+        if let Some(mut info) = map.get_mut(&dat.source) {
+            info.baseline_log_path = Some(dat.log);
+            info.baseline_path = dat.png;
+        } else {
+            let new_info = TestInfo {
+                input_path: dat.source.clone(),
+                baseline_log_path: Some(dat.log),
+                baseline_path: dat.png,
+                output_path: None,
+                output_log_path: None,
+                status: None,
+            };
+            res.push(new_info);
+        }
+    }
+    for (_, info) in map.into_iter() {
+        res.push(info);
+    }
+    Ok(res)
+}
+
+fn read_log(path: &Path) -> Result<String, String> {
+    match read_to_string(path) {
+        Err(err) => Err(format!(
+            "failed to read file {}: {}",
+            path.to_string_lossy(),
+            err
+        )),
+        Ok(string) => Ok(string),
+    }
+}
+
+fn pretty_diff(log1: String, log2: String, out: &mut Node) {
+    let diff = TextDiff::from_lines(&log1, &log2);
+    for change in diff.iter_all_changes() {
+        let (color, tag) = match change.tag() {
+            ChangeTag::Delete => ("#ff0000", "-"),
+            ChangeTag::Insert => ("#00ff00", "+"),
+            ChangeTag::Equal => ("#000000", ""),
+        };
+        let mut node = out.span().attr(&format!("style=\"color:{}\"", color));
+        writeln!(node, "{}{}", tag, change).unwrap();
+    }
+}
+
+fn gen_html(infos: &Vec<TestInfo>) -> Result<String, String> {
+    let mut buf = Buffer::new();
+    let mut html = buf.html().attr("lang='en'");
+    let mut head = html.head();
+    head.meta().attr("charset=\"utf-8\"");
+    writeln!(head.title(), "Comparison of Effovex regression tests").unwrap();
+    let mut body: Node = html.body();
+    for TestInfo {
+        input_path,
+        baseline_path,
+        baseline_log_path,
+        output_path,
+        output_log_path,
+        status: _, // TODO
+    } in infos
+    {
+        // TODO only show differences
+        let mut para = body.p().attr("style=\"text-align:center\"");
+        para.code()
+            .write_str(&input_path.to_string_lossy())
+            .unwrap();
+        let mut table = body.table().attr("style=\"border: 1px solid black\"");
+        let mut header_row = table.tr();
+        header_row.th().write_str("Old").unwrap();
+        header_row.th().write_str("New").unwrap();
+        header_row.th().write_str("Comparison").unwrap();
+        // Uh, NLL doesn't work here?
+        {
+            let mut log_row = table.tr();
+            let str1 = if let Some(path1) = baseline_log_path {
+                read_log(path1)?
+            } else {
+                String::new()
+            };
+            let str2 = if let Some(path2) = output_log_path {
+                read_log(path2)?
+            } else {
+                String::new()
+            };
+            log_row.td().pre().write_str(&str1).unwrap();
+            log_row.td().pre().write_str(&str2).unwrap();
+            pretty_diff(str1, str2, &mut log_row.td().pre());
+        }
+        {
+            let mut img_row = table.tr();
+            // TODO: escaping?
+            for path in [baseline_path, output_path] {
+                match path {
+                    // TODO handle error
+                    None => img_row.td().p().write_str("No image to show.").unwrap(),
+                    Some(img) => {
+                        // TODO handle error
+                        img_row.td().img().attr(&format!(
+                            "src=\"{}\"",
+                            img.as_path().canonicalize().unwrap().to_string_lossy()
+                        ));
+                    }
+                }
+            }
+            img_row.td();
+        }
+        // TODO images
+    }
+    return Ok(buf.finish());
+}
+
+fn run_comparison(cli: &Cli, output_dir: &Path, mut infos: Vec<TestInfo>) -> Result<(), String> {
+    // If in comparison mode, run the comparison.
+    if cli.baseline {
+        return Ok(());
+    }
+    if !Path::new("baseline").is_dir() {
+        return Err(String::from(
+            "No baseline for comparison. Please run cargo-compare --baseline on master first.",
+        ));
+    }
+    let baseline_pdfs: Vec<PathBuf> = glob_ext(Path::new("baseline"), "pdf")?;
+    let test_pdfs: Vec<PathBuf> = glob_ext(output_dir, "pdf")?;
+    for vec in [&baseline_pdfs, &test_pdfs] {
+        for pdf in vec {
+            pdf2png(&pdf)?;
+        }
+    }
+    infos = add_baseline_data(infos)?;
+    let html = gen_html(&infos)?;
+    let html_file = output_dir.join("index.html");
+    match create_file(&html_file)?.write(html.as_bytes()) {
+        Ok(_) => Ok(()),
+        Err(err) => Err(format!(
+            "I/O error while writing file {}: {}",
+            html_file.to_string_lossy(),
+            err
+        )),
+    }
+}
+
+fn main() -> Result<(), String> {
+    let cli = Cli::parse();
+    let output_dir_default: String = if cli.baseline {
+        String::from("baseline")
+    } else {
+        String::from("comparison")
+    };
+    let output_dir_name = cli.output_dir.as_ref().unwrap_or(&output_dir_default);
+    let output_dir = Path::new(&output_dir_name);
+    nuke_dir(output_dir)?;
+    let infos = compile_tests(&cli, &output_dir)?;
+    run_comparison(&cli, &output_dir, infos)?;
+    Ok(())
+}
diff --git a/effovex/src/main.rs b/effovex/src/main.rs
index 2993e2e..146db40 100644
--- a/effovex/src/main.rs
+++ b/effovex/src/main.rs
@@ -47,7 +47,7 @@ fn main() {
             let path = PathBuf::from(file_path);
             match execute_file(&path) {
                 Ok(()) => {}
-                Err(err) => println!("{}", err),
+                Err(err) => eprintln!("{}", err),
             }
         }
         None => panic!("No file given !"),
-- 
GitLab


From f22dea1f96c3c32f2df1aa53e123170268909855 Mon Sep 17 00:00:00 2001
From: Jean Abou Samra <jean@abou-samra.fr>
Date: Thu, 24 Nov 2022 14:37:08 +0100
Subject: [PATCH 03/20] Silence dead code warning for now

---
 cargo-compare/src/main.rs | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/cargo-compare/src/main.rs b/cargo-compare/src/main.rs
index ef7748f..c55349e 100644
--- a/cargo-compare/src/main.rs
+++ b/cargo-compare/src/main.rs
@@ -145,6 +145,7 @@ fn create_file(path: &Path) -> Result<File, String> {
 /// All information about a given test in the baseline and the
 /// comparison directory.
 #[derive(Clone, Debug)]
+#[allow(dead_code)]
 struct TestInfo {
     /// Path to `.fx` file.
     input_path: PathBuf,
@@ -157,7 +158,7 @@ struct TestInfo {
     /// Path to `.log` file in comparison.
     output_log_path: Option<PathBuf>,
     /// Exit status.
-    status: Option<ExitStatus>,
+    status: Option<ExitStatus>, // TODO use
 }
 
 /// Compile all tests, capturing .png output and log.
-- 
GitLab


From 297d0b29441ba00ae8efd746a61c890030e70353 Mon Sep 17 00:00:00 2001
From: pigeonmoelleux <pigeonmoelleux@crans.org>
Date: Thu, 24 Nov 2022 14:48:11 +0100
Subject: [PATCH 04/20] =?UTF-8?q?Pr=C3=A9paration=20user=20manual?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 docs/user_manual/introduction.aux |  25 ++
 docs/user_manual/introduction.tex |   5 +
 docs/user_manual/main.aux         |  23 ++
 docs/user_manual/main.fdb_latexmk |  86 ++++++
 docs/user_manual/main.fls         | 491 ++++++++++++++++++++++++++++++
 docs/user_manual/main.log         | 262 ++++++++++++++++
 docs/user_manual/main.out         |   1 +
 docs/user_manual/main.synctex.gz  | Bin 0 -> 2230 bytes
 docs/user_manual/main.tex         |  32 ++
 docs/user_manual/main.toc         |   2 +
 10 files changed, 927 insertions(+)
 create mode 100644 docs/user_manual/introduction.aux
 create mode 100644 docs/user_manual/introduction.tex
 create mode 100644 docs/user_manual/main.aux
 create mode 100644 docs/user_manual/main.fdb_latexmk
 create mode 100644 docs/user_manual/main.fls
 create mode 100644 docs/user_manual/main.log
 create mode 100644 docs/user_manual/main.out
 create mode 100644 docs/user_manual/main.synctex.gz
 create mode 100644 docs/user_manual/main.tex
 create mode 100644 docs/user_manual/main.toc

diff --git a/docs/user_manual/introduction.aux b/docs/user_manual/introduction.aux
new file mode 100644
index 0000000..d6daaf3
--- /dev/null
+++ b/docs/user_manual/introduction.aux
@@ -0,0 +1,25 @@
+\relax 
+\providecommand\hyper@newdestlabel[2]{}
+\@writefile{toc}{\contentsline {section}{\numberline {1}Introduction}{2}{section.1}\protected@file@percent }
+\@setckpt{introduction}{
+\setcounter{page}{3}
+\setcounter{equation}{0}
+\setcounter{enumi}{0}
+\setcounter{enumii}{0}
+\setcounter{enumiii}{0}
+\setcounter{enumiv}{0}
+\setcounter{footnote}{0}
+\setcounter{mpfootnote}{0}
+\setcounter{part}{0}
+\setcounter{section}{1}
+\setcounter{subsection}{0}
+\setcounter{subsubsection}{0}
+\setcounter{paragraph}{0}
+\setcounter{subparagraph}{0}
+\setcounter{figure}{0}
+\setcounter{table}{0}
+\setcounter{Item}{0}
+\setcounter{Hfootnote}{0}
+\setcounter{bookmark@seq@number}{1}
+\setcounter{section@level}{1}
+}
diff --git a/docs/user_manual/introduction.tex b/docs/user_manual/introduction.tex
new file mode 100644
index 0000000..ced5af9
--- /dev/null
+++ b/docs/user_manual/introduction.tex
@@ -0,0 +1,5 @@
+\section{Introduction}
+
+    Welcome to Effovex, a software system for document preparation.
+
+    This document describes how to use the version \version of Effovex.
\ No newline at end of file
diff --git a/docs/user_manual/main.aux b/docs/user_manual/main.aux
new file mode 100644
index 0000000..efd0639
--- /dev/null
+++ b/docs/user_manual/main.aux
@@ -0,0 +1,23 @@
+\relax 
+\providecommand\hyper@newdestlabel[2]{}
+\providecommand\babel@aux[2]{}
+\@nameuse{bbl@beforestart}
+\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument}
+\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined
+\global\let\oldcontentsline\contentsline
+\gdef\contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}}
+\global\let\oldnewlabel\newlabel
+\gdef\newlabel#1#2{\newlabelxx{#1}#2}
+\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}}
+\AtEndDocument{\ifx\hyper@anchor\@undefined
+\let\contentsline\oldcontentsline
+\let\newlabel\oldnewlabel
+\fi}
+\fi}
+\global\let\hyper@last\relax 
+\gdef\HyperFirstAtBeginDocument#1{#1}
+\providecommand\HyField@AuxAddToFields[1]{}
+\providecommand\HyField@AuxAddToCoFields[2]{}
+\babel@aux{english}{}
+\@input{introduction.aux}
+\gdef \@abspage@last{2}
diff --git a/docs/user_manual/main.fdb_latexmk b/docs/user_manual/main.fdb_latexmk
new file mode 100644
index 0000000..f948b96
--- /dev/null
+++ b/docs/user_manual/main.fdb_latexmk
@@ -0,0 +1,86 @@
+# Fdb version 3
+["pdflatex"] 1669289984 "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.tex" "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.pdf" "main" 1669290514
+  "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/introduction.aux" 1669289985 689 3f7c69efa43598b0ad38cd34985c505c "pdflatex"
+  "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/introduction.tex" 1669290514 164 f13b638ee55a3b785e47f2e6257290d7 ""
+  "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.aux" 1669289985 792 834200dc306d4f24df176e8e56de3862 "pdflatex"
+  "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.out" 1669289985 103 9814c2d956916adb9290eca4e25c967a "pdflatex"
+  "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.tex" 1669289984 521 f0c249d37f382f9baf59a8413c83ff74 ""
+  "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.toc" 1669289985 91 b7edcdb1e955970ee2a909be3244a72f "pdflatex"
+  "/usr/share/texmf-dist/fonts/enc/dvips/cm-super/cm-super-t1.enc" 1639192684 2971 def0b6c1f0b107b3b936def894055589 ""
+  "/usr/share/texmf-dist/fonts/map/fontname/texfonts.map" 1639192684 3524 cb3e574dea2d1052e39280babc910dc8 ""
+  "/usr/share/texmf-dist/fonts/tfm/jknappen/ec/ecbx1000.tfm" 1639192684 3584 2d666ecf6d466d8b007246bc2f94d9da ""
+  "/usr/share/texmf-dist/fonts/tfm/jknappen/ec/ecbx1440.tfm" 1639192684 3584 13049b61b922a28b158a38aeff75ee9b ""
+  "/usr/share/texmf-dist/fonts/tfm/jknappen/ec/ecrm1000.tfm" 1639192684 3584 adb004a0c8e7c46ee66cad73671f37b4 ""
+  "/usr/share/texmf-dist/fonts/tfm/jknappen/ec/ecrm1200.tfm" 1639192684 3584 f80ddd985bd00e29e9a6047ebd9d4781 ""
+  "/usr/share/texmf-dist/fonts/tfm/jknappen/ec/ecrm1440.tfm" 1639192684 3584 3169d30142b88a27d4ab0e3468e963a2 ""
+  "/usr/share/texmf-dist/fonts/tfm/jknappen/ec/ecrm1728.tfm" 1639192684 3584 3c76ccb63eda935a68ba65ba9da29f1a ""
+  "/usr/share/texmf-dist/fonts/tfm/public/cm/cmmi12.tfm" 1639192684 1524 4414a8315f39513458b80dfc63bff03a ""
+  "/usr/share/texmf-dist/fonts/tfm/public/cm/cmmi6.tfm" 1639192684 1512 f21f83efb36853c0b70002322c1ab3ad ""
+  "/usr/share/texmf-dist/fonts/tfm/public/cm/cmmi8.tfm" 1639192684 1520 eccf95517727cb11801f4f1aee3a21b4 ""
+  "/usr/share/texmf-dist/fonts/tfm/public/cm/cmr12.tfm" 1639192684 1288 655e228510b4c2a1abe905c368440826 ""
+  "/usr/share/texmf-dist/fonts/tfm/public/cm/cmr6.tfm" 1639192684 1300 b62933e007d01cfd073f79b963c01526 ""
+  "/usr/share/texmf-dist/fonts/tfm/public/cm/cmr8.tfm" 1639192684 1292 21c1c5bfeaebccffdb478fd231a0997d ""
+  "/usr/share/texmf-dist/fonts/tfm/public/cm/cmsy10.tfm" 1639192684 1124 6c73e740cf17375f03eec0ee63599741 ""
+  "/usr/share/texmf-dist/fonts/tfm/public/cm/cmsy6.tfm" 1639192684 1116 933a60c408fc0a863a92debe84b2d294 ""
+  "/usr/share/texmf-dist/fonts/tfm/public/cm/cmsy8.tfm" 1639192684 1120 8b7d695260f3cff42e636090a8002094 ""
+  "/usr/share/texmf-dist/fonts/type1/public/cm-super/sfbx1000.pfb" 1639192684 145408 43d44302ca7d82d487f511f83e309505 ""
+  "/usr/share/texmf-dist/fonts/type1/public/cm-super/sfbx1440.pfb" 1639192684 135942 859a90cad7494a1e79c94baf546d7de5 ""
+  "/usr/share/texmf-dist/fonts/type1/public/cm-super/sfrm1000.pfb" 1639192684 138258 6525c253f16cededa14c7fd0da7f67b2 ""
+  "/usr/share/texmf-dist/fonts/type1/public/cm-super/sfrm1200.pfb" 1639192684 136101 f533469f523533d38317ab5729d00c8a ""
+  "/usr/share/texmf-dist/fonts/type1/public/cm-super/sfrm1440.pfb" 1639192684 131078 d96015a2fa5c350129e933ca070b2484 ""
+  "/usr/share/texmf-dist/fonts/type1/public/cm-super/sfrm1728.pfb" 1639192684 131438 3aa300b3e40e5c8ba7b4e5c6cebc5dd6 ""
+  "/usr/share/texmf-dist/tex/context/base/mkii/supp-pdf.mkii" 1639192684 71627 94eb9990bed73c364d7f53f960cc8c5b ""
+  "/usr/share/texmf-dist/tex/generic/atbegshi/atbegshi.sty" 1639192684 24708 5584a51a7101caf7e6bbf1fc27d8f7b1 ""
+  "/usr/share/texmf-dist/tex/generic/babel-english/english.ldf" 1639192684 7008 9ff5fdcc865b01beca2b0fe4a46231d4 ""
+  "/usr/share/texmf-dist/tex/generic/babel/babel.def" 1639192684 118719 e672239d75d9419ba29850a1b391bd00 ""
+  "/usr/share/texmf-dist/tex/generic/babel/babel.sty" 1639192684 37894 44955682e4f134137b9d1033fb86e0ef ""
+  "/usr/share/texmf-dist/tex/generic/babel/txtbabel.def" 1639192684 5230 84624d139fa443f96294434bccf82f8c ""
+  "/usr/share/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty" 1639192684 40635 c40361e206be584d448876bba8a64a3b ""
+  "/usr/share/texmf-dist/tex/generic/bitset/bitset.sty" 1639192684 33961 6b5c75130e435b2bfdb9f480a09a39f9 ""
+  "/usr/share/texmf-dist/tex/generic/etexcmds/etexcmds.sty" 1639192684 7734 b98cbb34c81f667027c1e3ebdbfce34b ""
+  "/usr/share/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty" 1639192684 8371 9d55b8bd010bc717624922fb3477d92e ""
+  "/usr/share/texmf-dist/tex/generic/iftex/iftex.sty" 1639192684 6501 4011d89d9621e0b0901138815ba5ff29 ""
+  "/usr/share/texmf-dist/tex/generic/infwarerr/infwarerr.sty" 1639192684 8356 7bbb2c2373aa810be568c29e333da8ed ""
+  "/usr/share/texmf-dist/tex/generic/intcalc/intcalc.sty" 1639192684 31769 002a487f55041f8e805cfbf6385ffd97 ""
+  "/usr/share/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty" 1639192684 5412 d5a2436094cd7be85769db90f29250a6 ""
+  "/usr/share/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty" 1639192684 13807 952b0226d4efca026f0e19dd266dcc22 ""
+  "/usr/share/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty" 1639192684 17859 4409f8f50cd365c68e684407e5350b1b ""
+  "/usr/share/texmf-dist/tex/generic/pdfescape/pdfescape.sty" 1639192684 19007 15924f7228aca6c6d184b115f4baa231 ""
+  "/usr/share/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty" 1639192684 20089 80423eac55aa175305d35b49e04fe23b ""
+  "/usr/share/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty" 1639192684 7008 f92eaa0a3872ed622bbf538217cd2ab7 ""
+  "/usr/share/texmf-dist/tex/latex/atveryend/atveryend.sty" 1639192684 19336 ce7ae9438967282886b3b036cfad1e4d ""
+  "/usr/share/texmf-dist/tex/latex/auxhook/auxhook.sty" 1639192684 3935 57aa3c3e203a5c2effb4d2bd2efbc323 ""
+  "/usr/share/texmf-dist/tex/latex/base/article.cls" 1639192684 20145 aad8c3dd3bc36e260347b84002182bc2 ""
+  "/usr/share/texmf-dist/tex/latex/base/atbegshi-ltx.sty" 1639192684 2973 00085839f5881178c538db5970d3c38e ""
+  "/usr/share/texmf-dist/tex/latex/base/atveryend-ltx.sty" 1639192684 2596 b3a02e33035865e9f0457e064d436fb8 ""
+  "/usr/share/texmf-dist/tex/latex/base/fontenc.sty" 1639192684 4947 8cb7717f0cc771eca0fda15160c7fee9 ""
+  "/usr/share/texmf-dist/tex/latex/base/inputenc.sty" 1639192684 5050 0d3b77275060ca09a40635b830c3c904 ""
+  "/usr/share/texmf-dist/tex/latex/base/size10.clo" 1639192684 8449 a72d5d4e612221b46000c3d71724e0ef ""
+  "/usr/share/texmf-dist/tex/latex/graphics-cfg/color.cfg" 1639192684 1213 620bba36b25224fa9b7e1ccb4ecb76fd ""
+  "/usr/share/texmf-dist/tex/latex/graphics-def/pdftex.def" 1639192684 19103 48d29b6e2a64cb717117ef65f107b404 ""
+  "/usr/share/texmf-dist/tex/latex/graphics/color.sty" 1639192684 7102 5b27b7e61091c6128cd6300e21704e4b ""
+  "/usr/share/texmf-dist/tex/latex/graphics/keyval.sty" 1639192684 2590 e3b24ff953e5b58d924f163d25380312 ""
+  "/usr/share/texmf-dist/tex/latex/hycolor/hycolor.sty" 1639192684 17914 4c28a13fc3d975e6e81c9bea1d697276 ""
+  "/usr/share/texmf-dist/tex/latex/hyperref/hpdftex.def" 1639192684 49890 ad792e908af8bc5c293b806bd181e58d ""
+  "/usr/share/texmf-dist/tex/latex/hyperref/hyperref-langpatches.def" 1639192684 1777 31eee4f3f5c138e44a4e16abfcaefa41 ""
+  "/usr/share/texmf-dist/tex/latex/hyperref/hyperref.sty" 1639192684 230839 177eac084bda18ae827a77792a17292e ""
+  "/usr/share/texmf-dist/tex/latex/hyperref/nameref.sty" 1639192684 13242 133e617c5eebffdd05e421624022b267 ""
+  "/usr/share/texmf-dist/tex/latex/hyperref/pd1enc.def" 1639192684 14132 3a8b7a8250bdb5871e322188be7c9ff6 ""
+  "/usr/share/texmf-dist/tex/latex/hyperref/puenc.def" 1639192684 117004 7c05c6dde5b2b6a14f97dd4137739212 ""
+  "/usr/share/texmf-dist/tex/latex/kvoptions/kvoptions.sty" 1639192684 22521 d2fceb764a442a2001d257ef11db7618 ""
+  "/usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def" 1639192684 27164 3d5f7887a89df4eb2f6e86ba26ef3254 ""
+  "/usr/share/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty" 1639192684 5766 13a9e8766c47f30327caf893ece86ac8 ""
+  "/usr/share/texmf-dist/tex/latex/refcount/refcount.sty" 1639192684 9878 9e94e8fa600d95f9c7731bb21dfb67a4 ""
+  "/usr/share/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty" 1639192684 9715 b051d5b493d9fe5f4bc251462d039e5f ""
+  "/usr/share/texmf-dist/tex/latex/tools/xspace.sty" 1639192684 4546 3e6071704acf4f66392376b7b66ae02c ""
+  "/usr/share/texmf-dist/tex/latex/url/url.sty" 1639192684 12796 8edb7d69a20b857904dd0ea757c14ec9 ""
+  "/usr/share/texmf-dist/web2c/texmf.cnf" 1655305253 39967 c1691bf11496e9d6ea53f7eba5c4754e ""
+  "/usr/share/texmf-var/fonts/map/pdftex/updmap/pdftex.map" 1666812724 334227 92f850e77170e97d49db3fab2645ba0e ""
+  "/usr/share/texmf-var/web2c/pdftex/pdflatex.fmt" 1666812714 2724585 b6375174b219d1c10c09304c4f573890 ""
+  (generated)
+  "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.aux"
+  "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.out"
+  "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.pdf"
+  "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.log"
+  "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.toc"
+  "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/introduction.aux"
diff --git a/docs/user_manual/main.fls b/docs/user_manual/main.fls
new file mode 100644
index 0000000..5e3a297
--- /dev/null
+++ b/docs/user_manual/main.fls
@@ -0,0 +1,491 @@
+PWD /home/pigeonmoelleux/Documents/ENS/M1/Génie logiciel/effovex/docs/user_manual
+INPUT /usr/share/texmf-dist/web2c/texmf.cnf
+INPUT /usr/share/texmf-var/web2c/pdftex/pdflatex.fmt
+INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.tex
+OUTPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.log
+INPUT /usr/share/texmf-dist/tex/latex/base/article.cls
+INPUT /usr/share/texmf-dist/tex/latex/base/article.cls
+INPUT /usr/share/texmf-dist/tex/latex/base/article.cls
+INPUT /usr/share/texmf-dist/tex/latex/base/article.cls
+INPUT /usr/share/texmf-dist/tex/latex/base/article.cls
+INPUT /usr/share/texmf-dist/tex/latex/base/article.cls
+INPUT /usr/share/texmf-dist/tex/latex/base/article.cls
+INPUT /usr/share/texmf-dist/tex/latex/base/article.cls
+INPUT /usr/share/texmf-dist/tex/latex/base/article.cls
+INPUT /usr/share/texmf-dist/tex/latex/base/article.cls
+INPUT /usr/share/texmf-dist/tex/latex/base/article.cls
+INPUT /usr/share/texmf-dist/tex/latex/base/size10.clo
+INPUT /usr/share/texmf-dist/tex/latex/base/size10.clo
+INPUT /usr/share/texmf-dist/tex/latex/base/size10.clo
+INPUT /usr/share/texmf-dist/tex/latex/base/size10.clo
+INPUT /usr/share/texmf-dist/tex/latex/base/inputenc.sty
+INPUT /usr/share/texmf-dist/tex/latex/base/inputenc.sty
+INPUT /usr/share/texmf-dist/tex/latex/base/inputenc.sty
+INPUT /usr/share/texmf-dist/tex/latex/base/inputenc.sty
+INPUT /usr/share/texmf-dist/tex/latex/base/inputenc.sty
+INPUT /usr/share/texmf-dist/tex/latex/base/inputenc.sty
+INPUT /usr/share/texmf-dist/tex/latex/base/inputenc.sty
+INPUT /usr/share/texmf-dist/tex/latex/base/inputenc.sty
+INPUT /usr/share/texmf-dist/tex/latex/base/inputenc.sty
+INPUT /usr/share/texmf-dist/tex/latex/base/inputenc.sty
+INPUT /usr/share/texmf-dist/tex/latex/base/inputenc.sty
+INPUT /usr/share/texmf-dist/tex/latex/base/fontenc.sty
+INPUT /usr/share/texmf-dist/tex/latex/base/fontenc.sty
+INPUT /usr/share/texmf-dist/tex/latex/base/fontenc.sty
+INPUT /usr/share/texmf-dist/tex/latex/base/fontenc.sty
+INPUT /usr/share/texmf-dist/tex/latex/base/fontenc.sty
+INPUT /usr/share/texmf-dist/tex/latex/base/fontenc.sty
+INPUT /usr/share/texmf-dist/tex/latex/base/fontenc.sty
+INPUT /usr/share/texmf-dist/tex/latex/base/fontenc.sty
+INPUT /usr/share/texmf-dist/tex/latex/base/fontenc.sty
+INPUT /usr/share/texmf-dist/tex/latex/base/fontenc.sty
+INPUT /usr/share/texmf-dist/tex/latex/base/fontenc.sty
+INPUT /usr/share/texmf-dist/fonts/map/fontname/texfonts.map
+INPUT /usr/share/texmf-dist/fonts/tfm/jknappen/ec/ecrm1000.tfm
+INPUT /usr/share/texmf-dist/tex/generic/babel/babel.sty
+INPUT /usr/share/texmf-dist/tex/generic/babel/babel.sty
+INPUT /usr/share/texmf-dist/tex/generic/babel/babel.sty
+INPUT /usr/share/texmf-dist/tex/generic/babel/babel.sty
+INPUT /usr/share/texmf-dist/tex/generic/babel/babel.sty
+INPUT /usr/share/texmf-dist/tex/generic/babel/babel.sty
+INPUT /usr/share/texmf-dist/tex/generic/babel/babel.sty
+INPUT /usr/share/texmf-dist/tex/generic/babel/babel.sty
+INPUT /usr/share/texmf-dist/tex/generic/babel/babel.sty
+INPUT /usr/share/texmf-dist/tex/generic/babel/babel.sty
+INPUT /usr/share/texmf-dist/tex/generic/babel/babel.sty
+INPUT /usr/share/texmf-dist/tex/generic/babel/babel.def
+INPUT /usr/share/texmf-dist/tex/generic/babel/txtbabel.def
+INPUT /usr/share/texmf-dist/tex/generic/babel-english/english.ldf
+INPUT /usr/share/texmf-dist/tex/generic/babel-english/english.ldf
+INPUT /usr/share/texmf-dist/tex/generic/babel-english/english.ldf
+INPUT /usr/share/texmf-dist/tex/generic/babel-english/english.ldf
+INPUT /usr/share/texmf-dist/tex/latex/hyperref/hyperref.sty
+INPUT /usr/share/texmf-dist/tex/latex/hyperref/hyperref.sty
+INPUT /usr/share/texmf-dist/tex/latex/hyperref/hyperref.sty
+INPUT /usr/share/texmf-dist/tex/latex/hyperref/hyperref.sty
+INPUT /usr/share/texmf-dist/tex/latex/hyperref/hyperref.sty
+INPUT /usr/share/texmf-dist/tex/latex/hyperref/hyperref.sty
+INPUT /usr/share/texmf-dist/tex/latex/hyperref/hyperref.sty
+INPUT /usr/share/texmf-dist/tex/latex/hyperref/hyperref.sty
+INPUT /usr/share/texmf-dist/tex/latex/hyperref/hyperref.sty
+INPUT /usr/share/texmf-dist/tex/latex/hyperref/hyperref.sty
+INPUT /usr/share/texmf-dist/tex/latex/hyperref/hyperref.sty
+INPUT /usr/share/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty
+INPUT /usr/share/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty
+INPUT /usr/share/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty
+INPUT /usr/share/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty
+INPUT /usr/share/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty
+INPUT /usr/share/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty
+INPUT /usr/share/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty
+INPUT /usr/share/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty
+INPUT /usr/share/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty
+INPUT /usr/share/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty
+INPUT /usr/share/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty
+INPUT /usr/share/texmf-dist/tex/generic/iftex/iftex.sty
+INPUT /usr/share/texmf-dist/tex/generic/iftex/iftex.sty
+INPUT /usr/share/texmf-dist/tex/generic/iftex/iftex.sty
+INPUT /usr/share/texmf-dist/tex/generic/iftex/iftex.sty
+INPUT /usr/share/texmf-dist/tex/generic/iftex/iftex.sty
+INPUT /usr/share/texmf-dist/tex/generic/iftex/iftex.sty
+INPUT /usr/share/texmf-dist/tex/generic/iftex/iftex.sty
+INPUT /usr/share/texmf-dist/tex/generic/iftex/iftex.sty
+INPUT /usr/share/texmf-dist/tex/generic/iftex/iftex.sty
+INPUT /usr/share/texmf-dist/tex/generic/iftex/iftex.sty
+INPUT /usr/share/texmf-dist/tex/generic/iftex/iftex.sty
+INPUT /usr/share/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty
+INPUT /usr/share/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty
+INPUT /usr/share/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty
+INPUT /usr/share/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty
+INPUT /usr/share/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty
+INPUT /usr/share/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty
+INPUT /usr/share/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty
+INPUT /usr/share/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty
+INPUT /usr/share/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty
+INPUT /usr/share/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty
+INPUT /usr/share/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty
+INPUT /usr/share/texmf-dist/tex/generic/infwarerr/infwarerr.sty
+INPUT /usr/share/texmf-dist/tex/generic/infwarerr/infwarerr.sty
+INPUT /usr/share/texmf-dist/tex/generic/infwarerr/infwarerr.sty
+INPUT /usr/share/texmf-dist/tex/generic/infwarerr/infwarerr.sty
+INPUT /usr/share/texmf-dist/tex/generic/infwarerr/infwarerr.sty
+INPUT /usr/share/texmf-dist/tex/generic/infwarerr/infwarerr.sty
+INPUT /usr/share/texmf-dist/tex/generic/infwarerr/infwarerr.sty
+INPUT /usr/share/texmf-dist/tex/generic/infwarerr/infwarerr.sty
+INPUT /usr/share/texmf-dist/tex/generic/infwarerr/infwarerr.sty
+INPUT /usr/share/texmf-dist/tex/generic/infwarerr/infwarerr.sty
+INPUT /usr/share/texmf-dist/tex/generic/infwarerr/infwarerr.sty
+INPUT /usr/share/texmf-dist/tex/generic/iftex/iftex.sty
+INPUT /usr/share/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty
+INPUT /usr/share/texmf-dist/tex/generic/infwarerr/infwarerr.sty
+INPUT /usr/share/texmf-dist/tex/latex/graphics/keyval.sty
+INPUT /usr/share/texmf-dist/tex/latex/graphics/keyval.sty
+INPUT /usr/share/texmf-dist/tex/latex/graphics/keyval.sty
+INPUT /usr/share/texmf-dist/tex/latex/graphics/keyval.sty
+INPUT /usr/share/texmf-dist/tex/latex/graphics/keyval.sty
+INPUT /usr/share/texmf-dist/tex/latex/graphics/keyval.sty
+INPUT /usr/share/texmf-dist/tex/latex/graphics/keyval.sty
+INPUT /usr/share/texmf-dist/tex/latex/graphics/keyval.sty
+INPUT /usr/share/texmf-dist/tex/latex/graphics/keyval.sty
+INPUT /usr/share/texmf-dist/tex/latex/graphics/keyval.sty
+INPUT /usr/share/texmf-dist/tex/latex/graphics/keyval.sty
+INPUT /usr/share/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty
+INPUT /usr/share/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty
+INPUT /usr/share/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty
+INPUT /usr/share/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty
+INPUT /usr/share/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty
+INPUT /usr/share/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty
+INPUT /usr/share/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty
+INPUT /usr/share/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty
+INPUT /usr/share/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty
+INPUT /usr/share/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty
+INPUT /usr/share/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty
+INPUT /usr/share/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty
+INPUT /usr/share/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty
+INPUT /usr/share/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty
+INPUT /usr/share/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty
+INPUT /usr/share/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty
+INPUT /usr/share/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty
+INPUT /usr/share/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty
+INPUT /usr/share/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty
+INPUT /usr/share/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty
+INPUT /usr/share/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty
+INPUT /usr/share/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty
+INPUT /usr/share/texmf-dist/tex/generic/pdfescape/pdfescape.sty
+INPUT /usr/share/texmf-dist/tex/generic/pdfescape/pdfescape.sty
+INPUT /usr/share/texmf-dist/tex/generic/pdfescape/pdfescape.sty
+INPUT /usr/share/texmf-dist/tex/generic/pdfescape/pdfescape.sty
+INPUT /usr/share/texmf-dist/tex/generic/pdfescape/pdfescape.sty
+INPUT /usr/share/texmf-dist/tex/generic/pdfescape/pdfescape.sty
+INPUT /usr/share/texmf-dist/tex/generic/pdfescape/pdfescape.sty
+INPUT /usr/share/texmf-dist/tex/generic/pdfescape/pdfescape.sty
+INPUT /usr/share/texmf-dist/tex/generic/pdfescape/pdfescape.sty
+INPUT /usr/share/texmf-dist/tex/generic/pdfescape/pdfescape.sty
+INPUT /usr/share/texmf-dist/tex/generic/pdfescape/pdfescape.sty
+INPUT /usr/share/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty
+INPUT /usr/share/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty
+INPUT /usr/share/texmf-dist/tex/latex/hycolor/hycolor.sty
+INPUT /usr/share/texmf-dist/tex/latex/hycolor/hycolor.sty
+INPUT /usr/share/texmf-dist/tex/latex/hycolor/hycolor.sty
+INPUT /usr/share/texmf-dist/tex/latex/hycolor/hycolor.sty
+INPUT /usr/share/texmf-dist/tex/latex/hycolor/hycolor.sty
+INPUT /usr/share/texmf-dist/tex/latex/hycolor/hycolor.sty
+INPUT /usr/share/texmf-dist/tex/latex/hycolor/hycolor.sty
+INPUT /usr/share/texmf-dist/tex/latex/hycolor/hycolor.sty
+INPUT /usr/share/texmf-dist/tex/latex/hycolor/hycolor.sty
+INPUT /usr/share/texmf-dist/tex/latex/hycolor/hycolor.sty
+INPUT /usr/share/texmf-dist/tex/latex/hycolor/hycolor.sty
+INPUT /usr/share/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty
+INPUT /usr/share/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty
+INPUT /usr/share/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty
+INPUT /usr/share/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty
+INPUT /usr/share/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty
+INPUT /usr/share/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty
+INPUT /usr/share/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty
+INPUT /usr/share/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty
+INPUT /usr/share/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty
+INPUT /usr/share/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty
+INPUT /usr/share/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty
+INPUT /usr/share/texmf-dist/tex/latex/auxhook/auxhook.sty
+INPUT /usr/share/texmf-dist/tex/latex/auxhook/auxhook.sty
+INPUT /usr/share/texmf-dist/tex/latex/auxhook/auxhook.sty
+INPUT /usr/share/texmf-dist/tex/latex/auxhook/auxhook.sty
+INPUT /usr/share/texmf-dist/tex/latex/auxhook/auxhook.sty
+INPUT /usr/share/texmf-dist/tex/latex/auxhook/auxhook.sty
+INPUT /usr/share/texmf-dist/tex/latex/auxhook/auxhook.sty
+INPUT /usr/share/texmf-dist/tex/latex/auxhook/auxhook.sty
+INPUT /usr/share/texmf-dist/tex/latex/auxhook/auxhook.sty
+INPUT /usr/share/texmf-dist/tex/latex/auxhook/auxhook.sty
+INPUT /usr/share/texmf-dist/tex/latex/auxhook/auxhook.sty
+INPUT /usr/share/texmf-dist/tex/latex/kvoptions/kvoptions.sty
+INPUT /usr/share/texmf-dist/tex/latex/kvoptions/kvoptions.sty
+INPUT /usr/share/texmf-dist/tex/latex/kvoptions/kvoptions.sty
+INPUT /usr/share/texmf-dist/tex/latex/kvoptions/kvoptions.sty
+INPUT /usr/share/texmf-dist/tex/latex/kvoptions/kvoptions.sty
+INPUT /usr/share/texmf-dist/tex/latex/kvoptions/kvoptions.sty
+INPUT /usr/share/texmf-dist/tex/latex/kvoptions/kvoptions.sty
+INPUT /usr/share/texmf-dist/tex/latex/kvoptions/kvoptions.sty
+INPUT /usr/share/texmf-dist/tex/latex/kvoptions/kvoptions.sty
+INPUT /usr/share/texmf-dist/tex/latex/kvoptions/kvoptions.sty
+INPUT /usr/share/texmf-dist/tex/latex/kvoptions/kvoptions.sty
+INPUT /usr/share/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty
+INPUT /usr/share/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty
+INPUT /usr/share/texmf-dist/tex/latex/hyperref/pd1enc.def
+INPUT /usr/share/texmf-dist/tex/latex/hyperref/pd1enc.def
+INPUT /usr/share/texmf-dist/tex/latex/hyperref/pd1enc.def
+INPUT /usr/share/texmf-dist/tex/latex/hyperref/pd1enc.def
+INPUT /usr/share/texmf-dist/tex/latex/hyperref/hyperref-langpatches.def
+INPUT /usr/share/texmf-dist/tex/latex/hyperref/hyperref-langpatches.def
+INPUT /usr/share/texmf-dist/tex/latex/hyperref/hyperref-langpatches.def
+INPUT /usr/share/texmf-dist/tex/latex/hyperref/hyperref-langpatches.def
+INPUT /usr/share/texmf-dist/tex/generic/intcalc/intcalc.sty
+INPUT /usr/share/texmf-dist/tex/generic/intcalc/intcalc.sty
+INPUT /usr/share/texmf-dist/tex/generic/intcalc/intcalc.sty
+INPUT /usr/share/texmf-dist/tex/generic/intcalc/intcalc.sty
+INPUT /usr/share/texmf-dist/tex/generic/intcalc/intcalc.sty
+INPUT /usr/share/texmf-dist/tex/generic/intcalc/intcalc.sty
+INPUT /usr/share/texmf-dist/tex/generic/intcalc/intcalc.sty
+INPUT /usr/share/texmf-dist/tex/generic/intcalc/intcalc.sty
+INPUT /usr/share/texmf-dist/tex/generic/intcalc/intcalc.sty
+INPUT /usr/share/texmf-dist/tex/generic/intcalc/intcalc.sty
+INPUT /usr/share/texmf-dist/tex/generic/intcalc/intcalc.sty
+INPUT /usr/share/texmf-dist/tex/generic/etexcmds/etexcmds.sty
+INPUT /usr/share/texmf-dist/tex/generic/etexcmds/etexcmds.sty
+INPUT /usr/share/texmf-dist/tex/generic/etexcmds/etexcmds.sty
+INPUT /usr/share/texmf-dist/tex/generic/etexcmds/etexcmds.sty
+INPUT /usr/share/texmf-dist/tex/generic/etexcmds/etexcmds.sty
+INPUT /usr/share/texmf-dist/tex/generic/etexcmds/etexcmds.sty
+INPUT /usr/share/texmf-dist/tex/generic/etexcmds/etexcmds.sty
+INPUT /usr/share/texmf-dist/tex/generic/etexcmds/etexcmds.sty
+INPUT /usr/share/texmf-dist/tex/generic/etexcmds/etexcmds.sty
+INPUT /usr/share/texmf-dist/tex/generic/etexcmds/etexcmds.sty
+INPUT /usr/share/texmf-dist/tex/generic/etexcmds/etexcmds.sty
+INPUT /usr/share/texmf-dist/tex/generic/infwarerr/infwarerr.sty
+INPUT /usr/share/texmf-dist/tex/generic/iftex/iftex.sty
+INPUT /usr/share/texmf-dist/tex/latex/hyperref/puenc.def
+INPUT /usr/share/texmf-dist/tex/latex/hyperref/puenc.def
+INPUT /usr/share/texmf-dist/tex/latex/hyperref/puenc.def
+INPUT /usr/share/texmf-dist/tex/latex/hyperref/puenc.def
+INPUT /usr/share/texmf-dist/tex/latex/url/url.sty
+INPUT /usr/share/texmf-dist/tex/latex/url/url.sty
+INPUT /usr/share/texmf-dist/tex/latex/url/url.sty
+INPUT /usr/share/texmf-dist/tex/latex/url/url.sty
+INPUT /usr/share/texmf-dist/tex/latex/url/url.sty
+INPUT /usr/share/texmf-dist/tex/latex/url/url.sty
+INPUT /usr/share/texmf-dist/tex/latex/url/url.sty
+INPUT /usr/share/texmf-dist/tex/latex/url/url.sty
+INPUT /usr/share/texmf-dist/tex/latex/url/url.sty
+INPUT /usr/share/texmf-dist/tex/latex/url/url.sty
+INPUT /usr/share/texmf-dist/tex/latex/url/url.sty
+INPUT /usr/share/texmf-dist/tex/generic/bitset/bitset.sty
+INPUT /usr/share/texmf-dist/tex/generic/bitset/bitset.sty
+INPUT /usr/share/texmf-dist/tex/generic/bitset/bitset.sty
+INPUT /usr/share/texmf-dist/tex/generic/bitset/bitset.sty
+INPUT /usr/share/texmf-dist/tex/generic/bitset/bitset.sty
+INPUT /usr/share/texmf-dist/tex/generic/bitset/bitset.sty
+INPUT /usr/share/texmf-dist/tex/generic/bitset/bitset.sty
+INPUT /usr/share/texmf-dist/tex/generic/bitset/bitset.sty
+INPUT /usr/share/texmf-dist/tex/generic/bitset/bitset.sty
+INPUT /usr/share/texmf-dist/tex/generic/bitset/bitset.sty
+INPUT /usr/share/texmf-dist/tex/generic/bitset/bitset.sty
+INPUT /usr/share/texmf-dist/tex/generic/infwarerr/infwarerr.sty
+INPUT /usr/share/texmf-dist/tex/generic/intcalc/intcalc.sty
+INPUT /usr/share/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty
+INPUT /usr/share/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty
+INPUT /usr/share/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty
+INPUT /usr/share/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty
+INPUT /usr/share/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty
+INPUT /usr/share/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty
+INPUT /usr/share/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty
+INPUT /usr/share/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty
+INPUT /usr/share/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty
+INPUT /usr/share/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty
+INPUT /usr/share/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty
+INPUT /usr/share/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty
+INPUT /usr/share/texmf-dist/tex/generic/atbegshi/atbegshi.sty
+INPUT /usr/share/texmf-dist/tex/generic/atbegshi/atbegshi.sty
+INPUT /usr/share/texmf-dist/tex/generic/atbegshi/atbegshi.sty
+INPUT /usr/share/texmf-dist/tex/latex/base/atbegshi-ltx.sty
+INPUT /usr/share/texmf-dist/tex/generic/atbegshi/atbegshi.sty
+INPUT /usr/share/texmf-dist/tex/generic/atbegshi/atbegshi.sty
+INPUT /usr/share/texmf-dist/tex/latex/base/atbegshi-ltx.sty
+INPUT /usr/share/texmf-dist/tex/generic/atbegshi/atbegshi.sty
+INPUT /usr/share/texmf-dist/tex/latex/base/atbegshi-ltx.sty
+INPUT /usr/share/texmf-dist/tex/latex/base/atbegshi-ltx.sty
+INPUT /usr/share/texmf-dist/tex/generic/atbegshi/atbegshi.sty
+INPUT /usr/share/texmf-dist/tex/generic/atbegshi/atbegshi.sty
+INPUT /usr/share/texmf-dist/tex/latex/base/atbegshi-ltx.sty
+INPUT /usr/share/texmf-dist/tex/latex/base/atbegshi-ltx.sty
+INPUT /usr/share/texmf-dist/tex/generic/atbegshi/atbegshi.sty
+INPUT /usr/share/texmf-dist/tex/latex/base/atbegshi-ltx.sty
+INPUT /usr/share/texmf-dist/tex/latex/hyperref/hpdftex.def
+INPUT /usr/share/texmf-dist/tex/latex/hyperref/hpdftex.def
+INPUT /usr/share/texmf-dist/tex/latex/hyperref/hpdftex.def
+INPUT /usr/share/texmf-dist/tex/latex/hyperref/hpdftex.def
+INPUT /usr/share/texmf-dist/tex/latex/atveryend/atveryend.sty
+INPUT /usr/share/texmf-dist/tex/latex/atveryend/atveryend.sty
+INPUT /usr/share/texmf-dist/tex/latex/atveryend/atveryend.sty
+INPUT /usr/share/texmf-dist/tex/latex/base/atveryend-ltx.sty
+INPUT /usr/share/texmf-dist/tex/latex/atveryend/atveryend.sty
+INPUT /usr/share/texmf-dist/tex/latex/atveryend/atveryend.sty
+INPUT /usr/share/texmf-dist/tex/latex/base/atveryend-ltx.sty
+INPUT /usr/share/texmf-dist/tex/latex/atveryend/atveryend.sty
+INPUT /usr/share/texmf-dist/tex/latex/base/atveryend-ltx.sty
+INPUT /usr/share/texmf-dist/tex/latex/base/atveryend-ltx.sty
+INPUT /usr/share/texmf-dist/tex/latex/atveryend/atveryend.sty
+INPUT /usr/share/texmf-dist/tex/latex/atveryend/atveryend.sty
+INPUT /usr/share/texmf-dist/tex/latex/base/atveryend-ltx.sty
+INPUT /usr/share/texmf-dist/tex/latex/base/atveryend-ltx.sty
+INPUT /usr/share/texmf-dist/tex/latex/atveryend/atveryend.sty
+INPUT /usr/share/texmf-dist/tex/latex/base/atveryend-ltx.sty
+INPUT /usr/share/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty
+INPUT /usr/share/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty
+INPUT /usr/share/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty
+INPUT /usr/share/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty
+INPUT /usr/share/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty
+INPUT /usr/share/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty
+INPUT /usr/share/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty
+INPUT /usr/share/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty
+INPUT /usr/share/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty
+INPUT /usr/share/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty
+INPUT /usr/share/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty
+INPUT /usr/share/texmf-dist/tex/latex/kvoptions/kvoptions.sty
+INPUT /usr/share/texmf-dist/tex/generic/infwarerr/infwarerr.sty
+INPUT /usr/share/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty
+INPUT /usr/share/texmf-dist/tex/latex/atveryend/atveryend.sty
+INPUT /usr/share/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty
+INPUT /usr/share/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty
+INPUT /usr/share/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty
+INPUT /usr/share/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty
+INPUT /usr/share/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty
+INPUT /usr/share/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty
+INPUT /usr/share/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty
+INPUT /usr/share/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty
+INPUT /usr/share/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty
+INPUT /usr/share/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty
+INPUT /usr/share/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty
+INPUT /usr/share/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty
+INPUT /usr/share/texmf-dist/tex/generic/infwarerr/infwarerr.sty
+INPUT /usr/share/texmf-dist/tex/latex/tools/xspace.sty
+INPUT /usr/share/texmf-dist/tex/latex/tools/xspace.sty
+INPUT /usr/share/texmf-dist/tex/latex/tools/xspace.sty
+INPUT /usr/share/texmf-dist/tex/latex/tools/xspace.sty
+INPUT /usr/share/texmf-dist/tex/latex/tools/xspace.sty
+INPUT /usr/share/texmf-dist/tex/latex/tools/xspace.sty
+INPUT /usr/share/texmf-dist/tex/latex/tools/xspace.sty
+INPUT /usr/share/texmf-dist/tex/latex/tools/xspace.sty
+INPUT /usr/share/texmf-dist/tex/latex/tools/xspace.sty
+INPUT /usr/share/texmf-dist/tex/latex/tools/xspace.sty
+INPUT /usr/share/texmf-dist/tex/latex/tools/xspace.sty
+INPUT /usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
+INPUT /usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
+INPUT /usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
+INPUT /usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
+INPUT /usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
+INPUT /usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
+INPUT /usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
+INPUT /usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
+INPUT /usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
+INPUT /usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
+INPUT /usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
+INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.aux
+INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.aux
+INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.aux
+INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/introduction.aux
+INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/introduction.aux
+INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/introduction.aux
+OUTPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.aux
+INPUT /usr/share/texmf-dist/tex/latex/graphics/color.sty
+INPUT /usr/share/texmf-dist/tex/latex/graphics/color.sty
+INPUT /usr/share/texmf-dist/tex/latex/graphics/color.sty
+INPUT /usr/share/texmf-dist/tex/latex/graphics/color.sty
+INPUT /usr/share/texmf-dist/tex/latex/graphics/color.sty
+INPUT /usr/share/texmf-dist/tex/latex/graphics/color.sty
+INPUT /usr/share/texmf-dist/tex/latex/graphics/color.sty
+INPUT /usr/share/texmf-dist/tex/latex/graphics/color.sty
+INPUT /usr/share/texmf-dist/tex/latex/graphics/color.sty
+INPUT /usr/share/texmf-dist/tex/latex/graphics/color.sty
+INPUT /usr/share/texmf-dist/tex/latex/graphics/color.sty
+INPUT /usr/share/texmf-dist/tex/latex/graphics-cfg/color.cfg
+INPUT /usr/share/texmf-dist/tex/latex/graphics-cfg/color.cfg
+INPUT /usr/share/texmf-dist/tex/latex/graphics-cfg/color.cfg
+INPUT /usr/share/texmf-dist/tex/latex/graphics-cfg/color.cfg
+INPUT /usr/share/texmf-dist/tex/latex/graphics-def/pdftex.def
+INPUT /usr/share/texmf-dist/tex/latex/graphics-def/pdftex.def
+INPUT /usr/share/texmf-dist/tex/latex/graphics-def/pdftex.def
+INPUT /usr/share/texmf-dist/tex/latex/graphics-def/pdftex.def
+INPUT /usr/share/texmf-dist/tex/context/base/mkii/supp-pdf.mkii
+INPUT /usr/share/texmf-dist/tex/context/base/mkii/supp-pdf.mkii
+INPUT /usr/share/texmf-dist/tex/context/base/mkii/supp-pdf.mkii
+INPUT /usr/share/texmf-dist/tex/context/base/mkii/supp-pdf.mkii
+INPUT /usr/share/texmf-dist/tex/latex/hyperref/nameref.sty
+INPUT /usr/share/texmf-dist/tex/latex/hyperref/nameref.sty
+INPUT /usr/share/texmf-dist/tex/latex/hyperref/nameref.sty
+INPUT /usr/share/texmf-dist/tex/latex/hyperref/nameref.sty
+INPUT /usr/share/texmf-dist/tex/latex/hyperref/nameref.sty
+INPUT /usr/share/texmf-dist/tex/latex/hyperref/nameref.sty
+INPUT /usr/share/texmf-dist/tex/latex/hyperref/nameref.sty
+INPUT /usr/share/texmf-dist/tex/latex/hyperref/nameref.sty
+INPUT /usr/share/texmf-dist/tex/latex/hyperref/nameref.sty
+INPUT /usr/share/texmf-dist/tex/latex/hyperref/nameref.sty
+INPUT /usr/share/texmf-dist/tex/latex/hyperref/nameref.sty
+INPUT /usr/share/texmf-dist/tex/latex/refcount/refcount.sty
+INPUT /usr/share/texmf-dist/tex/latex/refcount/refcount.sty
+INPUT /usr/share/texmf-dist/tex/latex/refcount/refcount.sty
+INPUT /usr/share/texmf-dist/tex/latex/refcount/refcount.sty
+INPUT /usr/share/texmf-dist/tex/latex/refcount/refcount.sty
+INPUT /usr/share/texmf-dist/tex/latex/refcount/refcount.sty
+INPUT /usr/share/texmf-dist/tex/latex/refcount/refcount.sty
+INPUT /usr/share/texmf-dist/tex/latex/refcount/refcount.sty
+INPUT /usr/share/texmf-dist/tex/latex/refcount/refcount.sty
+INPUT /usr/share/texmf-dist/tex/latex/refcount/refcount.sty
+INPUT /usr/share/texmf-dist/tex/latex/refcount/refcount.sty
+INPUT /usr/share/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty
+INPUT /usr/share/texmf-dist/tex/generic/infwarerr/infwarerr.sty
+INPUT /usr/share/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty
+INPUT /usr/share/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty
+INPUT /usr/share/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty
+INPUT /usr/share/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty
+INPUT /usr/share/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty
+INPUT /usr/share/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty
+INPUT /usr/share/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty
+INPUT /usr/share/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty
+INPUT /usr/share/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty
+INPUT /usr/share/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty
+INPUT /usr/share/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty
+INPUT /usr/share/texmf-dist/tex/latex/kvoptions/kvoptions.sty
+INPUT /usr/share/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty
+INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.out
+INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.out
+INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.out
+INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.out
+INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.out
+INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.out
+INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.out
+INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.out
+OUTPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.pdf
+INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.out
+INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.out
+OUTPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.out
+INPUT /usr/share/texmf-dist/fonts/tfm/jknappen/ec/ecrm1728.tfm
+INPUT /usr/share/texmf-dist/fonts/tfm/jknappen/ec/ecrm1440.tfm
+INPUT /usr/share/texmf-dist/fonts/tfm/jknappen/ec/ecrm1200.tfm
+INPUT /usr/share/texmf-dist/fonts/tfm/public/cm/cmr12.tfm
+INPUT /usr/share/texmf-dist/fonts/tfm/public/cm/cmr8.tfm
+INPUT /usr/share/texmf-dist/fonts/tfm/public/cm/cmr6.tfm
+INPUT /usr/share/texmf-dist/fonts/tfm/public/cm/cmmi12.tfm
+INPUT /usr/share/texmf-dist/fonts/tfm/public/cm/cmmi8.tfm
+INPUT /usr/share/texmf-dist/fonts/tfm/public/cm/cmmi6.tfm
+INPUT /usr/share/texmf-dist/fonts/tfm/public/cm/cmsy10.tfm
+INPUT /usr/share/texmf-dist/fonts/tfm/public/cm/cmsy8.tfm
+INPUT /usr/share/texmf-dist/fonts/tfm/public/cm/cmsy6.tfm
+INPUT /usr/share/texmf-dist/fonts/tfm/jknappen/ec/ecbx1440.tfm
+INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.toc
+INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.toc
+INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.toc
+INPUT /usr/share/texmf-dist/fonts/tfm/jknappen/ec/ecbx1000.tfm
+OUTPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.toc
+INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/introduction.tex
+INPUT /usr/share/texmf-var/fonts/map/pdftex/updmap/pdftex.map
+OUTPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/introduction.aux
+INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/introduction.tex
+INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/introduction.tex
+INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/introduction.tex
+INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/introduction.tex
+INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/introduction.tex
+INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/introduction.tex
+INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/introduction.tex
+INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/introduction.tex
+INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/introduction.tex
+INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.aux
+INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/introduction.aux
+INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/introduction.aux
+INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/introduction.aux
+INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.out
+INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.out
+INPUT /usr/share/texmf-dist/fonts/enc/dvips/cm-super/cm-super-t1.enc
+INPUT /usr/share/texmf-dist/fonts/type1/public/cm-super/sfbx1000.pfb
+INPUT /usr/share/texmf-dist/fonts/type1/public/cm-super/sfbx1440.pfb
+INPUT /usr/share/texmf-dist/fonts/type1/public/cm-super/sfrm1000.pfb
+INPUT /usr/share/texmf-dist/fonts/type1/public/cm-super/sfrm1200.pfb
+INPUT /usr/share/texmf-dist/fonts/type1/public/cm-super/sfrm1440.pfb
+INPUT /usr/share/texmf-dist/fonts/type1/public/cm-super/sfrm1728.pfb
diff --git a/docs/user_manual/main.log b/docs/user_manual/main.log
new file mode 100644
index 0000000..c648017
--- /dev/null
+++ b/docs/user_manual/main.log
@@ -0,0 +1,262 @@
+This is pdfTeX, Version 3.141592653-2.6-1.40.22 (TeX Live 2021/VoidLinux) (preloaded format=pdflatex 2022.10.26)  24 NOV 2022 12:39
+entering extended mode
+ restricted \write18 enabled.
+ file:line:error style messages enabled.
+ %&-line parsing enabled.
+**"/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.tex"
+(/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.tex
+LaTeX2e <2020-10-01> patch level 4
+L3 programming layer <2021-02-18> (/usr/share/texmf-dist/tex/latex/base/article.cls
+Document Class: article 2020/04/10 v1.4m Standard LaTeX document class
+(/usr/share/texmf-dist/tex/latex/base/size10.clo
+File: size10.clo 2020/04/10 v1.4m Standard LaTeX file (size option)
+)
+\c@part=\count179
+\c@section=\count180
+\c@subsection=\count181
+\c@subsubsection=\count182
+\c@paragraph=\count183
+\c@subparagraph=\count184
+\c@figure=\count185
+\c@table=\count186
+\abovecaptionskip=\skip47
+\belowcaptionskip=\skip48
+\bibindent=\dimen138
+) (/usr/share/texmf-dist/tex/latex/base/inputenc.sty
+Package: inputenc 2020/08/01 v1.3d Input encoding file
+\inpenc@prehook=\toks15
+\inpenc@posthook=\toks16
+) (/usr/share/texmf-dist/tex/latex/base/fontenc.sty
+Package: fontenc 2020/08/10 v2.0s Standard LaTeX package
+) (/usr/share/texmf-dist/tex/generic/babel/babel.sty
+Package: babel 2021/03/24 3.56 The Babel package
+ (/usr/share/texmf-dist/tex/generic/babel/babel.def
+File: babel.def 2021/03/24 3.56 Babel common definitions
+\babel@savecnt=\count187
+\U@D=\dimen139
+\l@babelnohyphens=\language87
+ (/usr/share/texmf-dist/tex/generic/babel/txtbabel.def)
+\bbl@readstream=\read2
+)
+\bbl@dirlevel=\count188
+ (/usr/share/texmf-dist/tex/generic/babel-english/english.ldf
+Language: english 2017/06/06 v3.3r English support from the babel system
+Package babel Info: \l@canadian = using hyphenrules for english
+(babel)             (\language0) on input line 102.
+Package babel Info: \l@australian = using hyphenrules for ukenglish
+(babel)             (\language21) on input line 105.
+Package babel Info: \l@newzealand = using hyphenrules for ukenglish
+(babel)             (\language21) on input line 108.
+)) (/usr/share/texmf-dist/tex/latex/hyperref/hyperref.sty
+Package: hyperref 2021-02-27 v7.00k Hypertext links for LaTeX
+ (/usr/share/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty
+Package: ltxcmds 2020-05-10 v1.25 LaTeX kernel commands for general use (HO)
+) (/usr/share/texmf-dist/tex/generic/iftex/iftex.sty
+Package: iftex 2020/03/06 v1.0d TeX engine tests
+) (/usr/share/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty
+Package: pdftexcmds 2020-06-27 v0.33 Utility functions of pdfTeX for LuaTeX (HO)
+ (/usr/share/texmf-dist/tex/generic/infwarerr/infwarerr.sty
+Package: infwarerr 2019/12/03 v1.5 Providing info/warning/error messages (HO)
+)
+Package pdftexcmds Info: \pdf@primitive is available.
+Package pdftexcmds Info: \pdf@ifprimitive is available.
+Package pdftexcmds Info: \pdfdraftmode found.
+) (/usr/share/texmf-dist/tex/latex/graphics/keyval.sty
+Package: keyval 2014/10/28 v1.15 key=value parser (DPC)
+\KV@toks@=\toks17
+) (/usr/share/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty
+Package: kvsetkeys 2019/12/15 v1.18 Key value parser (HO)
+) (/usr/share/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty
+Package: kvdefinekeys 2019-12-19 v1.6 Define keys (HO)
+) (/usr/share/texmf-dist/tex/generic/pdfescape/pdfescape.sty
+Package: pdfescape 2019/12/09 v1.15 Implements pdfTeX's escape features (HO)
+) (/usr/share/texmf-dist/tex/latex/hycolor/hycolor.sty
+Package: hycolor 2020-01-27 v1.10 Color options for hyperref/bookmark (HO)
+) (/usr/share/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty
+Package: letltxmacro 2019/12/03 v1.6 Let assignment for LaTeX macros (HO)
+) (/usr/share/texmf-dist/tex/latex/auxhook/auxhook.sty
+Package: auxhook 2019-12-17 v1.6 Hooks for auxiliary files (HO)
+) (/usr/share/texmf-dist/tex/latex/kvoptions/kvoptions.sty
+Package: kvoptions 2020-10-07 v3.14 Key value format for package options (HO)
+)
+\@linkdim=\dimen140
+\Hy@linkcounter=\count189
+\Hy@pagecounter=\count190
+ (/usr/share/texmf-dist/tex/latex/hyperref/pd1enc.def
+File: pd1enc.def 2021-02-27 v7.00k Hyperref: PDFDocEncoding definition (HO)
+Now handling font encoding PD1 ...
+... no UTF-8 mapping file for font encoding PD1
+) (/usr/share/texmf-dist/tex/latex/hyperref/hyperref-langpatches.def
+File: hyperref-langpatches.def 2021-02-27 v7.00k Hyperref: patches for babel languages
+) (/usr/share/texmf-dist/tex/generic/intcalc/intcalc.sty
+Package: intcalc 2019/12/15 v1.3 Expandable calculations with integers (HO)
+) (/usr/share/texmf-dist/tex/generic/etexcmds/etexcmds.sty
+Package: etexcmds 2019/12/15 v1.7 Avoid name clashes with e-TeX commands (HO)
+)
+\Hy@SavedSpaceFactor=\count191
+ (/usr/share/texmf-dist/tex/latex/hyperref/puenc.def
+File: puenc.def 2021-02-27 v7.00k Hyperref: PDF Unicode definition (HO)
+Now handling font encoding PU ...
+... no UTF-8 mapping file for font encoding PU
+)
+Package hyperref Info: Hyper figures OFF on input line 4192.
+Package hyperref Info: Link nesting OFF on input line 4197.
+Package hyperref Info: Hyper index ON on input line 4200.
+Package hyperref Info: Plain pages OFF on input line 4207.
+Package hyperref Info: Backreferencing OFF on input line 4212.
+Package hyperref Info: Implicit mode ON; LaTeX internals redefined.
+Package hyperref Info: Bookmarks ON on input line 4445.
+\c@Hy@tempcnt=\count192
+ (/usr/share/texmf-dist/tex/latex/url/url.sty
+\Urlmuskip=\muskip16
+Package: url 2013/09/16  ver 3.4  Verb mode for urls, etc.
+)
+LaTeX Info: Redefining \url on input line 4804.
+\XeTeXLinkMargin=\dimen141
+ (/usr/share/texmf-dist/tex/generic/bitset/bitset.sty
+Package: bitset 2019/12/09 v1.3 Handle bit-vector datatype (HO)
+ (/usr/share/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty
+Package: bigintcalc 2019/12/15 v1.5 Expandable calculations on big integers (HO)
+))
+\Fld@menulength=\count193
+\Field@Width=\dimen142
+\Fld@charsize=\dimen143
+Package hyperref Info: Hyper figures OFF on input line 6075.
+Package hyperref Info: Link nesting OFF on input line 6080.
+Package hyperref Info: Hyper index ON on input line 6083.
+Package hyperref Info: backreferencing OFF on input line 6090.
+Package hyperref Info: Link coloring OFF on input line 6095.
+Package hyperref Info: Link coloring with OCG OFF on input line 6100.
+Package hyperref Info: PDF/A mode OFF on input line 6105.
+LaTeX Info: Redefining \ref on input line 6145.
+LaTeX Info: Redefining \pageref on input line 6149.
+ (/usr/share/texmf-dist/tex/latex/base/atbegshi-ltx.sty
+Package: atbegshi-ltx 2020/08/17 v1.0a Emulation of the original atbegshi package
+with kernel methods
+)
+\Hy@abspage=\count194
+\c@Item=\count195
+\c@Hfootnote=\count196
+)
+Package hyperref Info: Driver (autodetected): hpdftex.
+ (/usr/share/texmf-dist/tex/latex/hyperref/hpdftex.def
+File: hpdftex.def 2021-02-27 v7.00k Hyperref driver for pdfTeX
+ (/usr/share/texmf-dist/tex/latex/base/atveryend-ltx.sty
+Package: atveryend-ltx 2020/08/19 v1.0a Emulation of the original atvery package
+with kernel methods
+)
+\Fld@listcount=\count197
+\c@bookmark@seq@number=\count198
+ (/usr/share/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty
+Package: rerunfilecheck 2019/12/05 v1.9 Rerun checks for auxiliary files (HO)
+ (/usr/share/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty
+Package: uniquecounter 2019/12/15 v1.4 Provide unlimited unique counter (HO)
+)
+Package uniquecounter Info: New unique counter `rerunfilecheck' on input line 286.
+)
+\Hy@SectionHShift=\skip49
+) (/usr/share/texmf-dist/tex/latex/tools/xspace.sty
+Package: xspace 2014/10/28 v1.13 Space after command names (DPC,MH)
+)
+Package hyperref Info: Option `colorlinks' set `true' on input line 16.
+ (/usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
+File: l3backend-pdftex.def 2021-03-18 L3 backend support: PDF output (pdfTeX)
+\l__color_backend_stack_int=\count199
+\l__pdf_internal_box=\box47
+) (/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.aux (/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/introduction.aux))
+\openout1 = `main.aux'.
+
+LaTeX Font Info:    Checking defaults for OML/cmm/m/it on input line 24.
+LaTeX Font Info:    ... okay on input line 24.
+LaTeX Font Info:    Checking defaults for OMS/cmsy/m/n on input line 24.
+LaTeX Font Info:    ... okay on input line 24.
+LaTeX Font Info:    Checking defaults for OT1/cmr/m/n on input line 24.
+LaTeX Font Info:    ... okay on input line 24.
+LaTeX Font Info:    Checking defaults for T1/cmr/m/n on input line 24.
+LaTeX Font Info:    ... okay on input line 24.
+LaTeX Font Info:    Checking defaults for TS1/cmr/m/n on input line 24.
+LaTeX Font Info:    ... okay on input line 24.
+LaTeX Font Info:    Checking defaults for OMX/cmex/m/n on input line 24.
+LaTeX Font Info:    ... okay on input line 24.
+LaTeX Font Info:    Checking defaults for U/cmr/m/n on input line 24.
+LaTeX Font Info:    ... okay on input line 24.
+LaTeX Font Info:    Checking defaults for PD1/pdf/m/n on input line 24.
+LaTeX Font Info:    ... okay on input line 24.
+LaTeX Font Info:    Checking defaults for PU/pdf/m/n on input line 24.
+LaTeX Font Info:    ... okay on input line 24.
+ (/usr/share/texmf-dist/tex/latex/graphics/color.sty
+Package: color 2020/02/24 v1.2b Standard LaTeX Color (DPC)
+ (/usr/share/texmf-dist/tex/latex/graphics-cfg/color.cfg
+File: color.cfg 2016/01/02 v1.6 sample color configuration
+)
+Package color Info: Driver file: pdftex.def on input line 147.
+ (/usr/share/texmf-dist/tex/latex/graphics-def/pdftex.def
+File: pdftex.def 2020/10/05 v1.2a Graphics/color driver for pdftex
+ (/usr/share/texmf-dist/tex/context/base/mkii/supp-pdf.mkii
+[Loading MPS to PDF converter (version 2006.09.02).]
+\scratchcounter=\count266
+\scratchdimen=\dimen144
+\scratchbox=\box48
+\nofMPsegments=\count267
+\nofMParguments=\count268
+\everyMPshowfont=\toks18
+\MPscratchCnt=\count269
+\MPscratchDim=\dimen145
+\MPnumerator=\count270
+\makeMPintoPDFobject=\count271
+\everyMPtoPDFconversion=\toks19
+)))
+Package hyperref Info: Link coloring ON on input line 24.
+ (/usr/share/texmf-dist/tex/latex/hyperref/nameref.sty
+Package: nameref 2021-04-02 v2.47 Cross-referencing by name of section
+ (/usr/share/texmf-dist/tex/latex/refcount/refcount.sty
+Package: refcount 2019/12/15 v3.6 Data extraction from label references (HO)
+) (/usr/share/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty
+Package: gettitlestring 2019/12/15 v1.6 Cleanup title references (HO)
+)
+\c@section@level=\count272
+)
+LaTeX Info: Redefining \ref on input line 24.
+LaTeX Info: Redefining \pageref on input line 24.
+LaTeX Info: Redefining \nameref on input line 24.
+ (/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.out) (/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.out)
+\@outlinefile=\write3
+\openout3 = `main.out'.
+
+LaTeX Font Info:    External font `cmex10' loaded for size
+(Font)              <12> on input line 27.
+LaTeX Font Info:    External font `cmex10' loaded for size
+(Font)              <8> on input line 27.
+LaTeX Font Info:    External font `cmex10' loaded for size
+(Font)              <6> on input line 27.
+ (/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.toc)
+\tf@toc=\write4
+\openout4 = `main.toc'.
+
+ [1
+
+{/usr/share/texmf-var/fonts/map/pdftex/updmap/pdftex.map}]
+\openout2 = `introduction.aux'.
+
+ (/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/introduction.tex) [2
+
+] (/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.aux (/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/introduction.aux))
+Package rerunfilecheck Info: File `main.out' has not changed.
+(rerunfilecheck)             Checksum: 9814C2D956916ADB9290ECA4E25C967A;103.
+ ) 
+Here is how much of TeX's memory you used:
+ 8478 strings out of 478994
+ 124311 string characters out of 5864718
+ 432663 words of memory out of 5000000
+ 25865 multiletter control sequences out of 15000+600000
+ 410780 words of font info for 42 fonts, out of 8000000 for 9000
+ 1141 hyphenation exceptions out of 8191
+ 71i,6n,74p,278b,335s stack positions out of 5000i,500n,10000p,200000b,80000s
+{/usr/share/texmf-dist/fonts/enc/dvips/cm-super/cm-super-t1.enc}</usr/share/texmf-dist/fonts/type1/public/cm-super/sfbx1000.pfb></usr/share/texmf-dist/fonts/type1/public/cm-super/sfbx1440.pfb></usr/share/texmf-dist/fonts/type1/public/cm-super/sfrm1000.pfb></usr/share/texmf-dist/fonts/type1/public/cm-super/sfrm1200.pfb></usr/share/texmf-dist/fonts/type1/public/cm-super/sfrm1440.pfb></usr/share/texmf-dist/fonts/type1/public/cm-super/sfrm1728.pfb>
+Output written on "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.pdf" (2 pages, 80465 bytes).
+PDF statistics:
+ 49 PDF objects out of 1000 (max. 8388607)
+ 38 compressed objects within 1 object stream
+ 5 named destinations out of 1000 (max. 500000)
+ 9 words of extra memory for PDF output out of 10000 (max. 10000000)
+
diff --git a/docs/user_manual/main.out b/docs/user_manual/main.out
new file mode 100644
index 0000000..ac59f8e
--- /dev/null
+++ b/docs/user_manual/main.out
@@ -0,0 +1 @@
+\BOOKMARK [1][-]{section.1}{\376\377\000I\000n\000t\000r\000o\000d\000u\000c\000t\000i\000o\000n}{}% 1
diff --git a/docs/user_manual/main.synctex.gz b/docs/user_manual/main.synctex.gz
new file mode 100644
index 0000000000000000000000000000000000000000..aa872cc3e8ce327830c2a0c5f74cc65f352cde56
GIT binary patch
literal 2230
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
E0MONRO#lD@

literal 0
HcmV?d00001

diff --git a/docs/user_manual/main.tex b/docs/user_manual/main.tex
new file mode 100644
index 0000000..0225303
--- /dev/null
+++ b/docs/user_manual/main.tex
@@ -0,0 +1,32 @@
+\documentclass{article}
+
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage[english]{babel}
+
+\usepackage{hyperref}
+\usepackage{xspace}
+
+\setlength\parindent{0pt}
+
+\hypersetup{
+    colorlinks=true,
+    linkcolor=red,
+    urlcolor=blue
+}
+
+\newcommand{\version}{1.0.1\xspace}
+
+\title{Effovex User Manual \\ {\Large Version \version}}
+\author{A.Guilmin-Crépon, B.Patiachvili and J.Abou-Samra}
+\date{\today}
+
+\begin{document}
+
+    \maketitle
+
+    \tableofcontents
+
+    \include{introduction.tex}
+
+\end{document}
\ No newline at end of file
diff --git a/docs/user_manual/main.toc b/docs/user_manual/main.toc
new file mode 100644
index 0000000..60d64c8
--- /dev/null
+++ b/docs/user_manual/main.toc
@@ -0,0 +1,2 @@
+\babel@toc {english}{}
+\contentsline {section}{\numberline {1}Introduction}{2}{section.1}%
-- 
GitLab


From 525e4ea11a6809b9c96db2ac3594cc7077cb5b8f Mon Sep 17 00:00:00 2001
From: pigeonmoelleux <pigeonmoelleux@crans.org>
Date: Thu, 24 Nov 2022 15:08:26 +0100
Subject: [PATCH 05/20] Clear git repo

---
 docs/user_manual/.gitignore       |   7 +++++
 docs/user_manual/introduction.aux |   3 ++-
 docs/user_manual/introduction.tex |   5 +++-
 docs/user_manual/main.fdb_latexmk |  24 +++++++++--------
 docs/user_manual/main.fls         |   7 +++++
 docs/user_manual/main.log         |  41 ++++++++++++++++++------------
 docs/user_manual/main.out         |   1 +
 docs/user_manual/main.synctex.gz  | Bin 2230 -> 3536 bytes
 docs/user_manual/main.tex         |   2 +-
 docs/user_manual/main.toc         |   1 +
 10 files changed, 62 insertions(+), 29 deletions(-)
 create mode 100644 docs/user_manual/.gitignore

diff --git a/docs/user_manual/.gitignore b/docs/user_manual/.gitignore
new file mode 100644
index 0000000..93c9873
--- /dev/null
+++ b/docs/user_manual/.gitignore
@@ -0,0 +1,7 @@
+*
+
+!.gitignore
+
+!*.tex
+!*.sty
+!*.cls
\ No newline at end of file
diff --git a/docs/user_manual/introduction.aux b/docs/user_manual/introduction.aux
index d6daaf3..edd6560 100644
--- a/docs/user_manual/introduction.aux
+++ b/docs/user_manual/introduction.aux
@@ -1,6 +1,7 @@
 \relax 
 \providecommand\hyper@newdestlabel[2]{}
 \@writefile{toc}{\contentsline {section}{\numberline {1}Introduction}{2}{section.1}\protected@file@percent }
+\@writefile{toc}{\contentsline {subsection}{to}{2}{section*.2}\protected@file@percent }
 \@setckpt{introduction}{
 \setcounter{page}{3}
 \setcounter{equation}{0}
@@ -20,6 +21,6 @@
 \setcounter{table}{0}
 \setcounter{Item}{0}
 \setcounter{Hfootnote}{0}
-\setcounter{bookmark@seq@number}{1}
+\setcounter{bookmark@seq@number}{2}
 \setcounter{section@level}{1}
 }
diff --git a/docs/user_manual/introduction.tex b/docs/user_manual/introduction.tex
index ced5af9..82ddef3 100644
--- a/docs/user_manual/introduction.tex
+++ b/docs/user_manual/introduction.tex
@@ -2,4 +2,7 @@
 
     Welcome to Effovex, a software system for document preparation.
 
-    This document describes how to use the version \version of Effovex.
\ No newline at end of file
+    This document describes how to use the version \version of Effovex from the point of view of a user. Technical explanations and documentation to implement further features can be found on \href{https://TODO.com}{\texttt{https://TODO.com}}.
+
+    \subsection*{}
+    \addcontentsline{toc}{subsection}{to}
\ No newline at end of file
diff --git a/docs/user_manual/main.fdb_latexmk b/docs/user_manual/main.fdb_latexmk
index f948b96..2aad085 100644
--- a/docs/user_manual/main.fdb_latexmk
+++ b/docs/user_manual/main.fdb_latexmk
@@ -1,19 +1,21 @@
 # Fdb version 3
-["pdflatex"] 1669289984 "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.tex" "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.pdf" "main" 1669290514
-  "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/introduction.aux" 1669289985 689 3f7c69efa43598b0ad38cd34985c505c "pdflatex"
-  "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/introduction.tex" 1669290514 164 f13b638ee55a3b785e47f2e6257290d7 ""
-  "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.aux" 1669289985 792 834200dc306d4f24df176e8e56de3862 "pdflatex"
-  "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.out" 1669289985 103 9814c2d956916adb9290eca4e25c967a "pdflatex"
-  "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.tex" 1669289984 521 f0c249d37f382f9baf59a8413c83ff74 ""
-  "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.toc" 1669289985 91 b7edcdb1e955970ee2a909be3244a72f "pdflatex"
+["pdflatex"] 1669298509 "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.tex" "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.pdf" "main" 1669298509
+  "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/introduction.aux" 1669298509 777 2124f9ccc103fce4ac5be1354935fb0d "pdflatex"
+  "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/introduction.tex" 1669298508 398 f254a22cc39ea503d99d3e9e6ffbaa41 ""
+  "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.aux" 1669298509 792 834200dc306d4f24df176e8e56de3862 "pdflatex"
+  "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.out" 1669298509 166 7b1546629ce4eba28ee579cf334e3fdd "pdflatex"
+  "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.tex" 1669297835 521 f4a97b0e8ed3b2e41435cf071d1d8712 ""
+  "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.toc" 1669298509 138 02cf52ff0ab92c3c4bbdde5985bcffcd "pdflatex"
   "/usr/share/texmf-dist/fonts/enc/dvips/cm-super/cm-super-t1.enc" 1639192684 2971 def0b6c1f0b107b3b936def894055589 ""
   "/usr/share/texmf-dist/fonts/map/fontname/texfonts.map" 1639192684 3524 cb3e574dea2d1052e39280babc910dc8 ""
   "/usr/share/texmf-dist/fonts/tfm/jknappen/ec/ecbx1000.tfm" 1639192684 3584 2d666ecf6d466d8b007246bc2f94d9da ""
+  "/usr/share/texmf-dist/fonts/tfm/jknappen/ec/ecbx1200.tfm" 1639192684 3584 402da0b29eafbad07963b1224b222f18 ""
   "/usr/share/texmf-dist/fonts/tfm/jknappen/ec/ecbx1440.tfm" 1639192684 3584 13049b61b922a28b158a38aeff75ee9b ""
   "/usr/share/texmf-dist/fonts/tfm/jknappen/ec/ecrm1000.tfm" 1639192684 3584 adb004a0c8e7c46ee66cad73671f37b4 ""
   "/usr/share/texmf-dist/fonts/tfm/jknappen/ec/ecrm1200.tfm" 1639192684 3584 f80ddd985bd00e29e9a6047ebd9d4781 ""
   "/usr/share/texmf-dist/fonts/tfm/jknappen/ec/ecrm1440.tfm" 1639192684 3584 3169d30142b88a27d4ab0e3468e963a2 ""
   "/usr/share/texmf-dist/fonts/tfm/jknappen/ec/ecrm1728.tfm" 1639192684 3584 3c76ccb63eda935a68ba65ba9da29f1a ""
+  "/usr/share/texmf-dist/fonts/tfm/jknappen/ec/ectt1000.tfm" 1639192684 1536 06717a2b50de47d4087ac0e6cd759455 ""
   "/usr/share/texmf-dist/fonts/tfm/public/cm/cmmi12.tfm" 1639192684 1524 4414a8315f39513458b80dfc63bff03a ""
   "/usr/share/texmf-dist/fonts/tfm/public/cm/cmmi6.tfm" 1639192684 1512 f21f83efb36853c0b70002322c1ab3ad ""
   "/usr/share/texmf-dist/fonts/tfm/public/cm/cmmi8.tfm" 1639192684 1520 eccf95517727cb11801f4f1aee3a21b4 ""
@@ -29,6 +31,7 @@
   "/usr/share/texmf-dist/fonts/type1/public/cm-super/sfrm1200.pfb" 1639192684 136101 f533469f523533d38317ab5729d00c8a ""
   "/usr/share/texmf-dist/fonts/type1/public/cm-super/sfrm1440.pfb" 1639192684 131078 d96015a2fa5c350129e933ca070b2484 ""
   "/usr/share/texmf-dist/fonts/type1/public/cm-super/sfrm1728.pfb" 1639192684 131438 3aa300b3e40e5c8ba7b4e5c6cebc5dd6 ""
+  "/usr/share/texmf-dist/fonts/type1/public/cm-super/sftt1000.pfb" 1639192684 169201 9ebf99020dde51a5086e186761a34e8f ""
   "/usr/share/texmf-dist/tex/context/base/mkii/supp-pdf.mkii" 1639192684 71627 94eb9990bed73c364d7f53f960cc8c5b ""
   "/usr/share/texmf-dist/tex/generic/atbegshi/atbegshi.sty" 1639192684 24708 5584a51a7101caf7e6bbf1fc27d8f7b1 ""
   "/usr/share/texmf-dist/tex/generic/babel-english/english.ldf" 1639192684 7008 9ff5fdcc865b01beca2b0fe4a46231d4 ""
@@ -56,6 +59,7 @@
   "/usr/share/texmf-dist/tex/latex/base/fontenc.sty" 1639192684 4947 8cb7717f0cc771eca0fda15160c7fee9 ""
   "/usr/share/texmf-dist/tex/latex/base/inputenc.sty" 1639192684 5050 0d3b77275060ca09a40635b830c3c904 ""
   "/usr/share/texmf-dist/tex/latex/base/size10.clo" 1639192684 8449 a72d5d4e612221b46000c3d71724e0ef ""
+  "/usr/share/texmf-dist/tex/latex/base/t1cmtt.fd" 1639192684 2444 92c1f2a3fb5fbd5ac60f99eac55c9b29 ""
   "/usr/share/texmf-dist/tex/latex/graphics-cfg/color.cfg" 1639192684 1213 620bba36b25224fa9b7e1ccb4ecb76fd ""
   "/usr/share/texmf-dist/tex/latex/graphics-def/pdftex.def" 1639192684 19103 48d29b6e2a64cb717117ef65f107b404 ""
   "/usr/share/texmf-dist/tex/latex/graphics/color.sty" 1639192684 7102 5b27b7e61091c6128cd6300e21704e4b ""
@@ -78,9 +82,9 @@
   "/usr/share/texmf-var/fonts/map/pdftex/updmap/pdftex.map" 1666812724 334227 92f850e77170e97d49db3fab2645ba0e ""
   "/usr/share/texmf-var/web2c/pdftex/pdflatex.fmt" 1666812714 2724585 b6375174b219d1c10c09304c4f573890 ""
   (generated)
+  "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.toc"
+  "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.pdf"
+  "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/introduction.aux"
   "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.aux"
   "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.out"
-  "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.pdf"
   "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.log"
-  "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.toc"
-  "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/introduction.aux"
diff --git a/docs/user_manual/main.fls b/docs/user_manual/main.fls
index 5e3a297..aec95f6 100644
--- a/docs/user_manual/main.fls
+++ b/docs/user_manual/main.fls
@@ -476,6 +476,12 @@ INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/introduct
 INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/introduction.tex
 INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/introduction.tex
 INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/introduction.tex
+INPUT /usr/share/texmf-dist/tex/latex/base/t1cmtt.fd
+INPUT /usr/share/texmf-dist/tex/latex/base/t1cmtt.fd
+INPUT /usr/share/texmf-dist/tex/latex/base/t1cmtt.fd
+INPUT /usr/share/texmf-dist/tex/latex/base/t1cmtt.fd
+INPUT /usr/share/texmf-dist/fonts/tfm/jknappen/ec/ectt1000.tfm
+INPUT /usr/share/texmf-dist/fonts/tfm/jknappen/ec/ecbx1200.tfm
 INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.aux
 INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/introduction.aux
 INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/introduction.aux
@@ -489,3 +495,4 @@ INPUT /usr/share/texmf-dist/fonts/type1/public/cm-super/sfrm1000.pfb
 INPUT /usr/share/texmf-dist/fonts/type1/public/cm-super/sfrm1200.pfb
 INPUT /usr/share/texmf-dist/fonts/type1/public/cm-super/sfrm1440.pfb
 INPUT /usr/share/texmf-dist/fonts/type1/public/cm-super/sfrm1728.pfb
+INPUT /usr/share/texmf-dist/fonts/type1/public/cm-super/sftt1000.pfb
diff --git a/docs/user_manual/main.log b/docs/user_manual/main.log
index c648017..af690a0 100644
--- a/docs/user_manual/main.log
+++ b/docs/user_manual/main.log
@@ -1,4 +1,4 @@
-This is pdfTeX, Version 3.141592653-2.6-1.40.22 (TeX Live 2021/VoidLinux) (preloaded format=pdflatex 2022.10.26)  24 NOV 2022 12:39
+This is pdfTeX, Version 3.141592653-2.6-1.40.22 (TeX Live 2021/VoidLinux) (preloaded format=pdflatex 2022.10.26)  24 NOV 2022 15:01
 entering extended mode
  restricted \write18 enabled.
  file:line:error style messages enabled.
@@ -229,7 +229,12 @@ LaTeX Font Info:    External font `cmex10' loaded for size
 (Font)              <8> on input line 27.
 LaTeX Font Info:    External font `cmex10' loaded for size
 (Font)              <6> on input line 27.
- (/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.toc)
+ (/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.toc
+LaTeX Font Info:    External font `cmex10' loaded for size
+(Font)              <7> on input line 3.
+LaTeX Font Info:    External font `cmex10' loaded for size
+(Font)              <5> on input line 3.
+)
 \tf@toc=\write4
 \openout4 = `main.toc'.
 
@@ -238,25 +243,29 @@ LaTeX Font Info:    External font `cmex10' loaded for size
 {/usr/share/texmf-var/fonts/map/pdftex/updmap/pdftex.map}]
 \openout2 = `introduction.aux'.
 
- (/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/introduction.tex) [2
+ (/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/introduction.tex
+LaTeX Font Info:    Trying to load font information for T1+cmtt on input line 5.
+ (/usr/share/texmf-dist/tex/latex/base/t1cmtt.fd
+File: t1cmtt.fd 2019/12/16 v2.5j Standard LaTeX font definitions
+)) [2
 
 ] (/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.aux (/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/introduction.aux))
 Package rerunfilecheck Info: File `main.out' has not changed.
-(rerunfilecheck)             Checksum: 9814C2D956916ADB9290ECA4E25C967A;103.
+(rerunfilecheck)             Checksum: 7B1546629CE4EBA28EE579CF334E3FDD;166.
  ) 
 Here is how much of TeX's memory you used:
- 8478 strings out of 478994
- 124311 string characters out of 5864718
- 432663 words of memory out of 5000000
- 25865 multiletter control sequences out of 15000+600000
- 410780 words of font info for 42 fonts, out of 8000000 for 9000
+ 8504 strings out of 478994
+ 124976 string characters out of 5864718
+ 432667 words of memory out of 5000000
+ 25885 multiletter control sequences out of 15000+600000
+ 411869 words of font info for 44 fonts, out of 8000000 for 9000
  1141 hyphenation exceptions out of 8191
- 71i,6n,74p,278b,335s stack positions out of 5000i,500n,10000p,200000b,80000s
-{/usr/share/texmf-dist/fonts/enc/dvips/cm-super/cm-super-t1.enc}</usr/share/texmf-dist/fonts/type1/public/cm-super/sfbx1000.pfb></usr/share/texmf-dist/fonts/type1/public/cm-super/sfbx1440.pfb></usr/share/texmf-dist/fonts/type1/public/cm-super/sfrm1000.pfb></usr/share/texmf-dist/fonts/type1/public/cm-super/sfrm1200.pfb></usr/share/texmf-dist/fonts/type1/public/cm-super/sfrm1440.pfb></usr/share/texmf-dist/fonts/type1/public/cm-super/sfrm1728.pfb>
-Output written on "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.pdf" (2 pages, 80465 bytes).
+ 71i,6n,74p,477b,335s stack positions out of 5000i,500n,10000p,200000b,80000s
+{/usr/share/texmf-dist/fonts/enc/dvips/cm-super/cm-super-t1.enc}</usr/share/texmf-dist/fonts/type1/public/cm-super/sfbx1000.pfb></usr/share/texmf-dist/fonts/type1/public/cm-super/sfbx1440.pfb></usr/share/texmf-dist/fonts/type1/public/cm-super/sfrm1000.pfb></usr/share/texmf-dist/fonts/type1/public/cm-super/sfrm1200.pfb></usr/share/texmf-dist/fonts/type1/public/cm-super/sfrm1440.pfb></usr/share/texmf-dist/fonts/type1/public/cm-super/sfrm1728.pfb></usr/share/texmf-dist/fonts/type1/public/cm-super/sftt1000.pfb>
+Output written on "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.pdf" (2 pages, 100488 bytes).
 PDF statistics:
- 49 PDF objects out of 1000 (max. 8388607)
- 38 compressed objects within 1 object stream
- 5 named destinations out of 1000 (max. 500000)
- 9 words of extra memory for PDF output out of 10000 (max. 10000000)
+ 59 PDF objects out of 1000 (max. 8388607)
+ 47 compressed objects within 1 object stream
+ 6 named destinations out of 1000 (max. 500000)
+ 17 words of extra memory for PDF output out of 10000 (max. 10000000)
 
diff --git a/docs/user_manual/main.out b/docs/user_manual/main.out
index ac59f8e..ff4dae8 100644
--- a/docs/user_manual/main.out
+++ b/docs/user_manual/main.out
@@ -1 +1,2 @@
 \BOOKMARK [1][-]{section.1}{\376\377\000I\000n\000t\000r\000o\000d\000u\000c\000t\000i\000o\000n}{}% 1
+\BOOKMARK [2][-]{section*.2}{\376\377\000t\000o}{section.1}% 2
diff --git a/docs/user_manual/main.synctex.gz b/docs/user_manual/main.synctex.gz
index aa872cc3e8ce327830c2a0c5f74cc65f352cde56..4e8fef8d22efedecdf5d9973ba4a786856d62f6e 100644
GIT binary patch
literal 3536
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
KNJwy5Jpce?x8?Hy

literal 2230
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
E0MONRO#lD@

diff --git a/docs/user_manual/main.tex b/docs/user_manual/main.tex
index 0225303..2916bd3 100644
--- a/docs/user_manual/main.tex
+++ b/docs/user_manual/main.tex
@@ -15,7 +15,7 @@
     urlcolor=blue
 }
 
-\newcommand{\version}{1.0.1\xspace}
+\newcommand{\version}{0.1.0\xspace}
 
 \title{Effovex User Manual \\ {\Large Version \version}}
 \author{A.Guilmin-Crépon, B.Patiachvili and J.Abou-Samra}
diff --git a/docs/user_manual/main.toc b/docs/user_manual/main.toc
index 60d64c8..9c649bd 100644
--- a/docs/user_manual/main.toc
+++ b/docs/user_manual/main.toc
@@ -1,2 +1,3 @@
 \babel@toc {english}{}
 \contentsline {section}{\numberline {1}Introduction}{2}{section.1}%
+\contentsline {subsection}{to}{2}{section*.2}%
-- 
GitLab


From 8bd4fe7ecd6c188c9988426c8a8042069cb1a2f9 Mon Sep 17 00:00:00 2001
From: pigeonmoelleux <pigeonmoelleux@crans.org>
Date: Thu, 24 Nov 2022 15:09:57 +0100
Subject: [PATCH 06/20] Suppression fichiers auxiliaires de tex

---
 docs/user_manual/introduction.aux |  26 --
 docs/user_manual/main.aux         |  23 --
 docs/user_manual/main.fdb_latexmk |  90 ------
 docs/user_manual/main.fls         | 498 ------------------------------
 docs/user_manual/main.log         | 271 ----------------
 docs/user_manual/main.out         |   2 -
 docs/user_manual/main.synctex.gz  | Bin 3536 -> 0 bytes
 docs/user_manual/main.tex         |  32 --
 docs/user_manual/main.toc         |   3 -
 9 files changed, 945 deletions(-)
 delete mode 100644 docs/user_manual/introduction.aux
 delete mode 100644 docs/user_manual/main.aux
 delete mode 100644 docs/user_manual/main.fdb_latexmk
 delete mode 100644 docs/user_manual/main.fls
 delete mode 100644 docs/user_manual/main.log
 delete mode 100644 docs/user_manual/main.out
 delete mode 100644 docs/user_manual/main.synctex.gz
 delete mode 100644 docs/user_manual/main.tex
 delete mode 100644 docs/user_manual/main.toc

diff --git a/docs/user_manual/introduction.aux b/docs/user_manual/introduction.aux
deleted file mode 100644
index edd6560..0000000
--- a/docs/user_manual/introduction.aux
+++ /dev/null
@@ -1,26 +0,0 @@
-\relax 
-\providecommand\hyper@newdestlabel[2]{}
-\@writefile{toc}{\contentsline {section}{\numberline {1}Introduction}{2}{section.1}\protected@file@percent }
-\@writefile{toc}{\contentsline {subsection}{to}{2}{section*.2}\protected@file@percent }
-\@setckpt{introduction}{
-\setcounter{page}{3}
-\setcounter{equation}{0}
-\setcounter{enumi}{0}
-\setcounter{enumii}{0}
-\setcounter{enumiii}{0}
-\setcounter{enumiv}{0}
-\setcounter{footnote}{0}
-\setcounter{mpfootnote}{0}
-\setcounter{part}{0}
-\setcounter{section}{1}
-\setcounter{subsection}{0}
-\setcounter{subsubsection}{0}
-\setcounter{paragraph}{0}
-\setcounter{subparagraph}{0}
-\setcounter{figure}{0}
-\setcounter{table}{0}
-\setcounter{Item}{0}
-\setcounter{Hfootnote}{0}
-\setcounter{bookmark@seq@number}{2}
-\setcounter{section@level}{1}
-}
diff --git a/docs/user_manual/main.aux b/docs/user_manual/main.aux
deleted file mode 100644
index efd0639..0000000
--- a/docs/user_manual/main.aux
+++ /dev/null
@@ -1,23 +0,0 @@
-\relax 
-\providecommand\hyper@newdestlabel[2]{}
-\providecommand\babel@aux[2]{}
-\@nameuse{bbl@beforestart}
-\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument}
-\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined
-\global\let\oldcontentsline\contentsline
-\gdef\contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}}
-\global\let\oldnewlabel\newlabel
-\gdef\newlabel#1#2{\newlabelxx{#1}#2}
-\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}}
-\AtEndDocument{\ifx\hyper@anchor\@undefined
-\let\contentsline\oldcontentsline
-\let\newlabel\oldnewlabel
-\fi}
-\fi}
-\global\let\hyper@last\relax 
-\gdef\HyperFirstAtBeginDocument#1{#1}
-\providecommand\HyField@AuxAddToFields[1]{}
-\providecommand\HyField@AuxAddToCoFields[2]{}
-\babel@aux{english}{}
-\@input{introduction.aux}
-\gdef \@abspage@last{2}
diff --git a/docs/user_manual/main.fdb_latexmk b/docs/user_manual/main.fdb_latexmk
deleted file mode 100644
index 2aad085..0000000
--- a/docs/user_manual/main.fdb_latexmk
+++ /dev/null
@@ -1,90 +0,0 @@
-# Fdb version 3
-["pdflatex"] 1669298509 "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.tex" "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.pdf" "main" 1669298509
-  "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/introduction.aux" 1669298509 777 2124f9ccc103fce4ac5be1354935fb0d "pdflatex"
-  "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/introduction.tex" 1669298508 398 f254a22cc39ea503d99d3e9e6ffbaa41 ""
-  "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.aux" 1669298509 792 834200dc306d4f24df176e8e56de3862 "pdflatex"
-  "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.out" 1669298509 166 7b1546629ce4eba28ee579cf334e3fdd "pdflatex"
-  "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.tex" 1669297835 521 f4a97b0e8ed3b2e41435cf071d1d8712 ""
-  "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.toc" 1669298509 138 02cf52ff0ab92c3c4bbdde5985bcffcd "pdflatex"
-  "/usr/share/texmf-dist/fonts/enc/dvips/cm-super/cm-super-t1.enc" 1639192684 2971 def0b6c1f0b107b3b936def894055589 ""
-  "/usr/share/texmf-dist/fonts/map/fontname/texfonts.map" 1639192684 3524 cb3e574dea2d1052e39280babc910dc8 ""
-  "/usr/share/texmf-dist/fonts/tfm/jknappen/ec/ecbx1000.tfm" 1639192684 3584 2d666ecf6d466d8b007246bc2f94d9da ""
-  "/usr/share/texmf-dist/fonts/tfm/jknappen/ec/ecbx1200.tfm" 1639192684 3584 402da0b29eafbad07963b1224b222f18 ""
-  "/usr/share/texmf-dist/fonts/tfm/jknappen/ec/ecbx1440.tfm" 1639192684 3584 13049b61b922a28b158a38aeff75ee9b ""
-  "/usr/share/texmf-dist/fonts/tfm/jknappen/ec/ecrm1000.tfm" 1639192684 3584 adb004a0c8e7c46ee66cad73671f37b4 ""
-  "/usr/share/texmf-dist/fonts/tfm/jknappen/ec/ecrm1200.tfm" 1639192684 3584 f80ddd985bd00e29e9a6047ebd9d4781 ""
-  "/usr/share/texmf-dist/fonts/tfm/jknappen/ec/ecrm1440.tfm" 1639192684 3584 3169d30142b88a27d4ab0e3468e963a2 ""
-  "/usr/share/texmf-dist/fonts/tfm/jknappen/ec/ecrm1728.tfm" 1639192684 3584 3c76ccb63eda935a68ba65ba9da29f1a ""
-  "/usr/share/texmf-dist/fonts/tfm/jknappen/ec/ectt1000.tfm" 1639192684 1536 06717a2b50de47d4087ac0e6cd759455 ""
-  "/usr/share/texmf-dist/fonts/tfm/public/cm/cmmi12.tfm" 1639192684 1524 4414a8315f39513458b80dfc63bff03a ""
-  "/usr/share/texmf-dist/fonts/tfm/public/cm/cmmi6.tfm" 1639192684 1512 f21f83efb36853c0b70002322c1ab3ad ""
-  "/usr/share/texmf-dist/fonts/tfm/public/cm/cmmi8.tfm" 1639192684 1520 eccf95517727cb11801f4f1aee3a21b4 ""
-  "/usr/share/texmf-dist/fonts/tfm/public/cm/cmr12.tfm" 1639192684 1288 655e228510b4c2a1abe905c368440826 ""
-  "/usr/share/texmf-dist/fonts/tfm/public/cm/cmr6.tfm" 1639192684 1300 b62933e007d01cfd073f79b963c01526 ""
-  "/usr/share/texmf-dist/fonts/tfm/public/cm/cmr8.tfm" 1639192684 1292 21c1c5bfeaebccffdb478fd231a0997d ""
-  "/usr/share/texmf-dist/fonts/tfm/public/cm/cmsy10.tfm" 1639192684 1124 6c73e740cf17375f03eec0ee63599741 ""
-  "/usr/share/texmf-dist/fonts/tfm/public/cm/cmsy6.tfm" 1639192684 1116 933a60c408fc0a863a92debe84b2d294 ""
-  "/usr/share/texmf-dist/fonts/tfm/public/cm/cmsy8.tfm" 1639192684 1120 8b7d695260f3cff42e636090a8002094 ""
-  "/usr/share/texmf-dist/fonts/type1/public/cm-super/sfbx1000.pfb" 1639192684 145408 43d44302ca7d82d487f511f83e309505 ""
-  "/usr/share/texmf-dist/fonts/type1/public/cm-super/sfbx1440.pfb" 1639192684 135942 859a90cad7494a1e79c94baf546d7de5 ""
-  "/usr/share/texmf-dist/fonts/type1/public/cm-super/sfrm1000.pfb" 1639192684 138258 6525c253f16cededa14c7fd0da7f67b2 ""
-  "/usr/share/texmf-dist/fonts/type1/public/cm-super/sfrm1200.pfb" 1639192684 136101 f533469f523533d38317ab5729d00c8a ""
-  "/usr/share/texmf-dist/fonts/type1/public/cm-super/sfrm1440.pfb" 1639192684 131078 d96015a2fa5c350129e933ca070b2484 ""
-  "/usr/share/texmf-dist/fonts/type1/public/cm-super/sfrm1728.pfb" 1639192684 131438 3aa300b3e40e5c8ba7b4e5c6cebc5dd6 ""
-  "/usr/share/texmf-dist/fonts/type1/public/cm-super/sftt1000.pfb" 1639192684 169201 9ebf99020dde51a5086e186761a34e8f ""
-  "/usr/share/texmf-dist/tex/context/base/mkii/supp-pdf.mkii" 1639192684 71627 94eb9990bed73c364d7f53f960cc8c5b ""
-  "/usr/share/texmf-dist/tex/generic/atbegshi/atbegshi.sty" 1639192684 24708 5584a51a7101caf7e6bbf1fc27d8f7b1 ""
-  "/usr/share/texmf-dist/tex/generic/babel-english/english.ldf" 1639192684 7008 9ff5fdcc865b01beca2b0fe4a46231d4 ""
-  "/usr/share/texmf-dist/tex/generic/babel/babel.def" 1639192684 118719 e672239d75d9419ba29850a1b391bd00 ""
-  "/usr/share/texmf-dist/tex/generic/babel/babel.sty" 1639192684 37894 44955682e4f134137b9d1033fb86e0ef ""
-  "/usr/share/texmf-dist/tex/generic/babel/txtbabel.def" 1639192684 5230 84624d139fa443f96294434bccf82f8c ""
-  "/usr/share/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty" 1639192684 40635 c40361e206be584d448876bba8a64a3b ""
-  "/usr/share/texmf-dist/tex/generic/bitset/bitset.sty" 1639192684 33961 6b5c75130e435b2bfdb9f480a09a39f9 ""
-  "/usr/share/texmf-dist/tex/generic/etexcmds/etexcmds.sty" 1639192684 7734 b98cbb34c81f667027c1e3ebdbfce34b ""
-  "/usr/share/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty" 1639192684 8371 9d55b8bd010bc717624922fb3477d92e ""
-  "/usr/share/texmf-dist/tex/generic/iftex/iftex.sty" 1639192684 6501 4011d89d9621e0b0901138815ba5ff29 ""
-  "/usr/share/texmf-dist/tex/generic/infwarerr/infwarerr.sty" 1639192684 8356 7bbb2c2373aa810be568c29e333da8ed ""
-  "/usr/share/texmf-dist/tex/generic/intcalc/intcalc.sty" 1639192684 31769 002a487f55041f8e805cfbf6385ffd97 ""
-  "/usr/share/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty" 1639192684 5412 d5a2436094cd7be85769db90f29250a6 ""
-  "/usr/share/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty" 1639192684 13807 952b0226d4efca026f0e19dd266dcc22 ""
-  "/usr/share/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty" 1639192684 17859 4409f8f50cd365c68e684407e5350b1b ""
-  "/usr/share/texmf-dist/tex/generic/pdfescape/pdfescape.sty" 1639192684 19007 15924f7228aca6c6d184b115f4baa231 ""
-  "/usr/share/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty" 1639192684 20089 80423eac55aa175305d35b49e04fe23b ""
-  "/usr/share/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty" 1639192684 7008 f92eaa0a3872ed622bbf538217cd2ab7 ""
-  "/usr/share/texmf-dist/tex/latex/atveryend/atveryend.sty" 1639192684 19336 ce7ae9438967282886b3b036cfad1e4d ""
-  "/usr/share/texmf-dist/tex/latex/auxhook/auxhook.sty" 1639192684 3935 57aa3c3e203a5c2effb4d2bd2efbc323 ""
-  "/usr/share/texmf-dist/tex/latex/base/article.cls" 1639192684 20145 aad8c3dd3bc36e260347b84002182bc2 ""
-  "/usr/share/texmf-dist/tex/latex/base/atbegshi-ltx.sty" 1639192684 2973 00085839f5881178c538db5970d3c38e ""
-  "/usr/share/texmf-dist/tex/latex/base/atveryend-ltx.sty" 1639192684 2596 b3a02e33035865e9f0457e064d436fb8 ""
-  "/usr/share/texmf-dist/tex/latex/base/fontenc.sty" 1639192684 4947 8cb7717f0cc771eca0fda15160c7fee9 ""
-  "/usr/share/texmf-dist/tex/latex/base/inputenc.sty" 1639192684 5050 0d3b77275060ca09a40635b830c3c904 ""
-  "/usr/share/texmf-dist/tex/latex/base/size10.clo" 1639192684 8449 a72d5d4e612221b46000c3d71724e0ef ""
-  "/usr/share/texmf-dist/tex/latex/base/t1cmtt.fd" 1639192684 2444 92c1f2a3fb5fbd5ac60f99eac55c9b29 ""
-  "/usr/share/texmf-dist/tex/latex/graphics-cfg/color.cfg" 1639192684 1213 620bba36b25224fa9b7e1ccb4ecb76fd ""
-  "/usr/share/texmf-dist/tex/latex/graphics-def/pdftex.def" 1639192684 19103 48d29b6e2a64cb717117ef65f107b404 ""
-  "/usr/share/texmf-dist/tex/latex/graphics/color.sty" 1639192684 7102 5b27b7e61091c6128cd6300e21704e4b ""
-  "/usr/share/texmf-dist/tex/latex/graphics/keyval.sty" 1639192684 2590 e3b24ff953e5b58d924f163d25380312 ""
-  "/usr/share/texmf-dist/tex/latex/hycolor/hycolor.sty" 1639192684 17914 4c28a13fc3d975e6e81c9bea1d697276 ""
-  "/usr/share/texmf-dist/tex/latex/hyperref/hpdftex.def" 1639192684 49890 ad792e908af8bc5c293b806bd181e58d ""
-  "/usr/share/texmf-dist/tex/latex/hyperref/hyperref-langpatches.def" 1639192684 1777 31eee4f3f5c138e44a4e16abfcaefa41 ""
-  "/usr/share/texmf-dist/tex/latex/hyperref/hyperref.sty" 1639192684 230839 177eac084bda18ae827a77792a17292e ""
-  "/usr/share/texmf-dist/tex/latex/hyperref/nameref.sty" 1639192684 13242 133e617c5eebffdd05e421624022b267 ""
-  "/usr/share/texmf-dist/tex/latex/hyperref/pd1enc.def" 1639192684 14132 3a8b7a8250bdb5871e322188be7c9ff6 ""
-  "/usr/share/texmf-dist/tex/latex/hyperref/puenc.def" 1639192684 117004 7c05c6dde5b2b6a14f97dd4137739212 ""
-  "/usr/share/texmf-dist/tex/latex/kvoptions/kvoptions.sty" 1639192684 22521 d2fceb764a442a2001d257ef11db7618 ""
-  "/usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def" 1639192684 27164 3d5f7887a89df4eb2f6e86ba26ef3254 ""
-  "/usr/share/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty" 1639192684 5766 13a9e8766c47f30327caf893ece86ac8 ""
-  "/usr/share/texmf-dist/tex/latex/refcount/refcount.sty" 1639192684 9878 9e94e8fa600d95f9c7731bb21dfb67a4 ""
-  "/usr/share/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty" 1639192684 9715 b051d5b493d9fe5f4bc251462d039e5f ""
-  "/usr/share/texmf-dist/tex/latex/tools/xspace.sty" 1639192684 4546 3e6071704acf4f66392376b7b66ae02c ""
-  "/usr/share/texmf-dist/tex/latex/url/url.sty" 1639192684 12796 8edb7d69a20b857904dd0ea757c14ec9 ""
-  "/usr/share/texmf-dist/web2c/texmf.cnf" 1655305253 39967 c1691bf11496e9d6ea53f7eba5c4754e ""
-  "/usr/share/texmf-var/fonts/map/pdftex/updmap/pdftex.map" 1666812724 334227 92f850e77170e97d49db3fab2645ba0e ""
-  "/usr/share/texmf-var/web2c/pdftex/pdflatex.fmt" 1666812714 2724585 b6375174b219d1c10c09304c4f573890 ""
-  (generated)
-  "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.toc"
-  "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.pdf"
-  "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/introduction.aux"
-  "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.aux"
-  "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.out"
-  "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.log"
diff --git a/docs/user_manual/main.fls b/docs/user_manual/main.fls
deleted file mode 100644
index aec95f6..0000000
--- a/docs/user_manual/main.fls
+++ /dev/null
@@ -1,498 +0,0 @@
-PWD /home/pigeonmoelleux/Documents/ENS/M1/Génie logiciel/effovex/docs/user_manual
-INPUT /usr/share/texmf-dist/web2c/texmf.cnf
-INPUT /usr/share/texmf-var/web2c/pdftex/pdflatex.fmt
-INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.tex
-OUTPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.log
-INPUT /usr/share/texmf-dist/tex/latex/base/article.cls
-INPUT /usr/share/texmf-dist/tex/latex/base/article.cls
-INPUT /usr/share/texmf-dist/tex/latex/base/article.cls
-INPUT /usr/share/texmf-dist/tex/latex/base/article.cls
-INPUT /usr/share/texmf-dist/tex/latex/base/article.cls
-INPUT /usr/share/texmf-dist/tex/latex/base/article.cls
-INPUT /usr/share/texmf-dist/tex/latex/base/article.cls
-INPUT /usr/share/texmf-dist/tex/latex/base/article.cls
-INPUT /usr/share/texmf-dist/tex/latex/base/article.cls
-INPUT /usr/share/texmf-dist/tex/latex/base/article.cls
-INPUT /usr/share/texmf-dist/tex/latex/base/article.cls
-INPUT /usr/share/texmf-dist/tex/latex/base/size10.clo
-INPUT /usr/share/texmf-dist/tex/latex/base/size10.clo
-INPUT /usr/share/texmf-dist/tex/latex/base/size10.clo
-INPUT /usr/share/texmf-dist/tex/latex/base/size10.clo
-INPUT /usr/share/texmf-dist/tex/latex/base/inputenc.sty
-INPUT /usr/share/texmf-dist/tex/latex/base/inputenc.sty
-INPUT /usr/share/texmf-dist/tex/latex/base/inputenc.sty
-INPUT /usr/share/texmf-dist/tex/latex/base/inputenc.sty
-INPUT /usr/share/texmf-dist/tex/latex/base/inputenc.sty
-INPUT /usr/share/texmf-dist/tex/latex/base/inputenc.sty
-INPUT /usr/share/texmf-dist/tex/latex/base/inputenc.sty
-INPUT /usr/share/texmf-dist/tex/latex/base/inputenc.sty
-INPUT /usr/share/texmf-dist/tex/latex/base/inputenc.sty
-INPUT /usr/share/texmf-dist/tex/latex/base/inputenc.sty
-INPUT /usr/share/texmf-dist/tex/latex/base/inputenc.sty
-INPUT /usr/share/texmf-dist/tex/latex/base/fontenc.sty
-INPUT /usr/share/texmf-dist/tex/latex/base/fontenc.sty
-INPUT /usr/share/texmf-dist/tex/latex/base/fontenc.sty
-INPUT /usr/share/texmf-dist/tex/latex/base/fontenc.sty
-INPUT /usr/share/texmf-dist/tex/latex/base/fontenc.sty
-INPUT /usr/share/texmf-dist/tex/latex/base/fontenc.sty
-INPUT /usr/share/texmf-dist/tex/latex/base/fontenc.sty
-INPUT /usr/share/texmf-dist/tex/latex/base/fontenc.sty
-INPUT /usr/share/texmf-dist/tex/latex/base/fontenc.sty
-INPUT /usr/share/texmf-dist/tex/latex/base/fontenc.sty
-INPUT /usr/share/texmf-dist/tex/latex/base/fontenc.sty
-INPUT /usr/share/texmf-dist/fonts/map/fontname/texfonts.map
-INPUT /usr/share/texmf-dist/fonts/tfm/jknappen/ec/ecrm1000.tfm
-INPUT /usr/share/texmf-dist/tex/generic/babel/babel.sty
-INPUT /usr/share/texmf-dist/tex/generic/babel/babel.sty
-INPUT /usr/share/texmf-dist/tex/generic/babel/babel.sty
-INPUT /usr/share/texmf-dist/tex/generic/babel/babel.sty
-INPUT /usr/share/texmf-dist/tex/generic/babel/babel.sty
-INPUT /usr/share/texmf-dist/tex/generic/babel/babel.sty
-INPUT /usr/share/texmf-dist/tex/generic/babel/babel.sty
-INPUT /usr/share/texmf-dist/tex/generic/babel/babel.sty
-INPUT /usr/share/texmf-dist/tex/generic/babel/babel.sty
-INPUT /usr/share/texmf-dist/tex/generic/babel/babel.sty
-INPUT /usr/share/texmf-dist/tex/generic/babel/babel.sty
-INPUT /usr/share/texmf-dist/tex/generic/babel/babel.def
-INPUT /usr/share/texmf-dist/tex/generic/babel/txtbabel.def
-INPUT /usr/share/texmf-dist/tex/generic/babel-english/english.ldf
-INPUT /usr/share/texmf-dist/tex/generic/babel-english/english.ldf
-INPUT /usr/share/texmf-dist/tex/generic/babel-english/english.ldf
-INPUT /usr/share/texmf-dist/tex/generic/babel-english/english.ldf
-INPUT /usr/share/texmf-dist/tex/latex/hyperref/hyperref.sty
-INPUT /usr/share/texmf-dist/tex/latex/hyperref/hyperref.sty
-INPUT /usr/share/texmf-dist/tex/latex/hyperref/hyperref.sty
-INPUT /usr/share/texmf-dist/tex/latex/hyperref/hyperref.sty
-INPUT /usr/share/texmf-dist/tex/latex/hyperref/hyperref.sty
-INPUT /usr/share/texmf-dist/tex/latex/hyperref/hyperref.sty
-INPUT /usr/share/texmf-dist/tex/latex/hyperref/hyperref.sty
-INPUT /usr/share/texmf-dist/tex/latex/hyperref/hyperref.sty
-INPUT /usr/share/texmf-dist/tex/latex/hyperref/hyperref.sty
-INPUT /usr/share/texmf-dist/tex/latex/hyperref/hyperref.sty
-INPUT /usr/share/texmf-dist/tex/latex/hyperref/hyperref.sty
-INPUT /usr/share/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty
-INPUT /usr/share/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty
-INPUT /usr/share/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty
-INPUT /usr/share/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty
-INPUT /usr/share/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty
-INPUT /usr/share/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty
-INPUT /usr/share/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty
-INPUT /usr/share/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty
-INPUT /usr/share/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty
-INPUT /usr/share/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty
-INPUT /usr/share/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty
-INPUT /usr/share/texmf-dist/tex/generic/iftex/iftex.sty
-INPUT /usr/share/texmf-dist/tex/generic/iftex/iftex.sty
-INPUT /usr/share/texmf-dist/tex/generic/iftex/iftex.sty
-INPUT /usr/share/texmf-dist/tex/generic/iftex/iftex.sty
-INPUT /usr/share/texmf-dist/tex/generic/iftex/iftex.sty
-INPUT /usr/share/texmf-dist/tex/generic/iftex/iftex.sty
-INPUT /usr/share/texmf-dist/tex/generic/iftex/iftex.sty
-INPUT /usr/share/texmf-dist/tex/generic/iftex/iftex.sty
-INPUT /usr/share/texmf-dist/tex/generic/iftex/iftex.sty
-INPUT /usr/share/texmf-dist/tex/generic/iftex/iftex.sty
-INPUT /usr/share/texmf-dist/tex/generic/iftex/iftex.sty
-INPUT /usr/share/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty
-INPUT /usr/share/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty
-INPUT /usr/share/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty
-INPUT /usr/share/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty
-INPUT /usr/share/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty
-INPUT /usr/share/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty
-INPUT /usr/share/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty
-INPUT /usr/share/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty
-INPUT /usr/share/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty
-INPUT /usr/share/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty
-INPUT /usr/share/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty
-INPUT /usr/share/texmf-dist/tex/generic/infwarerr/infwarerr.sty
-INPUT /usr/share/texmf-dist/tex/generic/infwarerr/infwarerr.sty
-INPUT /usr/share/texmf-dist/tex/generic/infwarerr/infwarerr.sty
-INPUT /usr/share/texmf-dist/tex/generic/infwarerr/infwarerr.sty
-INPUT /usr/share/texmf-dist/tex/generic/infwarerr/infwarerr.sty
-INPUT /usr/share/texmf-dist/tex/generic/infwarerr/infwarerr.sty
-INPUT /usr/share/texmf-dist/tex/generic/infwarerr/infwarerr.sty
-INPUT /usr/share/texmf-dist/tex/generic/infwarerr/infwarerr.sty
-INPUT /usr/share/texmf-dist/tex/generic/infwarerr/infwarerr.sty
-INPUT /usr/share/texmf-dist/tex/generic/infwarerr/infwarerr.sty
-INPUT /usr/share/texmf-dist/tex/generic/infwarerr/infwarerr.sty
-INPUT /usr/share/texmf-dist/tex/generic/iftex/iftex.sty
-INPUT /usr/share/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty
-INPUT /usr/share/texmf-dist/tex/generic/infwarerr/infwarerr.sty
-INPUT /usr/share/texmf-dist/tex/latex/graphics/keyval.sty
-INPUT /usr/share/texmf-dist/tex/latex/graphics/keyval.sty
-INPUT /usr/share/texmf-dist/tex/latex/graphics/keyval.sty
-INPUT /usr/share/texmf-dist/tex/latex/graphics/keyval.sty
-INPUT /usr/share/texmf-dist/tex/latex/graphics/keyval.sty
-INPUT /usr/share/texmf-dist/tex/latex/graphics/keyval.sty
-INPUT /usr/share/texmf-dist/tex/latex/graphics/keyval.sty
-INPUT /usr/share/texmf-dist/tex/latex/graphics/keyval.sty
-INPUT /usr/share/texmf-dist/tex/latex/graphics/keyval.sty
-INPUT /usr/share/texmf-dist/tex/latex/graphics/keyval.sty
-INPUT /usr/share/texmf-dist/tex/latex/graphics/keyval.sty
-INPUT /usr/share/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty
-INPUT /usr/share/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty
-INPUT /usr/share/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty
-INPUT /usr/share/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty
-INPUT /usr/share/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty
-INPUT /usr/share/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty
-INPUT /usr/share/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty
-INPUT /usr/share/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty
-INPUT /usr/share/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty
-INPUT /usr/share/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty
-INPUT /usr/share/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty
-INPUT /usr/share/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty
-INPUT /usr/share/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty
-INPUT /usr/share/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty
-INPUT /usr/share/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty
-INPUT /usr/share/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty
-INPUT /usr/share/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty
-INPUT /usr/share/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty
-INPUT /usr/share/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty
-INPUT /usr/share/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty
-INPUT /usr/share/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty
-INPUT /usr/share/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty
-INPUT /usr/share/texmf-dist/tex/generic/pdfescape/pdfescape.sty
-INPUT /usr/share/texmf-dist/tex/generic/pdfescape/pdfescape.sty
-INPUT /usr/share/texmf-dist/tex/generic/pdfescape/pdfescape.sty
-INPUT /usr/share/texmf-dist/tex/generic/pdfescape/pdfescape.sty
-INPUT /usr/share/texmf-dist/tex/generic/pdfescape/pdfescape.sty
-INPUT /usr/share/texmf-dist/tex/generic/pdfescape/pdfescape.sty
-INPUT /usr/share/texmf-dist/tex/generic/pdfescape/pdfescape.sty
-INPUT /usr/share/texmf-dist/tex/generic/pdfescape/pdfescape.sty
-INPUT /usr/share/texmf-dist/tex/generic/pdfescape/pdfescape.sty
-INPUT /usr/share/texmf-dist/tex/generic/pdfescape/pdfescape.sty
-INPUT /usr/share/texmf-dist/tex/generic/pdfescape/pdfescape.sty
-INPUT /usr/share/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty
-INPUT /usr/share/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty
-INPUT /usr/share/texmf-dist/tex/latex/hycolor/hycolor.sty
-INPUT /usr/share/texmf-dist/tex/latex/hycolor/hycolor.sty
-INPUT /usr/share/texmf-dist/tex/latex/hycolor/hycolor.sty
-INPUT /usr/share/texmf-dist/tex/latex/hycolor/hycolor.sty
-INPUT /usr/share/texmf-dist/tex/latex/hycolor/hycolor.sty
-INPUT /usr/share/texmf-dist/tex/latex/hycolor/hycolor.sty
-INPUT /usr/share/texmf-dist/tex/latex/hycolor/hycolor.sty
-INPUT /usr/share/texmf-dist/tex/latex/hycolor/hycolor.sty
-INPUT /usr/share/texmf-dist/tex/latex/hycolor/hycolor.sty
-INPUT /usr/share/texmf-dist/tex/latex/hycolor/hycolor.sty
-INPUT /usr/share/texmf-dist/tex/latex/hycolor/hycolor.sty
-INPUT /usr/share/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty
-INPUT /usr/share/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty
-INPUT /usr/share/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty
-INPUT /usr/share/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty
-INPUT /usr/share/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty
-INPUT /usr/share/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty
-INPUT /usr/share/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty
-INPUT /usr/share/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty
-INPUT /usr/share/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty
-INPUT /usr/share/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty
-INPUT /usr/share/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty
-INPUT /usr/share/texmf-dist/tex/latex/auxhook/auxhook.sty
-INPUT /usr/share/texmf-dist/tex/latex/auxhook/auxhook.sty
-INPUT /usr/share/texmf-dist/tex/latex/auxhook/auxhook.sty
-INPUT /usr/share/texmf-dist/tex/latex/auxhook/auxhook.sty
-INPUT /usr/share/texmf-dist/tex/latex/auxhook/auxhook.sty
-INPUT /usr/share/texmf-dist/tex/latex/auxhook/auxhook.sty
-INPUT /usr/share/texmf-dist/tex/latex/auxhook/auxhook.sty
-INPUT /usr/share/texmf-dist/tex/latex/auxhook/auxhook.sty
-INPUT /usr/share/texmf-dist/tex/latex/auxhook/auxhook.sty
-INPUT /usr/share/texmf-dist/tex/latex/auxhook/auxhook.sty
-INPUT /usr/share/texmf-dist/tex/latex/auxhook/auxhook.sty
-INPUT /usr/share/texmf-dist/tex/latex/kvoptions/kvoptions.sty
-INPUT /usr/share/texmf-dist/tex/latex/kvoptions/kvoptions.sty
-INPUT /usr/share/texmf-dist/tex/latex/kvoptions/kvoptions.sty
-INPUT /usr/share/texmf-dist/tex/latex/kvoptions/kvoptions.sty
-INPUT /usr/share/texmf-dist/tex/latex/kvoptions/kvoptions.sty
-INPUT /usr/share/texmf-dist/tex/latex/kvoptions/kvoptions.sty
-INPUT /usr/share/texmf-dist/tex/latex/kvoptions/kvoptions.sty
-INPUT /usr/share/texmf-dist/tex/latex/kvoptions/kvoptions.sty
-INPUT /usr/share/texmf-dist/tex/latex/kvoptions/kvoptions.sty
-INPUT /usr/share/texmf-dist/tex/latex/kvoptions/kvoptions.sty
-INPUT /usr/share/texmf-dist/tex/latex/kvoptions/kvoptions.sty
-INPUT /usr/share/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty
-INPUT /usr/share/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty
-INPUT /usr/share/texmf-dist/tex/latex/hyperref/pd1enc.def
-INPUT /usr/share/texmf-dist/tex/latex/hyperref/pd1enc.def
-INPUT /usr/share/texmf-dist/tex/latex/hyperref/pd1enc.def
-INPUT /usr/share/texmf-dist/tex/latex/hyperref/pd1enc.def
-INPUT /usr/share/texmf-dist/tex/latex/hyperref/hyperref-langpatches.def
-INPUT /usr/share/texmf-dist/tex/latex/hyperref/hyperref-langpatches.def
-INPUT /usr/share/texmf-dist/tex/latex/hyperref/hyperref-langpatches.def
-INPUT /usr/share/texmf-dist/tex/latex/hyperref/hyperref-langpatches.def
-INPUT /usr/share/texmf-dist/tex/generic/intcalc/intcalc.sty
-INPUT /usr/share/texmf-dist/tex/generic/intcalc/intcalc.sty
-INPUT /usr/share/texmf-dist/tex/generic/intcalc/intcalc.sty
-INPUT /usr/share/texmf-dist/tex/generic/intcalc/intcalc.sty
-INPUT /usr/share/texmf-dist/tex/generic/intcalc/intcalc.sty
-INPUT /usr/share/texmf-dist/tex/generic/intcalc/intcalc.sty
-INPUT /usr/share/texmf-dist/tex/generic/intcalc/intcalc.sty
-INPUT /usr/share/texmf-dist/tex/generic/intcalc/intcalc.sty
-INPUT /usr/share/texmf-dist/tex/generic/intcalc/intcalc.sty
-INPUT /usr/share/texmf-dist/tex/generic/intcalc/intcalc.sty
-INPUT /usr/share/texmf-dist/tex/generic/intcalc/intcalc.sty
-INPUT /usr/share/texmf-dist/tex/generic/etexcmds/etexcmds.sty
-INPUT /usr/share/texmf-dist/tex/generic/etexcmds/etexcmds.sty
-INPUT /usr/share/texmf-dist/tex/generic/etexcmds/etexcmds.sty
-INPUT /usr/share/texmf-dist/tex/generic/etexcmds/etexcmds.sty
-INPUT /usr/share/texmf-dist/tex/generic/etexcmds/etexcmds.sty
-INPUT /usr/share/texmf-dist/tex/generic/etexcmds/etexcmds.sty
-INPUT /usr/share/texmf-dist/tex/generic/etexcmds/etexcmds.sty
-INPUT /usr/share/texmf-dist/tex/generic/etexcmds/etexcmds.sty
-INPUT /usr/share/texmf-dist/tex/generic/etexcmds/etexcmds.sty
-INPUT /usr/share/texmf-dist/tex/generic/etexcmds/etexcmds.sty
-INPUT /usr/share/texmf-dist/tex/generic/etexcmds/etexcmds.sty
-INPUT /usr/share/texmf-dist/tex/generic/infwarerr/infwarerr.sty
-INPUT /usr/share/texmf-dist/tex/generic/iftex/iftex.sty
-INPUT /usr/share/texmf-dist/tex/latex/hyperref/puenc.def
-INPUT /usr/share/texmf-dist/tex/latex/hyperref/puenc.def
-INPUT /usr/share/texmf-dist/tex/latex/hyperref/puenc.def
-INPUT /usr/share/texmf-dist/tex/latex/hyperref/puenc.def
-INPUT /usr/share/texmf-dist/tex/latex/url/url.sty
-INPUT /usr/share/texmf-dist/tex/latex/url/url.sty
-INPUT /usr/share/texmf-dist/tex/latex/url/url.sty
-INPUT /usr/share/texmf-dist/tex/latex/url/url.sty
-INPUT /usr/share/texmf-dist/tex/latex/url/url.sty
-INPUT /usr/share/texmf-dist/tex/latex/url/url.sty
-INPUT /usr/share/texmf-dist/tex/latex/url/url.sty
-INPUT /usr/share/texmf-dist/tex/latex/url/url.sty
-INPUT /usr/share/texmf-dist/tex/latex/url/url.sty
-INPUT /usr/share/texmf-dist/tex/latex/url/url.sty
-INPUT /usr/share/texmf-dist/tex/latex/url/url.sty
-INPUT /usr/share/texmf-dist/tex/generic/bitset/bitset.sty
-INPUT /usr/share/texmf-dist/tex/generic/bitset/bitset.sty
-INPUT /usr/share/texmf-dist/tex/generic/bitset/bitset.sty
-INPUT /usr/share/texmf-dist/tex/generic/bitset/bitset.sty
-INPUT /usr/share/texmf-dist/tex/generic/bitset/bitset.sty
-INPUT /usr/share/texmf-dist/tex/generic/bitset/bitset.sty
-INPUT /usr/share/texmf-dist/tex/generic/bitset/bitset.sty
-INPUT /usr/share/texmf-dist/tex/generic/bitset/bitset.sty
-INPUT /usr/share/texmf-dist/tex/generic/bitset/bitset.sty
-INPUT /usr/share/texmf-dist/tex/generic/bitset/bitset.sty
-INPUT /usr/share/texmf-dist/tex/generic/bitset/bitset.sty
-INPUT /usr/share/texmf-dist/tex/generic/infwarerr/infwarerr.sty
-INPUT /usr/share/texmf-dist/tex/generic/intcalc/intcalc.sty
-INPUT /usr/share/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty
-INPUT /usr/share/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty
-INPUT /usr/share/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty
-INPUT /usr/share/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty
-INPUT /usr/share/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty
-INPUT /usr/share/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty
-INPUT /usr/share/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty
-INPUT /usr/share/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty
-INPUT /usr/share/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty
-INPUT /usr/share/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty
-INPUT /usr/share/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty
-INPUT /usr/share/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty
-INPUT /usr/share/texmf-dist/tex/generic/atbegshi/atbegshi.sty
-INPUT /usr/share/texmf-dist/tex/generic/atbegshi/atbegshi.sty
-INPUT /usr/share/texmf-dist/tex/generic/atbegshi/atbegshi.sty
-INPUT /usr/share/texmf-dist/tex/latex/base/atbegshi-ltx.sty
-INPUT /usr/share/texmf-dist/tex/generic/atbegshi/atbegshi.sty
-INPUT /usr/share/texmf-dist/tex/generic/atbegshi/atbegshi.sty
-INPUT /usr/share/texmf-dist/tex/latex/base/atbegshi-ltx.sty
-INPUT /usr/share/texmf-dist/tex/generic/atbegshi/atbegshi.sty
-INPUT /usr/share/texmf-dist/tex/latex/base/atbegshi-ltx.sty
-INPUT /usr/share/texmf-dist/tex/latex/base/atbegshi-ltx.sty
-INPUT /usr/share/texmf-dist/tex/generic/atbegshi/atbegshi.sty
-INPUT /usr/share/texmf-dist/tex/generic/atbegshi/atbegshi.sty
-INPUT /usr/share/texmf-dist/tex/latex/base/atbegshi-ltx.sty
-INPUT /usr/share/texmf-dist/tex/latex/base/atbegshi-ltx.sty
-INPUT /usr/share/texmf-dist/tex/generic/atbegshi/atbegshi.sty
-INPUT /usr/share/texmf-dist/tex/latex/base/atbegshi-ltx.sty
-INPUT /usr/share/texmf-dist/tex/latex/hyperref/hpdftex.def
-INPUT /usr/share/texmf-dist/tex/latex/hyperref/hpdftex.def
-INPUT /usr/share/texmf-dist/tex/latex/hyperref/hpdftex.def
-INPUT /usr/share/texmf-dist/tex/latex/hyperref/hpdftex.def
-INPUT /usr/share/texmf-dist/tex/latex/atveryend/atveryend.sty
-INPUT /usr/share/texmf-dist/tex/latex/atveryend/atveryend.sty
-INPUT /usr/share/texmf-dist/tex/latex/atveryend/atveryend.sty
-INPUT /usr/share/texmf-dist/tex/latex/base/atveryend-ltx.sty
-INPUT /usr/share/texmf-dist/tex/latex/atveryend/atveryend.sty
-INPUT /usr/share/texmf-dist/tex/latex/atveryend/atveryend.sty
-INPUT /usr/share/texmf-dist/tex/latex/base/atveryend-ltx.sty
-INPUT /usr/share/texmf-dist/tex/latex/atveryend/atveryend.sty
-INPUT /usr/share/texmf-dist/tex/latex/base/atveryend-ltx.sty
-INPUT /usr/share/texmf-dist/tex/latex/base/atveryend-ltx.sty
-INPUT /usr/share/texmf-dist/tex/latex/atveryend/atveryend.sty
-INPUT /usr/share/texmf-dist/tex/latex/atveryend/atveryend.sty
-INPUT /usr/share/texmf-dist/tex/latex/base/atveryend-ltx.sty
-INPUT /usr/share/texmf-dist/tex/latex/base/atveryend-ltx.sty
-INPUT /usr/share/texmf-dist/tex/latex/atveryend/atveryend.sty
-INPUT /usr/share/texmf-dist/tex/latex/base/atveryend-ltx.sty
-INPUT /usr/share/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty
-INPUT /usr/share/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty
-INPUT /usr/share/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty
-INPUT /usr/share/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty
-INPUT /usr/share/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty
-INPUT /usr/share/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty
-INPUT /usr/share/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty
-INPUT /usr/share/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty
-INPUT /usr/share/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty
-INPUT /usr/share/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty
-INPUT /usr/share/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty
-INPUT /usr/share/texmf-dist/tex/latex/kvoptions/kvoptions.sty
-INPUT /usr/share/texmf-dist/tex/generic/infwarerr/infwarerr.sty
-INPUT /usr/share/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty
-INPUT /usr/share/texmf-dist/tex/latex/atveryend/atveryend.sty
-INPUT /usr/share/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty
-INPUT /usr/share/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty
-INPUT /usr/share/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty
-INPUT /usr/share/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty
-INPUT /usr/share/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty
-INPUT /usr/share/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty
-INPUT /usr/share/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty
-INPUT /usr/share/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty
-INPUT /usr/share/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty
-INPUT /usr/share/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty
-INPUT /usr/share/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty
-INPUT /usr/share/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty
-INPUT /usr/share/texmf-dist/tex/generic/infwarerr/infwarerr.sty
-INPUT /usr/share/texmf-dist/tex/latex/tools/xspace.sty
-INPUT /usr/share/texmf-dist/tex/latex/tools/xspace.sty
-INPUT /usr/share/texmf-dist/tex/latex/tools/xspace.sty
-INPUT /usr/share/texmf-dist/tex/latex/tools/xspace.sty
-INPUT /usr/share/texmf-dist/tex/latex/tools/xspace.sty
-INPUT /usr/share/texmf-dist/tex/latex/tools/xspace.sty
-INPUT /usr/share/texmf-dist/tex/latex/tools/xspace.sty
-INPUT /usr/share/texmf-dist/tex/latex/tools/xspace.sty
-INPUT /usr/share/texmf-dist/tex/latex/tools/xspace.sty
-INPUT /usr/share/texmf-dist/tex/latex/tools/xspace.sty
-INPUT /usr/share/texmf-dist/tex/latex/tools/xspace.sty
-INPUT /usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
-INPUT /usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
-INPUT /usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
-INPUT /usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
-INPUT /usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
-INPUT /usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
-INPUT /usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
-INPUT /usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
-INPUT /usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
-INPUT /usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
-INPUT /usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
-INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.aux
-INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.aux
-INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.aux
-INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/introduction.aux
-INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/introduction.aux
-INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/introduction.aux
-OUTPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.aux
-INPUT /usr/share/texmf-dist/tex/latex/graphics/color.sty
-INPUT /usr/share/texmf-dist/tex/latex/graphics/color.sty
-INPUT /usr/share/texmf-dist/tex/latex/graphics/color.sty
-INPUT /usr/share/texmf-dist/tex/latex/graphics/color.sty
-INPUT /usr/share/texmf-dist/tex/latex/graphics/color.sty
-INPUT /usr/share/texmf-dist/tex/latex/graphics/color.sty
-INPUT /usr/share/texmf-dist/tex/latex/graphics/color.sty
-INPUT /usr/share/texmf-dist/tex/latex/graphics/color.sty
-INPUT /usr/share/texmf-dist/tex/latex/graphics/color.sty
-INPUT /usr/share/texmf-dist/tex/latex/graphics/color.sty
-INPUT /usr/share/texmf-dist/tex/latex/graphics/color.sty
-INPUT /usr/share/texmf-dist/tex/latex/graphics-cfg/color.cfg
-INPUT /usr/share/texmf-dist/tex/latex/graphics-cfg/color.cfg
-INPUT /usr/share/texmf-dist/tex/latex/graphics-cfg/color.cfg
-INPUT /usr/share/texmf-dist/tex/latex/graphics-cfg/color.cfg
-INPUT /usr/share/texmf-dist/tex/latex/graphics-def/pdftex.def
-INPUT /usr/share/texmf-dist/tex/latex/graphics-def/pdftex.def
-INPUT /usr/share/texmf-dist/tex/latex/graphics-def/pdftex.def
-INPUT /usr/share/texmf-dist/tex/latex/graphics-def/pdftex.def
-INPUT /usr/share/texmf-dist/tex/context/base/mkii/supp-pdf.mkii
-INPUT /usr/share/texmf-dist/tex/context/base/mkii/supp-pdf.mkii
-INPUT /usr/share/texmf-dist/tex/context/base/mkii/supp-pdf.mkii
-INPUT /usr/share/texmf-dist/tex/context/base/mkii/supp-pdf.mkii
-INPUT /usr/share/texmf-dist/tex/latex/hyperref/nameref.sty
-INPUT /usr/share/texmf-dist/tex/latex/hyperref/nameref.sty
-INPUT /usr/share/texmf-dist/tex/latex/hyperref/nameref.sty
-INPUT /usr/share/texmf-dist/tex/latex/hyperref/nameref.sty
-INPUT /usr/share/texmf-dist/tex/latex/hyperref/nameref.sty
-INPUT /usr/share/texmf-dist/tex/latex/hyperref/nameref.sty
-INPUT /usr/share/texmf-dist/tex/latex/hyperref/nameref.sty
-INPUT /usr/share/texmf-dist/tex/latex/hyperref/nameref.sty
-INPUT /usr/share/texmf-dist/tex/latex/hyperref/nameref.sty
-INPUT /usr/share/texmf-dist/tex/latex/hyperref/nameref.sty
-INPUT /usr/share/texmf-dist/tex/latex/hyperref/nameref.sty
-INPUT /usr/share/texmf-dist/tex/latex/refcount/refcount.sty
-INPUT /usr/share/texmf-dist/tex/latex/refcount/refcount.sty
-INPUT /usr/share/texmf-dist/tex/latex/refcount/refcount.sty
-INPUT /usr/share/texmf-dist/tex/latex/refcount/refcount.sty
-INPUT /usr/share/texmf-dist/tex/latex/refcount/refcount.sty
-INPUT /usr/share/texmf-dist/tex/latex/refcount/refcount.sty
-INPUT /usr/share/texmf-dist/tex/latex/refcount/refcount.sty
-INPUT /usr/share/texmf-dist/tex/latex/refcount/refcount.sty
-INPUT /usr/share/texmf-dist/tex/latex/refcount/refcount.sty
-INPUT /usr/share/texmf-dist/tex/latex/refcount/refcount.sty
-INPUT /usr/share/texmf-dist/tex/latex/refcount/refcount.sty
-INPUT /usr/share/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty
-INPUT /usr/share/texmf-dist/tex/generic/infwarerr/infwarerr.sty
-INPUT /usr/share/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty
-INPUT /usr/share/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty
-INPUT /usr/share/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty
-INPUT /usr/share/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty
-INPUT /usr/share/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty
-INPUT /usr/share/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty
-INPUT /usr/share/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty
-INPUT /usr/share/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty
-INPUT /usr/share/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty
-INPUT /usr/share/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty
-INPUT /usr/share/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty
-INPUT /usr/share/texmf-dist/tex/latex/kvoptions/kvoptions.sty
-INPUT /usr/share/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty
-INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.out
-INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.out
-INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.out
-INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.out
-INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.out
-INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.out
-INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.out
-INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.out
-OUTPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.pdf
-INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.out
-INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.out
-OUTPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.out
-INPUT /usr/share/texmf-dist/fonts/tfm/jknappen/ec/ecrm1728.tfm
-INPUT /usr/share/texmf-dist/fonts/tfm/jknappen/ec/ecrm1440.tfm
-INPUT /usr/share/texmf-dist/fonts/tfm/jknappen/ec/ecrm1200.tfm
-INPUT /usr/share/texmf-dist/fonts/tfm/public/cm/cmr12.tfm
-INPUT /usr/share/texmf-dist/fonts/tfm/public/cm/cmr8.tfm
-INPUT /usr/share/texmf-dist/fonts/tfm/public/cm/cmr6.tfm
-INPUT /usr/share/texmf-dist/fonts/tfm/public/cm/cmmi12.tfm
-INPUT /usr/share/texmf-dist/fonts/tfm/public/cm/cmmi8.tfm
-INPUT /usr/share/texmf-dist/fonts/tfm/public/cm/cmmi6.tfm
-INPUT /usr/share/texmf-dist/fonts/tfm/public/cm/cmsy10.tfm
-INPUT /usr/share/texmf-dist/fonts/tfm/public/cm/cmsy8.tfm
-INPUT /usr/share/texmf-dist/fonts/tfm/public/cm/cmsy6.tfm
-INPUT /usr/share/texmf-dist/fonts/tfm/jknappen/ec/ecbx1440.tfm
-INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.toc
-INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.toc
-INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.toc
-INPUT /usr/share/texmf-dist/fonts/tfm/jknappen/ec/ecbx1000.tfm
-OUTPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.toc
-INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/introduction.tex
-INPUT /usr/share/texmf-var/fonts/map/pdftex/updmap/pdftex.map
-OUTPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/introduction.aux
-INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/introduction.tex
-INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/introduction.tex
-INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/introduction.tex
-INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/introduction.tex
-INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/introduction.tex
-INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/introduction.tex
-INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/introduction.tex
-INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/introduction.tex
-INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/introduction.tex
-INPUT /usr/share/texmf-dist/tex/latex/base/t1cmtt.fd
-INPUT /usr/share/texmf-dist/tex/latex/base/t1cmtt.fd
-INPUT /usr/share/texmf-dist/tex/latex/base/t1cmtt.fd
-INPUT /usr/share/texmf-dist/tex/latex/base/t1cmtt.fd
-INPUT /usr/share/texmf-dist/fonts/tfm/jknappen/ec/ectt1000.tfm
-INPUT /usr/share/texmf-dist/fonts/tfm/jknappen/ec/ecbx1200.tfm
-INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.aux
-INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/introduction.aux
-INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/introduction.aux
-INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/introduction.aux
-INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.out
-INPUT /home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.out
-INPUT /usr/share/texmf-dist/fonts/enc/dvips/cm-super/cm-super-t1.enc
-INPUT /usr/share/texmf-dist/fonts/type1/public/cm-super/sfbx1000.pfb
-INPUT /usr/share/texmf-dist/fonts/type1/public/cm-super/sfbx1440.pfb
-INPUT /usr/share/texmf-dist/fonts/type1/public/cm-super/sfrm1000.pfb
-INPUT /usr/share/texmf-dist/fonts/type1/public/cm-super/sfrm1200.pfb
-INPUT /usr/share/texmf-dist/fonts/type1/public/cm-super/sfrm1440.pfb
-INPUT /usr/share/texmf-dist/fonts/type1/public/cm-super/sfrm1728.pfb
-INPUT /usr/share/texmf-dist/fonts/type1/public/cm-super/sftt1000.pfb
diff --git a/docs/user_manual/main.log b/docs/user_manual/main.log
deleted file mode 100644
index af690a0..0000000
--- a/docs/user_manual/main.log
+++ /dev/null
@@ -1,271 +0,0 @@
-This is pdfTeX, Version 3.141592653-2.6-1.40.22 (TeX Live 2021/VoidLinux) (preloaded format=pdflatex 2022.10.26)  24 NOV 2022 15:01
-entering extended mode
- restricted \write18 enabled.
- file:line:error style messages enabled.
- %&-line parsing enabled.
-**"/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.tex"
-(/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.tex
-LaTeX2e <2020-10-01> patch level 4
-L3 programming layer <2021-02-18> (/usr/share/texmf-dist/tex/latex/base/article.cls
-Document Class: article 2020/04/10 v1.4m Standard LaTeX document class
-(/usr/share/texmf-dist/tex/latex/base/size10.clo
-File: size10.clo 2020/04/10 v1.4m Standard LaTeX file (size option)
-)
-\c@part=\count179
-\c@section=\count180
-\c@subsection=\count181
-\c@subsubsection=\count182
-\c@paragraph=\count183
-\c@subparagraph=\count184
-\c@figure=\count185
-\c@table=\count186
-\abovecaptionskip=\skip47
-\belowcaptionskip=\skip48
-\bibindent=\dimen138
-) (/usr/share/texmf-dist/tex/latex/base/inputenc.sty
-Package: inputenc 2020/08/01 v1.3d Input encoding file
-\inpenc@prehook=\toks15
-\inpenc@posthook=\toks16
-) (/usr/share/texmf-dist/tex/latex/base/fontenc.sty
-Package: fontenc 2020/08/10 v2.0s Standard LaTeX package
-) (/usr/share/texmf-dist/tex/generic/babel/babel.sty
-Package: babel 2021/03/24 3.56 The Babel package
- (/usr/share/texmf-dist/tex/generic/babel/babel.def
-File: babel.def 2021/03/24 3.56 Babel common definitions
-\babel@savecnt=\count187
-\U@D=\dimen139
-\l@babelnohyphens=\language87
- (/usr/share/texmf-dist/tex/generic/babel/txtbabel.def)
-\bbl@readstream=\read2
-)
-\bbl@dirlevel=\count188
- (/usr/share/texmf-dist/tex/generic/babel-english/english.ldf
-Language: english 2017/06/06 v3.3r English support from the babel system
-Package babel Info: \l@canadian = using hyphenrules for english
-(babel)             (\language0) on input line 102.
-Package babel Info: \l@australian = using hyphenrules for ukenglish
-(babel)             (\language21) on input line 105.
-Package babel Info: \l@newzealand = using hyphenrules for ukenglish
-(babel)             (\language21) on input line 108.
-)) (/usr/share/texmf-dist/tex/latex/hyperref/hyperref.sty
-Package: hyperref 2021-02-27 v7.00k Hypertext links for LaTeX
- (/usr/share/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty
-Package: ltxcmds 2020-05-10 v1.25 LaTeX kernel commands for general use (HO)
-) (/usr/share/texmf-dist/tex/generic/iftex/iftex.sty
-Package: iftex 2020/03/06 v1.0d TeX engine tests
-) (/usr/share/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty
-Package: pdftexcmds 2020-06-27 v0.33 Utility functions of pdfTeX for LuaTeX (HO)
- (/usr/share/texmf-dist/tex/generic/infwarerr/infwarerr.sty
-Package: infwarerr 2019/12/03 v1.5 Providing info/warning/error messages (HO)
-)
-Package pdftexcmds Info: \pdf@primitive is available.
-Package pdftexcmds Info: \pdf@ifprimitive is available.
-Package pdftexcmds Info: \pdfdraftmode found.
-) (/usr/share/texmf-dist/tex/latex/graphics/keyval.sty
-Package: keyval 2014/10/28 v1.15 key=value parser (DPC)
-\KV@toks@=\toks17
-) (/usr/share/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty
-Package: kvsetkeys 2019/12/15 v1.18 Key value parser (HO)
-) (/usr/share/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty
-Package: kvdefinekeys 2019-12-19 v1.6 Define keys (HO)
-) (/usr/share/texmf-dist/tex/generic/pdfescape/pdfescape.sty
-Package: pdfescape 2019/12/09 v1.15 Implements pdfTeX's escape features (HO)
-) (/usr/share/texmf-dist/tex/latex/hycolor/hycolor.sty
-Package: hycolor 2020-01-27 v1.10 Color options for hyperref/bookmark (HO)
-) (/usr/share/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty
-Package: letltxmacro 2019/12/03 v1.6 Let assignment for LaTeX macros (HO)
-) (/usr/share/texmf-dist/tex/latex/auxhook/auxhook.sty
-Package: auxhook 2019-12-17 v1.6 Hooks for auxiliary files (HO)
-) (/usr/share/texmf-dist/tex/latex/kvoptions/kvoptions.sty
-Package: kvoptions 2020-10-07 v3.14 Key value format for package options (HO)
-)
-\@linkdim=\dimen140
-\Hy@linkcounter=\count189
-\Hy@pagecounter=\count190
- (/usr/share/texmf-dist/tex/latex/hyperref/pd1enc.def
-File: pd1enc.def 2021-02-27 v7.00k Hyperref: PDFDocEncoding definition (HO)
-Now handling font encoding PD1 ...
-... no UTF-8 mapping file for font encoding PD1
-) (/usr/share/texmf-dist/tex/latex/hyperref/hyperref-langpatches.def
-File: hyperref-langpatches.def 2021-02-27 v7.00k Hyperref: patches for babel languages
-) (/usr/share/texmf-dist/tex/generic/intcalc/intcalc.sty
-Package: intcalc 2019/12/15 v1.3 Expandable calculations with integers (HO)
-) (/usr/share/texmf-dist/tex/generic/etexcmds/etexcmds.sty
-Package: etexcmds 2019/12/15 v1.7 Avoid name clashes with e-TeX commands (HO)
-)
-\Hy@SavedSpaceFactor=\count191
- (/usr/share/texmf-dist/tex/latex/hyperref/puenc.def
-File: puenc.def 2021-02-27 v7.00k Hyperref: PDF Unicode definition (HO)
-Now handling font encoding PU ...
-... no UTF-8 mapping file for font encoding PU
-)
-Package hyperref Info: Hyper figures OFF on input line 4192.
-Package hyperref Info: Link nesting OFF on input line 4197.
-Package hyperref Info: Hyper index ON on input line 4200.
-Package hyperref Info: Plain pages OFF on input line 4207.
-Package hyperref Info: Backreferencing OFF on input line 4212.
-Package hyperref Info: Implicit mode ON; LaTeX internals redefined.
-Package hyperref Info: Bookmarks ON on input line 4445.
-\c@Hy@tempcnt=\count192
- (/usr/share/texmf-dist/tex/latex/url/url.sty
-\Urlmuskip=\muskip16
-Package: url 2013/09/16  ver 3.4  Verb mode for urls, etc.
-)
-LaTeX Info: Redefining \url on input line 4804.
-\XeTeXLinkMargin=\dimen141
- (/usr/share/texmf-dist/tex/generic/bitset/bitset.sty
-Package: bitset 2019/12/09 v1.3 Handle bit-vector datatype (HO)
- (/usr/share/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty
-Package: bigintcalc 2019/12/15 v1.5 Expandable calculations on big integers (HO)
-))
-\Fld@menulength=\count193
-\Field@Width=\dimen142
-\Fld@charsize=\dimen143
-Package hyperref Info: Hyper figures OFF on input line 6075.
-Package hyperref Info: Link nesting OFF on input line 6080.
-Package hyperref Info: Hyper index ON on input line 6083.
-Package hyperref Info: backreferencing OFF on input line 6090.
-Package hyperref Info: Link coloring OFF on input line 6095.
-Package hyperref Info: Link coloring with OCG OFF on input line 6100.
-Package hyperref Info: PDF/A mode OFF on input line 6105.
-LaTeX Info: Redefining \ref on input line 6145.
-LaTeX Info: Redefining \pageref on input line 6149.
- (/usr/share/texmf-dist/tex/latex/base/atbegshi-ltx.sty
-Package: atbegshi-ltx 2020/08/17 v1.0a Emulation of the original atbegshi package
-with kernel methods
-)
-\Hy@abspage=\count194
-\c@Item=\count195
-\c@Hfootnote=\count196
-)
-Package hyperref Info: Driver (autodetected): hpdftex.
- (/usr/share/texmf-dist/tex/latex/hyperref/hpdftex.def
-File: hpdftex.def 2021-02-27 v7.00k Hyperref driver for pdfTeX
- (/usr/share/texmf-dist/tex/latex/base/atveryend-ltx.sty
-Package: atveryend-ltx 2020/08/19 v1.0a Emulation of the original atvery package
-with kernel methods
-)
-\Fld@listcount=\count197
-\c@bookmark@seq@number=\count198
- (/usr/share/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty
-Package: rerunfilecheck 2019/12/05 v1.9 Rerun checks for auxiliary files (HO)
- (/usr/share/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty
-Package: uniquecounter 2019/12/15 v1.4 Provide unlimited unique counter (HO)
-)
-Package uniquecounter Info: New unique counter `rerunfilecheck' on input line 286.
-)
-\Hy@SectionHShift=\skip49
-) (/usr/share/texmf-dist/tex/latex/tools/xspace.sty
-Package: xspace 2014/10/28 v1.13 Space after command names (DPC,MH)
-)
-Package hyperref Info: Option `colorlinks' set `true' on input line 16.
- (/usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
-File: l3backend-pdftex.def 2021-03-18 L3 backend support: PDF output (pdfTeX)
-\l__color_backend_stack_int=\count199
-\l__pdf_internal_box=\box47
-) (/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.aux (/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/introduction.aux))
-\openout1 = `main.aux'.
-
-LaTeX Font Info:    Checking defaults for OML/cmm/m/it on input line 24.
-LaTeX Font Info:    ... okay on input line 24.
-LaTeX Font Info:    Checking defaults for OMS/cmsy/m/n on input line 24.
-LaTeX Font Info:    ... okay on input line 24.
-LaTeX Font Info:    Checking defaults for OT1/cmr/m/n on input line 24.
-LaTeX Font Info:    ... okay on input line 24.
-LaTeX Font Info:    Checking defaults for T1/cmr/m/n on input line 24.
-LaTeX Font Info:    ... okay on input line 24.
-LaTeX Font Info:    Checking defaults for TS1/cmr/m/n on input line 24.
-LaTeX Font Info:    ... okay on input line 24.
-LaTeX Font Info:    Checking defaults for OMX/cmex/m/n on input line 24.
-LaTeX Font Info:    ... okay on input line 24.
-LaTeX Font Info:    Checking defaults for U/cmr/m/n on input line 24.
-LaTeX Font Info:    ... okay on input line 24.
-LaTeX Font Info:    Checking defaults for PD1/pdf/m/n on input line 24.
-LaTeX Font Info:    ... okay on input line 24.
-LaTeX Font Info:    Checking defaults for PU/pdf/m/n on input line 24.
-LaTeX Font Info:    ... okay on input line 24.
- (/usr/share/texmf-dist/tex/latex/graphics/color.sty
-Package: color 2020/02/24 v1.2b Standard LaTeX Color (DPC)
- (/usr/share/texmf-dist/tex/latex/graphics-cfg/color.cfg
-File: color.cfg 2016/01/02 v1.6 sample color configuration
-)
-Package color Info: Driver file: pdftex.def on input line 147.
- (/usr/share/texmf-dist/tex/latex/graphics-def/pdftex.def
-File: pdftex.def 2020/10/05 v1.2a Graphics/color driver for pdftex
- (/usr/share/texmf-dist/tex/context/base/mkii/supp-pdf.mkii
-[Loading MPS to PDF converter (version 2006.09.02).]
-\scratchcounter=\count266
-\scratchdimen=\dimen144
-\scratchbox=\box48
-\nofMPsegments=\count267
-\nofMParguments=\count268
-\everyMPshowfont=\toks18
-\MPscratchCnt=\count269
-\MPscratchDim=\dimen145
-\MPnumerator=\count270
-\makeMPintoPDFobject=\count271
-\everyMPtoPDFconversion=\toks19
-)))
-Package hyperref Info: Link coloring ON on input line 24.
- (/usr/share/texmf-dist/tex/latex/hyperref/nameref.sty
-Package: nameref 2021-04-02 v2.47 Cross-referencing by name of section
- (/usr/share/texmf-dist/tex/latex/refcount/refcount.sty
-Package: refcount 2019/12/15 v3.6 Data extraction from label references (HO)
-) (/usr/share/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty
-Package: gettitlestring 2019/12/15 v1.6 Cleanup title references (HO)
-)
-\c@section@level=\count272
-)
-LaTeX Info: Redefining \ref on input line 24.
-LaTeX Info: Redefining \pageref on input line 24.
-LaTeX Info: Redefining \nameref on input line 24.
- (/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.out) (/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.out)
-\@outlinefile=\write3
-\openout3 = `main.out'.
-
-LaTeX Font Info:    External font `cmex10' loaded for size
-(Font)              <12> on input line 27.
-LaTeX Font Info:    External font `cmex10' loaded for size
-(Font)              <8> on input line 27.
-LaTeX Font Info:    External font `cmex10' loaded for size
-(Font)              <6> on input line 27.
- (/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.toc
-LaTeX Font Info:    External font `cmex10' loaded for size
-(Font)              <7> on input line 3.
-LaTeX Font Info:    External font `cmex10' loaded for size
-(Font)              <5> on input line 3.
-)
-\tf@toc=\write4
-\openout4 = `main.toc'.
-
- [1
-
-{/usr/share/texmf-var/fonts/map/pdftex/updmap/pdftex.map}]
-\openout2 = `introduction.aux'.
-
- (/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/introduction.tex
-LaTeX Font Info:    Trying to load font information for T1+cmtt on input line 5.
- (/usr/share/texmf-dist/tex/latex/base/t1cmtt.fd
-File: t1cmtt.fd 2019/12/16 v2.5j Standard LaTeX font definitions
-)) [2
-
-] (/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.aux (/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/introduction.aux))
-Package rerunfilecheck Info: File `main.out' has not changed.
-(rerunfilecheck)             Checksum: 7B1546629CE4EBA28EE579CF334E3FDD;166.
- ) 
-Here is how much of TeX's memory you used:
- 8504 strings out of 478994
- 124976 string characters out of 5864718
- 432667 words of memory out of 5000000
- 25885 multiletter control sequences out of 15000+600000
- 411869 words of font info for 44 fonts, out of 8000000 for 9000
- 1141 hyphenation exceptions out of 8191
- 71i,6n,74p,477b,335s stack positions out of 5000i,500n,10000p,200000b,80000s
-{/usr/share/texmf-dist/fonts/enc/dvips/cm-super/cm-super-t1.enc}</usr/share/texmf-dist/fonts/type1/public/cm-super/sfbx1000.pfb></usr/share/texmf-dist/fonts/type1/public/cm-super/sfbx1440.pfb></usr/share/texmf-dist/fonts/type1/public/cm-super/sfrm1000.pfb></usr/share/texmf-dist/fonts/type1/public/cm-super/sfrm1200.pfb></usr/share/texmf-dist/fonts/type1/public/cm-super/sfrm1440.pfb></usr/share/texmf-dist/fonts/type1/public/cm-super/sfrm1728.pfb></usr/share/texmf-dist/fonts/type1/public/cm-super/sftt1000.pfb>
-Output written on "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.pdf" (2 pages, 100488 bytes).
-PDF statistics:
- 59 PDF objects out of 1000 (max. 8388607)
- 47 compressed objects within 1 object stream
- 6 named destinations out of 1000 (max. 500000)
- 17 words of extra memory for PDF output out of 10000 (max. 10000000)
-
diff --git a/docs/user_manual/main.out b/docs/user_manual/main.out
deleted file mode 100644
index ff4dae8..0000000
--- a/docs/user_manual/main.out
+++ /dev/null
@@ -1,2 +0,0 @@
-\BOOKMARK [1][-]{section.1}{\376\377\000I\000n\000t\000r\000o\000d\000u\000c\000t\000i\000o\000n}{}% 1
-\BOOKMARK [2][-]{section*.2}{\376\377\000t\000o}{section.1}% 2
diff --git a/docs/user_manual/main.synctex.gz b/docs/user_manual/main.synctex.gz
deleted file mode 100644
index 4e8fef8d22efedecdf5d9973ba4a786856d62f6e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3536
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
KNJwy5Jpce?x8?Hy

diff --git a/docs/user_manual/main.tex b/docs/user_manual/main.tex
deleted file mode 100644
index 2916bd3..0000000
--- a/docs/user_manual/main.tex
+++ /dev/null
@@ -1,32 +0,0 @@
-\documentclass{article}
-
-\usepackage[utf8]{inputenc}
-\usepackage[T1]{fontenc}
-\usepackage[english]{babel}
-
-\usepackage{hyperref}
-\usepackage{xspace}
-
-\setlength\parindent{0pt}
-
-\hypersetup{
-    colorlinks=true,
-    linkcolor=red,
-    urlcolor=blue
-}
-
-\newcommand{\version}{0.1.0\xspace}
-
-\title{Effovex User Manual \\ {\Large Version \version}}
-\author{A.Guilmin-Crépon, B.Patiachvili and J.Abou-Samra}
-\date{\today}
-
-\begin{document}
-
-    \maketitle
-
-    \tableofcontents
-
-    \include{introduction.tex}
-
-\end{document}
\ No newline at end of file
diff --git a/docs/user_manual/main.toc b/docs/user_manual/main.toc
deleted file mode 100644
index 9c649bd..0000000
--- a/docs/user_manual/main.toc
+++ /dev/null
@@ -1,3 +0,0 @@
-\babel@toc {english}{}
-\contentsline {section}{\numberline {1}Introduction}{2}{section.1}%
-\contentsline {subsection}{to}{2}{section*.2}%
-- 
GitLab


From f7279d5f277b56f45a9407627a210fd2db0ba979 Mon Sep 17 00:00:00 2001
From: Jean Abou Samra <jean@abou-samra.fr>
Date: Thu, 24 Nov 2022 15:13:47 +0100
Subject: [PATCH 07/20] Some cargo-compare simplifications

---
 cargo-compare/src/main.rs | 150 +++++++++++---------------------------
 1 file changed, 43 insertions(+), 107 deletions(-)

diff --git a/cargo-compare/src/main.rs b/cargo-compare/src/main.rs
index c55349e..45849ef 100644
--- a/cargo-compare/src/main.rs
+++ b/cargo-compare/src/main.rs
@@ -7,13 +7,32 @@ use clap::Parser;
 use html_builder::{Buffer, Html5, Node};
 use similar::{ChangeTag, TextDiff};
 use std::collections::HashMap;
+use std::fmt::Display;
 use std::fmt::Write as FmtWrite;
 use std::fs::{create_dir_all, read_to_string, remove_dir_all, rename, File};
 use std::io::Write;
 use std::path::{Path, PathBuf};
-use std::process::{Command, ExitStatus, Output};
+use std::process::{Command, ExitStatus};
 use walkdir::WalkDir;
 
+trait ErrorConversion<T> {
+    fn convert(self) -> Result<T, String>
+    where
+        Self: Sized;
+}
+
+impl<T, U> ErrorConversion<T> for Result<T, U>
+where
+    U: Display,
+{
+    fn convert(self) -> Result<T, String> {
+        match self {
+            Ok(t) => Ok(t),
+            Err(err) => Err(format!("I/O error in testing script: {}", err)),
+        }
+    }
+}
+
 #[derive(Parser)]
 #[command(version)]
 struct Cli {
@@ -25,31 +44,19 @@ struct Cli {
     baseline: bool,
 }
 
-// A few wrappers around fs functions, returning Result<..., String>.
-
 /// Find all files with extension `ext` in the given directory.
 // TODO: Use a glob crate?
 fn glob_ext(dir: &Path, ext: &str) -> Result<Vec<PathBuf>, String> {
     let mut result = Vec::new();
     for entry_res in WalkDir::new(dir) {
-        match entry_res {
-            Err(err) => {
-                return Err(format!(
-                    "I/O error while traversing directory {}: {}",
-                    dir.to_string_lossy(),
-                    err
-                ))
-            }
-            Ok(entry) => {
-                let path = entry.path();
-                if path.is_file() {
-                    if let Some(found_ext) = path.extension() {
-                        // UTF-8 validation
-                        if let Some(string) = found_ext.to_str() {
-                            if string == ext {
-                                result.push(path.to_path_buf());
-                            }
-                        }
+        let entry = entry_res.convert()?;
+        let path = entry.path();
+        if path.is_file() {
+            if let Some(found_ext) = path.extension() {
+                // UTF-8 validation
+                if let Some(string) = found_ext.to_str() {
+                    if string == ext {
+                        result.push(path.to_path_buf());
                     }
                 }
             }
@@ -58,42 +65,6 @@ fn glob_ext(dir: &Path, ext: &str) -> Result<Vec<PathBuf>, String> {
     Ok(result)
 }
 
-/// Remove everything under the given directory.
-fn nuke_dir(path: &Path) -> Result<(), String> {
-    if path.is_dir() {
-        match remove_dir_all(path) {
-            Ok(()) => Ok(()),
-            Err(err) => Err(format!(
-                "cannot remove directory {}: {}",
-                path.to_string_lossy(),
-                err
-            )),
-        }
-    } else {
-        Ok(())
-    }
-}
-
-/// Create all directory parents of the given path.
-fn mkdirs(path: &Path) -> Result<(), String> {
-    match create_dir_all(path) {
-        Ok(()) => Ok(()),
-        Err(err) => Err(format!(
-            "cannot create directory {}: {}",
-            path.to_string_lossy(),
-            err
-        )),
-    }
-}
-
-/// Run a command.
-fn run(cmd: &mut Command) -> Result<Output, String> {
-    match cmd.output() {
-        Err(err) => Err(format!("failed to spawn command: {}", err)),
-        Ok(output) => Ok(output),
-    }
-}
-
 /// Convert PDF file to PNG, putting the result in the same directory
 /// as the original. Uses the `convert` command provided by
 /// ImageMagick.
@@ -101,14 +72,13 @@ fn run(cmd: &mut Command) -> Result<Output, String> {
 // dependency on ImageMagick?
 fn pdf2png(path: &Path) -> Result<(), String> {
     assert!(path.extension().unwrap().to_str().unwrap() == "pdf");
-    let mut command = Command::new("convert");
     let output_path = path.with_extension("png");
-    let status = run(command
-        .arg("-colorspace")
-        .arg("RGB")
+    let mut command = Command::new("convert");
+    let with_args = command
+        .args(["-colorspace", "RGB"])
         .arg(path)
-        .arg(output_path))?
-    .status;
+        .arg(output_path);
+    let status = with_args.output().convert()?.status;
     if status.success() {
         Ok(())
     } else {
@@ -116,32 +86,6 @@ fn pdf2png(path: &Path) -> Result<(), String> {
     }
 }
 
-/// Move a file.
-fn mv(f1: &Path, f2: &Path) -> Result<(), String> {
-    if let Err(err) = rename(f1, f2) {
-        Err(format!(
-            "can't move {} to {}: {}",
-            f1.to_string_lossy(),
-            f1.to_string_lossy(),
-            err
-        ))
-    } else {
-        Ok(())
-    }
-}
-
-/// Create a file and return the `File` object.
-fn create_file(path: &Path) -> Result<File, String> {
-    match File::create(path) {
-        Err(err) => Err(format!(
-            "failed to create {}: {}",
-            path.to_string_lossy(),
-            err
-        )),
-        Ok(file) => Ok(file),
-    }
-}
-
 /// All information about a given test in the baseline and the
 /// comparison directory.
 #[derive(Clone, Debug)]
@@ -172,13 +116,14 @@ fn compile_tests(cli: &Cli, output_dir: &Path) -> Result<Vec<TestInfo>, String>
         let path_under_output_dir: &Path = &output_dir.join(path_under_tests);
         // Create directory if it doesn't exist.
         let prefix: &Path = path_under_output_dir.parent().unwrap();
-        mkdirs(prefix)?;
+        //mkdirs(prefix)?;
+        create_dir_all(prefix).convert()?;
         // TODO: implement -o,--output option in effovex.
         let output_path_owned: PathBuf = path.with_extension("pdf");
         let output_path: &Path = &output_path_owned;
         let mut command = Command::new(&cli.executable);
         let log_path = &path_under_output_dir.with_extension("log");
-        let file = create_file(log_path.as_path())?;
+        let file = File::create(log_path.as_path()).convert()?;
         let exec = command.arg(&path).stderr(file);
         match exec.output() {
             Err(err) => {
@@ -189,7 +134,7 @@ fn compile_tests(cli: &Cli, output_dir: &Path) -> Result<Vec<TestInfo>, String>
                 let final_output_file: Option<PathBuf> = if output_path.is_file() {
                     // move output to baseline/
                     let output_wanted = output_dir.join(path_under_tests).with_extension("pdf");
-                    mv(output_path, &output_wanted)?;
+                    rename(output_path, &output_wanted).convert()?;
                     Some(output_wanted.with_extension("png"))
                 } else {
                     None
@@ -260,17 +205,6 @@ fn add_baseline_data(inp: Vec<TestInfo>) -> Result<Vec<TestInfo>, String> {
     Ok(res)
 }
 
-fn read_log(path: &Path) -> Result<String, String> {
-    match read_to_string(path) {
-        Err(err) => Err(format!(
-            "failed to read file {}: {}",
-            path.to_string_lossy(),
-            err
-        )),
-        Ok(string) => Ok(string),
-    }
-}
-
 fn pretty_diff(log1: String, log2: String, out: &mut Node) {
     let diff = TextDiff::from_lines(&log1, &log2);
     for change in diff.iter_all_changes() {
@@ -314,12 +248,12 @@ fn gen_html(infos: &Vec<TestInfo>) -> Result<String, String> {
         {
             let mut log_row = table.tr();
             let str1 = if let Some(path1) = baseline_log_path {
-                read_log(path1)?
+                read_to_string(path1).convert()?
             } else {
                 String::new()
             };
             let str2 = if let Some(path2) = output_log_path {
-                read_log(path2)?
+                read_to_string(path2).convert()?
             } else {
                 String::new()
             };
@@ -370,7 +304,7 @@ fn run_comparison(cli: &Cli, output_dir: &Path, mut infos: Vec<TestInfo>) -> Res
     infos = add_baseline_data(infos)?;
     let html = gen_html(&infos)?;
     let html_file = output_dir.join("index.html");
-    match create_file(&html_file)?.write(html.as_bytes()) {
+    match File::create(&html_file).convert()?.write(html.as_bytes()) {
         Ok(_) => Ok(()),
         Err(err) => Err(format!(
             "I/O error while writing file {}: {}",
@@ -389,7 +323,9 @@ fn main() -> Result<(), String> {
     };
     let output_dir_name = cli.output_dir.as_ref().unwrap_or(&output_dir_default);
     let output_dir = Path::new(&output_dir_name);
-    nuke_dir(output_dir)?;
+    if output_dir.is_dir() {
+        remove_dir_all(output_dir).convert()?;
+    }
     let infos = compile_tests(&cli, &output_dir)?;
     run_comparison(&cli, &output_dir, infos)?;
     Ok(())
-- 
GitLab


From 48905d5256dd839d177b4404a40536a33327e447 Mon Sep 17 00:00:00 2001
From: Jean Abou Samra <jean@abou-samra.fr>
Date: Thu, 24 Nov 2022 15:25:32 +0100
Subject: [PATCH 08/20] Minor typos

---
 effovex/src/error.rs | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/effovex/src/error.rs b/effovex/src/error.rs
index a4e493c..861ae15 100644
--- a/effovex/src/error.rs
+++ b/effovex/src/error.rs
@@ -2,7 +2,7 @@ use std::fmt::Display;
 
 use parser::error::ParserError;
 
-/// Enumeration grouping all possible errors that can occurre during compilation
+/// Enumeration grouping all possible errors that can occurr during compilation
 #[derive(Debug, Clone, PartialEq, Eq)]
 pub enum Error {
     FileNotReadableError(String),
@@ -14,11 +14,11 @@ impl Display for Error {
         match self {
             Error::FileNotReadableError(path) => write!(
                 f,
-                "File not Readable Error : the file {} could not been read",
+                "File not Readable Error: the file {} could not be read",
                 path
             ),
             Error::ParserError(err) => {
-                write!(f, "Parser Error : {}", err)
+                write!(f, "Parser Error: {}", err)
             }
         }
     }
-- 
GitLab


From d017a9671b8cc31bd8962ae5b2ff985699729173 Mon Sep 17 00:00:00 2001
From: Jean Abou Samra <jean@abou-samra.fr>
Date: Thu, 24 Nov 2022 15:53:35 +0100
Subject: [PATCH 09/20] cargo-compare: Check exit status

---
 cargo-compare/src/main.rs | 54 ++++++++++++++++++++++++---------------
 1 file changed, 33 insertions(+), 21 deletions(-)

diff --git a/cargo-compare/src/main.rs b/cargo-compare/src/main.rs
index 45849ef..545460e 100644
--- a/cargo-compare/src/main.rs
+++ b/cargo-compare/src/main.rs
@@ -89,7 +89,6 @@ fn pdf2png(path: &Path) -> Result<(), String> {
 /// All information about a given test in the baseline and the
 /// comparison directory.
 #[derive(Clone, Debug)]
-#[allow(dead_code)]
 struct TestInfo {
     /// Path to `.fx` file.
     input_path: PathBuf,
@@ -209,9 +208,9 @@ fn pretty_diff(log1: String, log2: String, out: &mut Node) {
     let diff = TextDiff::from_lines(&log1, &log2);
     for change in diff.iter_all_changes() {
         let (color, tag) = match change.tag() {
-            ChangeTag::Delete => ("#ff0000", "-"),
-            ChangeTag::Insert => ("#00ff00", "+"),
-            ChangeTag::Equal => ("#000000", ""),
+            ChangeTag::Delete => ("#ff0000", "- "),
+            ChangeTag::Insert => ("#00ff00", "+ "),
+            ChangeTag::Equal => ("#000000", "= "),
         };
         let mut node = out.span().attr(&format!("style=\"color:{}\"", color));
         writeln!(node, "{}{}", tag, change).unwrap();
@@ -231,22 +230,33 @@ fn gen_html(infos: &Vec<TestInfo>) -> Result<String, String> {
         baseline_log_path,
         output_path,
         output_log_path,
-        status: _, // TODO
+        status,
     } in infos
     {
-        // TODO only show differences
-        let mut para = body.p().attr("style=\"text-align:center\"");
-        para.code()
-            .write_str(&input_path.to_string_lossy())
-            .unwrap();
-        let mut table = body.table().attr("style=\"border: 1px solid black\"");
-        let mut header_row = table.tr();
-        header_row.th().write_str("Old").unwrap();
-        header_row.th().write_str("New").unwrap();
-        header_row.th().write_str("Comparison").unwrap();
-        // Uh, NLL doesn't work here?
         {
-            let mut log_row = table.tr();
+            // TODO only show differences
+            let mut para = body.p();
+            para.b().write_str("File: ").unwrap();
+            para.code()
+                .write_str(&input_path.to_string_lossy())
+                .unwrap();
+        }
+        if let Some(stat) = status {
+            let mut para = body.p();
+            para.b().write_str("Passes: ").unwrap();
+            if stat.success() {
+                para.write_str("yes").unwrap();
+            } else {
+                para.write_str(&format!(
+                    "no (error code {})",
+                    stat.code().expect("command should have been able to start")
+                ))
+                .unwrap();
+            }
+        }
+        {
+            let mut para = body.p();
+            para.b().write_str("Log:").unwrap();
             let str1 = if let Some(path1) = baseline_log_path {
                 read_to_string(path1).convert()?
             } else {
@@ -257,10 +267,13 @@ fn gen_html(infos: &Vec<TestInfo>) -> Result<String, String> {
             } else {
                 String::new()
             };
-            log_row.td().pre().write_str(&str1).unwrap();
-            log_row.td().pre().write_str(&str2).unwrap();
-            pretty_diff(str1, str2, &mut log_row.td().pre());
+            pretty_diff(str1, str2, &mut para.pre());
         }
+        let mut table = body.table().attr("style=\"border: 1px solid black\"");
+        let mut header_row = table.tr();
+        header_row.th().write_str("Old").unwrap();
+        header_row.th().write_str("New").unwrap();
+        header_row.th().write_str("Comparison").unwrap();
         {
             let mut img_row = table.tr();
             // TODO: escaping?
@@ -279,7 +292,6 @@ fn gen_html(infos: &Vec<TestInfo>) -> Result<String, String> {
             }
             img_row.td();
         }
-        // TODO images
     }
     return Ok(buf.finish());
 }
-- 
GitLab


From b54caba81de6dbf0f8dd929363d6c47dc7870c40 Mon Sep 17 00:00:00 2001
From: pigeonmoelleux <pigeonmoelleux@crans.org>
Date: Thu, 24 Nov 2022 16:18:33 +0100
Subject: [PATCH 10/20] =?UTF-8?q?D=C3=A9but=20user=20manual?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 README.md                            |  2 +-
 docs/user_manual/getting_started.tex | 15 ++++++++++++
 docs/user_manual/introduction.tex    | 27 +++++++++++++++++++--
 docs/user_manual/main.tex            | 36 ++++++++++++++++++++++++++++
 4 files changed, 77 insertions(+), 3 deletions(-)
 create mode 100644 docs/user_manual/getting_started.tex
 create mode 100644 docs/user_manual/main.tex

diff --git a/README.md b/README.md
index 1a77f36..c52c2a6 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
 # Effovex
 
-Effovex (pronounced “f of x”) will be a document typesetter focused on (or perhaps entirely devoted to) mathematical formulae.  This is a software enginnering project by Antoine Guilmin Crépon, Balthazar Patiachvili and Jean Abou Samra at M1 MPRI in ENS Paris-Saclay.
+Effovex (pronounced “f of x”) is a software system for document preparation. This is created for a software enginnering project by Antoine Guilmin Crépon, Balthazar Patiachvili and Jean Abou Samra at M1 MPRI in ENS Paris-Saclay.
 
 ## Installation
 
diff --git a/docs/user_manual/getting_started.tex b/docs/user_manual/getting_started.tex
new file mode 100644
index 0000000..6ee49f9
--- /dev/null
+++ b/docs/user_manual/getting_started.tex
@@ -0,0 +1,15 @@
+\section{Getting started}
+
+    This section presents :
+
+    \begin{itemize}
+        \item how to compile a document~;
+        \item how to detect and correct errors that can occurres~;
+        \item how to visualize it.
+    \end{itemize}
+
+    \subsection{Effovex files}
+
+        Effovex files have by convention the extension \texttt{.fx}.
+
+        For this section, save the following effovex code in \texttt{test.fx}. 
\ No newline at end of file
diff --git a/docs/user_manual/introduction.tex b/docs/user_manual/introduction.tex
index 82ddef3..67b92c2 100644
--- a/docs/user_manual/introduction.tex
+++ b/docs/user_manual/introduction.tex
@@ -4,5 +4,28 @@
 
     This document describes how to use the version \version of Effovex from the point of view of a user. Technical explanations and documentation to implement further features can be found on \href{https://TODO.com}{\texttt{https://TODO.com}}.
 
-    \subsection*{}
-    \addcontentsline{toc}{subsection}{to}
\ No newline at end of file
+    \subsection{Motivation}
+
+        This project has been created for a engineering project course at M1 MPRI in ENS Paris-Saclay, France.
+
+        The goal is here to create a language with a compiler to compose documents with a syntax near the one of \LaTeX, but without the concept of expansion. Thus, our language and compiler can have more precise error messages and better guarantees.
+
+    \subsection{Conventions}
+    
+        In all this document, the following conventions will be used :
+
+        \begin{itemize}
+            \item effovex code will be in \texttt{teletype font}~;
+            \item definitions and examples will be in \textit{italic font}~;
+            \item names of packages will be in \textsf{sans serif font}.
+        \end{itemize}
+
+        Moreover, examples of effovex code and the output result will be framed to improve their visibility.
+
+    \subsection{Installation}
+
+        Nowadays, Effovex needs to be built from sources. The easiest way is to download cargo\footnote{\url{https://doc.rust-lang.org/cargo/getting-started/installation.html}}, then to clone the git repository\footnote{\url{https://gitlab.crans.org/pigeonmoelleux/effovex}}, and finally build the project at the root directory.
+
+    \subsection{Overview}
+
+        %TODO
\ No newline at end of file
diff --git a/docs/user_manual/main.tex b/docs/user_manual/main.tex
new file mode 100644
index 0000000..add7c33
--- /dev/null
+++ b/docs/user_manual/main.tex
@@ -0,0 +1,36 @@
+\documentclass{article}
+
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage[english]{babel}
+
+\usepackage{hyperref}
+\usepackage{xspace}
+
+\setlength\parindent{0pt}
+
+\hypersetup{
+    colorlinks=true,
+    linkcolor=red,
+    urlcolor=blue
+}
+
+\newcommand{\version}{0.1.0\xspace}
+
+\title{Effovex User Manual \\ {\Large Version \version}}
+\author{A.Guilmin-Crépon, B.Patiachvili and J.Abou-Samra}
+\date{\today}
+
+\begin{document}
+
+    \maketitle
+
+    \tableofcontents
+
+    \newpage
+
+    \input{introduction.tex}
+
+    \input{getting_started.tex}
+
+\end{document}
\ No newline at end of file
-- 
GitLab


From ac8dc383eaba62029fe45fbe7b42b06078c2fc83 Mon Sep 17 00:00:00 2001
From: pigeonmoelleux <pigeonmoelleux@crans.org>
Date: Sun, 27 Nov 2022 19:11:55 +0100
Subject: [PATCH 11/20] =?UTF-8?q?Commit=20r=C3=A9gulier?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 ROADMAP.md                    | 104 ----------------------------------
 presentation/.gitignore       |   3 -
 presentation/presentation.tex |  78 -------------------------
 3 files changed, 185 deletions(-)
 delete mode 100644 ROADMAP.md
 delete mode 100644 presentation/.gitignore
 delete mode 100644 presentation/presentation.tex

diff --git a/ROADMAP.md b/ROADMAP.md
deleted file mode 100644
index 9ec728a..0000000
--- a/ROADMAP.md
+++ /dev/null
@@ -1,104 +0,0 @@
-Some unsorted thoughts from Jean, feel free to edit and/or discuss:
-
-It's not entirely clear so far what exactly the scope of the project
-would be.  Once we can draw some math formulae on the screen, we could
-try to add integration with text.  On the other hand, there is a lot
-to be done just for math formulae too; it is a never-ending process on
-its own.
-
-One nice thing about at least keeping the math part usable
-independently from the text part is that Effovex could then
-(theoretically) be used in contexts other than PDF articles: web pages
-(cf. MathJax), plots (cf. matplotlib's minimalistic formula renderer),
-other text typesetting systems (cf. rinohtype which used to use
-matplotlib for formula rendering but dropped it because of poor
-quality and is not able to typeset formulae at the moment), ...
-
-Speaking of which, output in formats other than PDF would be
-desirable.  PNG, JPEG and SVG would be nice.
-
-In C, people use the Cairo library for outputting to different
-formats.  A search on crates.io for bindings to Cairo yields all of
-these:
-
-https://crates.io/crates/cairo
-https://crates.io/crates/cairo-rs
-https://crates.io/crates/cairo-rs-colors
-https://crates.io/crates/cairo-sys
-https://crates.io/crates/cairo-svgpath
-https://crates.io/crates/cairo-sys-rs
-
-which sounds promising. There may be alternative approaches though.
-
-TODO:
-
-- check if there would be crates unrelated to Cairo doing the job.
-- check what the dependency on Cairo means on the packaging level:
-  does install effovex from Cargo require first installing Cairo from
-  the system package manager?
-
-
-
-On extensibility: it'd be nice to be able to write custom commands
-embedded in the input in a real programming language (unlike TeX),
-e.g., to draw custom symbols or things like that.
-
-On the other hand, it remains desirable to do this project in Rust
-because of speed (critical e.g. on a web page providing interactive
-equation editing).
-
-Maybe integrate with an extension language? Python? To be seen later.
-
-
-
-One very nice thing would be to have integration of this custom math
-mode into LaTeX itself, so people could switch gradually.
-
-LaTeX to Effovex conversion could be something to explore, although it
-might be hard.
-
-
-On syntax:
-
-We agree that many things from TeX syntax ought to have a more
-convenient notation. Some examples:
-
-
-arrows:   f : A -> B
-
-P => Q   (implication)
-
-f : x |-> x+k
-
-inequality:   a /= b   (a != b was considered too but it could be equally parsed as (a!) = b )
-
-In general, "\not" on a symbol with a slash, e.g., "a does not divide be" would be "a /| b".
-
-Fractions: 1//2
-
-Group delimiters: probably square brackets []. TeX uses curly
-brackets, but they are also customarily used for sets. Although it's
-true that some people use square brackets in alternance with
-parentheses in deeply nested mathematical expressions.
-
-Delimiters () [] {} should scale automatically, no need for \left and \right.
-
-Commands would be introduced with @ and not \ because @ is virtually
-unused in math/CS whereas \ stands for set difference.
-
-It would be nice to support custom notations à la Coq, not just custom
-commands.  An example in internship: writing out equations with the
-notation "m >>= f" would have been more convenient if this notation
-could be entered into the system, rather than rewriting as
-"\bind{m}{f}".  Jean is going to look into parsing tooling for Rust.
-
-There is also an idea floating around to make some alphabetic tokens
-commands that can be used without "@", like sin, cos, tan, ln, log,
-etc.  The problem in TeX is that often you forget that "\", and thre
-is no error but the result is ugly.
-
-However, this should probably not be done if not explicitly requested
-by the user, since these combinations of letters could equally be
-products of variables. Unless we choose to require separating
-variables by spaces ("2 x y" instead of "2xy"), which might be
-cumbersome.
diff --git a/presentation/.gitignore b/presentation/.gitignore
deleted file mode 100644
index e33478b..0000000
--- a/presentation/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-*
-!*.tex
-!.gitignore
diff --git a/presentation/presentation.tex b/presentation/presentation.tex
deleted file mode 100644
index 8a7013e..0000000
--- a/presentation/presentation.tex
+++ /dev/null
@@ -1,78 +0,0 @@
-\documentclass[12pt, aspectratio=169, 169]{beamer}
-
-\mode<presentation>{
-    \usetheme{Warsaw}
-    \useoutertheme{shadow}
-    \useoutertheme{infolines}
-}
-
-\usepackage[utf8]{inputenc}
-\usepackage[T1]{fontenc}
-\usepackage[french]{babel}
-
-\title[Effovex]{Présentation de projet: Effovex}
-\author[J.A.Samra \& A.Guilmin-Crépon \& B.Patiachvili]{Jean Abou Samra, Antoine Guilmin-Crépon, Balthazar Patiachvili}
-\date[06/10/2022]{06 octobre 2022}
-
-\newcommand{\jump}[1][1]{\vspace{#1\baselineskip}}
-
-\begin{document}
-
-  \maketitle
-
-  \begin{frame}{Fonctionnalités}
-    
-    \begin{block}{Description}
-      Création d'un langage et d'un compilateur associé en Rust pour produire des documents PDF, SVG et PNG.
-    \end{block}
-
-    \begin{block}{Mi-parcours}
-      Avoir une base fonctionnelle capable de générer du texte et des bases de mathématiques
-    \end{block}
-
-    \begin{block}{Rendu final}
-      Finalisation de l'interface pour les packages et création de quelques packages de démonstration
-    \end{block}
-
-  \end{frame}
-
-  \begin{frame}{Langage et librairies}
-
-    \begin{block}{}
-      \large
-      \begin{center}
-        Rust
-      \end{center} \pause
-      \jump
-
-      Bibliothèques~:
-      \begin{itemize}
-        \item \textbf{Lexer et parser} : nom \pause $\longrightarrow$ parser dynamique \pause
-        \item \textbf{Génération}~: cairo \pause $\longrightarrow$ génération de PDF, SVG, PNG, \dots \pause
-        \item \textbf{Création de packages}~: libloading
-      \end{itemize}
-
-    \end{block}
-
-  \end{frame}
-
-  \begin{frame}{Structuration et répartition}
-    
-    \begin{block}{}
-      $\underbrace{\text{Langage effovex}}_{\text{Tous}} \longrightarrow \underbrace{\text{Parser}}_{\text{Jean}} \xrightarrow{\quad \text{AST} \quad} \underbrace{\text{Conversion AST-cairo}}_{\text{Balthazar}} \xrightarrow{\text{cairo}} \underbrace{\text{Génération}}_{\text{Antoine}}$
-    \end{block}
-    \jump
-
-    Interface pour l'ajout de packages : Balthazar \pause
-    \jump
-
-    Exemples de packages~:
-    \begin{itemize}
-      \item Arbres de preuves
-      \item Tableaux
-      \item Diagrammes commutatifs
-    \end{itemize}
-
-  \end{frame}
-
-\end{document}
\ No newline at end of file
-- 
GitLab


From 60b07a2843a0b50d11e2a9cc2c1a7d3afdfbb341 Mon Sep 17 00:00:00 2001
From: pigeonmoelleux <pigeonmoelleux@crans.org>
Date: Sun, 27 Nov 2022 19:17:30 +0100
Subject: [PATCH 12/20] Correction doc type parser

---
 docs/user_manual/main.fdb_latexmk | 22 +++++++++++-----------
 examples/good/basic_2.fx          |  7 +++++++
 examples/good/basic_3.fx          |  7 +++++++
 parser/src/effovex.pest           |  2 +-
 4 files changed, 26 insertions(+), 12 deletions(-)
 create mode 100644 examples/good/basic_2.fx
 create mode 100644 examples/good/basic_3.fx

diff --git a/docs/user_manual/main.fdb_latexmk b/docs/user_manual/main.fdb_latexmk
index f948b96..ebdaf60 100644
--- a/docs/user_manual/main.fdb_latexmk
+++ b/docs/user_manual/main.fdb_latexmk
@@ -1,11 +1,11 @@
 # Fdb version 3
-["pdflatex"] 1669289984 "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.tex" "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.pdf" "main" 1669290514
-  "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/introduction.aux" 1669289985 689 3f7c69efa43598b0ad38cd34985c505c "pdflatex"
-  "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/introduction.tex" 1669290514 164 f13b638ee55a3b785e47f2e6257290d7 ""
-  "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.aux" 1669289985 792 834200dc306d4f24df176e8e56de3862 "pdflatex"
-  "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.out" 1669289985 103 9814c2d956916adb9290eca4e25c967a "pdflatex"
-  "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.tex" 1669289984 521 f0c249d37f382f9baf59a8413c83ff74 ""
-  "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.toc" 1669289985 91 b7edcdb1e955970ee2a909be3244a72f "pdflatex"
+["pdflatex"] 1669289984 "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.tex" "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.pdf" "main" 1669572937
+  "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/introduction.aux" 1669572937 689 3f7c69efa43598b0ad38cd34985c505c "pdflatex"
+  "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/introduction.tex" 1669572937 164 f13b638ee55a3b785e47f2e6257290d7 ""
+  "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.aux" 1669572937 792 834200dc306d4f24df176e8e56de3862 "pdflatex"
+  "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.out" 1669572937 103 9814c2d956916adb9290eca4e25c967a "pdflatex"
+  "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.tex" 1669572937 521 f0c249d37f382f9baf59a8413c83ff74 ""
+  "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.toc" 1669572937 91 b7edcdb1e955970ee2a909be3244a72f "pdflatex"
   "/usr/share/texmf-dist/fonts/enc/dvips/cm-super/cm-super-t1.enc" 1639192684 2971 def0b6c1f0b107b3b936def894055589 ""
   "/usr/share/texmf-dist/fonts/map/fontname/texfonts.map" 1639192684 3524 cb3e574dea2d1052e39280babc910dc8 ""
   "/usr/share/texmf-dist/fonts/tfm/jknappen/ec/ecbx1000.tfm" 1639192684 3584 2d666ecf6d466d8b007246bc2f94d9da ""
@@ -78,9 +78,9 @@
   "/usr/share/texmf-var/fonts/map/pdftex/updmap/pdftex.map" 1666812724 334227 92f850e77170e97d49db3fab2645ba0e ""
   "/usr/share/texmf-var/web2c/pdftex/pdflatex.fmt" 1666812714 2724585 b6375174b219d1c10c09304c4f573890 ""
   (generated)
-  "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.aux"
-  "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.out"
   "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.pdf"
-  "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.log"
-  "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.toc"
   "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/introduction.aux"
+  "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.out"
+  "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.aux"
+  "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.toc"
+  "/home/pigeonmoelleux/M1/Génie logiciel/effovex/docs/user_manual/main.log"
diff --git a/examples/good/basic_2.fx b/examples/good/basic_2.fx
new file mode 100644
index 0000000..84ed38a
--- /dev/null
+++ b/examples/good/basic_2.fx
@@ -0,0 +1,7 @@
+document(PNG)
+
+@begin(document)
+
+    Hello world!
+
+@end(document)
\ No newline at end of file
diff --git a/examples/good/basic_3.fx b/examples/good/basic_3.fx
new file mode 100644
index 0000000..352e1fb
--- /dev/null
+++ b/examples/good/basic_3.fx
@@ -0,0 +1,7 @@
+document(SVG)
+
+@begin(document)
+
+    Hello world!
+
+@end(document)
\ No newline at end of file
diff --git a/parser/src/effovex.pest b/parser/src/effovex.pest
index b4907dd..c151454 100644
--- a/parser/src/effovex.pest
+++ b/parser/src/effovex.pest
@@ -9,7 +9,7 @@ restricted_name = { "begin" | "end" | "fn" | "env" }
 name = @{ !restricted_name ~ (alpha ~ (alpha | digit)*) }
 
 output_fmt = { "PDF" | "pdf" | "SVG" | "svg" | "PNG" | "png" }
-doc_type = @{ "document(" ~ output_fmt ~ ")" }
+doc_type = ${ "document(" ~ output_fmt ~ ")" }
 
 arg = ${ "(" ~ name ~ ")" }
 abstract_arg = ${ "#" ~ name }
-- 
GitLab


From 1a1ab09a7af8ec69d00acea84a98ca683a72bbb8 Mon Sep 17 00:00:00 2001
From: pigeonmoelleux <pigeonmoelleux@crans.org>
Date: Sun, 27 Nov 2022 19:18:41 +0100
Subject: [PATCH 13/20] =?UTF-8?q?Mise=20=C3=A0=20jour=20.gitignore?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .gitignore | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/.gitignore b/.gitignore
index 5d0ac10..39eabed 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,4 +2,6 @@
 /baseline
 /comparison
 .vscode
-*.pdf
\ No newline at end of file
+*.pdf
+*.png
+*.svg
\ No newline at end of file
-- 
GitLab


From 5332cee81ad1cf5f71e9d45cb31bee8615b33fdb Mon Sep 17 00:00:00 2001
From: pigeonmoelleux <pigeonmoelleux@crans.org>
Date: Mon, 28 Nov 2022 20:23:23 +0100
Subject: [PATCH 14/20] =?UTF-8?q?Commit=20r=C3=A9gulier?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .gitignore                           |  4 +-
 README.md                            |  2 +-
 docs/user_manual/basic_concepts.tex  | 35 ++++++++++++
 docs/user_manual/getting_started.tex | 81 ++++++++++++++++++++++++----
 docs/user_manual/introduction.tex    |  6 ++-
 docs/user_manual/main.tex            | 49 +++++++++++++++--
 6 files changed, 159 insertions(+), 18 deletions(-)
 create mode 100644 docs/user_manual/basic_concepts.tex

diff --git a/.gitignore b/.gitignore
index 5d0ac10..39eabed 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,4 +2,6 @@
 /baseline
 /comparison
 .vscode
-*.pdf
\ No newline at end of file
+*.pdf
+*.png
+*.svg
\ No newline at end of file
diff --git a/README.md b/README.md
index c52c2a6..3299f89 100644
--- a/README.md
+++ b/README.md
@@ -31,6 +31,6 @@ The output file will be placed in the same directory as the input file.
 
 ## User manual
 
-The complete user manual can be found at [TODO](.).
+The complete user manual can be found at https://perso.crans.org/pigeonmoelleux/M1/G%C3%A9nie%20logiciel/User_manual.pdf.
 
 The source files are in [docs/user_manual/](docs/user_manual).
\ No newline at end of file
diff --git a/docs/user_manual/basic_concepts.tex b/docs/user_manual/basic_concepts.tex
new file mode 100644
index 0000000..83ee6bc
--- /dev/null
+++ b/docs/user_manual/basic_concepts.tex
@@ -0,0 +1,35 @@
+\section{Basic concepts}
+
+    \subsection{Effovex document}
+
+        An Effovex document is a mix of declarations, text and commands. Let's take a simple example :
+
+        \begin{lstlisting}
+            document(PDF)
+
+            fn foo(bar) {
+                Hi #bar !
+            }
+
+            @begin(document)
+
+                Hello world!
+
+                @foo(space)
+
+            @end(document)
+        \end{lstlisting}
+
+        After the compilation, the output will be a PDF document with two lines printed~: <<~Hello world!~>> and <<~Hi space!~>>.
+        \jump
+
+        The code can be split in two parts :
+
+        \begin{itemize}
+            \item what will be output, corresponding to the part inside \lstinline{@begin(document)} and \lstinline{@end(document)}~;
+            \item what will not be output, corresponding to the part not included between \lstinline{@begin(document)} and \lstinline{@end(document)}.
+        \end{itemize}
+        
+        \subsection{La commande \texttt{\textcolor{codepurple}{document}}}
+
+            Cette commande permet de définir le type de document de retour souhaité.
\ No newline at end of file
diff --git a/docs/user_manual/getting_started.tex b/docs/user_manual/getting_started.tex
index 6ee49f9..59d08c9 100644
--- a/docs/user_manual/getting_started.tex
+++ b/docs/user_manual/getting_started.tex
@@ -1,15 +1,76 @@
-\section{Getting started}
+\section{Getting started} \label{txt:getting_started}
 
-    This section presents :
+    \subsection{Effovex files}
 
-    \begin{itemize}
-        \item how to compile a document~;
-        \item how to detect and correct errors that can occurres~;
-        \item how to visualize it.
-    \end{itemize}
+        Effovex files have by convention the extension \texttt{.fx}. They are classical text files, so any text editor (Vim, Emacs, VSCode, \dots) can modify it.
+        \jump
 
-    \subsection{Effovex files}
+        For this section, save the following Effovex code in \texttt{test.fx}.
+        \jump
+
+        \begin{lstlisting}
+            document(PDF)
+
+            @begin(document)
+            
+                Hello world!
+
+            @end(document)
+        \end{lstlisting}
+        \jump
+
+        Not understanding this code is not a problem : the goal in this section is not to learn how to code in Effovex, but to set up the tools to be able to code.
+
+    \subsection{Compilation} \label{txt:compilation}
+
+        The compilation is the step that convert the \texttt{.fx} file into the chosen output, which can be a PDF, a PNG or a SVG file.
+
+        On a UNIX system, the compilation can be made by running the command \texttt{effovex} in a command interpreter :
+
+        \begin{lstlisting}
+            effovex test.fx
+        \end{lstlisting}
+
+        Effovex is quiet : nothing will be written if the compilation is successful, and the output file will be located at the same path as the input file.
+
+    \subsection{Error detection and correction}
+
+        Save the following code in a \texttt{error.fx}, then compile it as described in \ref{txt:compilation}.
+        \jump
+        
+        \begin{lstlisting}
+            document(PDF)
+
+            fn foo {
+                bar
+            }
+
+            fn foo {
+                Second definition !
+            }
+
+            @begin(document)
+
+                Hello world!
+
+            @end(document)
+        \end{lstlisting}
+
+        Something went wrong here : Effovex has stopped the compilation and displayed at the error output :
+        
+        \begin{lstlisting}
+            Parser Error : Already Defined Error : at Line 11 Column 1 : the function named foo has already been defined at Line 3 Column 1
+        \end{lstlisting}
+
+        Whenever Effovex detects an error, it will indicate :
+
+        \begin{itemize}
+            \item the compilation step that failed (\texttt{Parser Error})~;
+            \item the nature of the error (\texttt{Already Defined Error})~;
+            \item the precise location of the error (\texttt{Line 11 Column 1})~;
+            \item a description of the error.
+        \end{itemize}
 
-        Effovex files have by convention the extension \texttt{.fx}.
+    \subsection{Visualization}
 
-        For this section, save the following effovex code in \texttt{test.fx}. 
\ No newline at end of file
+        There are a lot of applications that can be used to see PDF, PNG and SVG files. The easiest are your browser (Firefox, Chrome, \dots) or dedicated applications (zathura, ImageMagick, \dots).
\ No newline at end of file
diff --git a/docs/user_manual/introduction.tex b/docs/user_manual/introduction.tex
index 67b92c2..2606f89 100644
--- a/docs/user_manual/introduction.tex
+++ b/docs/user_manual/introduction.tex
@@ -2,7 +2,7 @@
 
     Welcome to Effovex, a software system for document preparation.
 
-    This document describes how to use the version \version of Effovex from the point of view of a user. Technical explanations and documentation to implement further features can be found on \href{https://TODO.com}{\texttt{https://TODO.com}}.
+    This document describes how to use the version \version of Effovex from the point of view of a user. Technical explanations and documentation to implement further features can be found on \url{https://TODO.com}.
 
     \subsection{Motivation}
 
@@ -28,4 +28,6 @@
 
     \subsection{Overview}
 
-        %TODO
\ No newline at end of file
+        \begin{itemize}
+            \item The section \ref{txt:getting_started} presents the basic tools to be able to code in Effovex.
+        \end{itemize}        
\ No newline at end of file
diff --git a/docs/user_manual/main.tex b/docs/user_manual/main.tex
index add7c33..c12713d 100644
--- a/docs/user_manual/main.tex
+++ b/docs/user_manual/main.tex
@@ -4,18 +4,59 @@
 \usepackage[T1]{fontenc}
 \usepackage[english]{babel}
 
-\usepackage{hyperref}
 \usepackage{xspace}
 
 \setlength\parindent{0pt}
 
+\usepackage{xcolor}
+\definecolor{codepurple}{rgb}{0.58,0,0.82}
+
+\usepackage{hyperref}
 \hypersetup{
     colorlinks=true,
     linkcolor=red,
     urlcolor=blue
 }
+    
+\usepackage{listings}
+\usepackage{lstautogobble}
+\lstset{
+    autogobble=true,
+    showstringspaces=false,
+    basicstyle=\ttfamily,
+    showtabs=false,
+    tabsize=4,
+    breaklines=true,
+    keywords={document, begin, end, fn, env},
+    frame=single,
+    escapeinside={(*}{*)},
+    keywordstyle=\color{codepurple},
+    moredelim=*[s][\ttfamily]{@}{@}
+}
+
+\lstset{
+    literate =
+    {á}{{\'a}}1
+    {à}{{\`a}}1
+    {Â}{{\^A}}1
+    {ã}{{\~a}}1
+    {é}{{\'e}}1
+    {É}{{\'E}}1
+    {è}{{\`e}}1
+    {ê}{{\^e}}1
+    {ó}{{\'o}}1
+    {ü}{{\^u}}1
+    {î}{{\^i}}1
+    {ç}{{\c{c}}}1
+    {Å“}{{\oe}}1
+    {Å’}{{\OE}}1
+    {->}{$\longrightarrow$}1
+    {<-}{$\longleftarrow$}1
+    {=/=}{$\ne$}1
+}
 
 \newcommand{\version}{0.1.0\xspace}
+\newcommand{\jump}[1][1]{\vspace{#1\baselineskip}}
 
 \title{Effovex User Manual \\ {\Large Version \version}}
 \author{A.Guilmin-Crépon, B.Patiachvili and J.Abou-Samra}
@@ -27,10 +68,10 @@
 
     \tableofcontents
 
-    \newpage
+    \include{introduction.tex}
 
-    \input{introduction.tex}
+    \include{getting_started.tex}
 
-    \input{getting_started.tex}
+    \include{basic_concepts.tex}
 
 \end{document}
\ No newline at end of file
-- 
GitLab


From 972c1888229f23ef185b8a6b7331b65bce5bdb21 Mon Sep 17 00:00:00 2001
From: pigeonmoelleux <pigeonmoelleux@crans.org>
Date: Tue, 29 Nov 2022 16:44:43 +0100
Subject: [PATCH 15/20] =?UTF-8?q?Avanc=C3=A9e=20user=20manual?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 docs/user_manual/.gitignore         |  4 ++-
 docs/user_manual/basic_concepts.tex | 38 +++++++++++++++++++++++++++--
 docs/user_manual/main.tex           |  3 +++
 examples/good/paragraph_1.fx        | 11 +++++++++
 4 files changed, 53 insertions(+), 3 deletions(-)
 create mode 100644 examples/good/paragraph_1.fx

diff --git a/docs/user_manual/.gitignore b/docs/user_manual/.gitignore
index 93c9873..843e710 100644
--- a/docs/user_manual/.gitignore
+++ b/docs/user_manual/.gitignore
@@ -4,4 +4,6 @@
 
 !*.tex
 !*.sty
-!*.cls
\ No newline at end of file
+!*.cls
+
+!paragraph_1.pdf
\ No newline at end of file
diff --git a/docs/user_manual/basic_concepts.tex b/docs/user_manual/basic_concepts.tex
index 83ee6bc..796bee0 100644
--- a/docs/user_manual/basic_concepts.tex
+++ b/docs/user_manual/basic_concepts.tex
@@ -30,6 +30,40 @@
             \item what will not be output, corresponding to the part not included between \lstinline{@begin(document)} and \lstinline{@end(document)}.
         \end{itemize}
         
-        \subsection{La commande \texttt{\textcolor{codepurple}{document}}}
+        \subsection{The \texttt{\textcolor{codepurple}{document}} command}
 
-            Cette commande permet de définir le type de document de retour souhaité.
\ No newline at end of file
+            This command allows to define the wanted type of the output document. Its syntax is simple :
+
+            \begin{lstlisting}
+                document(<type of (*\texttt{document}*) wanted>)
+            \end{lstlisting}
+
+            The available types are : PDF, PNG et SVG. 
+
+        \subsection{Document structure}
+
+            \subsubsection{Paragraphs}
+
+                An Effovex document is composed of several paragraphs separated by at least one empty line :
+
+                \begin{lstlisting}
+                    document(PDF)
+
+                    @begin(document)
+
+                        First paragraph
+                        
+                        Second paragraph which is really long to show that
+                        returning to the next line is not taken
+                        in account by Effovex : only empty lines are searched for text formatting.
+
+                    @end(document)
+                \end{lstlisting}
+
+                This code will output the following document :
+
+                \begin{center}
+                    \fbox{
+                        \includegraphics[scale=0.6,trim=30 600 30 0]{paragraph_1.pdf}
+                    }
+                \end{center}
\ No newline at end of file
diff --git a/docs/user_manual/main.tex b/docs/user_manual/main.tex
index c12713d..d0334ed 100644
--- a/docs/user_manual/main.tex
+++ b/docs/user_manual/main.tex
@@ -5,6 +5,7 @@
 \usepackage[english]{babel}
 
 \usepackage{xspace}
+\usepackage{graphicx}
 
 \setlength\parindent{0pt}
 
@@ -29,6 +30,8 @@
     breaklines=true,
     keywords={document, begin, end, fn, env},
     frame=single,
+    numbers=left,
+    numberstyle=\small,
     escapeinside={(*}{*)},
     keywordstyle=\color{codepurple},
     moredelim=*[s][\ttfamily]{@}{@}
diff --git a/examples/good/paragraph_1.fx b/examples/good/paragraph_1.fx
new file mode 100644
index 0000000..41de6d5
--- /dev/null
+++ b/examples/good/paragraph_1.fx
@@ -0,0 +1,11 @@
+document(PDF)
+
+@begin(document)
+
+    First paragraph
+    
+    Second paragraph which is really long to show that
+    returning to the next line is not taken
+    in account by Effovex : only empty lines are searched for text formatting.
+
+@end(document)
\ No newline at end of file
-- 
GitLab


From d1b77a1439be039d07692f702615df7bce1a5c45 Mon Sep 17 00:00:00 2001
From: pigeonmoelleux <pigeonmoelleux@crans.org>
Date: Sun, 27 Nov 2022 19:17:30 +0100
Subject: [PATCH 16/20] Correction doc type parser

---
 examples/good/basic_2.fx | 7 +++++++
 examples/good/basic_3.fx | 7 +++++++
 parser/src/effovex.pest  | 2 +-
 3 files changed, 15 insertions(+), 1 deletion(-)
 create mode 100644 examples/good/basic_2.fx
 create mode 100644 examples/good/basic_3.fx

diff --git a/examples/good/basic_2.fx b/examples/good/basic_2.fx
new file mode 100644
index 0000000..84ed38a
--- /dev/null
+++ b/examples/good/basic_2.fx
@@ -0,0 +1,7 @@
+document(PNG)
+
+@begin(document)
+
+    Hello world!
+
+@end(document)
\ No newline at end of file
diff --git a/examples/good/basic_3.fx b/examples/good/basic_3.fx
new file mode 100644
index 0000000..352e1fb
--- /dev/null
+++ b/examples/good/basic_3.fx
@@ -0,0 +1,7 @@
+document(SVG)
+
+@begin(document)
+
+    Hello world!
+
+@end(document)
\ No newline at end of file
diff --git a/parser/src/effovex.pest b/parser/src/effovex.pest
index b4907dd..c151454 100644
--- a/parser/src/effovex.pest
+++ b/parser/src/effovex.pest
@@ -9,7 +9,7 @@ restricted_name = { "begin" | "end" | "fn" | "env" }
 name = @{ !restricted_name ~ (alpha ~ (alpha | digit)*) }
 
 output_fmt = { "PDF" | "pdf" | "SVG" | "svg" | "PNG" | "png" }
-doc_type = @{ "document(" ~ output_fmt ~ ")" }
+doc_type = ${ "document(" ~ output_fmt ~ ")" }
 
 arg = ${ "(" ~ name ~ ")" }
 abstract_arg = ${ "#" ~ name }
-- 
GitLab


From f212a834d8d038dd00fb422b28c80f6fea86d47c Mon Sep 17 00:00:00 2001
From: Jean Abou Samra <jean@abou-samra.fr>
Date: Thu, 24 Nov 2022 15:13:47 +0100
Subject: [PATCH 17/20] Some cargo-compare simplifications

---
 cargo-compare/src/main.rs | 150 +++++++++++---------------------------
 1 file changed, 43 insertions(+), 107 deletions(-)

diff --git a/cargo-compare/src/main.rs b/cargo-compare/src/main.rs
index c55349e..45849ef 100644
--- a/cargo-compare/src/main.rs
+++ b/cargo-compare/src/main.rs
@@ -7,13 +7,32 @@ use clap::Parser;
 use html_builder::{Buffer, Html5, Node};
 use similar::{ChangeTag, TextDiff};
 use std::collections::HashMap;
+use std::fmt::Display;
 use std::fmt::Write as FmtWrite;
 use std::fs::{create_dir_all, read_to_string, remove_dir_all, rename, File};
 use std::io::Write;
 use std::path::{Path, PathBuf};
-use std::process::{Command, ExitStatus, Output};
+use std::process::{Command, ExitStatus};
 use walkdir::WalkDir;
 
+trait ErrorConversion<T> {
+    fn convert(self) -> Result<T, String>
+    where
+        Self: Sized;
+}
+
+impl<T, U> ErrorConversion<T> for Result<T, U>
+where
+    U: Display,
+{
+    fn convert(self) -> Result<T, String> {
+        match self {
+            Ok(t) => Ok(t),
+            Err(err) => Err(format!("I/O error in testing script: {}", err)),
+        }
+    }
+}
+
 #[derive(Parser)]
 #[command(version)]
 struct Cli {
@@ -25,31 +44,19 @@ struct Cli {
     baseline: bool,
 }
 
-// A few wrappers around fs functions, returning Result<..., String>.
-
 /// Find all files with extension `ext` in the given directory.
 // TODO: Use a glob crate?
 fn glob_ext(dir: &Path, ext: &str) -> Result<Vec<PathBuf>, String> {
     let mut result = Vec::new();
     for entry_res in WalkDir::new(dir) {
-        match entry_res {
-            Err(err) => {
-                return Err(format!(
-                    "I/O error while traversing directory {}: {}",
-                    dir.to_string_lossy(),
-                    err
-                ))
-            }
-            Ok(entry) => {
-                let path = entry.path();
-                if path.is_file() {
-                    if let Some(found_ext) = path.extension() {
-                        // UTF-8 validation
-                        if let Some(string) = found_ext.to_str() {
-                            if string == ext {
-                                result.push(path.to_path_buf());
-                            }
-                        }
+        let entry = entry_res.convert()?;
+        let path = entry.path();
+        if path.is_file() {
+            if let Some(found_ext) = path.extension() {
+                // UTF-8 validation
+                if let Some(string) = found_ext.to_str() {
+                    if string == ext {
+                        result.push(path.to_path_buf());
                     }
                 }
             }
@@ -58,42 +65,6 @@ fn glob_ext(dir: &Path, ext: &str) -> Result<Vec<PathBuf>, String> {
     Ok(result)
 }
 
-/// Remove everything under the given directory.
-fn nuke_dir(path: &Path) -> Result<(), String> {
-    if path.is_dir() {
-        match remove_dir_all(path) {
-            Ok(()) => Ok(()),
-            Err(err) => Err(format!(
-                "cannot remove directory {}: {}",
-                path.to_string_lossy(),
-                err
-            )),
-        }
-    } else {
-        Ok(())
-    }
-}
-
-/// Create all directory parents of the given path.
-fn mkdirs(path: &Path) -> Result<(), String> {
-    match create_dir_all(path) {
-        Ok(()) => Ok(()),
-        Err(err) => Err(format!(
-            "cannot create directory {}: {}",
-            path.to_string_lossy(),
-            err
-        )),
-    }
-}
-
-/// Run a command.
-fn run(cmd: &mut Command) -> Result<Output, String> {
-    match cmd.output() {
-        Err(err) => Err(format!("failed to spawn command: {}", err)),
-        Ok(output) => Ok(output),
-    }
-}
-
 /// Convert PDF file to PNG, putting the result in the same directory
 /// as the original. Uses the `convert` command provided by
 /// ImageMagick.
@@ -101,14 +72,13 @@ fn run(cmd: &mut Command) -> Result<Output, String> {
 // dependency on ImageMagick?
 fn pdf2png(path: &Path) -> Result<(), String> {
     assert!(path.extension().unwrap().to_str().unwrap() == "pdf");
-    let mut command = Command::new("convert");
     let output_path = path.with_extension("png");
-    let status = run(command
-        .arg("-colorspace")
-        .arg("RGB")
+    let mut command = Command::new("convert");
+    let with_args = command
+        .args(["-colorspace", "RGB"])
         .arg(path)
-        .arg(output_path))?
-    .status;
+        .arg(output_path);
+    let status = with_args.output().convert()?.status;
     if status.success() {
         Ok(())
     } else {
@@ -116,32 +86,6 @@ fn pdf2png(path: &Path) -> Result<(), String> {
     }
 }
 
-/// Move a file.
-fn mv(f1: &Path, f2: &Path) -> Result<(), String> {
-    if let Err(err) = rename(f1, f2) {
-        Err(format!(
-            "can't move {} to {}: {}",
-            f1.to_string_lossy(),
-            f1.to_string_lossy(),
-            err
-        ))
-    } else {
-        Ok(())
-    }
-}
-
-/// Create a file and return the `File` object.
-fn create_file(path: &Path) -> Result<File, String> {
-    match File::create(path) {
-        Err(err) => Err(format!(
-            "failed to create {}: {}",
-            path.to_string_lossy(),
-            err
-        )),
-        Ok(file) => Ok(file),
-    }
-}
-
 /// All information about a given test in the baseline and the
 /// comparison directory.
 #[derive(Clone, Debug)]
@@ -172,13 +116,14 @@ fn compile_tests(cli: &Cli, output_dir: &Path) -> Result<Vec<TestInfo>, String>
         let path_under_output_dir: &Path = &output_dir.join(path_under_tests);
         // Create directory if it doesn't exist.
         let prefix: &Path = path_under_output_dir.parent().unwrap();
-        mkdirs(prefix)?;
+        //mkdirs(prefix)?;
+        create_dir_all(prefix).convert()?;
         // TODO: implement -o,--output option in effovex.
         let output_path_owned: PathBuf = path.with_extension("pdf");
         let output_path: &Path = &output_path_owned;
         let mut command = Command::new(&cli.executable);
         let log_path = &path_under_output_dir.with_extension("log");
-        let file = create_file(log_path.as_path())?;
+        let file = File::create(log_path.as_path()).convert()?;
         let exec = command.arg(&path).stderr(file);
         match exec.output() {
             Err(err) => {
@@ -189,7 +134,7 @@ fn compile_tests(cli: &Cli, output_dir: &Path) -> Result<Vec<TestInfo>, String>
                 let final_output_file: Option<PathBuf> = if output_path.is_file() {
                     // move output to baseline/
                     let output_wanted = output_dir.join(path_under_tests).with_extension("pdf");
-                    mv(output_path, &output_wanted)?;
+                    rename(output_path, &output_wanted).convert()?;
                     Some(output_wanted.with_extension("png"))
                 } else {
                     None
@@ -260,17 +205,6 @@ fn add_baseline_data(inp: Vec<TestInfo>) -> Result<Vec<TestInfo>, String> {
     Ok(res)
 }
 
-fn read_log(path: &Path) -> Result<String, String> {
-    match read_to_string(path) {
-        Err(err) => Err(format!(
-            "failed to read file {}: {}",
-            path.to_string_lossy(),
-            err
-        )),
-        Ok(string) => Ok(string),
-    }
-}
-
 fn pretty_diff(log1: String, log2: String, out: &mut Node) {
     let diff = TextDiff::from_lines(&log1, &log2);
     for change in diff.iter_all_changes() {
@@ -314,12 +248,12 @@ fn gen_html(infos: &Vec<TestInfo>) -> Result<String, String> {
         {
             let mut log_row = table.tr();
             let str1 = if let Some(path1) = baseline_log_path {
-                read_log(path1)?
+                read_to_string(path1).convert()?
             } else {
                 String::new()
             };
             let str2 = if let Some(path2) = output_log_path {
-                read_log(path2)?
+                read_to_string(path2).convert()?
             } else {
                 String::new()
             };
@@ -370,7 +304,7 @@ fn run_comparison(cli: &Cli, output_dir: &Path, mut infos: Vec<TestInfo>) -> Res
     infos = add_baseline_data(infos)?;
     let html = gen_html(&infos)?;
     let html_file = output_dir.join("index.html");
-    match create_file(&html_file)?.write(html.as_bytes()) {
+    match File::create(&html_file).convert()?.write(html.as_bytes()) {
         Ok(_) => Ok(()),
         Err(err) => Err(format!(
             "I/O error while writing file {}: {}",
@@ -389,7 +323,9 @@ fn main() -> Result<(), String> {
     };
     let output_dir_name = cli.output_dir.as_ref().unwrap_or(&output_dir_default);
     let output_dir = Path::new(&output_dir_name);
-    nuke_dir(output_dir)?;
+    if output_dir.is_dir() {
+        remove_dir_all(output_dir).convert()?;
+    }
     let infos = compile_tests(&cli, &output_dir)?;
     run_comparison(&cli, &output_dir, infos)?;
     Ok(())
-- 
GitLab


From c6c932cb796980c92697e5890677068e7a82623f Mon Sep 17 00:00:00 2001
From: Jean Abou Samra <jean@abou-samra.fr>
Date: Thu, 24 Nov 2022 15:25:32 +0100
Subject: [PATCH 18/20] Minor typos

---
 effovex/src/error.rs | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/effovex/src/error.rs b/effovex/src/error.rs
index a4e493c..861ae15 100644
--- a/effovex/src/error.rs
+++ b/effovex/src/error.rs
@@ -2,7 +2,7 @@ use std::fmt::Display;
 
 use parser::error::ParserError;
 
-/// Enumeration grouping all possible errors that can occurre during compilation
+/// Enumeration grouping all possible errors that can occurr during compilation
 #[derive(Debug, Clone, PartialEq, Eq)]
 pub enum Error {
     FileNotReadableError(String),
@@ -14,11 +14,11 @@ impl Display for Error {
         match self {
             Error::FileNotReadableError(path) => write!(
                 f,
-                "File not Readable Error : the file {} could not been read",
+                "File not Readable Error: the file {} could not be read",
                 path
             ),
             Error::ParserError(err) => {
-                write!(f, "Parser Error : {}", err)
+                write!(f, "Parser Error: {}", err)
             }
         }
     }
-- 
GitLab


From f8ea3cfe3ea275b118f29cfe4e76c909fb1bf172 Mon Sep 17 00:00:00 2001
From: Jean Abou Samra <jean@abou-samra.fr>
Date: Thu, 24 Nov 2022 15:53:35 +0100
Subject: [PATCH 19/20] cargo-compare: Check exit status

---
 cargo-compare/src/main.rs | 54 ++++++++++++++++++++++++---------------
 1 file changed, 33 insertions(+), 21 deletions(-)

diff --git a/cargo-compare/src/main.rs b/cargo-compare/src/main.rs
index 45849ef..545460e 100644
--- a/cargo-compare/src/main.rs
+++ b/cargo-compare/src/main.rs
@@ -89,7 +89,6 @@ fn pdf2png(path: &Path) -> Result<(), String> {
 /// All information about a given test in the baseline and the
 /// comparison directory.
 #[derive(Clone, Debug)]
-#[allow(dead_code)]
 struct TestInfo {
     /// Path to `.fx` file.
     input_path: PathBuf,
@@ -209,9 +208,9 @@ fn pretty_diff(log1: String, log2: String, out: &mut Node) {
     let diff = TextDiff::from_lines(&log1, &log2);
     for change in diff.iter_all_changes() {
         let (color, tag) = match change.tag() {
-            ChangeTag::Delete => ("#ff0000", "-"),
-            ChangeTag::Insert => ("#00ff00", "+"),
-            ChangeTag::Equal => ("#000000", ""),
+            ChangeTag::Delete => ("#ff0000", "- "),
+            ChangeTag::Insert => ("#00ff00", "+ "),
+            ChangeTag::Equal => ("#000000", "= "),
         };
         let mut node = out.span().attr(&format!("style=\"color:{}\"", color));
         writeln!(node, "{}{}", tag, change).unwrap();
@@ -231,22 +230,33 @@ fn gen_html(infos: &Vec<TestInfo>) -> Result<String, String> {
         baseline_log_path,
         output_path,
         output_log_path,
-        status: _, // TODO
+        status,
     } in infos
     {
-        // TODO only show differences
-        let mut para = body.p().attr("style=\"text-align:center\"");
-        para.code()
-            .write_str(&input_path.to_string_lossy())
-            .unwrap();
-        let mut table = body.table().attr("style=\"border: 1px solid black\"");
-        let mut header_row = table.tr();
-        header_row.th().write_str("Old").unwrap();
-        header_row.th().write_str("New").unwrap();
-        header_row.th().write_str("Comparison").unwrap();
-        // Uh, NLL doesn't work here?
         {
-            let mut log_row = table.tr();
+            // TODO only show differences
+            let mut para = body.p();
+            para.b().write_str("File: ").unwrap();
+            para.code()
+                .write_str(&input_path.to_string_lossy())
+                .unwrap();
+        }
+        if let Some(stat) = status {
+            let mut para = body.p();
+            para.b().write_str("Passes: ").unwrap();
+            if stat.success() {
+                para.write_str("yes").unwrap();
+            } else {
+                para.write_str(&format!(
+                    "no (error code {})",
+                    stat.code().expect("command should have been able to start")
+                ))
+                .unwrap();
+            }
+        }
+        {
+            let mut para = body.p();
+            para.b().write_str("Log:").unwrap();
             let str1 = if let Some(path1) = baseline_log_path {
                 read_to_string(path1).convert()?
             } else {
@@ -257,10 +267,13 @@ fn gen_html(infos: &Vec<TestInfo>) -> Result<String, String> {
             } else {
                 String::new()
             };
-            log_row.td().pre().write_str(&str1).unwrap();
-            log_row.td().pre().write_str(&str2).unwrap();
-            pretty_diff(str1, str2, &mut log_row.td().pre());
+            pretty_diff(str1, str2, &mut para.pre());
         }
+        let mut table = body.table().attr("style=\"border: 1px solid black\"");
+        let mut header_row = table.tr();
+        header_row.th().write_str("Old").unwrap();
+        header_row.th().write_str("New").unwrap();
+        header_row.th().write_str("Comparison").unwrap();
         {
             let mut img_row = table.tr();
             // TODO: escaping?
@@ -279,7 +292,6 @@ fn gen_html(infos: &Vec<TestInfo>) -> Result<String, String> {
             }
             img_row.td();
         }
-        // TODO images
     }
     return Ok(buf.finish());
 }
-- 
GitLab


From c9dbc20095e316ec1842a09ed6a44eb7967d67f2 Mon Sep 17 00:00:00 2001
From: pigeonmoelleux <pigeonmoelleux@crans.org>
Date: Tue, 29 Nov 2022 17:59:58 +0100
Subject: [PATCH 20/20] Changement AST pour simplifier la conversion

---
 cargo-compare/Cargo.toml   |  2 --
 converter/src/converter.rs |  4 +--
 converter/src/verifier.rs  | 57 +++++++++++++++-----------------------
 parser/src/ast.rs          | 42 ++++++++++++++++++++++++++--
 parser/src/error.rs        |  8 ++----
 parser/src/lib.rs          |  4 +--
 parser/src/parser.rs       | 54 +++++++++++++++++++++++-------------
 parser/src/pretty.rs       | 20 ++++++-------
 8 files changed, 113 insertions(+), 78 deletions(-)

diff --git a/cargo-compare/Cargo.toml b/cargo-compare/Cargo.toml
index bc984e9..674dc58 100644
--- a/cargo-compare/Cargo.toml
+++ b/cargo-compare/Cargo.toml
@@ -3,8 +3,6 @@ name = "cargo-compare"
 version = "0.1.0"
 edition = "2021"
 
-# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
-
 [dependencies]
 clap = { version = "4.0.17", features = ["derive"]}
 html-builder = "0.4.0"
diff --git a/converter/src/converter.rs b/converter/src/converter.rs
index 8e42ccb..e883066 100644
--- a/converter/src/converter.rs
+++ b/converter/src/converter.rs
@@ -1,7 +1,7 @@
 use cairo::{Context, PdfSurface};
 use pango::{units_from_double, FontDescription, Layout};
 use parser::{ParserError, ShowableType, AST};
-use std::cell::RefCell;
+use std::{cell::RefCell, collections::HashMap};
 
 use crate::verifier;
 
@@ -36,7 +36,7 @@ impl Displayable for Newline {
 pub struct PrintableAST {
     pub context: Context,
     pub doctype: parser::Type,
-    pub declarations: Vec<Box<parser::Declaration>>,
+    pub declarations: HashMap<(parser::DeclarationType, String), Box<parser::Declaration>>,
     pub shown: Vec<Box<dyn Displayable>>,
 }
 
diff --git a/converter/src/verifier.rs b/converter/src/verifier.rs
index 0df0630..9666b84 100644
--- a/converter/src/verifier.rs
+++ b/converter/src/verifier.rs
@@ -14,45 +14,34 @@ pub fn verifier(ast: &mut RefCell<AST>) -> Result<(), ParserError> {
     let owned_ast = ast.get_mut();
     let mut declaration_signatures: HashMap<(DeclarationType, String), (usize, Loc)> =
         HashMap::new();
-    owned_ast.declarations.iter().try_for_each(|declaration| {
-        match &**declaration {
-            Declaration::DefFunc(loc, name, args, _) => {
-                match declaration_signatures.insert(
-                    (DeclarationType::Function, name.to_owned()),
-                    (args.len(), *loc),
-                ) {
-                    None => {}
-                    Some((_, previous_loc)) => {
-                        return Err(ParserError::AlreadyDefinedDeclaration(
-                            *loc,
-                            previous_loc,
-                            DeclarationType::Function,
-                            name.to_owned(),
-                        ))
+    owned_ast
+        .declarations
+        .iter()
+        .try_for_each(|((_, _), declaration)| {
+            match &**declaration {
+                Declaration::DefFunc(loc, name, args, _) => {
+                    match declaration_signatures.insert(
+                        (DeclarationType::Function, name.to_owned()),
+                        (args.len(), *loc),
+                    ) {
+                        None => {}
+                        Some(_) => unreachable!("Already Defined Declaration Error happened but has already been tested")
                     }
                 }
-            }
-            Declaration::DefEnv(loc, name, args, _, _) => {
-                match declaration_signatures.insert(
-                    (DeclarationType::Environment, name.to_owned()),
-                    (args.len(), *loc),
-                ) {
-                    None => {}
-                    Some((_, previous_loc)) => {
-                        return Err(ParserError::AlreadyDefinedDeclaration(
-                            *loc,
-                            previous_loc,
-                            DeclarationType::Environment,
-                            name.to_owned(),
-                        ))
+                Declaration::DefEnv(loc, name, args, _, _) => {
+                    match declaration_signatures.insert(
+                        (DeclarationType::Environment, name.to_owned()),
+                        (args.len(), *loc),
+                    ) {
+                        None => {}
+                        Some(_) => unreachable!("Already Defined Declaration Error happened but has already been tested")
                     }
                 }
-            }
-        };
-        return Ok(());
-    })?;
+            };
+            return Ok(());
+        })?;
 
-    for declaration in &owned_ast.declarations {
+    for ((_, _), declaration) in &owned_ast.declarations {
         match declarations_verifier(declaration, &declaration_signatures) {
             Ok(()) => {}
             Err(err) => return Err(err),
diff --git a/parser/src/ast.rs b/parser/src/ast.rs
index 406e92d..377ffe4 100644
--- a/parser/src/ast.rs
+++ b/parser/src/ast.rs
@@ -1,3 +1,5 @@
+use std::collections::HashMap;
+
 use crate::error::Loc;
 
 /// Document type of the output
@@ -82,14 +84,25 @@ pub struct Showable {
     pub showable_type: ShowableType,
 }
 
+/// Enumeration of possible declaration types
+///
+/// Only two values are possible : Function and Environment
+#[derive(Clone, Debug, PartialEq, Eq, Hash)]
+pub enum DeclarationType {
+    Function,
+    Environment,
+}
+
 /// Abstract syntax tree corresponding to the output of the parsing phase
 #[derive(Clone, PartialEq, Eq)]
 pub struct AST {
     /// Type of the document
     pub doc_type: Type,
 
-    /// List of declared functions and environment
-    pub declarations: Vec<Box<Declaration>>,
+    /// Hashmap of declared functions and environment
+    ///
+    /// Each declaration is accessible from the unique key (declaration type, declaration name)
+    pub declarations: HashMap<(DeclarationType, String), Box<Declaration>>,
 
     /// List of displayed objects in the final document
     pub shown: Vec<Box<Showable>>,
@@ -113,3 +126,28 @@ impl Showable {
         };
     }
 }
+
+impl Declaration {
+    pub fn location(&self) -> Loc {
+        return match self {
+            Self::DefFunc(loc, _, _, _) => *loc,
+            Self::DefEnv(loc, _, _, _, _) => *loc,
+        };
+    }
+
+    pub fn name(&self) -> String {
+        return match self {
+            Self::DefFunc(_, name, _, _) => name.clone(),
+            Self::DefEnv(_, name, _, _, _) => name.clone(),
+        };
+    }
+}
+
+impl From<&Declaration> for DeclarationType {
+    fn from(declaration: &Declaration) -> Self {
+        return match declaration {
+            Declaration::DefFunc(_, _, _, _) => DeclarationType::Function,
+            Declaration::DefEnv(_, _, _, _, _) => DeclarationType::Environment,
+        };
+    }
+}
diff --git a/parser/src/error.rs b/parser/src/error.rs
index 9d7ef0a..d98799b 100644
--- a/parser/src/error.rs
+++ b/parser/src/error.rs
@@ -2,6 +2,8 @@ use std::fmt::Display;
 
 use pest::{error::LineColLocation, Position};
 
+use crate::ast::DeclarationType;
+
 /// Location structure
 ///
 /// Contains the line and the column of a character in the file
@@ -11,12 +13,6 @@ pub struct Loc {
     pub column: usize,
 }
 
-#[derive(Clone, Debug, PartialEq, Eq, Hash)]
-pub enum DeclarationType {
-    Function,
-    Environment,
-}
-
 /// Parser errors enumeration
 ///
 /// Each error type correspond to an error that can occurres during the parsing
diff --git a/parser/src/lib.rs b/parser/src/lib.rs
index a2dc5b2..c225df6 100644
--- a/parser/src/lib.rs
+++ b/parser/src/lib.rs
@@ -10,6 +10,6 @@ pub mod error;
 pub mod parser;
 mod pretty;
 
-pub use crate::ast::{Declaration, Showable, ShowableType, Type, AST};
-pub use crate::error::{DeclarationType, Loc, ParserError};
+pub use crate::ast::{Declaration, DeclarationType, Showable, ShowableType, Type, AST};
+pub use crate::error::{Loc, ParserError};
 pub use crate::parser::effovex_parser;
diff --git a/parser/src/parser.rs b/parser/src/parser.rs
index faf72ad..0abed0a 100644
--- a/parser/src/parser.rs
+++ b/parser/src/parser.rs
@@ -1,10 +1,11 @@
 use std::cell::RefCell;
+use std::collections::HashMap;
 use std::vec;
 
 use pest::iterators::{Pair, Pairs};
 use pest::Parser;
 
-use crate::ast::{Declaration, Showable, ShowableType, Type, AST};
+use crate::ast::{Declaration, DeclarationType, Showable, ShowableType, Type, AST};
 use crate::error::{Loc, ParserError};
 
 #[derive(Parser, Debug)]
@@ -319,30 +320,39 @@ fn ast_improver<'a>(boxed_ast: Box<AST>) -> Result<Box<AST>, ParserError> {
 
     let mut improved_ast = AST {
         doc_type: ast.doc_type,
-        declarations: vec![],
+        declarations: HashMap::new(),
         shown: vec![],
     };
 
-    for boxed_dec in ast.declarations {
+    for ((_, _), boxed_dec) in ast.declarations {
         match *boxed_dec {
             Declaration::DefFunc(loc, name, args, returned) => {
-                improved_ast
-                    .declarations
-                    .push(Box::new(Declaration::DefFunc(
+                match improved_ast.declarations.insert(
+                    (DeclarationType::Function, name.clone()),
+                    Box::new(Declaration::DefFunc(loc, name, args, text_merger(returned))),
+                ) {
+                    None => {}
+                    Some(_) => {
+                        unreachable!("Already Defined Declaration Error happened but has already been tested")
+                    }
+                }
+            }
+            Declaration::DefEnv(loc, name, args, beg, end) => {
+                match improved_ast.declarations.insert(
+                    (DeclarationType::Environment, name.clone()),
+                    Box::new(Declaration::DefEnv(
                         loc,
                         name,
                         args,
-                        text_merger(returned),
-                    )))
-            }
-            Declaration::DefEnv(loc, name, args, beg, end) => {
-                improved_ast.declarations.push(Box::new(Declaration::DefEnv(
-                    loc,
-                    name,
-                    args,
-                    text_merger(beg),
-                    text_merger(end),
-                )))
+                        text_merger(beg),
+                        text_merger(end),
+                    )),
+                ) {
+                    None => {}
+                    Some(_) => {
+                        unreachable!("Already Defined Declaration Error happened but has already been tested")
+                    }
+                }
             }
         }
     }
@@ -356,7 +366,7 @@ fn ast_improver<'a>(boxed_ast: Box<AST>) -> Result<Box<AST>, ParserError> {
 fn pest_pairs_to_ast<'a>(pairs: &Pairs<'a, Rule>) -> Result<RefCell<AST>, ParserError> {
     let mut ast = AST {
         doc_type: Type::PDF,
-        declarations: vec![],
+        declarations: HashMap::new(),
         shown: vec![],
     };
 
@@ -374,8 +384,12 @@ fn pest_pairs_to_ast<'a>(pairs: &Pairs<'a, Rule>) -> Result<RefCell<AST>, Parser
                             })
                     }
                     Rule::declaration => {
-                        let declaration = pest_pair_to_declaration(pair);
-                        ast.declarations.push(declaration?)
+                        let declaration = pest_pair_to_declaration(pair)?;
+                        let location = declaration.location();
+                        match ast.declarations.insert((DeclarationType::from(&*declaration), declaration.name()), declaration) {
+                            None => {}
+                            Some(old_declaration) => return Err(ParserError::AlreadyDefinedDeclaration(location, old_declaration.location(), DeclarationType::from(&*old_declaration), old_declaration.name()))
+                        }
                     }
                     Rule::called_env => {
                         pair.into_inner().map(|inner_pair| {
diff --git a/parser/src/pretty.rs b/parser/src/pretty.rs
index b4726e5..f199876 100644
--- a/parser/src/pretty.rs
+++ b/parser/src/pretty.rs
@@ -261,17 +261,17 @@ impl<'a> Display for AST {
         print_node("Declarations", f, &indent, false)?;
         indent.push(true);
         if self.declarations.len() > 0 {
-            for dec in &self.declarations[0..self.declarations.len() - 1] {
-                print_declaration(dec.to_owned(), f, &mut indent, false)?;
+            let mut counter = 0;
+            for ((_, _), dec) in &self.declarations {
+                counter += 1;
+                if counter == self.declarations.len() {
+                    indent.pop();
+                    indent.push(false);
+                    print_declaration(dec.to_owned(), f, &mut indent, true)?;
+                } else {
+                    print_declaration(dec.to_owned(), f, &mut indent, false)?;
+                }
             }
-            indent.pop();
-            indent.push(false);
-            print_declaration(
-                self.declarations[self.declarations.len() - 1].to_owned(),
-                f,
-                &mut indent,
-                true,
-            )?;
         }
         indent.pop();
 
-- 
GitLab