A place to cache linked articles (think custom and personal wayback machine)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

index.md 22KB

title: Écrire ou coder l’éditorial url: https://www.lobrassard.net/carnet/2024-03-22-ecrire-coder-editorial.html hash_url: bb9ae7eeac archive_date: 2024-03-25 og_image: https://www.lobrassard.net/img/couverture.png description: Carnet de recherche de Louis-Olivier Brassard. favicon: data:;base64,iVBORw0KGgo= language: fr_FR

À la Chaire de recherche du Canada sur les écritures numériques, on travaille (notamment) sur la revue Sens public. Le défi du jour consistait à adapter la présentation d’extraits de poésie en grec ancien selon le contexte, ainsi qu’une numérotation des lignes sous forme d’annotation. Je ne connais rien au grec ancien ni à la poésie qui s’y rattache (et je me doute que c’est le cas pour bien des gens !), mais il me semble que la démarche éditoriale mise en pratique ici (qui consiste en un dialogue interdisciplinaire) mérite qu’on s’y intéresse un tout petit moment.

L’édition (systématique) des distiques élégiaques

Examinons un distique élégiaque, dont voici une source au format texte brut :

Νῦν μοι "Χαῖρε" λέγεις, ὅτε σου τὸ πρόσωπον ἀπῆλθεν  
  κεῖνο τὸ τῆς λύγδου, βάσκανε, λειότερον·  
νῦν μοι προσπαίζεις, ὅτε τὰς τρίχας ἠφάνικάς σου  
  τὰς ἐπὶ τοῖς σοβαροῖς αὐχέσι πλαζομένας.

Le premier vers est en hexamètre, le deuxième est en pentamètre ; le troisième vers est en hexamètre, le quatrième en pentamètre ; etc. Il y a un patron : les vers impairs sont en hexamètre ; les vers pairs sont en pentamètre et devront de surcroît apparaître en retrait.

Au niveau du code, j’ai pensé systématiser la présentation visuelle pour toujours mettre en retrait les lignes paires d’un poème balisé comme tel. Seul hic : il est possible que les éditrices choisissent de tronquer un poème pour n’en montrer qu’un extrait, si bien qu’un style automatisant la mise en forme des lignes selon une règle de type pair/impair ne reflètera pas nécessairement la réalité. Il fallait donc que les éditrices puissent avoir la main sur la présentation des poèmes. Faudrait-il leur donner la possibilité de mettre en retrait n’importe quel vers?

WYSIWYM à la rescousse

La chaîne éditoriale de Sens public repose sur un processus de révision scientifique, mais aussi technique, et celui-ci commence à être éprouvé depuis de nombreuses années. Ce processus a pris la forme d’un projet de recherche : Stylo, un éditeur de texte pensé pour les sciences humaines.

La plateforme propose de saisir un corps de texte au format Markdown. Celui-ci sera traité avec le logiciel pandoc, créé par le philosophe John MacFarlane. Cela est bon à savoir, car le corps du texte pourra utiliser une syntaxe à la « saveur » de Pandoc. C’est précisément cette saveur qui nous permettra de baliser le texte avec des éléments qui seront pour nous sémantiques, suivant le paradigme du what you see is what you mean (WYSIWYM) : écrivez, balisez explicitement ce que vous voulez dire.

La mise en retrait des vers en pentamètre a une valeur sémantique : elle est contextuellement, sémantiquement liée à un type de vers bien spécifique (le pentamètre). Sauf qu’en édition, et éventuellement dans le contexte des éditions critiques, mieux vaut prendre le problème à l’envers de « l’intuition visuelle » : ce n’est pas parce qu’un vers est indenté qu’il devient un pentamètre, mais c’est bien parce que c’est un pentamètre qu’il devra apparaître en retrait.

Exemple de vers d’un distique élégiaque dans l’édition courante. Les lignes paires sont mises en retrait.

Plutôt que de permettre aux éditrices d’apporter une correction visuelle arbitraire et ad hoc, nous avons opté pour une forme de balisage sémantique. Ce qui a semblé naturel, c’était de marquer à l’aide d’un balisage simple et explicite ; en somme, de les nommer. Ainsi, en utilisant la fonctionnalité bracked_spans de Pandoc pour le Markdown (balisage de type [texte]{.classe}), nous pouvons marquer chaque ligne explicitement comme étant un hexamètre ou un pentamètre.

[Lorem ipsum dolor sit amet si]{.hexametre}  
  [Vade ma vaecum]{.pentametre}  
[Lorem ipsum dolor sit amet si]{.hexametre}  
  [Vade ma vaecum]{.pentametre}  

<!-- 
  Note: la «mise en retrait» effectuée dans le texte
  source au format Markdown n'a aucun impact dans le rendu
  final, et n'est utilisé qu'à titre de démonstration.
-->

Grâce à cette syntaxe, nous avons indiqué un surcroît d’information sans pour l’instant affecter le rendu visuel. On rend ainsi possible la systématisation d’une (éventuelle) règle d’affichage en fonction du sens, de la sémantique du balisage.

Une ligne de CSS (mais non la moindre)

La syntaxe utilisée pour baliser les vers n’a pas été choisie au hasard : elle permet d’indiquer une « classe » sur un passage du texte. Une classe fonctionne un peu comme un système d’étiquettes ou de catégories : chaque élément balisé du document peut en avoir une seule, ou plusieurs.

Une classe permet d’appliquer un style de manière systématique pour tous les éléments qui ont cette classe. Pour les documents web, la présentation visuelle est décrite séparément de la structure du document, grâce aux feuilles de style au langage CSS.

Pour régler l’affichage des pentamètres en retrait, voici le morceau de solution que je propose (les quelques lignes de code fonctionnel sont précédées de plusieurs lignes de prose qui éclairent le contexte) :

/**
 * Dans l'édition des distiques élégiaques, une ligne
 * en pentamètre est visuellement mise en retrait.
 * 
 * Nous y appliquons une «marge» intérieure de `2em`
 * (`1em` correspond à la largeur d'un cadratin).
 * 
 * On utilise la propriété `margin-inline-start` pour
 * appliquer le retrait en fonction de la direction
 * naturelle du texte dans son contexte linguistique
 * (de gauche à droite en français, mais cela pourrait
 * être de droite à gauche en yiddish).
 */
.pentametre {
  margin-inline-start: 2em;
}

Et voilà !

Résultat visuel d’un poème dont on a balisé les lignes en pentamètre (avec mise en retrait uniforme).

Un autre défi éditorial : la numérotation des lignes

Les éditrices souhaitaient afficher le numéro de certaines lignes, comme cela se fait habituellement dans l’édition de ce type de texte (le distique élégiaque). La numérotation se fait aux lignes par bonds de cinq :

Νῦν μοι "Χαῖρε" λέγεις, ὅτε σου τὸ πρόσωπον ἀπῆλθεν  
  κεῖνο τὸ τῆς λύγδου, βάσκανε, λειότερον·  
νῦν μοι προσπαίζεις, ὅτε τὰς τρίχας ἠφάνικάς σου  
  τὰς ἐπὶ τοῖς σοβαροῖς αὐχέσι πλαζομένας.  
μηκέτι μοι, μετέωρε, προσέρχεο μηδὲ συνάντα 5 <!-- Numéro -->  
  ἀντὶ ῥόδου γὰρ ἐγὼ τὴν βάτον οὐ δέχομαι.  
Anti-exemple de numérotation
Exemple d’une mise en forme des numéros de ligne qu’on voudrait éviter : les numéros ne sont pas alignés (et ont sans doute été insérés à même le texte à citer). Anti-exemple envoyé par Mathilde V.

Si les éditrices ajoutent le numéro de vers directement dans le texte, celui-ci apparaîtra au bout de la ligne, comme s’il faisait partie du poème. De plus, les vers n’ont pas la même largeur (ils n’ont pas la même métrique et le nombre de caractères est rarement le même) : les nombres ne seront pas alignés, ce qui n’est ni pratique ni visuellement harmonieux.

Solution ? Marquer l’intention de numérotation avec une balise « invisible » : un attribut data-numerotation="" inscrit sur la ligne que l’on souhaite numéroter. La numérotation des lignes se fait « manuellement », puisque ce sont souvent des extraits qui sont présentés et qui peuvent être tronqués.

<!-- 
  La numérotation (qui prendra une mise en forme
  particulière) sera appliquée sur la ligne qui est
  marquée de l'attribut `data-numerotation`.
 -->

[μηκέτι μοι, μετέωρε, προσέρχεο μηδὲ συνάντα]{data-numerotation="15"}  
  ἀντὶ ῥόδου γὰρ ἐγὼ τὴν βάτον οὐ δέχομαι.  

La mise en forme, traitée séparément de la structure logique du document, se fait aisément avec quelques propriétés CSS :

  1. afficher le numéro de la ligne depuis un attribut (une « métadonnée ») ;
  2. conserver un espace minimal pour que le texte ne vienne jamais se coller au numéro ;
  3. envoyer le numéro à la fin de la ligne, peu importe si nous sommes dans une langue qui s’écrit gauche à droite ou de droite à gauche ;
  4. ajuster l’apparence pour distinguer visuellement (mais subtilement) la numérotation du reste du texte.
/**
 * L'attribut `data-numerotation=""` permet de
 * renseigner le numéro d'une ligne.
 * 
 * Usage (HTML):
 * 
 * <span data-numerotation="25">Une ligne d'un poème</span>
 */
[data-numerotation]::before {
  /* 
    La propriété `content` des pseudo-éléments permet
    d'afficher du contenu supplémentaire à l'écran,
    mais sans faire partie du «contenu» du document.
    Pour afficher le numéro entre parenthèses:
    content: '(' attr(data-numerotation) ')';
  */
  content: attr(data-numerotation);
  
  /* Conservons un espacement minimal avec le texte */
  margin-inline-start: 1em;
  
  /* Le numéro «flotte» à la fin de la ligne */
  float: inline-end;
  
  /* Mise en forme qui distingue le numéro du corps */
  opacity: .75;
}
Résultat visuel d’un poème dont on a balisé la ligne pour la numérotation (ici, la ligne 5).

Puisque nous utilisons un « pseudo-élément » pour afficher la numérotation (c’est-à-dire l’élément ::before, qui n’est pas présent dans la source du document, mais qui est ajouté par le navigateur web au moment de la consultation), l’usager qui mettrait le texte en surbrillance avec sa souris pour le copier sélectionnera uniquement le texte, pas le numéro. Pratique !

Démonstration du code dans un cadre embarqué (voir sur CodePen).

Penser les besoins

Bref, il s’agit de modéliser le mieux possible les besoins éditoriaux pour ensuite – et seulement ensuite ! – réunir les ingrédients techniques. (On voit souvent le contraire arriver en pratique : on plaque des solutions existantes sans nécessairement tenir compte des spécificités propres à un problème, un contexte, une communauté.) Il existe souvent plusieurs solutions possibles, plusieurs morceaux de code différents qui produisent, à première vue, un effet similaire ; sauf que les démarches ne se valent pas toutes, et c’est justement en tenant compte du contexte particulier qu’on peut trouver chaussure à son pied (ou à celui des autres).