%% Copyright 2014-… 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 `maintained'. % % The Current Maintainer of this work is Maïeul Rouquette %0. Preamble \ProvidesFile{bookinother.bbx} [2020/03/02 v2.3.3 biblatex bibliography style to have entry type for book edited in other entry type (MR)] \RequireBiber \RequirePackage{xpatch} \ifdef{\biblatexmultipledm@bibstyle} {\RequireBibliographyStyle{\biblatexmultipledm@bibstyle}} {\RequireBibliographyStyle{verbose}} % 1. The drivers for new entrytype \DeclareBibliographyDriver{inarticle}{% \usebibmacro{bibindex}% \usebibmacro{begentry}% \usebibmacro{author/translator+others}% \setunit{\printdelim{nametitledelim}}\newblock% \usebibmacro{title}% \newunit \printlist{language}% \newunit\newblock \usebibmacro{byauthor}% \newunit \usebibmacro{bybookineditor}% \newunit\newblock \usebibmacro{in:}% \usebibmacro{bybookauthor}% \setunit{\printdelim{nametitledelim}}\newblock \usebibmacro{maintitle}% \newunit\newblock \usebibmacro{bybookeditor}% \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{ininarticle}{% \usebibmacro{bibindex}% \usebibmacro{begentry}% \usebibmacro{author/translator+others}% \setunit{\printdelim{nametitledelim}}\newblock% \usebibmacro{title}% \newunit \printlist{language}% \newunit\newblock \usebibmacro{byauthor}% \newunit \usebibmacro{bybookineditor}% \newunit\newblock \usebibmacro{in:}% \usebibmacro{bybookauthor}% \setunit{\printdelim{nametitledelim}}\newblock \usebibmacro{booktitle}% \newunit\newblock \usebibmacro{in:}% \usebibmacro{bymainauthor}% \setunit{\printdelim{nametitledelim}}\newblock \usebibmacro{maintitle}% \newunit\newblock \usebibmacro{bybookeditor}% \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{ininbook}{% \usebibmacro{bibindex}% \usebibmacro{begentry}% \usebibmacro{author/translator+others}% \setunit{\printdelim{nametitledelim}}\newblock \usebibmacro{title}% \printlist{language}% \newunit\newblock \usebibmacro{byauthor}% \newunit \usebibmacro{bybookineditor}% \newunit\newblock \usebibmacro{in:}% \usebibmacro{bybookauthor}% \setunit{\printdelim{nametitledelim}}\newblock \usebibmacro{booktitle}% \newunit \newunit\newblock \usebibmacro{byauthor}% \newunit\newblock \usebibmacro{in:}% \usebibmacro{bymainauthor}% \setunit{\printdelim{nametitledelim}}\newblock \usebibmacro{maintitle}% \newunit\newblock \usebibmacro{byeditor+others}% \newunit\newblock \printfield{edition}% \newunit \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 \usebibmacro{pageref}% \newunit\newblock \iftoggle{bbx:related} {\usebibmacro{related:init}% \usebibmacro{related}} {}% \usebibmacro{finentry}} \DeclareBibliographyDriver{inincollection}{% \usebibmacro{bibindex}% \usebibmacro{begentry}% \usebibmacro{author/translator+others}% \setunit{\printdelim{nametitledelim}}\newblock% \usebibmacro{title}% \newunit \printlist{language}% \newunit\newblock \usebibmacro{byauthor}% \newunit \usebibmacro{bybookineditor}% \newunit\newblock \usebibmacro{in:}% \usebibmacro{bybookauthor}% \setunit{\printdelim{nametitledelim}}\newblock \usebibmacro{booktitle}% \newunit \printlist{language}% \newunit\newblock \usebibmacro{in:}% \usebibmacro{maintitle}% \ifbibmacroundef{bymaineditor+others}% {} {\newunit% \usebibmacro{bymaineditor+others}% }% \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{ininproceedings}{% \usebibmacro{bibindex}% \usebibmacro{begentry}% \usebibmacro{author/translator+others}% \setunit{\printdelim{nametitledelim}}\newblock% \usebibmacro{title}% \newunit \printlist{language}% \newunit\newblock \usebibmacro{byauthor}% \newunit \usebibmacro{bybookineditor}% \newunit\newblock \usebibmacro{in:}% \usebibmacro{bybookauthor}% \setunit{\printdelim{nametitledelim}}\newblock \usebibmacro{booktitle}% \newunit \printlist{language}% \newunit\newblock \usebibmacro{in:}% \usebibmacro{maintitle}% \newunit% \ifbibmacroundef{bymaineditor+others}% {} {\newunit% \usebibmacro{bymaineditor+others}% }% \newunit\newblock \usebibmacro{event+venue+date}% \newunit\newblock \usebibmacro{byeditor+others}% \newunit\newblock \iffieldundef{maintitle} {\printfield{volume}% \printfield{part}} {}% \newunit \printfield{volumes}% \newunit\newblock \usebibmacro{series+number}% \newunit\newblock \printfield{note}% \newunit\newblock \printlist{organization}% \newunit \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 \usebibmacro{pageref}% \newunit\newblock \iftoggle{bbx:related} {\usebibmacro{related:init}% \usebibmacro{related}} {}% \usebibmacro{finentry}} \DeclareBibliographyDriver{inthesis}{% \usebibmacro{bibindex}% \usebibmacro{begentry}% \usebibmacro{author}% \setunit{\printdelim{nametitledelim}}\newblock \usebibmacro{title}% \newunit \printlist{language}% \newunit\newblock \usebibmacro{byauthor}% \newunit \usebibmacro{bybookineditor}% \newunit\newblock \usebibmacro{in:}% \usebibmacro{bybookauthor}% \setunit{\printdelim{nametitledelim}}\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{bookincollection}{incollection} \DeclareBibliographyAlias{bookinincollection}{inincollection} \DeclareBibliographyAlias{bookininproceedings}{ininproceedings} \DeclareBibliographyAlias{bookinjournal}{article} \DeclareBibliographyAlias{bookinproceedings}{inproceedings} \DeclareBibliographyAlias{bookinreference}{incollection} \DeclareBibliographyAlias{bookininreference}{inincollection} \DeclareBibliographyAlias{bookinthesis}{inthesis} \DeclareBibliographyAlias{bookininbook}{ininbook} \DeclareBibliographyAlias{bookininarticle}{ininarticle} \DeclareStyleSourcemap{ \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 new fields format % 3.a bookeditor \newbibmacro*{bybookeditor}{% \ifnameundef{bookeditor} {} {\usebibmacro{bytypestrg}{bookeditor}{editor}% \setunit{\addspace}% \printnames[byeditor]{bookeditor}% \newunit}% } % 3.b Booinkeditor % 3.b.i Tools for patching \newcommand{\bookinother@patch@failed}[1]{\PackageError{bookinother}{Unable to patch #1 driver}} % 3.b.ii Patch standard drivers \xpatchbibdriver{incollection}% {\usebibmacro{byauthor}} {\usebibmacro{byauthor}\newunit\usebibmacro{bybookineditor}} {} {\bookinother@patch@failed{incollection}} \xpatchbibdriver{inproceedings}% {\usebibmacro{byauthor}} {\usebibmacro{byauthor}\newunit\usebibmacro{bybookineditor}} {} {\bookinother@patch@failed{inproceedings}} \xpatchbibdriver{article}% {\usebibmacro{byauthor}} {\usebibmacro{byauthor}% \ifbibmacroundef{byineditor}% {\newunit\usebibmacro{bybookineditor}}% {}% } {} {\bookinother@patch@failed{article}} % 3.b.iii Declare Bibmacro \ifdefined\abx@macro@bybookineditor\else% \newbibmacro*{bybookineditor}{% \ifnameundef{bookineditor} {}% {\usebibmacro{bytypestrg}{bookineditor}{editor}% \setunit{\addspace}% \printnames[byeditor]{bookineditor}% \newunit% \ifnamesequal{bookineditor}{editor}% {\clearname{editor}}% {}% }% }% \fi% % 3.c Mainauthor \DeclareNameAlias{mainauthor}{bookauthor} \DeclareNameAlias{bymainauthor}{bybookauthor} \newbibmacro*{bymainauthor}{% \ifnamesequal{mainauthor}{bookauthor} {} {\printnames{mainauthor}}} % 4. The formats for classical fields \DeclareFieldFormat[% inarticle,% inincollection,% ininproceedings,% ininreference,% inthesis,% ininbook, ]{title}{\mkbibquote{#1\isdot}} \DeclareFieldFormat[% inincollection,% bookinincollection,% inthesis,% bookinthesis,% ininproceedings,% bookininproceedings,% ininreference,% bookininreference,% ininbook,% bookininbook,% ininarticle,% bookininarticle% ]{booktitle}{\mkbibquote{#1\isdot}} \DeclareFieldFormat[% inarticle,bookinarticle,% ininarticle,bookininarticle% ]{maintitle}{\mkbibquote{#1\isdot}} % Inspired from biblatex.def \DeclareFieldFormat[inarticle,bookinjournal,bookinarticle]{series}{% series of a journal \ifinteger{#1} {\mkbibordseries{#1}~\bibstring{jourser}} {\ifbibstring{#1}{\bibstring{#1}}{#1}}} \DeclareFieldFormat[inarticle,bookinjournal,bookinarticle]{volume}{#1}% volume of a journal \DeclareFieldFormat[inarticle,bookinjournal,bookinarticle]{number}{#1}% number of a journal % 5. Inheritance \DeclareDataInheritance{article}{bookinarticle,inarticle}{ \inherit{author}{bookauthor}% \inherit{ineditor}{bookeditor}% \inherit{title}{maintitle}% \inherit{subtitle}{mainsubtitle}% \inherit{titleaddon}{maintitleaddon}% \noinherit{shorttitle} \noinherit{sorttitle} \noinherit{indextitle} \noinherit{indexsorttitle} } \DeclareDataInheritance{collection,reference} {bookincollection,bookinreference}{% \inherit{title}{booktitle} \inherit{subtitle}{booksubtitle} \inherit{titleaddon}{booktitleaddon} \noinherit{shorttitle} \noinherit{sorttitle} \noinherit{indextitle} \noinherit{indexsorttitle} } \DeclareDataInheritance% {inproceedings, incollection, inreference, inbook, }% {% bookinincollection,inincollection,% bookininproceedings,inproceedings,% ininreference,bookininreference,% bookininbook,ininbook,% }{% \inherit{author}{bookauthor}% \inherit{title}{booktitle}% \inherit{subtitle}{booksubtitle}% \inherit{titleaddon}{booktitleaddon}% \inherit{bookauthor}{mainauthor}% \inherit{booktitle}{maintitle}% \inherit{booksubtitle}{mainsubtitle}% \inherit{booktitleaddon}{maintitleaddon}% \noinherit{shorttitle} \noinherit{sorttitle} \noinherit{indextitle} \noinherit{indexsorttitle} } \DeclareDataInheritance{proceedings}{bookinproceedings}{% \inherit{title}{booktitle} \inherit{subtitle}{booksubtitle} \inherit{titleaddon}{booktitleaddon} \noinherit{shorttitle} \noinherit{sorttitle} \noinherit{indextitle} \noinherit{indexsorttitle} } \DeclareDataInheritance{thesis,phdthesis,mathesis}{bookinthesis,inthesis,inphdthesis,inmathesis,bookinphdthesis,bookinmathesis}{ \inherit{author}{bookauthor}% \inherit{title}{booktitle}% \inherit{titleaddon}{booktitleaddon}% \inherit{subtitle}{booksubtitle}% \noinherit{shorttitle} \noinherit{sorttitle} \noinherit{indextitle} \noinherit{indexsorttitle} } \DeclareDataInheritance{inarticle}{bookininarticle,ininarticle}{% \inherit{author}{bookauthor}% \inherit{bookauthor}{mainauthor}% \inherit{title}{booktitle}% \inherit{subtitle}{booksubtitle}% \inherit{titleaddon}{booktitleaddon}% \inherit{booktitle}{maintitle}% \inherit{booksubtitle}{mainsubtitle}% \inherit{booktitleaddon}{maintitleaddon}% \noinherit{shorttitle} \noinherit{sorttitle} \noinherit{indextitle} \noinherit{indexsorttitle} } % 6. Label name \DeclareLabelname[% bookinarticle,% bookincollection,% bookinincollection,% bookininproceedings, bookininreference,% bookinjournal,% bookinproceedings,% bookinreference,% bookinthesis,% bookinphdthesis,% bookinmathesis, bookininbook bookininarticle ]{% \field{shortauthor} \field{author} \field{ineditor} \field{bookineditor} } % 7. For biblatex-bookinother \listadd\opcit@booktitle@entrytypes{inarticle} \listadd\opcit@booktitle@entrytypes{bookinarticle} \listadd\opcit@booktitle@entrytypes@novolume{inarticle} \listadd\opcit@booktitle@entrytypes@novolume{bookinarticle} \listadd\opcit@booktitle@entrytypes{inincollection} \listadd\opcit@booktitle@entrytypes{bookinincollection} \listadd\opcit@booktitle@entrytypes{ininproceedings} \listadd\opcit@booktitle@entrytypes{bookininproceedings} \listadd\opcit@booktitle@entrytypes{ininreference} \listadd\opcit@booktitle@entrytypes{bookininreference} \listadd\opcit@booktitle@entrytypes{inthesis} \listadd\opcit@booktitle@entrytypes{bookinthesis} \listadd\opcit@booktitle@entrytypes{inphdthesis} \listadd\opcit@booktitle@entrytypes{bookphdinthesis} \listadd\opcit@booktitle@entrytypes{inmathesis} \listadd\opcit@booktitle@entrytypes{bookinmathesis} \listadd\opcit@booktitle@entrytypes{inincollection} \listadd\opcit@booktitle@entrytypes{bookinincollection} \listadd\opcit@booktitle@entrytypes{inthesis} \listadd\opcit@booktitle@entrytypes{bookinthesis} \listadd\opcit@booktitle@entrytypes{ininproceedings} \listadd\opcit@booktitle@entrytypes{bookininproceedings} \listadd\opcit@booktitle@entrytypes{ininreference} \listadd\opcit@booktitle@entrytypes{bookininreference} \listadd\opcit@booktitle@entrytypes{ininbook} \listadd\opcit@booktitle@entrytypes{bookininbook} \listadd\opcit@booktitle@entrytypes{ininarticle} \listadd\opcit@booktitle@entrytypes{bookininarticle} \listadd\opcit@booktitle@entrytypes@novolume{ininarticle} \listadd\opcit@booktitle@entrytypes@novolume{bookininarticle} \endinput