Aller au contenu

ConTeXt/Images et figures

Un livre de Wikilivres.

 Page précédente : Tables et tableaux

Part. II, ch. 6  •  Images et figures  •  Sommaire

Page suivante : Styles typographiques 

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.

ObjectifsObjectifs 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 \externalfigure pour 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 exact
  • left — alignée à gauche
  • right — alignée à droite
  • top — en haut de page
  • bottom — en bas de page
  • page — seule sur une page
  • force — 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ée
  • location=bottom — légende sous la figure
  • location=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 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.png par une image présente dans votre dossier.


5. Pour aller plus loin

[modifier | modifier le wikicode]

 Page précédente : Tables et tableaux

Part. II, ch. 6  •  Images et figures  •  Sommaire

Page suivante : Styles typographiques