ConTeXt/Comment créer un document complexe ?

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 modifier

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" :

% "Hello world!" document for the ConTeXt typesetting system
%
% === History ===
% 2006-12-29  Sanjoy Mahajan  <sanjoy@mit.edu>
%     * Created
% 
% Ce document est dans le domaine public (sans copyright).

\setupcolors[state=start]       % sinon on obtient du gris
\definecolor[headingcolor][r=1,b=0.4]

% pour le fichier info/catalog du document (donné par 'pdfinfo', par exemple)
\setupinteraction[state=start]  % rend les hyperliens actifs, etc.
  title={Hello world!},
  subtitle={A ConTeXt template},
  author={Sanjoy Mahajan},
  keyword={template}]

% urls utiles
\useURL[author-email][mailto:a.u.thor@somewhere.edu][][a.u.thor@somewhere.edu]
\useURL[wiki][http://wiki.contextgarden.net][][\ConTeXt\ wiki]
\useURL[sanjoy][mailto:sanjoy@mit.edu][][sanjoy@mit.edu]

% Pour le papier US; par défaut la commande est [A4][A4] (composition en A4,
% imprimée sur du papier A4)
\setuppapersize[letter][letter]
\setuplayout[topspace=0.5in, backspace=1in, header=24pt, footer=36pt,
  height=middle, width=middle]
% pour voir la structure de la page, décommentez la ligne suivante
% \showframe

% en-têtes et pieds-de-page
\setupfooter[style=\it]
\setupfootertexts[\date\hfill \ConTeXt\ template]
\setuppagenumbering[location={header,right}, style=bold]

\setupbodyfont[11pt]   % par défaut en 12pt

\setuphead[section,chapter,subject][color=headingcolor]
\setuphead[section,subject][style={\ss\bfa},
  before={\bigskip\bigskip}, after={}]
\setuphead[chapter][style={\ss\bfd}]
\setuphead[title][style={\ss\bfd},
  before={\begingroup\setupbodyfont[14.4pt]},
  after={\leftline{\ss\tfa A. U. Thor $\langle$\from[author-email]$\rangle$}
         \bigskip\bigskip\endgroup}]

\setupitemize[inbetween={}, style=bold]

% configuration de l'espace entre les paragraphes
\setupwhitespace[medium]
% commentez la ligne suivante si vous ne voulez pas de paragraphes indentés.
\setupindenting[medium, yes]

\starttext
\title{Hello, world!}
Ceci est un document "hello-world" pour illustrer quelques possibilités de \ConTeXt\. Have fun ! Vous trouverez plus d'informations sur le
\from[wiki]; le texte précédent (wiki) devrait être coloré et cliquable; en cliquant dessus, vous devriez arriver sur le wiki de \ConTeXt\.

\subject{Une liste}

Voici un exemple de liste.

\startitemize[a]     % les tags sont en bas de casse
\item premier
\item deuxième
\item troisième
\stopitemize

\subject{Maths}

Une équation peut être composée sur une ligne comme $e^{\pi i}+1=0$, ou comme une formule:
\startformula
\int_0^\infty t^4 e^{-t}\,dt = 24.
\stopformula
% n'utilisez pas les $$...$$ (l'équivalent en plain TeX)
Vous pouvez aussi obtenir des équations numérotées:
\placeformula[eq:factorial-example]\startformula
\int_0^\infty t^5 e^{-t}\,dt = 120.
\stopformula
Et vous pouvez vous y référer par leur nom. On appelle la première équation {\tt
factorial-example} et c'est l'équation \in[eq:factorial-example].

\ConTeXt\ affiche le numéro pour vous. Et comme l'interaction est active, si vous cliquez sur le numéro de l'équation, vous obtenez l'équation elle-même.

\subject{Texte avec des figures}

Maintenant, un texte avec quelques figures. La première figure est située à droite, avec le paragraphe autour d'elle. 

\placefigure[right,none]{}{\externalfigure[dummy]}
% On lui donne du texte factice avec la commande \input tufte
\input tufte

La figure suivante sera sur une ligne, comme une formule affichée:
\placefigure[here,none]{}{\externalfigure[dummy]}
\input tufte

Voici une autre référence à une équation numérotée -- equation
\in[eq:factorial-example] sur \at{page}[eq:factorial-example], ainsi vous pouvez cliquer dessus, ou sur la page de référence.

% la plupart des commandes en plain TeX fonctionnent
\vfill

\noindent 
\framed[corner=round, width=\textwidth,height=1in,
backgroundcolor=gray,background=color]
{Ce document est dans le domaine public, aussi vous pouvez l'améliorer, le partager, ou bien faire quoi que ce soit d'autre avec.  
Les suggestions sont les bienvenues.  Vous pouvez me les envoyer à
 \from[sanjoy] (Sanjoy Mahajan).}

\stoptext

Un document complexe : composer un livre avec ConTeXt modifier

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.

% En premier lieu, il faut déclarer les éléments de base : input regime (utf, acii, etc.), la police utilisée, la langue

\enableregime[utf]

\setupencoding[default=texnansi]

\setupbodyfontenvironment[default][em=italic]

% Pour la ligne suivante, on choisit la langue
\mainlanguage[fr]

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% TAILLE DU PAPIER, MARGES, MISE EN PAGE %%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Ici l'ouvrage utilise un empagement de 152mm x 228mm sur une feuille A4.
\definepapersize[theory][width=152mm,height=228mm]

\setuppapersize[theory][A4]

% Pour l'édition et la révision des épreuves, on a ajouté le numéro des lignes dans la marge; % pour une sortie papier sans marque pour le massicot, ni numérotation des lignes, il faut %commenter les deux lignes suivantes
\setupcolors[state=start]
\setuplinenumbering[color=red,style=\tt\tfxx,step=1,location=inmargin]

% configuration et métrique des marges, etc.
\setuplayout[location=middle,
             marking=off,
             topspace=1.8cm,
             backspace=1.6cm,
             height=fit,
             width=fit,
             rightmargin=2cm,
             leftmargin=2cm,
             header=1cm,
             footer=.1cm,
             setup=strict,
             grid=yes]

\def\defaultwidowpenalty{0}

\def\defaultclubpenalty{0}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% INDEX %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Ceci est un index spécial : les références "importantes" seront données avec leur numéro de % page en gras.
% Cela est appelé par la commande suivante \index[imp::]{lemotimportant}

\setupregister[index][imp][pagestyle=bold]

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% NUMÉROTATION DES PAGES %%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\setuppagenumbering[alternative=doublesided,location=]

% On fait commencer la numérotation des pages à la page 5. Vous pouvez choisir une autre page
\setuppagenumber[number=5]

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% EN-TËTES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Définitions pour les différents en-têtes. On utilise ici une division en chapitre, section et sous-section : chapter, section et subsection 
% et "title" pour les remerciements, car ils ne doivent pas être inclus dans la Table des %Matières (TOC).

% L'éditeur souhaite voir les têtes de chapitre centrés et séparés sur 2 lignes; il faut donc % indiquer cela pour ''chapter'', ''section'', ''subsection'' :

\define[2]\MyChapterCommand{\startalignment[middle]\framed[frame=off]{\vbox{\headtext{chapter} #1\blank[0*small]#2}}\stopalignment}

\setuphead[chapter][page=yes,
                   header=empty,
                   command=\MyChapterCommand,
                   style=\bfc,
                   number=yes,
                   before={\strut\blank[line]},
                   after={\blank[4*line]}]

\setupheadtext[chapter=Chapter]

\setuphead[title][page=yes,
                  header=empty,
                  style=\bfc,
                  align=middle,
                  before={\strut\blank[line]},
                  after={\blank[4*line]}]

\setuphead[section][page=no,
                    style=\tfa,
                    align=right,
                    number=no,
                    before={\blank[line]},
                    after={\blank[line]}]

\setuphead[subsection][page=no,
                    style=\it,
                    align=right,
                    number=no,
                    before={\blank[line]},
                    after={\blank[line]}]

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% BIBLIOGRAPHIE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Il s'agit d'une section très longue pour définir les références bibliographiques et le style des <code>\cite</code>
% commandes (on utilise des références numérotées).

\usemodule[bib]

\setupbibtex[database={biblio}]

\setupcite
       [num]
       [pubsep={, },
        lastpubsep={ and },
        compress=yes,
        inbetween={--},
        left={[},
        right={]}]

\setupcite
       [year]
       [pubsep={, },
        lastpubsep={ and },
        compress=yes,
        inbetween={},
        left={(},
        right={)}]

\setupcite
       [authoryears]
       [pubsep={, },
        lastpubsep={ and },
        compress=yes,
        inbetween={ },
        left={(},
        right={)}]

\setupcite
       [key,number,page,short,type,doi]
       [pubsep={, },
        lastpubsep={ and },
        compress=no,
        inbetween={ },
        left={[},
        right={]}]

\def\bracketed#1{\hbox to 20pt{\hfill [\TNum{#1}]}}

\setuppublications
            [sorttype=bbl,
             autohang=no,
             refcommand=num,
             criterium=all,
             numbering=bib,
             numbercommand=\bracketed]

\def\tasinvertedauthor#1#2#3#4#5%
    {#3%
    \bibdoif{#1}{\bibalternative{surnamesep}#1\unskip}%
    \bibdoifelse{#2}{\bibalternative{vonsep}#2\unskip}{\unskip}%
    \bibdoifelse{#5}{\bibalternative{juniorsep}#5\unskip}{\unskip}%
}

\setuppublicationlist
   [width=24pt,
    maybeyear=off,
    artauthor=\tasinvertedauthor,
    editor=\tasinvertedauthor,
    author=\tasinvertedauthor,
    namesep={, },
    lastnamesep={, and },
    finalnamesep={, and },
    firstnamesep={, },
    juniorsep={, },
    vonsep={ },
    surnamesep={, },
    authoretallimit=5,
    editoretallimit=5,
    artauthoretallimit=5,
    authoretaldisplay=5,
    editoretaldisplay=5,
    artauthoretaldisplay=5,
    authoretaltext={ et al.},
    editoretaltext={ et al.},
    artauthoretaltext={ et al.},
    distance=3pt]

 \newif\ifeditedbook
 \setuppublicationlayout[book]{%
    \insertauthors{}{: }{\inserteditors{}{, editor%
                          \ifnum\getvalue{editor@num}> 1 s\fi
                              \ \global\editedbooktrue 
                     \unskip: }{\unskip}}%
    \inserttitle{\bgroup\it }{\/\egroup}{}%
    \insertseries{ (}{)}{}%
    \insertedition{, }{\insertmonth{}{}{} edn. }{, }%
    \insertcity{}{: }{}%
    \insertpubname{}{, }{}%
    \insertpubyear{}{}{}%
    \insertnote{ [}{].}{.}%
}

 \setuppublicationlayout[article]{%
    \insertartauthors{}{: }{\insertthekey{}{ }{}}%
    \insertarttitle{\bgroup ``}{\egroup,'' }{}%
    \insertjournal{\bgroup \it}{\egroup}{\insertcrossref{in }{}{}}%
    \insertvolume{ }{}{}%
    \insertpubyear{ (}{) }{\unskip.}%
    \insertpages{}{\insertnote{ [}{].}{.}}{.}%
    \insertcomment{[}{].}{}%
 }

 \setuppublicationlayout[incollection]{%
    \insertartauthors{}{: }{\insertthekey{}{. }{}}%
    \insertarttitle{\bgroup ``}{\egroup,'' }{}%
    \insertcrossref{in }{}{}%
    \insertpages{, }{}{}%
    \insertnote{ [}{].}{.}%
 }

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% JALONS & AIDE VISUELLE %%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Durant la phase de révision et de production, on a besoin d'outils pour la recherche visuelle d'erreurs.
% Ces aides sont bien sûr marquées en commentaire lors de la dernière phase de compilation.

% \usemodule[t-crop][Mark=Camera,Info=yes] % ceci est un module écrit par Hans Hagen

% \showgrid

% \showframe

% \showsetups

% \showlayout

% \version[temporary]

% \enablemode[transdraft] % ce mode est défini plus tard


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% POLICES & TAILLES %%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% d'abord, on définit la grande taille et la petite taille

\define\NSize{11pt}
\define\SSize{9.5pt}

\starttypescript [serif] [default] [size]
\definebodyfont [\NSize,\SSize] [rm] [default]
\stoptypescript

% Mes fontes customisées sont des Garamond Premier Pro de chez Adobe. 

\usetypescriptfile[type-garmprem]
\usetypescript[AGaramondPrem] [texnansi]
\usetypescript[AGaramondPremcpsp] [texnansi]
\usetypescript[AGaramondPrempnum] [texnansi]
\setupbodyfont[MyAGaramondPrempnum,\NSize]

% cette commande permet de passer des nombres proportionnels(le corps de texte normal) aux nombres employés dans les tableaux
% (pour les tableaux, la bibliographie, etc.)

\define\PNum{\switchtobodyfont[MyAGaramondPrempnum]}
\define\TNum{\switchtobodyfont[MyAGaramondPrem]}

\setupinterlinespace[line=3.1ex]

% Il y a dans le livre quelques figures (très peu) créées en Metapost et bien sûr, il faut garder la même police.

\startMPenvironment
\usetypescriptfile[type-garmprem]
\usetypescript[AGaramondPrempnum] [texnansi]
\setupbodyfont[MyAGaramondPrempnum,11pt]
\stopMPenvironment

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% IMPRESSION POUR LA RÉVISION %%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% double espace pour la révision du manuscrit

\startmode[transdraft]
\setupinterlinespace[line=24pt]
\stopmode

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% ENVIRONNEMENT PERSONNALISÉ %%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% On utilise tikz pour une figure avec des flèches (ses flèches par défaut sont plus belles que celle de Metapost)

\usemodule[tikz]
\usetikzlibrary[arrows,snakes,backgrounds]

% le module Greek en Monotype Porson pour la police font, mise un peu à l'échelle

\usemodule[t-ancientgreek][font=GreekPorson,scale=1.03]

% on utilise un très joli symbole de la police Adobe Garamond Premier Pro pour les listes sans numéro

\definesymbol[8][{\getglyph{orn-GaramondPremrPro}{6}}]

% définitions personnalisées pour les listes non numérotées et pour celles qui le sont

\define\myitem{\setupitemize[1][atmargin][alignment=left]\startitemize[8,packed]}

\define\mynumber{\setupitemize[1][stopper={}]\startitemize[n,packed]}

% textbar ne semble pas avoir de nom dans l'encodage en texnansi

\define\textbar{\getglyph{Serif}{\char124}}

% Il y a seulement quatre u cinq tableaux, aussi il fallait les numéroter pour l'ensemble du livre

\setupcaptions[headstyle=italic,style={\switchtobodyfont[\SSize]},way=bytext,stopper=]

\setupreferencing[partnumber=no]

% Dans la table des matières (TOC), on met des numéros aux tables

\setuplist[chapter,section][pagecommand=\TNum]

% et au final, tout ce qui concerne l'indentation

\setupindenting[1.5em]
\setupindenting[yes]

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%% Code fourni par Hans Hagen %%%%%%%%%%%
%%%%% pour un ouvrage édité chez Blackwell %
%%%%% 2007 - révisé en 2011 %%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Références bibliographiques modifier

La base de données *.bib & la commande \cite modifier

Comment indiquer à ConTeXt la source de la référence modifier

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]

\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 :

\usebtxdataset[littérature][mabibliographie.bib]
\usebtxdataset[littérature ancienne][mabibliographie.bib]
\usebtxdataset[littérature médiévale][mabibliographie.bib]

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) :

  @Book{Orwell2008,
  author    = {George Orwell},
  publisher = {Penguin Books in association with Martin Secker & Warburg Ltd},
  title     = {Animal farm},
  year      = {2008},
  address   = {London},
  isbn      = {0141036133},
  note      = {Originally published: London: Martin Secker & Warburg, 1945},
  pagetotal = {94},
  ppn_gvk   = {1626769362},
  subtitle  = {A fairy story},

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 modifier

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

\usebtxdataset[littérature ancienne][mabibliographie.bib]
\usebtxdataset[littérature moderne][mabibliographie.bib]
\usebtxdataset[littérature médiévale][mabibliographie.bib]

\usebtxdefinitions[apa]
  • 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 !) :
\definebtxrendering[littérature ancienne][apa][dataset=littérature ancienne]
\definebtxrendering[littérature moderne][apa][dataset=littérature moderne]
\definebtxrendering[littérature médiévale][apa][dataset=littérature médiévale]
  • 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:

  1. 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.
  2. 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 :

\usebtxdataset[littérature][mabibliographie.bib]
\usebtxdataset[littérature ancienne][mabibliographie.bib]
\usebtxdataset[littérature médiévale][mabibliographie.bib]

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) :

@Book{Orwell2008,
  author    = {George Orwell},
  publisher = {Penguin Books in association with Martin Secker & Warburg Ltd},
  title     = {Animal farm},
  year      = {2008},
  address   = {London},
  isbn      = {0141036133},
  note      = {Originally published: London: Martin Secker & Warburg, 1945},
  pagetotal = {94},
  ppn_gvk   = {1626769362},
  subtitle  = {A fairy story},

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 modifier

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

\usebtxdataset[littérature ancienne][mabibliographie.bib]
\usebtxdataset[littérature moderne][mabibliographie.bib]
\usebtxdataset[littérature médiévale][mabibliographie.bib]
\usebtxdefinitions[apa]
  • 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 !) :
\definebtxrendering[littérature ancienne][apa][dataset=littérature ancienne]
\definebtxrendering[littérature moderne][apa][dataset=littérature moderne]
\definebtxrendering[littérature médiévale][apa][dataset=littérature médiévale]
  • 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 modifier

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 :

\usebtxdataset[philosophie ancienne][biblio.buffer]
\usebtxdefinitions[apa]
\definebtxrendering[philosophie ancienne][apa][dataset=philosophie ancienne]
\setupbtxrendering[continue =yes]
  • 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 :

\startbuffer[biblio]
@Book{cicero-tuscu2011,
  author     = {Marcus Tullius Cicéron},
  editor     = {Fohlen, G.},
  publisher  = {Les Belles Lettres},
  title      = {Tusculanes},
  year       = {2011},
  address    = {Paris},
  edition    = {7e tirage},
  isbn       = {9782251010830},
  series     = {œuvres philosophiques},
  volume     = {1},
  ppn_gvk    = {1823774121},
  subtitle   = {Marcus Tullius},
  translator = {Jules Humbert},
}

@Book{Aristote2008,
  Title                    = {Les Politiques},
  Author                   = {{Aristote}},
  Editor                   = {Pellegrin, Pierre},
  Publisher                = {Garnier-Flammarion},
  Year                     = {2008},
  Address                  = {Paris, France},
  Series                   = {Le monde de la philosophie},
  Date                     = {2008},
  ISBN                     = {978-2-08-121816-1},
  Location                 = {Paris, France},
  Pagetotal                = {xxiii+518},
  Translator               = {Pierre Pellegrin}
}

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

\starttext
\startchapter[title={Introduction à la Philosophie}]

Dans les notes qui suivent, on s’intéressera à la pensée philosophique comme philosophie politique. Aristote, le philosophe grec qui publia et commenta les Constitutions des anciennes cités grecques, commence son ouvrage {\it les Politiques} par la thèse selon laquelle \quotation {l’homme est un animal politique}\footnote{\cite[alternative=entry][philosophie ancienne::Aristote2008]}.

Cicéron, ce grand homme politique et cet écrivain savant, a eu la formule bien connue, selon laquelle \quotation{Socrate fit descendre la philosophie du ciel sur la terre.}\footnote{\cite[alternative=entry][philosophie ancienne::cicero-tuscu2011]}, qui désigne la question fondamentale de l’intérêt nourri par la philosophie pour les {\it choses humaines}.
\stopchapter

\starttext
   \startbackmatter
     \startchapter[title={Bibliographie}]
       \startsection[title={Philosophie ancienne}]
    \placelistofpublications[philosophie ancienne][method=local]

       \stopsection
     \stopchapter
   \stopbackmatter
\stoptext