%% $Id: biblatex-spbasic.bbx 379 2021-12-29 13:38:14Z herbert $
%
% biblatex-spbasic.bbx, Herbert Voß
% Herbert Voß -- 2021 <hvoss@tug.org>
% this style is an biblatex style for Springer's spbasic.bst
%
%% This material is subject to the LaTeX Project Public License. 
%% See  https://latex-project.org/lppl/ for the details of that license.
%%
%
\ProvidesFile{biblatex-spbasic.bbx}[2021/12/29 v0.04 biblatex bibliography style]
% Release Notes can be found in the README

\RequireBibliographyStyle{authoryear}
\ExecuteBibliographyOptions{maxnames=3,minnames=1,terseinits,giveninits}

\DeclareLanguageMapping{english}{biblatex-spbasic}

\newbool{bbx:pubstate}
\setbool{bbx:pubstate}{false}

\DeclareBibliographyOption[boolean]{pubstate}[true]{\setbool{bbx:pubstate}{#1}}


\DeclareDelimFormat[bib,biblist]{nametitledelim}{\space}
%\DeclareDelimFormat{nametitledelim}{\addcomma\space}%    origin

\renewbibmacro*{in:}{}

\renewcommand*{\finentrypunct}{}%         abschliessenden Punkt entfernen
\renewcommand*{\newunitpunct}{\addspace}% Punkte entfernen

\DeclareFieldFormat{title}{\mkbibemph{#1}\adddot}%    Punkt hinter Titel
\DeclareFieldFormat[article]{title}{#1\adddot}% keine Anfuehrungsstriche und .
\DeclareFieldFormat[article]{number}{\mkbibparens{#1}}% (No)
\DeclareFieldFormat{pages}{\mkpageprefix[bookpagination]{#1}}

\renewbibmacro*{addendum+pubstate}{%
  \printfield{addendum}% 
  \ifbool{bbx:pubstate}% 
    {\iffieldundef{pubstate}{}{\setunit*{\addcomma\space}\printfield{pubstate}}}%
    {}%
}

\renewbibmacro*{publisher+location+date}{%      Reihenfolge aendern
  \printlist{publisher}\setunit*{\addcomma\space}\printlist{location}\newunit}

\renewbibmacro*{journal+issuetitle}{% Punkt zwischen Volume und Number entfernen
  \usebibmacro{journal}\setunit*{\addspace}%
  \iffieldundef{series}{}{\newunit\printfield{series}\setunit{\addspace}}%
  \printfield{volume}\printfield{number}\setunit{\addcomma\space}%
  \printfield{eid}\setunit{\addspace}%
  \usebibmacro{issue+date}%
  \setunit{\addcolon\space}%
  \usebibmacro{issue}%
  \newunit
}

\DeclareNameAlias{sortname}{family-given}

\renewcommand*{\revsdnamepunct}{}
\renewrobustcmd*{\bibinitperiod}{}
\renewrobustcmd*{\bibinitdelim}{}
\renewrobustcmd*{\bibinithyphendelim}{\mbox{-}}

\DeclareDelimAlias{finalnamedelim}{multinamedelim}


\iffalse
\newbibmacro*{journal+issuetitle}{%
  \usebibmacro{journal}%
  \setunit*{\addspace}%
  \iffieldundef{series}
    {}
    {\newunit
     \printfield{series}%
     \setunit{\addspace}}%
  \usebibmacro{volume+number+eid}%
  \setunit{\addcolon}%
  \usebibmacro{issue+date}%
  \setunit{\addcolon\space}%
  \usebibmacro{issue}%
  \newunit
}
\fi

\renewcommand*{\bibpagespunct}{\addcolon}

\renewbibmacro*{note+pages}{%
  \printfield{note}%
  %\setunit{
  \bibpagespunct%}%
  \printfield{pages}%
  \newunit}

\renewbibmacro*{title}{%
  \ifboolexpr{
    test {\iffieldundef{title}}
    and
    test {\iffieldundef{subtitle}}
  }%
    {}%
    {\printtext[title]{%
       \printfield[titlecase]{title}%
       \setunit{\subtitlepunct}%
       \printfield[titlecase]{subtitle}%
    }%
     \newunit
     }%
   \iffieldundef{titleaddon}{}{\printfield{titleaddon}}%
}


\iffalse
\DeclareBibliographyDriver{article}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{author/translator+others}%
  \setunit{\printdelim{nametitledelim}}\newblock
  \usebibmacro{title}%
  \newunit
  \printlist{language}%
  \newunit\newblock
  \usebibmacro{byauthor}%
  \newunit\newblock
  \usebibmacro{bytranslator+others}%
  \newunit\newblock
  \printfield{version}%
  \newunit\newblock
  \usebibmacro{in:}%
  \usebibmacro{journal+issuetitle}%
  \newunit
  \usebibmacro{byeditor+others}%
  \newunit
  \usebibmacro{note+pages}%
  \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}}
\fi


\endinput

