%% Copyright 2014-2016 Maïeul Rouquette
%
% 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.
%
% This work has the LPPL maintenance status `unmaintained'.
% 
% The last maintainer of this work was Maïeul Rouquette
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{biblatex-bookinarticle}[2016/04/06 v1.3.1a Book in article, in incollection and in thesis with biblatex]

\PackageWarning{biblatex-bookinarticle}{Deprecated package. Use biblatex-bookinother instead.}

% 1. The drivers
\DeclareBibliographyDriver{inarticle}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{author/translator+others}%
  \setunit{\labelnamepunct}\newblock%
  \usebibmacro{title}%
  \newunit
  \printlist{language}%
  \newunit\newblock
  \usebibmacro{byauthor}%
  \newunit\newblock
  \usebibmacro{in:}%
  \usebibmacro{bybookauthor}%
  \setunit{\labelnamepunct}\newblock
  \usebibmacro{maintitle}%
  \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}%
  \usebibmacro{finentry}}

\DeclareBibliographyDriver{inincollection}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{author/translator+others}%
  \setunit{\labelnamepunct}\newblock%
  \usebibmacro{title}%
  \newunit
  \printlist{language}%
  \newunit\newblock
  \usebibmacro{byauthor}%
  \newunit\newblock
  \usebibmacro{in:}%
  \usebibmacro{bybookauthor}%
  \setunit{\labelnamepunct}\newblock
  \usebibmacro{booktitle}%
  \newunit
  \printlist{language}%
  \newunit\newblock
  \usebibmacro{byauthor}%
  \newunit\newblock
  \usebibmacro{in:}%
  \usebibmacro{maintitle}%
  \newunit\newblock
  \usebibmacro{byeditor+others}%
  \newunit\newblock
  \printfield{edition}%
  \newunit
  \iffieldundef{maintitle}
  {\printfield{volume}%
  \printfield{part}}
  {%
    \newunit
    \printfield{volumes}%
    \newunit\newblock
    \usebibmacro{series+number}%
    \newunit\newblock
    \printfield{note}%
    \newunit\newblock
    \usebibmacro{publisher+location+date}%
    \newunit\newblock
    \usebibmacro{chapter+pages}%
    \newunit\newblock
    \iftoggle{bbx:isbn}
    {\printfield{isbn}}
    {%
      \newunit\newblock
      \usebibmacro{doi+eprint+url}%
      \newunit\newblock
      \usebibmacro{addendum+pubstate}%
  \setunit{\bibpagerefpunct}\newblock}%%
  }%
  \setunit{\bibpagerefpunct}\newblock
  \usebibmacro{pageref}%
  \usebibmacro{finentry}}


\DeclareBibliographyDriver{inthesis}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{author}%
  \setunit{\labelnamepunct}\newblock
  \usebibmacro{title}%
  \newunit
  \printlist{language}%
  \newunit\newblock
  \usebibmacro{byauthor}%
  \newunit\newblock
  \usebibmacro{in:}%
  \usebibmacro{bybookauthor}%
  \setunit{\labelnamepunct}\newblock
  \usebibmacro{booktitle}%
  \newunit\newblock
  \printfield{note}%
  \newunit\newblock
  \printfield{type}%
  \newunit
  \usebibmacro{institution+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}}

% 2. The alias and sourcemaps
\DeclareBibliographyAlias{bookinarticle}{inarticle}
\DeclareBibliographyAlias{bookinincollection}{inincollection}
\DeclareBibliographyAlias{bookinthesis}{inthesis}

\DeclareSourcemap{
 \maps[datatype=bibtex]{
        \map{
          \step[typesource=inmastersthesis, typetarget=inthesis, final]
          \step[fieldset=type,            fieldvalue=mathesis]
        }
        \map{
          \step[typesource=inphdthesis, typetarget=inthesis, final]
          \step[fieldset=type,            fieldvalue=phdthesis]
        }
        \map{
          \step[typesource=bookinmastersthesis, typetarget=inthesis, final]
          \step[fieldset=type,            fieldvalue=mathesis]
        }
        \map{
          \step[typesource=bookinphdthesis, typetarget=inthesis, final]
          \step[fieldset=type,            fieldvalue=phdthesis]
        }
  }
}

% 3. The formats

\DeclareFieldFormat[inarticle,inincollection,inthesis]{title}{\mkbibquote{#1\isdot}}
\DeclareFieldFormat[inincollection,bookinincollection,inthesis,bookinthesis]{booktitle}{\mkbibquote{#1\isdot}}
\DeclareFieldFormat[inarticle,bookinarticle]{maintitle}{\mkbibquote{#1\isdot}}

% Inspired from biblatex.def
\DeclareFieldFormat[inarticle,bookinarticle]{series}{% series of a journal
  \ifinteger{#1}
    {\mkbibordseries{#1}~\bibstring{jourser}}
    {\ifbibstring{#1}{\bibstring{#1}}{#1}}}
\DeclareFieldFormat[inarticle,bookinarticle]{volume}{#1}% volume of a journal
\DeclareFieldFormat[inarticle,bookinarticle]{number}{#1}% number of a journal

%4. Inheritance

\DeclareDataInheritance{article}{bookinarticle,inarticle}{
	\inherit{author}{bookauthor}% 
	\inherit{title}{maintitle}%
	\inherit{subtitle}{mainsubtitle}%
}


\DeclareDataInheritance{incollection}{bookinincollection,inincollection}{
	\inherit{author}{bookauthor}%
	\inherit{title}{booktitle}%
	\inherit{subtitle}{booksubtitle}%
	\inherit{booktitle}{maintitle}%
	\inherit{booksubtitle}{mainsubtitle}%
}


\DeclareDataInheritance{thesis,phdthesis,mathesis}{bookinthesis,inthesis,inphdthesis,inmathesis,bookinphdthesis,bookinmathesis}{
	\inherit{author}{bookauthor}% 
	\inherit{title}{booktitle}%
	\inherit{subtitle}{booksubtitle}%
}


%5. Label name

\DeclareLabelname[bookinincollection,%
  bookinarticle,%
  bookinthesis,%
  bookinphdthesis,%
  bookinmathesis
  ]{%
  \field{shortauthor}
  \field{author}
}
\endinput
