Latex Tuto

This commit is contained in:
Quentin 2021-03-05 14:08:03 +01:00
parent 8d9cbfadb4
commit 6fca5294ec
4 changed files with 110 additions and 1 deletions

View file

@ -0,0 +1,104 @@
---
layout: post
slug: latex-dvi-integrer-image
status: published
sitemap: true
title: Intégrer des images dans des documents LaTeX supportant une sortie DVI-Tex
description: Grâce à ImageMagick
categories:
tags:
---
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](https://imagemagick.org/index.php) (fiche [Wikipedia](https://fr.wikipedia.org/wiki/ImageMagick))
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 :
```bash
sudo dnf install ImageMagick
```
Sur Ubuntu :
```bash
sudo apt update
sudo apt install imagemagick
```
## Notre image de test
Nous allons utiliser [une photo](https://quentin.dufour.io/assets/images/posts/dijkstra.jpg) de [Dijkstra](https://fr.wikipedia.org/wiki/Edsger_Dijkstra) pour nos tests, que l'on peut télécharger sur notre système comme suit :
```bash
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
```
L'outil `convert` de ImageMagick a de nombreux paramètres qui sont tous décrits en détails dans le manuel (`man convert`).
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](https://fr.wikipedia.org/wiki/Point_par_pouce) 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.
Ensuite, le format EPS historiquement ne supporte pas de compression, ce qui fait des images très larges 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 visioneuse.
Heureusement, [StackOverflow](https://stackoverflow.com/questions/5350246/convert-jpg-to-eps-format) nous apprend que des évolutions du format qui supportent la compression existe, il suffit de préfixer notre fichier de sortie par `eps2:` ou `eps3:` (exemple: `eps2:dijkstra.eps`).
En choisissant l'un ou l'autre, on revient sur une taille similaire au JPG d'origine, de `841 ko`.
La commande finale que je recommande donc pour la conversion :
```bash
convert -density 300 dijkstra.jpg eps2:dijkstra.eps
```
## Intégrer l'image dans un document LaTeX
Je créer un fichier LaTeX très simple nommé `trombi.tex`
```latex
\documentclass{article}
\usepackage{graphicx}
\begin{document}
\includegraphics{dijkstra.eps}
\end{document}
```
Que je compile ensuite :
```
latex trombi.tex
```
Et que je peux ouvrir ensuite :
```
xdg-open trombi.dvi
```
Et voici le résultat !
![Dijkstra dans Evince](/assets/images/posts/dijkstra-res.png)

View file

@ -297,7 +297,12 @@ hr {
background: #eee; background: #eee;
} }
span.code, code { font-family:Menlo, Monaco, Courier; color: #ffffff; padding: 6px 0px 3px 0px; background-color:#272b2d; font-size:14px; } span.code, p code, ul code{
font-family:Menlo, Monaco, Courier;
color: #ffffff;
padding: 6px 6px 3px 6px;
background-color:#272b2d;
font-size:14px; }
pre { pre {
font-family:Menlo, Monaco, Courier; font-family:Menlo, Monaco, Courier;

Binary file not shown.

After

Width:  |  Height:  |  Size: 180 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 846 KiB