From f66b54aee10307ee2fafa231f829f6762a098786 Mon Sep 17 00:00:00 2001 From: iGor milhit Date: Thu, 7 Mar 2024 14:59:42 +0100 Subject: [PATCH] =?UTF-8?q?policopi=C3=A9:=20am=C3=A9liore=20le=20policopi?= =?UTF-8?q?=C3=A9=20apr=C3=A8s=20le=20cours?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 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 --- .gitignore | 3 +- .gitmodules | 3 - README.md | 170 ++++++++++++------------------ exercice/exercice.tex | 1 + reveal.js | 1 - sources/polycopié/polycopié.css | 32 +++++- sources/polycopié/polycopié.md | 18 +--- sources/polycopié/template.html | 4 +- 8 files changed, 100 insertions(+), 132 deletions(-) delete mode 160000 reveal.js diff --git a/.gitignore b/.gitignore index a4cca1f..b4c43ee 100644 --- a/.gitignore +++ b/.gitignore @@ -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 diff --git a/.gitmodules b/.gitmodules index 12123b5..e69de29 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +0,0 @@ -[submodule "reveal.js"] - path = reveal.js - url = https://github.com/hakimel/reveal.js.git diff --git a/README.md b/README.md index 140836b..d15d44b 100644 --- a/README.md +++ b/README.md @@ -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 +``` + + + +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,39 +98,6 @@ pandoc --citeproc --to=pdf --pdf-engine=tectonic \ installé. - `--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 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 ``` -## 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 : -. - -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 + +[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/ diff --git a/exercice/exercice.tex b/exercice/exercice.tex index 11d65a3..fee7763 100644 --- a/exercice/exercice.tex +++ b/exercice/exercice.tex @@ -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 diff --git a/reveal.js b/reveal.js deleted file mode 160000 index 724c4fe..0000000 --- a/reveal.js +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 724c4fee274914dd2d997b7584cf603c44e96c72 diff --git a/sources/polycopié/polycopié.css b/sources/polycopié/polycopié.css index ce3b09c..45288fe 100644 --- a/sources/polycopié/polycopié.css +++ b/sources/polycopié/polycopié.css @@ -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; + } } diff --git a/sources/polycopié/polycopié.md b/sources/polycopié/polycopié.md index dfbf819..db35664 100644 --- a/sources/polycopié/polycopié.md +++ b/sources/polycopié/polycopié.md @@ -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 diff --git a/sources/polycopié/template.html b/sources/polycopié/template.html index f3bd0fc..77febbf 100644 --- a/sources/polycopié/template.html +++ b/sources/polycopié/template.html @@ -69,9 +69,7 @@ $endif$ $endif$ $if(toc)$ $endif$