我目前正在使用带有 vimtex 插件的 vim 上的 latex(带有 mac big sur os),我想要两个功能:
- 当我编译 latex 时,Asymptote 会自动编译
- 所有辅助文件(.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]'");}