ConTeXt/TEI-XML et Poésie : strophes, vers, bilinguisme, apparat critique
|
Part. III, ch. 9 • TEI-XML et poésie • Sommaire |
ConTeXt/TEI-XML et Poésie : strophes, vers, bilinguisme et apparat critique
[modifier | modifier le wikicode]La poésie représente un cas éditorial particulier dans les flux XML→PDF. Les vers doivent conserver leurs coupures, les strophes leur structure visuelle, et les éditions savantes introduisent souvent des traductions en regard, une numérotation précise, voire un apparat critique. Grâce à son moteur XML intégré et à sa logique déclarative, ConTeXt LMTX permet de transformer un fichier TEI-XML poétique en une mise en page élégante et robuste, qu’il s’agisse d’un poème simple ou d’une édition bilingue avec commentaires.

Objectifs de cette page
- Mapper les balises TEI
<lg>(strophe) et<l>(vers) vers des environnements ConTeXt. - Produire automatiquement des vers correctement alignés et mis en forme.
- Générer une édition bilingue (VO/VF) à partir d’un seul fichier XML.
- Ajouter un apparat critique (notes, variantes) au niveau des vers.
- Organiser plusieurs niveaux de commentaires grâce aux
xmlsetups.
1. Structure TEI d’un poème
[modifier | modifier le wikicode]La structure poétique TEI la plus courante est :
<lg type="stanza">
<l>Premier vers</l>
<l>Deuxième vers</l>
<l>Troisième vers</l>
</lg>
Avec éventuellement :
@npour numéroter,@xml:langpour distinguer VO / VF,<note>à l’intérieur d’un vers,<app>+<lem>/<rdg>pour un apparat critique.
2. Exemple TEI de base : une strophe simple
[modifier | modifier le wikicode]Voici un fichier TEI minimal, utilisable immédiatement :
<!-- fichier : poem.xml -->
<TEI xml:lang="fr">
<text>
<body>
<lg type="stanza">
<l>Rien n’est plus doux que le silence,</l>
<l>quand la maison retient son souffle,</l>
<l>et que, derrière les vitres,</l>
<l>la pluie polit les heures.</l>
</lg>
</body>
</text>
</TEI>
3. Transformer le TEI en vers avec ConTeXt
[modifier | modifier le wikicode]Nous utilisons \definelines pour que ConTeXt rende les vers tels qu’ils apparaissent dans le XML.
% fichier : poem-tei.tex
\setuppapersize[A5]
\setupbodyfont[modern,11pt]
% Environnement "poème"
\definelines[poeme]
\setuplines[poeme][number=no]
% --- SETUP XML ---
\startxmlsetups xml:poem
\xmlsetsetup{#1}{lg}{xml:strophe}
\xmlsetsetup{#1}{l}{xml:vers}
\stopxmlsetups
\xmlregistersetup{xml:poem}
% Strophes
\startxmlsetups xml:strophe
\startpoeme
\xmlflush{#1}
\stoppoeme
\blank[medium]
\stopxmlsetups
% Vers
\startxmlsetups xml:vers
\xmlflush{#1}\par
\stopxmlsetups
\starttext
\xmlprocessfile{main}{poem.xml}{}
\stoptext
4. Poésie bilingue : VO + VF à partir d’un seul fichier TEI
[modifier | modifier le wikicode]Le TEI permet de placer l’original et la traduction dans la même structure. Exemple :
<lg>
<l xml:lang="en">When I have fears that I may cease to be</l>
<l xml:lang="fr">Quand je crains de mourir avant d’avoir écrit</l>
<l xml:lang="en">Before my pen has gleaned my teeming brain,</l>
<l xml:lang="fr">Avant que mon esprit foisonnant ne se déploie,</l>
</lg>
4.1. Mapping double : VO à gauche, VF à droite
[modifier | modifier le wikicode]% fichier : poem-bilingual.tex
\setuppapersize[A4]
\setupbodyfont[modern,11pt]
\definelines[VO]
\definelines[VF]
\setupcolumns[n=2, balance=yes, distance=1.2cm]
\startxmlsetups xml:poem
\xmlsetsetup{#1}{lg}{xml:stanza}
\xmlsetsetup{#1}{l[@xml:lang='en']}{xml:versVO}
\xmlsetsetup{#1}{l[@xml:lang='fr']}{xml:versVF}
\stopxmlsetups
\xmlregistersetup{xml:poem}
% Strophe → deux colonnes parallèles
\startxmlsetups xml:stanza
\startcolumns
\startVO \xmlfilter{#1}{.//l[@xml:lang='en']} \stopVO
\column
\startVF \xmlfilter{#1}{.//l[@xml:lang='fr']} \stopVF
\stopcolumns
\blank[medium]
\stopxmlsetups
\starttext
\xmlprocessfile{main}{poem.xml}{}
\stoptext
5. Apparatus criticus : notes et variantes TEI
[modifier | modifier le wikicode]Le TEI propose :
<app>
<lem>texte de base</lem>
<rdg wit="#A">variante A</rdg>
<rdg wit="#B">variante B</rdg>
</app>
Nous pouvons rendre un apparat sous forme de note :
\startxmlsetups xml:vers
\xmlflush{#1}%
\xmlfilter{#1}{app/lem/text()}%
\xmlfilter{#1}{app/rdg -> xml:variant}%
\par
\stopxmlsetups
\startxmlsetups xml:variant
\footnote{Variante : \xmlflush{#1}}
\stopxmlsetups
5.1 Exemple minimal : VO/VF + commentaire en notes de bas de page
[modifier | modifier le wikicode]Avant de passer à l’exemple complet en trois colonnes (VO / VF / commentaire), il est utile de disposer d’un exemple intermédiaire très simple : VO + VF en colonnes, et un bloc de commentaire TEI transformé en notes.

Objectif.
Montrer comment on structure un poème TEI en trois blocs (orig, trans, comm) ;
- on produit une édition VO/VF en colonnes ;
- on transforme le bloc
<lg type="comm">en notes automatiques.
5.1.1 Fichier ConTeXt minimal
[modifier | modifier le wikicode]- On rédige donc en parallèle — et dans le même répertoire — un fichier TeX (avec TeXWorks, ou autre, et en UTF8 !) + un fichier XML :
- Nom du fichier TEX :
mwe-xmltei-poem.tex. Il s'agit d'analyser un poème en anglais, de le traduire en Français et de fournir des commentaires (VO/VF + commentaires → notes). Le fichier XML pourra s'appelerpoem.xml. Ici on a décidé de mettre le fichier XML enbuffer(en mémoire tampon, ce qui évite d'avoir deux fichiers séparés à deux endroits différents sur cette page; mais vous pouvez les séparer pour votre test) :
\setuppapersize[A4]
\setupTABLE[frame=off]
\setupTABLE[column][1][width=.1\textwidth]
\setupTABLE[column][2][width=.450\textwidth]
\setupTABLE[column][3][width=.45\textwidth]
\startbuffer[poem] % ici on a décidé d'écrire le fichier xml en mémoire tampon
<?xml version="1.0" encoding="UTF-8"?>
<TEI>
<text>
<body>
<lg type="stanza">
<lg type="orig">
<!-- Première strophe : démonstration note + apparatus -->
<l>First light touches the closed houses,</l>
<l>and the street breathes a pale memory.</l>
</lg>
<lg type="trans">
<!-- Traduction : démonstration note + apparatus -->
<l>La première lumière effleure les maisons closes,</l>
<l>et la rue respire une mémoire pâle.</l>
</lg>
<lg type="comm">
<l>light] atmospheric motif in the poem.</l>
<l>memory] semantic key recurring in several stanzas.</l>
</lg>
</lg>
</body>
</text>
</TEI>
\stopbuffer
\startxmlsetups xml:main
\xmlsetsetup{#1}{*}{xml:*}
\stopxmlsetups
\xmlregistersetup{xml:main}
\startxmlsetups xml:TEI
\xmlcommand{#1}{text/body/lg[@type='stanza']}{xml:stanza}
\stopxmlsetups
\startxmlsetups xml:original
\language[french]
\xmltext{#1}
\stopxmlsetups
\startxmlsetups xml:translation
\language[french]
\xmltext{#1}
\stopxmlsetups
\startxmlsetups xml:comment
\footnote{\xmltext{#1}}
\stopxmlsetups
\startxmlsetups xml:stanza
\bTABLE
\bTR
\bTH line \eTH
\bTH original \eTH
\bTH translation \eTH
\eTR
\dorecurse {\xmlcount{#1}{./lg[@type='orig']/l}} {
\bTR
\bTD
##1
\eTD
\bTD
\xmlcommand{#1}{./lg[@type='orig']/l[##1]}{xml:original}
\xmlcommand{#1}{./lg[@type='comm']/l[##1]}{xml:comment}
\eTD
\bTD
\xmlcommand{#1}{./lg[@type='trans']/l[##1]}{xml:translation}
\eTD
\eTR
}
\eTABLE
\stopxmlsetups
\starttext
\xmlprocessbuffer{main}{poem}{}
\stoptext
5.2 Exemple complet : TEI-XML poétique et triple colonne (numérotation des vers, VO/VF et commentaire)
[modifier | modifier le wikicode]- L’exemple précédent (section 5.1) présentait un dispositif minimal. Nous pouvons maintenant passer à un modèle complet, proche d’une édition savante :
- colonne 1 : numérotation des vers ;
- colonne 2 : Texte original (VO) ;
- colonne 3 : Traduction ;
- Le commentaire est ici rejeté en note dans la cellule qui concerne la langue originale.
- Cet exemple développe la même logique que précédemment (s'appuyer sur la mémoire tampon/buffer pour appeler le code XML), mais à une échelle plus large. Il y a donc un peu plus de travail, notamment pour rédiger le code proprement et comprendre les mécanismes de récursivité. Il peut servir de base à des éditions savantes structurées, polyglottes ou annotées.
- Voici le fichier XML-TEI-TeX (tout en un !) :
\setuppapersize[A4]
\setupbodyfont[EBGaramond,10pt] % Latin Modern (défaut), 10pt
\setupTABLE[frame=off]
\setupTABLE[column][1][width=.1\textwidth]
\setupTABLE[column][2][width=.450\textwidth]
\setupTABLE[column][3][width=.45\textwidth]
% ----------------------------------------------------------
% Pied de page
% ----------------------------------------------------------
\setupfootertexts
[]
[{\tfxx Document composé avec \ConTeXt}]
% ----------------------------------------------------------
% Notes "plaçables" (robustes avec les tableaux)
% ----------------------------------------------------------
\definenote[commnote]
\setupnote[commnote][
rule=off,
paragraph=yes,
inbetween=\quad,
style=\tfxx,
]
% ----------------------------------------------------------
% XML dans un buffer (méthode Hans) — 16 vers + commentaire
% ----------------------------------------------------------
\startbuffer[poem]
<?xml version="1.0" encoding="UTF-8"?>
<TEI>
<text>
<body>
<lg type="stanza">
<lg type="orig">
<l>First light touches the closed houses,</l>
<l>and the street breathes a pale memory.</l>
<l>I hear the fountain count its coins,</l>
<l>while sparrows edit yesterday’s crumbs.</l>
<l>The baker lifts a shutter like a veil,</l>
<l>and flour rises, a brief white weather.</l>
<l>At the corner, a newspaper opens,</l>
<l>its headlines folded like tired wings.</l>
<l>I write your name, then cross it out,</l>
<l>the paper keeps the pressure, not the meaning.</l>
<l>Between two words a well appears,</l>
<l>and echoes practice someone else’s voice.</l>
<l>A tram arrives; its doors hesitate,</l>
<l>as if choosing which century to enter.</l>
<l>In my pocket, a key warms slowly,</l>
<l>metal remembering the shape of home.</l>
</lg>
<lg type="trans">
<l>La première lumière effleure les maisons closes,</l>
<l>et la rue respire une mémoire pâle.</l>
<l>J’entends la fontaine compter ses pièces,</l>
<l>tandis que les moineaux corrigent les miettes d’hier.</l>
<l>Le boulanger relève un volet comme un voile,</l>
<l>et la farine monte, brève météo blanche.</l>
<l>Au coin, un journal s’ouvre,</l>
<l>ses gros titres pliés comme des ailes lassées.</l>
<l>J’écris ton nom, puis je le rature,</l>
<l>le papier garde la pression, pas le sens.</l>
<l>Entre deux mots, un puits apparaît,</l>
<l>et les échos répètent la voix d’un autre.</l>
<l>Un tram arrive ; ses portes hésitent,</l>
<l>comme si elles choisissaient le siècle où entrer.</l>
<l>Dans ma poche, une clé se réchauffe lentement,</l>
<l>le métal se souvient de la forme du foyer.</l>
</lg>
<lg type="comm">
<l>light] atmospheric motif; establishes the scene.</l>
<l>memory] semantic key recurring across the poem.</l>
<l>fountain] auditory image; introduces counting/metre.</l>
<l>edit] meta-textual verb; aligns with “variants” later.</l>
<l>shutter/veil] unveiling metaphor; morning as revelation.</l>
<l>white weather] synesthetic image; flour as climate.</l>
<l>newspaper] public voice entering the private walk.</l>
<l>headlines] folded wings; fatigue of news cycles.</l>
<l>name] inscription + erasure; motif of revision.</l>
<l>pressure/meaning] material trace vs semantic loss.</l>
<l>well] gap between words; abyss of interpretation.</l>
<l>someone else] polyphony; speaker displaced.</l>
<l>tram] modern intrusion; tests punctuation in table.</l>
<l>century] controlled anachronism; time as choice.</l>
<l>key] pocket object; memory by touch/heat.</l>
<l>home] “shape” as form; stable equivalence in translation.</l>
</lg>
</lg>
</body>
</text>
</TEI>
\stopbuffer
% ----------------------------------------------------------
% Setups XML (structure Hans)
% ----------------------------------------------------------
\startxmlsetups xml:main
\xmlsetsetup{#1}{*}{xml:*}
\stopxmlsetups
\xmlregistersetup{xml:main}
\startxmlsetups xml:TEI
\xmlcommand{#1}{text/body/lg[@type='stanza']}{xml:stanza}
\stopxmlsetups
\startxmlsetups xml:original
\language[english]
\xmltext{#1}
\stopxmlsetups
\startxmlsetups xml:translation
\language[french]
\xmltext{#1}
\stopxmlsetups
% commentaire -> note "plaçable"
\startxmlsetups xml:comment
\commnote{\xmltext{#1}}
\stopxmlsetups
\startxmlsetups xml:stanza
\bTABLE
\bTR
\bTH line \eTH
\bTH original \eTH
\bTH translation \eTH
\eTR
\dorecurse{\xmlcount{#1}{./lg[@type='orig']/l}}{%
\bTR
\bTD ##1 \eTD
\bTD
\xmlcommand{#1}{./lg[@type='orig']/l[##1]}{xml:original}
\xmlcommand{#1}{./lg[@type='comm']/l[##1]}{xml:comment}
\eTD
\bTD
\xmlcommand{#1}{./lg[@type='trans']/l[##1]}{xml:translation}
\eTD
\eTR
}
\eTABLE
\stopxmlsetups
\starttext
\centerline{\bfb Poème TEI-XML : original, traduction, notes “plaçables”}
\blank[big]
{\em
Objectif : montrer une méthode robuste (inspirée de Hans Hagen) pour afficher un poème encodé en XML-TEI
en trois colonnes (n° du vers, original, traduction) tout en attachant un commentaire ligne à ligne sous forme de notes,
placées à un endroit choisi (ici : après le tableau), afin d’éviter les collisions “tableau + footnotes”. On remarquera les commentaires en anglais placés dans la cellule concernant le texte original.}
\blank[medium]
\centerline{\sc — Procédure (résumé technique) —}
\starttyping
1) XML intégré dans un buffer (\startbuffer...\stopbuffer)
2) Boucle sur le nombre de vers : \dorecurse{\xmlcount{#1}, etc.
3) Extraction des lignes via XPath : orig/l[i], trans/l[i], comm/l[i]
4) Commentaires collectés avec \commnote{\xmltext{#1}}, puis rendus par \placenotes[commnote]
\stoptyping
\blank[big]
\xmlprocessbuffer{main}{poem}{}
\blank[big]
% Notes en deux colonnes pour limiter les débordements
\startcolumns[n=2,balance=yes]
\placenotes[commnote]
\stopcolumns
\stoptext
- Voici la sortie PDF (illustrations au format PNG ici) ci-dessous des deux MWE (court et long) :
-
Ilustration 1 : sortie PDF du mécanisme de versification avec lemmatisation
-
Illustration 2 : Sortie PDF poème bilingue lemmatisé
Pour aller plus loin — Préserver la structure TEI avec \xmlflush
Dans les exemples présentés ci-dessus, le traitement du XML-TEI repose sur la commande \xmltext, suffisante tant que les éléments XML ne contiennent que du texte simple.
- Dès que le balisage devient plus riche (emphase, lemmes, notes intégrées, apparat critique), l’usage de
\xmlflushdevient préférable. Contrairement à\xmltext, qui extrait uniquement le contenu textuel brut,\xmlflushparcourt récursivement l’arbre XML et permet à ConTeXt d’appliquer les règles définies pour chaque élément imbriqué.
- Par exemple, dans un vers encodé ainsi :
<l>First <emph>light</emph> touches the closed houses</l>
\xmltextproduira uniquement « First light touches the closed houses » (en perdant l’information d’emphase),\xmlflushpermettra de traiter<emph>via un\startxmlsetupsdédié et de conserver la structure sémantique du texte.
- Cette distinction devient cruciale dans les éditions savantes : poésie annotée, lemmatisation, variantes (
<app>,<lem>,<rdg>), ou textes multilingues à structure complexe.
👉 En résumé :
\xmltext: simple, rapide, adapté aux MWEs élémentaires ;\xmlflush: robuste, extensible, indispensable pour les workflows TEI avancés.
Méthode des deux fichiers séparés
[modifier | modifier le wikicode]- On pourra toujours s'essayer ensuite avec la méthode des deux fichiers séparés (fichier XML + fichier source *.tex), avec le code qui suit :
- D'abord le fichier XML, que l'on va nommer :
poem-advanced.xml, puisque le fichier source ConTeXt va aller chercher ce nom - si vous lisez le préambule de ce fichier TeX ... :
<TEI xml:lang="en">
<text>
<body>
<!-- Première strophe : VO + VF + commentaire -->
<lg type="stanza" n="1">
<lg type="orig" xml:lang="en">
<l>When I have fears that I may cease to be,</l>
<l>Before my words have caught the restless mind,</l>
<l>Before my pages, patient in their sleep,</l>
<l>Awake to bear the burden I designed,</l>
<l>Then sudden shadows crowd the silent room,</l>
<l>And every book becomes a sealed gate,</l>
<l>Where thoughts, like travellers delayed by storm,</l>
<l>Wait in the rain outside the house of fate.</l>
</lg>
<lg type="trans" xml:lang="fr">
<l>Quand je crains de n’être plus qu’un jour de plus,</l>
<l>Avant que mes mots n’aient saisi l’esprit fuyant,</l>
<l>Avant que mes pages, encore endormies,</l>
<l>Ne portent le poids du projet que je forme,</l>
<l>Alors des ombres remplissent la chambre,</l>
<l>Et chaque livre devient une porte close,</l>
<l>Où les pensées, comme des voyageurs sous l’orage,</l>
<l>Attendent dans la pluie devant la maison du destin.</l>
</lg>
<lg type="comm" xml:lang="fr">
<l>Strophe 1 : inquiétude de l’auteur face au temps qui manque ;</l>
<l>thèmes : fécondité mentale, livres comme portes, motif de l’attente.</l>
</lg>
</lg>
<!-- Deuxième strophe : notes + apparat critique -->
<lg type="stanza" n="2">
<lg type="orig" xml:lang="en">
<l>
Sometimes I hear a distant city’s hum,
<note type="explan">Écho de la modernité, bruit anonyme de la ville.</note>
</l>
<l>Rising and falling like a troubled sea,</l>
<l>Where every light that trembles at the dusk</l>
<l>Is some unfinished line that calls to me.</l>
<l>And in that murmur lives a secret doubt,</l>
<l>
That all these
<app>
<lem>written</lem>
<rdg wit="#A">spoken</rdg>
<rdg wit="#B">hidden</rdg>
</app>
words may never rise,
</l>
<l>But lie, like shells abandoned on the shore,</l>
<l>Far from the waves that once gave them their voice.</l>
</lg>
<lg type="trans" xml:lang="fr">
<l>Parfois j’entends le grondement d’une ville lointaine,</l>
<l>Qui monte et qui retombe comme une mer troublée,</l>
<l>Où chaque lumière vacillante au crépuscule</l>
<l>Est un vers inachevé qui m’appelle au travail.</l>
<l>Et dans ce murmure survit un doute secret :</l>
<l>que tous ces mots, écrits ou seulement rêvés,</l>
<l>demeurent au bord du monde, comme des coquillages,</l>
<l>loin des vagues qui leur donnaient une voix.</l>
</lg>
<lg type="comm" xml:lang="fr">
<l>Strophe 2 : ville moderne comme métaphore du bruit intérieur ;</l>
<l>apparat : variantes possibles sur « written » (spoken / hidden).</l>
</lg>
</lg>
</body>
</text>
</TEI>
- Ensuite, le fichier TeX qui l'accompagne:
% mwe-tei-poem-advanced.tex
% Objectif :
% - Lire le fichier TEI "poem-advanced.xml"
% - Pour chaque strophe :
% * VO (en) dans la 1ère colonne, vers numérotés
% * VF (fr) dans la 2e colonne
% * Commentaire (fr) dans la 3e colonne
% - Gérer <note> et un petit apparat critique <app><lem><rdg>
\setuppapersize[A4]
\setupbodyfont[modern,11pt]
% --- 3 environnements de vers : VO, VF, commentaire
\definelines[VOlines] % Vers de l’original
\definelines[VFlines] % Vers de la traduction
\definelines[COMlines] % Commentaire en prose versifiée
% Numérotation automatique des vers pour la VO
\setuplines[VOlines][
number=yes, % on veut des numéros
location=left, % dans la marge gauche
numberstyle=\tfxx, % petits chiffres
numberdistance=0.5em, % espace entre numéro et vers
]
% 3 colonnes pour VO / VF / commentaire
\setupcolumns[
n=3,
balance=yes,
distance=8mm,
]
% --------------------------------------------------
% SETUPS XML
% --------------------------------------------------
% "xml:poem" : point d’entrée, appliqué à la racine TEI
\startxmlsetups xml:poem
% On laisse TEI, text, body "passer" :
\xmlsetsetup{#1}{TEI|text|body}{xml:pass}
% Une strophe TEI (<lg type="stanza">) → xml:stanza
\xmlsetsetup{#1}{lg[@type='stanza']}{xml:stanza}
% Notes et apparat critiques :
\xmlsetsetup{#1}{note}{xml:note}
\xmlsetsetup{#1}{app}{xml:app}
% Important : on parcourt l'arbre XML
\xmlflush{#1}
\stopxmlsetups
\xmlregistersetup{xml:poem}
% Pass-through : laisser passer certains éléments
\startxmlsetups xml:pass
\xmlflush{#1}
\stopxmlsetups
% --- Notes : <note> → \footnote{...}
\startxmlsetups xml:note
\footnote{\xmlflush{#1}}
\stopxmlsetups
% --- Apparatus : <app><lem><rdg>...
% Lemma dans le texte, variantes en note
\startxmlsetups xml:app
\xmlfilter{#1}{lem/text()}%
\footnote{%
Variantes :
\xmlfilter{#1}{rdg -> xml:rdgvariant}%
}%
\stopxmlsetups
\startxmlsetups xml:rdgvariant
[\xmlatt{#1}{wit}: \xmlflush{#1}] %
\stopxmlsetups
% --- Traitement d'une strophe (<lg type="stanza">)
\startxmlsetups xml:stanza
\startcolumns
% Colonne 1 : VO (lg orig/en)
\startVOlines
\xmlfilter{#1}{./lg[@type='orig']/l}
\stopVOlines
\column
% Colonne 2 : VF (lg trans/fr)
\startVFlines
\xmlfilter{#1}{./lg[@type='trans']/l}
\stopVFlines
\column
% Colonne 3 : commentaire (lg comm/fr)
\startCOMlines
\xmlfilter{#1}{./lg[@type='comm']/l}
\stopCOMlines
\stopcolumns
\blank[2*big] % espace entre strophes
\stopxmlsetups
% --------------------------------------------------
\starttext
\subject{Poème TEI-XML : original, traduction, commentaire}
% Processus : (nom interne, fichier XML, setup de départ)
\xmlprocessfile{main}{poem-advanced.xml}{xml:poem}
\stoptext
Autre exemple : analyse des vers de Virgile : TEI-XML et "buffer" avec ConTeXt
[modifier | modifier le wikicode]Cet exemple, dont le rendu PDF tient sur une page a un double objectif pédagogique.
- D’une part, il montre comment un poème encodé en TEI-XML peut être transformé, sans duplication de contenu, en une mise en page « philologique » classique : trois colonnes parallèles (numéro de vers, texte latin, traduction française comme nous l'avons déjà vu), un apparat critique à part et une bibliographie structurée. Le fichier source ne mélange pas typographie et contenu : la structure logique (TEI) reste du côté XML, tandis que ConTeXt se charge de la composition (tableaux, listes, titres, etc.).
- D’autre part, ce MWE illustre la manière dont ConTeXt parcourt sélectivement l’arbre XML. La racine <TEI> est associée à un
setup xml:TEIqui décide explicitement quoi afficher et dans quel ordre : d’abord la strophe<lg type="stanza">, ensuite la liste d’entrées critiques<listApp type="commentary">, enfin la section bibliographiquePour chaque élément, on peut choisir de produire du texte, de créer une table, une liste, ou de déclencher des structures plus complexes (notes, index, etc.).
- Dans cet exemple, chaque vers <l> contient deux segments <seg> : le texte latin (type="orig") et sa traduction française (type="trans"). Le numéro de vers n’est pas recompté côté ConTeXt : il est lu directement dans l’attribut n="1", n="2", etc. De même, l’attribut loc="#v1" des entrées d’apparat (<app>) est exploité pour rappeler le ou les vers concernés sous la forme « (v. 1) ». L’idée est de montrer comment tirer parti des identifiants et attributs TEI pour alimenter la mise en page, sans jamais « casser » le schéma XML.
À partir de ce canevas, on peut enrichir progressivement l’exemple : ajouter une numérotation continue pour des passages plus longs, distinguer plusieurs niveaux de notes (lexicales, historiques, textuelles), gérer de vraies références aux témoins (@wit) et, le cas échéant, basculer d’une mise en page en colonnes à une mise en page de type « édition de poche » simplement en changeant les setups ConTeXt.
Voici le code du fichier source (autonome, avec "buffer") :
[modifier | modifier le wikicode]- Vous remarquerez le caractère verbeux des différentes sections du préambule (la mécanique TEI-XML) et le caractère très concis (euphémisme ...) des commandes situées entre
\starttextet\stoptext, puisque le code se borne à ceci :
\starttext
\section{Virgile, \italic{Énéide} I, 1–7}
\xmlprocessbuffer{main}{poem}{}
\stoptext
- Les commentaires du code ConTeXt sont annoncés dans le code TeX par le symbole %.
<!-- 1. Poème : Virgile, Énéide I, 1–7 -->% mwe-tei-xml-virgile-3cols-v10.tex
% TEI dans un buffer + apparat critique + bibliographie
% -------------------------------------------------------------
% MWE ConTeXt + TEI-XML
% - Texte de Virgile (Énéide I, 1–7)
% - Présentation en 3 colonnes : numéro de vers / latin / traduction
% - Apparatus critique (lemmes + commentaires) et bibliographie
% Ce fichier est pensé comme exemple pédagogique.
% -------------------------------------------------------------
\setuppapersize[A4][A4]% On a choisi la taille A4, qui peut être modifiée
\setupbodyfont[modern,11pt]% On peut choisir une autre police et modifier la taille
% ==========================
% XML : SETUPS GÉNÉRAUX
% ==========================
% On déclare un "profil" xml:main qui associe chaque élément TEI
% à un setup ConTeXt (xml:TEI, xml:stanza, xml:linerow, etc.).
\startxmlsetups xml:main
% Racine TEI : point d'entrée principal
\xmlsetsetup{#1}{TEI}{xml:TEI}
% Strophe & lignes
% <l> représente ici UNE ligne de vers contenant deux <seg> :
% - <seg type="orig"> : texte latin
% - <seg type="trans"> : traduction française
\xmlsetsetup{#1}{l}{xml:line}
\xmlsetsetup{#1}{seg}{xml:segtext}
% Apparatus critique : <listApp>, <app>, <lem>, <rdg>, <note>, <ref>
\xmlsetsetup{#1}{listApp}{xml:listApp}
\xmlsetsetup{#1}{app}{xml:app}
\xmlsetsetup{#1}{lem}{xml:lem}
\xmlsetsetup{#1}{rdg}{xml:rdg}
\xmlsetsetup{#1}{note}{xml:note}
\xmlsetsetup{#1}{ref}{xml:ref}
% Bibliographie : <div type="bibliography">, <listBibl>, <bibl>, <title>
\xmlsetsetup{#1}{div}{xml:div}
\xmlsetsetup{#1}{listBibl}{xml:listBibl}
\xmlsetsetup{#1}{bibl}{xml:bibl}
\xmlsetsetup{#1}{title}{xml:title}
\stopxmlsetups
% On enregistre ce profil : il sera utilisé par \xmlprocessbuffer.
\xmlregistersetup{xml:main}
% ==========================
% RACINE TEI : ORCHESTREUR
% ==========================
% xml:TEI orchestre la lecture du document :
% 1) texte (strophe) -> tableau 3 colonnes
% 2) apparatus critique (listApp)
% 3) bibliographie (back/div)
\startxmlsetups xml:TEI
% 1) Strophe (texte + traduction) en tableau 3 colonnes
\xmlcommand{#1}{text/body/lg[@type='stanza']}{xml:stanza}
% 2) Apparatus critique
\xmlcommand{#1}{text/body/listApp[@type='commentary']}{xml:listApp}
% 3) Bibliographie
\xmlcommand{#1}{text/back/div[@type='bibliography']}{xml:div}
\stopxmlsetups
% ==========================
% STROPHE : TABLEAU 3 COLONNES
% ==========================
% xml:stanza construit un tableau où chaque <l> devient une ligne :
% - colonne 1 : numéro de vers (attribut @n de <l>)
% - colonne 2 : texte latin (seg[@type='orig'])
% - colonne 3 : traduction (seg[@type='trans'])
\startxmlsetups xml:stanza
\starttabulate[|c|p(5cm)|p(8cm)|]
\NC \bf l. \NC \bf Latin \NC \bf Traduction \NC\NR
\HL
% On parcourt chaque <l> de la strophe :
\xmlcommand{#1}{./l}{xml:linerow}
\stoptabulate
\blank[big]
\stopxmlsetups
% Chaque <l> produit UNE ligne du tableau.
% On lit le numéro de vers directement dans @n (n="1", "2", etc.).
\startxmlsetups xml:linerow
% Numéro de vers : pris dans l'attribut n="1", "2", ...
\NC \xmlatt{#1}{n}%
% Texte latin (seg type="orig")
\NC \xmlcommand{#1}{seg[@type='orig']}{xml:segtext}%
% Traduction française (seg type="trans"), avec un léger décalage
% pour marquer la séparation visuelle entre colonnes.
\NC \quad \xmlcommand{#1}{seg[@type='trans']}{xml:segtext}%
\NC\NR
\stopxmlsetups
% xml:segtext : imprimé tel quel (contenu textuel du <seg>).
\startxmlsetups xml:segtext
\xmltext{#1}{.}
\stopxmlsetups
% ==========================
% PETIT OUTIL : Rappel du vers à partir de @loc
% ==========================
% Dans l'apparatus, chaque <app> a un attribut loc="#v1", "#v3", etc.
% On veut l'afficher comme : "(v. 1)", "(v. 3)", etc.
%
% loc="#v1" -> on enlève le "#v" pour ne garder que "1".
% On le fait avec un petit jeu de macros TeX.
% \StripHashV prend une chaîne de la forme "#v1" et renvoie "1".
\def\StripHashV#1v#2\relax{#2}
% \VerseNumberFromLoc applique \StripHashV à une chaîne donnée.
\def\VerseNumberFromLoc#1{%
\edef\temp{#1}% on fige l'argument dans \temp
\expandafter\StripHashV\temp\relax
}
% \VerseRef{#1} produit "(v. 1)" à partir de l'attribut loc du <app>.
\def\VerseRef#1{%
(v.~\VerseNumberFromLoc{\xmlatt{#1}{loc}})%
}
% ==========================
% APPARAT CRITIQUE
% ==========================
% On présente ici les <app> comme une liste numérotée, sous le titre
% "Notes et références". Chaque entrée rappelle :
% - le vers concerné : (v. 1)
% - le lemme en gras
% - la lecture / remarque (rdg + note)
\startxmlsetups xml:listApp
\blank[2*big]
\subsection{Notes et références}
\blank[medium]
\startitemize[n]
\xmlcommand{#1}{app}{xml:app}
\stopitemize
\stopxmlsetups
\startxmlsetups xml:app
% \VerseRef{#1} -> (v. 1), (v. 3), etc., à partir de @loc="#v1", "#v3"...
\item \VerseRef{#1} {\bf \xmltext{#1}{lem}. }%
\xmlcommand{#1}{rdg}{xml:rdg}%
\xmlcommand{#1}{note}{xml:note}%
\stopxmlsetups
\startxmlsetups xml:lem
\xmltext{#1}{.}
\stopxmlsetups
\startxmlsetups xml:rdg
\xmltext{#1}{.}\par
\stopxmlsetups
\startxmlsetups xml:note
\xmltext{#1}{.}\par
\stopxmlsetups
\startxmlsetups xml:ref
\xmltext{#1}{.}
\stopxmlsetups
% ==========================
% BIBLIOGRAPHIE
% ==========================
% On lit <div type="bibliography">, dont le contenu est :
% <head>Bibliographie</head>
% <listBibl> ... </listBibl>
\startxmlsetups xml:div
\blank[2*big]
{\bf \xmltext{#1}{head}}\par
\blank[medium]
\xmlcommand{#1}{listBibl}{xml:listBibl}
\stopxmlsetups
\startxmlsetups xml:listBibl
\startitemize
\xmlcommand{#1}{bibl}{xml:bibl}
\stopitemize
\stopxmlsetups
\startxmlsetups xml:bibl
\item \xmlflush{#1}
\stopxmlsetups
% Titres d’œuvres en italiques : <title>...</title>
\startxmlsetups xml:title
\italic{\xmltext{#1}{.}}
\stopxmlsetups
% ==========================
% BUFFER TEI : CONTENU XML
% ==========================
% On place ici le TEI complet dans un buffer nommé "poem".
% Dans un vrai projet, ce contenu viendrait plutôt d'un fichier externe.
% Ici on utilise la mémoire tampon pour ne travailler que sur un seul fichier
\startbuffer[poem]
<?xml version="1.0" encoding="UTF-8"?>
<TEI>
<text>
<body>
<!-- 1. Poème : Virgile, Énéide I, 1–7 -->
<!-- Chaque <l> porte un xml:id (pour les renvois) et un n (numéro de vers). -->
<lg type="stanza">
<l xml:id="v1" n="1">
<seg type="orig">Arma virumque cano, Troiae qui primus ab oris</seg>
<seg type="trans">Je chante les armes et l’homme, qui le premier, des rivages de Troie,</seg>
</l>
<l xml:id="v2" n="2">
<seg type="orig">Italiam, fato profugus, Laviniaque venit</seg>
<seg type="trans">chassé par le destin, vint en Italie et aux rivages de Lavinium,</seg>
</l>
<l xml:id="v3" n="3">
<seg type="orig">litora, multum ille et terris iactatus et alto</seg>
<seg type="trans">beaucoup ballotté sur les terres et sur la haute mer,</seg>
</l>
<l xml:id="v4" n="4">
<seg type="orig">vi superum saevae memorem Iunonis ob iram;</seg>
<seg type="trans">par la violence des dieux d’en haut, à cause du courroux de Junon la cruelle,</seg>
</l>
<l xml:id="v5" n="5">
<seg type="orig">multa quoque et bello passus, dum conderet urbem</seg>
<seg type="trans">ayant beaucoup souffert aussi dans la guerre, jusqu’à fonder une cité</seg>
</l>
<l xml:id="v6" n="6">
<seg type="orig">inferretque deos Latio, genus unde Latinum,</seg>
<seg type="trans">et porter ses dieux au Latium, d’où est issue la race latine,</seg>
</l>
<l xml:id="v7" n="7">
<seg type="orig">Albanique patres, atque altae moenia Romae.</seg>
<seg type="trans">les pères Albains et les hautes murailles de Rome.</seg>
</l>
</lg>
<!-- 2. Liste de témoins (non exploitée dans la mise en page pour l’instant) -->
<listWit>
<witness xml:id="w-servius">Servius, commentaire antique</witness>
<witness xml:id="w-horsfall">Nicholas Horsfall, commentaire moderne</witness>
<witness xml:id="w-conte">G. B. Conte, histoire de la littérature latine</witness>
</listWit>
<!-- 3. Apparatus critique de type "commentary" -->
<listApp type="commentary">
<app xml:id="app-arma" loc="#v1">
<lem>Arma virumque</lem>
<rdg wit="#w-servius #w-conte">
Proème programmatique : conjonction des « armes » et de l’ « homme »,
qui fixe le cadre épique romain (guerre + héros).
</rdg>
<note type="commentary">
Sur la portée programmatique de ce vers, voir
<ref target="#b-horsfall">Horsfall 1995</ref>, p. 1–10,
et <ref target="#b-conte">Conte</ref>, p. 356–360.
</note>
</app>
<app xml:id="app-troiae" loc="#v1">
<lem>Troiae … ab oris</lem>
<rdg wit="#w-servius #w-horsfall">
Point de départ géographique et mémoriel : l’exil troyen fonde la
continuité entre Troie et Rome.
</rdg>
<note type="commentary">
Le motif de l’exilé fondateur est développé par
<ref target="#b-servius">Servius</ref>, ad loc.,
et discuté par <ref target="#b-horsfall">Horsfall 1995</ref>, p. 12–18.
</note>
</app>
<app xml:id="app-multum" loc="#v3">
<lem>multum ille et terris iactatus et alto</lem>
<rdg wit="#w-conte">
Insistance sur l’errance : écho assumé à la figure d’Ulysse, mais
infléchi vers une lecture politique de l’histoire romaine.
</rdg>
<note type="commentary">
Pour le parallèle avec l’<title>Odyssée</title> et la réécriture
virgilienne, cf. <ref target="#b-conte">Conte</ref>, p. 346–352.
</note>
</app>
</listApp>
</body>
<!-- 4. Bibliographie en fin de document -->
<back>
<div type="bibliography">
<head>Bibliographie</head>
<listBibl>
<bibl xml:id="b-servius">
Servius, <title>In Vergilii Aeneidem commentarii</title>,
éd. G. Thilo – H. Hagen, Leipzig, Teubner, 1881–1902.
</bibl>
<bibl xml:id="b-horsfall">
Nicholas Horsfall, <title>Aeneid 1</title>,
Leiden – New York – Cologne, Brill, 1995.
</bibl>
<bibl xml:id="b-conte">
Gian Biagio Conte, <title>Latin Literature: A History</title>,
Baltimore, Johns Hopkins University Press, 1994.
</bibl>
<bibl xml:id="b-virg-bude">
Virgile, <title>Énéide, Livre I</title>,
trad. fr. et commentaire par J. Perret,
Collection des Universités de France (« Budé »),
Paris, Les Belles Lettres, 2023 (1977).
</bibl>
</listBibl>
</div>
</back>
</text>
</TEI>
\stopbuffer
% ==========================
% DOCUMENT
% ==========================
% Rappel : Le document principal se contente de :
% - poser un titre,
% - appeler \xmlprocessbuffer avec le profil xml:main
% et le buffer "poem".
\starttext
\section{Virgile, \italic{Énéide} I, 1–7}
\xmlprocessbuffer{main}{poem}{}
\stoptext
Illustrations
[modifier | modifier le wikicode]Illustration A — Les vers de l'Énéide de Virgile sur une seule page : le code ci-dessus permet d'afficher 3 colonnes pour les vers de Virgile :
- Colonne 1 : les n° de vers
- Colonne 2 : le texte latin
- Colonne 3 : la traduction
En bas :
- les lemmes (avec le n° du vers)
- la bibliographie

Texte plus long : TEI-XML avec buffer traité par ConTeXt
[modifier | modifier le wikicode]Illustration B — La même chose que l'illustration A, mais avec des vers de l'Énéide de Virgile supplémentaires, et des commentaires. L'ensemble est imprimé sur 3 pages (voir ci-dessous, après le code).
Ce document illustre la composition avancée en TEI-XML avec ConTeXt à partir d’un fichier unique contenant :
- le texte poétique en latin ;
- la traduction française alignée ;
- les numéros de vers ;
- un apparat critique structuré ;
- une bibliographie ;
- la lemmatisation linguistique ;
- la mise en pages recto/verso ;
- des notes sur plusieurs niveaux éditoriaux.
Les deux premières pages montrent, à partir d’un même fichier XML, une triple structure en colonnes (numéro du vers / texte latin / traduction), tandis que les pages suivantes présentent :
- l’apparat philologique, généré automatiquement ;
- la lemmatisation, rejetée en notes de bas de page ;
- la bibliographie finale.
L’objectif est de démontrer comment ConTeXt peut :
- lire directement les structures TEI-XML ;
- interpréter les balises ;
- séparer texte, structure et mise en page ;
- générer plusieurs artefacts éditoriaux à partir d’un même flux ;
- traiter de nombreuses couches critiques sans rupture typographique.
Cet exemple constitue un modèle reproductible pour des éditions numériques savantes (poésie, manuscrits, traductions, commentaires, variantes textuelles)
- Voici maintenant le code qui permet de produire les pages que vous trouverez après :
% Le code commence ici, même si les lignes suivantes sont des % % commentaires
% mwe-tei-xml-virgile-recto-verso-notes-v09.tex
% =========================================================
% MWE ConTeXt + TEI-XML : Virgile, Énéide I
% =================================================
% mwe-tei-xml-virgile-recto-verso-notes-v09.tex
% =========================================================
% MWE ConTeXt + TEI-XML : Virgile, Énéide I
% - Page 1 : v. 1–7 en 3 colonnes + apparat "commentary"
% - Page 2 : v. 12–22 en 3 colonnes + bloc de lemmatisation
% - Page 3 (éventuelle) : fin lemmes + bibliographie
%
% Objectif pédagogique :
% - Montrer comment un même TEI sert :
% * à composer le texte (deux passages en colonnes)
% * à produire un apparat de commentaire (listApp[@type='commentary'])
% * à extraire une lemmatisation structurée (listApp[@type='lemma'])
% - Séparer nettement structure (TEI) et mise en page (ConTeXt).
% =========================================================
\setuppapersize[A4][A4]
\setupbodyfont[modern,10pt] % un poil plus serré pour limiter le nb de pages
% ---------------------------------------------------------
% Pagination : recto/verso, numéro en pied de page
% ---------------------------------------------------------
\setuppagenumbering[
alternative=doublesided,
location={footer,middle}
]
% ---------------------------------------------------------
% En-têtes recto / verso
% ordre : [odd-left][odd-right][even-left][even-right]
% ---------------------------------------------------------
\setupheadertexts
[\sc Commentaires de l'Énéide de Virgile][]
[][\italic{TEI-XML avec ConTeXt}]
\setupheader[state=start]
% ---------------------------------------------------------
% Pied de page : texte + numéro de page
% ---------------------------------------------------------
\setupfootertexts
[{\em Document composé avec \ConTeXt\ — \pagenumber}]
% ---------------------------------------------------------
% Tableau : 3 colonnes de contenu + 1 gouttière vide
% schéma : | numéro | latin | (gouttière vide) | traduction |
% ---------------------------------------------------------
\setuptabulate[distance=0.5em]
% Sections sans numérotation
\setuphead[section][number=no]
% =========================================================
% SETUPS XML GÉNÉRAUX
% =========================================================
\startxmlsetups xml:main
% Racine
\xmlsetsetup{#1}{TEI}{xml:TEI}
% Passages
\xmlsetsetup{#1}{div[@type='passage' and @n='1-7']}{xml:passage-commentary}
\xmlsetsetup{#1}{div[@type='passage' and @n='12-22']}{xml:passage-lemma}
% Strophes & vers
\xmlsetsetup{#1}{lg}{xml:stanza}
\xmlsetsetup{#1}{l}{xml:linerow}
\xmlsetsetup{#1}{seg}{xml:segtext}
% Apparats
\xmlsetsetup{#1}{listApp[@type='commentary']}{xml:listApp-commentary}
\xmlsetsetup{#1}{listApp[@type='lemma']}{xml:listApp-lemma}
\xmlsetsetup{#1}{lem}{xml:lem}
\xmlsetsetup{#1}{rdg}{xml:rdg}
\xmlsetsetup{#1}{note}{xml:note}
\xmlsetsetup{#1}{ref}{xml:ref}
% Bibliographie
\xmlsetsetup{#1}{div[@type='bibliography']}{xml:div-biblio}
\xmlsetsetup{#1}{listBibl}{xml:listBibl}
\xmlsetsetup{#1}{bibl}{xml:bibl}
\xmlsetsetup{#1}{title}{xml:title}
\stopxmlsetups
\xmlregistersetup{xml:main}
% =========================================================
% RACINE TEI : enchaînement des blocs
% =========================================================
\startxmlsetups xml:TEI
% Passage 1 : v. 1–7 + apparat "commentary"
\xmlcommand{#1}{text/body/div[@type='passage' and @n='1-7']}{xml:passage-commentary}
\blank[2*big]
% Passage 2 : v. 12–22 + lemmatisation
\xmlcommand{#1}{text/body/div[@type='passage' and @n='12-22']}{xml:passage-lemma}
\blank[2*big]
% Bibliographie
\xmlcommand{#1}{text/back/div[@type='bibliography']}{xml:div-biblio}
\stopxmlsetups
% =========================================================
% STROPHE EN 3 COLONNES (les deux passages)
% =========================================================
\startxmlsetups xml:stanza
\starttabulate[|c|p(4.2cm)|p(1.8cm)|p(6.0cm)|]
\NC \bf n\high{o} \NC \bf Latin \NC \NC \bf Traduction \NC\NR
\HL
\xmlcommand{#1}{./l}{xml:linerow}
\stoptabulate
\blank[big]
\stopxmlsetups
\startxmlsetups xml:linerow
\NC \xmlatt{#1}{n}%
\NC \xmlcommand{#1}{seg[@type='orig']}{xml:segtext}%
\NC % gouttière vide
\NC \xmlcommand{#1}{seg[@type='trans']}{xml:segtext}%
\NC\NR
\stopxmlsetups
\startxmlsetups xml:segtext
\xmltext{#1}{.}
\stopxmlsetups
% =========================================================
% OUTIL : RAPPEL DU VERS À PARTIR DE @loc
% =========================================================
\def\StripHashV#1v#2\relax{#2}
\def\VerseNumberFromLoc#1{%
\edef\temp{#1}%
\expandafter\StripHashV\temp\relax
}
\def\VerseRef#1{%
(v.~\VerseNumberFromLoc{\xmlatt{#1}{loc}})%
}
% =========================================================
% PASSAGE 1 : TEXTE + APPARAT "COMMENTARY"
% =========================================================
\startxmlsetups xml:passage-commentary
\section{Virgile, \italic{Énéide} I, 1–7}
\xmlcommand{#1}{lg}{xml:stanza}
\xmlcommand{#1}{listApp[@type='commentary']}{xml:listApp-commentary}
\stopxmlsetups
\startxmlsetups xml:listApp-commentary
\blank[big]
\subsection{Notes et références (v. 1–7)}
\blank[small]
\startitemize[n]
\xmlcommand{#1}{app}{xml:app-commentary}
\stopitemize
\stopxmlsetups
\startxmlsetups xml:app-commentary
\item \VerseRef{#1}\quad {\bf \xmltext{#1}{lem}.}\par
\xmlcommand{#1}{rdg}{xml:rdg}\par
\xmlcommand{#1}{note}{xml:note}\par
\stopxmlsetups
\startxmlsetups xml:rdg
\xmltext{#1}{.}
\stopxmlsetups
\startxmlsetups xml:note
\xmltext{#1}{.}
\stopxmlsetups
\startxmlsetups xml:ref
\xmltext{#1}{.}
\stopxmlsetups
\startxmlsetups xml:lem
\xmltext{#1}{.}
\stopxmlsetups
% =========================================================
% PASSAGE 2 : TEXTE + LEMMATISATION EN BLOC
% =========================================================
\startxmlsetups xml:passage-lemma
\section{Virgile, \italic{Énéide} I, 12–22}
% 1) texte en colonnes
\xmlcommand{#1}{lg}{xml:stanza}
% 2) bloc de lemmatisation (compact) sous le texte
\xmlcommand{#1}{listApp[@type='lemma']}{xml:listApp-lemma}
\stopxmlsetups
\startxmlsetups xml:listApp-lemma
\blank[big]
\subsection{Lemmatisation (v. 12–22)}
\blank[small]
{\switchtobodyfont[9pt]%
\startitemize[n,packed]
\xmlcommand{#1}{app}{xml:lemmaitem}
\stopitemize
}
\stopxmlsetups
\startxmlsetups xml:lemmaitem
% Un item par lemme : lemme latin bien mis en évidence
\item \VerseRef{#1}\quad {\bf\italic{\xmltext{#1}{lem}}}\par
\xmlcommand{#1}{note}{xml:lemmanote}
\stopxmlsetups
\startxmlsetups xml:lemmanote
% Notes en romain, avec une petite étiquette selon @type
\edef\notetype{\xmlatt{#1}{type}}%
\begingroup
\switchtobodyfont[9pt]%
\doif{\notetype}{expl}{{\sc [expl.]} }%
\doif{\notetype}{trans}{{\sc [transl.]} }%
\doif{\notetype}{crit}{{\sc [crit.]} }%
\xmltext{#1}{.}\par
\endgroup
\stopxmlsetups
% =========================================================
% BIBLIOGRAPHIE
% =========================================================
\startxmlsetups xml:div-biblio
\section{Bibliographie}
\blank[small]
\xmlcommand{#1}{listBibl}{xml:listBibl}
\stopxmlsetups
\startxmlsetups xml:listBibl
{\switchtobodyfont[9pt]%
\startitemize
\xmlcommand{#1}{bibl}{xml:bibl}
\stopitemize
}
\stopxmlsetups
\startxmlsetups xml:bibl
\item \xmlflush{#1}
\stopxmlsetups
\startxmlsetups xml:title
\italic{\xmltext{#1}{.}}
\stopxmlsetups
% =========================================================
% BUFFER TEI : 2 PASSAGES + APPARATS + BIBLIO
% =========================================================
\startbuffer[poem]
<TEI>
<text>
<body>
<!-- Passage 1 : Énéide I, 1–7, avec apparat de commentaire -->
<div type="passage" n="1-7">
<lg type="stanza">
<l xml:id="v1" n="1">
<seg type="orig">Arma virumque cano, Troiae qui primus ab oris</seg>
<seg type="trans">Je chante les armes et l’homme, qui le premier, des rivages de Troie,</seg>
</l>
<l xml:id="v2" n="2">
<seg type="orig">Italiam, fato profugus, Laviniaque venit</seg>
<seg type="trans">chassé par le destin, vint en Italie et aux rivages de Lavinium,</seg>
</l>
<l xml:id="v3" n="3">
<seg type="orig">litora, multum ille et terris iactatus et alto</seg>
<seg type="trans">beaucoup ballotté sur les terres et sur la haute mer,</seg>
</l>
<l xml:id="v4" n="4">
<seg type="orig">vi superum saevae memorem Iunonis ob iram;</seg>
<seg type="trans">par la violence des dieux d’en haut, à cause du courroux de Junon la cruelle,</seg>
</l>
<l xml:id="v5" n="5">
<seg type="orig">multa quoque et bello passus, dum conderet urbem</seg>
<seg type="trans">ayant beaucoup souffert aussi dans la guerre, jusqu’à fonder une cité</seg>
</l>
<l xml:id="v6" n="6">
<seg type="orig">inferretque deos Latio, genus unde Latinum,</seg>
<seg type="trans">et porter ses dieux au Latium, d’où est issue la race latine,</seg>
</l>
<l xml:id="v7" n="7">
<seg type="orig">Albanique patres, atque altae moenia Romae.</seg>
<seg type="trans">les pères Albains et les hautes murailles de Rome.</seg>
</l>
</lg>
<listWit>
<witness xml:id="w-servius">Servius, commentaire antique</witness>
<witness xml:id="w-horsfall">Nicholas Horsfall, commentaire moderne</witness>
<witness xml:id="w-conte">G. B. Conte, histoire de la littérature latine</witness>
</listWit>
<listApp type="commentary">
<app xml:id="app-arma" loc="#v1">
<lem>Arma virumque</lem>
<rdg wit="#w-servius #w-conte">
Proème programmatique : conjonction des « armes » et de l’« homme »,
qui fixe le cadre épique romain (guerre + héros).
</rdg>
<note type="commentary">
Sur la portée programmatique de ce vers, voir
<ref target="#b-horsfall">Horsfall 1995</ref>, p. 1–10,
et <ref target="#b-conte">Conte</ref>, p. 356–360.
</note>
</app>
<app xml:id="app-troiae" loc="#v1">
<lem>Troiae … ab oris</lem>
<rdg wit="#w-servius #w-horsfall">
Point de départ géographique et mémoriel : l’exil troyen fonde la
continuité entre Troie et Rome.
</rdg>
<note type="commentary">
Le motif de l’exilé fondateur est développé par
<ref target="#b-servius">Servius</ref>, ad loc.,
et discuté par <ref target="#b-horsfall">Horsfall 1995</ref>, p. 12–18.
</note>
</app>
<app xml:id="app-multum" loc="#v3">
<lem>multum ille et terris iactatus et alto</lem>
<rdg wit="#w-conte">
Insistance sur l’errance : écho assumé à la figure d’Ulysse, mais
infléchi vers une lecture politique de l’histoire romaine.
</rdg>
<note type="commentary">
Pour le parallèle avec l’<title>Odyssée</title> et la réécriture
virgilienne, cf. <ref target="#b-conte">Conte</ref>, p. 346–352.
</note>
</app>
</listApp>
</div>
<!-- Passage 2 : Énéide I, 12–22, avec apparat de lemmatisation -->
<div type="passage" n="12-22">
<lg type="stanza">
<l xml:id="v12" n="12">
<seg type="orig">Vrbs antiqua fuit, Tyrii tenuere coloni,</seg>
<seg type="trans">Carthage, une ville ancienne, colonie tyrienne,</seg>
</l>
<l xml:id="v13" n="13">
<seg type="orig">Karthago, Italiam contra Tiberinaque longe ostia,</seg>
<seg type="trans">s’élevait face à l'Italie et aux lointaines bouches du Tibre ;</seg>
</l>
<l xml:id="v14" n="14">
<seg type="orig">diues opum studiisque asperrima belli ;</seg>
<seg type="trans">elle était riche et farouchement passionnée pour la guerre.</seg>
</l>
<l xml:id="v15" n="15">
<seg type="orig">quam Iuno fertur terris magis omnibus unam</seg>
<seg type="trans">Junon, dit-on, la chérissait plus que toute autre cité,</seg>
</l>
<l xml:id="v16" n="16">
<seg type="orig">posthabita coluisse Samo; hic illius arma,</seg>
<seg type="trans">plus même que Samos. Là étaient ses armes,</seg>
</l>
<l xml:id="v17" n="17">
<seg type="orig">hic currus fuit; hoc regnum dea gentibus esse,</seg>
<seg type="trans">là était son char. Pour la déesse, cette ville devait régner sur les nations</seg>
</l>
<l xml:id="v18" n="18">
<seg type="orig">si qua fata sinant, iam tum tenditque fouetque.</seg>
<seg type="trans">si les destins y consentent : tel est désormais son but, l’objet de ses soins.</seg>
</l>
<l xml:id="v19" n="19">
<seg type="orig">Progeniem sed enim Troiano a sanguine duci</seg>
<seg type="trans">Mais elle avait appris que du sang troyen naissait une race</seg>
</l>
<l xml:id="v20" n="20">
<seg type="orig">audierat, Tyrias olim quae uerteret arces;</seg>
<seg type="trans">qui un jour renverserait les forteresses tyriennes ;</seg>
</l>
<l xml:id="v21" n="21">
<seg type="orig">hinc populum late regem belloque superbum</seg>
<seg type="trans">qu’un peuple, roi d’un vaste empire, intraitable à la guerre,</seg>
</l>
<l xml:id="v22" n="22">
<seg type="orig">uenturum excidio Libyae : sic uoluere Parcas.</seg>
<seg type="trans">en sortirait pour la perte de la Libye : ainsi le filaient les Parques.</seg>
</l>
</lg>
<listApp type="lemma">
<app xml:id="lem-urbs" loc="#v12">
<lem ana="urbs">Vrbs antiqua</lem>
<note type="expl">
Ville ancienne, antérieure au récit : souligne le prestige et la profondeur
historique de Carthage.
</note>
</app>
<app xml:id="lem-tyrii" loc="#v12">
<lem ana="Tyrii">Tyrii tenuere coloni</lem>
<note type="expl">
Colonisation phénicienne : la fondation tyrienne inscrit Carthage dans un
réseau commercial et maritime oriental.
</note>
</app>
<app xml:id="lem-karthago" loc="#v13">
<lem ana="Karthago">Karthago, Italiam contra Tiberinaque longe ostia</lem>
<note type="expl">
La position géographique, « en face de l’Italie », anticipe la rivalité
politique et militaire entre Rome et Carthage.
</note>
</app>
<app xml:id="lem-dives" loc="#v14">
<lem ana="dives">diues opum</lem>
<note type="expl">
« riche en ressources » : met en avant la prospérité matérielle et la
puissance économique de la cité.
</note>
</app>
<app xml:id="lem-asperrima" loc="#v14">
<lem ana="asper">studiisque asperrima belli</lem>
<note type="expl">
« extrêmement acharnée pour la guerre » : association forte entre richesse
et agressivité militaire, annonçant les guerres puniques.
</note>
</app>
<app xml:id="lem-iuno" loc="#v15">
<lem ana="Iuno">Iuno</lem>
<note type="expl">
Junon, épouse de Jupiter, protectrice traditionnelle de certaines cités
grecques ; ici, son attachement à Carthage explique son hostilité durable
envers les Troyens et leurs descendants.
</note>
</app>
<app xml:id="lem-fertur" loc="#v15">
<lem ana="fero">fertur</lem>
<note type="expl">
Forme impersonnelle : « on dit que », « il est rapporté que » — marque une
tradition reçue plutôt qu’un fait historiquement vérifiable.
</note>
</app>
<app xml:id="lem-samo" loc="#v16">
<lem ana="Samos">posthabita coluisse Samo</lem>
<note type="expl">
Samos est un autre grand centre du culte d’Héra/Junon ; préférer Carthage
à Samos renforce la singularité de la faveur divine.
</note>
</app>
<app xml:id="lem-regnum" loc="#v17">
<lem ana="regnum">hoc regnum dea gentibus esse</lem>
<note type="expl">
Carthage est pensée comme un « royaume destiné aux nations » : anticipation
d’un pouvoir impérial à vocation universelle.
</note>
</app>
<app xml:id="lem-fata" loc="#v18">
<lem ana="fatum">si qua fata sinant</lem>
<note type="expl">
Le souhait de Junon se heurte aux « destins » : tension entre volonté
divine particulière et ordre général du Fatum.
</note>
</app>
<app xml:id="lem-progeniem" loc="#v19">
<lem ana="progenies">Progeniem … a sanguine duci</lem>
<note type="expl">
Allusion aux futurs Romains, descendants d’Énée : la lignée troyenne
est appelée à se développer en Italie.
</note>
</app>
<app xml:id="lem-arces" loc="#v20">
<lem ana="arx">Tyrias … uerteret arces</lem>
<note type="expl">
L’expression annonce symboliquement la chute des forteresses liées à Tyr,
donc la défaite de Carthage face à Rome.
</note>
</app>
<app xml:id="lem-populus" loc="#v21">
<lem ana="populus">populum late regem belloque superbum</lem>
<note type="expl">
Portrait programmatique des Romains : peuple souverain sur une vaste
étendue, orgueilleux dans la guerre.
</note>
</app>
<app xml:id="lem-libya" loc="#v22">
<lem ana="Libya">excidio Libyae</lem>
<note type="expl">
La « ruine de la Libye » désigne la chute de Carthage ; la
formulation condense en une formule la destinée de la cité.
</note>
</app>
<app xml:id="lem-parcae" loc="#v22">
<lem ana="Parcae">sic uoluere Parcae</lem>
<note type="expl">
Les Parques garantissent la réalisation du projet : la narration est
placée sous le signe d’un avenir fixé, malgré la résistance des dieux.
</note>
</app>
</listApp>
</div>
</body>
<back>
<div type="bibliography">
<head>Bibliographie</head>
<listBibl>
<bibl xml:id="b-servius">
Servius, <title>In Vergilii Aeneidem commentarii</title>,
éd. G. Thilo – H. Hagen, Leipzig, Teubner, 1881–1902.
</bibl>
<bibl xml:id="b-horsfall">
Nicholas Horsfall, <title>Aeneid 1</title>,
Leiden – New York – Cologne, Brill, 1995.
</bibl>
<bibl xml:id="b-conte">
Gian Biagio Conte, <title>Latin Literature: A History</title>,
Baltimore, Johns Hopkins University Press, 1994.
</bibl>
<bibl xml:id="b-virg-bude">
Virgile, <title>Énéide, Livre I</title>,
trad. fr. et commentaire par J. Perret,
Collection des Universités de France (« Budé »),
Paris, Les Belles Lettres, 2023 (1977).
</bibl>
</listBibl>
</div>
</back>
</text>
</TEI>
\stopbuffer
% ================================================
% DOCUMENT
% ================================================
\starttext
\xmlprocessbuffer{main}{poem}{}
\stoptext
% FIN DU CODE ConTeXt
Ilustrations Virgile (TEI-XML dans ConTeXt)
[modifier | modifier le wikicode]Navigation
[modifier | modifier le wikicode]|
Part. III, ch. 9 • TEI-XML et poésie • Sommaire |