Insérer des images

Première version en 2012, mise à jour le 2 avril 2020 (confinement Covid19)

Pour insérer une image dans un document tu emploies \externalfigure[non de l'image]. Les formats supportés nativement par ConTeXt sont :

\externalfigure[mon-image][size=artbox]

Voici un article qui explique les zones de pages PDF, d'autres renseignements ici.

ConTeXt peut également intégrer d'autres formats mais en les convertissant avec des programmes externes qu'il faut bien sûr avoir installé sur son ordi :

Tu verras apparaître dans le répertoire un nouveau fichier portant comme nom un truc du genre m_k_i_v_monimage.pdf

Voici un exemple de placement d'image :

\starttext
\externalfigure[cow]
\stoptext

cow est une image qui fait partie de ConTeXt et qui dessine une magnifique vache hollandaise, elle permet de faire des essais. C'est un fichier .pdf. Elle existe aussi en marron cow-brown.pdf et en Metapost cow-brown.mps, cow.mps et en marron avec un contour vert cow-fun.mps.

Il existe deux autres images d'essai hacker.jpg un dessin bitmap en couleur et mill.png la photo en N&B d'un moulin. Leur rôle est de servir lors de la création d'exemples de travail minimum pour illustrer un bogue sur la liste de diffusion. Ces images se trouvent dans le répertoire TEXMF. Pour pouvoir utiliser ces images, il faut préciser le chemin des images avec :

\starttext
\setupexternalfigure[location = { local, global ,default}]
\stopt4ext

J'explique ci-dessous l'utilisation de \setupexternalfigure.

Contrairement à ce qui est conseillé dans la littérature consacrée à LaTeX, avec ConTeXt il vaut mieux spécifier les extensions des fichiers. Certaines erreurs avec les images proviennent de confusion avec d'autre fichiers portant le même nom. En plus ConTeXt ne fourni que du PDF, donc il n'est pas utile de jongler avec différents formats d'image pour obtenir, comme sous LaTeX, du DVI ou du PDF.

Si tu ne précises pas l'extension, l'ordre dans lequel ConTeXt va chercher les images est image.pdf, image.mps, image.jpg, image.png, image.jp2, image.jbig, image.jbig2, image.jb2.

Si tu veux un format bien précis, comme par exemple le png, car le jpg ne gère pas la transparence tu ajoutes l'extension.

\externalfigure[image.png]

Si ton fichier n'a pas une extension standard tu précises le type avec method=type, où type est un des formats reconnu par ConTeXt par exemple

\externalfigure[image][method=png]

Si ton fichier n'a pas d'extension tu utilises method=auto, ou tu ajoute l'extension .auto à ton fichier image, dans ce cas ConTeXt lis les premières lignes du fichier pour déterminer le type de fichier.

\externalfigure[image][method=auto]


\externalfigure[image.auto]

La vache hollandaise elle est bien gentille, mais je doute qu'elle te soit très utile pour illustrer tes articles et tu vas vouloir utiliser tes propres images. Il faut donc, indiquer à ConTeXt où trouver ces images.

Indiquer le répertoire contenant les images

Si tu places tes images dans le même répertoire que tes fichier .tex, tu peux continuer à utiliser \externalfigure en utilisant uniquement le nom de fichier, comme ci-dessus. Il est quand même plus judicieux d'avoir un ou plusieurs répertoires pour les figures. Pour indiquer à ConTeXt où trouver ces images, tu utilises l'option directory de \setupexternalfigures. Si à l'intérieur de mon répertoire monarticle, où sont stockés mes fichiers .tex je crée un répertoire images pour y mettre toutes mes figures, je procède comme suit :

\setupexternalfigures[directory={images}]

Si tes illustrations sont réparties dans plusieurs répertoires :

\setupexternalfigures[directory={images,photos,plans}]

Tu peux indiquer le chemin complet :

\setupexternalfigures[directory={/home/bebert/images/images-monarticle,/home/bebert/images/photos-monarticle}]

Il faut toujours utiliser les /, même sous Windows

Tu dois écrire :

\setupexternalfigures[directory={c:/mes documents/images/images-monarticle,c:/mes documents/images/photos-monarticle}]

et non pas c:\mes documents\images\images-monarticle comme il est d'usage sous Windows.

L'option location permet de préciser le lieu et l'ordre des recherches dans les répertoires :

Tu peux mettre plusieurs options, l'ordre déterminant l'ordre de la recherche. Par exemple la valeur par défaut est location={local, global}, donc si tu ne précises pas de valeur pour location, ConTeXt va d'abord explorer le répertoire courant et s'il y trouve une image correspondant, il ignorera le répertoire défini dans directory.

Tu peux télécharger directement une image provenant d'un site web :

\externalfigure[http://tug.org/images/logobw.jpg]

Les options pour \setupexternalfigures

n'oublie pas le s

On a déjà vu location et directory, les autres sont :

option

Qui prend la valeur empty et qui affiche un cadre gris de la taille de l'image. Utile si on a de gros documents avec de nombreuses images car il permet de réduire les temps de compilations lors de l'élaboration du texte. Les images originales sans modification :

\starttext
\externalfigure[cow]
\externalfigure[mill]
\stoptext

Avec option=empty

\starttext
\setupexternalfigures[option=empty]
\externalfigure[cow]
\externalfigure[mill]
\stoptext

Deux autres options sont possible frame qui dessine un cadre autour de l'image et test pour tester les images interactives.

frame

Prend deux valeurs on ou off, dessine ou non un cadre autour de l'image :

\starttext
\setupexternalfigures[frame=on]
\externalfigure[cow]
\externalfigure[mill]
\stoptext

Modifier l'image

Tu peux ajouter des options \externalfigure pour modifier l'image :

\externalfigure[nom-fichier-image][option1, option2,. . .]

Le nom du fichier image doit toujours être placer en premier


\externalfigure[option1, option2,. . .][nom-fichier-image]

Provoque une erreur de compilation.

scale, xscale, yscale

scale=nombre permet de modifier l'échelle de l'image. scale=1000 correspond à l'échelle 1/1 (la taille originale de l'image). Tous les chiffres < 1000 diminue la taille de l'image tous ceux >1000 l'augmente. Par exemple pour réduire de moitié l'image (50%) tu utilises scale=500 et pour la doubler scale=2000. Sur le même principe xscale gère uniquement la largeur de l'image et yscale sa hauteur.

maxwith et maxheight

Permet de limiter les images incluses à des dimensions particulières. Par exemple, pour vous assurer qu'une image incluse ne dépasse pas la moitié de la largeur du texte :

\externalfigure[nom-fichier-image][maxwith=0.5\texwidth/span>]

Si maxwidth est spécifié et que la largeur de l'image est inférieure à maxwidth , l'image n'est pas mise à l'échelle; si la largeur de l'image est supérieure à la largeur maximale, alors la largeur est limitée à la largeur maximale et la hauteur est mise à l'échelle de manière appropriée pour conserver le rapport hauteur / largeur d'origine.

Idem pour maxheight

with et height

Permettent de préciser des dimension respectivement pour la largeur et la hauteur de l'image :

\starttext
\externalfigure[cow][width=15cm, height=5cm]
\stoptext

Si tu n’utilises qu'une seule dimension soit width, soit height, ConTeXt ajuste automatiquement l'autre dimension pour conserver le rapport hauteur / largeur d'origine.

hfactor, wfactor

Permet de modifier l'image en fonction de la taille de la fonte. hfactor gère la hauteur et wfactor la largeur. hfactor=20 donne une image dont la hauteur est 2 fois plus grande que la fonte, donc si la fonte est de 12pt l'image aura une hauteur de 24pt. wfactor=120 donne une largeur 12 fois plus grande soit 144pt pour une fonte de 12pt. Si tu utilises qu'un seul modificateur, l'échelle est conservée, si tu utilises les deux l'image peut être déformée.

La vache hollandaise elle est mignone, mais je n'est pas trouvé de texte parlant de vache, par contre des textes parlant de bière dans le Nord c'est pas ce qui manque. Alors dehors la vache et voici la choppe de bière (taille réelle) :

\starttext
\externalfigure[biere]
\stoptext

Maintenant en utilisant hfactor et wfactor pour l'intégrer à un texte :

\starttext
«... Ayant toujours aimé hausser le coude, il en but une seconde \externalfigure[biere][hfactor=10], puis une troisième \externalfigure[biere][wfactor=10], puis une foule d'autres \externalfigure[biere][hfactor=20] avec ses bons amis les Fresnois.\externalfigure[biere][hfactor=10,wfactor=20]»

Contes d'un buveur de bière

Dix récits de Charles {\sc Deulin} (1827-1877)
\stoptext

Si je modifie la taille du texte (avec \switchtobodyfont) les figures s'adaptent :

factor

Prend les valeurs suivante : max, fit et broad.

max permet à l'image de prendre le maximum de place possible sur la page sans déborder de la zone de texte aussi bien en hauteur qu'en largeur et sans déformation de l'image.

fit l'image occupe tout l'espace restant libre sur la page.

broad identique à fit mais un espace est réservé pour la légende.

\starttext
\externalfigure[biere][factor=max]
\stoptext

Tu peux mettre plusieurs plusieurs possibilités, dans ce cas ConTeXt choisira la meilleur :

\externalfigure[biere][factor=max, height=0.4\textheight]

orientation

Permet la rotation de l'image seules 4 angulations sont possible : -90 90 180 270

\starttext
\externalfigure[biere][orientation=90]
\stoptext

Si tu veux un autre angle il faut passer par la commande \rotate :

\starttext
\rotate[rotation=42]{\externalfigure[biere]}
\stoptext

frame

Avec pour valeur on et off, ajoute un cadre autour de l'image :

\starttext
\externalfigure[biere][frame=on]
\stoptext

Ajouter un fond coloré

Avec les options background, backgroundcolor, tu peux ajouter un fond à ton image :

\starttext
\externalfigure[biere][background=color,backgroundcolor=green]
\stoptext

Tu peux augmenter (ou diminuer) la taille du fond avec backgroundoffset

\starttext
\externalfigure[biere][background=color,backgroundcolor=green,backgroundoffset=30pt]
\stoptext

Attention dans ce cas il est possible que le fond déborde sur le texte entourant l'image.

Placer du texte autour d'une image

Il faut utiliser la commande \starthanging :

Pour les versions anciennes de ConTeXt la commande était : \starthangaround. La version de ConTeXt dans la TeXlive2012 ne reconnait que \starthanging.

\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

Attention il ne faut pas mettre de ligne entre la commande \starthanging et le texte car tu n'obtiens pas le résultat voulu :

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

dans ce cas l'image et le texte seront superposés.

Les versions récentes de ConTeX (décembre 2012) contiennent des options qui permettent de placer l'image à droite :

\starthanging[right]{\externalfigure[fricandelle][width=4cm]}

que tu peux aussi écrire

\starthanging[location=right]{\externalfigure[fricandelle][width=4cm]}

Tu peux également définir l'espace entre le texte et l'image :

\starthanging[distance=1cm]{\externalfigure[fricandelle][width=4cm]}

La distance peut être négative.

Tu peux choisir le nombre de lignes qui seront indentées (3 ligne dans l'exemple ci-dessous) :

\starthanging[n=3]{\externalfigure[fricandelle][width=4cm]}

Un exemple idiot :

\starttext
{\tfd La reine de la friterie : la fricandelle}
\blank[big]
\starthanging[distance=1cm,n=3]{\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

Images avec hyperlien

\setupinteraction[state=start]
\starttext
Une bonne \goto{\externalfigure[biere][height=2ex]}[url(https://fr.wikipedia.org/wiki/Liste_de_marques_de_bi%C3%A8res_brass%C3%A9es_en_France#Nord)] du Nord.
\stoptext

Une bonne du Nord.