Je travaille avec des collègues sur un long document, et nous ne sommes pas au même endroit. D'où des échanges continuels de courriels, notamment pour les photos incluses dans le document.

Existe-t-il une extension permettant de compiler des photos stockées sur un serveur distant, dont on ne renseignerait que l'URL ? Quelque chose du type \includegraphics{http://server.tld/image1.jpg} ?

Lors de la compilation, LaTeX irait chercher la ressource en ligne et l'enregistrerait en local : cela éviterait les fastidieux enregistrements préalables à toute inclusion de nouvelles photos dans le document.

Posée 08 Nov '16, 20:43

Pathe's gravatar image

Pathe ♦♦
7.4k28196245
Taux d'acceptation : 55%

Modifiée 08 Nov '16, 20:44

C'est possible avec --shell-escape et \write18. Je n'ai jamais testé mais ce n'est pas compliqué.

(08 Nov '16, 20:55) touhami touhami's gravatar image
1

Voir ce fil sur TeX StackExchange.

(08 Nov '16, 23:03) Bernard Bernard's gravatar image

@Bernard On trouve aussi une solution en pure Lua...

(09 Nov '16, 01:52) Paul Gaborit Paul%20Gaborit's gravatar image

@Paul Gaborit: Encore mieux!

(09 Nov '16, 02:05) Bernard Bernard's gravatar image

L'outil git pourrait également vous intéresser.

(09 Nov '16, 19:25) jerome dequeker jerome%20dequeker's gravatar image

J'ai bien pensé à git, mais notre test n'a pas été concluant dès lors que deux personnes ont compilé chacune de son côté. D'où notre idée de photos hébergées en commun et de fichiers hébergés localement chez chacun des contributeurs.

(09 Nov '16, 23:45) Pathe ♦♦ Pathe's gravatar image
Affichage de 5 parmi 6 Afficher 1 commentaire(s) en plus

Le plus simple pour ce genre de collaboration, c'est de mettre votre projet sur un serveur de gestion de version (par exemple un serveur SVN ou un serveur GIT) ; alors, pour mettre à jour l'espace de travail local avec les bonnes versions de fichiers (par ex. d'image, mais en fait de tous les fichiers du projet), on lance la commande svn update (pour SVN), ou git pull (pour GIT).

Ça me semble infiniment plus propre et plus simple que d'essayer de ré-inventer la roue avec des bidouilles utilisant des makefiles et des scripts maison appelant wget ou des utilitaires similaires. Et en plus vous aurez une vraie gestion de version (archivage des étapes intermédiaires, de qui a fait les changements, de pourquoi ces changements, etc...).

Le petit effort que vous ferez pour apprendre la gestion de version sera grandement récompensé par toutes les galères que vous vous éviterez en utilisant une méthode qui a fait ses preuves et qui répond à une problématique très courante.

Sinon, moi aussi je déconseille le --shell-escape.

Lien permanent

Publiée 29 Jan '17, 01:28

vincentb1's gravatar image

vincentb1
1874
Taux d'acceptation : 0%

Modifiée 09 Aoû '17, 18:57

Pathe's gravatar image

Pathe ♦♦
7.4k28196245

La réponse immédiate à cette question est : « oui, c'est possible via --shell-escape ».

Exemple

Ouvrir dans l'éditeur Overleaf
\documentclass{article}

\usepackage{graphicx}
\newcommand{\includeenligne}[3][]{%
\IfFileExists{#3}{}{\write18{wget #2}}%
\includegraphics[#1]{#3}}

\begin{document}
bla bla

\includeenligne{http://server.tld/image25.jpg}{image25.png}

\end{document}

Mais pour des raisons de sécurité je ne recommande pas l'utilisation de --shell-escape.


À mon avis, et en particulier comme il s'agit d'un projet, il est préférable d'ajouter la fonction de téléchargement aux procédures de la compilation via un makefile (par exemple).

Exemple le fichier .tex est nommé abc.tex

Ouvrir dans l'éditeur Overleaf
\documentclass[french]{article}
\usepackage{lmodern}% 
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}

\usepackage{babel}
\usepackage{makeidx}
\makeindex
\usepackage{biblatex}
\addbibresource{mabiblio.bib}

%---------------------------
\usepackage{graphicx}
\newwrite\mesimages
\immediate\openout\mesimages=myfile.txt

\newcommand{\includeenligne}[3][]{%
\IfFileExists{#3}{\includegraphics[#1]{#3}}{%
\immediate\write\mesimages{#3 + \unexpanded{#2}}}}
%---------------------------
\begin{document}
bla bla \index{bla} bla bla voir \cite{des-dis}

\includeenligne{http://server.tld/others/image1.jpg}{image1.jpg}

bla bla \index{foo} bla bla voir \cite{des-dis}

\includeenligne{http://server.tld/image2.jpg}{image2.jpg}

\printbibliography
\printindex
\end{document}

le makefile est un fichier batch runabc.bat


Remarque ici powershell est utilisé pour télécharger, ça marche aussi pour wget.


Ouvrir dans l'éditeur Overleaf
@echo off

pdflatex abc

for /r %%a in (*.*) do if "%%~nxa"=="myfile.txt" set size=%%~za

if "%size%"=="0" goto :compile

for /f "tokens=1,* delims=+" %%a in (myfile.txt) do powershell -command "& { (New-Object Net.WebClient).DownloadFile('%%b', '%%a') }"
pdflatex abc

:compile
biber abc
pdflatex abc
pdflatex abc
makeindex abc
pdflatex abc
pdflatex abc

pause

Lors du premier passage de pdflatex, si une image n'est pas trouvée, le nom de fichier et l’URL sont ajoutés dans un fichier texte myfile.txt ; puis, si myfile.txt n'est pas vide, la fonction de téléchargement est exécutée.

Lien permanent

Publiée 09 Nov '16, 10:30

touhami's gravatar image

touhami
9.7k410
Taux d'acceptation : 51%

Modifiée 09 Aoû '17, 18:54

Pathe's gravatar image

Pathe ♦♦
7.4k28196245

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.