通常我使用 zotero 及其bibtex
/biblatex
导出工具来创建.bib
文件。但这种方法不会让你掌控参考书目,如果 zotero 无法检索正确的数据(或者转换为 bib(La)TeX 有误),你可能会在参考文献中重现错误。
因此,我正在考虑是否能回到以前的方法;在单个.bib
手动编辑的文件中管理我的参考书目。我以前是借助 Emacs+AUCTeX 来实现这一点的。使用 Emacs 输入不同的字段并创建参考文献非常简单。然而,文件没有组织;引用没有顺序。Emacs 将引用写在光标所在的位置。
我希望这个.bib
文件内有一些最低限度的顺序。例如,参考文献可以按作者姓名的字母顺序排列。我该如何实现这一点?更一般地说,有哪些工具可以.bib
手动管理文件?(例如在文件内搜索)。我必须明确我不想使用 JabRef。
答案1
比布工具可以对.bib
文件进行排序,以及执行许多其他操作。虽然我确实手动编辑参考书目文件,但我很少使用它来完成此任务,因为它emacs
提供了更好的解决方案(例如,参见 giordano 的评论)。
要按 bibkey 排序,很简单(为清楚起见,这里没有对选项进行分组):
bibtool -s -i input.bib -o output.bib
要按 bibkey 反向排序,请使用:
bibtool -S -i input.bib -o output.bib
(请注意,此工具因此鼓励合理的 bibkey 命名策略。理想情况下,您的 bibkey 在逻辑上与作者或编辑者字段相连。例如,John Smith 撰写并于 2000 年发表的文章将具有类似于smith2000
bibkey 的内容。如果需要进一步消除歧义,我建议添加前四个单词的首字母:因此smith2000aaos
可能用于 Smith 的文章,标题为“关于东西的文章”。我的.bib
文件有大约 2700 个条目 [并且还在增长],并且此系统没有重复的 bibkey。)
[编辑:] bibtool 的最新版本允许按特定字段排序。例如,要按作者排序,请使用
bibtool -s –sort.format=”%N(author)” input.bib output.bib
查看手动的更多细节。
答案2
Emacs 包含bibtex-mode
,它提供添加、编辑和维护 .bib 文件的功能。它将按字母顺序维护您的条目。它还可以配置为根据作者、年份、标题等自动生成新条目的密钥。在我的例子中,它以 的形式生成一个密钥author_author_year
,因此密钥看起来与使用 natbib 处理后的条目非常相似。
您可以使用 在 Emacs 内部找到文档C-h m bibtex-mode
。
答案3
我使用 notepad++ 以及复制和粘贴手动管理我的所有 bib 文件,这让我走了很长的路:每个条目都只是文本,所以只要你的文件不是太长,你就可以手动复制和粘贴它们。
对于较长的文件,事情就比较棘手了。我还没听说过有专门用于对 bib 文件进行排序的程序。不过,LaTeX 并不关心间距,因此您可以将每个条目放在一行上,然后使用类似 unix 命令的命令sort
将它们按顺序排列并保存新文件。
答案4
排序条目格式合理的文件:
python bibsort.py references.bib
哪里bibsort.py
:
"""Sorts a *formatted* file that has @'s at the beginning of the line."""
import sys
filenames = sys.argv[1:]
for filename in filenames:
entries = []
# Parse file. Assume reasonably well-formatted.
with open(filename) as f:
for line in f:
if line.startswith("@"):
entries.append([])
entries[-1].append(line)
# Sort by "key" in "@misc{key,".
entries.sort(key=lambda lines: lines[0].split("{")[1].lower())
# Save sorted file.
with open(filename, "w") as f:
f.write("".join(x for xs in entries for x in xs))
这只适用于如下文件:
@misc{tolkien1954lotr,
...
}
但不适用于如下文件:
@misc{
tolkien1954lotr,
... } @misc {
subpar2020formatting, author
= { What Is Formatting et al.}, } @article{...}
...因此,您可能需要biber
事先bibtool
进行操作,以便以良好的方式格式化文件。(有关如何使用这些工具,请参阅其他答案。)