summaryrefslogtreecommitdiff
path: root/info/guide-latex-fr/Chapitres/p3-images.tex
blob: e18b06e410983c659d0ad7f7fb835fea8b47d017 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
\chapter{Images : de nouvelles subtilités}

\epigraph{<Mettre une citation ici>}{<Auteur>}

\label{chap-img-details}\lettrine{C}{omme} pour les mathématiques, l'insertion d'images sous \LaTeX{} est réalisée sans surprise et sans avoir à connaître des techniques très poussées.

Cependant, au fur et à mesure de la rédaction de tes documents, tu constateras que tu souhaiteras améliorer certains détails. Voici donc quelques astuces supplémentaires toujours utiles ! 

\section{Une référence toute prête}

Les références, c'est bien. Les automatiser, c'est mieux. J'étais plutôt agacé d'écrire constamment \og (cf. \textsc{Figure} \verb?<ref>? p. \verb?<page-ref>?) \fg{}, d'autant plus que le mot \og \textsc{Figure} \fg{} peut varier selon la classe.

Puis, j'ai découvert la commande \verb?\figurename{}? : elle contient justement le nom utilisé dans la légende. Il est donc possible d'automatiser mon problème initial grâce à une commande. \\

Mais c'est sans compter sur le package \verb?hyperref? qui propose déjà une commande toute prête à ce sujet : \verb?\autoref{<label>}?, qui écrit directement \og Figure \verb?<ref>? \fg{}. 

Mais, si comme moi tu es un puriste et tu tiens à reprendre l'intitulé exact de la légende (soit \og \textsc{Figure} \fg{}, en petites capitales), il faut procéder à un petit correctif manuel \textbf{après} le préambule (pour éviter les conflits avec le package \verb?babel?) :

\begin{code}{}
\renewcommand{\figureautorefname}{\figurename{}}
\renewcommand{\tableautorefname}{\tablename{}}
\end{code}

Et voilà, c'est tout ! Tu peux désormais t'amuser avec cette nouvelle commande très pratique.

\section{Insérer des légendes intermédiaires}

Il peut être intéressant d'afficher plusieurs images avec chacune sa légende, ainsi qu'une légende globale pour toutes les images. Une solution très simple est possible grâce au package \verb?subcaption? et de la commande éponyme :

\begin{codedisplay}{Utilisation de \verb?subcaption?}
% Ajout dans le préambule
%\usepackage{graphicx, float, subcaption}


\begin{figure}[H]
\begin{minipage}{0.45\linewidth}
\includegraphics[width = \linewidth]{fond.jpg}
\subcaption{Image A}
\end{minipage}
\hfill
\begin{minipage}{0.45\linewidth}
\includegraphics[width = \linewidth]{fond.jpg}
\subcaption{Image B}
\end{minipage}
\caption{Images A \& B}
\end{figure}
\end{codedisplay}

Les références continuent de fonctionner sans contrainte supplémentaire. Ne pas hésiter à faire des tests le cas échéant.

\begin{attention}{\verb?subfigure? : l'environnement à bannir !!!}
Le package \verb?subcaption? met à disposition un nouvel environnement, \verb?subfigure?, qui présente peu d'intérêt et dont l'utilisation est à bannir\footnote{Résultat d'une recherche sur un forum un jour, dont je n'ai plus la source.}

Pour rappel/précision, les commandes \verb?\caption? ou \verb?\subcaption? ne sont valides que dans un élément flottant soit dans un environnement global \verb?figure?.
\end{attention}

Enfin, le package \verb?subcaption? charge aussi le package \verb?caption?, qui permet d'utiliser la commande \verb?\caption*?. Cette dernière permet d'avoir une légende sans numéro. C'est toujours pratique de temps en temps.

\section{Insérer un grand nombre de fichiers}

Il est possible d'être amené, ponctuellement, à regrouper un grande nombre de fichiers (images, PDF\dots{}) dans un seul et unique PDF. 

Si écrire toutes les lignes de code ou faire des copier-coller pour n'avoir qu'à modifier les noms de fichiers à la fin peut fonctionner, il existe une méthode plus élégante et efficace qui consiste à utiliser une boucle \verb?for? sous \LaTeX{}. Tout est résumé dans le code ci-après :

\begin{code}{Insertion avec une boucle for}
\documentclass[a4paper, 12pt]{report}

\usepackage{lmodern}
\usepackage[french]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\usepackage{graphicx, float} % Si images
\graphicspath{{./Images/}} % Chemin des images
\DeclareGraphicsExtensions{.jpg} % Pour définir l'extension des images

\usepackage{pgffor} % Pour la boucle for


\begin{document}

% Page de garde ou ce que tu veux

% Commande d'insertion avec la boucle for
% #1 = numéro début
% #2 = numéro fin
% #3 = nom devant le numéro
\newcommand*{\insertgraphicsfiles}[3]{%
	\foreach \i in {#1,...,#2} {%
		\vspace*{\fill}
		\begin{figure}[H]
			\centering
			\includegraphics[width = 0.99\linewidth]{#3\i}
		\end{figure}
		\vspace*{\fill}
	}
}

% Insertion images 001 à 009
\insertgraphicsfiles{1}{9}{00}

% Insertion images 010 à 099
\insertgraphicsfiles{10}{99}{0}

% Insertion images 100 à 151
\insertgraphicsfiles{100}{151}{}

% Il est possible de faire de même avec des PDF et \includepdf

\end{document}
\end{code}

Et voilà ! Le code peut paraître un peu saugrenu car j'ai choisi de numéroter les images de 001 à 999, pour garantir le bon rangement par ordre alphabétique dans l'ordinateur. 

Tu peux bien entendu simplifier le code présenté ou l'adapter selon la façon dont tu nommes tes images. \\

Si tu ne juges pas ce passage intéressant, la réalisation d'un trombinoscope peut constituer une application plus concrète de l'utilisation d'une boucle \verb?for? :

\begin{coderesult}{Réaliser un trombinoscope}
\documentclass[a4paper, 12pt]{report}

\usepackage{lmodern}
\usepackage[french]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\usepackage{graphicx}
\graphicspath{{./Images/}} % Chemin des images
\DeclareGraphicsExtensions{.jpg} % Pour définir l'extension des images

\usepackage{array}
\usepackage{pgffor} % Pour les boucles

\setlength\parindent{0pt} % Pour supprimer les indentations (inutiles ici)

\newcommand*{\affiche}[3]{\begin{tabular}{c} \includegraphics[width = 0.32\linewidth]{#1} \\ #2 \textsc{#3} \end{tabular} }
% Attention, l'espace après le \end{tabular} est indispensable pour les renvois. Sinon, tout s'affiche sur une seule ligne


\begin{document} 

\begin{center}
\huge{\textsc{Titre}}
\end{center}

% Application avec mon image fond.jpg
\foreach \prenom/\nom/\fichier in {%
Prénom/Nom/fond,%
Prénom/Nom/fond,%
Prénom/Nom/fond,%
Prénom/Nom/fond} {\affiche{\fichier}{\prenom}{\nom}}

% Et ainsi de suite. Il vaut mieux ne pas mettre d'accent ni d'espace dans les noms de fichiers

% Le % en fin de ligne est indispensable au bon fonctionnement de \foreach pour éviter l'insertion de blancs qui troubleraient l'appel du fichier (et permet de faciliter la relecture du code)

\end{document}
\end{coderesult}

Nous reviendrons plus tard, avec le chapitre sur \TikZ{}, \autoref{chap-tikz} p. \pageref{chap-tikz}, sur d'autres utilisations de la boucle \verb?for? sous \LaTeX{}.

\section{Insérer un fichier \texttt{.svg}}

Si, comme moi, tu apprécies ne pas avoir de gros pixels immondes au moindre zoom de ton fichier PDF, il est possible d'importer un fichier \verb?.svg? (image vectorielle donc pas de pixels au zoom) dans ton document. \\

Pour ce faire, aucun package supplémentaire n'est requis et il faut juste suivre la procédure suivante : \begin{enumerate}
\item Enregistrer le fichier \verb?.svg? sous \Inkscape{} au format \verb?.pdf? (option \verb?Enregistrer sous?).

\item Dans les options, choisir ``Exclure le texte\dots{}'' et ``Utiliser la taille\dots{}''.

\item Garder les \textbf{deux} fichiers générés (\verb?.pdf? et \verb?.pdf\_tex?).

\item Utiliser le code ci-après et compiler le tout.
\end{enumerate}

\begin{code}{Insérer un fichier \verb?.svg?}
\begin{figure}[H]
\centering
\def\svgwidth{\columnwidth} % Pour définir la largeur de l'image
%\input{<nom_fichier>.pdf_tex}
\caption{Légende éventuelle}
\end{figure}

% \def\svgwidth{0.8\linewidth} est aussi envisageable
\end{code}

Et voilà, c'est tout ce qu'il y a à faire. Après, c'est vraiment se prendre le chou pour pas grand chose. Autant rester sous \Inkscape{}, enregistrer l'image au format \verb?.eps? et l'intégrer comme n'importe quelle image. 

Les pixels ne se verront toujours pas au zoom et la compilation se fait sans souci sous \pdfLaTeX{} (création d'un fichier intermédiaire supplémentaire mais génération bien plus rapide). \\

Bref, c'était surtout une volonté personnelle d'explorer de nouveaux domaines sous \LaTeX{} mais il faut aussi savoir utiliser des solutions simples parfois.