% output=pdftex

\def\TitlePage#1{}

\input s-pre-19.tex

\setupcolors[state=start]

\useXMLfilter[mml,mmp,mmc]


\enableregime[il1]
\useencoding[ffr]
\mainlanguage[fr]

\TitlePage
  {Introduction à \CONTEXT\\
   Denis Roegel\\
   Journée GUTenberg\\
   29 mai 2002}

\ifx\defineplace\undefined \let\defineplace\definieerplaats \fi

\defineplace
   [centered]
   [location=middle, 
    before=\blanko,
    after=\blanko,
    linecorrection=on]

%\usetypescript[berry][ec]
\usetypescript [all] [computer-modern] [ec]
\setupbodyfont[20pt]

\def\Titre#1{\page\startalignment[middle]\framed{\tfa#1}\stopalignment}

\definetyping[smalltyping][style=\ttxx\setupinterlinespace]

\starttext
\ss

\Titre{Introduction}

\startitemize
\item On m'a demandé de faire une introduction à \CONTEXT.

\item Qu'est-ce qu'une introduction à \CONTEXT~?

% PROBLEME AVEC LES GUILLEMETS QUI SONT APPAREMMENT CHERCHÉS DANS plr0
% COMMENT LES CHERCHER AILLEURS ?

\item Ou, en d'autres termes, de quoi suis-je susceptible de parler 
aujourd'hui~?
\stopitemize

\page

Il y a plusieurs possibilités :

\startitemize[n]
\item Je peux vous présenter complètement \CONTEXT, chaque commande,
et toutes ses possibilités ;
\item je peux vous donner des aper\c cus de choses faites avec \CONTEXT,
ou faire un petit panorama ;
\item je peux vous donner quelques éléments de \CONTEXT, quelques
{\em repères} pour vous donner confiance ;
\item je peux faire une comparaison avec \LaTeX{} ou d'autres formats ;
\item etc.
\stopitemize

\Titre{Objectif de cette présentation}

\startitemize
\item Si l'on m'a demandé de faire cette présentation, c'est je pense pour 
vous permettre de tester \CONTEXT, pour vous donner les {\em moyens}
de passer à \CONTEXT.

\item Beaucoup d'entre vous ont déjà eu un aper\c cu de \CONTEXT,
au travers des présentations de Hans Hagen. Mon objectif principal
n'est donc pas de vous convaincre que c'est un système intéressant,
mais de vous montrer {\em comment vous pouvez vous y mettre}.

\item L'exposé va donc être un ensemble de repères destinés à vous mettre
en confiance et à vous donner envie et les moyens d'aller voir de plus près.

\item Ce ne sera pas un cours de \CONTEXT, ni même une introduction au sens
habituel du terme. Il faudra compléter ce document par bien d'autres
documents, mais ce document devrait permettre de débroussailler 
un peu le terrain.
\stopitemize

\Titre{Historique}

\startitemize
\item \CONTEXT{} a été développé à partir de 1990 
essentiellement par Hans Hagen.
D'autres personnes sont impliquées de nos jours, notamment Taco Hoekwater.
\item \CONTEXT{} a été développé à des fins commerciales et c'est le gagne-pain
de Hans Hagen. Ceci en assure un développement constant.
\item Moyennant quelques restrictions, \CONTEXT{} est utilisable par
n'importe qui.
\stopitemize

\Titre{Qu'est-ce que \CONTEXT~?}

\startitemize
\item \CONTEXT{} repose en grande partie sur plain \TeX{} et n'a pratiquement
pas de relations avec \LaTeX. 

\item 
\CONTEXT{} est un {\em système intégré d'outils typographiques} basés sur \TeX,
pas uniquement un format.
\stopitemize

\Titre{Quelques avantages de \CONTEXT}

\startitemize
\item système intégré, permettant une bonne coopération de différents
outils, notamment \TeX{} et \METAPOST~;
\item interface simple, homogène et extensible~;
\item très bon support pour la génération de PDF et exploitation
des fonctionnalités de \pdfTeX~;
\item possibilité de créer des documents interactifs~;
\item système pratiquement monolithique, assurant une bonne
intégration des différents composants ; presque tout ce qui
est utile est intégré dans le noyau.
\stopitemize

\Titre{Comparaison avec \LaTeX}

\startitemize
\item de nombreux {\em packages}, aux fonctionnalités
quelquefois redondantes, et incompatibles entre eux ;
\item interfaces non homogènes ; le passage de paramètre
par {\em clé} et {\em valeur} n'est utilisé que par quelques
{\em packages}, par exemple {\tt graphicx} ;
\item certaines commandes sont difficilement extensible
(par exemple \type{\section}) ;
\item il faut des {\em packages} spécialisés pour obtenir
des documents interactifs (par exemple {\tt pdfscreen}),
mais ceux-ci ne sont pas forcément facilement paramétrables,
en particulier vis-à-vis des graphiques.
\stopitemize

\Titre{Exemple}


\startitemize
\item Un exemple d'intégration entre \CONTEXT{} et \METAPOST~: ce document.

\item En exercice, faites la même chose avec votre outil préféré.
\stopitemize

\Titre{Plan de la suite}

Après cette introduction, je vais diviser mon exposé en plusieurs
parties. L'ordre choisi correspondra plus ou moins à l'apprentissage
de celui qui installe \CONTEXT{} pour la première fois. Cette présentation
est donc volontairement plus proche d'un TD que d'un cours magistral.

\startitemize[n]
\item un fichier \CONTEXT{} élémentaire et sa compilation ;
\item structure générale d'un fichier source ;
\item un exemple plus complexe, avec une inclusion graphique
      générée à la volée ;
\item examen de l'installation de \CONTEXT{} sous \TeX live ;
\item les fichiers de \CONTEXT{} ;
\item la documentation de \CONTEXT{} ;
\item examen détaillé de la flexibilité/configurabilité d'une commande ;
\item le support du fran\c cais ;
\item la gestion des polices et comparaison avec la gestion de \LaTeX{} 
         (i.e. NFSS) ;
\item retour sur \MetaFun, l'intégration de \METAPOST{} dans \CONTEXT{} ;
\item divers autres aspects.
\stopitemize

\page[yes]



\Titre{Un fichier \CONTEXT{} élémentaire}

\starttyping
 \starttext
 hello, world!
 \stoptext
\stoptyping

Sa compilation~:

\startsmalltyping
context 211 % texexec test7
 TeXExec 2.8 - ConTeXt / PRAGMA ADE 1997-2002

            executable : pdfetex
                format : cont-en
             inputfile : test7
                output : standard
             interface : en
          current mode : none
               TeX run : 1

This is pdfeTeX, Version 3.14159-14h-released-20010417-2.1 
(Web2C 7.3.3.1)
entering extended mode
(./test7.tex{/usr/share/TeX/texmf-var/pdftex/config/pdftex.cfg}

ConTeXt  ver: 2002.5.15  fmt: 2002.5.25  int: english  mes: english

language       : language en is active
system         : cont-new loaded
(/usr/share/TeX/texmf/tex/context/base/cont-new.tex
systems        : beware: some patches loaded from cont-new.tex!
system (E-TEX) : [line 839] \dimexpr 
)
system         : cont-old loaded
(/usr/share/TeX/texmf/tex/context/base/cont-old.tex
loading        : Context Old Macros
)
system         : cont-fil loaded
(/usr/share/TeX/texmf/tex/context/base/cont-fil.tex
loading        : Context File Synonyms
)
system         : cont-sys loaded
(/usr/share/TeX/texmf/tex/context/user/cont-sys.tex)
bodyfont       : 12pt rm is loaded
language       : patterns 2:2-en-2 4:2-de-2 5:2-fr-2 loaded
specials       : tex,postscript,rokicki loaded
system         : test7.top loaded
(./test7.top)
pdftex         : needs map file: original-context-symbol.map
pdftex         : needs map file: pl0-ams-cmr.map
pdftex         : needs map file: original-vogel-symbol.map
systems        : begin file test7 at line 1
[1.1]
systems        : end file test7 at line 3
 )
Output written on test7.dvi (1 page, 304 bytes).
Transcript written on test7.log.

              run time : 3 seconds
  sorting and checking : running texutil

 TeXUtil 7.3 - ConTeXt / PRAGMA ADE 1992-2000
 
                action : processing commands, lists and registers 
                option : sorting IJ under Y 
                option : converting high ASCII values 
            input file : test7.tui 
           output file : test7.tuo 
       passed commands : 7 
         remapped keys : 0 
      register entries : 0 -> 0 entries 0 references 
       synonym entries : 0 -> 0 entries 
        embedded files : 1 

 utility file analysis : another run needed
               TeX run : 2

This is pdfeTeX, Version 3.14159-14h-released-20010417-2.1 
(Web2C 7.3.3.1)
entering extended mode
(./test7.tex{/usr/share/TeX/texmf-var/pdftex/config/pdftex.cfg}

ConTeXt  ver: 2002.5.15  fmt: 2002.5.25  int: english  mes: english

language       : language en is active
system         : cont-new loaded
(/usr/share/TeX/texmf/tex/context/base/cont-new.tex
systems        : beware: some patches loaded from cont-new.tex!
system (E-TEX) : [line 839] \dimexpr 
)
system         : cont-old loaded
(/usr/share/TeX/texmf/tex/context/base/cont-old.tex
loading        : Context Old Macros
)
system         : cont-fil loaded
(/usr/share/TeX/texmf/tex/context/base/cont-fil.tex
loading        : Context File Synonyms
)
system         : cont-sys loaded
(/usr/share/TeX/texmf/tex/context/user/cont-sys.tex)
bodyfont       : 12pt rm is loaded
language       : patterns 2:2-en-2 4:2-de-2 5:2-fr-2 loaded
specials       : tex,postscript,rokicki loaded
system         : test7.top loaded
(./test7.top)
pdftex         : needs map file: original-context-symbol.map
pdftex         : needs map file: pl0-ams-cmr.map
pdftex         : needs map file: original-vogel-symbol.map
(./test7.tuo) (./test7.tuo) (./test7.tuo) 
(./test7.tuo) (./test7.tuo)
(./test7.tuo) (./test7.tuo) (./test7.tuo) 
(./test7.tuo) (./test7.tuo)
(./test7.tuo) (./test7.tuo) (./test7.tuo)
systems        : begin file test7 at line 1
[1.1]
systems        : end file test7 at line 3
 )
Output written on test7.dvi (1 page, 304 bytes).
Transcript written on test7.log.

              run time : 1 seconds
  sorting and checking : running texutil

 TeXUtil 7.3 - ConTeXt / PRAGMA ADE 1992-2000
 
                action : processing commands, lists and registers 
                option : sorting IJ under Y 
                option : converting high ASCII values 
            input file : test7.tui 
           output file : test7.tuo 
       passed commands : 7 
         remapped keys : 0 
      register entries : 0 -> 0 entries 0 references 
       synonym entries : 0 -> 0 entries 
        embedded files : 1 

        total run time : 5 seconds
context 212 % 
\stopsmalltyping


Observations :

\startitemize
\item nous avons lancé non pas \LaTeX, ni même directement \TeX,
mais un script \TEXEXEC{}, écrit en {\tt Perl} et qui se charge de la plupart
des détails de compilation, notamment :
\startitemize
\item la nécessité de compiler un fichier plusieurs fois le cas échéant ;
\item l'appel de programmes externes comme \METAPOST{} ;
\item le tri des index, des références bibliographiques, etc.
  (en fait, \TEXEXEC{} appelle \TEXUTIL{} pour cela) ;
\stopitemize
\item c'est \PDFETEX{} et non \TeX{} qui est lancé par défaut ;
de plus, \PDFETEX{} est appelé deux fois ;
\item le résultat produit est un fichier {\sc Dvi} ;
un fichier PDF peut être obtenu en ajoutant l'option 

\starttyping
--pdf
\stoptyping

à l'appel de \TEXEXEC{} ; il est aussi possible d'ajouter un commentaire
spécial au début du fichier source pour obtenir le même résultat.
\stopitemize

\Titre{Structure générale d'un fichier source}

Un certain nombre de concepts sont présents aussi bien dans
\CONTEXT{} que dans \LaTeX{} :

\startitemize
\item notion de préambule : 

ce qui précède \type{\starttext} ;
\item le corps du document (environnement {\tt document} en \LaTeX) :

  ce qui est entre \type{\starttext} et \type{\stoptext} ;
\item le préambule est le lieu des configurations globales, ces configurations
pouvant être localement modifiées ;
\item différentes commandes parsèment le texte, ces commandes étant
comme en \LaTeX{} ou bien du type \type{\commande{paramètres}} (ou des
variantes que l'on verra), ou bien des environnements faits de deux
commandes, l'une \type{\start...}, l'autre \type{\stop...} ;
\item \CONTEXT{} s'appuie sur plain \TeX, et la plupart des commandes
de plain \TeX{} sont donc disponibles ; on peut en particulier définir
des commandes avec \type{\def}.
\stopitemize

\Titre{Environnements}

\startitemize
\item Beaucoup d'environnements ont des équivalents, plus ou moins
immédiats. Par exemple, 

\starttyping
\begin{itemize}
\item ...
\end{itemize}
\stoptyping

deviendra :

\starttyping
\startitemize
\item ...
\stopitemize
\stoptyping

Dans beaucoup de cas, l'adaptation d'un fichier \LaTeX{} ne sera
pas beaucoup plus complexe que cela.

\item
Certains environnements de \CONTEXT{} regroupent --- grâce à des options ---
plusieurs environnements de \LaTeX. Par exemple, l'équivalent de
l'environnement {\tt enumerate} est obtenu ainsi :

\starttyping
\startitemize[n]
\item ...
\stopitemize
\stoptyping

La commande \type{\startitemize} re\c coit ici un paramètre correspondant
à une liste numérotée.

\item Parmi les environnements courants, celui qui demande le plus d'adaptation
est probablement celui permettant de réaliser des tableaux.
\CONTEXT{} s'appuie sur les macros {\tt TaBlE} développées par Michael Wichura
et ces macros sont proches du codage d'un tableau avec la primitive 
\type{\halign}. En particulier, les lignes verticales doivent
être positionnées explicitement.

\starttyping
\starttable[|l|c|r|]
\HL
\VL aaaa \VL b \VL c\VL\FR
\HL
\VL d \NC eeee \NC fffff\VL\MR
\HL
\VL g \VL h \VL i\VL\LR
\HL
\stoptable
\stoptyping

\placecentered{
\starttable[|l|c|r|]
\HL
\VL aaaa \VL b \VL c\VL\FR
\HL
\VL d \NC eeee \NC fffff\VL\MR
\HL
\VL g \VL h \VL i\VL\LR
\HL
\stoptable
}


\item Environnement de numérotation de lignes :

\startsmalltyping
\startlinenumbering
Voici quelques lignes de texte, qui dans l'environnement
\type{linenumbering} sont
automatiquement numérotées. 
Voici quelques lignes de texte, qui dans l'environnement
\type{linenumbering} sont
automatiquement numérotées. 
Voici quelques lignes de texte, qui dans l'environnement
\type{linenumbering} sont
automatiquement numérotées. 
\stoplinenumbering
\stopsmalltyping

{\tfxx\setupinterlinespace
\startlinenumbering
Voici quelques lignes de texte, qui dans l'environnement
\type{linenumbering} sont
automatiquement numérotées. 
Voici quelques lignes de texte, qui dans l'environnement
\type{linenumbering} sont
automatiquement numérotées. 
Voici quelques lignes de texte, qui dans l'environnement
\type{linenumbering} sont
automatiquement numérotées. 
\stoplinenumbering

}

\item etc.

\stopitemize

\Titre{Exemple avec graphique automatique}

Le fichier suivant montre comment un dessin \METAPOST{} peut être
défini au sein d'un fichier \CONTEXT{} et comment ce dessin peut être
inclus sans que l'on n'ait jamais à se préoccuper de la compilation d'un
fichier \METAPOST.

\startsmalltyping
\startMPgraphic 
fill fullcircle scaled 200pt withcolor .625red ; 
\stopMPgraphic 

\loadcurrentMPgraphic

\placeMPgraphic
\stopsmalltyping

\startMPgraphic 
fill fullcircle scaled 200pt withcolor .625red ; 
\stopMPgraphic 
\loadcurrentMPgraphic
\placeMPgraphic

\startitemize
\item Les dessins créés peuvent avoir des noms et un dessin peut
en inclure un autre, ce qui permet de les construire
incrémentalement.
\item Il est possible de distinguer entre des dessins uniques,
regénérés à chaque fois, et des dessins qui ne changent pas
d'une utilisation à l'autre.

\item Avantage de l'inclusion : le dessin peut être facilement rendu
dépendant de son environnement. C'est par exemple ce qui se passe avec
le fond de mes transparents. Ils ne sont pas dans un fichier \METAPOST,
mais intégrés dans le source du document, et ils peuvent ainsi facilement
dépendre du numéro de page.
\stopitemize

\Titre{Installation sous \TeX live}

\startitemize
\item \CONTEXT{} s'installe assez simplement. 
\item Comme \CONTEXT{} évolue beaucoup,
la version sur \TeX live doit en général être mise à jour. La version
sur \TeX live 7 comporte ainsi quelques bugs qui ont déjà été corrigés.
\item On cherchera donc sur {\tt www.pragma-ade.com} la dernière version
de \CONTEXT. Il s'agit en principe d'un fichier {\tt cont-tmf.zip}.
\item Pour installer cette archive, il faut la placer à la racine d'une
arborescence TDS et lancer {\tt unzip -a} :

\startsmalltyping
test 225 % unzip -a cont-tmf.zip 
Archive:  cont-tmf.zip
  inflating: context/config/texexec.rme
  inflating: context/perltk/runperl.zip
  inflating: context/perltk/texexec.rme
  inflating: tex/context/base/context.tex
  inflating: tex/context/base/cont-cz.tex
  inflating: tex/context/base/cont-de.tex
...
  inflating: metapost/context/mp-form.mp
  inflating: metapost/context/mp-symb.mp
  inflating: metapost/context/metafun.mp
  inflating: doc/context/base/mreadme.pdf
  inflating: doc/context/base/minstall.pdf
  inflating: fonts/tfm/hoekwater/context/contnav.tfm
  inflating: fonts/type1/hoekwater/context/contnav.pfb
  inflating: dvips/config/context.map
  inflating: pdftex/config/context/original-youngryu-px.map
  inflating: pdftex/config/context/original-youngryu-tx.map
  inflating: pdftex/config/context/il2-ams-cmr.map
  inflating: pdftex/config/context/pl0-ams-cmr.map
  inflating: pdftex/config/context/original-ams-cmr.map
  inflating: pdftex/config/context/original-ams-euler.map
  inflating: pdftex/config/context/original-adobe-euro.map
  inflating: pdftex/config/context/original-context-symbol.map
  inflating: pdftex/config/context/original-vogel-symbol.map
\stopsmalltyping

Les fichiers sont donc automatiquement mis au bon endroit.


\item L'étape suivant consiste à mettre au bon endroit les fichiers {\tt Perl}.
Ceux-ci ont été mis sous {\tt context/perltk} et doivent être
recopiés en un endroit où les exécutables sont cherchés.
Sur mon système, je les ai mis avec les autres exécutables
de \TeX. Il faut de plus faire quelques liens comme {\tt texexec}
qui doit pointer vers {\tt texexec.pl}. Tous ces points sont
détaillés dans un fichier de documentation de \CONTEXT{} appelé
{\tt minstall.pdf} et donc la lecture est recommandée à l'installation.
C'est un document très court, mais indispensable.

\item Ce même document explique comment créer un format, le plus simple
étant de taper :

\starttyping
texexec --make en
\stoptyping

\item Il est possible qu'ensuite le format doive être mis manuellement
à la bonne place, ceci dépendant des privilèges sous lesquels
la commande {\tt texexec} aura été appelée.

\item Le système contient aussi un fichier {\tt cont-sys.rme} qui doit être
renommé en {\tt cont-sys.tex} et permet de préciser certains 
comportements par défaut du système.

\item Une fois ces fichiers installés, il ne reste qu'à regénérer la base
de donnée du système avec par exemple {\tt texhash} et une commande
similaire pour faire connaître à l'environnement les nouveaux
exécutables. \CONTEXT{} devrait alors être opérationnel.

\stopitemize

L'ensemble de ces opérations peut être fait en quelques cinq minutes.

Il est une fois de plus conseillé de lire le fichier {\tt minstall.pdf}.

\Titre{Les fichiers de \CONTEXT}

Après l'installation, il est instructif de jeter un coup d'\oe il
aux fichiers de l'installation.

\startitemize
\item
Le répertoire principal est {\tt tex/context/base} qui contient 333 fichiers.
La taille globale de ces fichiers est d'environ 5~Mo.

\item L'un des fichiers est le fichier {\tt context.tex} qui comporte
plus d'une centaine de commandes \type{\input} chargeant les autres
parties du système à la création du format.

\item À titre de comparaison, le noyau de \LaTeX{} comporte environ 126
fichiers totalisant 1~Mo. Mais \CONTEXT{} inclut de nombreuses
fonctionnalités qui ne se trouvent pas dans le noyau de \LaTeX,
mais dans divers {\em packages}, ce qui rend la comparaison un
peu difficile.

\item Il n'en reste pas moins que le format de \CONTEXT{} est particulièrement
gros :

\startsmalltyping
4029973 May 25 11:19 cont-en.efmt
 750724 May 19 11:25 latex.fmt
 382464 May 21 17:02 metafun.mem
\stopsmalltyping

\item Le format \CONTEXT{} est aussi nettement plus gourmant en ressources
\TeX, mais les distributions courantes sont configurées pour en
tenir compte. Dans certains cas, cependant, il peut être nécessaire
de modifier l'environnement en adaptant les valeurs des variables
spécifiées dans {\tt texmf.cnf}.
\stopitemize

\page
%\Titre{À quoi ressemble un fichier du format \CONTEXT~?}

Jetons un coup d'\oe il dans un fichier pris au hasard,
par exemple {\tt page-mar.tex} :

\startsmalltyping
%D \module
%D   [       file=page-mar, % moved here from main-001
%D        version=1997.03.31,
%D          title=\CONTEXT\ Core Macros,
%D       subtitle=Marginal Things
%D         author=Hans Hagen,
%D           date=\currentdate,
%D      copyright={PRAGMA / Hans Hagen \& Ton Otten}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.

%D This module is still to be split and documented. 

\writestatus{loading}{Context Core Macros / Maginal Things}

\unprotect 

\newif\iflowinmargin

\def\stelinmargein
  {\dodoubleempty\dostelinmargein}

\def\dostelinmargein[#1][#2]%
  {\ifsecondargument
     \processcommalist[#1]{\dodostelinmargein[#2]}% becomes [#2]{##1}
   \else
     \getparameters[\??im][#1]%
   \fi}

\def\dodostelinmargein[#1]#2% [settings]{class}
  {\ifundefined{\??im#2\c!offset}%
     \presetlocalframed
       [\??im#2]%
     \getparameters
       [\??im#2]
       [\c!kader=\v!uit,
        \c!offset=\v!overlay,
        \c!regel=1,
        \c!scheider=,
        \c!breedte=\v!ruim,
        \c!afstand=\!!zeropoint,
        \c!letter=\@@imletter,
        \c!kleur=\@@imkleur,
        \c!plaats=\@@implaats,
        \c!uitlijnen=\@@imuitlijnen,
        \c!voor=\@@imvoor,
        \c!na=\@@imna,
        #1]%
   \else
     \getparameters[\??im#2][#1]%
   \fi}

\let\margetekstafstand  = \!!zeropoint
\def\margetekstregels     {1}
\def\margetekstnummer     {0}
\let\margetekstscheider = \empty
...
\stelnaastplaatsenin
  [\c!status=\v!stop]

\protect \endinput 
\stopsmalltyping


Observations :

\startitemize
\item le code ressemble à du \TeX, ce qui est rassurant ;
\item de manière interne, plusieurs caractères sont rendus équivalents
à une lettre, notamment le ! ; le passage du mode protégé au mode
non protégé se fait avec \type{\unprotect} (analogue de 
\type{\makeatletter} et le retour de ce mode avec \type{\protect}
(analogue de \type{\makeatother}) ; ces commandes peuvent s'utiliser
dans le corps du document ;
\item le code source comporte de manière interne des mots en néerlandais,
vestige d'une époque où \CONTEXT{} n'était sans doute pas encore beaucoup
utilisé en dehors de PRAGMA ; il est à supposer que ces commandes
internes seront peu à peu traduites en anglais.
\stopitemize


\Titre{La documentation}

Le site de PRAGMA contient de nombreux documents, quelquefois enfouis.
Les principaux sont les suivants :

\startitemize
\item {\tt art-pres.pdf} : {\em\TeX{} as presentation tool} (8 pages
sur les styles prédéfinis pour des présentations interactives) ;
\item {\tt cont-eni.pdf} (version interactive) ou {\tt cont-enp.pdf}
(version papier) : manuel de \CONTEXT{} (369 pages en version interactive) ;
\item {\tt mchart.pdf} : module d'organigrammes (20 pages) ;
\item {\tt metafun-p.pdf} (version papier), 
    {\tt metafun-s.pdf} (version écran) : manuel de \METAFUN{} 
       (364 pages papier, 635 pages écran)
\item {\tt mfonts.pdf} : les polices dans \CONTEXT{} (39 pages)
\item {\tt minstall.pdf} : l'installation de \CONTEXT{} (13 pages)
\item {\tt mp-cb-en.pdf} : \CONTEXT, an excursion (129 pages)
\item {\tt mtexexec.pdf} : manuel de \TEXEXEC{} (11 pages)
\item {\tt mtexfont.pdf} : manuel de {\tt \TEX font} (17 pages)
\item {\tt mtexutil.pdf} : manuel de \TEXUTIL{} (7 pages)
\item {\tt mwidget-p.pdf} (version papier), {\tt mwidget-s.pdf}
(version écran) : manuel des Widgets (46 pages écran)
\item {\tt showfont.pdf} : exemples d'utilisation de polices (16 pages)
\item XML in \CONTEXT{}
\item manuel de {\tt makempy} pour créer des polices outline
\item la thèse de Thanh
\item etc.
\stopitemize

Pour ne pas être noyé dans cette documentation, il faut procéder
{\em méthodiquement}. Je donnerai en fin d'exposé ma méthodologie
pour un utilisateur de \LaTeX{} qui souhaite se lancer dans 
\CONTEXT.

\Titre{Syntaxe détaillée d'une commande}

Chaque environnement peut être configuré grâce à une commande \type{\setup...}
associée. Par exemple, la mise en page peut être contrôlée avec
la commande \type{\setuplayout}. Son argument, entre crochets, est
une liste de couples clé $=$ valeur. Quelques unes des clés sont :

\startsmalltyping
width
height
backspace
topspace
margin
leftmargin
rightmargin
header
footer
top
bottom
leftedge
rightedge
headerdistance
footerdistance
topdistance
bottomdistance
leftmargindistance
rightmargindistance
leftedgedistance
rightedgedistance
grid
...
\stopsmalltyping

\startitemize
\item Les clés correspondent ici aux différents paramètres
définissant la mise en page.
\item Certaines des clés ont une valeur par défaut.
\item La valeur de certaines clés peut être une commande, ce qui permet
de définir des comportements non prévus par défaut.
\item Toute la syntaxe est explicitée dans l'excellent manuel (cf. p.~32).
\stopitemize


\Titre{Support du fran\c cais}

Un début de support pour le fran\c cais a été mis en place
il y a quelques deux semaines ! Auparavant, la configuration 
pour le fran\c cais était insuffisante. Même si les choses
ne sont pas encore parfaites, elles vont rapidement s'améliorer
et les Fran\c cais peuvent maintenant sans crainte se lancer
dans \CONTEXT.



\startitemize
\item Tout comme dans \LaTeX, il faut préciser le codage des caractères
en entrée. Ce codage en entrée est appelé régime et est activé par
\type{\enableregime}. Pour le codage ISO-Latin-1, la commande sera :

\starttyping
\enableregime[il1]
\stoptyping

\item Quelques définitions propres au fran\c cais sont activées par

\starttyping
\useencoding[ffr]
\stoptyping

Ces définitions sont pour l'instant sommaires, mais seront rapidement
complétées, en concertation avec les responsables fran\c cais.

\item Enfin, le choix de la langue, en particulier pour les coupures
de mots, se fait avec :

\starttyping
\mainlanguage[fr]
\stoptyping

\type{\mainlanguage} correspond à la langue principale du document
(celle des mots clés, etc.), mais la langue peut être changée
localement avec \type{\language}.

\stopitemize



\Titre{Index}

\startitemize
\item Tout comme avec \LaTeX, un mot est indexé avec la commande \type{\index}.
\item L'index est placé dans le document avec 

\type{\placeindex}.
\item C'est \TEXEXEC{} qui fait le tri et l'utilisateur n'a pas besoin de 
lancer un programme extérieur comme {\tt makeindex}.
\item Des sous-entrées sont créées avec «~+~» : \type{\index{a+b}}.
\item La classification peut être modifiée avec une clé mise entre crochets :
 \type{\index[a+b]{\a+\b}}.
\stopitemize

\Titre{Bibliographie}

\CONTEXT{} est muni d'un module {\tt bib} qui permet de gérer
une bibliographie. Le format standard de représentation d'une entrée
bibliographique est un format \TeX, et non {\tt Bib\TeX}

\startsmalltyping
\startpublication[k=Brodie84,
  t=article,
  a=L.~Brodie,
  y=1984,
  s=LB84]
\artauthor[]{Leo}[L.]{}{Brodie}
\arttitle{Thinking Forth, a language and philosophy 
          for solving problems}
\journal{Prentice Hall}
\pubyear{1984}
\stoppublication

\startpublication[k=Bekke92,
  t=article,
  a=J.H.~ter~Bekke,
  y=1992,
  s=JB92]
\artauthor[]{Johan}[J.H.]{ter}{Bekke}
\arttitle{Semantic datamodeling}
\journal{Prentice Hall}
\pubyear{1992}
\stoppublication
\stopsmalltyping

\startitemize
\item Un grand nombre de champs sont disponibles et de nouveaux champs
peuvent être créés. Cela est décrit dans la documentation du
module {\tt bib}.
\item Les publications sont mises dans un fichier {\tt .bbl}
de même nom que le fichier principal.
\item Ce fichier {\tt .bbl} peut soit être créé à la main, soit
avec {\tt Bib\TeX} grâce à un style {\tt bst} fourni avec le
module {\tt bib}.
\item Plusieurs bibliographies différentes sont accessibles
depuis le même fichier.
\item Une liste de publication est insérée avec 

\type{\placepublications}.
\item Le tri est effectué par \TEXEXEC.
\stopitemize

\Titre{Gestion des polices : bas niveau}

La gestion des polices dans \CONTEXT{} est très différente
de celle de \LaTeX.

\startitemize
\item Pour modifier le style, 
il y a des commandes de bas niveau proches de celles de plain \TeX~:
  \type{\rm}, \type{\bf}, \type{\ss}, etc. 
\item Pour changer la taille, des commandes comme 
\type{\tfx}, \type{\tfxx}, \type{\tfa}, etc. permettent de choisir la taille
{\em relativement} à la taille courante.
\item \type{\em} permet l'emphase et inclut la correction italique.
\item l'effet de toutes ces commandes peut être observé avec la commande 
\type{\showbodyfont} ; on peut par exemple écrire :

\starttyping
\showbodyfont[cmr]
\stoptyping

ce qui donne

{\tfxx\setupinterlinespace
\showbodyfont[cmr]

}


\stopitemize

\Titre{Gestion des polices : haut niveau}

Plus récemment, de nouveaux mécanismes ont été introduits,
afin d'organiser les polices. Ces mécanismes sont les « {\em typescripts} »
et ce ne sont vraiment que des groupes de définitions. Mais ces 
définitions peuvent être facilement sélectionnées via des {\em clés}.

Par exemple, en écrivant

\starttyping
\usetypescript[all] [computer-modern] [ec]
\stoptyping

les définitions correspondantes du fichier \type{type-enc.tex}
sont chargées. En voici quelques unes :

\startsmalltyping
\starttypescript [all] [computer-modern] [ec]
  \definefontsynonym [cmb10]    [aeb10]    [encoding=ec]
  \definefontsynonym [cmbx10]   [aebx10]   [encoding=ec]
  \definefontsynonym [cmbx12]   [aebx12]   [encoding=ec]
  \definefontsynonym [cmbx5]    [aebx5]    [encoding=ec]
  ...
\stoptypescript
\stopsmalltyping

\startitemize
\item Cela signifie que \type{cmb10} est en fait un autre nom pour \type{aeb10}
et que cette dernière police est au codage T1 (ec).
\item \type{cmb10} n'est donc plus nécessairement un nom fixe de police,
mais peut être redirigé vers d'autres polices.
\item Les chaînes de synonymes (\type{\definefontsynonym}) sont sans limites.
\item Des subdivisions plus fines peuvent être réalisés, par exemple en 
groupant les polices à empattements, bâtons, à chasse fixe et mathématiques :

\startsmalltyping
\starttypescript [serif] [computer-modern] [default]
  \definefontsynonym [ComputerModern]             [cmr10]
  \definefontsynonym [ComputerModern-Italic]      [cmti10]
  \definefontsynonym [ComputerModern-Slanted]     [cmsl10]
  \definefontsynonym [ComputerModern-Bold]        [cmbx10]
  \definefontsynonym [ComputerModern-BoldItalic]  [cmbxti10]
  \definefontsynonym [ComputerModern-BoldSlanted] [cmbxsl10]
  \definefontsynonym [ComputerModern-Caps]        [cmcsc10]
\stoptypescript

\starttypescript [sans] [computer-modern] [default]
  \definefontsynonym [ComputerModernSans]             [cmss10]
  \definefontsynonym [ComputerModernSans-Italic]      [cmssi10]
  \definefontsynonym [ComputerModernSans-Slanted]     [cmssi10]
  \definefontsynonym [ComputerModernSans-Bold]        [cmssbx10]
  \definefontsynonym [ComputerModernSans-BoldItalic]  [cmssbx10]
  \definefontsynonym [ComputerModernSans-BoldSlanted] [cmssbx10]
  \definefontsynonym [ComputerModernSans-Caps]        [cmss10]
\stoptypescript
...
\stopsmalltyping

\item Les tailles disponibles sont définies dans un fichier \type{type-siz.tex}
dont voici un échantillon :


\startsmalltyping
\starttypescript [serif] [default] [size]
  \definebodyfont
    [4pt,5pt,6pt,7pt,8pt,9pt,10pt,11pt,12pt,14.4pt,17.3pt]
    [rm] [default]
\stoptypescript
\stopsmalltyping

Chacune de ces définitions renvoie à d'autres définitions telles que :

\startsmalltyping
\definebodyfont [12pt] [rm]
  [tf=cmr12,
   bf=cmbx12,
   it=cmti12,
   sl=cmsl12,
   bi=cmbxti10 at 12pt,
   bs=cmbxsl10 at 12pt,
   sc=cmcsc10 at 12pt]
\stopsmalltyping

\item La classification actuelle (nullement figée !) est donc proche
de NFSS, mais il y a une notion de « collection » ou famille correspondant
au groupe (serif, sans, mono, math). Une telle collection peut avoir
un nom, par exemple \type{computer-modern}. Dans NFSS, ces quatre parties
ne sont pas vraiment liées. Contrairement à NFSS, la graisse et l'aspect
ne sont pas par défaut des attributs orthogonaux. C'est le choix
d'une collection, d'un style (serif, sans, mono, math) et d'une taille
qui déterminent les significations de \type{\tf}, \type{\bf},
\type{\it}, etc. Comme on le voit, \type{\it} se situe au même niveau
que \type{\bf}.

\item La manipulation de ces définitions est un peu compliquée
par le fait que les paramètres de \type{\usetypescript} n'ont pas
une signification constante fonction de la position. Il s'agit vraiment
de paramètres fournissant un accès à une table. 

\item La taille globale d'un document peut être définie par 

\starttyping
\setupbodyfont[12pt]
\stoptyping
\stopitemize


\Titre{Polices : Affichage de code}

Il est possible de définir des environnements type « verbatim »
pour représenter des programmes, et obtenir automatiquement un
{\em pretty-printing}. Par exemple, pour les programmes \METAPOST,
en écrivant :

\starttyping
\startMP 
beginfig (12) ; 
MyScale = 1.23 ; 
draw unitsquare scaled MyScale 
     shifted (10,20) ; 
endfig ; 
\stopMP
\stoptyping

on obtient :

\startMP 
beginfig (12) ; 
MyScale = 1.23 ; 
draw unitsquare scaled MyScale 
     shifted (10,20) ; 
endfig ; 
\stopMP

%\showbodyfont[computer-modern]

%\Titre{\MetaFun}

\Titre{XML}

Du code XML peut être inséré dans un fichier \CONTEXT{} et ce
code peut être traité moyennant des filtres. Voici un exemple
de traitement de MathML :

\startbuffer
<math>
  <apply> <eq/>
     <apply> <power/> <ci> a </ci> <ci> 2 </ci> </apply>
     <apply> <plus/>
        <apply> <power/> <ci> b </ci> <ci> 2 </ci> </apply>
        <apply> <power/> <ci> c </ci> <ci> 2 </ci> </apply>
     </apply>
  </apply>
</math>
\stopbuffer

%\typebuffer

\startsmalltyping
\useXMLfilter[mml,mmp,mmc]

\startbuffer
<math>
  <apply> <eq/>
     <apply> <power/> <ci> a </ci> <ci> 2 </ci> </apply>
     <apply> <plus/>
        <apply> <power/> <ci> b </ci> <ci> 2 </ci> </apply>
        <apply> <power/> <ci> c </ci> <ci> 2 </ci> </apply>
     </apply>
  </apply>
</math>
\stopbuffer
\processXMLbuffer
\stopsmalltyping

Le résultat est :

\processXMLbuffer

\Titre{Autres aspects non évoqués}

\CONTEXT{} comporte de nombreuses autres facettes qui n'ont
pas été évoquées :

\startitemize
\item des modules de présentation  permettent de réaliser des
présentations comme celles-ci, avec des couches ({\em overlays})~;
\item la gestion de la micro-typographie avec l'algorithme HZ
et les ponctuations pendantes ({\em character protruding}) ;
\item un module de chimie, \PPCHTEX, basé sur \PiCTeX~;
\item un module de représentation d'organigrammes ({\tt charts}) ;
\item un module pour écrire en chinois ;
\item etc.
\stopitemize

\Titre{Comment se mettre à \CONTEXT}

\CONTEXT{} est un système très vaste et le risque est grand d'être découragé,
surtout si l'on est un utilisateur averti et exigeant de \LaTeX.
Voici quelques pistes :

\startitemize
\item Lire l'article de Berend de Boer {\em \LaTeX{} in proper \ConTeXt}
qui fait un survol rapide des principales correspondances d'environnements
entre \LaTeX{} et \ConTeXt. Sa lecture est facile et conseillée.
\item Feuilleter toutes les documentations mentionnées.
\item Traduire un document \LaTeX{} simple, pour lequel on n'a pas
d'échéance. (Par la suite, on pourra éventuellement utiliser un script
pour faire le gros de la traduction.)
\item Poser des questions sur la liste 

{\tt ntg-context@ntg.nl},
à laquelle on peut s'abonner depuis le site de PRAGMA. C'est une liste
très active et les questions n'y sont jamais laissées sans réponse.
\stopitemize

\Titre{Conclusions : \LaTeX~?}

Faut-il abandonner \LaTeX~?

\startitemize
\item Non, \LaTeX{} reste toujours utile pour un travail coopératif, 
ou pour certaines soumissions d'articles à des revues.
\item Dans \LaTeX{} il y a beaucoup de 
pièces de rechange, on sait que ça fonctionne et on sait à qui
s'adresser en cas de problème.
\stopitemize

\Titre{Conclusions : pourquoi \CONTEXT~?}


\startitemize
\item pour ne pas rester enfermé dans \LaTeX.
\item pour avoir une perspective différente sur \TeX{}
et donc avoir du recul.
\item pour profiter de l'intégration de divers langages et donc se mettre
à \METAPOST, \XML, ...
\item pour tester des fonctionnalités expérimentales comme l'algorithme HZ.
\item pour utiliser $\Gamma$ (\CONTEXT{} avec $\Omega$)
\stopitemize

Aucun de ces points ne justifie à lui seul \CONTEXT, mais c'est en
\CONTEXT{} qu'ils sont tous réunis.

\Titre{Conclusions : la suite}

Que reste-t-il à faire en fran\c cais ?

\startitemize
\item le support fran\c cais de \CONTEXT{} doit encore être amélioré ;
\item il faut rassembler les forces, 
écrire un manuel en fran\c cais plus développé, etc.
\item faire une page web pour les utilisateurs francophones avec tous les
liens utiles.
\stopitemize

\Titre{Transparents}

Merci !

\blank[5*big]

%Ce document sera disponible {\em la semaine prochaine} en

%\startsmalltyping
%http://www.loria.fr/~roegel/publications.html
%\stopsmalltyping

%et sur le site de GUTenberg.


\stoptext



