Latexmk + \tikzexternalize 不会更新

Latexmk + \tikzexternalize 不会更新

我正在使用 TexStudio 2.10.8,目前正在研究该pgfplots软件包。现在我正尝试让\tikzexternalize命令正常工作。
一段时间后,我说服 TexStudio 传递参数--shell-escape以使整个过程正常工作。

现在它确实会将我的图外部化到它们自己的 pdf 文件中,但在源文件中更改它们时它们不会更新。我必须手动删除相应的外部化文件,才能使更改出现在我的文档中。

我使用latexmk以下参数latexmk -pdf -silent -latexoption="-synctex=1" %pdflatex配置如下:pdflatex -synctex=1 -interaction=nonstopmode --shell-escape %.tex

我尝试直接切换到pdflatex,然后一切都按预期正常工作,但是当我切换回时,latexmk情节不会再更新。

有人知道怎么做吗?我遗漏了什么吗?

这是我正在使用的代码:

\documentclass{script}

\usepackage{pgfplots}

\usepgfplotslibrary{external}
\tikzexternalize
\pgfplotsset{compat=1.14}

\begin{document}
    \begin{tikzpicture}[baseline]
        \begin{axis}[
            title=Inv. cum. normal,
            xlabel={$x$},
            ylabel={$y$},
            minor x tick num=1
        ]

        \addplot [
            blue,
            mark=+
        ] table {TestData.csv};
        \end{axis}

    \end{tikzpicture}
    %
    \hskip 10pt % insert a non-breaking space of specified width.
    %
    \begin{tikzpicture}[baseline]
    \begin{axis}[
        yticklabel pos=upper
    ]
    % density of Normal distribution:
    \addplot [
    red,
    domain=-3e-3:3e-3,
    samples=201,
    ]
    {exp(-x^2 / (2e-3^2)) / (1e-3 * sqrt(2*pi))};
    \end{axis}
    \end{tikzpicture}

\end{document}

答案1

latexmk不知道您在 texstudio 中配置了什么,因此您需要将相应的选项提供给latexmk

latexmk -e '$pdflatex=q/pdflatex %O -shell-escape %S/' -pdf

(借用这里

此外,设置\tikzset{external/force remake}允许您重建所有外部化图,因此您可以添加注释版本并在需要时切换。

答案2

好吧,正如 Ulrike Fischer 在评论中提到的以及 Diego 72 在他的回答中提到的那样,问题确实是我必须将选项传递--shell-escapelatexmk而不是pdflatex

这是我第一次尝试,但 TexStudio 会latexmk在退出首选项后继续删除选项字段(如果我更改了它们),所以我尝试更改pdflatex导致文件外部化而没有任何错误或警告的选项字段(为什么会这样:我不知道)。

然而,当我切换到Advanced SettingsTexStudio 时,我实际上能够编辑和保存latexmk首选项(发现它这里) 所以我简单地将其改为latexmk -pdf -silent -latexoption="-synctex=1 --shell-escape" %,现在一切都运行正常。

我不知道这个错误是否已在最近的 TexStudio 版本中修复,或者他们是否将其称为一个功能,但我只是想记录下它的解决方法,以防有人遇到与我相同的问题(并幸运地遇到这个问题)。

相关内容