我正在写一篇会议论文,其中要求我使用\bibitem条目格式而不是BibTeX文件作为参考文献。Google Scholar 支持 BibTeX。是否有自动方法或工具来提取\bibitem?
例:我有BibTeX格式的参考文献如下:
@article{rieck2011similarity,
title={Similarity measures for sequential data},
author={Rieck, Konrad},
journal={Wiley Interdisciplinary Reviews: Data Mining and Knowledge Discovery},
volume={1},
number={4},
pages={296--304},
year={2011},
publisher={Wiley Online Library}
}
我想将BibTeX格式转换为以下格式(\bibitem):
bibitem{rieck2011similarity} K.~Rieck, emph{Similarity measures for sequential data},hskip 1em plus 0.5em minus 0.4emrelax Wiley Interdisciplinary Reviews: Data Mining and Knowledge Discovery, 2011.
由于没有其他答案,这种(不完全自动)方式可能会有所帮助:
- 在BibTeX中使用您的参考书目创建一个*.tex文件
- 像往常一样编译(latex/bibtex/latex)
- 在 *.tex 文件的目录中,打开 *.bbl :所有引文都转换为 bibitem。
- 在文档中复制/粘贴
来源 : http://newsgroups.derkeiler.com/Archive/Comp/comp.text.tex/2005-10/msg00552.html
我创建了这个在线bibtex转换器,因此它可以将您的BibTeX文本或文件转换为bibitem。
示例:
@article{rieck2011similarity,
title={Similarity measures for sequential data},
author={Rieck, Konrad},
journal={Wiley Interdisciplinary Reviews: Data Mining and Knowledge Discovery},
volume={1},
number={4},
pages={296--304},
year={2011},
publisher={Wiley Online Library}
}
目录输出
bibitem{rieck2011similarity}Rieck, K. Similarity measures for sequential data. {em Wiley Interdisciplinary Reviews: Data Mining And Knowledge Discovery}. textbf{1}, 296--304 (2011)
好吧,我使用这个 matlab 函数自动一一转换,它更容易完成工作。你可以从GitHub下载它,这里是matlab函数,如下所示。
function [bibitem] = bibtex2bibitem(bibtexpath)
path = bibtexpath;
cells = importdata(path);
A = string(cells);
n = length(cells);
K_name = strings(n,1);
citecode = extractBetween(A(1),'{',',');
for i = 2:1:n-1
rawleft = extractBefore(A(i),'=');
K_name(i) = strtrim(rawleft);
%--------------------------------------------------------------------
if strcmp(K_name(i),"author")
SVacI(1) = 1;
rawright = extractAfter(A(i),'=');
ccb = regexp(rawright,'}'); % ccb = [check curly bracket]
if (ccb~=0)
author = strtrim(extractBetween(A(i),'{','}'));
else
author = strtrim(extractBetween(A(i),'=',','));
end
%--------------------------------------------------------------------
elseif strcmp(K_name(i),"title")
SVacI(2) = 1;
rawright = extractAfter(A(i),'=');
ccb = regexp(rawright,'}'); % ccb = [check curly bracket]
if (ccb~=0)
title = strtrim(extractBetween(A(i),'{','}'));
else
title = strtrim(extractBetween(A(i),'=',','));
end
%--------------------------------------------------------------------
elseif strcmp(K_name(i),"journal")
SVacI(3) = 1;
rawright = extractAfter(A(i),'=');
ccb = regexp(rawright,'}'); % ccb = [check curly bracket]
if (ccb~=0)
journal = strtrim(extractBetween(A(i),'{','}'));
else
journal = strtrim(extractBetween(A(i),'=',','));
end
%--------------------------------------------------------------------
elseif strcmp(K_name(i),"volume")
SVacI(4) = 1;
rawright = extractAfter(A(i),'=');
ccb = regexp(rawright,'}'); % ccb = [check curly bracket]
if (ccb~=0)
volume = strtrim(extractBetween(A(i),'{','}'));
else
volume = strtrim(extractBetween(A(i),'=',','));
end
%--------------------------------------------------------------------
elseif (strcmp(K_name(i),"number"))||(strcmp(K_name(i),"issue"))
SVacI(5) = 1;
rawright = extractAfter(A(i),'=');
ccb = regexp(rawright,'}'); % ccb = [check curly bracket]
if (ccb~=0)
number = strtrim(extractBetween(A(i),'{','}'));
else
number = strtrim(extractBetween(A(i),'=',','));
end
%--------------------------------------------------------------------
elseif strcmp(K_name(i),"pages")
SVacI(6) = 1;
rawright = extractAfter(A(i),'=');
ccb = regexp(rawright,'}'); % ccb = [check curly bracket]
if (ccb~=0)
pages = strtrim(extractBetween(A(i),'{','}'));
else
pages = strtrim(extractBetween(A(i),'=',','));
end
%--------------------------------------------------------------------
elseif strcmp(K_name(i),"month")
SVacI(7) = 1;
rawright = extractAfter(A(i),'=');
ccb = regexp(rawright,'}'); % ccb = [check curly bracket]
if (ccb~=0)
month = strtrim(extractBetween(A(i),'{','}'));
else
month = strtrim(extractBetween(A(i),'=',','));
end
%--------------------------------------------------------------------
elseif strcmp(K_name(i),"year")
SVacI(8) = 1;
rawright = extractAfter(A(i),'=');
ccb = regexp(rawright,'}'); % ccb = [check curly bracket]
if (ccb~=0)
year = strtrim(extractBetween(A(i),'{','}'));
else
year = strtrim(extractBetween(A(i),'=',','));
end
%--------------------------------------------------------------------
elseif strcmp(K_name(i),"publisher")
SVacI(9) = 1;
rawright = extractAfter(A(i),'=');
ccb = regexp(rawright,'}'); % ccb = [check curly bracket]
if (ccb~=0)
publisher = strtrim(extractBetween(A(i),'{','}'));
else
publisher = strtrim(extractBetween(A(i),'=',','));
end
%--------------------------------------------------------------------
else
msg = join(["Sorry!","[", K_name(i), "]","is not being handled by the program."]);
disp(msg)
end
end
%--------------------------------------------------------------------
% @-> Style reference term code varifications.
% msg = join(["author","=",SVacI(1);...
% "title","=",SVacI(2);...
% "journal","=",SVacI(3);...
% "volume","=",SVacI(4);...
% "number","=",SVacI(5);...
% "pages","=",SVacI(6);...
% "month","=",SVacI(7);...
% "year","=",SVacI(8);...
% "publisher","=",SVacI(9)]);
% disp(SVacI)
if all(SVacI(1)==0)||(SVacI(2)==0)||(SVacI(3)==0)||(SVacI(8)==0)
bibitem = sprintf('THE ARTICLE IS NOT CORRECT. THE AUTHOR, TITLE, JOURNAL AND YEAR SECTIONS ARE COMPULSORY! PLEASE INCLUDE THEM AND RE-RUN THE SOFTWARE:)');
elseif all(SVacI == [1 1 1 0 0 0 0 1 0])
bibitem = sprintf('\bibitem{%s} %s,``%s," {\it %s\/},(%s).',citecode,author,title,journal,year);
elseif all(SVacI == [1 1 1 0 0 0 0 1 1])
bibitem = sprintf('\bibitem{%s} %s,``%s," {\it %s\/},(%s). %s.n',citecode,author,title,journal,year,publisher);
elseif all(SVacI == [1 1 1 0 0 0 1 1 0])
bibitem = sprintf('\bibitem{%s} %s,``%s," {\it %s\/},(%s %s).',citecode,author,title,journal,month,year);
elseif all(SVacI == [1 1 1 0 0 0 1 1 1])
bibitem = sprintf('\bibitem{%s} %s,``%s," {\it %s\/},(%s %s). %s.',citecode,author,title,journal,month,year,publisher);
elseif all(SVacI == [1 1 1 0 0 1 0 1 0])
bibitem = sprintf('\bibitem{%s} %s,``%s," {\it %s\/}, %s,(%s).',citecode,author,title,journal,pages,year);
elseif all(SVacI == [1 1 1 0 0 1 0 1 1])
bibitem = sprintf('\bibitem{%s} %s,``%s," {\it %s\/}, %s,(%s). %s.',citecode,author,title,journal,pages,year,publisher);
elseif all(SVacI == [1 1 1 0 0 1 1 1 0])
bibitem = sprintf('\bibitem{%s} %s,``%s," {\it %s\/}, %s,(%s %s).',citecode,author,title,journal,pages,month,year);
elseif all(SVacI == [1 1 1 0 0 1 1 1 1])
bibitem = sprintf('\bibitem{%s} %s,``%s," {\it %s\/}, %s,(%s %s). %s.',citecode,author,title,journal,pages,month,year,publisher);
elseif all(SVacI == [1 1 1 0 1 0 0 1 0])
disp("Attention! THE VOLUME HAS TO BE ASSOCIATED WITH NUMBER, PLEASE CHECK!")
bibitem = sprintf('\bibitem{%s} %s,``%s," {\it %s\/}, No.~%s,(%s).',citecode,author,title,journal,number,year);
elseif all(SVacI == [1 1 1 0 1 0 0 1 1])
disp("Attention! THE VOLUME HAS TO BE ASSOCIATED WITH NUMBER, PLEASE CHECK!")
bibitem = sprintf('\bibitem{%s} %s,``%s," {\it %s\/}, No.~%s,(%s). %s.',citecode,author,title,journal,number,year,publisher);
elseif all(SVacI == [1 1 1 0 1 0 1 1 0])
disp("Attention! THE VOLUME HAS TO BE ASSOCIATED WITH NUMBER, PLEASE CHECK!")
bibitem = sprintf('\bibitem{%s} %s,``%s," {\it %s\/}, No.~%s,(%s %s).',citecode,author,title,journal,number,month,year);
elseif all(SVacI == [1 1 1 0 1 0 1 1 1])
disp("Attention! THE VOLUME HAS TO BE ASSOCIATED WITH NUMBER, PLEASE CHECK!")
bibitem = sprintf('\bibitem{%s} %s,``%s," {\it %s\/}, No.~%s,(%s %s). %s.',citecode,author,title,journal,number,month,year,publisher);
elseif all(SVacI == [1 1 1 0 1 1 0 1 0])
disp("Attention! THE VOLUME HAS TO BE ASSOCIATED WITH NUMBER, PLEASE CHECK!")
bibitem = sprintf('\bibitem{%s} %s,``%s," {\it %s\/}, No.~%s, %s,(%s).',citecode,author,title,journal,number,pages,year);
elseif all(SVacI == [1 1 1 0 1 1 0 1 1])
disp("Attention! THE VOLUME HAS TO BE ASSOCIATED WITH NUMBER, PLEASE CHECK!")
bibitem = sprintf('\bibitem{%s} %s,``%s," {\it %s\/}, No.~%s, %s,(%s). %s.',citecode,author,title,journal,number,pages,year,publisher);
elseif all(SVacI == [1 1 1 0 1 1 1 1 0])
disp("Attention! THE VOLUME HAS TO BE ASSOCIATED WITH NUMBER, PLEASE CHECK!")
bibitem = sprintf('\bibitem{%s} %s,``%s," {\it %s\/}, No.~%s, %s,(%s %s).',citecode,author,title,journal,number,pages,month,year);
elseif all(SVacI == [1 1 1 0 1 1 1 1 1])
disp("Attention! THE VOLUME HAS TO BE ASSOCIATED WITH NUMBER, PLEASE CHECK!")
bibitem = sprintf('\bibitem{%s} %s,``%s," {\it %s\/}, No.~%s, %s,(%s %s). %s.',citecode,author,title,journal,number,pages,month,year,publisher);
elseif all(SVacI == [1 1 1 1 1 0 0 1 0])
bibitem = sprintf('\bibitem{%s} %s,``%s," {\it %s\/}, Vol.~%s, No.~%s,(%s).',citecode,author,title,journal,volume,number,year);
elseif all(SVacI == [1 1 1 1 1 0 0 1 1])
bibitem = sprintf('\bibitem{%s} %s,``%s," {\it %s\/}, Vol.~%s, No.~%s,(%s). %s.',citecode,author,title,journal,volume,number,year,publisher);
elseif all(SVacI == [1 1 1 1 1 0 1 1 0])
bibitem = sprintf('\bibitem{%s} %s,``%s," {\it %s\/}, Vol.~%s, No.~%s,(%s %s).',citecode,author,title,journal,volume,number,month,year);
elseif all(SVacI == [1 1 1 1 1 0 1 1 1])
bibitem = sprintf('\bibitem{%s} %s,``%s," {\it %s\/}, Vol.~%s, No.~%s,(%s %s). %s.',citecode,author,title,journal,volume,number,month,year,publisher);
elseif all(SVacI == [1 1 1 1 1 1 0 1 0])
bibitem = sprintf('\bibitem{%s} %s,``%s," {\it %s\/}, Vol.~%s, No.~%s, %s,(%s).',citecode,author,title,journal,volume,number,pages,year);
elseif all(SVacI == [1 1 1 1 1 1 0 1 1])
bibitem = sprintf('\bibitem{%s} %s,``%s," {\it %s\/}, Vol.~%s, No.~%s, %s,(%s). %s.',citecode,author,title,journal,volume,number,pages,year,publisher);
elseif all(SVacI == [1 1 1 1 1 1 1 1 0])
bibitem = sprintf('\bibitem{%s} %s,``%s," {\it %s\/}, Vol.~%s, No.~%s, %s,(%s %s).',citecode,author,title,journal,volume,number,pages,month,year);
elseif all(SVacI == [1 1 1 1 1 1 1 1 1])
bibitem = sprintf('\bibitem{%s} %s,``%s," {\it %s\/}, Vol.~%s, No.~%s, %s,(%s %s). %s.',citecode,author,title,journal,volume,number,pages,month,year,publisher);
end
clipboard('copy',bibitem);
disp('The bibitem has been copied to the clipboard!')
end
示例输入:
@article{hamid1969microwave,
title={Microwave pasteurization of raw milk},
author={Hamid, MAK and Boulanger, RJ and Tong, SC and Gallop, RA and Pereira, RR},
journal={Journal of Microwave Power},
volume={4},
number={4},
pages={272--275},
year={1969},
publisher={Taylor & Francis}
}
Sample Output:
'bibitem{hamid1969microwave} Hamid, MAK and Boulanger, RJ and Tong, SC and Gallop, RA and Pereira, RR,``Microwave pasteurization of raw milk," {it Journal of Microwave Power/}, Vol.~4, No.~4, 272--275,(1969). Taylor & Francis.'