一般问题似乎是 latexmk 似乎不能与 graphicx\graphicspath
指令一起工作。
我有以下目录结构:
├── working.tex
├── non-working.tex
├── latexmk
└── figures
└── graph.dot
运行latexmk -r latexmk -norc working.tex
编译很好,创建了一个figures/graph.pdf
输出pdf。
但运行latexmk -r latexmk -norc non-working.tex
出现以下错误:
! LaTeX Error: File `graph' not found.
而且它也没有说
Latexmk: applying rule 'cusdep dot pdf figures/graph'...
Rule 'cusdep dot pdf figures/graph': File changes, etc:
Non-existent destination files:
'figures/graph.pdf'
就像工作运行一样。
为了完整性:
$ latexmk --version
Latexmk, John Collins, 10 Nov 2013. Version 4.39
谢谢您的帮助。
latexmk:
# Use "bin" as output directory
$out_dir = "bin";
# Build pdf with pdflatex
$pdf_mode = 1;
# Additional options for pdflatex
$pdflatex = "pdflatex -shell-escape %O %S";
# Use pdflatex recorder functionality
$recorder = 1;
# Custom dependency to convert dot files to pdfs
add_cus_dep('dot', 'pdf', 0, 'dot2pdf');
sub dot2pdf {
system("dot -Tpdf \"$_[0].dot\" > \"$_[0].pdf\"");
}
工作.tex:
\documentclass{article}
\usepackage{graphicx}
\begin{document}
\includegraphics{figures/graph}
\end{document}
非工作.tex:
\documentclass{article}
\usepackage{graphicx}
\graphicspath{{figures/}}
\begin{document}
\includegraphics{graph}
\end{document}
图形/graph.dot:
digraph A {
Test
}
答案1
最简单的解决方法是手动创建文件 figures/graph.pdf 的第一个版本(例如,自己从命令行运行 dot 命令)。之后latexmk
将检测文件中的任何其他更改.dot
,并.pdf
在必要时自动重新生成文件。
这显然是不可取的。
问题是,graphicspath 上的信息不在任何latexmk
读取的相关文件中(即,不在.log
或.fls
文件中)。故意latexmk
不检查.tex
文件,因为通常解析.tex
文件很困难。