Mme/Mr Michu se lance dans l’insertion d’illustrations

Comme Mme/Mr Michu dans son texte parle des cadastres de Salomon Caine et qu’elle/il en possède des reproductions, elle/il se dit que se serait une bonne chose d’en faire figurer un exemplaire.

Nous sommes parti pour une explication qui risque d’être longue, car s’il est facile d’insérer une image dans un texte, le faire de façon efficace est plus compliqué et va faire appel à des notions comme les flottants, qui n’existent pas dans les traitements de texte. Les forums de discutions consacré à LATeX/ConTeXt sont remplis de questions de LATeX/ConTeXtiens novices n’arrivant pas à placer correctement leurs images. Donc nous allons prendre notre temps et j’espère que tu n’iras pas grossir la cohorte des débutants qui se sont emmêlé les pinceaux dans les flottants.

Mme/Mr Michu insère un petit pingouin

Nous allons reprendre notre petit pingouin (pingouin) que tu as rencontré dans les premières pages de ce document.

Pour LATeX l’insertion d’images c’est le boulot du package graphicx, il te faut donc ajouter le fichier de préambule la ligne suivante :

\usepackage{graphicx}

Le compilateur sous LATeX qui fabrique les .pdf (pdflatex) n’accepte que trois formats d’images .png, .jpg et .pdf. Donc la première chose à faire est de vérifier le format de tes images et le cas échéant à les modifier.

ConTeXt accepte les formats suivants : .pdf, .png, .jpg, jpeg, .jp2, .jbig, .jbig2, .jb2

ConTeXt peut également intégrer d'autres formats mais en les convertissant (lui même, tu n’as rien à faire) avec des programmes externes qu'il faut bien sûr avoir installé sur son ordi :

À la fin de la compilation de ton fichier .tex tu verras apparaître dans le répertoire ou se trouve l’image, un nouveau fichier portant comme nom un truc du genre m_k_i_v_monimage.pdf, qui est l’image converti par ConTeXt.

Notre petit pingouin s’appelle Tux et son image tux.png. Les commandes pour le placer dans le texte sont donc :

\includegraphics{tux.png}
\externalfigure[tux.png]

Comme aucun répertoire n’est indiqué LATeX/ConTeXt va chercher l’image uniquement dans le répertoire courant, c’est à dire celui qui contient le fichier historique.tex

Mme/Mr Michu pour s’y retrouver organise son travail

Pour faciliter la gestion de tes documents je te conseille de placer tes images dans un répertoire « images » dans le répertoire où se trouve tes fichiers LATeX/ConTeXt. Dans ce cas, la commande pour placer notre petit pingouin est donc :

\includegraphics{./images/tux.png}
\externalfigure[./images/tux.png]

Tu peux définir le chemin du répertoire ou LATeX/ConTeXt doit aller chercher les images.

Sous LATeX par :

\graphicspath{{./images/}}

L’expression ./images/, signifie dans le répertoire « images » du répertoire courant. Tu places cette commande dans le fichier de préambule. Si tu as trié tes illustrations dans différents répertoires en fonction de leur nature (schémas, photos, dessins), il te faudra utiliser la commande :

\graphicspath{{./shema/}{./photos/}{./dessins/}...{./dossierN/}}

Même si tu ne déclares qu’un seul répertoire il doit être entouré de {}, et n’oublie pas la barre de fraction (/) finale.

Pour indiquer à ConTeXt où trouver les images, tu utilises l'option directory de \setupexternalfigures :

\setupexternalfigures[directory={images}]

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

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

Tu peux indiquer le chemin complet :

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

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

Tu dois écrire :

\graphicspath{{c:/mes documents/images/images-monarticle}{c:/mes documents/images/photos-monarticle}}
\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.

Avec LATeX tu peux t’abstenir de préciser l’extension si tu as mis dans le préambule de ton document la commande :

\DeclareGraphicsExtensions{.png,.jpg,.pdf}

Dans l’exemple ci-dessus, LATeX va d’abord chercher l’existence d’un fichier en .png, s’il ne trouve pas, un fichier en .jpg et enfin en .pdf. Tu peux bien évidemment changer l’ordre.

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.

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.

Dans les exemples qui suivent on va considérer que j’ai déclaré le chemin et les extensions.

On va placer notre première image dans un document. Voici le code (pour la complétion automatique sous LATeX le raccourci est inc + Tab ) :

Voici comment insérer une image, \incudegraphics{tux.png}. C’est un petit pingouin.
Voici comment insérer une image, \externalfigure[tux.png]. C’est un petit pingouin.

Voici les résultat, il y a une petite différence entre LATeX et ConTeXt

Tableau.
Le pingouin LATeX est trop grand.
Tableau.
Le pingouin ConTeXt ça va (c’est la même image dans les deux cas).

C’est l’occasion d’étudier le redimensionnement des images.

\includegraphics accepte des options du type option=valeur, séparées par des virgules.
\includegraphics[option1=valeur1,option2=valeur2]{image}

Tu peux commencer par modifier l’échelle de ton image par l’option scale. Des valeurs supérieures à 1 augmentent la taille de l’image (scale=2 double la taille), des valeurs comprises entre 0 et 1 diminuent la taille (scale=0.5 divise par 2 les dimensions). Pour la complétion automatique le raccourci est inc + Tab pour obtenir \includegraphics{|} et tu appuies une deuxième foi sur Tab pour avoir \includegraphics[|]{}

Voici comment insérer une image, \incudegraphics[scale=0.2]{tux.png}. C’est un petit pingouin.
Tableau.
Voila qui est beaucoup mieux.

Tu peux également donner directement les dimensions souhaitées pour l’image. L’option width règle la largeur de l’image et height sa hauteur. Si tu ne donnes qu’une seule dimension les proportions de l’image seront conservées. Voici différents exemples :

Voici comment insérer une image, \incudegraphics[width=1cm]{tux.png}. C’est un petit pingouin.
Tableau.
Un pingouin d’un centimètre de large.
Voici comment insérer une image, \incudegraphics[width=4cm,height=1cm]{tux.png}. C’est un petit pingouin.
Tableau.
Un pingouin déformé.

\incudegraphics possède d’autres options je te renvoies à cette fiche qui les présente.

\externalfigure fonctionne de la même façon.

\externalfigure[nom-fichier-image][option1=valeur1,option2=valeur2,…]

Le nom du fichier image doit toujours être placé en premier


\externalfigure[option1=valeur1,option2=valeur2,…][nom-fichier-image]

Provoque une erreur de compilation.

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.

Voici comment insérer une image, \externalfigure[tux.png][xscale=500,yscale=2000]. C’est un petit pingouin.
Tableau.
Un pingouin passé dans une presse.

ConTeXt n'aime pas les espaces entourant le signe =. Donc tu n'écris jamais option = valeur ou option= valeur mais toujours option=valeur. Les espaces entourant le signe = ne provoquent pas d'erreur de compilation mais l'option risque de ne pas être prise en compte. Donc si ton changement d'échelle n'est pas effectif regarde si par hasard tu n'as pas écris xscale = 500 ou xscale= 500 !

LATEX s'en fiche, tu peux mettre des espaces avec le signe = si tu estimes que c'est plus lisible.

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

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.

\externalfigure possède d’autres options je te renvoies à cette fiche qui les présente.

LATeX/ConTeXt et les longueurs

On manipule pas mal de longueurs avec LATEX/ConTeXt. Contrairement au traitement de texte, dans lesquels tu utilises la souris et des poignées de réglage, sous LATeX/ConTeXt tu es obligé, comme on vient de le voir pour l’insertion d’image, de préciser un certain nombre de dimensions. Ces mesures de distance se répartissent en deux groupes :

Les unités absolues : ces unités ont toujours la même valeur quelque soit la forme du document et sont indépendantes de LATeX/ConTeXt. Par exemple le point, le centimètre, le millimètre ;

Les unités relative : ces unités dépendent des caractéristiques de ton documents. Par exemple le cadratin, qui représente la largeur de la lettre M dans la police courante, dépend bien évidement la police utilisée. \textwidth (indentique pour LATeX et ConTeXt) qui représente la longueur du texte dépend de la mise en page de ton document.

Je ne vais pas te décrire la totalité des unités absolues prise ne charge par LATeX/ConTeXt, car elles sont nombreuses et je doute, que par exemple, tu ais besoin d’utiliser le cicéro qui vaut 12 didots, lui même valant 1,07 pt. Mais si tu as besoin d’unités exotiques ou typographiques, cette fiche pour LATeX ou celle-ci pour ConTeXt, devrait répondre à tes questions.

Pour les unités absolues je n’utilise que les millimètres et les centimètres et dans de rare cas le point typographique (noté pt) qui est l’unité pour définir la taille d’une police de caractère.

J’utilise les unités absolues pour tout ce qui concerne la page, comme placement d’objet, la taille des marges, … Le format de page A4 étant définit en centimètre (21x29,7 cm) je me repère mieux dans la page en utilisant les centimètres. De même pour la taille des photos, un format de 9x13 cm est plus facile à se représenter que 0.8\textwidth (la largeur du texte).

J’utilise également plusieurs unités relatives :

Le cadratin

Le cadratin (em) équivaut à la force du corps de la police utilisée. Par exemple dans un texte tapé en corps 11, un cadratin mesurera 11 points.

Le tiret long ou tiret cadratin — que l’on écrit en LATeX/ConTeXt « --- » et que tu utilises si tu veux retranscrire un dialogue, vaut 1 em.

Le tiret court (demi-cadratin) – que l’on écrit en LATeX/ConTeXt « -- » et qui est utilisé dans les listes, vaut 0.5 em.

Le quart de cadratin (0.25 em) - que l’on écrit en LATeX/ConTeXt « - » qui est utilisé pour les césures ou les mots ou noms composés.

L’espace fine qui ce met devant les signes doubles comme : ; ! ou ? s’écrit « \, » en LATeX/ConTeXt et vaut un quart de quadratin.

J’emploie le cadratin dans toutes les dimensions qui concernent le texte comme par exemple dans les tableaux ou les cadres pour ajuster l’espace entre le texte et les filets,… Si je change le type de police, les distances ainsi définies vont évoluer en fonction de ces nouvelles données et les proportions recherchées vont être conservées.

Hauteur d'x

Cette unité, notée « ex » correspond à la hauteur du x bas-de-casse. Voici un petit schéma emprunté à Wikipédia pour mieux comprendre.

résultat du code
La hauteur d'x (traits rouges) varie en fonction de la police. Les traits noirs correspondent au corps de la police.

Je l’utilise essentiellement pour définir des hauteurs, comme par exemple l’espace entre deux lignes \vspace{1.5ex} (LATeX) \blank[1.5ex] (ConTeXt), c’est à dire, égal à 150% de la hauteur du x bas-de-casse, ou l’épaisseur d’un trait \rule{5cm}{0.5ex} (LATeX) \blackrule[width=5cm, height=0.5ex] (ConTeXt).

Système propre à LATeX/ConTeXt

Ces unités sont essentiellement utilisées dans la mise en page des documents. Je te renvoie à la fiche sur la mise en page pour en avoir la liste. J'en utilise que deux \textwidth (commune à LATeX et ConTeXt, mais attention qui ne représente pas la même chose) et \makeupwidth (ConTeXt) et \linewidth (LATeX).

\makeupwidth (ConTeXt) et \textwidth (LATeX) représente la longueur d’une ligne texte dans la page. \textwidth (ConTeXt) et \linewidth (LATeX) représentent la longueur de la ligne de texte dans l’environnement courant. La plupart du temps \makeupwidth = \textwidth, mais quand on est dans un environnement framed (ConTeXt) ou minipage (LATeX) ou dans un environnement multi-colonnes les 2 valeurs sont différentes. Dans le dessin ci-dessous la ligne bleue représente \makeupwidth/\textwidth et la rouge \textwidth/\linewidth dans un environnement normal et dans un environnement à 3 colonnes.

résultat du code

Mme/Mr Michu en veut un petit peu plus

Maintenant tu sais placer une image dans un document LATeX/ConTeXt. Mais ce n’est pas exactement ce que tu veux. Tu aimerais avoir une image centrée, avec une légende en dessous, avec si possible un numéro de figure comme l’illustration suivante :

résultat du code
Figure 7.1 – Jeux de mains, jeux de vilains.

Pour parvenir à ce résultat il faut employer les flottants.

Mme/Mr Michu flotte

Sous LATeX/ConTeXt en utilisant, respectivement \includegraphics ou \externalfigure que l’on a vu dans la section précédente, quand tu places une image dans ton source, tu ne sais pas à quel endroit de la page (ni sur quelle page) tu te trouves, puisque la compilation n’a pas eu lieu. Tu ne sais même pas s’il reste assez de place sur la page pour la mettre à cet endroit. Prenons un exemple, tu veux insérer une image après une portion de texte. Seulement, pas de chance, après compilation la fin de ce morceau de texte se trouve à 6 cm du bas de la page. Avec la meilleure volonté du monde LATeX/ConTeXt ne pourra y faire tenir ton image de 9x13 cm. LATeX/ConTeXtva donc la positionner en haut de la page suivante et laisser au bas de la page précédente un blanc de 6 cm. Enfin pas vraiment car LATeX/ConTeXt étant plus subtil que les traitements de texte classiques, va répartir ce blanc entre les différents espaces inter-paragraphe, s’ils existent, de la page. Pas terrible !

Pour régler ces problèmes du placement des figures, LATeX/ConTeXt offre une autre voix.

Au lieu de dire à LATeX/ConTeXt je veux une image ici, tu vas lui dire, j’aimerais, s’il te plaît, que tu places mon image ici. Comme tu as été très poli avec LATeX/ConTeXt, il va faire un effort. Il ne peut te garantir qu’il pourra la mettre exactement ici mais il va essayer de la placer au plus près. Ton image va donc flotter dans le texte en fonction de la place disponible et de critères esthétiques, connus de LATeX/ConTeXt. Elle pourra être placée avant ou après son point d’insertion. Voila pourquoi en langage LATeX/ConTeXt on les appelle des flottants.

L’un des avantages des flottants par rapport au placement d’image des traitements de texte classiques, est que si plus tard, dans ton processus de création, tu rajoutes du texte avant ton image, même pas mal, LATeX/ConTeXt va se débrouiller tout seul comme un grand pour te trouver un nouvel emplacement qui va bien, pour ton image.

Où Mme/Mr Michu apprend qu’il existe plusieurs types de flottants

Il existe plusieurs types de flottants, en fonction des objets que tu veux insérer comme des figures ou des tableaux. La différence entre les environnements ce situe au niveau de la légende et de la table associée. Dans le cas de figures tu auras une numérotation en « Figure 1, Figure 2,. . ., Figure n » et une Tables des figures et dans l’environnement table, une numérotation en « Table 1, Table 2,. . ., Table n » et une Liste des tableaux. Les flottants sont automatiquement numérotés.

Sous LATeX il s’agit d’environnement qui commencent donc par \begin{} et finissent par \end{}. L’insertion de l’image ce fait par \incudegraphics, la légende est produite par la commande \caption et le référencement par \label.

Pour les images :

\begin{figure}[!htbp]
\includegraphics[width=12cm]{monImage}
\caption{La légende de mon image.}
\label{labelImage}
\end{figure}

Pour les tableaux :

\begin{table}[!htbp]
\begin{tabular}
... données du tableau ...
\end{tabular}
\caption{La légende du tableau.}
\label{labelTableau}
\end{table}

Avec ConTeXt, il y a 5 commandes pour placer un flottant :\placefigure et \placetable, \placechemical (pour insérer des formules chimiques), la commande \pla­cegraphic (pour insérer des graphiques) et la commande \placeintermezzo pour insérer des textes encadré qui sont des apartés ou des compléments par rapport au texte principal.

À ces commandes il faut ajouter \placefloat qui est la commande généraliste qui permets de les lancer toutes, ainsi que celles que tu as pu crées avec \definefloat, tu l’utilises comme ceci \placefloat[ NomDuFlottant] . \placefloat[ figure] et \placefigure c’est tout pareil, ainsi que \placefloat[ table] et \placetable. \placefloat se comporte par défaut (sans indication de NomDuFlottant) comme \placefigure.

Elles se comportent toutes de la même façon

\placefloat[emplacement,options][référence]{le texte de la légende}{\externalfigure[image][option=valeur,…]}
ConTeXt possède également des environnements :
\startplacefloat[option=valeur,option,…]
\externalfigure[image][option=valeur,…]
\stopplacefloat

Tu as :

\startplacechemical ... \stopplacechemical

\startplacefigure ... \stopplacefigure

\startplacetable ... \stopplacetable

\startplaceintermezzo ... \stopplaceintermezzo

\startplacegraphic ... \stopplacegraphic

Les environnements ont les mêmes options que les commandes, mais permettent entre autre la gestion des légendes courtes et des bookmarks pdf.

Où Mme/Mr se rend compte qu’image et flottant c’est pas pareil

Il ne faut pas confondre flottants et image (ou tableau). Le flottant correspond à tout ce qui est entre les bornes \begin{image} et \end{image} (ou \begin{table} et \end{table}) pour LATeX, et dans la commande \placefloat pour ConTeXt, donc l’image (ou le tableau) et la légende. Ce qui est à l’intérieur du flottant est indivisible et forme un bloc. Souviens-t-en quand tu écriras des légendes longues. D’ailleurs dans n’importe quel flottant tu peux mettre n’importe quel objet LATeX/ConTeXt, du texte, des images, des tableaux, des listes, des formules mathématiques … Ils seront juste considérés comme un tableau une illustration,… en fonction du flottant choisi.

résultat du code
Différence entre flottant et image. J’ai mis les légendes en rouge pour bien visualiser l’espace occupé par les flottants, marqué par le cadre bleu.

Où Mme/Mr Michu doit respecter quelques règles

Si tu ne veux pas galérer avec les flottants il est nécessaire de bien en comprendre le fonctionnement et de respecter quelques règles.

L’emploi de flottants a plusieurs conséquences. Premièrement tu ne peux pas employer des formules du type « voir sur l’image ci-dessous ». En effet ton image peut très bien être en haut de la page où sur la page suivante. Tu dois employer des trucs du style, « voir l’image no x page y ». On verra comment faire cela, c’est ce que l’on appelle des références croisées.

TeX, n’a pas été initialement conçu pour manipuler des graphiques (images, dessins,...), dans les années 1980 les imprimantes étaient bien incapable d’imprimer des images. Des extensions ont été crées pour l’intégration des images par exemples graphics puis graphicx pour LATeX.

Pour conserver une certaine esthétique typographique LATeX et ConTeXt utilisent des algorithmes qui tiennent compte d’un certain nombre de règles de positionnement des illustrations par rapport au texte.

Je ne connais pas celles employées par ConTeXt mais celle utilisées par LATeX sont documentées et je vais t’en préciser quelques unes qui t’aiderons dans l’intégrations d’images dans ton documents. Quand j’utilise les flottants sous ConTeXt je me réfère aux règles LATeXiènes pour gérer mes images.

La première règle est que le nombre total de flottants permis sur une page est de 3 par défaut, avec un maximum de 2 en haut de la page et 1 seul en bas de page.

Une autre règle observée par LATeX est qu’une page mélangeant des images (ou des tableaux) et du texte, contient au minimum 20% de texte. Donc si 1 ou 2 flottants occupent 80% de la surface le ou les suivants seront déplacés sur la page suivante.

LATeX préfère placer les flottants en haut de page, même avant leur appel.

Mme/Mr Michu espère faire plier LATeX

Comme je te l’ai déjà expliqué l’endroit ou tu positionnes le flottant dans le source n’est qu’une indication de placement, LATeX de toute façon n’en fera qu’à sa tête. Tu peux quand même préciser ton souhait par des options que tu places entre [ ] :

! : les règles de placement vues précédemment, comme le nombre de flottants par page, sont ignorées ;

h : là ou il apparait dans le source (h pour here) ;

t : en haut de la page (t pour top) ;

b : en bas de la page (b pour bottom) ;

p : sur une page à part, sans texte (p pour page). Cette page est appelée page flottante.

Tu peux mettre plusieurs options (sans les séparer par une virgule), leur ordre n’a aucune importance, LATeX utilise toujours le même ordre ( !, h, t, b, p) jusqu’à rencontrer un placement indiqué et réalisable. \begin{figure}[tbh], \begin{figure}[bth], \begin{figure}[hbt], c’est pareil et c’est traité par LLATeX en h, t, b.

Notes que les options doivent être mise après \begin{figure}, \begin[htb]{figure} produit une erreur de compilation, tu dois écrire \begin{figure}[htb].

Mme/Mr Michu sachez que LATeX à toujours raison

Il y a une chose fondamentale à connaître au sujet des options de placement. LATeX n’étudiera que les options mentionnées. Imaginons que tu aies une illustration qui occupe 40% d’une page et que tu fournisses comme option [hb] LATeX étudiera h puis b, les autres (t et p) seront ignorées.

Je peux t’annoncer tout de suite que b sera ignorée car ton illustration dépasse les 30% autorisée pour une image de bas de page. Quand à h si après compilation elle se trouve en haut de page elle peut passer (si d’autres images n’occupent pas la place), mais s’il est en bas de page, elle sera également refusée. LATeX ne pourra la placer, et l’illustration ira dans la file d’attente des figures non placées (unprocessed float).

Pour améliorer la situation tu peux utiliser [!hb]. Le point d’exclamation (!) empêchant LATeX d’utiliser les règles d’esthétique, ta figure pourra être placée en bas de la page.

LATeX en plus des règles esthétiques vues précédemment, suit également des règles pour le placement des flottants :

Pour toutes ces raisons il faut à tout prix bannir les options uniques ([h], [b], [t] et [p]). Si tu ne précises pas d’option LATeX, utilise [tbp].

Plus tu donnes d’options, mieux LATeX traite le placement des flottants. Les options suivantes marchent bien [htbp], [tbp], [htp] et [tp].

Le nombre de flottants stockés dans liste des flottants non placés ne peut dépasser 18. Au-delà tu obtiens une erreurs de compilation « Too many unprocessed floats ». Les flottants de la liste sont placés automatiquement à la fin d’un chapitre ou à la fin du document pour les documents comme les articles qui n’ont pas de chapitre.

La commande \clearpage place tous les flottants en attente et commence une nouvelle page.

L’option p permet de placer un flottant sur une page sans texte. Cette page est une page flottante. Elle obéit également à des règles. Par défaut 50% de cette page doit être occupé par un flottant. On ne peut donc pas mettre une seule petite illustration sur cette page. Si l’image est trop petite LATeX complétera cette page flottante avec l’image suivante.

J’espère que le fonctionnement des flottants n’a plus de secret pour toi. L’une des principales erreurs des débutants LATeXiens, est de mettre des conditions de placement trop strictes. Tu fais du LATeX donc oublies tes réflexes WYSIWYG. Laisse à LATeX le plus de liberté possible pour le placement de tes illustrations, tu verras il ne se débrouille pas si mal. Quand tu lis un rapport, le fait que l’image ne soit pas immédiatement à côté du texte n’est pas très gênant.

Quelques conseils, également valable pour ConTeXt :

Et ConTeXt dans tout ça ?

Avec ConTeXt les options sont plus nombreuses et plus larges qu’avec LATeX.

CodeFonction
none Supprimez la légende, y compris l'étiquette "Figure 1".
left À gauche du texte
right À droite du texte
here De préférence ici
force Forcer le placement ici
top En haut de la page
bottom Au bas de la page
inleft Dans la marge gauche
inright Dans la marge de droite
inmargin En marge (gauche ou droite)
margin En marge (marge flottante)
page sur une nouvelle page (vide)
opposite sur la page de gauche
always priorité sur les flottants stockés
il y a encore beaucoup d’autres options tu as la liste sur le wiki de ConTeXt

Tu peux utiliser plusieurs options, il suffit de les séparer par des virgules. Par exemple \placefloat[here,force] pour forcer ConTeXt à placer ton image à cet endroit.

En plus tu peux affiner les réglages de chaque option à l’aide de \setupfloats et \setupfloat, mais cela nous entraîne au delà de ce document, mais tu peux voir cela en détail dans cette fiche. Je vais juste te montrer un exemple avec none qui supprime la légende et left qui place l’image à gauche du texte :

…sur le papier, et dans des cordons verticaux, plus jolis encore, toujours sur le papier, mais impossibles, en vertu des lois végétales.

\placefloat[left,none]{ }{\externalfigure[groseille-2][width=10cm]}

Il a eu l’irrévérence d'ajouter à son geste, à l'adresse de l'éminent professeur, une foule de gourmands,…

Tableau.

Pour faire la même chose avec LATeX il faut utiliser le package wrapfig.

Pour notre rapport on va ce contenter du truc de base, une illustrations centrées avec une légende.

Mme/Mr Michu place sa première illustration

Revenons à notre rapport et à l’insertion d’une représentation d’un des cadastres de Salomon Caine. Notre image est grande, 20 x 29 cm, donc le meilleur placement est une pleine page et même dans se cas il nous faut la réduire. Réduire la largeur de notre image à la largeur du texte devrait donner un bon résultat. La largeur du texte d’un document LATeX/ConTeXt est donné par \textwidth (voir plus haut). Le placement de notre image se fait par le code :

\begin{figure}[p]
\includegraphics[width=\textwidth]{cadastre}
\end{figure}

La complétion s’obtient avec bfi + Tab + Tab.

Stop, pas la peine de me le faire remarquer, je sais, j’ai dit qu’il fallait bannir les options uniques comme [p], mais ici l’image est tellement grande qu’elle ne peut tenir que sur une pleine page, donc je suis sûr de mon coup.

\placefigure[page][]{}{cadastre.png}

Mme/Mr Michu légende

Les légendes s’obtiennent pour LATeX à l’aide de \caption{Texte de la légende}. C’est tout, LATeX s’occupe de la numérotation de ta figure. Puisque la classe notre document est scrreprt (la classe rapport de KOMA-Script) nos illustrations sont numérotées par chapitre. Pour le chapitre 1 on aura Figure 1.1, Figure 1.2, . . . Figure 1.n pour le chapitre 2 Figure 2.1, Figure 2.2, . . . Figure 2.n et ainsi de suite.

Le code devient :

\begin{figure}[p]
\includegraphics[width=\textwidth]{cadastre}
\caption{Extrait d’un cadastre annoté par Salomon Caine.}
\end{figure}

La complétion s’obtient avec \ca + Tab .

De la même manière que pour les titres des sections, il existe une possibilité d’indiquer une légende courte, afin de ne pas mettre le bazar dans la liste des figures :

\caption[légende courte]{légende longue}

Pour ConTeXt le code est :

\placefigure[page][]{Extrait d’un cadastre annoté par Salomon Caine.}{\externalfigure[cadastre.png][width= \textwidth]}

ou bien

\startplacefigure[title={Extrait d’un cadastre annoté par Salomon Caine.},list={Un titre court},page]
\externalfigure[cadastre.png][width=\textwidth]
\stopplacefigure

Tu viens de voir dans cet exemple comment obtenir une légende courte pour la liste des figures, avec l’option list=.

Tableau.
Le résultat sous LATeX. J’ai ajouté artificiellement un cadre noir qui symbolise les limites du papier. Je trouve que le numéro de page est trop près de l’illustration. Il faudrait peut-être la diminuer avec width=0.9\textwidth
Tableau.
Le résultat sous ConTeXt. J’ai ajouté artificiellement un cadre noir qui symbolise les limites du papier.

Il y a deux trucs qui ne me vont pas dans la légende. Le premier est que dans les rapports ou les articles que j’écris, on ne met pas Figure 1.1 mais Fig. 1.1 et le deuxième est que je préfère une numérotation continue des figures plutôt que par chapitre. On va remédier à cela.

LATeX et la modification des légendes

Avant de pouvoir effectuer les modifications, sous LATeX, il faut charger le package caption.

\usepackage{caption}

Tu as deux façon de l’utiliser

soit

\usepackage[option1=valeur1,option2=valeur2,…]{caption}

soit

\usepackage{caption}
\captionsetup{option1=valeur1,option2=valeur2,…}

C’est ce deuxième cas que l’on va utiliser car l’option qui nous intéresse name renvoie une erreur dans le premier cas, car il faut préciser à quel flottant on applique le changement. Puisqu’on y est ont va mettre en gras le Fig. avec labelfont

\usepackage{caption}
\captionsetup[figure]{name=Fig.,labelfont=bf}

On place ces lignes dans notre fichier preambuleRapport.tex.

Pour avoir la numérotation des figures en continue, c’est un peu plus compliqué. Je ne vais pas rentrer dans le détail, j’ai fais une fiche qui explique le pourquoi du comment si ça t’intéresse, voici les trois lignes de code a ajouter à preambuleRapport.tex.

\usepackage{remreset}
\makeatletter \@removefromreset{figure}{chapter} \makeatother
\renewcommand\thefigure{\arabic{figure}}

ConTeXt et la modification des légendes

Avec ConTeXt pour modifier l'aspect de la légende on utilise \setupcaptions[option1=valeur1,option2=valeur2,…] pour affecter tous les flottants et \setupcaptions[nom du flottant][option1=valeur1,option2=valeur2,…] pour un flottant particulier, qui peut avoir été crée par \definefloat.

Pour avoir la numérotation des figures en continue, il faut comprendre que la numérotation est en deux parties. Dans Figure 2.1, le premier chiffre (2) correspond au numéro de la section qui déclenche la ré-initialisation de la numérotation, ici le chapitre (ici le chapitre 2) et après le point le numéro de figure dans la section (la première).

Tu changes la section qui déclenche la ré-initialisation de la numérotation avec la commande way à laquelle tu attribues les valeurs : bychapter pour une numérotation par chapitre (valeur par défaut), bysection pour une numérotation par section, bysubsection pour une numérotation par sous-section,… et bytext pour l’ensemble du texte.

Tu modifies le premier chiffre, celui qui indique le numéro de la section avec prefixsegments qui prend les valeur chapter pour un numéro de chapitre (valeur par défaut), section pour un numéro de section, subsection pour un numéro de sous-section,… Si tu ne veux pas que ce numéro apparaisse tu écris prefixsegments=none

Pour avoir une numérotation de 1 à n pour tout le texte sans tenir compte des sections :

\setupcaptions[way=bytext, prefixsegments=none]

Avec cette commande tous les flottants (figures, tableaux,… seront numérotés de 1 à n pour tout le texte).

Pour transformer Figure 1 en Fig. 1, il faut utiliser \setuplabeltext

\setuplabeltext[figure=Fig.]

Attention c'est figure avec un f minuscule car ça renvoie au nom du flottant et pas au nom du label.

Pour modifier un Tableau 1 en Tab. 1 tu utilises table=Tab.

Si tu as fais attention tu as pu remarquer qu’avec LATeX le numéro de figure est séparé par un tiret cadratin (Fig. —). Avec ConTeXt il n’y a qu’une espace. J’aime bien mettre un « : ». Pour LATeX on va laisser avec le — ça fera l’affaire mais pour ConTeXt puisque l’on va le modifier on va mettre un « : ».

On va donc modifier le séparateur, enfin le créer, car par défaut il n'y en a pas avec numberstopper.

\setupcaptions[numberstopper=:]

Tableau.

Par défaut ConTeXt ne met pas d'espace entre le numéro et le séparateur.

\setupcaptions[numberstopper={ :}]

Tableau.

Cette commande affecte tous les flottants. Si ta transformation ne concerne que les figures, tu procèdes comme suit :

\setupcaptions[figure][numberstopper={ :}]

La distance entre le séparateur et le texte de la légende se règle par distance

Par défaut cette distance est = 1em. Si tu trouves cette distance trop grande tu peux mettre quelque chose du genre :

\setupcaptions[numberstopper={ :}, distance=0.5em]

Je te le rappelle, car c’est important et source d’erreur, tu ne dois pas mettre d’espace entre le chiffre et les unités dans les commandes LATeX/ConTeXt.

Un dernier petit problème à régler avec LATeX

Ce problème apparaît quand on place une image dont la largeur est inférieure à la largeur du texte :
…rive méridionale). Un sondage très limité a été ouvert le long du talus (bande de \np[m]{5} de long sur \np[m]{0.5} de large, soit environ \np[m\up{2}]{2,5}), pour vérifier la densité des artefacts et la position stratigraphique du niveau.

\begin{figure}[ht]
\includegraphics[width=9cm]{vueSondage}
\caption{Vue du sondage réalisée en 2003.}
\end{figure}

Le niveau archéologique, exempt par ailleurs de tout cailloutis, se situait, semblait-il au sommet d’un limon humifère brun foncé (sol gris forestier du Début Glaciaire weichsélien) épais de quelques décimètres et reposant directement sur le cailloutis de …

Tableau.

Si la légende est bien centrée, l’image elle ne l’est pas ! Pour remédier à cella il faut ajouter \centering.

…rive méridionale). Un sondage très limité a été ouvert le long du talus (bande de \np[m]{5} de long sur \np[m]{0.5} de large, soit environ \np[m\up{2}]{2,5}), pour vérifier la densité des artefacts et la position stratigraphique du niveau.

\begin{figure}[ht]
\centering
\includegraphics[width=9cm]{vueSondage}
\caption{Vue du sondage réalisée en 2003.}
\end{figure}

Le niveau archéologique, exempt par ailleurs de tout cailloutis, se situait, semblait-il au sommet d’un limon humifère brun foncé (sol gris forestier du Début Glaciaire weichsélien) épais de quelques décimètres et reposant directement sur le cailloutis de …

Tableau.

Si tu utilises ConTeXt tu n’as pas ce problème tout le flottant est centré par défaut.

Mme/Mr Michu se recentre

Puisque l’on vient de parler de centrer un élément on va étudier le positionnement du texte sur la page, même si on en aura pas forcement besoin dans le cadre de notre rapport.

LATeX à trois commandes pour aligner le texte (ou des objets) et trois environnement :

— Mon anglais a beau être pitoyable, mais je sais que right = droite et left = gauche, alors pourquoi quand tu veux aligner à gauche la commande emploie right et l’environnement left ! comment veux-tu que je m’y retrouve ? s’étonne Mme/Mr Michu. C’est une survivance de la typographie au plomb. Une petite image tirée du site « https ://ty­pographisme.net/post/Viste-de-l-atelier-de-typo-1-la-composition » qui va tout t’expliquer :

Fer.
Voici la composition d’un texte avec des caractères en plomb. Sur la droite de l’image tu peux voir un fer disposé verticalement sur lequel s’appuie le début du texte. Vers la gauche de la page en court de composition, la fin de l’ensemble des phrases flottent un peu comme un drapeau.

Donc pour l’alignement à gauche, on peut dire aussi « fer à gauche » (flushleft), ou « drapeau droit » (\raggedright) et vice versa pour l’alignement à droite. Voila le pourquoi du comment, j’espère que c’est plus clair pour toi.

Pour en revenir à LATeX, les environnements pour aligner le texte, comme tous les environnements, créent un espace vertical avant et après eux. Les commandes ne le font pas. Donc en fonction de l’effet visuel que tu veux obtenir tu emploies l’un ou l’autre. Si tu emploies les commandes, n’oublie pas de les contraindre avec des {} si tu ne veux pas que tout ce qui suit soit affecté.

Ces commandes de base ne sont pas toujours très performantes et dans certains cas les blancs en fin de ligne sont trop important. Il faut donc mieux utiliser le package ragged2e (\usepackage{ragged2e}) qui possède des commandes plus efficaces. C’est les mêmes mais avec des majuscules, alors fait attention : \Centering, \RaggedLeft, and \RaggedRight et pour les environnements \begin{Center}\end{Center}, \begin{FlushLeft}\end{FlushLeft} et \begin{FlushRight}\end{FlushRight}.

ConTeXt fidèle à son habitude à un environnement et des options et comme pour LATeX tu as des fers à gauche (flushleft) avec des drapeaux à droite (right) et des fers à droite (flushright) avec des drapeaux à gauche (left) et middle pour centrer.

\startalignment[flushright]
Texte aligné à droite
\stopalignment
\startalignment[left]
Texte aligné à droite
\stopalignment
\startalignment[flushleft]
Texte aligné à gauche
\stopalignment
\startalignment[right]
Texte aligné à gauche
\stopalignment
\startalignment[middle]
Texte centré
\stopalignment

Comme ConTeXt est généreux tu as aussi comme options : width inner outer wide broad height bottom line reset hanging nothanging hyphenated nothyphenated, mais tu les découvriras sur le wiki de ConTeXt.

ConTeXt possède aussi trois commandes, mais pour modifier l’alignement que d’une seule phrase :

\leftaligned{Phrase alignée à gauche}
\rightaligned{Phrase alignée à droite}
\midaligned{Phrase centrée}

Modifications apportées aux fichiers preambuleRapport.tex

\documentclass[a4paper,twoside,11pt,french]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage[np]{numprint}
\usepackage{xspace}
%%%%%%%%%%%%%%%%%%%%
%% Mes commandes %%
%%%%%%%%%%%%%%%%%%%%

\newcommand*{\site}{Harfouëte -- La Mare au Diable\xspace}
\newcommand*{\imp}{\em}
\newcommand*{\vallee}{vallée du Pételasoiffe\xspace}
%%%%%%%%%%%%%%%%%%%%
%%      Images    %%
%%%%%%%%%%%%%%%%%%%%
\graphicspath{{./images/}}
\DeclareGraphicsExtensions{.png,.jpg,.pdf}
\makeatletter \@removefromreset{figure}{chapter} \makeatother %pour numérotation en continue des figures
\renewcommand\thefigure{\arabic{figure}} %pour numérotation en continue des figures
\captionsetup[figure]{name=Fig.,labelfont=bf} %pour modifier les légendes des figures
\mainlanguage[fr]
\language[fr]
\setcharacterspacing[frenchpunctuation]
\setupbodyfont[11pt]
\setuppagenumbering[alternative=doublesided]
\setupindenting[yes,next,small]
\setupunits[method=3,order=reverse]
%%%%%%%%%%%%%%%%%%%%
%% Mes commandes %%
%%%%%%%%%%%%%%%%%%%%

\define\site{Harfouëte -- La Mare au Diable}
\define\imp{\em}
\define\vallee{vallée du Pételasoiffe}
\define\ier{1\high{er}} \define\ieme{\high{e}}
\define\iemes{\high{es}} \define[1]\no{n\high{o} #1}
\define[1]\No{N\high{o} #1}
\define[1]\nos{n\high{os} #1}
\define[1]\Nos{N\high{os} #1}
%%%%%%%%%%%%%%%%%%%%
%%      Images    %%
%%%%%%%%%%%%%%%%%%%%
\setupexternalfigures[directory={images}]
\setupcaptions[numberstopper=:,distance=0.5em] % séparateur = :
\setuplabeltext[figure=Fig.] % Figure en Fig.
\setupcaptions[way=bytext, prefixsegments=none] % numérotation continue

Comme tu peux le voir j’ai mis plusieurs \setupcaptions. Je préfère regrouper les options par actions, c’est plus facile à modifier. Tu peux écrire :

\setupcaptions[numberstopper=:,distance=0.5em,way=bytext, prefixsegments=none]

Modifications apportées aux fichiers histoire.tex

Le fichier historique.tex à ce stade devient avec un deuxième plan inséré dans le texte :
% !TeX root = monRapport.tex
\chapter{Historique des recherches}
\section{Les prospections de Salomon \bsc{Caine}}
Salomon \bsc{Caine} (1865-1932) comme tous les cultivateurs de la \vallee fut très tôt sensibilisé à la préhistoire, et c’est naturellement qu’il se mit à ramasser des silex taillés qu’il découvrait lorsqu’il labourait ses terres avec ses b\oe ufs. À partir des années 1910, sur les conseils de M\up{me} Marie-Odile \bsc{Dupain du Tertre}, qui fouillait le gisement de \og La Roche Penchée\fg situé sur des terres appartenant à Salomon \bsc{Caine}, celui-ci commença à classer ses découvertes et surtout à noter avec précision sur un plan cadastral l’endroit des ses trouvailles.

\begin{figure}[p]
\includegraphics[width=\textwidth]{cadastre}
\caption{Extrait d'un cadastre annoté par Salomon Caine.}
\end{figure}

C'est ainsi qu'au lieu-dit \og La mare au Diable\fg avait noté la découverte d'une industrie moustérienne non usée, composée de milliers d'artefacts de silex, de centaines de nucléus Levallois et d'une cinquantaine d'éclat préférentiels.

\begin{figure}[ht]
\centering
\includegraphics[width=.5\textwidth]{gisement}
\caption{Situation du gisement de \og La mare au Diable\fg d'après la carte publié par Salomon \bsc{Caine} en 1923.}
\end{figure}
% !TeX root = monRapport.tex
\startchapter[title={Historique des recherches}]
\startsection[title={Les prospections de Salomon {\sc Caine}}]
Salomon {\sc Caine} (1865-1932) comme tous les cultivateurs de la \vallee\ fut très tôt sensibilisé à la préhistoire, et c’est naturellement qu’il se mit à ramasser des silex taillés qu’il découvrait lorsqu’il labourait ses terres avec ses bœufs. À partir des années 1910, sur les conseils de M\high{me} Marie-Odile {\sc Dupain du Tertre}, qui fouillait le gisement de « La Roche Penchée » situé sur des terres appartenant à Salomon {\sc Caine}, celui-ci commença à classer ses découvertes et surtout à noter avec précision sur un plan cadastral l’endroit des ses trouvailles.

\startplacefigure[title={Extrait d'un cadastre annoté par Salomon Caine.},page]
\externalfigure[cadastre.png][width=\textwidth]
\stopplacefigure

C'est ainsi qu'au lieu-dit «La mare au Diable» avait noté la découverte d'une industrie moustérienne non usée, composée de milliers d'artefacts de silex, de centaines de nucléus Levallois et d'une cinquantaine d'éclat préférentiels.

\startplacefigure[title={Situation du gisement de «La mare au Diable» d'après la carte publié par Salomon {\sc Caine} en 1923.},here]
\externalfigure[gisement.png][width=.5\textwidth]
\stopplacefigure