latexmk 和 \graphicspath

latexmk 和 \graphicspath

一般问题似乎是 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文件很困难。

相关内容