Site WWW de Laurent Bloch
Slogan du site

ISSN 2271-3905
Cliquez ici si vous voulez visiter mon autre site, orienté vers des sujets moins techniques.

Pour recevoir (au plus une fois par semaine) les nouveautés de ce site, indiquez ici votre adresse électronique :

Et maintenant la typographie :
ChatGPT m’aide à composer ma bibliographie
avec un coup de main de Stack Exchange et d’un collègue...
Article mis en ligne le 2 mai 2026
dernière modification le 4 mai 2026

par Laurent Bloch

Difficulté de composer une bibliographie

Après la conversion d’un certain nombre de programmes en TypeScript (avec l’aide de ChatGPT), je prépare la version TypeScript de mon manuel d’algorithmique et de programmation, qui devrait sortir en septembre. J’assure moi-même la composition du livre, parce que la mise en page de programmes n’est pas facile pour qui ne serait pas programmeur, même en LaTeX. L’éditrice en est d’accord, et elle a soumis ma copie à une relectrice diligente qui m’a renvoyé un PDF avec des centaines de propositions de corrections, pour la plupart acceptées.

Mais là où cela se corse, c’est pour la bibliographie : tous ceux qui ont essayé savent que c’est le plus difficile. Pas la biblio. d’un document de travail pour quelques collègues, non, celle pour un éditeur qui a une charte graphique et qui entend que l’on s’y tienne. Or là, j’avais tout à refaire, pour une cinquantaine de références. Pas question de faire à la main, d’ailleurs il suffit d’ouvrir un fichier .bbl pour reculer terrifié. Paramétrer ? J’utilise BibLaTeX, dont la documentation compte 362 pages, toutes aussi incompréhensibles les unes que les autres. Alors comment faire ? J’ai demandé à ChatGPT, qui m’a donné pas mal de pistes, mais n’a pas tout trouvé, alors Stack Exchange a donné le petit complément d’indice qui m’a permis d’obtenir un résultat presque conforme aux souhaits de l’éditrice et de la relectrice.

Voilà comment cela s’est passé :

La question

Bonsoir ChatGPT,

Pour un livre en préparation je crée une bibliographie avec Zotero [1]. J’exporte la bibliographie vers BibLaTeX selon le modèle Chicago Manual of Style 18th edition (shortened notes and bibliography), ce qui crée le fichier de configuration .bcf, soit TypeScript.bcf, et le fichier bibliographie proprement dit TypeScript.bib.

Voici une entrée de TypeScript.bib :

@book{aho_compilers_1986,
   location = {Reading, Massachusetts},
   title = {Compilers: Principles, Techniques, and Tools},
   publisher = {Addison-Wesley},
   author = {Aho, Alfred V. and Sethi, Ravi and Ullman, Jeffrey D.},
   date = {1986},
   }

qui s’affiche ainsi dans le fichier PDF (balise pour italique :

[2] Alfred V. AHO, Ravi SETHI et Jeffrey D. ULLMAN.
Compilers : Principles, Techniques, and Tools. Reading, Massachusetts : Addison-Wesley, 1986.

alors que l’éditeur voudrait :

[2] AHO (Alfred V.), SETHI (Ravi) et ULLMAN (Jeffrey D.), Compilers : Principles, Techniques, and Tools. Reading, Massachusetts, Addison-Wesley, 1986.

Zotero a-t-il un modèle qui donnerait ce résultat ? Si oui, lequel ?

Merci de toute piste !

Réponse 1

Court verdict : non, Zotero n’a pas de style prêt à l’emploi qui produise exactement cette forme “NOM (Prénom)” — surtout avec cette ponctuation très française. Les styles Zotero (CSL) comme Chicago 18th (notes & bibliography) sont assez normés et ne couvrent pas ce cas précis.

Cela dit, vous avez deux voies réalistes, selon où vous voulez faire l’ajustement :

1) Le bon niveau pour corriger : BibLaTeX (recommandé)

Puisque vous exportez déjà en BibLaTeX, le plus propre est de laisser Zotero tranquille et de personnaliser le style côté LaTeX.

Avec BibLaTeX, vous pouvez redéfinir le format des noms. Par exemple, pour obtenir :

AHO (Alfred V.), SETHI (Ravi) et ULLMAN (Jeffrey D.)

il faut modifier les macros de noms, typiquement avec quelque chose comme :

\DeclareNameFormat{author}{%
  \nameparts{#1}%
  \mkbibnamefamily{\MakeUppercase{\namepartfamily}}%
  \addspace
  \mkbibparens{%
    \namepartgiven%
    \ifblank{\namepartprefix}{}{\addspace\namepartprefix}%
  }%
  \ifthenelse{\value{listcount}<\value{liststop}}
    {\addcomma\space}
    {}%
}

Et adapter le séparateur final :

\renewcommand*{\finalnamedelim}{\addspace et\space}

👉 Avantages :

vous gardez Zotero standard,
vous contrôlez exactement le rendu demandé par l’éditeur,
solution robuste pour tout le document.

Conclusion

❌ Zotero seul : pas de style exact.

⚠️ CSL : possible mais pénible et limité.

✅ BibLaTeX : solution propre et recommandée (vous êtes déjà au bon endroit).

Étape 2

Je peux facilement adapter si votre éditeur demande aussi :

petites capitales au lieu de MAJUSCULES
suppression des prénoms multiples
inversion ville/éditeur
ajout de collection, édition, DOI, etc.
format pour articles, chapitres, thèses…

Si vous avez un exemple complet de bibliographie de l’éditeur, je peux vous produire un style 100 % conforme (tous types de documents, pas seulement les livres).

LB : Dans quel fichier puis-je mettre les commandes indiquées ? Je préfère ne pas alourdir mon préambule.

Très bonne question — et vous avez raison de vouloir garder un préambule propre.

La solution idiomatique avec BibLaTeX est de déporter toutes ces redéfinitions dans un fichier de style personnalisé.

✅ Solution recommandée : un fichier .bbx

Créez un fichier, par exemple :

mystyle.bbx

avec le contenu suivant :

\ProvidesFile{mystyle.bbx}

\RequireBibliographyStyle{numeric}

% --- Auteurs : NOM (Prénom) ---
\DeclareNameFormat{author}{%
  \nameparts{#1}%
  \mkbibnamefamily{\MakeUppercase{\namepartfamily}}%
  \addspace
  \mkbibparens{%
    \namepartgiven%
    \ifblank{\namepartprefix}{}{\addspace\namepartprefix}%
  }%
  \ifthenelse{\value{listcount}<\value{liststop}}
    {\addcomma\space}
    {}%
}

% --- "et" final ---
\renewcommand*{\finalnamedelim}{\addspace et\space}

% --- Virgule après auteurs ---
\renewcommand*{\labelnamepunct}{\addcomma\space}

% --- Titre en italique ---
\DeclareFieldFormat[book]{title}{\mkbibemph{#1}}

% --- Format livre ---
\DeclareBibliographyDriver{book}{%
  \printnames{author}%
  \newunit\newblock
  \printfield[title]{title}%
  \newunit
  \printlist{location}%
  \addcomma\space
  \printlist{publisher}%
  \addcomma\space
  \printfield{year}%
  \finentry
}

📄 Dans votre document principal

Préambule minimal :

\usepackage[
  backend=biber,
  style=mystyle,
  sorting=none
]{biblatex}

\addbibresource{TypeScript.bib}

👉 Et c’est tout. Votre préambule reste propre.

Étape 3 : vice de BibLaTeX

La configuration de l’étape précédente ne fonctionnait pas pour une raison très vicieuse. ChatGPT et moi avons cherché pendant des heures. Stack Exchange m’a mis sur la piste, franchement peu visible.

Le fichier de configuration d’ensemble de la bibliographie a une extension .bbx. Le fichier de configuration des citations a une extension .cbx.

Si je veux configurer les deux, la bibliographie et les citations, je dois écrire, par exemple :

\usepackage[
  backend=biber,
  style=mystyle,
  sorting=none
]{biblatex}

et alors je DOIS fournir un fichier mystyle.bbx ET un fichier mystyle.cbx.

Si je ne veux pas m’intéresser au format des citations, et seulement à celui de la bibliographie, c’est-à-dire fournir uniquement un fichier mystyle.bbx ET PAS de fichier mystyle.cbx, alors la syntaxe pour le chargement de BibLaTeX change, ainsi :

\usepackage[
  backend=biber,
  bibstyle=mystyle, % vu, bibstyle ?
  sorting=none
]{biblatex}

C’est le genre de détail qui montre le sadisme absolu.

Finalement, mon fichier mystyle.bbx (sans oublier \endinput, autre petit piège) :

\ProvidesFile{mon-style.bbx}

\RequireBibliographyStyle{numeric}

% --- Auteurs : NOM (Prenom) ---
\DeclareNameFormat{author}{%
  \nameparts{#1}%
  \textsc{\MakeUppercase{\namepartfamily}}%
  \addspace
  (%
    \namepartgiven%
    \ifblank{\namepartprefix}{}{\addspace\namepartprefix}%
  )%
  \ifthenelse{\value{listcount}<\value{liststop}}
    {\addcomma\space}
    {}%
}

% --- "et" final ---
\renewcommand*{\finalnamedelim}{\addspace et\space}

% --- Virgule apres auteurs ---
\renewcommand*{\labelnamepunct}{\addcomma\space}

% --- Titre en italique ---
\DeclareFieldFormat[book]{title}{\mkbibemph{#1}}

% --- Format livre ---
\DeclareBibliographyDriver{book}{%
  \printnames{author}%
  \newunit\newblock
  \printfield[title]{title}%
  \newunit
  \printlist{location}%
  \addcomma\space
  \printlist{publisher}%
  \addcomma\space
  \printfield{year}%
  \finentry
}

\endinput

Encore quelques questions non résolues...

Bon, il y a encore des choses qui ne fonctionnent pas :

 quand il y a plusieurs auteurs, leurs noms sont séparés par des virgules : je voudrais que pour le dernier auteur la virgule soit remplacée par la conjonction de ccordination et ; normalement la commande :

\renewcommand*{\finalnamedelim}{\addspace et\space}

est censée faire ça, mais visiblement je n’ai pas dû l’écrire là où il fallait ;
 les titres d’articles de revues sont en romain entre doubles quotes anglo-saxonnes, que je voudrais remplacer par des guillemets français, sans savoir comment faire.

Peut-être un lecteur me dépannera-t-il, sinon je remets mon sort à l’indulgence de l’éditrice et de la relectrice.

Finalement résolues avec l’aide d’un lecteur !

La publication de cet article a suscité une réponse de Bastien Dumont, qui affirme ne pas être spécialiste de BibLaTeX, mais qui en tout cas s’est montré plus persévérant et plus perspicace que moi :

« Comme je t’ai vu ce matin peiner avec BibLaTeX et ChatGPT, et ayant eu moi-même maints déboires avec les bibliographies (en utilisant Zotero, plus facile mais bien moins puissant que BibLaTeX, car je suis hélas obligé de produire du DOCX), je t’ai concocté une version améliorée du programme. J’ai procédé essentiellement en regardant comment est implémenté et utilisé \finalnamedelim dans le source de BibLaTeX.

Le problème dans le code de ChatGPT est qu’il réimplémentait entièrement la macro qui met en forme les auteurs au lieu de faire des redéfinitions à un niveau plus fin en utilisant les briques de base de BibLaTeX, ce qui semble être assez courant avec les LLM d’après ce que j’ai lu ailleurs. De ce fait, la macro \finalnamedelim n’était pas du tout utilisée, raison pour laquelle sa redéfinition ne produisait aucun effet. De même, il ajoutait une virgule systématiquement après chaque nom, ce qui permettait d’avoir une virgule entre le dernier nom et le titre, mais était incompatible avec le « et » entre l’avant-dernier et le dernier auteur. À force de bricoler son propre code, ChatGPT a aussi fini par produire au moins une absurdité : \textsc{\MakeUppercase}. Comme tu le verras, le code corrigé par un humain en étudiant (un peu) le manuel et (surtout) les fichiers sources de BibLaTeX en utilisant abondamment rgrep est plus élégant, de plus haut niveau… et surtout, il fonctionne (au moins sur ton exemple de test). Le tout en moins d’une heure.

Pour les guillemets, le manuel de BibLaTeX dit qu’il suffit de charger csquotes.

Bon travail pour ton livre  ! J’ai moi-même soumis le manuscrit de la version révisée de ma thèse il y a trois semaines, j’ai encore fort à faire mais au moins le processus d’évaluation et d’édition est lancé… »

Et voilà le fichier de configuration mon-style.bbx, qui donne effectivement le résultat escompté :

\ProvidesFile{mon-style.bbx}

\RequireBibliographyStyle{numeric}

% --- Auteurs : NOM (Prenom) ---

\DeclareDelimFormat{finalnamedelim}{\addspace et\space}
\DeclareDelimFormat{multinamedelim}{,\space}

\DeclareNameFormat{author}{%
  \usebibmacro{name:delim}{#1}%
  \nameparts{#1}%
  \textsc{\namepartfamily}%
  \addspace (\namepartgiven)%
}

% --- Virgule apres auteurs ---
\DeclareDelimFormat{nametitledelim}{,\space}

% --- Titre en italique ---
\DeclareFieldFormat[book]{title}{\mkbibemph{#1}}

% --- Format livre ---

\DeclareBibliographyDriver{book}{%
  \printnames{author}%
  \nametitledelim
  \printfield[title]{title}%
  \newunit \printlist{location}%
  \addcomma\space \printlist{publisher}%
  \addcomma\space \printfield{year}%
  \finentry
}

\endinput

Merci Bastien !