Bébert.  Accueil Les commandes Créer des commandes La date Franciser son document Faire la Table des Matières Longueurs & unités dans ConTeXt
Insérer des PDF dans un document Installation de ConTeXt - LMTX Une commande pour écrire les siècles Typographie : Quelques définitions Polices incluses dans ConTeXt Commandes pour la mise en page

Les commandes ConTeXt

Fleuron

Introduction

Un petit rappel, ConTeXt est monolithique. Toutes les macros font partie de ConTeXt, il n'est pas nécessaire de charger des packages pour utiliser une commande. L'avantage est de ne pas avoir de conflit entre les packages comme par exemple entre enumitem et french - babel sous LaTeX. Enfin ConTeXt se veut plus respectueux de la syntaxe de TeX. ConTeXt utilise plus les [ ] que les { }.

Les commandes simples

Rien que du très classique et si tu as déjà utilisé LaTeX tu ne devrais pas être perdu, voici quelque exemples :

\it pour mettre un texte en italique ou \bf pour le mettre en gras. Tu peux limiter leur porté par des { }, par exemple :

{\it le texte à mètre en italique.}

Voici d'autres exemples :

\crlf pour forcer un saut de ligne, \page pour forcer un saut de page, \thinrule pour tracer une ligne.

La différence avec LaTeX, c'est que la plupart d'entre-elles acceptent des options. Par exemple le saut de page initié par \page peut atterrir sur une page paire

\page[even]

ou bien sur une page complètement blanche

\page[blank]

Les deux à la fois paire et complètement blanche :

\page[even,blank]

La différence entre ConTeXt et LaTeX est qu'avec le premier on a une seule commande et plusieurs options alors que le second multiplie les commandes.

Les commandes à arguments

Avec ces dernières les différences avec LaTeX sont importantes. Ce qui sous ConTeXt se fait simplement en ajoutant une option nécessite pour avoir le même résultat d'avoir plusieurs commandes et de charger plusieurs packages. Pour l'illustrer je vais prendre l'exemple de \framed{texte} qui trace un cadre autour d'un texte.

\starttext
Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
\framed{Ut purus elit}, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris.
\stoptext

Tu peux ajouter des options :

\starttext
Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
\framed[location=top]{Ut purus elit}, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris.
\stoptext

Ou bien encore :

\starttext
Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
\framed[location=top,corner=round,framecolor=darkgreen]{Ut purus elit}, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris.
\stoptext

Si tu veux faire la même chose avec LaTeX, il faut charger le package fancybox et utiliser la commande \ovalbox{texte} ou \Ovalbox{texte}, mais tu n'obtient que des boites en noir, si tu veux la couleur, il faut s'orienter vers les packages pstricks ou tikz.

Revenons à ConTeXt, la liste des options est plutôt impressionnante :

NomValeurs
heightfit broad dimension
widthfit broad fixed local dimension
autowidthyes no force
offsetnone overlay default dimension
locationdepth hanging high lohi low top middle bottom
optionnone empty
strutyes no global local
alignno flushleft flushright middle normal high low lohi
bottomcommand
topcommand
frameon off none overlay
topframeon off
bottomframeon off
leftframeon off
rightframeon off
frameoffsetdimension
framedepthdimension
framecornerround rectangular
frameradiusdimension
framecolorname
backgroundscreen color none foreground name
backgroundscreennumber
backgroundcolorname
backgroundoffsetframe dimension
backgrounddepthdimension
backgroundcornerround rectangular
backgroundradiusdimension
depthdimension
cornerround rectangular
radiusdimension
emptyyes no
foregroundcolorname
foregroundstylename
rulethicknessdimension

De plus si tu t'intéresses à l'option corner outre les valeurs round et rectangle tu as 28 autres possibilités, numérotées de 00 à 28. Par exemple :

\starttext
Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
\framed[location=top,corner=08,framecolor=darkgreen]{Ut purus elit}, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris.
\stoptext

Tu trouveras sur http://wiki.contextgarden.net/Command/framed le résultat des autres numéros. De quoi régler finement tes encadrements de texte.

Les \setupQuelquechose

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,. . .]

qui permettent de régler les options dans le préambule du source, pour affecter toutes les commandes du document. Par exemple si l'on reprend framed :

\setupframed[location=top,corner=08,framecolor=darkgreen]

Les \defineQuelquechose

Presque toutes les commandes ConTeXt présentent la commande \defineNomCommande qui permet de définir tes propres éléments. Place dans le préambule de ton source les commandes suivantes :

\defineframed[cadreVert][location=top,corner=08,framecolor=darkgreen]
\defineframed[boiteBleue][location=top,frame=off,background=color,backgroundcolor=blue]

Maintenant dans ton texte tu peux utiliser \cadreVert{texte} pour obtenir un texte entouré de vert et \boiteBleue{texte} pour du texte dans une boite bleue.

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

Tu peux utiliser une commande du type setup pour définir les options de tes commandes :

\defineframed[cadreVert]
\defineframed[boiteBleue]
\setupframed[cadreVert][location=top,corner=08,framecolor=darkgreen]
\setupframed[boiteBleue][location=top,frame=off,background=color,backgroundcolor=blue]

Attention à la façon d'écrire les options

Pour faciliter l'écriture des réglages tu peux passer à la ligne entre les [ ] ou ajouter un blanc entre les groupes de [ ]. Tu peux écrire :

\defineframed[cadreVert] [location=top,corner=08,framecolor=darkgreen] \defineframed[boiteBleue] [location=top,frame=off,background=color,backgroundcolor=blue]

et même entre les options

\defineframed[boiteBleue] [location=top,
frame=off,
background=color,
backgroundcolor=blue]

Par contre attention aux espaces !!

Tu ne peux en mettre qu'après la virgule, jamais avant, ni entourant le signe égal ni avant le crochet terminal ]. Donc pas de saut de ligne avant une virgule et le ].

Aucun des exemples suivant ne donnera le résultat escompté.

\defineframed[boiteBleue][background=color ,backgroundcolor=blue]

\defineframed[boiteBleue][background=color,backgroundcolor=blue ]

\defineframed[boiteBleue][background = color,backgroundcolor= blue]

\defineframed[boiteBleue][frame=off
,background=color,backgroundcolor=blue]

\defineframed[boiteBleue][frame=off,
background=color,backgroundcolor=blue
]

Donc en gros évite les espaces et passe à la ligne uniquement après une virgule. Une ligne blanche à l'intérieur de la commande, provoque également une erreur.

L'héritage

Tu peux te servir des deux commandes précédentes pour créer des héritages. Je reprends notre exemple de boite avec framed. Tu peux décider que toutes tes boites auront une base commune, à savoir, un cadre avec des bords arrondis uniquement en haut et une épaisseur de trait de 2pt et centré sur le texte. Pour programmer cette exigence, on va utiliser setup

\setupframed[location=top,corner=03,framecolor=darkgreen,rulethickness=2pt]

Maintenant il est possible de créer très facilement des boites rouges pour les mots importants et des boites vertes pour les remarques :

\defineframed[alert][framecolor=red]
\defineframed[rem][framecolor=darkgreen]

Voici le résultat :

\setupframed[location=top,corner=03,framecolor=darkgreen,rulethickness=2pt]
\defineframed[alert][framecolor=red]
\defineframed[rem][framecolor=darkgreen]
\starttext
Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
\rem{Ut purus elit}, vestibulum ut, placerat ac, adipiscing vitae, felis. \alert{Curabitur dictum} gravida mauris.
\stoptext

Les \start. . . \stop. . .

Beaucoup de modificateurs typographiques sont sous la forme

\startquelquechose . . . \stopquelquechose

C'est un peu l'équivalent des environnements sous LaTeX.

\begin{environnement} . . . \end{environnement}

Ils acceptent un ou plusieurs groupes d'options

\startquelquechose[optiona][optionb] . . . \stopquelquechose

On peut également prédéfinir leur comportement dans le préambule à l'aide de la commande

\setupquelquechose[optiona][optionb]

Et l'on peut définir ses propres start-stop à l'aide de

\definetyping[Raoul][liste options]

que tu utilises comme ceci :

\startRaoul . . . \stopRaoul

Il faut éviter de passer une ligne après \startquelquechose car dans bien des cas tu n'obtiendras pas le résultat escompté.

Voici deux exemples :

\starttext
\startoverlay
{\externalfigure[cow]} {\\green \rotate[rotation=30]{"Fetchez la vache"}}
\stopoverlay
\stoptext

donne :

Par contre

\starttext
\startoverlay

{\externalfigure[cow]} {\\green \rotate[rotation=30]{"Fetchez la vache"}}
\stopoverlay
\stoptext

donne :

De même :

\starttext
{\tfd La reine de la friterie : la fricandelle}
\blank[big]
\starthanging{\externalfigure[fricandelle][width=4cm]}
Comme le dit si bien Dany Boon \quote{la fricandelle, tout le monde sait ce qu'il a dedans mais personne ne le dit !}. Si sa composition est donc un sujet tabou, tout le monde se doute que ce n'est pas les morceaux de première qualité. Mais il en faut bien plus pour arrêter les Belges face à la star des friteries. Mais pour ceux qui aiment savoir ce qu'ils avalent, sachez que la fricandelle se compose principalement de déchet de viande, à savoir les restes, les peaux et carcasses d'animaux dont 40\% viennent de poulet, 25\% de porc et 2\% de cheval ! À cela on ajoute de la chapelure, sel, épices, arômes, exhausteur de goût, émulsifiant. Et hop vous voilà avec une belle saucisse panée de 18 cm prête à être plongée dans l'huile.
\starthanging
\stoptext

Et

\starttext {\tfd La reine de la friterie : la fricandelle} \blank[big]
\starthanging{\externalfigure[fricandelle][width=4cm]}

Comme le dit si bien Dany Boon \quote{la fricandelle, tout le monde sait ce qu'il a dedans mais personne ne le dit !}. Si sa composition est donc un sujet tabou, tout le monde se doute que ce n'est pas les morceaux de première qualité. Mais il en faut bien plus pour arrêter les Belges face à la star des friteries. Mais pour ceux qui aiment savoir ce qu'ils avalent, sachez que la fricandelle se compose principalement de déchet de viande, à savoir les restes, les peaux et carcasses d'animaux dont 40\% viennent de poulet, 25\% de porc et 2\% de cheval ! À cela on ajoute de la chapelure, sel, épices, arômes, exhausteur de goût, émulsifiant. Et hop vous voilà avec une belle saucisse panée de 18 cm prête à être plongée dans l'huile.
\starthanging
\stoptext

Une autre façon de faire du TeX

Tu vois bien qu'avec cet ensemble de commandes, tu vas pouvoir fabriquer un certain nombre d'objets qui vont participer à l'élaboration de ton document. De toute façon tu n'as pas le choix, car contrairement à LaTeX et ses nombreux packages, avec ConTeXt tu ne trouveras pas de modules tout faits pour t'aider. Par contre, l'importance du degré de configuration va te permettre de faire exactement ce que tu veux où tu veux.