![一堆乱七八糟的 tikz/output-figure 文件以及如何控制它](https://linux22.com/image/433636/%E4%B8%80%E5%A0%86%E4%B9%B1%E4%B8%83%E5%85%AB%E7%B3%9F%E7%9A%84%20tikz%2Foutput-figure%20%E6%96%87%E4%BB%B6%E4%BB%A5%E5%8F%8A%E5%A6%82%E4%BD%95%E6%8E%A7%E5%88%B6%E5%AE%83.png)
我正在制作一个beamer
演示文稿,其中包含大约 25 个 tikz 和 pgfplots 图形,分散在~50 frame
s 中。
由于tikzpicture
s 数量众多,我使用以下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"
请随意调整以满足您的需要。