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 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 ♦♦
Affichage de 5 parmi 6
Afficher 1 commentaire(s) en plus
|
La réponse immédiate à cette question est : « oui, c'est possible via 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 À 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é 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 Remarque ici 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 |
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 Ç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 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 |
C'est possible avec
--shell-escape
et\write18
. Je n'ai jamais testé mais ce n'est pas compliqué.Voir ce fil sur TeX StackExchange.
@Bernard On trouve aussi une solution en pure Lua...
@Paul Gaborit: Encore mieux!
L'outil git pourrait également vous intéresser.
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.