Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • main
1 result

Target

Select target project
  • anas.sibarni.etu/sae-2.03
1 result
Select Git revision
  • main
1 result
Show changes
Commits on Source (8)
---
title: "RAPPORT SAE 2.03 RESEAUX"
author: [Sibarni Anas, Achouch Anas, YAHIAOUI Mohamed El Amine]
date: "2025-03"
keywords: [Markdown, Example]
titlepage: true
titlepage-color: 08284A
titlepage-rule-height: 2
biblio-style: verbose-note
header-includes:
- \usepackage{enumitem}
- \renewlist{itemize}{itemize}{20}
- \setlist[itemize]{label=$\cdot$}
---
# SAÉ 2.03: Semaine 06 - GRP A7
## Table des matières
......@@ -16,8 +31,8 @@
- [Installation des suppléments invités](#installation-des-suppléments-invités)
- [À propos de la distribution Debian](#à-propos-de-la-distribution-debian)
- [Quelques questions](#quelques-questions)
- [*La maintenance*](#la-maintenance)
- [*Nom générique, nom de code et version*](#nom-générique-nom-de-code-et-version)
- [_La maintenance_](#la-maintenance)
- [_Nom générique, nom de code et version_](#nom-générique-nom-de-code-et-version)
- [Installation préconfigurée](#installation-préconfigurée)
- [Récupérer et préparer les fichiers nécessaires](#récupérer-et-préparer-les-fichiers-nécessaires)
- [Faire une nouvelle machine avec les caractéristiques suivantes](#faire-une-nouvelle-machine-avec-les-caractéristiques-suivantes)
......@@ -37,13 +52,11 @@
- [2.2. Tests d’utilisation](#22-tests-dutilisation)
- [2.3. Pour aller plus loin](#23-pour-aller-plus-loin)
---
## Semaine S1 de la SAÉ
### Formation de notre équipe
>(*GRP A7*) : Anas Sibarni, Anas Achouch, Mohamed El Amine Yahiaoui
> (_GRP A7_) : Anas Sibarni, Anas Achouch, Mohamed El Amine Yahiaoui
### Préparation d’une machine virtuelle Debian
......@@ -57,150 +70,164 @@
##### Caractéristiques de la machine virtuelle
- [x] Nom de la machine dans VirtualBox : ***sae203***
- [ ] Dossier de la machine : **/usr/local/virtual_machine/infoetu/*login*** | Bien entendu, login est à remplacer par votre login.
- [ ] Type : ***Linux***
- [ ] Version : ***Debian 64-bit***
- [ ] Mémoire vive (RAM) : ***2048 Mo***
- [ ] Disque dur : ***20 Go***, ne pas cocher la case "*Pre-allocate Full Size*"
- [x] Nom de la machine dans VirtualBox : **_sae203_**
- [ ] Dossier de la machine : **/usr/local/virtual_machine/infoetu/_login_** | Bien entendu, login est à remplacer par votre login.
- [ ] Type : **_Linux_**
- [ ] Version : **_Debian 64-bit_**
- [ ] Mémoire vive (RAM) : **_2048 Mo_**
- [ ] Disque dur : **_20 Go_**, ne pas cocher la case "_Pre-allocate Full Size_"
Suivez les indications de cette image pour configurer votre machine virtuelle (en ajustant les chemin "*Folder*" si besoin):
Suivez les indications de cette image pour configurer votre machine virtuelle (en ajustant les chemin "_Folder_" si besoin):
![Configuration de la machine virtuelle](images/confifuration-vm-5.png)
*Configuration de la machine virtuelle*
_Configuration de la machine virtuelle_
![Configuration de la mémoire de la machine virtuelle](images/config-vm-memoire.png)
*Configuration de la mémoire de la machine virtuelle*
_Configuration de la mémoire de la machine virtuelle_
![Configuration du stockage de la machine virtuelle](images/config-vm-stockage.png)
*Configuration du stockage de la machine virtuelle*
_Configuration du stockage de la machine virtuelle_
![Récapitulatif de la machine virtuelle](images/recapitulatif-5.png)
*Récapitulatif de la machine virtuelle*
_Récapitulatif de la machine virtuelle_
- Que signifie “_64-bit_” dans “_Debian 64-bit_” ?
> La largeur des registres est de 64 bits sur les nombres entiers. (Peut gérer plus de 4GB de RAM)
> [Source](https://openclassrooms.com/forum/sujet/quelle-est-la-difference-entre-os-32-et-64bits)
- Que signifie “*64-bit*” dans “*Debian 64-bit*” ?
>La largeur des registres est de 64 bits sur les nombres entiers. (Peut gérer plus de 4GB de RAM)
[Source](https://openclassrooms.com/forum/sujet/quelle-est-la-difference-entre-os-32-et-64bits)
- Quelle est la configuration réseau utilisée par défaut ?
- Quelle est la configuration réseau utilisée par défaut ?
>La configuration réseau par défaut est IPV6.
> La configuration réseau par défaut est IPV6.
- Quel est le nom du fichier XML contenant la configuration de votre machine ?
>Le nom du fichier XML contenant la configuration de notre machine est *config.xml*
[Source](https://learn.microsoft.com/fr-fr/windows/deployment/usmt/usmt-configxml-file)
- Quel est le nom du fichier XML contenant la configuration de votre machine ?
- Sauriez-vous le modifier directement ce fichier de configuration pour mettre 2 processeurs à votre machine ?
>Ouvrir le fichier *config.xml* en exécutant la commande `nano config.xml` puis modifier le nombre de processeurs.
> Le nom du fichier XML contenant la configuration de notre machine est _config.xml_
> [Source](https://learn.microsoft.com/fr-fr/windows/deployment/usmt/usmt-configxml-file)
- Sauriez-vous le modifier directement ce fichier de configuration pour mettre 2 processeurs à votre machine ?
> Ouvrir le fichier _config.xml_ en exécutant la commande `nano config.xml` puis modifier le nombre de processeurs.
#### Installation de l’OS
Pour installer l'OS [Debian](https://www.debian.org/), télécharger le *fichier.iso* sur leur site, et insérer ce fichier comme ci-dessous :
Pour installer l'OS [Debian](https://www.debian.org/), télécharger le _fichier.iso_ sur leur site, et insérer ce fichier comme ci-dessous :
![Insertion du fichier.iso](images/iso.png)
*Insertion du fichier.iso*
_Insertion du fichier.iso_
- Qu’est-ce qu’un fichier iso bootable ?
> C’est un fichier qui doit s'exécuter au démarrage de la machine
- Qu’est-ce que MATE ? GNOME ?
- Qu’est-ce qu’un fichier iso bootable ?
>C’est un fichier qui doit s'exécuter au démarrage de la machine
> MATE est un fork de GNOME (un fork est un nouveau référentiel qui partage le code et les paramètres de visibilité avec le référentiel « en amont » d'origine) ; ce sont des environnement de bureau simples d’utilisation.
> Sources : [source1](https://mate-desktop.org/fr/), [source2](https://docs-github-com.translate.goog/en/pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo?_x_tr_sl=en&_x_tr_tl=fr&_x_tr_hl=fr&_x_tr_pto=rq&_x_tr_hist=true)
- Qu’est-ce que MATE ? GNOME ?
>MATE est un fork de GNOME (un fork est un nouveau référentiel qui partage le code et les paramètres de visibilité avec le référentiel « en amont » d'origine) ; ce sont des environnement de bureau simples d’utilisation.
Sources : [source1](https://mate-desktop.org/fr/), [source2](https://docs-github-com.translate.goog/en/pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo?_x_tr_sl=en&_x_tr_tl=fr&_x_tr_hl=fr&_x_tr_pto=rq&_x_tr_hist=true)
- Qu’est-ce qu’un serveur web ?
- Qu’est-ce qu’un serveur web ?
>Un « serveur web » peut faire référence à des composants logiciels (software) ou à des composants matériels (hardware) ou à des composants logiciels et matériels qui fonctionnent ensemble.
![Schéma d'un serveur web](images/serveur-web.png)
*Schéma repésentant le fonctionnement d'un serveur web*
[Source](https://developer.mozilla.org/fr/docs/Learn_web_development/Howto/Web_mechanics/What_is_a_web_server)
> Un « serveur web » peut faire référence à des composants logiciels (software) ou à des composants matériels (hardware) ou à des composants logiciels et matériels qui fonctionnent ensemble.
> ![Schéma d'un serveur web](images/serveur-web.png)
> _Schéma repésentant le fonctionnement d'un serveur web_
> [Source](https://developer.mozilla.org/fr/docs/Learn_web_development/Howto/Web_mechanics/What_is_a_web_server)
- Qu’est-ce qu’un serveur ssh ?
>Le protocole Secure Shell (SSH) est une méthode permettant d'envoyer en toute sécurité des commandes à un ordinateur sur un réseau non sécurisé. SSH a recours à la cryptographie pour authentifier et chiffrer les connexions entre les appareils.
![Schéma d'un serveur SSH](images/SSH-Authentication.png)
*Schéma représentant le fonctionnement d'un serveur SSH*
[Source](https://www.cloudflare.com/fr-fr/learning/access-management/what-is-ssh/)
- Qu’est-ce qu’un serveur ssh ?
- Qu’est-ce qu’un serveur mandataire ?
>Un serveur mandataire filtre les sites web que vous consultez. Il reçoit les requêtes de votre navigateur pour récupérer les pages web demandées avec leurs éléments et, dans le respect des règles édictées, les transmets ou non. Ils sont fréquemment utilisés dans le domaine professionnel et les points d’accès sans fil publics pour contrôler quels sites peuvent être consultés, pour interdire l’accès à Internet sans identification, ou pour effectuer des contrôles de sécurité de certains sites répertoriés.
[Source](https://help.ubuntu.com/stable/ubuntu-help/net-proxy.html.fr)
> Le protocole Secure Shell (SSH) est une méthode permettant d'envoyer en toute sécurité des commandes à un ordinateur sur un réseau non sécurisé. SSH a recours à la cryptographie pour authentifier et chiffrer les connexions entre les appareils.
> ![Schéma d'un serveur SSH](images/SSH-Authentication.png)
> _Schéma représentant le fonctionnement d'un serveur SSH_
> [Source](https://www.cloudflare.com/fr-fr/learning/access-management/what-is-ssh/)
- Qu’est-ce qu’un serveur mandataire ?
> Un serveur mandataire filtre les sites web que vous consultez. Il reçoit les requêtes de votre navigateur pour récupérer les pages web demandées avec leurs éléments et, dans le respect des règles édictées, les transmets ou non. Ils sont fréquemment utilisés dans le domaine professionnel et les points d’accès sans fil publics pour contrôler quels sites peuvent être consultés, pour interdire l’accès à Internet sans identification, ou pour effectuer des contrôles de sécurité de certains sites répertoriés.
> [Source](https://help.ubuntu.com/stable/ubuntu-help/net-proxy.html.fr)
### Préparation du système
#### Accès sudo pour user
>Passer en mode console sur la vm (***ctrl+alt+f1***), si fonctionne pas, dans terminal exécuter `su -` puis mettre mot de passe de root (indiquer en index du sujet semaine 1 sae)
>Ensuite, exécuter : `usermod -aG sudo user` pour ajouter user aux sudo
Visualiser tous les group du pc : `getent group`
[Source](https://www.malekal.com/ajouter-utilisateur-groupe-linux/)
> Passer en mode console sur la vm (**_ctrl+alt+f1_**), si fonctionne pas, dans terminal exécuter `su -` puis mettre mot de passe de root (indiquer en index du sujet semaine 1 sae)
> Ensuite, exécuter : `usermod -aG sudo user` pour ajouter user aux sudo
> Visualiser tous les group du pc : `getent group`
> [Source](https://www.malekal.com/ajouter-utilisateur-groupe-linux/)
- Comment peut-on savoir à quels groupes appartient l'utilisateur user ?
>Exécuter la commande suivante : `id -nG user`
[Source](https://www.malekal.com/lister-groupes-linux/)
- Comment peut-on savoir à quels groupes appartient l'utilisateur user ?
> Exécuter la commande suivante : `id -nG user`
> [Source](https://www.malekal.com/lister-groupes-linux/)
#### Installation des suppléments invités
- Quelle est la version du noyau Linux utilisé par votre VM ?
>*user@serveur:~$ **uname -r**
**6.1.0**-31-amd64*
La version du noyau Linux est 6.1.0
[Source](https://www.ionos.fr/digitalguide/serveur/know-how/afficher-la-version-de-linux/)
- Quelle est la version du noyau Linux utilisé par votre VM ?
> _user@serveur:~$ **uname -r**
> **6.1.0**-31-amd64_
> La version du noyau Linux est 6.1.0
> [Source](https://www.ionos.fr/digitalguide/serveur/know-how/afficher-la-version-de-linux/)
- À quoi servent les suppléments invités ? Donner 2 principales raisons de les installer.
- À quoi servent les suppléments invités ? Donner 2 principales raisons de les installer.
>Les suppléments invités sont une sorte de pack logiciel à installer sur la machine virtuelle pour optimiser son fonctionnement et ajouter de nouvelles fonctionnalités
>2 principales raisons de les installer : possibilité de d’avoir une presse-papier partagée entre la vm et l’ordinateur hôte ; pouvoir mettre la vm en plein écran
[Source](https://fr.wikipedia.org/wiki/Oracle_VM_VirtualBox)
> Les suppléments invités sont une sorte de pack logiciel à installer sur la machine virtuelle pour optimiser son fonctionnement et ajouter de nouvelles fonctionnalités
> 2 principales raisons de les installer : possibilité de d’avoir une presse-papier partagée entre la vm et l’ordinateur hôte ; pouvoir mettre la vm en plein écran
> [Source](https://fr.wikipedia.org/wiki/Oracle_VM_VirtualBox)
- À quoi sert la commande mount (dans notre cas de figure et dans le cas général) ?
>La commande mount permet de demander au système d'exploitation de rendre un système de fichiers accessible, à un emplacement spécifié (le point de montage). En outre, vous pouvez utiliser la commande mount pour générer d'autres arborescences de fichiers qui sont constituées de répertoires et de montages de fichiers.
>Dans notre cas, la commande mount est utilisée pour que notre système d’exploitation prend en compte ce qu’il y a dans le lecteur CD de la VM (notamment ici pour les suppléments invités).
[Source](https://www.ibm.com/docs/fr/aix/7.3?topic=m-mount-command)
- À quoi sert la commande mount (dans notre cas de figure et dans le cas général) ?
> La commande mount permet de demander au système d'exploitation de rendre un système de fichiers accessible, à un emplacement spécifié (le point de montage). En outre, vous pouvez utiliser la commande mount pour générer d'autres arborescences de fichiers qui sont constituées de répertoires et de montages de fichiers.
> Dans notre cas, la commande mount est utilisée pour que notre système d’exploitation prend en compte ce qu’il y a dans le lecteur CD de la VM (notamment ici pour les suppléments invités).
> [Source](https://www.ibm.com/docs/fr/aix/7.3?topic=m-mount-command)
### À propos de la distribution Debian
#### Quelques questions
- Qu’est-ce que le Projet Debian ? D’où vient le nom Debian ?
>Le nom Debain vient du nom du foncdateur de Debian Ian Murdock, et de sa femme, Debra
- Qu’est-ce que le Projet Debian ? D’où vient le nom Debian ?
> Le nom Debain vient du nom du foncdateur de Debian Ian Murdock, et de sa femme, Debra
##### *La maintenance*
##### _La maintenance_
- Il existe 3 durées de prise en charge (support) de ces versions : la durée minimale, la durée en support long terme (LTS) et la durée en support long terme étendue (ELTS). Quelle sont les durées de ces prises en charge ?
- Il existe 3 durées de prise en charge (support) de ces versions : la durée minimale, la durée en support long terme (LTS) et la durée en support long terme étendue (ELTS). Quelle sont les durées de ces prises en charge ?
>| Durée minimale | LTS | ELTS |
>| :-: | :-: | :-: |
>| 3 ans | 5 ans | 10 ans |
> | Durée minimale | LTS | ELTS |
> | :------------: | :---: | :----: |
> | 3 ans | 5 ans | 10 ans |
- Pendant combien de temps les mises à jour de sécurité seront-elles fournies ?
>L'équipe en charge de la sécurité prend normalement en charge la distribution stable pendant trois années après sa publication. Il n'est pas possible de prendre en charge trois distributions, c'est déjà bien assez difficile avec deux.
- Pendant combien de temps les mises à jour de sécurité seront-elles fournies ?
> L'équipe en charge de la sécurité prend normalement en charge la distribution stable pendant trois années après sa publication. Il n'est pas possible de prendre en charge trois distributions, c'est déjà bien assez difficile avec deux.
##### *Nom générique, nom de code et version*
##### _Nom générique, nom de code et version_
- Combien de versions au minimum sont activement maintenues par Debian ? Donnez leur nom générique (= les types de distribution).
>Debian a toujours au moins trois versions activement entretenues : stable , testing et unstable
- Combien de versions au minimum sont activement maintenues par Debian ? Donnez leur nom générique (= les types de distribution).
- Chaque distribution majeure possède un nom de code différent. Par exemple, la version majeure actuelle (Debian 12) se nomme bookworm. D’où viennent les noms de code données aux distributions ?
>Quand une distribution Debian est en cours de développement, elle n'a aucun numéro de version mais un nom de code. Le but de ces noms de code est de faciliter la copie sur les miroirs des distributions Debian
> Debian a toujours au moins trois versions activement entretenues : stable , testing et unstable
- L’un des atouts de Debian fut le nombre d’architecture (≈ processeurs) officiellement prises en charge. Combien et lesquelles sont prises en charge par la version Bullseye ?
>Les architecture supporter par Debian sont au nombre de 10 officielement, voici les arcitechture supporter officielement:
>- PC 64 bits (amd64)
>- ARM64 bits (AArch64)
>- ARM EABI (armel)
>- ARM avec unité de calcul flottant (armhf)
>- PC 32 bits (i386)
>- MIPS (grand boutiste)
>- MIPS (petit boutiste)
>- MIPS 64 bits (petit boutiste)
>- Processeurs POWER
>- IBM System
[Source](https://www.debian.org/releases/bullseye/index.fr.html)
- Chaque distribution majeure possède un nom de code différent. Par exemple, la version majeure actuelle (Debian 12) se nomme bookworm. D’où viennent les noms de code données aux distributions ?
- Première version avec un nom de code
>◦ Quel a était le premier nom de code utilisé ? buzz
◦ Quand a-t-il été annoncé ? 17 juin 1996
◦ Quel était le numéro de version de cette distribution ? 1.1
> Quand une distribution Debian est en cours de développement, elle n'a aucun numéro de version mais un nom de code. Le but de ces noms de code est de faciliter la copie sur les miroirs des distributions Debian
- Dernière nom de code attribué
>◦ Quel est le dernier nom de code annoncé à ce jour ? bookworm
◦ Quand a-t-il été annoncé ? 10 juin 2023
◦ Quelle est la version de cette distribution ? 12
- L’un des atouts de Debian fut le nombre d’architecture (≈ processeurs) officiellement prises en charge. Combien et lesquelles sont prises en charge par la version Bullseye ?
> Les architecture supporter par Debian sont au nombre de 10 officielement, voici les arcitechture supporter officielement:
>
> - PC 64 bits (amd64)
> - ARM64 bits (AArch64)
> - ARM EABI (armel)
> - ARM avec unité de calcul flottant (armhf)
> - PC 32 bits (i386)
> - MIPS (grand boutiste)
> - MIPS (petit boutiste)
> - MIPS 64 bits (petit boutiste)
> - Processeurs POWER
> - IBM System
> [Source](https://www.debian.org/releases/bullseye/index.fr.html)
- Première version avec un nom de code
> ◦ Quel a était le premier nom de code utilisé ? buzz
> ◦ Quand a-t-il été annoncé ? 17 juin 1996
> ◦ Quel était le numéro de version de cette distribution ? 1.1
- Dernière nom de code attribué
> ◦ Quel est le dernier nom de code annoncé à ce jour ? bookworm
> ◦ Quand a-t-il été annoncé ? 10 juin 2023
> ◦ Quelle est la version de cette distribution ? 12
### Installation préconfigurée
......@@ -211,12 +238,12 @@ Visualiser tous les group du pc : `getent group`
Voir : [Caractéristiques de la machine virtuelle](#caractéristiques-de-la-machine-virtuelle)
![Récapitulatif de la machine virtuelle](images/recapitulatif-5.png)
*Récapitulatif de la machine virtuelle*
_Récapitulatif de la machine virtuelle_
Fichiers de pré-configuration
1. Récupérer l’archive autoinstall_Debian.zip sur Moodle et décompresser-là dans le répertoire de
votre machine virtuelle.
votre machine virtuelle.
2. Remplacer la chaîne @@UUID@@ par un identifiant unique universel. Le plus simple est d’exécuter la commande ci-dessous en étant placé dans le même répertoire que votre fichier S203-Debian12.viso.
......@@ -227,71 +254,73 @@ sed -i -E "s/(--iprt-iso-maker-file-marker-bourne-sh).*$/\1=$(cat /proc/sys/kern
1. Insérer le fichier S203_Debian12.viso dans le lecteur optique (cd/dvd) de votre machine virtuelle ;
2. Démarrer la machine virtuelle et laissez l’installation se dérouler.
3. Testez les ajouts invités en vous connectant (user/user, ou root/root) puis en modifiant la taille de la
fenêtre
fenêtre
![Écran après autoinstallation](images/connexion-apres-autoinstallation.png)
*Écran après autoinstallation*
_Écran après autoinstallation_
ajouter user à sudo : ```sh usermod -aG sudo user```
ajouter user à sudo : `sh usermod -aG sudo user`
##### Fichiers de pré-configuration
1. Récupérer l’archive *autoinstall_Debian.zip* sur Moodle et décompresser-là dans le répertoire de votre machine virtuelle.
1. Récupérer l’archive _autoinstall_Debian.zip_ sur Moodle et décompresser-là dans le répertoire de votre machine virtuelle.
2. Remplacer la chaîne *@@UUID@@* par un identifiant universel. Le plus simple est d’exécuter la commande ci-dessous en étant placé dans le même répertoire que votre fichier S203-Debian12.viso :
2. Remplacer la chaîne _@@UUID@@_ par un identifiant universel. Le plus simple est d’exécuter la commande ci-dessous en étant placé dans le même répertoire que votre fichier S203-Debian12.viso :
```sh
sed -i -E "s/(--iprt-iso-maker-file-marker-bourne-sh).*$/\1=$(cat /proc/sys/kernel/random/uuid)/" S203-Debian12.viso
```
3. Insérer le fichier *S203_Debian12.viso* dans le lecteur optique (cd/dvd) de votre machine virtuelle
3. Insérer le fichier _S203_Debian12.viso_ dans le lecteur optique (cd/dvd) de votre machine virtuelle
4. Démarrer la machine virtuelle et laissez l’installation se dérouler
5. Testez les ajouts invités en vous connectant (*user/user*, ou *root/root*) puis en modifiant la taille de la
fenêtre
5. Testez les ajouts invités en vous connectant (_user/user_, ou _root/root_) puis en modifiant la taille de la
fenêtre
![Écran connexion après autoinstallation](images/connexion-apres-autoinstallation.png)
*Écran connexion après autoinstallation*
_Écran connexion après autoinstallation_
##### Questions : Ajustement de la pré-configuration
Modifier votre configuration (et recommencez l’installation) afin de :
- Ajouter le droit d’utiliser ***sudo*** à l’utilisateur standard
>Dans le fichier *preseed-fr.cfg* ajouter sudo à la ligne
- Ajouter le droit d’utiliser **_sudo_** à l’utilisateur standard
```cfg
d-i passwd/user-default-groups string audio cdrom video sudo
```
> Dans le fichier _preseed-fr.cfg_ ajouter sudo à la ligne
- Installer l’environnement ***MATE***
>Ajouter cette ligne dans le fichier *preseed.cfg* :
```cfg
d-i passwd/user-default-groups string audio cdrom video sudo
```
```cfg
## Installer environnement MATE
/install.amd/vmlinuz vga=788 initrd=/install.amd/gtk/initrd.gz desktop=mate-desktop --- quiet
```
- Installer l’environnement **_MATE_**
> Ajouter cette ligne dans le fichier _preseed.cfg_ :
[Source](https://www.debian.org/releases/stable/amd64/apbs02.fr.html)
```cfg
## Installer environnement MATE
/install.amd/vmlinuz vga=788 initrd=/install.amd/gtk/initrd.gz desktop=mate-desktop --- quiet
```
[Source](https://www.debian.org/releases/stable/amd64/apbs02.fr.html)
- Ajouter les paquets suivants :
1. ***sudo*** : sinon la gestion sudo est inutile
1. **_sudo_** : sinon la gestion sudo est inutile
2. ***git***, ***sqlite3***, ***curl*** : pour préparer l’installation de la semaine prochaine
2. **_git_**, **_sqlite3_**, **_curl_** : pour préparer l’installation de la semaine prochaine
3. ***bash-completion*** : va vous simplifier grandement l’écriture des lignes de commande
3. **_bash-completion_** : va vous simplifier grandement l’écriture des lignes de commande
4. ***neofetch*** : pas très utile
4. **_neofetch_** : pas très utile
> Ajouter la ligne suivant pour installer tous ces paquets :
> Ajouter la ligne suivant pour installer tous ces paquets :
```cfg
d-i pkgsel/include string sudo, git, sqlite3, curl, bash-completion, neofetch
```
```cfg
d-i pkgsel/include string sudo, git, sqlite3, curl, bash-completion, neofetch
```
[Source](http://papy-tux.legtux.org/doc1173/index.php)
[Source](http://papy-tux.legtux.org/doc1173/index.php)
### Problèmes rencontrés
......@@ -343,7 +372,7 @@ Interface gratuite ungit
sudo apt install nodejs npm -y
```
> puis celle-çi pour installer ungit :
> puis celle-çi pour installer ungit :
```sh
npm install -g ungit
......@@ -351,18 +380,17 @@ npm install -g ungit
Comparaison avec gitk et git gui
| Critère | Gitk | Git GUI | Ungit |
|--------------------|-----------------------------|------------------------------|-------------------------------|
| **Type d'outil** | Visualisation de l'historique | Interface complète pour Git | Interface web pour Git |
| **Installation** | Inclus avec Git | Inclus avec Git | Nécessite Node.js |
| **Interface** | Minimaliste, basé sur Tk | Basique, en Tk | Moderne et intuitive (web) |
| **Utilisation** | Explorer les commits et branches | Faire des commits, merges, push/pull | Interface graphique simplifiée pour Git |
| **Facilité d'utilisation** | Moyenne (assez brut) | Plus simple mais limité | Très accessible |
| **Support du staging** | Non | Oui | Oui |
| **Support des merges** | Visualisation uniquement | Oui, mais basique | Oui, très visuel |
| **Personnalisation** | Non | Non | Oui, via plugins et options web |
| **Multiplateforme** | Oui | Oui | Oui (via navigateur) |
| **Dépendances** | Git et Tk | Git et Tk | Node.js et navigateur |
| Critère | Gitk | Git GUI | Ungit |
| -------------------------- | -------------------------------- | ------------------------------------ | --------------------------------------- |
| **Type d'outil** | Visualisation de l'historique | Interface complète pour Git | Interface web pour Git |
| **Installation** | Inclus avec Git | Inclus avec Git | Nécessite Node.js |
| **Interface** | Minimaliste, basé sur Tk | Basique, en Tk | Moderne et intuitive (web) |
| **Utilisation** | Explorer les commits et branches | Faire des commits, merges, push/pull | Interface graphique simplifiée pour Git |
| **Facilité d'utilisation** | Moyenne (assez brut) | Plus simple mais limité | Très accessible |
| **Support du staging** | Non | Oui | Oui |
| **Support des merges** | Visualisation uniquement | Oui, mais basique | Oui, très visuel |
| **Personnalisation** | Non | Non | Oui, via plugins et options web |
| **Multiplateforme** | Oui | Oui | Oui (via navigateur) || **Dépendances** | Git et Tk | Git et Tk | Node.js et navigateur |
## Semaine S4 de la SAÉ
......@@ -373,13 +401,13 @@ Le mode réseau par défaut de nos machines virtuelles est le mode NAT. Il perme
Sur VirtualBox, on peut utiliser l’interface graphique et la configuration de votre VM pour ajouter des redirections de port. Regardez la figure ci-dessous et réalisez la redirection du port 3000 de votre machine hôte (= la machine physique où est installée VirtualBox et votre VM) vers le port 3000 de votre VM.
![Configuration réseau de la machine virtuelle](images/configuration-reseau-vm.png)
*Configuration réseau de la machine virtuelle*
_Configuration réseau de la machine virtuelle_
![Ajout d'une redirection de port](images/ajouter-redirection-port.png)
*Ajout d'une redirection de port*
_Ajout d'une redirection de port_
![Redirection de port ajoutée](images/redirection-port-ajoutee.png)
*Redirection de port ajoutée*
_Redirection de port ajoutée_
### 2. Installation de Gitea
......@@ -388,7 +416,7 @@ Questions 1. À propos de Gitea
- Qu’est-ce que Gitea ?
> Gitea est un service de développement de logiciels tout-en-un indolore. Il comprend l'hébergement Git, la révision du code, la collaboration d'équipe, le registre des paquets et l'IC/CD.
[Source](https://docs.gitea.com/)
> [Source](https://docs.gitea.com/)
- À quels logiciels bien connus dans ce domaine peut-on le comparer (en citer au moins 2) ?
......@@ -397,21 +425,29 @@ Questions 1. À propos de Gitea
- Qu’est-ce qu’un fork (dans le domaine du développement logiciel) ?
> Un fork est une copie d'un projet logiciel existant à un moment donné pour permettre à quelque-un d'ajouter ses propres modifications au projet.
[Source](https://developer.mozilla.org/fr/docs/Glossary/Fork)
> [Source](https://developer.mozilla.org/fr/docs/Glossary/Fork)
- De quel logiciel Gitea est-il le fork ? Ce logiciel existe-t-il encore ?
> Gitea est un fork du logiciel [Gogs](https://gogs.io/). Oui, ce logiciel existe encore.
[Source](https://docs.gitea.com/)
> [Source](https://docs.gitea.com/)
#### 2.1. Installation de Gitea
A remplire
##### 2.1.1. Installation du binaire
Suivez les 4 premières étapes de l’installation : [Documentation](https://docs.gitea.io/en-us/install-from-binary/)
##### 2.1.2. Mise à jour du binaire du service Gitea
A remplire
#### 2.2. Tests d’utilisation
A remplire
#### 2.3. Pour aller plus loin
A remplire
File added
......@@ -21,6 +21,7 @@ Sur l'OS Debian :
```sh
sudo apt install pandoc #Installer pandoc
sudo apt install pandoc-citeproc #support LATEX pour les PDF
cp ./templates/* ~/.pandoc/templates
```
---
......@@ -28,10 +29,10 @@ sudo apt install pandoc-citeproc #support LATEX pour les PDF
### Convertir le `rapport.md` en fichier `PDF`
```sh
#Erreur trop de sous tableau|parti, pas supporter par Latex. A voir alternative.
# Quelques [Warning] mais fonctionne.
#pandoc <entre>.md -o <sortie>.pdf
pandoc rapport.md -o rapport.pdf
pandoc rapport.md -o rapport.pdf --pdf-engine=xelatex
```
---
......@@ -59,7 +60,7 @@ pandoc rapport.md -f markdown -o rapport.html --template=easy_template.html --to
```sh
sudo apt install pandoc
sudo apt install pandoc-citeproc
pandoc rapport.md -o rapport.pdf
pandoc rapport.md -o rapport.pdf --pdf-engine=xelatex
curl 'https://raw.githubusercontent.com/ryangrose/easy-pandoc-templates/master/copy_templates.sh' | bash
pandoc rapport.md -f markdown -o rapport.html --template=easy_template.html --toc --metadata title="SAÉ 2.03: Semaine 06 - GRP A7"
```
%%
% Copyright (c) 2017 - 2025, Pascal Wagler;
% Copyright (c) 2014 - 2025, John MacFarlane
%
% All rights reserved.
%
% Redistribution and use in source and binary forms, with or without
% modification, are permitted provided that the following conditions
% are met:
%
% - Redistributions of source code must retain the above copyright
% notice, this list of conditions and the following disclaimer.
%
% - Redistributions in binary form must reproduce the above copyright
% notice, this list of conditions and the following disclaimer in the
% documentation and/or other materials provided with the distribution.
%
% - Neither the name of John MacFarlane nor the names of other
% contributors may be used to endorse or promote products derived
% from this software without specific prior written permission.
%
% THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
% "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
% LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
% FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
% COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
% INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
% BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
% LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
% CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
% LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
% ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
% POSSIBILITY OF SUCH DAMAGE.
%%
%%
% This is the Eisvogel pandoc LaTeX template.
%
% For usage information and examples visit the official GitHub page:
% https://github.com/Wandmalfarbe/pandoc-latex-template
%%
% Options for packages loaded elsewhere
\PassOptionsToPackage{unicode$for(hyperrefoptions)$,$hyperrefoptions$$endfor$}{hyperref}
\PassOptionsToPackage{hyphens}{url}
\PassOptionsToPackage{dvipsnames,svgnames,x11names,table}{xcolor}
$if(CJKmainfont)$
\PassOptionsToPackage{space}{xeCJK}
$endif$
\documentclass[
$if(fontsize)$
$fontsize$,
$endif$
ignorenonframetext,
$if(handout)$
handout,
$endif$
$if(aspectratio)$
aspectratio=$aspectratio$,
$endif$
$if(babel-lang)$
$babel-lang$,
$endif$
$for(classoption)$
$classoption$$sep$,
$endfor$
]{$documentclass$}
$if(geometry)$
\geometry{$for(geometry)$$geometry$$sep$,$endfor$}
$endif$
\newif\ifbibliography
$if(background-image)$
\usebackgroundtemplate{%
\includegraphics[width=\paperwidth]{$background-image$}%
}
% In beamer background-image does not work well when other images are used, so this is the workaround
\pgfdeclareimage[width=\paperwidth,height=\paperheight]{background}{$background-image$}
\usebackgroundtemplate{\pgfuseimage{background}}
$endif$
\usepackage{pgfpages}
\setbeamertemplate{caption}[numbered]
\setbeamertemplate{caption label separator}{: }
\setbeamercolor{caption name}{fg=normal text.fg}
\beamertemplatenavigationsymbols$if(navigation)$$navigation$$else$empty$endif$
$--
$-- section numbering
$--
$if(numbersections)$
$else$
% remove section numbering
\setbeamertemplate{part page}{
\centering
\begin{beamercolorbox}[sep=16pt,center]{part title}
\usebeamerfont{part title}\insertpart\par
\end{beamercolorbox}
}
\setbeamertemplate{section page}{
\centering
\begin{beamercolorbox}[sep=12pt,center]{section title}
\usebeamerfont{section title}\insertsection\par
\end{beamercolorbox}
}
\setbeamertemplate{subsection page}{
\centering
\begin{beamercolorbox}[sep=8pt,center]{subsection title}
\usebeamerfont{subsection title}\insertsubsection\par
\end{beamercolorbox}
}
$endif$
$for(beameroption)$
\setbeameroption{$beameroption$}
$endfor$
% Prevent slide breaks in the middle of a paragraph
\widowpenalties 1 10000
\raggedbottom
$if(section-titles)$
\AtBeginPart{
\frame{\partpage}
}
\AtBeginSection{
\ifbibliography
\else
\frame{\sectionpage}
\fi
}
\AtBeginSubsection{
\frame{\subsectionpage}
}
$endif$
\usepackage{iftex}
\ifPDFTeX
\usepackage[$if(fontenc)$$fontenc$$else$T1$endif$]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{textcomp} % provide euro and other symbols
\else % if luatex or xetex
$if(mathspec)$
\ifXeTeX
\usepackage{mathspec} % this also loads fontspec
\else
\usepackage{unicode-math} % this also loads fontspec
\fi
$else$
\usepackage{unicode-math} % this also loads fontspec
$endif$
\defaultfontfeatures{Scale=MatchLowercase}$-- must come before Beamer theme
\defaultfontfeatures[\rmfamily]{Ligatures=TeX,Scale=1}
\fi
$if(fontfamily)$
$else$
$-- Set default font before Beamer theme so the theme can override it
\usepackage{lmodern}
$endif$
$-- Set Beamer theme before user font settings so they can override theme
$if(theme)$
\usetheme[$for(themeoptions)$$themeoptions$$sep$,$endfor$]{$theme$}
$endif$
$if(colortheme)$
\usecolortheme[$for(colorthemeoptions)$$colorthemeoptions$$sep$,$endfor$]{$colortheme$}
$endif$
$if(fonttheme)$
\usefonttheme[$for(fontthemeoptions)$$fontthemeoptions$$sep$,$endfor$]{$fonttheme$}
$endif$
$if(mainfont)$
\usefonttheme{serif} % use mainfont rather than sansfont for slide text
$endif$
$if(innertheme)$
\useinnertheme[$for(innerthemeoptions)$$innerthemeoptions$$sep$,$endfor$]{$innertheme$}
$endif$
$if(outertheme)$
\useoutertheme[$for(outerthemeoptions)$$outerthemeoptions$$sep$,$endfor$]{$outertheme$}
$endif$
$-- User font settings (must come after default font and Beamer theme)
$if(fontfamily)$
\usepackage[$for(fontfamilyoptions)$$fontfamilyoptions$$sep$,$endfor$]{$fontfamily$}
$endif$
\ifPDFTeX\else
% xetex/luatex font selection
$if(mainfont)$
$if(mainfontfallback)$
\ifLuaTeX
\usepackage{luaotfload}
\directlua{luaotfload.add_fallback("mainfontfallback",{
$for(mainfontfallback)$"$mainfontfallback$"$sep$,$endfor$
})}
\fi
$endif$
\setmainfont[$for(mainfontoptions)$$mainfontoptions$$sep$,$endfor$$if(mainfontfallback)$,RawFeature={fallback=mainfontfallback}$endif$]{$mainfont$}
$endif$
$if(sansfont)$
$if(sansfontfallback)$
\ifLuaTeX
\usepackage{luaotfload}
\directlua{luaotfload.add_fallback("sansfontfallback",{
$for(sansfontfallback)$"$sansfontfallback$"$sep$,$endfor$
})}
\fi
$endif$
\setsansfont[$for(sansfontoptions)$$sansfontoptions$$sep$,$endfor$$if(sansfontfallback)$,RawFeature={fallback=sansfontfallback}$endif$]{$sansfont$}
$endif$
$if(monofont)$
$if(monofontfallback)$
\ifLuaTeX
\usepackage{luaotfload}
\directlua{luaotfload.add_fallback("monofontfallback",{
$for(monofontfallback)$"$monofontfallback$"$sep$,$endfor$
})}
\fi
$endif$
\setmonofont[$for(monofontoptions)$$monofontoptions$$sep$,$endfor$$if(monofontfallback)$,RawFeature={fallback=monofontfallback}$endif$]{$monofont$}
$endif$
$for(fontfamilies)$
\newfontfamily{$fontfamilies.name$}[$for(fontfamilies.options)$$fontfamilies.options$$sep$,$endfor$]{$fontfamilies.font$}
$endfor$
$if(mathfont)$
$if(mathspec)$
\ifXeTeX
\setmathfont(Digits,Latin,Greek)[$for(mathfontoptions)$$mathfontoptions$$sep$,$endfor$]{$mathfont$}
\else
\setmathfont[$for(mathfontoptions)$$mathfontoptions$$sep$,$endfor$]{$mathfont$}
\fi
$else$
\setmathfont[$for(mathfontoptions)$$mathfontoptions$$sep$,$endfor$]{$mathfont$}
$endif$
$endif$
$if(CJKmainfont)$
\ifXeTeX
\usepackage{xeCJK}
\setCJKmainfont[$for(CJKoptions)$$CJKoptions$$sep$,$endfor$]{$CJKmainfont$}
$if(CJKsansfont)$
\setCJKsansfont[$for(CJKoptions)$$CJKoptions$$sep$,$endfor$]{$CJKsansfont$}
$endif$
$if(CJKmonofont)$
\setCJKmonofont[$for(CJKoptions)$$CJKoptions$$sep$,$endfor$]{$CJKmonofont$}
$endif$
\fi
$endif$
$if(luatexjapresetoptions)$
\ifLuaTeX
\usepackage[$for(luatexjapresetoptions)$$luatexjapresetoptions$$sep$,$endfor$]{luatexja-preset}
\fi
$endif$
$if(CJKmainfont)$
\ifLuaTeX
\usepackage[$for(luatexjafontspecoptions)$$luatexjafontspecoptions$$sep$,$endfor$]{luatexja-fontspec}
\setmainjfont[$for(CJKoptions)$$CJKoptions$$sep$,$endfor$]{$CJKmainfont$}
\fi
$endif$
\fi
$if(zero-width-non-joiner)$
%% Support for zero-width non-joiner characters.
\makeatletter
\def\zerowidthnonjoiner{%
% Prevent ligatures and adjust kerning, but still support hyphenating.
\texorpdfstring{%
\TextOrMath{\nobreak\discretionary{-}{}{\kern.03em}%
\ifvmode\else\nobreak\hskip\z@skip\fi}{}%
}{}%
}
\makeatother
\ifPDFTeX
\DeclareUnicodeCharacter{200C}{\zerowidthnonjoiner}
\else
\catcode`^^^^200c=\active
\protected\def ^^^^200c{\zerowidthnonjoiner}
\fi
%% End of ZWNJ support
$endif$
% Use upquote if available, for straight quotes in verbatim environments
\IfFileExists{upquote.sty}{\usepackage{upquote}}{}
\IfFileExists{microtype.sty}{% use microtype if available
\usepackage[$for(microtypeoptions)$$microtypeoptions$$sep$,$endfor$]{microtype}
\UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts
}{}
$if(linestretch)$
\usepackage{setspace}
$else$
% Use setspace anyway because we change the default line spacing.
% The spacing is changed early to affect the titlepage and the TOC.
\usepackage{setspace}
\setstretch{1.2}
$endif$
$--
$-- paragraph formatting
$--
$if(indent)$
$else$
\makeatletter
\@ifundefined{KOMAClassName}{% if non-KOMA class
\IfFileExists{parskip.sty}{%
\usepackage{parskip}
}{% else
\setlength{\parindent}{0pt}
\setlength{\parskip}{6pt plus 2pt minus 1pt}}
}{% if KOMA class
\KOMAoptions{parskip=half}}
\makeatother
$endif$
$if(beamer)$
$else$
$if(block-headings)$
% Make \paragraph and \subparagraph free-standing
\makeatletter
\ifx\paragraph\undefined\else
\let\oldparagraph\paragraph
\renewcommand{\paragraph}{
\@ifstar
\xxxParagraphStar
\xxxParagraphNoStar
}
\newcommand{\xxxParagraphStar}[1]{\oldparagraph*{#1}\mbox{}}
\newcommand{\xxxParagraphNoStar}[1]{\oldparagraph{#1}\mbox{}}
\fi
\ifx\subparagraph\undefined\else
\let\oldsubparagraph\subparagraph
\renewcommand{\subparagraph}{
\@ifstar
\xxxSubParagraphStar
\xxxSubParagraphNoStar
}
\newcommand{\xxxSubParagraphStar}[1]{\oldsubparagraph*{#1}\mbox{}}
\newcommand{\xxxSubParagraphNoStar}[1]{\oldsubparagraph{#1}\mbox{}}
\fi
\makeatother
$endif$
$endif$
$--
$-- verbatim in notes
$--
$if(verbatim-in-note)$
\usepackage{fancyvrb}
$endif$
$-- highlighting
$if(listings)$
\usepackage{listings}
\newcommand{\passthrough}[1]{#1}
\lstset{defaultdialect=[5.3]Lua}
\lstset{defaultdialect=[x86masm]Assembler}
$endif$
$if(listings-no-page-break)$
\usepackage{etoolbox}
\BeforeBeginEnvironment{lstlisting}{\par\noindent\begin{minipage}{\linewidth}}
\AfterEndEnvironment{lstlisting}{\end{minipage}\par\addvspace{\topskip}}
$endif$
$if(lhs)$
\lstnewenvironment{code}{\lstset{language=Haskell,basicstyle=\small\ttfamily}}{}
$endif$
$if(highlighting-macros)$
$highlighting-macros$
% Workaround/bugfix from jannick0.
% See https://github.com/jgm/pandoc/issues/4302#issuecomment-360669013)
% or https://github.com/Wandmalfarbe/pandoc-latex-template/issues/2
%
% Redefine the verbatim environment 'Highlighting' to break long lines (with
% the help of fvextra). Redefinition is necessary because it is unlikely that
% pandoc includes fvextra in the default template.
\usepackage{fvextra}
\DefineVerbatimEnvironment{Highlighting}{Verbatim}{breaklines,fontsize=$if(code-block-font-size)$$code-block-font-size$$else$\small$endif$,commandchars=\\\{\}}
$endif$
$--
$-- tables
$--
$if(tables)$
\usepackage{longtable,booktabs,array}
$if(multirow)$
\usepackage{multirow}
$endif$
\usepackage{calc} % for calculating minipage widths
$if(beamer)$
\usepackage{caption}
% Make caption package work with longtable
\makeatletter
\def\fnum@table{\tablename~\thetable}
\makeatother
$else$
% Correct order of tables after \paragraph or \subparagraph
\usepackage{etoolbox}
\makeatletter
\patchcmd\longtable{\par}{\if@noskipsec\mbox{}\fi\par}{}{}
\makeatother
% Allow footnotes in longtable head/foot
\IfFileExists{footnotehyper.sty}{\usepackage{footnotehyper}}{\usepackage{footnote}}
\makesavenoteenv{longtable}
$endif$
$endif$
$--
$-- graphics
$--
$if(graphics)$
\usepackage{graphicx}
\makeatletter
\newsavebox\pandoc@box
\newcommand*\pandocbounded[1]{% scales image to fit in text height/width
\sbox\pandoc@box{#1}%
\Gscale@div\@tempa{\textheight}{\dimexpr\ht\pandoc@box+\dp\pandoc@box\relax}%
\Gscale@div\@tempb{\linewidth}{\wd\pandoc@box}%
\ifdim\@tempb\p@<\@tempa\p@\let\@tempa\@tempb\fi% select the smaller of both
\ifdim\@tempa\p@<\p@\scalebox{\@tempa}{\usebox\pandoc@box}%
\else\usebox{\pandoc@box}%
\fi%
}
% Set default figure placement to htbp
% Make use of float-package and set default placement for figures to H.
% The option H means 'PUT IT HERE' (as opposed to the standard h option which means 'You may put it here if you like').
\usepackage{float}
\floatplacement{figure}{$if(float-placement-figure)$$float-placement-figure$$else$H$endif$}
\makeatother
$endif$
$if(svg)$
\usepackage{svg}
$endif$
$--
$-- strikeout/underline
$--
$if(strikeout)$
\ifLuaTeX
\usepackage{luacolor}
\usepackage[soul]{lua-ul}
\else
\usepackage{soul}
$if(beamer)$
\makeatletter
\let\HL\hl
\renewcommand\hl{% fix for beamer highlighting
\let\set@color\beamerorig@set@color
\let\reset@color\beamerorig@reset@color
\HL}
\makeatother
$endif$
$if(CJKmainfont)$
\ifXeTeX
% soul's \st doesn't work for CJK:
\usepackage{xeCJKfntef}
\renewcommand{\st}[1]{\sout{#1}}
\fi
$endif$
\fi
$endif$
$--
$-- CSL citations
$--
$if(csl-refs)$
% definitions for citeproc citations
\NewDocumentCommand\citeproctext{}{}
\NewDocumentCommand\citeproc{mm}{%
\begingroup\def\citeproctext{#2}\cite{#1}\endgroup}
\makeatletter
% allow citations to break across lines
\let\@cite@ofmt\@firstofone
% avoid brackets around text for \cite:
\def\@biblabel#1{}
\def\@cite#1#2{{#1\if@tempswa , #2\fi}}
\makeatother
\newlength{\cslhangindent}
\setlength{\cslhangindent}{1.5em}
\newlength{\csllabelwidth}
\setlength{\csllabelwidth}{3em}
\newenvironment{CSLReferences}[2] % #1 hanging-indent, #2 entry-spacing
{\begin{list}{}{%
\setlength{\itemindent}{0pt}
\setlength{\leftmargin}{0pt}
\setlength{\parsep}{0pt}
% turn on hanging indent if param 1 is 1
\ifodd #1
\setlength{\leftmargin}{\cslhangindent}
\setlength{\itemindent}{-1\cslhangindent}
\fi
% set entry spacing
\setlength{\itemsep}{#2\baselineskip}}}
{\end{list}}
\usepackage{calc}
\newcommand{\CSLBlock}[1]{\hfill\break\parbox[t]{\linewidth}{\strut\ignorespaces#1\strut}}
\newcommand{\CSLLeftMargin}[1]{\parbox[t]{\csllabelwidth}{\strut#1\strut}}
\newcommand{\CSLRightInline}[1]{\parbox[t]{\linewidth - \csllabelwidth}{\strut#1\strut}}
\newcommand{\CSLIndent}[1]{\hspace{\cslhangindent}#1}
$endif$
$--
$-- Babel language support
$--
$if(lang)$
\ifLuaTeX
\usepackage[bidi=basic]{babel}
\else
\usepackage[bidi=default]{babel}
\fi
$if(babel-lang)$
\babelprovide[main,import]{$babel-lang$}
$if(mainfont)$
\ifPDFTeX
\else
\babelfont{rm}[$for(mainfontoptions)$$mainfontoptions$$sep$,$endfor$$if(mainfontfallback)$,RawFeature={fallback=mainfontfallback}$endif$]{$mainfont$}
\fi
$endif$
$endif$
$for(babel-otherlangs)$
\babelprovide[import]{$babel-otherlangs$}
$endfor$
$for(babelfonts/pairs)$
\babelfont[$babelfonts.key$]{rm}{$babelfonts.value$}
$endfor$
% get rid of language-specific shorthands (see #6817):
\let\LanguageShortHands\languageshorthands
\def\languageshorthands#1{}
$if(selnolig-langs)$
\ifLuaTeX
\usepackage[$for(selnolig-langs)$$it$$sep$,$endfor$]{selnolig} % disable illegal ligatures
\fi
$endif$
$endif$
$--
$-- pagestyle
$--
$if(pagestyle)$
\pagestyle{$pagestyle$}
$endif$
$--
$-- prevent overfull lines
$--
\setlength{\emergencystretch}{3em} % prevent overfull lines
$--
$-- tight lists
$--
\providecommand{\tightlist}{%
\setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
$--
$-- subfigure support
$--
$if(subfigure)$
\usepackage{subcaption}
$endif$
$--
$-- text direction support for pdftex
$--
$if(dir)$
\ifPDFTeX
\TeXXeTstate=1
\newcommand{\RL}[1]{\beginR #1\endR}
\newcommand{\LR}[1]{\beginL #1\endL}
\newenvironment{RTL}{\beginR}{\endR}
\newenvironment{LTR}{\beginL}{\endL}
\fi
$endif$
$--
$-- bibliography support support for natbib and biblatex
$--
$if(natbib)$
\usepackage[$natbiboptions$]{natbib}
\bibliographystyle{$if(biblio-style)$$biblio-style$$else$plainnat$endif$}
$endif$
$if(biblatex)$
\usepackage[$if(biblio-style)$style=$biblio-style$,$endif$$for(biblatexoptions)$$biblatexoptions$$sep$,$endfor$]{biblatex}
$for(bibliography)$
\addbibresource{$bibliography$}
$endfor$
$endif$
$--
$-- csquotes
$--
$if(csquotes)$
\usepackage{csquotes}
$endif$
$for(header-includes)$
$header-includes$
$endfor$
\usepackage{bookmark}
\IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available
\urlstyle{$if(urlstyle)$$urlstyle$$else$same$endif$}
$if(links-as-notes)$
% Make links footnotes instead of hotlinks:
\DeclareRobustCommand{\href}[2]{#2\footnote{\url{#1}}}
$endif$
$if(verbatim-in-note)$
\VerbatimFootnotes % allow verbatim text in footnotes
$endif$
\definecolor{default-linkcolor}{HTML}{A50000}
\definecolor{default-filecolor}{HTML}{A50000}
\definecolor{default-citecolor}{HTML}{4077C0}
\definecolor{default-urlcolor}{HTML}{4077C0}
\hypersetup{
$if(title-meta)$
pdftitle={$title-meta$},
$endif$
$if(author-meta)$
pdfauthor={$author-meta$},
$endif$
$if(lang)$
pdflang={$lang$},
$endif$
$if(subject)$
pdfsubject={$subject$},
$endif$
$if(keywords)$
pdfkeywords={$for(keywords)$$keywords$$sep$, $endfor$},
$endif$
$if(colorlinks)$
colorlinks=true,
linkcolor={$if(linkcolor)$$linkcolor$$else$default-linkcolor$endif$},
filecolor={$if(filecolor)$$filecolor$$else$default-filecolor$endif$},
citecolor={$if(citecolor)$$citecolor$$else$default-citecolor$endif$},
urlcolor={$if(urlcolor)$$urlcolor$$else$default-urlcolor$endif$},
$else$
$if(boxlinks)$
$else$
hidelinks,
$endif$
$endif$
breaklinks=true,
pdfcreator={LaTeX via pandoc with the Eisvogel template}}
$if(title)$
\title$if(shorttitle)$[$shorttitle$]$endif${$title$$if(thanks)$\thanks{$thanks$}$endif$}
$endif$
$if(subtitle)$
\subtitle$if(shortsubtitle)$[$shortsubtitle$]$endif${$subtitle$}
$endif$
\author$if(shortauthor)$[$shortauthor$]$endif${$for(author)$$author$$sep$ \and $endfor$}
\date$if(shortdate)$[$shortdate$]$endif${$date$}
$if(institute)$
\institute$if(shortinstitute)$[$shortinstitute$]$endif${$for(institute)$$institute$$sep$ \and $endfor$}
$endif$
$if(titlegraphic)$
\titlegraphic{
$for(titlegraphic)$
\includegraphics$if(titlegraphicoptions)$[$for(titlegraphicoptions)$$titlegraphicoptions$$sep$, $endfor$]$endif${$titlegraphic$}$sep$\enspace
$endfor$}
$endif$
$if(logo)$
\logo{\includegraphics{$logo$}}
$endif$
\begin{document}
$if(title)$
\frame{\titlepage}
$if(abstract)$
\begin{abstract}
$abstract$
\end{abstract}
$endif$
$endif$
$for(include-before)$
$include-before$
$endfor$
$if(toc)$
$if(toc-title)$
\renewcommand*\contentsname{$toc-title$}
$endif$
\begin{frame}[allowframebreaks]
$if(toc-title)$
\frametitle{$toc-title$}
$endif$
\setcounter{tocdepth}{$toc-depth$}
\tableofcontents
\end{frame}
$if(toc-own-page)$
\newpage
$endif$
\setcounter{tocdepth}{$toc-depth$}
\tableofcontents
}
$endif$
$if(lof)$
\listoffigures
$endif$
$if(lot)$
\listoftables
$endif$
$if(linestretch)$
\setstretch{$linestretch$}
$endif$
$body$
$if(natbib)$
$if(bibliography)$
$if(biblio-title)$
$if(has-chapters)$
\renewcommand\bibname{$biblio-title$}
$else$
\renewcommand\refname{$biblio-title$}
$endif$
$endif$
\begin{frame}[allowframebreaks]{$biblio-title$}
$if(nocite-ids)$
\nocite{$for(nocite-ids)$$it$$sep$, $endfor$}
$endif$
\bibliographytrue
\bibliography{$for(bibliography)$$bibliography$$sep$,$endfor$}
\end{frame}
$endif$
$endif$
$if(biblatex)$
\begin{frame}[allowframebreaks]{$biblio-title$}
$if(nocite-ids)$
\nocite{$for(nocite-ids)$$it$$sep$, $endfor$}
$endif$
\bibliographytrue
\printbibliography[heading=none]
\end{frame}
$endif$
$for(include-after)$
$include-after$
$endfor$
\end{document}
%%
% Copyright (c) 2017 - 2025, Pascal Wagler;
% Copyright (c) 2014 - 2025, John MacFarlane
%
% All rights reserved.
%
% Redistribution and use in source and binary forms, with or without
% modification, are permitted provided that the following conditions
% are met:
%
% - Redistributions of source code must retain the above copyright
% notice, this list of conditions and the following disclaimer.
%
% - Redistributions in binary form must reproduce the above copyright
% notice, this list of conditions and the following disclaimer in the
% documentation and/or other materials provided with the distribution.
%
% - Neither the name of John MacFarlane nor the names of other
% contributors may be used to endorse or promote products derived
% from this software without specific prior written permission.
%
% THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
% "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
% LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
% FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
% COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
% INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
% BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
% LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
% CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
% LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
% ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
% POSSIBILITY OF SUCH DAMAGE.
%%
%%
% This is the Eisvogel pandoc LaTeX template.
%
% For usage information and examples visit the official GitHub page:
% https://github.com/Wandmalfarbe/pandoc-latex-template
%%
% Options for packages loaded elsewhere
\PassOptionsToPackage{unicode$for(hyperrefoptions)$,$hyperrefoptions$$endfor$}{hyperref}
\PassOptionsToPackage{hyphens}{url}
\PassOptionsToPackage{dvipsnames,svgnames,x11names,table}{xcolor}
$if(CJKmainfont)$
\PassOptionsToPackage{space}{xeCJK}
$endif$
\documentclass[
$if(fontsize)$
$fontsize$,
$endif$
$if(papersize)$
$papersize$paper,
$else$
paper=a4,
$endif$
$for(classoption)$
$classoption$$sep$,
$endfor$
,captions=tableheading
]{$if(book)$scrbook$else$scrartcl$endif$}
$if(beamerarticle)$
\usepackage{beamerarticle} % needs to be loaded first
$endif$
\usepackage{xcolor}
$if(footnotes-pretty)$
% load footmisc in order to customize footnotes (footmisc has to be loaded before hyperref, cf. https://tex.stackexchange.com/a/169124/144087)
\usepackage[hang,flushmargin,bottom,multiple]{footmisc}
\setlength{\footnotemargin}{0.8em} % set space between footnote nr and text
\setlength{\footnotesep}{\baselineskip} % set space between multiple footnotes
\setlength{\skip\footins}{0.3cm} % set space between page content and footnote
\setlength{\footskip}{0.9cm} % set space between footnote and page bottom
$endif$
$if(geometry)$
\usepackage[$for(geometry)$$geometry$$sep$,$endfor$]{geometry}
$else$
\usepackage[margin=2.5cm,includehead=true,includefoot=true,centering,$for(geometry)$$geometry$$sep$,$endfor$]{geometry}
$endif$
\usepackage{amsmath,amssymb}
$if(titlepage-logo)$
\usepackage[export]{adjustbox}
\usepackage{graphicx}
$endif$
% add backlinks to footnote references, cf. https://tex.stackexchange.com/questions/302266/make-footnote-clickable-both-ways
$if(footnotes-disable-backlinks)$
$else$
\usepackage{footnotebackref}
$endif$
$--
$-- section numbering
$--
$if(numbersections)$
\setcounter{secnumdepth}{$if(secnumdepth)$$secnumdepth$$else$5$endif$}
$else$
\setcounter{secnumdepth}{-\maxdimen} % remove section numbering
$endif$
\usepackage{iftex}
\ifPDFTeX
\usepackage[$if(fontenc)$$fontenc$$else$T1$endif$]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{textcomp} % provide euro and other symbols
\else % if luatex or xetex
$if(mathspec)$
\ifXeTeX
\usepackage{mathspec} % this also loads fontspec
\else
\usepackage{unicode-math} % this also loads fontspec
\fi
$else$
\usepackage{unicode-math} % this also loads fontspec
$endif$
\defaultfontfeatures{Scale=MatchLowercase}$-- must come before Beamer theme
\defaultfontfeatures[\rmfamily]{Ligatures=TeX,Scale=1}
\fi
$if(fontfamily)$
$else$
$-- Set default font before Beamer theme so the theme can override it
\usepackage{lmodern}
$endif$
$-- User font settings (must come after default font and Beamer theme)
$if(fontfamily)$
\usepackage[$for(fontfamilyoptions)$$fontfamilyoptions$$sep$,$endfor$]{$fontfamily$}
$endif$
\ifPDFTeX\else
% xetex/luatex font selection
$if(mainfont)$
$if(mainfontfallback)$
\ifLuaTeX
\usepackage{luaotfload}
\directlua{luaotfload.add_fallback("mainfontfallback",{
$for(mainfontfallback)$"$mainfontfallback$"$sep$,$endfor$
})}
\fi
$endif$
\setmainfont[$for(mainfontoptions)$$mainfontoptions$$sep$,$endfor$$if(mainfontfallback)$,RawFeature={fallback=mainfontfallback}$endif$]{$mainfont$}
$endif$
$if(sansfont)$
$if(sansfontfallback)$
\ifLuaTeX
\usepackage{luaotfload}
\directlua{luaotfload.add_fallback("sansfontfallback",{
$for(sansfontfallback)$"$sansfontfallback$"$sep$,$endfor$
})}
\fi
$endif$
\setsansfont[$for(sansfontoptions)$$sansfontoptions$$sep$,$endfor$$if(sansfontfallback)$,RawFeature={fallback=sansfontfallback}$endif$]{$sansfont$}
$endif$
$if(monofont)$
$if(monofontfallback)$
\ifLuaTeX
\usepackage{luaotfload}
\directlua{luaotfload.add_fallback("monofontfallback",{
$for(monofontfallback)$"$monofontfallback$"$sep$,$endfor$
})}
\fi
$endif$
\setmonofont[$for(monofontoptions)$$monofontoptions$$sep$,$endfor$$if(monofontfallback)$,RawFeature={fallback=monofontfallback}$endif$]{$monofont$}
$endif$
$for(fontfamilies)$
\newfontfamily{$fontfamilies.name$}[$for(fontfamilies.options)$$fontfamilies.options$$sep$,$endfor$]{$fontfamilies.font$}
$endfor$
$if(mathfont)$
$if(mathspec)$
\ifXeTeX
\setmathfont(Digits,Latin,Greek)[$for(mathfontoptions)$$mathfontoptions$$sep$,$endfor$]{$mathfont$}
\else
\setmathfont[$for(mathfontoptions)$$mathfontoptions$$sep$,$endfor$]{$mathfont$}
\fi
$else$
\setmathfont[$for(mathfontoptions)$$mathfontoptions$$sep$,$endfor$]{$mathfont$}
$endif$
$endif$
$if(CJKmainfont)$
\ifXeTeX
\usepackage{xeCJK}
\setCJKmainfont[$for(CJKoptions)$$CJKoptions$$sep$,$endfor$]{$CJKmainfont$}
$if(CJKsansfont)$
\setCJKsansfont[$for(CJKoptions)$$CJKoptions$$sep$,$endfor$]{$CJKsansfont$}
$endif$
$if(CJKmonofont)$
\setCJKmonofont[$for(CJKoptions)$$CJKoptions$$sep$,$endfor$]{$CJKmonofont$}
$endif$
\fi
$endif$
$if(luatexjapresetoptions)$
\ifLuaTeX
\usepackage[$for(luatexjapresetoptions)$$luatexjapresetoptions$$sep$,$endfor$]{luatexja-preset}
\fi
$endif$
$if(CJKmainfont)$
\ifLuaTeX
\usepackage[$for(luatexjafontspecoptions)$$luatexjafontspecoptions$$sep$,$endfor$]{luatexja-fontspec}
\setmainjfont[$for(CJKoptions)$$CJKoptions$$sep$,$endfor$]{$CJKmainfont$}
\fi
$endif$
\fi
$if(zero-width-non-joiner)$
%% Support for zero-width non-joiner characters.
\makeatletter
\def\zerowidthnonjoiner{%
% Prevent ligatures and adjust kerning, but still support hyphenating.
\texorpdfstring{%
\TextOrMath{\nobreak\discretionary{-}{}{\kern.03em}%
\ifvmode\else\nobreak\hskip\z@skip\fi}{}%
}{}%
}
\makeatother
\ifPDFTeX
\DeclareUnicodeCharacter{200C}{\zerowidthnonjoiner}
\else
\catcode`^^^^200c=\active
\protected\def ^^^^200c{\zerowidthnonjoiner}
\fi
%% End of ZWNJ support
$endif$
% Use upquote if available, for straight quotes in verbatim environments
\IfFileExists{upquote.sty}{\usepackage{upquote}}{}
\IfFileExists{microtype.sty}{% use microtype if available
\usepackage[$for(microtypeoptions)$$microtypeoptions$$sep$,$endfor$]{microtype}
\UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts
}{}
$if(linestretch)$
\usepackage{setspace}
$else$
% Use setspace anyway because we change the default line spacing.
% The spacing is changed early to affect the titlepage and the TOC.
\usepackage{setspace}
\setstretch{1.2}
$endif$
$--
$-- paragraph formatting
$--
$if(indent)$
$else$
\makeatletter
\@ifundefined{KOMAClassName}{% if non-KOMA class
\IfFileExists{parskip.sty}{%
\usepackage{parskip}
}{% else
\setlength{\parindent}{0pt}
\setlength{\parskip}{6pt plus 2pt minus 1pt}}
}{% if KOMA class
\KOMAoptions{parskip=half}}
\makeatother
$endif$
$if(beamer)$
$else$
$if(block-headings)$
% Make \paragraph and \subparagraph free-standing
\makeatletter
\ifx\paragraph\undefined\else
\let\oldparagraph\paragraph
\renewcommand{\paragraph}{
\@ifstar
\xxxParagraphStar
\xxxParagraphNoStar
}
\newcommand{\xxxParagraphStar}[1]{\oldparagraph*{#1}\mbox{}}
\newcommand{\xxxParagraphNoStar}[1]{\oldparagraph{#1}\mbox{}}
\fi
\ifx\subparagraph\undefined\else
\let\oldsubparagraph\subparagraph
\renewcommand{\subparagraph}{
\@ifstar
\xxxSubParagraphStar
\xxxSubParagraphNoStar
}
\newcommand{\xxxSubParagraphStar}[1]{\oldsubparagraph*{#1}\mbox{}}
\newcommand{\xxxSubParagraphNoStar}[1]{\oldsubparagraph{#1}\mbox{}}
\fi
\makeatother
$endif$
$endif$
$--
$-- verbatim in notes
$--
$if(verbatim-in-note)$
\usepackage{fancyvrb}
$endif$
$-- highlighting
$if(listings)$
\usepackage{listings}
\newcommand{\passthrough}[1]{#1}
\lstset{defaultdialect=[5.3]Lua}
\lstset{defaultdialect=[x86masm]Assembler}
$endif$
$if(listings-no-page-break)$
\usepackage{etoolbox}
\BeforeBeginEnvironment{lstlisting}{\par\noindent\begin{minipage}{\linewidth}}
\AfterEndEnvironment{lstlisting}{\end{minipage}\par\addvspace{\topskip}}
$endif$
$if(lhs)$
\lstnewenvironment{code}{\lstset{language=Haskell,basicstyle=\small\ttfamily}}{}
$endif$
$if(highlighting-macros)$
$highlighting-macros$
% Workaround/bugfix from jannick0.
% See https://github.com/jgm/pandoc/issues/4302#issuecomment-360669013)
% or https://github.com/Wandmalfarbe/pandoc-latex-template/issues/2
%
% Redefine the verbatim environment 'Highlighting' to break long lines (with
% the help of fvextra). Redefinition is necessary because it is unlikely that
% pandoc includes fvextra in the default template.
\usepackage{fvextra}
\DefineVerbatimEnvironment{Highlighting}{Verbatim}{breaklines,fontsize=$if(code-block-font-size)$$code-block-font-size$$else$\small$endif$,commandchars=\\\{\}}
$endif$
$--
$-- tables
$--
$if(tables)$
\usepackage{longtable,booktabs,array}
$if(multirow)$
\usepackage{multirow}
$endif$
\usepackage{calc} % for calculating minipage widths
$if(beamer)$
\usepackage{caption}
% Make caption package work with longtable
\makeatletter
\def\fnum@table{\tablename~\thetable}
\makeatother
$else$
% Correct order of tables after \paragraph or \subparagraph
\usepackage{etoolbox}
\makeatletter
\patchcmd\longtable{\par}{\if@noskipsec\mbox{}\fi\par}{}{}
\makeatother
% Allow footnotes in longtable head/foot
\IfFileExists{footnotehyper.sty}{\usepackage{footnotehyper}}{\usepackage{footnote}}
\makesavenoteenv{longtable}
$endif$
$endif$
$--
$-- graphics
$--
$if(graphics)$
\usepackage{graphicx}
\makeatletter
\newsavebox\pandoc@box
\newcommand*\pandocbounded[1]{% scales image to fit in text height/width
\sbox\pandoc@box{#1}%
\Gscale@div\@tempa{\textheight}{\dimexpr\ht\pandoc@box+\dp\pandoc@box\relax}%
\Gscale@div\@tempb{\linewidth}{\wd\pandoc@box}%
\ifdim\@tempb\p@<\@tempa\p@\let\@tempa\@tempb\fi% select the smaller of both
\ifdim\@tempa\p@<\p@\scalebox{\@tempa}{\usebox\pandoc@box}%
\else\usebox{\pandoc@box}%
\fi%
}
% Set default figure placement to htbp
% Make use of float-package and set default placement for figures to H.
% The option H means 'PUT IT HERE' (as opposed to the standard h option which means 'You may put it here if you like').
\usepackage{float}
\floatplacement{figure}{$if(float-placement-figure)$$float-placement-figure$$else$H$endif$}
\makeatother
$endif$
$if(svg)$
\usepackage{svg}
$endif$
$--
$-- strikeout/underline
$--
$if(strikeout)$
\ifLuaTeX
\usepackage{luacolor}
\usepackage[soul]{lua-ul}
\else
\usepackage{soul}
$if(beamer)$
\makeatletter
\let\HL\hl
\renewcommand\hl{% fix for beamer highlighting
\let\set@color\beamerorig@set@color
\let\reset@color\beamerorig@reset@color
\HL}
\makeatother
$endif$
$if(CJKmainfont)$
\ifXeTeX
% soul's \st doesn't work for CJK:
\usepackage{xeCJKfntef}
\renewcommand{\st}[1]{\sout{#1}}
\fi
$endif$
\fi
$endif$
$--
$-- CSL citations
$--
$if(csl-refs)$
% definitions for citeproc citations
\NewDocumentCommand\citeproctext{}{}
\NewDocumentCommand\citeproc{mm}{%
\begingroup\def\citeproctext{#2}\cite{#1}\endgroup}
\makeatletter
% allow citations to break across lines
\let\@cite@ofmt\@firstofone
% avoid brackets around text for \cite:
\def\@biblabel#1{}
\def\@cite#1#2{{#1\if@tempswa , #2\fi}}
\makeatother
\newlength{\cslhangindent}
\setlength{\cslhangindent}{1.5em}
\newlength{\csllabelwidth}
\setlength{\csllabelwidth}{3em}
\newenvironment{CSLReferences}[2] % #1 hanging-indent, #2 entry-spacing
{\begin{list}{}{%
\setlength{\itemindent}{0pt}
\setlength{\leftmargin}{0pt}
\setlength{\parsep}{0pt}
% turn on hanging indent if param 1 is 1
\ifodd #1
\setlength{\leftmargin}{\cslhangindent}
\setlength{\itemindent}{-1\cslhangindent}
\fi
% set entry spacing
\setlength{\itemsep}{#2\baselineskip}}}
{\end{list}}
\usepackage{calc}
\newcommand{\CSLBlock}[1]{\hfill\break\parbox[t]{\linewidth}{\strut\ignorespaces#1\strut}}
\newcommand{\CSLLeftMargin}[1]{\parbox[t]{\csllabelwidth}{\strut#1\strut}}
\newcommand{\CSLRightInline}[1]{\parbox[t]{\linewidth - \csllabelwidth}{\strut#1\strut}}
\newcommand{\CSLIndent}[1]{\hspace{\cslhangindent}#1}
$endif$
$--
$-- Babel language support
$--
$if(lang)$
\ifLuaTeX
\usepackage[bidi=basic]{babel}
\else
\usepackage[bidi=default]{babel}
\fi
$if(babel-lang)$
\babelprovide[main,import]{$babel-lang$}
$if(mainfont)$
\ifPDFTeX
\else
\babelfont{rm}[$for(mainfontoptions)$$mainfontoptions$$sep$,$endfor$$if(mainfontfallback)$,RawFeature={fallback=mainfontfallback}$endif$]{$mainfont$}
\fi
$endif$
$endif$
$for(babel-otherlangs)$
\babelprovide[import]{$babel-otherlangs$}
$endfor$
$for(babelfonts/pairs)$
\babelfont[$babelfonts.key$]{rm}{$babelfonts.value$}
$endfor$
% get rid of language-specific shorthands (see #6817):
\let\LanguageShortHands\languageshorthands
\def\languageshorthands#1{}
$if(selnolig-langs)$
\ifLuaTeX
\usepackage[$for(selnolig-langs)$$it$$sep$,$endfor$]{selnolig} % disable illegal ligatures
\fi
$endif$
$endif$
$--
$-- pagestyle
$--
$if(pagestyle)$
\pagestyle{$pagestyle$}
$endif$
$--
$-- prevent overfull lines
$--
\setlength{\emergencystretch}{3em} % prevent overfull lines
$--
$-- tight lists
$--
\providecommand{\tightlist}{%
\setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
$--
$-- subfigure support
$--
$if(subfigure)$
\usepackage{subcaption}
$endif$
$--
$-- text direction support for pdftex
$--
$if(dir)$
\ifPDFTeX
\TeXXeTstate=1
\newcommand{\RL}[1]{\beginR #1\endR}
\newcommand{\LR}[1]{\beginL #1\endL}
\newenvironment{RTL}{\beginR}{\endR}
\newenvironment{LTR}{\beginL}{\endL}
\fi
$endif$
$--
$-- bibliography support support for natbib and biblatex
$--
$if(natbib)$
\usepackage[$natbiboptions$]{natbib}
\bibliographystyle{$if(biblio-style)$$biblio-style$$else$plainnat$endif$}
$endif$
$if(biblatex)$
\usepackage[$if(biblio-style)$style=$biblio-style$,$endif$$for(biblatexoptions)$$biblatexoptions$$sep$,$endfor$]{biblatex}
$for(bibliography)$
\addbibresource{$bibliography$}
$endfor$
$endif$
$--
$-- csquotes
$--
$if(csquotes)$
\usepackage{csquotes}
$endif$
$for(header-includes)$
$header-includes$
$endfor$
\usepackage{bookmark}
\IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available
\urlstyle{$if(urlstyle)$$urlstyle$$else$same$endif$}
$if(links-as-notes)$
% Make links footnotes instead of hotlinks:
\DeclareRobustCommand{\href}[2]{#2\footnote{\url{#1}}}
$endif$
$if(verbatim-in-note)$
\VerbatimFootnotes % allow verbatim text in footnotes
$endif$
\definecolor{default-linkcolor}{HTML}{A50000}
\definecolor{default-filecolor}{HTML}{A50000}
\definecolor{default-citecolor}{HTML}{4077C0}
\definecolor{default-urlcolor}{HTML}{4077C0}
\hypersetup{
$if(title-meta)$
pdftitle={$title-meta$},
$endif$
$if(author-meta)$
pdfauthor={$author-meta$},
$endif$
$if(lang)$
pdflang={$lang$},
$endif$
$if(subject)$
pdfsubject={$subject$},
$endif$
$if(keywords)$
pdfkeywords={$for(keywords)$$keywords$$sep$, $endfor$},
$endif$
$if(colorlinks)$
colorlinks=true,
linkcolor={$if(linkcolor)$$linkcolor$$else$default-linkcolor$endif$},
filecolor={$if(filecolor)$$filecolor$$else$default-filecolor$endif$},
citecolor={$if(citecolor)$$citecolor$$else$default-citecolor$endif$},
urlcolor={$if(urlcolor)$$urlcolor$$else$default-urlcolor$endif$},
$else$
$if(boxlinks)$
$else$
hidelinks,
$endif$
$endif$
breaklinks=true,
pdfcreator={LaTeX via pandoc with the Eisvogel template}}
$if(title)$
\title{$title$$if(thanks)$\thanks{$thanks$}$endif$}
$endif$
$if(subtitle)$
\usepackage{etoolbox}
\makeatletter
\providecommand{\subtitle}[1]{% add subtitle to \maketitle
\apptocmd{\@title}{\par {\large #1 \par}}{}{}
}
\makeatother
\subtitle{$subtitle$}
$endif$
\author{$for(author)$$author$$sep$ \and $endfor$}
\date{$date$}
$if(page-background)$
\usepackage[pages=all]{background}
$endif$
%
% for the background color of the title page
%
$if(titlepage)$
\usepackage{pagecolor}
\usepackage{afterpage}
$if(titlepage-background)$
\usepackage{tikz}
$endif$
$if(geometry)$
$else$
\usepackage[margin=2.5cm,includehead=true,includefoot=true,centering]{geometry}
$endif$
$endif$
%
% break urls
%
\PassOptionsToPackage{hyphens}{url}
%
% When using babel or polyglossia with biblatex, loading csquotes is recommended
% to ensure that quoted texts are typeset according to the rules of your main language.
%
\usepackage{csquotes}
%
% captions
%
\definecolor{caption-color}{HTML}{777777}
\usepackage[font={stretch=1.2}, textfont={color=caption-color}, position=top, skip=4mm, labelfont=bf, singlelinecheck=false, justification=$if(caption-justification)$$caption-justification$$else$raggedright$endif$]{caption}
\setcapindent{0em}
%
% blockquote
%
\definecolor{blockquote-border}{RGB}{221,221,221}
\definecolor{blockquote-text}{RGB}{119,119,119}
\usepackage{mdframed}
\newmdenv[rightline=false,bottomline=false,topline=false,linewidth=3pt,linecolor=blockquote-border,skipabove=\parskip]{customblockquote}
\renewenvironment{quote}{\begin{customblockquote}\list{}{\rightmargin=0em\leftmargin=0em}%
\item\relax\color{blockquote-text}\ignorespaces}{\unskip\unskip\endlist\end{customblockquote}}
%
% Source Sans Pro as the default font family
% Source Code Pro for monospace text
%
% 'default' option sets the default
% font family to Source Sans Pro, not \sfdefault.
%
\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex
$if(fontfamily)$
$else$
\usepackage[default]{sourcesanspro}
\usepackage{sourcecodepro}
$endif$
\else % if not pdftex
$if(mainfont)$
$else$
\usepackage[default]{sourcesanspro}
\usepackage{sourcecodepro}
% XeLaTeX specific adjustments for straight quotes: https://tex.stackexchange.com/a/354887
% This issue is already fixed (see https://github.com/silkeh/latex-sourcecodepro/pull/5) but the
% fix is still unreleased.
% TODO: Remove this workaround when the new version of sourcecodepro is released on CTAN.
\ifxetex
\makeatletter
\defaultfontfeatures[\ttfamily]
{ Numbers = \sourcecodepro@figurestyle,
Scale = \SourceCodePro@scale,
Extension = .otf }
\setmonofont
[ UprightFont = *-\sourcecodepro@regstyle,
ItalicFont = *-\sourcecodepro@regstyle It,
BoldFont = *-\sourcecodepro@boldstyle,
BoldItalicFont = *-\sourcecodepro@boldstyle It ]
{SourceCodePro}
\makeatother
\fi
$endif$
\fi
%
% heading color
%
\definecolor{heading-color}{RGB}{40,40,40}
\addtokomafont{section}{\color{heading-color}}
% When using the classes report, scrreprt, book,
% scrbook or memoir, uncomment the following line.
%\addtokomafont{chapter}{\color{heading-color}}
%
% variables for title, author and date
%
\usepackage{titling}
\title{$title$}
\author{$for(author)$$author$$sep$, $endfor$}
\date{$date$}
%
% tables
%
$if(tables)$
\definecolor{table-row-color}{HTML}{F5F5F5}
\definecolor{table-rule-color}{HTML}{999999}
%\arrayrulecolor{black!40}
\arrayrulecolor{table-rule-color} % color of \toprule, \midrule, \bottomrule
\setlength\heavyrulewidth{0.3ex} % thickness of \toprule, \bottomrule
\renewcommand{\arraystretch}{1.3} % spacing (padding)
$if(table-use-row-colors)$
% Unfortunately the colored cells extend beyond the edge of the
% table because pandoc uses @-expressions (@{}) like so:
%
% \begin{longtable}[]{@{}ll@{}}
% \end{longtable}
%
% https://en.wikibooks.org/wiki/LaTeX/Tables#.40-expressions
\usepackage{etoolbox}
\AtBeginEnvironment{longtable}{\rowcolors{2}{}{table-row-color!100}}
\preto{\toprule}{\hiderowcolors}{}{}
\appto{\endhead}{\showrowcolors}{}{}
\appto{\endfirsthead}{\showrowcolors}{}{}
$endif$
$endif$
%
% remove paragraph indentation
%
\setlength{\parindent}{0pt}
\setlength{\parskip}{6pt plus 2pt minus 1pt}
\setlength{\emergencystretch}{3em} % prevent overfull lines
%
%
% Listings
%
%
$if(listings)$
%
% general listing colors
%
\definecolor{listing-background}{HTML}{F7F7F7}
\definecolor{listing-rule}{HTML}{B3B2B3}
\definecolor{listing-numbers}{HTML}{B3B2B3}
\definecolor{listing-text-color}{HTML}{000000}
\definecolor{listing-keyword}{HTML}{435489}
\definecolor{listing-keyword-2}{HTML}{1284CA} % additional keywords
\definecolor{listing-keyword-3}{HTML}{9137CB} % additional keywords
\definecolor{listing-identifier}{HTML}{435489}
\definecolor{listing-string}{HTML}{00999A}
\definecolor{listing-comment}{HTML}{8E8E8E}
\lstdefinestyle{eisvogel_listing_style}{
language = java,
$if(listings-disable-line-numbers)$
xleftmargin = 0.6em,
framexleftmargin = 0.4em,
$else$
numbers = left,
xleftmargin = 2.7em,
framexleftmargin = 2.5em,
$endif$
backgroundcolor = \color{listing-background},
basicstyle = \color{listing-text-color}\linespread{1.0}%
\lst@ifdisplaystyle%
$if(code-block-font-size)$$code-block-font-size$$else$\small$endif$%
\fi\ttfamily{},
breaklines = true,
frame = single,
framesep = 0.19em,
rulecolor = \color{listing-rule},
frameround = ffff,
tabsize = 4,
numberstyle = \color{listing-numbers},
aboveskip = 1.0em,
belowskip = 0.1em,
abovecaptionskip = 0em,
belowcaptionskip = 1.0em,
keywordstyle = {\color{listing-keyword}\bfseries},
keywordstyle = {[2]\color{listing-keyword-2}\bfseries},
keywordstyle = {[3]\color{listing-keyword-3}\bfseries\itshape},
sensitive = true,
identifierstyle = \color{listing-identifier},
commentstyle = \color{listing-comment},
stringstyle = \color{listing-string},
showstringspaces = false,
escapeinside = {/*@}{@*/}, % Allow LaTeX inside these special comments
literate =
{á}{{\'a}}1 {é}{{\'e}}1 {í}{{\'i}}1 {ó}{{\'o}}1 {ú}{{\'u}}1
{Á}{{\'A}}1 {É}{{\'E}}1 {Í}{{\'I}}1 {Ó}{{\'O}}1 {Ú}{{\'U}}1
{à}{{\`a}}1 {è}{{\`e}}1 {ì}{{\`i}}1 {ò}{{\`o}}1 {ù}{{\`u}}1
{À}{{\`A}}1 {È}{{\`E}}1 {Ì}{{\`I}}1 {Ò}{{\`O}}1 {Ù}{{\`U}}1
{ä}{{\"a}}1 {ë}{{\"e}}1 {ï}{{\"i}}1 {ö}{{\"o}}1 {ü}{{\"u}}1
{Ä}{{\"A}}1 {Ë}{{\"E}}1 {Ï}{{\"I}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1
{â}{{\^a}}1 {ê}{{\^e}}1 {î}{{\^i}}1 {ô}{{\^o}}1 {û}{{\^u}}1
{Â}{{\^A}}1 {Ê}{{\^E}}1 {Î}{{\^I}}1 {Ô}{{\^O}}1 {Û}{{\^U}}1
{œ}{{\oe}}1 {Œ}{{\OE}}1 {æ}{{\ae}}1 {Æ}{{\AE}}1 {ß}{{\ss}}1
{ç}{{\c c}}1 {Ç}{{\c C}}1 {ø}{{\o}}1 {å}{{\r a}}1 {Å}{{\r A}}1
{€}{{\EUR}}1 {£}{{\pounds}}1 {«}{{\guillemotleft}}1
{»}{{\guillemotright}}1 {ñ}{{\~n}}1 {Ñ}{{\~N}}1 {¿}{{?`}}1
{…}{{\ldots}}1 {≥}{{>=}}1 {≤}{{<=}}1 {„}{{\glqq}}1 {“}{{\grqq}}1
{”}{{''}}1
}
\lstset{style=eisvogel_listing_style}
%
% Java (Java SE 12, 2019-06-22)
%
\lstdefinelanguage{Java}{
morekeywords={
% normal keywords (without data types)
abstract,assert,break,case,catch,class,continue,default,
do,else,enum,exports,extends,final,finally,for,if,implements,
import,instanceof,interface,module,native,new,package,private,
protected,public,requires,return,static,strictfp,super,switch,
synchronized,this,throw,throws,transient,try,volatile,while,
% var is an identifier
var
},
morekeywords={[2] % data types
% primitive data types
boolean,byte,char,double,float,int,long,short,
% String
String,
% primitive wrapper types
Boolean,Byte,Character,Double,Float,Integer,Long,Short
% number types
Number,AtomicInteger,AtomicLong,BigDecimal,BigInteger,DoubleAccumulator,DoubleAdder,LongAccumulator,LongAdder,Short,
% other
Object,Void,void
},
morekeywords={[3] % literals
% reserved words for literal values
null,true,false,
},
sensitive,
morecomment = [l]//,
morecomment = [s]{/*}{*/},
morecomment = [s]{/**}{*/},
morestring = [b]",
morestring = [b]',
}
\lstdefinelanguage{XML}{
morestring = [b]",
moredelim = [s][\bfseries\color{listing-keyword}]{<}{\ },
moredelim = [s][\bfseries\color{listing-keyword}]{</}{>},
moredelim = [l][\bfseries\color{listing-keyword}]{/>},
moredelim = [l][\bfseries\color{listing-keyword}]{>},
morecomment = [s]{<?}{?>},
morecomment = [s]{<!--}{-->},
commentstyle = \color{listing-comment},
stringstyle = \color{listing-string},
identifierstyle = \color{listing-identifier}
}
$endif$
%
% header and footer
%
$if(disable-header-and-footer)$
$else$
\usepackage[headsepline,footsepline]{scrlayer-scrpage}
\newpairofpagestyles{eisvogel-header-footer}{
\clearpairofpagestyles
\ihead*{$if(header-left)$$header-left$$else$$title$$endif$}
\chead*{$if(header-center)$$header-center$$else$$endif$}
\ohead*{$if(header-right)$$header-right$$else$$date$$endif$}
\ifoot*{$if(footer-left)$$footer-left$$else$$for(author)$$author$$sep$, $endfor$$endif$}
\cfoot*{$if(footer-center)$$footer-center$$else$$endif$}
\ofoot*{$if(footer-right)$$footer-right$$else$\thepage$endif$}
\addtokomafont{pageheadfoot}{\upshape}
}
\pagestyle{eisvogel-header-footer}
$if(book)$
\deftripstyle{ChapterStyle}{}{}{}{}{\pagemark}{}
\renewcommand*{\chapterpagestyle}{ChapterStyle}
$endif$
$if(page-background)$
\backgroundsetup{
scale=1,
color=black,
opacity=$if(page-background-opacity)$$page-background-opacity$$else$0.2$endif$,
angle=0,
contents={%
\includegraphics[width=\paperwidth,height=\paperheight]{$page-background$}
}%
}
$endif$
$endif$
\begin{document}
$if(titlepage)$
\begin{titlepage}
$if(titlepage-background)$
\newgeometry{top=2cm, right=4cm, bottom=3cm, left=4cm}
$else$
\newgeometry{left=6cm}
$endif$
$if(titlepage-color)$
\definecolor{titlepage-color}{HTML}{$titlepage-color$}
\newpagecolor{titlepage-color}\afterpage{\restorepagecolor}
$endif$
$if(titlepage-background)$
\tikz[remember picture,overlay] \node[inner sep=0pt] at (current page.center){\includegraphics[width=\paperwidth,height=\paperheight]{$titlepage-background$}};
$endif$
\newcommand{\colorRule}[3][black]{\textcolor[HTML]{#1}{\rule{#2}{#3}}}
\begin{flushleft}
\noindent
\\[-1em]
\color[HTML]{$if(titlepage-text-color)$$titlepage-text-color$$else$5F5F5F$endif$}
\makebox[0pt][l]{\colorRule[$if(titlepage-rule-color)$$titlepage-rule-color$$else$435488$endif$]{1.3\textwidth}{$if(titlepage-rule-height)$$titlepage-rule-height$$else$4$endif$pt}}
\par
\noindent
$if(titlepage-background)$
% The titlepage with a background image has other text spacing and text size
{
\setstretch{2}
\vfill
\vskip -8em
\noindent {\huge \textbf{\textsf{$title$}}}
$if(subtitle)$
\vskip 1em
{\Large \textsf{$subtitle$}}
$endif$
\vskip 2em
\noindent {\Large \textsf{$for(author)$$author$$sep$, $endfor$} \vskip 0.6em \textsf{$date$}}
\vfill
}
$else$
{
\setstretch{1.4}
\vfill
\noindent {\huge \textbf{\textsf{$title$}}}
$if(subtitle)$
\vskip 1em
{\Large \textsf{$subtitle$}}
$endif$
\vskip 2em
\noindent {\Large \textsf{$for(author)$$author$$sep$, $endfor$}}
\vfill
}
$endif$
$if(titlepage-logo)$
\noindent
\includegraphics[width=$if(logo-width)$$logo-width$$else$35mm$endif$, left]{$titlepage-logo$}
$endif$
$if(titlepage-background)$
$else$
\textsf{$date$}
$endif$
\end{flushleft}
\end{titlepage}
\restoregeometry
\pagenumbering{arabic}
$endif$
$if(has-frontmatter)$
\frontmatter
$endif$
$if(title)$
% don't generate the default title
% \maketitle
$if(abstract)$
\begin{abstract}
$abstract$
\end{abstract}
$endif$
$endif$
$if(first-chapter)$
\setcounter{chapter}{$first-chapter$}
\addtocounter{chapter}{-1}
$endif$
$for(include-before)$
$include-before$
$endfor$
$if(toc)$
$if(toc-title)$
\renewcommand*\contentsname{$toc-title$}
$endif$
{
$if(colorlinks)$
\hypersetup{linkcolor=$if(toccolor)$$toccolor$$else$$endif$}
$endif$
\setcounter{tocdepth}{$toc-depth$}
\tableofcontents
$if(toc-own-page)$
\newpage
$endif$
}
$endif$
$if(lof)$
\listoffigures
$endif$
$if(lot)$
\listoftables
$endif$
$if(linestretch)$
\setstretch{$linestretch$}
$endif$
$if(has-frontmatter)$
\mainmatter
$endif$
$body$
$if(has-frontmatter)$
\backmatter
$endif$
$if(nocite-ids)$
\nocite{$for(nocite-ids)$$it$$sep$, $endfor$}
$endif$
$if(natbib)$
$if(bibliography)$
$if(biblio-title)$
$if(has-chapters)$
\renewcommand\bibname{$biblio-title$}
$else$
\renewcommand\refname{$biblio-title$}
$endif$
$endif$
\bibliography{$for(bibliography)$$bibliography$$sep$,$endfor$}
$endif$
$endif$
$if(biblatex)$
\printbibliography$if(biblio-title)$[title=$biblio-title$]$endif$
$endif$
$for(include-after)$
$include-after$
$endfor$
\end{document}