使用MATLAB代码处理文章references(1)
笔者最近在用word写文章,文章写到reference时,没发现方便的references生成工具,于是打算自己动手。本次内容分为三章,讨论如何使用MATLAB代码生成references(本质上是C++的指针和面向对象在MATLAB环境中编程)。本章为第一章,内容为读取bib文件并转换为MATLAB的structure文件。
第二章和第三章的内容分别为,使用MATLAB转换好的structure文件生成和排版reference,以及使用MATLAB GUI将该过程可视化。
背景介绍
使用latex编辑论文的references十分方便,本质上是因为latex导入的bib文件包含了引用文章的种种信息并易于提取。我将用MATLAB实现提取bib内容的过程。
代码实现
文件提取
bib文件包含的信息十分丰富,拿我第一篇投稿的会议内容举例
@inproceedings{10.1145/3364836.3364870,
author = {Jiang, Benxiang and zhang, Yue and Tang, Xiaoying and Shi, Hongjian},
title = {Region Growing Model with Edge Restrictions for Multiple Roots Tooth Segmentation},
year = {2019},
isbn = {9781450372626},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/3364836.3364870},
doi = {10.1145/3364836.3364870},
booktitle = {Proceedings of the Third International Symposium on Image Computing and Digital Medicine},
pages = {171–174},
numpages = {4},
keywords = {region growing, Tooth segmentation, CBCT},
location = {Xi'an, China},
series = {ISICDM 2019}
}
bib文件中每行的内容直接清晰,可以直接使用指针函数fopen和fgetl提取每一行。
内容寻找
以location词条为例,我们需要找到location所在的行,可以使用MATLAB的cellfun和findstr函数实现。
id = cellfun(@(x) ~