latex-mimosis/bibliography-mimosis.tex

178 lines
5.1 KiB
TeX

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Some adjustments to make the bibliography more clean
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% The subsequent commands do the following:
% - Removing the month field from the bibliography
% - Fixing the Oxford commma
% - Suppress the "in" for journal articles
% - Remove the parentheses of the year in an article
% - Delimit volume and issue of an article by a colon ":" instead of
% a dot ""
% - Use commas to separate the location of publishers from their name
% - Remove the abbreviation for technical reports
% - Display the label of bibliographic entries without brackets in the
% bibliography
% - Ensure that DOIs are followed by a non-breakable space
% - Use hair spaces between initials of authors
% - Make the font size of citations smaller
% - Fixing ordinal numbers (1st, 2nd, 3rd, and so) on by using
% superscripts
% Remove the month field from the bibliography. It does not serve a good
% purpose, I guess. And often, it cannot be used because the journals
% have some crazy issue policies.
\AtEveryBibitem{\clearfield{month}}
\AtEveryCitekey{\clearfield{month}}
% Fixing the Oxford comma. Not sure whether this is the proper solution.
% More information is available under [1] and [2].
%
% [1] http://tex.stackexchange.com/questions/97712/biblatex-apa-style-is-missing-a-comma-in-the-references-why
% [2] http://tex.stackexchange.com/questions/44048/use-et-al-in-biblatex-custom-style
%
\AtBeginBibliography{%
\renewcommand*{\finalnamedelim}{%
\ifthenelse{\value{listcount} > 2}{%
\addcomma
\addspace
\bibstring{and}%
}{%
\addspace
\bibstring{and}%
}
}
}
% Suppress "in" for journal articles. This is unnecessary in my opinion
% because the journal title is typeset in italics anyway.
\renewbibmacro{in:}{%
\ifentrytype{article}
{%
}%
% else
{%
\printtext{\bibstring{in}\intitlepunct}%
}%
}
% Remove the parentheses for the year in an article. This removes a lot
% of undesired parentheses in the bibliography, thereby improving the
% readability. Moreover, it makes the look of the bibliography more
% consistent.
\renewbibmacro*{issue+date}{%
\setunit{\addcomma\space}
\iffieldundef{issue}
{\usebibmacro{date}}
{\printfield{issue}%
\setunit*{\addspace}%
\usebibmacro{date}}%
\newunit}
% Delimit the volume and the number of an article by a colon instead of
% by a dot, which I consider to be more readable.
\renewbibmacro*{volume+number+eid}{%
\printfield{volume}%
\setunit*{\addcolon}%
\printfield{number}%
\setunit{\addcomma\space}%
\printfield{eid}%
}
% Do not use a colon for the publisher location. Instead, connect
% publisher, location, and date via commas.
\renewbibmacro*{publisher+location+date}{%
\printlist{publisher}%
\setunit*{\addcomma\space}%
\printlist{location}%
\setunit*{\addcomma\space}%
\usebibmacro{date}%
\newunit%
}
% Ditto for other entry types.
\renewbibmacro*{organization+location+date}{%
\printlist{location}%
\setunit*{\addcomma\space}%
\printlist{organization}%
\setunit*{\addcomma\space}%
\usebibmacro{date}%
\newunit%
}
% Display the label of a bibliographic entry in bare style, without any
% brackets. I like this more than the default.
%
% Note that this is *really* the proper and official way of doing this.
\DeclareFieldFormat{labelnumberwidth}{#1\adddot}
% Ensure that DOIs are followed by a non-breakable space.
\DeclareFieldFormat{doi}{%
\mkbibacro{DOI}\addcolon\addnbspace
\ifhyperref
{\href{http://dx.doi.org/#1}{\nolinkurl{#1}}}
%
{\nolinkurl{#1}}
}
% Use proper hair spaces between initials as suggested by Bringhurst and
% others.
\renewcommand*\bibinitdelim {\addnbthinspace}
\renewcommand*\bibnamedelima{\addnbthinspace}
\renewcommand*\bibnamedelimb{\addnbthinspace}
\renewcommand*\bibnamedelimi{\addnbthinspace}
% Make the font size of citations smaller. Depending on your selected
% font, you might not need this.
\usepackage{relsize}
\renewcommand*{\citesetup}{%
\biburlsetup
\relsize{-.5}%
}
\DeclareLanguageMapping{english}{english-mimosis}
% Make hyperlinks extend to the author name if `\textcite` is being used
% instead of another cite command.
\DeclareFieldFormat{citehyperref}{%
% Need this to avoid nested links
\DeclareFieldAlias{bibhyperref}{noformat}%
\bibhyperref{#1}%
}
\DeclareFieldFormat{textcitehyperref}{%
% Need this to avoid nested links
\DeclareFieldAlias{bibhyperref}{noformat}%
\bibhyperref{%
#1%
\ifbool{cbx:parens}
{\bibcloseparen\global\boolfalse{cbx:parens}}
{}%
}%
}
\savebibmacro{cite}
\savebibmacro{textcite}
\renewbibmacro*{cite}{%
\printtext[citehyperref]{%
\restorebibmacro{cite}%
\usebibmacro{cite}}%
}
\renewbibmacro*{textcite}{%
\ifboolexpr{
( not test {\iffieldundef{prenote}} and
test {\ifnumequal{\value{citecount}}{1}} )
or
( not test {\iffieldundef{postnote}} and
test {\ifnumequal{\value{citecount}}{\value{citetotal}}} )
}%
{\DeclareFieldAlias{textcitehyperref}{noformat}}
{}%
\printtext[textcitehyperref]{%
\restorebibmacro{textcite}%
\usebibmacro{textcite}}%
}