# This shows how to use the pythontex package with latexmk # This version has a fudge on the latex and pdflatex commands that # allows the pythontex custom dependency to work even when $out_dir # is used to set the output directory. Without the fudge (done by # trickery symbolic links) the custom dependency for using pythontex # will not be detected. add_cus_dep('pytxcode', 'tex', 0, 'pythontex'); sub pythontex { # This subroutine is a fudge, because it from latexmk's point of # view, it makes the main .tex file depend on the .pytxcode file. # But it doesn't actually make the .tex file, but is used for its # side effects in creating other files. The dependence is a way # of triggering the rule to be run whenever the .pytxcode file # changes, and to do this before running latex/pdflatex again. return system("pythontex.py \"$_[0]\"") ; } $pdflatex = 'internal mylatex %R %Z pdflatex %O %S'; $latex = 'internal mylatex %R %Z latex %O %S'; sub mylatex { my $root = shift; my $dir_string = shift; my $code = "$root.pytxcode"; my $result = "pythontex-files-$root"; if ($dir_string) { warn "mylatex: Making symlinks to fool cus_dep creation\n"; unlink $code; if (-l $result) { unlink $result; } elsif (-d $result) { unlink glob "$result/*"; rmdir $result; } symlink $dir_string.$code, $code; if ( ! -e $dir_string.$result ) { mkdir $dir_string.$result; } symlink $dir_string.$result, $result; } else { foreach ($code, $result) { if (-l) { unlink; } } } return system @_; }