Exemples linguistiques avec LaTeX (2)

Dans un précédent billet d’introduction, nous avons vu comment présenter des exemples linguistiques numérotés et glosés avec LaTeX. Ce billet va présenter quelques solutions pour traiter les gloses de manière systématique et efficace.

Intérêt de systématiser les gloses grammaticales

Mon collègue Guillaume Jacques rédige actuellement une grammaire de référence du japhug avec LaTeX, et je l’ai encouragé à prendre le temps de réfléchir à une manière de systématiser le traitement de ses exemples glosés. En effet, la systématisation (semi-)automatique par la programmation constitue tout l’intérêt de LaTeX, et taper ses gloses en code dur comme sur une machine à écrire va à l’encontre même du principe de LaTeX. Cela serait en particulier une très mauvaise idée dans le cas d’un livre de plusieurs centaines de pages et d’exemples comme une grammaire.

Il est conventionnel de présenter les marqueurs grammaticaux dans les gloses par des abréviations en petites capitales. La solution simple et évidente consiste donc dans les exemples à mettre chaque glose grammatical à l’intérieur d’une commande \textsc{ }.

\begin{exe}\ex
\gll Ceci est un exemple. \\
this \textsc{cop.pres.3sg} \textsc{art.def.m.sg} example \\
\glt `This is an example.'
\end{exe}

Mais cette méthode simpliste pose plusieurs problèmes:

  1. il est très facile de se tromper dans les gloses, en faisant des fautes de frappe par exemple
  2. il est impossible de créer facilement et automatiquement une liste classée par ordre alphabétique des abréviations grammaticales (qui devrait se mettre à jour continuellement, sinon il est facile d’oublier d’y inclure une abréviation ou d’y laisser une abréviation non-utilisée)
  3. changer une glose pour une autre, comme corriger «passé» en «perfectif» nécessite de faire un chercher/remplacer long et fastidieux

Créer des commandes de gloses

La solution au premier problème consiste à créer pour chaque glose une commande qui imprime l’abréviation voulue en petites capitales et d’utiliser ces commandes dans les exemples. Comme l’abréviation est imprimée automatiquement, il ne peut pas y avoir d’erreur, et une faute de frappe dans une commande provoque l’arrêt de la compilation et il est facile de corriger aussitôt l’erreur.

Le second problème peut se résoudre grâce aux extensions LaTeX pour créer des glossaires et index. Il suffit de rajouter dans la définition de chaque commande d’abréviation une commande passant l’abréviation au moteur de glossaire.

C’est précisément la solution implémentée par l’extension leipzig. Cette extension propose une série de commandes prédéfinies prennant en charge les abréviations standard des Leipzig glossing rules du type \Acc pour «ACC: accusatif». La liste des abrévaitions est réalisée en interne grâce à l’extension glossaries et nécessite plusieurs compilations et le recours au programme makeglossaries.

L’extension glossaries est à mon avis aujourd’hui supplantée par l’extension acro, qui est complet et d’une bonne souplesse d’utilisation, et qui a l’avantage de ne pas nécessiter le recours à une outil externe ni des compilations à répétition (2 seulement pour imprimer la liste). Parmi les fonctions utiles, on peut noter les suivantes:

  • des commandes permettent de choisir d’imprimer le terme non-abrégé ou l’abréviation dans le texte
  • il est possible d’imprimer la forme non-abrégée uniquement si c’est la première fois qu’elle apparait
  • le style des abréviations et de la liste des abréviations sont complètement réglables

Voici un exemple complet ci-dessous. Par défaut, la liste s’imprime sous forme de liste de type enumerate. Je choisis ici le format tabular à la place.

\documentclass[11pt]{article}
\usepackage{gb4e,cgloss}
\noautomath
\renewcommand{\eachwordone}{\itshape}

\usepackage{acro}
\acsetup{short-format = {\scshape},extra-style = paren, list-style = tabular}
\DeclareAcronym{cop}{short=cop,long=copula}
\DeclareAcronym{pres}{short=pres,long=present}
\DeclareAcronym{3}{short=3,long=third person}
\DeclareAcronym{sg}{short=sg,long=singular}
\DeclareAcronym{art}{short=art,long=article}
\DeclareAcronym{def}{short=def,long=definite}
\DeclareAcronym{m}{short=m,long=masculine}

\usepackage{polyglossia}
\setmainfont[Mapping=tex-text, Ligatures=Common]{Brill}

\begin{document}
The French \ac{cop}:
\begin{exe}\ex
\gll Ceci est un exemple. \\
this \acs{cop}.\acs{pres}.\acs{3}\acs{sg} \acs{art}.\acs{def}.\acs{m}.\acs{sg} example \\
\glt `This is an example.'
\end{exe}

\Acl{cop}

\printacronyms[name=Grammatical abbreviations]
\end{document}

Rien n’empêche bien sûr de reprendre l’idée de leipzig et de définir des commandes du type \Acc:

\newcommand{\Cop}{\acs{cop}}

Si l’on change l’étiquette d’une glose, il suffit de changer la définition de la commande d’abréviation pour que toutes les gloses du document changent, y compris la liste.

Aller plus loin

On peut imaginer plusieurs manières d’aller plus loin dans l’automatisation. Pour les utilisateurs de Toolbox on peut imaginer de rajouter une ligne de glose supplémentaire où les abréviations grammaticales sont les commandes définies dans LaTeX. Pour les textes déjà glosés, un script avec quelques expressions régulières permet de mettre chaque abréviation à l’intérieur d’une commande \acs{ }.

On peut aussi envisager des commandes dont le nom serait la forme du morphème glosé, comme \un pour l’article français dans l’exemple ci-dessus. Et il suffit de rajouter un numéro ou un autre identifiant dans le cas d’homonymes ou de commandes déjà définies par ailleurs. C’est la solution que j’avais adoptée pour rédiger ma thèse, car j’avais prévu la possibilité que je change les étiquettes de certains marqueurs grammaticaux en cours de rédaction au fil de l’évolution de mon analyse.

Je ne désespère pas un prochain jour d’écrire une extension LaTeX pour la linguistique qui prendrait en charge les idées développées dans ce carnet.

Ce billet peut être cité de la façon suivante: Thomas Pellard, « Exemples linguistiques avec LaTeX (2) », Cipanglossia, 16 septembre 2017, https://cipanglo.hypotheses.org/543.

Une réflexion au sujet de « Exemples linguistiques avec LaTeX (2) »

  1. Alexis Michaud

    \titre_du_commentaire{Aller encore plus loin : intégration Pangloss – LaTeX ?}

    Si on s’autorise à imaginer des grammaires connectées, pour une meilleure vérifiabilité des données, et plus généralement pour faciliter la circulation entre analyses et données, que dirais-tu de coordonner la mise en place d’outils pour une meilleure intégration entre la grammaire (composée en LaTeX) et les données (pour des données orales, audio/vidéo, la Collection Pangloss paraît un bon exemple)?

    Existe-t-il des scripts de conversion d’exemples glosés, voire de textes entiers, depuis le format Pangloss (XML) vers un format LaTeX? S’il n’en existe pas, parviendrait-on à te motiver pour que tu participes à un tel projet?

    Ce travail viendrait à point nommé, pour aider à formaliser un peu plus l’encodage des gloses dans la Collection Pangloss. Dans certains documents (notamment les plus anciens), les gloses techniques sont en capitales. Plus récemment, Guillaume a proposé l’usage du symbole degré ° avant la glose. (Un exemple ici : http://bit.ly/2jzOe2A ) Tout récemment, on a archivé des documents d’une collègue qui a choisi de délimiter les gloses techniques par une barre oblique avant et après ( http://bit.ly/2x5GTNC ). Ce serait important d’uniformiser, et le plus tôt serait le mieux. (Comme le souligne Guillaume, un symbole devant la glose suffit pour appliquer automatiquement la mise en forme souhaitée.)

    Le format Pangloss étant du XML simple et standardisé (strictement arborescent), c’est un bon format-pivot. Si une passerelle existait entre Pangloss et LaTeX, elle pourrait être empruntée pour des trajets FLEx > Pangloss > LaTeX et ELAN > Pangloss > LaTeX, par exemple.

    Répondre

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *