3
1

Dans un dossier, j'ai le document suivant, qui est directement copié de l'exemple donné en troisième partie de la documentation de l'extension svg :

Ouvrir dans l'éditeur Overleaf
\documentclass[tikz]{standalone}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{svg}
\begin{document}
\begin{figure}
\subfloat[This text is too large!]{\includesvg[clean,
preamble=preamble.tex,pdf,width=5cm]{example}}
\subfloat[This text fits better.]{\includesvg[clean,
preamble=preamble.tex,eps,pretex=\relscale{0.5},width=5cm]{example}}
\caption{An example figure.\label{fig:example}}
\end{figure}
\end{document}

J'ai également la figure example.svg, qu'à toutes fins utiles j'ai dupliqué sous le nom de example tout court.

Voici le résultat - peu satisfaisant - de ma compilation :

Ouvrir dans l'éditeur Overleaf
! LaTeX Error: File `./example' not found.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...

l.9 preamble=preamble.tex,pdf,width=5cm]{example}}

?

J'en reste pantois. Mais je lis dans ladite documentation que this package relies heavily upon executing commands from the shell using the write18 command, and so it is necessary for the flag -shell-escape to be included when compiling documents using this package, je subodore un machin (mais je ne le comprends pas). Je précise que l'ordi sur lequel je lance d'infructueuses compilations possède bien a working installation of Inkscape.

Quelque TeXnicienne, quelque TeXnicien sauraient-ils m'expliquer comment inclure des fichiers .svg dans un fichier .tex ?

Posée 25 Oct '16, 17:41

Pathe's gravatar image

Pathe ♦♦
7.5k42204251
Taux d'acceptation : 55%

Modifiée 06 Aoû '17, 15:35

Quelle est la commande utilisée pour la compilation du code source ? Est-ce pdflatex avec le flag --shell-escape ?

(25 Oct '16, 19:41) jerome dequeker jerome%20dequeker's gravatar image

Aaah ! Mais c'est donc ce que ça signifie !

Adoncques, si je compile en utilisant la commande $ pdflatex --shell-escape, le comportement est différent — la compilation s'arrête à :

<./example.pdf, id=4, 597.50786pt x 845.04686pt> <use ./example.pdf> \SVG@in@line=

En revanche, je constate que trois fichiers ont été fabriqués : example.pdf, example.pdf_tex et Fig.2a.tex, ce dernier étant vide.

(25 Oct '16, 21:25) Pathe ♦♦ Pathe's gravatar image

Hou là !

Ledit document example.pdf_tex contient le préambule suivant :

%% Creator: Inkscape inkscape 0.48.5, www.inkscape.org %% PDF/EPS/PS + LaTeX output extension by Johan Engelen, 2010 %% Accompanies image file 'example.pdf' (pdf, eps, ps) %% %% To include the image in your LaTeX document, write %% \input{<filename>.pdf_tex} %% instead of %% \includegraphics{<filename>.pdf}

Suit du code .tex avec un bel ensemble de commandes \put & \makeatother. J'en fais quoi ?

Dois-je modifier mon source .tex en y ajoutant example.pdf_tex ?

(25 Oct '16, 21:34) Pathe ♦♦ Pathe's gravatar image

La documentation de l'extension svg serait-elle incomplète ?

(25 Oct '16, 21:34) Pathe ♦♦ Pathe's gravatar image

Essaye de simplifier ton ECM, en enlevant les options de \includesvg par exemple.

(25 Oct '16, 21:40) jerome dequeker jerome%20dequeker's gravatar image

Si mes souvenirs sont bons, latex n'aime pas les svg. Donc il l'a transformé en un pdf et un tex, qu'il préfère.

Maintenant, tu n'as plus toutes les informations dans le même document svg, mais l'image dans le pdf et le texte dans le tex. Ensuite, latex se débrouille pour tout remettre en place dans le document maïtre.

(25 Oct '16, 21:43) jerome dequeker jerome%20dequeker's gravatar image

J'ai tout enlevé. Ne restent plus dans le dossier que trois documents : testsvg.tex, example.svg et example.

J'obtiens ceci :

(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg)) <./example.pdf, id=4, 597.50786pt x 845.04686pt> <use ./example.pdf> <use ./example.pdf> (./example.pdf_tex <example.pdf, id=5, 597.50786pt x 845.04686pt> <use example.pdf> ! Undefined control sequence. <argument> Einstein \eqref {eq:emc2} l.57 ...,0)[lb]{\smash{Einstein \eqref{eq:emc2}}}} % ?

(25 Oct '16, 23:06) Pathe ♦♦ Pathe's gravatar image

Je précise avoir tenté de compiler un document minimal :

\documentclass[tikz]{standalone} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage{svg} \begin{document} \includesvg{example} \end{document}

(25 Oct '16, 23:07) Pathe ♦♦ Pathe's gravatar image

Tu aurais du essayer avec un svg plus simple. Reprend ton ECM et ajoute \usepackage{amsmath}.

Ou alors, ouvre le svg avec Inkscape et enlève le \eqref{eq:emc2} qui nécessite amsmath. De plus, étant donné qu'aucune équation n'a été labellisée dans le reste du document, tu n'auras pas de numéro d'équation mais un (??).

(26 Oct '16, 10:23) jerome dequeker jerome%20dequeker's gravatar image
Affichage de 5 parmi 9 Afficher 4 commentaire(s) en plus

Grâce aux commentaires qui m'ont été apportés plus haut, j'ai réussi à compiler un fichier .tex incluant un fichier .svg.

J'ai enregistré dans le dossier contenant mon fichier à compiler un fichier trouvé sur wikipédia commons : celui du drapeau du Mexique.

Voici le code de ce fichier, que j'ai intitulé testsvg.tex :

Ouvrir dans l'éditeur
\documentclass[a4paper, latin, DIV=15, BCOR=0pt]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{svg}
\usepackage{lipsum}
\usepackage{babel}
\begin{document}
\setlength{\parindent}{0pt}
\lipsum[1]
\includesvg[width=\textwidth]{Flag_of_Mexico}
\lipsum[2]
\end{document}

Je l'ai compilé (sous Linux, avec une TeXlive à jour) avec la commande $ pdflatex --shell-escape testsvg.tex et cela a parfaitement fonctionné.

Trois remarques :

  • le nom du fichier SVG doit être inclus dans le code sans son suffixe .svg ;
  • j'ai tenté d'ajouter à la commande \includesvg le paramètre keepaspectratio=true, très commun quand on utilise l'extension graphicx : cela n'a pas fonctionné ;
  • j'ai tenté d'ajouter une ligne vide au-dessus dudit fichier : même résultat infructueux.

Enfin, la documentation de l'extension svg n'est pas très bien faite : elle propose un exemple par trop complexe, qui chez moi ne fonctionne pas.

Lien permanent

Publiée 26 Oct '16, 15:27

Pathe's gravatar image

Pathe ♦♦
7.5k42204251
Taux d'acceptation : 55%

Pour répondre aux remarques :

  • Il est écrit dans la documentation du package qu'il ne faut pas mettre le suffixe .svg dans l'argument de la commande \includesvg

  • L'option keepaspectratio n'est pas documentée, donc je suppose qu'elle n'existe pas pour la commande \includesvg

  • Que veux-tu dire par résultat infructueux ?

(02 Nov '16, 09:45) jerome dequeker jerome%20dequeker's gravatar image

Ça ne compile pas, tout simplement.

(02 Nov '16, 09:53) Pathe ♦♦ Pathe's gravatar image

Quand j'ajoute une ligne vide entre \lipsum[1] et \includesvg je n'ai pas d'erreur.

(02 Nov '16, 10:10) jerome dequeker jerome%20dequeker's gravatar image
Votre réponse
(dés)activer l'aperçu

Suivre cette question

Par courriel :

Une fois que vous serez enregistré, vous pourrez souscrire à n'importe quelle mise à jour ici

Par flux RSS :

Réponses

Réponses et commentaires

Bases de Markdown

  • *italique* ou _italique_
  • **gras** ou __gras__
  • Lien ::[texte](http://url.com/ "Titre ")
  • Image : ?![alt texte](/path/img.jpg "Titre ")
  • Liste numérotée : 1. Foo 2. Bar
  • Pour ajouter un passage à la ligne, ajoutez deux espaces à l'endroit où vous souhaitez que la ligne commence.
  • Les balises HTML de base sont également prises en charge.