To parse BibTeX format files, Biber uses a C library called "btparse" which is, for all intents and purposes, 99.9% compatible with BibTeX. So, You should rarely have problem using Biber as a drop-in replacement for BibTeX. As mentioned by others, the issue is rather the slightly different data model which biblatex
has compared with the data model in BibTeX.
So, your question really relates to the difference in data models between plain BibTeX and BibLaTeX, regardless of whether you are using Biber as the biblatex
backend. Be aware that in the future, around BibLaTeX 2.x, BibTeX will no longer be supported as a biblatex
backend as it has too many limitations. Of course BibTeX format data files will always be supported.
The more important question is, as you mention, what the advantages of Biber might be even if you are not using any of the biblatex
data model specifics. Here are some advantages of Biber in this respect (you can get an idea by searching for the string "Biber only" in the biblatex
manual), omitting the features which require data source changes:
- Support of data sources other than
.bib
(currently RIS, Zotero RDF/XML, Endnote XML)
- Support for remote data sources (
.bib
files available via ftp or http)
- Support of other output formats (in 0.9.8 it will support GraphViz .dot output for
data visualisation and conversion to the planned biblateXML format)
- Full Unicode 6.0 support (including file names and citation keys)
- A sorting mechanism which I think is probably as good or better than any commercial
product - full Unicode, multi-field, per-field case and direction, CLDR aware and
completely user configurable. BibTeX doesn't come close in this regard.
- Automatic name and name list disambiguation. I think this is quite an impressive feature.
See section 4.11.4 of the
biblatex
manual for a very good explanation of this with examples.
- Completely customisable crossref inheritance rules. BibTeX has a very basic static rule
only.
- Automatic encoding and decoding, including UTF-8 <-> LaTeX macros
- Very flexible configuration file "sourcemap" option which can be used to change the
.bib
data as it is read by Biber, without changing the actual data source itself. You
can use this to do all sorts of things like drop certain fields, add fields,
conditionally drop/add fields, change fields using full Perl 5.14 regular expressions
(see Biber manual section 3.1.2).
This last feature is particularly interesting for you as you can potentially map your pure BibTeX .bib
files into the biblatex
model on the fly as Biber reads them but without altering the files. It's also very useful for dropping fields like abstract
which often cause trouble due to LaTeX reserved characters.
There are also some other features implemented in Biber which are available in BibLaTeX 2.x:
- Customisable labels
- Multiple bibliographies in the same refsection with their own sorting/filtering
- "Related" entries - a general solution to the issue of all these "reprinted as",
"translated as" etc. requirements.
I forgot to mention that Biber automatically applies the BibLaTeX field and entrytype mappings (address -> location etc.) mentioned in the documentation. It does this by implementing some driver-level source mappings (see \DeclareSourcemap
and its variants in the biblatex documentation).
This works, but I'm almost sure this is not the way to do it.
\setmainfont
, \setsansfont
and \setmonofont
need to specify the font for English because \normalfontlatin
relies on the main document font being a Latin Script (Polyglossia manual, 6).
\newfontfamily\hebrewfont[Script=Hebrew]{Noto Sans Hebrew}
\newfontfamily\hebrewfontsf[Script=Hebrew]{Noto Sans Hebrew}
\newfontfamily\hebrewfonttt[Script=Hebrew]{Noto Sans Hebrew}
\newfontfamily\englishfont[Ligatures=TeX]{Latin Modern Roman}
\setmainfont{Latin Modern Roman}
\setmonofont{Latin Modern Mono}
\setsansfont{Latin Modern Sans}
This may not matter so much if you are using a single font for English and Hebrew, of course.
You need to switch the language to English for the bibliography. This is pretty easy for the entries - just add language=english
to Biblatex's options.
\usepackage[backend=biber,bibstyle=numeric,language=english,autolang=langname]{biblatex}
But you need to also ensure this is done for the title of the chapter, if you want that in English.
\printbibliography[title={\textenglish{Bibliography}}]
I also switched the language of the surrounding document to English using
\begin{english}
...
\end{english}
However, I had greatest trouble with the numeric labels in the bibliography, which are being taken by default from the Hebrew font. On my machine, this means they are just boxes. To ensure a consistent font for the bibliography, I added
\renewcommand\bibfont{\normalfontlatin}
which is why it matters a lot that this behaves as expected, of course.
I've also added the standard TeX ligatures to the Latin font setup since the bibliography uses things like ``, which won't work otherwise.
The final problem was that \MakeUppercase
is then not defined when you switch the language to English. I assume this is a bug in something (Polyglossia?). Anyway, to work around this I created a new command to restore the default definition
\newcommand*\restoreuppercase{%
\DeclareRobustCommand{\MakeUppercase}[1]{{% from base/latex.ltx
\def\i{I}\def\j{J}%
\def\reserved@a####1####2{\let####1####2\reserved@a}%
\expandafter\reserved@a\@uclclist\reserved@b{\reserved@b\@gobble}%
\protected@edef\reserved@a{\uppercase{##1}}%
\reserved@a
}%
}%
\protected@edef\MakeUppercase##1{\MakeUppercase{##1}}%
}
and added \restoreuppercase
after starting the english
environment and before executing \printbibliography
.
The result:

Complete code:
\begin{filecontents*}{\jobname.bib}
@inproceedings{domingos2000mining,
title={Mining high-speed data streams},
author={Domingos, Pedro and Hulten, Geoff},
booktitle={Proceedings of the sixth ACM SIGKDD international conference on Knowledge discovery and data mining},
pages={71--80},
year={2000},
organization={ACM}
}
@article{garcia2010pattern,
title={Pattern classification with missing data: a review},
author={Garc{\'\i}a-Laencina, Pedro J and Sancho-G{\'o}mez, Jos{\'e}-Luis and Figueiras-Vidal, An{\'\i}bal R},
journal={Neural Computing and Applications},
volume={19},
number={2},
pages={263--282},
year={2010},
publisher={Springer}
}
\end{filecontents*}
\documentclass{report}
% % Add XeTeX Packages support for hebrew
\usepackage{polyglossia}% will load fontspec and bidi automatically
% % Set BibTeX
\usepackage[backend=biber,bibstyle=numeric,language=english,autolang=langname]{biblatex}
\addbibresource{\jobname.bib}
% % Font Support
\setdefaultlanguage{hebrew}
\setotherlanguage{english}
\newfontfamily\hebrewfont[Script=Hebrew]{Noto Sans Hebrew}
\newfontfamily\hebrewfontsf[Script=Hebrew]{Noto Sans Hebrew}
\newfontfamily\hebrewfonttt[Script=Hebrew]{Noto Sans Hebrew}
\newfontfamily\englishfont[Ligatures=TeX]{Latin Modern Roman}
\setmainfont{Latin Modern Roman}
\setmonofont{Latin Modern Mono}
\setsansfont{Latin Modern Sans}
\renewcommand\bibfont{\normalfontlatin}
\makeatletter
\newcommand*\restoreuppercase{%
\DeclareRobustCommand{\MakeUppercase}[1]{{% from base/latex.ltx
\def\i{I}\def\j{J}%
\def\reserved@a####1####2{\let####1####2\reserved@a}%
\expandafter\reserved@a\@uclclist\reserved@b{\reserved@b\@gobble}%
\protected@edef\reserved@a{\uppercase{##1}}%
\reserved@a
}%
}%
\protected@edef\MakeUppercase##1{\MakeUppercase{##1}}%
}
\makeatother
\title{מסמך בדיקה}
\author{יוצר בדיקה}
\begin{document}
\maketitle
\tableofcontents
% Some Text
\chapter{בדיקה ראשונה}
שלום עולם, מה שלום כולם ?
\nocite{*}
% References' List
\begin{english}
\restoreuppercase
\printbibliography[title={\textenglish{Bibliography}}]
\end{english}
\end{document}
I used Biber, but this may well work with BibTeX as the back-end, if you really don't want to use Biber.
Best Answer
The main hurdles with biblatex/biber are:
.blg
file if it starts with "biber" or "bibtex").biber --cache
on the command line and delete the folder you get as output.blg
file.