将 pdflatex 与 -output-directory 一起使用时,Tikz 外部化问题

Nil*_*ils 7 latex pdflatex tikz

当使用 pdflatex 时,-output-directory我在外部化 tikz 数字时遇到了问题。虽然 .md5 文件是在我期望的地方创建的,但创建外部化图片文件(.pdf、.log、.dpth)的命令失败。我的假设是发生这种情况是因为pdflatex创建这些文件不继承-output-directory选项,因此无法在正确的位置创建文件。

这是显示行为的最小示例。

main.tex:

\documentclass{minimal}                                                         
\usepackage{tikz}                                                               
\usetikzlibrary{external}                                                       
\tikzexternalize[prefix=tikz/]                                                  
\begin{document}                                                                
Test externalize in combination with -output-directory                          

\tikzsetnextfilename{testpicture}                                               
\begin{tikzpicture}                                                             
    \node {Node};                                                               
\end{tikzpicture}                                                               
\end{document}
Run Code Online (Sandbox Code Playgroud)

重击:

mkdir -p build/tikz
pdflatex -output-directory build -shell-escape main.tex
Run Code Online (Sandbox Code Playgroud)

错误:

===== 'mode=convert with system call': Invoking 'pdflatex
-shell-escape -halt-on-error -interaction=batchmode -jobname
"tikz/testpicture" "\def\tikzexternalrealjob{main}\input{main}"'
======== This is pdfTeX, Version 3.14159265-2.6-1.40.16
(TeX Live 2015/Debian) (preloaded format=pdflatex)
\write18 enabled.
entering extended mode
! I can't write on file `tikz/testpicture.log'.
Run Code Online (Sandbox Code Playgroud)

结果目录结构(输出tree):

.
??? build
?   ??? main.aux
?   ??? main.auxlock
?   ??? main.log
?   ??? main.pdf
?   ??? tikz
?       ??? testpicture.md5
??? main.tex
Run Code Online (Sandbox Code Playgroud)

同样,据我所知,由于工作目录中缺少 tikz 目录,日志文件创建失败 pdflatex外部化执行命令。

我的假设正确吗?如果是,我应该如何处理?

小智 7

据我发现,最简单的解决方案是在主文件夹中创建一个到 build.gradle 内的 tikz 文件夹的符号链接。就像这样:ln -s build/tikz .

这是我在另一个 tikz 外部化库的文档中找到的解决方案。