我正在使用 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-escape
给latexmk
而不是pdflatex
。
这是我第一次尝试,但 TexStudio 会latexmk
在退出首选项后继续删除选项字段(如果我更改了它们),所以我尝试更改pdflatex
导致文件外部化而没有任何错误或警告的选项字段(为什么会这样:我不知道)。
然而,当我切换到Advanced Settings
TexStudio 时,我实际上能够编辑和保存latexmk
首选项(发现它这里) 所以我简单地将其改为latexmk -pdf -silent -latexoption="-synctex=1 --shell-escape" %
,现在一切都运行正常。
我不知道这个错误是否已在最近的 TexStudio 版本中修复,或者他们是否将其称为一个功能,但我只是想记录下它的解决方法,以防有人遇到与我相同的问题(并幸运地遇到这个问题)。