Eu tenho muitos gráficos complexos gerados com tikz
. Existe um ótimo método para compilação incremental com CPU multi-core descrito emIntegrando latexmk e TikZ modo externo=lista e make
Fluxo de trabalho automatizado:
- gerar automaticamente tarefas individuais para cada imagem tikz em um makefile (
\tikzexternalize[mode=list and make]
) - compile imagens tikz simultaneamente usando CPU de 8 núcleos !!! (
make -j8 -f %B.makefile
) - insira automaticamente imagens tikz como arquivos pdf na segunda execução do pdflatex (
\usetikzlibrary{external}
)
Aqui está um MWE simplificado que deve funcionar em nossa máquina local.
Correr comlatexmk -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}
Observação emSharelatex
Quero que o exemplo funcione no Sharelatex em meu próprio servidor. Para testar, você pode criar uma conta gratuita emSharelatex.
- O makefile é gerado conforme
tikz-external
o esperado. - O
make
-command funciona conforme o esperado. O arquivomyPlot.pdf é geradoe pode ser encontrado no cache ao lado dos arquivos de log. - Na segunda execução do pdflatex, omyPlot.pdf NÃO foi inseridono arquivo principal.
Problema
Na segunda execução do pdflatex, parecemeuPlot.pdf não existe. O aviso é:
Package `tikz` Warning: Some images are not up-to-date and need to be generated.
E na verdade: se eu baixar myPlot.pdf e carregá-lo novamente para que seja uma parte regular do projeto e não apenas um arquivo em cache,tudo funciona bem!
Pergunta
Como posso dizer ao sharelatex para ver os arquivos em cache na segunda execução do pdflatex?
eu corro oedição comunitária do Sharelatexno docker em meu próprio servidor, então tenho acesso a tudo que você sugerir.
Ansioso pelo domingo - o coelhinho da Páscoa está escondidoquaisquer opções, sinalizadores, ... em qualquer arquivo de configuraçãobem no fundo do código sharelatex que poderia me ajudar? Talvez seja necessário conceder privilégios de acesso a algum processo?
Eu ficaria muito feliz se você pudesse me ajudar. Além disso, a solução poderia resultar em um ótimo recurso para outros usuários para uma compilação bastante rápida em um servidor multi-core rápido?!