将 Bibtex .bib 文件转换为可由 MS Word 2010 导入的 XML 文件的最佳方法是什么?
8 回答
Java 应用程序 JabRef 是一个很棒的工具,我已经成功地使用它来将我的 BibTex 条目导出为 XML,并将它们导入 Word 2013,完全没有问题。
这是我找到的解决方案。
Ubuntu repos 中提供的Bibutils提供了一些将 BibTex 转换为 Word XML 的工具,但是 Word 无法正确导入某些字段存在一些问题。这里有一些 Python 代码可以一次性完成所有操作。到目前为止,我已经为 @article 和 @inproceedings 条目准备好了。
#THIS REQUIRES THAT bibutils IS INSTALLED ON YOUR MACHINE
"""
Usage:
./Bib2Word2010XML.py [Input file name] [Output file name]
"""
import sys
import fileinput
import os
if __name__ == '__main__':
#input a BibTex .bib file
fnameIN = sys.argv[1]
fnameOUT = sys.argv[2]
#run bibutils functions to convert to Word XML
os.system("bib2xml " + fnameIN + " > TEMPOUT1.xml")
os.system("xml2wordbib TEMPOUT1.xml > TEMPOUT2.xml")
os.system("rm TEMPOUT1.xml")
#clean up for Word 2010 formatting
f1 = open('TEMPOUT2.xml', 'r')
f2 = open(fnameOUT, 'w')
for line in f1:
line = line.replace("ArticleInAPeriodical", "JournalArticle")
line = line.replace("PeriodicalName", "JournalName")
line = line.replace("Proceedings", "ConferenceProceedings")
f2.write(line)
f1.close()
f2.close()
os.system("rm TEMPOUT2.xml")
根据 impala79s 的回答,这个单行代码使用 MS Word 2007 为我工作 。mybib.bib是我们要转换为 word 格式的输入bib 文件, word.xml是我们要保存 wordbib 格式的文件的输出名称至。如上所述,您需要安装 bibutils 包。
bib2xml mybib.bib | xml2wordbib | sed -e 's/PeriodicalName/PeriodicalTitle/g' -e 's/>Proceedings/>ConferenceProceedings/g' > word.xml
PS。您需要在您的机器上安装 bibutils 软件包,与上述答案类似
使用 bibutils (rbibutils) 的 R 端口,我设法在 Windows 中简单得多。
https://geobosh.github.io/rbibutils/
安装
install.packages("rbibutils")
那么这只是一个简单的命令:
rbibutils::bibConvert("myfile.bib", "myfile.xml", informat = "bibtex", outformat = "word")
请记住包括引号,因为这是 R。
免费的参考管理软件 Mendeley 也提供此选项。您可以打开 .bib 文件并导出到 Endnote XML。您可以在www.mendeley.com/download-desktop-new下载它。
基于 Andreas Grivas 脚本,我编写并分享了一个多文件 bib 到 xml(字兼容)转换器。您应该在包含 .bib 文件的文件夹中运行:
#this script convert a .bib file to xml file and to word xml file.
#this script use bibutils tools.
echo -e "===================\nscript to convert multiple .bib (bibtex) files to word xml\n==================="
echo -e "Settings\n==================="
mypwd=$(pwd)
output=$(pwd)/output
echo -e "Path:\n$mypwd"
echo -e "output folder:\n$output"
mkdir -p "${output}"
echo -e "===================\nProcessing"
counter=0
for file in *.bib;
do
counter=$((counter+1));
name=${file%.*};
echo -e "=================== \n$file"
bib2xml $name.bib | xml2wordbib | sed -e "$mypwd" -e "$mypwd" > "$output/$name.xml"
done
echo -e "==================="
echo -e "$counter .bib files were found.\nDone!"enter code here
对于那些使用 Docker 的人,https://github.com/derlin/docker-bib2word有一个 Dockerfile 和一个简单的脚本来完成这项工作。
要构建图像:
git clone https://github.com/derlin/docker-bib2word
cd docker-bib2word
docker build -t bib2word --rm .
然后,只需运行:
docker run --rm -v $(pwd):/app bib2word biblio.tex
转换biblio.tex
成biblio.xml
(可以导入word)。