biblatex
我在尝试从 切换到biber
时遇到了很多问题bibtex
,解决了几个问题后,我不知所措。现在的情况:
biblatex
biber
不作为后端使用时有效biber
已安装(当我运行时,biber --version
我得到biber version: 0.9.8
)- 当使用 latex 插件在以 as 为后端的文档上运行的时候
rubber
,gedit
什么biber
都没有发生。我没有收到任何错误,文档正在持续编译但从未完成。
以下是 MWE:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[backend=biber]{biblatex}
\usepackage{geometry}
\addbibresource[datatype=bibtex]{bilbliography}
\begin{document}
\nocite{*}
\printbibliography
\end{document}
我正在运行 Fedora 16 和 Gnome 3。有人知道我做错了什么吗?
答案1
几件事:
- 您不需要添加该
[datatype=bibtex]
选项\addbibresource
- 这是默认的 - 您需要完整的文件名,例如
\addbibresource{bibliography.bib}
。可选参数对此没有帮助。 - Biber 不是在文件上运行,而是在您使用biblatex 选项时生成的文件
.bib
上运行。您可以在带或不带文件扩展名的文件上调用 biber。.bcf
backend=biber
.bcf
答案2
免责声明:这个答案可能被认为是一种黑客攻击,因此不能保证适用于每个文档。:)
我和 egreg 正在交谈TeX、LaTeX 及其朋友rubber
聊天室讨论扩展使用的可能性biber
。这个答案只有通过他的洞察力才有可能。非常感谢,例如。:)
首先,请注意,它rubber
似乎不再被维护。最新的稳定版本是1.1
在 2006 年发布的。在我看来,开发版本远远不够用。
rubber
可以通过模块进行扩展。简单来说,rubber
模块是遵循某些规则的 Python 脚本。不幸的是,这些模块相当“罕见”。
我写了一个在我们的社区博客上发帖关于rubber
。模块有一个很好的用法。例如,rubber
不提供开箱即用的 XeLaTeX 支持,但值得庆幸的是,Wouter Bolsterlee 通过为其编写模块提供了一个优雅的解决方案。
话虽如此,为了完整起见,我会记录我所做的过程。
rubber
有一个rules/latex
目录,您可以在其中找到其他模块。我也在 Fedora 16 上,此目录的位置是:
/usr/lib/python2.7/site-packages/rubber/rules/latex
我在这里的方法是使用类似的模块并根据我们的目的进行调整。如果我们列出rules/latex
,我们会在那里找到一个在- 这意味着默认假设bibtex.py
中注册的文件。__init__.py
rubber
bibtex
我所做的是复制bibtex.py
到一个新文件biber.py
。由于这两个程序似乎工作方式相似,我认为这只是一个用另一个替换的问题。同样,我没有时间检查文件,所以它远非稳定或万无一失!此外,biber
可能还有一些其他特殊之处,这种方法没有涵盖。
我打开了biber.py
- 这是 的精确副本,bibtex.py
并搜索了 的出现bibtex
,将其替换为biber
,包括消息和系统调用。我保留了函数名称的完整性 - 但适当的重构无法解决任何问题。
好的,现在我有了模块。现在我需要一个测试文档。我biber
以前从未使用过,所以我不得不依靠以下 MWE如何使用 biber:
\documentclass[]{article}
\usepackage[autostyle]{csquotes}
\usepackage[
backend=biber,
style=authoryear-icomp,
sortlocale=de_DE,
natbib=true,
url=false,
doi=true,
eprint=false
]{biblatex}
\addbibresource{mybib.bib}
\usepackage[]{hyperref}
\hypersetup{
colorlinks=true,
}
\begin{document}
Lorem ipsum dolor sit amet~\citep{kastenholz}.
At vero eos et accusam et justo duo dolores et ea rebum~\citet{sigfridsson}.
\printbibliography
\end{document}
现在,在我的终端中,我使用和导航到我的测试目录document.tex
。mybib.bib
我调用了以下命令:
$ rubber --module=biber document
也可以rubber
在文件顶部添加指令.tex
来调用该模块:
% rubber: module biber
\documentclass[]{article}
...
输出:
我检查了结果document.pdf
,所有参考资料均正确显示。
这种肮脏的攻击方式需要更多的测试,但到目前为止它似乎是有效的。:)
答案3
可以在主 tex 文件中定义橡胶规则,以便在编译文件并且生成/更改辅助文件时触发 biber 命令。
我的 main.tex 文件顶部有这个:
% rubber: watch main.acn
% rubber: onchange main.acn 'makeglossaries main'
% rubber: watch main.bcf
% rubber: onchange main.bcf 'biber main'
前两行与词汇表包(我用它来生成首字母缩略词)相关,后两行是调用 biber 而不是常规 bibtex 所必需的。
请不要忘记,为了实现此功能,biblatex 中需要 backend=biber 选项。
\usepackage[backend=biber]{biblatex}
我希望这有用!