问题
已经导入了biblatex
包以及对应的bib
文件:
\usepackage{biblatex}
\addbibresource{lookup.bib}
lookup.bib
文件:
@book{goossens97,
author = {Goossens, Michel and Rahtz, Sebastian and Mittelbach, Frank},
title = {The \LaTeX\ graphics companion: illustrating documents with \TeX\ and {PostScript}},
publisher = {Addison Wesley Longman, Inc},
year = 1997
}
@inproceedings{talbot97,
author = {Talbot, Nicola and Cawley, Gavin’},
title = {A fast index assignment algorithm for robust vector quantisation of image data},
booktitle = {Proceedings of the I.E.E.E. International Conference on Image Processing},
address = {Santa Barbara, California, USA},
month = oct,
year = 1997
}
但是仍然无法生成对应的参考文献:
可能的原因
原因一 BibTex
与Biber
网上的一部分Latex + VsCode
的配置教程中,会在setting.json
中的latex-workshop.latex.recipes
和latex-workshop.latex.tools
处作如下配置:
"latex-workshop.latex.tools": [
{
"name": "xelatex",
"command": "xelatex",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"%DOCFILE%"
]
},
{
"name": "bibtex",
"command": "bibtex",
"args": [
"%DOCFILE%"
]
},
]
// .......................................................//
"latex-workshop.latex.recipes": [
{
"name": "XeLaTeX",
"tools": [
"xelatex"
]
},
{
"name": "BibTex",
"tools": [
"bibtex"
]
},
{
"name": "xelatex -> bibtex -> xelatex*2",
"tools": [
"xelatex",
"bibtex",
"xelatex",
"xelatex"
]
},
]
但是现在的BibLaTex
使用的是Biber
而不是BibTex
,所以需要将配置中的BibTex
全部修改为Biber
。
原因二 指令执行顺序问题
由于生成参考文献的过程涉及多个步骤,其中每个步骤都可能存在问题,下面逐步分析各个部分来寻找问题。
之前在setting.json
中配置的latex-workshop.latex.recipes
这一项,实际指的是一个tex
文件的编译方法,在上面举的例子中,就有三种编译顺序:XeLaTex
、Biber
和XeLaTex -> Biber -> XeLaTex -> XeLaTex
这三种。
需要明确的是
XeLaTex
负责除了参考文献以外的部分,或者说纯文本的部分。Biber
只负责整理参考文献与引用之间的关系,而如果需要真正地把参考文献的引用生成为文本,还是需要用到XeLaTex
。Biber
需要XeLaTex
的输出作为输入。
所以,如果只修改了正文部分,则只需要执行一次XeLaTex
即可;如果修改了参考文献或者引用,则需要进行XeLaTex -> Biber -> XeLaTex -> XeLaTex
。(为什么需要两次XeLaTex
可以参考交叉引用)。
事实上,在一次编译中,latex-workshop.latex.recipes
中配置的所有内容并不会全部执行,而是只会执行第一条(根据上面的例子,就是执行XeLaTex
),不论是设置了保存时自动编译,还是手动点击VsCode右上角的小箭头来进行编译亦或者鼠标右键 + Build LaTex Project
。想要执行第三条,我们可以在latex-workshop.latex.recipes
中把它的排序放到第一位;或者点击VsCode左侧工具条中的Tex
,在COMMANDS
菜单中可以看到latex-workshop.latex.recipes
的相关配置。
手动点击对应的命令即可执行。
原因三 bib
文件名称
如果还是无法生成参考文献就只能看看报错信息了。
首先在setting.json
中添加一项:
"latex-workshop.latex.autoBuild.cleanAndRetry.enabled": false,
这是为了防止编译失败后,latex-workshop
插件自动删除中间文件。
先执行一次XeLaTex
,执行成功之后再单独执行一次Biber
,此时注意控制台的输出,到目前为止我碰到过两种报错:
第一种 提示无法找到bcf
文件
bcf
文件是XeLaTex
的输出,如果XeLaTex
没有问题的话,应该是会正常生成bcf
文件的,可以看看是否之前在setting.json
中配置了自动删除.bfc
文件,即:
"latex-workshop.latex.clean.fileTypes": [
...
],
"latex-workshop.latex.autoClean.run": "onFailed",
第二种 提示无法找到bib
文件
如果没有配置"latex-workshop.latex.autoBuild.cleanAndRetry.enabled": false,
这条消息会一闪而过。
这里是在说没有找到bib
文件,而且说没有找到的是reference.bib
。但是之前已经配置了\addbibresource{lookup.bib}
,并且提供了相应的lookup.bib
文件,按理说不应该会出现这类报错了。具体原因我也不清楚,解决方法就是,把\addbibresource{lookup.bib}
改成\addbibresource{reference.bib}
,同时把bib
文件的名称也改成reference.bib
。