ConTeXt/Textes polyglottes avancés
|
◀ Page précédente : Texte parallèle multilingue avec langues non-romanes |
Part. III, ch. 9 • Textes polyglottes avancés • Sommaire |
Page suivante : Partie IV, chapitre 9 : références, citations et index ▶ |
ConTeXt/Textes polyglottes avec systèmes d’écriture complexes (CJK, hindi, etc.)
[modifier | modifier le wikicode]Objectifs de cette section
Cette page présente les difficultés spécifiques liées à la composition de textes polyglottes impliquant des systèmes d’écriture complexes, par exemple :
- les écritures CJK (chinois, japonais, coréen) ;
- les écritures indo-aryennes (hindi en devanagari, etc.).
Elle a pour but de :
- montrer comment choisir et déclarer des polices adaptées à ces systèmes d’écriture ;
- expliquer les différences de comportement entre alphabets latins et systèmes CJK/Devanagari ;
- illustrer la composition parallèle (colonnes, blocs) avec ces langues ;
- signaler les principaux pièges typographiques (césure, justification, interlignes, direction d’écriture) ;
- donner un exemple ConTeXt reproductible, que le lecteur pourra adapter à ses propres textes.
Prologue : gérer les langues non-romanes avec ConTeXt
[modifier | modifier le wikicode]ConTeXt est l’un des rares systèmes typographiques capables de composer nativement la quasi-totalité des écritures du monde moderne. Cette capacité repose sur deux piliers fondamentaux :
- l’usage intégral de la norme UTF-8, qui offre une représentation universelle des caractères ;
- le moteur LuaMetaTeX associé à HarfBuzz, qui assure le shaping (formes contextuelles, ligatures, direction d’écriture) et la composition intelligente des scripts complexes.
Grâce à cette architecture, ConTeXt peut gérer aussi bien le français que l’arabe, le chinois, l’hindi, l’hébreu, le thaï ou le coréen, sans devoir charger d’extensions externes. Cependant, chaque famille d’écriture possède des besoins typographiques particuliers qu’il est important de comprendre avant de produire des documents multilingues.
Les tableaux ci-dessous synthétisent les défis les plus fréquents et les solutions recommandées.
1. Pourquoi ConTeXt gère toutes les écritures : rôle de UTF-8
[modifier | modifier le wikicode]La norme UTF-8 permet de représenter de façon uniforme l’ensemble des caractères Unicode : alphabets latins, cyrilliques, grec, langues sémitiques, systèmes indo-aryens, écritures CJK, etc.
| Élément | Rôle dans ConTeXt |
|---|---|
| UTF-8 | Représentation universelle des caractères
→ tous les scripts peuvent coexister dans un même fichier .tex |
| Unicode blocks | ConTeXt identifie automatiquement les plages Unicode (CJK, arabe, hébreu, devanagari…)
→ activation des mécanismes adaptés à chaque écriture |
| HarfBuzz | Shaping : ligatures, formes contextuelles, clusters complexes
→ indispensable pour l’arabe, l’hindi, le bengali, etc. |
| LuaMetaTeX | Permet d’intercepter la liste des nœuds, d’ajouter de la glue, de modifier le comportement typographique
→ idéal pour affiner l’espacement du chinois, thaï, japonais |
Ainsi, ConTeXt n’a pas besoin d’un « paquet » séparé par langue : le support est natif, stable et systémique.
2. Trois grandes familles de difficultés
[modifier | modifier le wikicode]| Famille d’écriture | Problème principal | Problème secondaire | Conséquence typographique | Complexité |
|---|---|---|---|---|
| CJK (Chinois, Japonais, Coréen) | Pas d'espaces entre caractères | Symboles ambigus aux frontières | Collisions avec texte latin | ⚠️ Moyenne (souvent Lua nécessaire) |
| RTL (Arabe, Hébreu) | Direction droite→gauche | Ponctuation inversée, guillemets, shaping obligatoire | Risques de sauts LTR/RTL, parenthèses inversées | ⚠️ Haute (nécessite balisage clair) |
| Indo-aryennes (Devanagari, Bengali…) | Ligatures complexes, clusters | Mélange chiffres latins/non-latins | Dépend fortement de la police | ✔️ Bonne (UTF-8 + HarfBuzz suffisent) |
| Asie du Sud-Est (Thaï, Lao, Khmer) | Absence d’espaces entre mots | Empilements verticaux, diacritiques | Césure difficile | ⚠️ Moyenne (segmentation nécessaire) |
3. L’hyphénation (césure) : une difficulté commune mais variable
[modifier | modifier le wikicode]La césure automatique (« hyphenation ») est un point crucial en typographie multilingue. ConTeXt s’appuie sur trois mécanismes :
| Mécanisme | Fonction | Utilisé pour |
|---|---|---|
| Patterns TeX
(fichiers .hyp) |
Règles de césure par langue | Français, anglais, allemand, espagnol…
→ langues à alphabet latin |
| Wordbreaking Unicode | Découpe selon les règles Unicode (Break rules) | Chinois, japonais, thaï (partiellement), coréen |
| Segmentation via Lua | Approche personnalisée (morphologie, dictionnaire, IA) | Thaï, lao, khmer, cas limites CJK + latin |
Tableau des comportements selon l’écriture
[modifier | modifier le wikicode]| Langue / Script | Césure naturelle ? | Besoin d’intervention ? | Rôle de Lua |
|---|---|---|---|
| Français / anglais / allemand | Oui (patterns fiables) | Aucun | Inutile |
| Arabe / Hébreu | Césure très limitée
(difficile, typographiquement rare) |
Peu utilisé
(car l’arabe évite la césure) |
Inutile dans 99 % des cas |
| Devanagari / Hindi | Césure possible
mais shaping complexe |
La police doit être excellente
(Amiri pour arabe, Noto Devanagari pour hindi) |
Rarement nécessaire |
| Chinois / Japonais | Pas de césure : segmentation par caractère | Peut suffire, mais transitions avec latin à gérer | Utile pour ajouter de la glue intelligente |
| Thaï / Lao / Khmer | Pas de césure naturelle
(segmentation lexicale obligatoire) |
Peut produire des coupures aberrantes | Lua conseillé pour segmentation |
Résumé rapide
[modifier | modifier le wikicode]- Pour les langues latines → césure standard (patterns)
- Pour les écritures RTL → césure rarement utilisée
- Pour les langues d’Asie du Sud-Est → segmentation indispensable
- Pour CJK → césure par caractère + option Lua pour l’espacement
4. Quand Lua est-il nécessaire ?
[modifier | modifier le wikicode]| Situation | Lua recommandé ? | Pourquoi ? |
|---|---|---|
| Texte français + chinois très entremêlé | Oui | Gestion automatique de l’espacement |
| Texte français + thaï/lao/khmer | Oui | Segmentation lexicale pour éviter coupures erronées |
| Texte arabe/français bien séparé | Non | RTL déjà géré ; la césure est rare |
| Texte polyglotte complexe (RTL + CJK + latin) | Probable | Lua permet d’harmoniser les transitions entre scripts |
5. En résumé
[modifier | modifier le wikicode]À retenir :
- UTF-8 permet à ConTeXt de composer toutes les écritures sans modules externes.
- Le moteur HarfBuzz garantit un rendu correct des ligatures, clusters et formes contextuelles.
- Les problèmes typographiques varient fortement selon les familles d’écriture :
- CJK → problème d’espacement → Lua recommandé. - RTL (arabe, hébreu) → problèmes directionnels → balisage suffisant. - Indo-aryen → shaping complexe → police de qualité nécessaire. - Thaï / Lao / Khmer → segmentation lexicale → Lua utile.
- L’hyphénation, c'est-à-dire la césure, au cœur de la typographie européenne, doit être repensée selon la structure propre de chaque langue.
Cette synthèse sert d’introduction générale à l’usage des langues non-romanes dans ConTeXt. Elle permet de situer les enjeux avant d’aborder les exemples pratiques et les MWE de chaque famille d’écriture.
1. Pourquoi les écritures CJK et hindi sont « spéciales »
[modifier | modifier le wikicode]Composer du chinois ou du hindi dans un document polyglotte soulève des questions différentes de celles rencontrées pour le grec ou l’hébreu.
Dans les grandes lignes :
- les systèmes CJK n’utilisent pas de césure alphabétique, mais une segmentation en « carrés » (idéogrammes) ;
- l’hindi (devanagari) est écrit de gauche à droite, mais repose sur un système de ligatures complexes ;
- les polices « occidentales » (EB Garamond, TeX Gyre, etc.) ne savent généralement pas gérer ces scripts ;
- les paramètres de césure et de justification de ConTeXt doivent être adaptés (surtout pour le CJK).
Autrement dit : il ne suffit pas de changer de police, il faut aussi adapter la logique de composition.
2. Choix des polices pour CJK et devanagari
[modifier | modifier le wikicode]Pour ces écritures, il est préférable d’utiliser des polices complètes et bien maintenues. Les familles « Noto » de Google sont souvent un bon point de départ :
- Noto Sans CJK / Noto Serif CJK pour le chinois / japonais / coréen ;
- Noto Sans Devanagari / Noto Serif Devanagari pour l’hindi (et d’autres langues indo-aryennes).
Le principe est similaire à ce que nous avons fait avec SBL Hebrew :
- installer les fichiers de fontes dans l’arborescence de ConTeXt (par exemple
texmf-fonts/fonts/opentype/...) ; - demander à ConTeXt de recharger sa base de polices ;
- repérer le nom de famille détecté par ConTeXt ;
- définir une
\definefontou une\definefontfamilydédiée à ce script.
Par exemple, après installation et rechargement :
mtxrun --script fonts --reload
mtxrun --script font --list --all --pattern=*noto*devanagari*
ConTeXt liste les polices disponibles et leur nom de famille ; on peut alors créer une police dédiée, par exemple :
\definefont[HindiFace][name:notoserdeva-regular*default sa 1]
\definefont[ChineseFace][name:noto-serif-cjk-sc-regular*default sa 1]
(Les noms concrets dépendent de ce que renvoie la commande mtxrun --script font --list.)
3. Comportement typographique : CJK et hindi
[modifier | modifier le wikicode]3.1 CJK : pas de césure alphabétique
[modifier | modifier le wikicode]Pour les langues CJK, la « césure » ne repose pas sur des mots séparés par des espaces, mais sur des unités graphiques (caractères). ConTeXt doit être informé qu’il s’agit de texte CJK pour éviter un comportement inattendu :
- pas de césure au sens occidental ;
- possibilité de couper la ligne à peu près n’importe où entre deux caractères ;
- gestion différente des espacements.
Typiquement, on isolera le bloc chinois dans une police dédiée et une langue CJK :
\setuplanguage[zh][patterns=zh]
\definefont[ChineseFace][name:noto-serif-cjk-sc-regular*default sa 1]
\starttext
{\ChineseFace \language[zh]
中文示例文本,用于测试 ConTeXt 中的排版。
}
\stoptext
Gestion des langues asiatiques dans un texte français
[modifier | modifier le wikicode]Problème fréquent — Lorsque l’on insère du chinois (ou plus largement du CJK) dans un texte français, les idéogrammes apparaissent souvent collés aux lettres latines. Ce n’est pas une erreur : les systèmes graphiques asiatiques n’utilisent pas l’espace pour séparer les mots. Dans un texte mixte, cette différence entraîne des ruptures visuelles qu’il faut traiter explicitement pour obtenir une typographie harmonieuse.
Pour illustrer le phénomène, considérons une phrase telle que :
Voici un exemple中文dans une phrase française.
Dans la plupart des cas, ConTeXt n’ajoute aucun espace entre « exemple » et 中文, ni entre 中文 et « dans ». Le rendu devient alors compact et peu lisible pour un lecteur francophone.
Objectifs typographiques
[modifier | modifier le wikicode]L’objectif est double :
- Respecter les conventions d’écriture du chinois
— pas d’espace entre idéogrammes, pas de coupures artificielles.
- Préserver la lisibilité du texte français
— introduire une petite « respiration visuelle » lorsque l’on passe d’un alphabet à l’autre.
L’enjeu consiste donc à produire une frontière typographique nette, mais discrète, entre les systèmes d’écriture.
Obstacles rencontrés
[modifier | modifier le wikicode]Plusieurs difficultés apparaissent dès que l’on mélange CJK et alphabet latin :
- Absence naturelle d’espaces dans les systèmes asiatiques :
ConTeXt ne peut pas deviner où créer une séparation visuelle.
- Multiplicité des blocs Unicode
(CJK de base, extensions A/B/C, ponctuation pleine largeur, etc.).
- Symboles ambigus
Certains signes (par exemple « · », « - », « / ») sont légitimes dans un environnement chinois et ne doivent pas générer d’espace.
- Variabilité éditoriale
Les pratiques typographiques peuvent différer selon les maisons d’édition ou les habitudes nationales.
Illustration typographique
[modifier | modifier le wikicode]Le but est d’obtenir un résultat plus lisible, du type :
Voici un exemple 中文 dans une phrase française.
Les espaces autour du fragment chinois doivent être :
- automatiques ;
- proportionnés ;
- suffisamment fins pour assurer une transition fluide.
Une solution moderne grâce à LuaMetaTeX
[modifier | modifier le wikicode]ConTeXt (LMTX) permet de résoudre ce problème de manière automatisée. L’idée est d’intercepter la liste de nœuds pendant la composition de la ligne, puis d’appliquer la règle suivante :
- « Lorsqu’un idéogramme touche un caractère non chinois (lettre latine, chiffre, ponctuation), insérer automatiquement une petite glue typographique — sauf si ce caractère appartient à la liste des symboles explicitement autorisés. »*
Le processus typographique repose sur trois étapes :
- Détection des caractères chinois via leurs blocs Unicode.
- Examen des caractères voisins (avant/après).
- Insertion automatique d’une glue (par exemple 0.25 em extensible) lorsque la transition est inharmonieuse.
Cette méthode crée automatiquement une séparation visuelle harmonieuse entre le chinois et le français, sans intervention manuelle de l’auteur.
Exemple minimal : avant / après
[modifier | modifier le wikicode]Les deux exemples suivants utilisent le même texte. Le premier montre la situation sans traitement Lua ; le second active un petit script Lua qui ajoute automatiquement de l’espace autour des idéogrammes.
Avant : texte mixte sans traitement Lua
[modifier | modifier le wikicode]% fichier : mwe-chinois-francais-avant.tex
\setuppapersize[A6][A4]
\setupbodyfont[modern,12pt]
\starttext
Voici un exemple中文dans une phrase française.\par
Encore un exemple中文123abc collé.\par
\stoptext
Dans ce premier cas, ConTeXt colle littéralement les caractères chinois au texte latin et aux chiffres.
Après : même texte avec espacement automatique
[modifier | modifier le wikicode]% fichier : mwe-chinois-francais-apres.tex
% Exemple simplifié : insertion d'une glue autour des idéogrammes chinois.
\setuppapersize[A6][A4]
\setupbodyfont[modern,12pt]
\startluacode
thirddata = thirddata or {}
local glyph_id = nodes.nodecodes.glyph
local new_node = node.new
local insert_before = node.insertbefore
local insert_after = node.insertafter
local sp = tex.sp
-- Détection très simple : bloc "CJK Unified Ideographs" de base
local function is_cjk_char(c)
return (c >= 0x4E00 and c <= 0x9FFF)
end
-- Création d'une petite glue extensible
local function new_cjk_glue()
local g = new_node("glue")
g.width = sp("0.25em")
g.stretch = sp("0.15em")
return g
end
function thirddata.chinesespacing(head)
local n = head
while n do
if n.id == glyph_id and is_cjk_char(n.char) then
-- 1) Regarder le caractère précédent
local prev = n.prev
if prev and prev.id == glyph_id and not is_cjk_char(prev.char) then
local g = new_cjk_glue()
head = insert_before(head, n, g)
end
-- 2) Regarder le caractère suivant
local next = n.next
if next and next.id == glyph_id and not is_cjk_char(next.char) then
local g = new_cjk_glue()
insert_after(head, n, g)
end
end
n = n.next
end
return head
end
nodes.tasks.appendaction(
"processors", "after", "thirddata.chinesespacing"
)
\stopluacode
\starttext
Voici un exemple中文dans une phrase française.\par
Encore un exemple中文123abc collé.\par
\stoptext
Dans ce second cas, LuaMetaTeX insère automatiquement une petite glue autour de chaque idéogramme chinois lorsqu’il touche un caractère non CJK. La lisibilité est nettement améliorée, sans que l’auteur ait à ajouter manuellement des espaces.
Revenons maintenant aux questions relatves à l'emploi de l'hindi:
3.2 Hindi (devanagari) : ligatures et rendu OpenType
[modifier | modifier le wikicode]L’hindi, écrit en devanagari, est une écriture alphasyllabique :
- les caractères se combinent en ligatures ;
- le rendu correct dépend fortement des fonctionnalités OpenType de la police ;
- il est important d’utiliser une police conçue pour ce script (Noto, Lohit, etc.).
Exemple minimal :
\setuplanguage[hi][patterns=hi]
\definefont[HindiFace][name:notoserdeva-regular*default sa 1]
\starttext
{\HindiFace \language[hi]
यह एक छोटा उदाहरण है जो दर्शाता है कि ConTeXt देवनागरी लिपि के साथ कैसे काम करता है।
}
\stoptext
Ici, ConTeXt délègue au moteur OpenType le soin de calculer les ligatures et les combinaisons de signes.
Astuce
Si le rendu d’un système d’écriture complexe est étrange (caractères isolés, absence de ligatures, signes mal positionnés), il est probable que :
- la mauvaise police est utilisée (fontes latines au lieu d’une fonte dédiée) ;
- le nom de la police appelé dans
\definefontn’est pas exactement celui reconnu par ConTeXt ; - la langue n’est pas correctement définie avec
\setuplanguage.
Commencer par un MWE minimal en une seule langue est la meilleure façon d’isoler le problème.
- Un exemple simple de feuille composée avec plusieurs polices non-romanes :

3.3 Arabe, ourdou et écritures apparentées : spécificités et contraintes
[modifier | modifier le wikicode]Les écritures arabes (arabe standard, persan, ourdou, kurde sorani, etc.) combinent plusieurs difficultés techniques qui les distinguent à la fois des systèmes CJK et du devanagari :
- écriture cursive : les lettres changent de forme selon leur position (isolée, initiale, médiane, finale) ;
- direction droite → gauche (comme l’hébreu), mais avec des règles de liaison plus complexes ;
- très forte dépendance aux fonctionnalités OpenType (ligatures, contextual shaping, substitution, positionnement des voyelles brèves) ;
- notre usage occidental de ConTeXt est essentiellement académique, alors que les locuteurs natifs saisissent ce texte avec un clavier arabe/ourdou et bénéficient d’un rendu interactif déjà calibré.
ConTeXt gère parfaitement ces écritures, mais exige une combinaison soigneuse de trois éléments :
- une police réellement conçue pour l’arabe ou l’ourdou (Noto Naskh Arabic, Amiri, Scheherazade, etc.) ;
- l’activation du support bidirectionnel et des règles propres à l’arabe ;
- une définition explicite de la langue afin d’utiliser les bons modèles de justification et d’espacement.
Exemple minimal :
\setuplanguage[ar][dir=rl, patterns=ar]
\definefont[ArabicFace][name:amiri-regular*default sa 1]
\starttext
{\ArabicFace \language[ar]
هذا مثال بسيط يوضح كيفية تعامل ConTeXt مع النصوص العربية
وطريقة تشكيل الحروف في سياق الكلمات.
}
\stoptext
Selon la version de ConTeXt, on peut aussi écrire direction=rtl au lieu de dir=rl ; l’important est d’activer explicitement l’écriture droite-gauche.
L’usage académique (édition critique, comparaison de traductions, alignement parallèle avec d’autres langues) nécessite d’ajouter des notes, des lemmes et parfois des translittérations. On peut reprendre la même technique que pour l’hébreu, le grec ou le hindi :
\definelinenote[arnote]
\define[2]\arlemma{%
{\ArabicFace\language[ar]#1}%
\arnote{#1] #2}%
}
Cela permet d’annoter des mots arabes sans casser leur rendu contextuel.
Important
L’exemple présenté ici vise un usage académique de ConTeXt : édition savante, traduction parallèle, apparat critique.
Il ne remplace pas l’environnement de saisie utilisé par un locuteur natif (clavier arabe/ourdou, éditeurs locaux optimisés, logiciels de traitement linguistique).
ConTeXt n’est pas un outil d’écriture pour arabophone, mais un outil de composition éditoriale.
4. Exemple : page polyglotte avec hindi et chinois
[modifier | modifier le wikicode]L’exemple qui suit illustre une page en deux colonnes :
- colonne de gauche : texte en français ;
- colonne de droite : texte « parallèle » en hindi et chinois, avec des notes indiquant les points de vocabulaire intéressants.
Il s’agit d’un exemple simplifié, destiné à montrer la technique, non une véritable édition bilingue.
\setuppapersize[A4]
\mainlanguage[fr]
% Polices :
\definefontfamily [mainface] [serif] [TeX Gyre Pagella]
\setupbodyfont[mainface,10pt]
% Polices dédiées :
\definefont[HindiFace] [name:notoserdeva-regular*default sa 1]
\definefont[ChineseFace] [name:noto-serif-cjk-sc-regular*default sa 1]
% Langues :
\setuplanguage[hi][patterns=hi]
\setuplanguage[zh][patterns=zh]
% Notes simples :
\setupnotes[compress=yes]
\definenote[hnote]
\definenote[chnote][n=2]
\define[2]\hlemma{%
{\HindiFace\language[hi]#1}%
\hnote{#2}%
}
\define[2]\chlemma{%
{\ChineseFace\language[zh]#1}%
\chnote{#2}%
}
\starttext
\startalignment[middle]
{\sc Exemple polyglotte (français + hindi + chinois)}
\stopalignment
\blank[medium]
\startcolumns[n=2,balance=yes]
{\bf Français}\par
\blank[small]
Ce court exemple montre comment disposer un texte en français
en parallèle avec une traduction hindi et un commentaire en chinois.
Les segments intéressants sont lemmatisés, comme on le ferait
dans une édition savante plus ambitieuse.
\column
{\bf Hindi et chinois}\par
\blank[small]
% Hindi :
{\HindiFace \language[hi]
\hlemma{उदाहरण}{« exemple » ; mot courant pour désigner un cas illustratif.}
यह पाठ दिखाता है कि
ConTeXt में
हिंदी और चीनी के साथ
काम करना कैसे संभव है।
}
\blank[small]
% Chinois :
{\ChineseFace \language[zh]
\chlemma{例子}{« exemple » ; terme général pour illustrer une idée.}
这段文字说明在同一页上排版多种语言是完全可行的,
只要选择合适的字体并配置好 ConTeXt。
}
\stopcolumns
\stoptext
Cet exemple n’est volontairement pas saturé d’annotations : il se concentre sur les deux aspects essentiels :
- utiliser des polices appropriées pour chaque système d’écriture ;
- isoler clairement chaque langue dans une police + une macro dédiée.
- Et voici la sortie PDF du code ci-dessus :

5. Exemple académique (savant) avec fichier source commenté
[modifier | modifier le wikicode]% fichier : polyglotte-ar-hi-zh.tex
% Exemple savant : arabe / hindi / chinois sur 3 colonnes
% + commentaire académique en français, avec notes multi-niveaux.
%
% ATTENTION :
% - Les noms de police pour l'hindi et le chinois (Noto...) sont à adapter
% selon les fontes effectivement installées et vues par ConTeXt.
% - Ce fichier sert de modèle de composition (usage académique).
% -------------------------------------------------------
% Étape 1 — Format de page et langue principale
% -------------------------------------------------------
\setuppapersize[A4]
\mainlanguage[fr]
% -------------------------------------------------------
% Étape 2 — Polices
% - TeX Gyre Pagella : texte latin/français
% - ArabicFace : police dédiée pour l'arabe (ex. Amiri)
% - HindiFace : police dédiée pour l'hindi (Noto Serif Devanagari)
% - ChineseFace : police dédiée pour le chinois (Noto Serif CJK)
%
% Adapter les noms "amiri-regular", "notoserdeva-regular",
% "noto-serif-cjk-sc-regular" aux fontes disponibles sur la machine.
% -------------------------------------------------------
\definefontfamily [mainface] [serif] [TeX Gyre Pagella]
\setupbodyfont[mainface,10pt]
\definefont[ArabicFace] [name:amiri-regular*default sa 1]
\definefont[HindiFace] [name:notoserdeva-regular*default sa 1]
\definefont[ChineseFace] [name:noto-serif-cjk-sc-regular*default sa 1]
% -------------------------------------------------------
% Étape 3 — Langues et directions d'écriture
% - arabe : droite → gauche
% - hindi : gauche → droite (devanagari)
% - chinois: gauche → droite (CJK)
% -------------------------------------------------------
\setupdirections[bidi=on]
\setuplanguage[ar][dir=rl, patterns=ar]
\setuplanguage[hi][patterns=hi]
\setuplanguage[zh][patterns=zh]
% -------------------------------------------------------
% Étape 4 — Notes à plusieurs niveaux
% niveau 1 : critnote = remarques éditoriales générales / sources
% niveau 2 : arnote = remarques sur l'arabe
% niveau 3 : hinote = remarques sur l'hindi
% niveau 4 : zhnote = remarques sur le chinois
% -------------------------------------------------------
\setupnotes[compress=yes]
\setupnotations[alternative=serried]
\definelinenote[critnote] % Niveau 1 : sources, remarques générales
\definelinenote[arnote][n=2] % Niveau 2 : remarques arabes
\definelinenote[hinote][n=3] % Niveau 3 : remarques hindi
\definelinenote[zhnote][n=4] % Niveau 4 : remarques chinoises
% Toutes les séries de notes sont placées en bas de page.
\setupnote[critnote][location=page]
\setupnote[arnote][location=page]
\setupnote[hinote][location=page]
\setupnote[zhnote][location=page]
% -------------------------------------------------------
% Étape 5 — Macros de lemmatisation
% #1 = lemme dans le texte
% #2 = contenu de la note associée
% -------------------------------------------------------
% Niveau 1 : critique générale / sources (texte latin/français)
\define[2]\crit{%
#1\critnote{#1] #2}%
}
% Niveau 2 : lemme arabe + note
\define[2]\arlemma{%
{\ArabicFace\language[ar]#1}%
\arnote{%
{\ArabicFace\language[ar]#1]}\space
\language[fr]#2%
}%
}
% Niveau 3 : lemme hindi + note
\define[2]\hlemma{%
{\HindiFace\language[hi]#1}%
\hinote{%
{\HindiFace\language[hi]#1]}\space
\language[fr]#2%
}%
}
% Niveau 4 : lemme chinois + note
\define[2]\chlemma{%
{\ChineseFace\language[zh]#1}%
\zhnote{%
{\ChineseFace\language[zh]#1]}\space
\language[fr]#2%
}%
}
% -------------------------------------------------------
% Étape 6 — Numérotation de lignes
% Ici, on choisit d'afficher les numéros dans les colonnes
% (location=text), mais on pourra les supprimer au besoin.
% -------------------------------------------------------
\setuplinenumbering[
location=text,
style=\tfxx,
step=1,
]
% -------------------------------------------------------
% Étape 7 — En-têtes et pieds de page
% -------------------------------------------------------
\setupheadertexts[\sc Exemple polyglotte : arabe, hindi, chinois]
\setupfootertexts[\it Document composé avec \ConTeXt]
% -------------------------------------------------------
% Corps du document
% -------------------------------------------------------
\starttext
\startalignment[middle]
{\sc Texte polyglotte : arabe / hindi / chinois}\par
{\it Exemple savant avec commentaires et notes à plusieurs niveaux}
\stopalignment
\blank[medium]
%==============================================================
% PAGE 1 : trois colonnes (arabe / hindi / chinois)
%==============================================================
\startcolumns[n=3,balance=yes]
% -------- Colonne 1 : Arabe --------
{\bf Arabe}\par
\critnote{Texte arabe moderne d'exemple (source pédagogique fictive).}
\blank[small]
\startlinenumbering
{\ArabicFace\language[ar]
\arlemma{النص}{« le texte » ; terme général pour tout contenu écrit.}
\arlemma{الأكاديمي}{« académique » ; relatif au travail universitaire.}
هو جسر بين
\arlemma{الثقافات}{« cultures » ; pluriel de ثقافة.}
المختلفة.
}
\stoplinenumbering
\column
% -------- Colonne 2 : Hindi --------
{\bf Hindi}\par
\critnote{Texte hindi d'exemple (source pédagogique fictive).}
\blank[small]
\startlinenumbering
{\HindiFace\language[hi]
\hlemma{शैक्षिक}{« académique » ; relatif au monde des études.}
पाठ
\hlemma{विभिन्न}{« différents, variés ».}
\hlemma{संस्कृतियों}{« cultures » ; forme oblique plurielle.}
के बीच
एक पुल है।
}
\stoplinenumbering
\column
% -------- Colonne 3 : Chinois --------
{\bf Chinois}\par
\critnote{Texte chinois moderne d'exemple (source pédagogique fictive).}
\blank[small]
\startlinenumbering
{\ChineseFace\language[zh]
\chlemma{学术}{« académique », « savant ».}
\chlemma{文本}{« texte » ; unité de discours écrit.}
可以
在
不同
\chlemma{文化}{« cultures » ; au sens large.}
之间
构建
桥梁。
}
\stoplinenumbering
\stopcolumns
\blank[medium]
{\it
Cette première page juxtapose trois versions parallèles (arabe, hindi, chinois)
d'une même idée : le texte académique comme « pont » entre les cultures.
Les lemmes annotés signalent les termes clés dans chaque langue.
}
\page
%==============================================================
% PAGE 2 : commentaire académique (en français)
% - mêmes flux de notes (critique, arabe, hindi, chinois)
% - numérotation de lignes "muette" : location=none
%==============================================================
\startalignment[middle]
{\sc Commentaire académique}\par
\stopalignment
\blank[medium]
\startlinenumbering[location=none]
\noindent
{\bf 1. Choix des segments et usage académique.} —
Les trois textes sont volontairement simples et pédagogiques :
ils ne prétendent pas reproduire des corpus littéraires existants,
mais illustrer une situation typique de l'usage savant de ConTeXt.
L'objectif est de montrer comment disposer côte à côte des langues
très différentes, en conservant un contrôle fin sur les fontes,
les langues et les notes.
\blank[small]
\noindent
{\bf 2. Arabe : écriture cursive et fontes dédiées.} —
La colonne arabe utilise une police cursive (ici, par exemple,
une fonte de type Amiri) et le bloc est placé en \type{\ArabicFace}
avec \type{\language[ar]}. Les lemmes \type{\arlemma} créent à la fois
le mot en contexte et une note de bas de page. Cette séparation
entre fonte latine et fonte arabe est indispensable pour un rendu
correct des formes contextuelles.
\blank[small]
\noindent
{\bf 3. Hindi : ligatures et rendu OpenType.} —
La colonne hindi repose sur un script devanagari, qui combine
les lettres en ligatures complexes. L'utilisation d'une police
telle que Noto Serif Devanagari (appelée ici via \type{\HindiFace})
permet de déléguer le calcul des ligatures au moteur OpenType.
La macro \type{\hlemma} illustre la manière d'annoter quelques
termes clés sans alourdir visuellement le texte.
\blank[small]
\noindent
{\bf 4. Chinois : segmentation et absence de césure alphabétique.} —
Pour le chinois, la question de la césure ne se pose pas comme
en alphabet latin : chaque caractère peut être vu comme une unité
graphique autonome. L'exemple utilise une fonte CJK dédiée, appelée
via \type{\ChineseFace}, et des lemmes \type{\chlemma} pour signaler
les termes « académique », « texte » et « culture ». Il est important
de vérifier que la fonte choisie couvre bien l'ensemble des caractères
utilisés dans le corpus étudié.
\blank[small]
\noindent
{\bf 5. Perspective générale.} —
Cet exemple ne remplace pas l'environnement d'écriture des locuteurs
natifs (claviers spécialisés, logiciels locaux, etc.). Il montre
comment un éditeur francophone peut utiliser ConTeXt dans un cadre
académique pour composer, comparer et annoter des textes multilingues
complexes sur une même page, en séparant clairement :
les fontes, les langues, les flux de notes et la structure de la page.
\blank[medium]
{\it
Pour adapter ce modèle à un travail réel, il suffira de remplacer
les phrases d'exemple par des extraits authentiques, de préciser
rigoureusement les sources dans les notes de niveau 1 (\type{\critnote}),
et d'enrichir les lemmes linguistiques en fonction des besoins de la
recherche (morphologie, syntaxe, sémantique, traduction).
}
\stoplinenumbering
\stoptext
- Sortie PDF du fichier source ci-dessus :

6. Feuille de style pour les textes polyglottes avancés
[modifier | modifier le wikicode]Objectifs de cette sous-section :
- montrer comment regrouper tous les réglages techniques dans une feuille de style dédiée ;
- proposer un modèle réutilisable pour les textes trilingues (arabe / hindi / chinois) ;
- illustrer l’usage de
\environmentdans un projet ConTeXt réel.
Les éditions savantes multilingues deviennent rapidement difficiles à maintenir lorsqu’on multiplie les réglages locaux à l’intérieur du fichier principal : choix des polices pour chaque script, gestion de l’écriture droite-à-gauche, mise en page des colonnes, styles de notes, cadres pour les commentaires, etc. Pour éviter que le fichier source ne devienne illisible, ConTeXt encourage l’utilisation de feuilles de style dédiées (\environment) qui regroupent l’ensemble des réglages typographiques.
Schéma d’organisation : fichier principal + feuille de style
[modifier | modifier le wikicode]Pour visualiser l’intérêt d’une feuille de style dédiée, on peut représenter l’organisation ainsi :
+------------------------------------+
| polyglotte-ar-hi-zh.tex |
|------------------------------------|
| \environment env-polyglotte |
| |
| \starttext |
| % Contenu : |
| % - texte français |
| % - colonnes arabe / hindi / zh |
| % - appels de notes (\crit, |
| % \hlemma, \chlemma, etc.) |
| \stoptext |
+---------------------+--------------+
|
v
+------------------------------------+
| env-polyglotte.tex |
|------------------------------------|
| % Mise en forme : |
| - \definefont, \definefontfamily |
| - \setuplanguage (ar, hi, zh) |
| - définition des colonnes Poly |
| - styles de notes (\critnote, |
| \hinote, \zhnote, etc.) |
| - cadre du commentaire |
+---------------------+--------------+
|
v
+------------------------------------+
| Polices installées |
|------------------------------------|
| Amiri, Noto Devanagari, Noto CJK |
| (et autres fontes système) |
+------------------------------------+
Le fichier principal reste ainsi lisible et centré sur le contenu, tandis que la feuille de style env-polyglotte.tex concentre toutes les décisions typographiques (polices, langues, colonnes, notes, commentaires).
Dans le cas d’un document polyglotte trilingue (arabe / hindi / chinois), l’environnement joue trois rôles essentiels :
1. Séparer le contenu et la mise en forme
[modifier | modifier le wikicode]Le texte polyglotte reste propre : aucune commande complexe dans les colonnes, uniquement les marques nécessaires (\crit, \expl, etc.).
Toute la logique technique (polices, direction du texte arabe, style des colonnes, mise en page du commentaire académique) est regroupée dans un fichier unique, facile à relire et à mettre à jour.
2. Garantir la cohérence typographique
[modifier | modifier le wikicode]Chaque langue possède son style propre :
- une police adaptée (Amiri pour l’arabe, Noto Sans Devanagari pour l’hindi, Noto CJK pour le chinois),
- le réglage RTL pour l’arabe (par exemple avec
\setuplanguage[ar][dir=rl,...]), - les espacements spécifiques pour le chinois,
- une harmonisation des tailles et styles dans les colonnes.
Avec une feuille de style, ces paramètres sont définis une fois pour toutes et appliqués automatiquement.
3. Simplifier les exemples et les MWE
[modifier | modifier le wikicode]Le fichier principal peut alors rester minimal, par exemple :
\environment env-polyglotte
\startPoly
نص عربي \nextPoly
हिंदी \nextPoly
中文
\stopPoly
Toute la complexité réside dans env-polyglotte.tex, que le lecteur peut réutiliser dans ses propres projets.
4. Faciliter la maintenance de vos documents
[modifier | modifier le wikicode]Une feuille de style commentée peut évoluer séparément des pages des travaux que vous désirez effectuer. En effet, l'utilisateur peut :
- copier la feuille telle quelle ;
- l’adapter à ses besoins ;
- consulter seulement les blocs qui le concernent (polices, colonnes, notes, etc.).
Cette modularité évite la dispersion des réglages dans plusieurs sections du texte.
Dans la suite de cette page, nous proposons une feuille de style complète dédiée aux textes polyglottes savants :
Important
La feuille de style ci-dessous suppose que les polices Amiri (arabe), Noto Devanagari (hindi) et Noto CJK (chinois) sont correctement installées et reconnues par ConTeXt (voir mtxrun --script font --list --all). Sans ces fontes, vous risquez de n’obtenir ni texte arabe/hindi/chinois, ni ligatures correctes, mais des caractères manquants.
Feuille de style ConTeXt : env-polyglotte.tex
[modifier | modifier le wikicode]- Ce fichier doit être enregistré sous le nom env-polyglotte.tex dans le même répertoire que l’exemple principal (par exemple polyglotte-ar-hi-zh.tex), puis appelé au début du document par :
\environment env-polyglotte
% =========================================================
% ENVIRONNEMENT POLYGLOTTE SAVANT (arabe / hindi / chinois)
% =========================================================
\mainlanguage[fr]
\setuplanguage[ar][dir=rl, patterns=ar]
\setuplanguage[hi][patterns=hi]
\setuplanguage[zh][patterns=zh, spacing=packed]
\setuppapersize[A4]
\setuplayout[
backspace=20mm,
cutspace=20mm,
topspace=15mm,
bottomspace=15mm,
width=fit,
height=fit,
]
% ---------------------------------------------------------
% Polices
% ---------------------------------------------------------
% Pour que ce fichier fonctionne, les polices suivantes doivent être installées :
% - Amiri (arabe)
% - Noto Sans Devanagari (hindi)
% - Noto Sans CJK (chinois)
\definefontfamily [mainface] [serif] [TeX Gyre Pagella]
\setupbodyfont[mainface,10pt]
\definefont[ArabicFace] [name:amiri-regular*default sa 1]
\definefont[HindiFace] [name:notosansdevanagariregular*default sa 1]
\definefont[ChineseFace] [name:NotoSansCJKsc-Regular*default sa 1]
% ---------------------------------------------------------
% Définition des colonnes polyglottes
% ---------------------------------------------------------
\defineparagraphs
[Poly]
[n=3,rule=off,before={\blank},after={\blank}]
% Colonne 1 : Arabe (RTL)
\setupparagraphs
[Poly][1]
[style={\ArabicFace},align=right,direction=rtl]
% Colonne 2 : Hindi
\setupparagraphs
[Poly][2]
[style={\HindiFace},align=middle]
% Colonne 3 : Chinois
\setupparagraphs
[Poly][3]
[style={\ChineseFace},align=left]
% ---------------------------------------------------------
% Titres des sections polyglottes
% ---------------------------------------------------------
\setuphead[chapter][style=\bfd, align=middle]
\setuphead[section][style=\bf, align=middle]
% ---------------------------------------------------------
% Notes : trois niveaux
% ---------------------------------------------------------
\definenote[critnote]
\definenote[explnote]
\definenote[transnote]
\setupnote[critnote][numberconversion=a]
\setupnote[explnote][numberconversion=A]
\setupnote[transnote][numberconversion=n]
% Macros conviviales
\define[2]\crit {#1\critnote {#2}}
\define[2]\expl {#1\explnote {#2}}
\define[2]\trans {#1\transnote {#2}}
% ---------------------------------------------------------
% Mise en forme du commentaire académique
% ---------------------------------------------------------
\defineframed
[CommentaireFrame]
[frame=off, leftoffset=1em, rightoffset=1em, width=broad]
\def\Commentaire#1{%
\blank[big]
\startCommentaireFrame
{\bf Commentaire académique} \par
\blank[small]
#1
\stopCommentaireFrame
\blank[big]
}
% =========================================================
% FIN DE L’ENVIRONNEMENT
% =========================================================
7. Synthèse : démarche conseillée
[modifier | modifier le wikicode]- Tester chaque langue séparément avec un MWE minimal (une page, une police, une langue) avant de les combiner.
- Vérifier les polices réellement vues par ConTeXt avec :
mtxrun --script font --list --all, puis utiliser exactement ces noms dans\definefontou\definefontfamily. - Déclarer explicitement les langues avec :
\setuplanguage(par exemple[ar][dir=rl,...],[hi][patterns=hi],[zh][patterns=zh]) pour que césure, justification et direction d’écriture soient correctes. - Isoler chaque système d’écriture dans une fonte + une macro dédiée
(par exemple
\ArabicFace,\HindiFace,\ChineseFace) au lieu de mélanger tout dans une seule famille. - Créer des macros de « lemme » par langue
(par exemple
\arlemma,\hlemma,\chlemma) pour annoter le vocabulaire sans alourdir le code du texte principal. - Regrouper tous les réglages techniques
(polices, langues, colonnes, notes, cadres)
dans une feuille de style
env-polyglotte.texappelée par\environment, afin de garder le fichier principal lisible. - Seulement ensuite, composer des pages complexes (colonnes parallèles, commentaires académiques, apparat critique) en s’appuyant sur ces briques déjà testées.
Cette démarche est très proche de celle utilisée pour l’hébreu ou le grec, mais l’exigence sur la qualité des polices et sur la configuration des langues est encore plus forte pour les systèmes CJK et le devanagari.
Navigation
[modifier | modifier le wikicode]|
◀ Page précédente : Texte parallèle multilingue avec langues non-romanes |
Part. III, ch. 9 • Textes polyglottes avancés • Sommaire |
Page suivante : Partie IV, chapitre 9 : références, citations et index ▶ |