« ConTeXt/Comment créer un document simple ? » : différence entre les versions

Un livre de Wikilivres.
Contenu supprimé Contenu ajouté
m →‎Les notes simples en bas de page dans ConTeXt : ajout de quelques changements relatifs à l'intéfration du module "simplefonts" dans le noyau.
Ligne 1 129 : Ligne 1 129 :
</source>
</source>
(L'affichage donne des "?" après les commandes <code>\in</code> et <code>\at</code>, qui sont des commandes utilisées pour les références à des pages ou des chapitres, commandes que nous verrons plus loin).
(L'affichage donne des "?" après les commandes <code>\in</code> et <code>\at</code>, qui sont des commandes utilisées pour les références à des pages ou des chapitres, commandes que nous verrons plus loin).
À noter aussi que le module "simplefonts" est aujourd'hui (en 2017) intégré au noyau et n'a plus besoin d'être invoqué dans le préambule. Aussi écrira-t-on simplement :

<source lang="latex">
\definefontfamily[mainface][rm][Verdana]
\setupbodyfont[mainface, 10pt]
\starttext
Ceci\footnote[footA]{Ou cela, si vous préférez.} est une phrase qui contient une note de bas de page\footnote{En vérité, deux notes; celle-ci et \in{note}[footA] celle qui se trouve \at{page}[footA], appelée par \note[footA].}.
\stoptext
</source>


* On peut aussi avoir besoin d'une note dans une note; ce qui donne le code suivant :
* On peut aussi avoir besoin d'une note dans une note; ce qui donne le code suivant :

Version du 25 août 2017 à 19:14

Remarque générale

Il s'agit ici de présenter les particularités du code de ConTeXt. Les utilisateurs de LATEX ne seront pas dépaysés, quoique (puisque ConTeXt est plus monolithique que LATEX) les commandes ne soient pas toujours identiques et que les possibilités de réglage personnalisées soient accessibles à beaucoup plus de paramètres. Pour débuter, nous allons donc présenter un exemple de commandes en ConTeXt, puis commenter un certain nombre de points cruciaux. Pour l'instant, nous ne nous occupons pas des questions importantes en imprimerie relatives à la mise en page, ni des questions de typographie. Ces questions feront l'objet de chapitres ultérieurs.

Structure d'un document simple

Puisqu'il s'agit d'un document simple (et non d'un ouvrage savant), par exemple une brochure de quelques chapitres, notre document contient un titre, quelques chapitres, et des sections et sous-sections à l'intérieur de ces chapitres. Notons que chaque page contient des paragraphes. Bien sûr, notre document peut posséder un index rerum et pourquoi pas un index nominum. Nous désirons aussi une table des matières.

ConTeXt vous permet de produire cela automatiquement à partir de ce qu'on appelle un fichier source. Il s'agit donc de créer d'abord ce fichier source, en lui donnant un nom et une extension. Ce fichier s'appellera par exemple monfichier-test.tex et son extension sera en *.tex. Il sera structuré de la manière suivante, comme nous l'avons vu rapidement ci-dessus dans l'exemple donné au chapitre de présentation.

  • Premier exemple de texte simple :
\starttext
Ceci est mon premier texte avec \ConTeXt !
Rien de plus facile !
\stoptext

Vous pouvez rédiger plusieurs pages comme ceci. Bien entendu, les réglages de mise en page, la police, etc. sont fixés automatiquement par défaut. Si vous voulez personnaliser la mise en page, vous devrez entrer dans un codage plus substantiel.

  • En général, même pour un document simple, le texte comprend une série de commandes appelées Préambule dans lequel on doit nécessairement trouver un certain nombre d'indications qui précisent la mise en page, la langue ou les langues utilisées, les effets de police et beaucoup d'autres choses que nous allons voir par la suite. Ce préambule se trouve avant \starttex. On peut aussi ajouter des commandes dans le texte (comme les italiques, les numérations, les citations, les notes de bas de page, etc. Le texte et ses commandes se termine nécessairement par \stoptext.

Nous verrons par la suite et successivement comment définir les nombreuses commandes à insérer dans le préambule.

  • Deuxième exemple de texte simple

Nous désirons produire un texte portant sur la première page le titre du document et le nom de l'auteur; nous désirons aussi des chapitres, un index et une table des matières. Il s'agit d'un texte simple, mais complet, pour peu que ce texte soit long (il y a des chapitres ou des sections ...). Détaillons ici les diverses commandes :

  • Placer le titre et l'auteur au milieu de la page :
\startstandardmakeup
  \middlealigned{Introduction à \ConTeXt}
  \middlealigned{par}
  \middlealigned{Jean Dupond}
\stopstandardmakeup
  • Ventiler les chapitres, les sections et les sous-sections du document.
\chapter[firstchapter]{Introduction}
\section[firstsection]{Origines}
\section[secondsection]{Techniques}
\chapter[secondchapter]{Utilisation de \ConTeXt}
\section{firstsection]{Comment coder ?}
\section[secondsection]{contrôler les polices}
\subsection{mise en page complexe}
  • Utiliser un index
\completeindex
  • Définir une table des matières
\completecontent


  • Remarques : Pour produire une table des matières, ou un index, il suffit du code \completecontent et \completeindex. Les règles typographiques françaises demandent à ce que la table des matières se trouve à la fin du document, après les indices. Mais certains documents (comme les thèses universitaires) présentent la table des matières juste avant l'introduction. Bien entendu, il s'agit ici du code d'un document simple, mais complet, puisque nous avons ici la page de titre, le texte en chapitres et sous-chapitres, les notes en bas de page (appelées par la commande \footnote{Contenu de la note}, l'index et la table des matières. Bien entendu, la qualité obtenue, tant en ce qui concerne les polices, tout aussi bien que la position des titres, les marges, les en-têtes, etc. peut être améliorée. Par défaut la police est de corps 12, mais elle peut être réduite ou augmentée à la demande; de même on peut contrôler plus finement la pagination (avoir une page impaire différente de la page paire) et ainsi de suite. Les commandes \input knuth et \input ward permettent d'insérer du texte automatique en anglais. Voici le code complet que vous pouvez tester :
  • Code Complet
\starttext
\startstandardmakeup
  \middlealigned{Introduction à \ConTeXt}
  \middlealigned{par}
  \middlealigned{Jean Dupond}
\stopstandardmakeup
\completecontent
\chapter[firstchapter]{Introduction à \ConTeXt}
 \quotation{\ConTeXt  se présente comme un outil plus fin, plus précis, aussi puissant et plus maniable que \LaTeX}, affirment les utilisateur de ce logiciel de composition informatique\footnote{Logiciel de composition informatique, ou d'édition informatique est le terme français pour désigner le {\it typesetting} anglais.}, dont Hans Hagen\index{Hagen}, le créateur de \ConTeXt\index{ConTeXt} ...
 \section[firstsection]{Origines de la composition par informatique}
 \input knuth
\chapter[secondchapter]{Pourquoi utiliser \ConTeXt ?}
\section[firstsection]{Origines de la composition par informatique}
 \input knuth
\section[secondtsection]{Édition, composition, impression}
\input ward 
\subsection{Les mises en pages complexes}
Il est vrai que lorsqu'il s'agit de composer un document pour un éditeur, le plus simple est de saisir du texte au kilomètre avec Microsoft Word\index{Microsoft Word}, LibreOffice\index{LibreOffice}, ou toute suite logicielle que l'on maîtrise; à charge pour l'éditeur de faire son travail d'éditeur\footnote{Travail qui devrait systématiquement conduire à élaborer un texte de qualité, tant dans sa forme, que par son contenu.}, de choisir le format de l'ouvrage, la manière de composer les notes (en bas de page ou en fin de chapitre ?), de choisir la police, sa taille, etc. Mais, il se peut aussi que nous soyons nous-même éditeur, ou que nous soyons en mesure de peser sur l'édition d'un ouvrage complexe, qui contient ou non des images, un {\it index rerum}. Ce dernier cas se rencontre rarement, car les auteurs\index{auteur} sont rarement associés à des choix éditoriaux. C'est vrai pour les articles en revue, mais c'est surtout vrai pour des romans ou des essais, qui sont rarement mis en valeur par l'éditeur\index{éditeur}.

\completeindex
\stoptext

Il faut savoir que si ConTeXt ne supportait par le passé que le format de texte ASCII, aujourd'hui il est possible d'utiliser n'importe quel éditeur de texte simple, pourvu qu'il produise du texte au format UTF-8.

Les commandes essentielles dans ConTeXt

Nous voyons ici que toute commande commence par un anti-slash "\" (en anglais : backslash). Avec la commande \starttext on indique le début du texte et par voie de conséquence les commandes à prendre en compte à l'intérieur de ce texte. Ici, les commandes qui nous intéressent sont des commandes de structure. Nous verrons plus tard que nous pouvons compléter la forme et le détail de cette structuration par de nombreuses instructions de mise en page avant la commande du début du traitement de notre texte, donc avant \starttext. Notons tout de suite que la fin du traitement du texte est indiquée dans le fichier source par l'instruction \stoptext. La zone antérieure à la commande \starttext est appelée zone de configuration, mais dans le jargon le plus usuel, cette zone est appelée préambule. Comme nous venons de le dire, cette zone est très utile (comme dans LATEX), pour donner des instructions qui concernent la mise en page générale du document (taille des marges, reliure, en-têtes, pied de page, etc.) et pour définir des commandes particulières, qui touchent, par exemple, aux diverses langues et aux familles de polices que l'on désire utiliser. Cette zone de configuration permet de créer littéralement une maquette — ou si vous préférez : une feuille de style — et de préciser ses exigences en matière typographique. Il est possible de changer de feuille de style d'une page à l'autre (ou d'un chapitre à l'autre).

Une commande est habituellement suivie par une paire de crochets ouvrant ("[") et fermant ("]") et/ou par une paire d'accolades "{}" ouvrantes et fermantes. Il est nécessaire de rappeler ici — pour le lecteur qui n'aurait pas eu le bonheur de suivre un cursus universitaire dans lequel un cours de logique formelle était un passage obligé, ou pour celui qui n'a aucune expérience en la matière — que les instructions par commandes dans les langage de balisage (et dans les langages informatiques en général), lorsqu'elles sont déclarées, doivent impérativement être suivies d'une instruction qui clôt la déclaration. Par exemple, le petit script ci-dessous, rédigé en VisualBasic, permet d'afficher la formule "Hello World !". Il est écrit ainsi (remarquez le End Sub, qui clôture la déclaration Sub Main) :

Sub Main()
MsgBox("Hello World")
End Sub

Par conséquent, l'oubli d'un crochet ouvrant ou fermant, par exemple ici autour de "Hello World") dans le code MsgBox("Hello World") ou de la déclaration de clôture d'une commande, produira inévitablement une erreur en sortie du traitement du fichier source. En général, pour ce type d'oubli dans ConTeXt, soit le fichier source ne produit pas l'affichage en PDF, soit le résultat à l'affichage sur l'écran n'est pas conforme à ce qui était souhaité. Par bonheur ConTeXt produit un journal (un log) en même temps qu'il compile le fichier. Ce log est lisible dans TeXwork en dessous de la fenêtre où vous avez composé votre code. La recherche est donc assez aisée, pour identifier la ligne où vous avez commis une erreur d'écriture. Ces journaux sont enregistrés au même endroit que le fichier de travail. Il est donc conseillé d'aller lire les fichiers de type monfichier-tex.log qui indiquent les erreurs d'écriture du fichier source (y compris la ligne où se trouve l'erreur).

Si nous revenons maintenant à notre exemple, la commande \chapter dans \chapter[firstchapter]{Le Premier Chapitre} indique à ConTeXt comment produire quelques actions concernant la structure, la forme et la typographie du chapitre. Ces actions peuvent être :

  • commencer une nouvelle page
  • donner un numéro au chapitre
  • placer le numéro du chapitre devant le titre du chapitre
  • indiquer que le titre sera de telle taille
  • mettre le titre du chapitre et le numéro de la page dans la table des matières.

La commande entre crochets [firstchapter] est un intitulé dont le rôle est logique : ce label permet d'attribuer à ce chapitre (mais pas aux autres) d'autres commandes ConTeXt. Par exemple \in{chapter}[firstchapter] affiche le numéro du chapitre, tandis que \about[firstchapter] renvoie le titre. Nous verrons plus loin le détail de ces commandes et de beaucoup d'autres. Pour l'instant, disons qu'un novice pourrait n'avoir besoin de connaître que les 10 commandes suivantes :

1. \starttext, \stoptext
2. \chapter, \section, \title, \subject, \setuphead, \completecontent
3. \em, \bf, \cap
4. \startitemize, \stopitemize, \item, \head
5. \abbreviation, \infull, \completelistofabbreviations
6. \placefigure, \externalfigure, \useexternalfigures
7. \placetable, \starttable, \stoptable
8. \definedescription, \defineenumeration
9. \index, \completeindex
10.\setuplayout, \setupfootertexts, \setupheadertexts

Afficher la liste de toutes les commandes ConTeXt avec mtxrun

  • Il existe un fichier au format i-context.xml enfoui dans les profondeurs de ConTeXt, qui permet d'afficher au format PDF toutes les commandes que ConTeXt propose. Pour l'obtenir, il faut et il suffit de saisir la commande suivante dans un terminal : context --extra=setups --overview i-context.xml. Le fichier xml est transformé en PDF. Vous pouvez passer cette commande de n'importe où sans aller chercher spécialement où il se trouve, c'est-à-dire ici C:\Users\MonRepertoire\context\tex\texmf-context\tex\context\interface\mkiv. Ensuite, vous pouvez choisir d'enregistre ce document PDF où bon vous semble.

Empagement et structure de la page

Les textes dans la page

Les textes dans une page sont les textes qui sont placés dans l'en-tête, le pied de page et les bords du corps de page et la zone principale du texte. On peut dire qu'une phrase d'explication comme celle que vous lisez est composée dans le corps du texte que vous souhaitez voir s'afficher à l'écran entre \starttext et \stoptext. La ou les polices (les fonts en anglais) sont réglées au moyen de commandes différentes. Les valeurs des paramètres peuvent être quelque chose comme style=bold, mais style=\ss\bf est aussi autorisé. Passer d'une police à l'autre, ou d'une graisse à l'autre (\ss = Sans Serif) peut prendre du temps. En principe, ce n'est pas un problème pour les documents simples, pour lesquels il n'y a pas mieux que d'utiliser le minimum de commandes. Mais lorsqu'il s'agit de composer des documents complexes, avec des menus et des commandes interactifs, où il s'agit de passer d'une police à une autre et d'un effet à un autre, les conséquences peuvent être considérables. Dans ce dernier cas, il vaut mieux passer par des commandes du genre : \setuplayout[style=\ss] Les textes situés dans les bords ou en pied de page sont réglés par des commandes relatives aux bords et aux pieds de page, qui possèdent également leurs propres clés. Par exemple, le pied de page peut être réglé au moyen d'une clé qui concerne la graisse des lettres : \setupfooter[style=bold]

La composition d'une page

Dans la composition d'une page, on distingue la zone principale du texte, les en-tête, les pieds de page et les marges (haut, bas, droite et gauche [top, bottom, right, left]). Le texte principal se situe dans la zone principale (main text area). Lorsqu'on définit une mise en page, il faut comprendre que l'en-tête, le texte principal et le pied de page sont traités comme un tout. Leur position sur la page est déterminée par les dimensions du haut-de-page et par celles du fond de page (grand fond, petit fond, blanc de tête, blanc de pied). L'en-tête est situé dans le haut-de-page et le pied-de-page en dessous de la zone principale de texte. Normalement, c'est dans les en-têtes ou les pieds de page que sont situés les numéro de page. Les marges de droite et de gauche sont souvent utilisées soit pour des notes marginales, soit pour placer les numéros de chapitre ou de section. Les marges sont situés dans le fond de page, le long de la reliure et dans l'espace blanc laissé à droite et à gauche du texte principal. Leur largeur n'a aucune influence sur le positionnement de la zone de composition de la page. Des éléments de détail à propos de la mise en page et des explications sur le vocabulaire sont donnés sur la page des fiches à Bébért.

En principe, comme dans LATEX, la plupart des documents sont composés à partir des règles simples. Il faut néanmoins avoir une connaissance de la mise en page et des règles de l'imprimerie; de même qu'il faut prendre connaissance de quelques éléments de typographie.

Même si le débutant n'a pas besoin de toutes ces commandes, il faut savoir qu'elles peuvent être très précises, comme la liste ci-dessous l'indique (à l'intérieur des crochets, on peut placer les clés listées en dessous) :

\setuplayout [..,.=*.,..]

* width = DIMENSION fit middle
height = DIMENSION fit middle
backspace = DIMENSION
topspace = DIMENSION
margin = DIMENSION
leftmargin = DIMENSION
rightmargin = DIMENSION
header = DIMENSION
footer = DIMENSION
top = DIMENSION
bottom = DIMENSION
leftedge = DIMENSION
rightedge = DIMENSION
headerdistance = DIMENSION
footerdistance = DIMENSION
topdistance = DIMENSION
bottomdistance = DIMENSION
leftmargindistance = DIMENSION
rightmargindistance = DIMENSION
leftedgedistance = DIMENSION
rightedgedistance = DIMENSION
horoffset = DIMENSION
veroffset = DIMENSION
style = normal bold slanted boldslanted type cap small... COMMAND
color = IDENTIFIER
marking = on off color screen TEXT
location = left middle right bottom top singlesided doublesided
scale = DIMENSION
nx = NUMBER
ny = NUMBER
dx = DIMENSION
dy = DIMENSION
lines = NUMBER
columns = NUMBER
columndistance = DIMENSION
grid = yes no
bottomspace = DIMENSION
cutspace = DIMENSION
textdistance = DIMENSION
textwidth = NUMBER
textmargin = DIMENSION
clipoffset = DIMENSION
page = IDENTIFIER
paper = IDENTIFIER

Les valeurs par défaut de ConTeXt sont :

  • paper : A4 portrait
  • margins : 30 mm
  • backspace : 25 mm
  • topspace : 25 mm
  • header : 20 mm
  • footer : 20 mm

La commande \showframe permet de visualiser les marges, en-tête et pied de page et \showsetups affiche toutes les dimensions de la page. La commande \showlayout affiche à la fois les marges et les dimensions de la page. Le fichier suivant affiche les valeurs par défaut d'une page ConTeXt :

 \starttext
 \showlayout
 \stoptext
(Fig. 1) Résultat de la commande \showlayout

Un exemple de mise en page

Pour l'exemple suivant, on créé une page particulière avec très peu de corps de texte (10cm), car ce qui nous intéresse ici ce sont l'entête et le pied de page. Le document produit sera recto-verso, avec une petite marge interne (2cm) et une marge externe de 3cm :

\definepapersize[emc][width=20cm,height=10cm]
\setuppapersize[emc][emc]
\setuplayout[backspace=2cm,topspace=1cm,width=15cm,header=2cm,footer=2cm,headerdistance=0.5cm,footerdistance=0.5cm]
\setuppagenumbering[alternative=doublesided]

\starttext
\showframe
\input tufte
\stoptext
Commentaire
  • On voit que dans la zone antérieure à la commande \starttext on a défini la taille du papier et la mise en page. On ne s'intéresse pas ici à la police utilisée. La pagination recto-verso est définie par la commande \setuppagenumbering. On indique aussi à ConTeXt que l'on veut voir la mise en page affichée, et on lui donne un texte factice (ici produit par la commande \input tufte).
  • Le cadre, obtenu par la commande \setuplayout, encadre la page.
  • La commande \showframe affiche les cadres des zones de texte.
  • La première chose que l'on remarque est la présence du numéro de page au centre de l'en-tête. Si on veut contrôler la position du numéro de page par l'intermédiaire de la gestion des en-têtes et des pieds de page, il faudra supprimer la gestion par défaut par le code suivant : \setuppagenumbering[location=], où la clé (left, middle, right) après le signe "=" n'est pas indiquée.
  • La commande pour configurer l'en-tête est : \setupheadertexts
  • La commande pour le pied de page est : \setupfootertexts

Ces deux commandes produisent le même effet. Elles acceptent, en fonction du type de document et de ce que l'on cherche à obtenir, de 1 à 5 options. 4 options permettent de placer du texte, la date, le numéro de page, le titre de section. La dernière option permet de positionner le texte à insérer. Il y a différentes combinaisons possibles : la première, avec une seule option, permet de placer le texte au centre de l'en-tête : \setupheadertexts[Texte au centre de l'entête]

Voici le code complet :

\definepapersize[emc][width=20cm,height=10cm]
\setuppapersize[emc][emc]
\setuplayout[backspace=2cm,topspace=1cm,width=15cm,header=2cm,footer=2cm, headerdistance=0.5cm,footerdistance=0.5cm]
\setuppagenumbering[alternative=doublesided]
\setuppagenumbering[location=]

\setupheadertexts[Test de Texte avec ConTeXt]

\starttext
\showframe
\input tufte
\stoptext

Conclusion sur les commandes \setuplayout et \defineNomCommande

  • Toutes les commandes qui présentent des possibilités de réglage possèdent une commande du type : \setupNomCommande[variable1=valeur1, variable2=valeur2, option1, option2,. . .] .
  • Ces commandes permettent de régler les options dans le préambule du fichier source (préambule ou zone de configuration), pour affecter toutes les commandes du document.
  • Presque toutes les commandes ConTeXt autorisent en supplément la définition d'une commande de type \defineNomCommande qui (comme son nom l'indique) permet de définir des comportements propres au document. On peut écrire dans le préambule du fichier source les commandes suivantes :
\defineframed[cadreVert][location=top,corner=08,framecolor=darkgreen]
\defineframed[boiteBleue][location=top,frame=off,background=color,backgroundcolor=blue]

Ainsi, dans le texte on fera appel à la commande définie au préalable \cadreVert{texte} pour obtenir un texte entouré de vert et \boiteBleue{texte} pour du texte dans une boite bleue. IMPORTANT : Il est indispensable d'utiliser des majuscules dans les définitions de commandes personnalisées. Ce qui donne :

\defineframed[cadreVert][location=top,corner=08,framecolor=darkgreen]
\defineframed[boiteBleue][location=top,frame=off,background=color,backgroundcolor=blue]
\starttext
Lorem ipsum dolor sit amet, \cadreVert{consectetuer adipiscing} elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum  \boiteBleue{gravida mauris}. 
\stoptext

Ajoutons la facilité avec laquelle on peut modifier le comportement des en-têtes (headers) et des pieds-de-page (footers). Comme nous l'avons déjà dit, la force de ConTeXt consiste à configurer les commandes avec des clés dont les valeurs sont paramétrables. Quelques cas sont donnés ici à titre d'exemples : nous voulons faire en sorte qu'une partie du texte soit imprimé en italiques et en gras.

  • Pour faire en sorte que l'en-tête soit en italiques gras:

\setuphead[section][style=bolditalic]

  • La même chose, mais pour le pied de page :

\setupfooter[style=bolditalic]

  • Mettre en gras et en italiques le contenu d'une énumération :

\setupenumerations[style=bolditalic]

  • Mettre en gras et en italiques le contenu du second niveau d'une énumération :

\setupitemize[2][style=bolditalic]

  • Mettre en gras et en italiques la première cellule et la première colonne d'un tableau :

\setupTABLE[row] [1][style=bolditalic] \setupTABLE[column][1][style=bolditalic]

Résumé

  • Pour un document simple, il suffit avec ConTeXt de placer du texte entre les commandes \starttext et \stoptext.
  • Cependant, il est possible de chercher à maîtriser un certain nombre de choses, dont la mise en page, qui peut varier, tant en ce qui concerne la dimension des en-têtes, des pieds-de-page et des marges, que de la position des numéros de page, la position des titres de chapitres et de section.
  • Il est donc possible d'avoir recours à des réglages personnalisés (en faisant varier la dimension de ces zones de la page). Faire varier l'empagement est donc possible, comme il est possible d'affiner et de personnaliser les événements à l'intérieur du texte, comme par exemple les sauts de pages, les tracés de lignes, le texte encadré, ou encore la couleur du fond sur lequel viendra s'afficher le texte. Le jeu de commandes \setup (comme la commande \setuplayout qui nous intéresse dans ce chapitre) s'applique à tout \setupQuelqueChose; de même, on peut définir le comportement à l'intérieur des zones de texte par des commandes personnalisées qui s'appuient toutes sur \defineQuelqueChose.
  • Pour composer un texte dans les règles de l'art, s'il s'agit d'un texte simple doté d'un titre, d'un résumé, de sections et d'une bibliographie légère, on ne gagnera rien à vouloir toucher à tout. En revanche, dès qu'il s'agira d'un travail professionnel, il pourra apparaître nécessaire de se documenter sur les règles de la mise en page, en vigueur dans les métiers de l'imprimerie, afin de tirer partie de ConTeXt en vue de réaliser des documents imprimés dans les règles de l'art. Les pages Wikipedia sur les divers formats de papier peuvent être d'une grande aide, ainsi que la page sur le standard ISO-216.

Typographie d'un document simple

Quelques notions de typographie

Comme il est indispensable de comprendre le vocabulaire employé par les typographes pour décrire une feuille de papier prête à l'impression, nous allons commencer notre chapitre par ces notions :

  • Le petit fond : zone blanche entre la zone de texte et le bord du papier, côté reliure. Appelé aussi blanc de couture ou marge intérieure.
  • Le blanc de tête : zone blanche entre le bord supérieur de la page et la zone de texte. Appelé aussi marge de tête.
  • Le grand fond : espace blanc entre la zone de texte et le bord externe de la feuille de papier. Appelé aussi marge extérieure.
  • Le blanc de pied : zone blanche entre la zone de texte et le bas de la feuille. Appelé aussi marge de pied.
  • Le rectangle d'empagement : zone dans laquelle le texte est imprimé, sa hauteur s’appelle "hauteur d'empagement" et sa largeur la "justification".

En typographie française, on exclut le folio, le titre courant et les notes marginales de l'empagement. Ce qui signifie que le numéro de page, le rappel du titre de l'ouvrage et du chapitre et les notes, sont bien situés sur la page de papier, mais non sur le rectangle d'empagement. Autrement dit, chacun le comprend, folio, titre courant, ainsi que les notes marginales sont imprimés ailleurs !

En ce qui concerne le folio (le numéro de page), sa place se trouve classiquement en bas de page dans le blanc de pied. Ainsi, il est bien visible du lecteur.

Le titre courant est le rappel du titre de l'ouvrage sur toutes les pages. Pour ne pas déranger l'harmonie de la page, il est rédigé dans une police plus petite et est situé en haut, hors de l'empagement, dans le blanc de tête.

Quant aux notes marginales, qui sont courtes, ou limitées à des symboles, on les imprime dans le grand fond, c'est-à-dire dans la marge extérieure (droite au recto, gauche au verso).

Au contraire, et contrairement à ce que de mauvaises habitudes peuvent laisser croire, les notes de bas de page, qui peuvent être d'une longueur considérable, font partie de l'empagement.

Cependant, il y a des exceptions. Si le titre courant est accompagné du titre de la section ou du folio, tout est intégré dans l'empagement. Si le folio est précédé du nom de l'éditeur, de l'année ou d'un numéro de volume, il en va de même. Certaines revues savantes font apparaître dans le haut de la page le titre de l'article côté interne et le folio côté externe et dans le bas de la page le nom de la revue en italiques à l'extérieur. À l'intérieur, en bas de page, on trouve l'année, le tome, le numéro de la première et de la dernière page de l'article (ex: 2010, tome 107, n°2, p.331-358). Dans ce cas, l'en-tête et le pied de page appartiennent à l'empagement.

Le vocabulaire de ConTeXt

ConTeXt, ne l'oublions pas, a d'abord été codé en néerlandais, puis traduit en anglais. Les notions de typographie sont transcrites dans un vocabulaire qu'il faut maîtriser. Ainsi, le petit fond devient dans ConTeXt backspace; pour le blanc de tête, on aura topspace, la hauteur de l'empagement devient height et la justification s'appelle désormais width. Il nous faut aussi être attentif à deux choses :

  1. Au calcul de la marge extérieure (grand fond) et du pied de page (blanc de pied);
  2. Au rapport entre la dimension des marges et la dimension du texte principal.
  • Reprenons :

Dimensions du 'Grand Fond' et du 'Blanc de Pied'

  • Remarquons qu'il n'y a pas de valeur pour le grand fond (la marge extérieure), ni pour le blanc de pied (le bas de la feuille) qui est en réalité déduite des précédentes :
  • grand fond = width - backspace => ce qui donne (justification - petit fond) = grand fond
  • blanc de pied = height - topspace => ce qui donne (empagement - blanc de tête) = blanc de pied

Dimensions des Marges

  • Pour ConTeXt , les marges servent à placer le numéros des chapitres et des sections, les notes (marginales), voire les symboles qui alertent le lecteur. Il est important de noter que la taille des marges n'a aucune incidence sur la justification du texte (sa dimension = width), ni même sur sa position sur la feuille de papier. Dès lors, si le calcul des marges donne à celles-ci une taille importante, on risque de voir le texte à imprimer se trouver en dehors de la feuille (et par conséquent, ne pas être imprimé). Il est donc important de calculer correctement les dimensions de la marge de gauche (leftmargin) et de la marge de droite (rightmargin).

Position des éléments de navigation

  • ConTeXt propose aussi des outils avec lesquels on peut procéder à de la composition de textes électroniques, dotés d'un certain nombre de moyens de navigation intertextuelle (à l'intérieur du texte) ou extra-textuelle (à l'extérieur du texte). Nous en verrons un exemple ci-dessous avec le premier fichier concernant la structuration d'un document complexe. Aussi, le codage des balises de navigation se place-t-il non pas dans les marges, les en-têtes et les pied-de-page, mais dans quatre autres espaces appelés leftedge, rightedge, top et bottom. Ces espaces se situent à l'extérieur des marges, des en-têtes et des pieds de page dans une partie réservée du grand fond et du petit fond, dans le blanc de tête et dans le blanc de pied.

La figure ci-dessous (Fig. 2) reprend le vocabulaire précédent pour le distribuer sur l'ensemble d'une feuille théorique. Les dimensions sont exagérées (la justification du texte width et sa hauteur height semblent bien réduites comparativement aux marges et aux bords). Mais on visualise parfaitement la topographie de la feuille.

(Fig. 2) ConTeXt - Vocabulaire du partitionnement d'une page avec ConTeXt

Commandes ConTeXt pour structurer une page

Maintenant que nous comprenons mieux la topographie de la typographie, c'est-à-dire comment on peut (et comment on doit) organiser les différents textes sur une page, il est temps de reprendre l'ensemble des valeurs de la commande \setuplayout dont nous avons vu la liste ci-dessus (cf. Figure 1), commande qui sert justement à procéder aux différents réglages dont nous avons besoin et qui sont affichés dans la figure 2. Cette commande peut être utilisée autant de fois qu'il y a d'options, mais on peut aussi synthétiser les options en une seule commande, en procédant, par exemple, de la manière suivante :

\setuplayout[backspace=17.5mm,topspace=25mm,
 width=167.5mm,height=237mm,
 header=0pt,headerdistance=0pt,
 footerdistance=0pt,footer=0pt,
 bottom=10mm,bottomdistance=15mm,
 location=doublesided]

Voici pour rappel la commande et ses clés, qui répondent à de très nombreux besoins (il peut paraître utile de souligner que nous n'avons pas besoin d'utiliser toutes les clés simultanément !) :

\setuplayout[options]

width, height, backspace, margin, leftmargin, rightmargin, header, footer, topdistance, headerdistance, footerdistance, bottomdistance, leftmargindistance, leftedgedistance, rightedgedistance, marking, location, scale, nx, ny, dx, dy, lines, columns, columndistance, grid, bottomspace, cutspace, textdistance, textwidth, textmargin, clipoffset, page, paper.
Retour sur la commande \setuplayout: analyse des clés

Ce que nous appelons ici les clés, ce sont les options indiquées entre crochets [options]. Rappelons que toutes les dimensions de la page imprimée peuvent être affichées au moyen des macro \showframe et \showlayout. Ces macros peuvent être appelées avant la commande \starttext. Examinons ces clés (ou options) une par une, en gardant un œil sur la figure 2 :

  • width : valeurs = dimension fit middle

Comme on l'a vu, width s'appelle chez les typographes de langue française la justification. On peut aussi l'appeler la zone de texte principale. En tout cas, cette commande agit sur la dimension du texte. Cette dimension peut être déclarée explicitement (y compris en cm); on peut aussi demander à ConTeXt de placer le texte au milieu (middle), avec des valeurs de grand fond et de petit fond égales à backspace. Comme son nom l'indique, la valeur fit positionne le texte finement et exactement au moyen du calcul de la largeur de la zone de texte, des valeurs des marges, des bords (edge) et de l'espace entre la marge et le texte (rightmargindistance, leftmargindistance) et celui entre le bord et la marge (rightedgedistance, leftedge).

  • height : valeurs = dimension fit middle

Cette options intéresse la hauteur de l'empagement de la zone de texte, y compris l'en-tête et le pied de page. height est donc la somme de la hauteur du texte + header + footer + headerdistance + footerdistance. L'option middle place la zone de texte au centre avec des valeurs de blanc de tête et de blanc de pied égal à topspace. Avec l'option fit, ConTeXt prend également en compte pour le calcul de la hauteur de la zone de texte les autres valeurs verticales (de manière analogue à la valeur fit pour l'option width).

  • backspace : il s'agit du petit fond. Sa valeur est une dimension, ajustée en mm.
  • topspace : idem pour le blanc de tête. Sa valeur est une dimension exprimée en mm.
  • margin : idem pour la marge, dont la dimension est exprimée en mm. Au risque de se répéter, on attire l'attention sur le fait que cette valeur n'a aucune influence sur la taille de la zone de texte. Cette valeur n'a d'influence que sur l'espace réservé au texte mis en marge. Si cette valeur est plus grande que le petit et le grand fond, le texte débordera de la page. margin attribue la même largeur aux marges de droite et de gauche.
  • leftmargin et rightmargin : Sa valeur est une dimension exprimée en mm. Si on veut régler les marges de droite et de gauche avec une dimension différente. Même remarque que celle faite pour margin.
  • leftedge et rightedge : Sa valeur est une dimension exprimée en mm. Crée une zone entre la marge et le bord de la feuille, respectivement à gauche et à droite. Utilisé pour baliser des documents électroniques ou l'affichage de texte électronique sur écran.
  • leftmargindistance et rightmargindistance : Sa valeur est une dimension exprimée en mm. Distance entre le corps de texte et les marges gauche et droite.
  • leftedgedistance et rightedgedistance : Sa valeur est une dimension exprimée en mm. Distance entre la marge et le bord de page (intérieur et extérieur).
  • header : La hauteur de l'en-tête; header est une partie de height. Sa valeur est une dimension exprimée en mm.
  • footer : La hauteur du pied de page. Sa valeur est une dimension exprimée en mm. footer est une partie de height.
  • top : Crée une marge dans le blanc de tête, dans lequel on peut placer des annotations. top ne fait pas partie de l'en-tête et est utilisé pour les documents électroniques ou lus sur écran. Sa valeur est une dimension exprimée en mm.
  • bottom : Équivalent à top, mais pour le blanc de pied. Sa valeur est une dimension exprimée en mm.
  • headerdistance et footerdistance : Distance entre le corps du texte et respectivement l'en-tête et le pied de page. Sa valeur est une dimension exprimée en mm.
  • topdistance et bottomdistance : Distance respectivement entre la marge haute et l'en-tête et entre la marge basse et le pied de page. Sa valeur est une dimension exprimée en mm.
  • lines : La hauteur du texte, dans le corps du texte, est calculée en nombre de lignes. La valeur est donc ici un nombre (par exemple, pour un livre lines = 65.
  • grid : Le fait que certaines longueurs soient élastiques avec TeX (par exemple les lignes entre les paragraphes entraînent un décalage des lignes imprimées qui se font face entre deux pages ou deux colonnes et ne seront donc plus alignées). On peut remédier à ce problème en utilisant une grille que l'on active avec l'option grid=yes. La valeur est grid= yes no.
  • textwidth : largeur du corps de texte. Si cette valeur est employée, c'est la largeur réelle de la zone de texte. La dimension est exprimée en mm.
  • textdistance : décale le corps du texte vers le bas si le nombre est positif et vers le haut si négatif. La valeur est une dimension exprimée en mm.
  • textmargin : valeur exprimée en mm. Si la valeur est négative, décale le texte dans les marges de gauche et de droite (la largeur du corps de texte augmente). Si la valeur est positive l'effet induit est une réduction de la largeur du corps du texte.

Options pour l'imprimerie

Les options suivantes sont utilisées pour l'impression; en particulier lorsqu'on utilise les services d'un imprimeur. Certaines options permettent d'imprimer plusieurs pages sur une feuille.

  • location : valeurs = left middle right bottom top singlesided doublesided . Cette option permet de déterminer l'emplacement de la page sur la feuille de papier. Utile quand le format de papier et le format d'impression sont différents. Par défaut, sans autre indication, c'est le coin en haut à gauche qui est utilisé. Attention ! L'option doublesided ne crée pas un document recto-verso; elle sert pour un positionnement différent de la page sur la feuille de papier selon les faces. La valeur middle place le texte au centre de la feuille; on peut coupler les clés (e.g; : left,bottom, right,top, right,bottom), de manière à placer le texte en haut à gauche, à droite en haut, en bas à droite, en bas à gauche de la feuille, comme sur la figure 3 et la figure 4 ci-dessous.
(Fig. 3) Les effets de la commande location avec ses différentes valeurs.
(Fig. 4) Effet de la commande location=middle dans ConTeXt
  • nx, ny, dx, dy : valeurs = nombre. La page 1 du document est dupliquée nx fois sur l'axe des x, sur la première page imprimée, la page 2 nx fois sur la deuxième feuille imprimée. ny idem à nx, mais pour l'axe des y. dx et dy correspondent à l'espace séparant les pages sur l'axe des x et l'axe des y (nul par défaut).


(Fig. 4) ConTeXt - Effets des clés de commande nx,ny.
  • scale : valeurs = nombre. Met à l'échelle la page avant de la placer sur la feuille de papier. Une valeur de 0.5 divise par deux la taille du document. L'emplacement sur la feuille de papier dépend de location.
  • marking : valeurs = on color screen. Pour obtenir des traits de coupe (chez l'imprimeur, ou chez soi), avant passage au massicot. La valeur on marque des croix simples; la valeur color apporte des échelles de couleur ajustables aux marques; screen apporte un peu plus de complexité aux marques avec une échelle de gris.
(Fig. 5) ConTeXT - Effet de la commande marking
Note sur l'empagement dans ConTeXt

Attention ! ConTeXt intègre par défaut l'en-tête et le pied de page dans l'empagement. Par défaut, le folio (le numéro de page) est automatiquement intégré au pied de page. Si l'on veut modifier la place du "folio" dans le pied de page et le placer ailleurs, il faudra le déclarer explicitement.

Mise en page locale

Dans ConTeXt, la mise en page est automatique. Mais il peut arriver des cas où il est souhaitable d'intervenir. Afin d'insérer un titre ou une ou deux lignes sur une autre page, par exemple. ConTeXt permet d'ajuster localement la mise en page par la macro suivante :

\adaptlayout[option 1][option 2], où option 1 correspond aux numéros de page du document final et option 2 prend les valeurs height=dimension, ou bien lines=nombre de lignes.

Il faut prendre garde à la chose suivante : les valeurs de height et de lines sont des valeurs que l'on retranche à \textheight si elles sont négatives ou que l'on ajoute, si elles sont positives. En cas d'ajout, la valeur se fait aux dépens du pied de page et ne peut jamais dépasser celui-ci. Il apparaît ainsi inutile de d'opter pour des valeurs trop grandes. Si l'on prend :

\adaptlayout[15,26,36][height=+0.5cm]
\adaptlayout[12][lines=-1]

Ces commandes seront à placer dans le préambule de la source. La hauteur du corps de texte sera augmentée d'un demi-centimètre pour les pages 15, 26 et 36 et sera diminuée d'une ligne pour la page 12.

Le module fullpage

Comme son nom l'indique ce module permet de créer des pages avec des marges minimales. Il est chargé au début du document par la commande :

\usemodule[fullpage]

Ce module accepte deux options style et margin qu'on écrit soit lors du chargement du module soit dans une commande \setupfullpage[option=valeur]

Par exemple :

  • \usemodule[fullpage][style={cm,empty}], ou bien :
  • \usemodule[fullpage]

\setupfullpage[style={cm,empty}]

L'option style prend les valeurs suivantes :

  • in : affiche la page avec des marges de 1in (1 inch) ;
  • cm : affiche la page avec des marges de 1,5cm ;
  • margin : bascule en mode marge libre dont on donnera la valeur par l'option margin ;
  • plain aucun entête et un pied de page étroit de 0,5cm ;
  • headings : entête et pied de page étroits de 0,5cm ;
  • empty : ni entête ni pied de page.

L'option margin indique la dimension attribuée aux marges en ayant spécifié style=margin. Exemple : \usemodule[fullpage][style={margin,empty},margin=10mm]


Mise en page d'une lettre avec le module letter

Puisque nous sommes dans la partie qui concerne la structuration d'un document simple, il est indiqué de terminer cette partie par la rédaction d'une lettre. Les familiers de LATEX connaissent la déclaration de la classe letter dans le préambule. Il en va presque de même avec ConTeXt, sauf qu'il s'agit ici d'un module (et non d'une classe). Vous pouvez tester ce module en copiant/collant le fichier source ci-dessous dans votre éditeur de texte. Vous remarquerez que le préambule se borne à mentionner l'appel au module "letter", et que le contenu situé entre les commandes \starttext et \stoptext est presque totalement un ensemble de commandes \setupQuelqueChose et de \defineQuelqueChose. Pour toute information concernant les différents styles de lettres (en Allemagne, en France, etc.) on se reportera aux explications données sur le module letter à la page du Wiki de ConTeXt Garden.

\usemodule[letter]
\starttext
\setupletter
  [name={Jean Dupond},
   address={My Address Line One\\My Address Line Two\\My Address Line Three},
   toname={M. Mlle Mme\ Durand},
   toaddress={Address Line 4\\Address Line 5\\Address Line 6}]

\defineletterelement[layer][location][example]{\correspondenceparameter{address}\par}
\setupletterlayer[location][alternative=example,y=2cm,x=30mm]

\defineletterelement[layer][addressee][example]%
                    {\correspondenceparameter{toname}\\\correspondenceparameter{toaddress}\par}
\setupletterlayer[addressee][alternative=example,y=8cm,]

%% Pour enlever le mot "Date"
\setuplettertext[en][date=]
%% Faire glisser la ligne de date pour qu'elle commence 8 cm en-dessous du haut de page
\setupletterlayer[reference][y=8cm]

\startletter
  [opening={Cher, Chère \correspondenceparameter{toname}},
   closing={Bien sincèrement,},
   signature={\correspondenceparameter{name}}]

Comment allez-vous ? Bien j'espère ? De mon côté, j'ai commencé l'apprentissage de ConTeXt et je vous envoie par la présente un échantillon de mes exercices.
\stopletter

\stoptext

Typographie d'un document simple : les polices

La police de caractère ou police d'écriture (typeface ou font family en anglais) désigne un assortiment de caractères typographiques (lettres, chiffres, ponctuations), ayant un dessin particulier. Times New Roman, Arial, Helvetica, Lucida, Verdana sont des polices de caractères.

Une police possède 5 caractéristiques que l’on peut faire varier individuellement :

  • la famille ;
  • la graisse ;
  • la forme ou le style ;
  • la taille (le corps) ;
  • la casse (majuscule, minuscule).

La fonte : c'est un ensemble de caractères d’une même police ayant la même famille, la même graisse, la même taille et la même forme. Par exemple : Arial sans serif 12pt est une fonte, tandis que Arial sans serif 12pt italiques est une autre fonte.

Famille. Il y a 5 familles typographiques :

  • avec empattement; on emploie les termes de roman, serif, regular.

Il y a trois types d'empattements :

  1. triangulaire (ou Élsevir): comme la police Time;
  2. rectangulaire (ou Égyptienne) : comme par exemple la police Clarendon très utilisée en Amérique pour écrire le fameux Wanted
  3. filiforme (ou Didot) : par exemple la police créée par Firmin Didot.
  • sans empattement; on emploie les termes de sans serif, linéale, antique ou bâton.
  • monotype : on emploie les termes de : à chasse fixe, monospace, teletype, tous les caractères on la même largeur, comme sur des machines à écrire, ou sur les consoles des terminaux d’ordinateur.
  • 'cursive ou calligraphique : il s'agit des familles de polices simulant l’écriture à la main.
  • fantasy : familles de polices dont les glyphes sont exotiques et plus décoratives qu’utilisables pour du long texte. Peuvent convenir pour des titres ou dans l'utilisation de caractères symboliques, en cartographie par exemple.
  • maths : ConTeXt ajoute une sixième famille mathématique pour écrire les formules mathématiques, utilisables lorsqu'on passe en mode mathématique.

Graisse La graisse est l’épaisseur d’un trait ou d’un caractère : gras, demi-gras, léger (bold, semi bold, light).

Forme ou style Les caractères peuvent être en italiques, penchés, italiques et gras, penchés et en capitale.

La casse : La casse est le passage entre caractères majuscules et minuscules. Il existe aussi des petites capitales utilisées en français pour écrire les noms propres.

Réglage des polices

Dans ConTeXt, si rien n'est précisé, la police par défaut est à empattement. Pour vérifier la présence (et l'absence) des polices prises en charge par votre système, veuillez vous référer au paragraphe 2.2.3 (sur mtxrun) ci-dessus. La commande ConTeXt pour écrire en roman est \rm. On peut aussi bien utiliser \serif, \regular et \roman. La commande pour écrire avec une fonte sans serif est \ss, ou bien \sans et \sansserif. Exemple :

 \starttext 
 {\rm Exemple de texte en roman}
 {\ss Exemple de texte sans empattement}
 \stoptext

Dans les options de certaines commandes (par exemple [style=. . .]) il est possible d'employer le vocabulaire suivant :

  • pour les sérif : serif, regular, roman, rm ;
  • pour les sans serif : sans, support, sansserif, ss.

Monotype La commande ConTeXt pour écrire en monotype est \tt, ainsi que \mono et \type et dans certaines options : mono, type, teletype, tt. Exemple :

\starttext 
{\rm Cette phrase est écrite en roman}
{\tt Cette phrase est sans empattement, écrite en Monotype}
\stoptext

Cursif et calligraphique ConTeXt utilise la police Lucida, si elle est installée sur le système. Lucida permet d'utiliser les styles cursifs et calligraphiques avec les commandes \hwou \handwritten pour l'écriture cursive et \calligraphic et \cg pour l'écriture calligraphique. On peut installer d'autre polices que Lucida, en veillant notamment au respect des licences. C'est une chose d'utiliser une police pour un travail personnel, c'en est une autre de mettre en vente un ouvrage imprimé avec une police dont on ne s'est pas acquitté de la licence. À noter aussi que certaines polices ne sont pas toutes disponibles sur un système donné. C'est le cas en particulier pour une très belle police de calligraphie, la police Zapfino, uniquement disponible sur le système Mac OS X.

Zapfino

Graisse On peut modifier la graisse dans les textes composés avec ConTeXt que d'une seule façon, au moyen des commandes \bf ou \bold. Exemple :

\starttext 
On peut mettre en valeur du texte
{\bf en le mettant en gras}.
\stoptext

À noter que la mise en gras d'un texte s'obtient de deux manières :

\starttext 
Soit
{\bf En faisant précéder la commande d'une accolade} - et en fermant cette accolade après le texte mis en gras.
Soit en faisant suivre la commande d'une paire d'accolades
\bf{qui encadrent le texte à mettre en gras.}

Style Italique et penché (slanted) L'écriture en italiques s'obtient par \it ou \italic; l'écriture penchée par \sl ou \slanted. Exemple :

\starttext 
Dans ConTeXt on peut écrire
\it un texte en italique,
\sl ou bien préférer le style en penché.
\stoptext

La commande \tf permet de revenir au style normal:

\starttext 
\it Les effets sont produit par l'italique, {\tf puis le style normal} et à nouveau le style italique.
\stoptext

Résumé

La typographie prend en charge les deux aspects de la page imprimée : les choses qui doivent être vues et celles qui doivent être lues. Ce qui relève de l'information et du repérage (numéro du chapitre, en-tête, numéro de page), ce qui relève du sens porté par le corps de texte. L'ensemble d'une page fait l'objet d'une longue réflexion historique, depuis les débuts de l'imprimerie. La mise en page des zones de texte, comme le nombre de lignes, l'espacement entre les lignes, la forme des lettres, et ainsi de suite, réclament une attention rigoureuse, afin non seulement de plaire à l’œil, mais surtout de rendre la lecture aisée et de ne pas fatiguer le lecteur.

Il est important, s'agissant des documents de qualité, voire même pour des documents simples mais dont la communication doit être visuellement irréprochable, de vous intéresser non seulement à la mise en page, mais aussi à la qualité visuelle de la lecture, et donc au confort de lecture. À cet effet, il faudra s'intéresser au crénage (kerning en anglais), c'est-à-dire au réglage de l'espace entre deux glyphes (entre deux lettres) et aux problématiques adjacentes. Un coup d'oeil à la page Wikipédia qui traite de ce thème vous donnera une idée des problèmes relatifs à la typographie; la page en anglais sur le [kerning https://en.wikipedia.org/wiki/Kerning] est plus fournie. En principe le réglage des espaces entre les glyphes est automatique, mais on peut agir manuellement et modifier ces espaces. Ci-dessous, veuillez trouver un exemple de code avec ConTeXt pour afficher ces espaces :

Du simple au complexe : colonnes et tableaux

En général le corps du texte que l'on souhaite imprimer est placé sur une seule colonne, la zone de texte principale. Il peut arriver que l'on souhaite placer ce texte sur 2 colonnes, voire 3. Il peut même aussi se faire que l'on veuille comparer deux versions d'un même texte, ou bien encore que l'on cherche à identifier des éléments communs à deux textes distincts. Mieux encore, on peut vouloir placer des textes en colonne lorsqu'on fait de la traduction. On peut par exemple donner un texte en grec à gauche, en latin au centre, en français à droite.

Dans le cas le plus simple, le texte en colonne est disposé de manière à remplir la première, puis la seconde colonne, voire la troisième si elle existe. On peut vouloir être exigeant et demander à ce que telle partie d'un texte soit à telle place sur telle colonne. On peut désirer encore faire en sorte que les lignes des textes (notamment pour la versification et la traduction) soient disposées fac à face.

Colonnes simples

  • Premier exemple : un texte sur une page A5, disposé sur 3 colonnes. Le texte ici est un texte factice, injecté par la commande \input knuth
\setuppapersize[A5]
\startcolumns[n=3]
\input knuth
\stopcolumns
(Fig. 6) Exemple de texte simple sur 3 colonnes (texte factice : knuth)
(Fig. 6) Exemple de texte simple sur 3 colonnes (texte factice : knuth)
  • deuxième exemple : la même chose que précédemment, mais sur 2 colonnes, avec un trait vertical entre les colonnes, appelé par la valeur rule=on
\setuppapersize[A5]
\startcolumns[n=2,rule=on]
\input knuth
\stopcolumns
(Fig. 7) Colonne double avec une règle centrale.
(Fig. 7) Colonne double avec une règle centrale.
  • En usage normal, le contenu des colonnes est réparti de manière équilibrée sur chaque colonne. On peut vouloir cependant qu'une partie du texte soit imprimée sur une colonne, tandis que l'autre partie est placée ailleurs sur une autre colonne. Les deux textes ici sont également des textes factices.
\setuppapersize[A5]
\startcolumns[n=2]
\input ward
\column
\input weisman
\stopcolumns
(Fig. 8) Colonnes où le texte est réparti inégalement.
(Fig. 8) Colonnes où le texte est réparti inégalement.

Paragraphes parallèles

  • On peut aussi désirer qu'un texte soit doté d'informations placées sur le côté droit. On peut chercher à utiliser les marges (pour les notes marginales), mais aussi bien il est possible de traiter le texte et son information en deux paragraphes parallèles, comme dans l'exemple ci-dessous :
\setuppapersize[A5]
\enableregime[utf]
\defineparagraphs[TwoThird][n=2]
% La justification du second paragraphe est automatiquement calculée, si elle n'est pas spécifiée.
\setupparagraphs[TwoThird][1][width=.66\textwidth]
\startTwoThird
quotation{...{\it pourquoi y a-t-il quelque chose plutôt que rien ?}
Parce que rien n’est plus simple et facile que quelque chose.
Plus loin, sachant que les choses existent,
on doit être en mesure d’expliquer
{\it pourquoi elles existent ainsi,}
et pas autrement.}
\nextTwoThird
G. W. Leibniz, {\it\fr Principes de la nature et de la grâce fondés en raison,} 1714.
\stopTwoThird
(Fig. 8) Commande \setupparagraphs : les paragraphes sont alignés côte à côte.

Colonnes inscrites dans un cadre

  • Dans l'exemple ci-dessous, le texte est sur deux colonnes et inséré dans un cadre ajusté. Le texte est factice, donné par la commande \input tufte. Il se peut que dans votre test, le PDF résultant de la compilation montre un texte qui déborde du cadre. Pensez à vérifier la police par défaut et, au besoin, à mentionner explicitement la taille de la police (qui est par défaut en 12pt).
\setuppapersize[A5]
\framed[width=0.9\hsize,location=middle]\bgroup
 \startnarrower[2*middle]
 \setlocalhsize \hsize\localhsize 
 \startsimplecolumns
 \input tufte
 \stopsimplecolumns
 \stopnarrower
\egroup
(Fig.9) Texte sur deux colonnes, entouré d'un cadre.

Texte en parallèle sur deux pages (paire/impaire)

  • On a parfois besoin (c'est le cas lors de travaux de traduction), d'avoir le texte en langue originale sur la page de gauche (paire/verso) et la traduction sur la page de droite (impaire/recto).

Voici une manière de faire, proposée par Hans Hagen. Attention ! Le script proposé ci-dessous ne fonctionne que si vous placez le texte à synchroniser entre les commande \StartCouple et \StopCouple.

\usemodule[streams] 

\def\StartCouple{\page\SwitchToNormal} 
\def\StopCouple {\SwitchToNormal \SynchronizeLeftAndRight \FlushLeftAndRight} 
\def\Original {\SwitchToNormal\SynchronizeLeftAndRight\SwitchToLeft} 
\def\Translation{\SwitchToRight} 
\starttext
\Original\en
Few discoveries are more irritating than those which expose the pedigree of ideas. Lord \sc{Acton}

\Translation\fr
Peu de découvertes sont aussi irritantes que celles qui exposent le pedigree des idées. Lord \sc{Acton}
\stoptext

Texte sur 2 colonnes, avec des graisses différentes et du grec ancien

  • Ici, nous sommes à la limite de l'exercice de mise en forme de texte simple, puisqu'il s'agit d'imprimer sur la colonne de gauche un certain nombre d'informations (ici sur la police : roman, italique, gras, etc.) et d'obtenir le rendu sur la colonne de droite. Le même texte s'affiche à droite, en normal, italiques, gras, petites majuscules, etc.). On ajoute le texte grec à la fin, texte en version originale (ici en grec ancien, tiré de l'Apologie de Socrate de Platon). Notez que nous n'avons pas besoin de réécrire le texte, du fait que nous définissons la commande buffer avec la clé Plato (buffer est un tampon de mémoire : la commande permet de garder automatiquement du texte en mémoire et de le réutiliser. On a rajouté une commande qui permet un rendu de la police à l'ancienne (en bas du fichier). À noter aussi l'appel du module simplefonts et l'utilisation de la police TeX Gyre Pagella, ce qui permet d'avoir un rendu correct, y compris les esprits et les accents en grec. On aurait pu aussi bien faire appel à une commande de type typescript, en la définissant ainsi \usetypescript[pagella] (pagella étant le nom dans ConTeXt de TeX Gyre Pagella (police disponible sous Linux) et en la couplant avec \setupbodyfont[pagella], mais ces dernières commandes ne permettent pas d'obtenir un texte grec convenable. Les modules et les polices doivent avoir été installées au préalable. Depuis 2013 le module simplefonts fait partie du cœur de ConTeXt et n'a donc plus à être téléchargé au préalable par la commande usemodule., même si nous le faisons ici.
\definefontfeature[f:superscript][sups=yes]
% une macro \sup est définie à notre convenance
\define[1]\sup{\feature[+][f:superscript]#1}
% On appelle le module ''simplefonts''
\usemodule[simplefonts]
\setmainfontfallback[DejaVu Serif][range={greekandcoptic, greekextended},
    force=yes, rscale=auto]
\setmainfont[TeX Gyre Pagella]
% On n'utilise pas les deux macro/typescript suivantes, qui feraient l'affaire sans le grec
% \usetypescript[pagella]
% \setupbodyfont[pagella]
% Il faut définir les paramètres de protrusion et d'étendue du texte - il n'existe pas d'héritage de paragraphe en paragraphe
\setupalign[hz, hanging]
% Si le paramétre de tolérance est 'verystrict' cela produit des défauts dans l'affichage du texte grec
\setuptolerance[strict]
% On définit les 2 colonnes et leur alignement. La colonne 1 est en 52pt, italique et alignée à gauche
\defineparagraphs[TwoColumns][n=2, align={hz, hanging}]
\setupparagraphs[TwoColumns][1][width=52pt, style=italic, align=left]

\starttext
% On définit le contenu du ''buffer'' et son étiquette.
\startbuffer[Plato]
Comment vous, O Athéniens, avez été affectés par mes accusateurs, je ne puis le dire;
mais je sais qu'ils ont presque réussi à me faire oublier qui j'étais -- si persuasives étaient leurs paroles; et pourtant il n'y a pas un mot de vrai dans ce qu'ils ont dit.
\stopbuffer

% Maintenant, nous allons afficher plusieurs fois le même texte, en le conservant en mémoire au moyen de la commande \getbuffer[Plato], précédée de la commande \startTwoColumns, etc. Ce qui aura pour effet d'afficher autant de fois qu'on le souhaite le même fichier.
% Une autre solution pourrait passer par la commande \dorecurse{n}, où {n} est le nombre qui indique la répétition du même texte. 
\startTwoColumns
Roman\TwoColumns
\getbuffer[Plato]
\stopTwoColumns

\startTwoColumns
Italic\TwoColumns
{\it\getbuffer[Plato]}
\stopTwoColumns

\startTwoColumns
Bold\TwoColumns
{\bf\getbuffer[Plato]}
\stopTwoColumns

\startTwoColumns
Bold italic\TwoColumns
{\bi\getbuffer[Plato]}
\stopTwoColumns

\startTwoColumns
Small caps\TwoColumns
{\smallcaps\getbuffer[Plato]}
\stopTwoColumns

\startTwoColumns
Old greek\TwoColumns
Ὅτι μὲν ὑμεῖς, ὦ ἄνδρες Ἀθηναῖοι, 
πεπόνθατε ὑπὸ τῶν ἐμῶν κατηγόρων, 
οὐκ οἶδα· ἐγὼ δ' οὖν καὶ αὐτὸς ὑπ' 
αὐτῶν ὀλίγου ἐμαυτοῦ ἐπελαθόμην, 
οὕτω πιθανῶς ἔλεγον. 

\stopTwoColumns

Old style ffl figures \& superior characters: 567890 / {\oldstyle 567890} --- 1{\sup 1} o{\sup o} re{\sup re}

\stoptext

Ce qui donne le texte de la Figure 10 ci-dessous (le rendu du fichier *.svg mange un des f de affectés).

(Fig. 10) ConTeXt - 2 colonnes de texte avec du texte grec.

On peut avoir besoin (particulier ou entreprise) d'un document sur une ou plusieurs pages dont la vocation est de présenter une activité. Ici on a choisi de présenter une maison d'édition fictive (Éditions Anciens & Modernes). Le document possède un titre en gras en haut de la page. Sur la droite, figure le logo de l'entreprise. Le titre est suivi d'un trait gras qui précède une colonne à gauche contenant les informations de contact et autres. La colonne de droite est réservée à la présentation proprement dite des activités de l'entreprise. Dans cette colonne, on peut vouloir ajuster l'espacement entre les paragraphes et aussi entre les lignes. De manière générale, maintenant que le processus est bien compris, il va nous falloir définir la langue (ici le français), la police dont nous voulons faire usage et sa taille, le titre, supprimer l'affichage de la pagination, définir la colonne de droite et la colonne de gauche. Ce qui donne :

% Sélection de la langue
\mainlanguage[fr]
% Informations de la sortie PDF (qui n'est pas obligatoire ici, mais peut s'avérer pratique)
\setupinteraction
  [state=start,
   color=colour_link,
   click=yes,
   contrastcolor=colour_link,
   focus=standard, % Clicking an inter-document hyperlink by default switches to "fit page" mode. Override.
   openaction={FitWidth,ToggleViewer},
   title={Anciens & Modernes},
   style=normal,
   subtitle={Anciens et Modernes},
   author=Adeimantos <adeimantos@uc.cy>,
   keyword={philosophie, histoire, philosophie politique}]
% Suppression de la numérotation des pages
\setuppagenumbering[location=]

% Réglage des marges, en-tête, pied de page, etc.
\setuplayout[
    backspace=10mm,
    width=190mm,
    topspace=5mm,
    header=0mm, 
    footer=5mm,
    footerdistance=0mm,
    bottomdistance=10mm,
    height=280mm]
%\showframe (commande pour afficher les cadres)

% Réglages de la police (on peut choisir une autre police)
\definefontfamily [main_font] [rm] [titillium] [features={default,quality}]
\definefontfamily [main_font] [mm] [TeX Gyre Pagella]
\setupbodyfont[main_font]

% Réglage de l'emplacement du logo
\setupexternalfigure[location=default]
\definelayer[logo_layer][state=start]
\setlayer[logo_layer][preset=lefttop, y=.01\paperheight,
 x=.82\paperwidth]{\externalfigure[anciens-modernes-logo.png][height=0.2\textwidth]}

\setupbackgrounds[page][background={logo_layer}]

% Réglage et définition de TwoVolumns. Solution 1
%\defineparagraphs[TwoColumns][n=2, align={hz,hanging}]
% \setupparagraphs[TwoColumns][1][width=200pt]

% Réglages de TwoColumns et manipulation de l'interligne dans la seconde colonne

\defineparagraphs[TwoColumns][n=2,align=verytolerant]

\startsetups[TwoColumns]
  \setupinterlinespace[line=5ex]
\stopsetups
\setupparagraphs[TwoColumns:2][inner=\directsetup{TwoColumns}]

% Le texte commence ici
\starttext

% Titre
{\switchtobodyfont[30pt] Éditions Anciennes & Modernes \crlf}
% Ligne sous le titre
\blackrule[height=0.6mm,width=0.83\textwidth]

% Date
{\bf Présentation}\crlf
\currentdate[dd,{~},m,{~},year]

% Sous-Titre
\blank
\framed[align=middle,width=200mm,height=13mm,frame=off]
{
    \bf \switchtobodyfont[15pt] 
    {\bf Éditions critiques et traductions}
}
% Ici commence le double colonnage
\startTwoColumns
\startlines
{\bf Information de contact}
Adeimantos
3 Achaion Street
Attica
Gr - 11852 Athens
adeimantos@uc.cy

{\bf Édition}
Littérature diverse

{\bf Dévelopement}
Prototype

{\bf Année de création}
2016

{\bf Financements privés}
\$0

{\bf Utilisation des fonds}
75\% Développement propre
18\% Marketing / Ventes
7\% Dons / Autres

\stoplines

% On passe à la seconde colonne
\TwoColumns
La raison d'être des {\em Éditions Anciennes et Modernes} est la valorisation du fond ancien de philosophie française des XIX{\high e} et XX{\high e} siècles; en effet, nombre d'ouvrages sont tombés dans l'oubli et ne sont que rarement disponibles à la lecture dans les bibliothèques publiques. La volonté des {\em Éditions Anciennes et Modernes} est de collecter ces ouvrages, d'en assurer l'édition critique dans les formats papier et numérique.
 \blank
C'est la raison pour laquelle nous avons recours à plusieurs sources de financement afin d'assurer la pérennité des tâches de collecte, la prise en charge des ouvrages et leur traitement photo-mécanique, ainsi que les diverses tâches techniques liées aux processus de numérisation.

\stopTwoColumns

\stoptext
  • J'attire votre attention sur deux points :
  • Le premier point : D'abord, en ce qui concerne l'interligne du second paragraphe, soit vous le définissez comme un espace standard et vous choisisse la solution 1 (commentée ci-dessous)
% Réglage et définition de TwoVolumns. Solution 1
%\defineparagraphs[TwoColumns][n=2, align={hz,hanging}]
% \setupparagraphs[TwoColumns][1][width=200pt]

Soit vous avez besoin d'interlignes plus conséquents et vous choisissez le réglage ci-après, sachant que vous pouvez jouer avec la commande \setupinterlinespace[line=5ex], typiquement avec [line=5ex]  :

% Réglages de TwoColumns et manipulation de l'interligne dans la seconde colonne
\defineparagraphs[TwoColumns][n=2,align=verytolerant]

\startsetups[TwoColumns]
  \setupinterlinespace[line=5ex]
\stopsetups
\setupparagraphs[TwoColumns:2][inner=\directsetup{TwoColumns}]
  • Le second point : toutes les figures que vous allez utiliser dans vos documents doivent impérativement être appelées par, au choix :
 - default: charge les images présentes dans votre installation ConTeXt(requis pour charger les exemples graphiques de ConTeXt)
 - local: charge les images qui se trouvent dans le même dossier que ConTeXt et 2 dossiers plus loin (e.g. \context\Images\Architecture)
 - global: clé intéressante : charge les images indiquées par le chemin-clé de la commande\setupexternalfigure (par example : \setupexternalfigure[d:\DocTeX\figures\Architecture\maison01.png]
 - Dans l'exemple donné ici (voir la figure ci-dessous), nous avons choisi d'importer une image confectionnée avec Inscape et convertie au format *.png. Cette figure se trouve dans le même dossier que le fichier source *.tex. \setupexternalfigure[location=default].
\setupexternalfigure[location=default]
\definelayer[logo_layer][state=start]
\setlayer[logo_layer][preset=lefttop, y=.01\paperheight,
 x=.82\paperwidth]{\externalfigure[anciens-modernes-logo.png][height=0.2\textwidth]}

Important : Toutes les figures que vous souhaitez utiliser doivent impérativement être dans les formats suivants : PDF, PNG, JPG, JP2 or JBIG2. Si le logiciel Inkscape est installé sur votre système ConTeXt peut transformer à la volée les images SVG en PNG.

(Fig. 11) Texte sur deux colonnes avec titre et logo

Tables et Tableaux

  • Il existe une diversité quasi infinie de situations dans lesquelles on a besoin d'un ou plusieurs tableaux. On va répertorier ici quelques exemples qui peuvent donner une idée de la puissance de ConTeXt.
Premier tableau simple : texte encadré

Nous avons rédigé un document et nous voulons souligner, par un résumé terminal adéquat, l'essentiel de notre propos, afin de le donner à mémoriser à nos lecteurs. Le code à tester est donné ci-dessous étape par étape :

\mainlanguage[fr]
\setcharacterspacing[frenchpunctuation]
\setuppagenumbering[location=]
\starttext

Nous avons défini avec le code ci-dessus la langue, le respect de la ponctuation française (afin de ne pas avoir à corriger d'éventuels points ou double points orphelins en début de ligne), neutralisé la numérotation des pages. Maintenant, nous établissons la manière dont l'alignement va être respecté à l'intérieur du tableau. Notez que 3 possibilités sont offertes : texte justifié, aligné à gauche ou laissé à lui-même. Ici, nous avons choisi de justifier le texte avec la commande : \setupTABLE[start][align=normal]. Ce qui donne ceci :

\setupTABLE[start][align=normal]
%\setupTABLE[start][align=flushleft]
%\setupTABLE[start][align={flushleft,broad}]

\bTABLE
    \bTR
        \bTD
        Afin de bien cerner la puissance d'édition que permet ConTeXt, il est essentiel de mémoriser un certain nombre de commandes-clés qui permettront d'établir assez rapidement un texte clair et précis. Pour ce faire, il convient de se lancer dans la rédaction d'un texte un peu complexe, avec des parties, des sections, des sous-sections, une table des matières, une bibliographie, des encadrés, etc. De la sorte, on pourra passer en revue les points importants et se familiariser avec les commandes. Comme toute vertu est une disposition acquise, c'est par la répétition que les exercices permettent d'acquérir ce qu'au départ on ne maîtrisait pas.
        \eTD
    \eTR
\eTABLE

\stoptext
  • Et voici le texte (sur l'image SVG, le texte est de Charles Péguy).
(Fig. 12) ConTeXt - Texte encadré simple
Texte encadré avec couleurs
  • Il se peut que vous souhaitiez rédiger un document, dans lequel les textes encadrés soient mis en valeur par de la couleur. La mise en œuvre de l'exemple suivant nécessite la connaissance de METAPOST, un outil graphique de LaTeX inclus dans ConTeXt. Nous n'entrons pas ici dans l'analyse du code MPgraphic qui permet précisément de tracer des traits et des figures géométriques. Nous présentons seulement ici un exemple de ce que ConTeXt permet de faire en donnant des indications sur le code.

Il s'agit ici de présenter un résumé et une conclusion dans un cadre rouge sur fond gris. Le texte doit être en italique (les textes choisis ici sont de Charles Péguy). Voici le code :

\mainlanguage[fr]
\setcharacterspacing[frenchpunctuation]
\setupbodyfont[pagella,11pt]

\setupcolors[state=start]

Ce préambule ne pose pas de problème, puisqu'il s'agit d'éditer un texte en français (uniquement). Rappelons que si ce texte encadré devait se trouver à la suite d'un texte recourant à diverses langues non-romanes, la commande \mainlanguage[fr] devrait être revue, afin d'inclure les autres langues, au moyen de \setuplanguage[fr][patterns={fr,agr}] (français et grec ancien), par exemple, et de la commande \definefallbackfamily [mainface] [rm] [ipaexmincho][range=cjkunifiedideographs], dans le cas où vous souhaiteriez insérer du texte chinois dans votre document en français.

  • Maintenant il s'agit de définir le cadre, sa couleur et divers détails. Puisqu'on passe d'un simple cadre avec ou sans ligne à un cadre couleur, on va faire appel à Métapost, le module de dessin propre à ConTeXt. Auparavant, on va définir "MyFrame" (mon cadre). Et on définit d'abord notre cadre par la commande :

\defineframedtext [MyFrame]. On indique à ConTeXt que dans ce cadre le style sera en italiques.

\defineframedtext
 [MyFrame]
 [before={\blank},
  after={\blank},
  frame=off,
  background=MyFrame,
  %width=\textwidth,
  width=max,
  height=fit,
  style=italic]
\definelabel
 [Définition]
 [headstyle=\bf\smallcaps]
  • On définit ensuite avec MPgraphic (Métapost Graphic) l'étiquette de notre cadre et le comportement des titres et du fond du cadre, qui est ici en gris clair.
\startuseMPgraphic{MyFrame}
path b;
picture p;
%p := textext.rt("\white\Définition");
p := textext.rt("\white\framedtextparameter{Title}");
%p := textext.rt("\white\getvariable{text}{text1}");
p := p shifted (2BodyFontSize,OverlayHeight-ypart center p+.25ExHeight);
b := boundingbox p leftenlarged .5EmWidth rightenlarged .5EmWidth;
fill OverlayBox withcolor lightgray;  %\MPcolor{
fill b withcolor darkred;
draw bottomboundary OverlayBox withpen pencircle scaled 1pt  withcolor
darkred;
draw topboundary OverlayBox withpen pencircle scaled 1pt  withcolor
darkred;
draw p;
setbounds currentpicture to boundingbox currentpicture enlarged 2mm;
\stopuseMPgraphic

\defineoverlay
 [MyFrame]
 [\useMPgraphic{MyFrame}]
  • Une fois les cadres et leur comportement définis, il ne reste plus qu'à entrer nos textes.
\starttext

\showframe % cette commande permet d'afficher le cadre
\startMyFrame[Title=Résumé]
« Dans la société présente, où le jeu de la spécialisation s’est outré automatiquement, les fonctions intellectuelles et les fonctions manuelles ne sont presque jamais attribuées aux mêmes ouvriers ; les ouvriers intellectuels délaissent presque tout le travail des mains ; les ouvriers manuels délaissent presque tout travail de l’esprit, presque tout exercice de la raison. Dans la cité harmonieuse dont nous préparons la naissance et la vie, les fonctions intellectuelles et les fonctions manuelles se partageront harmonieusement les mêmes hommes. Et la relation de l’intellectuel au manuel, au lieu de s’établir péniblement d’un individu à l’autre, s’établira librement au cœur du même homme. Le problème sera transposé. Car nous n’avons jamais dit que nous supprimerions les problèmes humains. Nous voulons seulement, et nous espérons les transporter du terrain bourgeois, où ils ne peuvent recevoir que des solutions ingrates, sur le terrain humain, libre enfin des servitudes économiques. Nous laissons les miracles aux praticiens des anciennes et des nouvelles Églises. Nous ne promettons pas un Paradis. Nous préparons une humanité libérée.»
\stopMyFrame

\startMyFrame[Title=Conclusion]
« La crise de l'enseignement n'est pas une crise de l'enseignement ; il n'y a pas de crise de l'enseignement ; il n'y a jamais eu de crise de l'enseignement ; les crises de l'enseignement ne sont pas des crises de l'enseignement ; elles sont des crises de vie ; elles dénoncent, elles représentent des crises de vie et sont des crises de vie elles-mêmes ; elles sont des crises de vie partielles, éminentes, qui annoncent et accusent des crises de la vie générales ; ou si l’on veut les crises de vie générales, les crises de vie sociales s'aggravent, se ramassent, culminent en crises de l'enseignement, qui semblent particulières ou partielles, mais qui en réalité sont totales, parce qu'elles représentent le tout de la vie sociale ; c’est en effet à l’enseignement que les épreuves éternelles attendent, pour ainsi dire, les changeantes humanités ; le reste d’une société peut passer, truqué, maquillé ; l’enseignement ne passe point ; quand une société ne peut pas enseigner, ce n’est point qu’elle manque accidentellement d’un appareil ou d’une industrie ; quand une société ne peut pas enseigner, c'est que cette société ne peut pas s'enseigner ; c'est qu'elle a honte, c'est qu'elle a peur de s'enseigner elle-même ; pour toute humanité, enseigner, au fond, c'est s'enseigner ; une société qui n'enseigne pas est une société qui ne s'aime pas ; qui ne s'estime pas ; et tel est précisément le cas de la société moderne.»
\stopMyFrame

\stoptext
  • L'image ci-dessous donne une idée de ce que produit le code complet.
(Fig. 13) ConTeXt - Cadre en rouge, texte en italiques sur fond gris
Texte encadré avec notes et légendes
  • Nous savons maintenant encadrer un texte, et même jouer avec la forme et la couleur du texte et du fond. Cependant, parmi la multiplicité des cas que nous pourrions éventuellement rencontrer (comme disposer de multiples cadres sur une page, afficher un logo dans un cadre, etc.), il se peut que nous désirions aligner des cadres contenant du texte, avec des titres pour ces cadres et des notes pour le texte, le tout correctement présenté si possible (ce qui signifie respectant un certain alignement). Nous prenons toujours comme exemples nos deux textes issus de l’œuvre en prose de Charles Péguy (Charles Péguy. Ed. Gallimard, coll. La Pléiade, Œuvres en prose complètes, tome I, pp. 1390).
  • Il s'agit de définir une paire de boîte dans chacune desquelles on insère un texte (différent), chacun des cadre disposant d'une légende et de la possibilité d'introduire des notes en dehors du cadre. Une des difficulés particulière consiste à imprimer un texte avec les césures (hyphenation) de la langue française, le respect des règles de ponctuation et l'alignement des notes par rapport au cadre. Le respect de la langue française par la justification du contenu des cadres s'obtient grâce aux deux premières commandes :
\mainlanguage[fr]
\setcharacterspacing[frenchpunctuation]

et aux commandes suivantes :

\setupTABLE[start][align=normal]
%\setupTABLE[start][align=flushleft]
%\setupTABLE[start][align={flushleft,broad}]
  • Ainsi, la première étape est simple, puisqu'il s'agit de configurer la langue et de définir la paire de boîtes avec des notes :
\mainlanguage[fr]
\setcharacterspacing[frenchpunctuation]
\setuppagenumbering[location=]
\definepairedbox
  [footnote]
  [width=\textwidth,
   align=middle]

La deuxième étape consiste à définir le comportement du tableau/cadre, après la commande \starttext; on remarque que la commande \setupTABLE[start][align=] offre 3 possibilités  :

\showframe
\starttext
\setupTABLE[start][align=normal]
%\setupTABLE[start][align=flushleft]
%\setupTABLE[start][align={flushleft,broad}]
  • La troisième étape n'offre pas de difficultés particulières, puisqu'il s'agit de manipuler le contenu du texte (titre et texte) et des notes par la commande

\startplacetable[title={Titre}], la commande \startlocalfootnotes, etc.:

\startplacetable[title={Titre du premier tableau}]
    \startlocalfootnotes
        \startplacepairedbox[footnote]
            \startcontent
                \startTABLE

 \NC    Votre texte de 15 lignes \NC\NR
                \stopTABLE
            \stopcontent
            \startcaption
                \placelocalfootnotes
            \stopcaption
        \stopplacepairedbox
    \stoplocalfootnotes
\stopplacetable
% et on recommence pour le second tableau
\startplacetable[title={Le titre de votre second tableau}]
    \startlocalfootnotes
        \placepairedbox[footnote]
            {\startTABLE
                        \NC Un autre texte de 15 lignes \NC\NR
   \stopTABLE}
            {\placelocalfootnotes}
              \stoplocalfootnotes
               \stopplacetable

\stoptext
  • Vous pouvez tester ce code avec autant de cadres et de notes que vous le souhaitez.
(Fig. 14) ConTeXt - 2 textes encadrés avec titres et notes hors-cadre

Notes en marge, notes de bas de page et notes de fin de chapitre

Notes en marge

  • On ne sait pas assez que ce qu'il est convenu d'appeler traditionnellement les notations marginales sont en effet des notes en marge du texte, situées à gauche ou à droite de celui-ci; les notes en bas de page, ou en fin de chapitre consistent pour l'essentiel, non à recueillir des commentaires, mais des références brèves (titres de livres, références à une page, etc.). Nous voyons donc les commentaires reportés en marge du texte, comme c'est le cas aujourd'hui dans de nombreuses revues en ligne (c'est le cas dans l'exemple de la revue Médiévales, publié en ligne par la plate-forme Revue-org). La procédure est assez simple : il s'agit de définir l'espace alloué à ces notes marginales, la localisation (à droite/à gauche), la taille de la police et ... c'est tout ! Voici le script à tester :
\setuppapersize[A4]
% configuration de l'espace alloué aux notes
\setuplayout [backspace=40mm]
\setuppagenumbering[location={header,inright}]
% configuration de la localisation de la note (ici à l'intérieur et à gauche)
\setupmargindata[inmargin][location=left]
% Taille de la police utilisée, ici 9pt
\setupmargindata[inmargin][style={\switchtobodyfont[ss,9pt]}]
\setupbodyfontenvironment[default][em=italic]
\usemodule[simplefonts]
\starttext
Cette assurance impériale, Athènes la devait à sa {\em forme}  \inmargin[][align=middle]{Platon, {\em La République.}}  politique (la Cité) et à son {\em régime} politique, tantôt aristocratique, tantôt démocratique. Il est à noter que c'est au moment où la philosophie politique prend son essor, avec les grandes théorisations,  \inmargin[][align=middle]{Aristote, {\em Politiques}, 1.1252b 22.} que sont la {\em République} de Platon et {\em les Politiques} d'Aristote, que la Cité d'Athènes trouve son tragique destin. Et c'est justement par la politique que la Cité avait fourni aux Grecs le moyen de se libérer de la subjectivité tragique. La Cité grecque représente non seulement la première articulation {\em politique} objective de l'existence humaine, mais elle hisse celle-ci hors de l'existence des {\em polifemi} \inmargin[][align=middle]{G. Vico, {\em La Scienza Nova}, Napoli, 1725.}  (le terme est de Giambatista Vico, le philosophe napolitain du XVIIIème siècle), auxquels Aristote fait allusion  au chapitre 1 du Livre I des {\em Politiques} lorsqu'il fait référence à l'{\em Odyssée} d'Homère.
\stoptext

Ce qui affiche le rendu de la figure 11 suivante :

(Fig. 15) ConTeXt - Notes dans la marge
  • Remarque : la commande \setupinmargin a été renommée \setupinmargindata. Un exemple autre que celui de la figure 11 ci-dessus permet d'insérer du texte dans la marge à droite :
\setupmargindata[inmargin][location=right]
\starttext
Ceci est un exemple d'une note simple avec une police penchée. Si les choses sont faites correctement, la note \inmargin{Ici nous avons une note simple.} devrait être imprimée sur le côté du document avec la commande \type{\inmargin} placée dans le texte. Vous devrez, bien entendu, ajuster les marges pour donner d'abord de l'espace à la note, puis la justifier à droite ou à gauche, etc. regardez la documentation disponible sur \type{setupmargindata} et \type{switchbodyfont}.
\stoptext

Notes de bas de page

Notes en bas de page : simples
  • Notes simples et apparat critique complexe
  • Concernant les notes de bas de page, deux cas se rencontrent en général, le cas simple et le cas complexe, notamment celui de ce que l'on nomme l'apparat critique, qui est un système de notes de bas de page employées pour donner diverses leçons d'un texte, manuscrit ou autre :
  1. Dans le premier cas, le plus simple et le plus répandu, les notes se suivent dans le texte en bas de page et suivent une numérotation ordinale (note 1, note 2, note n, etc.).
  2. Dans le second cas, celui rencontré lors de la mise en page d'ouvrages spécialisés (par exemple dans l'édition des variantes de manuscrits), on peut vouloir chercher à obtenir des notes dans les notes et une hiérarchisation des niveaux de notes, comme c'est le cas désormais avec des outils issus de LATEX (comme Classical Text Editor).
  • Regardons maintenant comment ConTeXt permet d'imprimer des notes simples, puis des notes de plus en plus complexes.
Les notes simples en bas de page dans ConTeXt
  • Les notes de bas de page simples font appel à la commande \footnote{texte de la note}. Ce qui donne l'exemple suivant :
\usemodule[simplefonts]
\definefontfamily [mainface] [serif] [TeX Gyre Pagella]
\setupbodyfont[mainface]
\startext
Ceci\footnote[footA]{Ou cela, si vous préférez.} est une phrase qui contient une note de bas de page\footnote{En vérité, deux notes; celle-ci et \in{note}[footA] celle qui se trouve \at{page}[footA], appelée par \note[footA].}.  
\stoptext

(L'affichage donne des "?" après les commandes \in et \at, qui sont des commandes utilisées pour les références à des pages ou des chapitres, commandes que nous verrons plus loin). À noter aussi que le module "simplefonts" est aujourd'hui (en 2017) intégré au noyau et n'a plus besoin d'être invoqué dans le préambule. Aussi écrira-t-on simplement :

\definefontfamily[mainface][rm][Verdana]
    \setupbodyfont[mainface, 10pt]
    \starttext
    Ceci\footnote[footA]{Ou cela, si vous préférez.} est une phrase qui contient une note de bas de page\footnote{En vérité, deux notes; celle-ci et \in{note}[footA] celle qui se trouve \at{page}[footA], appelée par \note[footA].}.
    \stoptext
  • On peut aussi avoir besoin d'une note dans une note; ce qui donne le code suivant :
\usemodule[simplefonts]
\definefontfamily [mainface] [serif] [TeX Gyre Pagella]
\setupbodyfont[mainface]
\startext
Cette note\footnote(Ou bien celle-là\footnote{Ou bien peut-être les deux.}, si vous préférez.} est une phrase dans laquelle on trouve une note.
\stoptext
  • La manière d'afficher les notes en bas de page, sur une colonne, voire plusieurs, soit à la suite, soit sous forme de liste numérotée par paragraphe est réglable grâce aux commandes suivantes, illustrées ensuite par les figure 13 et 14 ci-dessous.
  • Commençons par un exemple de simples notes ajoutées les unes derrière les autres mais sur la même ligne. Cela est possible grâce au code suivant:
\setuppapersize[A4]
\definefontfamily [mainface] [serif] [TeX Gyre Pagella]
\setupbodyfont[mainface]
\setuplanguage[fr][patterns={fr}]
\define[1]\footnotenumbercommand{#1.}
\setupnotation [footnote] [
  numbercommand=\footnotenumbercommand,
  alternative=serried,
]
\setupnote[footnote] [paragraph=yes,]
% \setupfootnotes[n=4]
\starttext
Lorsqu'Augustin d'Hippone arriva à Milan\footnote{Où il avait trouvé un poste pour rédiger les panégyriques, sur la recommandation du sénateur Symmaque.}, il fût étonné de voir que beaucoup autour de lui lisaient silencieusement.\footnote{%
Ceci est une autre note. Voyez comment elle commence sur la même ligne que la première note ?
}
\stoptext
(Fig. 16) ConTeXt - Notes de pied de page simples
  • Nous choisissons maintenant de produire une liste numérotée de notes, mais en les disposant les unes au-dessous des autres, sur deux, voire plusieurs colonnes. Dans l'exemple qui suit nous avons choisi d'afficher le texte des notes sur 2 colonnes au moyen de la commande \setupfootnotes[n=2]. Vous pouvez faire varier l'affichage de la disposition des notes en décommentant les lignes à partir de \setupnotation [footnote].
\definefallbackfamily [mainface] [serif] [DejaVu Serif] [range=cyrillic] 
\definefallbackfamily [mainface] [serif] [DejaVu Serif] [range={greekandcoptic, greekextended}, force=yes, rscale=auto]
\definefontfamily [mainface] [serif] [TeX Gyre Pagella]
\setupbodyfont[mainface]
\setupbodyfontenvironment[default][em=italic]
\setuplanguage[fr][patterns={fr,de,ru,gr}]
\define[1]\footnotenumbercommand{#1.}
% \setupnotation [footnote] [
%  numbercommand=\footnotenumbercommand,
% alternative=serried,
% ]
% \setupnote[footnote] [paragraph=yes,]
 \setupfootnotes[n=2]
\starttext
Voyons ce qu'écrit Descartes \footnote{René Descartes, {\em Méditations Métaphysiques}, II.} :
\quotation{Je suppose donc que toutes les choses que je vois sont fausses; je me persuade que rien n'a jamais été de tout ce que ma mémoire remplie de mensonges me représente; je pense n'avoir aucun sens; je crois que le corps, la figure, l'étendue, le mouvement et le lieu ne sont que des fictions de mon esprit. Qu'est-ce donc qui pourra être estimé véritable ? Peut-être rien autre chose, {\em sinon qu'il n'y a rien au monde de certain}\footnote{C'est nous qui soulignons. On est en droit de se demander si ce qui est incertain et douteux est par conséquent faux. Beaucoup de choses probables, qui manquent de la certitude apodictique, peuvent se révéler vraies.}.

F. Nietzsche semble avoir repéré une difficulté concernant l'usage général de la notion de {\em vertu}\footnote{Friedrich Nietzsche, {\em Also sprach Zarathustra}, Kapitel 38.} :
\quotation{Ach, wie übel ihnen das Wort »Tugend« aus dem Munde läuft! Und wenn sie sagen: »ich bin gerecht,« so klingt es immer gleich wie: »ich bin gerächt!«}

Une phrase en russe :
Традиционная систематика лишайников оказывается во многом условна и

Écoutons ce que Platon fait dire à Socrate\footnote{Platon, {\em Apologie de Socrate}.} :
\quotation{Ὅτι μὲν ὑμεῖς, ὦ ἄνδρες Ἀθηναῖοι, 
πεπόνθατε ὑπὸ τῶν ἐμῶν κατηγόρων, 
οὐκ οἶδα· ἐγὼ δ' οὖν καὶ αὐτὸς ὑπ' 
αὐτῶν ὀλίγου ἐμαυτοῦ ἐπελαθόμην, 
οὕτω πιθανῶς ἔλεγον}.
\stoptext
(Fig. 17) ConTeXt - Notes de pied de page sur deux colonnes

Notes de fin de chapitre

  • Pour regrouper les notes en fin de chapitre, le code est le suivant :
\startsetups chapter:after
     \ifcase\rawcountervalue[footnote]\relax
     \or
         \startsubject[title=Notes]
             \placefootnotes
         \stopsubject
     \else
         \startsubject[title=Notes]
             \placefootnotes
         \stopsubject
     \fi
\stopsetups

\setupnotes[location=none]
\setupnotation[way=bychapter]

\setuphead[chapter][aftersection=\setups{chapter:after}]

Notes complexes en bas de page

Apparat critique en notes de bas de page avec LATEX
  • S'agissant des difficultés rencontrées pour mettre au point un apparat critique (parfois dans des langues non-latines), on consultera l'article en ligne paru dans le Cahier de Recherches Médiévales et Humanistes (spécialement le paragraphe 71). Avec LATEX, la création de l’apparat critique exige que tous les paramètres soient définis dans le préambule. L’utilisateur déclare notamment les modules et les commandes qu’il souhaite utiliser. Le module ledmac met à disposition la commande \type{\edtext{…}{…}}, qui définit le lieu variant (ici appelé « lemme »), lequel sera repris dans le ou les apparats en bas de page et qui, à l’aide des commandes \type{\Afootnote}, \type{\Bfootnote}, \type{\Cfootnote}, etc., permet de spécifier à quel étage on cherche à afficher les informations. On peut définir autant d’étages que l’on veut à l’intérieur de l’apparat critique affiché en bas de page. Les paramètres peuvent être personnalisés par une commande qui décrit la nature des notes présentées sur un étage donné. Outre les exemples donnés par Laurent Brun (cf. la référence ci-dessus), on pourra regarder le travail de Maïeul Rouquette sur les commandes reledmac qui concernent les notes constituant proprement l'apparat critique et reledpar, une macro qui sert à afficher du texte en parallèle (on trouvera ici les scripts et les sorties PDF de reledmac et reledpar).
  • Nous donnons ici, à titre de comparaison, le script LATEX contenant la commande reledmac, qui permet d'afficher l'apparat critique d'un texte médiéval (exemple dû au travail de Maïeul Rouquette). On joint son affichage au format SVG (figure 12).
\documentclass{article}
\usepackage{fontspec}
\usepackage{libertineotf}
\usepackage{polyglossia}
\setmainlanguage{latin}
\setotherlanguage{english}
\usepackage{SIunits}

\usepackage[series={A,B,C},noend,noeledsec,noledgroup]{reledmac}

% THE APPARATI ARE PARAGRAPHED
\Xarrangement{paragraph}


%VERTICAL SPACES BEFORE APPARATUS
\preXnotes{0.5cm}

% VERTICAL SPACE BEFORE RULES
\newlength{\before} 			% A length which will contains the space before the rule
\setlength{\before}{3mm} 		% The space we want to have
\addtolength{\before}{3pt} 		% A compensation for the space decreased by \footnoterule
\Xbeforenotes{\before} 			% And so, we configure reledmac.

% VERTICAL SPACE AFTER RULES
\newlength{\after}				% A length which will contains the space before the rule
\setlength{\after}{3mm}			% The space we want to have
\addtolength{\after}{-2.6pt}	% A compensation for the space added by \footnoterule
\Xafterrule{\after}				% And so, we configure reledmac.

\begin{document}

\begin{english}
\title{Setting spaces around footnote rules}
\maketitle
\begin{abstract}
This file sets spaces around footnote rules, to have a uniform \unit{3}{\milli\meter} before and after. There are three levels of paragraphed notes. Before the first series of notes, we have \unit{0.5}{\centi\meter}.

We use \verb+\Xbeforenotes+ and \verb+\Xafterrule+. There is, anyway, a subtlety: the footnote rule of reledmac is the standard \LaTeX footnote rule: \verb+\footnoterule+, which automatically decreases \unit{3}{pt} before and adds \unit{2.6}{pt} after. So we have to compensate, by defining to length:  \verb+before+ and \verb+\after+, which are passed to the respective commands. 
\end{abstract}
\end{english}

\beginnumbering
\pstart%
Cum defensionum \edtext{laboribus}{\Cfootnote{first note}} senatoriisque muneribus aut omnino aut magna ex parte essem aliquando liberatus, rettuli me, Brute, te hortante maxime ad ea studia, quae retenta animo, remissa temporibus, longo intervallo intermissa revocavi, et cum omnium artium, quae ad rectam vivendi viam pertinerent, \edtext{ratio}{\Afootnote{second note}} et disciplina studio sapientiae, quae philosophia dicitur, contineretur, hoc mihi Latinis litteris \edtext{inlustrandum}{\Cfootnote{third note}} putavi, non quia \edtext{philosophia}{\Bfootnote{fourth note}} Graecis et litteris et doctoribus percipi non posset, sed meum semper iudicium fuit omnia nostros aut invenisse per se sapientius quam Graecos aut accepta ab illis fecisse meliora, quae quidem digna statuissent, in quibus elaborarent.
\pend

\pstart%
Cum defensionum \edtext{laboribus}{\Cfootnote{first note}} senatoriisque muneribus aut omnino aut magna ex parte essem aliquando liberatus, rettuli me, Brute, te hortante maxime ad ea studia, quae retenta animo, remissa temporibus, longo intervallo intermissa revocavi, et cum omnium artium, quae ad rectam vivendi viam pertinerent, \edtext{ratio}{\Afootnote{second note}} et disciplina studio sapientiae, quae philosophia dicitur, contineretur, hoc mihi Latinis litteris \edtext{inlustrandum}{\Cfootnote{third note}} putavi, non quia \edtext{philosophia}{\Bfootnote{fourth note}} Graecis et litteris et doctoribus percipi non posset, sed meum semper iudicium fuit omnia nostros aut invenisse per se sapientius quam Graecos aut accepta ab illis fecisse meliora, quae quidem digna statuissent, in quibus elaborarent.
\pend

\pstart%
Cum defensionum \edtext{laboribus}{\Cfootnote{first note}} senatoriisque muneribus aut omnino aut magna ex parte essem aliquando liberatus, rettuli me, Brute, te hortante maxime ad ea studia, quae retenta animo, remissa temporibus, longo intervallo intermissa revocavi, et cum omnium artium, quae ad rectam vivendi viam pertinerent, \edtext{ratio}{\Afootnote{second note}} et disciplina studio sapientiae, quae philosophia dicitur, contineretur, hoc mihi Latinis litteris \edtext{inlustrandum}{\Cfootnote{third note}} putavi, non quia \edtext{philosophia}{\Bfootnote{fourth note}} Graecis et litteris et doctoribus percipi non posset, sed meum semper iudicium fuit omnia nostros aut invenisse per se sapientius quam Graecos aut accepta ab illis fecisse meliora, quae quidem digna statuissent, in quibus elaborarent.
\pend

\pstart%
Cum defensionum \edtext{laboribus}{\Cfootnote{first note}} senatoriisque muneribus aut omnino aut magna ex parte essem aliquando liberatus, rettuli me, Brute, te hortante maxime ad ea studia, quae retenta animo, remissa temporibus, longo intervallo intermissa revocavi, et cum omnium artium, quae ad rectam vivendi viam pertinerent, \edtext{ratio}{\Afootnote{second note}} et disciplina studio sapientiae, quae philosophia dicitur, contineretur, hoc mihi Latinis litteris \edtext{inlustrandum}{\Cfootnote{third note}} putavi, non quia \edtext{philosophia}{\Bfootnote{fourth note}} Graecis et litteris et doctoribus percipi non posset, sed meum semper iudicium fuit omnia nostros aut invenisse per se sapientius quam Graecos aut accepta ab illis fecisse meliora, quae quidem digna statuissent, in quibus elaborarent.
\pend

\pstart%
Cum defensionum \edtext{laboribus}{\Cfootnote{first note}} senatoriisque muneribus aut omnino aut magna ex parte essem aliquando liberatus, rettuli me, Brute, te hortante maxime ad ea studia, quae retenta animo, remissa temporibus, longo intervallo intermissa revocavi, et cum omnium artium, quae ad rectam vivendi viam pertinerent, \edtext{ratio}{\Afootnote{second note}} et disciplina studio sapientiae, quae philosophia dicitur, contineretur, hoc mihi Latinis litteris \edtext{inlustrandum}{\Cfootnote{third note}} putavi, non quia \edtext{philosophia}{\Bfootnote{fourth note}} Graecis et litteris et doctoribus percipi non posset, sed meum semper iudicium fuit omnia nostros aut invenisse per se sapientius quam Graecos aut accepta ab illis fecisse meliora, quae quidem digna statuissent, in quibus elaborarent.
\pend

\pstart%
Cum defensionum \edtext{laboribus}{\Cfootnote{first note}} senatoriisque muneribus aut omnino aut magna ex parte essem aliquando liberatus, rettuli me, Brute, te hortante maxime ad ea studia, quae retenta animo, remissa temporibus, longo intervallo intermissa revocavi, et cum omnium artium, quae ad rectam vivendi viam pertinerent, \edtext{ratio}{\Afootnote{second note}} et disciplina studio sapientiae, quae philosophia dicitur, contineretur, hoc mihi Latinis litteris \edtext{inlustrandum}{\Cfootnote{third note}} putavi, non quia \edtext{philosophia}{\Bfootnote{fourth note}} Graecis et litteris et doctoribus percipi non posset, sed meum semper iudicium fuit omnia nostros aut invenisse per se sapientius quam Graecos aut accepta ab illis fecisse meliora, quae quidem digna statuissent, in quibus elaborarent.
\pend

\endnumbering

\end{document}
(Fig. 18) LaTeX - notes de bas de page avec le module reledmac
Apparat critique en notes de bas de page avec ConTeXt
Texte simple sur une seule colonne et apparat critique
  • Nous donnons ici le script équivalent dans ConTeXt (merci à Pablo Rodriguez pour son aide). On remarquera, si on le compare au script précédent codé avec LATEX à la fois l'économie de moyens et la simplicité de mise en œuvre. Nous commentons le fichier source (commentaire dans le fichier, avec le symbole 'pourcentage'). La sortie affichée par la figure 12bis n'a de valeur qu'indicative, puisqu'on a décidé de se concentrer ici uniquement sur les notes de bas de page et non pas sur une mise en page complexe, qui comprendrait un texte en grec ou en latin, avec en regard sa traduction sur une colonne distincte, page sur laquelle on trouverait, un titre en en-tête, des notes marginales et, au surplus, un apparat critique en notes de bas de page. Ici, l'apparat critique est constitué autour des lignes où apparaissent les termes recherchés.
 \mainlanguage[la] % Définition du latin comme langue principale du document.
\setupbodyfontenvironment[default][em=italic]
 \setuplayout[header=2cm, footer=2cm] % Paramétrage de la page;
 \setuplinenumbering[step=2] % La sortie PDF comportera une numérotation de 2 lignes en  2 lignes; on peut régler sur 1, 5 ou 10.
 \setupnotations[alternative=serried] % On définit le caractère séquentiel des notes.
 \definelinenote[aNote] % Plusieurs manières d'afficher les notes ici, notamment en une ou en plusieurs colonnes (n=2, ou n=3).
 \definelinenote[bNote][n=2]
 \definelinenote[cNote][n=3]
 \definelinenote[dNote][paragraph=yes] % Les notes se suivent sur la même ligne.
 \def\ANote#1#2{#1\aNote{#1] #2}}
 \def\BNote#1#2{#1\bNote{#1] #2}}
 \def\CNote#1#2{#1\cNote{#1] #2}}
 \def\DNote#1#2{#1\dNote{#1] #2}}
 \setupbodyfont[palatino, 7.8pt]
 \starttext
 \start\fr % On indique à ConTeXt que l'on veut ici du texte en français (ou 'en' pour l'anglais). Le texte français est en ''italiques''.
{\em Définir un apparat critique et le mettre en page avec un traitement de texte courant est un véritable casse-tête. \type{LaTeX} et \type{ConTeXt} offrent des outils d'automatisation encore assez mal connus dans la communauté des éditeurs, notamment dans l'édition savante, pour la collation et la comparaison de textes médiévaux}.\par
 \startlinenumbering
 \dorecurse{6}% À utiliser seulement pour répéter le paragraphe suivant, ici 6 fois.
    {Cum defensionum \CNote{laboribus}{première note} senatoriisque
    muneribus aut omnino aut magna ex parte essem aliquando liberatus,
    rettuli me, Brute, te hortante maxime ad ea studia, quae retenta
    animo, remissa temporibus, longo intervallo intermissa revocavi, et
    cum omnium artium, quae ad rectam vivendi viam pertinerent,
    \ANote{ratio}{seconde note} et disciplina studio sapientiae, quae
    philosophia dicitur, contineretur, hoc mihi Latinis litteris
    \DNote{inlustrandum}{troisième note} putavi, non quia
    \BNote{philosophia}{quatrième note} Graecis et litteris et doctoribus
    percipi non posset, sed meum semper iudicium fuit omnia nostros aut
    invenisse per se sapientius quam Graecos aut accepta ab illis
    fecisse meliora, quae quidem digna statuissent, in quibus
    elaborarent.\par}
 \stoplinenumbering
 \stoptext
(Fig. 19) ConTeXt - Équivalent de reledmac : apparat critique en notes de bas de page
Texte grec et sa traduction latine sur deux colonnes
  • Il s'agit maintenant de mettre en œuvre un apparat critique qui concerne un texte en grec et sa traduction latine en regard; l'apparat critique est toujours en notes bas de page, selon plusieurs modalités. Les occurrence sont affichées lignes par ligne (et non par appel de note). Pour le grec, c'est la police GFS Didot qui est choisie (elle est présente sur le système Windows), mais on peut en choisir une autre, à condition bien sûr qu'elle affiche les esprits et les accents du grec ancien. De même, il est possible de régler la clé 'la' de la commande \setuplanguage[agr][patterns={agr,la}], sur 'ala' (latin ancien), ce qui vous permettra d'afficher les 'u' en 'v' et les 'j' en 'i'. Pour ce qui concerne les distinctions entre les différents latins (anciens, médiéval, ecclésiastique, etc. on se reportera à la documentation existante. La commande \dorecurse est seulement utile ici pour ne pas avoir à répéter le texte manuellement. On peut s'en dispenser dans un test en pré-production. Il est possible que dans l'usage d'un texte sur plusieurs pages, on rencontre un bug dû à la commande \startcolumns[n=2, balance=yes]. La clé balance semble poser problème. Ce script est aimablement fourni par Pablo Rodriguez. Le texte grec provient des Catégories d'Aristote et la traduction latine de Boèce.
\setuplanguage[agr][patterns={agr,la}] % réglage sur grec ancien et latin
\mainlanguage[agr] % Grec comme langue principale
\definefallbackfamily [mainface] [serif] [GFS Didot] [preset=range:greek]
\definefontfamily [mainface] [serif] [TeX Gyre Pagella]
\setuplayout[header=2cm, footer=2cm]
\setupnotes[compress=yes]
\setupnotations[alternative=serried]
\definelinenote[aNote]
\definelinenote[bNote][n=2]
\definelinenote[cNote][n=3]
\definelinenote[dNote][paragraph=yes]
\def\ANote#1#2{#1\aNote{#1] #2}}
\def\BNote#1#2{#1\bNote{#1] #2}}
\def\CNote#1#2{#1\cNote{#1] #2}}
\def\DNote#1#2{#1\dNote{#1] #2}}
\setupalign[hz, hanging]
\setuptolerance[strict]
\setuplinenumbering[step=5, location=inright, distance=1ex, align=center, width=0.5em]
\definemargindata[Stephanus][location=inner, distance=2ex, style=\em]
\setupbodyfont[mainface, 7.8pt]
\starttext

\start\fr % Un peu de texte en français.
Définir un apparat critique et le mettre en page avec un traitement de texte courant est un véritable casse-tête. \type{LaTeX} et \type{ConTeXt} offrent des outils d'automatisation encore assez mal connus dans la communauté des éditeurs, notamment dans l'édition savante, pour la collation et la comparaison de textes médiévaux.\par
\stop
\dorecurse{4}{\startcolumns[n=2, balance=yes]
\Stephanus{1a} Ὁμώνυμα λέγεται ὧν ὄνομα
    μόνον κοινόν, ὁ δὲ κατὰ τοὔνομα
    λόγος τῆς οὐσίας ἕτερος, οἷον ζῷον
    ὅ τε ἄνθρωπος καὶ τὸ γεγραμμένον·
    τούτων γὰρ ὄνομα μόνον κοινόν, ὁ δὲ
    κατὰ τοὔνομα λόγος τῆς οὐσίας
    ἕτερος· ἐὰν γὰρ ἀποδιδῷ τις τί
    ἐστιν αὐτῶν ἑκατέρῳ τὸ ζῴῳ
    εἶναι, ἴδιον ἑκατέρου λόγον ἀποδώσει.

    \column

    \startlinenumbering[continue]
    Aequivoca dicuntur quorum \CNote{nomen}{première note} solum
    commune est, secundum nomen vero \ANote{substantiae}{seconde note}
    \ANote{ratio}{seconde note} diversa, ut animal
    \DNote{homo}{troisième note} et quod pingitur. Horum enim solum
    nomen commune est, secundum nomen vero substantiae ratio diversa;
    si enim quis assignet quid est utrique eorum quo sint animalia,
    propriam assignabit utriusque rationem.
    \stoplinenumbering

    \stopcolumns}
    \stoptext
(Fig. 20) ConTeXt - Apparat critique-Texte sur 2 colonnes
Notes de bas de pages et bibliographie
  • On peut vouloir automatiser un certain nombre de tâches (et le monde LATEX est développé dans ce but), en particulier lorsqu'il s'agit de récupérer le contenu bibliographique des notes afin de placer les titres des ouvrages (auxquels il est fait référence dans les notes) dans une section Bibliographie réservée à cet effet. Le concept est celui-ci : le titre de l'ouvrage cité en note de bas de page est repris dans la section "bibliographie". Comment procéder ?
  • En premier lieu, on utilise des buffer (tampons-mémoire) pour garder en mémoire les données bibliographiques (titre de l'ouvrage, auteur, éditeur, année, etc.). Chaque buffer est identifié par son nom (e.g. biblio); chaque ouvrage est identifié par le nom de l'auteur et l'année de publication (e.g. @LeoStrauss1952); cet item bibliographique est lui-même contenu dans une section bibliographique (e.g. hobbes). On doit donc coder les conditions dans lesquelles une référence bibliographique peut apparaître à la fois en note de bas de page et en même temps dans une section bibliographique en fin de partie ou en fin d'ouvrage (de manière à ne pas faire deux fois le même travail).

L'exemple ci-dessous requiert la connaissance de la manière dont ConTeXt MKIV gère les références bibliographiques. Cette gestion des références se fait via les mécanismes de :

\usebtxdataset[nom-base][biblio.buffer]
\usebtxdefinitions[apa]
\definebtxrendering[nom-base][apa][dataset=nom-base]
  • Nous n'entrons pas ici dans les explications concernant btx (bibliography context); nous le ferons lorsque nous aborderons le thème des références bibliographiques avec \cite[].
\startbuffer[biblio]
@book{Strauss1952,
  author ={Strauss, Leo}
  title = {The Political Philosophy of Hobbes: Its Basis and its Genesis},
  year = {1952},
  edition = {Chicago University Press},
}
\stopbuffer

\usebtxdataset[hobbes][biblio.buffer]
\usebtxdefinitions[apa]
\definebtxrendering[hobbes][apa][dataset=hobbes]

\starttext
Ce travail à la fois précis, original et clair, étudie les origines de la pensée politique de Hobbes. Celles-ci se trouvent partiellement dans l'application de la méthode physico-mathématique aux sciences morales. Cependant, la psychologie de Hobbes n'explique pas tout son système puisque une psychologie fondée sur le déterminisme n'est pas inévitablement pessimiste, comme Leibniz et, jusqu'à un certain point, Rousseau l'ont prouvé par leur propre exemple. En réalité, le pessimisme de Hobbes découle fort logiquement du fait qu'il définit l'homme comme un animal incapable de se satisfaire de l'objet qui lui est immédiatement présenté. Par conséquent, l'être humain ne peut vivre que tourmenté d'un désir infini que rien ne peut assouvir. De là, un perpétuel instinct de conquête d'une part, et, par ricochet, une perpétuelle crainte d'être tué. Ces tendances paradoxalement complémentaires et irréductibles n'ont d'autre aboutissement que d'exiger, l'une et l'autre, la tyrannie systématique\footnote{\cite[alternative=entry][hobbes::Strauss1952]}.
\startbackmatter
  \startchapter[title={Bibliographie}]
    \placelistofpublications
    \startsection[title=Philosophie politique]
      \placelistofpublications[hobbes][method=dataset]
    \stopsection
  \stopchapter
\stopbackmatter
\stoptext
  • Le résultat du code est imprimé ci-dessous en deux parties :
(Fig. 21) ConTeXt - Texte avec référence bibliographique en note et en fin de section (Part 1)
(Fig. 22) ConTeXt - Texte avec référence bibliographique en note et en fin de section (Part 2)

Configurer et utiliser un ou plusieurs jeux de polices

Configurer les polices

  • Comme ConTeXt est en perpétuelle évolution, il existe plusieurs manières de faire appel à des familles de police. Le module simplefonts étant intégré au cœur de ConTeXt, il apparaît que le plus simple consiste à ne rien configurer et à utiliser la police utilisée par le noyau ConTeXt par défaut, comme nous l'avons indiqué au chapitre 3.8. Le module intégré simplefonts est assez souple pour répondre aux besoins généraux en matière de polices.
  • À noter que de même que le module simplefonts est intégré au noyau ConTeXt, la commande \setmainfont n'a plus cours. Comme on va le voir dans le paragraphe suivant, c'est avec une commande du type \definefontfamily [myfamily] [serif] [DejaVu] (ainsi qu'une syntaxe identique pour régler la police 'sans', 'mono' et 'math', que l'on accède aux différents paramètrages des polices. De la sorte, pour utiliser la police de votre choix, on fera suivre \definefontfamily [myfamily] [serif] [DejaVu] de la commande \setupbodyfont [myfamily]. Il faut noter que pour les polices monospace, on peut obtenir un rendu avec des ligatures non-désirées avec \type. Afin d'éviter cela, la clé [features] doit être désactivée, ce qui donne : \definefontfamily [myfamily] [mono] [TeX Gyre Cursor] [features=none].

On peut ainsi vouloir utiliser une famille de police particulière et même changer au sein du même document, de corps de police. C'est possible en ayant recours à une commande qui définit la famille que nous voulons utiliser, suivie de la commande précisant le corps de police, ce qui donne dans un premier temps, par exemple, le jeu de commande que voici (ici sous système Linux, avec les polices installées sur le système) :

\definefontfamily [linux] [serif] [Linux Libertine O]
\setupbodyfont[Linux Libertine 0]
  • Note: Pour des exemples, vous pouvez aller lire le fichier font-sel.mkvi dans le dossier ConTeXt, fichier qui se trouve dans /home/utilisateur/context/tex/texmf-context/tex/context/base/mkiv (sous Linux).
  • Comment puis-je connaître le nom des polices installées ?

D'abord, peut-être souhaitez-vous installer des polices de votre choix, si cela n'a pas déjà été fait (vous trouverez sur Internet, via un moteur de recherche, quantité de polices : veillez cependant à la licence et au type de police que vous installez -- True Type, OTF, etc.). Sous Windows, il suffit de télécharger la ou les polices, puis de double-cliquer sur le fichier pour procéder à une installation automatique. Sous système Linux/UNIX vous pouvez utiliser le répertoire $HOME/.fonts pour un usage personnel ou bien /usr/local/share/fonts pour un usage en réseau. Vous devez faire pointer la variable d'environnement OSFONTDIR vers le répertoire où se trouvent les polices :

export OSFONTDIR="/usr/local/share/fonts;$HOME/.fonts".

Ensuite, sous Windows, comme sous Linux, il faudra exécuter la commande suivante, afin de recharger la base de donnée des polices : mtxrun --script fonts --reload

Vous pouvez alors interroger la base, afin de lister les polices installées :

  1. mtxrun --script fonts --list --all
  2. Dans la liste qui s'affiche, on choisira la police qui convient à la tâche que l'on s'est assigné, via la commande (par exemple) :

mtxrun --script fonts --list --pattern=deli* --all

  • La commande qui liste les polices renvoie quelque chose qui ressemble aux trois colonnes ci-dessous :
  • ams
  • amsbold
  • amsmedium
  • antpoltbold
  • antpoltbolditalic
  • antpoltcondbold
  • antpoltcondbolditalic
  • antpoltconditalic
  • antpoltcondregular
  • antpoltexpdbold


  • wncysc10
  • wncyb10
  • wncysc10
  • antpoltbold
  • antpoltbolditalic
  • antpoltcondbold
  • antpoltcondbolditalic
  • antpoltconditalic
  • antpoltcondregular
  • antpoltexpdbold


  • wncysc10.afm
  • wncyb10.afm
  • wncysc10.afm
  • antpolt-bold.otf
  • antpolt-bolditalic.otf
  • antpoltcond-bold.otf
  • antpoltcond-bolditalic.otf
  • antpoltcond-italic.otf
  • antpoltcond-regular.otf
  • antpoltexpd-bold.otf
  • On remarque ici que la commande produit une liste sur 3 colonnes. la deuxième colonne donne le nom normalisé de la police en bas de casse et la troisième colonne le nom du fichier. Si vous cherchez une police particulière (ici la police Delicious), vous pouvez utiliser la commande grep (sous Linux); ou bien la commande suivante mtxrun --script fonts --list --pattern=deli* --all, ce qui affiche ceci :
  • delicious
  • deliciousbold
  • deliciousbolditalic
  • deliciousheavy
  • deliciousitalic
  • deliciousmedium
  • deliciousnormal
  • deliciousregular
  • deliciousroman
  • delicioussmallcaps
  • deliciousbold
  • deliciousbold
  • deliciousbolditalic
  • deliciousheavy
  • deliciousitalic
  • deliciousitalic
  • deliciousroman
  • deliciousheavy
  • deliciousroman
  • delicious smallcaps
  • Delicious-Bold.otf
  • Delicious-Bold.otf
  • Delicious-BoldItalic.otf
  • Delicious-Heavy.otf
  • Delicious-Italic.otf
  • Delicious-Italic.otf
  • Delicious-Roman.otf
  • Delicious-Heavy.otf
  • Delicious-Roman.otf
  • Delicious-SmallCaps.otf
Recharger la base des polices

À l'évidence, vous avez installé une ou plusieurs polices sur votre système (qu'il s'agisse de Windows ou de Linux, ou d'OS X), mais elle semble inopérante lorsque vous lancez la compilation d'un fichier *.tex avec ConTeXt, ou avec TeXWorks. La solution consiste à vérifier d'abord que vous avez bien réglé la configuration par la commande (sous Linux) export OSFONTDIR=~/.fonts:/usr/share/[...] et la commande (sous Windows) : set OSFONTDIR=c:/windows/fonts/ et ensuite à réinitialiser la base des polices. Sous Linux, la réinitialisation de la base se fait avec la commande : fc-cache -v -f;

  • Sous tous les systèmes, on peut recharger ensuite la base des polices via la commande :

mtxrun --script fonts --reload.


Comment sélectionner une police ?

Comme on peut le supposer, si vous avez pris connaissance des commandes qui permettent de définir une famille de police, la commande analogue sera employée pour choisir une des polices possible dans la famille (à condition bien sûr, que cette police dispose bien des qualités que vous lui prêtez). La commande sera (pour une police Delicious en Roman) : \definefont [delicious] [name:deliciousroman]; la clé [name:deliciousroman] fait référence à la deuxième colonne de la liste ci-dessus, mais on peut aussi utiliser le nom du fichier (ici Delicious-Roman).

Vous pouvez tester avec le script suivant :

\definefont [delicious] [name:deliciousroman]
\starttext
\start
\delicious
% On insère un texte factice
\input knuth
\stop
\input knuth
\stoptext
  • Pour un peu plus de détails sur l'installation et la mise en œuvre des polices, voir la page Fonts in Luatex, sur ConTeXt Garden (en).

Définir une police et changer de police dans un même document

  • Nous désirons changer de graisse et de corps de police dans un même document. Faisons appel à trois familles de police installées sur le système, Deja Vu, Office, Linux, que nous allons trouver en serif, sans, mono et math (serif=roman, ce qui donne Times New Roman dans la famille Office, Arial pour sans, Courier pour mono et TeX Gyre pour math, toujours pour la famille Office). Notre test ici consiste à afficher du texte et des chiffres en faisant varier les possibilités d'affichage. Nous définissons les familles de police que nous désirons utiliser avec une commande du type \definefontfamily [famille] [graisse] [police] (par exemple, pour utiliser la police Times New Roman, la commande sera : \definefontfamily [office] [serif] [Times New Roman]. Nous ajoutons la commande \setupbodyfont qui, comme son nom l'indique, sert à spécifier la famille de police principale du document (dans le script ci-dessous, il s'agit de la famille Deja Vu). Lorsque nous avons besoin d'une autre famille de police, il suffit de switcher (i.e. en bon français, de substituer une police à une autre), avec la commande \switchtobodyfont[office]. Regardez ce que donne le script suivant :
\definefontfamily [dejavu] [serif] [DejaVu Serif]
\definefontfamily [dejavu] [sans]  [DejaVu Sans]
\definefontfamily [dejavu] [mono]  [DejaVu Sans Mono]
\definefontfamily [dejavu] [math]  [XITS Math] [scale=1.1]

\definefontfamily [office] [serif] [Times New Roman]
\definefontfamily [office] [sans]  [Arial] [scale=0.9]
\definefontfamily [office] [mono]  [Courier]
\definefontfamily [office] [math]  [TeX Gyre Termes Math]

\definefontfamily [linux] [serif] [Linux Libertine O]
\definefontfamily [linux] [sans]  [Linux Biolinum O]
\definefontfamily [linux] [mono]  [Latin Modern Mono]
\definefontfamily [linux] [math]  [TeX Gyre Pagella Math] [scale=0.9]

\setupbodyfont[dejavu]

\starttext

\rm Texte en Deja Vu Serif \ss Texte en Sans Serif  \tt Texte en Mono \m{1+2=3}

\switchtobodyfont[office]

\rm Texte Office en Serif 123 ( Times New Roman) \ss Texte Sans Serif (Arial) \tt Texte Office en Mono (Courier) \m{1+2=3}

\switchtobodyfont[linux]

\rm Texte Linux en Serif Linux Libertine 123 \ss Texte en Linux Biolinum Sans \tt Texte en Latin Modern Mono \m{1+2=3}

\stoptext

Changement de langue dans un même document

Grec ancien, cyrillique, allemand ...
  • Lorsqu'un document contient différentes langues et que la prise en charge globale de la langue par le système ne permet pas d'afficher tous les caractères d'une langue autre que celle qui est la langue principale du document (problème rencontré avec les langues non-latines, comme le cyrillique ou le grec ancien), on doit momentanément faire appel à une police qui permet d'afficher les caractères en usage dans cette langue.

Cette procédure de recours à une autre police peut être configurée au moyen de la commande \definefallbackfamily qui prend le même argument que la commande \definefontfamily.

Ce jeu de commandes est appelé pour afficher différentes langues dans le même document. Dans l'exemple suivant, nous désirons afficher une suite de textes en français, en allemand, en russe et en grec ancien. Il s'agit donc de faire coexister ces langues. Ici, le texte est brut, car il s'agit ici de ne pas encombrer le code avec des commandes de mise en page. On se borne donc à montrer comment le mécanisme d'affichage produit l'effet escompté, indépendamment des exigences de mise en page (paragraphes séparés, notes de bas de page, etc.). Nous avons besoin d'un alphabet cyrillique et d'un alphabet grec ancien (muni des signes diacritiques que sont les accents et les esprits), mais aussi d'une police qui respecte les signes diacritiques de l'allemand (comme les umlaut). On commence par définir la famille de police que l'on veut utiliser en russe, ce qui donne ceci : \definefallbackfamily [mainface] [serif] [DejaVu Serif] [range=cyrillic]. Et pour afficher du grec ancien :\definefallbackfamily [mainface] [serif] [DejaVu Serif] [range={greekandcoptic, greekextended}, force=yes, rscale=auto]; on définit la police principale par la commande \definefontfamily [mainface] [serif] [TeX Gyre Pagella], suivie de \setupbodyfont[mainface]. Reste à stipuler les langues, ce que nous faisons par \setuplanguage[fr][patterns={fr,de,ru,gr}]. On pourrait se contenter de \setuplanguage[en][patterns={us,de,ru}] pour du texte en anglais, allemand, russe. Notez que, puisqu'il s'agit dans le cas présent de changer de langue et non pas de police, la commande \switchbodyfont est ici inutile. Notre fichier source sera donc codé de la manière suivante :

\definefallbackfamily [mainface] [serif] [DejaVu Serif] [range=cyrillic] 
\definefallbackfamily [mainface] [serif] [DejaVu Serif] [range={greekandcoptic, greekextended}, force=yes, rscale=auto]

\definefontfamily [mainface] [serif] [TeX Gyre Pagella]
\setupbodyfont[mainface]

\setuplanguage[fr][patterns={fr,de,ru,gr}]

\starttext
Voyons ce qu'écrit Descartes dans la seconde Méditation Métaphysique :

\quotation{Je suppose donc que toutes les choses que je vois sont fausses; je me persuade que rien n'a jamais été de tout ce que ma mémoire remplie de mensonges me représente; je pense n'avoir aucun sens; je crois que le corps, la figure, l'étendue, le mouvement et le lieu ne sont que des fictions de mon esprit. Qu'est-ce donc qui pourra être estimé véritable ? Peut-être rien autre chose, sinon qu'il n'y a rien au monde de certain}.

F. Nietzsche semble avoir repéré une difficulté concernant l'usage général de la notion de vertu :

\quotation{Ach, wie übel ihnen das Wort »Tugend« aus dem Munde läuft! Und wenn sie sagen: »ich bin gerecht,« so klingt es immer gleich wie: »ich bin gerächt!«}


Une phrase en russe :
Традиционная систематика лишайников оказывается во многом условна и


Écoutons ce que dit Platon dans son Apologie de Socrate :
\quotation{Ὅτι μὲν ὑμεῖς, ὦ ἄνδρες Ἀθηναῖοι, 
πεπόνθατε ὑπὸ τῶν ἐμῶν κατηγόρων, 
οὐκ οἶδα· ἐγὼ δ' οὖν καὶ αὐτὸς ὑπ' 
αὐτῶν ὀλίγου ἐμαυτοῦ ἐπελαθόμην, 
οὕτω πιθανῶς ἔλεγον}.

\stoptext

Ce qui devrait afficher le rendu suivant (la figure est au format *.svg, qui n'incorpore pas toutes les lettres du fichier de sortie PDF, ici quelques "i"):

(Fig. 10b) ConTeXt - Exemple de page en français, allemand, russe et grec ancien
Langues asiatiques
  • Pour l'affichage de langues asiatiques CJK (Chinois-Japonais-Coréen), la procédure est la même que ci-dessus; il faut seulement veiller à utiliser la police qui correspond et qui est présente sur votre système. Dans l'exemple donné ci-dessous, on peut utiliser MS Mincho (sous Microsoft Windows), ou son équivalent sous Linux (ipaexmincho), ce qui donne le code suivant :
\definefallbackfamily [mainface] [rm] [ipaexmincho] [range=cjkunifiedideographs]
\definefontfamily     [mainface] [rm] [Latin Modern Roman]

\setupbodyfont[mainface]

\starttext
People’s Republic of China (中华人民共和国)
\stoptext

Insérer une figure ou une image

Références bibliographiques, table des matières

Bibliographie

Avant de passer à la composition d'un ouvrage très complexe, il nous faut passer en revue ce dont nous avons besoin, ce que nous savons mettre en œuvre et ce que nous n'avons pas vu, sans tomber dans le cas rare et spécialisé. Il nous reste à produire un exemple de fichier un peu long, avec des parties, des sections, des sous-sections, des notes, des citations, des références, une bibliographie et une table des matières. En attendant de procéder à l'élaboration d'un tel document, il nous reste à maîtriser les références bibliographiques. Pour de plus amples détails, on peut aller consulter en ligne le dossier élaboré par Hans Hagen et Alan Braslau.

Ci-dessous, un exemple d'aperçu général des principe d'usage d'une base de données bibliographique avec ConTeXt.

\usebtxdataset[mkiv-publications.bib]% Définition de la base de données bibliographique
\starttext % Commande bien connue à partir de laquelle on tape du texte
\startbodymatter % Comme son nom l'indique, on entre ici le texte principal (chapitres, sections, sous-sections, etc.)
Au milieu du texte, on peut rédiger une citation avec la commande \cite[article,book]; et même donner une référence bibliographique avec la commande 'footnote', comme ceci\footnote{\cite[alternative=entry][philosophie::Strauss1935]}. Mais au préalable, il faudra avoir défini une base de données bibliographiques; et si on le désire, avoir défini la catégorie dans laquelle ranger nos références.
\stopbodymatter % Le corps du texte principal prend fin ici
\startbackmatter % Commencent ici tout ce qui concerne la bibliographie, mais aussi les index, etc.
\startchapter[title=Bibliographie] % La bibliographie aussi peut être subdivisée en chapitres
\placelistofpublications % comme son nom l'indique
\stopchapter
\stopbackmatter
\stoptext
Bibliographie simple
  • De manière générale, le fichier source doit être construit toujours en gardant à l'esprit que notre bibliographie n'est pas une liste quelconque de livres et de documents divers, mais qu'elle vient en fin d'un ouvrage, d'un chapitre ou d'une thèse. On dispose donc d'un préambule et de quelques commandes pour configurer la bibliographie comme dans l'exemple suivant (que vous pouvez copier et tester). On dispose donc le préambule qui permet de régler la configuration de la page, le texte lui-même (par la commande startbodymatter qu'on peut utiliser ou pas), puis on indique à quel endroit du texte on veut placer la biographie, via les commandes suivantes :
\startbackmatter % Commencent ici tout ce qui est Bibliographie etc.
\startchapter[title=Bibliographie] % La bibliographie aussi peut être subdivisée en chapitres
\placelistofpublications % comme son nom l'indique
\stopchapter
\stopbackmatter
  • Ci-dessous le préambule de notre fichier test :
% Configuration du texte sur une page double
\setuplanguage[fr][patterns={fr}]% On règle le fichier sur la langue française
\mainlanguage[fr]
\setcharacterspacing[frenchpunctuation]% Commande utile afin de bien marquer les césures au bon endroit
\setupbodyfontenvironment[default][em=italic]% On régle les italiques
\setuppagenumbering[alternative=doublesided, location={header, inmargin}]%  chaque chapitre commence sur une page paire; la pagination est en marge dans l'en-tête
\definefontfamily[mainface] [serif] [GFS Didot] % On désire employer ici la police GFS Didot
\setupbodyfont[mainface]
\setupindenting[1.5em]% L'indentation est de 1,5em
\setupindenting[yes]

% Voici maintenant les commandes de configuration de la bibliographie :
\usebtxdataset [Mybiblio.bib] % On fait appel à un fichier externe qui s'appelle Mybiblio.bib
\usebtxdefinitions [apa] % Le style est celui de l'American Psychological Association
\setupbtxrendering [default]  [numbering=yes] % Le "rendu" de la bibliographie est par défaut et trié

% On peut rédiger maintenant notre texte :
\starttext
\chapter{Introduction}
\section{Comment construire une bibliographie ?}
Pour construire une bibliographie, il faut disposer d'un texte à partir duquel on va citer des ressources bibliographiques (en général via la commande code>\cite</code>) et d'un fichier de références bibliographiques au format BibTeX constitué avec un logiciel comme JabRef. Le fichier doit se trouver dans le même répertoire que le fichier-source.
\section{Mise en œuvre}
Lorsqu'on écrit son texte, on doit pouvoir citer les références entre accolades après la commande <code>cite</code>, comme ceci <code>\cite{dupont_1983}</code>. Le texte imprimé sera de la forme suivante : (<code>Dupont, 1983</code>) qui est un renvoi vers la référence complète, donnée ainsi :

Dupont (1983), ''Origines et Techniques de l'usage de l'arbalète au XIVe siècle''. Paris, France : Éditions Funestes.

% On va indiquer à ConTeXT où placer la bibliographie (à la fin d'un chapitre, etc.) par la commande <code>\placelistofpublications</code>
\startchapter[title={Références bibliographiques}]
{\em Ces références donnent la bibliographie par ordre alphabétique. Le nom de l'auteur est suivi par la date d'édition de l'ouvrage, le nom des traducteurs s'il y a lieu et le nom de la maison d'édition et la date de parution.
\placelistofpublications[criterium=all]
\stopchapter
\stoptext
Notes en bas de page et bibliographie
  • La commande buffer
  • Maintenant, exerçons-nous sur un cas concret. Nous désirons dans ce cas précis que nos références bibliographiques données en notes de bas de pages soient automatiquement sélectionnées et triées dans une bibliographie imprimée en fin d'ouvrage. Cette bibliographie pourra comporter plusieurs sections ou chapitres. Nous allons pour ce faire utiliser un moyen très puissant que permet ConTeXt, qui est la commande buffer; cette commande permet de mettre en mémoire-tampon à peu de choses près tout ce qu'on veut (du texte que l'on doit souvent utiliser, ou bien lorsqu'on fait des tests avec ConTeXt, du texte que l'on ne veut pas ressaisir au clavier à chaque fois qu'on en a besoin). Ici, ce qui nous intéresse, c'est une bibliographie. Elle peut être saisie dans un fichier à part, à la manière de BibTeX (mais ConTeXt n'utilise plus BibTeX), ou dans un fichier texte. Cependant, il nous faut respecter un certain nombre de conventions d'écriture, ou de style. Le style le plus communément adopté pour les conventions bibliographiques est le style APA (American Pstchological Association). Nous verrons plus bas comment on y a recours. À noter qu'il peut paraître utile de confectionner une ou plusieurs bases de données avec un outil comme JabRef, utilisable avec Windows, Linux et MacOSX, conjointement et en parallèle avec Zotero, précieux outil pour constituer en ligne sa base de données bibliographiques. Ci-dessous, voici un exemple de déclaration d'un ouvrage :
@book{Strauss1935,
author ={Strauss, Leo}
translator = {Fred Bauman},
title:de = {\de Philosophie und Gesetz. Beiträge zum verständnis Maimunis und sein Verläufer},
title = {Philosophy and Law: Essays Toward the Understanding of Maimonides And His Predecessors},
originalyear = {1935},
originalpublisher = {Schocken Verlag}
year = {1987},
publisher = {Jewish Publication Society},
address = {Philadelphia},
}

ou encore, la référence à un ouvrage sur la Querelle des Anciens et des Modernes, exemple dans lequel on voit comment procéder avec une référence qui contient plusieurs auteurs et éditeurs :

@Book{fumaroli_querelle_2001,
 Title                    = {La querelle des {Anciens} et des {Modernes}: {XVIIe}-{XVIIIe} siècles},
 Author                   = {Fumaroli, Marc and Armogathe, Jean-Robert and Lecoq, Anne-Marie},
 Editor                   = {Lecoq, Anne-Marie},
 Publisher                = {Gallimard, DL 2001},
 Year                     = {2001},
 Address                  = {Paris, France},
 ISBN                     = {978-2-07-038752-6},
 Keywords                 = {Littérature -- 17e siècle -- Histoire et critique, Littérature -- 18e siècle -- Histoire et critique, Querelle des Anciens et des Modernes -- Anthologies},
 Language                 = {français},
 Shorttitle               = {La querelle des {Anciens} et des {Modernes}}
}
  • Dans notre fichier, on peut ajouter autant de références que l'on désire, les livres étant appelés par @book, les articles, par @article, etc. Dans l'exemple pris ici, on donne le nom de l'auteur, le titre de l'ouvrage, l'année de parution, etc. Les données peuvent contenir tout ce dont on a besoin pour donner des références précises, comme la ville, le nom de l'éditeur, la page, la collection, le volume, etc. On trouvera l'ensemble des possibilités offertes dans le fichier PDF sur les références dans \BiBTeX avec apacite qui se trouve sur la page de TeX Archive.

Toutes les références doivent être marquées par @book et sont suivies des noms et prénoms, commencent par une accolade ouvrante et se terminent par une accolade fermante. Notre base va s'appeler biblio, mais pourrait tout aussi bien porter un titre plus précis, comme bibliographie_spinoza, ou tout autre titre. Évidemment, la grande difficulté, pour ceux qui ont élaboré des bibliographies substantielles, consiste à les trier pour des besoins précis, ce que des logiciels sous bibtex, comme JabRef permettent d'accomplir correctement; ce qui évite d'avoir à ressaisir plusieurs fois les mêmes références, manipulations qui sont source d'erreur. Ici, nous tablons sur le fait que la bibliographie est disponible sous la forme indiquée plus haut (peu importe l'ordre alphabétique). L'idée est de conserver cette bibliographie en mémoire pendant la compilation du fichier, grâce à la commande \startbuffer (et la commande de fermeture \stopbuffer). Il est bien entendu que les données bibliographiques sont copiées/collées entre les commandes \startbuffer et la commande \stopbuffer.

Configuration des sections de la bibliographie
  • Dans notre exemple, nous voulons aussi séparer les rubriques contenues dans la bibliographie. Nous avons une rubrique "Philosophie" et une rubrique "Politique". Il faut indiquer cela à ConTeXt; à cette fin, nous allons l'indiquer dans la définition de la base de données de la manière suivante :
\usebtxdataset[philosophie][biblio.buffer]% On déclare que la base dont le nom est "biblio" possède une clé "philosophie".
\usebtxdataset[politique][biblio.buffer]% On déclare que la base dont le nom est "biblio" possède une clé "politique".
\usebtxdefinitions[apa]% On utilise la convention de style "apa" (qui donne le nom de l'auteur en premier lieu, suivi de la date, etc.). APA=American Psychology Association.
\definebtxrendering[philosophie][apa][dataset=philosophie]% On définit le rendu en style "apa" pour la rubrique "philosophie".
\definebtxrendering[politique][apa][dataset=politique]% On définit le rendu en style "apa" pour la rubrique "politique".
\setupbtxrendering[continue =yes]% Les références sont en continu.
  • Note: Toutes nos références sont appelées par un appel de note en bas de page, c'est-à-dire par \footnote. Ici, la note de bas de page est une référence, appelée par la commande \cite, ce qui donne quelque chose comme ceci :
\footnote{\cite[alternative=entry][philosophie::Strauss1935]}
  • En résumé, on entre d'abord dans notre préambule la base de données bibliographique sous la forme d'un "buffer" (d'un tampon mémoire), on définit ensuite le comportement de nos rubriques, puis ensuite on peut entrer du texte, après la commande \starttext.

Reste maintenant à définir la manière dont nos références bibliographiques vont être imprimées. Nous désirons l'impression à la fin du texte, dans la partie backmatter. Voici ce qu'on veut définir (nous commentons les commandes):

\starttext
\startbackmatter % On indique avec cette commande l'endroit où va être imprimée la bibliographie.
\startchapter[title={Bibliographie}] % La bibliographie est un chapitre de "backmatter"
\startsection[title={Philosophie}] % Dans ce chapitre on trouve une section "Philosophie"
\placelistofpublications[philosophie][method=local]% Dans cette section, on trouve la liste des publications données en appel de notes.
\stopsection % Fin de la section
\startsection[title={Philosophie politique}] % Une nouvelle section, "Philosophie politique"
\placelistofpublications[politique][method=local] % Liste des publications
\stopsection % Fin de la section
\stopchapter % Fin du chapitre
\stopbackmatter % Fin de backmatter
\stoptext % Fin du texte
  • Passons maintenant à la pratique. J'ai choisi un ouvrage de Leo Strauss originairement publié en Allemagne en 1935, puis aux U.S.A en 1952, en traduction anglaise. Le texte ici est celui de la présentation des éditeurs. Il n'y a que 2 références bibliographiques; à vous de nourrir votre fichier de test avec d'autres références, pour étudier le comportement de votre fichier. Vous remarquerez qu'on peut indiquer à ConTeXt quelle langue il convient d'utiliser dans les titres.. De manière générale, il convient, comme dans tout fichier source construit avec ConTeXt, d'indiquer la langue principale du fichier, ici par la commande \mainlanguage[fr]
\mainlanguage[fr]
\startbuffer[biblio]
@book{Strauss1935,
author ={Strauss, Leo}
title = {Philosophie und Gesetz.},
year = {1935},
}

@book{Strauss1952,
author = {Strauss, Leo},
title = {The Political Philosophy of Hobbes : Its Basis and Its Genesis},
year = {1952},
}

\stopbuffer
 
\usebtxdataset[philosophie][biblio.buffer]
\usebtxdataset[politique][biblio.buffer]
\usebtxdefinitions[apa]
\definebtxrendering[philosophie][apa][dataset=philosophie]
\definebtxrendering[politique][apa][dataset=politique]
\setupbtxrendering[continue =yes]

\starttext
\startchapter[title={The Political Philosophy of Hobbes}]

\de “Philosophie und Gesetz” markiert den Beginn eines umwälzenden Neuverständnisses von Maimonides und seiner arabischen Vorgänger im Horizont der platonischen Politischen Philosophie. Dem Buch von 1935 sind 5 thematisch zugehörige Aufsätze beigegeben. Die "Frühen Schriften" präsentieren 30 Arbeiten aus der Zeit von 1921 1937, darunter zahlreiche in Erstpublikation. Die 2. Auflage ist u.a. um die erstmals transkribierten Marginalien in Strauss Handexemplar von "Philosophie und Gesetz" erweitert\footnote{\cite[alternative=entry][philosophie::Strauss1935]}.\blank

\en In this classic analysis, Leo Strauss pinpoints what is original and innovative in the political philosophy of Thomas Hobbes. He argues that Hobbes's ideas arose not from tradition or science but from his own deep knowledge and experience of human nature. Tracing the development of Hobbes's moral doctrine from his early writings to his major work The Leviathan, Strauss explains contradictions in the body of Hobbes's work and discovers startling connections between Hobbes and the thought of Plato, Thucydides, Aristotle, Descartes, Spinoza, and Hegel\footnote{\cite[alternative=entry][politique::Strauss1952]}.

\stopchapter
 
\starttext
\startbackmatter
\startchapter[title={Bibliographie}]
\startsection[title={Philosophie}]
\placelistofpublications[philosophie][method=local]
\stopsection
\startsection[title={Philosophie politique}]
\placelistofpublications[politique][method=local]
\stopsection
\stopchapter
\stopbackmatter

\stoptext
ConTeXt : Référence en bas de page reprise en fin de document-Page1
ConTeXt : Référence en bas de page reprise en fin de document-Page 2

Styles des têtes de chapitre et de la table des matières (TOC)

On peut désirer l'homogénéisation du style des têtes de chapitres, de la bibliographie, des index, etc. Par exemple, ici, nous voulons que tous ces titres soient encadrés d'une ligne au-dessus et d'une ligne au-dessous. De fait, il s'agit de placer du texte dans une boîte dont on aurait gommé les côtés gauche et droit. Voici une manière de faire, proposée par Pablo Rodriguez (juillet 2017). Vous pouvez tester ce code en lui donnant un autre contenu. Je ne donne pas d'image de ce que le code produit, car le résultat court sur 4 pages :

\setupinteraction[state=start]

\define[2]\MyChapter{\framed[frame=off,bottomframe=on,topframe=on]
        {\vbox{\headtext{chapter} #1\blank[small]#2}}}

\setuphead[chapter][command=\MyChapter,
style={\switchtobodyfont[24pt,ss]}, header=empty, page=mychapterpagebreak]

\startsectionblockenvironment[bodypart]
    \setupheadtext[chapter=Chapitre]
\stopsectionblockenvironment

\startsectionblockenvironment[appendix]
    \setupheadtext[chapter=Appendice]
\stopsectionblockenvironment

\starttext
\startfrontmatter
\chapter{Table des Matières}\placecontent
\stopfrontmatter

\startbodymatter
\startchapter[title=Introduction à la philosophie]
\stopbodymatter

\startappendices
\chapter{Index des Noms}
\stopappendices

\startbackmatter
\chapter{Bibliographie}
\stopbackmatter

\stoptext
Utilisation d'un fichier bibliographique de type *.bib

Même si l'usage d'un buffer peut s'avérer intéressant, s'agissant de trouver les modalités pratiques les plus efficientes, il se peut qu'on puisse trouver préférable l'usage d'un fichier externe (et non pas d'un fichier en mémoire tampon comme buffer). C'est vrai pour les gros ouvrages, en particulier les thèses dans les sciences humaines, où les références bibliographiques et les notes peuvent occuper une place importante, sinon très importante. Afin de ne pas surcharger le fichier source, il est préférable de faire appel à un fichier bibliographique externe. ConTeXt prend en charge les fichiers de type bibtex (les fichiers *.bib). Il suffit alors de se constituer un tel fichier (ou plusieurs) et de l'enregistrer dans le même répertoire que le fichier *.tex sur lequel vous travaillez. Une manière commode (en particulier sous Microsoft Windows)est d'utiliser JabRef en parallèle à Zotero (qui est un module de Mozilla Firefox). Il n'y a pas grand chose qui change, concernant le code de cet appel à un fichier *.bib. De la même manière que précédemment, on peut ventiler sa bibliographie en plusieurs sections différentes (par exemple, pour une thèse, les ouvrages qui constituent la source principale sur laquelle on a travaillé, et les références bibliographiques secondaires, anciennes ou plus récentes). Dans le préambule cela donnera quelque chose comme ceci :

\usebtxdataset[descartes][bibliodescartes.bib]
\usebtxdataset[critique][bibliodescartes.bib]
\usebtxdefinitions[apa]
\definebtxrendering[descartes][apa][dataset=descartes]
\definebtxrendering[critique][apa][dataset=critique]
\setupbtxrendering[continue =yes]
  • Notez que le même fichier source (ici : bibliodescartes.bib) peut contenir toutes les références que l'on souhaite utiliser. Cependant, la ventilation sera assurée par la commande \definebtxrendering et le rendu imprimé par la commande ici \placelistofpublications[descartes][method=local]. Voir la section précédente en ce qui concerne la manière de ventiler les sections bibliographiques.

Le cahier d'exercices

Numérotation suivie des sections et des exercices

Il peut arriver que nous souhaitions imprimer un cahier d'exercices. La structure d'un tel cahier est répétitive : chapitres et sections contenant les exercices. Il est important que la pagination et le sectionnement soient formellement bien structurés. Nous ne nous intéressons pas ici au contenu des exercices (ce qui ferait entrée cette section dans le chapitre "documents complexes" !), mais bien à la structure en chapitre, avec une numérotation des chapitres et des exercices à l'intérieur des sections. L'exemple donné ici apparaît assez simple, mais il faut le tester avec une variété réelle d'exercices pour comprendre comment jouer avec les paramètres. Dans l'exemple ci-dessous, on a utilisé la commande \input ward pour injecter du texte automatique à la place d'exercices variés. Le fichier produit 10 pages, contenant 5 chapitres, chaque chapitre contenant 3 sections de 3 exercices chacun. Chaque section est numérotée en continu (exemple : 2.1 pour la section 1 du chapitre 2), avec une numérotation simple (exercice 1, exercice 2, exercice 3) pour les exercices.

\defineenumeration[exercise][text=Exercice ]
\setupenumeration [exercise][way=bysection]

\starttext

\dorecurse{5}
{\expanded{\chapter{Chapitre \recurselevel}}
\dorecurse{3}
{\expanded{\section{Section \recurselevel}}
\dorecurse{3}
{\startexercise
Veuillez choisir un des trois (3) exercices suivants :
\input ward
\stopexercise}}}

\stoptext

ConTeXt et XML : un aperçu rapide

Puisque nous avons vu ci-dessus comment on pouvait utiliser un buffer pour mettre en mémoire des données bibliographiques, nous allons voir comment utiliser cette facilité avec une mise en forme XML, en vue de disposer d'une base de données de contacts pour un éventuel publipostage. Rédiger la même lettre à des correspondants différents, qui ont nécessairement des adresses différentes s'avère assez fastidieux, surtout s'il s'agit de donner des informations régulièrement et de manière formelle. Vous pourrez vous entraîner avec le fichier donné ci-dessous. Ce fichier peut encore être amélioré, bien entendu.

\startbuffer[participants]
<contacts>
  <contact class='participant' label='Dupont'>
    <formalname>Dupont</formalname>
    <informalname>André</informalname>
    <prefix>M.</prefix>
    <initials>A.</initials>
    <city>Vierzon</city>
    <address>
      <p>M. A. Dupond</p>
      <p>15, rue Édouard Vaillant</p>
      <p>18100 Vierzon</p>
    </address>
    <kix>18100</kix>
  </contact>
  <contact class='participant' label='Durand'>
    <formalname>Durand</formalname>
    <informalname>Pierre</informalname>
    <initials>P.</initials>
    <prefix>M.</prefix>
    <city>Sancoins</city>
    <address>
     <p>M. P. Durand</p>
     <p>10, avenue de la République</p>
     <p>18600 Sancoins</p>
    </address>
    <kix>18340</kix>
  </contact>
</contacts>
\stopbuffer

\startxmlsetups xml:setups
\xmlsetsetup{#1}{contacts|contact|formalname|informalname|prefix|initials|address|city|text|kix|p}{xml:*}
\stopxmlsetups

\xmlregistersetup{xml:setups}

\startxmlsetups xml:contacts
        \xmlflush{#1}
\stopxmlsetups

\startxmlsetups xml:p
        \xmlflush{#1}\par
\stopxmlsetups

\startxmlsetups xml:contact
        \xmltext{#1}{/address}
        \blank [3*line]
        Objet: vos vacances à \xmltext{#1}{/city}
        \blank [2*line]
        Cher \xmltext{#1}{/prefix} \xmltext{#1}{/formalname},
        \blank [line]
      %  \input knuth \relax
      Nous tenons par la présente à vous féliciter d'avoir choisi notre commune pour y installer votre villégiature. N'oubliez pas de vous rendre au syndicat d'initiative pour tout complément d'information. Profitez de vos vacances pour faire le plein d'énergie et découvrir les trésors cachés de notre commune. Vous pourrez aussi flâner su notre marché où vous trouverez les produits de notre terroir.
		\blank [line]
        Recevez, chère Madame, cher Monsieur, l'expression de sentiments distingués,
        \blank [line]
        Madeleine Michu, Syndicat d'Initiative
        \page
\stopxmlsetups

\setuppagenumbering [state=stop]

\starttext
\xmlprocessbuffer{main}{participants}{}
\stoptext
  • Un autre exemple : utiliser XML pour rédiger de la documentation (avec des parties colorées).
\startbuffer[demo]
    <doc>
    <p>I can use colored code blocks:</p>
    <div class="sourceCode"><pre class="sourceCode tex"><code
class="sourceCode latex"><span class="fu">\starttext</span>
    <span class="fu">\ConTeXt\ </span>is awesome!
    <span class="fu">\stoptext</span></code></pre></div>
    <p>But I’m afraid I cannot use <code class="sourceCode latex"><span
class="fu">\xmlprettyprinttext</span></code> inline.</p>
    </doc>
    \stopbuffer

    \startxmlsetups xml:initialize
         \xmlsetsetup{#1}{doc|p|code}{xml:*}
         \xmlsetsetup{#1}{pre/code}{xml:pre:code}
    \stopxmlsetups

    \xmlregistersetup{xml:initialize}

    \startxmlsetups xml:doc
         \xmlflush{#1}
    \stopxmlsetups

    \startxmlsetups xml:p
         \startpar\xmlflush{#1}\stoppar
    \stopxmlsetups

    \startxmlsetups xml:pre:code
         \xmlprettyprinttext{#1}{tex}
    \stopxmlsetups

    \startxmlsetups xml:code
        \begingroup\xmlprettyprinttext{#1}{tex}\endgroup
    \stopxmlsetups

    \starttext

    \subject{Dealing with XML}

         \xmlprocessbuffer{main}{demo}{}

    \subject{In standard \ConTeXt}

    \setuptyping[option=TEX]
    \setuptype[option=TEX]

    I can use colored code blocks:

    \starttyping
    \starttext
    \ConTeXt\ is awesome!
    \stoptext
    \stoptyping