一堆乱七八糟的 tikz/output-figure 文件以及如何控制它

一堆乱七八糟的 tikz/output-figure 文件以及如何控制它

我正在制作一个beamer演示文稿,其中包含大约 25 个 tikz 和 pgfplots 图形,分散在~50 frames 中。

由于tikzpictures 数量众多,我使用以下tikzexternalise命令:

\usepgfplotslibrary{external}
\tikzexternalize[prefix=tikz/,optimize command away=\pdfpages]

pdfpages例外是由于pdf使用 包含了一些文件\includegraphics

以及latemkrc提供命令行开关的文件:

$latex = 'pdftex -shell-escape main.tex %O %S';

然后,pdfLaTeX 根据文件在main.tex文件中的出现顺序按升序输出文件:

.
..
...
tikz/output-figure20.md5
tikz/output-figure20.pdf
tikz/output-figure21.dpth
tikz/output-figure21.md5
tikz/output-figure21.pdf
tikz/output-figure22.dpth
tikz/output-figure22.md5
tikz/output-figure22.pdf
tikz/output-figure23.log
etc.

如果在编写演示文稿的过程中,我决定将一个框架移到另一个框架之上,该怎么办?并且完全删除一个框架,因为我认为它不相关。这会导致图形也移动吗?这会如何影响已生成的 tikz 输出的使用?

在这种情况下正确的工作流程是什么?

另一个问题:我可以给这些生成的文件命名,以便更容易跟踪它们各自的内容吗?如果可以,那么怎么做?

我可以删除*.md5*.log*.dpth*.dep并仅保留`.pdf文件?

我担心我刚刚描述的整个不正确的工作流程会导致错误消息

包 tikz 错误:抱歉,系统调用“pdflatex -shell-escape -halt-on-error -interaction=batchmode -jobname "tikz/output-figure23" "\def\tikzexternalrealjob{output}\input{output}"”未产生可用的输出文件“tikz/output-figure23”(预期为 .pdf:.jpg:.jpeg:.png: 之一)。

这使得我现在无法继续进行演讲。

答案1

评论太长了。


正如你已经写到的问题下方的评论我也建议使用\tikzsetnextfilename,但你应该直接在\tikz命令或\begin{tikzpicture}环境之前写它。然后,如果图形环境中有多个 TikZ 环境,你也会有一个工作流程。

这里有一些“随机”代码,供进一步讨论,借用自https://tex.stackexchange.com/a/436405/95441

% used PGFPlots v1.16
\documentclass{article}
\usepackage{pgfplots}
    \usetikzlibrary{
        % use the one from PGFPlots which is more recent than the one from tikz
        pgfplots.external,
    }
    % put all externalized images in a "special" folder
    \tikzsetexternalprefix{Pics/pgf-export/}
    % enable externalization
    \tikzexternalize
\begin{document}
% (I prefer to give the images reasonable names)
\tikzsetnextfilename{first}
\begin{tikzpicture}
    \begin{loglogaxis}[
        xlabel={A},
        ylabel={B},
        legend to name=named,
    ]
        \addplot+ [domain=1:10] {x};
        \addlegendentry{$10\%$}
    \end{loglogaxis}
\end{tikzpicture}

\tikzsetnextfilename{second}
\begin{tikzpicture}
    \begin{loglogaxis}[
        xlabel={A},
        ylabel={B},
    ]
        \addplot+ [domain=1:10] {1/x};
    \end{loglogaxis}
\end{tikzpicture}

    % (you can also name this image, if you want to)
    \tikzsetnextfilename{first-legend}
    \pgfplotslegendfromname{named}
\end{document}

如您所见,我将所有外部化文件存储在一个单独的文件夹中,这样做还有一个好处,即在外部化期间创建的所有辅助文件也存储在该文件夹中。从那里,您可以删除除以下文件之外的所有文件:

  • 非零dep文件
  • 非零dpth文件
  • md5文件(希望我没有遗漏任何东西。否则请添加评论或直接编辑答案。)

为此,我创建了一个bat文件(抱歉,我是 Windows 小孩),它也位于“externalize”文件夹中。我时不时地执行它,它看起来像

REM pause
del *.acn
del *.log
del *.glo
del *.ist
del *.nlo
del *.xml

REM delete zero byte DPTH files
@echo off
for %%f in (*.dpth) do if %%~zf==0 del /F /Q "%%f"

REM delete zero byte DEP files
@echo off
for %%f in (*.dep) do if %%~zf==0 del /F /Q "%%f"

请随意调整以满足您的需要。

相关内容