使用此文件test.tex
:
\documentclass{standalone}
\usepackage[pdf]{graphviz}
\begin{document}
\digraph{abc}{
rankdir=LR;
a -> b -> c;
}
\end{document}
和这个~/.latexmkrc
$out_dir = 'build';
$pdf_mode = 1;
$pdf_previewer = 'zathura';
set_tex_cmds('-synctex=1 -interaction=nonstopmode --shell-escape %O %S');
正在运行,latexmk test.tex
生成
当指定目录时,graphviz 包似乎不起作用build
,即使它将输出abc.dot
到该build
目录。
答案1
latexmk
这是 John Collins (的维护者)在最近给我的一封电子邮件中提出的解决方案。
将以下几行放入 rc 文件中latexmk
;我们称之为latexmkrc-graphviz
:
$out_dir = 'build';
$pdf_mode = 1;
set_tex_cmds('%O %S');
# Use internal latexmk variable to find the names of the pdf file(s)
# to be created by dot.
push @file_not_found, 'runsystem\(dot -Tpdf -o ([^ ]+) ';
add_cus_dep( 'dot', 'pdf', 0, 'dottopdf' );
sub dottopdf {
system( "dot", "-Tpdf", "-o", "$_[0].pdf", "$_[0].dot" );
}
设为test.tex
原始帖子的(略作修改的)MWE。
\documentclass{article}
\usepackage[pdf]{graphviz}
\begin{document}
\digraph{abc}{
rankdir=LR;
a -> b -> c;
}
\end{document}
然后,该命令将在构建目录中latexmk -r latexmkrc-graphviz test
创建子目录build
、调用/usr/bin/dot
并生成。请注意,未使用。因此,编译周期往往会更快,因为只有当内容发生变化时才会调用相当慢的命令。test.pdf
--shell-escape
dot
\digraph
build/test.pdf
: