使用带有-output-directory的pdflatex时,Tikz会将问题外部化

当使用带有-output-directory的pdflatex时,在外部化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}

庆典:

mkdir -p build/tikz
pdflatex -output-directory build -shell-escape main.tex

错误:

===== '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'.

结果目录结构(树的输出):

.
├── build
│   ├── main.aux
│   ├── main.auxlock
│   ├── main.log
│   ├── main.pdf
│   └── tikz
│       └── testpicture.md5
└── main.tex

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

我的假设是否正确?如果是的话,我应该如何处理这个问题呢?

最佳答案 据我所知,最简单的解决方案是在主文件夹中创建一个符号链接到构建内部的tikz文件夹.像这样:ln -s build / tikz.

这是我在another tikz externalizing library的文档中找到的解决方案.

点赞