diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/biblatex-sbl/biblatex-sbl.def')
-rw-r--r-- | Master/texmf-dist/tex/latex/biblatex-sbl/biblatex-sbl.def | 1940 |
1 files changed, 1940 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/biblatex-sbl/biblatex-sbl.def b/Master/texmf-dist/tex/latex/biblatex-sbl/biblatex-sbl.def new file mode 100644 index 00000000000..acee0035a08 --- /dev/null +++ b/Master/texmf-dist/tex/latex/biblatex-sbl/biblatex-sbl.def @@ -0,0 +1,1940 @@ +\RequireBibliographyStyle{standard} +\RequireBiber[3] + +% BibLaTeX version 3.5 or greater required +\newdimen \biblatex@version +\biblatex@version = \abx@version pt +\ifdim \biblatex@version < 3.45pt + \PackageError{biblatex-sbl}{BibLaTeX v3.5 or greater is required} +\fi + +% Require xparse +\RequirePackage{xparse} + +% ------------------------------------------------------------------ +% VERSION STRINGS +% ------------------------------------------------------------------ + +\def\sbl@abx@date{2016/10/11} +\def\sbl@abx@version{0.7} +\def\sbl@abx@bbxid{\sbl@abx@date\space v\sbl@abx@version\space biblatex-sbl bibliography style} +\def\sbl@abx@cbxid{\sbl@abx@date\space v\sbl@abx@version\space biblatex-sbl citation style} +\def\sbl@abx@lbxid{\sbl@abx@date\space v\sbl@abx@version\space biblatex-sbl localization} +\def\sbl@abx@defid{\sbl@abx@date\space v\sbl@abx@version\space biblatex-sbl definitions and macros} + +\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} + {} + {\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} + {} + {\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} + {} + {\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} + {} + {\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 +% ------------------------------------------------------------------ + +% only use idem within footnote +\let\cbx@ifmpfncheck\blx@ifmpfncheck +\patchcmd{\cbx@ifmpfncheck}{\tw@}{\@ne}{}{} +\let\cbx@ifciteidem@constrict\blx@ifciteidem@constrict +\patchcmd{\cbx@ifciteidem@constrict}{\blx@ifmpfncheck}{\cbx@ifmpfncheck}{}{} + +\def\blx@opt@idemtracker@constrict{% + \let\blx@imc@ifciteidem\cbx@ifciteidem@constrict + \let\blx@idemtracker\blx@idemtracker@constrict + \let\blx@idemreset\blx@idemreset@context + \booltrue{citetracker}} + +\newbibmacro*{ifidemused}{% + \ifciteidem + {\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@useshorttitle} + +\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}} + +\def\blx@shorthand{} +\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}}} + +\ExecuteBibliographyOptions{% + citetracker, + punctfont, + alldates=comp, + releasedate=comp, + dateabbrev=false, + autocite=footnote, + url, + related, + minxrefs=1, + isbn=false, + ibidtracker=false, + ibidpage=false, + maxbibnames=99, + maxcitenames=3, + citepages=sbl, + fullbibrefs=false, + sblfootnotes, + usefullcite, + useshorttitle, + usevolume +} + +\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{to} +\NewBibliographyString{of} +\NewBibliographyString{with} +\NewBibliographyString{withassistance} +\NewBibliographyString{withpreface} +\NewBibliographyString{paperpresented} +\NewBibliographyString{released} + +\DeclareLanguageMapping{english}{sbl-american} +\DeclareLanguageMapping{american}{sbl-american} +\DeclareLanguageMapping{british}{sbl-british} +\DeclareLanguageMapping{german}{sbl-german} +\DeclareLanguageMapping{spanish}{sbl-spanish} + +\renewcommand*{\subtitlepunct}{\addcolon\space} +\newcommand*{\namedashpunct}{\adddot\space} +\newcommand*{\lexiconfinalnamedelim}{\addcomma\space} +\renewcommand*{\relateddelim}{\addsemicolon\space} + +\setcounter{mincompwidth}{10} + +\DeclareFieldFormat{doi}{% + \printtext{doi}\addcolon + \ifhyperref + {\href{http://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 + \ifhyperref + {\url{#1}} + {\nolinkurl{#1}}% + \iffieldundef{eprintclass} + {} + {\addspace\mkbibparens{\thefield{eprintclass}}}} +\DeclareFieldFormat{eprint:arxiv}{% + arXiv\addcolon\space + \ifhyperref + {\href{http://arxiv.org/\abx@arxivpath/#1}{% + \nolinkurl{#1}% + \iffieldundef{eprintclass} + {} + {\addspace\mkbibbrackets{\thefield{eprintclass}}}}} + {\nolinkurl{#1} + \iffieldundef{eprintclass} + {} + {\addspace\mkbibbrackets{\thefield{eprintclass}}}}} +\DeclareFieldFormat{eprint:hethiter}{% + \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{seriesseries}{#1} + +\DeclareFieldFormat{pages}{\mkcomprange{#1}} +\DeclareFieldFormat{pagesin}{\mkcomprange[\mkpageprefix]{#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}{} +\DeclareFieldFormat{releasedate}{\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{howpublished}{\ifbibstring{#1}{\bibstring{#1}}{#1}} +\DeclareFieldFormat[ancienttext]{title}{% + \ifboolexpr{ + test {\iffieldequalstr{entrysubtype}{inscription}} + or + test {\iffieldequalstr{entrysubtype}{chronicle}} + } + {#1} + {\iffieldequalstr{entrysubtype}{churchfather} + {\mkbibemph{#1}} + {\mkbibquote{#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{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} + +\DeclareLabeldate{% + \field{releasedate} +} + +\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{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}}}}}} + +\DeclareSortingScheme{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 +% ------------------------------------------------------------------ + +\DeclareSourcemap{ + \maps{ + \map{ + \step[fieldsource=title, match=\regexp{(.*?):}, final] + \step[fieldset=shorttitle, fieldvalue={$1}] + } + \map{ + \step[fieldsource=revdtitle, match=\regexp{(.*?):}, final] + \step[fieldset=revdshorttitle, fieldvalue={$1}] + } + \map{ + \step[fieldsource=entrysubtype, match=\regexp{ANRW}, final] + \step[fieldset=options, fieldvalue={skipbib=false}] + } + \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} + {book,inbook,collection,incollection,reference,inreference,bookinbook, + lexicon,commentary,inlexicon,incommentary,classictext}{% + \inherit{title}{maintitle} + \inherit{subtitle}{mainsubtitle} + \inherit{titleaddon}{maintitleaddon} + \inherit{shorttitle}{shortmaintitle} + \inherit{editor}{maineditor} + \inherit{translator}{maintranslator} + \noinherit{sorttitle} + \noinherit{indextitle} + \noinherit{indexsorttitle} + \noinherit{endyear} +} + +\DeclareDataInheritance{book,collection,reference,lexicon,commentary} + {inbook,incollection,inreference, inlexicon,incommentary, + bookinbook,classictext}{% + \inherit{title}{booktitle} + \inherit{subtitle}{booksubtitle} + \inherit{titleaddon}{booktitleaddon} + \inherit{shorttitle}{shortbooktitle} + \inherit{author}{bookauthor} + \inherit{editor}{bookeditor} + \inherit{translator}{booktranslator} + \noinherit{sorttitle} + \noinherit{indextitle} + \noinherit{indexsorttitle} + \noinherit{endyear} +} + + +% ------------------------------------------------------------------ +% LANGUAGE +% ------------------------------------------------------------------ +% - use literals for origlanguage if no translation found +% ------------------------------------------------------------------ + +\renewcommand*{\lbx@lfromlang}{% + \iffieldundef{origlanguage} + {\unspace} + {\ifbibxstring{from\abx@field@origlanguage} + {\biblstring{from\thefield{origlanguage}}} + {from \printfield{origlanguage}}}} + +\renewcommand*{\lbx@sfromlang}{% + \iffieldundef{origlanguage} + {\unspace} + {\ifbibstring{from\thefield{origlanguage}} + {\bibsstring{from\thefield{origlanguage}}} + {from \printfield{origlanguage}}}} + +% ------------------------------------------------------------------ +% SET UP DELIMITER MACROS +% ------------------------------------------------------------------ + +\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}{% + \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}} + +% ------------------------------------------------------------------ +% TITLE MACROS +% ------------------------------------------------------------------ + +\newbibmacro*{shorttitle}{% + \iftoggle{blx@useshorttitle} + {\iffieldundef{shorttitle} + {\iffieldundef{title} + {} + {\printtext[bibhyperlink]{% + \printtext[title]{\printfield[titlecase]{title}}}}} + {\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}}}% + \newunit} + {}} + +\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 + {\ifboolexpr{ + test {\ifnameundef{author}} + and + not test {\ifnameundef{editor}} + } + {} + {\usebibmacro{shorttitle}}} + {\ifboolexpr{ + test {\iffieldundef{title}} + and + test {\iffieldundef{subtitle}} + } + {} + {\printtext[title]{% + \printfield[titlecase]{title}% + \setunit{\subtitlepunct}% + \printfield[titlecase]{subtitle}}% + \newunit}% + \printfield{titleaddon}}} + +\renewbibmacro*{booktitle}{% + \ifciteseen + {\usebibmacro{shortbooktitle}} + {\ifboolexpr{ + test {\iffieldundef{booktitle}} + and + test {\iffieldundef{booksubtitle}} + } + {} + {\printtext[booktitle]{% + \printfield[titlecase]{booktitle}% + \setunit{\subtitlepunct}% + \printfield[titlecase]{booksubtitle}}% + \newunit}% + \printfield{booktitleaddon}}} + +\renewbibmacro*{maintitle}{% + \ifciteseen + {\usebibmacro{shortmaintitle}} + {\ifboolexpr{ + test {\iffieldundef{maintitle}} + and + test {\iffieldundef{mainsubtitle}} + } + {} + {\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*{shortbooktitle+shortmaintitle}{% + \iffieldundef{booktitle} + {\iffieldundef{maintitle} + {} + {\usebibmacro{shortmaintitle} + \newunit}} + {\usebibmacro{shortbooktitle}% + \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}} + {\ifboolexpr{ + test {\iffieldundef{revdtitle}} + and + test {\iffieldundef{revdsubtitle}} + } + {} + {\printtext[revdtitle]{% + \printfield[titlecase]{revdtitle}% + \setunit{\subtitlepunct}% + \printfield[titlecase]{revdsubtitle}}% + \newunit}% + \printfield{revdtitleaddon}}} + +\newbibmacro*{xrefshortbooktitle+xrefshortmaintitle}{% + \iffieldundef{xref} + {\usebibmacro{shortbooktitle+shortmaintitle}} + {\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+issuetitle}{% + \usebibmacro{shortjournal}% + \iffieldundef{series} + {} + {\newunit + \printfield{series}}% + \usebibmacro{volume+number+eid}% + \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} + {\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}}}} + +\renewbibmacro*{volume+number+eid}{% + \setunit*{\addspace}% + \printfield{volume}% + \setunit*{\addperiod}% + \printfield{number}% + \setunit{\addcomma\space}% + \printfield{eid}} + +\newbibmacro*{volume+part}{% + \iffieldundef{volume} + {} + {\iffieldundef{part} + {\usebibmacro{volumeof}} + {\printfield[vol]{volume}% + \setunit{\addcomma\addspace}% + \iffieldundef{maintitle} + {\printfield[pt]{part}% + \newunit} + {\printfield[partof]{part} + \setunit{\addspace}}}}} + +\newbibmacro*{involume+part}{% + \ifboolexpr{ + test {\iffieldundef{booktitle}} + and + not test {\iffieldundef{volume}} + and + test {\iffieldundef{pages}} + } + {\bibstring{in}% + \setunit{\space}} + {}% + \usebibmacro{volume+part}} + +% ------------------------------------------------------------------ +% 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{\space}% + \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}}% + }{% + \iffieldundef{authortype} + {\renewcommand*{\namedashpunct}{\adddot\space}} + {\renewcommand*{\namedashpunct}{\addcomma\space}}% + \usebibmacro{dashcheck} + {\bibnamedash} + {\usebibmacro{ifidemused} + {} + {\printnames{author}% + \usebibmacro{savehash}}}% + \iffieldundef{authortype} + {} + {\setunit{\addcomma\space}% + \usebibmacro{authorstrg}}% + \usebibmacro{withname}{author}}} + {\global\undef\bbx@lasthash}} + +\renewbibmacro*{bybookauthor}{% + \ifboolexpr{ + test {\ifnameundef{bookauthor}} + or + test {\ifnamesequal{author}{bookauthor}} + } + {} + {\usebibmacro{bytypestrg}{author}{author}% + \setunit{\addspace}% + \printnames[byauthor]{bookauthor}% + \usebibmacro{withname}{author}}% +} + +\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*{byeditor}{% + \ifnameundef{editor} + {} + {\usebibmacro{bytypestrg}{editor}{editor}% + \setunit{\addspace}% + \printnames[byeditor]{editor}% + \usebibmacro{withname}{editor}% + \newunit}% + \usebibmacro{byeditorx}} + +\renewbibmacro*{byeditor+others}{% + \ifnameundef{editor} + {} + {\usebibmacro{byeditor+othersstrg}% + \setunit{\addspace}% + \printnames[byeditor]{editor}% + \clearname{editor}% + \usebibmacro{withname}{editor}% + \newunit}% + \usebibmacro{byeditorx}% + \usebibmacro{bytranslator+others}} + +\renewbibmacro*{bytranslator}{% + \ifnameundef{translator} + {} + {\bibstring{bytranslator}% + \setunit{\addspace}% + \printnames[bytranslator]{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*{bybookeditor+others}{% + \ifnameundef{editor} + {} + {\usebibmacro{byeditor+othersstrg}% + \setunit{\addspace}% + \printnames[byeditor]{editor}% + \clearname{editor}% + \usebibmacro{withname}{editor}% + \newunit}% + \ifnameundef{bookeditor} + {} + {\usebibmacro{byeditor+othersstrg}% + \setunit{\addspace}% + \printnames[byeditor]{bookeditor}% + \clearname{bookeditor}% + \usebibmacro{withname}{bookeditor}% + \newunit}% + \usebibmacro{byeditorx}% + \usebibmacro{bybooktranslator+others}} + +\newbibmacro*{bymaineditor+others}{% + \ifnameundef{editor} + {} + {\usebibmacro{byeditor+othersstrg}% + \setunit{\addspace}% + \printnames[byeditor]{editor}% + \clearname{editor}% + \usebibmacro{withname}{editor}% + \newunit}% + \ifnameundef{maineditor} + {} + {\usebibmacro{byeditor+othersstrg}% + \setunit{\addspace}% + \printnames[byeditor]{maineditor}% + \clearname{maineditor}% + \usebibmacro{withname}{maineditor}% + \newunit}% + \usebibmacro{byeditorx}% + \usebibmacro{bymaintranslator+others}} + +\newbibmacro*{bybooktranslator+others}{% + \ifnameundef{translator} + {} + {\usebibmacro{bytranslator+othersstrg}% + \setunit{\addspace}% + \printnames[bytranslator]{translator}% + \clearname{translator}% + \usebibmacro{withname}{translator}% + \newunit}% + \ifnameundef{booktranslator} + {} + {\usebibmacro{bytranslator+othersstrg}% + \setunit{\addspace}% + \printnames[bytranslator]{booktranslator}% + \clearname{booktranslator}% + \usebibmacro{withname}{booktranslator}% + \newunit}% + \usebibmacro{withothers}} + +\newbibmacro*{bymaintranslator+others}{% + \ifnameundef{translator} + {} + {\usebibmacro{bytranslator+othersstrg}% + \setunit{\addspace}% + \printnames[bytranslator]{translator}% + \clearname{translator}% + \usebibmacro{withname}{translator}% + \newunit}% + \ifnameundef{maintranslator} + {} + {\usebibmacro{bytranslator+othersstrg}% + \setunit{\addspace}% + \printnames[bytranslator]{maintranslator}% + \clearname{maintranslator}% + \usebibmacro{withname}{maintranslator}% + \newunit}% + \usebibmacro{withothers}} + +\newbibmacro*{revdauthor}{% + \ifboolexpr{ + test \ifuseauthor + and + not test {\ifnameundef{revdauthor}} + } + {\bibstring{byauthor}% + \setunit{\addspace}% + \ifciteseen{% + \printnames[labelname]{revdauthor}% + }{% + \printnames{revdauthor}% + \iffieldundef{authortype} + {} + {\setunit{\addcomma\space}% + \usebibmacro{authorstrg}}}} + {}} + +\newbibmacro*{revdeditor}{% + \ifboolexpr{ + test \ifuseeditor + and + not test {\ifnameundef{revdeditor}} + } + {\bibsstring{byeditor}% + \setunit{\addspace}% + \ifciteseen{% + \printnames[labelname]{revdeditor}% + }{% + \printnames{revdeditor}% + }% + \clearname{revdeditor}} + {}} + +\newbibmacro*{revdauthor/revdeditor}{% + \ifboolexpr{ + test \ifuseauthor + and + not test {\ifnameundef{revdauthor}} + } + {\usebibmacro{revdauthor}} + {\usebibmacro{revdeditor}}} + + +\newbibmacro*{revdauthor/revdeditor+revdtitle}{% + \biblstring{reviewof}% + \setunit{\addspace}% + \usebibmacro{revdauthor/revdeditor}% + \ifciteseen + {} + {\setunit{\addcomma\space}% + \usebibmacro{revdtitle}}} + +\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} + +\newbibmacro*{eventtitle}{% + \iffieldundef{eventtitle} + {} + {\ifbibliography + {} + {\midsentence}% + \bibstring{paperpresented}% + \setunit{\addspace}% + \printfield{eventtitle}}} + +\newbibmacro*{venue+eventdate}{% + \iffieldundef{venue} + {\printlist{location}} + {\printfield{venue}}% + \setunit{\addcomma\space}% + \iffieldundef{eventyear} + {\printdate} + {\printeventdate}} + +\newbibmacro*{parens+publisher+location+date}{% + \setunit{\space}% + \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{publishertotal} +\newcounter{locationtotal} + +\DeclareListFormat{publisher}{% + \setcounter{publishertotal}{\value{listtotal}}% + \usebibmacro{list:delim}{#1}% + #1\isdot + \ifnumequal{\value{currentpublisher}}{\value{listtotal}} + {\setcounter{currentpublisher}{0}} + {\addtocounter{currentpublisher}{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{currentpublisher}}{0} + {} + {\printlist[][\value{currentpublisher}-\value{currentpublisher}]{publisher}}% + \setunit*{\addsemicolon\space}% + \ifboolexpr{ + test {\ifnumgreater{\value{locationtotal}}{1}} + and + test {\ifnumgreater{\value{currentlocation}}{\value{publishertotal}}} + } + {\setcounter{currentlocation}{0}} + {}% + \ifboolexpr{ + test {\ifnumgreater{\value{currentpublisher}}{0}} + or + test {\ifnumgreater{\value{currentlocation}}{0}} + } + {\usebibmacro{loop:location+publisher}} + {}} + +\newbibmacro*{init:location+publisher}{% + \iflistundef{location} + {\setcounter{currentlocation}{0}} + {\setcounter{currentlocation}{1}}% + \iflistundef{publisher} + {\setcounter{currentpublisher}{0}} + {\setcounter{currentpublisher}{1}}} + +\renewbibmacro*{publisher+location+date}{% + \usebibmacro{reprint}% + \usebibmacro{init:location+publisher}% + \usebibmacro{loop:location+publisher}% + \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} + +\newbibmacro*{volume}{% + \iffieldundef{volume} + {} + {\setunit{\addspace}% + \global\booltrue{usevolpostnotedelim}% + \printfield{volume}% + \newunit}} + +\newbibmacro*{volumeof}{% + \iffieldundef{volume} + {} + {\iffieldundef{part} + {\iffieldundef{maintitle} + {\ifboolexpr{ + test {\iftoggle{blx@usevolume}} + or + test {\ifbibliography} + } + {\printfield[vol]{volume}% + \newunit} + {}} + {\printfield[volumeof]{volume}% + \setunit{\addspace}}} + {}}}% + +\newbibmacro*{volume+pages}{% + \iffieldundef{volume} + {} + {\setunit{\addspace}% + \printfield{volume}% + \setunit{\volpostnotedelim}} + \usebibmacro{pages}} + +\newbibmacro*{volume+part+pages}{% + \ifboolexpr{ + test {\iffieldundef{volume}} + or + test {\iffieldundef{part}} + } + {} + {\printfield{volume}% + \setunit{\addperiod}% + \printfield{part}% + \setunit{\volpostnotedelim}} + \usebibmacro{pages}} + +\newbibmacro*{volume+part+nomaintitle}{% + \iffieldundef{volume} + {} + {\iftoggle{blx@usevolume} + {} + {\printfield{volume}% + \setunit{\addperiod}% + \printfield{part}% + \global\booltrue{usevolpostnotedelim}}}} + +\renewbibmacro*{url+urldate}{% + \iffieldundef{urlyear} + {} + {\printurldate}% + \newunit + \printfield{url}} + +\newbibmacro*{ebookedition}{% + \iffieldundef{ebookedition} + {} + {\printfield{ebookedition}}} + +\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}} + {}} + +\renewbibmacro*{date}{% + \printdate + \setunit{\addcomma\addspace}% + \printfield{pubstate}} + +\newbibmacro*{origdate}{\printorigdate} + +\newbibmacro*{releasedate}{\printreleasedate} + + +% ------------------------------------------------------------------ +% 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}} + {}}}} + +\newbibmacro*{ifuseshorthand}{% + \iffieldundef{shorthand} + {\@secondoftwo} + {\ifcsstring{blx@shorthand}{false} + {\@secondoftwo} + {\ifciteseen + {\@firstoftwo} + {\ifcsstring{blx@shorthand}{short} + {\@secondoftwo} + {\@firstoftwo}}}}} + + +% ------------------------------------------------------------------ +% 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}}% + \usebibmacro{postnote}% + \global\booltrue{suppresspostnote}} + +\newbibmacro*{classic:translator+series}{% + \ifboolexpr{ + not test {\ifnameundef{translator}} + or + not test {\iffieldundef{series}} + } + {\setunit{\addspace}% + \printtext[parens]{% + \printnames[labelname]{translator}% + \newunit + \usebibmacro{shortseries+number}}} + {}} + + +% ------------------------------------------------------------------ +% ALTERNATE POSTNOTE MACROS +% ------------------------------------------------------------------ + +\ExplSyntaxOn +\cs_generate_variant:Nn \__xparse_split_argument:nnn { nno } +\cs_new_eq:NN \eSplitArgument \__xparse_split_argument:nno +\DeclareDocumentCommand \splitpostnote +{ > { \eSplitArgument { 1 } { | } } m } +{ \savepostnotes #1 } +\DeclareDocumentCommand{\savepostnotes}{mm}{% + \IfNoValueTF{#2} + {\gdef\postnotelast{#1}} + {\tl_if_empty:nF {#1} + {\gdef\postnotefirst{#1}}% + \tl_if_empty:nF {#2} + {\gdef\postnotelast{#2}}}} +\ExplSyntaxOff + +\def\setuppostnotes{% + \global\undef\postnotefirst + \global\undef\postnotelast + \splitpostnote{\abx@field@postnote}} + +\renewbibmacro*{prenote}{% + \iffieldundef{postnote} + {} + {\setuppostnotes + \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}} + ) + } + {#1} + {#2}} + +\newbibmacro*{cbx:dashcheck}[2]{#2} + +\newbibmacro*{dashcheck}[2]{% + \usebibmacro{cbx:dashcheck}{#1}{#2}} + +\newbibmacro*{savehash}{} + +% ------------------------------------------------------------------ +% ENTRY SET MACROS +% ------------------------------------------------------------------ + +\def\cbx@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 + \blx@driver{cite:\blx@imc@thefield{entrytype}}% + \blx@entryset@postcode + \endgroup} + {}% + \let\do\cbx@entryset@i} + +\def\cbx@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 + \blx@driver{cite:\blx@imc@thefield{entrytype}} + \blx@entryset@postcode + \blx@endunit + \blx@endlangbib + \endgroup} + {\blx@nounit}} + +\def\bbx@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 + \blx@driver{\blx@imc@thefield{entrytype}}% + \blx@entryset@postcode + \endgroup} + {}% + \let\do\bbx@entryset@i} + +\def\bbx@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 + \blx@driver{\blx@imc@thefield{entrytype}} + \blx@entryset@postcode + \blx@endunit + \blx@endlangbib + \endgroup} + {\blx@nounit}} + + +\def\blx@entryset#1{\cbx@entryset{#1}} +\def\blx@entryset@i#1{\cbx@entryset@i{#1}} + +% ------------------------------------------------------------------ +% INDEXING MACROS +% ------------------------------------------------------------------ + +\renewbibmacro*{bibindex}{% + \ifbibindex + {\indexnames{labelname}} + {}} + +\renewbibmacro*{citeindex}{% + \ifciteindex + {\indexnames{labelname}} + {}} |