Ich habe viele komplexe Plots mit erstellt tikz
. Es gibt eine großartige Methode zur inkrementellen Kompilierung mit Multi-Core-CPU, die in beschrieben wirdIntegrieren von Latexmk und TikZ External Mode=List und Make
Automatisierter Arbeitsablauf:
- automatisch individuelle Tasks für jedes Tikz-Bild in einem Makefile generieren (
\tikzexternalize[mode=list and make]
) - Tikz-Bilder gleichzeitig mit 8-Kern-CPU kompilieren!!! (
make -j8 -f %B.makefile
) - tikz-Bilder im zweiten Durchlauf von pdflatex (
\usetikzlibrary{external}
) automatisch als pdf-Dateien einfügen
Hier ist ein vereinfachtes MWE, das auf unserem lokalen Computer funktionieren sollte.
Ausführen mitlatexmk -pdf main.tex
%%% file named main.tex %%%
\documentclass{article}
\usepackage{tikz,pgfplots}
%\pgfplotsset{compat=1.14}
\usetikzlibrary{external}
\tikzexternalize[mode=list and make]
%%% please create file latexmkrc manually %%%
% \begin{filecontents}{latexmkrc}
% $pdflatex='pdflatex --shell-escape -synctex=1 -interaction=batchmode %O %S; make -f %B.makefile; pdflatex --shell-escape -synctex=1 -interaction=batchmode %O %S';
% \end{filecontents}
\begin{document}
\tikzsetnextfilename{myPlot}
\begin{tikzpicture}
\begin{axis}
\addplot coordinates {(1,1) (2,2) (3,3)};
\end{axis}
\end{tikzpicture}
\end{document}
Beobachtung inTeilenlatex
Ich möchte das Beispiel auf Sharelatex auf meinem eigenen Server zum Laufen bringen. Zum Testen können Sie einen kostenlosen Account erstellen unterTeilenlatex.
- Das Makefile wird
tikz-external
wie erwartet generiert. - Der
make
-Befehl funktioniert wie erwartet. Die DateimyPlot.pdf wird generiertund ist im Cache neben den Protokolldateien zu finden. - Im zweiten Durchlauf von pdflatexmyPlot.pdf wird NICHT eingefügtin der Hauptdatei.
Problem
Im zweiten Durchlauf von pdflatex sieht es so aus:myPlot.pdf existiert nichtDie Warnung lautet:
Package `tikz` Warning: Some images are not up-to-date and need to be generated.
Und tatsächlich: wenn ich myPlot.pdf herunterlade und wieder hochlade, so dass es ein regulärer Teil des Projekts ist und nicht nur eine zwischengespeicherte Datei,alles funktioniert einwandfrei!
Frage
Wie kann ich Sharelatex anweisen, die zwischengespeicherten Dateien beim zweiten Durchlauf von PDFlatex anzuzeigen?
Ich betreibe dieCommunity-Edition von Sharelatexim Docker auf meinem eigenen Server, also habe ich Zugriff auf alles, was Sie vorschlagen.
Vorfreude auf Sonntag - hat der Osterhase sich verstecktalle Optionen, Flags, ... in allen Konfigurationsdateientief im Sharelatex-Code, der mir helfen könnte? Vielleicht muss ich allen Prozessen Zugriffsrechte erteilen?
Ich würde mich sehr freuen, wenn ihr mir helfen könntet. Außerdem könnte die Lösung für andere Benutzer ein tolles Feature darstellen, um auf einem schnellen Multi-Core-Server relativ schnell kompilieren zu können?!