projet: améliore la structure et le contenu

- Structure le projet de manière plus claire.
- Mets à jour le modèle, notamment le Makefile.
- Améliore la documentation.
- Mets à jour le document et le complète.

Co-Authored-by: iGor milhit <igor@milhit.ch>
printemps-2026 v0.1.0
iGor milhit 2026-01-27 12:18:03 +01:00
parent d10741460a
commit 19e5c12691
Signed by: igor
GPG Key ID: 692D97C3D0228A99
16 changed files with 241 additions and 52 deletions

1
.gitignore vendored
View File

@ -1,2 +1,3 @@
smpr-1er-partie.html smpr-1er-partie.html
*.pdf *.pdf
document.html

57
Makefile 100644
View File

@ -0,0 +1,57 @@
SOURCE_FOLDER := sources
OUTPUT_FILENAME := document
TEMPLATE_REPOSITORY := https://git.milhit.ch/igor/bunige-pagedjs-template/releases/download
# Liste les fichiers sources.
MD_UNSORTED := $(wildcard $(SOURCE_FOLDER)/*.md)
# Ordonne les fichiers sources sur la base du début numérique du nom des
# fichiers.
MD_SORTED := $(shell printf '%s\n' $(MD_UNSORTED) | sort -t- -k1,1n)
.PHONY: all
all: pdf
# Construit le fichier HTML.
.PHONY: html
html: $(MD_SORTED)
pandoc \
--to=html --standalone \
--template=static/template.html --css=static/style.css \
-V static='./static' \
--toc --toc-depth=2 \
--out=$(OUTPUT_FILENAME).html $(MD_SORTED)
# Construit le fichier PDF.
.PHONY: pdf
pdf: $(MD_SORTED)
pandoc \
--to=pdf --pdf-engine=pagedjs-cli --embed-resources=true \
--template=static/template.html --css=static/style.css \
-V noscript=true -V static='./static' \
--toc --toc-depth=2 \
--out=$(OUTPUT_FILENAME).pdf $(MD_SORTED)
# Reconstruit le fichier HTML à la modification des autres fichiers.
.PHONY: watch
watch:
watchexec -r -w . -i document.html \
-- make html
# Supprime les fichiers construits lorsqu'ils ne sont plus nécessaire.
.PHONY: clean
clean:
rm -f *.html *.pdf
# Lance un serveur web pour servir le HTML.
.PHONY: serve
serve:
watchexec -r -w . "python -m http.server"
# Mets à jour le modèle de document
# Usage: make update VERSION=v1.0.0
.PHONY: update
update:
curl -o modèle.zip $(TEMPLATE_REPOSITORY)/$(VERSION)/$(VERSION).zip
unzip -f -o modèle.zip
rm modèle.zip

View File

@ -1,5 +1,46 @@
# strats-smpr # [strats-smpr][1]
Support pour un cours donné aux internes du SMPR, en vue de la mise à jour de stratégies et d'articles scientifiques, sur la méthodologie de la recherche de littérature et l'utilisation de Zotero. Support pour un cours donné aux internes du SMPR, en vue de la mise à jour de
stratégies et d'articles scientifiques, sur la méthodologie de la recherche de
littérature et l'utilisation de Zotero.
Il s'agit ici d'une introduction rapide. Il s'agit ici d'une introduction rapide.
## Édition
Pour éditer le document, il faut modifier le fichier [smpr-1re-partie.md][2].
Il est au format Markdown et utilise les possibilités de pandoc-markdown, comme
expliqué dans la documentation du modèle.
## Génération du PDF
### Requis
- `pandoc` ([installation][3]).
- `pagedjs-cli` ([installation][4]).
- GNU make.
### Commande
```
make pdf
```
## Développement
Une fois les requis de la génération de PDF installés, les commandes suivantes
facilitent le développement:
- `make html` génère un fichier HTML. Une fois servi par un serveur web, il
permet de se rendre compte du résultat final et d'adapter les règles de
style.
- `make serve` lance un serveur à l'aide de python (qui doit être disponible).
- `make watch <filename>` génère la version HTML du fichier, et relance la
génération à chaque changement des fichiers utiles.
<!-- références -->
[1]: /
[2]: ./sources/smpr-1re-partie.md
[3]: https://pandoc.org/installing.html
[4]: https://gitlab.coko.foundation/pagedjs/pagedjs-cli#installation

BIN
modèle.zip 100644

Binary file not shown.

View File

@ -3,7 +3,7 @@ title: Revue de littérature et référencement
subtitle: Démarrage rapide subtitle: Démarrage rapide
creation_date: 2025-01-16T10:03:12+0100 creation_date: 2025-01-16T10:03:12+0100
id: 20250116100312 id: 20250116100312
date: printemps 2025 date: Printemps 2026
author: author:
- Igor Milhit - Igor Milhit
lang: fr lang: fr
@ -11,7 +11,24 @@ toc-title: Table des matières
tags: [tags] tags: [tags]
--- ---
&nbsp; ## Objectifs du document
Ce document a pour objectif de **préparer la session prochaine**, en:
- Rappelant les bases de:
- La revue de littérature.
- La citation et de la bibliographie.
- Listant les recommandations de la *Revue médicale suisse* pour les auteurs et
autrices.
- Expliquant l'intérêt de Zotero.
- Rappelant les principales bases de données pour la recherche de littérature.
- Listant les liens utiles.
- Indiquant comment accéder aux services de la bibliothèque.
Il n'est pas long à parcourir et sert de référence.
Le cours en présentiel portera sur la méthodologie de recherche, avec une démo
Pubmed et une brève démo de Zotero.
:::{#licence} :::{#licence}
![Logo de la licence CC BY-SA 4.0][1] \ ![Logo de la licence CC BY-SA 4.0][1] \
@ -20,8 +37,8 @@ tags: [tags]
## Liens utiles {#first-section} ## Liens utiles {#first-section}
- PubMed avec le *resolver* de l'UNIGE: [unige.ch/biblio/pubmed][5]. - **PubMed** avec le *resolver* de l'UNIGE: [unige.ch/biblio/pubmed][5].
- Explication d'**OpenAthens** pour accéder aux articles depuis les HUG ou - **OpenAthens** pour accéder aux articles depuis les HUG ou
depuis chez vous: \ depuis chez vous: \
<https://www.unige.ch/biblio/fr/infos/sites/cmu/information-membres-hug/acces>. <https://www.unige.ch/biblio/fr/infos/sites/cmu/information-membres-hug/acces>.
- **Commande d'article** qui ne font pas partie de nos collections (gratuit): - **Commande d'article** qui ne font pas partie de nos collections (gratuit):
@ -35,6 +52,10 @@ tags: [tags]
d'article: <https://registration.slsp.ch/?iz=unige>. d'article: <https://registration.slsp.ch/?iz=unige>.
- **Création du compte Switch edu-ID**. Gratuit et nécessaire pour - **Création du compte Switch edu-ID**. Gratuit et nécessaire pour
l'inscription à la bibliothèque: <https://eduid.ch/web/registration/1/>. l'inscription à la bibliothèque: <https://eduid.ch/web/registration/1/>.
- **Guide Vancouver** de la bibliothèque:
<https://www.unige.ch/biblio/index.php/download_file/22303/>.
- **Guide pour référencer l'usage «d'IA»**:
<https://unige.ch/-/biblio/referencer-iag>.
## Services de la bibliothèque ## Services de la bibliothèque
@ -50,19 +71,19 @@ Pour y accéder, le chemin depuis la page d'accueil de l'UNIGE est :
unige.ch / services / bibliothèque / site UNI CMU unige.ch / services / bibliothèque / site UNI CMU
``` ```
Puis, scroller jusqu'à trouver les deux blocs de la capture ci-dessous. Puis, *scroller* jusqu'à trouver les deux blocs de la capture ci-dessous.
L'autre solution est de chercher sur un moteur de recherche L'autre solution est de chercher *via* un moteur de recherche `unige
`unige bibliothèque cmu`. bibliothèque cmu`.
![Ressources et services de la bibliothèque][4] ![Ressources et services de la bibliothèque][4]
1. Lien vers PubMed, mais qui offre sur la page des articles un bouton qui 1. Lien vers PubMed un bouton qui
permet de rebondir sur le catalogue de la bibliothèque lorsque l'accès au permet de rebondir sur le catalogue de la bibliothèque lorsque l'accès au
*full text* n'est pas possible. (Voir la section [PubMed][12]) \ *full text* n'est pas possible. (Voir la section [PubMed][12]) \
Le lien suivant fonctionne aussi : [unige.ch/biblio/pubmed][5]. Le lien suivant fonctionne aussi : [unige.ch/biblio/pubmed][5].
1. Lien vers Embase. Sur abonnement, nécessite soit Open Athens, soit d'être 1. Lien vers Embase. Sur abonnement, nécessite soit OpenAthens, soit d'être
sur le réseau de l'UNIGE. sur le réseau de l'UNIGE (ou encore d'utiliser un compte Elsevier).
1. Informations utiles pour accéder aux ressources de la bibliothèque depuis 1. Informations utiles pour accéder aux ressources de la bibliothèque depuis
les HUG. les HUG.
1. Service d'aide à la recherche. Page proposant beaucoup de documentation, 1. Service d'aide à la recherche. Page proposant beaucoup de documentation,
@ -80,6 +101,9 @@ précédentes. Enfin, dans votre contexte, elle constitue le matériel pour la
mise à jour d'une stratégie, et pour la rédaction de l'article qui mise à jour d'une stratégie, et pour la rédaction de l'article qui
l'accompagne. l'accompagne.
Dans le contexte des *stratégies de médecine de premier recours*, la revue de
littérature est la base sur laquelle s'appuient leurs mises à jour.
## Citation et bibliographie ## Citation et bibliographie
La bibliographie de vos publications indique à la fois *l'étendue de vos La bibliographie de vos publications indique à la fois *l'étendue de vos
@ -96,11 +120,12 @@ La façon dont vous insérez des citations, avec leur «appel à citation
dont vous rédigez les références dans la bibliographie, dépend du *style de dont vous rédigez les références dans la bibliographie, dépend du *style de
citation*. Il est en général imposé par les éditeurs. citation*. Il est en général imposé par les éditeurs.
### Recommandations de la Rev Med Suisse ## Recommandations de la Rev Med Suisse
La *Revue médicale suisse* regroupe des recommandations aux auteurs et autrices La *Revue médicale suisse* regroupe des recommandations aux auteurs et autrices
sur la page [«Publier dans la revue»][6]. Les points 17 et 18 concernent les sur la page [«Publier dans la revue»][6] (dans l'entrée de menu «Revue
citations et la bibliographie: médicale suisse»). Les points 17 et 18 concernent les citations et la
bibliographie:
- Les appels à citation se font selon un style *numérique*, à l'aide d'un - Les appels à citation se font selon un style *numérique*, à l'aide d'un
chiffre arabe en exposant, par ordre d'apparition. chiffre arabe en exposant, par ordre d'apparition.
@ -113,12 +138,22 @@ citations et la bibliographie:
Pour le style Vancouver, vous pouvez consulter: Pour le style Vancouver, vous pouvez consulter:
- La [norme complète][7] en anglais, sur le site de la NLM.
- Le [guide de la bibliothèque][8], en français, au format PDF. - Le [guide de la bibliothèque][8], en français, au format PDF.
- La [norme complète][7] en anglais, sur le site de la NLM (si vous êtes
curieux/se).
Mais le mieux est d'utiliser le gestionnaire de références bibliographiques Mais le mieux est d'utiliser le gestionnaire de références bibliographiques
Zotero. Zotero.
::: {.warning}
La *Revue médicale suisse* a une [charte][15] concernant «l'IA» qui précise
les usages admis. La transparence quant à l'utilisation de ces outils est
exigée. \
La bibliothèque de l'UNIGE met à disposition un [guide][16] pour vous aider.
:::
## Gestionnaires de références bibliographiques ## Gestionnaires de références bibliographiques
Un *gestionnaire de références bibliographiques* est un logiciel qui facilite Un *gestionnaire de références bibliographiques* est un logiciel qui facilite
@ -148,19 +183,23 @@ Le principe est le suivant:
Sur le court terme, Zotero facilite la rédaction d'un travail. Sur le long Sur le court terme, Zotero facilite la rédaction d'un travail. Sur le long
terme, il peut devenir une partie de votre mémoire documentaire. terme, il peut devenir une partie de votre mémoire documentaire.
::: {.warning}
Zotero apporte des gains de temps substantiels, **à la condition** de le prendre Zotero apporte des gains de temps substantiels, **à la condition** de le prendre
en main **dès maintenant**. Des formations sont proposées par la en main **dès maintenant**. Des formations sont proposées par la
bibliothèque: \ bibliothèque: \
<https://www.unige.ch/biblio/fr/formation/rendez-vous-info-scientifique/zotero>. <https://www.unige.ch/biblio/fr/formation/rendez-vous-info-scientifique/zotero>.
:::
Pour démarrer, vous avez besoin: Pour démarrer, vous avez besoin:
1. D'installer, depuis la page [zotero.org/download][9]: 1. D'installer, depuis la page [zotero.org/download][9]:
1. Le logiciel Zotero. 1. Le logiciel Zotero.
1. Un connecteur pour votre navigateur web (Firefox, Safari, etc.). 1. Un connecteur pour votre navigateur web (Firefox, Safari, etc.).
1. De vous créer un compte sur [zotero.org][10], pour: 1. De vous créer un compte sur [zotero.org][10], pour:
1. Synchroniser votre bibliothèque de références avec le serveur de Zotero et 1. Synchroniser votre bibliothèque de références avec le serveur de Zotero
vos autres appareils. et vos autres appareils.
1. Travailler à plusieurs sur une bibliothèque de groupe. 1. Travailler à plusieurs sur une bibliothèque de groupe.
Un [guide rapide][11] existe sur le site de la documentation en français du Un [guide rapide][11] existe sur le site de la documentation en français du
@ -172,23 +211,23 @@ logiciel.
PubMed est une base de données, accessible librement, de littérature PubMed est une base de données, accessible librement, de littérature
biomédicale publiée dans des revues avec relecture par les pairs biomédicale publiée dans des revues avec relecture par les pairs
(*peer-review*). Elle contient, en janvier 2025, plus de 37 millions d'entrée, (*peer-review*). Elle contient, en janvier 2026, plus de 39 millions d'entrées.
chaque entrée était une référence ainsi que l'*abstract* lorsqu'il existe. Chaque entrée est une référence ainsi que l'*abstract* lorsqu'il existe.
*Medline* est la plus grande partie de PubMed et est constituée d'articles *Medline* est la plus grande partie de PubMed et est constituée d'articles
*indexés* à l'aide «de mots clés», les termes MeSH. Ce qui a pour conséquence *indexés* à l'aide «de mots clés», les termes MeSH. Les articles qui ne sont
que les articles qui ne sont pas indexés ne peuvent pas être trouvés seulement pas (encore) indexés ne peuvent pas être trouvés seulement en utilisant les
en utilisant les termes MeSH (dont l'usage est expliqué lors de la démo de termes MeSH (dont l'usage est expliqué lors de la démo de PubMed), mais impose
PubMed). \ l'ajout de termes de recherche en langage naturel. \
*PubMed Central* (PMC) est la partie de PubMed dont les *full texts* des *PubMed Central* (PMC) est la partie de PubMed dont les *full texts* des
articles sont librement accessibles. articles sont librement accessibles.
Il existe une URL pour utiliser une version de PubMed enrichie d'un bouton de Il existe une URL pour une version de PubMed avec un bouton de
l'UNIGE (un *resolver*), qui permet de cherche une référence dans le catalogue l'UNIGE (un *resolver*), qui permet de chercher une référence dans le catalogue
de la bibliothèque. C'est utile lorsque vous ne parvenez pas à obtenir le *full de la bibliothèque. C'est utile lorsque vous ne parvenez pas à obtenir le *full
text* de la référence. Le catalogue vous indique où vous pouvez l'obtenir si text* de la référence. Le catalogue vous indique où vous pouvez l'obtenir si
vous y avez droit, ou de le demander à la bibliothèque s'il ne fait pas partie vous y avez droit, ou de le demander à la bibliothèque s'il ne fait pas partie
de nos collection (Voir la [commande d'article][13], service gratuit). de nos collections (Voir la [commande d'article][13], service gratuit).
L'URL à utiliser est: L'URL à utiliser est:
@ -209,9 +248,9 @@ Des formations sont données par la bibliothèque sur PubMed : \
### Embase ### Embase
Embase est en partie équivalente à PubMed, mais est proposée par Elsevier sous Embase (<https://embase.com>) est en partie équivalente à PubMed, mais est
licence. Vous y accéder soit en étant dans le réseau de l'UNIGE, soit au moyen proposée par Elsevier sous licence. Vous y accédez soit en étant dans le réseau
d'OpenAthens. de l'UNIGE, soit au moyen d'OpenAthens.
Elle contient Medline, ainsi que plus de 3300 revues scientifiques Elle contient Medline, ainsi que plus de 3300 revues scientifiques
exclusivement couvertes par Embase. Parmi celles-ci se trouve bon nombre des exclusivement couvertes par Embase. Parmi celles-ci se trouve bon nombre des
@ -226,6 +265,45 @@ configurer des alertes.
Des formations sont données par la bibliothèque sur Embase: \ Des formations sont données par la bibliothèque sur Embase: \
<https://www.unige.ch/biblio/index.php?cID=1572>. <https://www.unige.ch/biblio/index.php?cID=1572>.
### Google Scholar
Google Scholar (<https://scholar.google.com>) est un moteur de recherche utile
pour trouver de la littérature scientifique. Il n'offre pas les mêmes
fonctionnalités de recherche avancée que Pubmed ou Embase, mais il permet
de trouver de la *littérature grise*, à savoir des rapports ou des bonnes
pratiques publiées par des hôpitaux ou des organisations internationales.
C'est un outil multidisciplinaire, aussi il peut être nécessaire de préciser
avec un concept supplémentaire que votre recherche concerne le domaine de la
santé.
Google Scholar offre depuis 2025 une interface permettant l'interrogation en
langage naturel: <https://scholar.google.com/scholar_labs/>. Il nécessite un
compte Google.
### Consensus
Consensus (<https://consensus.app>) est un outil de recherche basé sur
«l'intelligence artificielle», ou plus précisément sur des *modèles de
langage*. Comme le Google Scholar Labs, il permet des requêtes en langage
naturel. Ses recherches se font sur un corpus de publications scientifiques
(Semantic Scholar et des accords avec certains éditeurs).
En 2026, la Bibliothèque de l'UNIGE propose en test un accès à la version
«pro» de Consensus. Pour cela, il suffit de s'identifier avec une adresse
e-mail de l'UNIGE ou des HUG.
Ce genre d'outil est plus adapté à l'exploration d'un sujet qui n'est pas
encore maîtrisé et ne remplace pas une méthode rigoureuse de recherche dans
Pubmed, essentiellement pour deux raisons:
1. Le processus de sélection n'est ni transparent, ni reproductible.
1. La nature probabiliste du fonctionnement des modèles de langage ne permet
pas d'exclure la génération de texte erroné.
Ces critiques sont valables, à des degrés divers, pour tous les outils
utilisant des modèles de langage, y compris Google Scholar Labs.
<!-- références --> <!-- références -->
[^1]: La version gratuite du compte Zotero met à disposition 300 Mo d'espace [^1]: La version gratuite du compte Zotero met à disposition 300 Mo d'espace
@ -234,10 +312,10 @@ les *full texts* en PDF. De plus, pour augmenter l'espace disque à 2 Go (ce qui
est très confortable), le coût annuel n'est que de 20 USD. L'organisme qui est très confortable), le coût annuel n'est que de 20 USD. L'organisme qui
développe Zotero est à but non-lucratif. développe Zotero est à but non-lucratif.
[1]: ./static/by-sa.svg [1]: ./static/images/by-sa.svg
[2]: https://creativecommons.org/licenses/by-sa/4.0/deed.fr "Texte de la licence en français" [2]: https://creativecommons.org/licenses/by-sa/4.0/deed.fr "Texte de la licence en français"
[3]: https://git.milhit.ch/igor/strats-smpr [3]: https://git.milhit.ch/igor/strats-smpr
[4]: ./static/services-en-1-clic.png [4]: ./static/images/services-en-1-clic.png
[5]: https://unige.ch/biblio/pubmed [5]: https://unige.ch/biblio/pubmed
[6]: https://www.revmed.ch/publier-dans-la-revue [6]: https://www.revmed.ch/publier-dans-la-revue
[7]: https://www.ncbi.nlm.nih.gov/books/NBK7256/ [7]: https://www.ncbi.nlm.nih.gov/books/NBK7256/
@ -247,4 +325,6 @@ développe Zotero est à but non-lucratif.
[11]: https://docs.zotero-fr.org/quick_start_guide/ [11]: https://docs.zotero-fr.org/quick_start_guide/
[12]: #pubmed [12]: #pubmed
[13]: https://www.unige.ch/biblio/fr/infos/sites/cmu/information-membres-hug/commande-article [13]: https://www.unige.ch/biblio/fr/infos/sites/cmu/information-membres-hug/commande-article
[14]: ./static/resolver.png [14]: ./static/images/resolver-context.png
[15]: https://www.unige.ch/biblio/index.php/download_file/22303/
[16]: https://unige.ch/-/biblio/referencer-iag

View File

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

View File

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 154 KiB

View File

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

View File

Before

Width:  |  Height:  |  Size: 161 KiB

After

Width:  |  Height:  |  Size: 161 KiB

View File

@ -28,7 +28,7 @@
* bibliothèque de l'UNIGE. */ * bibliothèque de l'UNIGE. */
@top-right { @top-right {
content: ""; content: "";
background-image: url("static/bibliotheque-logo.svg"); background-image: url("images/bibliotheque-logo.svg");
background-position: right; background-position: right;
background-repeat: no-repeat; background-repeat: no-repeat;
background-size: 25%; background-size: 25%;
@ -85,7 +85,7 @@
margin: 2em auto 1em auto; margin: 2em auto 1em auto;
} }
.logo img { .logo img {
max-width: 50%; max-width: 25%;
padding: .5em; padding: .5em;
} }
@ -95,12 +95,6 @@
margin: 4em 0; margin: 4em 0;
} }
.subtitle {
/* Remove H2 rules */
color: unset;
text-decoration: none;
}
.authors { .authors {
display: flex; display: flex;
justify-content: center; justify-content: center;
@ -202,6 +196,7 @@
figure img { figure img {
max-width: 85%; max-width: 85%;
margin: 0 auto; margin: 0 auto;
max-height: 35vh;
} }
figcaption { figcaption {
text-align: center; text-align: center;
@ -213,13 +208,28 @@
content: "Figure " counter(figureNumber) ": "; content: "Figure " counter(figureNumber) ": ";
} }
.exercise { .exercise,
.warning {
background-color: #f2f1f1; background-color: #f2f1f1;
width: 90%; width: 90%;
margin: 0 auto; margin: 0 auto;
border: 2px solid #d80669; border: 2px solid #d80669;
border-radius: .5em; border-radius: .5em;
padding: 0 .5em; padding: .5em;
display: flex;
align-items: center;
}
.exercice > p,
.warning > p {
margin: 0;
padding-left: .5em;
}
.exercice::before,
.warning::before {
content: "⚠️";
font-size: larger;
} }
blockquote { blockquote {

View File

@ -31,9 +31,9 @@ $endfor$
when they are unnecessary. --> when they are unnecessary. -->
$if(noscript)$ $if(noscript)$
$else$ $else$
<link href="/interface.css" rel="stylesheet" type="text/css" /> <link href="$static$/interface.css" rel="stylesheet" type="text/css" />
<script src="/paged.polyfill.js"></script> <script src="$static$/paged.polyfill.js"></script>
<script src="/reload-in-place.js"></script> <script src="$static$/reload-in-place.js"></script>
$endif$ $endif$
$for(header-includes)$ $for(header-includes)$
$header-includes$ $header-includes$
@ -50,7 +50,7 @@ $if(title)$
<header id="title-block-header"> <header id="title-block-header">
<h1 class="title">$title$</h1> <h1 class="title">$title$</h1>
$if(subtitle)$ $if(subtitle)$
<h2 class="subtitle">$subtitle$</h2> <p class="subtitle">$subtitle$</p>
$endif$ $endif$
$if(author)$ $if(author)$
<div class="authors"> <div class="authors">