graphviz 自动编译

graphviz 自动编译

使用此文件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-escapedot\digraph

build/test.pdf

在此处输入图片描述

相关内容