使用 python 整理 latex 的 bib 文献列表

目录

  • bib 文献整理脚本
    • 前提条件与主要功能
    • 原理
    • 编程语言与宏包基础
    • 完整程序

bib 文献整理脚本

本文主要用于解决 Latex 写作过程中遇到的 bib 文献整理问题,可处理中文文献。

LaTeX是一种基于ΤΕΧ的排版系统,它非常适用于生成高印刷质量的科技和数学类文档,同样适用于生成从简单的信件到完整书籍的所有其他种类的文档。

前提条件与主要功能

前提条件:bib文件中参考文献格式正确。

主要功能:

  • 参考文献去重
  • 参考文献排序

Vscode 已有参考文献排序功能,本文主要解决的痛点问题是:

将两个 project 里面的 bib 文件合并后,参考文献重复会导致编译不通过

在这里插入图片描述

原理

读取 bib 文件内容后,识别所有的参考文献字段,提取关键词并进行排序,参考文献字段示例:

@article{li2020multitask,title     = {Multitask learning for super-resolution of seismic velocity model},author    = {Li, Yinshuo and Song, Jianyong and Lu, Wenkai and Monkam, Patrice and Ao, Yile},journal   = {IEEE Transactions on Geoscience and Remote Sensing},volume    = {59},number    = {9},pages     = {8022--8033},year      = {2020},publisher = {IEEE}
}

其中 li2020multitask 即为关键词

编程语言与宏包基础

选用 python 语言,对环境基本没有要求,只需要调用 argparsere 两个包分别用于识别脚本参数与正则匹配。

re 正则匹配基础:

  • . 匹配任意单个字符
  • * 匹配前面的字符0次或多次
  • + 匹配前面的字符1次或多次
  • ? 匹配前面的字符0次或1次
  • | 匹配两个或多个表达式中的任意一个
  • [] 匹配括号中的任意一个字符
  • () 匹配括号中的表达式
  • \d 匹配任何数字字符
  • \w 匹配任何字母数字字符
  • \s 匹配空格字符
  • \b 匹配单词边界
  • ^ 匹配字符串的开头
  • $ 匹配字符串的结尾

完整程序

import argparse
import reif __name__ == '__main__':# 设置脚本参数,包括输入和输出文件parser = argparse.ArgumentParser(description='manual to this script')parser.add_argument("--bib_path", type=str, default="ref/refs.bib")parser.add_argument("--bib_out", type=str, default=None)# 读取并设置脚本参数args = parser.parse_args()bib_path = args.bib_pathbib_out = bib_path if args.bib_out is None else args.bib_out# 读取数据,根据@进行字段分割,@前可能有换行加若干空格with open(bib_path, 'r', encoding='utf-8') as f:bib_data = re.split('[\n|\r]\s*\@', f.read())# 处理第一个参考文献字段,统一成缺少@的参考文献字段#(后面会统一补充@符号)if bib_data[0][0] == '@':bib_data[0] = bib_data[0][1:]else:bib_data.pop(0)# 提取关键字和完整字段字典,实现去重,关键字全部为小写bib_dict = dict()for bib in bib_data:key = re.findall('{(.*?),', bib)[0].lower()bib_dict[key] = '@' + bib# 升序排序keys = sorted(bib_dict.keys())bib_list = [bib_dict[key] for key in keys]bib_data = '\n\n'.join(bib_list)# 输出结果with open(bib_out, 'w', encoding='utf-8') as f:f.write(bib_data)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/703376.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024江苏省赛 H. 完蛋,我被房产包围了 【费用流、分时图】

完蛋,我被房产包围了 n ≤ 200 , ∑ n ≤ 1 0 4 n \leq 200, \sum n \leq 10^4 n≤200,∑n≤104 求出最大利润 思路 每个代理商每次买房狂潮只能卖出 1 1 1 套房子,小红卖出一套房子贬值 1 1 1 元,小绿卖出一套房子贬值 ⌈ a i 10 ⌉ \…

vue加密传输,后端获取进行解密。

文章目录 概要Vue前端加密后端进行解密小结 概要 vue界面加密传输,后端获取进行解密,适用于登录时密码加密传输。 Vue前端加密 1.安装jsencrypt包: npm install jsencrypt安装完成后package.json会有jsencrypt依赖 2.引入jsencrypt.js到文…

Trieve实践:好用功的开源RAG

目录 RAG概述 RAG架构 Trieve Trieve介绍 Trieve使用 初始化 自行搭建RAG Trieve是什么,RAG是什么,本文来带你了解。其实在很多产品应用里面都会有RAG,比如ai客服,针对性的智能问答,都是基于RAG实现的 RAG概述 RAG 是一种…

【竞技宝】英超:曼城击败热刺,赢西汉姆联就夺冠

曼城在英超补赛中跟热刺相遇,这场比赛对于双方来说都必须赢。曼城要是拿不下热刺,联赛夺冠形势就不容乐观。热刺则是需要击败曼城,保留拿到下赛季欧冠的一线希望。所以,热刺和曼城开场就全力以赴。上半场热刺和曼城门将都做出精彩扑救,比分维持在0比0。下半场曼城金靴哈兰德发威…

ubuntu升级python

添加Python官方PPA源 sudo add-apt-repository ppa:deadsnakes/ppa 执行会显示各个版本ubuntu可以安装哪些python版本 更新软件包索引 sudo apt update 安装需要版本Python sudo apt install python3.11 检查Python版本: which python11 /usr/bin/python3.11 设置为系统默认Pyt…

前端无样式id或者class等来定位标签

目录: 1、使用背景2、代码处理 1、使用背景 客户使用我们产品组件,发现替换文件,每次替换都会新增如下的样式,造就样式错乱,是组件的文件,目前临时处理的话就是替换文件时删除新增的样式,但是发…

SAP揭秘者- SAP工单ATP检查专题之工单ATP检查的需求背景及相关操作

文章摘要: 从本章开始,我将给大家详细地介绍SAP生产订单/工单 ATP检查的相关的配置和操作,以及在项目上具体是怎么使用的,包含怎么应对实际项目中的一些疑难点需求。 ATP检查会应用到MM,SD,PP三个模块中,这里我们主要…

Spring初学入门(跟学笔记)

一、Spring概述 Spring是一款主流的Java EE轻量级开源框架。 Spring的核心模块:IoC(控制反转,指把创建对象过程交给Spring管理 )、AOP(面向切面编程,在不修改源代码的基础上增强代码功能) 二、…

ps找不到d3dcompiler_47.dll怎么办,无法启动,7个解决方法能搞定

当您在尝试运行某个游戏时,如果系统提示“d3dcompiler_47.dll丢失”或“无法找到d3dcompiler_47.dll”,这通常意味着DirectX组件不完整或损坏。下面是修复此问题的详细步骤: 一、d3dcompiler_47.dll的属性概述 文件名称:d3dcompi…

echarts去掉网格线

柱子后面白色的线太丑了! 去掉他 x轴平行的线,就写在yAxis下面 yAxis: {type: value,splitLine: {lineStyle: {type: dashed, // 虚线样式color: rgba(255, 255, 255, 0.15) // 虚线颜色}},//去除网格线}, 这个颜色一定要加‘’,不然不生效…

python 批量webp格式转换成jpg

首先,你需要安装Pillow库。如果还未安装,可以通过pip安装: pip install Pillow 创建一个Python脚本来读取webp文件,并将其转换为jpg格式。 只需修改source_folder和dest_folder变量为你的实际文件夹路径即可使用这个脚本。 fro…

3SRB2516-ASEMI适配大功率充电桩3SRB2516

编辑:ll 3SRB2516-ASEMI适配大功率充电桩3SRB2516 型号:3SRB2516 品牌:ASEMI 封装:SGBJ-5 正向电流(Id):25A 反向耐压(VRRM):1600V 正向浪涌电流&…