summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/biblatex-ms/latex/bbx/authoryear-ms.bbx
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/biblatex-ms/latex/bbx/authoryear-ms.bbx')
-rw-r--r--macros/latex/contrib/biblatex-ms/latex/bbx/authoryear-ms.bbx293
1 files changed, 293 insertions, 0 deletions
diff --git a/macros/latex/contrib/biblatex-ms/latex/bbx/authoryear-ms.bbx b/macros/latex/contrib/biblatex-ms/latex/bbx/authoryear-ms.bbx
new file mode 100644
index 0000000000..643180d0ea
--- /dev/null
+++ b/macros/latex/contrib/biblatex-ms/latex/bbx/authoryear-ms.bbx
@@ -0,0 +1,293 @@
+\ProvidesFile{authoryear-ms.bbx}
+[\abx@bbxid]
+
+\RequireBibliographyStyle{standard}
+
+\DeclareBibliographyOption[boolean]{dashed}[true]{%
+ \ifstrequal{#1}{true}
+ {\ExecuteBibliographyOptions{pagetracker}%
+ \renewbibmacro*{bbx:savehash}{\savefield{fullhash}{\bbx@lasthash}}}
+ {\renewbibmacro*{bbx:savehash}{}}}
+
+\DeclareBiblatexOption{global,type,entry}[boolean]{mergedate}[true]{%
+ \ifcsdef{bbx@opt@mergedate@#1}
+ {\csuse{bbx@opt@mergedate@#1}}
+ {\PackageError{biblatex}
+ {Invalid option 'mergedate=#1'}
+ {Valid values are 'maximum', 'compact', 'basic', 'minimum',\MessageBreak
+ 'true' (=compact), and 'false'.}}}
+
+\providebibmacro*{date+extradate}{}
+\providebibmacro*{date+extrayear}{%
+ \blx@warning{bibmacro 'date+extrayear' is deprecated.\MessageBreak
+ Please use 'date+extradate'.\MessageBreak
+ Using 'date+extradate' instead}%
+ \usebibmacro{date+extradate}}
+
+\newbibmacro*{bbx:ifmergeddate}{\@secondoftwo}
+
+\renewbibmacro*{date}{%
+ \usebibmacro{bbx:ifmergeddate}
+ {}
+ {\printdate}}%
+
+\def\bbx@opt@mergedate@true{\bbx@opt@mergedate@compact}
+
+% merge date/issue with date label
+\def\bbx@opt@mergedate@maximum{%
+ \renewbibmacro*{date+extradate}{%
+ \iffieldundef{labelyear}
+ {}
+ {\printtext[parens]{%
+ \iflabeldateisdate
+ {\printfield{issue}%
+ \setunit*{\addspace}%
+ \printdateextra}
+ {\printlabeldateextra}}}}%
+ \renewbibmacro*{bbx:ifmergeddate}{\iflabeldateisdate}%
+ \renewbibmacro*{issue+date}{%
+ \usebibmacro{bbx:ifmergeddate}
+ {}
+ {\printtext[parens]{%
+ \printfield{issue}%
+ \setunit*{\addspace}%
+ \printdate}}}}
+
+% merge date with date label
+\def\bbx@opt@mergedate@compact{%
+ \renewbibmacro*{date+extradate}{%
+ \iffieldundef{labelyear}
+ {}
+ {\printtext[parens]{%
+ \iflabeldateisdate
+ {\printdateextra}
+ {\printlabeldateextra}}}}%
+ \renewbibmacro*{bbx:ifmergeddate}{\iflabeldateisdate}%
+ \renewbibmacro*{issue+date}{%
+ \ifboolexpr{test {\usebibmacro{bbx:ifmergeddate}}
+ and
+ test {\iffieldundef{issue}}}
+ {}
+ {\printtext[parens]{%
+ \printfield{issue}%
+ \setunit*{\addspace}%
+ \usebibmacro{bbx:ifmergeddate}
+ {}
+ {\printdate}}}%
+ \newunit}}
+
+% merge year-only date with date label
+\def\bbx@opt@mergedate@basic{%
+ \renewbibmacro*{date+extradate}{%
+ \iffieldundef{labelyear}
+ {}
+ {\printtext[parens]{\printlabeldateextra}}}%
+ \renewbibmacro*{bbx:ifmergeddate}{%
+ \ifboolexpr{
+ test {\iflabeldateisdate}
+ and
+ not test {\ifdateshavedifferentprecision{label}{}}
+ }%
+ }%
+ \renewbibmacro*{issue+date}{%
+ \ifboolexpr{
+ test {\usebibmacro{bbx:ifmergeddate}}
+ and
+ test {\iffieldundef{issue}}
+ }
+ {}
+ {\printtext[parens]{%
+ \printfield{issue}%
+ \setunit*{\addspace}%
+ \printdate}}%
+ \newunit}}
+
+% merge year-only date with year-only date label
+\def\bbx@opt@mergedate@minimum{%
+ \renewbibmacro*{date+extradate}{%
+ \iffieldundef{labelyear}
+ {}
+ {\printtext[parens]{\printlabeldateextra}}}%
+ \renewbibmacro*{bbx:ifmergeddate}{%
+ \ifboolexpr{
+ test {\iflabeldateisdate}
+ and
+ not test {\ifdateshavedifferentprecision{label}{}}
+ and
+ test {\iffieldundef{extradate}}
+ }%
+ }%
+ \renewbibmacro*{issue+date}{%
+ \ifboolexpr{
+ test {\usebibmacro{bbx:ifmergeddate}}
+ and
+ test {\iffieldundef{issue}}
+ }
+ {}
+ {\printtext[parens]{%
+ \printfield{issue}%
+ \setunit*{\addspace}%
+ \printdate}}%
+ \newunit}}
+
+% don't merge date/issue with date label
+\def\bbx@opt@mergedate@false{%
+ \renewbibmacro*{date+extradate}{%
+ \iffieldundef{labelyear}
+ {}
+ {\printtext[parens]{\printlabeldateextra}}}%
+ \renewbibmacro*{bbx:ifmergeddate}{\@secondoftwo}%
+ \renewbibmacro*{issue+date}{%
+ \printtext[parens]{%
+ \printfield{issue}%
+ \setunit*{\addspace}%
+ \usebibmacro{date}}%
+ \newunit}}
+
+\ExecuteBibliographyOptions{labeldateparts,sorting=nyt,pagetracker,mergedate}
+
+\DeclareFieldFormat{shorthandwidth}{#1}
+\setlength{\bibitemsep}{0pt}
+
+\DeclareNameAlias{author}{sortname}
+\DeclareNameAlias{editor}{sortname}
+\DeclareNameAlias{translator}{sortname}
+
+\DeclareNameWrapperAlias{author}{sortname}
+\DeclareNameWrapperAlias{editor}{sortname}
+\DeclareNameWrapperAlias{translator}{sortname}
+
+\defbibenvironment{bibliography}
+ {\list
+ {}
+ {\setlength{\leftmargin}{\bibhang}%
+ \setlength{\itemindent}{-\leftmargin}%
+ \setlength{\itemsep}{\bibitemsep}%
+ \setlength{\parsep}{\bibparsep}}}
+ {\endlist}
+ {\item}
+
+\defbibenvironment{shorthand}
+ {\list
+ {\printfield[shorthandwidth]{shorthand}}
+ {\setlength{\labelwidth}{\shorthandwidth}%
+ \setlength{\leftmargin}{\labelwidth}%
+ \setlength{\labelsep}{\biblabelsep}%
+ \addtolength{\leftmargin}{\labelsep}%
+ \setlength{\itemsep}{\bibitemsep}%
+ \setlength{\parsep}{\bibparsep}%
+ \renewcommand*{\makelabel}[1]{##1\hss}}}
+ {\endlist}
+ {\item}
+
+\InitializeBibliographyStyle{\global\undef\bbx@lasthash}
+
+\newbibmacro*{bbx:savehash}{%
+ \savefield{fullhash}{\bbx@lasthash}}
+
+\newbool{bbx@inset}
+\DeclareBibliographyDriver{set}{%
+ \booltrue{bbx@inset}%
+ \entryset{}{}%
+ \newunit\newblock
+ \usebibmacro{setpageref}%
+ \finentry}
+
+\renewbibmacro*{begrelated}{%
+ \booltrue{bbx@inset}}
+
+\renewbibmacro*{endrelated}{%
+ \usebibmacro*{bbx:savehash}}
+
+\renewbibmacro*{author}{%
+ \ifboolexpr{
+ test \ifuseauthor
+ and
+ not test {\ifnameundef{author}}
+ }
+ {\usebibmacro{bbx:dashcheck}
+ {\bibnamedash}
+ {\usebibmacro{bbx:savehash}%
+ \printnames{author}%
+ \iffieldundef{authortype}
+ {\setunit{\printdelim{nameyeardelim}}}
+ {\setunit{\printdelim{authortypedelim}}}}%
+ \iffieldundef{authortype}
+ {}
+ {\usebibmacro{authorstrg}%
+ \setunit{\printdelim{nameyeardelim}}}}%
+ {\global\undef\bbx@lasthash
+ \usebibmacro{labeltitle}%
+ \setunit*{\printdelim{nonameyeardelim}}}%
+ \usebibmacro{date+extradate}}
+
+\renewbibmacro*{editor}{%
+ \usebibmacro{bbx:editor}{editorstrg}}
+\renewbibmacro*{editor+others}{%
+ \usebibmacro{bbx:editor}{editor+othersstrg}}
+\newbibmacro*{bbx:editor}[1]{%
+ \ifboolexpr{
+ test \ifuseeditor
+ and
+ not test {\ifnameundef{editor}}
+ }
+ {\usebibmacro{bbx:dashcheck}
+ {\bibnamedash}
+ {\printnames{editor}%
+ \setunit{\printdelim{editortypedelim}}%
+ \usebibmacro{bbx:savehash}}%
+ \usebibmacro{#1}%
+ \clearname{editor}%
+ \setunit{\printdelim{nameyeardelim}}}%
+ {\global\undef\bbx@lasthash
+ \usebibmacro{labeltitle}%
+ \setunit*{\printdelim{nonameyeardelim}}}%
+ \usebibmacro{date+extradate}}
+
+\renewbibmacro*{translator}{%
+ \usebibmacro{bbx:translator}{translatorstrg}}
+\renewbibmacro*{translator+others}{%
+ \usebibmacro{bbx:translator}{translator+othersstrg}}
+\newbibmacro*{bbx:translator}[1]{%
+ \ifboolexpr{
+ test \ifusetranslator
+ and
+ not test {\ifnameundef{translator}}
+ }
+ {\usebibmacro{bbx:dashcheck}
+ {\bibnamedash}
+ {\printnames{translator}%
+ \setunit{\printdelim{translatortypedelim}}%
+ \usebibmacro{bbx:savehash}}%
+ \usebibmacro{#1}%
+ \clearname{translator}%
+ \setunit{\printdelim{nameyeardelim}}}%
+ {\global\undef\bbx@lasthash
+ \usebibmacro{labeltitle}%
+ \setunit*{\printdelim{nonameyeardelim}}}%
+ \usebibmacro{date+extradate}}
+
+\newbibmacro*{bbx:dashcheck}[2]{%
+ \ifboolexpr{
+ test {\iffieldequals{fullhash}{\bbx@lasthash}}
+ and
+ not test \iffirstonpage
+ and
+ (
+ not bool {bbx@inset}
+ or
+ test {\iffieldequalstr{entrysetcount}{1}}
+ )
+ }
+ {#1}
+ {#2}}
+
+\newbibmacro*{labeltitle}{%
+ \iffieldundef{label}
+ {\iffieldundef{shorttitle}
+ {\printfield{title}%
+ \clearfield{title}}
+ {\printfield[title]{shorttitle}}}
+ {\printfield{label}}}
+
+\endinput