Subject: Coloration syntaxique de code LilyPond avec Pygments

From: Jean Abou Samra <[email-masked]>
Date: Mon, 22 Nov 2021 00:01:59 +0100

Bonjour à tous,

C'est avec plaisir que je vous informe que Pygments, un
outil Python de coloration syntaxique de code source,
prend désormais en charge le code LilyPond. Pygments est
utilisé un peu partout, on peut notamment s'en servir
dans des documents LaTeX avec le paquet minted, dans
de la documentation écrite avec Sphinx, sur les sites
Wordpress, … C'est aussi ce qu'utilise Wikipédia
(mais la fonctionnalité est encore fraîche, il faudra
un peu de temps avant que cela ne devienne disponible).

Comme c'est tout nouveau et pas encore dans une version
publiée, il faut pour l'instant installer Pygments depuis
le dépôt source. Avec pip, c'est très facile :

python3 -m pip install --user 
https://github.com/pygments/pygments/archive/master.zip

Pour être plus complet, il faut d'abord installer Python
et pip. Python est préinstallé sur la plupart des distributions
GNU/Linux, et les utilisateurs de macOS ou Windows
pourront le télécharger sur https://www.python.org/downloads/.
Ensuite, il faut pip, le gestionnaire de paquets Python.
Sous Ubuntu, c'est le paquet python3-pip (donc la commande
est « sudo apt install python3-pip »). Pour d'autres
distributions, je n'ai pas les noms exacts des paquets,
une recherche devrait suffire. Sous macOS ou Windows, essayez

python3 -m ensurepip --user

Pour finir, exécutez la première commande (python3 -m pip install ...).

Comme LilyPond est un langage un peu particulier, les
styles prédéfinis habituels de Pygments ne fonctionnent
pas bien dessus. Il faut configurer le style dédié
« lilypond ». Par exemple, voici quoi mettre dans
votre conf.py pour Sphinx :

highlight_language = "lilypond"
pygments_style = "lilypond"

Et voici un exemple avec LaTeX (lancer pdflatex avec
l'option -shell-escape) :

\documentclass{article}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\usepackage{minted}
\usemintedstyle{lilypond}

\begin{document}

\begin{minted}{lilypond}
\version "2.23.4"

\header {
   title = \markup \bold "Super !"
}

\relative { c' }
\addlyrics { "Voilà !" }
\end{minted}
\end{document}

Bref, avis aux amateurs, notamment à ceux qui écrivent
des documents pour former à LilyPond.

Cordialement,
Jean