答案1
这是该文件的适当插入内容latexmkrc
。
$pdflatex = 'internal musixlatex %R %O %S';
push @generated_exts,"mx2";
push @generated_exts,"mx1";
sub musixlatex {
my $root = shift;
# Define root filename for the mx1 and mx2 files
# Note that $aux_dir1 includes directory separator
# and it equals $out_dir1 if only the out_dir is set.
my $mx = "$aux_dir1$root";
my @args = @_;
if ( $pass{$rule} <= 1 ) {
print "======= FIRST PASS: Deleting '$mx.mx2' =======\n";
unlink "$mx.mx2";
print "==== Generating '$mx.mx1' then '$mx.mx2' ===\n";
my $ret = system( "pdflatex @args" );
if ($ret) { return $ret; }
$ret = system( "musixflx $mx" );
if ($ret) { return $ret; }
}
return system( "pdflatex @args" );
}
最主要的是第一次.mx2
运行前需要删除文件,然后运行生成新文件,再运行一次。 pdflatex
musixflx
mx2
pdflatex
但有时需要两次以上的传递pdflatex
来解决交叉引用等问题。因此,我使用了一个内部变量的技巧,以便只在第一遍传递时latexmk
使用;这样可以将运行的次数保持在最低限度。musixflx
pdflatex