3.9 KiB
layout | slug | status | sitemap | title | description | category | tags |
---|---|---|---|---|---|---|---|
post | latex-dvi-integrer-image | published | true | Latex, DVI et images | Grâce à ImageMagick | developpement |
Pour les compilateurs LaTeX compilant vers le format DVI-Tex (DeVice Independent) / PostScript, il n'est pas possible d'intégrer directement des images au format JPG, PNG ou autre. Si aujourd'hui le plus simple est d'utiliser un compilateur LaTeX qui produit des fichiers au format PDF et supporte les formats d'image précédents, ce n'est pas toujours possible.
Dans ce guide, nous supposons donc que nous souhaitons garder une sortie DVI-Tex / PostScript.
Pour ce faire, nous utiliserons l'outil convert
du projet ImageMagick (fiche Wikipedia)
pour convertir préalablement les images au format EPS.
Installer ImageMagick
Si la commande convert
n'est pas disponible sur votre système, vous allez devoir installer ImageMagick.
Sur Fedora :
sudo dnf install ImageMagick
Sur Ubuntu :
sudo apt update
sudo apt install imagemagick
Notre image de test
Nous allons utiliser une photo de Dijkstra pour nos tests, que vous pouvez télécharger comme suit :
wget https://quentin.dufour.io/assets/images/posts/dijkstra.jpg
L'outil convert
convert
peut être utilisé sans paramètre, mais dans notre cas le résultat de la conversion sera décevant :
convert dijkstra.jpg dijkstra.eps
convert
a en effet de nombreux paramètres qui sont tous décrits en détails dans le manuel (man convert
) dont les valeurs par défaut ne sont pas toujours appropriées.
Ici nous nous penchons seulement sur les deux problèmes suivants :
- Les images sont trop grandes et pixelisées à cause d'une valeur par défaut inadéquate du paramètre
density
- Les images sont trop lourdes car aucune compression n'est utilisée pour la sortie
Les images sont représentées sous forme de pixels mais les sorties LaTeX raisonnent en centimètres: il faut donc choisir combien de pixels on met par centimètres.
On parle souvent de DPI pour ce problème, ImageMagick utilise le terme de densité.
La valeur de densité par défaut de convert
est très basse (probablement autour de 96
pour des raisons historiques).
D'expérience, je recommande une valeur entre 172
et 300
pour éviter de se retrouver avec une image pixelisée, à ajuster en fonction de la taille voulue.
Ensuite, historiquement, le format EPS ne supporte pas de compression et produit des images très lourdes par défaut.
Notre image originale au format JPG fait 846 ko
; convertie sans compression, sa taille grimpe à 12 Mo
.
Au delà de la taille sur le disque, une telle taille est problématique car elle peut faire planter la compilation ou la visionneuse.
Heureusement, StackOverflow nous apprend que des évolutions du format existent : ces dernières ont l'avantage de supporter la compression.
Pour les utiliser il suffit de préfixer notre fichier de sortie par eps2:
ou eps3:
(exemple: eps2:dijkstra.eps
).
En choisissant un format ou l'autre, on revient sur une taille similaire au JPG d'origine, de 841 ko
.
La commande finale que je recommande pour la conversion est donc :
convert -density 300 dijkstra.jpg eps2:dijkstra.eps
Intégrer l'image dans un document LaTeX
Je crée un fichier LaTeX très simple nommé trombi.tex
\documentclass{article}
\usepackage{graphicx}
\begin{document}
\includegraphics{dijkstra.eps}
\end{document}
Que je compile ensuite :
latex trombi.tex
Et que je peux ouvrir avec :
xdg-open trombi.dvi
Et voici le résultat !