谢谢您的注意,英语不是我的母语;请原谅打字错误。
我以前用 texstudio 在 latex 中写论文,然后用 Zotero 的插件“better BibTeX”导出参考书目。它工作得很好,因为 bib 文件可以自动更新,而且可以在 texstudio 中编译引文键(由 xelatex 编写)。
但是,当我使用 VSCode 作为带有“latex-workshop”的 tex 编辑器时,似乎出现了问题:
"message": "Citation `zhouDecelerationChinaHuman2020' on page 1 undefined.\n",
我检查了 bib 文件和引用键,一切都正确。当我编译我的 tex 文件时,它在 texstudio 中仍然可以正常工作。令人惊讶的是,一旦在 Texstudio 中编译一次,这些引用在 VSCode 中也能正常工作!但当我插入新的引用时,类似的错误再次出现。
我已经设置了 VSCode 如下latex-workshop 的文档但它不起作用:
"latex-workshop.kpsewhich.enabled": true,
"latex-workshop.intellisense.package.enabled":true,
并且我已经在配方中设置了 xelatex(与 texstudio 相同):
"latex-workshop.latex.recipes": [
{
"name": "xelatex",
"tools": [
"xelatex"
]
},
{
"name": "latexmk",
"tools": [
"latexmk"
]
},
{
"name": "pdflatex -> bibtex -> pdflatex*2",
"tools": [
"pdflatex",
"bibtex",
"pdflatex",
"pdflatex"
]
}
],
我被这个问题困扰了很长时间,如果有人能提供任何帮助我将不胜感激!
答案1
我发现了一个可能对您有帮助的解决方案。在 Latex-Workshop 扩展的 Tex 部分(在最左侧的垂直面板中),应该会出现“命令”部分。在该部分中,应该会出现选项“构建 Latex 项目”->“配方:pdflatex-bibtex-pdflatex x2”。如果您单击它,它将使用最后一个 .bib 文件重建 bibtex 数据库,这应该可以解决您的问题。出现此问题的原因是 VS 中的默认 pdflatex 构建引擎不会自动将 .bib 文件更新到其 bibtex 数据库;尽管它可以识别 IDE 中的引用,但无法将它们放入构建的文档中。
答案2
按照上述步骤操作后,问题仍然没有解决。然后我意识到在再次编译 tex 文件之前我没有“make clean”。所以我提出了导致功能障碍的另外两个可能原因:
- bib 文件包含非法字符(例如,如果有人直接从某个网站下载 bibtex,它可能包含希腊字母或其他非法字符。这可能会导致无法导入相应的 bib 文件,更糟糕的是,我们甚至无法导入其他完全正确的 bib 文件。)
- 替换所有非法字符后,需要先“make clean”才能再次编译。
答案3
我建议xelatex->bibtex->xelatex->xelatex
使用MikTex
- 使用终端或 texworks 检查命令是否有效。
原因:vscode 的 settings.json 中只指定了命令(例如“xelatex”),而电脑中可能存在各种与此相关的引擎/执行程序。
因此,使用终端命令检查它在没有 LaTex Workshop 的情况下是否可以正常工作。
例如
xelatex test.tex
- 检查日志!
实际上,我总是发现很难阅读 VSCode 中的日志。因此,请尝试使用终端命令检查终端中的输出
这让我想起更新混合纤维。
更新后(打开 MikTex 控制台),它可以按预期工作!