# ConTeXt/Comment créer un document complexe ?

* Qu'est-ce que ConTeXt ?
* Installation
* Comment créer un document simple ?
* Comment créer un document complexe ?
* Références bibliographiques
* Comment organiser les références, citations et autres index
* Quelques exemples d'organisation de la page : marges, cadres, etc.
* ConTeXt/Utiliser Metapost (MPgraphic)
* Qu'est-ce que ConTeXt ?
* Installation
* Comment créer un document simple ?
* Comment créer un document complexe ?
* Références bibliographiques
* Comment organiser les références, citations et autres index
* Quelques exemples d'organisation de la page : marges, cadres, etc.
* ConTeXt/Utiliser Metapost (MPgraphic)
[ Modifier le sommaire ]
L'exemple donné par la figure 10 ci-dessus donne déjà une idée de la puissance de ConTeXt et de la nécessité de rassembler les informations disponibles. Bien entendu, nous trouvons dans LATEX à peu près la même puissance et une quantité indéfinie de production de macros. Ici, les macros et les scripts sont en grande partie déjà écrits : il suffit de les appeler et de configurer les clés qui en permettent l'usage.

### Un exemple de document complexe

En reprenant les éléments déjà vus ci-dessus et testés avec quelques exemples, nous pouvons examiner maintenant un fichier source dans lequel peuvent coexister des éléments assez différents : du texte, des images, des équations mathématiques. Il ne s'agit encore pas ici d'un ouvrage complexe, comme un livre, dont nous gardons l'étude pour plus tard, mais d'un document dont la composition montre déjà quelques subtilités.
Ci-dessous nous présentons un exemple de fichier source d'un document relativement complexe, avec ses commentaires. Ce fichier est trompeusement intitulé "Hello World !", mais vous verrez que les choses vont un peu plus loin. Ce fichier provient du Wiki "ConTeXt Garden" et a été écrit par Sanjoy Mahajan. Le texte (commentaires et texte lui-même) est originairement en anglais, mais nous le traduisons ici pour que les commandes soient mieux comprises. Les lignes précédées par le symbole "%" sont des commentaires (qu'il est utile de placer dans votre propre fichier source; cela peut vous aider à structurer le document). Vous pouvez le copier/coller et le manipuler en faisant varier les paramètres. Nous ne donnons pas le rendu de ce document, qui fait 3 pages. Testez-le par vous-même, ou rendez-vous sur la page de "ConTeXt Garden" :

### Un document complexe : composer un livre avec ConTeXt

Voici quelques éléments ayant été employés à la composition d'un ouvrage complexe, ici un ouvrage de théorie littéraire, composé par Hans Hagen. Il possède un certain nombre d'instructions qui sont toutes commentées ici et assemblées en fonction de leur rôle dans la mise en page, qu'il s'agisse des en-têtes, de la bibliographie, des index, etc. Il ne s'agit pas pour vous de faire un simple copier/coller, mais de comprendre le rôle de chaque instruction afin d'utiliser éventuellement tout ou partie du code.
Vous pouvez tester une à une les diverses commandes, au fur et à mesure de votre progression et des besoins. Attention à la police utilisée pour l'ouvrage tel que le code donné par Hans Hagen la spécifie. Il s'agit d'une Garamond Premieum Pro. Si vous ne possédez pas cette police installée sur votre machine, vous pouvez (et vous devez) en utiliser une autre.

## Références bibliographiques
### La base de données *.bib & la commande \cite
#### Comment indiquer à ConTeXt la source de la référence

Introduire une référence dans un texte (dans la page ou dans une note de bas de page) est une chose. Désirer que cette référence soit prise en charge afin qu'elle soit inscrite dans les annexes sous la forme de backmatter, c'est-à-dire d'un chapitre qui donne tous les auteurs donnés en références et ces références elles-mêmes dans un chapitre à part, en est une autre. Comme je l'ai déjà montré ici ou là dans les pages précédentes, il existe plusieurs méthodes pour gérer les références. Une méthode qui consiste à écrire un fichier contenant toutes les références bibliographiques (compilées grâce à Zotero ou JabRef) et auquel on fait appel au fur et à mesure de la rédaction de notre texte. Une autre méthode, qui donne des résultats plus complexes, consiste à écrire les références au moyen de :
\cite[...][...]
Example : Ce code \cite[alternative=entry][littérature::Orwell1945]
donne la sortie suivante : Orwell, G. (1945) Animal Farm. London: Secken & Warburg. 92 pages.
Conditions : Deux choses doivent impérativement être agrégées. D'une part une base de données sous format *.bib, contenant les entrées bibliographiques. Cette base est contenu dans un fichier du type mabibliographie.bib. D'autre part, le préambule de votre fichier ConTeXt (monfichier.tex) doit contenir la manière dont ConTeXT va appeler ce fichier *.bib.
S'agissant de notre exemple, notre fichier monfichier.tex va utiliser le fichier de données bibliographiques mabibliographie.bib. Dans le préambule, je vais écrire la ligne suivante :
\usebtxdataset[littérature][mabibliographie.bib]
Où \usebtxdataset est la commande qui donne à ConTeXt l'ordre d'utiliser le fichier mabibliographie.bib. La mention entre crochets [littérature] est une mention interne qui indique à ConTeXt qu'on pourra ventiler les références bibliographiques dans la rubrique littérature.
Si vous souhaitez plusieurs rubriques, il faudra les indiquer dans le préambule :
Ensuite, lors de la rédaction de votre texte/essai, à vous d'indiquer à quelle rubrique appartient votre référence (littérature ancienne, moderne, médiévale, etc.). La catégorisation dépend de votre seule initiative.
Cependant, ne perdons pas de vue que la qualité des données bibliographiques dépend de la collecte à la source de ces données, soit via Mozilla Firefox et son add-on Zotero, soit via l'outil JabRef (que j'utilise), lui aussi connectable à Mozilla Firefox. JabRef et Zotero fonctionnent sous Mac OSX, Linux et Microsoft Windows, avec quelques bugs pour JabRef.Vous pouvez construire à la main vous-même les données à partir de l'ISBN. S'agissant de l'exemple du roman de George Orwell, Animal Farm, la collecte des données donne ceci (au format BibTeX) :
La clé de la citation dans votre texte sera ainsi : Orwell2008. Dans votre texte, le code sera rédigé ainsi :
\cite[alternative=entry][littérature::Orwell2008]

#### Comment ventiler les rubriques bibliographiques

Nous venons de voir ci-dessus comment indiquer à ConText où puiser les références bibliographiques en utilisant un fichier *.bib et en nommant (en donnant un titre) à notre bibliographie. Reste maintenant à faire en sorte que cette bibliographie s'imprime quelque part dans notre texte, soit à la fin du chapitre, soit à la fin du texte (avant les index et la table des matières). ConTeXt, il faut le rappeler, est un outil puissant : il va aller chercher les références bibliographiques, les classer par ordre alphabétique et les ventiler par rubriques, si elles existent et cela de manière automatique : vous n'aurez pas à le faire à la main. La seule condition consiste à rédiger un code propre (i.e. fonctionnel).
% Définition de la bibliographie
* Remarquez : la dernière ligne indique la norme bibliographique utilisée ici, celle de l'APA.
* Note : On indique maintenant dans quelles rubriques ventiler les données (le rendering dans le dataset !) :
* Note : On indique maintenant à ConTeXt que nous voulons que les données bibliographiques se suivent :
\setupbtxrendering[continue =yes] % Fin de la bibliographie
* Remarque: ConTeXt est indépendant du programme BibTeX, mais peut lire les bases de données .bib, si elles ne sont pas trop polluées par des commandes non standardisées LATEX. Ce format est le plus ancien, mais il est supporté par la plupart des programmes de gestion de bibliographie. Les autres formats supportés utilisent la même structure d'enregistrements, simplement portés dans des "langages" différents.
Example : La commande \cite[alternative=entry][littérature::Orwell1945]
donne la sortie suivante : Orwell, G. (1945) Animal Farm. London: Secken & Warburg. 92 pages.
IMPORTANT: Deux choses doivent impérativement être agrégées:
* D'une part une base de données sous format *.bib, contenant les entrées bibliographiques. Cette base est contenu dans un fichier du type mabibliographie.bib.
* D'autre part, le préambule de votre fichier ConTeXt (monfichier.tex) doit contenir la manière dont ConTeXT va appeler ce fichier *.bib.
S'agissant de notre exemple, notre fichier monfichier.tex va utiliser le fichier de données bibliographiques mabibliographie.bib. Dans le préambule, je vais écrire la ligne suivante :
\usebtxdataset[littérature][mabibliographie.bib], où \usebtxdataset est la commande qui donne à ConTeXt l'ordre d'utiliser le fichier mabibliographie.bib. La mention entre crochets [littérature] est une mention interne qui indique à ConTeXt qu'on pourra ventiler ultérieurement les références bibliographiques dans la rubrique littérature.
Si vous souhaitez plusieurs rubriques, il faudra les indiquer dans le préambule :
Ensuite, lors de la rédaction de votre texte/essai, à vous d'indiquer à quelle rubrique appartient votre référence (littérature ancienne, moderne, médiévale, etc.). La catégorisation dépend de votre seule initiative.
Cependant, ne perdons pas de vue que la qualité des données bibliographiques dépend de la collecte à la source de ces données, soit via Mozilla Firefox et son add-on Zotero, soit via l'outil JabRef (que j'utilise), lui aussi connectable à Mozilla Firefox. JabRef et Zotero fonctionnent sous Mac OSX, Linux et Microsoft Windows, avec quelques bugs pour JabRef.Vous pouvez construire à la main vous-même les données à partir de l'ISBN. S'agissant de l'exemple du roman de George Orwell, Animal Farm, la collecte des données donne ceci (au format BibTeX) :
La clé de la citation dans votre texte sera ainsi : Orwell2008. Dans votre texte, le code sera rédigé ainsi :
\cite[alternative=entry][littérature::Orwell2008]

#### Comment ventiler les rubriques bibliographiques

Nous venons de voir ci-dessus comment indiquer à ConText où puiser les références bibliographiques en utilisant un fichier *.bib et en nommant (en donnant un titre) à notre bibliographie. Reste maintenant à faire en sorte que cette bibliographie s'imprime quelque part dans notre texte, soit à la fin du chapitre, soit à la fin du texte (avant les index et la table des matières). ConTeXt, il faut le rappeler, est un outil puissant : il va aller chercher les références bibliographiques, les classer par ordre alphabétique et les ventiler par rubriques, si elles existent et cela de manière automatique : vous n'aurez pas à le faire à la main. La seule condition consiste à rédiger un code propre (i.e. fonctionnel).
% Définition de la bibliographie
* Remarque : Comme indiqué précédemment, la méthode bibliographique utilisée ici est celle de l'APA; mais ce pourrait être une autre norme de style, comme celle de Chicago.
* Note : On indique maintenant dans quelles rubriques ventiler les données (le rendering dans le dataset !) :
* Note : On indique maintenant à ConTeXt que nous voulons que les données bibliographiques se suivent :
\setupbtxrendering[continue =yes] % Fin de la bibliographie
* Remarque: ConTeXt est indépendant du programme BibTeX, mais peut lire les bases de données .bib, si elles ne sont pas trop polluées par des commandes non standardisées LATEX. Ce format est le plus ancien, mais il est supporté par la plupart des programmes de gestion de bibliographie. Les autres formats supportés utilisent la même structure d'enregistrements, simplement portés dans des "langages" différents.

#### La méthode en tampon mémoire : buffer

Explication : La méthode de mise en mémoire tampon des références bibliographiques peut être utilisée, bien qu'elle me semble fastidieuse quoique, au premier abord, elle apparaît simple. De quoi s'agit-il ?
Comme son nom l'indique, au lieu de faire référence à un fichier de type mabibliographie.bib, on demande à ConTeXt de mettre en mémoire les référence que l'on veut utiliser dans le document. Dans l'exemple suivant, on va demander à ConTeXt de mettre en mémoire tampon un tampon nommé biblio, qui ne contient ici que deux entrées (mais il peut en droit en contenir des centaines). Le préambule de notre fichier ConTeXt (pour les besoins de l'explication) est simple. Il commence par la commande :
\startbuffer
et se termine par la commande
\stopbuffer
à quoi on ajoute, comme nous l'avons vu dans la section précédente, les commandes destinées à ventiler les données bibliographiques :
* Remarque : Les commandes après le corps du texte indiquent à ConTeXt comment ventiler la bibliographie.
Voici donc ci-dessous un exemple complet à compiler qui utilise la méthode buffer :