preamble-biblatex.tex
%% 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.
%
%% Copyright (C) 2018-2021 Mohammad Akhlaghi <mohammad@akhlaghi.org>
%
%% This file 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 file 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 file. 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}
%% For quotation signs (sometimes used by BibLaTeX)
\usepackage{csquotes}
%% To define colors
\usepackage{xcolor}
% Basic BibLaTeX settings
\usepackage[
doi=false,
url=false,
dashed=false,
eprint=false,
maxbibnames=10,
minbibnames=4,
hyperref=true,
maxcitenames=2,
mincitenames=1,
giveninits=true,
style=authoryear,
uniquelist=false,
backend=biber,natbib]{biblatex}
\DeclareFieldFormat[article]{pages}{#1}
\DeclareFieldFormat{pages}{\mkfirstpage[{\mkpageprefix[bookpagination]}]{#1}}
\addbibresource{tex/src/references.tex}
\addbibresource{tex/build/macros/dependencies-bib.tex}
\renewbibmacro{in:}{}
\AtEveryBibitem{\clearfield{month}}
\renewcommand*{\bibfont}{\normalsize}
\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}
\definecolor{myblue}{rgb}{0,0.669,0.885}
\newcommand{\doihref}[2]{\href{#1}{\color{myblue}{#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{https://doioa.org/\thefield{doi}}{#1}}}
\DeclareFieldFormat{adslink}{
\iffieldundef{iswc}{#1}{\adshref{\thefield{iswc}}{#1}}}
\DeclareFieldFormat{arxivlink}{
\iffieldundef{eprint}{#1}{\href{https://arxiv.org/abs/\thefield{eprint}}{#1}}}
\DeclareListFormat{doiforbook}{
\iffieldundef{doi}{#1}{\doihref{https://doioa.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%
\printtext{\usebibmacro{title}}%
\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}