diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/biblatex-contrib/biblatex-gost/bbx/gost-standard.bbx')
-rw-r--r-- | Master/texmf-dist/tex/latex/biblatex-contrib/biblatex-gost/bbx/gost-standard.bbx | 2112 |
1 files changed, 2112 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/biblatex-contrib/biblatex-gost/bbx/gost-standard.bbx b/Master/texmf-dist/tex/latex/biblatex-contrib/biblatex-gost/bbx/gost-standard.bbx new file mode 100644 index 00000000000..559fe01330a --- /dev/null +++ b/Master/texmf-dist/tex/latex/biblatex-contrib/biblatex-gost/bbx/gost-standard.bbx @@ -0,0 +1,2112 @@ +\ProvidesFile{gost-standard.bbx} +[2013/03/25\space v0.8\space biblatex-gost styles] + +\def\bbx@gost@date{2013/03/25} +\def\bbx@gost@version{0.8} + +\@ifpackagelater{biblatex}{2013/01/10} + {} + {\PackageError{biblatex} + {Outdated 'biblatex' package} + {This version of 'biblatex-gost' requires biblatex v2.5 or later.\MessageBreak + You are using: '\csuse{ver@biblatex.sty}'.\MessageBreak + This is a fatal error. I'm aborting now.}% + \endinput} + +\AtEndOfPackage{% +\ifboolexpr{ + test {\ifdefstring{\blx@opt@movenames}{true}} + and + ( not test {\ifnumequal{\blx@maxbibnames}{3}} + or + not test {\ifnumequal{\blx@maxcitenames}{3}} + ) + } + {\PackageWarningNoLine{biblatex-gost}{You set maxbibnames or maxcitenames\MessageBreak + different from their default value 3.\MessageBreak + Make sure that sorting works as expected}} + {}} + +\RequireBiber[3] % strictly required + +\blx@inputonce{biblatex-gost.def}{biblatex-gost generic definitions}{}{}{}{} + +\newtoggle{bbx:isbn} +\newtoggle{bbx:url} +\newtoggle{bbx:doi} +\newtoggle{bbx:eprint} +\newtoggle{cbx:isbn} +\newtoggle{cbx:url} +\newtoggle{cbx:doi} +\newtoggle{cbx:eprint} +\newtoggle{bbx:related:bib} +\newtoggle{bbx:related:cite} + +\protected\def\blx@imc@printupdate{\csuse{mkbibrangeshort}{up}} +\protected\def\blx@imc@printpubldate{\csuse{mkbibrangeshort}{publ}} +\protected\def\blx@imc@printprdate{\csuse{mkbibrangeshort}{pr}} +\blx@regimcs{% + \printupdate \printpubldate \printprdate} + +% OPTIONS + +\newbibmacro*{bbx:savehash}{% + \savefield{fullhash}{\bbx@lasthash}} +\DeclareBibliographyOption{dashed}[true]{% + \ifstrequal{#1}{true} + {\ExecuteBibliographyOptions{pagetracker}% + \renewbibmacro*{bbx:savehash}{\savefield{fullhash}{\bbx@lasthash}}} + {\renewbibmacro*{bbx:savehash}{}}} + +\DeclareBibliographyOption{isbn}[true]{% + \global\settoggle{bbx:isbn}{#1}% + \global\settoggle{cbx:isbn}{#1}} +\DeclareBibliographyOption{url}[true]{% + \global\settoggle{bbx:url}{#1}% + \global\settoggle{cbx:url}{#1}} +\DeclareBibliographyOption{doi}[true]{% + \global\settoggle{bbx:doi}{#1}% + \global\settoggle{cbx:doi}{#1}} +\DeclareBibliographyOption{eprint}[true]{% + \global\settoggle{bbx:eprint}{#1}% + \global\settoggle{cbx:eprint}{#1}} +\DeclareBibliographyOption{bibisbn}[true]{% + \global\settoggle{bbx:isbn}{#1}} +\DeclareBibliographyOption{biburl}[true]{% + \global\settoggle{bbx:url}{#1}} +\DeclareBibliographyOption{bibdoi}[true]{% + \global\settoggle{bbx:doi}{#1}} +\DeclareBibliographyOption{bibeprint}[true]{% + \global\settoggle{bbx:eprint}{#1}} +\DeclareBibliographyOption{citeisbn}[true]{% + \global\settoggle{cbx:isbn}{#1}} +\DeclareBibliographyOption{citeurl}[true]{% + \global\settoggle{cbx:url}{#1}} +\DeclareBibliographyOption{citedoi}[true]{% + \global\settoggle{cbx:doi}{#1}} +\DeclareBibliographyOption{citeeprint}[true]{% + \global\settoggle{cbx:eprint}{#1}} +\DeclareBibliographyOption{related}[true]{% + \ifcsdef{bbx@opt@related@#1} + {\csuse{bbx@opt@related@#1}} + {\PackageError{biblatex} + {Invalid option 'related=#1'} + {Valid values are 'true', 'false', 'bib', and 'cite'.}}} + +\def\bbx@opt@related@true{% + \toggletrue{bbx:related:bib}% + \toggletrue{bbx:related:cite}} + +\def\bbx@opt@related@false{% + \togglefalse{bbx:related:bib}% + \togglefalse{bbx:related:cite}} + +\def\bbx@opt@related@bib{% + \toggletrue{bbx:related:bib}% + \togglefalse{bbx:related:cite}} + +\def\bbx@opt@related@cite{% + \togglefalse{bbx:related:bib}% + \toggletrue{bbx:related:cite}} + +\newcommand*{\blx@gost@defaultorder}{vbpi} +\DeclareBibliographyOption{volsorder}[vbpi]{% + \renewcommand*{\blx@gost@defaultorder}{#1}} + +\ExecuteBibliographyOptions{ + useeditor=false, + usetranslator=false, + maxnames=3, + minnames=1, + dashed=false, + singletitle=false, + movenames=true, + firstinits, + volsorder=vbpi, + related=bib} + +\newbibmacro*{cbx:bookibid:check}[2]{#2} + +% FORMATS + +\renewcommand*{\mkbibacro}[1]{\MakeUppercase{#1}} +\DeclareFieldFormat{isbn}{\mkbibacro{ISBN} #1} +\DeclareFieldFormat{isrn}{\mkbibacro{ISRN} #1} +\DeclareFieldFormat{issn}{\mkbibacro{ISSN} #1} +\DeclareFieldFormat*{title}{#1} +\DeclareFieldFormat{booktitle}{#1} +\DeclareFieldFormat{journaltitle}{#1} +\DeclareFieldFormat{issuetitle}{#1} +\DeclareFieldFormat{maintitle}{#1} +\DeclareFieldFormat*{volume}{% + \iffieldnum{volume} + {\ifbibstring{volume} + {\bibstring{volume}\addabbrvspace#1} + {}} + {\ifcapital{\MakeCapital{#1}}{#1}\isdot}} +\DeclareFieldFormat[article,periodical]{volume}{% + \ifbibstring{volume} + {\bibstring{jourvol}\addabbrvspace#1} + {}} +\DeclareFieldFormat*{book}{% + \iffieldnum{book} + {\ifbibstring{book} + {\bibstring{book}\addabbrvspace#1} + {}} + {\ifcapital{\MakeCapital{#1}}{#1}\isdot}} +\DeclareFieldFormat*{part}{% + \iffieldnum{part} + {\ifbibstring{part} + {\bibstring{part}\addabbrvspace#1} + {}} + {\ifcapital{\MakeCapital{#1}}{#1}\isdot}} +\DeclareFieldFormat{seriesnumber}{#1}% +\DeclareFieldFormat*{number}{% + \iffieldnum{number} + {\ifbibstring{number} + {\bibsstring{number}\addabbrvspace#1} + {\unspace\adddot#1}}% + {\ifcapital{\MakeCapital{#1}}{#1}\isdot}} +\DeclareFieldFormat[patent]{number}{#1}% +\DeclareFieldFormat{reqnumber}{% + \ifbibstring{number} + {\bibsstring{number}\addnbspace#1} + {#1}}% +\newbibmacro*{volumes/parts/books/issues}[2]{% + \iffieldnum{#1} + {\ifbibstring{#1} + {#2~\bibsstring{#1}} + {}} + {\ifcapital{\MakeCapital{#2}}{#2}}} +\DeclareFieldFormat{volumes}{\usebibmacro{volumes/parts/books/issues}{volumes}{#1}} +\DeclareFieldFormat{parts}{\usebibmacro{volumes/parts/books/issues}{parts}{#1}} +\DeclareFieldFormat{books}{\usebibmacro{volumes/parts/books/issues}{books}{#1}} +\DeclareFieldFormat{issues}{\usebibmacro{volumes/parts/books/issues}{issues}{#1}} +\newbibmacro*{in+}[2]{% + \iffieldnum{#1} + {\ifbibstring{involumes} + {\bibstring{involumes}\addabbrvspace} + {}% + #2~\bibsstring{#1}} + {\ifcapital{\MakeCapital{#2}}{#2}}} +\DeclareFieldFormat{involumes}{\usebibmacro{in+}{volumes}{#1}} +\DeclareFieldFormat{inbooks}{\usebibmacro{in+}{books}{#1}} +\DeclareFieldFormat{inparts}{\usebibmacro{in+}{parts}{#1}} +\DeclareFieldFormat{inissues}{\usebibmacro{in+}{issues}{#1}} +\DeclareFieldFormat{issue}{% + \iffieldnum{issue} + {\ifbibstring{issue} + {\bibstring{issue}\addabbrvspace#1} + {}} + {\ifcapital{\MakeCapital{#1}}{#1}\isdot}} +\DeclareFieldFormat[article,periodical]{issue}{% + \ifinteger{#1} + {\ifbibstring{issue}% + {\bibstring{issue}\addabbrvspace#1}% + {\unspace\adddot#1}}% + {\ifcapital{\MakeCapital{#1}}{#1}\isdot}} +\DeclareFieldFormat{date}{% + \iffieldundef{endyear} + {#1} + {\iffieldequalstr{endyear}{} + {#1\mbox{~~~~}} + {#1}}} +\DeclareFieldFormat{update}{% + \ifbibstring{updated} + {\bibstring{updated}\addcolon\space#1} + {Updated\addcolon\space#1}} +\DeclareFieldFormat{publdate}{% + \ifbibstring{published} + {\bibstring{published}\addspace#1} + {#1}} +\DeclareFieldFormat{reqdate}{% + \ifbibstring{requested} + {\bibstring{requested}\addspace#1} + {#1}} +\DeclareFieldFormat{prdate}{% + \ifbibstring{priority} + {\bibstring{priority}\addspace#1} + {#1}} +\DeclareFieldFormat{systemreq}{% + \ifbibstring{systemreq} + {\bibstring{systemreq}\addcolon\space#1} + {Sys. requirements\addcolon\space#1}} +\DeclareListFormat{semicolondelim}{% + \ifnumgreater{\value{listcount}}{\value{liststart}} + {\ifnumless{\value{listcount}}{\value{liststop}} + {\addsemicolondelim} + {\ifnumequal{\value{listcount}}{\value{liststop}} + {\addsemicolondelim} + {}}} + {}% + #1\isdot} +\DeclareFieldFormat{edition}{% + \ifinteger{#1} + {\mkbibordedition{#1}~\bibstring{edition}} + {\ifcapital{\MakeCapital{#1}}{#1}\isdot}} +\DeclareFieldFormat[thesis]{type}{\ifbibstring{#1}{\bibsentence\biblstring{#1}}{#1}} +\DeclareFieldFormat{prcountry}{% + \ifbibxstring{\thefield{prcountry}} + {\bibcpstring{\thefield{prcountry}}} + {#1}} + +\DeclareFieldFormat{relatedstring}{\select@language{\bbl@main@language}#1\relatedpunct} + +\DeclareNameAlias{sortname}{last-first} + +\DefineBibliographyExtras{french}{\protected\def\mkbibnamelast#1{#1}} +\DeclareNameFormat{author}{% + \iffirstinits + {\usebibmacro{authorname:last-first}{#1}{#4}{#5}{#7}} + {\usebibmacro{authorname:last-first}{#1}{#3}{#5}{#7}}% + \usebibmacro{name:andothers}} +\newcommand*{\mkgostheading}[1]{\mkbibemph{#1}}%\nocorr}} +\DeclareFieldFormat{heading}{% + \mkgostheading{#1}\addperiod\space} +\newcommand*{\mkbibhdnamelast}[1]{\mkgostheading{#1}} +\newcommand*{\mkbibhdnamefirst}[1]{\mkbibhdnamelast{#1}} +\newcommand*{\mkbibhdnameprefix}[1]{\mkbibhdnamelast{#1}} +\newcommand*{\mkbibhdnameaffix}[1]{\mkbibhdnamelast{#1}} +\newbibmacro*{authorname:last-first}[4]{% + \ifuseprefix + {\usebibmacro{name:delim}{#3#1}% + \usebibmacro{name:hook}{#3#1}% + \ifblank{#3}{}{% + \ifcapital + {\mkbibhdnameprefix{\MakeCapital{#3}}\isdot} + {\mkbibhdnameprefix{#3}\isdot}% + \ifpunctmark{'}{}{\bibnamedelimc}}% + \mkbibhdnamelast{#1}\isdot + \ifblank{#4}{}{\bibnamedelimd\mkbibhdnameaffix{#4}\isdot}% + \ifblank{#2}{}{\addcomma\bibnamedelimd\mkbibhdnamefirst{#2}\isdot}} + {\usebibmacro{name:delim}{#1}% + \usebibmacro{name:hook}{#1}% + \mkbibhdnamelast{#1}\isdot + \ifblank{#4}{}{\bibnamedelimd\mkbibhdnameaffix{#4}\isdot}% + \ifblank{#2#3}{}{\addspace}% + \ifblank{#2}{}{\bibnamedelimd\mkbibhdnamefirst{#2}\isdot}% + \ifblank{#3}{}{\bibnamedelimd\mkbibhdnameprefix{#3}\isdot}}} +\DeclareNameAlias{editor}{author} +\DeclareNameAlias{editora}{editor} +\DeclareNameAlias{editorb}{editor} +\DeclareNameAlias{editorc}{editor} +\DeclareNameAlias{translator}{author} + +\DeclareNameFormat{last-first:full}{% + \begingroup% + \renewcommand*{\revsdnamepunct}{\addspace}% + \usebibmacro{name:last-first}{#1}{#3}{#5}{#7}% + \endgroup} + +% FORMATTING COMMANDS + +\newbibmacro*{//}{% + \nopunct\printtext{\addnbspace\mbox{//}\addspace}} +\renewcommand*{\labelnamepunct}{\addspace} +\renewcommand*{\intitlepunct}{\addspace} +\renewcommand*{\finalnamedelim}{\addcomma\space} +\renewcommand*{\finallistdelim}{\addcomma\space} +\renewcommand*{\bibpagespunct}{\addperiod\space} +\renewcommand*{\subtitlepunct}{\addcolon\space} +\renewcommand*{\newblockpunct}{% + \addnbspace\textemdash\space\bibsentence}% block punctuation +\newcommand*{\respdelim}{\addnbspace/\space}% delimiter before "credits" +\newcommand*{\resppunct}{\addsemicolondelim}% punctuation between "credits" items + +\newcounter{blx@gost@pointer}% +\newcommand*{\blx@gost@endofstring}{\@\@\@\@\@} % end of string = \\\ +\newcommand*{\blx@gost@setunit}{\newunit} + +\@ifpackageloaded{babel} + {\edef\gostmedialanguage{\bbl@main@language}% + \newcommand*{\select@medialanguage}{\select@language{\gostmedialanguage}}} + {\edef\gostmedialanguage{russian}% + \newcommand*{\select@medialanguage}{}} + +\newbibmacro*{begentry}{} +\newbibmacro*{finentry}{\finentry} +% +%----------- Drivers ---------------- +% +\DeclareBibliographyDriver{article}{% + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{heading}% + \newunit + \usebibmacro{author/translator+others}% + \setunit*{\labelnamepunct}% + \usebibmacro{title}% + \setunit{\respdelim}% + \usebibmacro{byauthor}% + \setunit*{\resppunct}% + \usebibmacro{bytranslator+others}% + \setunit{\space}% + \iffieldundef{journaltitle} % no journaltitle means electronic publication + {\newunit} + {\usebibmacro{//}% + \usebibmacro{journal}% + \setunit{\respdelim}% + \usebibmacro{credits}% + \setunit*{\resppunct}% + \usebibmacro{byeditor}% + \newunit\newblock + \printlist[semicolondelim]{specdata}% + \newunit\newblock + \printlist{location}% ??? + \setunit*{\addcomma\space}% + \usebibmacro{jour:date}% + \newunit\newblock + \usebibmacro{jour:volume+parts+issuetitle}% + \newunit\newblock + \printfield{pages}% + \newunit\newblock + \iffieldundef{series} + {} + {\printtext{(\printfield{series})}}% + \newunit\newblock + \usebibmacro{issn}% + \newunit\newblock}% + \usebibmacro{doi+eprint+url+note}% + \newunit\newblock + \usebibmacro{addendum+pubstate}% + \setunit{\bibpagerefpunct}\newblock + \usebibmacro{pageref}% + \newunit\newblock + \usebibmacro{related}% + \usebibmacro{finentry}} + +\DeclareBibliographyDriver{book}{% + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{heading}% + \newunit + \usebibmacro{author/editor+others/translator+others}% + \setunit*{\labelnamepunct}% + \usebibmacro{maintitle+volumes+parts+title}% + \setunit{\respdelim}% + \ifuseauthor + {} + {\usebibmacro{byauthor}% + \setunit*{\resppunct}}% + \usebibmacro{credits}% + \setunit*{\resppunct}% + \usebibmacro{byeditor}% + \setunit*{\resppunct}% + \usebibmacro{bytranslator+others}% + \newunit\newblock + \printfield{edition}% + \setunit*{\respdelim}% + \printlist[semicolondelim]{editioncredits}% + \newunit\newblock + \printlist[semicolondelim]{specdata}% + \newunit\newblock + \usebibmacro{publisher+location+date}% + \newunit\newblock + \usebibmacro{chapter+pages}% + \newunit + \printfield{pagetotal}% + \newunit\newblock + \usebibmacro{series+number}% + \newunit\newblock + \usebibmacro{isbn}% + \newunit\newblock + \usebibmacro{doi+eprint+url+note}% + \newunit\newblock + \usebibmacro{addendum+pubstate}% + \setunit{\bibpagerefpunct}\newblock + \usebibmacro{pageref}% + \newunit\newblock + \usebibmacro{related}% + \usebibmacro{finentry}} + +\DeclareBibliographyDriver{booklet}{% + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{heading}% + \newunit + \usebibmacro{author/editor}% + \setunit*{\labelnamepunct}% + \usebibmacro{title}% + \setunit{\subtitlepunct}% + \printfield{type}% + \setunit{\respdelim}% + \ifuseauthor + {} + {\usebibmacro{byauthor}% + \setunit*{\resppunct}}% + \usebibmacro{credits}% + \setunit*{\resppunct}% + \usebibmacro{byeditor}% + \newunit\newblock + \printlist[semicolondelim]{specdata}% + \newunit\newblock + \usebibmacro{location+date}% + \newunit\newblock + \usebibmacro{chapter+pages}% + \newunit + \printfield{pagetotal}% + \newunit\newblock + \usebibmacro{doi+eprint+url+note}% + \newunit + \printfield{howpublished}% + \newunit\newblock + \usebibmacro{addendum+pubstate}% + \setunit{\bibpagerefpunct}\newblock + \usebibmacro{pageref}% + \newunit\newblock + \usebibmacro{related}% + \usebibmacro{finentry}} + +\DeclareBibliographyDriver{collection}{% + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{heading}% + \newunit + \usebibmacro{editor+others}% + \setunit*{\labelnamepunct}% + \usebibmacro{maintitle+volumes+parts+title}% + \setunit{\respdelim}% + \usebibmacro{credits}% + \setunit*{\resppunct}% + \usebibmacro{byeditor}% + \setunit*{\resppunct}% + \usebibmacro{bytranslator+others}% + \newunit\newblock + \printfield{edition}% + \setunit*{\respdelim}% + \printlist[semicolondelim]{editioncredits}% + \newunit\newblock + \printlist[semicolondelim]{specdata}% + \newunit\newblock + \usebibmacro{publisher+location+date}% + \newunit\newblock + \usebibmacro{chapter+pages}% + \newunit + \printfield{pagetotal}% + \newunit\newblock + \usebibmacro{series+number}% + \newunit\newblock + \usebibmacro{isbn}% + \newunit\newblock + \usebibmacro{doi+eprint+url+note}% + \newunit\newblock + \usebibmacro{addendum+pubstate}% + \setunit{\bibpagerefpunct}\newblock + \usebibmacro{pageref}% + \newunit\newblock + \usebibmacro{related}% + \usebibmacro{finentry}} + +\DeclareBibliographyDriver{inbook}{% + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{heading}% + \newunit + \usebibmacro{author/translator+others}% + \setunit*{\labelnamepunct}% + \usebibmacro{title}% + \setunit{\respdelim}% + \usebibmacro{byauthor}% + \setunit*{\resppunct}% + \usebibmacro{credits}% + \setunit*{\resppunct}% + \usebibmacro{bytranslator+others}% + \setunit{\space}% + \usebibmacro{//}% + \usebibmacro{cbx:bookibid:check} + {\bibsentence\printtext{% + \bibhyperlink{\csuse{cbx@\iffootnote{f}{t}@bookref}}{\bibstring[\mkibid]{ibidem}}}% + \newunit\newblock + \usebibmacro{chapter+pages}} + {\usebibmacro{maintitle+volumes+parts+booktitle}% + \setunit{\respdelim}% + \ifnamesequal{author}{bookauthor} + {} + {\usebibmacro{book:byauthor}% + \setunit*{\resppunct}}% + \usebibmacro{book:credits}% + \setunit*{\resppunct}% + \usebibmacro{book:byeditor}% + \setunit*{\resppunct}% + \usebibmacro{book:bytranslator+others}% + \newunit\newblock + \printfield{edition}% + \setunit*{\respdelim}% + \printlist[semicolondelim]{editioncredits}% + \newunit\newblock + \printlist[semicolondelim]{specdata}% + \newunit\newblock + \usebibmacro{publisher+location+date}% + \newunit\newblock + \usebibmacro{chapter+pages}% + \newunit\newblock + \usebibmacro{series+number}% + \newunit\newblock + \usebibmacro{isbn}% + \newunit\newblock + \usebibmacro{doi+eprint+url+note}% + \newunit\newblock + \usebibmacro{addendum+pubstate}% + \setunit{\bibpagerefpunct}\newblock + \usebibmacro{pageref}}% + \newunit\newblock + \usebibmacro{related}% + \usebibmacro{finentry}} + +\DeclareBibliographyDriver{incollection}{% + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{heading}% + \newunit + \usebibmacro{author/translator+others}% + \setunit*{\labelnamepunct}% + \usebibmacro{title}% + \setunit{\respdelim}% + \usebibmacro{byauthor}% + \setunit*{\resppunct}% + \usebibmacro{credits}% + \setunit*{\resppunct}% + \usebibmacro{bytranslator+others}% + \setunit{\space}% + \usebibmacro{//}% + \usebibmacro{cbx:bookibid:check} + {\bibsentence\printtext{% + \bibhyperlink{\csuse{cbx@\iffootnote{f}{t}@bookref}}{\bibstring[\mkibid]{ibidem}}}% + \newunit\newblock + \usebibmacro{chapter+pages}} + {\usebibmacro{maintitle+volumes+parts+booktitle}% + \setunit{\respdelim}% + \usebibmacro{book:credits}% + \setunit*{\resppunct}% + \usebibmacro{book:byeditor}% + \setunit*{\resppunct}% + \usebibmacro{book:bytranslator+others}% + \newunit\newblock + \printfield{edition}% + \setunit*{\respdelim}% + \printlist[semicolondelim]{editioncredits}% + \newunit\newblock + \printlist[semicolondelim]{specdata}% + \newunit\newblock + \usebibmacro{publisher+location+date}% + \newunit\newblock + \usebibmacro{chapter+pages}% + \newunit\newblock + \usebibmacro{series+number}% + \newunit\newblock + \usebibmacro{isbn}% + \newunit\newblock + \usebibmacro{doi+eprint+url+note}% + \newunit\newblock + \usebibmacro{addendum+pubstate}% + \setunit{\bibpagerefpunct}\newblock + \usebibmacro{pageref}}% + \newunit\newblock + \usebibmacro{related}% + \usebibmacro{finentry}} + +\DeclareBibliographyDriver{inproceedings}{% + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{heading}% + \newunit + \usebibmacro{author/translator+others}% + \setunit*{\labelnamepunct}% + \usebibmacro{title}% + \setunit{\respdelim}% + \usebibmacro{byauthor}% + \setunit*{\resppunct}% + \usebibmacro{credits}% + \setunit*{\resppunct}% + \usebibmacro{bytranslator+others}% + \setunit{\space}% + \usebibmacro{//}% + \usebibmacro{cbx:bookibid:check} + {\bibsentence\printtext{% + \bibhyperlink{\csuse{cbx@\iffootnote{f}{t}@bookref}}{\bibstring[\mkibid]{ibidem}}}% + \newunit\newblock + \usebibmacro{chapter+pages}} + {\usebibmacro{maintitle+volumes+parts+booktitle}% + \newunit + \usebibmacro{event+venue+date}% + \setunit{\respdelim}% + \usebibmacro{book:credits}% + \setunit*{\resppunct}% + \usebibmacro{book:byeditor}% + \setunit*{\resppunct}% + \usebibmacro{book:bytranslator+others}% + \newunit\newblock + \printlist[semicolondelim]{specdata}% + \newunit\newblock + \printlist{organization}% + \newunit + \usebibmacro{publisher+location+date}% + \newunit\newblock + \usebibmacro{chapter+pages}% + \newunit\newblock + \usebibmacro{series+number}% + \newunit\newblock + \usebibmacro{isbn}% + \newunit\newblock + \usebibmacro{doi+eprint+url+note}% + \newunit\newblock + \usebibmacro{addendum+pubstate}% + \setunit{\bibpagerefpunct}\newblock + \usebibmacro{pageref}}% + \newunit\newblock + \usebibmacro{related}% + \usebibmacro{finentry}} + +\DeclareBibliographyDriver{manual}{% + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{heading}% + \newunit + \usebibmacro{author/editor}% + \setunit*{\labelnamepunct}% + \usebibmacro{title}% + \setunit{\subtitlepunct}% + \printfield{type}% + \setunit{\respdelim}% + \usebibmacro{byauthor}% + \setunit*{\resppunct}% + \printlist{organization}% + \setunit*{\resppunct}% + \usebibmacro{credits}% + \setunit*{\resppunct}% + \usebibmacro{byeditor}% + \setunit*{\resppunct}% + \newunit\newblock + \printfield{edition}% + \setunit*{\respdelim}% + \printlist[semicolondelim]{editioncredits}% + \newunit + \printfield{version}% + \newunit\newblock + \printlist[semicolondelim]{specdata}% + \newunit\newblock + \usebibmacro{publisher+location+date}% + \newunit\newblock + \usebibmacro{chapter+pages}% + \newunit + \printfield{pagetotal}% + \newunit\newblock + \usebibmacro{isbn}% + \newunit\newblock + \usebibmacro{doi+eprint+url+note}% + \newunit\newblock + \usebibmacro{addendum+pubstate}% + \setunit{\bibpagerefpunct}\newblock + \usebibmacro{pageref}% + \newunit\newblock + \usebibmacro{related}% + \usebibmacro{finentry}} + +\DeclareBibliographyDriver{misc}{% + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{heading}% + \newunit + \usebibmacro{author/editor}% + \setunit*{\labelnamepunct}% + \usebibmacro{title}% + \setunit{\subtitlepunct}% + \printfield{type}% + \setunit{\respdelim}% + \ifuseauthor + {} + {\usebibmacro{byauthor}% + \setunit*{\resppunct}}% + \usebibmacro{credits}% + \newunit\newblock + \printfield{version}% + \newunit\newblock + \printlist[semicolondelim]{specdata}% + \newunit\newblock + \usebibmacro{organization+location+date}% + \newunit\newblock + \usebibmacro{doi+eprint+url+note}% + \newunit + \printfield{howpublished}% + \newunit\newblock + \usebibmacro{addendum+pubstate}% + \setunit{\bibpagerefpunct}\newblock + \usebibmacro{pageref}% + \newunit\newblock + \usebibmacro{related}% + \usebibmacro{finentry}} + +\DeclareBibliographyDriver{online}{% + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{heading}% + \newunit + \usebibmacro{author/editor}% + \setunit*{\labelnamepunct}% + \usebibmacro{title}% + \setunit{\respdelim}% + \ifuseauthor + {} + {\usebibmacro{byauthor}% + \setunit*{\resppunct}}% + \printlist{organization}% + \setunit*{\resppunct}% + \usebibmacro{credits}% + \setunit*{\resppunct}% + \usebibmacro{byeditor}% + \setunit*{\resppunct}% + \usebibmacro{bytranslator+others}% + \newunit\newblock + \printfield{version}% + \newunit\newblock + \printlist[semicolondelim]{specdata}% + \newunit\newblock + \usebibmacro{date}% + \newunit\newblock + \printupdate% + \newunit\newblock + \printfield{systemreq}% + \newunit\newblock + \usebibmacro{url+urldate}% + \setunit*{\addsemicolondelim}% + \printfield{note}% + \newunit\newblock + \usebibmacro{addendum+pubstate}% + \setunit{\bibpagerefpunct}\newblock + \usebibmacro{pageref}% + \newunit\newblock + \usebibmacro{related}% + \usebibmacro{finentry}} + +\DeclareBibliographyDriver{patent}{% + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{heading}% + \newunit + \usebibmacro{title}% + \setunit*{\subtitlepunct}% + \printfield{type}% + \setunit*{\addspace}% + \printfield{number}% + \iflistundef{location} + {} + {\setunit*{\addspace}% + \printlist[][-\value{listtotal}]{location}}% + \setunit{\addcolondelim}% + \printfield{ipc}% + \setunit{\respdelim}% + \printnames[byauthor]{author}% + \iffieldundef{authortype} + {} + {\setunit*{\addspace}% + \printfield[parens]{authortype}}% + \setunit*{\addsemicolondelim}% + \usebibmacro{byholder}% + \setunit*{\addsemicolondelim}% + \usebibmacro{credits}% + \newunit\newblock + \printfield{reqnumber}% + \ifboolexpr{ + test {\iffieldundef{year}} + and test {\iffieldundef{month}} + and test {\iffieldundef{day}} + } + {} + {\setunit*{\addsemicolondelim}% + \printtext[reqdate]{\mkbibdateshort{year}{month}{day}}}% + \setunit*{\addsemicolondelim}% + \printpubldate% + \setunit*{\addcomma\space}% + \printfield{publication}% + \setunit*{\addsemicolondelim}% + \printlist[semicolondelim]{specdata}% + \setunit*{\addsemicolondelim}% + \usebibmacro{priority}% + \newunit\newblock + \printfield{pagetotal}% + \newunit\newblock + \usebibmacro{doi+eprint+url+note}% + \newunit\newblock + \usebibmacro{addendum+pubstate}% + \setunit{\bibpagerefpunct}\newblock + \usebibmacro{pageref}% + \newunit\newblock + \usebibmacro{related}% + \usebibmacro{finentry}} + +\DeclareBibliographyDriver{periodical}{% + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{heading}% + \newunit + \usebibmacro{editor}% + \setunit*{\labelnamepunct}% + \usebibmacro{title} + \setunit{\respdelim}% + \usebibmacro{credits}% + \setunit*{\resppunct}% + \usebibmacro{byeditor}% + \newunit\newblock + \printlist[semicolondelim]{specdata}% + \newunit\newblock + \printlist{location}% ??? + \setunit*{\addcomma\space}% + \usebibmacro{jour:date}% + \newunit\newblock + \usebibmacro{jour:volume+parts+issuetitle}% + \newunit\newblock + \iffieldundef{series} + {} + {\printtext{(\printfield{series})}}% + \newunit\newblock + \usebibmacro{issn}% + \newunit\newblock + \usebibmacro{doi+eprint+url+note}% + \newunit\newblock + \usebibmacro{addendum+pubstate}% + \setunit{\bibpagerefpunct}\newblock + \usebibmacro{pageref}% + \newunit\newblock + \usebibmacro{related}% + \usebibmacro{finentry}} + +\DeclareBibliographyDriver{proceedings}{% + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{heading}% + \newunit + \usebibmacro{editor+others}% + \setunit*{\labelnamepunct}% + \usebibmacro{maintitle+volumes+parts+title}% + \newunit + \usebibmacro{event+venue+date}% + \setunit{\respdelim}% + \usebibmacro{credits}% + \setunit*{\resppunct}% + \usebibmacro{byeditor}% + \setunit*{\resppunct}% + \usebibmacro{bytranslator+others}% + \newunit\newblock + \printlist[semicolondelim]{specdata}% + \newunit\newblock + \printlist{organization}% + \newunit + \usebibmacro{publisher+location+date}% + \newunit\newblock + \usebibmacro{chapter+pages}% + \newunit + \printfield{pagetotal}% + \newunit\newblock + \usebibmacro{series+number}% + \newunit\newblock + \usebibmacro{isbn}% + \newunit\newblock + \usebibmacro{doi+eprint+url+note}% + \newunit\newblock + \usebibmacro{addendum+pubstate}% + \setunit{\bibpagerefpunct}\newblock + \usebibmacro{pageref}% + \newunit\newblock + \usebibmacro{related}% + \usebibmacro{finentry}} + +\DeclareBibliographyDriver{report}{% + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{heading}% + \newunit + \usebibmacro{author}% + \setunit*{\labelnamepunct}% + \usebibmacro{title}% + \setunit{\subtitlepunct}% + \printfield{type}% + \setunit{\respdelim}% + \usebibmacro{byauthor}% + \setunit*{\resppunct}% + \printlist[semicolondelim]{institution}% + \setunit*{\resppunct}% + \usebibmacro{credits}% + \newunit\newblock + \printfield{version}% + \newunit\newblock + \printlist[semicolondelim]{specdata}% + \newunit\newblock + \usebibmacro{location+date}% + \newunit\newblock + \usebibmacro{chapter+pages}% + \newunit + \printfield{pagetotal}% + \newunit\newblock + \usebibmacro{isrn} + \setunit*{\addspace}% + \printfield{number}% + \newunit\newblock + \usebibmacro{doi+eprint+url+note}% + \newunit\newblock + \usebibmacro{addendum+pubstate}% + \setunit{\bibpagerefpunct}\newblock + \usebibmacro{pageref}% + \newunit\newblock + \usebibmacro{related}% + \usebibmacro{finentry}} + +\DeclareBibliographyDriver{thesis}{% + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{heading}% + \newunit + \usebibmacro{author}% + \setunit*{\labelnamepunct}% + \usebibmacro{thesistitle}% + \setunit{\respdelim}% + \printnames[last-first:full]{author}% + \newunit\newblock + \printlist[semicolondelim]{specdata}% + \newunit + \usebibmacro{institution+location+date}% + \newunit\newblock + \usebibmacro{chapter+pages}% + \newunit + \printfield{pagetotal}% + \newunit\newblock + \usebibmacro{doi+eprint+url+note}% + \newunit\newblock + \usebibmacro{addendum+pubstate}% + \setunit{\bibpagerefpunct}\newblock + \usebibmacro{pageref}% + \newunit\newblock + \usebibmacro{related}% + \usebibmacro{finentry}} + +\DeclareBibliographyDriver{unpublished}{% + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{heading}% + \newunit + \usebibmacro{author}% + \setunit*{\labelnamepunct}% + \usebibmacro{title}% + \setunit{\respdelim}% + \usebibmacro{byauthor}% + \setunit*{\resppunct}% + \usebibmacro{credits}% + \newunit\newblock + \printlist[semicolondelim]{specdata}% + \newunit\newblock + \usebibmacro{location+date}% + \newunit\newblock + \usebibmacro{isbn}% + \newunit\newblock + \usebibmacro{url+urldate+note} + \newunit + \printfield{howpublished}% + \newunit\newblock + \usebibmacro{addendum+pubstate}% + \setunit{\bibpagerefpunct}\newblock + \usebibmacro{pageref}% + \newunit\newblock + \usebibmacro{related}% + \usebibmacro{finentry}} + +\DeclareBibliographyDriver{shorthands}{% + \usedriver + {\DeclareNameAlias{sortname}{default}} + {\thefield{entrytype}}% + \finentry} + +\DeclareBibliographyAlias{mvbook}{book} +\DeclareBibliographyAlias{bookinbook}{inbook} +\DeclareBibliographyAlias{suppbook}{inbook} +\DeclareBibliographyAlias{mvcollection}{collection} +\DeclareBibliographyAlias{suppcollection}{incollection} +\DeclareBibliographyAlias{mvproceedings}{proceedings} +\DeclareBibliographyAlias{reference}{collection} +\DeclareBibliographyAlias{mvreference}{reference} +\DeclareBibliographyAlias{inreference}{incollection} +\DeclareBibliographyAlias{suppperiodical}{article} +\DeclareBibliographyAlias{review}{article} +\DeclareBibliographyAlias{*}{misc} + +% (RE)DEFINING BIBMACROS + +\newbibmacro*{maintitle+volumes+parts+}[1]{% + \iffieldsequal{maintitle}{#1} + {\clearfield{maintitle}% + \clearfield{mainsubtitle}% + \clearfield{maintitleaddon}} + {\iffieldundef{maintitle} + {\usebibmacro{#1}% + \setunit{\addcolondelim}% + \usebibmacro{involumes+otherparts}{\setunit*{\addcomma\space}} + \newunit + \usebibmacro{volume+parts}{\newunit}} + {\usebibmacro{maintitle}% + \newunit + \usebibmacro{involumes+otherparts}{\setunit*{\addcomma\space}}% + \newunit + \usebibmacro{volume+parts}{\newunit}% + \newunit + \usebibmacro{#1}}}% + \newunit} + +\newbibmacro*{maintitle+volumes+parts+title}{% + \usebibmacro{maintitle+volumes+parts+}{title}} + +\newbibmacro*{maintitle+volumes+parts+booktitle}{% + \usebibmacro{maintitle+volumes+parts+}{booktitle}} + +\newbibmacro*{event+venue+date}{% + \ifboolexpr{ + test {\iffieldundef{eventtitle}} + and + test {\iffieldundef{venue}} + and + test {\iffieldundef{eventyear}} + } + {} + {\setunit{\addspace}% + \printtext{(% + \printfield{eventtitle}% + \setunit*{\addcomma\space}% + \printfield{venue}% + \setunit*{\addcomma\space}% + \printeventdate)}}% + \newunit} + +\newbibmacro*{series+number}{% + \iffieldundef{series} + {} + {\printtext{(% + \printfield{series}% + \setunit*{\addsemicolondelim}% + \printfield[seriesnumber]{number})}}} + +\newbibmacro*{publisher+location+date}{% + \usebibmacro{publisher+location}% + \setunit*{\addcomma\space}% + \usebibmacro{date}} + +\newbibmacro*{publisher+location}{% + \printlist{location}% + \iflistundef{publisher} + {\setunit*{\addcomma\space}} + {\setunit*{\addcolondelim}}% + \printlist{publisher}} + +\newbibmacro*{institution+location+date}{% + \printlist{location}% + \iflistundef{institution} + {\setunit*{\addcomma\space}} + {\setunit*{\addcolondelim}}% + \printlist{institution}% + \setunit*{\addcomma\space}% + \usebibmacro{date}% + \newunit} + +\newbibmacro*{organization+location+date}{% + \printlist{location}% + \iflistundef{organization} + {\setunit*{\addcomma\space}} + {\setunit*{\addcolondelim}}% + \printlist{organization}% + \setunit*{\addcomma\space}% + \usebibmacro{date}% + \newunit} + +\newbibmacro*{location+date}{% + \printlist{location}% + \setunit*{\addcomma\space}% + \usebibmacro{date}% + \newunit} + +\newbibmacro*{chapter+pages}{% + \printfield{chapter}% + \setunit*{\bibpagespunct}% + \printfield{pages}% + \newunit} + +\newbibmacro*{note+pages}{% + \printfield{note}% + \setunit{\bibpagespunct}% + \printfield{pages}% + \newunit} + +\newbibmacro*{isbn}{% + \ifcitation + {\iftoggle{cbx:isbn} + {\printfield{isbn}} + {}} + {\iftoggle{bbx:isbn} + {\printfield{isbn}} + {}}} + +\newbibmacro*{issn}{% + \ifcitation + {\iftoggle{cbx:isbn} + {\printfield{issn}} + {}} + {\iftoggle{bbx:isbn} + {\printfield{issn}} + {}}} + +\newbibmacro*{isrn}{% + \ifcitation + {\iftoggle{cbx:isbn} + {\printfield{isrn}} + {}} + {\iftoggle{bbx:isbn} + {\printfield{isrn}} + {}}} + +\newbibmacro*{doi+eprint+url+note}{% + \ifcitation + {\iftoggle{cbx:doi} + {\printfield{doi}} + {}} + {\iftoggle{bbx:doi} + {\printfield{doi}} + {}}% + \newunit\newblock + \ifcitation + {\iftoggle{cbx:eprint} + {\usebibmacro{eprint}} + {}} + {\iftoggle{bbx:eprint} + {\usebibmacro{eprint}} + {}}% + \newunit\newblock + \usebibmacro{url+urldate+note}} + +\newbibmacro*{addendum+pubstate}{% + \printfield{addendum}% + \newunit\newblock + \printfield{pubstate}} + +\renewbibmacro*{byeditorx}{% + \ifnameundef{editora} + {} + {\usebibmacro{byeditor+othersstrg}{editora}% + \setunit{\addspace}% + \printnames[byeditora]{editora}% + \setunit*{\resppunct}}% + \ifnameundef{editorb} + {} + {\usebibmacro{byeditor+othersstrg}{editorb}% + \setunit{\addspace}% + \printnames[byeditorb]{editorb}% + \setunit*{\resppunct}}% + \ifnameundef{editorc} + {} + {\usebibmacro{byeditor+othersstrg}{editorc}% + \setunit{\addspace}% + \printnames[byeditorc]{editorc}% + \setunit*{\resppunct}}} + +\newbibmacro*{book:byeditorx}{% + \ifnameundef{editora} + {} + {\usebibmacro{book:byeditor+othersstrg}{editora}% + \setunit{\addspace}% + \printnames[byeditora]{editora}% + \setunit*{\resppunct}}% + \ifnameundef{editorb} + {} + {\usebibmacro{book:byeditor+othersstrg}{editorb}% + \setunit{\addspace}% + \printnames[byeditorb]{editorb}% + \setunit*{\resppunct}}% + \ifnameundef{editorc} + {} + {\usebibmacro{book:byeditor+othersstrg}{editorc}% + \setunit{\addspace}% + \printnames[byeditorc]{editorc}% + \setunit*{\resppunct}}} + +% <field><true><false> +% checks if book<field> doesn't exist nor is equal to <field>, +% so that <field> should be printed +\newbibmacro*{checkbookfield}[3]{% + \ifboolexpr{ + test {\iffieldundef{book#1}} + or + not test {\iffieldsequal{#1}{book#1}} + } + {#2} + {#3}} + +% <name><true><false> +\newbibmacro*{checkbookname}[3]{% + \ifboolexpr{ + test {\ifnameundef{book#1}} + or + not test {\ifnamesequal{#1}{book#1}} + } + {#2} + {#3}} + +% <list><true><false> +\newbibmacro*{checkbooklist}[3]{% + \ifboolexpr{ + test {\iflistundef{book#1}} + or + not test {\iflistsequal{#1}{book#1}} + } + {#2} + {#3}} + +\newbibmacro*{credits}{% + \usebibmacro{checkbooklist}{credits} + {\printlist[semicolondelim]{credits}% + \savelist{credits}{\savedclearedcredits}% + \clearlist{credits}% + } + {}} + +\renewbibmacro*{byeditor+othersstrg}[1]{% + \iffieldundef{#1type} + {\def\abx@tempa{byeditor}} + {\edef\abx@tempa{by\thefield{#1type}}}% + \let\abx@tempb=\empty + \ifnamesequal{#1}{translator} + {\appto\abx@tempa{tr}% + \appto\abx@tempb{\savename{translator}{\savedclearedtranslator}\clearname{translator}}} + {}% + \ifnamesequal{#1}{commentator} + {\appto\abx@tempa{co}% + \appto\abx@tempb{\clearname{commentator}}} + {\ifnamesequal{#1}{annotator} + {\appto\abx@tempa{an}% + \appto\abx@tempb{\clearname{annotator}}} + {}}% + \ifnamesequal{#1}{introduction} + {\appto\abx@tempa{in}% + \appto\abx@tempb{\clearname{introduction}}} + {\ifnamesequal{#1}{foreword} + {\appto\abx@tempa{fo}% + \appto\abx@tempb{\clearname{foreword}}} + {\ifnamesequal{#1}{afterword} + {\appto\abx@tempa{af}% + \appto\abx@tempb{\clearname{afterword}}} + {}}}% + \ifbibxstring{\abx@tempa} + {\printtext{\bibstring{\abx@tempa}}\abx@tempb} + {\usebibmacro{bytypestrg}{#1}{editor}}} + +\renewbibmacro*{byeditor}{% + \ifnameundef{editor} + {} + {\usebibmacro{byeditor+othersstrg}{editor}% + \setunit{\addspace}% + \printnames[byeditor]{editor}% + \savename{editor}{\savedclearededitor}% + \clearname{editor}% + \setunit*{\resppunct}% + \usebibmacro{byeditorx}}} + +\renewbibmacro*{bytranslator+others}{% + \ifnameundef{translator} + {} + {\ifboolexpr{ + test {\ifnameundef{booktranslator}} + or + not test {\ifnamesequal{translator}{booktranslator}} + or + ( not test {\iffieldundef{origlanguage}} + and + test {\iffieldundef{bookoriglanguage}} + ) + or + ( test {\iffieldundef{origlanguage}} + and + not test {\iffieldundef{bookoriglanguage}} + ) + or + ( not test {\iffieldundef{origlanguage}} + and + not test {\iffieldundef{bookoriglanguage}} + and + not test {\iffieldsequal{origlanguage}{bookoriglanguage}} + ) + } + {\usebibmacro{bytranslator+othersstrg}% + \setunit*{\addspace}% + \printnames[bytranslator]{translator}% + \savename{translator}{\savedclearedtranslator}% + \clearname{translator}% + \setunit*{\resppunct}} + {}}% + \usebibmacro{withothers}} + +\renewbibmacro*{bytranslator+othersstrg}{% + \def\abx@tempa{bytranslator}% + \usebibmacro{checkbookname}{commentator} + {\ifnamesequal{translator}{commentator} + {\appto\abx@tempa{co}% + \clearname{commentator}} + {\usebibmacro{checkbookname}{annotator} + {\ifnamesequal{translator}{annotator} + {\appto\abx@tempa{an}% + \clearname{annotator}} + {}} + {}}}% + {}% + \usebibmacro{checkbookname}{introduction} + {\ifnamesequal{translator}{introduction} + {\appto\abx@tempa{in}% + \clearname{introduction}} + {\usebibmacro{checkbookname}{foreword} + {\ifnamesequal{translator}{foreword} + {\appto\abx@tempa{fo}% + \clearname{foreword}} + {\usebibmacro{checkbookname}{afterword} + {\ifnamesequal{translator}{afterword} + {\appto\abx@tempa{af}% + \clearname{afterword}} + {}} + {}}} + {}}}% + {}% + \bibstring{\abx@tempa}} + +\renewbibmacro*{withothers}{% + \usebibmacro{checkbookname}{commentator} + {\usebibmacro{withcommentator}% + \clearname{commentator}% + \setunit*{\resppunct}} + {}% + \usebibmacro{checkbookname}{annotator} + {\usebibmacro{withannotator}% + \clearname{annotator}% + \setunit*{\resppunct}} + {}% + \usebibmacro{checkbookname}{introduction} + {\usebibmacro{withintroduction}% + \clearname{introduction}% + \setunit*{\resppunct}} + {}% + \usebibmacro{checkbookname}{foreword} + {\usebibmacro{withforeword}% + \clearname{foreword}% + \setunit*{\resppunct}} + {}% + \usebibmacro{checkbookname}{afterword} + {\usebibmacro{withafterword}% + \clearname{afterword}} + {}} + +% book:... macros + +\newbibmacro*{book:credits}{% + \printlist[semicolondelim]{bookcredits}% + \clearlist{bookcredits}% +} + +\newbibmacro*{book:byeditor+othersstrg}[1]{% + \iffieldundef{#1type} + {\def\abx@tempa{byeditor}} + {\edef\abx@tempa{by\thefield{#1type}}}% + \let\abx@tempb=\empty + \ifnamesequal{#1}{booktranslator} + {\appto\abx@tempa{tr}% + \appto\abx@tempb{\clearname{booktranslator}}} + {}% + \ifnamesequal{#1}{bookcommentator} + {\appto\abx@tempa{co}% + \appto\abx@tempb{\clearname{bookcommentator}}} + {\ifnamesequal{#1}{bookannotator} + {\appto\abx@tempa{an}% + \appto\abx@tempb{\clearname{bookannotator}}} + {}}% + \ifnamesequal{#1}{bookintroduction} + {\appto\abx@tempa{in}% + \appto\abx@tempb{\clearname{bookintroduction}}} + {\ifnamesequal{#1}{bookforeword} + {\appto\abx@tempa{fo}% + \appto\abx@tempb{\clearname{bookforeword}}} + {\ifnamesequal{#1}{bookafterword} + {\appto\abx@tempa{af}% + \appto\abx@tempb{\clearname{bookafterword}}} + {}}}% + \ifbibxstring{\abx@tempa} + {\printtext{\bibstring{\abx@tempa}}\abx@tempb} + {\usebibmacro{bytypestrg}{#1}{editor}}} + +\newbibmacro*{book:byeditor}{% + \ifnameundef{editor} + {} + {\usebibmacro{book:byeditor+othersstrg}{editor}% + \setunit{\addspace}% + \printnames[byeditor]{editor}% + \savename{editor}{\savedclearededitor}% + \clearname{editor}% + \setunit*{\resppunct}% + \usebibmacro{book:byeditorx}}} + +\newbibmacro*{book:bytranslator+others}{% + \ifnameundef{booktranslator} + {} + {\usebibmacro{book:bytranslator+othersstrg}% + \setunit{\addspace}% + \printnames[bytranslator]{booktranslator}% + \clearname{booktranslator}% + \setunit*{\resppunct}}% + \usebibmacro{book:withothers}} + +\newbibmacro*{book:bytranslator+othersstrg}{% + \def\abx@tempa{bytranslator}% + \ifnamesequal{booktranslator}{bookcommentator} + {\appto\abx@tempa{co}% + \clearname{bookcommentator}} + {\ifnamesequal{booktranslator}{bookannotator} + {\appto\abx@tempa{an}% + \clearname{bookannotator}} + {}}% + \ifnamesequal{booktranslator}{bookintroduction} + {\appto\abx@tempa{in}% + \clearname{bookintroduction}} + {\ifnamesequal{booktranslator}{bookforeword} + {\appto\abx@tempa{fo}% + \clearname{bookforeword}} + {\ifnamesequal{booktranslator}{bookafterword} + {\appto\abx@tempa{af}% + \clearname{bookafterword}} + {}}}% + % temporarily redefining commands used in the bibstring + \savecommand\lbx@lfromlang% + \savecommand\lbx@sfromlang% + \renewcommand*{\lbx@lfromlang}{% + \iffielddundef{bookoriglanguage} + {\unspace} + {\biblstring{from\thefield{bookoriglanguage}}}} + \renewcommand*{\lbx@sfromlang}{% + \iffieldundef{bookoriglanguage} + {\unspace} + {\bibsstring{from\thefield{bookoriglanguage}}}} + \bibstring{\abx@tempa}% + \restorecommand\lbx@lfromlang% + \restorecommand\lbx@sfromlang% +} + +\newbibmacro*{book:withothers}{% + \usebibmacro{book:withcommentator}% + \clearname{bookcommentator}% + \setunit*{\resppunct}% + \usebibmacro{book:withannotator}% + \clearname{bookannotator}% + \setunit*{\resppunct}% + \usebibmacro{book:withintroduction}% + \clearname{bookintroduction}% + \setunit*{\resppunct}% + \usebibmacro{book:withforeword}% + \clearname{bookforeword}% + \setunit*{\resppunct}% + \usebibmacro{book:withafterword}% + \clearname{bookafterword}% +} + +\newbibmacro*{book:with+}[1]{% + \ifnameundef{book#1} + {} + {\bibstring{with#1}% + \setunit{\addspace}% + \printnames[with#1]{book#1}}} + +\newbibmacro*{book:withcommentator}{% + \usebibmacro{book:with+}{commentator}} + +\newbibmacro*{book:withannotator}{% + \usebibmacro{book:with+}{annotator}} + +\newbibmacro*{book:withintroduction}{% + \usebibmacro{book:with+}{introduction}} + +\newbibmacro*{book:withforeword}{% + \usebibmacro{book:with+}{foreword}} + +\newbibmacro*{book:withafterword}{% + \usebibmacro{book:with+}{afterword}} + +% jour:.. macros + +\newbibmacro*{jour:volume+parts+issuetitle}{% + \printfield{volume}% + \setunit*{\addcomma\space}% + \printfield{issue}% + \setunit*{\addcomma\space}% + \printfield{number}% + \iffieldundef{issuetitle} + {} + {\setunit{\addcolon\space}% + \printfield{issuetitle}}}% + +\newbibmacro*{jour:date}{% + \usebibmacro{year}% + \newunit\newblock + \mkbibdatelong{}{month}{day}% + \iffieldundef{endyear} + {} + {\bibdatedash% + \iffieldequalstr{endyear}{} + {\mbox{~~~~}} + {\printfield{endyear}% + \newunit\newblock + \mkbibdatelong{}{endmonth}{endday}}}% +} + +\def\blx@gost@volsinorder#1#2{% + \ifstrequal{#1}{v} + {\printfield{volume}% + \iffieldundef{volume}{}{\blx@gost@setunit}} + {\ifstrequal{#1}{b} + {\printfield{book}% + \iffieldundef{book}{}{\blx@gost@setunit}} + {\ifstrequal{#1}{p} + {\printfield{part}% + \iffieldundef{part}{}{\blx@gost@setunit}} + {\ifstrequal{#1}{i} + {\printfield{issue}% + \iffieldundef{issue}{}{\blx@gost@setunit}} + {}}}}% + \ifthenelse{\equal{#2}{\blx@gost@endofstring}}% end of string ? + {}% + {\stepcounter{blx@gost@pointer}% + \blx@gost@volsinorder#2}} + +\newbibmacro*{volume+parts}[1]{% + \iffieldundef{volsorder} + {\edef\gost@tempa{\blx@gost@defaultorder}} + {\edef\gost@tempa{\thefield{volsorder}}}% + \ifdefvoid{\gost@tempa} + {} + {\renewcommand*{\blx@gost@setunit}{#1}% + \setcounter{blx@gost@pointer}{1}% + \expandafter\blx@gost@volsinorder\gost@tempa\blx@gost@endofstring}} + +\newbibmacro*{year}{% + \printfield{year}} + +\renewbibmacro*{title}{% + \ifboolexpr{ + test {\iffieldundef{title}} + and + test {\iffieldundef{subtitle}} + } + {} + {\printtext[title]{% + \printfield[titlecase]{title}% + \iffieldundef{media} + {\setunit*{\subtitlepunct}} + {\setunit*{\addspace}% + \usebibmacro{media}% + \setunit*{\addcolondelim}}% + \printfield[titlecase]{subtitle}}% + \newunit}% + \setunit*{\addcolondelim}% + \printfield{titleaddon}% + \clearfield{media}} + +\renewbibmacro*{booktitle}{% + \ifboolexpr{ + test {\iffieldundef{booktitle}} + and + test {\iffieldundef{booksubtitle}} + } + {} + {\printtext[booktitle]{% + \printfield[titlecase]{booktitle}% + \setunit{\subtitlepunct}% + \printfield[titlecase]{booksubtitle}}% + \newunit}% + \setunit{\addcolondelim}% + \printfield{booktitleaddon}} + +\renewbibmacro*{maintitle}{% + \ifboolexpr{ + test {\iffieldundef{maintitle}} + and + test {\iffieldundef{mainsubtitle}} + } + {} + {\printtext[maintitle]{% + \printfield[titlecase]{maintitle}% + \iffieldundef{media} + {\setunit*{\subtitlepunct}} + {\setunit*{\addspace}% + \usebibmacro{media}% + \setunit*{\addcolondelim}} + \printfield[titlecase]{mainsubtitle}}% + \newunit}% + \setunit{\addcolondelim}% + \printfield{maintitleaddon}% + \clearfield{media}} + +\newbibmacro*{thesistitle}{% + \ifboolexpr{ + test {\iffieldundef{title}} + and + test {\iffieldundef{subtitle}} + } + {} + {\printtext[title]{% + \printfield[titlecase]{title}% + \iffieldundef{media} + {\setunit*{\subtitlepunct}} + {\setunit*{\addspace}% + \usebibmacro{media}% + \setunit*{\addcolondelim}}% + \printfield[titlecase]{subtitle}}% + \ifbibxstring{\thefield{type}} + {\bibstring{\thefield{type}}} + {\printfield{type}}% + \setunit*{\addspace}% + \printfield{major}% + \setunit*{\addcolondelim}% + \printfield{majorcode}}% + \setunit*{\addcolondelim}% + \printfield{titleaddon}% + \clearfield{media}} + +\newcommand*{\addcolondelim}{% + \begingroup% + \def\abx@colon{% + \ifdim\lastkern>\z@\unkern\fi% + \addnbspace\abx@puncthook{:}\space}% + \addcolon% + \endgroup} + +\newcommand*{\addsemicolondelim}{% + \begingroup% + \def\abx@semicolon{% + \ifdim\lastkern>\z@\unkern\fi% + \addnbspace\abx@puncthook{;}\space}% + \addsemicolon% + \endgroup} + +\def\blx@gost@involsinorder#1#2{% + \ifstrequal{#1}{v} + {\printfield{volumes}% + \blx@gost@setunit} + {\ifstrequal{#1}{b} + {\printfield{books}% + \blx@gost@setunit} + {\ifstrequal{#1}{p} + {\printfield{parts}% + \blx@gost@setunit} + {\ifstrequal{#1}{i} + {\printfield{issues}% + \blx@gost@setunit} + {}}}}% + \ifthenelse{\equal{#2}{\blx@gost@endofstring}}% end of string ? + {}% + {\stepcounter{blx@gost@pointer}% + \blx@gost@involsinorder#2}} + +\newbibmacro*{involumes+otherparts}[1]{% + \ifboolexpr{ + test {\iffieldundef{volumes}} + and + test {\iffieldundef{parts}} + and + test {\iffieldundef{books}} + and + test {\iffieldundef{issues}} + } + {} + {\iffieldundef{volsorder} + {\edef\gost@tempa{\blx@gost@defaultorder}} + {\edef\gost@tempa{\thefield{volsorder}}}% + \ifdefvoid{\gost@tempa} + {} + {\renewcommand*{\blx@gost@setunit}{#1}% + \setcounter{blx@gost@pointer}{1}% + \bibstring{involumes}% + \addabbrvspace% + \expandafter\blx@gost@involsinorder\gost@tempa\blx@gost@endofstring}}} + +\renewbibmacro*{byauthor}{% + \ifboolexpr{ + test \ifuseauthor + or + test {\ifnameundef{author}} + } + {} + {\printnames[byauthor]{author}}} + +\newbibmacro*{book:byauthor}{% + \ifboolexpr{ + test {\ifnameundef{bookauthor}} + or + test {\ifnamesequal{author}{bookauthor}} + } + {} + {\printnames[byauthor]{bookauthor}}} + +\renewbibmacro*{name:andothers}{% + \ifboolexpr{ + test {\ifnumequal{\value{listcount}}{\value{liststop}}} + and + test \ifmorenames + } + {\ifnumgreater{\value{liststop}}{1} + {\finalandcomma} + {}% + \andothersdelim\mkbibbrackets{\bibstring{andothers}}} + {}} + +\InitializeBibliographyStyle{% + \global\undef\bbx@lasthash} + +\newbool{bbx@inset} +\DeclareBibliographyDriver{set}{% + \booltrue{bbx@inset}% + \entryset{}{}% + \newunit\newblock + \usebibmacro{setpageref}% + \finentry} + +\renewbibmacro*{author}{% + \ifboolexpr{ + test \ifuseauthor + and + not test {\ifnameundef{author}} + } + {\usebibmacro{bbx:dashcheck} + {\bibnamedash} + {\printnames{author}% + \setunit{\addcomma\space}% + \usebibmacro{bbx:savehash}}% + \usebibmacro{authorstrg}} + {\global\undef\bbx@lasthash}} + +\renewbibmacro*{editor}{% + \usebibmacro{bbx:editor}{editorstrg}} +\renewbibmacro*{editor+others}{% + \usebibmacro{bbx:editor}{editor+othersstrg}} +\newbibmacro*{bbx:editor}[1]{% + \ifboolexpr{ + test \ifuseeditor + and + not test {\ifnameundef{editor}} + } + {\usebibmacro{bbx:dashcheck} + {\bibnamedash} + {\printnames{editor}% + \setunit{\addcomma\space}% + \usebibmacro{bbx:savehash}}% + \usebibmacro{#1}% + \savename{editor}{\savedclearededitor}% + \clearname{editor}} + {\global\undef\bbx@lasthash}} + +\renewbibmacro*{translator}{% + \usebibmacro{bbx:translator}{translatorstrg}} +\renewbibmacro*{translator+others}{% + \usebibmacro{bbx:translator}{translator+othersstrg}} +\newbibmacro*{bbx:translator}[1]{% + \ifboolexpr{ + test \ifusetranslator + and + not test {\ifnameundef{translator}} + } + {\usebibmacro{bbx:dashcheck} + {\bibnamedash} + {\printnames{translator}% + \setunit{\addcomma\space}% + \usebibmacro{bbx:savehash}}% + \usebibmacro{#1}% + \savename{translator}{\savedclearedtranslator}% + \clearname{translator}} + {\global\undef\bbx@lasthash}} + +\newbibmacro*{bbx:dashcheck}[2]{% + \ifboolexpr{ + test {\iffieldequals{fullhash}{\bbx@lasthash}} + and + not test \iffirstonpage + and + ( + not bool {bbx@inset} + or + test {\iffieldequalstr{entrysetcount}{1}} + ) + } + {#1} + {#2}} + +\newbibmacro*{url+urldate+note}{% + \ifcitation + {\iftoggle{cbx:url} + {\usebibmacro{url+urldate}} + {}} + {\iftoggle{bbx:url} + {\usebibmacro{url+urldate}} + {}}% + \setunit*{\addsemicolondelim}% + \printfield{note}} + +\gdef\ifmulticitation{% + \ifnum\c@multicitetotal>0 + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi} + +\newbibmacro*{media}{% + \iffieldundef{media} + {} + {{\ifdefvoid{\gostmedialanguage} + {} + {\select@medialanguage}% first switch language, then \ifbibxstring + \ifbibxstring{media\thefield{media}} + {\printtext[brackets]{\bibcpstring{media\thefield{media}}}} + {}}}} + +\newbibmacro*{priority}{% + \printprdate% + \setunit{\addcomma\space}% + \printfield{prnumber}% + \setunit{\addspace}% + \iffieldundef{prcountry} + {} + {\printtext[parens]{\printfield{prcountry}}}} + +\newbibmacro*{heading}{% + \printfield{heading}} + +% Related + +\newbibmacro{rel:common}{% + \usebibmacro{author}% + \setunit*{\labelnamepunct}% + \ifboolexpr{ + test {\ifentrytype{book}} + or + test {\ifentrytype{collection}} + or + test {\ifentrytype{proceedings}} + } + {\usebibmacro{maintitle+volumes+parts+title}% + \ifentrytype{proceedings} + {\newunit + \usebibmacro{event+venue+date}} + {}} + {\usebibmacro{title}}% + \ifentrytype{article} + {\usebibmacro{//}% + \usebibmacro{journal}} + {}% + \ifboolexpr{ + test {\ifentrytype{inbook}} + or + test {\ifentrytype{incollection}} + or + test {\ifentrytype{inproceedings}} + } + {\usebibmacro{//}% + \usebibmacro{maintitle+volumes+parts+booktitle}% + \ifentrytype{proceedings} + {\newunit + \usebibmacro{event+venue+date}} + {}} + {}% + \ifboolexpr{ + test {\ifentrytype{article}} + or + test {\ifentrytype{periodical}} + } + {\printlist{location}% + \setunit*{\addcomma\space}% + \usebibmacro{jour:date}% + \newunit\newblock + \usebibmacro{jour:volume+parts+issuetitle}% + \ifentrytype{article} + {\newunit\newblock + \printfield{pages}} + {}} + {\ifboolexpr{ + test {\ifentrytype{booklet}} + or + test {\ifentrytype{unpublished}} + } + {\newunit\newblock + \usebibmacro{location+date}% + \newunit\newblock} + {\newunit\newblock + \printlist{organization}% + \newunit + \usebibmacro{publisher+location+date}}% + \newunit\newblock + \usebibmacro{chapter+pages}}} + +\renewbibmacro*{related:default}[1]{% + \entrydata*{#1}{% + \usebibmacro{rel:common}% + \newunit\newblock}} + +\renewbibmacro*{related:bytranslator}[1]{% + \entrydata{#1}{% + \printnames[bytranslator]{translator}% + \clearname{translatror}% + \setunit*{\addcolon\space}% + \usebibmacro{rel:common}% + \newunit\newblock}} + +\renewbibmacro*{related:multivolume}[1]{% + \entrydata*{#1}{% + \usebibmacro{volume+parts}{\newunit}% + \setunit{\addcolondelim}% + \ifboolexpr{ + test {\ifnamesequal{author}{savedauthor}} + or + test {\ifnameundef{author}} + } + {} + {\usebibmacro{author}% + \setunit*{\labelnamepunct}}% + \usebibmacro{title}% + \setunit{\respdelim}% + \iflistsequal{credits}{savedcredits} + {} + {\usebibmacro{credits}}% + \setunit*{\resppunct}% + \ifnamesequal{editor}{savededitor} + {} + {\usebibmacro{byeditor}}% + \setunit*{\resppunct}% + \ifnamesequal{translator}{savedtranslator} + {} + {\usebibmacro{bytranslator+others}}% + \newunit\newblock + \usebibmacro{date}% + \newunit\newblock + \printfield{pagetotal}% + \usebibmacro{finentry}}} + +\renewbibmacro*{related:origpubin}[1]{% + \entrydata*{#1}{% + \printfield{year}% + \ifboolexpr{ + test {\iflistsequal{publisher}{savedpublisher}} + or + test {\iflistundef{publisher}} + } + {} + {\setunit{\addspace\bibstring{bypublisher}\space}% + \printlist{publisher}% + \setunit{\addcomma\space}% + \iflistsequal{location}{savedlocation} + {} + {\printlist{location}}}}} + +\renewbibmacro*{related:origpubas}[1]{% + \entrydata*{#1}{% + \usebibmacro{title}% + \ifboolexpr{ + test {\iflistsequal{publisher}{savedpublisher}} + or + test {\iflistundef{publisher}} + } + {} + {\setunit{\addspace\bibstring{bypublisher}\space}% + \printlist{publisher}% + \setunit{\addcomma\space}% + \iflistsequal{location}{savedlocation} + {} + {\printlist{location}}}}} + +\newcounter{bbx:relatedcount} +\newcounter{bbx:relatedtotal} + +\newbibmacro*{related}{% + \restorelist{credits}{\savedclearedcredits}% + \restorename{editor}{\savedclearededitor}% + \restorename{translator}{\savedclearedtranslator}% + \iffieldequalstr{relatedtype}{multivolume} + {\finentry} + {}% + \ifboolexpr{ + ( test {\ifcitation} + and + not test {\iftoggle{bbx:related:cite}} + ) + or + ( not test {\ifcitation} + and + not test {\iftoggle{bbx:related:bib}} + ) + or + test {\iffieldundef{related}} + } + {} + {\setcounter{bbx:relatedcount}{0}% + \setcounter{bbx:relatedtotal}{0}% + \def\do##1{\stepcounter{bbx:relatedtotal}}% + \docsvfield{related}% + \def\do{% + \stepcounter{bbx:relatedcount}% + \ifnumgreater{\value{bbx:relatedcount}}{1} + {\printtext{\relateddelim}} + {}}% + \ifbibmacroundef{related:\strfield{relatedtype}} + {\appto{\do}{\usebibmacro{related:default}}} + {\appto{\do}{\usebibmacro*{related:\strfield{relatedtype}}}}% + \iffieldformatundef{related:\strfield{relatedtype}} + {\def\bbx@tempa{related}} + {\def\bbx@tempa{related:\strfield{relatedtype}}}% + \iffieldformatundef{relatedstring:\strfield{relatedtype}} + {\def\bbx@tempb{relatedstring}} + {\def\bbx@tempb{relatedstring:\strfield{relatedtype}}}% + \printtext[\bbx@tempa]{% + \iffieldundef{relatedstring} + {\ifboolexpr{ + test {\ifnumgreater{\value{bbx:relatedtotal}}{1}} + and + test {\ifbibxstring{\thefield{relatedtype}s}} + } + {\printtext[\bbx@tempb]{\bibstring{\thefield{relatedtype}s}}} + {\iffieldbibstring{relatedtype} + {\printtext[\bbx@tempb]{\bibstring{\thefield{relatedtype}}}} + {}}} + {\iffieldbibstring{relatedstring} + {\printtext[\bbx@tempb]{\bibstring{\thefield{relatedstring}}}} + {\printfield[\bbx@tempb]{relatedstring}}}% + \docsvfield{related}}}} + +\newbibmacro*{setup:min}{% + \renewbibmacro*{series+number}{}% + \renewbibmacro*{credits}{}% + \renewbibmacro*{book:credits}{}% + \renewbibmacro*{byeditor}{}% + \renewbibmacro*{book:byeditor}{}% + \renewbibmacro*{bytranslator+others}{}% + \renewbibmacro*{book:bytranslator+others}{}% + \renewbibmacro*{media}{}% + \renewbibmacro*{priority}{}% + \clearfield{series}% + \clearfield{edition}% + \clearlist{credits}% + \clearlist{editioncredits}% + \clearlist{specdata}% + \clearfield{media}% + \clearfield{pagetotal}% + \clearfield{titleaddon}% + \clearfield{booktitleaddon}% + \clearfield{maintitleaddon}% + \clearfield{addendum}% + \clearfield{pubstate}% + \clearname{holder}% + \clearfield{publyear}% + \clearfield{publmonth}% + \clearfield{publday}% + \clearfield{reqnumber}% + \clearfield{publication}% + \clearfield{upyear}% + \clearfield{upmonth}% + \clearfield{upday}% + \clearfield{systemreq}% +} + +\DeclareAutoCiteCommand{footnote}{\smartcite}{\smartcites} +\DeclareAutoCiteCommand{superscript}{\supercite}{\supercites} + +\endinput |