policopié: améliore le policopié après le cours

- Ignore certains fichiers temporaires (html) et les générations en PDF.
- Documnente les règles CSS les moins évidentes ou celles pour lesquels
  des points d'attention sont nécessaires.
- Ajoute des règles pour éviter que les exemples de codes ou les figures
  ne soient séparées sur deux pages.
- Supprime la tables des matières manuelle dans la source au format
  markdown et ajoute des règles CSS pour mettre en forme la table des
  matières générée par pandoc, avec une numérotation des chapitres.
- Adapte la documentation pour l'utilisation de ce projet, afin qu'elle
  soit plus en accord avec ce qui est réellement possible.

Co-Authored-by: iGor milhit <igor@milhit.ch>
dev v0.2.1
iGor milhit 2024-03-07 14:59:42 +01:00
parent 5df1cb0edf
commit 237604241d
Signed by: igor
GPG Key ID: 5785C84B21C88AE6
8 changed files with 105 additions and 136 deletions

3
.gitignore vendored
View File

@ -1,5 +1,6 @@
*.pdf
*.html
policopié.html
test.html
# Created by https://www.toptal.com/developers/gitignore/api/latex
# Edit at https://www.toptal.com/developers/gitignore?templates=latex

3
.gitmodules vendored
View File

@ -1,3 +0,0 @@
[submodule "reveal.js"]
path = reveal.js
url = https://github.com/hakimel/reveal.js.git

179
README.md
View File

@ -5,44 +5,83 @@ id: 20230321102247
tags: [README, documentation, latex, rdv-info]
---
## [Citation et bibliographie avec LaTeX][projet]
## [Citation et bibliographie avec LaTeX][1]
Ce répertoire contient les sources pour le *Rendez-vous de l'info* sur les
citations et les références bibliographiques avec LaTeX. Il contient:
- La source en markdown pour le support de cours.
- Des exemples de fichiers `.tex`.
- Un export de collection Zotero au format biblatex.
- La source en markdown pour le support de cours (`sources/policopié/`).
- Des exemples de fichiers `.tex` (`exercice/exercice.tex`).
- Un export de collection Zotero au format biblatex
(`exercice/references-exercices.bib`).
Le support de cours au format PDF ainsi que les fichiers d'exercice peuvent
être téléchargés dans [les publications de version][latest].
être téléchargés dans [les publications de version][2].
[latest]: https://git.milhit.ch/igor/biblatex-zotero/releases/latest
## Pour démarrer
## Prérequis
Pour pouvoir utiliser ce projet, il est nécessaire:
1. De cloner le projet: \
`git clone https://git.milhit.ch/igor/biblatex-zotero.git`
1. D'activer le module pour `reveal.js` pour la présentation au format HTML:
```bash
git submodule init
git submodule update
```
1. Pour générer les différents fichiers, deux outils sont nécessaire:
1. `pandoc`. Pour installer `pandoc`, voir [la
documentation][pandoc-install].
1. Une distribution \LaTeX. Une possibilité est de consulter le site web
[*The \LaTeX project*][latex-project] qui décline les méthodes les plus
habituelles pour les principaux systèmes d'exploitation. **Pour ma part,
je recommande l'usage de `tectonic` qui est un binaire à installer**:
voir comment [installer tectonic][tectonic-install].
1. Pour générer les différents fichiers, les outils suivants sont nécessaires:
1. Soit `pagedjs`. Pour installer `pagedjs` : \
`npm install -g puppeteer pagedjs pagedjs-cli`.
1. Soit `pandoc` et LaTex. Pour installer `pandoc`, voir [la
documentation][3]. Pour la distribution LaTeX, une possibilité est de
consulter le site web [*The LaTeX project*][4] qui décline les méthodes
les plus habituelles pour les principaux systèmes d'exploitation. **Pour
ma part, je recommande l'usage de `tectonic` qui est un binaire à
installer**: voir comment [installer tectonic][5].
## Convertir le support de cours en PDF
### Avec `paged.js`
Avec cet outil, il est possible de définir les styles des éléments dans le PDF
au moyen de règles CSS (voir [paged.js][6]). Dans le dossier
`sources/polycopié/` se trouvent un `template.html` utilisé par `pandoc` pour
produire un fichier HTML avec les classes et les identifiants désirés. Le
fichier `polycopié.css` contient pour sa part la mise en forme permettant
d'obtenir un fichier suivant en bonne partie la charte de l'UNIGE.
Pour pouvoir utiliser `pagedjs`, il faut avoir installé sur sa machine les
paquets `npm` suivants:
```bash
npm install -g puppeteer pagedjs pagedjs-cli
```
<!--
Puis, on peut produire directement un PDF (**ne fonctionne pas bien**):
```bash
pandoc --standalone --embed-resource --citeproc \
--to pdf --pdf-engine=pagedjs-cli \
--css=source/polycopié/polycopié.css \
--output=public/polycopié.pdf source/polycopié/polycopié.md
```
-->
Pour obtenir un fichier HTML, qui peut être ensuite imprimé au format PDF:
```bash
cd sources/polycopié/
pandoc --citeproc --to=html \
--template=template.html --css=polycopié.css \
--output=polycopié.html polycopié.md
```
Puis, lancer un server web local depuis la racine du projet, par exemple avec
`python -m http.server` et charger le fichier `polycopié.html` dans un
navigateur web, de préférence Chromium (ou Google Chrome), car la gestion des
liens est mieux supportée.
### Avec LaTeX
L'usage de LaTeX suppose une distribution LaTeX. Le résultat obtenu n'est pas
adapté à la charte de l'UNIGE.
Pour convertir le support de cours (`polycopié.md`) au format PDF, il faut
utiliser la commande suivante:
@ -59,44 +98,11 @@ pandoc --citeproc --to=pdf --pdf-engine=tectonic \
installé.
- `--output=` spécifie le chemin et le nom du fichier généré.
### Avec `paged.js`
## [Déroulé de la présentation][7]
Avec cet outil, il est possible de définir les styles des éléments dans le PDF
au moyen de règles CSS (voir [paged.js][pagedjs]). Pour pouvoir l'utiliser, il
faut avoir installé sur sa machine les paquets `npm` suivants:
```bash
npm install -g puppeteer pagedjs pagedjs-cli
```
Puis, on peut soit produire directement un PDF:
```bash
pandoc --standalone --embed-resource --citeproc \
--to pdf --pdf-engine=pagedjs-cli \
--css=source/polycopié/polycopié.css \
--output=public/polycopié.pdf source/polycopié/polycopié.md
```
Pour obtenir un fichier HTML, qui peut être ensuite imprimé au format PDF:
```bash
cd sources/polycopié/
pandoc --citeproc --to=html \
--template=template.html --css=polycopié.css \
--output=polycopié.html polycopié.md
```
Puis, lancer un server web local, par exemple avec `python -m http.server` et
charger le fichier `polycopié.html` dans un navigateur web.
[pagedjs]: https://pagedjs.org/
## Déroulé de la présentation
Le fichier `déroulé.md` décrit le déroulé de la présentation. Si une impression
est nécessaire, on peut soit utiliser le rendu HTML d'un éditeur, soit le
convertir au format désiré puis l'imprimer.
Le fichier `déroulé.md` décrit le [déroulé de la présentation][7]. Si une
impression est nécessaire, on peut soit utiliser le rendu HTML d'un éditeur,
soit le convertir au format désiré puis l'imprimer.
Pour le HTML:
@ -110,52 +116,11 @@ Pour le PDF:
pandoc -t pdf --pdf-engine=tectonic -o déroulé.pdf déroulé.md
```
## Support de présentation
⚠ Il n'y a pas encore de support de présentation. Le fichier est là à titre
d'essai pour l'instant.
### Convertir la présentation au format PDF
Pour obtenir la présentation au format PDF, il faut utiliser la commande
suivante:
```bash
pandoc -t beamer -V theme=AnnArbor \
-V colortheme=sidebartab presentation.md -o presentation.pdf
```
- `-t beamer` définit le format de présentation beamer.
- `-V theme=Hannover` permet de passer en variable (`-V`) le theme beamer
désiré.
- `-V colortheme=sidebartab` définit le thème de couleur.
Une galerie des thèmes et des thèmes de couleurs est disponible en ligne:
<https://deic.uab.cat/~iblanes/beamer_gallery/>.
Il peut être nécessaire de définir l'installation de \LaTeX, par exemple
pour `tectonic`:
```bash
pandoc -t beamer -V theme=AnnArbor -V colortheme=sidebartab \
--pdf-engine=tectonic presentation.md -o presentation.pdf
```
### Pour convertir la présentation au format HTML (`reveal.js`)
Il faut s'assurer que `pandoc` soit installé et que le submodule `reveal.js`
soit bien activé. Puis, il suffit de taper la commande suivante:
```bash
pandoc -t revealjs --self-contained -o presentation.html presentation.md
```
- `-t revealjs` définit le format de présentation `reveal.js`.
- `--self-contained` assure que tous les fichiers nécessaires à la présentation
seront bien contenu dans un seul fichier HTML.
[projet]: ./
[pandoc-install]: https://pandoc.org/installing.html
[latex-project]: https://www.latex-project.org/get/
[tectonic-install]: https://tectonic-typesetting.github.io/en-US/install.html
<!-- références -->
[1]: ./
[2]: https://git.milhit.ch/igor/biblatex-zotero/releases/latest
[3]: https://pandoc.org/installing.html
[4]: https://www.latex-project.org/get/
[5]: https://tectonic-typesetting.github.io/en-US/install.html
[6]: https://pagedjs.org/
[7]: ./déroulé.md

View File

@ -9,6 +9,7 @@
% \setdefaultlanguage{french}
% URL and link management. Mandatory for Vancouver
% Management of the French language with PdfLaTeX
\usepackage[utf8]{inputenc}
\usepackage[french]{babel}
\usepackage{hyperref}
% Améliore le rendu des guillemets selon la langue, conseillé avec polyglossia

@ -1 +0,0 @@
Subproject commit 724c4fee274914dd2d997b7584cf603c44e96c72

View File

@ -1,15 +1,18 @@
@media print {
body {
font-family: TheSans, "Open Sans", Arial, Helvetica, sans-serif;
counter-reset: figureNumber;
/* Définit les deux variable de compteur nécessaires */
counter-reset: figureNumber toc;
}
/* Définit que string(date) contient la date */
/* Définit que string(date) contient la date indiquée dans le frontmatter
* de la source markdown */
.date {
string-set: date content(text)
}
@page {
size: A4;
margin: 25mm 0;
margin-top: 25mm;
margin-bottom: 25mm;
bleed: 6mm;
@bottom-center {
content: counter(page)
@ -38,6 +41,8 @@
content: string(date);
}
}
/* Attention, il faut adapter au nombre effectif de pages! *
* Cette règle n'affiche pas de numré de page à la dernière page */
@page:nth(11) {
@bottom-center {
content: none;
@ -47,8 +52,8 @@
color: #d80669;
text-decoration: underline;
}
/* Ajouter ou supprimer les ID de titre pour un saut de page */
#principes-généraux,
#utilisation-de-biblatex,
#bibliographie,
.footnotes {
break-before: page;
@ -72,6 +77,7 @@
border-radius: .5em;
margin: 1em;
padding: .5em 1em;
break-inside: avoid;
}
code {
font-family:'Courier New', Courier, monospace;
@ -95,6 +101,7 @@
border: 2px solid #d80669;
border-radius: .5em;
padding: .5em;
break-inside: avoid;
}
figure img {
max-width: 85%;
@ -127,4 +134,21 @@
max-width: 50%;
padding: .5em;
}
/* Les 3 règles suivantes mettent en forme la table des matières:*
* Suppression des liste à puce et numérotation des chapitres. */
#TOC ul {
list-style-type: none;
padding-left: 0;
}
#TOC li {
counter-increment: toc;
}
#TOC li::before {
content: counter(toc) ". ";
}
#TOC a::after {
content: target-counter(attr(href url), page);
position: absolute;
right: 0;
}
}

View File

@ -13,22 +13,6 @@ nocite: '@*'
link-citations: true
---
## Table des matières
1. [Objectifs][toc0].
1. [Principes généraux][toc1].
1. [Structure d'une référence dans un fichier `.bib`][toc2].
1. [Créer un fichier .bib via Zotero][toc3].
1. [Utilisation de BibLaTeX][toc6].
1. [Bibliographie][toc7].
[toc0]: #objectifs
[toc1]: #principes-généraux
[toc2]: #structure-dune-référence-dans-un-fichier-.bib
[toc3]: #créer-un-fichier-.bib-via-zotero
[toc6]: #utilisation-de-biblatex
[toc7]: #refs
## Objectifs
Au terme de cet atelier, vous serez en mesure de:
@ -211,7 +195,7 @@ Pour installer l'extension (au format `.xpi`) *Better BibTeX* :
### Autres fonctionnalités de Better BibTeX
Better BibTeX propose des fonctionnalités plus avancées:
*Better BibTeX* propose des fonctionnalités plus avancées:
- Création et gestion de clés uniques.
- Conversion des caractères UTF-8 et des éventuels balisages HTML

View File

@ -69,9 +69,7 @@ $endif$
$endif$
$if(toc)$
<nav id="$idprefix$TOC" role="doc-toc">
$if(toc-title)$
<h2 id="$idprefix$toc-title">$toc-title$</h2>
$endif$
<h2 id="$idprefix$toc-title">Table des matières</h2>
$table-of-contents$
</nav>
$endif$