Du Thesaurus Linguae Graecae à LaTeX

lundi 29 avril 2013, mise à jour lundi 16 février 2015, par Maïeul
Suivre la vie du site RSS 2.0 Forum

Mon script permettant d’adapter des textes extraits du Thesaurus Linguae Graecae à LaTeX a été amélioré avec l’aide de Annette von STOCKHAUSEN.

Outre des nouvelles fonctionnalités, il est désormais configurable. Le présent article a pour vocation à devenir la documentation « officielle » du script à partir de sa version 2.0 [1].

Exemple

J’ai extrait du site TLG le texte suivant [2] :

 Ἔκαμεν ὁ λόγος, τοῦτον τὸν θεσπέσιον καὶ τριπόθητον
Βαρνάβαν τὸν ἀπόστολον ἐπᾶραι τοῖς ἐγκωμίοις ποθῶν,
καὶ οὔπω ἥψατο τοῦ προοιμίου· τοῖς γὰρ ἐπαίνοις ἀπρό-
σιτος τυγχάνει ὁ θαυμάσιος. Διὸ ἀφέντες ὡς ἀνέφικτον (135)
τὸν περὶ τῶν ἐγκωμίων λόγον, ὀλίγα τῶν εἰς ἡμᾶς
ἰόντων περὶ τῆς τούτου βιώσεως καὶ τελειώσεως ἔκ τε
τοῦ Στρωματέως καὶ ἐξ ἑτέρων ἀρχαίων συγγραμμάτων
παραθήσομαι τῇ ὑμετέρᾳ ὁσιότητι, καὶ οὕτω τὸ πέρας
ἐπιθήσομεν τῷ διηγήματι, παραχωρήσαντες τῇ θεοπνεύστῳ (140)
Γραφῇ τοῦ ἀοιδίμου τὴν κεφαλὴν μεγαλοπρεπῶς στε-
φανῶσαι· φησὶ γάρ· “Ἦν δὲ Βαρνάβας ἀνὴρ ἀγαθὸς καὶ
πλήρης Πνεύματος ἁγίου καὶ πίστεως.” Οὗ τί ἂν γένοιτο
ἴσον ἢ παραπλήσιον πώποτε;

Je souhaiterais :

  • faire disparaître les numéros de ligne
  • transformer les guillemets en utilisant la commande \csquotes à la place.
  • supprimer les césures, puisque LaTeX se charge tout seul d’en mettre.

Voici le résultat souhaité :

Ἔκαμεν ὁ λόγος, τοῦτον τὸν θεσπέσιον καὶ τριπόθητον
Βαρνάβαν τὸν ἀπόστολον ἐπᾶραι τοῖς ἐγκωμίοις ποθῶν,
καὶ οὔπω ἥψατο τοῦ προοιμίου· τοῖς γὰρ ἐπαίνοις ἀπρό%
σιτος τυγχάνει ὁ θαυμάσιος. Διὸ ἀφέντες ὡς ἀνέφικτον 
τὸν περὶ τῶν ἐγκωμίων λόγον, ὀλίγα τῶν εἰς ἡμᾶς
ἰόντων περὶ τῆς τούτου βιώσεως καὶ τελειώσεως ἔκ τε
τοῦ Στρωματέως καὶ ἐξ ἑτέρων ἀρχαίων συγγραμμάτων
παραθήσομαι τῇ ὑμετέρᾳ ὁσιότητι, καὶ οὕτω τὸ πέρας
ἐπιθήσομεν τῷ διηγήματι, παραχωρήσαντες τῇ θεοπνεύστῳ 
Γραφῇ τοῦ ἀοιδίμου τὴν κεφαλὴν μεγαλοπρεπῶς στε%
φανῶσαι· φησὶ γάρ· \enquote{Ἦν δὲ Βαρνάβας ἀνὴρ ἀγαθὸς καὶ
πλήρης Πνεύματος ἁγίου καὶ πίστεως.} Οὗ τί ἂν γένοιτο
ἴσον ἢ παραπλήσιον πώποτε;

Je me sert pour cela du script Python joint.

Dernière version stable du script TLG2LaTeX

Utilisation (tutoriel)

  • Dans le TLG, afficher le texte sans les « Beta Escape » (dans la colonne de gauche, le menu déroulant « Beta Escape » mis à « None »).
  • Le copier dans un fichier nom.txt.
  • Avoir Python 3 ou plus installé sur sa machine.
  • Récupérer le zip joint, le décompresser, et mettre les deux fichiers .py à côté du fichier nom.txt
  • Avec son terminal, se rendre dans le dossier du fichier et frapper python3 tlg2latex.py nom.txt.
  • Un fichier normalise_nom.txt apparaît à côté : il contient le code utilisable dans LaTeX.

Nouvelles fonctionnalité de la version 2.0 [3]

  • Possibilité de configurer le script.
  • Possibilité de normaliser un fichier situé dans un autre dossier.
  • Gestion des élisions, pour éviter de confondre les signes d’élisions avec les guillemets ouvrants.
  • Prototype de gestion des numéros de chapitres et de paragraphes.
  • Possibilité de normaliser l’encodage unicode.
  • Ajout de jeu de test.
  • Standardisation du code.

Options de configuration

Le fichier de configuration config.py est à placer à côté du script.

Il se compose de ligne sous la forme :

option = valeur

L’ensemble des options sont listées dans default.py. Les valeurs peuvent être :

  • Des chaînes, mise entre guillemet anglais "chaîne".
  • Des tuples, ou listes, selon la syntaxe : ("chaîne1","chaîne2","chaîne...","chaînen").
  • Des chaînes pour remplacement d’expressions régulières [4], sous la forme :  chaînes ».
  • Une valeur booléenne : False ou True

Les options se divisent en deux catégories :

  • Celles pour interpréter le fichier en entrée.
  • Celles pour régler le fichier en sortie.
Liste des options pour le fichier en entrée
OptionExplicationValeur par défautIntroduit dans la version
hyphen Traits de césure ("‑","-") 2.0
line_number_r Expression régulière pour décoder les numéros de lignes "\([0-9]*\)" 2.3. Entre 2.0 et 2.3 était line_number.
ellipsis Expression régulière pour repérer les ellisions "(([γδ(δι)θλμπρτφ(ἵν)])" 2.0. Modifié en 2.6.
begin_quote_r Expression régulière pour repérer les guillemets ouvrants "[‘“«]" 2.0
end_quote_r Expression régulière pour repérer les guillemets fermants "[’”»]" 2.0
paragraph_r Expression régulière pour repérer les numéros de paragraphe "\((\w+?)\.\) " 2.0
chapter_r Expression régulière pour repérer les numéros de chapitre "(\d+?\.)" 2.0
ndash_r Expression régulière pour repérer les tirets demi-cadratins "—" 2.1
begin_insert_r Expression régulière pour repérer le début des insertions. "<" 2.2
end_insert_r Expression régulière pour repérer la fin des insertions. ">" 2.2
par_break_r Expression régulière pour repérer le début des nouveaux paragraphes. "^( )" 2.2
empty_line_r Lignes vides ("","\r","\n") 2.2
before_stanza_r Ligne indiquant un début de poésie. " \n" 2.5
after_stanta_r Ligne indiquant une fin de poésie. " \n" 2.5
Liste des options pour le fichier en sortie
OptionExplicationValeur par défautIntroduit dans la version
begin_quote_w Guillemets ouvrants "\enquote{" 2.0
end_quote_w Guillemets fermants "}" 2.0
paragraph_w Chaîne pour remplacement d’expression régulière indiquant le numéro de paragraphe r"\\marginnote{\1}" 2.0
chapter_w Chaîne pour remplacement d’expression régulière indiquant le numéro de chapitre r"\n\\textbf{\1}" 2.0
unicode_normalize Indique le type de normalisation unicode à mettre en œuvre. Les valeurs possibles sont :

  • False : pas de normalisation ;
  • "NFC" : utilise les formes unitaires des caractères ;
  • "NFKC" : utilise les formes unitaires des caractères et remplace les caractères « équivalents ». Par exemple le caractère unicode U+216C indiquant le chiffre romain (50) est remplacé par son « équivalent » U+004C, indiquant la lettre latine L ;
  • "NFD" utilise les formes composées des caractères ;
  • "NFKD" utilise les formes composées des caractères et remplace les caractères « équivalents »
False 2.0
ellipsis_back Symbole d’élision "’" 2.0
ndash_w Tiret demi-cadratin "--" 2.1
begin_insert_w Début d’une insertion r"\\textins{" 2.2
end_insert_w Fin d’une insertion "}" 2.2
empty_line_w Ligne vide "\n" 2.2
line_number_w Chaîne pour remplacement d’expression régulière indiquant le numéro de ligne. "" 2.3
last_regexp Série d’expression régulière et de chaîne de remplacement à appliquer au tout dernier moment. Par exemple j’utilise :
[
("\s+(,|·|\.|˙|;)",r"\1"),
("·","˙"),
(";",";")
]



  • l. 2 : évite les espaces avant les signes de ponctuations.
  • l. 3 : remplace les points du milieu par des points en haut.
  • l. 4 : remplace les points-virgules (U+003B) par des points d’interrogation grecs (U+037E).
False 2.4
before_stanza_w Code de début de poésie. \stanza 2.5
after_stanza_w Code de fin de poésie. "\&" 2.5
between_stanza_w Code entre chaques vers. "&" 2.5

P.-S.

Ce script est sous licence GPL 3. Ses auteurs sont :

  • Maïeul ROUQUETTE
  • Annette von STOCKHAUSEN

Il est disponible sur Github.

Notes

[1On nous excusera par conséquent le caractère redondant de certaines parties de l’article.

[2Il s’agit d’un extrait d’une louange à l’apôtre Barnabé.

[3Comprend les nouveautés de la version 1.1.

[4Pour comprendre les expression régulières, on pourra lire le tutoriel de la documentation de Python.

Vos commentaires

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Acheter XeLaTeX appliqué aux sciences humaines

À propos

Titulaire d’un doctorat en théologie et d’un doctorat en histoire, sous la direction conjointe de Frédéric Amsler et d’Élisabeth_Malamut, je commence à partir du 1er août 2017 un travail d’édition critique des Actes de Barnabé.

Dans le cadre de la rédaction de mon mémoire de master puis de ma thèse de doctorat, j’ai été emmené à utiliser LaTeX, et j’ai donc décider de partager mes techniques. En effet, au cours de mes premiers apprentissages, j’ai découvert que les ressources indiquant les outils pour l’utilisation de LaTeX en sciences humaines étaient rares. Ceci m’a conduit à maintenir ou créer plusieurs packages LaTeX et à donner plusieurs formations.

J’ai reçu en 2018 le prix DANTE e.V pour mon travail autour de LaTeX, en particulier autour de reledmac et reledpar.

Par ailleurs, je suis membre actif de la communauté SPIP, au sein de laquelle j’administre le site Spip-Contrib. Je propose sur ce site quelques notes sur SPIP, en général à destination de webmestre.

Il m’arrive également de faire un petit peu de Python, de temps en temps.

Enfin, je tiens un blog de réflexions politiques et religieuses.

Maïeul