%% Biblatex settings.
%%
%% Settings necessary to make the bibliography with Biblatex. Keeping all
%% BibLaTeX settings in a separate preamble was done in the spirit of
%% modularity to 1) easily managable, 2) If a similar BibLaTeX
%% configuration is necessary in another LaTeX compilation, this file can
%% just be copied there and used.
%%
%% USAGE:
%%  - `tex/src/references.tex': the file containing Bibtex source of each
%%     reference. The file suffix doesn't have to be `.bib'. This naming
%%     helps in clearly identifying the files and avoiding places that
%%     complain about `.bib' files.
%
%% Original author:
%%     Mohammad Akhlaghi <mohammad@akhlaghi.org>
%% Contributing author(s):
%% Copyright (C) 2018-2019, Mohammad Akhlaghi.
%
%% This template is free software: you can redistribute it and/or modify it
%% under the terms of the GNU General Public License as published by the
%% Free Software Foundation, either version 3 of the License, or (at your
%% option) any later version.
%
%% This template is distributed in the hope that it will be useful, but
%% WITHOUT ANY WARRANTY; without even the implied warranty of
%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
%% General Public License for more details.
%
%% You should have received a copy of the GNU General Public License along
%% with this template. If not, see <http://www.gnu.org/licenses/>.




%% To break up highlighted text (for example texttt when some it is on the
%% line break) and also to no underline emphasized words (like journal
%% titles in the references).
\usepackage[normalem]{ulem}





% Basic BibLaTeX settings
\usepackage[
    doi=false,
    url=false,
    dashed=false,
    eprint=false,
    maxbibnames=4,
    minbibnames=1,
    hyperref=true,
    maxcitenames=2,
    mincitenames=1,
    style=authoryear,
    uniquelist=false,
    backend=biber,natbib]{biblatex}
\DeclareFieldFormat[article]{pages}{#1}
\DeclareFieldFormat{pages}{\mkfirstpage[{\mkpageprefix[bookpagination]}]{#1}}
\addbibresource{tex/src/references.tex}
\renewbibmacro{in:}{}
\renewcommand*{\bibfont}{\footnotesize}
\DefineBibliographyStrings{english}{references = {References}}

%% Include the adsurl field key into those that are recognized:
\DeclareSourcemap{
  \maps[datatype=bibtex]{
    \map{
      \step[fieldsource=adsurl,fieldtarget=iswc]
      \step[fieldsource=gbkurl,fieldtarget=iswc]
    }
  }
}

%% Set the color of the doi link to mymg (magenta) and the ads links
%% to mypurp (or purple):
\definecolor{mypurp}{cmyk}{0.75,1,0,0}
\newcommand{\doihref}[2]{\href{#1}{\color{magenta}{#2}}}
\newcommand{\adshref}[2]{\href{#1}{\color{mypurp}{#2}}}
\newcommand{\blackhref}[2]{\href{#1}{\color{black}{#2}}}

%% Define a format for the printtext commands in
%% DeclareBibliographyDriver to make links for the doi, ads link and
%% arxiv link:
\DeclareFieldFormat{doilink}{
  \iffieldundef{doi}{#1}{\doihref{http://dx.doi.org/\thefield{doi}}{#1}}}
\DeclareFieldFormat{adslink}{
    \iffieldundef{iswc}{#1}{\adshref{\thefield{iswc}}{#1}}}
\DeclareFieldFormat{arxivlink}{
  \iffieldundef{eprint}{#1}{\href{http://arxiv.org/abs/\thefield{eprint}}{#1}}}

\DeclareListFormat{doiforbook}{
  \iffieldundef{doi}{#1}{\doihref{http://dx.doi.org/\thefield{doi}}{#1}}}
\DeclareFieldFormat{googlebookslink}{
    \iffieldundef{iswc}{#1}{\adshref{\thefield{iswc}}{#1}}}

%% Set the formatting to make the last three values into the
%% appropriate link. Note that the % signs are necessary. Without
%% them, the items will be indented.
\DeclareBibliographyDriver{article}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{author/translator+others}%
  \newunit%
  \ifdefined\makethesis\printtext{\usebibmacro{title}}\fi%
  \newunit%
  \printtext[doilink]{\usebibmacro{journal}}%
  \addcomma%
  \printtext[adslink]{\printfield{volume}}%
  \addcomma%
  \printtext[arxivlink]{\printfield{pages}}%
  \addperiod%
}

\DeclareBibliographyDriver{book}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{author/translator+others}%
  \newunit%
  \printtext{\usebibmacro{title}}%
  \addperiod%
  \addspace%
  \printlist[doiforbook]{publisher}%
  \addcomma%
  \addspace%
  \printfield[googlebookslink]{edition}%
  \printtext{ ed.}%
  \addperiod%
}

%% In order to have et al. instead of et al.,:
\renewcommand*{\nameyeardelim}{\addspace}
