export: génère le polycopié en PDF avec `paged.js`

- Ajoute un modèle HTML contenant les éléments nécessaires pour utiliser
  `paged.js` dans un navigateur web.
- Ajoute le support de logos.
- Ajoute une feuille de style pour définir les styles utilisés pour le
  PDF, de manière à s'approcher de la charte de l'UNIGE.
- Ajoute également la feuille de style pour l'interface de `pagedjs`,
  afin de pouvoir avoir un rendu paginé dans le navigateur web.
- Documente l'usage de `paged.js`.
- Crée un dossier `sources` avec des sous-répertoires pour le polycopié
  et la présentation. S'y trouvent les sources et les fichiers
  nécessaires pour les différentes conversions de fichiers.
- Renomme le dossier `media` en `medias`, ce qui a plus de sens, et
  place le dossier dans le répertoire des sources.
- Utilise le style de citation et de bibliographie Haute École de
  Gestion de Genève, ISO 690.
- Apporte quelques petites corrections au polycopié lui-même.

Co-Authored-by: iGor milhit <igor.milhit@unige.ch>
iGor milhit 2023-04-04 13:45:27 +02:00
parent 26dc23d101
commit 4fa527f0d4
Signed by: igor
GPG Key ID: 5785C84B21C88AE6
18 changed files with 1008 additions and 18 deletions

View File

@ -41,17 +41,50 @@ Pour pouvoir utiliser ce projet, il est nécessaire:
## Convertir le support de cours en PDF
### Avec LaTeX
Pour convertir le support de cours (`polycopié.md`) au format PDF, il faut
utiliser la commande suivante:
```bash
pandoc --citeproc -t pdf --pdf-engine=tectonic -o polycopié.pdf polycopié.md
pandoc --citeproc --to=pdf --pdf-engine=tectonic \
--output=public/polycopié.pdf \
source/polycopié/polycopié.md
```
- `--citeproc` traite les citations et génère la bibliographie.
- `--to=pdf` détermine le format de sortie, ici PDF.
- `--pdf-engine` définit le moteur de compilation a utiliser pour produire le
PDF, ici `tectonic`, mais `xelatex` devrait fonctionner aussi, si il est
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 --self-contained --citeproc --t pdf --pdf-engine=pagedjs-cli \
--css=source/polycopié/polycopié.css \
--output=public/polycopié.pdf polycopié.md
```
```bash
pandoc --self-contained --citeproc --t html \
--template=source/polycopié/template.html \
--css=source/polycopié/polycopié.css \
-o test.html polycopié.md
```
[pagedjs]: https://pagedjs.org/
## Déroulé de la présentation

View File

Before

Width:  |  Height:  |  Size: 229 KiB

After

Width:  |  Height:  |  Size: 229 KiB

View File

Before

Width:  |  Height:  |  Size: 5.1 KiB

After

Width:  |  Height:  |  Size: 5.1 KiB

View File

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

View File

Before

Width:  |  Height:  |  Size: 48 KiB

After

Width:  |  Height:  |  Size: 48 KiB

View File

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 19 KiB

View File

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg height="500" overflow="scroll" width="1200" xmlns="http://www.w3.org/2000/svg">
<path d="m5.46 4.23h-.25c-.1 1.02-.24 2.26-2 2.26h-.81c-.47 0-.49-.07-.49-.4v-5.31c0-.34 0-.48.94-.48h.33v-.3c-.36.03-1.26.03-1.67.03-.39 0-1.17 0-1.51-.03v.3h.23c.77 0 .79.11.79.47v5.25c0 .36-.02.47-.79.47h-.23v.31h5.19z" transform="matrix(45 0 0 45 40 47.65)"/>
<path d="m2.81.16c-.04-.12-.06-.16-.19-.16s-.16.04-.2.16l-1.61 4.08c-.07.17-.19.48-.81.48v.25h1.55v-.25c-.31 0-.5-.14-.5-.34 0-.05.01-.07.03-.14 0 0 .34-.86.34-.86h1.98l.4 1.02c.02.04.04.09.04.12 0 .2-.38.2-.57.2v.25h1.97v-.25h-.14c-.47 0-.52-.07-.59-.27 0 0-1.7-4.29-1.7-4.29zm-.4.71.89 2.26h-1.78z" transform="matrix(45 0 0 45 151.6 40)"/>
<path d="m6.27 0h-6.09s-.18 2.24-.18 2.24h.24c.14-1.61.29-1.94 1.8-1.94.18 0 .44 0 .54.02.21.04.21.15.21.38v5.25c0 .34 0 .48-1.05.48h-.4v.31c.41-.03 1.42-.03 1.88-.03s1.49 0 1.9.03v-.31h-.4c-1.05 0-1.05-.14-1.05-.48v-5.25c0-.2 0-.34.18-.38.11-.02.38-.02.57-.02 1.5 0 1.65.33 1.79 1.94h.25s-.19-2.24-.19-2.24z" transform="matrix(45 0 0 45 356.35 50.35)"/>
<path d="m6.16 4.2h-.25c-.25 1.53-.48 2.26-2.19 2.26h-1.32c-.47 0-.49-.07-.49-.4v-2.66h.89c.97 0 1.08.32 1.08 1.17h.25v-2.64h-.25c0 .85-.11 1.16-1.08 1.16h-.89v-2.39c0-.33.02-.4.49-.4h1.28c1.53 0 1.79.55 1.95 1.94h.25l-.28-2.24h-5.6v.3h.23c.77 0 .79.11.79.47v5.22c0 .36-.02.47-.79.47h-.23v.31h5.74z" transform="matrix(45 0 0 45 602.5 150.25)"/>
<path d="m3.76 2.95 1.37-2c.21-.32.55-.64 1.44-.65v-.3h-2.38v.3c.4.01.62.23.62.46 0 .1-.02.12-.09.23 0 0-1.14 1.68-1.14 1.68l-1.28-1.92c-.02-.03-.07-.11-.07-.15 0-.12.22-.29.64-.3v-.3c-.34.03-1.07.03-1.45.03-.31 0-.93-.01-1.3-.03v.3h.19c.55 0 .74.07.93.35 0 0 1.83 2.77 1.83 2.77l-1.63 2.41c-.14.2-.44.66-1.44.66v.31h2.38v-.31c-.46-.01-.63-.28-.63-.46 0-.09.03-.13.1-.24l1.41-2.09 1.58 2.38c.02.04.05.08.05.11 0 .12-.22.29-.65.3v.31c.35-.03 1.08-.03 1.45-.03.42 0 .88.01 1.3.03v-.31h-.19c-.52 0-.73-.05-.94-.36 0 0-2.1-3.18-2.1-3.18z" transform="matrix(45 0 0 45 845.95 47.65)"/>
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 36 KiB

View File

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 35 KiB

View File

@ -0,0 +1,10 @@
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="123" viewBox="0 0 512 123">
<g>
<path d="M73.915,36.1,19.179,108.014H75.912V120H0v-9.589L54.738,38.493H2.8V26.51H73.915Z" fill="#cc2936"/>
<path d="M181.391,73.254a50.99,50.99,0,0,1-3.7,19.578,46.339,46.339,0,0,1-25.97,25.87,52.875,52.875,0,0,1-20.075,3.7,52.316,52.316,0,0,1-19.878-3.7A46.347,46.347,0,0,1,85.8,92.832a50.933,50.933,0,0,1-3.7-19.578,50.923,50.923,0,0,1,3.7-19.576,46.323,46.323,0,0,1,25.97-25.87,52.279,52.279,0,0,1,19.878-3.7,52.837,52.837,0,0,1,20.075,3.7,46.315,46.315,0,0,1,25.97,25.87A50.98,50.98,0,0,1,181.391,73.254Zm-14.383,0a41.934,41.934,0,0,0-2.5-14.583,35.122,35.122,0,0,0-7.09-11.787,33.352,33.352,0,0,0-11.088-7.889,38.643,38.643,0,0,0-29.365,0,32.214,32.214,0,0,0-10.988,7.889,35.905,35.905,0,0,0-6.992,11.787,43.829,43.829,0,0,0,0,29.165,35.813,35.813,0,0,0,6.992,11.787,32.2,32.2,0,0,0,10.988,7.892,38.668,38.668,0,0,0,29.365,0,33.332,33.332,0,0,0,11.088-7.892,35.033,35.033,0,0,0,7.09-11.787A41.9,41.9,0,0,0,167.008,73.254Z" fill="#222"/>
<path d="M245.712,38.493H218.743V93.631a29.833,29.833,0,0,0,1,8.491,11.963,11.963,0,0,0,2.8,5.093,9.627,9.627,0,0,0,4.3,2.5,20.2,20.2,0,0,0,5.492.7,25.978,25.978,0,0,0,6.993-1,32.094,32.094,0,0,0,6.591-2.6l.6,12.185q-7.392,3.394-17.778,3.4a33.373,33.373,0,0,1-7.892-1,18.6,18.6,0,0,1-7.492-3.8,20.886,20.886,0,0,1-5.592-7.592q-2.2-4.792-2.2-12.585V38.493H185.78V26.51h19.779V.138h13.184V26.51h26.969Z" fill="#222"/>
<path d="M264.888,76.851a40.055,40.055,0,0,0,3.4,13.185,34.493,34.493,0,0,0,17.981,17.778,32.264,32.264,0,0,0,12.985,2.6,33.3,33.3,0,0,0,18.278-4.894A36.6,36.6,0,0,0,329.213,94.23l10.189,8.391q-8.392,10.59-18.48,15.182a51.705,51.705,0,0,1-21.673,4.594,49.743,49.743,0,0,1-19.279-3.7,45.151,45.151,0,0,1-15.282-10.289A48.651,48.651,0,0,1,254.6,92.832a50.933,50.933,0,0,1-3.695-19.578A52.232,52.232,0,0,1,254.5,53.678a47.343,47.343,0,0,1,9.989-15.584,45.906,45.906,0,0,1,14.982-10.286,46.486,46.486,0,0,1,18.579-3.7,45.564,45.564,0,0,1,18.977,3.8,42.109,42.109,0,0,1,14.084,10.086,43.2,43.2,0,0,1,8.69,14.785,53.921,53.921,0,0,1,3,18.078v5.994Zm63.526-10.788q0-13.38-7.991-21.675T298.05,36.1a31.918,31.918,0,0,0-12.385,2.5,34.9,34.9,0,0,0-10.488,6.694,33.48,33.48,0,0,0-7.193,9.589,24.716,24.716,0,0,0-2.7,11.187Z" fill="#222"/>
<path d="M362.174,55.675q0-6.19-.3-12.585t-.5-16.58h12.984V43.888h.4a29.025,29.025,0,0,1,4-7.292,31.327,31.327,0,0,1,6.291-6.292,30.907,30.907,0,0,1,8.591-4.5,33.784,33.784,0,0,1,11.088-1.7,35.791,35.791,0,0,1,9.786,1.2l-2.6,12.985a22.215,22.215,0,0,0-7.59-1,27.106,27.106,0,0,0-12.985,2.9,28.807,28.807,0,0,0-8.99,7.391,30.677,30.677,0,0,0-5.3,9.689,32.149,32.149,0,0,0-1.7,9.989V120H362.174Z" fill="#222"/>
<path d="M512,73.254a50.99,50.99,0,0,1-3.7,19.578,46.339,46.339,0,0,1-25.97,25.87,52.875,52.875,0,0,1-20.075,3.7,52.316,52.316,0,0,1-19.878-3.7,46.347,46.347,0,0,1-25.97-25.87,50.933,50.933,0,0,1-3.7-19.578,50.923,50.923,0,0,1,3.7-19.576,46.323,46.323,0,0,1,25.97-25.87,52.279,52.279,0,0,1,19.878-3.7,52.837,52.837,0,0,1,20.075,3.7,46.315,46.315,0,0,1,25.97,25.87A50.98,50.98,0,0,1,512,73.254Zm-14.383,0a41.934,41.934,0,0,0-2.5-14.583,35.122,35.122,0,0,0-7.09-11.787,33.352,33.352,0,0,0-11.088-7.889,38.643,38.643,0,0,0-29.365,0,32.214,32.214,0,0,0-10.988,7.889A35.905,35.905,0,0,0,429.6,58.671a43.829,43.829,0,0,0,0,29.165,35.813,35.813,0,0,0,6.992,11.787,32.2,32.2,0,0,0,10.988,7.892,38.668,38.668,0,0,0,29.365,0,33.332,33.332,0,0,0,11.088-7.892,35.033,35.033,0,0,0,7.09-11.787A41.9,41.9,0,0,0,497.617,73.254Z" fill="#222"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.5 KiB

View File

@ -0,0 +1,562 @@
<?xml version="1.0" encoding="utf-8"?>
<style xmlns="http://purl.org/net/xbiblio/csl" class="in-text" version="1.0" demote-non-dropping-particle="never">
<info>
<title>Haute école de gestion de Genève - ISO 690</title>
<title-short>HEG Genève - ISO 690</title-short>
<id>http://www.zotero.org/styles/haute-ecole-de-gestion-de-geneve-iso-690</id>
<link href="http://www.zotero.org/styles/haute-ecole-de-gestion-de-geneve-iso-690" rel="self"/>
<link href="http://www.zotero.org/styles/iso690-author-date-en" rel="template"/>
<link href="https://www.hesge.ch/heg/campus/infotheque/citations-et-references-bibliographiques" rel="documentation"/>
<author>
<name>Melissa Paez</name>
<email>paez.melissa@gmail.com</email>
</author>
<author>
<name>Raphael Grolimund</name>
<email>grolimur@protonmail.ch</email>
</author>
<category citation-format="author-date"/>
<category field="generic-base"/>
<updated>2022-03-21T10:00:00+00:00</updated>
<rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
</info>
<locale xml:lang="fr-FR">
<terms>
<term name="no date">[sans date]</term>
<term name="in">in</term>
<term name="online">[en&#160;ligne]</term>
<term name="accessed">consulté&#160;le</term>
<term name="retrieved">disponible</term>
<term name="from">à l'adresse</term>
<term name="translator" form="short">trad.</term>
<term name="editor" form="short">éd.</term>
</terms>
</locale>
<locale xml:lang="en-US">
<terms>
<term name="online">Online</term>
</terms>
</locale>
<macro name="editor">
<names variable="editor">
<name and="text" name-as-sort-order="all" sort-separator=", " delimiter=", " delimiter-precedes-last="never">
<name-part name="family" text-case="uppercase"/>
</name>
<label prefix=" (" form="short" suffix=".)"/>
</names>
</macro>
<macro name="translator">
<names variable="translator">
<name and="text" name-as-sort-order="all" sort-separator=", " delimiter=", " delimiter-precedes-last="never">
<name-part name="family" text-case="uppercase"/>
</name>
<label prefix=" (" form="short" suffix=".)"/>
</names>
</macro>
<macro name="responsability">
<names variable="author">
<name and="text" name-as-sort-order="all" sort-separator=", " delimiter=", " delimiter-precedes-last="never">
<name-part name="family" text-case="uppercase"/>
</name>
<substitute>
<text macro="editor"/>
<text macro="translator"/>
<text macro="title"/>
</substitute>
</names>
<choose>
<if variable="author editor translator" match="any">
<text macro="year-date" prefix=", "/>
</if>
</choose>
</macro>
<macro name="author-citation">
<names variable="author">
<name form="short"/>
<substitute>
<names variable="editor"/>
<names variable="translator"/>
<text variable="title" font-style="italic"/>
</substitute>
</names>
</macro>
<macro name="container-author">
<names variable="container-author">
<name and="text" name-as-sort-order="all" sort-separator=", " delimiter=", " delimiter-precedes-last="never">
<name-part name="family" text-case="uppercase"/>
</name>
</names>
</macro>
<macro name="container-responsability">
<choose>
<if variable="container-author">
<text macro="container-author"/>
</if>
<else-if variable="editor">
<text macro="editor"/>
</else-if>
<else>
<text macro="translator"/>
</else>
</choose>
</macro>
<macro name="year-date">
<choose>
<if variable="issued">
<date variable="issued">
<date-part name="year" form="long"/>
</date>
</if>
<else>
<text term="no date"/>
</else>
</choose>
</macro>
<macro name="title">
<choose>
<if type="book thesis map motion_picture song manuscript" match="any">
<choose>
<if variable="author editor translator" match="any">
<text variable="title" font-style="italic" suffix="."/>
</if>
<else>
<text variable="title" font-style="italic" suffix=", "/>
<text macro="year-date" suffix=". "/>
</else>
</choose>
</if>
<else-if type="paper-conference speech chapter article-journal article-magazine article-newspaper entry entry-dictionary entry-encyclopedia post-weblog post webpage broadcast" match="any">
<choose>
<if variable="author editor translator" match="any">
<text variable="title" suffix=". "/>
</if>
<else>
<text variable="title" suffix=", "/>
<text macro="year-date" suffix=". "/>
</else>
</choose>
<choose>
<if type="chapter paper-conference" match="any">
<text term="in" text-case="capitalize-first" suffix=": "/>
</if>
</choose>
<choose>
<if variable="container-author editor translator" match="any">
<text macro="container-responsability"/>
<choose>
<if variable="container-title event" match="any">
<text value=", "/>
</if>
</choose>
</if>
</choose>
<choose>
<if variable="container-title">
<text variable="container-title" font-style="italic" suffix="."/>
</if>
<else>
<text variable="event" font-style="italic" suffix="."/>
</else>
</choose>
</else-if>
<else-if type="report">
<choose>
<if variable="author editor translator" match="any">
<text variable="title" font-style="italic"/>
</if>
<else>
<text variable="number" suffix=": "/>
<text variable="title" font-style="italic" suffix=", "/>
<text macro="year-date" suffix=". "/>
</else>
</choose>
</else-if>
<else-if type="patent">
<choose>
<if variable="author editor translator" match="any">
<text variable="title"/>
</if>
<else>
<text variable="title" suffix=", "/>
<text macro="year-date" suffix=". "/>
</else>
</choose>
</else-if>
<else>
<choose>
<if variable="author editor translator" match="any">
<text variable="title" font-style="italic" suffix=". "/>
</if>
<else>
<text variable="title" font-style="italic" suffix=", "/>
<text macro="year-date" suffix=". "/>
</else>
</choose>
</else>
</choose>
<choose>
<if variable="URL">
<text term="online" prefix=" "/>
</if>
</choose>
</macro>
<macro name="number">
<text variable="number"/>
</macro>
<macro name="medium">
<text variable="medium" prefix=" [" suffix="]"/>
</macro>
<macro name="genre">
<choose>
<if type="map">
<choose>
<if variable="genre">
<text variable="genre" prefix="[" suffix="]"/>
</if>
<else>
<text value="map" prefix="[" suffix="]"/>
</else>
</choose>
</if>
</choose>
</macro>
<macro name="date">
<choose>
<if variable="issued">
<date variable="issued">
<date-part name="day" suffix=" "/>
<date-part name="month" suffix=" "/>
<date-part name="year"/>
</date>
</if>
</choose>
</macro>
<macro name="edition">
<text variable="edition" form="long"/>
</macro>
<macro name="publisher-group">
<group delimiter=": ">
<text variable="publisher-place"/>
<text variable="publisher"/>
</group>
</macro>
<macro name="issue">
<group delimiter=", ">
<text variable="volume" prefix="Vol.&#160;"/>
<choose>
<if variable="volume">
<text variable="issue" prefix="no.&#160;"/>
<text variable="page" prefix="pp.&#160;"/>
</if>
<else-if variable="issue">
<text variable="issue" prefix="No.&#160;"/>
<text variable="page" prefix="pp.&#160;"/>
</else-if>
<else>
<text variable="page" prefix="pp.&#160;"/>
</else>
</choose>
</group>
</macro>
<macro name="accessed">
<choose>
<if variable="URL">
<group prefix=" [" suffix="]">
<text term="accessed" text-case="capitalize-first"/>
<date variable="accessed">
<date-part name="day" prefix="&#160;"/>
<date-part name="month" prefix="&#160;"/>
<date-part name="year" prefix="&#160;"/>
</date>
</group>
</if>
</choose>
</macro>
<macro name="collection">
<group delimiter=", ">
<text variable="collection-title"/>
<text variable="collection-number"/>
</group>
</macro>
<macro name="page">
<choose>
<if type="book thesis manuscript" match="any">
<text variable="number-of-pages" suffix="&#160;p"/>
</if>
<else-if type="chapter paper-conference article-newspaper" match="any">
<text variable="page" prefix="pp.&#160;"/>
</else-if>
<else-if type="report patent" match="any">
<text variable="page" suffix="&#160;p"/>
</else-if>
</choose>
</macro>
<macro name="isbn">
<text variable="ISBN" prefix="ISBN&#160;"/>
</macro>
<macro name="doi">
<text variable="DOI" prefix="DOI&#160;"/>
</macro>
<macro name="url">
<choose>
<if variable="DOI" match="none">
<choose>
<if variable="URL">
<group>
<text term="retrieved" suffix=" " text-case="capitalize-first"/>
<text term="from" suffix=": "/>
<text variable="URL"/>
</group>
</if>
</choose>
</if>
</choose>
</macro>
<macro name="archive">
<group delimiter=":&#160;">
<text variable="archive"/>
<text macro="archive_location"/>
</group>
</macro>
<macro name="archive_location">
<choose>
<if variable="archive_location">
<text variable="archive_location"/>
</if>
<else>
<text variable="call-number"/>
</else>
</choose>
</macro>
<citation et-al-min="4" et-al-use-first="1" disambiguate-add-year-suffix="true" disambiguate-add-names="true" disambiguate-add-givenname="true" collapse="year" year-suffix-delimiter=", " after-collapse-delimiter="; ">
<layout prefix="(" suffix=")" delimiter="; ">
<group delimiter=", ">
<group delimiter=" ">
<text macro="author-citation"/>
<text macro="year-date"/>
</group>
<group>
<label variable="locator" suffix=".&#160;" form="short" strip-periods="true"/>
<text variable="locator"/>
</group>
</group>
</layout>
</citation>
<bibliography>
<sort>
<key macro="responsability"/>
<key macro="year-date"/>
</sort>
<layout>
<choose>
<if type="book map" match="any">
<text macro="responsability" suffix=". "/>
<choose>
<if variable="author editor translator" match="any">
<text macro="title" suffix=". "/>
</if>
</choose>
<text variable="version" prefix="version " suffix=". "/>
<!-- used for software until type="software" is implemented -->
<text macro="genre" suffix=". "/>
<text macro="edition" suffix=". "/>
<text macro="publisher-group" suffix=". "/>
<text macro="accessed" suffix=". "/>
<text macro="collection" suffix=". "/>
<text macro="isbn" suffix=". "/>
<text macro="url"/>
</if>
<else-if type="article-journal article-magazine" match="any">
<text macro="responsability" suffix=". "/>
<choose>
<if variable="author editor translator" match="any">
<text macro="title" suffix=". "/>
</if>
</choose>
<text macro="edition" suffix=". "/>
<text macro="date" suffix=". "/>
<text macro="issue" suffix=". "/>
<text macro="accessed" suffix=". "/>
<text macro="doi" suffix=". "/>
<text macro="url"/>
</else-if>
<else-if type="article-newspaper">
<text macro="responsability" suffix=". "/>
<choose>
<if variable="author editor translator" match="any">
<text macro="title" suffix=". "/>
</if>
</choose>
<text macro="edition" suffix=". "/>
<text macro="publisher-group" suffix=", "/>
<text macro="date" suffix=". "/>
<text macro="page" suffix=". "/>
<text macro="accessed" suffix=". "/>
<text macro="url"/>
</else-if>
<else-if type="chapter entry entry-dictionary entry-encyclopedia" match="any">
<text macro="responsability" suffix=". "/>
<choose>
<if variable="author editor translator" match="any">
<text macro="title" suffix=". "/>
</if>
</choose>
<text macro="edition" suffix=". "/>
<text macro="publisher-group" suffix=". "/>
<text macro="page" suffix=". "/>
<text macro="collection" suffix=". "/>
<text macro="accessed" suffix=". "/>
<text macro="isbn" suffix=". "/>
<text macro="url"/>
</else-if>
<else-if type="speech">
<text macro="responsability" suffix=". "/>
<choose>
<if variable="author editor translator" match="any">
<text macro="title" suffix=". "/>
</if>
</choose>
<text macro="genre" suffix=". "/>
<text macro="publisher-group" suffix=". "/>
<text macro="date" suffix=". "/>
<text macro="accessed" suffix=". "/>
<text macro="page" suffix=". "/>
<text macro="url"/>
</else-if>
<else-if type="paper-conference">
<text macro="responsability" suffix=". "/>
<choose>
<if variable="author editor translator" match="any">
<text macro="title" suffix=". "/>
</if>
</choose>
<text macro="genre" suffix=". "/>
<text macro="publisher-group" suffix=". "/>
<text macro="date" suffix=". "/>
<text macro="page" suffix=". "/>
<text macro="accessed" suffix=". "/>
<text macro="collection" suffix=". "/>
<text macro="isbn" suffix=". "/>
<text macro="doi" suffix=". "/>
<text macro="url"/>
</else-if>
<else-if type="thesis">
<text macro="responsability" suffix=". "/>
<choose>
<if variable="author editor translator" match="any">
<text macro="title" suffix=". "/>
</if>
</choose>
<text macro="genre" suffix=". "/>
<text macro="publisher-group" suffix=". "/>
<text macro="accessed" suffix=". "/>
<text macro="url"/>
</else-if>
<else-if type="post-weblog post webpage" match="any">
<text macro="responsability" suffix=". "/>
<choose>
<if variable="author editor translator" match="any">
<text macro="title" suffix=". "/>
</if>
</choose>
<text macro="date" suffix=". "/>
<text macro="accessed" suffix=". "/>
<text macro="url"/>
</else-if>
<else-if type="broadcast motion_picture song" match="any">
<text macro="responsability" suffix=". "/>
<choose>
<if variable="author editor translator" match="any">
<text macro="title" suffix=". "/>
</if>
</choose>
<text macro="medium" suffix=". "/>
<text macro="publisher-group" suffix=", "/>
<text macro="date" suffix=". "/>
<text macro="accessed" suffix=". "/>
<text macro="collection" suffix=". "/>
<text macro="isbn" suffix=". "/>
<text macro="url"/>
</else-if>
<else-if type="report">
<text macro="responsability" suffix=". "/>
<choose>
<if variable="author editor translator" match="any">
<text macro="title" suffix=". "/>
</if>
</choose>
<text macro="genre" suffix=". "/>
<text macro="edition" suffix=". "/>
<text macro="publisher-group" suffix=". "/>
<text macro="accessed" suffix=". "/>
<text macro="collection" suffix=". "/>
<text macro="url"/>
</else-if>
<else-if type="manuscript">
<text macro="responsability" suffix=". "/>
<choose>
<if variable="author editor translator" match="any">
<text macro="title" suffix=". "/>
</if>
</choose>
<text macro="genre" suffix=". "/>
<text macro="edition" suffix=". "/>
<text macro="publisher-group" suffix=". "/>
<text macro="accessed" suffix=". "/>
<text macro="collection" suffix=". "/>
<text macro="url"/>
</else-if>
<else-if type="patent">
<text macro="responsability" suffix=". "/>
<choose>
<if variable="author editor translator" match="any">
<text macro="title" suffix=". "/>
</if>
</choose>
<text macro="number" suffix=". "/>
<text macro="date" suffix=". "/>
<text macro="publisher-group" suffix=". "/>
<text macro="accessed" suffix=". "/>
<text macro="collection" suffix=". "/>
<text macro="url"/>
</else-if>
<else-if type="software">
<text macro="responsability" suffix=". "/>
<choose>
<if variable="author editor translator" match="any">
<text macro="title" suffix=". "/>
</if>
</choose>
<text variable="version" prefix="version " suffix=". "/>
<text macro="date" suffix=". "/>
<text macro="publisher-group" suffix=". "/>
<text macro="accessed" suffix=". "/>
<text macro="url"/>
</else-if>
<else>
<text macro="responsability" suffix=". "/>
<choose>
<if variable="author editor translator" match="any">
<text macro="title" suffix=". "/>
</if>
</choose>
<text macro="medium" suffix=". "/>
<text macro="genre" suffix=". "/>
<text macro="date" suffix=". "/>
<text macro="edition" suffix=". "/>
<text macro="publisher-group" suffix=". "/>
<text macro="number" suffix=". "/>
<text macro="accessed" suffix=". "/>
<text macro="collection" suffix=". "/>
<text macro="page" suffix=". "/>
<text macro="isbn" suffix=". "/>
<text macro="url"/>
</else>
</choose>
<text variable="note"/>
<group display="right-inline">
<text macro="archive"/>
</group>
</layout>
</bibliography>
</style>

View File

@ -0,0 +1,180 @@
/* CSS for Paged.js interface v0.4 */
/* Change the look */
:root {
--color-background: whitesmoke;
--color-pageSheet: #cfcfcf;
--color-pageBox: violet;
--color-paper: white;
--color-marginBox: transparent;
--pagedjs-crop-color: black;
--pagedjs-crop-shadow: white;
--pagedjs-crop-stroke: 1px;
}
/* To define how the book look on the screen: */
@media screen, pagedjs-ignore {
body {
background-color: var(--color-background);
}
.pagedjs_pages {
display: flex;
width: calc(var(--pagedjs-width) * 2);
flex: 0;
flex-wrap: wrap;
margin: 0 auto;
}
.pagedjs_page {
background-color: var(--color-paper);
box-shadow: 0 0 0 1px var(--color-pageSheet);
margin: 0;
flex-shrink: 0;
flex-grow: 0;
margin-top: 10mm;
}
.pagedjs_first_page {
margin-left: var(--pagedjs-width);
}
.pagedjs_page:last-of-type {
margin-bottom: 10mm;
}
.pagedjs_pagebox{
box-shadow: 0 0 0 1px var(--color-pageBox);
}
.pagedjs_left_page{
z-index: 20;
width: calc(var(--pagedjs-bleed-left) + var(--pagedjs-pagebox-width))!important;
}
.pagedjs_left_page .pagedjs_bleed-right .pagedjs_marks-crop {
border-color: transparent;
}
.pagedjs_left_page .pagedjs_bleed-right .pagedjs_marks-middle{
width: 0;
}
.pagedjs_right_page{
z-index: 10;
position: relative;
left: calc(var(--pagedjs-bleed-left)*-1);
}
/* show the margin-box */
.pagedjs_margin-top-left-corner-holder,
.pagedjs_margin-top,
.pagedjs_margin-top-left,
.pagedjs_margin-top-center,
.pagedjs_margin-top-right,
.pagedjs_margin-top-right-corner-holder,
.pagedjs_margin-bottom-left-corner-holder,
.pagedjs_margin-bottom,
.pagedjs_margin-bottom-left,
.pagedjs_margin-bottom-center,
.pagedjs_margin-bottom-right,
.pagedjs_margin-bottom-right-corner-holder,
.pagedjs_margin-right,
.pagedjs_margin-right-top,
.pagedjs_margin-right-middle,
.pagedjs_margin-right-bottom,
.pagedjs_margin-left,
.pagedjs_margin-left-top,
.pagedjs_margin-left-middle,
.pagedjs_margin-left-bottom {
box-shadow: 0 0 0 1px inset var(--color-marginBox);
}
/* uncomment this part for recto/verso book : ------------------------------------ */
/*
.pagedjs_pages {
flex-direction: column;
width: 100%;
}
.pagedjs_first_page {
margin-left: 0;
}
.pagedjs_page {
margin: 0 auto;
margin-top: 10mm;
}
.pagedjs_left_page{
width: calc(var(--pagedjs-bleed-left) + var(--pagedjs-pagebox-width) + var(--pagedjs-bleed-left))!important;
}
.pagedjs_left_page .pagedjs_bleed-right .pagedjs_marks-crop{
border-color: var(--pagedjs-crop-color);
}
.pagedjs_left_page .pagedjs_bleed-right .pagedjs_marks-middle{
width: var(--pagedjs-cross-size)!important;
}
.pagedjs_right_page{
left: 0;
}
*/
/*--------------------------------------------------------------------------------------*/
/* uncomment this par to see the baseline : -------------------------------------------*/
/* .pagedjs_pagebox {
--pagedjs-baseline: 22px;
--pagedjs-baseline-position: 5px;
--pagedjs-baseline-color: cyan;
background: linear-gradient(transparent 0%, transparent calc(var(--pagedjs-baseline) - 1px), var(--pagedjs-baseline-color) calc(var(--pagedjs-baseline) - 1px), var(--pagedjs-baseline-color) var(--pagedjs-baseline)), transparent;
background-size: 100% var(--pagedjs-baseline);
background-repeat: repeat-y;
background-position-y: var(--pagedjs-baseline-position);
} */
/*--------------------------------------------------------------------------------------*/
}
/* Marks (to delete when merge in paged.js) */
.pagedjs_marks-crop{
z-index: 999999999999;
}
.pagedjs_bleed-top .pagedjs_marks-crop,
.pagedjs_bleed-bottom .pagedjs_marks-crop{
box-shadow: 1px 0px 0px 0px var(--pagedjs-crop-shadow);
}
.pagedjs_bleed-top .pagedjs_marks-crop:last-child,
.pagedjs_bleed-bottom .pagedjs_marks-crop:last-child{
box-shadow: -1px 0px 0px 0px var(--pagedjs-crop-shadow);
}
.pagedjs_bleed-left .pagedjs_marks-crop,
.pagedjs_bleed-right .pagedjs_marks-crop{
box-shadow: 0px 1px 0px 0px var(--pagedjs-crop-shadow);
}
.pagedjs_bleed-left .pagedjs_marks-crop:last-child,
.pagedjs_bleed-right .pagedjs_marks-crop:last-child{
box-shadow: 0px -1px 0px 0px var(--pagedjs-crop-shadow);
}

View File

@ -0,0 +1,110 @@
@media print {
body {
font-family: TheSans, "Open Sans", Arial, Helvetica, sans-serif;
counter-reset: figureNumber;
}
@page {
size: A4;
margin: 25mm 0;
bleed: 6mm;
@bottom-center {
content: counter(page)
}
}
@page:left {
margin-left: 25mm;
margin-right: 15mm;
}
@page:right {
margin-left: 15mm;
margin-right: 25mm;
}
@page:first {
@bottom-center {
content: none;
}
}
@page:nth(11) {
@bottom-center {
content: none;
}
}
h2 {
color: #d80669;
text-decoration: underline;
}
#principes-généraux,
#utilisation-de-biblatex,
#bibliographie,
.footnotes {
break-before: page;
}
#title-block-header {
text-align: center;
margin-bottom: 6em;
}
.author {
display: inline;
padding-right: 10px;
}
pre {
font-family:'Courier New', Courier, monospace;
font-size: 90%;
background-color: #f2f1f1;
border: 2px solid #d80669;
border-radius: .5em;
margin: 1em;
padding: .5em 1em;
}
code {
font-family:'Courier New', Courier, monospace;
font-size: 90%;
background-color: #f2f1f1;
padding: 2px;
border-radius: 5px;
}
.footnotes::before {
content: "Notes";
color: #d80669;
font-size: 120%;
font-weight: bold;
}
figure {
display: flex;
flex-direction: column;
border: 2px solid #d80669;
border-radius: .5em;
padding: .5em;
}
figure img {
max-width: 85%;
margin: 0 auto;
}
figcaption {
text-align: center;
font-size: 90%;
counter-increment: figureNumber;
padding-top: .5em;
}
figcaption::before {
content: "Figure " counter(figureNumber) ": ";
}
blockquote {
font-style: italic;
}
blockquote em {
font-style: normal;
}
div.csl-entry {
padding: .5em;
}
.logo {
display: inline-flex;
width: 80%;
margin: 0 auto;
}
.logo img {
max-width: 50%;
padding: .5em;
}
}

View File

@ -1,5 +1,5 @@
---
title: "Citer ses références et créer une bibliographie avec \\LaTeX"
title: "Citer ses références et créer une bibliographie avec LaTeX et Zotero"
date: 2023-03-30
creation_date: 2023-03-24T08:25:47+01:00
id: 20230324082557
@ -7,9 +7,12 @@ author:
- Dimitri Donzé^[Bibliothèque de l'UNIGE, site UNIMAIL]
- Vincent Huber^[Bibliothèque de l'UNIGE, site Arve]
- Igor Milhit^[Bibliothèque de l'UNIGE, site CMU]
logo:
- ../medias/latex-logo.svg
- ../medias/zotero-logo.svg
lang: fr
bibliography: references-support.bib
reference-section-title: Bibliographie
csl: heg-iso-690.csl
nocite: '@*'
link-citations: true
---
@ -46,7 +49,7 @@ Au terme de cet atelier, vous serez en mesure de:
&nbsp;
![Logo de la licence CC BY-SA 4.0](media/by-sa.png) \
![Logo de la licence CC BY-SA 4.0](../medias/by-sa.png) \
Ce document est sous licence [*CC BY-SA 4.0*][cc-by-sa]. \
Les sources sont sur <https://git.milhit.ch/igor/biblatex-zotero>
@ -192,22 +195,25 @@ L'extension *Better BibTeX for Zotero* résout deux problèmes des fichiers
contenu de celui-ci sera mis à jour automatiquement lorsque la collection
correspondante dans Zotero sera modifiée**. Pour cela, il faut choisir le
format d'exportation *Better BibTeX* ou *Better BibLaTeX* et sélectionner
l'option *Garder à jour.* \
![Dialogue Better BibTex](./media/better-bibtex-a-jour.png)
l'option *Garder à jour*. (Figure 1) \
1. Elle permet de **modifier une clé de citation (citekey) manuellement ou de
créer un format de citekey par défaut.**
![Fenêtre de dialogue de Better BibTex](../medias/better-bibtex-a-jour.png)
Pour installer l'extension (au format `.xpi`) *Better BibTeX* :
- Se rendre sur <https://github.com/retorquere/zotero-better-bibtex/releases/latest>.
- Télécharger le fichier `Zotero-better-bibtex-X.X.X.xpi`.
- Dans Zotero, choisir le menu *Outils / Extensions*. \
![Menu «outils» de Zotero](./media/menu-outils.png)
- Dans Zotero, choisir le menu *Outils / Extensions*. (Figure 2) \
- Cliquer sur la roue crantée en haut à droite et sélectionner *Install Add-on
from file*. \
![Installer un fichier `.xpi`](./media/install-add-on.png)
from file*. (Figure 3) \
- Sélectionner le fichier téléchargé.
![Menu «outils» de Zotero](../medias/menu-outils.png)
![Installer un fichier `.xpi`](../medias/install-add-on.png)
### Autres fonctionnalités de Better BibTeX
Better BibTeX propose des fonctionnalités plus avancées:
@ -222,8 +228,7 @@ Ces fonctionnalités ne seront pas décrites en détail dans ce document.
Les informations supplémentaires à ce sujet sont disponibles sur le site
<https://retorque.re/zotero-better-BibTeX/>.
## Configuer la compilation
## Configurer la compilation
Pour générer le fichier PDF à partir des sources `.tex` et `.bib`, il est
nécessaire de configurer le système de composition que l'on va utiliser. Il
@ -241,9 +246,10 @@ donc lui préciser lequel on utilise:
1. Menu Options.
1. Configurer Texmaker.
1. Dans l'onglet *Commandes*, chercher l'entrée *Bib(la)tex* et entrer `biber
%`. \
![Configuer Biber pour BibLaTeX](./media/texmaker-biber.png)
1. Dans l'onglet *Commandes*, chercher l'entrée *Bib(la)tex* et entrer
`biber %`. (Figure 4) \
![Configuer Biber pour BibLaTeX](../medias/texmaker-biber.png)
Lorsque l'on compile avec des références bibliographiques, il est nécessaire de
le faire quatre fois:
@ -252,6 +258,7 @@ le faire quatre fois:
1. Biber.
1. LaTeX.
1. LaTeX.
1. Afficher le PDF.
Heureusement Texmaker permet de configure une *Compilation rapide* qui lance
tout seul ces quatre itération:
@ -264,12 +271,12 @@ tout seul ces quatre itération:
Dans le cas de l'exercice présenté, une bonne solution est d'utiliser XeLaTeX.
Pour cela, il faut choisir l'option *Utilisateur* et utiliser l'assistant.
![Assistant de configuration de compil rapide](./media/compil-rapide-assistant.png)
![Assistant de configuration de compil rapide](../medias/compil-rapide-assistant.png)
Puis, dans l'assistant, sélectionner les commandes à ajouter, une à une, dans
l'ordre.
![Ajout des commandes](./media/compil-rapide-liste.png)
![Ajout des commandes](../medias/compil-rapide-liste.png)
Les outils comme Overleaf ou `tectonic`[^5] prennent eux-mêmes en charge ce
genre de complexité.
@ -332,7 +339,7 @@ la *cheatsheet*), pour les différents cas. La syntaxe est la suivante:
exemple `[voir]` permet d'obtenir `(voir Auteur, date)`.
- `[<post>]`, optionnel, ajoute du texte après l'appel à citation, comme un
numérotation de pages.
- `{<ke>}`, obligatoire, est la clé de citation indiquant de quelle référence
- `{<key>}`, obligatoire, est la clé de citation indiquant de quelle référence
il s'agit. Par exemple `{slaweckiParadigmsQualitativeResearch2018}`.
Voici les appels de citation les plus utiles:
@ -387,3 +394,4 @@ Sous Windows la commande ne prend qu'un tiret pour le paramètre:
kpsewhich -var-value TEXMFLOCAL
```
## Bibliographie

View File

@ -0,0 +1,79 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="$lang$" xml:lang="$lang$"$if(dir)$ dir="$dir$"$endif$>
<head>
<meta charset="utf-8" />
<meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
$for(author-meta)$
<meta name="author" content="$author-meta$" />
$endfor$
$if(date-meta)$
<meta name="dcterms.date" content="$date-meta$" />
$endif$
$if(keywords)$
<meta name="keywords" content="$for(keywords)$$keywords$$sep$, $endfor$" />
$endif$
$if(description-meta)$
<meta name="description" content="$description-meta$" />
$endif$
<title>$if(title-prefix)$$title-prefix$ $endif$$pagetitle$</title>
<style>
$styles.html()$
</style>
$for(css)$
<link rel="stylesheet" href="$css$" />
$endfor$
<link href="interface.css" rel="stylesheet" type="text/css" />
<script src="https://unpkg.com/pagedjs/dist/paged.polyfill.js"></script>
$for(header-includes)$
$header-includes$
$endfor$
$if(math)$
$math$
$endif$
</head>
<body>
$for(include-before)$
$include-before$
$endfor$
$if(title)$
<header id="title-block-header">
<h1 class="title">$title$</h1>
$if(subtitle)$
<p class="subtitle">$subtitle$</p>
$endif$
$for(author)$
<p class="author">$author$</p>
$endfor$
$if(date)$
<p class="date">$date$</p>
$endif$
$if(logo)$
<div class="logo">
$for(logo)$
<img src="$logo$" />
$endfor$
</div>
$endif$
$if(abstract)$
<div class="abstract">
$abstract$
</div>
$endif$
</header>
$endif$
$if(toc)$
<nav id="$idprefix$TOC" role="doc-toc">
$if(toc-title)$
<h2 id="$idprefix$toc-title">$toc-title$</h2>
$endif$
$table-of-contents$
</nav>
$endif$
$body$
$for(include-after)$
$include-after$
$endfor$
</body>
</html>