diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/biblatex-contrib/biblatex-sbl/biblatex-sbl.def |
Initial commit
Diffstat (limited to 'macros/latex/contrib/biblatex-contrib/biblatex-sbl/biblatex-sbl.def')
-rw-r--r-- | macros/latex/contrib/biblatex-contrib/biblatex-sbl/biblatex-sbl.def | 2586 |
1 files changed, 2586 insertions, 0 deletions
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-sbl/biblatex-sbl.def b/macros/latex/contrib/biblatex-contrib/biblatex-sbl/biblatex-sbl.def new file mode 100644 index 0000000000..aa7301d280 --- /dev/null +++ b/macros/latex/contrib/biblatex-contrib/biblatex-sbl/biblatex-sbl.def @@ -0,0 +1,2586 @@ +\RequireBibliographyStyle{standard} +\RequireBiber[3] + +% BibLaTeX version 2018/03/04 v3.11 or greater required +\@ifpackagelater{biblatex}{2018/03/04} + {} + {\PackageError{biblatex-sbl} + {BibLaTeX v3.11 or greater is required} + {You need to update your TeX distribution to use biblatex-sbl.}} + +% Require xparse +\RequirePackage{xparse} + +% ------------------------------------------------------------------ +% VERSION STRINGS +% ------------------------------------------------------------------ + +\def\sbl@abx@date{2018/12/13} +\def\sbl@abx@version{0.11} +\def\sbl@abx@bbxid{\sbl@abx@date\space v\sbl@abx@version\space biblatex-sbl bibliography style (DCP)} +\def\sbl@abx@cbxid{\sbl@abx@date\space v\sbl@abx@version\space biblatex-sbl citation style (DCP)} +\def\sbl@abx@lbxid{\sbl@abx@date\space v\sbl@abx@version\space biblatex-sbl localization (DCP)} +\def\sbl@abx@defid{\sbl@abx@date\space v\sbl@abx@version\space biblatex-sbl definitions and macros (DCP)} + +\def\printsblversion{\sbl@abx@version\space + \expandafter\xprintsbldateiso\sbl@abx@date\relax} +\def\printsbldate{\expandafter\xprintsbldateau\sbl@abx@date\relax} +\def\xprintsbldateiso#1/#2/#3\relax{% + #1-% + \ifblank{#2} + {\kern 1pt-} + {#2-#3}} +\def\xprintsbldateau#1/#2/#3\relax{% + \ifblank{#2} + {} + {\ifblank{#3} + {} + {\ifcase#3 \or + 1\or 2\or 3\or 4\or 5\or 6\or 7\or 8\or 9\else#3\fi\space}% + \ifcase#2 \or + January\or February\or March\or April\or May\or June\or July\or + August\or September\or October\or November\or December\fi\space}% + #1} + +\ProvidesFile{biblatex-sbl.def}[\sbl@abx@defid] + +% ------------------------------------------------------------------ +% CITEPAGES OPTION +% ------------------------------------------------------------------ + +\DeclareRangeChars{~,;-+/:} + +\NumCheckSetup{\def\mkbibparens#1{#1}} + +\renewbibmacro*{postnote}{} +\newbibmacro*{pages}{} + +\DeclareBibliographyOption[string]{citepages}[permit]{% + \ifcsdef{cbx@opt@citepages@#1} + {\csuse{cbx@opt@citepages@#1}} + {\PackageError{biblatex} + {Invalid option 'citepages=#1'} + {Valid values are 'sbl', 'permit', 'omit', 'separate'.}}} + +\providebibmacro*{postnote}{} +\providebibmacro*{pages}{} + +\def\cbx@opt@citepages@sbl{% + \renewbibmacro*{pages}{% + \iffieldundef{pages} + {\ifbool{bbx@inset} + {} + {\printfield{postnote}% + \global\booltrue{suppresspostnote}}} + {\printfield{pages}% + \ifboolexpr{ + test {\iffieldundef{postnote}} + or + bool {bbx@inset} + } + {} + {\iffieldpages{postnote} + {} + {\setunit{\addspace}% + \printtext[parens]{\printfield{postnote}}}}}}% + \renewbibmacro*{postnote}{% + \iffieldundef{postnote} + {\printfield{pages}} + {\iffieldpages{postnote} + {\printfield{postnote}} + {\iffieldundef{pages} + {\printfield{postnote}} + {\printfield{pages}% + \setunit{\addspace}% + \printtext[parens]{\printfield{postnote}}}}}}} + +\def\cbx@opt@citepages@permit{% + \renewbibmacro*{pages}{% + \iffieldundef{pages} + {\ifbool{bbx@inset} + {} + {\printfield{postnote}% + \global\booltrue{suppresspostnote}}} + {\printfield{pages}% + \ifboolexpr{ + test {\iffieldundef{postnote}} + or + bool {bbx@inset} + } + {} + {\setunit{\addspace}% + \printtext[parens]{\printfield{postnote}}}}}% + \renewbibmacro*{postnote}{% + \iffieldundef{postnote} + {\printfield{pages}} + {\iffieldpages{postnote} + {\printfield{postnote}} + {\iffieldundef{pages} + {\newunit + \printfield{postnote}} + {\printfield{pages}% + \setunit*{\addspace}% + \printtext[parens]{\printfield{postnote}}}}}}} + +\def\cbx@opt@citepages@omit{% + \renewbibmacro*{pages}{% + \iffieldundef{pages} + {\ifbool{bbx@inset} + {} + {\printfield{postnote}% + \global\booltrue{suppresspostnote}}} + {\ifboolexpr{ + test {\iffieldundef{postnote}} + or + bool {bbx@inset} + } + {\printfield{pages}} + {\iffieldpages{postnote} + {\printfield{postnote}} + {\printfield{pages}% + \setunit*{\addspace}% + \printtext[parens]{\printfield{postnote}}}}}}% + \renewbibmacro*{postnote}{% + \iffieldundef{postnote} + {\printfield{pages}} + {\iffieldpages{postnote} + {\printfield{postnote}} + {\iffieldundef{pages} + {\newunit + \printfield{postnote}} + {\printfield{pages}% + \setunit*{\addspace}% + \printtext[parens]{\printfield{postnote}}}}}}} + +\def\cbx@opt@citepages@separate{% + \renewbibmacro*{pages}{% + \iffieldundef{pages} + {\ifool{bx@inset} + {} + {\printfield{postnote}% + \global\booltrue{suppresspostnote}}} + {\printfield{pages}% + \ifboolexpr{ + test {\iffieldundef{postnote}} + or + bool {bbx@inset} + } + {} + {\setunit{\addspace}% + \printtext[parens]{% + \iffieldpages{postnote} + {\bibstring{thiscite}% + \setunit{\addspace}} + {}% + \printfield{postnote}}}}}% + \renewbibmacro*{postnote}{% + \iffieldundef{postnote} + {\printfield{pages}} + {\iffieldpages{postnote} + {\printfield{postnote}} + {\iffieldundef{pages} + {\printfield{postnote}} + {\printfield{pages}% + \setunit*{\addspace}% + \printtext[parens]{% + \iffieldpages{postnote} + {\bibstring{thiscite}% + \setunit{\addspace}} + {}% + \printfield{postnote}}}}}}} + +% ------------------------------------------------------------------ +% IDEM MACROS +% ------------------------------------------------------------------ + +\newbibmacro*{ifidemused}{% + \ifboolexpr{ + test {\ifciteidem} + and + not test {\iffirstonpage} + } + {\bibstring[\mkibid]{idem\thefield{gender}}% + \@firstoftwo} + {\@secondoftwo}} + +% ------------------------------------------------------------------ +% COMMENTARY OPTIONS +% ------------------------------------------------------------------ + +\newtoggle{fullbibrefs} + +\DeclareBibliographyOption{fullbibrefs}[true]{% + \ifstrequal{#1}{true} + {\toggletrue{fullbibrefs}} + {\togglefalse{fullbibrefs}}} + +% ------------------------------------------------------------------ +% ENTRY OPTIONS +% ------------------------------------------------------------------ + +\newtoggle{blx@skipbiblistseries} +\newtoggle{blx@skipbiblistshorthand} +\newtoggle{blx@usefullcite} +\newtoggle{blx@usevolume} +\newtoggle{blx@useseries} +\newtoggle{blx@useshorttitle} +\newtoggle{blx@accessdate} +\def\blx@shorthand{} + +\DeclareTypeOption{skipbiblistseries}[true]{% + \settoggle{blx@skipbiblistseries}{#1}} +\DeclareEntryOption{skipbiblistseries}[true]{% + \settoggle{blx@skipbiblistseries}{#1}} + +\DeclareTypeOption{skipbiblistshorthand}[true]{% + \settoggle{blx@skipbiblistshorthand}{#1}} +\DeclareEntryOption{skipbiblistshorthand}[true]{% + \settoggle{blx@skipbiblistshorthand}{#1}} + +\DeclareBibliographyOption{useshorttitle}[true]{% + \settoggle{blx@useshorttitle}{#1}} +\DeclareTypeOption{useshorttitle}[true]{% + \settoggle{blx@useshorttitle}{#1}} +\DeclareEntryOption{useshorttitle}[true]{% + \settoggle{blx@useshorttitle}{#1}} + +\DeclareBibliographyOption{usefullcite}[true]{% + \settoggle{blx@usefullcite}{#1}} +\DeclareTypeOption{usefullcite}[true]{% + \settoggle{blx@usefullcite}{#1}} +\DeclareEntryOption{usefullcite}[true]{% + \settoggle{blx@usefullcite}{#1}} + +\DeclareBibliographyOption{usevolume}[true]{% + \settoggle{blx@usevolume}{#1}} +\DeclareTypeOption{usevolume}[true]{% + \settoggle{blx@usevolume}{#1}} +\DeclareEntryOption{usevolume}[true]{% + \settoggle{blx@usevolume}{#1}} + +\DeclareBibliographyOption{useseries}[true]{% + \settoggle{blx@useseries}{#1}} +\DeclareTypeOption{useseries}[true]{% + \settoggle{blx@useseries}{#1}} +\DeclareEntryOption{useseries}[true]{% + \settoggle{blx@useseries}{#1}} + +\DeclareBibliographyOption{accessdate}[true]{% + \settoggle{blx@accessdate}{#1}} +\DeclareTypeOption{accessdate}[true]{% + \settoggle{blx@accessdate}{#1}} +\DeclareEntryOption{accessdate}[true]{% + \settoggle{blx@accessdate}{#1}} + +\DeclareBibliographyOption[string]{shorthand}[true]{% + \def\blx@shorthand{#1}} +\DeclareTypeOption[string]{shorthand}[true]{% + \def\blx@shorthand{#1}} +\DeclareEntryOption[string]{shorthand}[true]{% + \def\blx@shorthand{#1}} + +% ------------------------------------------------------------------ +% STYLE OPTIONS +% ------------------------------------------------------------------ + +% footnote style +\let\orig@makefntext\@makefntext +\DeclareBibliographyOption{sblfootnotes}[true]{% + \ifstrequal{#1}{true} + {\@ifpackageloaded{footmisc} + {\renewcommand\@makefntext[1]{% + \parindent\footnotemargin% + \@thefnmark.\@\space + \footnotelayout + ##1}} + {\renewcommand\@makefntext[1]{% + \parindent 1em% + \@thefnmark.\@\space + ##1}}} + {\let\@makefntext\orig@makefntext}} + +\DeclareBibliographyOption{ibidpage}[true]{% + \ifstrequal{#1}{true} + {\ExecuteBibliographyOptions{loccittracker=true}} + {\ExecuteBibliographyOptions{loccittracker=false}}} + +\newtoggle{blx@dashed} +\DeclareBibliographyOption{dashed}[true]{% + \settoggle{blx@dashed}{#1}} + +\ExecuteBibliographyOptions{% + citetracker, + punctfont, + alldates=comp, + eprintdate=comp, + dateabbrev=false, + autocite=footnote, + url, + related, + minxrefs=1, + isbn=false, + pagetracker, + idemtracker=constrict, + ibidtracker=constrict, + ibidpage=false, + maxbibnames=99, + maxcitenames=3, + citepages=sbl, + fullbibrefs=false, + sblfootnotes, + usefullcite, + useshorttitle, + usevolume, + useseries, + accessdate=false, + shorthand=true, + dashed=true, + language=american +} + +\ExecuteBibliographyOptions[classictext,ancienttext]{% + skipbib +} + +\ExecuteBibliographyOptions[inlexicon]{% + skipbib +} + +\urlstyle{same} +\def\UrlBreaks{\do\@\do\\\do\/\do\!\do\_\do\|\do\;\do\>\do\]% + \do\)\do\,\do\?\do\'\do+\do\=\do\#}% +\def\UrlSpecials{\do\.{\penalty\UrlBreakPenalty\mathchar`.}% + \do\-{\penalty\UrlBreakPenalty\mathchar`-}% + \do\ {\Url@space}\do\%{\Url@percent}\do\^^M{\Url@space}% + \Url@force@Tilde}% package option may force faked text-ascii-tilde + +\NewBibliographyString{by} +\NewBibliographyString{to} +\NewBibliographyString{of} +\NewBibliographyString{with} +\NewBibliographyString{withassistance} +\NewBibliographyString{withpreface} +\NewBibliographyString{paperpresented} +\NewBibliographyString{patentfiled} +\NewBibliographyString{released} + +\DeclareLanguageMappingSuffix{-sbl} + +% Ensure right colon punctuation when reset +\protected\def\blx@resetpunct{% + \DeclareCapitalPunctuation{.!?}% + \DeclarePunctuationPairs{dot}{}% + \DeclarePunctuationPairs{comma}{*!?}% + \DeclarePunctuationPairs{semicolon}{*!?}% + \DeclarePunctuationPairs{colon}{*}% + \DeclarePunctuationPairs{period}{}% + \DeclarePunctuationPairs{exclam}{*}% + \DeclarePunctuationPairs{question}{*}% + \DeclareQuotePunctuation{}% + \def\abx@dot{\ifdim\lastkern>\z@\unkern\fi.\spacefactor\blx@sf@dot}% + \def\abx@comma{\ifdim\lastkern>\z@\unkern\fi\abx@puncthook{,}}% + \def\abx@semicolon{\abx@puncthook{;}}% + \def\abx@colon{\abx@puncthook{:}}% + \def\abx@period{\ifdim\lastkern>\z@\unkern\fi\abx@puncthook{.}}% + \def\abx@exclam{\abx@puncthook{!}}% + \def\abx@question{\abx@puncthook{?}}% + \global\let\abx@puncthook\@firstofone + \global\let\blx@postpunct\@empty} + +\renewcommand*{\subtitlepunct}{\addcolon\space} +\newcommand*{\namedashpunct}{\adddot\space} +\newcommand*{\lexiconfinalnamedelim}{\addcomma\space} +\renewcommand*{\relateddelim}{\addsemicolon\space} +\renewcommand*{\begrelateddelim}{\addsemicolon\space} + +\setcounter{mincompwidth}{10} + +\DeclareFieldFormat{doi}{% + \printtext{doi}\addcolon + \ifhyperref + {\href{https://dx.doi.org/#1}{\nolinkurl{#1}}} + {\nolinkurl{#1}}} +\DeclareFieldFormat{edition}{% + \ifinteger{#1} + {\mkbibordedition{#1}~\bibsstring{edition}} + {\ifcapital{\MakeCapital{#1}}{#1}\isdot}} +\DeclareFieldFormat{eprint:ebook}{#1 \biblstring{edition}} +\DeclareFieldFormat{eprint}{% + \iffieldundef{eprinttype} + {eprint} + {\thefield{eprinttype}}% + \newunitpunct + \usebibmacro{eprintdate}% + \newunitpunct + \ifhyperref + {\url{#1}} + {\nolinkurl{#1}}% + \iffieldundef{eprintclass} + {} + {\addspace\mkbibparens{\thefield{eprintclass}}}} +\DeclareFieldFormat{eprint:arxiv}{% + \usebibmacro{eprintdate}% + \newunitpunct + arXiv\addcolon\space + \ifhyperref + {\href{https://arxiv.org/\abx@arxivpath/#1}{% + \nolinkurl{#1}% + \iffieldundef{eprintclass} + {} + {\addspace\mkbibbrackets{\thefield{eprintclass}}}}} + {\nolinkurl{#1} + \iffieldundef{eprintclass} + {} + {\addspace\mkbibbrackets{\thefield{eprintclass}}}}} +\DeclareFieldFormat{eprint:hethiter}{% + \usebibmacro{eprintdate}% + \newunitpunct + \printtext{doi}\addcolon + \ifhyperref + {\href{http://hethiter.net/:\%20#1}{% + hethiter\slash\addcolon\space + \nolinkurl{#1}% + \iffieldundef{eprintclass} + {} + {\addspace\mkbibparens{\thefield{eprintclass}}}}} + {hethiter\slash\addcolon\space + \nolinkurl{#1} + \iffieldundef{eprintclass} + {} + {\addspace\mkbibparens{\thefield{eprintclass}}}}} +\renewcommand*{\volcitedelim}{\addcolon} +\DeclareFieldFormat{volcitevolume}{#1} +\DeclareFieldFormat{volcitepages}{\mkcomprange{#1}} +\DeclareFieldFormat{part}{#1} +\DeclareFieldFormat{pt}{\bibstring{part}~#1} +\DeclareFieldFormat{postnote}{\mkcomprange{#1}} +\DeclareFieldFormat{multipostnote}{#1} +\DeclareFieldFormat{byauthor}{\bibstring{byauthor} #1} +\DeclareFieldFormat{revdtitle}{\biblstring{reviewof} \mkbibemph{#1}} +\DeclareFieldFormat{revdshorttitle}{\biblstring{reviewof} \mkbibemph{#1}} +\DeclareFieldFormat{shorttitle}{\mkbibemph{#1}} +\DeclareFieldFormat{shortbooktitle}{\mkbibemph{#1}} +\DeclareFieldFormat{shortmaintitle}{\mkbibemph{#1}} +\DeclareFieldFormat{shortjournal}{\mkbibemph{#1}} +\DeclareFieldFormat{journalsubtitle}{\mkbibemph{#1}} +\DeclareFieldFormat{seriesseries}{#1} +\DeclareFieldFormat[article,periodical,review]{series}{% series of a journal + \ifinteger{#1} + {\mkbibordseries{#1}~\bibstring{jourser}} + {\ifbibstring{#1}{\bibstring{#1}}{#1}}} +\DeclareFieldFormat{isbn}{ISBN\addcolon\space #1} +\DeclareFieldFormat{isrn}{ISRN\addcolon\space #1} +\DeclareFieldFormat{issn}{ISSN\addcolon\space #1} +\DeclareFieldFormat{pages}{\mkcomprange{#1}} +\DeclareFieldFormat{pagepages}{\mkcomprange[\mkpageprefix]{#1}} +\DeclareFieldFormat{pagesin}{\mkcomprange[\mkpageprefix]{#1} \usebibmacro{in}} +\DeclareFieldFormat{chapter}{\bibsstring{chapter}~#1} +\DeclareFieldFormat{chapterin}{\bibsstring{chapter}~#1 \usebibmacro{in}} +\DeclareFieldFormat{volume}{#1} +\DeclareFieldFormat{vol}{\bibsstring{volume}~#1} +\DeclareFieldFormat{volumeof}{\bibsstring{volume}~#1 \bibstring{of}} +\DeclareFieldFormat{volumes}{#1\ifnumeral{#1}{~\bibsstring{volumes}}{}} +\DeclareFieldFormat{partof}{\bibstring{part}~#1 \bibstring{of}} +\DeclareFieldFormat{no}{\bibsstring{number}~#1} +\DeclareFieldFormat{url}{\url{#1}} +\DeclareFieldFormat{urldate}{\bibstring{urlseen}\space#1} +\DeclareFieldFormat{eprintdate}{\bibstring{released}\space#1} + +\DeclareFieldFormat{editortype}{\ifcapital{\MakeCapital{#1}}{#1}} +\DeclareFieldFormat{withauthortype}{#1} +\DeclareFieldFormat{witheditortype}{#1} +\DeclareFieldFormat{withtranslatortype}{#1} +\DeclareFieldFormat{withbookauthortype}{#1} +\DeclareFieldFormat{withbookeditortype}{#1} +\DeclareFieldFormat{withbooktranslatortype}{#1} +\DeclareFieldFormat{withmainauthortype}{#1} +\DeclareFieldFormat{withmaineditortype}{#1} +\DeclareFieldFormat{withmaintranslatortype}{#1} + +\DeclareFieldFormat{cptype}{\ifbibstring{#1}{\bibcpstring{#1}}{#1}} +\DeclareFieldFormat{quote}{\mkbibquote{#1}} + +\DeclareNameAlias{withauthor}{given-family} +\DeclareNameAlias{witheditor}{given-family} +\DeclareNameAlias{withtranslator}{given-family} +\DeclareNameAlias{withbookauthor}{given-family} +\DeclareNameAlias{withbookeditor}{given-family} +\DeclareNameAlias{withbooktranslator}{given-family} +\DeclareNameAlias{withmainauthor}{given-family} +\DeclareNameAlias{withmaineditor}{given-family} +\DeclareNameAlias{withmaintranslator}{given-family} + +\DeclareFieldFormat{relatedstring:reprint}{#1\printunit{\addcomma\space}} + +\DeclareFieldFormat[incommentary,inreference,inlexicon,online,review,seminarpaper,conferencepaper]{title}{\mkbibquote{#1}} +\DeclareFieldFormat[incommentary,inreference,inlexicon,online,review,seminarpaper,conferencepaper]{shorttitle}{\mkbibquote{#1}} +\DeclareFieldFormat[suppperiodical]{title}{\mkbibquote{#1}} +\DeclareFieldFormat{issuetitle}{\mkbibquote{#1}} +\DeclareFieldFormat{issuesubtitle}{\mkbibquote{#1}} +\DeclareFieldFormat{shortissuetitle}{\mkbibquote{#1}} +\DeclareFieldFormat{howpublished}{\ifbibstring{#1}{\bibstring{#1}}{#1}} +\DeclareFieldFormat[patent]{title}{#1} +\DeclareFieldFormat[ancienttext]{title}{% + \ifboolexpr{ + test {\iffieldequalstr{entrysubtype}{inscription}} + or + test {\iffieldequalstr{entrysubtype}{chronicle}} + } + {#1} + {\iffieldequalstr{entrysubtype}{churchfather} + {\mkbibemph{#1}} + {\mkbibquote{#1}}}} +\DeclareFieldFormat[ancienttext]{shorttitle}{% + \ifboolexpr{ + test {\iffieldequalstr{entrysubtype}{inscription}} + or + test {\iffieldequalstr{entrysubtype}{chronicle}} + } + {#1} + {\iffieldequalstr{entrysubtype}{churchfather} + {\mkbibemph{#1}} + {\mkbibquote{#1}}}} +\DeclareFieldFormat[series]{title}{#1} +\DeclareFieldFormat[series]{shorttitle}{#1} +\DeclareFieldFormat[suppbook,suppcollection] +{type}{% + \ifbibstring{#1}% + {\bibstring{#1}}% + {\ifcapital% + {\MakeCapital{#1\isdot}}% + {#1\isdot}}} +\DeclareFieldFormat[suppbook,suppcollection]{title}{% + \iffieldundef{type} + {#1} + {\mkbibemph{#1}}} +\DeclareFieldFormat[suppbook,suppcollection]{subtitle}{% + \iffieldundef{type} + {#1} + {\mkbibemph{#1}}} +\DeclareFieldFormat[suppbook,suppcollection]{shorttitle}{% + \iffieldundef{type} + {#1} + {\mkbibemph{#1}}} + +\DeclareBibliographyAlias{cite:mvbook}{cite:book} +\DeclareBibliographyAlias{cite:mvcollection}{cite:collection} +\DeclareBibliographyAlias{collection}{book} +\DeclareBibliographyAlias{mvcollection}{collection} +\DeclareBibliographyAlias{cite:collection}{cite:book} +\DeclareBibliographyAlias{mvreference}{mvbook} +\DeclareBibliographyAlias{cite:mvreference}{cite:mvbook} +\DeclareBibliographyAlias{reference}{book} +\DeclareBibliographyAlias{cite:reference}{cite:book} +\DeclareBibliographyAlias{lexicon}{reference} +\DeclareBibliographyAlias{cite:lexicon}{cite:reference} +\DeclareBibliographyAlias{mvlexicon}{mvreference} +\DeclareBibliographyAlias{cite:mvlexicon}{cite:mvreference} +\DeclareBibliographyAlias{inbook}{incollection} +\DeclareBibliographyAlias{cite:inbook}{cite:incollection} +\DeclareBibliographyAlias{commentary}{book} +\DeclareBibliographyAlias{mvcommentary}{book} +\DeclareBibliographyAlias{cite:mvcommentary}{cite:mvbook} +\DeclareBibliographyAlias{seminarpaper}{incollection} +\DeclareBibliographyAlias{cite:seminarpaper}{cite:incollection} +\DeclareBibliographyAlias{cite:online}{cite:article} +\DeclareBibliographyAlias{online}{article} +\DeclareBibliographyAlias{cite:manual}{cite:book} +\DeclareBibliographyAlias{manual}{book} +\DeclareBibliographyAlias{cite:unpublished}{cite:misc} +\DeclareBibliographyAlias{unpublished}{misc} +\DeclareBibliographyAlias{proceedings}{collection} +\DeclareBibliographyAlias{mvproceedings}{mvcollection} +\DeclareBibliographyAlias{inproceedings}{incollection} +\DeclareBibliographyAlias{cite:proceedings}{cite:collection} +\DeclareBibliographyAlias{cite:mvproceedings}{cite:mvcollection} +\DeclareBibliographyAlias{cite:inproceedings}{cite:incollection} +\DeclareBibliographyAlias{bookinbook}{incollection} +\DeclareBibliographyAlias{cite:bookinbook}{cite:incollection} +\DeclareBibliographyAlias{series}{mvcollection} +\DeclareBibliographyAlias{cite:series}{cite:mvcollection} +\DeclareBibliographyAlias{cite:booklet}{cite:book} +\DeclareBibliographyAlias{booklet}{book} +\DeclareBibliographyAlias{cite:suppcollection}{cite:suppbook} +\DeclareBibliographyAlias{suppcollection}{suppbook} +\DeclareBibliographyAlias{cite:report}{cite:book} +\DeclareBibliographyAlias{report}{book} +\DeclareBibliographyAlias{cite:suppperiodical}{cite:article} +\DeclareBibliographyAlias{suppperiodical}{article} + +\DeclareLabeldate{% + \field{eprintdate} +} + +\renewcommand*{\newunitpunct}{\addcomma\space} +\newcommand*{\volpostnotedelim}{\addcolon} + +\providecommand*{\mkibid}[1]{#1} + +\renewbibmacro*{name:family-given}[4]{% + \ifuseprefix + {\usebibmacro{name:delim}{#3#1}% + \usebibmacro{name:hook}{#3#1}% + \ifdefvoid{#3}{}{% + \ifcapital + {\mkbibnameprefix{\MakeCapital{#3}}\isdot} + {\mkbibnameprefix{#3}\isdot}% + \ifprefchar{}{\bibnamedelimc}}% + \mkbibnamefamily{#1}\isdot + \ifdefvoid{#2}{}{\revsdnamepunct\bibnamedelimd\mkbibnamegiven{#2}\isdot}% + \ifdefvoid{#4}{}{\revsdnamepunct\bibnamedelimd\mkbibnamesuffix{#4}\isdot}} + {\usebibmacro{name:delim}{#1}% + \usebibmacro{name:hook}{#1}% + \mkbibnamefamily{#1}\isdot + \ifboolexpe{% + test {\ifdefvoid{#2}} + and + test {\ifdefvoid{#3}}} + {} + {\revsdnamepunct}% + \ifdefvoid{#2}{}{\bibnamedelimd\mkbibnamegiven{#2}\isdot}% + \ifdefvoid{#3}{}{\bibnamedelimd\mkbibnameprefix{#3}\isdot}% + \ifdefvoid{#4}{}{\revsdnamepunct\bibnamedelimd\mkbibnamesuffix{#4}\isdot}}} + +% ------------------------------------------------------------------ +% BIBLIOGRAPHY +% ------------------------------------------------------------------ + +\renewrobustcmd*{\printbibliography}{% + \begingroup + \blx@key@bibcheck{bibliography} + \edef\on@line{\on@line}% + \@ifnextchar[%] + {\blx@printbibliography} + {\blx@printbibliography[]}} +\defbibcheck{bibliography}{% + \blx@skipentries + \blx@includeentries +} +\def\blx@skipentries{} +\def\blx@includeentries{} +\def\addskipentry#1{% + \edef\X{% + \noexpand\iffieldequalstr{entrykey}{#1} + {\noexpand\toggletrue{blx@skipentry}} + {}}% + \expandafter\g@addto@macro\expandafter\blx@skipentries\expandafter{\X}} +\def\addincludeentry#1{% + \edef\X{% + \noexpand\iffieldequalstr{entrykey}{#1} + {\noexpand\togglefalse{blx@skipentry}} + {}}% + \expandafter\g@addto@macro\expandafter\blx@includeentries\expandafter{\X}} + +% ------------------------------------------------------------------ +% LIST OF ABBREVIATIONS +% ------------------------------------------------------------------ + +\newtoggle{blx@abbrevcite} + +\newlength{\abbrevwidth} + +\def\setmaxlength#1#2{% + \ifdim\dimexpr#2>\dimexpr#1 + \global\setlength{#1}{#2}% + \fi +} + +\defbibenvironment{abbreviations} + {\list + {\printfield[shorthandwidth]{shortjournal}% + \iffieldundef{shorthand} + {\printfield[shorthandwidth]{shortseries}} + {\iffieldsequal{shorthand}{shorttitle} + {\printtext{\mkbibemph{\printfield[shorthandwidth]{shorthand}}}} + {\printfield[shorthandwidth]{shorthand}}}} + {\setmaxlength{\abbrevwidth}{\shorthandwidth}% + \setmaxlength{\abbrevwidth}{\shortserieswidth}% + \setmaxlength{\abbrevwidth}{\shortjournalwidth}% + \addtolength{\abbrevwidth}{\biblabelsep}% + \setlength{\labelwidth}{\abbrevwidth}% + \setlength{\leftmargin}{\labelwidth}% + \setlength{\labelsep}{0pt}% + \addtolength{\leftmargin}{\labelsep}% + \setlength{\itemsep}{\bibitemsep}% + \setlength{\parsep}{\bibparsep}% + \renewcommand*{\makelabel}[1]{##1\hss}}} + {\endlist} + {\item} + +\DeclareBibliographyDriver{abbreviations}{% + \usebibmacro{begentry}% + \citereset + \def\abx@str{abx@lstr}% + \renewcommand*{\finentrypunct}{}% + \iffieldundef{shortjournal} + {} + {\bibhypertarget{\strfield{shortjournal}}{}% + \printfield{journaltitle}% + \iffieldundef{journalsubtitle} + {} + {\setunit{\subtitlepunct}% + \printfield{journalsubtitle}}}% + \iffieldundef{shorthand} + {\iffieldundef{shortseries} + {} + {\bibhypertarget{\strfield{shortseries}}{}% + \printfield{series}}} + {\bibhypertarget{\strfield{shorthand}}{}% + \iffieldsequal{shorthand}{shorttitle} + {\toggletrue{blx@abbrevcite}} + {}% + \usebibmacro{bibentrycite}}% + \usebibmacro{finentry}} + +\DeclareBiblistFilter{abbreviations}{ + \filteror{ + \filter[type=field,filter=shorthand] + \filter[type=field,filter=shortjournal] + \filter[type=field,filter=shortseries] + } +} + +\defbibcheck{abbreviations}{% + \blx@setoptions@entry + \iftoggle{blx@skipbiblist}{\skipentry}{}% + \iffieldundef{shorthand} + {\iffieldundef{shortseries} + {} + {\iftoggle{blx@skipbiblistseries}{\skipentry}{}}} + {\iftoggle{blx@skipbiblistshorthand}{\skipentry}{}}% + \iftoggle{blx@skipentry} + {} + {\iffieldundef{shortjournal} + {} + {\ifcsdef{sbl\therefsection\strfield{shortjournal}=\strfield{journaltitle}} + {\skipentry} + {\savefieldcs{journaltitle}{sbl\therefsection\strfield{shortjournal}=\strfield{journaltitle}}}}% + \iffieldundef{shorthand} + {\iffieldundef{shortseries} + {} + {\ifcsdef{sbl\therefsection\strfield{shortseries}=\strfield{series}} + {\skipentry} + {\savefieldcs{series}{sbl\therefsection\strfield{shortseries}=\strfield{series}}}}} + {\ifcsdef{sbl\therefsection\strfield{shorthand}=\strfield{title}} + {\skipentry} + {\savefieldcs{shorthand}{sbl\therefsection\strfield{shorthand}=\strfield{title}}}}}} + +\DeclareSortingTemplate{abbreviations}{% + \sort{% + \field{shorthand}% + \field{shortjournal}% + \field{shortseries}% + }% +} + +% ------------------------------------------------------------------ +% SOURCE MAPS +% ------------------------------------------------------------------ +% - cut titles at colons to create short titles +% - copy titles to shorttitles if they are empty +% ------------------------------------------------------------------ + +\DeclareStyleSourcemap{ + \maps{ + \map{ + \step[fieldsource=title, match=\regexp{(.*?):}, final] + \step[fieldset=shorttitle, fieldvalue={$1}] + } + \map{ + \step[fieldsource=journaltitle, match=\regexp{(.*?):}, final] + \step[fieldset=shortjournal, fieldvalue={$1}] + } + \map{ + \step[fieldsource=revdtitle, match=\regexp{(.*?):}, final] + \step[fieldset=revdshorttitle, fieldvalue={$1}] + } + \map{ + \pertype{suppbook} + \pertype{suppcollection} + \step[fieldsource=type, final] + \step[fieldsource=title, final] + \step[fieldset=booktitle, origfieldval] + } + \map{ + \pertype{suppbook} + \pertype{suppcollection} + \step[fieldsource=type, final] + \step[fieldsource=subtitle, final] + \step[fieldset=subbooktitle, origfieldval] + } + \map{ + \pertype{suppbook} + \pertype{suppcollection} + \step[fieldsource=type, final] + \step[fieldsource=titleaddon, final] + \step[fieldset=booktitleaddon, origfieldval] + } + \map{ + \pertype{periodical} + \step[fieldsource=title, final] + \step[fieldset=journaltitle, origfieldval] + } + \map{ + \pertype{periodical} + \step[fieldsource=subtitle, final] + \step[fieldset=journalsubtitle, origfieldval] + } + \map{ + \pertype{periodical} + \step[fieldsource=shorttitle, final] + \step[fieldset=shortjournal, origfieldval] + } + \map{ + \step[fieldsource=journalsubtitle, final] + \step[fieldsource=journaltitle, final] + \step[fieldset=shortjournal, origfieldval] + } + \map{ + \step[fieldsource=entrysubtype, match=\regexp{ANRW}, final] + \step[fieldset=options, fieldvalue={skipbib=false}] + } + \map[overwrite]{ + \pertype{series} + \step[fieldsource=options, match=\regexp{(.*)}] + \step[fieldset=options, fieldvalue={useauthor=false,useeditor=false,}] + \step[fieldset=options, fieldvalue={$1}, append] + } + \map[overwrite]{ + \pernottype{ancienttext} + \pernottype{classictext} + \step[fieldsource=related, final] + \step[fieldsource=relatedoptions, match=\regexp{(.*)}] + \step[fieldset=relatedoptions, fieldvalue={skipbib,skipbiblist=false,}] + \step[fieldset=relatedoptions, fieldvalue={$1}, append] + } + \map[overwrite]{ + \pertype{ancienttext} + \pertype{classictext} + \step[fieldsource=related, final] + \step[fieldset=relatedtype, fieldvalue=ancienttext] + \step[fieldsource=relatedoptions, match=\regexp{(.*)}] + \step[fieldset=relatedoptions, fieldvalue={skipbib=false,skipbiblist=false,}] + \step[fieldset=relatedoptions, fieldvalue={$1}, append] + } + \map[overwrite]{ + \step[fieldsource=shortseries, final] + \step[fieldsource=shorthand, final] + \step[fieldsource=entrykey, match=\regexp{(.*)}] + \step[fieldset=xref, fieldvalue=series-$1] + \step[entrynew=series-$1, entrynewtype=misc] + \step[fieldsource=shortseries] + \step[fieldset=shortseries, origfieldval, entrytarget=series-$1] + \step[fieldsource=series] + \step[fieldset=series, origfieldval, entrytarget=series-$1] + \step[fieldset=options, fieldvalue={skipbib}, entrytarget=series-$1] + } + } +} + +% ------------------------------------------------------------------ +% DATA INHERITANCE +% ------------------------------------------------------------------ + +\DeclareDataInheritance{mvbook,mvcollection,mvreference,mvlexicon,mvcommentary, + mvproceedings,series} + {book,inbook,bookinbook,suppbook,collection,incollection,suppcollection, + reference,inreference,lexicon,inlexicon,commentary,incommentary,proceedings, + inproceedings,classictext}{% + \inherit{title}{maintitle} + \inherit{subtitle}{mainsubtitle} + \inherit{titleaddon}{maintitleaddon} + \inherit{shorttitle}{shortmaintitle} + \inherit{editor}{maineditor} + \inherit{translator}{maintranslator} + \inherit{withauthor}{withmainauthor} + \inherit{witheditor}{withmaineditor} + \inherit{withtranslator}{withmaintranslator} + \inherit{withauthortype}{withmainauthortype} + \inherit{witheditortype}{withmaineditortype} + \inherit{withtranslatortype}{withmaintranslatortype} + \noinherit{sorttitle} + \noinherit{indextitle} + \noinherit{indexsorttitle} + \noinherit{endyear} +} + +\DeclareDataInheritance{book,collection,reference,lexicon,commentary,proceedings} + {inbook,bookinbook,suppbook,incollection,suppcollection,inreference,inlexicon, + incommentary,inproceedings,classictext}{% + \inherit{title}{booktitle} + \inherit{subtitle}{booksubtitle} + \inherit{titleaddon}{booktitleaddon} + \inherit{shorttitle}{shortbooktitle} + \inherit{author}{bookauthor} + \inherit{editor}{bookeditor} + \inherit{translator}{booktranslator} + \inherit{withauthor}{withbookauthor} + \inherit{witheditor}{withbookeditor} + \inherit{withtranslator}{withbooktranslator} + \inherit{withauthortype}{withbookauthortype} + \inherit{witheditortype}{withbookeditortype} + \inherit{withtranslatortype}{withbooktranslatortype} + \noinherit{sorttitle} + \noinherit{indextitle} + \noinherit{indexsorttitle} + \noinherit{endyear} +} + +\DeclareDataInheritance{periodical}{article,suppperiodical}{% + \inherit{shorttitle}{shortjournal} +} + +% ------------------------------------------------------------------ +% LANGUAGE +% ------------------------------------------------------------------ + +\newbibmacro*{language}{% + \iflistundef{language} + {} + {\setunit{\addspace}% + \printtext[brackets]{% + \usebibmacro{in}% + \printlist{language}}}} + +% ------------------------------------------------------------------ +% SET UP DELIMITER MACROS +% ------------------------------------------------------------------ + +\newbibmacro*{ifneedsetpostnotedelim}[2]{% + \ifboolexpr{ + test {\ifentrytype{ancienttext}} + or + test {\ifentrytype{classictext}} + } + {\def\blx@shorthand{true}} + {}% + \usebibmacro{ifuseshorthand} + {#1} + {#2}} + +\ExplSyntaxOn +\cs_new_protected:Nn \sbl_ifinstringt:nnn { + \tl_if_in:nnT {#2}{#1}{#3}} +\cs_generate_variant:Nn \sbl_ifinstringt:nnn { non } +\cs_new_eq:NN \IfInStringT \sbl_ifinstringt:non +\ExplSyntaxOff + +\newbibmacro*{setpostnotedelim}{% + \iftoggle{cbx:involcite} + {\renewcommand*{\postnotedelim}{\addspace}} + {}% + \iffieldundef{postnote} + {} + {\IfInStringT{.}{\abx@field@postnote} + {\renewcommand*{\postnotedelim}{\addspace}}% + \IfInStringT{:}{\abx@field@postnote} + {\renewcommand*{\postnotedelim}{\addspace}}% + \IfInStringT{§}{\abx@field@postnote} + {\renewcommand*{\postnotedelim}{\addspace}}% + \IfInStringT{\textsection}{\abx@field@postnote} + {\renewcommand*{\postnotedelim}{\addspace}}}} + +\newbibmacro*{setaltpostnotedelim}{% + \iffieldundef{altpostnote} + {} + {\IfInStringT{.}{\abx@field@altpostnote} + {\renewcommand*{\postnotedelim}{\addspace}}% + \IfInStringT{:}{\abx@field@altpostnote} + {\renewcommand*{\postnotedelim}{\addspace}}% + \IfInStringT{§}{\abx@field@altpostnote} + {\renewcommand*{\postnotedelim}{\addspace}}% + \IfInStringT{\textsection}{\abx@field@altpostnote} + {\renewcommand*{\postnotedelim}{\addspace}}}} + +\newbibmacro*{setpagesdelim}{% + \iffieldundef{pages} + {} + {\IfInStringT{.}{\abx@field@pages} + {\setunit{\addspace}}% + \IfInStringT{:}{\abx@field@pages} + {\setunit{\addspace}}% + \IfInStringT{§}{\abx@field@pages} + {\setunit{\addspace}}% + \IfInStringT{\textsection}{\abx@field@pages} + {\setunit{\addspace}}}} + +% ------------------------------------------------------------------ +% JOINING WORD MACROS +% ------------------------------------------------------------------ + +\newbibmacro*{in}{% + \printtext{\bibstring{in}}% + \setunit{\addspace}} + +\newbibmacro*{to}{% + \printtext{\bibstring{to}}% + \setunit{\addspace}} + +\newbibmacro*{of}{% + \printtext{\bibstring{of}}% + \setunit{\addspace}} + +% ------------------------------------------------------------------ +% SHORTHAND MACROS +% ------------------------------------------------------------------ + +\newbibmacro*{ifuseshorthand}[2]{% + \ifboolexpr{ + not test {\iffieldundef{shorthand}} + and + ( + test {\ifcsstring{blx@shorthand}{true}} + or + ( + test {\ifcsstring{blx@shorthand}{short}} + and + test {\ifciteseen} + ) + or + ( + test {\ifcsstring{blx@shorthand}{intro}} + and + test {\ifciteseen} + ) + ) + } + {#1} + {#2}} + +\newbibmacro*{ifciteuseshorthand}[2]{% + \ifboolexpr{ + test {\ifentrytype{ancienttext}} + or + test {\ifentrytype{classictext}} + } + {\def\blx@shorthand{true}} + {}% + \usebibmacro{ifuseshorthand} + {#1} + {#2}} + +\newbibmacro*{shorthand}{% + \iffieldsequal{shorthand}{shorttitle} + {\printtext{\mkbibemph{\printtext{% + \bibhyperlink{\strfield{shorthand}}{\thefield{shorthand}}}}}} + {\printtext{\bibhyperlink{\strfield{shorthand}}{\thefield{shorthand}}}}} + +\renewbibmacro*{shorthandintro}{% + \iffieldundef{shorthandintro} + {\iffieldundef{shorthand} + {} + {\setunit{\addspace}% + \printtext[parens]{% + \bibstring{citedas}\space + \usebibmacro{shorthand}}}} + {\setunit{\addspace}% + \printtext[parens]{\printfield{shorthandintro}}}} + +% ------------------------------------------------------------------ +% TITLE MACROS +% ------------------------------------------------------------------ + +\newbibmacro*{shorttitle}{% + \iftoggle{blx@useshorttitle} + {\iffieldundef{shorttitle} + {\iffieldundef{title} + {} + {\ifbool{bbx@inset} + {\printtext{\bibhyperlink{\strfield{setkey}} + {\printtext[title]{\printfield[titlecase]{title}}}}} + {\printtext[bibhyperlink]{% + \printtext[title]{\printfield[titlecase]{title}}}}}} + {\ifbool{bbx@inset} + {\printtext{\bibhyperlink{\strfield{setkey}} + {\printtext[title]{\printfield[titlecase]{shorttitle}}}}} + {\printtext[bibhyperlink]{% + \printtext[title]{\printfield[titlecase]{shorttitle}}}}}% + \newunit} + {}} + +\newbibmacro*{shorttitlenohyperlink}{% + \iftoggle{blx@useshorttitle} + {\iffieldundef{shorttitle} + {\iffieldundef{title} + {} + {\printtext[title]{\printfield[titlecase]{title}}}} + {\printtext[title]{\printfield[titlecase]{shorttitle}}}} + {}} + +\newbibmacro*{shortbooktitle}{% + \iffieldundef{shortbooktitle} + {\iffieldundef{booktitle} + {} + {\printtext[booktitle]{\printfield[titlecase]{booktitle}}}} + {\printtext[booktitle]{\printfield[titlecase]{shortbooktitle}}}% + \newunit} + +\newbibmacro*{shortmaintitle}{% + \iffieldundef{shortmaintitle} + {\iffieldundef{maintitle} + {} + {\printtext[maintitle]{\printfield[titlecase]{maintitle}}}} + {\printtext[maintitle]{\printfield[titlecase]{shortmaintitle}}}% + \newunit} + +\renewbibmacro*{title}{% + \ifciteseen + {\usebibmacro{shorttitle}} + {\iffieldundef{title} + {} + {\printtext[title]{% + \printfield[titlecase]{title}% + \setunit{\subtitlepunct}% + \printfield[titlecase]{subtitle}}% + \newunit + \printfield{titleaddon}% + \usebibmacro{language}}}} + +\renewbibmacro*{booktitle}{% + \ifciteseen + {\usebibmacro{shortbooktitle}} + {\iffieldundef{booktitle} + {} + {\printtext[booktitle]{% + \printfield[titlecase]{booktitle}% + \setunit{\subtitlepunct}% + \printfield[titlecase]{booksubtitle}}% + \newunit + \printfield{booktitleaddon}}}} + +\renewbibmacro*{maintitle}{% + \ifciteseen + {\usebibmacro{shortmaintitle}} + {\iffieldundef{maintitle} + {} + {\printtext[maintitle]{% + \printfield[titlecase]{maintitle}% + \setunit{\subtitlepunct}% + \printfield[titlecase]{mainsubtitle}}% + \newunit + \printfield{maintitleaddon}}}} + +\newbibmacro*{booktitle+maintitle}{% + \iffieldundef{booktitle} + {\iffieldundef{maintitle} + {} + {\usebibmacro{maintitle}% + \clearfield{maintitle}% + \clearfield{mainsubtitle}% + \clearfield{maintitleaddon} + \newunit}} + {\usebibmacro{booktitle}% + \clearfield{booktitle}% + \clearfield{booksubtitle}% + \clearfield{bootitleaddon}% + \newunit}} + +\newbibmacro*{shortmaintitle+shortbooktitle}{% + \iffieldundef{maintitle} + {\iffieldundef{booktitle} + {} + {\usebibmacro{shortbooktitle} + \newunit}} + {\usebibmacro{shortmaintitle}% + \newunit}} + +\newbibmacro*{revdshorttitle}{% + \iffieldundef{revdshorttitle} + {\iffieldundef{revdtitle} + {} + {\printtext[bibhyperlink]{% + \printtext[revdtitle]{\printfield[titlecase]{revdtitle}}}}} + {\printtext[bibhyperlink]{% + \printtext[revdtitle]{\printfield[titlecase]{revdshorttitle}}}}% + \newunit} + +\newbibmacro*{revdtitle}{% + \ifciteseen + {\usebibmacro{revdshorttitle}} + {\iffieldundef{revdtitle} + {} + {\printtext[revdtitle]{% + \printfield[titlecase]{revdtitle}% + \setunit{\subtitlepunct}% + \printfield[titlecase]{revdsubtitle}}% + \newunit}% + \printfield{revdtitleaddon}}} + +\newbibmacro*{xrefshortmaintitle+xrefshortbooktitle}{% + \iffieldundef{xref} + {\usebibmacro{shortmaintitle+shortbooktitle}} + {\entrydata{\thefield{xref}}{% + \iffieldundef{shorttitle} + {\usebibmacro{shorttitle}} + {\printtext[shorttitle]{% + \bibhyperlink{\strfield{shorthand}}{\thefield{shorttitle}}}}}}} + +\newbibmacro*{xrefshortmaintitle}{% + \iffieldundef{xref} + {\usebibmacro{shortmaintitle}} + {\entrydata{\thefield{xref}}{% + \iffieldundef{shorttitle} + {\usebibmacro{shorttitle}} + {\printtext[shorttitle]{% + \bibhyperlink{\strfield{shorthand}}{\thefield{shorttitle}}}}}}} + +\newbibmacro*{shortjournal}{% + \iffieldundef{shortjournal} + {\printfield{journaltitle}} + {\printtext[shortjournal]{% + \bibhyperlink{\strfield{shortjournal}}{\thefield{shortjournal}}}}} + +\newbibmacro*{shortjournal+issue}{% + \usebibmacro{shortjournal}% + \setunit{\addspace}% + \usebibmacro{series+volume+number+eid}% + \ifboolexpr{ + not test {\ifnameundef{editor}} + or + not test {\ifnameundef{editora}} + or + not test {\ifnameundef{editorb}} + or + not test {\ifnameundef{editorc}} + or + not test {\iffieldundef{series}} + } + {\newunit + \usebibmacro{byeditor+others}% + \newunit} + {\setunit{\addspace}}% + \usebibmacro{issue+date}% + \ifboolexpr{ + test { + \ifboolexpr{ + not test {\iffieldundef{journaltitle}} + and + not test {\iffieldundef{shortjournal}}}} + and + test {\iffieldundef{volume}} + and + test {\iffieldundef{date}} + } + {\usebibmacro{setpagesdelim}} + {}} + +\renewbibmacro*{issue+date}{% + \ifboolexpr{ + test {\iffieldundef{year}} + and + test {\iffieldundef{issue}} + and + test {\iffieldundef{date}} + and + test {\iffieldundef{month}} + and + test {\iffieldundef{day}} + } + {} + {\iffieldundef{volume} + {\iffieldundef{journaltitle} + {\newunit} + {\setunit{\addcomma\space}}% + \iffieldundef{issue} + {\usebibmacro{date}} + {\printfield{issue}% + \setunit*{\addspace}% + \usebibmacro{date}} + \setunit{\addcomma\space}} + {\setunit{\addspace}% + \printtext[parens]{% + \iffieldundef{issue} + {\usebibmacro{date}} + {\printfield{issue}% + \setunit*{\addspace}% + \usebibmacro{date}}}% + \setunit{\addcolon\space}}}} + +\newbibmacro*{series+volume+number+eid}{% + \iffieldundef{series} + {} + {\newunit + \printfield{series}% + \newunit}% + \printfield{volume}% + \setunit*{\addperiod}% + \printfield{number}% + \setunit{\addcomma\space}% + \printfield{eid}} + +\newbibmacro{inissuetitle}{% + \iffieldundef{issuetitle} + {} + {\usebibmacro{in}% + \printtext[issuetitle]{% + \printfield[titlecase]{issuetitle}% + \setunit*{\subtitlepunct}% + \printfield[titlecase]{issuesubtitle}}}} + +\newbibmacro*{shortissuetitle}{% + \iffieldundef{shortissuetitle} + {\iffieldundef{issuetitle} + {} + {\printtext[issuetitle]{\printfield[titlecase]{issuetitle}}}} + {\printtext[issuetitle]{\printfield[titlecase]{shortissuetitle}}}% + \newunit} + +\newbibmacro{issuetitle}{% + \iffieldundef{issuetitle} + {} + {\ifciteseen + {\usebibmacro{shortissuetitle}} + {\printtext[issuetitle]{% + \printfield[titlecase]{issuetitle}% + \setunit*{\subtitlepunct}% + \printfield[titlecase]{issuesubtitle}}}}} + +% ------------------------------------------------------------------ +% NAME MACROS +% ------------------------------------------------------------------ + +\newbibmacro*{withname}[1]{% + \ifnameundef{with#1} + {} + {\setunit{\addcomma\space}% + \iffieldundef{with#1type} + {\bibstring{with}} + {\ifbibxstring{with\thefield{with#1type}} + {\bibstring{with\thefield{with#1type}}} + {\ifbibxstring{\thefield{with#1type}} + {\bibstring{\thefield{with#1type}}} + {\printtext[with#1type]{\thefield{with#1type}}}}}% + \setunit{\addspace}% + \printnames{with#1}% + \clearname{with#1}}} + +\renewbibmacro*{bytypestrg}[2]{% + \iffieldundef{#1type} + {\bibstring{by#2}} + {\ifbibxstring{by\thefield{#1type}} + {\bibstring{by\thefield{#1type}}} + {\ifbibxstring{\thefield{#1type}} + {\bibstring{\thefield{#1type}}} + {\printtext[editortype]{\thefield{#1type}}}}}} + +\renewbibmacro*{editorstrg}{% + \printtext[editortype]{% + \iffieldundef{editortype} + {\ifboolexpr{ + test {\ifnumgreater{\value{editor}}{1}} + or + test {\ifandothers{editor}} + } + {\bibsstring{editors}} + {\bibsstring{editor}}} + {\ifbibxstring{\thefield{editortype}} + {\ifboolexpr{ + test {\ifnumgreater{\value{editor}}{1}} + or + test {\ifandothers{editor}} + } + {\bibstring{\thefield{editortype}s}} + {\bibstring{\thefield{editortype}}}} + {\thefield{editortype}}}}} + +\renewbibmacro*{editor+othersstrg}{% + \iffieldundef{editortype} + {\ifboolexpr{ + test {\ifnumgreater{\value{editor}}{1}} + or + test {\ifandothers{editor}} + } + {\def\abx@tempa{editors}} + {\def\abx@tempa{editor}}} + {\ifboolexpr{ + test {\ifnumgreater{\value{editor}}{1}} + or + test {\ifandothers{editor}} + } + {\edef\abx@tempa{\thefield{editortype}s}} + {\edef\abx@tempa{\thefield{editortype}}}}% + \let\abx@tempb=\empty + \ifnamesequal{editor}{translator} + {\appto\abx@tempa{tr}% + \appto\abx@tempb{\clearname{translator}}} + {}% + \ifnamesequal{editor}{commentator} + {\appto\abx@tempa{co}% + \appto\abx@tempb{\clearname{commentator}}} + {\ifnamesequal{editor}{annotator} + {\appto\abx@tempa{an}% + \appto\abx@tempb{\clearname{annotator}}} + {}}% + \ifnamesequal{editor}{introduction} + {\appto\abx@tempa{in}% + \appto\abx@tempb{\clearname{introduction}}} + {\ifnamesequal{editor}{foreword} + {\appto\abx@tempa{fo}% + \appto\abx@tempb{\clearname{foreword}}} + {\ifnamesequal{editor}{afterword} + {\appto\abx@tempa{af}% + \appto\abx@tempb{\clearname{afterword}}} + {}}}% + \ifbibxstring{\abx@tempa} + {\printtext[editortype]{\bibsstring{\abx@tempa}}\abx@tempb} + {\usebibmacro{editorstrg}}} + +\renewbibmacro*{translatorstrg}{% + \ifboolexpr{ + test {\ifnumgreater{\value{translator}}{1}} + or + test {\ifandothers{translator}} + } + {\bibsstring{translators}} + {\bibsstring{translator}}} + +\renewbibmacro*{translator+othersstrg}{% + \ifboolexpr{ + test {\ifnumgreater{\value{translator}}{1}} + or + test {\ifandothers{translator}} + } + {\def\abx@tempa{translators}} + {\def\abx@tempa{translator}}% + \ifnamesequal{translator}{commentator} + {\appto\abx@tempa{co}% + \clearname{commentator}} + {\ifnamesequal{translator}{annotator} + {\appto\abx@tempa{an}% + \clearname{annotator}} + {}}% + \ifnamesequal{translator}{introduction} + {\appto\abx@tempa{in}% + \clearname{introduction}} + {\ifnamesequal{translator}{foreword} + {\appto\abx@tempa{fo}% + \clearname{foreword}} + {\ifnamesequal{translator}{afterword} + {\appto\abx@tempa{af}% + \clearname{afterword}} + {}}}% + \bibsstring{\abx@tempa}} + +\renewbibmacro*{author}{% + \ifboolexpr{ + test \ifuseauthor + and + not test {\ifnameundef{author}} + } + {\ifciteseen{% + \usebibmacro{ifidemused} + {} + {\printnames[labelname]{author}}% + }{\renewcommand*{\namedashpunct}{\adddot\space}% + \iffieldundef{authortype} + {} + {\renewcommand*{\namedashpunct}{\addcomma\space}}% + \ifnameundef{withauthor} + {} + {\renewcommand*{\namedashpunct}{\addcomma\space}}% + \ifnameundef{holder} + {} + {\renewcommand*{\namedashpunct}{\addspace}}% + \usebibmacro{dashcheck} + {\bibnamedash} + {\usebibmacro{ifidemused} + {} + {\printnames{author}% + \usebibmacro{savehash}}}% + \iffieldundef{authortype} + {} + {\setunit{\addcomma\space}% + \usebibmacro{authorstrg}}% + \usebibmacro{withname}{author}}} + {\global\undef\bbx@lasthash}} + +\newbibmacro*{author+holder}{% + \usebibmacro{author}% + \ifciteseen + {} + {\ifnameundef{holder} + {} + {\setunit{\addspace}% + \printtext[parens]{\printnames{holder}}}}} + +\renewbibmacro*{editor+others}{% + \ifboolexpr{ + test \ifuseeditor + and + not test {\ifnameundef{editor}} + } + {\ifciteseen{% + \usebibmacro{ifidemused} + {} + {\printnames[labelname]{editor}}% + }{\renewcommand*{\namedashpunct}{\addcomma\space}% + \usebibmacro{dashcheck} + {\bibnamedash} + {\usebibmacro{ifidemused} + {} + {\printnames{editor}% + \usebibmacro{savehash}}}% + \setunit{\addcomma\space}% + \usebibmacro{editor+othersstrg}% + \usebibmacro{withname}{editor}% + }% + \clearname{editor}} + {}} + +\renewbibmacro*{translator+others}{% + \ifboolexpr{ + test \ifusetranslator + and + not test {\ifnameundef{translator}} + } + {\ifciteseen{% + \usebibmacro{ifidemused} + {} + {\printnames[labelname]{translator}}% + }{% + \renewcommand{\namedashpunct}{\addcomma\space}% + \usebibmacro{dashcheck} + {\bibnamedash} + {\usebibmacro{ifidemused} + {} + {\printnames{translator}% + \usebibmacro{savehash}}}% + \setunit{\addcomma\space}% + \usebibmacro{translator+othersstrg}% + \usebibmacro{withname}{translator}% + }% + \clearname{translator}} + {}} + +\renewbibmacro*{byauthor}{% + \ifboolexpr{ + test {\ifuseauthor} + or + test {\iffieldundef{title}} + or + test {\ifnameundef{author}} + } + {} + {\setunit{\addcomma\space}% + \usebibmacro{bytypestrg}{author}{author}% + \setunit{\addspace}% + \printnames[byauthor]{author}% + \usebibmacro{withname}{author}}}% + +\renewbibmacro*{bybookauthor}{% + \ifboolexpr{ + test {\iffieldundef{booktitle}} + or + test {\ifnameundef{bookauthor}} + or + test {\ifnamesequal{author}{bookauthor}} + } + {} + {\setunit{\addcomma\space}% + \usebibmacro{bytypestrg}{author}{author}% + \setunit{\addspace}% + \printnames[byauthor]{bookauthor}% + \usebibmacro{withname}{bookauthor}}% +} + +\newbibmacro*{bymainauthor}{% + \ifboolexpr{ + test {\iffieldundef{maintitle}} + or + test {\ifnameundef{mainauthor}} + or + test {\ifnamesequal{author}{mainauthor}} + or + test {\ifnamesequal{bookauthor}{mainauthor}} + } + {} + {\setunit{\addcomma\space}% + \usebibmacro{bytypestrg}{author}{author}% + \setunit{\addspace}% + \printnames[byauthor]{mainauthor}% + \usebibmacro{withname}{mainauthor}}% +} + +\renewbibmacro*{byeditor}{% + \ifnameundef{editor} + {} + {\usebibmacro{bytypestrg}{editor}{editor}% + \setunit{\addspace}% + \printnames[byeditor]{editor}% + \clearname{editor}% + \usebibmacro{withname}{editor}% + \newunit}} + +\renewbibmacro*{byeditor+others}{% + \ifnameundef{editor} + {} + {\usebibmacro{byeditor+othersstrg}% + \setunit{\addspace}% + \printnames[byeditor]{editor}% + \clearname{editor}% + \usebibmacro{withname}{editor}% + \newunit}% + \usebibmacro{byeditorx}} + +\renewbibmacro*{byeditorx}{% + \ifnameundef{editora} + {} + {\usebibmacro{bytypestrg}{editora}{editor}% + \setunit{\addspace}% + \printnames[byeditora]{editora}% + \clearname{editora}% + \newunit}% + \ifnameundef{editorb} + {} + {\usebibmacro{bytypestrg}{editorb}{editor}% + \setunit{\addspace}% + \printnames[byeditorb]{editorb}% + \clearname{editorb}% + \newunit}% + \ifnameundef{editorc} + {} + {\usebibmacro{bytypestrg}{editorc}{editor}% + \setunit{\addspace}% + \printnames[byeditorc]{editorc}% + \clearname{editorc}% + \newunit}} + +\renewbibmacro*{bytranslator}{% + \ifnameundef{translator} + {} + {\bibstring{bytranslator}% + \setunit{\addspace}% + \printnames[bytranslator]{translator}% + \clearname{translator}% + \usebibmacro{withname}{translator}}} + +\renewbibmacro*{bytranslator+others}{% + \ifnameundef{translator} + {} + {\usebibmacro{bytranslator+othersstrg}% + \setunit{\addspace}% + \printnames[bytranslator]{translator}% + \clearname{translator}% + \usebibmacro{withname}{translator}% + \newunit}% + \usebibmacro{withothers}} + +\newbibmacro*{byeditor/bytranslator}{% + \ifboolexpr{ + ( + not test {\ifnameundef{bookeditor}} + and + not test {\ifnameundef{maineditor}} + ) + or + ( + not test {\ifnameundef{maineditor}} + and + test {\iffieldundef{booktitle}} + ) + } + {\usebibmacro{byeditor}} + {} + \newunit + \ifboolexpr{ + ( + not test {\ifnameundef{booktranslator}} + and + not test {\ifnameundef{maintranslator}} + ) + or + ( + not test {\ifnameundef{maintranslator}} + and + test {\iffieldundef{booktitle}} + ) + } + {\usebibmacro{bytranslator}} + {}} + +\newbibmacro*{byauthor/byeditor+others/bytranslator+others}{% + \iffieldundef{title} + {} + {\usebibmacro{byauthor}% + \newunit + \usebibmacro{ifbooktitleormaintitle} + {\usebibmacro{byeditor/bytranslator}} + {\usebibmacro{byeditor+others}% + \newunit + \usebibmacro{bytranslator+others}}}} + +\newbibmacro*{bybookeditor}{% + \ifnameundef{bookeditor} + {} + {\usebibmacro{byeditor+othersstrg}% + \setunit{\addspace}% + \printnames[byeditor]{bookeditor}% + \clearname{bookeditor}% + \usebibmacro{withname}{bookeditor}}} + +\newbibmacro*{bybookeditor+others}{% + \ifboolexpr{ + ( + not test {\ifnameundef{maineditor}} + and + test {\ifnameundef{bookeditor}} + ) + or + ( + test {\iffieldundef{maintitle}} + and + test {\ifnameundef{bookeditor}} + ) + } + {\usebibmacro{byeditor}} + {\usebibmacro{bybookeditor}}% + \newunit + \usebibmacro{byeditorx}} + +\newbibmacro*{bybooktranslator}{% + \ifnameundef{booktranslator} + {} + {\usebibmacro{bytranslator+othersstrg}% + \setunit{\addspace}% + \printnames[bytranslator]{booktranslator}% + \clearname{booktranslator}% + \usebibmacro{withname}{booktranslator}}} + +\newbibmacro*{bybooktranslator+others}{% + \ifboolexpr{ + ( + not test {\ifnameundef{maintranslator}} + and + test {\ifnameundef{booktranslator}} + ) + or + ( + test {\iffieldundef{maintitle}} + and + test {\ifnameundef{booktranslator}} + ) + } + {\usebibmacro{bytranslator}} + {\usebibmacro{bybooktranslator}}% + \newunit + \usebibmacro{withothers}} + +\newbibmacro*{bybookeditor/bybooktranslator}{% + \ifboolexpr{ + ( + not test {\ifnameundef{maineditor}} + and + test {\ifnameundef{bookeditor}} + ) + or + ( + test {\iffieldundef{maintitle}} + and + test {\ifnameundef{bookeditor}} + ) + } + {\usebibmacro{byeditor}} + {\usebibmacro{bybookeditor}}% + \newunit + \ifboolexpr{ + ( + not test {\ifnameundef{maintranslator}} + and + test {\ifnameundef{booktranslator}} + ) + or + ( + test {\iffieldundef{maintitle}} + and + test {\ifnameundef{booktranslator}} + ) + } + {\usebibmacro{bytranslator}} + {\usebibmacro{bybooktranslator}}} + +\newbibmacro*{bybookauthor/bybookeditor+others/bybooktranslator+others}{% + \iffieldundef{booktitle} + {} + {\usebibmacro{bybookauthor}% + \newunit + \iffieldundef{maintitle} + {\usebibmacro{bybookeditor+others}% + \newunit + \usebibmacro{bybooktranslator+others}} + {\usebibmacro{bybookeditor/bybooktranslator}}}} + +\newbibmacro*{bymaineditor+others}{% + \ifnameundef{maineditor} + {\usebibmacro{byeditor+others}} + {\usebibmacro{byeditor+othersstrg}% + \setunit{\addspace}% + \printnames[byeditor]{maineditor}% + \clearname{maineditor}% + \usebibmacro{withname}{maineditor}% + \newunit + \usebibmacro{byeditorx}}} + +\newbibmacro*{bymaintranslator+others}{% + \ifnameundef{maintranslator} + {\usebibmacro{bytranslator+others}} + {\usebibmacro{bytranslator+othersstrg}% + \setunit{\addspace}% + \printnames[bytranslator]{maintranslator}% + \clearname{maintranslator}% + \usebibmacro{withname}{maintranslator}% + \newunit + \usebibmacro{withothers}}} + +\newbibmacro*{bymainauthor/bymaineditor+others/bymaintranslator+others}{% + \iffieldundef{maintitle} + {} + {\usebibmacro{bymainauthor}% + \newunit + \usebibmacro{bymaineditor+others}% + \newunit + \usebibmacro{bymaintranslator+others}}} + +\newbibmacro*{revdauthor}{% + \ifnameundef{revdauthor} + {} + {\bibstring{byauthor}% + \setunit{\addspace}% + \ifciteseen + {\printnames[labelname]{revdauthor}} + {\printnames{revdauthor}}}} + +\newbibmacro*{revdeditor}{% + \ifnameundef{revdeditor} + {} + {\bibsstring{byeditor}% + \setunit{\addspace}% + \ifciteseen + {\printnames[labelname]{revdeditor}} + {\printnames{revdeditor}}}} + +\newbibmacro*{revdauthor/revdeditor}{% + \usebibmacro{revdauthor}% + \setunit{\addcomma\space}% + \usebibmacro{revdeditor}} + +\newbibmacro*{revdauthor/revdeditor+revdtitle}{% + \biblstring{reviewof}% + \setunit{\addspace}% + \usebibmacro{revdauthor/revdeditor}% + \ifciteseen + {} + {\setunit{\addcomma\space}% + \usebibmacro{revdtitle}}} + +% ------------------------------------------------------------------ +% SERIES MACROS +% ------------------------------------------------------------------ + +\newbibmacro*{shortseries}{% + \iffieldundef{shortseries} + {\printfield{series}} + {\printtext[shortseries]{% + \bibhyperlink{\strfield{shortseries}}{\thefield{shortseries}}}}% +} + +\newbibmacro*{shortseries+number}{% + \usebibmacro{shortseries}% + \setunit{\addspace}% + \iffieldundef{seriesseries} + {} + {\printfield{seriesseries}% + \printtext{/}}% + \printfield{number}% + \newunit} + +% ------------------------------------------------------------------ +% EVENT MACROS +% ------------------------------------------------------------------ + +\renewbibmacro*{event+venue+date}{% + \iffieldundef{eventtitle} + {} + {\printfield{eventtitle}% + \newunit + \printfield{eventtitleaddon}}% + \ifboolexpr{ + test {\iffieldundef{venue}} + and + test {\iffieldundef{eventyear}} + } + {} + {\setunit{\addspace}% + \printtext[parens]{% + \printfield{venue}% + \setunit*{\addcomma\space}% + \printeventdate}}% + \newunit + \clearfield{eventtitle}% + \clearfield{venue}% + \clearfield{eventyear}} + +\newbibmacro*{eventtitle}{% + \iffieldundef{eventtitle} + {} + {\ifbibliography + {} + {\midsentence}% + \bibstring{paperpresented}% + \setunit{\addspace}% + \printfield{eventtitle}% + \newunit + \printfield{eventtitleaddon}}} + +\newbibmacro*{venue+eventdate}{% + \iffieldundef{venue} + {\printlist{location}} + {\printfield{venue}}% + \setunit{\addcomma\space}% + \iffieldundef{eventyear} + {\printdate} + {\printeventdate}} + +% ------------------------------------------------------------------ +% PUBLISHER MACROS +% ------------------------------------------------------------------ + +\newbibmacro*{parens+publisher+location+date}{% + \ifboolexpr{ + test {\iflistundef{publisher}} + and + test {\iflistundef{location}} + and + test {\iffieldundef{howpublished}} + and + test {\iffieldundef{year}} + } + {} + {\setunit{\addspace}% + \printtext[parens]{% + \usebibmacro{publisher+location+date}% + \iffieldequalstr{relatedtype}{reprint} + {\renewcommand*{\newunitpunct}{\addsemicolon\space}% + \newunit + \usebibmacro{related:init}% + \usebibmacro{related}% + \global\toggletrue{relatedseen}} + {}}}} + +\newcounter{currentpublisher} +\newcounter{currentlocation} +\newcounter{currentorganization} +\newcounter{currentinstitution} +\newcounter{publishertotal} +\newcounter{locationtotal} +\newcounter{organizationtotal} +\newcounter{institutiontotal} + +\DeclareListFormat{publisher}{% + \setcounter{publishertotal}{\value{listtotal}}% + \usebibmacro{list:delim}{#1}% + #1\isdot + \ifnumequal{\value{currentpublisher}}{\value{listtotal}} + {\setcounter{currentpublisher}{0}} + {\addtocounter{currentpublisher}{1}}} + +\DeclareListFormat{organization}{% + \setcounter{organizationtotal}{\value{listtotal}}% + \usebibmacro{list:delim}{#1}% + #1\isdot + \ifnumequal{\value{currentorganization}}{\value{listtotal}} + {\setcounter{currentorganization}{0}} + {\addtocounter{currentorganization}{1}}} + +\DeclareListFormat{institution}{% + \setcounter{institutiontotal}{\value{listtotal}}% + \usebibmacro{list:delim}{#1}% + #1\isdot + \ifnumequal{\value{currentinstitution}}{\value{listtotal}} + {\setcounter{currentinstitution}{0}} + {\addtocounter{currentinstitution}{1}}} + +\DeclareListFormat{location}{% + \setcounter{locationtotal}{\value{listtotal}}% + \usebibmacro{list:delim}{#1}% + #1\isdot + \ifnumequal{\value{currentlocation}}{\value{listtotal}} + {\setcounter{currentlocation}{0}} + {\addtocounter{currentlocation}{1}}} + +\newbibmacro*{loop:location+publisher}{% + \ifnumequal{\value{currentlocation}}{0} + {} + {\printlist[][\value{currentlocation}-\value{currentlocation}]{location}% + \setunit*{\addcolon\space}}% + \ifnumequal{\value{currentorganization}}{0} + {} + {\printlist[][\value{currentorganization}-\value{currentorganization}]{organization}% + \setunit*{\addcomma\space}}% + \ifnumequal{\value{currentinstitution}}{0} + {} + {\printlist[][\value{currentinstitution}-\value{currentinstitution}]{institution}% + \setunit*{\addcomma\space}}% + \ifnumequal{\value{currentpublisher}}{0} + {} + {\printlist[][\value{currentpublisher}-\value{currentpublisher}]{publisher}}% + \setunit*{\addsemicolon\space}% + \ifboolexpr{ + test {\ifnumgreater{\value{locationtotal}}{1}} + and + test {\ifnumgreater{\value{currentlocation}}{\value{organizationtotal}}} + and + test {\ifnumgreater{\value{currentlocation}}{\value{institutiontotal}}} + and + test {\ifnumgreater{\value{currentlocation}}{\value{publishertotal}}} + } + {\setcounter{currentlocation}{0}} + {}% + \ifboolexpr{ + test {\ifnumgreater{\value{currentorganization}}{0}} + or + test {\ifnumgreater{\value{currentinstitution}}{0}} + or + test {\ifnumgreater{\value{currentpublisher}}{0}} + or + test {\ifnumgreater{\value{currentlocation}}{0}} + } + {\usebibmacro{loop:location+publisher}} + {}} + +\newbibmacro*{init:location+publisher}{% + \setcounter{locationtotal}{0}% + \setcounter{organizationtotal}{0}% + \setcounter{institutiontotal}{0}% + \setcounter{publishertotal}{0}% + \iflistundef{location} + {\setcounter{currentlocation}{0}} + {\setcounter{currentlocation}{1}}% + \iflistundef{organization} + {\setcounter{currentorganization}{0}} + {\setcounter{currentorganization}{1}}% + \iflistundef{institution} + {\setcounter{currentinstitution}{0}} + {\setcounter{currentinstitution}{1}}% + \iflistundef{publisher} + {\setcounter{currentpublisher}{0}} + {\setcounter{currentpublisher}{1}}} + +\renewbibmacro*{publisher+location+date}{% + \usebibmacro{reprint}% + \usebibmacro{init:location+publisher}% + \usebibmacro{loop:location+publisher}% + \iffieldundef{howpublished} + {} + {\ifboolexpr{ + test {\iflistundef{organization}} + and + test {\iflistundef{institution}} + and + test {\iflistundef{publisher}} + } + {\setunit*{\addcolon\space}} + {\setunit*{\addcomma\space}}% + \printfield{howpublished}}% + \setunit*{\addcomma\space}% + \usebibmacro{date}% + \newunit} + +\newbibmacro*{origpublisher+location+date}{% + \printlist{origlocation}% + \iflistundef{origpublisher} + {\setunit*{\addcomma\space}} + {\setunit*{\addcolon\space}}% + \printlist{origpublisher}% + \setunit*{\addcomma\space}% + \usebibmacro{origdate}% + \newunit} + +% ------------------------------------------------------------------ +% CHAPTER, PAGES, VOLUME, PART MACROS +% ------------------------------------------------------------------ + +\newbibmacro*{volume}{% + \iffieldundef{volume} + {} + {\setunit{\addspace}% + \global\booltrue{usevolpostnotedelim}% + \printfield{volume}% + \newunit}} + +\newbibmacro*{ifbooktitleormaintitle}[2]{% + \ifboolexpr{ + not test {\iffieldundef{booktitle}} + or + not test {\iffieldundef{maintitle}} + } + {#1} + {#2}} + +\newbibmacro*{ifneedstitlein}[2]{% + \usebibmacro{ifbooktitleormaintitle} + {\ifboolexpr{ + togl {inentrytype} + or + not test {\usebibmacro{ifusevolumeandpart}} + } + {#1} + {#2}} + {#2}} + +\newbibmacro{pagesin}{% + \usebibmacro{ifbooktitleormaintitle} + {\iffieldundef{pages} + {} + {\printfield[pagesin]{pages}% + \setunit*{\addspace}}} + {\printfield[pagepages]{pages}% + \newunit}} + +\newbibmacro*{chapterin}{% + \ifboolexpr{ + test {\usebibmacro{ifbooktitleormaintitle}} + or + not test {\iffieldundef{volume}} + or + not test {\iffieldundef{part}} + } + {\iffieldundef{chapter} + {\usebibmacro{ifneedstitlein} + {\usebibmacro{in}} + {}}% + {\printfield[chapterin]{chapter}% + \setunit*{\addspace}}} + {\printfield{chapter}% + \setunit*{\addcomma\space}}} + +\newbibmacro*{chapter+pagesin}{% + \iffieldundef{pages} + {\usebibmacro{chapterin}} + {\ifbibliography + {\printfield{chapter}% + \setunit*{\addcomma\space}% + \ifboolexpr{ + test {\usebibmacro{ifbooktitleormaintitle}} + or + not test {\iffieldundef{volume}} + or + not test {\iffieldundef{part}} + } + {\printfield[pagesin]{pages}% + \setunit*{\addspace}} + {\printfield[pagepages]{pages}% + \newunit}} + {\usebibmacro{chapterin}}}} + +\newbibmacro*{ifusevolumeandpart}[2]{% + \ifboolexpr{ + test {\ifbibliography}% always if in bibliography + or + not test {\iffieldundef{chapter}}% always if chapter is defined + or + (% always if volume defined, part not defined, and usevolume=true + not test {\iffieldundef{volume}} + and + test {\iffieldundef{part}} + and + togl {blx@usevolume}% + ) + or + (% always if part defined and volume not defined + not test {\iffieldundef{part}} + and + test {\iffieldundef{volume}} + ) + or + (% always if neither volume nor part are defined + test {\iffieldundef{volume}} + and + test {\iffieldundef{part}} + ) + } + {#1} + {#2}} + +\newbibmacro*{volume+partof}{% + \usebibmacro{ifusevolumeandpart} + {\iffieldundef{part} + {\iffieldundef{maintitle} + {\printfield[vol]{volume}% + \newunit} + {\iffieldundef{volume} + {} + {\printfield[volumeof]{volume}% + \setunit*{\addspace}}}} + {\printfield[vol]{volume}% + \setunit*{\addcomma\space}% + \iffieldundef{maintitle} + {\printfield[pt]{part}% + \newunit} + {\printfield[partof]{part} + \setunit*{\addspace}}}} + {}} + +\newbibmacro*{volume+pages}{% + \iffieldundef{volume} + {} + {\setunit{\addspace}% + \printfield{volume}% + \setunit*{\addperiod}% + \printfield{part}% + \setunit{\volpostnotedelim}% + \global\booltrue{usevolpostnotedelim}} + \usebibmacro{pages}} + +\newbibmacro*{volume+part+pages}{% + \usebibmacro{ifusevolumeandpart} + {} + {\printfield{volume}% + \setunit*{\addperiod}% + \printfield{part}% + \setunit{\volpostnotedelim}% + \global\booltrue{usevolpostnotedelim}}% + \usebibmacro{pages}} + +\newbibmacro*{volume+part}{% + \iffieldundef{volume} + {} + {\iftoggle{blx@usevolume} + {} + {\printfield{volume}% + \setunit{\addperiod}% + \printfield{part}% + \global\booltrue{usevolpostnotedelim}}}} + +\renewbibmacro*{urldate}{% + \iftoggle{blx@accessdate} + {\iffieldundef{urlyear} + {} + {\printurldate}} + {}} + +\newbibmacro*{reprint}{% + \ifboolexpr{ + not test {\iffieldundef{origpublisher}} + or + not test {\iffieldundef{origlocation}} + or + not test {\iffieldundef{origyear}} + } + {\usebibmacro{origpublisher+location+date}% + \ifbibliography + {\setunit{\addperiod\space}} + {\setunit{\addsemicolon\space}}% + \bibstring{reprint}% + \setunit{\addcomma\addspace}} + {}} + +% ------------------------------------------------------------------ +% DATE MACROS +% ------------------------------------------------------------------ + +\renewbibmacro*{date}{% + \printdate + \setunit{\addcomma\addspace}% + \printfield{pubstate}} + +\newbibmacro*{origdate}{\printorigdate} + +\newbibmacro*{eprintdate}{\printeprintdate} + +\newbibmacro*{patentdate}{% + \iffieldundef{year} + {} + {\bibstring{patentfiled}% + \setunit{\addspace}% + \printdate + \setunit{\addcomma\addspace}}% + \printfield{pubstate}} + +\renewbibmacro*{doi+eprint+url}{% + \iftoggle{bbx:eprint} + {\usebibmacro{eprint}} + {}% + \newunit\newblock + \usebibmacro{urldate}% + \newunit + \iftoggle{bbx:doi} + {\printfield{doi}} + {}% + \newunit + \iftoggle{bbx:url} + {\printfield{url}} + {}} + +\newbibmacro*{ebook}{% + \iftoggle{bbx:eprint} + {\iffieldequalstr{eprinttype}{ebook} + {\usebibmacro{eprint}% + \clearfield{eprint}} + {}} + {}} + +\newbibmacro*{isbn}{% + \iftoggle{bbx:isbn} + {\printfield{isbn}} + {}} + +\newbibmacro*{isrn}{% + \iftoggle{bbx:isbn} + {\printfield{isrn}} + {}} + +\newbibmacro*{issn}{% + \iftoggle{bbx:isbn} + {\printfield{issn}} + {}} + +% ------------------------------------------------------------------ +% RELATED MACROS +% ------------------------------------------------------------------ + +\csundef{abx@ffd@*@related:multivolume} +\csundef{abx@ffd@*@related:origpubin} +\csundef{abx@ffd@*@related:origpubas} +\csundef{abx@ffd@*@relatedstring:reprintfrom} +\csundef{abx@macro@related:multivolume} +%\csundef{abx@macro@related:bytranslator} +\csundef{abx@macro@related:origpubas} +\csundef{abx@macro@related:origpubin} +\csundef{abx@macro@related:reprintfrom} + +\renewbibmacro*{begrelated}{% + \global\booltrue{bbx@inset}} + +\renewbibmacro*{endrelated}{% + \global\boolfalse{bbx@inset}% + \usebibmacro*{savehash}} + +\renewbibmacro*{related:default}[1]{% + \entrydata*{#1}{% + \usedriver + {\ifnameundef{savedauthor} + {\ifnameundef{savededitor} + {} + {\ifnamesequal{editor}{savededitor} + {\clearname{editor}} + {}}} + {\ifnamesequal{author}{savedauthor} + {\clearname{author}} + {}}% + \renewbibmacro*{related:init}{% + \ifnameundef{savedauthor} + {} + {\restorename{author}{\abx@name@savedauthor}}% + \ifnameundef{savededitor} + {} + {\restorename{editor}{\abx@namesavededitor}}}% + \DeclareNameAlias{sortname}{default}}% + {\ifbibliography + {\thefield{entrytype}} + {cite:\thefield{entrytype}}}% + \setunit{\relateddelim}% + \usebibmacro{related}}} + +\newbibmacro*{related:reprint}[1]{% + \entrydata*{#1}{% + \usedriver + {\renewbibmacro*{related:init}{}% + \ifbibliography + {\renewbibmacro*{parens+publisher+location+date}{% + \newunit + \usebibmacro{publisher+location+date}}} + {}} + {\ifbibliography + {\thefield{entrytype}} + {cite:\thefield{entrytype}}}}} + +\newbibmacro*{related:ancienttext}[1]{% + \global\togglefalse{blx@testpostnotedelim}% + \togglefalse{blx@citeindex}% + \ifciteseen{\let\ifciteseen\@firstoftwo}{}% + \entrydata*{#1}{% + \usebibmacro{ifuseshorthand} + {\usebibmacro{cite:shorthand}% + \usebibmacro{volume}% + \setunit{\addperiod}% + \printfield{part}% + \global\toggletrue{blx@testpostnotedelim}} + {\usedriver{}{cite:\thefield{entrytype}}% + \ifboolexpr{ + test {\ifciteseen} + and + not togl {blx@useshorttitle} + } + {\global\toggletrue{blx@testpostnotedelim}} + {}}}} + +% ------------------------------------------------------------------ +% ANCIENT AND CLASSIC TEXT MACROS +% ------------------------------------------------------------------ + +\newtoggle{blx@testpostnotedelim} + +\newbibmacro*{volume+part+postnote}{% + \usebibmacro{volume}% + \iffieldundef{part} + {} + {\setunit{\addperiod}% + \printfield{part}}% + \iftoggle{blx@testpostnotedelim}{\usebibmacro{setpostnotedelim}}{}% + \ifbool{usevolpostnotedelim} + {\setunit{\volpostnotedelim}} + {\setunit{\postnotedelim}}% + \ifboolexpr{ + test {\ifciteseen} + or + test {\iffieldundef{pages}} + } + {\printfield{postnote}} + {\usebibmacro{pages}}% + \global\booltrue{suppresspostnote}} + +\newbibmacro*{classic:translator+series}{% + \ifnameundef{translator} + {} + {\setunit{\addspace}% + \printtext[parens]{% + \printnames[labelname]{translator}% + \iftoggle{blx@useseries} + {\newunit + \usebibmacro{shortseries}} + {}}}} + +% ------------------------------------------------------------------ +% ALTERNATE POSTNOTE MACROS +% ------------------------------------------------------------------ + +\ExplSyntaxOn +\DeclareDocumentCommand{\savepostnotes}{d() u{++}}{ + \IfValueT {#1} { \gdef\postnotefirst{#1} } + \tl_if_empty:nF {#2} { \gdef\postnotelast{#2} } +} +\cs_new:Npn \_biblatexsbl_splitpostnote:n #1 { \savepostnotes #1++ } +\cs_generate_variant:Nn \_biblatexsbl_splitpostnote:n { o } +\cs_new_eq:NN \splitpostnote \_biblatexsbl_splitpostnote:o +\ExplSyntaxOff + +\newrobustcmd*{\volsplitpostnote}[2]{% + \gdef\volvol{#1}% + \gdef\abx@field@volpostnote{#2}% + \iffieldundef{volpostnote} + {} + {\splitpostnote{\abx@field@volpostnote}}} + +\def\setuppostnotes{% + \global\undef\postnotefirst + \global\undef\postnotelast + \iftoggle{cbx:involcite} + {\expandafter\volsplitpostnote\abx@field@postnote}% + {\splitpostnote{\abx@field@postnote}}} + +\renewbibmacro*{prenote}{% + \iffieldundef{postnote} + {} + {\setuppostnotes + \iftoggle{cbx:involcite} + {\ifdefined\postnotelast + \def\abx@field@postnote{{\volvol}{\postnotelast}}% + \else + \def\abx@field@postnote{{\volvol}{}}% + \fi} + {\restorefield{postnote}{\postnotelast}}% + \restorefield{altpostnote}{\postnotefirst}}% + \iffieldundef{prenote} + {} + {\printfield{prenote}% + \setunit{\prenotedelim}}} + +\DeclareFieldFormat{altpostnote}{\mkcomprange{#1}} + +% ------------------------------------------------------------------ +% BIBLIOGRAPHY REPEATED AUTHOR MACROS +% ------------------------------------------------------------------ + +\newbool{bbx@inset} + +\renewcommand*{\bibnamedash}{% + \leavevmode\raise 0.6ex\hbox to 3em{\hrulefill}\namedashpunct} + +\newbibmacro*{bbx:dashcheck}[2]{% + \ifboolexpr{ + test {\iffieldequals{fullhash}{\bbx@lasthash}} + and + not test \iffirstonpage + and + ( + not bool {bbx@inset} + or + test {\iffieldequalstr{entrysetcount}{1}} + ) + and togl {blx@dashed} + } + {#1} + {#2}} + +\newbibmacro*{cbx:dashcheck}[2]{#2} + +\newbibmacro*{dashcheck}[2]{% + \usebibmacro{cbx:dashcheck}{#1}{#2}} + +\newbibmacro*{savehash}{} + +% ------------------------------------------------------------------ +% ENTRY SET MACROS +% ------------------------------------------------------------------ + +\def\blx@entryset#1{% + \blx@ifdata{#1} + {\begingroup + \blx@imc@clearlist{pageref}% + \blx@getdata{#1}% + \blx@setoptions@type\abx@field@entrytype + \def\abx@field@entrysetcount{1}% + \blx@entryset@precode + \ifbibliography + {\blx@driver{\blx@imc@thefield{entrytype}}} + {\blx@driver{cite:\blx@imc@thefield{entrytype}}}% + \blx@entryset@postcode + \endgroup} + {}% + \let\do\blx@entryset@i} + +\def\blx@entryset@i#1{% + \blx@ifdata{#1} + {\begingroup + \blx@resetdata + \blx@getdata{#1}% + \blx@entrysetcount + \blx@setoptions@type\abx@field@entrytype + \blx@setoptions@entry + \addtocounter{instcount}\@ne + \blx@execute + \blx@beglangbib + \blx@begunit + \blx@entryset@precode + \ifbibliography + {\blx@driver{\blx@imc@thefield{entrytype}}} + {\blx@driver{cite:\blx@imc@thefield{entrytype}}}% + \blx@entryset@postcode + \blx@endunit + \blx@endlangbib + \endgroup} + {\blx@nounit}} + +% ------------------------------------------------------------------ +% INDEXING MACROS +% ------------------------------------------------------------------ + +\renewbibmacro*{bibindex}{% + \ifbibindex + {\indexnames{labelname}} + {}} + +\renewbibmacro*{citeindex}{% + \ifciteindex + {\indexnames{labelname}} + {}} |