Endnote to Bibtex
2017-01-16 by:CAE仿真在线 来源:互联网
为了方便将Endnote格式转换为Bibtex格式,特编写如下程序。
Endnote在转换为Bibtex格式时,缺少label项,如果文献较多的情况下,人工添加是非常费时费力的。网上相关的程序又少。
签于转出格式为TXT,所以就用MATLAB编写相关代码,实现批量添加label项。
label项格式为 author-year-pages
如需其它命名格式可自行在代码中添加,非常简单。
注意:本程序运行时,请先在Endnote输出文件第一行回车,即@从第二行起。第一行留空。
原文件aa.txt
回车第一行留空aa.txt
处理
endnote2bibtex('aa.txt')
===========源代码================
% label =Author-year-pages
function endnote2bibtex(filename)
% Author: J.H.Zhujhzhu99@gmail.com
fid = fopen(filename);
% create label
k = 0;
while ~feof(fid)
tline =
fgetl(fid);
if
~isempty(strfind(tline,'author'))
author{k} = getstring(tline,'author');
elseif
~isempty(strfind(tline,'year'))
year{k} = getstring(tline,'year');
elseif ~isempty(strfind(tline,'pages'))
pages{k} = getstring(tline,'pages');
end
if
sum(tline=='@')
k =
k+1;
end
end
for i =1:k
label{i}=[author{i},'-',year{i},'-',pages{i}];
end
k =0;frewind(fid)
fid2 = fopen(['New_',filename],'w+');
while ~feof(fid)
tline =
fgetl(fid);
if
sum(tline=='@')
k = k+1;
tline = updatelabel(tline,label{k});
end
fwrite(fid2,tline);
fprintf(fid2,'\n');
end
fclose all
function s = getstring(tline,flag)
switch flag
case
'author'
idx_start=findstr(tline,'{');
idx_end = findstr(tline,',');
s = tline(idx_start+1:idx_end(1)-1);
idx = findstr(s,' ');
if ~isempty(idx)
s(idx)=[];
end
case
'year'
idx_start=findstr(tline,'{');
idx_end = findstr(tline,'}');
s =
tline(idx_start+1:idx_end-1);
case
'pages'
idx_start=findstr(tline,'{');
idx_end = findstr(tline,'}');
s =
tline(idx_start+1:idx_end-1);
end
function s = updatelabel(s,label)
s = [s,label,','];
相关标签搜索:Endnote to Bibtex MatLab培训 MatLab培训课程 MatLab在线视频教程 MatLab技术学习教程 MatLab软件教程 MatLab资料下载 MatLab代做 MatLab基础知识 Fluent、CFX流体分析 HFSS电磁分析 Ansys培训 Abaqus培训