diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/biblatex-chicago/chicago-notes.bbx')
-rw-r--r-- | Master/texmf-dist/tex/latex/biblatex-chicago/chicago-notes.bbx | 2984 |
1 files changed, 2644 insertions, 340 deletions
diff --git a/Master/texmf-dist/tex/latex/biblatex-chicago/chicago-notes.bbx b/Master/texmf-dist/tex/latex/biblatex-chicago/chicago-notes.bbx index b132de4700c..e14d9114aaf 100644 --- a/Master/texmf-dist/tex/latex/biblatex-chicago/chicago-notes.bbx +++ b/Master/texmf-dist/tex/latex/biblatex-chicago/chicago-notes.bbx @@ -1,10 +1,8 @@ -% $Id: chicago-notes.bbx,v 0.10.1.14 2018/01/11 09:17:35 dfussner Exp $ -% This is a biblatex style file, adapted mainly from Lehman's standard.bbx -% It provides the bibliography formatting for the Chicago notes + -% bibliography style. +% This is a biblatex style file, originally adapted mainly from +% Lehman's standard.bbx. It provides the bibliography formatting for +% the Chicago notes + bibliography style. - -\ProvidesFile{chicago-notes.bbx}[2018/01/11 v 3.10 biblatex bibliography style] +\ProvidesFile{chicago-notes.bbx}[2020/04/20 v 3.14 biblatex bibliography style] %%%% Initialize and format bibliography and los %%%% @@ -13,6 +11,8 @@ \DeclareFieldFormat{shorthandwidth}{#1} +\DeclareFieldFormat{shortserieswidth}{#1} + \DeclareFieldFormat{shortjournalwidth}{% \ifthenelse{\ifentrytype{jurisdiction}\OR% \ifentrytype{legal}\OR\ifentrytype{legislation}}% @@ -33,7 +33,7 @@ \defbibenvironment{shorthand}% {\list - {\printfield[shorthandwidth]{shorthand}}% + {\cmsshhyper{\printfield[shorthandwidth]{shorthand}}}% {\setlength{\labelwidth}{\shorthandwidth}% \setlength{\leftmargin}{\labelwidth}% \setlength{\labelsep}{\biblabelsep}% @@ -44,22 +44,9 @@ {\endlist} {\item} -\defbibenvironment{shorthands}% For biblatex < 2.9 - {\list - {\printfield[shorthandwidth]{shorthand}}% - {\setlength{\labelwidth}{\shorthandwidth}% - \setlength{\leftmargin}{\labelwidth}% - \setlength{\labelsep}{\biblabelsep}% - \addtolength{\leftmargin}{\labelsep}% - \setlength{\itemsep}{\lositemsep}% - \setlength{\parsep}{\bibparsep}% - \renewcommand*{\makelabel}[1]{##1\hss}}} - {\endlist} - {\item} - \defbibenvironment{losnotes} {\list - {\printfield[shorthandwidth]{shorthand}}% + {\cmsshhyper{\printfield[shorthandwidth]{shorthand}}}% {\footnotesize% \setlength{\labelwidth}{\shorthandwidth}% \setlength{\leftmargin}{\labelwidth}% @@ -73,7 +60,7 @@ \defbibenvironment{losendnotes} {\list - {\printfield[shorthandwidth]{shorthand}}% + {\cmsshhyper{\printfield[shorthandwidth]{shorthand}}}% {\enotesize% \setlength{\labelwidth}{\shorthandwidth}% \setlength{\leftmargin}{\labelwidth}% @@ -144,6 +131,57 @@ % {\savefield{shortjournal}{\cms@shjour}}}% % {\savefield{shortjournal}{\cms@shjour}}} +\defbibenvironment{shortseries}% + {\list + {\printfield[shortserieswidth]{shortseries}}% + {\setlength{\labelwidth}{\shortserieswidth}% + \setlength{\leftmargin}{\labelwidth}% + \setlength{\labelsep}{.7\biblabelsep}% + \addtolength{\leftmargin}{\labelsep}% + \setlength{\itemsep}{\lositemsep}% + \setlength{\parsep}{\bibparsep}% + \renewcommand*{\makelabel}[1]{##1\hss}}} + {\endlist} + {\item} + +\defbibenvironment{shsernotes}% + {\list + {\printfield[shortserieswidth]{shortseries}}% + {\footnotesize% + \setlength{\labelwidth}{\shortserieswidth}% + \setlength{\leftmargin}{\labelwidth}% + \setlength{\labelsep}{.3\biblabelsep}% + \addtolength{\leftmargin}{\labelsep}% + \setlength{\itemsep}{\lositemsep}% + \setlength{\parsep}{\bibparsep}% + \renewcommand*{\makelabel}[1]{##1\hss}}} + {\endlist} + {\item} + +\defbibenvironment{shserendnotes}% + {\list + {\printfield[shortserieswidth]{shortseries}}% + {\enotesize% + \setlength{\labelwidth}{\shortserieswidth}% + \setlength{\leftmargin}{\labelwidth}% + \setlength{\labelsep}{.3\biblabelsep}% + \addtolength{\leftmargin}{\labelsep}% + \setlength{\itemsep}{\lositemsep}% + \setlength{\parsep}{\bibparsep}% + \renewcommand*{\makelabel}[1]{##1\hss}}} + {\endlist\nopunct\vspace{-\baselineskip}} + {\item} + +\defbibcheck{shortseries}{% Only one list + \ifthenelse{\iffieldundef{shortseries}\OR% + \iffieldundef{series}\OR% + \iffieldsequal{series}{shortseries}}% + {\skipentry}% + {\ifcsdef{\strfield{shortseries}}% + {\skipentry}% + {\savefieldcs{shortseries}% + {\strfield{shortseries}}}}}% + \AtBeginBibliography{% \togglefalse{cms@headlessnote}% \togglefalse{cms@shortnote}% @@ -153,9 +191,7 @@ \AtEveryBibitem{% \global\csundef{@cmsst}% - \iffieldequalstr{pubstate}{reprint}% - {\toggletrue{cms@reprint}}% - {\togglefalse{cms@reprint}}% + \togglefalse{cms@postvol}% MT fix \ifboolexpr{% test {\iffieldundef{origyear}}% or @@ -182,9 +218,6 @@ \AtEveryLositem{% \global\csundef{@cmsst}% - \iffieldequalstr{pubstate}{reprint}% - {\toggletrue{cms@reprint}}% - {\togglefalse{cms@reprint}}% \ifboolexpr{% test {\iffieldundef{origyear}}% or @@ -220,8 +253,10 @@ \let\bbx@lasthash\undefined} %%%% Bibliography-specific bibstrings %%%% - -%% Now in *.lbx %% +% \NewBibliographyString{note,preface,subsection,subsections,selfpublished,% +% commenton,printed,track,choreographer,choreographers,cbychoreographer,% +% bychoreographer}% +%% Now below %% %%%% Author, Editor, Translator, and Compiler Macros %%%% @@ -346,11 +381,19 @@ \newbibmacro*{justauthor}{% \ifthenelse{\ifnameundef{author}\OR\NOT\ifuseauthor}% {\iftoggle{cms@origcite}{}{\let\bbx@lasthash\undefined}}% - {\ifthenelse{\iffieldequals{fullhash}{\bbx@lasthash}\AND\NOT% - \iffirstonpage}% + {\ifboolexpr{% + test {\iffieldequals{fullhash}{\bbx@lasthash}}% + and + not test {\iffirstonpage}% + and + togl {cms@namedash}% + }% {\iffieldundef{nameaddon}% - {\bibnamedash\addperiod\addspace}% - {\bibnamedash\addspace}}% + {\printtext{\bibnamedash}}%\addperiod\addspace + {\printtext{\bibnamedash}% + \ifentrytype{customc}% + {\newunit}% + {\setunit{\addspace}}\printfield{nameaddon}}}% {\iffieldequalstr{authortype}{anon}% {\bibleftbracket\printnames{author}\bibrightbracket% \savefield{fullhash}{\bbx@lasthash}}% @@ -358,16 +401,25 @@ {\bibleftbracket\printnames{author}\addquestion\bibrightbracket% \savefield{fullhash}{\bbx@lasthash}}% {\printnames{author}% + \ifentrytype{customc}% + {\ifbibliography{\newunit}{\newcunit}}% + {\setunit{\addspace}}% + \printfield{nameaddon}% \savefield{fullhash}{\bbx@lasthash}}}}}} \newbibmacro*{moreauthor}{% \ifthenelse{\ifnameundef{author}\OR\NOT\ifuseauthor}% {\usebibmacro{pickeditor}}% - {\ifthenelse{\iffieldequals{fullhash}{\bbx@lasthash}\AND\NOT% - \iffirstonpage}% + {\ifboolexpr{% + test {\iffieldequals{fullhash}{\bbx@lasthash}}% + and + not test {\iffirstonpage}% + and + togl {cms@namedash}% + }% {\iffieldundef{nameaddon}% - {\bibnamedash\addperiod\addspace}% - {\bibnamedash\addspace}}% + {\printtext{\bibnamedash}}%\addperiod\addspace + {\printtext{\bibnamedash}\setunit{\addspace}\printfield{nameaddon}}}% {\iffieldequalstr{authortype}{anon}% {\bibleftbracket\printnames{author}\bibrightbracket% \savefield{fullhash}{\bbx@lasthash}}% @@ -375,6 +427,8 @@ {\bibleftbracket\printnames{author}\addquestion\bibrightbracket% \savefield{fullhash}{\bbx@lasthash}}% {\printnames{author}% + \setunit{\addspace}% + \printfield{nameaddon}% \savefield{fullhash}{\bbx@lasthash}}}}}} \newbibmacro*{pickeditor}{% @@ -384,13 +438,23 @@ \newbibmacro*{moreeditor}{% \ifthenelse{\ifnameundef{editor}\OR\NOT\ifuseeditor}% - {\usebibmacro{picktranslator}}% - {\ifthenelse{\iffieldequals{fullhash}{\bbx@lasthash}\AND\NOT% - \iffirstonpage}% - {\bibnamedash\editordelim}% - {\printnames{editor}\editordelim% - \savefield{fullhash}{\bbx@lasthash}}% - \usebibmacro{editstrg}}} + {\usebibmacro{picktranslator}}% + {\ifboolexpr{% + test {\iffieldequals{fullhash}{\bbx@lasthash}}% + and + not test {\iffirstonpage}% + and + togl {cms@namedash}% + }% + {\iffieldundef{nameaddon}% + {\printtext{\bibnamedash}\editordelim}% + {\printtext{\bibnamedash}\setunit{\addspace}% + \printfield{nameaddon}\editordelim}}% + {\printnames{editor}% + \setunit{\addspace}% + \printfield{nameaddon}\editordelim% + \savefield{fullhash}{\bbx@lasthash}}% + \usebibmacro{editstrg}}} \renewbibmacro*{editor}{% \iftoggle{cms@headlessnote}% @@ -398,28 +462,58 @@ {\ifthenelse{\ifnameundef{namea}\OR\NOT\ifusenamea}% {\ifthenelse{\ifnameundef{editor}\OR\NOT\ifuseeditor}% {\usebibmacro{picktranslator}}% - {\ifthenelse{\iffieldequals{fullhash}{\bbx@lasthash}\AND\NOT% - \iffirstonpage}% - {\bibnamedash\editordelim}% - {\printnames{editor}\editordelim% + {\ifboolexpr{% + test {\iffieldequals{fullhash}{\bbx@lasthash}}% + and + not test {\iffirstonpage}% + and + togl {cms@namedash}% + }% + {\iffieldundef{nameaddon}% + {\printtext{\bibnamedash}\editordelim}% + {\printtext{\bibnamedash}\setunit{\addspace}% + \printfield{nameaddon}\editordelim}}% + {\printnames{editor}% + \setunit{\addspace}% + \printfield{nameaddon}\editordelim% \savefield{fullhash}{\bbx@lasthash}}% \usebibmacro{editstrg}}}% - {\ifthenelse{\iffieldequals{fullhash}{\bbx@lasthash}\AND\NOT% - \iffirstonpage}% - {\bibnamedash\nameadelim}% - {\printnames[sortname]{namea}\nameadelim% + {\ifboolexpr{% + test {\iffieldequals{fullhash}{\bbx@lasthash}}% + and + not test {\iffirstonpage}% + and + togl {cms@namedash}% + }% + {\iffieldundef{nameaddon}% + {\printtext{\bibnamedash}\nameadelim}% + {\printtext{\bibnamedash}\setunit{\addspace}% + \printfield{nameaddon}\nameadelim}}% + {\printnames[sortname]{namea}% + \setunit{\addspace}% + \printfield{nameaddon}\nameadelim% \savefield{fullhash}{\bbx@lasthash}}% \usebibmacro{parteditstrg}}}}% \newbibmacro*{parteditor}{% \ifthenelse{\ifnameundef{namea}\OR\NOT\ifusenamea}% - {\usebibmacro{picktranslator}}% - {\ifthenelse{\iffieldequals{fullhash}{\bbx@lasthash}\AND\NOT% - \iffirstonpage}% - {\bibnamedash\nameadelim}% - {\printnames[sortname]{namea}\nameadelim% - \savefield{fullhash}{\bbx@lasthash}}% - \usebibmacro{parteditstrg}}} + {\usebibmacro{picktranslator}}% + {\ifboolexpr{% + test {\iffieldequals{fullhash}{\bbx@lasthash}}% + and + not test {\iffirstonpage}% + and + togl {cms@namedash}% + }% + {\iffieldundef{nameaddon}% + {\printtext{\bibnamedash}\nameadelim}% + {\printtext{\bibnamedash}\setunit{\addspace}% + \printfield{nameaddon}\nameadelim}}% + {\printnames[sortname]{namea}% + \setunit{\addspace}% + \printfield{nameaddon}\nameadelim% + \savefield{fullhash}{\bbx@lasthash}}% + \usebibmacro{parteditstrg}}} \newbibmacro*{picktranslator}{% \ifthenelse{\ifnameundef{nameb}\OR\NOT\ifusenameb}% @@ -428,31 +522,61 @@ \newbibmacro*{moretranslator}{% \ifthenelse{\ifnameundef{translator}\OR\NOT\ifusetranslator}% - {\usebibmacro{compiler}}% - {\ifthenelse{\iffieldequals{fullhash}{\bbx@lasthash}\AND\NOT% - \iffirstonpage}% - {\bibnamedash\addcomma\addspace}% - {\printnames[sortname]{translator}\addcomma\addspace% - \savefield{fullhash}{\bbx@lasthash}}% - \usebibmacro{transstrg}}} + {\usebibmacro{compiler}}% + {\ifboolexpr{% + test {\iffieldequals{fullhash}{\bbx@lasthash}}% + and + not test {\iffirstonpage}% + and + togl {cms@namedash}% + }% + {\iffieldundef{nameaddon}% + {\printtext{\bibnamedash}\newcunit}% + {\printtext{\bibnamedash}\setunit{\addspace}% + \printfield{nameaddon}\newcunit}}% + {\printnames[sortname]{translator}% + \setunit{\addspace}% + \printfield{nameaddon}\newcunit% + \savefield{fullhash}{\bbx@lasthash}}% + \usebibmacro{transstrg}}} \newbibmacro*{parttranslator}{% \ifthenelse{\ifnameundef{nameb}\OR\NOT\ifusenameb}% - {\usebibmacro{compiler}}% - {\ifthenelse{\iffieldequals{fullhash}{\bbx@lasthash}\AND\NOT% - \iffirstonpage}% - {\bibnamedash\addcomma\addspace}% - {\printnames[sortname]{nameb}\addcomma\addspace% - \savefield{fullhash}{\bbx@lasthash}}% - \usebibmacro{parttransstrg}}} + {\usebibmacro{compiler}}% + {\ifboolexpr{% + test {\iffieldequals{fullhash}{\bbx@lasthash}}% + and + not test {\iffirstonpage}% + and + togl {cms@namedash}% + }% + {\iffieldundef{nameaddon}% + {\printtext{\bibnamedash}\newcunit}% + {\printtext{\bibnamedash}\setunit{\addspace}% + \printfield{nameaddon}\newcunit}}% + {\printnames[sortname]{nameb}% + \setunit{\addspace}% + \printfield{nameaddon}\newcunit% + \savefield{fullhash}{\bbx@lasthash}}% + \usebibmacro{parttransstrg}}} \newbibmacro*{compiler}{% \ifthenelse{\ifnameundef{namec}\OR\NOT\ifusenamec}% {\let\bbx@lasthash\undefined}% - {\ifthenelse{\iffieldequals{fullhash}{\bbx@lasthash}\AND\NOT% - \iffirstonpage}% - {\bibnamedash\addcomma\addspace}% - {\printnames[sortname]{namec}\addcomma\addspace% + {\ifboolexpr{% + test {\iffieldequals{fullhash}{\bbx@lasthash}}% + and + not test {\iffirstonpage}% + and + togl {cms@namedash}% + }% + {\iffieldundef{nameaddon}% + {\printtext{\bibnamedash}\newcunit}% + {\printtext{\bibnamedash}\setunit{\addspace}% + \printfield{nameaddon}\newcunit}}% + {\printnames[sortname]{namec}% + \setunit{\addspace}% + \printfield{nameaddon}\newcunit% \savefield{fullhash}{\bbx@lasthash}}% \usebibmacro{compilestrg}}} @@ -472,14 +596,29 @@ {\ifnameundef{labelname}% {\ifthenelse{\iffieldequalstr{entrysubtype}{magazine}\AND\NOT% \ifentrytype{periodical}}% - {\printtext[bibhyperref]{\printfield[journaltitle]{journaltitle}% - \newcunit}}% - {\ifentrytype{manual}% - {\printtext[bibhyperref]{\printlist{organization}\newcunit}}% + {\printfield[journaltitle]{journaltitle}\newcunit}% + {\ifthenelse{\ifentrytype{manual}\OR\ifentrytype{standard}}% + {\printlist{organization}\newcunit}% {}}}% - {\usebibmacro{author/editor}% - \setunit{\addcomma\addspace}}% - \printfield[lostitle]{title}% + {\ifthenelse{\ifentrytype{customc}\OR\ifentrytype{dataset}}% + {\usebibmacro{justauthor}\setunit{\addspace}}% + {\usebibmacro{author/editor}\newunit}}% + \ifboolexpr{% + test {\ifentrytype{video}}% + and + test {\iffieldequalstr{entrysubtype}{tvepisode}}% + and + not test {\iffieldundef{title}}% + and + not test {\iffieldundef{booktitle}}% + }% + {\printtext[booktitle]{% + \printfield[btnoformat]{booktitle}% + \setunit{\subtitlepunct}% + \printfield[sbtnoformat]{booksubtitle}}% (?) + \setunit{\ctitleaddonpunct}% + \printfield{booktitleaddon}}% + {\printfield[lostitle]{title}}% \finentry}} \DeclareBibliographyDriver{shortjournal}{% @@ -498,6 +637,9 @@ \printlist[periodplace]{location}}% \finentry}% +\DeclareBibliographyDriver{shortseries}{% + \printfield{series}\finentry} + \DeclareStyleSourcemap{ \maps[datatype=bibtex]{ \map{ @@ -514,9 +656,16 @@ } \map[overwrite]{ \pertype{jurisdiction} - \step[fieldsource=shortjournal, match=\regexp{[^\\adddot][a-z]}, final] + \step[fieldsource=shortjournal, match=\regexp{\\adddot},% + replace=\regexp{\\ADDDOT}] + \step[fieldsource=shortjournal, match=\regexp{[a-z]}, final] \step[fieldset=shortjournal, fieldvalue=\addnbspace, append] } + \map[overwrite]{ + \pertype{jurisdiction} + \step[fieldsource=shortjournal, match=\regexp{\\ADDDOT},% + replace=\regexp{\\adddot}] + } \map{ \pertype{legislation} \step[fieldsource=title, match=\regexp{Const}, final] @@ -531,10 +680,24 @@ replace={canadasection}] } \map{ - \step[fieldsource=pubstate, match={forthcoming}, final] + \step[fieldsource=pubstate, match=\regexp{forthcoming|inpreparation|% + submitted|inpress}, final] \step[fieldset=year, origfieldval, final] - \step[fieldsource=year, match=\regexp{(forthcoming)}, + \step[fieldsource=year, match=\regexp{(forthcoming|inpreparation|% + submitted|inpress)}, replace=\regexp{\\bibstring\{$1\}}]%$ + \step[fieldset=pubstate, null] + } + \map[overwrite]{ + \step[fieldsource=relatedtype, match=\regexp{maintitle}, final] + \step[fieldsource=options, final] + \step[fieldsource=options, notmatch=\regexp{related=true}, final] + \step[fieldset=options, fieldvalue=\regexp{,related=true}, append] + } + \map{ + \step[fieldsource=relatedtype, match=\regexp{maintitle}, final] + \step[notfield=options, final] + \step[fieldset=options, fieldvalue=\regexp{related=true}] } \map{ \pertype{article} @@ -545,6 +708,59 @@ replace={magazine}] } \map[overwrite]{ + \pertype{article} + \pertype{review} + \pertype{suppperiodical} + \pertype{online} + \step[fieldsource=relatedtype, match=\regexp{commenton|reviewof}, final] + \step[fieldsource=options, final] + \step[fieldsource=options, notmatch=\regexp{related=true}, final] + \step[fieldset=options, fieldvalue=\regexp{,related=true}, append] + } + \map{ + \pertype{article} + \pertype{review} + \pertype{suppperiodical} + \pertype{online} + \step[fieldsource=relatedtype, match=\regexp{commenton|reviewof}, final] + \step[notfield=options, final] + \step[fieldset=options, fieldvalue=\regexp{related=true}] + } + \map{ + \pertype{review} + \pertype{suppperiodical} + \step[fieldsource=relatedtype, match=\regexp{commenton|reviewof}, final] + \step[fieldsource=related, final] + \step[fieldset=title, origfieldval] + } + \map[overwrite]{ + \pertype{review} + \pertype{suppperiodical} + \step[fieldsource=relatedtype, match=\regexp{commenton|reviewof}, final] + \step[fieldsource=related, final] + \step[fieldsource=related, match=\regexp{(.*)}] + \step[fieldsource=title, match=\regexp{^$1$}, final] + \step[fieldsource=relatedtype] + \step[fieldset=title, origfieldval, append] + \step[fieldsource=relatedstring, final] + \step[fieldset=title, origfieldval, append] + } + \map{ + \pertype{online} + \step[fieldsource=relatedtype, match=commenton, final] + \step[fieldsource=related, final] + \step[fieldset=title, fieldvalue=CCCCCC] + } + \map[overwrite]{ + \pertype{online} + \step[fieldsource=relatedtype, match=commenton, final] + \step[fieldsource=title, match=\regexp{^CCCCCC$}, final]%$ + \step[fieldsource=related, final] + \step[fieldset=title, origfieldval, append] + \step[fieldsource=relatedstring, final] + \step[fieldset=title, origfieldval, append] + } + \map[overwrite]{ \step[fieldsource=subtitle, final] \step[fieldsource=title, match=\regexp{\\(mkbib|en)quote\{.+((\?|\!)\})$},%$ @@ -579,33 +795,88 @@ final] \step[fieldset=maintitle, fieldvalue=\csgdef{@cmsst}{\@ne}, append] } + \map[overwrite, foreach=related]{ + \pertype{mvbook} + \pertype{mvcollection} + \pertype{mvproceedings} + \pertype{mvreference} + \step[fieldsource=relatedtype, match=\regexp{^maintitle$}, final]%$ + \step[fieldsource=related, match=\regexp{.*,.*}, final] + \step[fieldsource=entrykey, match=\regexp{(.*)}] + \step[entryclone=$1-$MAPLOOP] + \step[fieldset=related, fieldvalue=$MAPLOOP,%$ + entrytarget=$1-$MAPLOOP] + } + \map[overwrite, foreach=related]{ + \pertype{mvbook} + \pertype{mvcollection} + \pertype{mvproceedings} + \pertype{mvreference} + \step[fieldsource=relatedtype, match=\regexp{^maintitle$}, final]%$ + \step[fieldsource=related, match=\regexp{.*,.*}, final] + \step[fieldsource=sorttitle, final] + \step[fieldsource=entrykey, match=\regexp{(.*)}] + \step[fieldset=sorttitle, fieldvalue=$MAPLOOP, append,%$ + entrytarget=$1-$MAPLOOP] + } + \map{ + \pertype{mvbook} + \pertype{mvcollection} + \pertype{mvproceedings} + \pertype{mvreference} + \step[fieldsource=relatedtype, match=\regexp{^maintitle$}, final]%$ + \step[fieldsource=related, match=\regexp{.*,.*}, final] + \step[fieldset=relatedtype, null] + \step[fieldset=related, null] + } + \map[overwrite, foreach=related]{ + \pertype{mvbook} + \pertype{mvcollection} + \pertype{mvproceedings} + \pertype{mvreference} + \step[fieldsource=relatedtype, match=maintitlenc, final] + \step[fieldsource=related, match=\regexp{.*,.*}, final] + \step[fieldsource=entrykey, match=\regexp{(.*)}] + \step[entryclone=$1-$MAPLOOP, entrynocite] + \step[fieldset=related, fieldvalue=$MAPLOOP,%$ + entrytarget=$1-$MAPLOOP] + } + \map[overwrite, foreach=related]{ + \pertype{mvbook} + \pertype{mvcollection} + \pertype{mvproceedings} + \pertype{mvreference} + \step[fieldsource=relatedtype, match=maintitlenc, final] + \step[fieldsource=related, match=\regexp{.*,.*}, final] + \step[fieldsource=sorttitle, final] + \step[fieldsource=entrykey, match=\regexp{(.*)}] + \step[fieldset=sorttitle, fieldvalue=$MAPLOOP, append,%$ + entrytarget=$1-$MAPLOOP] + } + \map{ + \pertype{mvbook} + \pertype{mvcollection} + \pertype{mvproceedings} + \pertype{mvreference} + \step[fieldsource=relatedtype, match=maintitlenc, final] + \step[fieldsource=related, match=\regexp{.*,.*}, final] + \step[fieldset=relatedtype, null] + \step[fieldset=related, null] + } + \map{ + \pertype{video} + \step[fieldsource=entrysubtype, match=tvepisode, final] + \step[fieldsource=title, final] + \step[fieldsource=booktitle, final] + \step[fieldset=sorttitle, origfieldval] + } } }% -\DeclareBibliographyDriver{shorthands}{% For biblatex < 2.9 - \iftoggle{cms@fullshhand}% - {\usedriver{\frenchspacing}% - {\thefield{entrytype}}% - \finentry}% - {\ifnameundef{labelname}% - {\ifthenelse{\iffieldequalstr{entrysubtype}{magazine}\AND\NOT% - \ifentrytype{periodical}}% - {\printtext[bibhyperref]{\printfield[journaltitle]{journaltitle}% - \newcunit}}% - {\ifentrytype{manual}% - {\printtext[bibhyperref]{\printlist{organization}\newcunit}}% - {}}}% - {\usebibmacro{author/editor}% - \setunit{\addcomma\addspace}}% - \printfield[lostitle]{title}% - \finentry}} - \DeclareBibliographyDriver{article}{% \iffieldequalstr{entrysubtype}{magazine}% {\usebibmacro{bibindex}% \usebibmacro{mag+news+author}% - \setunit{\addspace}% - \printfield{nameaddon}% \newunit\newblock \usebibmacro{mag+news+title}% \setunit{\addspace}% @@ -616,10 +887,12 @@ \usebibmacro{issuetitle}% \setunit*{\addcomma\addspace}% \usebibmacro{byeditor+others}% - \usebibmacro{editorpunct}%\newunit\newblock + \newunit\newblock% 17th ed. clarifies punctuation \printfield{note}% \setunit*{\addcomma\addspace}\newblock% \usebibmacro{mag+news+date}% + \newunit\newblock + \printfield{type}% \newcunit\newblock \usebibmacro{chap+pag}% \newunit\newblock @@ -637,6 +910,8 @@ togl {cms@related}% and not test {\iffieldequalstr{relatedtype}{reviewof}}% + and + not test {\iffieldundef{related}}% }% {\usebibmacro{related:init}% \usebibmacro{related}% @@ -646,8 +921,6 @@ \usebibmacro{finentry}} {\usebibmacro{bibindex}% \usebibmacro{author/editor}% - \setunit{\addspace}% - \printfield{nameaddon}% \newunit\newblock \usebibmacro{mag+news+title}% \setunit{\addspace}% @@ -660,7 +933,7 @@ \usebibmacro{issuetitle}% \setunit*{\addcomma\addspace}% \usebibmacro{byeditor+others}% - \usebibmacro{editorpunct}%\newunit\newblock + \newunit\newblock% As above \printfield{note}% \setunit*{\addcomma\addspace}\newblock% (changed for 0.7)?? \usebibmacro{journal+issue+year+pages}% @@ -679,6 +952,8 @@ togl {cms@related}% and not test {\iffieldequalstr{relatedtype}{reviewof}}% + and + not test {\iffieldundef{related}}% }% {\usebibmacro{related:init}% \usebibmacro{related}% @@ -691,28 +966,36 @@ \DeclareBibliographyDriver{artwork}{% \usebibmacro{bibindex}% \usebibmacro{author/editor}% - \setunit{\addspace}% - \printfield{nameaddon}% \newunit\newblock \usebibmacro{italtitle+stitle}% - \newcunit\newblock - \usebibmacro{date}% + \newunit\newblock + \iffieldundef{origyear}% 17th ed. + {\printdate}% + {\usebibmacro{cmsorigdate}}% \newunit% 16th ed. \usebibmacro{byauthor}% \newunit\newblock \usebibmacro{byeditor+others}% \newunit\newblock - \printfield{howpublished}% + \ifthenelse{\iffieldundef{origyear}\OR\iffieldundef{year}}% 17th ed. + {}% + {\usebibmacro{date}}% \newunit\newblock \printfield{type}% \newcunit\newblock - \printfield{version}% + \printfield[type]{version}% \newcunit\newblock \printfield{note}% \newunit\newblock \usebibmacro{institution+organization}% \setunit*{\addcomma\addspace}\newblock \printlist{location}% + \newunit + \printfield{howpublished}% 17th ed. + \setunit*{\addspace}% + \usebibmacro{music+eventdate}% + \newcunit\newblock + \usebibmacro{volume+pages}% 17th ed. \newunit\newblock \printfield{addendum}% \setunit*{\addcomma\addspace}\newblock% @@ -731,15 +1014,17 @@ \DeclareBibliographyDriver{audio}{% \usebibmacro{bibindex}% \usebibmacro{author/editor}% - \setunit{\addspace}% - \printfield{nameaddon}% \newunit\newblock \usebibmacro{italtitle+stitle}% \newunit\newblock% 16th ed. \usebibmacro{byauthor}% \newunit\newblock \usebibmacro{part+editor+translator}% - \newcunit%\setunit{\addperiod\addspace}% + \newunit\newblock + \usebibmacro{music+eventdate}% 17th ed. + \iffieldundef{eventyear}% + {\newcunit}% + {\newunit}% \usebibmacro{chapinscore}% \usebibmacro{btitle+bstitle}% \iffieldundef{booktitle}% @@ -748,7 +1033,7 @@ \iffieldundef{edition}% {}% {\usebibmacro{edition}}% - \newunit% unit, not cunit? + \usebibmacro{editorpunct}%\newunit%? \usebibmacro{bybookauthor}% \usebibmacro{byeditor+others}% \newunit% ??? Editorpunct maybe not right here? @@ -809,21 +1094,21 @@ \DeclareBibliographyDriver{book}{% \usebibmacro{bibindex}% \usebibmacro{author/editor}% - \setunit{\addspace}% - \printfield{nameaddon}% - \newunit\newblock + \usebibmacro{related:mtpunct}% \usebibmacro{italtitle+stitle}% \setunit{\addspace}% \usebibmacro{bib:xref+date}% - \newunit\newblock + \usebibmacro{related:mtpunct}%\newunit\newblock \iffieldundef{maintitle}% {\iffieldundef{edition}% {}% - {\usebibmacro{edition}}}% + {\usebibmacro{edition}}% + \setunit*{\addcomma\addspace}% + \usebibmacro{version}}% {}% - \newunit\newblock% 16th ed. + \usebibmacro{related:mtpunct}% \usebibmacro{byauthor}% - \newunit\newblock + \usebibmacro{related:mtpunct}% \usebibmacro{part+editor+translator}% \newunit\newblock \ifboolexpr{% @@ -841,6 +1126,10 @@ \iffieldundef{edition}% {}% {\usebibmacro{edition}}% + \newcunit + \iffieldundef{version}% + {}% + {\printfield{version}}% \usebibmacro{editorpunct}% \usebibmacro{byeditor+others}% \usebibmacro{editorpunct}%\newcunit\newblock @@ -861,6 +1150,8 @@ \newcunit \printlist[][-\value{listtotal}]{lista}% \newunit\newblock + \printfield{type}% 17th ed. + \newunit\newblock \printfield{addendum}% \setunit*{\addcomma\addspace}\newblock% \iftoggle{cms@isbn}% @@ -871,7 +1162,11 @@ \newunit\newblock \usebibmacro{pageref}% \newunit\newblock - \iftoggle{cms@related}% + \ifboolexpr{% + togl {cms@related}% + and + not test {\iffieldundef{related}}% + }% {\usebibmacro{related:init}% \usebibmacro{related}% \newunit}% @@ -889,7 +1184,11 @@ \bookbibxrefcite{\thefield{xref}}% \usebibmacro{xrefpostnote}% \newunit\newblock - \iftoggle{cms@related}% + \ifboolexpr{% + togl {cms@related}% + and + not test {\iffieldundef{related}}% + }% {\usebibmacro{related:init}% \usebibmacro{related}% \newunit}% @@ -907,7 +1206,11 @@ \bookbibxrefcite{\thefield{crossref}}% \usebibmacro{xrefpostnote}% \newunit\newblock - \iftoggle{cms@related}% + \ifboolexpr{% + togl {cms@related}% + and + not test {\iffieldundef{related}}% + }% {\usebibmacro{related:init}% \usebibmacro{related}% \newunit}% @@ -918,8 +1221,6 @@ \DeclareBibliographyDriver{bookinbook}{% \usebibmacro{bibindex}% \usebibmacro{author/editor}% - \setunit{\addspace}% - \printfield{nameaddon}% \newunit\newblock \usebibmacro{italtitle+stitle}% \setunit{\addspace}% @@ -936,6 +1237,17 @@ \usebibmacro{part+editor+translator}% \setunit*{\addperiod\addspace}% \ifboolexpr{% + not togl {cms@related}% + or + ( + not test {\iffieldequalstr{relatedtype}{maintitle}}% + and + not test {\iffieldequalstr{relatedtype}{maintitlenc}}% + ) + or + test {\iffieldundef{related}}% + }% + {\ifboolexpr{% test {\iffieldundef{crossref}}% or togl {cms@bookbibxref}% @@ -977,7 +1289,11 @@ \newunit\newblock \usebibmacro{pageref}% \newunit\newblock - \iftoggle{cms@related}% + \ifboolexpr{% + togl {cms@related}% + and + not test {\iffieldundef{related}}% + }% {\usebibmacro{related:init}% \usebibmacro{related}% \newunit}% @@ -995,7 +1311,11 @@ \bookbibxrefcite{\thefield{xref}}% \usebibmacro{xrefpostnote}% \newunit\newblock - \iftoggle{cms@related}% + \ifboolexpr{% + togl {cms@related}% + and + not test {\iffieldundef{related}}% + }% {\usebibmacro{related:init}% \usebibmacro{related}% \newunit}% @@ -1013,19 +1333,51 @@ \bookbibxrefcite{\thefield{crossref}}% \usebibmacro{xrefpostnote}% \newunit\newblock - \iftoggle{cms@related}% + \ifboolexpr{% + togl {cms@related}% + and + not test {\iffieldundef{related}}% + }% {\usebibmacro{related:init}% \usebibmacro{related}% \newunit}% {}% \usebibmacro{originally+published+as}% - \usebibmacro{finentry}}} + \usebibmacro{finentry}}}% +{\entrydata{\thefield{related}}{% + \ifboolexpr{% + test {\ifentryinbib{\strfield{clonesourcekey}}}% + and + not togl {cms@bookbibxref}% + }% + {\savefield{clonesourcekey}{\cms@shortmtkey}}% + {}}% + \ifcsundef{cms@shortmtkey}% + {\unspace% Needed for entries with langid (?) + \usebibmacro{related:init}% + \usebibmacro{related:mtsave}% + \usebibmacro{related}% + \newunit\newblock% + \usebibmacro{pageref}% + \usebibmacro{finentry}}% + {\ifboolexpr{% Changed for 16th ed. + test {\ifterm}% + or + test {\ifpunctmark{*}}% + }% + {\setunit{\addspace\bibsentence}}% + {\setunit{\addperiod\addspace}}% + \usebibmacro{xrefprenote}% Volume fix + \bookbibxrefcite{\csuse{cms@shortmtkey}}% + \usebibmacro{xrefpostnote}% + \csgundef{cms@shortmtkey}% + \newunit\newblock% + \usebibmacro{originally+published+as}% + \usebibmacro{finentry}}}} \DeclareBibliographyDriver{booklet}{% \usebibmacro{bibindex}% \usebibmacro{author/editor}% - \setunit{\addspace}% - \printfield{nameaddon}% \newunit\newblock \usebibmacro{italtitle+stitle}% \newunit\newblock% 16th ed. @@ -1043,7 +1395,11 @@ \newunit\newblock \usebibmacro{pageref}% \newunit\newblock - \iftoggle{cms@related}% + \ifboolexpr{% + togl {cms@related}% + and + not test {\iffieldundef{related}}% + }% {\usebibmacro{related:init}% \usebibmacro{related}% \newunit}% @@ -1054,13 +1410,11 @@ \DeclareBibliographyDriver{collection}{% \usebibmacro{bibindex}% \usebibmacro{editor}% - \setunit{\addspace}% - \printfield{nameaddon}% - \newunit\newblock + \usebibmacro{related:mtpunct}% \usebibmacro{italtitle+stitle}% \setunit{\addspace}% \usebibmacro{bib:xref+date}% - \newunit\newblock + \usebibmacro{related:mtpunct}% \usebibmacro{part+editor+translator}% \newunit\newblock \ifboolexpr{% @@ -1082,6 +1436,14 @@ \usebibmacro{byeditor+others}% \newunit \usebibmacro{volume+or+volumes}% + \ifcsdef{cms@mtchapter}% + {\newcunit\newblock + \printfield{chapter}}% + {}% + \ifcsdef{cms@mtpages}% + {\newcunit\newblock + \printfield{pages}}% + {}% \newunit\newblock \usebibmacro{ser+num}% \newunit\newblock @@ -1099,9 +1461,13 @@ \setunit*{\addcomma\addspace}\newblock% \usebibmacro{bib+doi+url}% \newunit\newblock - \usebibmacro{pageref}% + \usebibmacro{pageref}%!!!\printlist{pageref}::\strlist{pageref}% \newunit\newblock - \iftoggle{cms@related}% + \ifboolexpr{% + togl {cms@related}% + and + not test {\iffieldundef{related}}% + }% {\usebibmacro{related:init}% \usebibmacro{related}% \newunit}% @@ -1119,7 +1485,11 @@ \bookbibxrefcite{\thefield{xref}}% \usebibmacro{xrefpostnote}% \newunit\newblock - \iftoggle{cms@related}% + \ifboolexpr{% + togl {cms@related}% + and + not test {\iffieldundef{related}}% + }% {\usebibmacro{related:init}% \usebibmacro{related}% \newunit}% @@ -1137,7 +1507,11 @@ \bookbibxrefcite{\thefield{crossref}}% \usebibmacro{xrefpostnote}% \newunit\newblock - \iftoggle{cms@related}% + \ifboolexpr{% + togl {cms@related}% + and + not test {\iffieldundef{related}}% + }% {\usebibmacro{related:init}% \usebibmacro{related}% \newunit}% @@ -1147,32 +1521,105 @@ \DeclareBibliographyDriver{customc}{% \usebibmacro{bibindex}% + \usebibmacro{justauthor}% + \iffieldundef{nameaddon}% + {\newunit}% + {\setunit{\addspace}}% + \usebibmacro{italtitle+stitle}% + \usebibmacro{finentry}} + +\DeclareBibliographyDriver{dataset}{% + \usebibmacro{bibindex}% \usebibmacro{author/editor}% + \setunit{\addspace}\newblock% + \printtext[parens]{% + \printfield{title}% + \setunit{\subtitlepunct}% + \printfield[noformat]{subtitle}% + \setunit{\ctitleaddonpunct}% + \printfield{titleaddon}% + \setunit{\addspace}% + \usebibmacro{language+transtitle}% + \newunit% 16th ed. + \usebibmacro{byauthor}% + \newunit\newblock + \usebibmacro{byeditor+others}% + \setunit{\addspace}\newblock% + \ifthenelse{\iffieldundef{howpublished}\AND% + \iffieldundef{number}\AND\iffieldundef{type}}% + {}% + {\printtext[parens]{% + \printfield{howpublished}% + \newcunit + \printfield{type}% + \setunit{\addspace}% + \printfield{number}}}% + \newunit\newblock + \printfield{version}% + \newunit\newblock + \printfield{note}% + \newunit\newblock + \usebibmacro{institution+organization}% + \setunit*{\addcomma\addspace}\newblock + \printlist{location}% + \setunit{\addsemicolon\addspace}% + \printurldate% + \ifboolexpr{% + togl {cms@urltime}% + and + not test {\iffieldundef{urlhour}}% + }% + {\newcunit\printurltime}% + {}}% \newunit\newblock - \printfield{nameaddon}% - \setunit*{\addspace}% - \usebibmacro{italtitle+stitle}% + \iffieldundef{pubstate}% + {}% + {\iffieldbibstring{pubstate}% + {\bibsstring{\thefield{pubstate}}}% + {\printfield[prenote]{pubstate}}% + \setunit{\addspace}}% + \usebibmacro{date}% + \clearfield{urlyear}% + \newunit\newblock + \printfield{addendum}% + \setunit*{\addcomma\addspace}\newblock% + \usebibmacro{bib+doi+url}% + \newunit\newblock + \usebibmacro{pageref}% + \newunit\newblock + \ifboolexpr{% + togl {cms@related}% + and + not test {\iffieldundef{related}}% + }% + {\usebibmacro{related:init}% + \usebibmacro{related}% + \newunit}% + {}% + \usebibmacro{originally+published+as}% \usebibmacro{finentry}} \DeclareBibliographyDriver{image}{% \usebibmacro{bibindex}% \usebibmacro{author/editor}% - \setunit{\addspace}% - \printfield{nameaddon}% \newunit\newblock \usebibmacro{italtitle+stitle}% - \newcunit%\setunit{\addcomma\addspace}% - \usebibmacro{date}% + \newunit%\setunit{\addcomma\addspace}% + \iffieldundef{origyear}% + {\printdate}% + {\usebibmacro{cmsorigdate}}% \newunit% 16th ed. \usebibmacro{byauthor}% \newunit\newblock \usebibmacro{byeditor+others}% \newunit\newblock - \printfield{howpublished}% + \ifthenelse{\iffieldundef{origyear}\OR\iffieldundef{year}}% 17th ed. + {}% + {\usebibmacro{date}}% \newunit\newblock \printfield{type}% \newcunit\newblock - \printfield{version}% + \printfield[type]{version}% \newcunit\newblock \printfield{note}% \newunit\newblock @@ -1180,13 +1627,23 @@ \setunit*{\addcomma\addspace}\newblock \printlist{location}% \newunit\newblock + \printfield{howpublished}% 17th ed. + \setunit*{\addspace}% + \usebibmacro{music+eventdate}% + \newcunit\newblock + \usebibmacro{volume+pages}% 17th ed. + \newunit\newblock \printfield{addendum}% \setunit*{\addcomma\addspace}\newblock% \usebibmacro{bib+doi+url}% \newunit\newblock \usebibmacro{pageref}% \newunit\newblock - \iftoggle{cms@related}% + \ifboolexpr{% + togl {cms@related}% + and + not test {\iffieldundef{related}}% + }% {\usebibmacro{related:init}% \usebibmacro{related}% \newunit}% @@ -1197,8 +1654,6 @@ \DeclareBibliographyDriver{inbook}{% \usebibmacro{bibindex}% \usebibmacro{author/editor}% - \setunit{\addspace}% - \printfield{nameaddon}% \newunit\newblock \usebibmacro{title+stitle}% \setunit{\addspace}\newblock%\bibsentence @@ -1208,6 +1663,17 @@ \setunit{\addperiod\addspace}% \usebibmacro{part+editor+translator}% \ifboolexpr{% + not togl {cms@related}% + or + ( + not test {\iffieldequalstr{relatedtype}{maintitle}}% + and + not test {\iffieldequalstr{relatedtype}{maintitlenc}}% + ) + or + test {\iffieldundef{related}}% + }% + {\ifboolexpr{% test {\iffieldundef{crossref}}% or togl {cms@bibcrossref}% @@ -1248,7 +1714,11 @@ \newunit\newblock \usebibmacro{pageref}% \newunit\newblock - \iftoggle{cms@related}% + \ifboolexpr{% + togl {cms@related}% + and + not test {\iffieldundef{related}}% + }% {\usebibmacro{related:init}% \usebibmacro{related}% \newunit}% @@ -1267,7 +1737,11 @@ \bibxrefcite{\thefield{xref}}% \usebibmacro{xrefpostnote}% \newunit\newblock - \iftoggle{cms@related}% + \ifboolexpr{% + togl {cms@related}% + and + not test {\iffieldundef{related}}% + }% {\usebibmacro{related:init}% \usebibmacro{related}% \newunit}% @@ -1286,19 +1760,45 @@ \bibxrefcite{\thefield{crossref}}% \usebibmacro{xrefpostnote}% \newunit\newblock - \iftoggle{cms@related}% + \ifboolexpr{% + togl {cms@related}% + and + not test {\iffieldundef{related}}% + }% {\usebibmacro{related:init}% \usebibmacro{related}% \newunit}% {}% \usebibmacro{originally+published+as}% - \usebibmacro{finentry}}} + \usebibmacro{finentry}}}% +{\usebibmacro{extract+clonekey+bib}% + \ifcsundef{cms@shortmtkey}% + {\unspace% Needed for entries with langid (?) + \usebibmacro{related:init}% + \usebibmacro{related:mtsave}% + \usebibmacro{related}% + \newunit\newblock% + \usebibmacro{pageref}% + \usebibmacro{finentry}}% + {\ifboolexpr{% Changed for 16th ed. + test {\ifterm}% + or + test {\ifpunctmark{*}}% + }% + {\setunit{\addspace\bibsentence}}% + {\setunit{\addperiod\addspace}}% + \usebibmacro{xrefprenote}% Volume fix + \usebibmacro{chapincoll}% + \bibxrefcite{\csuse{cms@shortmtkey}}% + \usebibmacro{xrefpostnote}% + \newunit\newblock% + \usebibmacro{originally+published+as}% + \csgundef{cms@shortmtkey}% + \usebibmacro{finentry}}}} \DeclareBibliographyDriver{incollection}{% \usebibmacro{bibindex}% \usebibmacro{author/editor}% - \setunit{\addspace}% - \printfield{nameaddon}% \newunit\newblock \usebibmacro{title+stitle}% \setunit{\addspace}\newblock%\bibsentence @@ -1308,6 +1808,17 @@ \newunit\newblock \usebibmacro{part+editor+translator}% \ifboolexpr{% + not togl {cms@related}% + or + ( + not test {\iffieldequalstr{relatedtype}{maintitle}}% + and + not test {\iffieldequalstr{relatedtype}{maintitlenc}}% + ) + or + test {\iffieldundef{related}}% + }% + {\ifboolexpr{% test {\iffieldundef{crossref}}% or togl {cms@bibcrossref}% @@ -1348,7 +1859,11 @@ \newunit\newblock \usebibmacro{pageref}% \newunit\newblock - \iftoggle{cms@related}% + \ifboolexpr{% + togl {cms@related}% + and + not test {\iffieldundef{related}}% + }% {\usebibmacro{related:init}% \usebibmacro{related}% \newunit}% @@ -1367,7 +1882,11 @@ \bibxrefcite{\thefield{xref}}% \usebibmacro{xrefpostnote}% \newunit\newblock - \iftoggle{cms@related}% + \ifboolexpr{% + togl {cms@related}% + and + not test {\iffieldundef{related}}% + }% {\usebibmacro{related:init}% \usebibmacro{related}% \newunit}% @@ -1386,19 +1905,45 @@ \bibxrefcite{\thefield{crossref}}% \usebibmacro{xrefpostnote}% \newunit\newblock - \iftoggle{cms@related}% + \ifboolexpr{% + togl {cms@related}% + and + not test {\iffieldundef{related}}% + }% {\usebibmacro{related:init}% \usebibmacro{related}% \newunit}% {}% \usebibmacro{originally+published+as}% - \usebibmacro{finentry}}} + \usebibmacro{finentry}}}% +{\usebibmacro{extract+clonekey+bib}% + \ifcsundef{cms@shortmtkey}% + {\unspace% Needed for entries with langid (?) + \usebibmacro{related:init}% + \usebibmacro{related:mtsave}% + \usebibmacro{related}% + \newunit\newblock% + \usebibmacro{pageref}% + \usebibmacro{finentry}}% + {\ifboolexpr{% Changed for 16th ed. + test {\ifterm}% + or + test {\ifpunctmark{*}}% + }% + {\setunit{\addspace\bibsentence}}% + {\setunit{\addperiod\addspace}}% + \usebibmacro{xrefprenote}% Volume fix + \usebibmacro{chapincoll}% + \bibxrefcite{\csuse{cms@shortmtkey}}% + \usebibmacro{xrefpostnote}% + \newunit\newblock% + \usebibmacro{originally+published+as}% + \csgundef{cms@shortmtkey}% + \usebibmacro{finentry}}}} \DeclareBibliographyDriver{inproceedings}{% \usebibmacro{bibindex}% \usebibmacro{author/editor}% - \setunit{\addspace}% - \printfield{nameaddon}% \newunit\newblock \usebibmacro{title+stitle}% \setunit{\addspace}\newblock% @@ -1408,6 +1953,17 @@ \setunit{\addperiod\addspace}% \usebibmacro{part+editor+translator}% \ifboolexpr{% + not togl {cms@related}% + or + ( + not test {\iffieldequalstr{relatedtype}{maintitle}}% + and + not test {\iffieldequalstr{relatedtype}{maintitlenc}}% + ) + or + test {\iffieldundef{related}}% + }% + {\ifboolexpr{% test {\iffieldundef{crossref}}% or togl {cms@bibcrossref}% @@ -1441,7 +1997,11 @@ \newunit\newblock \usebibmacro{pageref}% \newunit\newblock - \iftoggle{cms@related}% + \ifboolexpr{% + togl {cms@related}% + and + not test {\iffieldundef{related}}% + }% {\usebibmacro{related:init}% \usebibmacro{related}% \newunit}% @@ -1460,7 +2020,11 @@ \bibxrefcite{\thefield{xref}}% \usebibmacro{xrefpostnote}% \newunit\newblock - \iftoggle{cms@related}% + \ifboolexpr{% + togl {cms@related}% + and + not test {\iffieldundef{related}}% + }% {\usebibmacro{related:init}% \usebibmacro{related}% \newunit}% @@ -1479,24 +2043,53 @@ \bibxrefcite{\thefield{crossref}}% \usebibmacro{xrefpostnote}% \newunit\newblock - \iftoggle{cms@related}% + \ifboolexpr{% + togl {cms@related}% + and + not test {\iffieldundef{related}}% + }% {\usebibmacro{related:init}% \usebibmacro{related}% \newunit}% {}% \usebibmacro{originally+published+as}% - \usebibmacro{finentry}}} + \usebibmacro{finentry}}}% +{\usebibmacro{extract+clonekey+bib}% + \ifcsundef{cms@shortmtkey}% + {\unspace% Needed for entries with langid (?) + \usebibmacro{related:init}% + \usebibmacro{related:mtsave}% + \usebibmacro{related}% + \newunit\newblock% + \usebibmacro{pageref}% + \usebibmacro{finentry}}% + {\ifboolexpr{% Changed for 16th ed. + test {\ifterm}% + or + test {\ifpunctmark{*}}% + }% + {\setunit{\addspace\bibsentence}}% + {\setunit{\addperiod\addspace}}% + \usebibmacro{xrefprenote}% Volume fix + \usebibmacro{chapincoll}% + \bibxrefcite{\csuse{cms@shortmtkey}}% + \usebibmacro{xrefpostnote}% + \newunit\newblock% + \usebibmacro{originally+published+as}% + \csgundef{cms@shortmtkey}% + \usebibmacro{finentry}}}} \DeclareBibliographyDriver{inreference}{% \usebibmacro{bibindex}% + \iftoggle{cms@mtvolpunct}{\newcunit}{}% \usebibmacro{italtitle+stitle}% - \newunit\newblock + \usebibmacro{related:mtpunct}%\newunit\newblock \ifthenelse{\iffieldundef{maintitle}\AND\iffieldundef{booktitle}}% {\iffieldundef{edition}% {}% {\usebibmacro{edition}}}% {}% - \newunit\newblock + \usebibmacro{related:mtpunct}%\newunit\newblock \usebibmacro{part+editor+translator}% \setunit*{\addperiod\addspace}% need asterisk? \usebibmacro{mtitle+mstitle+vol+part+btitle+bstitle}% @@ -1526,7 +2119,7 @@ \ifnameundef{author}% {}% {\printtext{% 16th ed - \bibstring{by}% + \bibstring{byauthor}% \addspace% \printnames[byauthor]{author}}}% \newunit\newblock @@ -1540,7 +2133,11 @@ \newunit\newblock \usebibmacro{pageref}% \newunit\newblock - \iftoggle{cms@related}% + \ifboolexpr{% + togl {cms@related}% + and + not test {\iffieldundef{related}}% + }% {\usebibmacro{related:init}% \usebibmacro{related}% \newunit}% @@ -1557,8 +2154,6 @@ \DeclareBibliographyDriver{letter}{% \usebibmacro{bibindex}% \usebibmacro{author/editor}% - \setunit{\addspace}% - \printfield{nameaddon}% \newunit\newblock \printtext[title]{% \printfield[noformat]{title}}% @@ -1572,6 +2167,17 @@ \usebibmacro{part+editor+translator}% \setunit*{\addperiod\addspace}% \ifboolexpr{% + not togl {cms@related}% + or + ( + not test {\iffieldequalstr{relatedtype}{maintitle}}% + and + not test {\iffieldequalstr{relatedtype}{maintitlenc}}% + ) + or + test {\iffieldundef{related}}% + }% + {\ifboolexpr{% test {\iffieldundef{crossref}}% or togl {cms@bibcrossref}% @@ -1609,7 +2215,11 @@ \newunit\newblock \usebibmacro{pageref}% \newunit\newblock - \iftoggle{cms@related}% + \ifboolexpr{% + togl {cms@related}% + and + not test {\iffieldundef{related}}% + }% {\usebibmacro{related:init}% \usebibmacro{related}% \newunit}% @@ -1628,7 +2238,11 @@ \bibxrefcite{\thefield{xref}}% \usebibmacro{xrefpostnote}% \newunit\newblock - \iftoggle{cms@related}% + \ifboolexpr{% + togl {cms@related}% + and + not test {\iffieldundef{related}}% + }% {\usebibmacro{related:init}% \usebibmacro{related}% \newunit}% @@ -1647,19 +2261,45 @@ \bibxrefcite{\thefield{crossref}}% \usebibmacro{xrefpostnote}% \newunit\newblock - \iftoggle{cms@related}% + \ifboolexpr{% + togl {cms@related}% + and + not test {\iffieldundef{related}}% + }% {\usebibmacro{related:init}% \usebibmacro{related}% \newunit}% {}% \usebibmacro{originally+published+as}% - \usebibmacro{finentry}}} + \usebibmacro{finentry}}}% +{\usebibmacro{extract+clonekey+bib}% + \ifcsundef{cms@shortmtkey}% + {\unspace% Needed for entries with langid (?) + \usebibmacro{related:init}% + \usebibmacro{related:mtsave}% + \usebibmacro{related}% + \newunit\newblock% + \usebibmacro{pageref}% + \usebibmacro{finentry}}% + {\ifboolexpr{% Changed for 16th ed. + test {\ifterm}% + or + test {\ifpunctmark{*}}% + }% + {\setunit{\addspace\bibsentence}}% + {\setunit{\addperiod\addspace}}% + \usebibmacro{xrefprenote}% Volume fix + \usebibmacro{chapincoll}% + \bibxrefcite{\csuse{cms@shortmtkey}}% + \usebibmacro{xrefpostnote}% + \newunit\newblock% + \usebibmacro{originally+published+as}% + \csgundef{cms@shortmtkey}% + \usebibmacro{finentry}}}} \DeclareBibliographyDriver{manual}{% \usebibmacro{bibindex}% \usebibmacro{bibauthor+org}% - \setunit{\addspace}% - \printfield{nameaddon}% \newunit\newblock \usebibmacro{italtitle+stitle}% \newunit\newblock @@ -1685,7 +2325,11 @@ \newunit\newblock \usebibmacro{pageref}% \newunit\newblock - \iftoggle{cms@related}% + \ifboolexpr{% + togl {cms@related}% + and + not test {\iffieldundef{related}}% + }% {\usebibmacro{related:init}% \usebibmacro{related}% \newunit}% @@ -1696,8 +2340,6 @@ \DeclareBibliographyDriver{misc}{% \usebibmacro{bibindex}% \usebibmacro{author/editor}% - \setunit{\addspace}% - \printfield{nameaddon}% \newunit\newblock \iffieldundef{entrysubtype}% {\usebibmacro{italtitle+stitle}}% @@ -1709,7 +2351,9 @@ \setunit{\addspace}% \usebibmacro{language+transtitle}% \newcunit\newblock% - \usebibmacro{unpubl+letter+date}}% + \usebibmacro{unpubl+letter+date}% + \newcunit + \printlist{origlocation}}% 17th ed. \newunit% 16th ed. \usebibmacro{byauthor}% \newunit\newblock @@ -1723,7 +2367,10 @@ \newunit\newblock \printfield{note}% \newunit\newblock - \usebibmacro{institution+organization}% + \iffieldundef{entrysubtype}% + {\printfield{venue}\setunit*{\addcomma\addspace}}% + {}% + \usebibmacro{misc+institution+organization}% \setunit*{\addcomma\addspace}\newblock \printlist{location}% \iffieldundef{entrysubtype}% @@ -1737,7 +2384,11 @@ \newunit\newblock \usebibmacro{pageref}% \newunit\newblock - \iftoggle{cms@related}% + \ifboolexpr{% + togl {cms@related}% + and + not test {\iffieldundef{related}}% + }% {\usebibmacro{related:init}% \usebibmacro{related}% \newunit}% @@ -1748,8 +2399,6 @@ \DeclareBibliographyDriver{music}{% \usebibmacro{bibindex}% \usebibmacro{author/editor}% - \setunit{\addspace}% - \printfield{nameaddon}% \newunit\newblock \usebibmacro{italtitle+stitle}% \newunit% 16th ed. @@ -1757,9 +2406,16 @@ \newunit\newblock \usebibmacro{part+editor+translator}% \newunit\newblock + \ifthenelse{\iffieldundef{booktitle}\AND\iffieldundef{entrysubtype}}% + {\usebibmacro{byeditor+others}\newunit\newblock}{}% \usebibmacro{music+eventdate}% \newunit\newblock - \usebibmacro{chapinscore}% + \printfield{note}% + \newunit\newblock + \printfield{howpublished}% + \newunit\newblock + \usebibmacro{chap+as+track}%inscore% 17th ed. + \usebibmacro{music+bookauthor}% Ditto. \usebibmacro{btitle+bstitle}% \iffieldundef{booktitle}% {\newunit}% Fix customc? @@ -1767,9 +2423,9 @@ \iffieldundef{edition}% {}% {\usebibmacro{edition}}% - \newunit% unit, not cunit? - \usebibmacro{bybookauthor}% - \usebibmacro{byeditor+others}% + \usebibmacro{editorpunct}%\newunit% unit, not cunit? + \ifthenelse{\iffieldundef{booktitle}\AND\iffieldundef{entrysubtype}}% + {}{\usebibmacro{byeditor+others}}% \newunit% ??? Editorpunct maybe not right here? \iffieldundef{maintitle}% {}% @@ -1796,15 +2452,15 @@ \usebibmacro{volume+pages}% \newunit\newblock \printfield{version}% - \newunit\newblock - \printfield{note}% \newunit\newblock% - \usebibmacro{music+origdate}%\printtext[eventdate]{\printeventdate}% + \usebibmacro{music+origdate}% Altered for 17th ed. \newunit\newblock \printlist{publisher}% \setunit*{\addcomma\addspace}\newblock - \printfield{series}% - \setunit{\addspace}% + \usebibmacro{series+or+shortser}% + \ifboolexpr{test {\iflistundef{publisher}} and test {\iffieldundef{series}}}% + {\newunit}% + {\setunit{\addspace}}% \printfield{number}% \newcunit\newblock \usebibmacro{date}% @@ -1815,7 +2471,7 @@ \newcunit\newblock \printfield{type}% \newunit\newblock - \usebibmacro{pubstate}% 16th ed. + \usebibmacro{music+pubstate}% 17th ed. \newunit\newblock \printfield{addendum}% \setunit*{\addcomma\addspace}\newblock% @@ -1827,7 +2483,11 @@ \newunit\newblock \usebibmacro{pageref}% \newunit\newblock - \iftoggle{cms@related}% + \ifboolexpr{% + togl {cms@related}% + and + not test {\iffieldundef{related}}% + }% {\usebibmacro{related:init}% \usebibmacro{related}% \newunit}% @@ -1835,35 +2495,494 @@ \usebibmacro{originally+published+as}% \usebibmacro{finentry}} -\DeclareBibliographyAlias{mvbook}{book} +\DeclareBibliographyDriver{mvbook}{% + \usebibmacro{bibindex}% + \usebibmacro{author/editor}% + \usebibmacro{related:mtpunct}%\newunit\newpunct% + \usebibmacro{italtitle+stitle}% + \setunit{\addspace}% + \usebibmacro{bib:xref+date}% + \usebibmacro{related:mtpunct}%\newunit\newblock + \iffieldundef{maintitle}% + {\iffieldundef{edition}% + {}% + {\usebibmacro{edition}}}% + {}% + \usebibmacro{mt+mvnames+save}% + \usebibmacro{related:mtpunct}% + \usebibmacro{byauthor}% + \usebibmacro{related:mtpunct}% + \usebibmacro{part+editor+translator}% + \usebibmacro{related:mtpunct}% + \usebibmacro{byeditor+others}% + \ifthenelse{\iffieldequalstr{relatedtype}{maintitle}\OR% + \iffieldequalstr{relatedtype}{maintitlenc}}{}% + {\usebibmacro{related:mtpunct}%newunit + \usebibmacro{volume+or+volumes}}% + \usebibmacro{related:mtpunct}%newunit\newblock + \usebibmacro{ser+num}% + \newunit\newblock + \ifboolexpr{% + not togl {cms@related}% + or + ( + not test {\iffieldequalstr{relatedtype}{maintitle}}% + and + not test {\iffieldequalstr{relatedtype}{maintitlenc}}% + ) + or + test {\iffieldundef{related}}% + }% + {\ifboolexpr{% + test {\iffieldundef{crossref}}% + or + togl {cms@bookbibxref}% + }% + {\ifboolexpr{% + test {\iffieldundef{xref}}% + or + togl {cms@bookbibxref}% + }% + {\usebibmacro{mtitle+mstitle+vol+part+title+stitle}% + \newunit\newblock + \usebibmacro{origpubl+loc+year}%cmsorigdate%\printorigdate + \newunit\newblock + \printfield{note}% + \newunit\newblock + \usebibmacro{publ+loc+year}% + \newcunit + \printlist[][-\value{listtotal}]{lista}% + \newunit\newblock + \printfield{addendum}% + \setunit*{\addcomma\addspace}\newblock% + \iftoggle{cms@isbn}% + {\printfield{isbn}}% + {}% + \setunit*{\addcomma\addspace}\newblock% + \usebibmacro{bib+doi+url}% + \newunit\newblock + \usebibmacro{pageref}% + \newunit\newblock + \ifboolexpr{% + togl {cms@related}% + and + not test {\iffieldundef{related}}% + }% + {\usebibmacro{related:init}% + \usebibmacro{related}% + \newunit}% + {}% + \usebibmacro{originally+published+as}% + \usebibmacro{finentry}}% + {\ifboolexpr{% Changed for 16th ed. + test {\ifterm}% + or + test {\ifpunctmark{*}}% + }% + {\setunit{\addspace\bibsentence}}% + {\setunit{\addperiod\addspace}}% + \usebibmacro{xrefprenote}% Volume fix + \bookbibxrefcite{\thefield{xref}}% + \usebibmacro{xrefpostnote}% + \newunit\newblock + \ifboolexpr{% + togl {cms@related}% + and + not test {\iffieldundef{related}}% + }% + {\usebibmacro{related:init}% + \usebibmacro{related}% + \newunit}% + {}% + \usebibmacro{originally+published+as}% + \usebibmacro{finentry}}}% +{\ifboolexpr{% Changed for 16th ed. + test {\ifterm}% + or + test {\ifpunctmark{*}}% + }% + {\setunit{\addspace\bibsentence}}% + {\setunit{\addperiod\addspace}}% + \usebibmacro{xrefprenote}% Volume fix + \bookbibxrefcite{\thefield{crossref}}% + \usebibmacro{xrefpostnote}% + \newunit\newblock + \ifboolexpr{% + togl {cms@related}% + and + not test {\iffieldundef{related}}% + }% + {\usebibmacro{related:init}% + \usebibmacro{related}% + \newunit}% + {}% + \usebibmacro{originally+published+as}% + \usebibmacro{finentry}}}% +{\unspace% Needed for entries with langid (?) + \usebibmacro{related:init}% + \usebibmacro{related:mtsave}% + \usebibmacro{related}% + \newunit\newblock% + \usebibmacro{pageref}% + \usebibmacro{finentry}}} -\DeclareBibliographyAlias{mvcollection}{collection} +\DeclareBibliographyDriver{mvcollection}{% + \usebibmacro{bibindex}% + \usebibmacro{editor}% + \usebibmacro{related:mtpunct}%\newunit\newblock + \usebibmacro{italtitle+stitle}% + \setunit{\addspace}% + \usebibmacro{bib:xref+date}% + \usebibmacro{mt+mvnames+save}% + \usebibmacro{related:mtpunct}% + \iffieldundef{edition}% + {}% + {\usebibmacro{edition}}% + \usebibmacro{related:mtpunct}%\newunit\newblock + \usebibmacro{part+editor+translator}% + \usebibmacro{related:mtpunct}% + \usebibmacro{byeditor+others}% + \ifthenelse{\iffieldequalstr{relatedtype}{maintitle}\OR% + \iffieldequalstr{relatedtype}{maintitlenc}}{}% + {\usebibmacro{related:mtpunct}%newunit + \usebibmacro{volume+or+volumes}}% + \usebibmacro{related:mtpunct}%newunit\newblock + \usebibmacro{ser+num}% + \newunit\newblock + \ifboolexpr{% + not togl {cms@related}% + or + ( + not test {\iffieldequalstr{relatedtype}{maintitle}}% + and + not test {\iffieldequalstr{relatedtype}{maintitlenc}}% + ) + or + test {\iffieldundef{related}}% + }% + {\ifboolexpr{% + test {\iffieldundef{crossref}}% + or + togl {cms@bookbibxref}% + }% + {\ifboolexpr{% + test {\iffieldundef{xref}}% + or + togl {cms@bookbibxref}% + }% + {\usebibmacro{mtitle+mstitle+vol+part+title+stitle}% + \newunit\newblock + \usebibmacro{origpubl+loc+year}%{cmsorigdate}%\printorigdate% + \newunit\newblock + \printfield{note}% + \newunit\newblock + \usebibmacro{publ+loc+year}% + \newunit\newblock + \printfield{addendum}% + \setunit*{\addcomma\addspace}\newblock% + \iftoggle{cms@isbn}% + {\printfield{isbn}}% + {}% + \setunit*{\addcomma\addspace}\newblock% + \usebibmacro{bib+doi+url}% + \newunit\newblock + \usebibmacro{pageref}% + \newunit\newblock + \ifboolexpr{% + togl {cms@related}% + and + not test {\iffieldundef{related}}% + }% + {\usebibmacro{related:init}% + \usebibmacro{related}% + \newunit}% + {}% + \usebibmacro{originally+published+as}% + \usebibmacro{finentry}}% + {\ifboolexpr{% Changed for 16th ed. + test {\ifterm}% + or + test {\ifpunctmark{*}}% + }% + {\setunit{\addspace\bibsentence}}% + {\setunit{\addperiod\addspace}}% + \usebibmacro{xrefprenote}% Volume fix + \bookbibxrefcite{\thefield{xref}}% + \usebibmacro{xrefpostnote}% + \newunit\newblock + \ifboolexpr{% + togl {cms@related}% + and + not test {\iffieldundef{related}}% + }% + {\usebibmacro{related:init}% + \usebibmacro{related}% + \newunit}% + {}% + \usebibmacro{originally+published+as}% + \usebibmacro{finentry}}}% +{\ifboolexpr{% Changed for 16th ed. + test {\ifterm}% + or + test {\ifpunctmark{*}}% + }% + {\setunit{\addspace\bibsentence}}% + {\setunit{\addperiod\addspace}}% + \usebibmacro{xrefprenote}% Volume fix + \bookbibxrefcite{\thefield{crossref}}% + \usebibmacro{xrefpostnote}% + \newunit\newblock + \ifboolexpr{% + togl {cms@related}% + and + not test {\iffieldundef{related}}% + }% + {\usebibmacro{related:init}% + \usebibmacro{related}% + \newunit}% + {}% + \usebibmacro{originally+published+as}% + \usebibmacro{finentry}}}% +{\unspace% Needed for entries with langid (?) + \usebibmacro{related:init}% + \usebibmacro{related:mtsave}% + \usebibmacro{related}% + \newunit\newblock% + \usebibmacro{pageref}% + \usebibmacro{finentry}}} -\DeclareBibliographyAlias{mvproceedings}{proceedings} +\DeclareBibliographyDriver{mvproceedings}{% + \usebibmacro{bibindex}% + \usebibmacro{editor}% + \usebibmacro{related:mtpunct}%\newunit\newblock% + \usebibmacro{italtitle+stitle}% + \setunit{\addspace}% + \usebibmacro{bib:xref+date}% + \usebibmacro{mt+mvnames+save}% + \usebibmacro{related:mtpunct}% + \usebibmacro{part+editor+translator}% + \usebibmacro{related:mtpunct}% + \usebibmacro{byeditor+others}% + \ifthenelse{\iffieldequalstr{relatedtype}{maintitle}\OR% + \iffieldequalstr{relatedtype}{maintitlenc}}{}% + {\usebibmacro{related:mtpunct}%newunit + \usebibmacro{volume+or+volumes}}% + \usebibmacro{related:mtpunct}%newunit\newblock + \usebibmacro{ser+num}% + \newunit\newblock + \ifboolexpr{% + not togl {cms@related}% + or + ( + not test {\iffieldequalstr{relatedtype}{maintitle}}% + and + not test {\iffieldequalstr{relatedtype}{maintitlenc}}% + ) + or + test {\iffieldundef{related}}% + }% + {\ifboolexpr{% + test {\iffieldundef{crossref}}% + or + togl {cms@bookbibxref}% + }% + {\ifboolexpr{% + test {\iffieldundef{xref}}% + or + togl {cms@bookbibxref}% + }% + {\usebibmacro{mtitle+mstitle+vol+part+title+stitle}% + \newunit\newblock + \printfield{note}% + \newunit\newblock + \usebibmacro{org+publ+loc+year}% + \newunit\newblock + \printfield{addendum}% + \setunit*{\addcomma\addspace}\newblock% + \iftoggle{cms@isbn}% + {\printfield{isbn}}% + {}% + \setunit*{\addcomma\addspace}\newblock% + \usebibmacro{bib+doi+url}% + \newunit\newblock + \usebibmacro{pageref}% + \newunit\newblock + \ifboolexpr{% + togl {cms@related}% + and + not test {\iffieldundef{related}}% + }% + {\usebibmacro{related:init}% + \usebibmacro{related}% + \newunit}% + {}% + \usebibmacro{originally+published+as}% + \usebibmacro{finentry}}% + {\ifboolexpr{% Changed for 16th ed. + test {\ifterm}% + or + test {\ifpunctmark{*}}% + }% + {\setunit{\addspace\bibsentence}}% + {\setunit{\addperiod\addspace}}% + \usebibmacro{xrefprenote}% Volume fix + \bookbibxrefcite{\thefield{xref}}% + \usebibmacro{xrefpostnote}% + \newunit\newblock + \ifboolexpr{% + togl {cms@related}% + and + not test {\iffieldundef{related}}% + }% + {\usebibmacro{related:init}% + \usebibmacro{related}% + \newunit}% + {}% + \usebibmacro{originally+published+as}% + \usebibmacro{finentry}}}% +{\ifboolexpr{% Changed for 16th ed. + test {\ifterm}% + or + test {\ifpunctmark{*}}% + }% + {\setunit{\addspace\bibsentence}}% + {\setunit{\addperiod\addspace}}% + \usebibmacro{xrefprenote}% Volume fix + \bookbibxrefcite{\thefield{crossref}}% + \usebibmacro{xrefpostnote}% + \newunit\newblock + \ifboolexpr{% + togl {cms@related}% + and + not test {\iffieldundef{related}}% + }% + {\usebibmacro{related:init}% + \usebibmacro{related}% + \newunit}% + {}% + \usebibmacro{originally+published+as}% + \usebibmacro{finentry}}}% +{\unspace% Needed for entries with langid (?) + \usebibmacro{related:init}% + \usebibmacro{related:mtsave}% + \usebibmacro{related}% + \newunit\newblock% + \usebibmacro{pageref}% + \usebibmacro{finentry}}} -\DeclareBibliographyAlias{mvreference}{reference} +\DeclareBibliographyDriver{mvreference}{% + \usebibmacro{bibindex}% + \usebibmacro{italtitle+stitle}% + \newunit\newblock + \ifthenelse{\iffieldundef{maintitle}\AND\iffieldundef{booktitle}}% + {\iffieldundef{edition}% + {}% + {\usebibmacro{edition}}}% + {}% + \newunit\newblock%\usebibmacro{related:mtpunct}% mvref always first + \usebibmacro{bybookauthor}% + \newunit\newblock + \usebibmacro{part+editor+translator}% + \newunit\newblock%\usebibmacro{editorpunct}% + \usebibmacro{byeditor+others}% + \ifthenelse{\iffieldequalstr{relatedtype}{maintitle}\OR% + \iffieldequalstr{relatedtype}{maintitlenc}}{}% + {\newunit + \usebibmacro{volume+or+volumes}}% + \newunit\newblock + \usebibmacro{ser+num}% + \newunit\newblock + \ifboolexpr{% + not togl {cms@related}% + or + ( + not test {\iffieldequalstr{relatedtype}{maintitle}}% + and + not test {\iffieldequalstr{relatedtype}{maintitlenc}}% + ) + or + test {\iffieldundef{related}}% + }% + {\usebibmacro{mtitle+mstitle+vol+part+btitle+bstitle}% + \newunit\newblock + \usebibmacro{origpubl+loc+year}%{cmsorigdate}%\printorigdate% + \newunit\newblock + \printfield{note}% + \newunit\newblock + \usebibmacro{publ+loc+year}% + \newunit\newblock + \printfield{addendum}% + \setunit*{\addcomma\addspace}\newblock% + \iftoggle{cms@isbn}% + {\printfield{isbn}}% + {}% + \setunit*{\addcomma\addspace}\newblock% + \usebibmacro{bib+doi+url}% + \newunit\newblock + \usebibmacro{pageref}% + \newunit\newblock + \ifboolexpr{% + togl {cms@related}% + and + not test {\iffieldundef{related}}% + }% + {\usebibmacro{related:init}% + \usebibmacro{related}% + \newunit}% + {}% + \usebibmacro{originally+published+as}% + \usebibmacro{finentry}}% + {\unspace% Needed for entries with langid (?) + \usebibmacro{related:init}% + \usebibmacro{related:mtsave}% + \usebibmacro{related}% + \newunit\newblock% + \usebibmacro{pageref}% + \usebibmacro{finentry}}} \DeclareBibliographyDriver{online}{% \usebibmacro{bibindex}% \usebibmacro{author/editor}% - \setunit{\addspace}% - \printfield{nameaddon}% \newunit\newblock - \usebibmacro{title+stitle}% - \setunit{\addspace}% - \usebibmacro{language+transtitle}% - \newunit% 16th ed. - \usebibmacro{byauthor}% - \newunit\newblock - \printlist{organization}% Rearranged for 16th ed. + \IfBeginWith{\thefield{title}}{CCCCCC}% + {}% + {\usebibmacro{title+stitle}% + \setunit{\addspace}% + \usebibmacro{language+transtitle}% + \newunit% 16th ed. + \usebibmacro{byauthor}% + \newunit\newblock + \usebibmacro{byeditor+others}% + \newunit\newblock + \printlist{organization}% Rearranged for 16th ed. + \newunit\newblock + \printfield{note}% + \newcunit\newblock}% 17th ed. + \usebibmacro{date}% + \usebibmacro{time+stamp}% Ditto \newunit\newblock - \printfield{note}% + \printfield{type}% + \ifboolexpr{% + togl {cms@related}% + and + test {\iffieldequalstr{relatedtype}{commenton}}% Ditto + }% + {\usebibmacro{related:init}% + \usebibmacro{related}}% + {}% \newunit\newblock - \usebibmacro{date}% + \printfield{addendum}% \newunit\newblock \iffieldundef{urlyear}% {}% - {\printurldate}% Date fix + {\printurldate% + \ifboolexpr{% + togl {cms@urltime}% + and + not test {\iffieldundef{urlhour}}% + }% + {\newcunit\printurltime}% + {}}% Date fix \newunit\newblock \iftoggle{cms@doionly}% {\iffieldundef{doi}% @@ -1876,11 +2995,15 @@ \newunit\newblock \printfield{url}% \newunit\newblock - \printfield{addendum}% - \newunit\newblock \usebibmacro{pageref}% \newunit\newblock - \iftoggle{cms@related}% + \ifboolexpr{% + togl {cms@related}% + and + not test {\iffieldequalstr{relatedtype}{commenton}}% + and + not test {\iffieldundef{related}}% + }% {\usebibmacro{related:init}% \usebibmacro{related}% \newunit}% @@ -1892,7 +3015,14 @@ \usebibmacro{bibindex}% \usebibmacro{author+holder}% + holder? \newunit\newblock - \usebibmacro{title}% + \iffieldundef{title}% + {}% + {\printtext{% + \printfield{title}% + \setunit{\subtitlepunct}% + \printfield[subtitle]{subtitle}}% + \setunit{\ptitleaddonpunct}% + \printfield{titleaddon}}% \setunit{\addspace}\newblock% \usebibmacro{language+transtitle}% \setunit{\addperiod\addspace}% @@ -1925,19 +3055,67 @@ \newunit\newblock \usebibmacro{pageref}% \newunit\newblock - \iftoggle{cms@related}% + \ifboolexpr{% + togl {cms@related}% + and + not test {\iffieldundef{related}}% + }% + {\usebibmacro{related:init}% + \usebibmacro{related}% + \newunit}% + {}% + \usebibmacro{finentry}} + +\DeclareBibliographyDriver{performance}{% + \usebibmacro{bibindex}% + \usebibmacro{author/editor}% + \newunit\newblock + \usebibmacro{italtitle+stitle}% + \setunit{\addspace}% + \usebibmacro{language+transtitle}% + \newunit% 16th ed. + \usebibmacro{byauthor}% + \newunit\newblock + \usebibmacro{byeditor+others}% + \newunit\newblock + \printfield{howpublished}% + \newunit\newblock + \printfield{type}% + \newunit\newblock + \printfield{version}% + \newunit\newblock + \printfield{note}% + \newunit\newblock + \printfield{venue}% + \setunit*{\addcomma\addspace}% + \usebibmacro{institution+organization}% + \setunit*{\addcomma\addspace}\newblock + \printlist{location}% + \newcunit\newblock + \usebibmacro{date}% + \newunit\newblock + \printfield{addendum}% + \setunit*{\addcomma\addspace}\newblock% + \usebibmacro{bib+doi+url}% + \newunit\newblock + \usebibmacro{pageref}% + \newunit\newblock + \ifboolexpr{% + togl {cms@related}% + and + not test {\iffieldundef{related}}% + }% {\usebibmacro{related:init}% \usebibmacro{related}% \newunit}% {}% + \usebibmacro{originally+published+as}% \usebibmacro{finentry}} \DeclareBibliographyDriver{periodical}{% \iffieldequalstr{entrysubtype}{magazine}% {\usebibmacro{bibindex}% \usebibmacro{editor}% - \setunit{\addspace}% - \printfield{nameaddon}% \newunit\newblock \usebibmacro{issuetitle}% \setunit{\addspace}% @@ -1965,8 +3143,6 @@ \usebibmacro{finentry}} {\usebibmacro{bibindex}% \usebibmacro{editor}% - \setunit{\addspace}% - \printfield{nameaddon}% \newunit\newblock \usebibmacro{issuetitle}% \setunit{\addspace}% @@ -1978,7 +3154,7 @@ \newunit\newblock \printfield{note}% \setunit*{\addcomma\addspace}\newblock% (changed for 0.7)?? - \usebibmacro{periodical+issue+year+pages}% + \usebibmacro{journal+issue+year+pages}% \newunit\newblock \printfield{addendum}% \setunit*{\addcomma\addspace}\newblock% @@ -1990,7 +3166,11 @@ \newunit\newblock \usebibmacro{pageref}% \newunit\newblock - \iftoggle{cms@related}% + \ifboolexpr{% + togl {cms@related}% + and + not test {\iffieldundef{related}}% + }% {\usebibmacro{related:init}% \usebibmacro{related}% \newunit}% @@ -2001,13 +3181,11 @@ \DeclareBibliographyDriver{proceedings}{% \usebibmacro{bibindex}% \usebibmacro{editor}% - \setunit{\addspace}% - \printfield{nameaddon}% - \newunit\newblock + \usebibmacro{related:mtpunct}% \usebibmacro{italtitle+stitle}% \setunit{\addspace}% \usebibmacro{bib:xref+date}% - \newunit\newblock + \usebibmacro{related:mtpunct}% \usebibmacro{part+editor+translator}% \newunit\newblock \ifboolexpr{% @@ -2042,7 +3220,11 @@ \newunit\newblock \usebibmacro{pageref}% \newunit\newblock - \iftoggle{cms@related}% + \ifboolexpr{% + togl {cms@related}% + and + not test {\iffieldundef{related}}% + }% {\usebibmacro{related:init}% \usebibmacro{related}% \newunit}% @@ -2060,7 +3242,11 @@ \bookbibxrefcite{\thefield{xref}}% \usebibmacro{xrefpostnote}% \newunit\newblock - \iftoggle{cms@related}% + \ifboolexpr{% + togl {cms@related}% + and + not test {\iffieldundef{related}}% + }% {\usebibmacro{related:init}% \usebibmacro{related}% \newunit}% @@ -2078,7 +3264,11 @@ \bookbibxrefcite{\thefield{crossref}}% \usebibmacro{xrefpostnote}% \newunit\newblock - \iftoggle{cms@related}% + \ifboolexpr{% + togl {cms@related}% + and + not test {\iffieldundef{related}}% + }% {\usebibmacro{related:init}% \usebibmacro{related}% \newunit}% @@ -2088,14 +3278,15 @@ \DeclareBibliographyDriver{reference}{% \usebibmacro{bibindex}% + \iftoggle{cms@mtvolpunct}{\newcunit}{}% \usebibmacro{italtitle+stitle}% - \newunit\newblock + \usebibmacro{related:mtpunct}%\newunit\newblock \ifthenelse{\iffieldundef{maintitle}\AND\iffieldundef{booktitle}}% {\iffieldundef{edition}% {}% {\usebibmacro{edition}}}% {}% - \newunit\newblock + \usebibmacro{related:mtpunct}% \usebibmacro{part+editor+translator}% \setunit*{\addperiod\addspace}% need asterisk? \usebibmacro{mtitle+mstitle+vol+part+btitle+bstitle}% @@ -2130,7 +3321,11 @@ \newunit\newblock \usebibmacro{pageref}% \newunit\newblock - \iftoggle{cms@related}% + \ifboolexpr{% + togl {cms@related}% + and + not test {\iffieldundef{related}}% + }% {\usebibmacro{related:init}% \usebibmacro{related}% \newunit}% @@ -2141,8 +3336,6 @@ \DeclareBibliographyDriver{report}{% \usebibmacro{bibindex}% \usebibmacro{author/editor}% - \setunit{\addspace}% - \printfield{nameaddon}% \newunit\newblock \iffieldequalstr{entrysubtype}{unpublished}% {\usebibmacro{title+stitle}}% @@ -2152,8 +3345,10 @@ \newunit\newblock \printfield{type}% \newcunit - \printfield{series}% - \setunit{\addnbspace}% + \usebibmacro{series+or+shortser}% + \ifthenelse{\iffieldundef{type}\AND\iffieldundef{series}}% + {\newunit}% + {\setunit{\addnbspace}}% \printfield{number}% \newunit \printfield{note}% @@ -2170,7 +3365,11 @@ \newunit\newblock \usebibmacro{pageref}% \newunit\newblock - \iftoggle{cms@related}% + \ifboolexpr{% + togl {cms@related}% + and + not test {\iffieldundef{related}}% + }% {\usebibmacro{related:init}% \usebibmacro{related}% \newunit}% @@ -2184,14 +3383,18 @@ {\usebibmacro{mag+news+author}}% {\usebibmacro{author/editor}}% \newunit\newblock - \printeventdate% 16th ed. - \setunit{\addspace}% - \printfield{nameaddon}% 16th ed. + \usebibmacro{music+eventdate}% 17th ed. + \newcunit\newblock + \printeventtime% \newunit\newblock \ifboolexpr{% togl {cms@related}% and + ( test {\iffieldequalstr{relatedtype}{reviewof}}% + or + test {\iffieldequalstr{relatedtype}{commenton}}% + ) }% {\usebibmacro{related:init}% \usebibmacro{related}}% @@ -2204,23 +3407,126 @@ \usebibmacro{language+transtitle}% \newunit\newblock% \usebibmacro{part+editor+translator}% - \newunit\newblock% - \usebibmacro{issuetitle}% - \setunit*{\addcomma\addspace}% + \ifboolexpr{% + test {\iffieldundef{crossref}}% + or + togl {cms@bibcrossref}% + }% + {\ifboolexpr{% + test {\iffieldundef{xref}}% + or + togl {cms@bibcrossref}% + }% + {\newunit\newblock% + \usebibmacro{issuetitle}% + \setunit*{\addcomma\addspace}% + \usebibmacro{byeditor+others}% + \newunit\newblock% 17th ed. clarifies punctuation + \printfield{note}% + \setunit*{\addcomma\addspace}\newblock% + \iffieldequalstr{entrysubtype}{magazine}% + {\usebibmacro{mag+news+date}% + \newunit\newblock + \printfield{type}% + \newcunit\newblock + \usebibmacro{chap+pag}}% + {\usebibmacro{journal+issue+year+pages}}% + \newunit\newblock + \printfield{addendum}% + \setunit*{\addcomma\addspace}\newblock% + \iftoggle{cms@isbn}% + {\printfield{issn}}% + {}% + \setunit*{\addcomma\addspace}\newblock}% + {\newcunit\newblock + \usebibmacro{chap+pag}% + \newunit\newblock + \printfield{addendum}% + \setunit*{\addcomma\addspace}\newblock}}% + {\newcunit\newblock + \usebibmacro{chap+pag}% + \newunit\newblock + \printfield{addendum}% + \setunit*{\addcomma\addspace}\newblock}% + \usebibmacro{bib+doi+url}% + \newunit\newblock + \usebibmacro{pageref}% + \newunit\newblock + \ifboolexpr{% + togl {cms@related}% + and + not test {\iffieldequalstr{relatedtype}{reviewof}}% + and + not test {\iffieldequalstr{relatedtype}{commenton}}% + }% + {\usebibmacro{related:init}% + \usebibmacro{related}% + \newunit}% + {}% + \usebibmacro{originally+published+as}% + \usebibmacro{finentry}} + +\DeclareBibliographyDriver{standard}{% + \usebibmacro{bibindex}% + \ifnameundef{author}% + {\iflistundef{organization}% + {}% + {\ifboolexpr{% + test {\iflistequals{organization}{\bbx@lasthash}}% + and + not test {\iffirstonpage}% + and + togl {cms@namedash}% + }% + {\printtext{\bibnamedash}}% + {\printlist{organization}% + \savelist{organization}{\bbx@lasthash}}}}% + {\usebibmacro{justauthor}}% + \newunit\newblock + \usebibmacro{italtitle+stitle}% + \newunit\newblock + \usebibmacro{edition}% + \newunit% 16th ed. + \usebibmacro{byauthor}% + \newunit\newblock \usebibmacro{byeditor+others}% - \usebibmacro{editorpunct}%\newunit\newblock + \newunit\newblock + \usebibmacro{series+or+shortser}% + \setunit*{\addspace}% + \printfield{number}% + \newunit\newblock + \printfield{type}% + \newunit \printfield{note}% - \setunit*{\addcomma\addspace}\newblock% - \iffieldequalstr{entrysubtype}{magazine}% - {\usebibmacro{mag+news+date}% - \newcunit\newblock - \usebibmacro{chap+pag}}% - {\usebibmacro{journal+issue+year+pages}}% + \newunit\newblock% + \usebibmacro{origpubl+loc+year}%{cmsorigdate}% 16th ed. + \reprintpunct% + \iffieldundef{pubstate}% + {}% + {\iffieldbibstring{pubstate}% + {\biblstring{\thefield{pubstate}}}% + {\printfield[prenote]{pubstate}}% + \newcunit}% + \printlist{location}% + \iflistundef{publisher}% + {\iflistundef{organization}% + {\setunit*{\addcomma\addspace}}% + {\setunit*{\addcolon\addspace}% + \printlist{organization}% + \setunit*{\addcomma\addspace}}}% + {\setunit*{\addcolon\addspace}% + \printlist{publisher}% + \setunit*{\addcomma\addspace}}% + \usebibmacro{date} + \setunit{\addsemicolon\addspace}% + \printfield{howpublished}% + \setunit*{\addspace}% + \usebibmacro{music+eventdate}% \newunit\newblock \printfield{addendum}% \setunit*{\addcomma\addspace}\newblock% \iftoggle{cms@isbn}% - {\printfield{issn}}% + {\printfield{isbn}}% {}% \setunit*{\addcomma\addspace}\newblock% \usebibmacro{bib+doi+url}% @@ -2230,7 +3536,7 @@ \ifboolexpr{% togl {cms@related}% and - not test {\iffieldequalstr{relatedtype}{reviewof}}% + not test {\iffieldundef{related}}% }% {\usebibmacro{related:init}% \usebibmacro{related}% @@ -2242,8 +3548,6 @@ \DeclareBibliographyDriver{suppbook}{% \usebibmacro{bibindex}% \usebibmacro{author}% - \setunit{\addspace}% - \printfield{nameaddon}% \newunit\newblock \usebibmacro{inforaft}% \setunit{\addspace}\newblock @@ -2257,6 +3561,8 @@ \newcunit \usebibmacro{bybookauthor}% \newcunit\newblock + \usebibmacro{part+editor+translator}% + \newcunit\newblock \usebibmacro{chap+pag}% \newunit\newblock \usebibmacro{mtitle+mstitle+vol+part+title+stitle}% @@ -2287,7 +3593,11 @@ \newunit\newblock \usebibmacro{pageref}% \newunit\newblock - \iftoggle{cms@related}% + \ifboolexpr{% + togl {cms@related}% + and + not test {\iffieldundef{related}}% + }% {\usebibmacro{related:init}% \usebibmacro{related}% \newunit}% @@ -2302,8 +3612,6 @@ \DeclareBibliographyDriver{thesis}{% \usebibmacro{bibindex}% \usebibmacro{author/editor}% - \setunit{\addspace}% - \printfield{nameaddon}% \newunit\newblock \usebibmacro{title+stitle}% \setunit{\addspace}%\newblock% @@ -2321,7 +3629,11 @@ \newunit\newblock \usebibmacro{pageref}% \newunit\newblock - \iftoggle{cms@related}% + \ifboolexpr{% + togl {cms@related}% + and + not test {\iffieldundef{related}}% + }% {\usebibmacro{related:init}% \usebibmacro{related}% \newunit}% @@ -2332,8 +3644,6 @@ \DeclareBibliographyDriver{unpublished}{% \usebibmacro{bibindex}% \usebibmacro{author/editor}% - \setunit{\addspace}% - \printfield{nameaddon}% \newunit\newblock \usebibmacro{title+stitle}% \setunit{\addspace}\newblock% @@ -2365,7 +3675,11 @@ \newunit\newblock \usebibmacro{pageref}% \newunit\newblock - \iftoggle{cms@related}% + \ifboolexpr{% + togl {cms@related}% + and + not test {\iffieldundef{related}}% + }% {\usebibmacro{related:init}% \usebibmacro{related}% \newunit}% @@ -2375,27 +3689,50 @@ \DeclareBibliographyDriver{video}{% \usebibmacro{bibindex}% - \usebibmacro{author/editor}% - \setunit{\addspace}% - \printfield{nameaddon}% - \newunit\newblock - \printtext[title]{% - \printfield[noformat]{title}% - \setunit{\subtitlepunct}% - \printfield[noformat]{subtitle}}% - \iffieldundef{booktitle}% Comma after italics, period after quotes - {\setunit{\ctitleaddonpunct}}% - {\setunit{\ptitleaddonpunct}}%\setunit{\addspace}\newblock% - \printfield{titleaddon}%\usebibmacro{title+stitle}% - \setunit{\addspace}\newblock%\bibsentence - \usebibmacro{language+transtitle}% - \setunit{\addperiod\addspace}% 16th ed. - \usebibmacro{byauthor}% - \setunit{\addperiod\addspace}% - \usebibmacro{part+editor+translator}% - \setunit{\addperiod\addspace}% - \usebibmacro{chapinscore}% - \usebibmacro{btitle+bstitle}% + \ifboolexpr{% + test {\iffieldequalstr{entrysubtype}{tvepisode}}% + and + ( + not test {\iffieldundef{title}}% + and + not test {\iffieldundef{booktitle}}% + ) + }% + {\usebibmacro{author/editor}% + \newunit\newblock + \printtext[booktitle]{% + \printfield[btnoformat]{booktitle}% + \setunit{\subtitlepunct}% + \printfield[sbtnoformat]{booksubtitle}}% + \setunit{\ptitleaddonpunct}% + \printfield{booktitleaddon}% + \setunit*{\addcomma\addspace}% + \usebibmacro{title+stitle}% + \setunit{\addspace}\newblock%\bibsentence + \usebibmacro{language+transtitle}% + \setunit{\addperiod\addspace}% 16th ed. + \usebibmacro{byauthor}% + \setunit{\addperiod\addspace}% + \usebibmacro{part+editor+translator}}% + {\usebibmacro{author/editor}% + \newunit\newblock + \printtext[title]{% + \printfield[noformat]{title}% + \setunit{\subtitlepunct}% + \printfield[noformat]{subtitle}}% + \iffieldundef{booktitle}% Comma after italics, period after quotes + {\setunit{\ctitleaddonpunct}}% + {\setunit{\ptitleaddonpunct}}%\setunit{\addspace}\newblock% + \printfield{titleaddon}%\usebibmacro{title+stitle}% + \setunit{\addspace}\newblock%\bibsentence + \usebibmacro{language+transtitle}% + \setunit{\addperiod\addspace}% 16th ed. + \usebibmacro{byauthor}% + \setunit{\addperiod\addspace}% + \usebibmacro{part+editor+translator}% + \setunit{\addperiod\addspace}% + \usebibmacro{chapinscore}% + \usebibmacro{btitle+bstitle}}% \iffieldundef{booktitle}% {\setunit{\addperiod\addspace}}% Fix customc? {\setunit{\addcomma\addspace}}% @@ -2432,12 +3769,14 @@ \newunit\newblock \usebibmacro{ser+num}% \newunit\newblock + \printfield{note}% + \newunit\newblock \usebibmacro{music+eventdate}% + \setunit*{\addcomma\addspace}% + \printfield{usera}% \newunit\newblock \usebibmacro{origpubl+loc+year}%{cmsorigdate}%\printorigdate% \newunit\newblock - \printfield{note}% - \newunit\newblock \usebibmacro{publ+loc+year}% \newunit\newblock \printfield{type}% 16th ed. @@ -2452,7 +3791,11 @@ \newunit\newblock \usebibmacro{pageref}% \newunit\newblock - \iftoggle{cms@related}% + \ifboolexpr{% + togl {cms@related}% + and + not test {\iffieldundef{related}}% + }% {\usebibmacro{related:init}% \usebibmacro{related}% \newunit}% @@ -2467,8 +3810,15 @@ togl {cms@url}% and not test {\iffieldundef{urlyear}}% + }% + {\printurldate% + \ifboolexpr{% + togl {cms@urltime}% + and + not test {\iffieldundef{urlhour}}% }% - {\printurldate}% Date fix + {\newcunit\printurltime}% + {}}% Date fix {}% \iffieldundef{addendum}% Punctuation fixes in 0.9.9c {\newunit\newblock}% @@ -2613,6 +3963,7 @@ \newbibmacro*{mtitle+mstitle+vol+part+btitle+bstitle}{% \usebibmacro{btitle+bstitle}% + \newunit% MT Fix \iffieldundef{maintitle}% {}% {\ifthenelse{\(\iffieldundef{volume}\AND\iffieldundef{part}\)\OR% @@ -2637,8 +3988,10 @@ \setunit{\ctitleaddonpunct}% \printfield{maintitleaddon}}}} -\newbibmacro*{journal+issue+year+pages}{% - \usebibmacro{cjournal+ser+vol+num}% +\newbibmacro*{journal+issue+year+pages}{% 17th ed. eid changes + \ifentrytype{periodical}% + {\usebibmacro{cperiodical+ser+vol+num}}% + {\usebibmacro{cjournal+ser+vol+num}}% \ifboolexpr{% 16th ed. test {\iffieldundef{issue}}% and @@ -2647,11 +4000,11 @@ not togl {cms@switchdates}% }% {\iffieldundef{number}% - {\iffieldundef{bookpagination}% + {\ifthenelse{\iffieldundef{bookpagination}\AND\iffieldundef{eid}}% {\setunit{\postvolpunct}}% {\setunit{\addcolon\addspace}}% - \printfield{pages}}% - {\newcunit\printfield{pages}}}% + \usebibmacro{eid+or+pages}}% + {\newcunit\usebibmacro{eid+or+pages}}}% {\ifthenelse{\iffieldundef{volume}\AND\iffieldundef{number}}% 16th ed. {\newcunit% \iffieldundef{issue}% @@ -2659,7 +4012,7 @@ {\printfield{issue}% \setunit{\addspace}% \usebibmacro{cmsyear}}% - \newcunit\printfield{pages}}% + \newcunit\usebibmacro{eid+or+pages}}% {\setunit{\addspace}% \printtext[parens]{% \iffieldundef{issue}% @@ -2668,40 +4021,12 @@ \setunit{\addspace}% \usebibmacro{cmsyear}}}% \setunit{\addcolon\addspace}% - \printfield{pages}}}} + \usebibmacro{eid+or+pages}}}} -\newbibmacro*{periodical+issue+year+pages}{% - \usebibmacro{cperiodical+ser+vol+num}% - \ifboolexpr{% 16th ed. - test {\iffieldundef{issue}}% - and - test {\iffieldundef{year}}% - and - not togl {cms@switchdates}% - }% - {\iffieldundef{number}% - {\iffieldundef{bookpagination}% - {\setunit{\postvolpunct}}% - {\setunit{\addcolon\addspace}}% - \printfield{pages}}% - {\newcunit\printfield{pages}}}% - {\ifthenelse{\iffieldundef{volume}\AND\iffieldundef{number}}% 16th ed. - {\newcunit% - \iffieldundef{issue}% - {\usebibmacro{number+or+month}}% - {\printfield{issue}% - \setunit{\addspace}% - \usebibmacro{cmsyear}}% - \newcunit\printfield{pages}}% - {\setunit{\addspace}% - \printtext[parens]{% - \iffieldundef{issue}% - {\usebibmacro{number+or+month}}% - {\printfield{issue}% - \setunit{\addspace}% - \usebibmacro{cmsyear}}}% - \setunit{\addcolon\addspace}% - \printfield{pages}}}} +\newbibmacro*{eid+or+pages}{% + \iffieldundef{eid}% + {\printfield{pages}}% + {\printfield{eid}}} \newbibmacro*{bycompiler}{% \ifnameundef{namec}% @@ -2852,14 +4177,716 @@ \usebibmacro{editorpunct}% \usebibmacro{withafterword}} +%%%% New date macros enabling special handling of seasons, decades, +%%%% centuries, date eras, and uncertain dates (circa and ?), along +%%%% with CMS compression of year ranges. + +\newcount\cms@tempcnta +\newcount\cms@tempcntb + +\protected\def\cmsunspecified#1#2{% + \ifboolexpr{% + test {\iffieldundef{#2dateunspecified}}% + or + togl {cms@alwaysrange}% + }% + {\ifboolexpr{% + test {\iffieldundef{#2endyear}}% + or + test {\iffieldequalstr{#2dateera}{bce}}% + or + not togl {cms@compyears}% + or + not test {\iffieldnum{#2year}}% + or + not test {\iffieldnum{#2endyear}}% + or + not test {\if@cms@onlyyears{#2}}% + }% + {\csuse{mkbibdate#1}{#2year}{#2month}{#2day}\cmsdateeraprint{#2year}}% + {\cmscompcenturies{#2}% + \ifboolexpr{% + ( + test {\if@cms@bracket}% + and + not test {\if@cms@endbracket} + ) + or + ( + not test {\if@cms@bracket}% + and + test {\if@cms@endbracket}% + ) + or + ( + test {\if@cms@endcirca}% + and + not test {\if@cms@circa}% + ) + or + not test {\ifnumequal{\cms@tempcnta}{\cms@tempcntb}}% + }% + {\csuse{mkbibdate#1}{#2year}{}{}\cmsdateeraprint{#2year}}% + {\cmsdateeraprintpre{#2year}\cmscompressyears{#2}% + \cmsdateeraprint{#2endyear}\clearfield{#2endyear}}}}% + {\ifboolexpr{% + test {\iffieldequalstr{#2dateunspecified}{yearindecade}}% + and + test {\ifbibstring{decade}}% + and + not togl {cms@decaderange}% + }% + {\cmsmkdecade{#1}{#2}}% + {\ifboolexpr{% + test {\iffieldequalstr{#2dateunspecified}{yearincentury}}% + and + test {\ifbibstring{century}}% + and + not togl {cms@centuryrange}% + }% + {\cmsmkcentury{#2}}% + {\iftoggle{cms@compyears}% + {\cmsdateeraprintpre{#2year}\cmscompressyears{#2}% + \cmsdateeraprint{#2endyear}\clearfield{#2endyear}}% + {\csuse{mkbibdate#1}{#2year}{}{}\cmsdateeraprint{#2year}}}}}}% + +\protected\def\cmscompressyears#1{% + \def\cms@tempa{\thefield{#1year}--\thefield{#1endyear}}% + \edef\cms@tempb{\mkcomprange{\csuse{cms@tempa}}}% + \cms@tempb}% + +\def\cmscompcenturies#1{% + \cms@tempcnta=\thefield{#1year}% + \divide\cms@tempcnta100 + \cms@tempcntb=\thefield{#1endyear}% + \divide\cms@tempcntb100} + +\protected\def\cmsformatextra{}% Author-date requires these + +\protected\def\cmsformatendextra{}% + +\newbibmacro*{cmsextradate}{}% + +\newbibmacro*{cmsparensextradate}{}% + +\protected\def\cmsdateeraprintpre#1{% AD/BC order depends on language + \ifdefstring\blx@dateera{astronomical}% + {\iffieldnum{#1}% + {\begingroup% + \let\blx@tempa\@empty% + \blx@ifstrendswith{#1}{endyear}% + {\blx@stripfromendinto{#1}{endyear}\blx@datetype% + \def\blx@tempa{end}}% + {\blx@stripfromendinto{#1}{year}\blx@datetype}% + \csuse{if\blx@datetype\blx@tempa dateera}{bce}% + {\ifnumless{0-\thefield{#1}}{0}% + {\printtext{\csuse{bibdateera\blx@tempa prefix}}}% + {}}% + {}% + \endgroup}% + {}}% + {\ifboolexpr{% + test {\ifdefstring\blx@dateera{christian}}% + and + test {\if@cms@adfirst}% + }% + {\iffieldnum{#1}% + {\begingroup% + \let\blx@tempa\@empty% + \blx@ifstrendswith{#1}{endyear}% + {\blx@stripfromendinto{#1}{endyear}\blx@datetype% + \def\blx@tempa{end}}% + {\blx@stripfromendinto{#1}{year}\blx@datetype}% + \csuse{if\blx@datetype\blx@tempa dateera}{bce}% + {\ifdefstring\blx@tempa{end}{}{\global\toggletrue{cms@bc}}}% + {\ifnumless{\thefield{#1}}\blx@dateeraauto% + {\ifdefstring\blx@tempa{end}% + {\iftoggle{cms@bc}% + {\printtext{% + \bibsstring{\blx@dateera@ce}\printdelim{dateaddelim}}% + \global\togglefalse{cms@bc}}% + {}}% + {\printtext{% + \bibsstring{\blx@dateera@ce}\printdelim{dateaddelim}}% + \global\togglefalse{cms@bc}}}% + {}}% + \endgroup}% + {}}% + {}}} + +\protected\def\cmsdateeraprint#1{% AD/BC order depends on language + \ifboolexpr{% + test {\ifdefstring\blx@dateera{christian}}% + and + test {\if@cms@adfirst}% + }% + {\iffieldnum{#1} + {\begingroup + \let\blx@tempa\@empty + \blx@ifstrendswith{#1}{endyear} + {\blx@stripfromendinto{#1}{endyear}\blx@datetype + \def\blx@tempa{end}} + {\blx@stripfromendinto{#1}{year}\blx@datetype}% + \csuse{if\blx@datetype\blx@tempa dateera}{bce}% + {\ifdefstring\blx@tempa{end}% + {\ifnum\numexpr0-\thefield{#1}\relax<\blx@dateeraauto% + \printtext{\printdelim{dateeradelim}\midsentence% + \bibsstring{\blx@dateera@bce}}\relax% + \fi}% + {\csuse{if\blx@datetype enddateera}{bce}% + {}% + {\ifnum\numexpr0-\thefield{#1}\relax<\blx@dateeraauto% + \printtext{\printdelim{dateeradelim}\midsentence% + \bibsstring{\blx@dateera@bce}}\relax% + \fi}}}% + {}% + \endgroup} + {}}% + {\ifboolexpr{% + test {\ifdefstring\blx@dateera{secular}}% + or + ( + test {\ifdefstring\blx@dateera{christian}}% + and + not test {\if@cms@adfirst}% + ) + }% + {\iffieldnum{#1}% + {\begingroup% + \let\blx@tempa\@empty% + \blx@ifstrendswith{#1}{endyear}% + {\blx@stripfromendinto{#1}{endyear}\blx@datetype% + \def\blx@tempa{end}}% + {\blx@stripfromendinto{#1}{year}\blx@datetype}% + \csuse{if\blx@datetype\blx@tempa dateera}{bce}% + {\ifdefstring\blx@tempa{end}% + {\ifnum\numexpr0-\thefield{#1}\relax<\blx@dateeraauto% + \printtext{\printdelim{dateeradelim}\midsentence% + \bibsstring{\blx@dateera@bce}}\relax% + \fi}% + {\csuse{if\blx@datetype enddateera}{bce}% + {}% + {\ifnum\numexpr0-\thefield{#1}\relax<\blx@dateeraauto% + \printtext{\printdelim{dateeradelim}\midsentence% + \bibsstring{\blx@dateera@bce}}\relax% + \fi}}}% + {\ifdefstring\blx@tempa{end}% + {\ifnumless{\thefield{#1}}\blx@dateeraauto% + {\printtext{\printdelim{dateeradelim}\midsentence% + \bibsstring{\blx@dateera@ce}}}% + {}}% + {\csuse{if\blx@datetype enddateera}{ce}% + {}% + {\ifnumless{\thefield{#1}}\blx@dateeraauto% + {\printtext{\printdelim{dateeradelim}\midsentence% + \bibsstring{\blx@dateera@ce}}}% + {}}}}% + \endgroup}% + {}}% + {}}} + +\newrobustcmd*{\cms@datebrackets}{% + \iftoggle{cms@nodatebrackets}% + {\global\boolfalse{cms:bracket}% + \ifboolexpr{% + test {\if@cms@bracket}% + and + togl {cms@nodates}% + and + not bool {cms:nd}% + }% + {\booltrue{cms:nd}\bibstring{nodate}\addcomma\addspace}% + {\boolfalse{cms:nd}}}% + {\global\booltrue{cms:bracket}% + \bibopenbracket}}% + +\newrobustcmd*{\cms@yearbrackets}{% + \iftoggle{cms@noyearbrackets}% + {\global\boolfalse{cms:bracket}% + \ifboolexpr{% + test {\if@cms@bracket}% + and + togl {cms@nodates}% + and + not bool {cms:nd} + }% + {\booltrue{cms:nd}\bibstring{nodate}\addcomma\addspace}% + {\boolfalse{cms:nd}}}% + {\global\booltrue{cms:bracket}% + \bibopenbracket}}% + +\newrobustcmd*{\cms@mkbibrangetrunc}[2]{% DATE FIX + \begingroup + \blx@metadateinfo{#2}% + \clearfield{extradate}% + \ifthenelse{\iffieldundef{#2year}\AND\iffieldundef{#2month}\AND% + \iffieldundef{#2season}}% + {}% + {\printtext[#2date]{% + \if@cms@bracket% + {\cms@datebrackets% + \if@cms@circa% + {\bibsstring{circa}\printdelim{datecircadelim}}% + {}}% + {\global\boolfalse{cms:bracket}}% + \iffieldundef{#2season}% + {\ifdateyearsequal{#2}{#2end}% + {\iffieldsequal{#2month}{#2endmonth}% + {\csuse{mkbibdate#1}{}{}{#2day}}% + {\ifthenelse{\iffieldundef{#2month}\AND\iffieldundef{#2day}}% + {\csuse{mkbibdate#1}{#2year}{}{}\cmsdateeraprint{#2endyear}% + \clearfield{#2endyear}}% Clear up inheritance problem ??? + {\csuse{mkbibdate#1}{}{#2month}{#2day}}}}% + {\cmsunspecified{#1}{#2}}}% + {\ifdateyearsequal{#2}{#2end}% + {\ifthenelse{\iffieldundef{#2endseason}\OR% + \iffieldsequal{#2season}{#2endseason}}% + {\csuse{mkbibseasondate#1}{#2year}{#2season}% + \cmsdateeraprint{#2endyear}\clearfield{#2endyear}}% + {\csuse{mkbibseasondate#1}{}{#2season}}}% + {\csuse{mkbibseasondate#1}{#2year}{#2season}% + \cmsdateeraprint{#2year}}}% + \if@cms@bracket% + {\if@cms@uncertain% + {\if@cms@enduncertain% + {\iffieldundef{#2endyear}% + {\bibdateuncertain}% + {}}% + {\bibdateuncertain}}% + {\if@cms@enduncertain% + {\iffieldundef{#2endyear}% + {\bibdateuncertain}% + {}}% + {}}}% + {}% + \iffieldundef{#2endyear}% + {\iffieldundef{#2endmonth}% + {\ifthenelse{\iffieldundef{#2endseason}\OR% + \iffieldsequal{#2season}{#2endseason}}% + {\ifbool{cms:bracket}% + {\bibclosebracket\global\boolfalse{cms:bracket}}% + {}}% + {\bibdaterangesep% + \csuse{mkbibseasondate#1}{}{#2endseason}}}% + {\bibdaterangesep% + \csuse{mkbibdate#1}{}{#2endmonth}{#2endday}}}% + {\iffieldequalstr{#2endyear}{}% + {\ifbool{cms:bracket}% + {\bibclosebracket\global\boolfalse{cms:bracket}}% + {}% + \mbox{\bibdaterangesep}}% + {\ifbool{cms:bracket}% + {\if@cms@circa% + {\if@cms@endbracket% + {\bibdaterangesep}% + {\bibclosebracket\global\boolfalse{cms:bracket}% + \bibdaterangesep}}% + {\if@cms@endcirca% + {\bibdaterangesep\bibsstring{circa}\printdelim{datecircadelim}}% + {\if@cms@enduncertain% + {\bibdaterangesep}% + {\bibclosebracket\global\boolfalse{cms:bracket}% + \bibdaterangesep}}}}% + {\if@cms@endbracket% + {\bibdaterangesep% + \cms@datebrackets% + \if@cms@endcirca% + {\if@cms@circa% + {}% + {\bibsstring{circa}\printdelim{datecircadelim}}}% + {}}% + {\bibdaterangesep}}%\bibdatedash% + \iffieldundef{#2endseason}% + {\ifdateyearsequal{#2}{#2end}% + {\csuse{mkbibdate#1}{#2year}{#2endmonth}{#2endday}}% + {\csuse{mkbibdate#1}{#2endyear}{#2endmonth}{#2endday}}}% + {\ifdateyearsequal{#2}{#2end}% + {\csuse{mkbibseasondate#1}{#2year}{#2endseason}}% + {\csuse{mkbibseasondate#1}{#2endyear}{#2endseason}}}% + \ifbool{cms:bracket}% + {\if@cms@bracket% + {\cmsdateeraprint{#2endyear}% + \enddateuncertainprint% + \bibclosebracket\global\boolfalse{cms:bracket}}% + {\enddateuncertainprint% + \bibclosebracket\global\boolfalse{cms:bracket}% + \cmsdateeraprint{#2endyear}}}% + {\enddateuncertainprint% + \cmsdateeraprint{#2endyear}}}}}}% + \endgroup} + +\newrobustcmd*{\cms@mkbibrangefull}[2]{% + \begingroup + \blx@metadateinfo{#2}% + \clearfield{extradate}% + \ifthenelse{\iffieldundef{#2year}\AND\iffieldundef{#2month}\AND% + \iffieldundef{#2season}}% + {}% + {\printtext[#2date]{% + \if@cms@bracket% + {\cms@datebrackets% + \if@cms@circa% + {\bibsstring{circa}\printdelim{datecircadelim}} + {}}% + {\global\boolfalse{cms:bracket}}% + \iffieldundef{#2season}% + {\csuse{mkbibdate#1}{#2year}{#2month}{#2day}% + \ifboolexpr{% + test {\ifdateyearsequal{#2}{#2end}}% + and + test {\iffieldundef{#2month}}% + and + test {\iffieldundef{#2day}}% + }% + {\cmsdateeraprint{#2endyear}\clearfield{#2endyear}}% + {\cmsdateeraprint{#2year}}}% + {\csuse{mkbibseasondate#1}{#2year}{#2season}% + \cmsdateeraprint{#2year}}% + \if@cms@bracket% + {\if@cms@uncertain% + {\if@cms@enduncertain% + {\iffieldundef{#2endyear}% + {\bibdateuncertain}% + {}}% + {\bibdateuncertain}}% + {\if@cms@enduncertain% + {\iffieldundef{#2endyear}% + {\bibdateuncertain}% + {}}% + {}}}% + {}% + \ifthenelse{\iffieldundef{#2endyear}\AND\iffieldundef{#2endmonth}% + \AND\iffieldundef{#2endseason}}% + {\ifbool{cms:bracket}% + {\bibclosebracket\global\boolfalse{cms:bracket}}% + {}}% + {\iffieldequalstr{#2endyear}{}% + {\ifbool{cms:bracket}% + {\bibclosebracket\global\boolfalse{cms:bracket}}% + {}% + \mbox{\bibdaterangesep}}% + {\ifbool{cms:bracket}% + {\if@cms@circa% + {\if@cms@endbracket% + {\bibdaterangesep}% + {\bibclosebracket\global\boolfalse{cms:bracket}% + \bibdaterangesep}}% + {\if@cms@endcirca% + {\bibdaterangesep\bibsstring{circa}\printdelim{datecircadelim}}% + {\if@cms@enduncertain% + {\bibdaterangesep}% + {\bibclosebracket\global\boolfalse{cms:bracket}% + \bibdaterangesep}}}}% + {\if@cms@endbracket% + {\bibdaterangesep% + \cms@datebrackets% + \if@cms@endcirca% + {\if@cms@circa% + {}% + {\bibsstring{circa}\printdelim{datecircadelim}}}% + {}}% + {\bibdaterangesep}}%\bibdaterangesep% + \iffieldundef{#2endseason}% + {\csuse{mkbibdate#1}{#2endyear}{#2endmonth}{#2endday}}% + {\csuse{mkbibseasondate#1}{#2endyear}{#2endseason}}% + \ifbool{cms:bracket}% + {\if@cms@bracket% + {\cmsdateeraprint{#2endyear}% + \enddateuncertainprint% + \bibclosebracket\global\boolfalse{cms:bracket}}% + {\enddateuncertainprint% + \bibclosebracket\global\boolfalse{cms:bracket}% + \cmsdateeraprint{#2endyear}}}% + {\enddateuncertainprint% + \cmsdateeraprint{#2endyear}}}}}}% + \endgroup} + +\newrobustcmd*{\cms@mkyearrangeextra}[3][]{% + \begingroup + \clearfield{#3month}\clearfield{#3day}\clearfield{#3endmonth}% + \clearfield{#3endday}\clearfield{#3season}\clearfield{#3endseason}% + \blx@metadateinfo{#3}% + \iffieldundef{#3year} + {\blx@nounit}% + {\printtext{% + \if@cms@bracket% + {\cms@yearbrackets% + \if@cms@circa% + {\bibsstring{circa}\printdelim{datecircadelim}} + {}}% + {\global\boolfalse{cms:bracket}}% + \ifdateyearsequal{#3}{#3end}% + {\csuse{mkbibdate#2}{#3year}{}{}\cmsdateeraprint{#3endyear}% + \clearfield{#3endyear}}% + {\ifblank{#1}% + {\cmsunspecified{#2}{#3}}% + {\csuse{mkbibdate#2}{#3year}{}{}\cmsdateeraprint{#3year}}}% + \if@cms@bracket% + {\if@cms@uncertain% + {\if@cms@enduncertain% + {\iffieldundef{#3endyear}% + {\bibdateuncertain}% + {}}% + {\bibdateuncertain}}% + {\if@cms@enduncertain% + {\iffieldundef{#3endyear}% + {\bibdateuncertain}% + {}}% + {}}}% + {}% + \iffieldundef{#3endyear} + {\ifbool{cms:bracket}% + {\bibclosebracket\global\boolfalse{cms:bracket}}% + {}}% + {\iffieldequalstr{#3endyear}{}% + {\ifbool{cms:bracket}% + {\bibclosebracket\global\boolfalse{cms:bracket}}% + {}% + \mbox{\bibdaterangesep}}% + {\ifbool{cms:bracket}% + {\if@cms@circa% + {\if@cms@endbracket% + {\bibdaterangesep}% + {\bibclosebracket\global\boolfalse{cms:bracket}% + \bibdaterangesep}}% + {\if@cms@endcirca% + {\bibdaterangesep\bibsstring{circa}\printdelim{datecircadelim}}% + {\if@cms@enduncertain% + {\bibdaterangesep}% + {\bibclosebracket\global\boolfalse{cms:bracket}% + \bibdaterangesep}}}}% + {\if@cms@endbracket% + {\bibdaterangesep% + \cms@yearbrackets% + \if@cms@endcirca% + {\if@cms@circa% + {}% + {\bibsstring{circa}\printdelim{datecircadelim}}}% + {}}% + {\bibdaterangesep}}% + \csuse{mkbibdate#2}{#3endyear}{}{}% + \ifbool{cms:bracket}% + {\if@cms@bracket% + {\cmsdateeraprint{#3endyear}% + \enddateuncertainprint% + \bibclosebracket\global\boolfalse{cms:bracket}}% + {\enddateuncertainprint% + \bibclosebracket\global\boolfalse{cms:bracket}% + \cmsdateeraprint{#3endyear}}}% + {\if@cms@enduncertain% + {\bibdateuncertain}% + {}% + \cmsdateeraprint{#3endyear}}}}}}% + \endgroup}% + +\def\if@cms@adfirst{% + \ifboolexpr{% + test {\ifdefstring\blx@languagename{american}}% + or + test {\ifdefstring\blx@languagename{british}}% + or + test {\ifdefstring\blx@languagename{canadian}}% + or + test {\ifdefstring\blx@languagename{english}}% + or + test {\ifdefstring\blx@languagename{UKenglish}}% + or + test {\ifdefstring\blx@languagename{USenglish}}% + or + test {\ifdefstring\blx@languagename{australian}}% + or + test {\ifdefstring\blx@languagename{newzealand}}% + }% + {\@firstoftwo}% + {\@secondoftwo}} + +\def\if@cms@bracket{% + \ifboolexpr{% + ( + test {\ifdatecirca}% + and + togl {blx@datecirca}% + ) + or + ( + test {\ifdateuncertain}% + and + togl {blx@dateuncertain}% + ) + }% + {\@firstoftwo}% + {\@secondoftwo}} + +\def\if@cms@endbracket{% + \ifboolexpr{% + ( + test {\ifenddatecirca}% + and + togl {blx@datecirca}% + ) + or + ( + test {\ifenddateuncertain}% + and + togl {blx@dateuncertain}% + ) + }% + {\@firstoftwo}% + {\@secondoftwo}} + +\def\if@cms@circa{% + \ifboolexpr{% + test {\ifdatecirca}% + and + togl {blx@datecirca}% + }% + {\@firstoftwo}% + {\@secondoftwo}} + +\def\if@cms@uncertain{% + \ifboolexpr{% + test {\ifdateuncertain}% + and + togl {blx@dateuncertain}% + }% + {\@firstoftwo}% + {\@secondoftwo}} + +\def\if@cms@endcirca{% + \ifboolexpr{% + test {\ifenddatecirca}% + and + togl {blx@datecirca}% + }% + {\@firstoftwo}% + {\@secondoftwo}} + +\def\if@cms@enduncertain{% + \ifboolexpr{% + test {\ifenddateuncertain}% + and + togl {blx@dateuncertain}% + }% + {\@firstoftwo}% + {\@secondoftwo}} + +\def\if@cms@onlyyears#1{% + \ifboolexpr{% + test {\iffieldundef{#1month}}% + and + test {\iffieldundef{#1endmonth}}% + and + test {\iffieldundef{#1day}}% + and + test {\iffieldundef{#1endday}}% + }% + {\@firstoftwo}% + {\@secondoftwo}} + %%%% Related functionality from standard.bbx %%%% \newcounter{bbx:relatedcount} \newcounter{bbx:relatedtotal} +\newcounter{cms@reviewcount}% +\newcounter{cms@currentnote}% \newbibmacro*{related:init}{% \csundef{bbx:relatedloop}} +\newbibmacro*{related:mtpunct}{% + \iftoggle{cms@mtvolpunct}% + {\newcunit\newblock}% + {\newunit\newblock}} + +\newbibmacro*{related:mtsave}{% + \iffieldundef{pages}{}{\savefield*{pages}{\cms@mtpages}}% + \iffieldundef{bookpagination}{}{\savefield*{bookpagination}% + {\cms@mtpagination}}% + \iffieldundef{chapter}{}{\savefield*{chapter}{\cms@mtchapter}}}% + +\newbibmacro*{mt+mvnames+save}{% + \ifnameundef{author}{}{\savename*{author}{\cms@mtauthor}}% + \ifnameundef{editor}{}{\savename*{editor}{\cms@mteditor}}% + \ifnameundef{translator}{}{\savename*{translator}{\cms@mttranslator}}% + \ifnameundef{namec}{}{\savename*{namec}{\cms@mtnamec}}}% + +\newbibmacro*{related:noterefhelper}{% + \iftoggle{cms@noterefs}% + {\iftoggle{cms@endnote}% + {\ifnumequal{\value{cms@currentnote}}{\value{endnote}}% + {}% + {\csxdef{cms@parent@instcount}{\the\value{instcount}}% + \ifcsdef{cms@chap@\thefield{entrykey}}% + {\csxdef{cms@parent@chap}{\csuse{cms@chap@\thefield{entrykey}}}}% + {}% + \ifcsdef{cms@sec@\thefield{entrykey}}% + {\csxdef{cms@parent@sec}{\csuse{cms@sec@\thefield{entrykey}}}}% + {}% + \setcounter{cms@currentnote}{\value{endnote}}% + \def\cms@templista{}% + \def\cms@templistb{}}}% + {\ifnumequal{\value{cms@currentnote}}{\value{footnote}}% + {}% + {\csxdef{cms@parent@instcount}{\the\value{instcount}}% + \ifcsdef{cms@chap@\thefield{entrykey}}% + {\csxdef{cms@parent@chap}{\csuse{cms@chap@\thefield{entrykey}}}}% + {}% + \ifcsdef{cms@sec@\thefield{entrykey}}% + {\csxdef{cms@parent@sec}{\csuse{cms@sec@\thefield{entrykey}}}}% + {}% + \setcounter{cms@currentnote}{\value{footnote}}% + \def\cms@templista{}% + \def\cms@templistb{}}}% + \def\do##1{% + \entrydata{##1}{% + \listxadd\cms@templista{\strfield{clonesourcekey}}% + \listxadd\cms@templistb{\strfield{crossref}}% + \listxadd\cms@templistb{\strfield{xref}}}}% + \docsvfield{related}% + \def\do##1{% + \xifinlistcs{##1}{blx@bsee@\the\c@refsection}% + {\iftoggle{cms@relreview}% + {}% + {\csxdef{cbx@f@##1}{\csuse{cms@parent@instcount}}% + \csxdef{cms@recent@##1}{\csuse{cms@parent@instcount}}% + \csxdef{cms@invl@##1}% + {\the\value{\csuse{cms@noteref@interval}}}% + \ifcsdef{cms@parent@chap}% + {\csxdef{cms@chap@##1}{\csuse{cms@parent@chap}}}% + {}% + \ifcsdef{cms@parent@sec}% + {\csxdef{cms@sec@##1}{\csuse{cms@parent@sec}}}% + {}}}% + {\iftoggle{cms@relreview}% + {}% + {\listcsxadd{blx@bsee@\the\c@refsection}{##1}}% + \csxdef{cbx@f@##1}{\csuse{cms@parent@instcount}}% + \csxdef{cms@recent@##1}{\csuse{cms@parent@instcount}}% + \csxdef{cms@invl@##1}% + {\the\value{\csuse{cms@noteref@interval}}}% + \ifcsdef{cms@parent@chap}% + {\csxdef{cms@chap@##1}{\csuse{cms@parent@chap}}}% + {}% + \ifcsdef{cms@parent@sec}% + {\csxdef{cms@sec@##1}{\csuse{cms@parent@sec}}}% + {}}% + }% + \dolistloop{\cms@templista}% + \def\do##1{% + \csxdef{cbx@f@##1}{\csuse{cms@parent@instcount}}% + \csxdef{cms@recent@##1}{\csuse{cms@parent@instcount}}% + \csxdef{cms@invl@##1}% + {\value{\csuse{cms@noteref@interval}}}% + \ifcsdef{cms@parent@chap}% + {\csxdef{cms@chap@##1}{\csuse{cms@parent@chap}}}% + {}% + \ifcsdef{cms@parent@sec}% + {\csxdef{cms@sec@##1}{\csuse{cms@parent@sec}}}% + {}% + }% + \ifdefvoid{\cms@templistb}{}{\dolistloop{\cms@templistb}}}% + {}}% + \newbibmacro*{begrelated}{\ifcsdef{bbx@lasthash}% {\let\cms@related@hash\bbx@lasthash}{}}% \newbibmacro*{endrelated}{\ifcsdef{cms@related@hash}% @@ -2875,7 +4902,10 @@ \newbibmacro*{related}{% \ifboolexpr{ test {\iffieldundef{related}} or test {\ifrelatedloop} }% {}% - {\usebibmacro{begrelated}% + {\ifcsundef{begrelateddelim\strfield{relatedtype}}% + {\printunit{\begrelateddelim}}% + {\printunit{\csuse{begrelateddelim\strfield{relatedtype}}}}% + \usebibmacro{begrelated}% \def\bbx@tempa{}% \setcounter{bbx:relatedtotal}{0}% \def\do##1{% @@ -2895,7 +4925,13 @@ \def\do{% \stepcounter{bbx:relatedcount}% \ifnumgreater{\value{bbx:relatedcount}}{1}% - {\printtext{\relateddelim}}% + {\ifcsundef{relateddelim\strfield{relatedtype}}% + {\printunit{\relateddelim}}% + {\expandafter\expandafter\expandafter\expandafter\expandafter + \expandafter\expandafter\printunit + \expandafter\expandafter\expandafter\expandafter\expandafter + \expandafter\expandafter{% + \csuse{relateddelim\strfield{relatedtype}}}}}% {}}% \ifbibmacroundef{related:\strfield{relatedtype}}% {\appto{\do}{\usebibmacro{related:default}}}% @@ -2929,4 +4965,272 @@ {}% \usebibmacro{endrelated}}}% +%%% List of all CMS bibliography strings %%% + +\NewBibliographyString{% + afterwordto,% + broadcast,% + by,% + bychoreographer,% + bycompileraf,% + bycompileran,% + bycompileranaf,% + bycompileranfo,% + bycompileranin,% + bycompilerco,% + bycompilercoaf,% + bycompilercofo,% + bycompilercoin,% + bycompilerfo,% + bycompilerin,% + byconductor,% + bydirector,% + byeditoralt,% + byeditorcp,% + byeditorcpaf,% + byeditorcpan,% + byeditorcpanaf,% + byeditorcpanfo,% + byeditorcpanin,% + byeditorcpco,% + byeditorcpcoaf,% + byeditorcpcofo,% + byeditorcpcoin,% + byeditorcpfo,% + byeditorcpin,% + byeditortrcp,% + byeditortrcpaf,% + byeditortrcpan,% + byeditortrcpanaf,% + byeditortrcpanfo,% + byeditortrcpanin,% + byeditortrcpco,% + byeditortrcpcoaf,% + byeditortrcpcofo,% + byeditortrcpcoin,% + byeditortrcpfo,% + byeditortrcpin,% + bynone,% + byproducer,% + bytranslatorcp,% + bytranslatorcpaf,% + bytranslatorcpan,% + bytranslatorcpanaf,% + bytranslatorcpanfo,% + bytranslatorcpanin,% + bytranslatorcpco,% + bytranslatorcpcoaf,% + bytranslatorcpcofo,% + bytranslatorcpcoin,% + bytranslatorcpfo,% + bytranslatorcpin,% + canadasection,% + canadasections,% + cbyannotator,% + cbyauthor,% + cbychoreographer,% + cbycollaborator,% + cbycommentator,% + cbycompiler,% + cbycompileraf,% + cbycompileran,% + cbycompileranaf,% + cbycompileranfo,% + cbycompileranin,% + cbycompilerco,% + cbycompilercoaf,% + cbycompilercofo,% + cbycompilercoin,% + cbycompilerfo,% + cbycompilerin,% + cbyconductor,% + cbycontinuator,% + cbydirector,% + cbyeditor,% + cbyeditoraf,% + cbyeditoralt,% + cbyeditoran,% + cbyeditoranaf,% + cbyeditoranfo,% + cbyeditoranin,% + cbyeditorco,% + cbyeditorcoaf,% + cbyeditorcofo,% + cbyeditorcoin,% + cbyeditorcp,% + cbyeditorcpaf,% + cbyeditorcpan,% + cbyeditorcpanaf,% + cbyeditorcpanfo,% + cbyeditorcpanin,% + cbyeditorcpco,% + cbyeditorcpcoaf,% + cbyeditorcpcofo,% + cbyeditorcpcoin,% + cbyeditorcpfo,% + cbyeditorcpin,% + cbyeditorfo,% + cbyeditorin,% + cbyeditortr,% + cbyeditortraf,% + cbyeditortran,% + cbyeditortranaf,% + cbyeditortranfo,% + cbyeditortranin,% + cbyeditortrco,% + cbyeditortrcoaf,% + cbyeditortrcofo,% + cbyeditortrcoin,% + cbyeditortrcp,% + cbyeditortrcpaf,% + cbyeditortrcpan,% + cbyeditortrcpanaf,% + cbyeditortrcpanfo,% + cbyeditortrcpanin,% + cbyeditortrcpco,% + cbyeditortrcpcoaf,% + cbyeditortrcpcofo,% + cbyeditortrcpcoin,% + cbyeditortrcpfo,% + cbyeditortrcpin,% + cbyeditortrfo,% + cbyeditortrin,% + cbyfounder,% + cbynone,% + cbyorganizer,% + cbyproducer,% + cbyredactor,% + cbytranslator,% + cbytranslatoraf,% + cbytranslatoran,% + cbytranslatoranaf,% + cbytranslatoranfo,% + cbytranslatoranin,% + cbytranslatorco,% + cbytranslatorcoaf,% + cbytranslatorcofo,% + cbytranslatorcoin,% + cbytranslatorcp,% + cbytranslatorcpaf,% + cbytranslatorcpan,% + cbytranslatorcpanaf,% + cbytranslatorcpanfo,% + cbytranslatorcpanin,% + cbytranslatorcpco,% + cbytranslatorcpcoaf,% + cbytranslatorcpcofo,% + cbytranslatorcpcoin,% + cbytranslatorcpfo,% + cbytranslatorcpin,% + cbytranslatorfo,% + cbytranslatorin,% + century,% + cfromamerican,% + cfrombrazilian,% + cfrombulgarian,% + cfromcatalan,% + cfromcroatian,% + cfromczech,% + cfromdanish,% + cfromdutch,% + cfromenglish,% + cfromestonian,% + cfromfinnish,% + cfromfrench,% + cfromgalician,% + cfromgerman,% + cfromgreek,% + cfromitalian,% + cfromjapanese,% + cfromlatin,% + cfromnorwegian,% + cfrompolish,% + cfromportuguese,% + cfromrussian,% + cfromslovak,% + cfromslovene,% + cfromspanish,% + cfromswedish,% + cfromukrainian,% + choreographer,% + choreographers,% + commenton,% + conductor,% + conductors,% + decade,% + director,% + directors,% + discrecorded,% + edamerican,% + edbrazilian,% + edbulgarian,% + edcatalan,% + edcroatian,% + edczech,% + eddanish,% + eddutch,% + edenglish,% + edestonian,% + edfinnish,% + edfrench,% + edgalician,% + edgerman,% + edgreek,% + editalian,% + editorcompiler,% + editorcompilers,% + editortranscompiler,% + editortranscompilers,% + editortranslator,% + editortranslators,% + edjapanese,% + edlatin,% + ednorwegian,% + edpolish,% + edportuguese,% + edrussian,% + edslovak,% + edslovene,% + edspanish,% + edswedish,% + edukrainian,% + forewordto,% + hereinafter,% + inlang,% + introductionto,% + none,% + nones,% + note,% + numbers,% + of,% + on,% + origedition,% + origpub,% + origpublin,% + origpubyear,% + origpubyearalt,% + origreleaseyear,% + origshownyear,% + partvolume,% + patentfiled,% + patentissued,% + preface,% + printed,% + producer,% + producers,% + pseudonym,% + review,% + revisededition,% + selfpublished,% + songrecorded,% + subsection,% + subsections,% + subverbis,% + subverbo,% + supranote,% + track,% + transcompiler,% + transcompilers% + }% + \endinput |