У меня много сложных графиков, сгенерированных с помощью tikz
. Есть отличный метод инкрементальной компиляции с многоядерным процессором, описанный вИнтеграция latexmk и TikZ внешний режим=список и создание
Автоматизированный рабочий процесс:
- автоматически генерировать отдельные задачи для каждой tikz-picture в makefile (
\tikzexternalize[mode=list and make]
) - компилировать tikz-pictures одновременно, используя 8-ядерный процессор !!! (
make -j8 -f %B.makefile
) - автоматически вставлять tikz-pictures как pdf-файлы во втором запуске pdflatex (
\usetikzlibrary{external}
)
Вот упрощенный MWE, который должен работать на нашей локальной машине.
Бежать сlatexmk -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}
Наблюдение вSharelatex
Я хочу, чтобы пример работал на Sharelatex на моем собственном сервере. Для тестирования вы можете создать бесплатную учетную запись наSharelatex.
- Makefile генерируется,
tikz-external
как и ожидалось. - Команда
make
работает как и ожидалось. ФайлmyPlot.pdf создани может быть найден в кэше рядом с файлами журнала. - Во втором запуске pdflatexmyPlot.pdf НЕ вставленв основном файле.
Проблема
Во втором запуске pdflatex это выглядит такmyPlot.pdf не существует. Предупреждение:
Package `tikz` Warning: Some images are not up-to-date and need to be generated.
И на самом деле: если я скачаю myPlot.pdf и загружу его снова, чтобы он стал постоянной частью проекта, а не просто кэшированным файлом,все работает отлично!
Вопрос
Как мне указать sharelatex, чтобы он видел кэшированные файлы при втором запуске pdflatex?
Я управляюОбщественная версия Sharelatexв docker на моем собственном сервере, поэтому у меня есть доступ ко всему, что вы можете предложить.
С нетерпением жду воскресенья — спрятался ли пасхальный кролик?любые опции, флаги, ... в любом конфигурационном файлеглубоко внутри sharelatex-code, который мог бы мне помочь? Может быть, нужно дать привилегии доступа к каким-либо процессам?
Я был бы очень рад, если бы вы мне помогли. Более того, решение может привести к отличной возможности для других пользователей для довольно быстрой компиляции на быстром многоядерном сервере?!