Biber 后端和 Vim-Latex

Biber 后端和 Vim-Latex

我正在尝试让 biblatex 与 Vim-Latex(又名 Latex-Suite)配合使用。使用 bibtex 作为后端可以正常工作,但使用 biber 则不行。我使用的是 Miktex 2.9,并且在我的 .vimrc 文件中有以下内容:

" Latex configuration
set shellslash
set grepprg=grep\ -nH\ $*
let g:tex_flavor='latex'
let g:Tex_BibtexFlavor = 'biber'
let g:Tex_CompileRule_pdf = 'pdflatex --synctex=-1 -src-specials -interaction=nonstopmode -file-line-error-style $*'
let g:Tex_DefaultTargetFormat='pdf'  
let g:Tex_MultipleCompileFormats='pdf'

我也尝试过设置:

let g:Tex_CompileRule_bib = 'biber $*'

但我仍然收到“存在未定义的引用”警告。

答案1

正如 MarcoDaniel 所建议的,一种可能性是使用这个神奇的arara工具。为了使其与 Vim-Latex 一起工作,编译器设置必须vimrc是:

let g:tex_flavor='latex'
let g:Tex_DefaultTargetFormat='pdf'
let g:Tex_CompileRule_pdf = 'arara -v $*'

为了能够通过在“QuickFix”窗口中按回车键跳转到源窗口中的错误位置,您必须将“file-line-error-style”标志传递给 arara,例如像这样:

% arara: pdflatex: {options: "-file-line-error-style"}

要使用biber,只需添加指令:% arara: biber

答案2

在上述 Paul 和 Werner 的回答对我没有帮助之后,我根据他们所写的内容做了以下事情:

在 中~/.vimrc,我添加了:

let g:Tex_BibtexFlavor = 'biber'
let g:Tex_DefaultTargetFormat="pdf"
" The following is relevant to make LaTeX rerun after biber if necessary: 
" (include all formats for which re-running is to be enabled)
let g:Tex_MultipleCompileFormats='pdf,dvi'

~/.vim/ftplugin/latex-suite/compiler.vim第567行左右,我做了以下代码替换:

" old code:
" if runCount == 0 && Tex_IsPresentInFile('\\bibdata', mainFileName_root.'.aux')
"   let bibFileName = mainFileName_root.'.bbl'

" new code:
if runCount == 0 && Tex_IsPresentInFile('Please \(re\)run Biber on the file', mainFileName_root.'.log')
    let bibFileName = mainFileName_root.'.bcf'

第二行 ( .bbl-> .bcf) 中的更改与使 biber 在正确的文件上运行有关。第一行中的更改使 biber 仅在 LaTeX 在 -File 中输出通常的“请在文件上 (重新) 运行 Biber ...”时才执行.log。在 Louisa Grey 上面建议的版本中,只要源文件包含引用,biber 就会运行;但通常这不是必要的。

如果这对您有用,请告诉我。

编辑: 有时手动运行 biber 很方便,而不是作为由快捷键触发的编译过程的一部分\ll。为此,您\lb只需将以下行添加到即可配置新的快捷键~/.vimrc

map <Leader>lb :<C-U>exec '!biber '.Tex_GetMainFileName(':p:t:r')<CR>

答案3

我所做的是在 vim-latex 插件中,~/.vim/ftplugin/latex-suite/texrc我更改了:

TexLet g:Tex_BibtexFlavor = 'bibtex'

TexLet g:Tex_BibtexFlavor = 'biber'

然后,就像@PLK提到的那样,您想要在文件biber上执行.bcf(参见biblatex手动的),所以在~/.vim/ftplugin/latex-suite/compiler.vim568 左右,我改变了

let bibFileName = mainFileName_root.'.bbl'

let bibFileName = mainFileName_root.'.bcf'

如果这对您有用,请告诉我。

相关内容