我刚刚了解了 Vim 版 LaTeX-Suite,但很难设置一个编译规则来调用它处理make
我的自定义。我阅读的Makefile
相关部分.vimrc
" vim-latex-suite setup:
filetype plugin on
filetype indent on
let g:tex_flavor='latex'
并.vim/ftplugin/tex.vim
包含
" this is mostly a matter of taste. but LaTeX looks good with just a bit
" of indentation.
set sw=2
" TIP: if you write your \label's as \label{fig:something}, then if you
" type in \ref{fig: and press <C-n> you will automatically cycle through
" all the figure labels. Very useful!
set iskeyword+=:
" Compilation rules:
let g:Tex_DefaultTargetFormat = 'pdf'
let g:Tex_CompileRule_pdf = 'make $*.pdf'
如果我省略let g:Tex_DefaultTargetFormat = 'pdf'
-line,\ll
将使用 进行构建latex
,因此DefaultTargetFormat
被正确处理。但我可以将任何内容写入CompileRule
,它始终会产生GNU make
错误make: *** No rule to make target 'pdf'
。
FAQ 告诉我要确保:set makeprg?
显示的值与相同:set Tex_CompileRule_dvi
,但它却显示makeprg=make "pdf"
。因此 LaTeX-Suite 似乎正在执行make "pdf"
,完全忽略了我的编译规则。
我试过了set makeprg=make\ %:r.pdf
,但它甚至没有改变的输出:set makeprg?
,而是让我遇到了同样的错误。
答案1
这听起来像是预期的行为,因为g:Tex_UseMakefile
它采用了默认值1
。这导致 vim-latex 覆盖任何Tex_CompileRule_<fmt>
如果makefile
找到a ,并将g:Tex_DefaultTargetFormat
设为目标make
,因此您看到make "pdf"
。
使用,即使发现,也会遵循let g:Tex_UseMakefile="0"
适当的编译规则(仍然可以调用)。make
makefile
根据编译规则,可以在 vim-latex 中进行配置,以g:Tex_FormatDependency_<fmt>
指示多个编译规则,然后利用例如自动多重编译来尝试从单个\ll
编译调用中获取交叉引用。