ConTeXt/Images et figures
|
Part. II, ch. 6 • Images et figures • Sommaire |
Insertion d’images et gestion des figures
[modifier | modifier le wikicode]L’usage des images est indispensable dans de nombreux documents : schémas, photographies, graphiques, logos, captures d’écran, figures scientifiques, etc. ConTeXt offre une gestion claire et cohérente des images, qu’elles soient simples, légendées, flottantes, côte à côte, intégrées aux colonnes ou en pleine largeur.
Objectifs de cette section
Cette page présente les différentes manières d’insérer, de positionner et de styliser des images dans un document ConTeXt. Elle explique :
- comment utiliser
\externalfigurepour insérer une image simple ; - comment créer des figures flottantes avec
\placefigure; - comment régler la taille, l’alignement et la légende des images ;
- comment intégrer des images dans un document à colonnes ;
- comment afficher une image pleine largeur ;
- comment lister automatiquement les figures du document ;
- comment résoudre les problèmes fréquents (images trop grandes, flottants bloqués…).
1. Insérer une image simple : \externalfigure
[modifier | modifier le wikicode]- ConTeXt intègre nativement un petit ensemble de figures vectorielles internes, sans qu’il soit nécessaire de fournir de fichiers externes. Ces figures sont générées à l’aide de MetaPost et peuvent être appelées comme des images ordinaires. On y trouve notamment des dessins stylisés (comme la célèbre
cow), ainsi que divers symboles et icônes (gnu,mill,world,context,dragon,tiger,flag, etc.). Leur présence est surtout destinée à des tests, à de la démonstration ou à des usages décoratifs légers.
Ces figures internes sont insérées avec la commande :
\externalfigure[nom_de_l_image]
Par exemple :
\externalfigure[cow][width=3cm]
La liste exacte des figures disponibles dépend de la version de ConTeXt. Elle peut être affichée à l’aide de la commande :
\showinternalfigures
ou via l’outil en ligne de commande :
mtxrun --script status --figures
Pour insérer ses propres images (PNG, JPEG, PDF, etc.), il faut les placer dans un répertoire accessible à ConTeXt, le plus souvent le dossier de travail du projet, ou l’un de ses sous-dossiers. ConTeXt recherche automatiquement les fichiers d’image dans le répertoire courant. Il est également possible de lui indiquer explicitement où chercher grâce à des directives de configuration (comme \setupexternalfigures[directory=...]) afin d’organiser proprement les ressources d’un projet plus structuré.
La commande minimale est :
\externalfigure[monimage.png]
ConTeXt accepte les formats courants :
- PNG
- JPG
- PDF (vectoriel)
- SVG (selon installation)
Pour régler la largeur :
\externalfigure[monimage.png][width=.6\textwidth]
Pour ajuster automatiquement à la largeur possible :
\externalfigure[monimage.png][maxwidth=\textwidth]
Si l’image n’est pas trouvée, ConTeXt affiche un cadre vide : → vérifier le nom, la casse, le chemin.
💡
Astuce
Placez vos images dans un dossier dédié (par exemple figures/)
et indiquez toujours le chemin : \externalfigure[figures/monimage.png].
Vous éviterez les conflits de nom dans les projets complexes.
2. Ajouter une légende : \placefigure
[modifier | modifier le wikicode]Pour créer une figure numérotée avec légende :
\placefigure
[here][fig:exemple]
{Une légende claire}
{\externalfigure[monimage.png][width=.7\textwidth]}
Arguments :
[here]: place la figure à l’endroit où elle apparaît ;[fig:exemple]: étiquette interne pour référence ;- {légende} : titre affiché sous la figure ;
{\externalfigure[...]}: contenu graphique.
Référence interne :
Comme on le voit figure \in{figure}[fig:exemple], ...
3. Positionnement des figures
[modifier | modifier le wikicode]ConTeXt propose plusieurs options :
here— à l’endroit exactleft— alignée à gaucheright— alignée à droitetop— en haut de pagebottom— en bas de pagepage— seule sur une pageforce— ignore certains ajustements
Exemple :
\placefigure[top]{Titre}{\externalfigure[image.png]}
Astuce ConTeXt est plus stable que LATEX pour le placement des figures : il flotte moins
et respecte davantage l’ordre d’apparition dans le code. Utilisez [here] comme valeur par défaut.
4. Deux images côte à côte
[modifier | modifier le wikicode]Méthode simple avec un tableau
[modifier | modifier le wikicode]\starttable[|c|c|]
\NC \externalfigure[fig1.png][width=.45\textwidth]
\NC \externalfigure[fig2.png][width=.45\textwidth]
\NC\NR
\stoptable
Méthode ConTeXt : \startcombination
[modifier | modifier le wikicode]\startcombination[2*1] % 2 colonnes, 1 ligne
{\externalfigure[fig1.png][width=.45\textwidth]} {Légende A}
{\externalfigure[fig2.png][width=.45\textwidth]} {Légende B}
\stopcombination
5. Image pleine largeur dans un document à colonnes
[modifier | modifier le wikicode]Lorsqu’un document utilise des colonnes (avec la commande\startcolumns), une figure ne peut pas s’étendre sur plusieurs colonnes directement.
Il faut :
- 1. fermer les colonnes,
- 2. insérer la figure,
- 3. rouvrir les colonnes.
Exemple :
\startcolumns[n=3]
Du texte en colonnes...
\stopcolumns
\placefigure[here]{Illustration}{%
\externalfigure[grande.png][width=\textwidth]}
\startcolumns[n=3]
Suite du texte en colonnes...
\stopcolumns
6. Style des figures (légendes, numérotation, police)
[modifier | modifier le wikicode]Pour modifier la police ou la taille des légendes :
\setupcaptions
[style=smallitalic, headstyle=bold]
Exemple :
- légende en petit italique
- mot « Figure » en gras
Pour changer la numérotation :
\setupcaptions
[way=bychapter] % Figure 3.1, 3.2, 3.3...
Autres options :
align=middle— légende centréelocation=bottom— légende sous la figurelocation=top— légende au-dessus
7. Insérer une page précise d’un PDF
[modifier | modifier le wikicode]Exemple :
\externalfigure[rapport.pdf][page=3, width=\textwidth]
On peut également insérer un PDF multipage sous forme d’images successives.
Astuce les PDF vectoriels (schémas, graphiques) donnent un rendu bien meilleur que les images rasterisées/rasterized (JPG, JPEG PNG) pour l’impression professionnelle.
8. Problèmes fréquents et solutions
[modifier | modifier le wikicode]Image trop grande (débordement)
[modifier | modifier le wikicode]Utiliser :
[maxwidth=\textwidth]
DPI insuffisant (image floue à l’impression)
[modifier | modifier le wikicode]Vérifier la résolution : 300 DPI minimum pour les impressions papier.
ConTeXt ne trouve pas l’image
[modifier | modifier le wikicode]- respecter la casse des noms (Linux sensible) ;
- vérifier le chemin ;
- pas d’espaces dans les noms de fichier.
Conflit avec un environnement de colonnes
[modifier | modifier le wikicode]Fermer les colonnes avant la figure.
9. Création de graphiques avec MetaPost et MetaFun
[modifier | modifier le wikicode]ConTeXt intègre nativement MetaPost ainsi que MetaFun, un ensemble d’extensions graphiques très puissantes. Grâce à eux, il est possible de produire des graphiques vectoriels directement dans le document : barres, camemberts, schémas, dessins techniques, figures mathématiques, etc. Cette page présente trois exemples simples et reproductibles.
Objectifs
- comprendre comment insérer un bloc MetaPost dans ConTeXt ;
- produire trois graphiques courants : barres, camembert, camembert 3D ;
- introduire la logique générale de
\startMPcode … \stopMPcode; - montrer comment intégrer ces graphiques dans une figure ConTeXt.
1. Graphique simple en barres (noir et gris)
[modifier | modifier le wikicode]Principe : ce premier exemple illustre la construction d’un diagramme à barres simple, où chaque barre est simplement un rectangle rempli en niveaux de gris.
\placefigure
[here]
{Graphique simple en barres (MetaPost)}
{
\startMPcode
numeric w, h ;
w := 10cm ; % largeur totale
h := 5cm ; % hauteur maximale
numeric data[] ;
data[1] := 30 ;
data[2] := 55 ;
data[3] := 70 ;
data[4] := 45 ;
numeric n ; n := 4 ;
numeric barw ; barw := w / (n + 2) ;
path bar ;
for i = 1 upto n :
bar :=
( (i+0.5) * barw , 0 )
-- ( (i+0.5) * barw , data[i] * h/100 )
-- ( (i+1.2) * barw , data[i] * h/100 )
-- ( (i+1.2) * barw , 0 )
-- cycle ;
fill bar withcolor .8white ;
draw bar withpen pencircle scaled .4pt ;
endfor ;
draw (0,0) -- (w,0) withpen pencircle scaled .6pt ;
draw (0,0) -- (0,h) withpen pencircle scaled .6pt ;
\stopMPcode
}
2. Diagramme circulaire (camembert)
[modifier | modifier le wikicode]Principe : un camembert est un ensemble de secteurs circulaires dont la surface est proportionnelle aux valeurs. MetaPost calcule les angles et trace les secteurs.
\placefigure
[here]
{Diagramme circulaire (camembert)}
{
\startMPcode
numeric total ;
total := 100 ;
numeric a[] ;
a[1] := 25 ; a[2] := 40 ; a[3] := 20 ; a[4] := 15 ;
pair O ; O := (0,0) ;
numeric r ; r := 2.5cm ;
numeric ang, startang ;
startang := 0 ;
color col[] ;
col[1] := (0.8,0.2,0.2) ;
col[2] := (0.2,0.6,0.9) ;
col[3] := (0.4,0.8,0.4) ;
col[4] := (0.9,0.8,0.4) ;
for i = 1 upto 4 :
ang := 360 * a[i] / total ;
fill O -- for t=0 upto ang: O + r * dir(startang + t) endfor -- cycle
withcolor col[i] ;
draw O -- O + r * dir(startang) ;
draw O + r * dir(startang + ang) ;
startang := startang + ang ;
endfor ;
draw fullcircle scaled (2*r) withpen pencircle scaled 1pt ;
\stopMPcode
}
3. Camembert en pseudo-3D (effet d’extrusion)
[modifier | modifier le wikicode]Principe : ce « camembert 3D » repose sur une simple extrusion verticale, donnant un relief esthétique sans relever réellement de la 3D géométrique. Il est très utilisé dans des bulletins ou rapports.
\placefigure
[here]
{Diagramme circulaire en pseudo-3D}
{
\startMPcode
numeric r, h ;
r := 3cm ;
h := .5cm ; % hauteur de l'extrusion
color c1, c2, c3 ;
c1 := (0.8,0.1,0.1) ;
c2 := (0.2,0.5,0.9) ;
c3 := (0.4,0.8,0.4) ;
path top1, top2, top3 ;
numeric a1, a2, a3 ;
a1 := 45 ;
a2 := 120 ;
a3 := 360 - a1 - a2 ;
top1 := fullcircle scaled (2r) cutafter point (a1/360 * length fullcircle) of fullcircle ;
top2 := fullcircle scaled (2r) cutafter point ((a1+a2)/360 * length fullcircle) of fullcircle
cutbefore point (a1/360 * length fullcircle) of fullcircle ;
top3 := fullcircle scaled (2r) cutbefore point ((a1+a2)/360 * length fullcircle) of fullcircle ;
% extrusion : ombrage
path side ;
side := top2 shifted (0,-h) -- reverse top2 -- cycle ;
fill side withcolor (.8,.8,.8) ;
fill top1 withcolor c1 ;
fill top2 withcolor c2 ;
fill top3 withcolor c3 ;
draw top1 ; draw top2 ; draw top3 ;
\stopMPcode
}
4. Intégrer ces graphiques dans un document
[modifier | modifier le wikicode]Les trois exemples ci-dessus sont intégrés dans \placefigure, ce qui signifie :
- numérotation automatique ;
- légende ;
- références internes possibles ;
- insertion propre dans la page.
Vous pouvez aussi appeler un fichier MetaPost externe :
\externalfigure[dessins.mp][page=1]
Exemple minimal complet
[modifier | modifier le wikicode]Voici un petit document complet montrant l’usage le plus courant des images : une image simple, une figure flottante avec légende, et une liste automatique des figures.
% exemple-images-minimal.tex
% Exemple minimal : image simple + figure flottante + liste de figures
\mainlanguage[fr]
\setupbodyfont[pagella, 11pt]
\starttext
\section{Image simple}
Voici une image insérée sans légende :
\externalfigure[cafe.png][width=4cm]
\blank[big]
\section{Figure flottante}
Voici une figure flottante avec légende et numérotation :
\placefigure
[here] % position recommandée
{Une tasse de café} % légende
{\externalfigure[cafe.png][width=.5\textwidth]}
\blank[big]
\section{Liste des figures}
ConTeXt peut générer automatiquement la liste des figures :
\completefigurelist
\stoptext
- Remarque : remplacez
cafe.pngpar une image présente dans votre dossier.
5. Pour aller plus loin
[modifier | modifier le wikicode]- Introduction à MetaPost dans ConTeXt
- Documentation officielle MetaFun :
mtxrun --script mtx-metafun - Archives de la liste de diffusion : nombreux exemples fournis par Hans Hagen
Voir aussi
[modifier | modifier le wikicode]- Colonnes et agencements multi-colonnes
- Tables et tableaux
- Encadrés et cadres
- Organisation d’un document long
|
Part. II, ch. 6 • Images et figures • Sommaire |