Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

今天突然报biber的错~~~ #66

Open
PositiveTom opened this issue Apr 5, 2024 · 13 comments
Open

今天突然报biber的错~~~ #66

PositiveTom opened this issue Apr 5, 2024 · 13 comments

Comments

@PositiveTom
Copy link

INFO - This is Biber 2.19
INFO - Logfile is '/Users/galaxy/paper/GraduationV2/SCUT_thesis-master/scutthesis.blg'
ERROR - Cannot find '/Users/galaxy/paper/GraduationV2/SCUT_thesis-master/scutthesis.bcf'!
INFO - ERRORS: 1

@mengchaoheng
Copy link
Owner

ChatGPT: 这个错误信息表明 BibLaTeX (Biber) 在尝试编译时找不到 .bcf 文件。.bcf 文件是 BibLaTeX 使用的一个临时文件,其中包含编译过程中生成的一些信息。通常情况下,当您运行 LaTeX 编译器时,会自动生成 .bcf 文件。您可以尝试以下几种方法来解决这个问题:重新运行 LaTeX 编译器: 首先尝试重新运行 LaTeX 编译器,例如 pdflatex,以确保生成所需的 .bcf 文件。您可能需要多次运行编译器才能生成所有必要的文件。清理临时文件: 如果重新运行编译器仍然无法解决问题,可以尝试清理临时文件,并重新运行编译器。您可以使用命令行工具或 LaTeX 编辑器提供的功能来清理临时文件。检查文件路径: 确保 .bcf 文件的路径和名称没有错误,并且与编译过程中其他文件的路径相匹配。有时文件路径中的大小写、空格或特殊字符可能会导致问题。更新工具链: 确保您使用的 LaTeX 工具链(如 TeX Live、MiKTeX 等)和相关软件包(如 BibLaTeX、Biber 等)是最新版本。有时更新到最新版本可以解决一些已知的问题。如果尝试以上方法仍然无法解决问题,您可能需要查看编译日志以获取更多详细信息,以帮助诊断和解决问题。

@PositiveTom
Copy link
Author

ChatGPT: 这个错误信息表明 BibLaTeX (Biber) 在尝试编译时找不到 .bcf 文件。.bcf 文件是 BibLaTeX 使用的一个临时文件,其中包含编译过程中生成的一些信息。通常情况下,当您运行 LaTeX 编译器时,会自动生成 .bcf 文件。您可以尝试以下几种方法来解决这个问题:重新运行 LaTeX 编译器: 首先尝试重新运行 LaTeX 编译器,例如 pdflatex,以确保生成所需的 .bcf 文件。您可能需要多次运行编译器才能生成所有必要的文件。清理临时文件: 如果重新运行编译器仍然无法解决问题,可以尝试清理临时文件,并重新运行编译器。您可以使用命令行工具或 LaTeX 编辑器提供的功能来清理临时文件。检查文件路径: 确保 .bcf 文件的路径和名称没有错误,并且与编译过程中其他文件的路径相匹配。有时文件路径中的大小写、空格或特殊字符可能会导致问题。更新工具链: 确保您使用的 LaTeX 工具链(如 TeX Live、MiKTeX 等)和相关软件包(如 BibLaTeX、Biber 等)是最新版本。有时更新到最新版本可以解决一些已知的问题。如果尝试以上方法仍然无法解决问题,您可能需要查看编译日志以获取更多详细信息,以帮助诊断和解决问题。

有没有更具体的

@mengchaoheng
Copy link
Owner

因为没有你更具体的信息,所以没法提供更具体的方案。建议使用git,方便查看出问题前后版本差异。可以编译一下原版的模板文件,如果通过了,再添加自己的章节文件和参考文献上去看看,做排除法。还可以清除临时文件,再重新编制

@PositiveTom
Copy link
Author

因为没有你更具体的信息,所以没法提供更具体的方案。建议使用git,方便查看出问题前后版本差异。可以编译一下原版的模板文件,如果通过了,再添加自己的章节文件和参考文献上去看看,做排除法。还可以清除临时文件,再重新编制

我现在描述一下具体的,找了好久的bug,

首先我是macos平台,使用的是mactex;
第一步:下载原模版,仅修改了.cls中的字体代码,可以正常编译:只出现了以下警告:(应该无伤大雅)
Package fontspec Warning: Font "STHeitiSC-Light" does not contain requested
(fontspec) Script "CJK".

(/Volumes/ExternalMac/Software/MacTex/texlive/2023/texmf-dist/tex/latex/amsfonts/umsa.fd) (/Volumes/ExternalMac/Software/MacTex/texlive/2023/texmf-dist/tex/latex/amsfonts/umsb.fd) (/Volumes/ExternalMac/Software/MacTex/texlive/2023/texmf-dist/tex/latex/jknapltx/ursfs.fd) [1]) [2] (./scutthesis.toc [3]) [4] (./scutthesis.lot) [5] (./scutthesis.lof) [6] (./symbols.tex) [7] (./abbreviation.tex) [8] (./chapter01.tex
第\xCJKnumber {1}章 1.
[1]) [2] (./chapter02.tex
第\xCJKnumber {2}章 2.

Package fontspec Warning: Font "STFangsong" does not contain requested Script
(fontspec) "CJK".

Missing character: There is no ⟨ (U+27E8) in font [lmmono10-regular]:!
Missing character: There is no ⟩ (U+27E9) in font [lmmono10-regular]:!
Missing character: There is no ⟨ (U+27E8) in font [lmmono10-regular]:!
Missing character: There is no ⟩ (U+27E9) in font [lmmono10-regular]:!

第二步:在chapter1.tex中增加\parencite{RN42},RN42这个引用文献位于mybibfile2.bib文件中,
在编译到第二步biber的时候,出现了以下错误:(我知道整体编译步骤:xelatex->biber->xelatex->xelatex)
INFO - This is Biber 2.19
INFO - Logfile is '/Users/galaxy/paper/Graduation-thesis/SCUT_thesis-master 2/scutthesis.blg'
ERROR - Cannot find '/Users/galaxy/paper/Graduation-thesis/SCUT_thesis-master 2/scutthesis.bcf'!
INFO - ERRORS: 1

@PositiveTom
Copy link
Author

因为没有你更具体的信息,所以没法提供更具体的方案。建议使用git,方便查看出问题前后版本差异。可以编译一下原版的模板文件,如果通过了,再添加自己的章节文件和参考文献上去看看,做排除法。还可以清除临时文件,再重新编制

刚刚我把四步编译,一步一步拆开,第一步运行xelatex:
"name": "xelatex",
"command": "/Volumes/ExternalMac/Software/MacTex/texlive/2023/bin/universal-darwin/xelatex",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"%DOC%"
]
生成了下图这些临时文件,其中含有的.bcf
image

第二步:运行biber,
"name": "biber",
"command": "/Volumes/ExternalMac/Software/MacTex/texlive/2023/bin/universal-darwin/biber",
"args": [
"%DOC%"
]
我发现运行完后,.bcf文件就不见了,以及就会出现错误:
ERROR - Cannot find '/Users/galaxy/paper/Graduation-thesis/SCUT_thesis-master 2/scutthesis.bcf'!

@PositiveTom
Copy link
Author

问题解决了,还是靠自己靠谱!但凡用vscode和tex编译都大概率会遇到这个错误,没有遇到可能是编译得次数不够多,可是竟然没啥人提,那咱也就不提了。

@mengchaoheng
Copy link
Owner

我也是用Mac,但是我的编译链好像不太一样。我回头试试你的方案。最近没得空搞这个。他们应该都是用视频教程的方式。

@johnning2333
Copy link

问题解决了,还是靠自己靠谱!但凡用vscode和tex编译都大概率会遇到这个错误,没有遇到可能是编译得次数不够多,可是竟然没啥人提,那咱也就不提了。

请问是怎么解决的啊,我编译的时候遇到了同样的问题

@johnning2333
Copy link

问题解决了,还是靠自己靠谱!但凡用vscode和tex编译都大概率会遇到这个错误,没有遇到可能是编译得次数不够多,可是竟然没啥人提,那咱也就不提了。

请问是怎么解决的啊,我编译的时候遇到了同样的问题
我的问题解决了,是因为bib文件产生的cache导致的,删掉之后再编译就过了
https://tex.stackexchange.com/questions/579291/biber-exiting-with-error-code-2-but-no-error-messages

@mengchaoheng
Copy link
Owner

可是竟然没啥人提,那咱也就不提了。

我刚刚有空仔细看了,你所使用的编译链是未完善的功能,只是占了个坑,setting.json文件只是一个模版。里面真正可以用的编译链是之前毕业的同学@zhuohoudeputao 做的 更新编译方式为latexmk ,他们不可能把所有功能都做完整,毕竟有一个能用的xelatexmk已经很好了。

我在写这个回复时,看了文件修改历史,我印象中settings_files/settings.json文件是我根据网上模版写的,为了满足大家对vscode的需求。最初是可以用,当时setting文件如下:

{
    
    "latex-workshop.latex.tools": [
        {
            "name": "xelatex",
            "command": "xelatex",
            "args": [
                "-synctex=1",
                "-interaction=nonstopmode",
                "-file-line-error",
                "-pdf",
                "%DOC%"
            ]
        },
        {
            "name": "latexmk",
            "command": "latexmk",
            "args": [
                "-synctex=1",
                "-interaction=nonstopmode",
                "-file-line-error",
                "-pdf",
                "%DOC%"
            ]
        },
        {
            "name": "biber",
            "command": "biber",
            "args": [
                "%DOCFILE%"
            ]
        }
    ],
    "latex-workshop.latex.recipes": [
        {
            "name": "xelatex -> biber -> xelatex*2",
            "tools": [
                "xelatex",
                "biber",
                "xelatex",
                "xelatex"
            ]
        }
    ],
    "latex-workshop.view.pdf.viewer": "tab"

}

后来大家说编译速度慢,@zhuohoudeputao 同学做了改进。我看了文件历史,没处理好这部分替换,导致旧的编译链不能用了,等于说以新替旧,但又没删掉。未来需要把每一条编译链都测试好,删掉不能用的。

如果您完善了settings_files/settings.json可以分享给大家,推pr给我合并。感谢支持。
@PositiveTom @johnning2333

@mengchaoheng mengchaoheng reopened this Apr 10, 2024
@mengchaoheng
Copy link
Owner

Build LaTeX project子菜单里,编译时点击Recipe: xelatexmk而不是其他选项。也许大家都是选这个,所以没发现问题。正如我这里所说

@mengchaoheng
Copy link
Owner

实际上利用git仔细对比历史修改,应该很容易修复这个问题。但是我现在真的没空看了,还有十分钟我就要被老板约谈。。。除非它完全不能用,我可能要花时间修复。真心希望同学们都像2022年那届同学一样参与开发。我现在只能像聊天一样回复大家,深度投入开发的话,真的很累,请原谅。

@mengchaoheng
Copy link
Owner

mengchaoheng commented May 27, 2024

最新的推送 b961239b02339b185d95d 更新了这个问题,以期彻底解决问题。首先编译错误需要先清除临时文件,像这些结尾的:
".aux",
"
.bbl",
".blg",
"
.idx",
".ind",
"
.lof",
".lot",
"
.out",
".toc",
"
.acn",
".acr",
"
.alg",
".glg",
"
.glo",
".gls",
"
.ist",
".fls",
"
.log",
"*.fdb_latexmk"

然后我在setting.json文件里指明了// 参考:https://zhuanlan.zhihu.com/p/166523064 和 chatGPT。知乎的内容大家都可以看,下面贴出chatGPT的答案:

问:写一个vscode的settings.json文件,配置pdflatex,xelatex,lualatex,latexmk,xelatexmk,bibtex,biber的latex-workshop.latex.tools和latex-workshop.latex.recipes等latex-workshop配置

chatGPT:以下是一个全面配置的 settings.json 文件,包含 pdflatex、xelatex、lualatex、latexmk、xelatexmk、bibtex、和 biber 的 latex-workshop.latex.tools 和 latex-workshop.latex.recipes 配置:

{
    "latex-workshop.latex.tools": [
        {
            "name": "pdflatex",
            "command": "pdflatex",
            "args": [
                "-synctex=1",
                "-interaction=nonstopmode",
                "-file-line-error",
                "%DOC%"
            ]
        },
        {
            "name": "xelatex",
            "command": "xelatex",
            "args": [
                "-synctex=1",
                "-interaction=nonstopmode",
                "-file-line-error",
                "%DOC%"
            ]
        },
        {
            "name": "lualatex",
            "command": "lualatex",
            "args": [
                "-synctex=1",
                "-interaction=nonstopmode",
                "-file-line-error",
                "%DOC%"
            ]
        },
        {
            "name": "latexmk",
            "command": "latexmk",
            "args": [
                "-synctex=1",
                "-interaction=nonstopmode",
                "-file-line-error",
                "-pdf",
                "%DOC%"
            ]
        },
        {
            "name": "xelatexmk",
            "command": "latexmk",
            "args": [
                "-synctex=1",
                "-interaction=nonstopmode",
                "-file-line-error",
                "-xelatex",
                "%DOC%"
            ]
        },
        {
            "name": "bibtex",
            "command": "bibtex",
            "args": [
                "%DOCFILE%"
            ]
        },
        {
            "name": "biber",
            "command": "biber",
            "args": [
                "%DOCFILE%"
            ]
        }
    ],
    "latex-workshop.latex.recipes": [
        {
            "name": "pdflatex",
            "tools": [
                "pdflatex"
            ]
        },
        {
            "name": "xelatex",
            "tools": [
                "xelatex"
            ]
        },
        {
            "name": "lualatex",
            "tools": [
                "lualatex"
            ]
        },
        {
            "name": "latexmk",
            "tools": [
                "latexmk"
            ]
        },
        {
            "name": "xelatexmk",
            "tools": [
                "xelatexmk"
            ]
        },
        {
            "name": "pdflatex -> bibtex -> pdflatex*2",
            "tools": [
                "pdflatex",
                "bibtex",
                "pdflatex",
                "pdflatex"
            ]
        },
        {
            "name": "xelatex -> biber -> xelatex*2",
            "tools": [
                "xelatex",
                "biber",
                "xelatex",
                "xelatex"
            ]
        },
        {
            "name": "lualatex -> biber -> lualatex*2",
            "tools": [
                "lualatex",
                "biber",
                "lualatex",
                "lualatex"
            ]
        }
    ],
    "latex-workshop.view.pdf.viewer": "tab",
    "latex-workshop.latex.autoBuild.run": "never",
    "latex-workshop.latex.clean.fileTypes": [
        "*.aux",
        "*.bbl",
        "*.blg",
        "*.idx",
        "*.ind",
        "*.lof",
        "*.lot",
        "*.out",
        "*.toc",
        "*.acn",
        "*.acr",
        "*.alg",
        "*.glg",
        "*.glo",
        "*.gls",
        "*.ist",
        "*.fls",
        "*.log",
        "*.fdb_latexmk"
    ],
    "latex-workshop.latex.clean.onFail": true,
    "latex-workshop.showContextMenu": true,
    "latex-workshop.intellisense.package.enabled": true,
    "editor.wordWrap": "on"
}

解释:

  • latex-workshop.latex.tools:

    • 定义了各种编译工具,包括 pdflatex、xelatex、lualatex、latexmk、xelatexmk、bibtex 和 biber。

    • 每个工具都指定了对应的命令和参数。

  • latex-workshop.latex.recipes:

    • 定义了编译链,包括单次调用的工具和多次调用的工具链。

    • 例如,pdflatex -> bibtex -> pdflatex2 和 xelatex -> biber -> xelatex2 是常见的多步编译链,用于确保所有引用和交叉引用正确解析。

  • latex-workshop.view.pdf.viewer:

    • 设置 PDF 查看器为 tab,即在 VS Code 的选项卡中打开 PDF 文件。
  • latex-workshop.latex.autoBuild.run:

    • 设置自动构建选项为 never,即需要手动触发编译。
  • latex-workshop.latex.clean.fileTypes 和 latex-workshop.latex.clean.onFail:

    • 定义了清理的文件类型和清理条件。

    • 设置为在编译失败时自动清理临时文件。

  • latex-workshop.showContextMenu:

    • 在右键菜单中显示 LaTeX Workshop 的选项。
  • latex-workshop.intellisense.package.enabled:

    • 启用基于使用的宏包自动补全功能。
  • editor.wordWrap:

    • 启用自动换行功能。

这份配置文件涵盖了常见的 LaTeX 编译工具和编译链,适用于不同的 LaTeX 工作流。通过这种配置,用户可以在 VS Code 中高效地编译 LaTeX 文档,并获得高质量的输出。

在使用 latexmk 或 xelatex 进行编译时,通常不会主动删除 .bcf 文件,因为 .bcf 文件是 Biber 使用的中间文件,用于处理参考文献。但是,可能会出现 .bcf 文件丢失的情况,原因可能包括以下几个方面:

  1. 编译失败:如果 xelatex 在生成 .bcf 文件时遇到错误,可能会导致文件未生成或被删除。
  2. 清理设置:如果配置中的清理命令被错误地设置为在编译失败后删除中间文件,可能会导致 .bcf 文件被删除。

以下是可能导致 .bcf 文件丢失的一些设置及其检查方法:

  1. 检查清理设置
    确保清理设置不会在编译过程中删除 .bcf 文件。以下是您提供的 settings.json 文件中相关的清理设置:
"latex-workshop.latex.clean.fileTypes": [
    "*.aux",
    "*.bbl",
    "*.blg",
    "*.idx",
    "*.ind",
    "*.lof",
    "*.lot",
    "*.out",
    "*.toc",
    "*.acn",
    "*.acr",
    "*.alg",
    "*.glg",
    "*.glo",
    "*.gls",
    "*.ist",
    "*.fls",
    "*.log",
    "*.fdb_latexmk"
],
"latex-workshop.latex.autoClean.run": "onBuilt",

这里并未包括 .bcf 文件,因此应该不会在清理过程中删除 .bcf 文件。

  1. 确保编译顺序
    确保使用正确的编译顺序,特别是在处理带有参考文献的文档时。例如,使用 xelatex -> biber -> xelatex*2 的编译链:

  2. 手动检查文件生成过程:
    1). 初次编译:运行 xelatex,查看是否生成 .bcf 文件。
    2). 运行 Biber:在 .bcf 文件生成后,运行 biber,查看是否成功处理参考文献。
    3). 再次编译:最后运行 xelatex两次,确保所有引用和索引都正确解析。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants