From cd082213a920a9c5fd00d8c7a4926c3218b0daac Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Fri, 28 Dec 2018 23:28:50 +0000 Subject: guide-latex-fr (27dec18) git-svn-id: svn://tug.org/texlive/trunk@49522 c570f23f-e606-0410-a88d-b1316a301751 --- .../latex/guide-latex-fr/Chapitres/p3-images.tex | 245 +++++++++++++++++++++ 1 file changed, 245 insertions(+) create mode 100644 Master/texmf-dist/doc/latex/guide-latex-fr/Chapitres/p3-images.tex (limited to 'Master/texmf-dist/doc/latex/guide-latex-fr/Chapitres/p3-images.tex') diff --git a/Master/texmf-dist/doc/latex/guide-latex-fr/Chapitres/p3-images.tex b/Master/texmf-dist/doc/latex/guide-latex-fr/Chapitres/p3-images.tex new file mode 100644 index 00000000000..9e3804d00f2 --- /dev/null +++ b/Master/texmf-dist/doc/latex/guide-latex-fr/Chapitres/p3-images.tex @@ -0,0 +1,245 @@ +\chapter{Images} + +\label{chap_img_anx} + +\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} \textit{ref} p. \textit{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 de la manière suivante : + +\begin{code}{Une référence fraîche ! Une !} +\documentclass[a4paper, 12pt]{report} + +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +\usepackage[french]{babel} +\usepackage{lmodern} + +\usepackage{graphicx, float} + +\usepackage[hidelinks, breaklinks, linktoc = all]{hyperref} + +\newcommand{\reffig}[1]{(cf. \figurename{} \ref{#1} p. \pageref{#1})} + + +\begin{document} + +\begin{figure}[H] +\centering +%\includegraphics[width = 0.5\linewidth]{test.png} +\caption{La légende} +\label{essai} +\end{figure} + +Toutes les explications sont disponibles ci-avant \reffig{essai}. + +\end{document} +\end{code} + +\section{L'environnement \texttt{subfigure}} + +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 à implémenter est possible grâce au package \verb?subcaption? : + +\begin{itemize}[label = \ding{213}] +\item apport de l'environnement \verb?subfigure?, au fonctionnement identique à une \verb?minipage?, + +\item apport de la commande \verb?\subcaption?, pour mettre une légende sous chaque image. \\ +\end{itemize} + +Un aperçu de cette solution prend la forme suivante : + +\begin{code}{Utilisation de \texttt{subfigure}} +\documentclass[a4paper, 12pt]{report} + +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +\usepackage[french]{babel} +\usepackage{lmodern} + +\usepackage{graphicx, float, subcaption} + + +\begin{document} + +\begin{figure}[H] +% [t] en option : permet d'aligner correctement les images si les sous-légendes sont longues +\begin{subfigure}[t]{0.32\linewidth} +%\includegraphics[width = \linewidth]{image1.png} +\subcaption{Image 1} +\end{subfigure} +\hfill +\begin{subfigure}[t]{0.32\linewidth} +%\includegraphics[width = \linewidth]{image2.png} +\subcaption{Image 2 : avec une très longue légende} +\end{subfigure} +\hfill +\begin{subfigure}[t]{0.32\linewidth} +%\includegraphics[width = \linewidth]{image3.png} +\subcaption{Image 3} +\end{subfigure} +\caption{Images de test} +\end{figure} + +% Pas le même rendu au niveau des légendes +\begin{figure}[H] +\begin{minipage}{0.32\linewidth} +%\includegraphics[width = \linewidth]{image1.png} +\caption{Image 1} +\end{minipage} +\hfill +\begin{minipage}{0.32\linewidth} +%\includegraphics[width = \linewidth]{image2.png} +\caption{Image 2} +\end{minipage} +\hfill +\begin{minipage}{0.32\linewidth} +%\includegraphics[width = \linewidth]{image3.png} +\caption{Image 3} +\end{minipage} +\caption{Images de test} +\end{figure} + +% Les références doivent toujours fonctionner --> faire des essais et lire la documentation + +\end{document} +\end{code} + +\begin{conseilbox}{La petite subtilité} +La commande \verb?\subcaption? ne requiert pas l'utilisation systématique de l'environnement \verb?subfigure?. Elle peut très bien être utilisée avec une \verb?minipage?. \\ + +Toutefois, il faut bien comprendre qu'une \verb?\caption? ou \verb?\subcaption? n'est valide que dans un élément flottant soit dans un environnement global \verb?figure?. + +De même, l'environnement \verb?subfigure? ne peut être utilisé que dans un environnement \verb?figure?, contrairement à une \verb?minipage? qui peut être utilisée n'importe quand. Cette dernière n'est donc pas considérée comme un flottant. +\end{conseilbox} + +Enfin, le package \verb?subcaption? charge aussi le package \verb?caption?, ce 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, \texttt{PDF}, \dots{}) dans un seul et unique \texttt{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?. + +Ce n'est pas bien compliqué et tout est résumé dans le code ci-dessous : + +\begin{code}{Insertion avec une boucle for} +\documentclass[a4paper, 12pt]{report} + +\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} {% +\begin{figure}[H] +\vspace*{\stretch{1}} +\centering +\includegraphics[width=0.99\linewidth]{#3\i} +\vspace*{\stretch{1}} +\end{figure} +}} + +% 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à ! 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{code}{Une autre application : le trombinoscope} +\documentclass[a4paper, 12pt]{report} + +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +\usepackage[french]{babel} +\usepackage{lmodern} + +\usepackage{graphicx} +\graphicspath{{./Images/}} % Chemin des images +\DeclareGraphicsExtensions{.png} % Pour définir l'extension des images + +\usepackage{array} +\usepackage{pgffor} % Pour les boucles + +\setlength\parindent{0pt} % Pour supprimer les indentations (inutiles ici) + +\newcommand*{\affichechoriste}[3]{\begin{tabular}{c} \includegraphics[width = 0.32\linewidth]{#1} \\ #2 \textsc{#3} \end{tabular} } +% Attention, l'espace après le tabular est indispensable pour les renvois +% Sinon, tout s'affiche sur une seule ligne + +\begin{document} + +\begin{center} +\Huge{\textsc{Titre}} +\end{center} + +\foreach \prenom/\nom/\fichier in {% +Prénom/Nom/001,% +Prénom/Nom/002,% +Prénom/Nom/003,% +Prénom/Nom/004}{\affichechoriste{\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{code} + +Nous reviendrons plus tard, avec le chapitre sur \verb?TikZ?, sur des utilisations de la boucle \verb?for?. + +\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 \texttt{.pdf}, il est possible d'importer un fichier \texttt{.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{itemize}[label = \ding{118}] +\item exporter le fichier \texttt{.svg} sous \texttt{Inkscape} au format \texttt{.pdf}, + +\item dans les options, choisir ``Exclure le texte \dots{}'' et ``Utiliser la taille \dots{}'', + +\item garder les DEUX fichiers générés (\texttt{.pdf} et \texttt{.pdf\_tex}), + +\item utiliser le code suivant : + +\begin{figure}[H] +\centering +\begin{minipage}{0.5\linewidth} +\begin{verbatim} +\begin{figure}[H] +\centering +\def\svgwidth{\columnwidth} +%\input{nom_fichier.pdf_tex} +\caption{Légende éventuelle} +\end{figure} +\end{verbatim} +\end{minipage} +\end{figure} + +\item compiler, peu importe le mode (\verb?LaTeX?, \verb?PDFLaTeX?, \dots{}). \\ +\end{itemize} + +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 \texttt{Inkscape}, exporter l'image au format \texttt{.eps} et l'intégrer comme n'importe quelle image. + +Les pixels ne se verront toujours pas au zoom \dots{} et la compilation se fait sous \verb?LaTeX? comme sous \verb?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. \ No newline at end of file -- cgit v1.2.3