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>
iGor milhit 2024-03-07 14:59:42 +01:00
parent 5df1cb0edf
commit f66b54aee1
Signed by: igor
GPG Key ID: 5785C84B21C88AE6
8 changed files with 100 additions and 132 deletions

3
.gitignore vendored
View File

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

170
README.md
View File

@ -5,44 +5,83 @@ id: 20230321102247
tags: [README, documentation, latex, rdv-info] 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 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: citations et les références bibliographiques avec LaTeX. Il contient:
- La source en markdown pour le support de cours. - La source en markdown pour le support de cours (`sources/policopié/`).
- Des exemples de fichiers `.tex`. - Des exemples de fichiers `.tex` (`exercice/exercice.tex`).
- Un export de collection Zotero au format biblatex. - 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 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 ## Prérequis
## Pour démarrer
Pour pouvoir utiliser ce projet, il est nécessaire: Pour pouvoir utiliser ce projet, il est nécessaire:
1. De cloner le projet: \ 1. De cloner le projet: \
`git clone https://git.milhit.ch/igor/biblatex-zotero.git` `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: 1. Pour générer les différents fichiers, les outils suivants sont nécessaires:
```bash 1. Soit `pagedjs`. Pour installer `pagedjs` : \
git submodule init `npm install -g puppeteer pagedjs pagedjs-cli`.
git submodule update 1. Soit `pandoc` et LaTex. Pour installer `pandoc`, voir [la
``` documentation][3]. Pour la distribution LaTeX, une possibilité est de
1. Pour générer les différents fichiers, deux outils sont nécessaire: consulter le site web [*The LaTeX project*][4] qui décline les méthodes
1. `pandoc`. Pour installer `pandoc`, voir [la les plus habituelles pour les principaux systèmes d'exploitation. **Pour
documentation][pandoc-install]. ma part, je recommande l'usage de `tectonic` qui est un binaire à
1. Une distribution \LaTeX. Une possibilité est de consulter le site web installer**: voir comment [installer tectonic][5].
[*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].
## Convertir le support de cours en PDF ## 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 ### 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 Pour convertir le support de cours (`polycopié.md`) au format PDF, il faut
utiliser la commande suivante: utiliser la commande suivante:
@ -59,39 +98,6 @@ pandoc --citeproc --to=pdf --pdf-engine=tectonic \
installé. installé.
- `--output=` spécifie le chemin et le nom du fichier généré. - `--output=` spécifie le chemin et le nom du fichier généré.
### 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][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 ## Déroulé de la présentation
Le fichier `déroulé.md` décrit le déroulé de la présentation. Si une impression Le fichier `déroulé.md` décrit le déroulé de la présentation. Si une impression
@ -110,52 +116,10 @@ Pour le PDF:
pandoc -t pdf --pdf-engine=tectonic -o déroulé.pdf déroulé.md pandoc -t pdf --pdf-engine=tectonic -o déroulé.pdf déroulé.md
``` ```
## Support de présentation <!-- références -->
[1]: ./
⚠ Il n'y a pas encore de support de présentation. Le fichier est là à titre [2]: https://git.milhit.ch/igor/biblatex-zotero/releases/latest
d'essai pour l'instant. [3]: https://pandoc.org/installing.html
[4]: https://www.latex-project.org/get/
### Convertir la présentation au format PDF [5]: https://tectonic-typesetting.github.io/en-US/install.html
[6]: https://pagedjs.org/
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

View File

@ -9,6 +9,7 @@
% \setdefaultlanguage{french} % \setdefaultlanguage{french}
% URL and link management. Mandatory for Vancouver % URL and link management. Mandatory for Vancouver
% Management of the French language with PdfLaTeX % Management of the French language with PdfLaTeX
\usepackage[utf8]{inputenc}
\usepackage[french]{babel} \usepackage[french]{babel}
\usepackage{hyperref} \usepackage{hyperref}
% Améliore le rendu des guillemets selon la langue, conseillé avec polyglossia % 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 { @media print {
body { body {
font-family: TheSans, "Open Sans", Arial, Helvetica, sans-serif; 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 { .date {
string-set: date content(text) string-set: date content(text)
} }
@page { @page {
size: A4; size: A4;
margin: 25mm 0; margin-top: 25mm;
margin-bottom: 25mm;
bleed: 6mm; bleed: 6mm;
@bottom-center { @bottom-center {
content: counter(page) content: counter(page)
@ -38,6 +41,8 @@
content: string(date); 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) { @page:nth(11) {
@bottom-center { @bottom-center {
content: none; content: none;
@ -47,8 +52,8 @@
color: #d80669; color: #d80669;
text-decoration: underline; text-decoration: underline;
} }
/* Ajouter ou supprimer les ID de titre pour un saut de page */
#principes-généraux, #principes-généraux,
#utilisation-de-biblatex,
#bibliographie, #bibliographie,
.footnotes { .footnotes {
break-before: page; break-before: page;
@ -72,6 +77,7 @@
border-radius: .5em; border-radius: .5em;
margin: 1em; margin: 1em;
padding: .5em 1em; padding: .5em 1em;
break-inside: avoid;
} }
code { code {
font-family:'Courier New', Courier, monospace; font-family:'Courier New', Courier, monospace;
@ -95,6 +101,7 @@
border: 2px solid #d80669; border: 2px solid #d80669;
border-radius: .5em; border-radius: .5em;
padding: .5em; padding: .5em;
break-inside: avoid;
} }
figure img { figure img {
max-width: 85%; max-width: 85%;
@ -127,4 +134,21 @@
max-width: 50%; max-width: 50%;
padding: .5em; 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 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 ## Objectifs
Au terme de cet atelier, vous serez en mesure de: 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 ### 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. - Création et gestion de clés uniques.
- Conversion des caractères UTF-8 et des éventuels balisages HTML - Conversion des caractères UTF-8 et des éventuels balisages HTML

View File

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