% LNI --%
%
% Copyright (c) 2016-2025 Lukas C. Bossert, Georg Duffner, Oliver Kopp
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
% of this license or (at your option) any later version.
% The latest version of this license is in
%   http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
\def\LNI@date{2025-01-27}
\def\LNI@version{0.7}
\def\LNI@bbxid{\LNI@date\space v\LNI@version\space biblatex-LNI bibliography style (LCB/GD/OK)}
\def\LNI@cbxid{\LNI@date\space v\LNI@version\space biblatex-LNI citation style (LCB/GD/OK)}
\def\LNI@lbxid{\LNI@date\space v\LNI@version\space biblatex-LNI localization (LCB/GD/OK)}

\ProvidesFile{LNI.bbx}[\LNI@bbxid]
\RequireBibliographyStyle{alphabetic}
\AtBeginDocument{%
  \typeout{* * * LNI * * *}

  %Thin spaces between initials
  %http://tex.stackexchange.com/a/11083/9075
  \renewrobustcmd*{\bibinitdelim}{\,}

  %Keep first and last name together in the bibliography
  %http://tex.stackexchange.com/a/196192/9075
  \renewcommand*\bibnamedelimc{\addnbspace}
  \renewcommand*\bibnamedelimd{\addnbspace}
}


\def\LNIversion{\LNI@version}
\def\LNIdate{\LNI@date}
\ExecuteBibliographyOptions{%
  bibencoding   = utf8,
  sortcites     = true,
  giveninits    = true,
  useprefix     = true,
  maxbibnames   = 3,
  maxcitenames  = 3,
  eprint        = true,
  url           = true,
  doi           = false,
  isbn          = false,
  backref       = false,
  date          = year,
}

\renewcommand*{\bibfont}{\small} % font size 9pt required by LNI template

\DeclareRedundantLanguages{ngerman}{german,ngerman,austrian,naustrian}
\DeclareRedundantLanguages{english,american}{english,american,british,%
 canadian,australian,newzealand,USenglish,UKenglish}
\DeclareLanguageMapping{ngerman}{LNI-ngerman}
\DeclareLanguageMapping{english}{LNI-english}

\DeclareNameAlias{sortname}{family-given}
\DeclareNameAlias{author}{sortname}
\DeclareNameAlias{editor}{sortname}
\DeclareNameAlias{byeditor}{sortname}
\DeclareNameAlias{translator}{sortname}

\DeclareDelimFormat[bib]{nametitledelim}{\nametitledelim}

\renewcommand*{\nametitledelim}{\addcolon\addspace}
\renewcommand*{\newunitpunct}{\addcomma\space}
\renewcommand{\multinamedelim}{\addsemicolon\space}
\renewcommand{\finalnamedelim}{\multinamedelim}
\newcommand*{\aftertitledelim}{\addperiod\addspace}

% Source: https://tex.stackexchange.com/a/81573/9075
\renewbibmacro*{volume+number+eid}{%
  \printfield{volume}%
  \setunit*{\addnbthinspace}%
  \printfield{number}%
  \setunit{\addcomma\space}%
  \printfield{eid}}
\DeclareFieldFormat[article]{number}{\mkbibparens{#1}}

% Don't uppercase name prefixes
\renewbibmacro*{begentry}{\midsentence}

\newbibmacro*{publisher+location}{%
    \printlist{publisher}%
 \newunit%
        \printlist{location}%
   \newunit}

\newbibmacro*{author+others/translator+others}{%
  \ifboolexpr{
    test \ifuseauthor
    and
    not test {\ifnameundef{author}}
  }
    {\usebibmacro{author+others}}
    {\usebibmacro{translator+others}}}

\renewbibmacro*{event+venue+date}{%
  \printfield{eventtitle}%
  \newunit
  \printfield{eventtitleaddon}%
  \ifboolexpr{
    test {\iffieldundef{venue}}
    and
    test {\iffieldundef{eventyear}}
  }
    {}
    {\setunit*{\addspace}%
       \printfield{venue}%
       \setunit*{\space}%
       \printeventdate}%
  \newunit}

\newbibmacro*{in+editor+maintitle/booktitle}{%
  \printtext{\bibstring{in}}%
  \setunit{\addspace}%
  \ifnameundef{editor}
    {}
    {\printtext[parens]{%
       \usebibmacro{editor+others}}}%
  \setunit{\nametitledelim}\newblock
  \usebibmacro{maintitle+booktitle}}

\DeclareLabelalphaTemplate{
  \labelelement{
    \field[final]{shorthand}
    \field{label}
    \field[strwidth=2,strside=left,noalphaothers=true,ifnames=1]{labelname}
    \field[strwidth=1,strside=left]{labelname}
  }
  \labelelement{
    \field[strwidth=2,strside=right]{year}
  }
}

% Don't use prefixes in labels
\DeclareLabelalphaNameTemplate{
  \namepart{family}
}

\DeclareBibliographyDriver{book}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \ifnameundef{author}
    {\usebibmacro{editor}}
    {\usebibmacro{author}}%
  \setunit{\nametitledelim}\newblock%
  \usebibmacro{title}%
  \printunit{\aftertitledelim}%
  \newunit\newblock
  \printfield{note}%
  \newunit\newblock
  \usebibmacro{publisher+location}%
  \printfield{year}%
  \newunit\newblock
  \usebibmacro{addendum+pubstate}%
  \setunit{\bibpagerefpunct}\newblock
  \usebibmacro{pageref}%
  \newunit\newblock
  \iftoggle{bbx:isbn}
    {\printfield{isbn}}
    {}%
  \newunit\newblock
  \iftoggle{bbx:related}
    {\usebibmacro{related:init}%
     \usebibmacro{related}}
    {}%
  \usebibmacro{finentry}%
}

\DeclareBibliographyDriver{collection}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{editor+others}%
  \setunit{\printdelim{nametitledelim}}\newblock
  \usebibmacro{maintitle+title}%
  \printunit{\aftertitledelim}
  \printlist{language}%
  \newunit\newblock
  \usebibmacro{byeditor+others}%
  \newunit\newblock
  \printfield{edition}%
  \newunit
  \iffieldundef{maintitle}
    {\usebibmacro{volume+number+eid}}
    {}%
  \newunit
  \printfield{volumes}%
  \newunit\newblock
  \usebibmacro{series+number}%
  \newunit\newblock
  \printfield{note}%
  \newunit\newblock
  \usebibmacro{publisher+location+date}%
  \newunit\newblock
  \usebibmacro{chapter+pages}%
  \newunit
  \printfield{pagetotal}%
  \newunit\newblock
  \iftoggle{bbx:isbn}
    {\printfield{isbn}}
    {}%
  \newunit\newblock
  \usebibmacro{doi+eprint+url}%
  \newunit\newblock
  \usebibmacro{addendum+pubstate}%
  \setunit{\bibpagerefpunct}\newblock
  \usebibmacro{pageref}%
  \newunit\newblock
  \iftoggle{bbx:related}
    {\usebibmacro{related:init}%
     \usebibmacro{related}}
    {}%
  \usebibmacro{finentry}}

\DeclareBibliographyDriver{incollection}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{author/translator+others}%
  \setunit{\printdelim{nametitledelim}}\newblock
  \usebibmacro{title}%
  \printunit{\aftertitledelim}
  \usebibmacro{in+editor+maintitle/booktitle}%
  \printunit{\aftertitledelim}
  \printfield{edition}%
  \newunit
  \iffieldundef{maintitle}
    {\usebibmacro{volume+number+eid}}
    {}%
  \newunit
  \printfield{volumes}%
  \newunit\newblock
  \usebibmacro{series+number}%
  \newunit\newblock
  \printfield{note}%
  \newunit\newblock
  \usebibmacro{publisher+location}%
  \newunit\newblock
  \usebibmacro{chapter+pages}%
  \newunit%
  \usebibmacro{date}
  \newunit\newblock
  \iftoggle{bbx:isbn}
    {\printfield{isbn}}
    {}%
  \newunit\newblock
  \usebibmacro{doi+eprint+url}%
  \newunit\newblock
  \usebibmacro{addendum+pubstate}%
  \setunit{\bibpagerefpunct}\newblock
  \usebibmacro{pageref}%
  \newunit\newblock
  \iftoggle{bbx:related}
    {\usebibmacro{related:init}%
     \usebibmacro{related}}
    {}%
  \usebibmacro{finentry}}

\DeclareBibliographyDriver{inproceedings}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{author/translator+others}%
  \setunit{\nametitledelim}\newblock
  \usebibmacro{title}%
  \printunit{\aftertitledelim}
  \usebibmacro{in+editor+maintitle/booktitle}%
  \iffieldundef{eventtitle}
    {}
    {\printunit{\aftertitledelim}}
  \usebibmacro{event+venue+date}%
  \printunit{\aftertitledelim}\newblock
  \iffieldundef{maintitle}
    {\usebibmacro{volume+number+eid}}
    {}%
  \newunit
  \printfield{volumes}%
  \setunit{\addperiod\space}\newblock
  \usebibmacro{series+number}%
  \newunit\newblock
  \printfield{note}%
  \newunit\newblock
  \printlist{organization}%
  \newunit
  \usebibmacro{publisher+location}%
  \newunit\newblock
  \usebibmacro{chapter+pages}%
  \newunit%
  \usebibmacro{date}%
  \newunit\newblock
  \iftoggle{bbx:isbn}
    {\printfield{isbn}}
    {}%
  \newunit\newblock
  \usebibmacro{doi+eprint+url}%
  \newunit\newblock
  \usebibmacro{addendum+pubstate}%
  \setunit{\bibpagerefpunct}\newblock
  \usebibmacro{pageref}%
  \newunit\newblock
  \iftoggle{bbx:related}
    {\usebibmacro{related:init}%
     \usebibmacro{related}}
    {}%
  \usebibmacro{finentry}}

\DeclareBibliographyDriver{inbook}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{author/translator+others}%
  \setunit{\nametitledelim}\newblock
  \usebibmacro{title}%
  \printunit{\aftertitledelim}%
  \usebibmacro{in+editor+maintitle/booktitle}%
  \printunit{\aftertitledelim}\newblock
  \printfield{edition}%
  \newunit
  \iffieldundef{maintitle}
    {\usebibmacro{volume+number+eid}}
    {}%
  \newunit
  \printfield{volumes}%
  \newunit\newblock
  \usebibmacro{series+number}%
  \newunit\newblock
  \printfield{note}%
  \newunit\newblock
  \usebibmacro{publisher+location}%
  \newunit\newblock
  \usebibmacro{chapter+pages}%
  \newunit\newblock
  \usebibmacro{date}%
  \newunit\newblock
  \iftoggle{bbx:isbn}
    {\printfield{isbn}}
    {}%
  \newunit\newblock
  \usebibmacro{doi+eprint+url}%
  \newunit\newblock
  \usebibmacro{addendum+pubstate}%
  \setunit{\bibpagerefpunct}\newblock
  \usebibmacro{pageref}%
  \newunit\newblock
  \iftoggle{bbx:related}
    {\usebibmacro{related:init}%
     \usebibmacro{related}}
    {}%
  \usebibmacro{finentry}}

\DeclareBibliographyDriver{article}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{author/translator+others}%
  \setunit{\nametitledelim}\newblock
  \usebibmacro{title}%
  \printunit{\aftertitledelim}
  \printlist{language}%
  \newunit\newblock
  \usebibmacro{byauthor}%
  \newunit\newblock
  \usebibmacro{bytranslator+others}%
  \newunit\newblock
  \printfield{version}%
  \newunit\newblock
  \usebibmacro{journal}%
  \setunit*{\addspace}%
  \iffieldundef{series}
    {}
    {\newunit
     \printfield{series}%
     \setunit{\addspace}}%
  \usebibmacro{volume+number+eid}%
  \usebibmacro{issue}%
  \newunit
  \usebibmacro{byeditor+others}%
  \newunit
  \usebibmacro{note+pages}%
\newunit
  \usebibmacro{date}%
  \newunit\newblock
  \iftoggle{bbx:isbn}
    {\printfield{issn}}
    {}%
  \newunit\newblock
  \usebibmacro{doi+eprint+url}%
  \newunit\newblock
  \usebibmacro{addendum+pubstate}%
  \setunit{\bibpagerefpunct}\newblock
  \usebibmacro{pageref}%
  \newunit\newblock
  \iftoggle{bbx:related}
    {\usebibmacro{related:init}%
     \usebibmacro{related}}
    {}%
  \usebibmacro{finentry}}


% Remove all emphasis and enquoting
\DeclareFieldFormat*{booktitle}{#1}
\DeclareFieldFormat*{journaltitle}{#1}
\DeclareFieldFormat*{title}{#1}

\DeclareFieldFormat{doi}{%
  DOI\addcolon\space
  \ifhyperref
    {\href{https://doi.org/#1}{\nolinkurl{#1}}}
    {\nolinkurl{#1}}}
\DeclareFieldFormat{isbn}{ISBN\addcolon\space #1}
\DeclareFieldFormat{isrn}{ISRN\addcolon\space #1}
\DeclareFieldFormat{issn}{ISSN\addcolon\space #1}
\DeclareFieldFormat{urldate}{\addcomma\addspace \bibstring{urlseen}\addcolon\addspace#1}
\DeclareFieldFormat{url}{\url{#1}}
\endinput
%% End of file `LNI.bbx'.