% $Id: authoryear.bbx,v 1.4c 2011/05/12 18:28:32 lehman stable $ \ProvidesFile{authoryear.bbx} [\abx@bbxid $Id: authoryear.bbx,v 1.4c 2011/05/12 18:28:32 lehman stable $] \RequireBibliographyStyle{standard} \DeclareBibliographyOption{dashed}[true]{% \ifstrequal{#1}{true} {\ExecuteBibliographyOptions{pagetracker}% \renewbibmacro*{bbx:savehash}{\savefield{fullhash}{\bbx@lasthash}}} {\renewbibmacro*{bbx:savehash}{}}} \DeclareBibliographyOption{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+extrayear}{} \def\bbx@opt@mergedate@true{\bbx@opt@mergedate@compact} \def\bbx@opt@mergedate@maximum{% \renewbibmacro*{date+extrayear}{% \iffieldundef{year} {} {\printtext[parens]{% \printfield{issue}% \setunit*{\addspace}% \printdateextra}}}% \renewbibmacro*{date}{}% \renewbibmacro*{issue+date}{}% } \def\bbx@opt@mergedate@compact{% \renewbibmacro*{date+extrayear}{% \iffieldundef{year} {} {\printtext[parens]{\printdateextra}}}% \renewbibmacro*{date}{}% \renewbibmacro*{issue+date}{% \iffieldundef{issue} {} {\printtext[parens]{\printfield{issue}}} \newunit}% } \def\bbx@opt@mergedate@basic{% \renewbibmacro*{date+extrayear}{% \iffieldundef{labelyear} {} {\printtext[parens]{% \printfield{labelyear}% \printfield{extrayear}}}}% \renewbibmacro*{date}{% \iffieldundef{month} {} {\printdate}}% \renewbibmacro*{issue+date}{% \ifboolexpr{ test {\iffieldundef{issue}} and test {\iffieldundef{month}} } {} {\printtext[parens]{% \printfield{issue}% \setunit*{\addspace}% \printdate}}% \newunit}% } \def\bbx@opt@mergedate@minimum{% \renewbibmacro*{date+extrayear}{% \iffieldundef{labelyear} {} {\printtext[parens]{% \printfield{labelyear}% \printfield{extrayear}}}}% \renewbibmacro*{date}{% \ifboolexpr{ test {\iffieldundef{month}} and test {\iffieldundef{extrayear}} } {} {\printdate}}% \renewbibmacro*{issue+date}{% \ifboolexpr{ test {\iffieldundef{issue}} and test {\iffieldundef{month}} and test {\iffieldundef{extrayear}} } {} {\printtext[parens]{% \printfield{issue}% \setunit*{\addspace}% \printdate}}% \newunit}% } \def\bbx@opt@mergedate@false{% \renewbibmacro*{date+extrayear}{% \iffieldundef{labelyear} {} {\printtext[parens]{% \printfield{labelyear}% \printfield{extrayear}}}}% \renewbibmacro*{date}{\printdate}% \renewbibmacro*{issue+date}{% \printtext[parens]{% \printfield{issue}% \setunit*{\addspace}% \printdate}% \newunit}% } \ExecuteBibliographyOptions{labelyear,sorting=nyt,pagetracker,mergedate} \DeclareFieldFormat{shorthandwidth}{#1} \setlength{\bibitemsep}{0pt} \DeclareNameAlias{author}{sortname} \DeclareNameAlias{editor}{sortname} \DeclareNameAlias{translator}{sortname} \defbibenvironment{bibliography} {\list {} {\setlength{\leftmargin}{\bibhang}% \setlength{\itemindent}{-\leftmargin}% \setlength{\itemsep}{\bibitemsep}% \setlength{\parsep}{\bibparsep}}} {\endlist} {\item} \defbibenvironment{shorthands} {\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*{author}{% \ifboolexpr{ test \ifuseauthor and not test {\ifnameundef{author}} } {\usebibmacro{bbx:dashcheck} {\bibnamedash} {\usebibmacro{bbx:savehash}% \printnames{author}% \iffieldundef{authortype} {\setunit{\addspace}} {\setunit{\addcomma\space}}}% \iffieldundef{authortype} {} {\usebibmacro{authorstrg}% \setunit{\addspace}}}% {\global\undef\bbx@lasthash \usebibmacro{labeltitle}% \setunit*{\addspace}}% \usebibmacro{date+extrayear}} \renewbibmacro*{editor}{% \usebibmacro{bbx:editor}{editorstrg}} \renewbibmacro*{editor+others}{% \usebibmacro{bbx:editor}{editor+othersstrg}} \newbibmacro*{bbx:editor}[1]{% \ifboolexpr{ test \ifuseeditor and not test {\ifnameundef{editor}} } {\usebibmacro{bbx:dashcheck} {\bibnamedash} {\printnames{editor}% \setunit{\addcomma\space}% \usebibmacro{bbx:savehash}}% \usebibmacro{#1}% \clearname{editor}% \setunit{\addspace}}% {\global\undef\bbx@lasthash \usebibmacro{labeltitle}% \setunit*{\addspace}}% \usebibmacro{date+extrayear}} \renewbibmacro*{translator}{% \usebibmacro{bbx:translator}{translatorstrg}} \renewbibmacro*{translator+others}{% \usebibmacro{bbx:translator}{translator+othersstrg}} \newbibmacro*{bbx:translator}[1]{% \ifboolexpr{ test \ifusetranslator and not test {\ifnameundef{translator}} } {\usebibmacro{bbx:dashcheck} {\bibnamedash} {\printnames{translator}% \setunit{\addcomma\space}% \usebibmacro{bbx:savehash}}% \usebibmacro{translator+othersstrg}% \clearname{translator}% \setunit{\addspace}}% {\global\undef\bbx@lasthash \usebibmacro{labeltitle}% \setunit*{\addspace}}% \usebibmacro{date+extrayear}} \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