ArabLuaTeX : ArabTeX pour LuaLaTeX

mercredi 13 avril 2016, mise à jour dimanche 10 avril 2016, par Robert Alessi
Suivre la vie du site RSS 2.0 Forum

La notation « ArabTeX » a été introduite sous TeX/LaTeX en 1992. Elle a été ensuite portée sous XeLaTeX par arabxetex. arabluatex l’introduit pour la première fois sous LuaLaTeX. arabluatex ne prend actuellement en charge que la langue arabe. C’est une différence importante par rapport à arabtex qui intègre un grand nombre de langues sémitiques. De nouvelles langues seront progressivement ajoutées à arabluatex, à commencer par l’hébreu et le syriaque.

Présentation

Il n’est pas question d’entrer ici dans le détail. Le package, actuellement en version 1.0.1 est publié sur le CTAN, où l’on peut trouver une documentation complète.

Pour une comparaison entre arabtex (pour (La)TeX), arabxetex (pour XeLaTeX) et arabluatex (pour LuaLaTeX), je renvoie à cette documentation (point 1.1).

Comme arabtex, arabluatex transforme la notation ASCII ArabTeX en arabe unicode. Cette notation est intéressante à deux titres :

  1. elle s’intègre parfaitement au code informatique. Cela est particulièrement important quand il s’agit de saisir des documents complexes, tels que des documents scientifiques ou des éditions critiques dans lesquelles abondent toutes sortes d’annotations. Ce n’est pas le cas du script arabe unicode, qui perturbe constamment le sens des crochets, parenthèses, accolades et autres signes informatiques, sans parler des interversions de mots.
  2. elle permet un encodage précis de la langue arabe, et donne la possibilité, par exemple, de séparer les préfixes, les particules et les affixes, introduisant ainsi la possibilité de recherches grammaticales selon des critères complexes.

Il faut ajouter à cette liste les différentes possibilités de traitement du code ASCII ArabTeX :

  1. vocalisation totale (scriptio plena) : mode [fullvoc]
  2. vocalisation : mode [voc]
  3. arabe non-vocalisé (scriptio defectiva) : mode [novoc]
  4. translittération selon les différents standards : mode [trans]

Tous ces traitements sont possibles à partir d’une seule opération de saisie.

Particularités

Le fonctionnement d’arabluatex est très différent de celui de ses prédécesseurs. Le traitement du code ASCII ne repose ni sur TeX ni sur le moteur TECkit, mais sur un jeu de fonctions Lua. Dans un premier temps, sont traitées dans les environnements arabes toutes les commandes LaTeX qui sont censées avoir de l’arabe dans leurs arguments, comme \emph ou \textbf. Ensuite, le code ASCII, une fois isolé, est confié à de nouvelles fonctions qui appliquent diverses tables de correspondances selon les choix qui ont été faits.

Autre particularité très importante : arabluatex ne fait appel ni à polyglossia ni à luabidi. Les sens d’écriture sont pris en charge directement par les primitives de LuaTeX que sont \pagedir \bodydir \pardir et \textdir. Sous LuaTeX, c’est en effet toujours ainsi que l’on devrait régler les sens d’écriture.

Dernier point important : arabluatex ne traite pas le code ASCII tout à fait comme ses prédécesseurs. Il faut donc lire la documentation avant de l’utiliser.

Pour ne prendre ici qu’un exemple, sous arabluatex on ne doit jamais écrire deux fois une lettre solaire pour obtenir le tašdīd euphonique. Ainsi, pour obtenir اَلشَّمسُ, on peut écrire al-^samsu ou a^s-^samsu, mais jamais al-^s^samsu qui est en fait absurde.

arabluatex et reledmac

Dans les environnements \arb{} ou\begin{arab} ... \end{arab} la commande à double argument \edtext{}{} est prise en charge. On peut ainsi avoir ceci :

Comme on le voit, dans l’édition d’un texte arabe, il faut remettre la commande \arb{} dans le premier argument de \edtext{}{}. On peut ainsi avoir comme lemme du texte dans une autre langue que l’arabe.

arabluatex et les commandes complexes

Comme on l’a dit plus haut, toute commande LaTeX à argument simple, placée à l’intérieur d’un environnement arabe, est censée contenir exclusivement du texte arabe.

Parfois, ce n’est pas le cas. Par exemple, si l’on souhaite insérer une commande dont l’agument est une dimension, il faut l’insérer elle-même dans la commande \RL{} fournie par arabluatex, comme ceci :

Si l’argument ne contient que de l’arabe, on écrira :

Et c’est tout ! La « magie » de Lua fera le reste, et l’on obtiendra à la fin un index tout arabe, avec un classement alphabétique correct. En revanche, si la commande \index{} ne contient pas que de l’arabe, il faudra écrire :

En conclusion

Happy LuaTeXing, bien sûr !

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

Je suis membre de l’UMR CNRS 8167 « Orient et Méditerranée » (laboratoire « Médecine grecque »). Mon domaine de recherche : édition, traduction et commentaire de textes médicaux grecs et arabes.

Robert Alessi