Un petit billet pour archiver (et partager) mon exploration de la feuille de transformation TEI to LaTeX mise à disposition par le Consortium TEI.
XSLT est un langage de transformation XML (W3C approved) qui permet de transposer son fichier XML dans un autre format HTML, PDF, ODT, etc.
Dans le cadre de l’édition critique du Journal de Lyon que je traite en XML/TEI, je voulais tester la transformation XML vers LaTeX qui est un langage de mise en forme de document assez répandu dans le milieu des sciences dures (notamment pour sa gestion des caractères et formules mathématiques), mais qui peine encore à se faire une place en sciences humaines.
En passant, pour s’initier à LaTeX (prononcer lateK), je recommande d’avoir sous la main le petit livre de Maïeul Rouquette : http://geekographie.maieul.net/Xe-LaTeX-applique-aux-sciences
Donc, au lieu de créer une feuille XSLT “from scratch”, j’ai utilisé celle proposée par le Consortium TEI : http://www.tei-c.org/Tools/
Il y a deux possibilités :
- soit on transforme son fichier XML via l’application Oxgarage : http://www.tei-c.org/oxgarage/
- soit on télécharge l’archive sur leur Git (https://github.com/TEIC/Stylesheets “Download ZIP” sur le côté droit) et on le fait tourner sur son ordinateur.
Malheureusement pour moi, la première option n’a pas donné les résultats escomptés, car j’ai dans ma source de nombreuses et longues notes marginales (encodées <note place=”margin”>, qui sont transformées en \marginpar dans mon fichier LaTeX. En générant la sortie PDF, mes notes finissent par se chevaucher, car la gestion des éléments flottants ne se passent pas correctement du côté LaTeX.
\reversemarginpar
\marginnote{1713 \& 1714}, a été nommé échevin pour la présente année 1715 \& pour 1716, avec Monsieur {\name Jacques Laureau} banquier, originaire de {\name Dijon}
Ci-dessus, les éléments \reversemarginpar et \marginnote incriminés et résultat en générant le PDF.
De plus, pour une édition papier au format A4, il n’est pas très facile de gérer la zone de texte, la zone de notes marginales, et la zone des marges d’impression. Du coup, j’ai décidé de renvoyer les notes marginales de ma source en notes de bas de page.
Modifier le traitement des balises TEI <note>
Pour appliquer cela à la feuille de transformation, il m’a fallu modifier directement le XSL.
Le dossier Stylesheets-master (une fois téléchargé sur Git et dézippé) contient plusieurs dossiers, un pour chaque type de transformation – de docx à html en passant par odt ou epub.
En ouvrant le dossier latex, on a accès à une quinzaine de fichiers xsl, ordonnés selon les grands modules de la TEI :
- latex_core.xsl (contiendra les requêtes d’execution pour le module core de la TEI)
- latex_header.xsl (pour le module corpus header)
- latex_namesdates.xsl (pour le module Names, Dates, People and Places)
- …
La transformation des balises TEI “note” se trouve dans le module Core. Dans le fichier latex_core.xsl, les notes sont gérées de cette façon :
La balise TEI <note>, si elle est accompagnée d’un attribut place avec une valeur left, margin_left, etc. est placée dans un élément LaTeX \marginnote précédé de \revermarginpar ou \normalmarginpar si la condition de l’attribut n’est pas remplie.
où j’ai enlevé les précédents éléments pour les remplacer par \footnote{}
J’ai également mais une distinction sur l’attribut “place” de la balise TEI <note> pour pouvoir différencier mes propres notes de bas de page (place=”bottom”), de celles de la source (place=”margin”).
Nous sommes bien d’accord que ceci est un bricolage “home made” construit dans l’urgence. Une meilleure méthode serait d’avoir le temps de se former à XSL pour construire de véritables requêtes de transformation selon la structure TEI utilisée dans ses propres fichiers.
N’hésitez pas à donner vos conseils en commentaires.
OpenEdition vous propose de citer ce billet de la manière suivante :
Rosemonde Letricot (20 février 2015). Quand je bricole une feuille de transformation XSLT. Prosopoly. Consulté le 17 septembre 2024 à l’adresse https://doi.org/10.58079/t1hr
L’extension « koma-script » de LaTeX permet une gestion très fine de l’empagement et donc de l’espace réservé aux notes marginales. Plus d’infos, au sein d’une TeXlive, via la commande $ texdoc koma .
Merci pour cette information 😉
très chouette billet! C’est possible normalement d’insérer du code grâce au service gist de github https://gist.github.com/ bonne continuation !