使用另一个目录中的 .asy 文件在 vim 上自动编译渐近线?

使用另一个目录中的 .asy 文件在 vim 上自动编译渐近线?

我目前正在使用带有 vimtex 插件的 vim 上的 latex(带有 mac big sur os),我想要两个功能:

  1. 当我编译 latex 时,Asymptote 会自动编译
  2. 所有辅助文件(.aux、.fls 等,以及渐近线文件,如 file-1.asy、file-1.pdf 等)将组织在单独的“build”目录中

在我的 .vimrc 文件中,我在 vimtex 插件下指定了以下内容,它将所有辅助文件(.aux、.fls 等以及 .asy 文件)移动到单独的“build”目录。

Plug 'lervag/vimtex'
    let g:tex_flavor='latex'
    let g:vimtex_view_method='skim'
    let g:vimtex_quickfix_mode=0
    let g:vimtex_compiler_latexmk = {
                \ 'build_dir' : 'build',
                \}
    set conceallevel=1
    let g:tex_conceal='abdmg'

渐近线文件(file-1.asy、file-1.pdf 等)会根据需要自动移动到构建目录。但是,编译 latex 时,渐近线不会自动编译。

因此,在我的 .latexmkrc 文件中,我有以下内容,使得 asy 能够在我编译 tex 文档时自动编译(成功)。

sub asy {return system("asy \"$_[0]\"");}
add_cus_dep("asy","eps",0,"asy");
add_cus_dep("asy","pdf",0,"asy");
add_cus_dep("asy","tex",0,"asy");

然而,这只在我在.vimrc文件中指定构建目录,即与以下行一起使用时会失败。

let g:vimtex_compiler_latexmk = {
            \ 'build_dir' : 'build',
            \}

本质上,我可以单独获得我想要的两个功能,但我无法同时使用它们。有什么方法可以让这两个功能一起工作吗?

答案1

在 Linux 上也遇到了这个问题。

在您的.latexmkrc,使用

sub asy {return system("asy -outname \$(dirname '$_[0]')/build '$_[0]'");}

代替

sub asy {return system("asy \"$_[0]\"");}

最好latexmk直接在您的目录中配置构建目录.latexmkrc,而不是.vimrc使用

$out_dir="build";

这样我们就可以

sub asy {return system("asy -outname \$(dirname '$_[0]')/$out_dir '$_[0]'");}

相关内容