BibLatex + Biber + VsCode 相关问题

问题

已经导入了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
}

但是仍然无法生成对应的参考文献:
在这里插入图片描述

可能的原因

原因一 BibTexBiber

网上的一部分Latex + VsCode的配置教程中,会在setting.json中的latex-workshop.latex.recipeslatex-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文件的编译方法,在上面举的例子中,就有三种编译顺序:XeLaTexBiberXeLaTex -> 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值