bibtex报错:! File ended while scanning use of \BR@@lbibitem.

2023-10-07 21:50

本文主要是介绍bibtex报错:! File ended while scanning use of \BR@@lbibitem.,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

bibtex报错: File ended while scanning use of \BR@@lbibitem.

这是笔者遇到最离谱的报错了,能解决也全凭运气

特别感谢:https://blog.csdn.net/qw11er/article/details/126689699

笔者的环境:ubuntu20.04+ texlive + vscode + latex-workshop

出现的问题时使用\bibliography时根本显示不出来参考文献

警告也是说\cite找不到citation,

找了半天没有发现任何问题

问题解决:

首先需要排除是找不到文件的问题。
源文件名为myBib.bib
原命令为\bibliography{myBib}

将命令改为\bibliography{whereismyBib}
立即出现找不到bibdata的错误,说明不是找不到文件的问题

到底是什么问题,不使用vscode latex-workshop的插件,逐步编译看看:
在命令行分别输入
pdflatex script
biblatex script
pdflatex script
pdflatex script

在第三步:pdflatex script报出了题目所示的错误
而解决方法是,打开同目录下的bbl,\bibitem之间空行即可

空行能通过build的原理目前还不清楚,应该是bbl文件的LaTeX语法的问题
也就是说bibtex工具本身生成的bbl文件有问题,这里给出bibtex版本信息如下:
bibtex版本信息

如果要使用vscode 的插件latex-workshop重现这个问题,需要更改settings.json,这个部分:

"latex-workshop.latex.clean.fileTypes": ["*.aux","*.blg","*.idx","*.ind","*.lof","*.lot","*.out","*.toc","*.acn","*.acr","*.alg","*.glg","*.glo","*.gls","*.fls","*.log","*.fdb_latexmk","*.snm","*.synctex(busy)","*.synctex.gz(busy)","*.nav","*.vrb"]//去掉了"*.bbl"

去掉了"*.bbl",即设置latex-workshop不再删除这个中间文件
再点击build,可以看出vscode终于输出这个错误了,原先连报错都没有是真的折磨:
latex-workshop报错

永久解决这个问题:

根据上面的debug原理编写一个简单的python脚本如下:

import os
import subprocess
import argparse#---------------------传入参数设定----------------------------
parser = argparse.ArgumentParser(description='传入仿真参数')
parser.add_argument('--texDir', type=str, required=True)args = parser.parse_args()# --------------------检查传入参数-----------------------------
texDir = args.texDir
if type(texDir) != str:raise ValueError('texDir应是字符串')# -------------------开始修改bbl文件-------------------------
print('begin check and fix bbl process! ')file_names = os.listdir(texDir)
tex_name = ''
for name in file_names:if name[-4:] == '.tex':tex_name = name[:-4]breakelse:continueaux_file_name = tex_name + '.aux'
bbl_file_name = tex_name + '.bbl'file_content = ''
generate_aux_command = 'pdflatex '+tex_name
generate_bbl_command = 'bibtex ' + tex_nameif aux_file_name not in file_names:subprocess.call(generate_aux_command, shell=True)
if bbl_file_name not in file_names:subprocess.call(generate_bbl_command, shell=True)with open(texDir + '/{}'.format(bbl_file_name),'r+') as file_handle:file_content = file_handle.read()# check file content
if file_content == '':subprocess.call(generate_bbl_command, shell=True)# read file content again
with open(texDir + '/{}'.format(bbl_file_name),'r+') as file_handle:file_content = file_handle.read()# fix file content:
with open(texDir + '/{}'.format(bbl_file_name),'w+') as file_handle:if file_content.count('\n\n%Type = Article') == 0 and file_content.count('\n%Type = Article') != 0:file_content = file_content.replace('\n%Type = Article','\n\n%Type = Article')file_handle.write(file_content)


以及对vscode setttings.json进行更改
在tex文件目录下打开终端:

mkdir .vscode
cd vscode/
touch settings.json

修改settings.json如下:
(记得自行更改python脚本的绝对路径 “/absolute_directory/to/python_scirpt/fix_bbl.py”):

{"editor.codeActionsOnSave": {},"latex-workshop.latex.tools": [{"name": "latexmk","command": "latexmk","args": ["-synctex=1","-interaction=nonstopmode","-file-line-error","-pdf","%DOCFILE%"]},{"name": "python","command": "python","args": ["/absolute_directory/to/python_scirpt/fix_bbl.py",//这个要根据自己的脚本路径自行更改!"--texDir=%DIR%"]},{"name": "xelatex","command": "xelatex","args": ["-synctex=1","-interaction=nonstopmode","-file-line-error","%DOCFILE%"]},          {"name": "pdflatex","command": "pdflatex","args": ["-synctex=1","-interaction=nonstopmode","-file-line-error","%DOCFILE%"]},{"name": "bibtex","command": "bibtex","args": ["%DOCFILE%",]},],"latex-workshop.latex.clean.fileTypes": ["*.aux","*.blg","*.idx","*.ind","*.lof","*.lot","*.out","*.toc","*.acn","*.acr","*.alg","*.glg","*.glo","*.gls","*.fls","*.log","*.fdb_latexmk","*.snm","*.synctex(busy)","*.synctex.gz(busy)","*.nav","*.vrb"],"latex-workshop.latex.recipes": [{"name": "XeLaTeX","tools": ["xelatex"]},{"name": "PDFLaTeX","tools": ["pdflatex"]},{"name": "BibTeX","tools": ["bibtex"]},{"name": "LaTeXmk","tools": ["latexmk"]},{"name": "fixBBL","tools":["python"]},{"name": "xelatex -> bibtex -> xelatex*2","tools": ["xelatex","bibtex","python","xelatex","xelatex"]},{"name": "pdflatex -> bibtex -> pdflatex*2","tools": ["pdflatex","bibtex","python","pdflatex","pdflatex"]}],"files.associations": {"*.tex": "latex"},"[latex]": {"editor.formatOnPaste": false,"editor.suggestSelection": "recentlyUsedByPrefix"},"files.autoGuessEncoding": true,"[python]": {"editor.formatOnType": true}}

完成以后效果应该是这样子的:
完成效果
其中可以直接点击pdflatex->bibtex->pdflatex*2
问题解决~

这篇关于bibtex报错:! File ended while scanning use of \BR@@lbibitem.的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/160641

相关文章

qt5cored.dll报错怎么解决? 电脑qt5cored.dll文件丢失修复技巧

《qt5cored.dll报错怎么解决?电脑qt5cored.dll文件丢失修复技巧》在进行软件安装或运行程序时,有时会遇到由于找不到qt5core.dll,无法继续执行代码,这个问题可能是由于该文... 遇到qt5cored.dll文件错误时,可能会导致基于 Qt 开发的应用程序无法正常运行或启动。这种错

MySQL启动报错:InnoDB表空间丢失问题及解决方法

《MySQL启动报错:InnoDB表空间丢失问题及解决方法》在启动MySQL时,遇到了InnoDB:Tablespace5975wasnotfound,该错误表明MySQL在启动过程中无法找到指定的s... 目录mysql 启动报错:InnoDB 表空间丢失问题及解决方法错误分析解决方案1. 启用 inno

IDEA下"File is read-only"可能原因分析及"找不到或无法加载主类"的问题

《IDEA下Fileisread-only可能原因分析及找不到或无法加载主类的问题》:本文主要介绍IDEA下Fileisread-only可能原因分析及找不到或无法加载主类的问题,具有很好的参... 目录1.File is read-only”可能原因2.“找不到或无法加载主类”问题的解决总结1.File

解决Java异常报错:java.nio.channels.UnresolvedAddressException问题

《解决Java异常报错:java.nio.channels.UnresolvedAddressException问题》:本文主要介绍解决Java异常报错:java.nio.channels.Unr... 目录异常含义可能出现的场景1. 错误的 IP 地址格式2. DNS 解析失败3. 未初始化的地址对象解决

Python报错ModuleNotFoundError的10种解决方案

《Python报错ModuleNotFoundError的10种解决方案》在Python开发中,ModuleNotFoundError是最常见的运行时错误之一,通常由模块路径配置错误、依赖缺失或命名冲... 目录一、常见错误场景与原因分析二、10种解决方案与代码示例1. 检查并安装缺失模块2. 动态添加模块

idea报错java: 非法字符: ‘\ufeff‘的解决步骤以及说明

《idea报错java:非法字符:‘ufeff‘的解决步骤以及说明》:本文主要介绍idea报错java:非法字符:ufeff的解决步骤以及说明,文章详细解释了为什么在Java中会出现uf... 目录BOM是什么?1. BOM的作用2. 为什么会出现 \ufeff 错误?3. 如何解决 \ufeff 问题?最

解决Maven项目报错:failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.13.0的问题

《解决Maven项目报错:failedtoexecutegoalorg.apache.maven.plugins:maven-compiler-plugin:3.13.0的问题》这篇文章主要介... 目录Maven项目报错:failed to execute goal org.apache.maven.pl

电脑找不到mfc90u.dll文件怎么办? 系统报错mfc90u.dll丢失修复的5种方案

《电脑找不到mfc90u.dll文件怎么办?系统报错mfc90u.dll丢失修复的5种方案》在我们日常使用电脑的过程中,可能会遇到一些软件或系统错误,其中之一就是mfc90u.dll丢失,那么,mf... 在大部分情况下出现我们运行或安装软件,游戏出现提示丢失某些DLL文件或OCX文件的原因可能是原始安装包

电脑显示mfc100u.dll丢失怎么办?系统报错mfc90u.dll丢失5种修复方案

《电脑显示mfc100u.dll丢失怎么办?系统报错mfc90u.dll丢失5种修复方案》最近有不少兄弟反映,电脑突然弹出“mfc100u.dll已加载,但找不到入口点”的错误提示,导致一些程序无法正... 在计算机使用过程中,我们经常会遇到一些错误提示,其中最常见的就是“找不到指定的模块”或“缺少某个DL

解决IDEA报错:编码GBK的不可映射字符问题

《解决IDEA报错:编码GBK的不可映射字符问题》:本文主要介绍解决IDEA报错:编码GBK的不可映射字符问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录IDEA报错:编码GBK的不可映射字符终端软件问题描述原因分析解决方案方法1:将命令改为方法2:右下jav