You could load the subfig package with the option caption=false
:, e.g.:
\usepackage[caption=false]{subfig}
This prevents loading of the caption package. (caption3.sty will still be loaded, but this does not make harm since this file only provides some macros needed by the subfig package, especially it does not alter any captions.)
See subfig package documentation for details.
Working with the assumption here that we are simply trying to ignore natbib
entirely, all that needs to happen is that the various name clashes need to be dealt with. Setting up a demo where natbib
is deliberately loaded before biblatex
, it seems that the macros \bibhang
, \citename
, \bibfont
and \Citeauthor
need to be undefined. At the same time, it's necessary to deal with \ver@natbib.sty
, which is the internal macro LaTeX uses to track the fact that natibib
has been loaded. It's this macro that biblatex
uses in \@ifpackageloaded
to issue a warning about natbib
. Thus the following builds fine for me:
\begin{filecontents}{\jobname.bib}
@article{Test,
journal = "J. Irrep. Res.",
author = "Other, A. N.",
year = "2011",
title = "Some things I did"
}
\end{filecontents}
\documentclass{article}
\usepackage{natbib}
% Start of 'ignore natbib' hack
\let\bibhang\relax
\let\citename\relax
\let\bibfont\relax
\let\Citeauthor\relax
\expandafter\let\csname ver@natbib.sty\endcsname\relax
% End of 'ignore natbib' hack
\usepackage{biblatex}
\addbibresource{\jobname.bib}
\begin{document}
\cite{Test}
\printbibliography
\end{document}
To get things working with REVTeX, I find that I also need to undefined \textcite
. There is then a second issue, as REVTeX alters the definition of \MakeUppercase
and \MakeLowercase
. Thus I've copied the originals from latex.ltx
and restored them:
\begin{filecontents}{\jobname.bib}
@article{Test,
journal = "J. Irrep. Res.",
author = "Other, A. N.",
year = "2011",
title = "Some things I did"
}
\end{filecontents}
\documentclass{revtex4}
\let\bibhang\relax
\let\citename\relax
\let\bibfont\relax
\let\Citeauthor\relax
\let\textcite\relax
\makeatletter
\DeclareRobustCommand{\MakeUppercase}[1]{{%
\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
}}
\DeclareRobustCommand{\MakeLowercase}[1]{{%
\def\reserved@a##1##2{\let##2##1\reserved@a}%
\expandafter\reserved@a\@uclclist\reserved@b{\reserved@b\@gobble}%
\protected@edef\reserved@a{\lowercase{#1}}%
\reserved@a
}}
\makeatother
\expandafter\let\csname ver@natbib.sty\endcsname\relax
\usepackage{biblatex}
\addbibresource{\jobname.bib}
\begin{document}
\cite{Test}
\printbibliography
\end{document}
(The changes are actually to internal macros used by robust commands, so simply coping using \let
before the document class line will not work here without some extra effort.)
For REVTeX 4.1, it seems you need
\renewcommand{\bibliography}[1]{}
after \begin{document}
as REVTeX tries to use it at the end of the document, which gives an error with biblatex
.
Best Answer
Since
biblatex
"reimplements the bibliographic facilities of LaTeX from the ground up, [it] naturally conflicts with all packages modifying the same facilities" (manual, section 1.5.4). Specifically,biblatex
is incompatible withnatbib
.biblatex
'natbib
option only provides aliases fornatbib
's citation commands.From a look into the manual of RevTeX 4.1,
natbib
is a required package, and multiple custom options and commands are defined on top ofnatbib
. So no, I'm afraidbiblatex
is incompatible with RevTeX.