It's not actually biblatex
that is incompatible with yax
, it's etoolbox
. (biblatex
loads and uses etoolbox
for many things. And it's not actually yax
, it's texapi
, which is loaded by yax
.)
MastersDoctoralThesis
also loads etoolbox
, so when you say
\documentclass[english]{MastersDoctoralThesis}
\usepackage{yax}
\let\navletcs\letcs
\let\letcs\relax
etoolbox
has already been loaded by MastersDoctoralThesis
and yax
has already overwritten its \letcs
.
The following
\usepackage{biblatex}
will not load etoolbox
again, because LaTeX loads packages only once. So etoolbox
will not overwrite the definitions from yax
.
The error can be avoided by making sure yax
is really loaded before etoolbox
. We also save the definitions of \letcs
to be able to switch between them later.
\RequirePackage{yax}
\let\texapiletcs\letcs
\let\letcs\relax
\RequirePackage{etoolbox}
\let\etoolboxletcs\letcs
\documentclass[english]{MastersDoctoralThesis}
\usepackage{biblatex}
\begin{document}
It is sometimes really hard to get TeX to work.
\end{document}
Note that uses of commands defined by yax
may break in the document unless you switch to texapi
's definition of \letcs
and that commands defined by biblatex
/etoolbox
may break if you don't switch back quickly enough.
Avoiding groups (which may have undesirable side effects) this can be done roughly as follows
\let\letcs\texapiletcs % switch to texapi definition
... do stuff with yax ...
\let\letcs\etoolboxletcs % go back to etoolbox definition
If at all possible I recommend you look for an alternative to yax
. I'm also not too fond of MastersDoctoralThesis
(it appears to me that it usually causes more trouble for people than necessary), so if you still have a chance to switch to a more standard document class, that's something you may seriously want to consider.