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 :

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. 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.