diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/biblatex-contrib/biblatex-historian/historian.bbx |
Initial commit
Diffstat (limited to 'macros/latex/contrib/biblatex-contrib/biblatex-historian/historian.bbx')
-rw-r--r-- | macros/latex/contrib/biblatex-contrib/biblatex-historian/historian.bbx | 3110 |
1 files changed, 3110 insertions, 0 deletions
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-historian/historian.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-historian/historian.bbx new file mode 100644 index 0000000000..0992609d00 --- /dev/null +++ b/macros/latex/contrib/biblatex-contrib/biblatex-historian/historian.bbx @@ -0,0 +1,3110 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% historian.bbx, v0.4, 2010/08/22 +% A bibliography style for use with biblatex +% Developed and maintained by Sander Gliboff, +% based on guidelines from the Turabian Manual for Writers, 7th ed. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\ProvidesFile{historian.bbx}[2010/08/22 v0.4 historian bibliography style] + + \@ifpackagelater{biblatex}{2010/08/04} + {} + {\PackageError{biblatex} + {Outdated 'biblatex' package + The 'historian' style requires biblatex v0.9b or later.\MessageBreak + You are using: '\csuse{ver@biblatex.sty}'.\MessageBreak + This is a fatal error.}% + \endinput} + +%%%%% BIBLIOGRAPHY ENVIRONMENTS AND PARAMETERS %%%%% + +%This style is based on verbose-inote.bbx and authortitle.bbx, from which the following macros are taken (with small modifications): + +\RequireBibliographyStyle{standard} +%\ExecuteBibliographyOptions{pagetracker}%options all in cbx file + +\DeclareBibliographyOption{dashed}[true]{% + \ifstrequal{#1}{true} + {\ExecuteBibliographyOptions{pagetracker}% + \renewbibmacro*{bbx:savehash}{\savefield{fullhash}{\bbx@lasthash}}} + {\ExecuteBibliographyOptions{pagetracker=false}% + \renewbibmacro*{bbx:savehash}{}}} + +\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} + {\toggletrue{losflag} + \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{}{}% + \finentry} + +%\renewbibmacro*{author}{% Redefined extensively below +% \ifthenelse{\ifuseauthor\AND\NOT\ifnameundef{author}} +% {\ifthenelse{\iffieldequals{fullhash}{\bbx@lasthash}\AND +% \NOT\iffirstonpage\AND +% \(\NOT\boolean{bbx@inset}\OR +% \iffieldequalstr{entrysetcount}{1}\)} +% {\bibnamedash\setunit{\addcomma\addspace}}%Changed from authortitle to insert comma after namedash +% {\printnames{author}% +% \setunit{\addcomma\space}% +% \usebibmacro{bbx:savehash}}% +% \usebibmacro{authorstrg}} +% {\global\undef\bbx@lasthash}} + +\renewbibmacro*{editor}{% + \usebibmacro{bbx:editor}{editorstrg}} +\renewbibmacro*{editor+others}{% + \usebibmacro{bbx:editor}{editor+othersstrg}} +\newbibmacro*{bbx:editor}[1]{% + \ifthenelse{\ifuseeditor\AND\NOT\ifnameundef{editor}} + {\ifthenelse{\iffieldequals{fullhash}{\bbx@lasthash}\AND + \NOT\iffirstonpage\AND + \(\NOT\boolean{bbx@inset}\OR + \iffieldequalstr{entrysetcount}{1}\)} + {\bibnamedash\setunit{\addcomma\addspace}}%Changed from authortitle to insert comma after namedash + {\printnames{editor}% + \setunit{\addcomma\space}% + \usebibmacro{bbx:savehash}}% + \usebibmacro{#1}% + \clearname{editor}} + {\global\undef\bbx@lasthash}} + +\renewbibmacro*{translator}{% + \usebibmacro{bbx:translator}{translatorstrg}} +\renewbibmacro*{translator+others}{% + \usebibmacro{bbx:translator}{translator+othersstrg}} +\newbibmacro*{bbx:translator}[1]{% + \ifthenelse{\ifusetranslator\AND\NOT\ifnameundef{translator}} + {\ifthenelse{\iffieldequals{fullhash}{\bbx@lasthash}\AND + \NOT\iffirstonpage\AND + \(\NOT\boolean{bbx@inset}\OR + \iffieldequalstr{entrysetcount}{1}\)} + {\bibnamedash\setunit{\addcomma\addspace}}%Changed from authortitle to insert comma after namedash + {\printnames{translator}% + \setunit{\addcomma\space}% + \usebibmacro{bbx:savehash}}% + \usebibmacro{#1}% + \clearname{translator}} + {\global\undef\bbx@lasthash}} + + +%%%%% TOGGLES AND VARIABLES %%%%%%%%%%%%%%%%%%%%%%%%%% + +%Flag set in .cbx file when there appears to be a page range in the postnote +%(used for suppressing the pages field of articles in the footnotes) +\newtoggle{printpagerange} +\toggletrue{printpagerange} + +%Set in the .cbx file by the footciteurllast and citerurllast commands +\newtoggle{urllastflag} +\togglefalse{urllastflag} + +%used when crossreferencing from customd: +\newtoggle{printpages} +\newtoggle{printvolume} + +%used for flagging repeating author names in bibliography +\newtoggle{namedashflag} +\togglefalse{namedashflag} + +%Used for flagging when volume numbers or maintitles have alread been printed +\newtoggle{volumeprinted} +\togglefalse{volumeprinted} +\newtoggle{maintitleprinted} +\togglefalse{maintitleprinted} + +%Used for flagging books that are reprint editions or translations, with original publication data +\newtoggle{origdataflag} +\newcommand\reprintoption{\optionnoreprints} + +%Used for flagging crossreferences from customd or letter +\newtoggle{xrefflag}\togglefalse{xrefflag} + + +%Flags set by package and entry options +\newtoggle{printurlsflag} +\newtoggle{printseriesflag} +\newtoggle{shortincollflag} +\newtoggle{addorigflag}\togglefalse{addorigflag} +\newtoggle{addtransfromflag}\togglefalse{addtransfromflag} +\newtoggle{useshorttitles} +\newtoggle{useshortauthors} + +%Flag set in list-of-shorthands environment +\newtoggle{losflag} + +%Flags used for annotated bibliographies---copied from reading.bbx (new in v. 0.2) +%\newbool{bbx:entrykey} +\newbool{bbx:annotation} +%\newbool{bbx:abstract} +%\newbool{bbx:library} +%\newbool{bbx:file} + + +%%%%%% PACKAGE AND ENTRY OPTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Define url/doi/eprint options from standard.bbx as EntryOptions as well as BibliographyOptions (New in v.0.3.) + +\DeclareEntryOption{url}[true]{% + \settoggle{bbx:url}{#1}} +\DeclareEntryOption{doi}[true]{% + \settoggle{bbx:doi}{#1}} +\DeclareEntryOption{eprint}[true]{% + \settoggle{bbx:eprint}{#1}} + +% Historian-specific options---see the cbx-file for the citepages options + +\DeclareBibliographyOption{printseries}[true] + {\ifstrequal{#1}{true} + {\toggletrue{printseriesflag}}% + {\togglefalse{printseriesflag}}}% + +\DeclareEntryOption{printseries}[true] + {\ifstrequal{#1}{true} + {\toggletrue{printseriesflag}}% + {\togglefalse{printseriesflag}}}% + +\DeclareBibliographyOption{shortincoll}[true] + {\ifstrequal{#1}{true} + {\toggletrue{shortincollflag}}% + {\togglefalse{shortincollflag}}}% + +\DeclareEntryOption{shortincoll}[true] + {\ifstrequal{#1}{true} + {\toggletrue{shortincollflag}}% + {\togglefalse{shortincollflag}}}% + +\DeclareBibliographyOption{reprint}[origfirst] + {\renewcommand\reprintoption{#1}% + \ifthenelse{\equal{\reprintoption}{\optionaddoriginal} + \or\equal{\reprintoption}{\optionorigfirst} + \or\equal{\reprintoption}{\optiondoubledate} + \or\equal{\reprintoption}{\optionnoreprints}} + {%then valid bibliography option + \relax}% + {%else not a valid option; don't do reprints at all + \renewcommand\reprintoption{\optionnoreprints}}% + }% + +\DeclareEntryOption{reprint}[origfirst] + {\renewcommand\reprintoption{#1}% + \ifthenelse{\equal{\reprintoption}{\optionaddoriginal} + \or\equal{\reprintoption}{\optionorigfirst} + \or\equal{\reprintoption}{\optiondoubledate} + \or\equal{\reprintoption}{\optionnoreprints} + \or\equal{\reprintoption}{\optiontransfromorig} + \or\equal{\reprintoption}{\optionorigtransas}} + {%then valid entry option + \relax}% + {%else not a valid option; don't do reprints at all + \renewcommand\reprintoption{\optionnoreprints}}% + }% + +\DeclareEntryOption{shorttitle}[true] + {\ifstrequal{#1}{true} + {\toggletrue{useshorttitles}}% + {\togglefalse{useshorttitles}}}% + +\DeclareEntryOption{shortauthor}[true] + {\ifstrequal{#1}{true} + {\toggletrue{useshortauthors}}% + {\togglefalse{useshortauthors}}}% + +%Option declarations for annotated bibliographies (new in v. 0.2) + +\DeclareBibliographyOption{annotation}[true]{% + \csuse{bool#1}{bbx:annotation}} +\DeclareEntryOption{annotation}[true]{% + \csuse{bool#1}{bbx:annotation}} + + + +%%%%% CITE COMMANDS FOR CROSS-REFERENCING %%%%%%%%%%% + +%For cross-referencing to collection (or book) in bibliography +\DeclareCiteCommand{\bbx@crosstocoll}[]{}{% + \toggletrue{xrefflag}% + \printtext + {\bibhypertarget{\thefield{entrykey}:\the\value{instcount}}% + {\iftoggle{shortincollflag} + {%Then book/collection date are to be abbreviated + \usebibmacro{getbookinfo-short}}% + {%Else Print book/collection data in full + \usebibmacro{getbookinfo}}}}% +}{}{}% + +%For cross-referencing to periodical in bibliography +\DeclareCiteCommand{\bbx@crosstoper}[]{}{% + \toggletrue{xrefflag}% + \printtext + {\bibhypertarget{\thefield{entrykey}:\the\value{instcount}}% + {\usebibmacro{journal+issuetitle}}}% +}{}{}% + + +%For cross-referencing to reference in bibliography. +%Normally, reference works won't be included in the bibliography, but just in case +%Treated same as xrefs to collections and books +\DeclareCiteCommand{\bbx@crosstoref}[]{}{% + \toggletrue{xrefflag}% +\printtext + {\bibhypertarget{\thefield{entrykey}:\the\value{instcount}}% + {\iftoggle{shortincollflag} + {\usebibmacro{getbookinfo-short}}% + {\usebibmacro{getbookinfo}}}}% +}{}{}% + +%For cross-referencing to customa in bibliography +\DeclareCiteCommand{\bbx@crosstoarch}[]{}{% + \toggletrue{xrefflag}% + \printtext + {\bibhypertarget{\thefield{entrykey}:\the\value{instcount}}% + {\usebibmacro{in:}\usebibmacro{getarchiveinfo}}}% +}{}{}% + + +%%%%% BIBLIOGRAPHY CATEGORIES %%%%%%%%%%% +%Certain entrytypes and subtypes need to be omitted or listed separately from the main bibliography. Set up categories for them +\DeclareBibliographyCategory{noteonly} +\DeclareBibliographyCategory{newspaper} +\DeclareBibliographyCategory{magazine} +\DeclareBibliographyCategory{innewspaper} +\DeclareBibliographyCategory{inmagazine} +\DeclareBibliographyCategory{classic} +\DeclareBibliographyCategory{canonical} +\DeclareBibliographyCategory{biblical} +\DeclareBibliographyCategory{blog} +\DeclareBibliographyCategory{listserv} + +%%%%%% PUNCTUATION AND FIELD FORMATS +% Unit punctuation is comma, block punctuation period +\renewcommand\newunitpunct{\addperiod\addspace}% + +%Colons before page numbers and between titles and subtitles +\renewcommand{\bibpagespunct}{\addcolon\addspace}% +\renewcommand*{\subtitlepunct}{\addcolon\addspace}% + +%...But no colon if title ends in a question mark or exclamation point +%\DefineBibliographyExtras{english}{\DeclarePunctuationPairs{colon}{*}} +\DefineBibliographyExtras{american}{\DeclarePunctuationPairs{colon}{*}}%Should allow colon only after abbreviation dot---doesn't seem to work + +%%Put commas, etc. inside quotes +\uspunctuation %This makes sure American-style quote punctuation is enabled + +% Title formatting +% (Titles should have been entered in headline case) + +\DeclareFieldFormat{titlecase}{#1} + +\DeclareFieldFormat{booktitle}{\mkbibemph{#1}} +\DeclareFieldFormat{issuetitle}{\mkbibquote{#1}} + +\DeclareFieldFormat[customd]{title}{% + \ifthenelse{\equal{\thefield{entrysubtype}}{\subtypebooklike}}% + {\mkbibemph{#1}}% + {\mkbibquote{#1}}}% +\DeclareFieldFormat[periodical]{title}{% + \mkbibemph{#1}}% +\DeclareFieldFormat[article]{title}{% + \ifthenelse{\equal{\thefield{entrysubtype}}{\subtypepublicdocument}}% + {\mkbibemph{#1}}% + {\mkbibquote{#1}}}% +\DeclareFieldFormat[incollection]{title}{% + \ifthenelse{\equal{\thefield{entrysubtype}}{\subtypebooklike}% + \or\equal{\thefield{entrysubtype}}{\subtypepublicdocument}}% + {\mkbibemph{#1}}% + {\mkbibquote{#1}}}% +\DeclareFieldFormat[inreference]{title}{% + \ifthenelse{\equal{\thefield{entrysubtype}}{\subtypebooklike}% + \or\equal{\thefield{entrysubtype}}{\subtypepublicdocument}}% + {\mkbibemph{#1}}% + {\mkbibquote{#1}}}% +\DeclareFieldFormat[jurisdiction]{title}{#1}% +\DeclareFieldFormat[legal]{title}{\mkbibemph{#1}}% +\DeclareFieldFormat[legislation]{title}{\mkbibemph{#1}}% +\DeclareFieldFormat[performance]{title}{% + \ifthenelse{\equal{\thefield{entrysubtype}}{\subtypebooklike}}% + {\mkbibemph{#1}}% + {\mkbibquote{#1}}}% +\DeclareFieldFormat[audio]{title}{% + \ifthenelse{\equal{\thefield{entrysubtype}}{\subtypebooklike}}% + {\mkbibemph{#1}}% + {\mkbibquote{#1}}}% +\DeclareFieldFormat[music]{title}{% + \ifthenelse{\equal{\thefield{entrysubtype}}{\subtypebooklike}}% + {\mkbibemph{#1}}% + {\mkbibquote{#1}}}% +\DeclareFieldFormat[movie]{title}{% + \ifthenelse{\equal{\thefield{entrysubtype}}{\subtypebooklike}}% + {\mkbibemph{#1}}% + {\mkbibquote{#1}}}% +\DeclareFieldFormat[video]{title}{% + \ifthenelse{\equal{\thefield{entrysubtype}}{\subtypeonline}}% + {\mkbibquote{#1}}% + {\mkbibemph{#1}}}% +\DeclareFieldFormat[artwork]{title}{% + \ifthenelse{\equal{\thefield{entrysubtype}}{\subtypebooklike}}% + {\mkbibemph{#1}}% + {\mkbibquote{#1}}}% +\DeclareFieldFormat[image]{title}{% + \ifthenelse{\equal{\thefield{entrysubtype}}{\subtypebooklike}}% + {\mkbibemph{#1}}% + {\mkbibquote{#1}}}% +\DeclareFieldFormat[customa]{title}{#1}% +\DeclareFieldFormat{volumetitle}{\mkbibemph{#1}}% +\DeclareFieldFormat{journalasauthor}{\mkbibemph{#1}}% +\DeclareFieldFormat[online]{title}{% + \ifthenelse{\equal{\thefield{entrysubtype}}{\subtypedatabase}}% + {{#1}}% + {\ifthenelse{\equal{\thefield{entrysubtype}}{\subtypebooklike}}% + {\mkbibemph{#1}}% + {\mkbibquote{#1}}}}% + +%Improvised use of booktitle in non-book media +\DeclareFieldFormat[online]{booktitle}{% + \ifthenelse{\equal{\thefield{entrysubtype}}{\subtypedatabase}}% + {{#1}}% + {\ifthenelse{\equal{\thefield{entrysubtype}}{\subtypebooklike}}% + {{#1}}% + {\mkbibemph{#1}}}}% +\DeclareFieldFormat[audio]{booktitle}{% + \ifthenelse{\equal{\thefield{entrysubtype}}{\subtypebooklike}}% + {{#1}}% + {\mkbibemph{#1}}}% +\DeclareFieldFormat[customd]{booktitle}{% + \ifthenelse{\equal{\thefield{entrysubtype}}{\subtypebooklike}}% + {{#1}}% + {\mkbibemph{#1}}}% + +\DeclareFieldFormat{shorthand}{\normalcolor #1\isdot} + +%Automatic formatting of fields that need to be capitalized in bibliography, when newunitpunct is period, but not in footnotes + +\DeclareFieldFormat{usera}{\ifcapital{\MakeCapital{#1}}{#1}}% +\DeclareFieldFormat{userd}{\ifcapital{\MakeCapital{#1}}{#1}}% +\DeclareFieldFormat{note}{\ifcapital{\MakeCapital{#1}}{#1}}% +\DeclareFieldFormat{eventtitle}{\mkbibquote{\ifcapital{\MakeCapital{#1}}{#1}}}% +\DeclareFieldFormat{addendum}{\ifcapital{\MakeCapital{#1}}{#1}}% +\DeclareFieldFormat{type}{\ifcapital{\MakeCapital{#1}}{#1}}% +\DeclareFieldFormat{library}{\ifcapital{\MakeCapital{#1}}{#1}}% +\DeclareFieldFormat{titleaddon}{\ifcapital{\MakeCapital{#1}}{#1}\isdot}% +\DeclareFieldFormat{booktitleaddon}{\ifcapital{\MakeCapital{#1}}{#1}}% +\DeclareFieldFormat{maintitleaddon}{\ifcapital{\MakeCapital{#1}}{#1}}% +\DeclareFieldFormat{edition}{% + \ifinteger{#1} + {\mkbibordinal{#1}~\bibstring{edition}}% + {\ifcapital{\MakeCapital{#1}}{#1}}\isdot}% +\DeclareFieldFormat{howpublished}{\ifcapital{\MakeCapital{#1}}{#1}}% +%\DeclareFieldFormat{pubstate}{\ifcapital{\MakeCapital{#1}}{#1}}% + +% Get rid of default page prefix strings ``p.'' or ``pp.'' in pages field and postnote +\DeclareFieldFormat{pages}{\iffieldundef{bookpagination}{#1\isdot}{\mkpageprefix[bookpagination{#1\isdot}}}% +\DeclareFieldFormat{postnote}{\iffieldundef{pagination}{#1\isdot}{\mkpageprefix[pagination]{#1\isdot}}}% + +%Change prefix for parts of book volumes +\DeclareFieldFormat{part}{% +\ifnumeral{#1} + {\addcomma\addspace bk\adddot\addspace #1}% + {\ifnumerals{#1} + {\addcomma\addspace bks\adddot\addspace #1}% + {\addcomma\addspace #1}}}% + +%Automatic bibstring substitutions: +\DeclareFieldFormat{pubstate}{% + \ifbibstring{#1} + {\bibstring{#1}}% + {\ifcapital + {\MakeCapital{#1}}% + {#1}}}% +\DeclareListFormat{location}{% + \ifbibstring{#1} + {\bibstring{#1}}% + {\usebibmacro{list:delim}{#1}% + #1\isdot + \usebibmacro{list:andothers}}} + +\DeclareListFormat{publisher}{% + \ifbibstring{#1} + {\bibstring{#1}}% + {\usebibmacro{list:delim}{#1}% + #1\isdot + \usebibmacro{list:andothers}}} + +%Field formats for annotated bibliographies (new in v. 0.2) +%(Annotations are printed by a redefined finentry macro) + +%First need an indented environment and field formats for the texts (new in v. 0.2) +\newenvironment{indentannote}{% + \begin{list}{}{% + \setlength{\topsep}{0pt}% + \setlength{\leftmargin}{1em}% + \setlength{\rightmargin}{1em}% + \setlength{\listparindent}{0pt}% + \setlength{\itemindent}{0pt}% + \setlength{\parsep}{0pt}% + }% + \item[]}% +{\end{list}}% + +%\DeclareFieldFormat{annotation}{% +% \begin{indentannote} +% %\bibstring[]{annotation}\textbf{:}% +% #1 +% \end{indentannote}}% + +\DeclareNameFormat{author}{% + \ifcitation% + {%then in footnotes, firstname first + \usebibmacro{name:first-last}{#1}{#3}{#5}{#7}% + \usebibmacro{name:andothers}% + }%end citations + {%else bibliography or maybe list of shorthands + \iftoggle{losflag} + {%then list of shorthands: firstname first here, too + \usebibmacro{name:first-last}{#1}{#3}{#5}{#7}% + \usebibmacro{name:andothers}% + }%end los + {%else bibliography + \ifnumequal{\value{listcount}}{1}% + {%then lastname first for first author/editor + \usebibmacro{name:last-first}{#1}{#3}{#5}{#7}% + \usebibmacro{name:andothers}}% + {%else firstname first for remaining authors/editors + \usebibmacro{name:first-last}{#1}{#3}{#5}{#7}% + \usebibmacro{name:andothers}}% + }%end bib + }% + }% + +\DeclareNameFormat{editor}{% + \ifcitation% + {%then in footnotes, firstname first + \usebibmacro{name:first-last}{#1}{#3}{#5}{#7}% + \usebibmacro{name:andothers}% + }%end citations + {%else bibliography or maybe list of shorthands + \iftoggle{losflag} + {%then list of shorthands: firstname first here, too + \usebibmacro{name:first-last}{#1}{#3}{#5}{#7}% + \usebibmacro{name:andothers}% + }%end los + {%else bibliography + \ifnumequal{\value{listcount}}{1}% + {%then lastname first for first author/editor + \usebibmacro{name:last-first}{#1}{#3}{#5}{#7}% + \usebibmacro{name:andothers}}% + {%else firstname first for remaining authors/editors + \usebibmacro{name:first-last}{#1}{#3}{#5}{#7}% + \usebibmacro{name:andothers}}% + }%end bib + }% + }% + + +\DeclareNameFormat{translator}{% + \ifcitation% + {%then in footnotes, firstname first + \usebibmacro{name:first-last}{#1}{#3}{#5}{#7}% + \usebibmacro{name:andothers}% + }%end citations + {%else bibliography or maybe list of shorthands + \iftoggle{losflag} + {%then list of shorthands: firstname first here, too + \usebibmacro{name:first-last}{#1}{#3}{#5}{#7}% + \usebibmacro{name:andothers}% + }%end los + {%else bibliography + \ifnumequal{\value{listcount}}{1}% + {%then lastname first for first author/editor + \usebibmacro{name:last-first}{#1}{#3}{#5}{#7}% + \usebibmacro{name:andothers}}% + {%else firstname first for remaining authors/editors + \usebibmacro{name:first-last}{#1}{#3}{#5}{#7}% + \usebibmacro{name:andothers}}% + }%end bib + }% + }% + +%%%%%% BIB-STRINGS %%%%%%%%%%%%%%%% + +\NewBibliographyString{namedash} +\NewBibliographyString{letterto} +\NewBibliographyString{nodate} +\NewBibliographyString{noplace} +\NewBibliographyString{nopublisher} +\NewBibliographyString{online} +\NewBibliographyString{postedonline} +\NewBibliographyString{pseudonym} +\NewBibliographyString{incapitalized} +\NewBibliographyString{introto} +\NewBibliographyString{excerptfrom} +\NewBibliographyString{volumeof} +\NewBibliographyString{byline} +\NewBibliographyString{origeditionbib} +\NewBibliographyString{origeditiontitledbib} +\NewBibliographyString{origedition} +\NewBibliographyString{origeditiontitled} +\NewBibliographyString{translatedfromtitle} +\NewBibliographyString{translatedfromtitlebib} +\NewBibliographyString{numbers} +\NewBibliographyString{bycorporate} +\NewBibliographyString{bytranslatorbib} +\NewBibliographyString{translatedas} +\NewBibliographyString{translatedasbib} +%\NewBibliographyString{as } +\NewBibliographyString{forthcoming} + +\DefineBibliographyStrings{american}{% + bycorporate = {by the}, + bytranslator = {trans.\isdot}, + bytranslatorbib = {translated by}, + translatedas = {trans.\isdot as}, + translatedasbib = {translated as}, +% as = {as}, + forthcoming = {forthcoming}, + incapitalized = {In}, + introto = {to}, + letterto = {to}, + excerptfrom = {from}, + volumeof = {of}, + byline = {by}, + online = {},%{available online from}, + postedonline = {posted}, + nodate = {n.\isdot d.\isdot}, + noplace = {n.\isdot p.\isdot}, + nopublisher = {n.\isdot p.\isdot}, + origedition = {orig. ed.\isdot}, + origeditiontitled = {orig. ed.\isdot}, + origeditionbib = {original edition}, + origeditiontitledbib = {original edition}, + translatedfromtitle = {originally}, + translatedfromtitlebib = {originally published as}, + pseudonym = {pseud.\isdot}, + numbers = {nos\adddot}, + namedash = {---------} +}% + + + + +%%%% CONSTANTS %%%%%%%%%%%%%%%%% + +%Define comparison strings for entrysubtypes, authortypes, etc. + +\newcommand\nameaddonpseud{pseudonym} +\newcommand\subtypemag{magazine} +\newcommand\subtypenewsp{newspaper} +\newcommand\subtypeclassic{classic} +\newcommand\subtypebiblical{biblical} +\newcommand\subtypeearlybook{canon} +\newcommand\subtypevideo{video} +\newcommand\entrytypearchive{customa} +\newcommand\subtypevolume{volume} +\newcommand\subtypeonline{online} +\newcommand\subtypedatabase{database} +\newcommand\subtypeblog{blog} +\newcommand\subtypelistmessage{listmessage} +\newcommand\subtypebooklike{book} +\newcommand\subtypepublicdocument{gov} +\newcommand\authortypeanon{anonymous} +\newcommand\authortypeunsure{anonymous?} +\newcommand\authortyperedundant{redundant} +\newcommand\authortypealternate{alternate} +\newcommand\authortypejournal{journal} +\newcommand\subtypeintro{to} +\newcommand\subtypeexcerpt{from} +\newcommand\subtypenone{none} +\newcommand\edtypecorp{corporate} +\newcommand\entrytypeper{periodical} +\newcommand\entrytypemanual{manual} +\newcommand\entrytypecoll{collection} +\newcommand\entrytypebook{book} +\newcommand\entrytyperef{reference} +\newcommand\entrytypeproc{proceedings} +\newcommand\entrytypereport{report} +\newcommand\entrytypebooklet{booklet} +\newcommand\entrytypemisc{misc} +\newcommand\entrytypeonline{online} +\newcommand\entrytypevideo{video} +\newcommand\entrytypeaudio{audio} +\newcommand\entrytypebookinbook{bookinbook} +\newcommand\entrytypearticle{article} +\newcommand\entrytypelegislation{legislation} +\newcommand\entrytypeletter{letter} +\newcommand\entrytypeperformance{performance} +\newcommand\optionaddoriginal{addorig} +\newcommand\optionnoreprints{none} +\newcommand\optionorigfirst{origfirst} +\newcommand\optiontransfromorig{transfrom} +\newcommand\optionorigtransas{transas} +\newcommand\optiondoubledate{doubledate} +\newcommand\noplace{np} +\newcommand\nopublisher{np} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% BIBLIOGRAPHY DRIVERS % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%% ARTICLE %%%%%%%%%%%%%%%%%% + +\DeclareBibliographyDriver{article}{% +\ifthenelse{\equal{\thefield{entrysubtype}}{\subtypenewsp}}% + {\addtocategory{noteonly}{\thefield{entrykey}}% + \addtocategory{innewspaper}{\thefield{entrykey}}}% + {\ifthenelse{\equal{\thefield{entrysubtype}}{\subtypemag}}% + {\addtocategory{inmagazine}{\thefield{entrykey}}}% + {\relax}}% +\usebibmacro{bibindex}% +\usebibmacro{begentry}% +\ifthenelse{\equal{\thefield{authortype}}{\authortypejournal}}% + {%Special case of journal as author: italicize author and suppress journal title + \printtext[journalasauthor]{\printnames[lastname]{author}}% + \setunit{\labelnamepunct}\newblock + \clearfield{journaltitle}\clearfield{journalsubtitle}}% + {\ifnameundef{author} + {\relax}% + {\usebibmacro{author}% + \setunit{\labelnamepunct}\newblock}}% +\iffieldundef{type} + {\relax}% + {\printfield{type}%Needed here for certain government documents + \newunit}% +\iffieldundef{title} + {\iffieldundef{titleaddon} + {\relax}% + {\usebibmacro{title}% + \newunit\newblock}}% + {\usebibmacro{title}% + \newunit\newblock}% +\iffieldundef{issuetitle} + {%Assume any editors go with the article, not the issue + \iffieldundef{title} + {\iffieldundef{titleaddon} + {\relax}% No article title--don't print the editors here after all + {\usebibmacro{bytranslator+others}% + \newunit\newblock + \usebibmacro{byeditor+others}% + \newunit\newblock}}% + {\usebibmacro{bytranslator+others}% + \newunit\newblock + \usebibmacro{byeditor+others}% + \newunit\newblock}}% + {%Else editors come after the ``in,'' and go with issue title + \usebibmacro{in:}}% + %Save all the location and subtype info for after the x-ref + \savefield{entrysubtype}{\childsubtype}% + \savefield{issuetitle}{\childissuetitle}% + \savefield{issuesubtitle}{\childsissueubtitle}% + \savefield{note}{\childnote}\savefield{series}{\childseries}% + \savefield{volume}{\childvolume}\savefield{number}{\childnumber}% + \savefield{issue}{\childissue}% + \savefield{year}{\childyear}\savefield{date}{\childdate}% +%Check for x-ref to periodical record +\iffieldundef{xref}% + {%then no xref + \usebibmacro{journal+issuetitle}}% + {%else x-ref to the parent entry; the citecommands will pass parent data to the journal+issuetitle macro + \printtext{\unspace}%Just to force the unit punctutation before the xref + \iffootnote + {%then footnote routine in cbx file + \cbx@crosstoper{\thefield{xref}}}% + {%else bibliography routine here in bbx + \bbx@crosstoper{\thefield{xref}}}% + }%endifundef xref +\newunit\newblock +\ifthenelse{\equal{\thefield{entrysubtype}}{\subtypemag}% + \OR\equal{\thefield{entrysubtype}}{\subtypenewsp}}% + {\setunit{\addcomma\addspace}}% + {\setunit{\bibpagespunct}}% +\iftoggle{printpagerange} + {\printfield{pages}}% + {\relax}%Postnote will be printed instead of full page range +\newunit\newblock +\usebibmacro{onlinelocation}% +\newunit\newblock +\printfield{addendum}% +\newunit\newblock +\usebibmacro{pageref}% +\usebibmacro{finentry}% +}%End of article driver + + +%%%%%% ARTWORK %%%%%%%%%%%%%%%%%% +\DeclareBibliographyAlias{artwork}{customd} + +%%%%%% AUDIO %%%%%% +% +\DeclareBibliographyDriver{audio}{% +\usebibmacro{bibindex}% +\usebibmacro{begentry}% +\usebibmacro{author}% +\setunit{\labelnamepunct}\newblock +\usebibmacro{title}% +\newunit +\printfield{volume}% +\newunit +\iffieldundef{booktitle} + {}% + {\usebibmacro{in:}% + \usebibmacro{booktitle}% + \newunit}% +\iffieldundef{eventtitle} + {\relax}% + {\printtext[title]{\printfield[titlecase]{eventtitle}}}% +\setunit{\addcomma\addspace}% +\printfield{venue}% +\setunit{\addcomma\addspace}% +\printeventdate% +\newunit +\printfield{note}% +\newunit +\printlist{organization}% +\newunit +\printlist{institution}% +\newunit +\printlist{publisher}% +\newunit +\printfield{howpublished}% +\newunit +\printfield{type}% +\newunit +\printfield{usera}% +\newunit +\printfield{userd}% +\newunit +\usebibmacro{date-full}% +\newunit\newblock +\usebibmacro{onlinelocation}% +\newunit\newblock +\printfield{addendum}% +\newunit\newblock +\usebibmacro{pageref}% +\usebibmacro{finentry}% +}%end of audio driver + +%%%%%% BOOK %%%%%% + +\DeclareBibliographyDriver{book}{% +%Sort out entrysubtypes +\ifthenelse{\equal{\thefield{entrysubtype}}{\subtypeclassic} + \OR\equal{\thefield{entrysubtype}}{\subtypebiblical}} + {\usebibmacro{classic}}% + {\ifthenelse{\equal{\thefield{entrysubtype}}{\subtypeearlybook}}% + {\usebibmacro{earlybook}}% + {%else default book routine + \ifthenelse{\equal{\reprintoption}{origtransas}} + {%then reverse order: orig-fields go first + \usebibmacro{origtransas}}% + {%else + \relax}% + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + %Author Block----------------------------------------------- + \usebibmacro{author/editor/translator}% + \setunit*{\labelnamepunct}% + \newblock + %First-Level Title Block (for book or volume)-------------- + \usebibmacro{title}% + \newunit\newblock + %Editors and/or Translator Blocks-------------------------- +% \usebibmacro{byauthor}% Is this ever needed? +% \newunit\newblock + \ifthenelse{\equal{\thefield{entrytype}}{\entrytypereport}}% + {%Special case of reports with an institutional author and an individual one + \usebibmacro{bynamea}% + \newunit\newblock}% + {\relax}% + \ifthenelse{\equal{\reprintoption}{\optionorigtransas}} + {%then save the translator for after the publishing data + \savename{translator}{\temptranslator}% + \clearname{translator}}% + {%else + \relax}% + \usebibmacro{byeditor+others}% + \newunit\newblock + %Block for vol. no., second-level title, and editors----------------- + \usebibmacro{title+maintitle}% + \usebibmacro{collectioneditor}%New unit puctuation set in subroutine + \newunit\newblock + %Edition Block ----------------------------------------------------- + \printfield{edition}% + \newunit\newblock + %Optional block for book-like videos-------------------------------- + \ifthenelse{\equal{\thefield{entrytype}}{\entrytypevideo}}% + {%then certain videos have to be entered as books + \printfield{type}% + \newunit\newblock}% + {%else not a video + \relax}% + %Series Block (including note field) -------------------------------- + \iftoggle{printseriesflag}%Print series info only when option is set + {\iffieldundef{series} + {\relax}% + {\usebibmacro{series+number}% + \setunit{\addcomma\addspace}}}% + {\relax}% + \printfield{note}% + \newunit\newblock + %Special block for book-like entrytypes------------------- + \ifthenelse + {\equal{\thefield{entrytype}}{\entrytypemanual}% + \OR + \equal{\thefield{entrytype}}{\entrytypebooklet}% + \OR + \equal{\thefield{entrytype}}{\entrytypemisc}% + \OR + \equal{\thefield{entrytype}}{\entrytypereport}}% + {%then + \printfield{type}% + \newunit + \printfield{version}% + \newunit + \printlist{organization}% + \newunit\newblock}% + {%else ordinary book + \relax}% + %Publishing Data Block ------------------------------------- + \iffootnote + {%then location:publisher, year in parentheses + \setunit{\addspace}% + \printtext[parens]{\usebibmacro{publisher+location+year}}% + }% + {%else no parens and an extra field + \usebibmacro{publisher+location+year}% + \newunit\newblock + \printfield{userc}%Special addendum for exhibit catalogs + }% + \newunit\newblock + %Optional block for original publication data--------------------- + \ifthenelse{\equal{\reprintoption}{\optionaddoriginal}} + {\usebibmacro{addoriginaledition}}% + {\ifthenelse{\equal{\reprintoption}{\optiontransfromorig}} + {\usebibmacro{addtransfrom}}% + {\ifthenelse{\equal{\reprintoption}{\optionorigtransas}} + {%then + \restorename{translator}{\temptranslator}% + \usebibmacro{print-translation-data}}% + {%else + \relax}% + }% + }% + \newunit\newblock + %Online locators---------------------------------------------------------- + \usebibmacro{onlinelocation}% + \newunit\newblock + %Addendum and finish------------------------------------------------------ + \printfield{addendum}% + \usebibmacro{pageref}% + \usebibmacro{finentry}% + }%End else; end default book routine + }% +}%End oF book driver + +%Subtype of Book for classics and other standard texts for which publication information is unimportant: footnotes only, no punctuation after author, and minimal publication information. +\newbibmacro{classic}{%----------------------------------------------------------- +%Add key to noteonly category +\addtocategory{noteonly}{\thefield{entrykey}}% +\ifthenelse{\equal{\thefield{entrysubtype}}{\subtypebiblical}} + {\addtocategory{biblical}{\thefield{etnrykey}}}% + {\addtocategory{classic}{\thefield{entrykey}}}% +\usebibmacro{bibindex}% +\usebibmacro{begentry}% +\iffootnote + {\ifnameundef{shortauthor} + {\usebibmacro{author/editor/translator}}% + {\printnames{shortauthor}}}% + {\usebibmacro{author/editor/translator}}% +\setunit{\addspace}\newblock +\iffootnote + {\iffieldundef{shorttitle} + {\ifthenelse{\equal{\thefield{entrysubtype}}{\subtypebiblical}} + {\printfield[titlecase]{title}}% + {\usebibmacro{title}}}% + {\ifthenelse{\equal{\thefield{entrysubtype}}{\subtypebiblical}} + {\printfield[titlecase]{shortitle}\isdot}% + {\printfield[title]{shorttitle}\isdot}}}% + {\ifthenelse{\equal{\thefield{entrysubtype}}{\subtypebiblical}} + {\printfield[titlecase]{title}}% + {\usebibmacro{title}}}% +\setunit{\addspace}% +\iffieldundef{edition} + {\relax}% + {\printtext[parens]{\printfield{edition}}% + \newunit}% +\printfield{note}%Use note or series to identify edition, if necessary +\newunit\newblock +\printfield{addendum}% +\newunit\newblock +\usebibmacro{pageref}% +\usebibmacro{finentry}% +}%end of macro; end of classic subtype of book + +%Special routine for entrysubtyp ``canon'' of book, for early English literature +\newbibmacro{earlybook}{%----------------------------------------------------------------- +%Add key to noteonly category +\addtocategory{noteonly}{\thefield{entrykey}}% +\addtocategory{canonical}{\thefield{entrykey}}% +\usebibmacro{bibindex}% +\usebibmacro{begentry}% +\iffootnote + {%then always use shortauthor and shorttitle in footnotes, if available + \ifnameundef{shortauthor} + {\usebibmacro{author/editor/translator}}% + {\printnames{shortauthor}}% + \setunit*{\labelnamepunct}% + \newblock + \iffieldundef{shorttitle}% + {\usebibmacro{title}}% + {\printtext[title]{\printfield[titlecase]{shorttitle}}\isdot}% + }%end footnote routine + {%else usual author and title routines in the bibliography + \usebibmacro{author/editor/translator}% + \newunit\newblock + \usebibmacro{title}% + }% +\setunit{\addspace}% +\iffieldundef{edition} + {\relax}% + {\printtext[parens]{\printfield{edition}}}% +\newunit\newblock +\printfield{note}% +\newunit\newblock +\printfield{addendum}% +\newunit\newblock +\usebibmacro{pageref}% +\usebibmacro{finentry}% +}%End earlybook macro + + +%%%%%% BOOKINBOOK %%%%%% + +\DeclareBibliographyAlias{bookinbook}{inbook} + + +%%%%%% BOOKLET %%%%%% + +\DeclareBibliographyAlias{booklet}{book}% + +%%%%%% COLLECTION %%%%%%%%%%% + +\DeclareBibliographyDriver{collection}{% +\usebibmacro{bibindex}% +\usebibmacro{begentry}% +\ifthenelse{\equal{\reprintoption}{\optionorigtransas}} + {%then reverse order: orig-fields go first + \usebibmacro{origtransas}}% + {%else + \relax}% +%Editor Block----------------------------------------------- +\ifthenelse{\equal{\thefield{editortype}}{\edtypecorp}} + {%then corporate editor of a proceedings: print without the editor string + \printnames{editor}% + \clearname{editor}}% + {%else personal editor: use usual editor routine + \usebibmacro{editor}}% +\setunit{\labelnamepunct}% +\newblock +%First-Level Title Block (for book or volume)-------------- +\usebibmacro{title}% +\newunit\newblock +%Proceedings fields--------------------------------------- +\usebibmacro{getproceedingsfields}% +\newunit\newblock +%Editors and/or Translator Blocks-------------------------- +\ifthenelse{\equal{\reprintoption}{\optionorigtransas}} + {%then save the translator for after the publishing data + \savename{translator}{\temptranslator}% + \clearname{translator}}% + {%else + \relax}% +\usebibmacro{byeditor+others}% +\newunit\newblock +%Block for vol. no., second-level title, and editors----------------- +\usebibmacro{title+maintitle}% +\usebibmacro{collectioneditor}%New unit puctuation set in subroutine +\newunit\newblock +%Edition Block ----------------------------------------------------- +\printfield{edition}% +\newunit\newblock +%Series Block (including note field) -------------------------------- +\iftoggle{printseriesflag}%Print series info only when option is set + {\iffieldundef{series} + {\relax}% + {\usebibmacro{series+number}% + \setunit{\addcomma\addspace}}}% + {\relax}% +\printfield{note}% +\newunit\newblock +%Special fields ---------------------------------------------------- +\printfield{type}% +\newunit +\printfield{version}% +\newunit\newblock +%Publishing Data Block ------------------------------------------------ +\iffootnote% + {%then location:publisher, year in parentheses + \setunit{\addspace}% + \printtext{\bibleftparen}% + \usebibmacro{publisher+location+year}% + \printtext{\bibrightparen}}% + {%else no parens and an extra field + \usebibmacro{publisher+location+year}% + \newunit\newblock + \printfield{userc}%Special addendum for exhibit catalogs + }% +\newunit\newblock +%Optional block for original publication data---------------------------------------- +\ifthenelse{\equal{\reprintoption}{\optionaddoriginal}} + {\usebibmacro{addoriginaledition}}% + {\ifthenelse{\equal{\reprintoption}{\optiontransfromorig}} + {\usebibmacro{addtransfrom}}% + {\ifthenelse{\equal{\reprintoption}{\optionorigtransas}} + {%then + \restorename{translator}{\temptranslator}% + \usebibmacro{print-translation-data}}% + {%else + \relax}% + }% + }% +\newunit\newblock +%Print urls, etc., if appropriate option\subtype is set +\newunit\newblock +%Online locators---------------------------------------------------------- +\usebibmacro{onlinelocation}% +\newunit\newblock +%Addendum and finish------------------------------------------------------ +\printfield{addendum}% +\usebibmacro{pageref}% +\usebibmacro{finentry}% +}% End of collection driver + + + +%%%%%% IMAGE %%%%%%%%%%%%%%%%%% + +\DeclareBibliographyAlias{image}{customd} + +%%%%%% INBOOK %%%%%% + +%Inbook. Similar to incollection, only with author instead of editor. +\DeclareBibliographyDriver{inbook}{% +\usebibmacro{bibindex}% +\usebibmacro{begentry}% +%Author Block------------------------------------------------------ +\ifthenelse{\equal{\thefield{entrysubtype}}{\subtypeearlybook}} + {%Then for canonical works, add key to noteonly category and use shortauthor + \addtocategory{noteonly}{\thefield{entrykey}}% + \addtocategory{canonical}{\thefield{entrykey}}%\iffootnote + {\ifnameundef{shortauthor} + {\usebibmacro{author}}% + {\printnames{shortauthor}}}% + }% + {%Else not canonical, use usual author routine + \usebibmacro{author}}% +\savename{author}{\childauthor}%Need later, to compare with book author +\setunit{\labelnamepunct}% +\newblock +%Inner Title Block-------------------------------------------------------- +\usebibmacro{title}% +\newunit\newblock +%Book-Title Block-------------------------------------------------------- +\ifthenelse{\equal{\thefield{entrysubtype}}{\subtypevolume}% + \OR\equal{\thefield{entrytype}}{\entrytypebookinbook}}% + {%then1 reference is to a volume of a larger work. Print volume number here and not at the end + \printfield{volume}\printfield{part}% + \clearfield{volume}\clearfield{part}\toggletrue{volumeprinted}% + \clearfield{title}%Clear title, too, to prevent repetition + }% + {%else1 + \ifthenelse{\equal{\thefield{entrysubtype}}{\subtypevideo}}% + {%then2 Special case of a video that gets bookvolume-like formatting + \iffootnote + {\printfield[noformat]{volume}}% + {\printtext[noformat]{\MakeCapital{\thefield{volume}}}}% + \clearfield{volume}\toggletrue{volumeprinted}% + }%end then2 + {%else2 default case + \printfield{chapter}%(Turabian doesn't actually use chapter numbers) + }%end else2, end subtypevideo test + }%end else1, end subtypevolume test +\newunit\newblock +%Second-level title and editor, publishing data------------------------------------------ +%But first, save info to pass to parent record in case of x-reffing +\savename{author}{\childauthor}% +\savefield{pages}{\childpages}% +\savefield{volume}{\childvolume}% +\savefield{part}{\childpart}% +\usebibmacro{in:}%Macro modifed below for subtypes that need different prepositions +%Where are the book data? +%First check whether there is an x-ref to the book +\iffieldundef{xref}% + {%then no xref; get book info from current entry + \usebibmacro{getbookinfo}}% + {%else x-ref to the parent entry; the crosstocoll citecommands will then pass parent data to the bibmacro getbookinfo, below + \printtext[noformat]{\unspace}%Just to force the unit punctutation before the xref + \iffootnote + {\cbx@crosstocoll{\thefield{xref}}}% + {\bbx@crosstocoll{\thefield{xref}}}% + }%endiffieldundef +\newunit\newblock +%Print rest of inbook data +%Onlineblock--------------------------------------------------------------- +\usebibmacro{onlinelocation}% +\newunit\newblock +%Addendum and finish----------------------------------------------------- +\printfield{addendum}% +\newunit\newblock +\usebibmacro{pageref}% +\usebibmacro{finentry}% +}%End of inbook driver + + + +%%%%%% INCOLLECTION %%%%%%% + +\DeclareBibliographyDriver{incollection}{% +\usebibmacro{bibindex}% +\usebibmacro{begentry}% +%Author Block------------------------------------------------------ +\ifthenelse{\equal{\thefield{entrysubtype}}{\subtypepublicdocument}}% + {\usebibmacro{author}}% + {\usebibmacro{author/editor/translator}}% +\savename{author}{\childauthor}%Need later, to compare with book author +\setunit{\labelnamepunct}% +\newblock +%Inner Title Block-------------------------------------------------------- +\usebibmacro{title}% +\newunit\newblock +%Book-Title Block-------------------------------------------------------- +\ifthenelse{\equal{\thefield{entrysubtype}}{\subtypevolume}}% + {%then1 reference is to a volume of a larger work. Print volume number here and not at the end + \printfield{volume}\printfield{part}\toggletrue{volumeprinted}% + \clearfield{volume}\clearfield{part}% + }% + {%else1 + \printfield{chapter}%Turabian doesn't use chapter numbers; not sure it goes here + }%end else1, end subtypevolume test +\newunit\newblock +%Second-level title and editor, publishing data -------------------------------------- +%Save data for after the xref +\savename{author}{\childauthor}% +\savefield{pages}{\childpages}% +\savefield{volume}{\childvolume}% +\savefield{part}{\childpart}% +%Insert preposition +\usebibmacro{in:}% +%Now where are the collection data? +%First check whether there is an x-ref to the collection +\iffieldundef{xref}% + {%then no xref; get collection data from the current entry + \usebibmacro{getbookinfo}}% + {%else x-ref to the parent entry; the citecommands will pass parent data to the bibmacro getbookinfo, below + \printtext{\unspace}%Just to force the unit punctutation before the xref + \iffootnote + {\cbx@crosstocoll{\thefield{xref}}}%footnote routine in cbx file + {\bbx@crosstocoll{\thefield{xref}}}%bibliography routine here in bbx + }%endifundef +%Print rest of incollection data +\newunit\newblock +%Online Block-------------------------------------------------------------------- +\usebibmacro{onlinelocation}% +\newunit\newblock +%Addendum and Finish-------------------------------------------------------- +\printfield{addendum}% +\newunit\newblock +\usebibmacro{pageref}% +\usebibmacro{finentry}% +}%End incollection driver + + + +%%%%%% INPROCEEDINGS %%%%%% + +%Inproceedings are treated like incollections, even though they have some extra fields +\DeclareBibliographyAlias{inproceedings}{incollection}% + +%%%%%% INREFERENCE %%%%%%% + +\DeclareBibliographyDriver{inreference}{% +\usebibmacro{bibindex}% +\usebibmacro{begentry}% +\ifthenelse{\equal{\thefield{entrysubtype}}{\subtypepublicdocument}}% + {\usebibmacro{author}}% + {\usebibmacro{author/editor/translator}}% +\setunit{\labelnamepunct} +\newblock +%Inner Title Block-------------------------------------------------------- +\usebibmacro{title}% +\newunit\newblock +%Book-Title Block-------------------------------------------------------- +\ifthenelse{\equal{\thefield{entrysubtype}}{\subtypevolume}}% + {%then1 reference is to a volume of a larger work. Print volume number here and not at the end + \printfield{volume}\printfield{part}\toggletrue{volumeprinted}% + \clearfield{volume}\clearfield{part}% + }% + {%else1 + \printfield{chapter}%Turabian doesn't use chapter numbers; not sure it goes here + }%end else1, end subtypevolume test +\newunit\newblock +%Second-level title and editor, publishing data -------------------------------------- +%Save data for after the xref +\savename{author}{\childauthor}% +\savefield{pages}{\childpages}% +\savefield{volume}{\childvolume}% +\savefield{part}{\childpart}% +%Insert preposition +\usebibmacro{in:}% +%Now where are the collection data? +\iffieldundef{xref}% + {%then no xref + \iffootnote + {%Then footnote routine: just title and edition + \usebibmacro{getbooktitle}% + \newunit\newblock + \printfield{edition}% + \newunit\newblock + \printfield{note}% + }%End of footnote routine + {%Else: bibliography (not normally used) or list of shorthands: + \usebibmacro{getbookinfo}}% + }%end then + {%else x-ref to the parent entry; the citecommands will pass parent data to the bibmacro getbookinfo, below + \printtext{\unspace}%Just to force the unit punctuation before the xref + \iffootnote + {\cbx@crosstoref{\thefield{xref}}}%footnote routine in cbx file + {\bbx@crosstoref{\thefield{xref}}}%bibliography routine passes parent data to getbookinfo, below + }%endiffieldundef xref +%Print rest of inreference data +\newunit\newblock +%Online Block-------------------------------------------------------------------- +\usebibmacro{onlinelocation}% +\newunit\newblock +%Addendum and Finish-------------------------------------------------------- +\printfield{addendum}% +\newunit\newblock +\usebibmacro{pageref}% +\usebibmacro{finentry}% +}%end inreference driver + +%%%%%% JURISDICTION %%%%%%%%%%%%%%%%%% + +\DeclareBibliographyDriver{jurisdiction}{% +\addtocategory{noteonly}{\thefield{entrykey}}% +\usebibmacro{bibindex}% +\usebibmacro{begentry}% +\printfield{type}% +\newunit +\usebibmacro{title}% +\newunit\newblock +\printfield{note}\isdot% +\setunit{\addspace}% +\printfield{pages}% +\setunit{\addspace}% +\printtext[parens]{% + \printlist{institution}\isdot% + \setunit{\addspace}% + \usebibmacro{date-full}}% +\newunit\newblock +\usebibmacro{onlinelocation}% +\newunit\newblock +\printfield{addendum}% +\newunit\newblock +\usebibmacro{pageref}% +\usebibmacro{finentry}% +}%End jurisdiction driver + +%%%%%% LEGAL %%%%%%%%%%%%%%%%%% + +\DeclareBibliographyDriver{legal}{% +\addtocategory{noteonly}{\thefield{entrykey}}% +\usebibmacro{bibindex}% +\usebibmacro{begentry}% +\printfield{type}% +\newunit +\usebibmacro{title}% +\newunit\newblock +\printfield{note}\isdot% +\iffieldundef{issuetitle} + {\relax}% + {\usebibmacro{issue}%Prints issuetitle + \newunit}% +\printfield{note}% +\setunit{\addcomma\addspace}% +\usebibmacro{journal}% +\iffieldundef{series} + {\setunit*{\addspace}}% + {\setunit{\addcomma\addspace}% + \printfield{series}% + \setunit{\addcomma\addspace}}% +\printfield{volume}% +\setunit{\addcomma\addspace\bibstring{number}\addspace}% +\printfield{number}% +\setunit{\addspace}% +\usebibmacro{issue+date}% +\setunit{\bibpagespunct}% +\printfield{pages}% +\newunit\newblock +\usebibmacro{onlinelocation}% +\newunit\newblock +\printfield{addendum}% +\newunit\newblock +\usebibmacro{pageref}% +\usebibmacro{finentry}% +}%End legal driver + +%%%%%% LEGISLATION %%%%%% + +\DeclareBibliographyDriver{legislation}{% +\usebibmacro{bibindex}% +\usebibmacro{begentry}% +\toggletrue{useshortauthors}%Always use shortauthor in footnotes +\usebibmacro{author}% +\setunit*{\labelnamepunct\addspace}\newblock +\printfield{type}% +\newunit +\usebibmacro{title}% +%\newunit +%\usebibmacro{byauthor}% +%\newunit +%\usebibmacro{byeditor+others}% +\newunit\newblock +\printfield{edition}% +\newunit +\iffootnote + {\iffieldundef{shortjournal} + {\printfield{journaltitle} + \setunit*{\addcolon\addspace}% + \printfield{journalsubtitle}}% + {\printfield{shortjournal}}% + }% + {\printfield{journaltitle}% + \setunit*{\addcolon\addspace}% + \printfield{journalsubtitle}}% +\newunit\newblock +\printfield{note}\isdot% +\newunit\newblock +%Give facts of publication freeform +\printlist{institution}% +\setunit{\addcomma\addspace}% +\printlist{publisher}% +\setunit{\addcomma\addspace}% +\printfield{howpublished} +\setunit{\addcomma\addspace}% +\usebibmacro{date-full}% +\printfield{usera}% +\newunit\newblock +\printfield{userd}% +\newunit\newblock +\iffootnote + {\printfield[noformat]{volume}% + \printfield{part}}% + {\printfield{volume}% + \printfield{part}}% +\iffieldundef{volume} + {\setunit{\addcomma\addspace}}% + {\setunit{\bibpagespunct}}% +\printfield{pages}% +\usebibmacro{onlinelocation}% +\newunit\newblock +\printfield{addendum}% +\usebibmacro{pageref}% +\usebibmacro{finentry}% +}%End of legislation driver + +%%%%%% LETTER %%%%%% + +%For correspondence (archival or published) +\DeclareBibliographyDriver{letter}{% +%Add key to noteonly category +\addtocategory{noteonly}{\thefield{entrykey}}% +\usebibmacro{bibindex}% +\usebibmacro{begentry}% +\usebibmacro{author}% +%Just in case, format for bibliography, too +\iffootnote + {\relax}% + {\ifcitation + {\relax}% + {\setunit{\labelnamepunct}\newblock + \printnames[byauthor]{author}}}%Repeat name in bibliography +%If there's a recipient in namec, print ``to namec'' +\setunit{\addspace\bibstring{letterto}\addspace}% +\printnames{namec}% +\setunit{\addcomma\addspace}% +\usebibmacro{title}%Shouldn't be needed for letters, except maybe if names are missing or uncertain +\setunit{\addcomma\addspace}% +\printfield{type}% +\setunit{\addcomma\addspace}% +\printfield{venue}% +\setunit{\addcomma\addspace}% +\printfield{note}% +\setunit{\addcomma\addspace}% +\usebibmacro{date-full}% +\newunit\newblock +\iffieldundef{xref}% + {%then no xref; just print what's likely to be available in the customd + \iffieldundef{booktitle} + {%then improvise + \printfield{howpublished}% + \setunit*{\addcomma\addspace}% + \printlist{organization}% + \setunit*{\addcomma\addspace}% + \printlist{institution}% + \setunit*{\addcomma\addspace}% + \printfield{library}% + \setunit*{\addcomma\addspace}% + \printfield{userd}% + \newunit\newblock + \usebibmacro{volume+pages}% + }% + {%else assume it's from a published collection + \usebibmacro{in:}% + \usebibmacro{getbookinfo}% + }% + \newunit\newblock + \usebibmacro{onlinelocation}% + }% + {%else x-ref to collection or customa and the getbookinfo macro + %(but only print `in' if the xref turns out to be to a collection) + %Save data for after the xref + \printtext{\unspace}%Just to force the unit punctutation before the xref + \savename{author}{\childauthor}% + \savefield{pages}{\childpages}% + \savefield{volume}{\childvolume}% + \savefield{part}{\childpart}% + \iffootnote% + {\cbx@crosstoarch{\thefield{xref}}}% + {\bbx@crosstoarch{\thefield{xref}}}% +% \restorefield{volume}{\childvolume}% +% \restorefield{part}{\childpart}% +% \restorefield{pages}{\childpages}% + }%endif +\newunit\newblock +\printfield{library}% +\setunit{\addcomma\addspace}% +\printfield{userd}% +\newunit\newblock +\iffootnote + {\usebibmacro{volume+pages}% + \newunit\newblock}% + {\relax}% +\usebibmacro{onlinelocation}% +\newunit\newblock +\printfield{addendum}% +\newunit\newblock +\usebibmacro{pageref}% +\usebibmacro{finentry}% +}%end letter driver + +%%%%%% MANUAL %%%%%% + +%Manuals are treated like books, even though they have some extra fields +\DeclareBibliographyAlias{manual}{book}% + +%%%%%% MISC %%%%%% + +\DeclareBibliographyAlias{misc}{booklet}% + +%%%%%% MOVIE %%%%%% + +% Currently not distinguished from performance + +\DeclareBibliographyAlias{movie}{performance}% + +%%%%%% MUSIC %%%%%% + +% Currently not distinguished from audio + +\DeclareBibliographyAlias{music}{audio} + +%%%%%% ONLINE %%%%%% + +\DeclareBibliographyDriver{online}{% +\usebibmacro{bibindex}% +\usebibmacro{begentry}% +\usebibmacro{author/editor/translator}% +\setunit{\labelnamepunct}\newblock +%Case of entrysubtypes +\ifthenelse{\equal{\thefield{entrysubtype}}{\subtypeblog}}% + {%then blog entry by main author + \usebibmacro{blog}}% + {%else + \ifthenelse{\equal{\thefield{entrysubtype}}{\subtypelistmessage}} + {%then e-mail to listserve + \usebibmacro{listmessage}}% + {%else default web site routine + \usebibmacro{title}% + \newunit\newblock + \usebibmacro{byeditor}% + \newunit\newblock + \printfield{version}% + \newunit + \usebibmacro{date-optional}% + \newunit + \printfield{note}% + \newunit\newblock + \iffieldundef{booktitle} + {\relax}% + {\usebibmacro{in:}% + \usebibmacro{booktitle}% + \newunit}% + \printlist{organization}% + \newunit + \printlist{institution}% + \newunit + \printlist{publisher}% + \newunit + \printfield{howpublished}% + \newunit + \printfield{type}% + \newunit + \printfield{usera}% + \newunit + \printfield{userd}% + \newunit\newblock + }%end else; end default web site routine + }%end case of entrysubtype +\usebibmacro{onlinelocation}% +\newunit\newblock +\printfield{addendum}% +\newunit\newblock +\usebibmacro{pageref}% +\usebibmacro{finentry}% +}%end online driver + +%Subroutine of online driver +\newbibmacro{blog}{%-------------------------------------------- +\usebibmacro{title}% +\newunit\newblock +\printfield{type}% +\setunit*{\addspace}% +\bibstring{postedonline}\addspace +\usebibmacro{date-full}% +\newunit +\printfield{note}% +\newunit\newblock +\printlist{organization}% +\setunit{\addcomma\space} +\printlist{institution}% +\newunit +\printfield{howpublished}% +\newunit +\printfield{usera}% +\newunit\newblock +%Add key to noteonly and blog categories +\addtocategory{noteonly}{\thefield{entrykey}}% +\addtocategory{blog}{\thefield{entrykey}}% +}%end blog macro + +\newbibmacro{listmessage}{%-------------------------------------------- +%No special treatment for listserv messages, at least for the present + \relax +}%end listmessage macro + +%%%%%% PATENT %%%%%% + +% Currently not distinguished from legislation + +\DeclareBibliographyAlias{paten}{legislation} + +%%%%%% PERFORMANCE %%%%%%%%%%%%%%%%%% + +\DeclareBibliographyDriver{performance}{% +%Add key to noteonly category +\addtocategory{noteonly}{\thefield{entrykey}}% +\usebibmacro{bibindex}% +\usebibmacro{begentry}% +\usebibmacro{title}% +\setunit{\addcomma\addspace\bibstring{byauthor}\addspace}% +\printnames[byauthor]{author}% +\setunit{\addcomma\addspace}% +\printfield{type}% +\setunit{\addcomma\addspace}% +\printfield{note}% +\setunit{\addcomma\addspace}% +\printfield{venue}% +\newunit +\printlist{publisher}% +\newunit +\printfield{howpublished}% +\setunit{\addcomma\addspace}% +\usebibmacro{date-full}% +\iffieldundef{origtitle}% + {\relax}% + {\setunit{\addspace\bibleftparen}% + \printfield[titlecase]{origtitle}% + \setunit*{\addspace}% + \printorigdate + \bibrightparen}% +\newunit\newblock +\usebibmacro{onlinelocation}% +\newunit\newblock +\printfield{addendum}% +\newunit\newblock +\usebibmacro{pageref}% +\usebibmacro{finentry}% +}%end performance driver + +%%%%%% PERIODICAL %%%%%% + +\DeclareBibliographyDriver{periodical}{% +\ifthenelse{\equal{\thefield{entrysubtype}}{\subtypenewsp}}% + {\addtocategory{newspaper}{\thefield{entrykey}}}% + {\ifthenelse{\equal{\thefield{entrysubtype}}{\subtypemag}}% + {\addtocategory{magazine}{\thefield{entrykey}}}% + {\relax}}% +\usebibmacro{bibindex}% +\ifnameundef{editor} + {\setunit{\addspace}}% + {\usebibmacro{editor}% + \setunit{\labelnamepunct}\newblock}% +\usebibmacro{title+issuetitle}% +\newunit\newblock +\usebibmacro{onlinelocation}% +\newunit\newblock +\printfield{addendum}% +\newunit\newblock +%\usebibmacro{pageref}% +\usebibmacro{finentry}% +}%end periodical driver + +%%%%%% PROCEEDINGS %%%%%% + +%Proceedings are treated like collections, even though they have some extra fields +\DeclareBibliographyAlias{proceedings}{collection}% + +%%%%%% REFERENCE %%%%%%%%%%% + +\DeclareBibliographyDriver{reference}{% +\usebibmacro{bibindex}% +\usebibmacro{begentry}% +\iffootnote + {%Then footnote routine: just title and edition + \usebibmacro{title}%Uses shorttitles for references, if available + \newunit\newblock + \printfield{edition}% + \newunit\newblock + \printfield{note}% + }%End of footnote routine + {%Else: bibliography (not normally used) or list of shorthands: + %(Proceed more or less as for collections, but title first) + %First-Level Title Block (for book or volume)-------------- + \usebibmacro{title}% + \newunit\newblock + %Author Block----------------------------------------------- + \usebibmacro{byauthor}% + \newunit\newblock + %Editors and/or Translator Blocks-------------------------- + \usebibmacro{byeditor+others}% + \newunit\newblock + %Block for vol. no., second-level title, and editors----------------- + \usebibmacro{title+maintitle}% + \usebibmacro{collectioneditor}%New unit punctuation set in subroutine + \newunit\newblock + %Edition Block ----------------------------------------------------- + \printfield{edition}% + \newunit\newblock + %Series Block (including note field) -------------------------------- + \iftoggle{printseriesflag}%Print series info only when option is set + {\iffieldundef{series} + {\relax}% + {\usebibmacro{series+number}% + \setunit{\addcomma\addspace}}}% + {\relax}% + \printfield{note}% + \newunit\newblock + %Publishing Data Block ------------------------------------------------ + \usebibmacro{publisher+location+year}% + \newunit\newblock + %Online locators---------------------------------------------------------- + \usebibmacro{onlinelocation}% + }%Endif, end of bibliography routine +\newunit\newblock +%Addendum and finish------------------------------------------------------ +\printfield{addendum}% +\usebibmacro{pageref}% +\usebibmacro{finentry}% +}% End of refernece driver + + +\renewbibmacro{byauthor}{% + \ifboolexpr{ +% test \ifuseauthor +% or + test {\ifnameundef{author}} + } + {} + {\usebibmacro{bytypestrg}{author}{author}% + \setunit{\addspace}% + \printnames[byauthor]{author}}} + +%%%%%% REPORT %%%%%% + +%Reports are treated like books, even though they have some extra fields +\DeclareBibliographyAlias{report}{book}% + +%%%%%% THESIS %%%%%% + +\DeclareBibliographyDriver{thesis}{% +\usebibmacro{bibindex}% +\usebibmacro{begentry}% +\usebibmacro{author}% +\setunit{\labelnamepunct}\newblock +\iffieldundef{title} + {\iffieldundef{titleaddon} + {\relax}% + {\usebibmacro{title}}}% + {\usebibmacro{title}}% +\iffieldundef{note} + {\relax} + {\newunit\newblock + \printfield{note}}% +\iffootnote + {%then footnote environment: open parentheses + \setunit{\addspace\bibleftparen}}% + {%else bibliography environmemt: just start a new unit + \newunit}% +\iffieldbibstring{type} + {\bibstring{\thefield{type}}}% + {\printfield{type}\isdot}% +\setunit{\addcomma\space}%Yes, comma here, even in bibliography +\printlist{institution}% +\setunit*{\addcomma\addspace}% +\usebibmacro{year}% +\iffootnote + {%then footnote environment: close parentheses + \printtext{\bibrightparen}\setunit{\addspace}}% + {%else bibliography environmemt: just start a new block + \newunit\newblock}% +\usebibmacro{onlinelocation}% +\newunit\newblock +\printfield{addendum}% +\newunit\newblock +\usebibmacro{pageref}% +\usebibmacro{finentry}% +}%End thesis driver + +%%%%%% UNPUBLISHED %%%%%% + +%For unpublished sources, such as conference presentations or drafts: a little more structure and extra fields than in biblatex standard; note field before howpublished; in footnotes for conference papers, location, sponsorship and date go in parentheses +\DeclareBibliographyDriver{unpublished}{% +\usebibmacro{bibindex}% +\usebibmacro{begentry}% +\usebibmacro{author/editor/translator}% +\setunit{\labelnamepunct}\newblock +\iffieldundef{title} + {\iffieldundef{titleaddon} + {\relax}% + {\usebibmacro{title}}}% + {\usebibmacro{title}}% +\iffieldundef{note} + {\relax} + {\newunit\newblock + \printfield{note}}% +\iffootnote + {%then footnote environment: open parentheses + \setunit{\addspace\bibleftparen}}% + {%else bibliography environmemt: just start a new unit + \newunit}% +\printfield{type}% +\setunit*{\addcomma\space}%Yes, comma here, even in bibliography +\printfield{howpublished}% +\setunit*{\addcomma\addspace}% +\iffieldundef{eventtitle} + {\relax}% + {\printtext[title]{\printfield[titlecase]{eventtitle}}}% +\setunit*{\addcomma\addspace}% +\printlist{organization}% +\setunit*{\addcomma\addspace} +\printfield{venue}% +\setunit*{\addcomma\addspace}% +%Just one date; no separate eventdate +\usebibmacro{date-full}% +\iffootnote + {%then footnote environment: close parentheses + \setunit{\unspace}\printtext{\bibrightparen}}% + {%else bibliography environmemt: just start a new block + \newunit\newblock + }%endif +\usebibmacro{onlinelocation}% +\newunit\newblock +\printfield{addendum}% +\newunit\newblock +\usebibmacro{pageref}% +\usebibmacro{finentry}% +}%End unpublished driver + +%%%%%% VIDEO %%%%%%%%%%%%%%%%%% + +\DeclareBibliographyDriver{video}{% +%Sort out entrysubtypes +\usebibmacro{bibindex}% +\usebibmacro{begentry}% +\usebibmacro{author}% +\setunit*{\labelnamepunct\addspace}\newblock +\usebibmacro{title}% +\newunit\newblock +\printfield{edition}% +\newunit +\printfield{type}% +\newunit\newblock +\printfield{note}% +\newunit\newblock +\printfield[noformat]{volume}%In case of multiple discs or cassettes in a set +\iffieldundef{booktitle}% + {%then + \relax}% + {%else print title of the set + \usebibmacro{in:}% + \usebibmacro{booktitle}% + \newunit\newblock}% +\ifthenelse{\equal{\thefield{entrysubtype}}{\subtypeonline}}% + {%Unstructured formatting of publishing info for online multimedia + \printlist{organization}% + \newunit + \printlist{institution}% + \newunit + \printlist{publisher}% + \newunit + \printfield{howpublished}% + \newunit + \printfield{usera}% + \newunit + \printfield{userd}}%End online routine + {%Else use booklike location:publisher format + \iffootnote% + {%then in parentheses + \setunit{\addspace}% + \printtext{\bibleftparen}% + \usebibmacro{publisher+location+year}% + \printtext{\bibrightparen}}% + {%else without parentheses + \usebibmacro{publisher+location+year}}% + }%End if; end publisher/location info +\newunit\newblock +\usebibmacro{onlinelocation}% +\newunit\newblock +\printfield{addendum}% +\usebibmacro{pageref}% +\usebibmacro{finentry}% +}%end video driver + +%%%%%% CUSTOMA %%%%%% + +%Custom entry type for archival collections +\DeclareBibliographyDriver{customa}{% +\usebibmacro{bibindex}% +\usebibmacro{begentry}% +\usebibmacro{author}%Prints nameaddon and labelnamepunct, too +\usebibmacro{getcustomainfo}% +\usebibmacro{pageref}% +\usebibmacro{finentry}% +}%End customa driver + +%Common formatting routine for customa and crossreferences to customa +\newbibmacro{getcustomainfo}{%---------------------------------------------- +\printfield[titlecase]{title}% +\newunit\newblock +\printfield{note}% +\newunit\newblock +\printlist{organization}% +\setunit*{\addcomma\space} +\printlist{institution}% +\setunit*{\addcomma\space} +\printfield{library}% +\setunit*{\addcomma\space}% +\printlist{location}% +\newunit +\printfield{type}% +\newunit +\printfield{usera}% +\newunit\newblock +\usebibmacro{onlinelocation}% +\newunit\newblock +\printfield{addendum}% +}%end getcustomainfo + +%%%%%% CUSTOMD %%%%%% + +%Custom entrytype D for archival documents (quasi `inarchive' or `incustoma') +\DeclareBibliographyDriver{customd}{% +%Add key to noteonly category +\addtocategory{noteonly}{\thefield{entrykey}}% +\usebibmacro{bibindex}% +\usebibmacro{begentry}% +\usebibmacro{author}% +\setunit{\labelnamepunct}\newblock +\usebibmacro{title}% +\clearfield{title}\clearfield{subtitle}\clearfield{titleaddon}% +\setunit{\addspace}% +\printnames{namec}% Needed for the occasional letter, interview +\setunit{\addcomma\addspace}% +\printfield{type}% +\setunit{\addcomma\addspace}% +\printfield{venue}% +\setunit{\addcomma\addspace}% +\printfield{note}% +\setunit{\addcomma\addspace}% +\usebibmacro{date-full}% +\newunit\newblock +\iffieldundef{xref}% + {%then no xref; just print what's likely to be available in the customd + \iffieldundef{booktitle} + {%then improvise + \printfield{howpublished}% + \setunit*{\addcomma\addspace}% + \printlist{organization}% + \setunit*{\addcomma\addspace}% + \printlist{institution}% + \setunit*{\addcomma\addspace}% + \printfield{library}% + \setunit*{\addcomma\addspace}% + \printfield{userd}% + \newunit\newblock + \usebibmacro{volume+pages}% + }% + {%else assume it's from a published collection + \usebibmacro{in:}% + \usebibmacro{getbookinfo}% + }% + \newunit\newblock + \usebibmacro{onlinelocation}% + }% + {%else x-ref to collection or customa or online + \printtext{\unspace}%Just to force the unit punctutation before the xref + %Save page range for bibliography + \savefield{pages}{\childpages}% + \savefield{volume}{\childvolume}% + \savefield{part}{\childpart}% + \iffootnote + {\cbx@crosstoarch{\thefield{xref}}}% + {\bbx@crosstoarch{\thefield{xref}}}% + \newunit\newblock + \printfield{userd}% + \newunit\newblock + \iffootnote + {\usebibmacro{volume+pages}% + \newunit\newblock}% + {\relax}%Volume, pages should already have been printed + }%endif, end xref routine +\newunit\newblock +\usebibmacro{onlinelocation}% +\newunit\newblock +\printfield{addendum}% +\newunit\newblock +\usebibmacro{pageref}% +\usebibmacro{finentry}% +}%end customd driver + +%%%%% CUSTOMD AS FALLBACK TYPE %%%%% + +\DeclareBibliographyAlias{*}{customd} + +%%%%% OTHER TYPES, NOT EXPLICITLY SUPPORTED %%%%%% + +\DeclareBibliographyAlias{review}{article} +\DeclareBibliographyAlias{suppbook}{inbook} +\DeclareBibliographyAlias{suppcollection}{incollection} +\DeclareBibliographyAlias{suppperiodical}{article} + + +%%%%% SUBROUTINES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%---------------------------------------------------------------------------------- +% SUBROUTINES OF INBOOK/INCOLLECTION, etc. +% +%For adding book data to an inbook, incollection, or other subordinate record. (One set of routines, for any combination of entrytypes.) +%--------------------------------------------------------------------------------- + +%Get rid of colon before booktitle in incollection and allow other prepositions, depending on subtype +\renewbibmacro*{in:}{% +\ifthenelse{\equal{\thefield{entrysubtype}}{\subtypeintro}}% + {%Then1:`to' instead of `in' + \setunit{\addspace\bibstring{introto}\addspace}}% + {%Else1 + \ifthenelse{\equal{\thefield{entrysubtype}}{\subtypeexcerpt}}% + {%Then2 ``from'' + \setunit{\addspace\bibstring{excerptfrom}\addspace}}% + {%Else2 + \ifthenelse{\equal{\thefield{entrysubtype}}{\subtypevolume}% + \OR\equal{\thefield{entrytype}}{\entrytypebookinbook}}% + {%Then3 ``volume...of'' + \setunit{\addspace\bibstring{volumeof}\addspace}}% + {%Else3 + \ifthenelse{\equal{\thefield{entrysubtype}}{\subtypenone}% + \or {\equal{\thefield{entrysubtype}}{\subtypemag}}% + \or {\equal{\thefield{entrytype}}{\entrytypearchive}}% + \or {\equal{\thefield{entrysubtype}}{\subtypenewsp}}% + \or {\equal{\thefield{entrysubtype}}{\subtypevideo}}% + \or {\equal{\thefield{entrytype}}{\entrytypeonline}}% + \or {\equal{\thefield{entrytype}}{\entrytypeaudio}}% + \or {\equal{\thefield{entrysubtype}}{\subtypeearlybook}}}% + {%Then4 no linking preposition at all + \relax}% + {%Else4 check for special case after an xref + \iftoggle{xrefflag} + {%Then5 have to capitalize manually in bibliography + \ifbibliography + {\bibcpstring{in}\addspace}% + {\bibstring{in}\addspace}}% + {%else5 default ``in'' + \bibstring{in}\addspace% + }%end else5 + }%end else4 + }%end else3 + }%end else2 + }%end else1 +}%end macro in: + +\newbibmacro{getbookinfo}{%------------------------------------------------------ + %Booktitle and Editor Block (including special fields for proceedings) + \usebibmacro{getbooktitle}% + \setunit{\addcomma\addspace}% + %Special fields from entrytypes proceedings or inproceedings + \usebibmacro{getproceedingsfields}% + \setunit{\addcomma\addspace}% + %Now find all the book-level authors and editors + \usebibmacro{getbookauthoreditor}% + \newunit\newblock + %Maintitle Block, including page numbers --------------------------------------- + %Check whether the book is part of a multivolume set + \iffieldundef{maintitle} + {%No maintitle (or maintitle was used instead of booktitle, then cleared) + \relax}% + {%\ifthenelse{\iffieldundef{title}\and\iffieldundef{titleaddon}} + {%no separate volume title (or titleaddon for untitled excerpts) + \relax}% + {\usebibmacro{booktitle+maintitle-multivolume}}}% + \setunit{\addcomma\addspace}% + \iffootnote + {%then pages will come from the postnote field + \relax}% + {%else restore child's volume and page range for bibliography + \restorefield{pages}{\childpages}% + \iftoggle{volumeprinted} + {\relax}% + {\restorefield{volume}{\childvolume}% + \restorefield{part}{\childpart}}% + \usebibmacro{volume+pages}% + }% + \newunit\newblock + %Edition Block------------------------------------------------------ + \printfield{edition}% + \newunit\newblock + %Series Block (including note field) -------------------------------- + \iftoggle{printseriesflag}%Print series info only when option is set + {\iffieldundef{series} + {\relax}% + {\usebibmacro{series+number}% + \setunit{\addcomma\addspace}}}% + {\relax}% + \printfield{note}% + \newunit\newblock + %Special fields----------------------------------------------------- + \printfield{type}% + \newunit + \printfield{version}% + \newunit\newblock + %Location: Publisher, Year Block ------------------------------------------ + \ifthenelse{\equal{\thefield{entrysubtype}}{\subtypeearlybook}} + {%Then no publishing data for early English literature + \relax}% + {%Else full publishing data, in parens in footnotes + \iffootnote% + {%then in parens + \setunit{\addspace}% + \printtext{\bibleftparen}% + \usebibmacro{publisher+location+year}% + \printtext{\bibrightparen}}% + {%else no parens in bibliography + \usebibmacro{publisher+location+year}}% + }% +}%end macro getbookinfo + +%Choose appropriate book-title routine for incollection-like entries +\newbibmacro{getbooktitle}{%---------------------------------------------------- +\iftoggle{xrefflag}% + {%then record is book/collection-like, accessed via xref: find title in title field. + \usebibmacro{title}% + }%endthen; end of xref routine + {%else current record inbook/incollection-like; look in booktitle field + \iffieldundef{booktitle} + {%then user must have filled in maintitle instead of booktitle + \usebibmacro{title+maintitle}% + \clearfield{maintitle}%Prevents repetition later, in case of multivolume sets + }% + {%else booktitle available, but might be redundant + \iffieldsequal{booktitle}{title}% + {%then no distinct booktitle after all; again, use maintitle + \usebibmacro{title+maintitle}% + \clearfield{maintitle}%Prevents repetition later, in case of multivolume sets + }% + {%else normal case with distinct title and booktitle + \usebibmacro{booktitle+maintitle}% + }% + }%endelse; endiffieldundef + }% +}%end macro getbooktitle + +\newbibmacro{getbookauthoreditor}{%-------------------------------------------------- + \ifnameundef{bookauthor} + {%then1 No bookauthor in current record; either it's not an inbook or there's no distinct part author. Check whether current author is different from saved author from the inbook record + \ifnameequals{author}{\childauthor}% + {%then2 no need to print the same name again + \relax}% + {%else2 current record is the book and has a different overall author from the inbook + \setunit*{\addcomma\addspace\bibstring{byline}\addspace}% + \printnames[byauthor]{author}% + }%end else2, end ifnameequals + }%end then1 + {%else1 current record has a book author; must be an inbook. Print the bookauthor if distinct from the part author (the bybookauthor macro will compare) + \setunit{\addcomma\addspace\bibstring{byline}\addspace}% + \usebibmacro{bybookauthor}%Redefined below + }%end else1, end iffieldundef + \setunit{\addcomma\addspace}% + \usebibmacro{byeditor+others}% +}%end macro getbookauthoreditor + +\renewbibmacro*{bybookauthor}{%-------------------------------------------- + \ifnamesequal{author}{bookauthor} + {%No distinct bookauthor + \relax}% + {%Print book author, firstname first + \printnames[byeditor]{bookauthor}}% +}%end macro bybookauthor + +\newbibmacro{getproceedingsfields}{%--------------------------------------------- +%For now, they will be printed whenever they are present--no test for entrytype +\ifthenelse{\equal{\thefield{editortype}}{\edtypecorp}} + {%then corporate editor already printed and organization redundant + \relax}% + {%else print the name of the organization + \printlist{organization}}% +\setunit{\addcomma\addspace}% +\printfield[titlecase]{eventtitle}% +\setunit{\addcomma\addspace}% +\printfield{venue}% +\setunit{\addcomma\addspace}% +\iffieldundef{eventdate} + {\relax}% + {\printeventdate}% +}%end macro + +%For inbook and incollection, when the parent is in a multivolume work. +\newbibmacro*{booktitle+maintitle}{%------------------------------------------------- +\iffieldsequal{maintitle}{booktitle} + {%then maintitles are superfluous + \clearfield{maintitle}% + \clearfield{mainsubtitle}% + \clearfield{maintitleaddon}}% + {%else + \iffieldundef{maintitle} + {%Then: only one title--but is reference to a volume or the whole work? + \usebibmacro{booktitle}% + \iffootnote + {\setunit{\addspace}% + \printfield[parens]{userb}}% + {\newunit + \printfield{userb}}% + \setunit{\newunitpunct}% + \iffieldundef{volume} + {%Then: no volume number, so must be an independent work + \printfield{volumes}}% + {%Else: volume specified, so give the volume- and part numbers + \ifthenelse{\equal{\thefield{entrytype}}{\entrytypecoll}% + \OR\equal{\thefield{entrytype}}{\entrytypebook} + \OR\equal{\thefield{entrytype}}{\entrytyperef} + \OR\equal{\thefield{entrytype}}{\entrytypeproc}}% + {\printfield{volume}\printfield{part}% + \clearfield{volume}\clearfield{part}}% + {\relax}% + }%endiffieldundef volume + }%endthen + {%Else: Separate maintitle and volume title, so give volume title here. Maintitle will come after the editor + \usebibmacro{booktitle}% + \iffootnote + {\setunit{\addspace}% + \printfield[parens]{userb}}% + {\newunit + \printfield{userb}}% + }%Endif + }%Endif +}%end macro booktitle+maintitle + + +\newbibmacro{booktitle+maintitle-multivolume}{%------------------------------------- +%Prints volume-titles and maintitles of multivolume incollections; +% special case of book excerpt in an anthology also handled here + \iffieldundef{volume} + {%then print `in Maintitle' + \setunit{\newunitpunct\addspace\bibstring{in}\addspace}% + }% + {%else print `vol. 1 of Maintitle' + \printfield{volume}% + \printfield{part}% + \setunit{\addspace\bibstring{volumeof}\addspace}% + \toggletrue{volumeprinted}%Something wrong. Doesn't work globally, so clear everything + \clearfield{volume}\clearfield{part}\savefield{volume}{\childvolume}\savefield{part}{\childpart}% + }% + \usebibmacro{maintitle}% + %Setunit in subroutine + \usebibmacro{collectioneditor}% +}%end nmacro booktitle+maintitle-multivolume + + + +%---------------------------------------------------------------------- +% GETBOOKINFO-SHORT +% +% For adding book-level data from the reference entrytype +% (Used when crossreferencing, under the shortincoll option) +%---------------------------------------------------------------------- +\newbibmacro*{getbookinfo-short}{% +\ifnameundef{labelname} + {\printfield{label}}% + {\printnames{labelname}}% +\ifsingletitle + {\relax}% + {\setunit*{\addcomma\space}% + \printtext[title]{\printfield[titlecase]{labeltitle}}}% +}%end macro getbookinfo-short + + +%----------------------------------------------------------------------------------- +% SUBROUTINES OF BOOK, COLLECTION, etc. +% +% Publisher-Location-Year: Generalized routines for original publishing data and reprint data, from all the book-like entrytypes. +%----------------------------------------------------------------------------------- + +\newbibmacro*{publisher+location+year}{%--------------------------------------------- +%Check whether the entry is a reprint (i.e., whether it has ``orig'' data) +\ifthenelse{\equal{\reprintoption}{\optionnoreprints}} + {\relax}% + {\usebibmacro{reprinttest}}% +%(New unit has been set in the subroutine) +%Print location, publisher, and year +\iflistundef{location} + {%Then no location, no automatic n.p., no colon + \relax}% + {%Else location and colon + \usebibmacro{printlocation}% + \midsentence% In case of question mark after location + \setunit*{\addcolon\addspace}% + }% +\iflistundef{publisher} + {%then use institution instead of publisher + \iflistundef{institution} + {%then no institution either; try howpublished + \iffieldundef{howpublished} + {%then no publishing data available + \iflistundef{location} + {%then publisher, location both blank + \iffootnote + {%then no puctuation before date + \setunit{\unspace}}% + {%else + \newunit}% + }% + {%else location, but no publisher + \setunit{\addcomma\addspace}}% + }% + {%else use howpublished field + \printfield{howpublished}% + \setunit{\addcomma\addspace}}% + }% + {%else institution instead of publisher + \printlist{institution}% + \setunit{\addcomma\addspace}% + }% + }% + {%else use publisher field and ignore howpublished and institution + \printlist{publisher}% + \setunit{\addcomma\addspace}% + }% +\usebibmacro{year}% +}%end publisher+location+year + +\newbibmacro{printlocation}{%------------------------------------------------- +\ifthenelse{\equal{\thelist{location}}{\noplace}}%Something wrong here. Can't get it to recognize ``np'' in the location list + {\bibstring{noplace}}% + {\printlist{location}\isdot}% +}%end macro printlocation + +\newbibmacro{reprinttest}{%---------------------------------------------------- +\toggletrue{origdataflag}% +\iffieldundef{origyear}% + {%then no origyear + \iflistundef{origlocation}% + {%then no origyear or origlocation + \iflistundef{origpublisher} + {%then not enough orig data for default reprint routine + \iffieldundef{origtitle}% + {%then not enough orig data for the other options, either + \togglefalse{origdataflag}}% + {%else + \relax}}% + {%else origpublisher, but no location; entry can still be a reprint + \usebibmacro{reprintorigfirst}}}% + {%else origlocation but no origyear; entry can still be a reprint + \usebibmacro{reprintorigfirst}}}% + {%else At least origyear available; entry is a reprint + \usebibmacro{reprintorigfirst}}% +}%end macro reprinttest + +\newbibmacro{reprintorigfirst}{%----------------------------------------------- +\ifthenelse{\not\equal{\reprintoption}{\optionorigfirst}} + {%then original data will be added later (or not at all) + \relax}% + {%else default reprint routine: print original data first + \printlist{origlocation}% + \iflistundef{origpublisher} + {\setunit*{\addcomma\addspace}% + }% + {\setunit*{\addcolon\addspace}% + \printlist{origpublisher}% + \setunit*{\addcomma\addspace}% + }% + \iffieldundef{origyear} + {\bibstring{nodate}}% + {\printorigdate}% + \iffootnote + {%then Footnote environment: use semicolon and abbreviation + \addsemicolon\addspace\bibstring{reprint}}% + {%else bibliography: use newunitpunct and long bibstring + \newunit\bibstring{reprint}}% + \setunit{\addcomma\addspace} + }%End else +}%End macro reprintorigfirst + +\newbibmacro{addoriginaledition}{%-------------------------------------------- +%Check whether original data were entered +\iftoggle{origdataflag} + {%Then1 introduce orig data with appropriate string + \iffieldundef{origtitle} + {%then2 without origtitle + \iffootnote + {\bibstring{origedition}}% + {\bibstring{origeditionbib}}% + \setunit*{\addcomma\addspace}% + \printlist{origlocation}% + \setunit*{\addcomma\addspace}% + \printorigdate}% + {%else2 with origtitle + \iffootnote + {\bibstring{origeditiontitled}}% + {\bibstring{origeditiontitledbib}}% + \setunit{\addcomma\addspace} + \printtext[title]{\printfield[titlecase]{origtitle}}\addspace% + \iflistundef{origlocation} + {\mkbibparens{\printorigdate}}% + {\printtext[parens]% + {\printlist{origlocation}% + \setunit*{\addcomma\addspace}% + \printorigdate}}% + }%end else2 + }%End then1 + {%Else1 nothing to print + \relax + }%endelse1 +}%End macro addoriginaledition + +\newbibmacro{addtransfrom}{%-------------------------------------------------- +%Check whether original data were entered +\iftoggle{origdataflag} + {%Then1 introduce orig data with appropriate string + \iffieldundef{origtitle} + {%then2 without origtitle + \iffootnote + {\bibstring{origedition}}% + {\bibstring{origeditionbib}}% + \setunit{\addcomma\addspace}% + \printlist{origlocation}% + \setunit*{\addcomma\addspace}% + \printorigdate}% + {%else2 with origtitle + \iffootnote + {\bibstring{translatedfromtitle}}% + {\bibstring{translatedfromtitlebib}}% + \setunit{\addspace}% + \printtext[title]{\printfield[titlecase]{origtitle}}\addspace% + \iflistundef{origlocation} + {\mkbibparens{\printorigdate}}% + {\printtext[parens]% + {\printlist{origlocation}% + \setunit*{\addcomma\addspace}% + \printorigdate}}% + }%end else2 + }%End then1 + {%Else1 nothing to print + \relax}% +}%End macro addtransfrom + + +\newbibmacro{origtransas}{%-------------------------------------------------- +% Swap orig-fields for normal fields +\savefield{title}{\temptitle}\savefield{origtitle}{\temporigtitle}% +\savelist{location}{\templocation}\savelist{origlocation}{\temporiglocation}% +\savelist{publisher}{\temppublisher}\savelist{origpublisher}{\temporigpublisher}% +\iffieldundef{date} + {\savefield{pubstate}{\tempyear}}% + {\savefield{date}{\tempdate}}% +\savefield{origdate}{\temporigdate}% +\restorefield{title}{\temporigtitle}\restorefield{origtitle}{\temptitle}% +\restorelist{location}{\temporiglocation}\restorelist{origlocation}{\templocation}% +\restorelist{publisher}{\temporigpublisher}\restorelist{origpublisher}{\temppublisher}% +\restorefield{origdate}{\tempdate}\restorefield{date}{\temporigdate}% +}%End macro origtransas + +\newbibmacro{print-translation-data}{%---------------------------------------- + \ifnameundef{translator} + {\ifbibliography + {\setunit{\addspace\bibstring{translatedasbib}\addspace}}% + {\setunit{\addspace\bibstring{translatedas}\addspace}}% + }% + {\ifbibliography + {\bibstring{bytranslatorbib}\addspace}% + {\bibstring{bytranslator}}% + \printnames[byauthor]{translator} + \setunit{as\addspace}}% + \printtext[title]{\printfield[titlecase]{origtitle}}% + \ifthenelse{\iflistundef{origlocation}\and\iflistundef{origpublisher}\and\iffieldundef{origyear}} + {%then no more orig-data + \relax}% + {%else orig-data go in parentheses + \addspace\bibleftparen + \printlist{origlocation}% + \iflistundef{origpublisher} + {\setunit*{\addcomma\space}} + {\setunit*{\addcolon\space}}% + \printlist{origpublisher}% + \setunit*{\addcomma\space}% + \printorigdate + \bibrightparen}% +}%end macro print-translation-data + + +%---------------------------------------------------------------------- +% GETARCHIVEINFO +% +% For adding collection data from customa or other parent entrytype +% (Used when crossreferencing from customd or letter) +%---------------------------------------------------------------------- +\newbibmacro{getarchiveinfo}{%----------------------------------------- +\usebibmacro{bibindex}% +%\usebibmacro{in:}% +\ifthenelse{\equal{\thefield{entrytype}}{\entrytypearchive}}% + {%Then archive: print name of collection, first name first, then use main archive routine + \printnames[byeditor]{author}% + \setunit{\addspace}% + \printfield{nameaddon}% + \usebibmacro{getcustomainfo}}%End main archive routine + {%Else not an archive + \ifthenelse{\equal{\thefield{entrytype}}{\entrytypeonline}}% + {%Then it's an online database + \usebibmacro{title}% + \newunit\newblock + \usebibmacro{byeditor}% + \newunit\newblock + \printfield{note}% + \newunit\newblock + \printlist{organization}% + \newunit\newblock + \iftoggle{xrefflag} + {\relax}% + {\usebibmacro{onlinelocation} + \newunit\newblock}% + \printfield{addendum}% + }% + {%Else use collection routine + \usebibmacro{getbookinfo}}% + }%Endif +}%End macro getarchiveinfo + +%----------------------------------------------------------------------------- +% TITLE and SERIES Routines (for all booklike, inbook-like entrytypes) +% +%----------------------------------------------------------------------------- + +\newbibmacro*{title+maintitle}{%------------------------------------------ +%Title (from Title-field) already printed. See if there is a maintitle, too. +\iffieldsequal{maintitle}{title} + {%Then maintitle superfluous + \clearfield{maintitle}\clearfield{mainsubtitle}\clearfield{maintitleaddon}}% + {%Else distinct maintitle + \relax}% +\iffieldundef{maintitle} + {%Then there's only one title--but is it a volume or an entire work? + \iffieldundef{volume} + {%Then: no volume number, so must be an entire work. Give no. of volumes + \iftoggle{volumeprinted} + {\relax}%exception for subtype volume after x-ref + {\printfield{volumes}}% + }% + {%Else: a volume no. is specified, so give the volume- and part numbers + \printfield{volume}\printfield{part}% + }% + }% + {%Else Two-level title: print `vol. 1 of maintitle' + \printfield{volume}\printfield{part}% + \setunit{\addspace\bibstring{volumeof}\addspace}% + \usebibmacro{maintitle}% + }% +}%end macro title+maintitle + + +\renewbibmacro*{series+number}{%--------------------------------------------- + \printfield[titlecase]{series}% + \setunit*{\addspace}% + \printfield{number}% + \newunit +}%end macro series+number + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%---------------------------------------------------------------------------- +% SUBROUTINES FOR ARTICLES, PERIODICALS +% +%---------------------------------------------------------------------------- +%Put in city for newspapers, but print it in Roman +\renewbibmacro*{journal}{%--------------------------------------------------- +\iffieldundef{journaltitle} + {%then + \relax}% + {%else + \printtext[noformat] + {\printfield[journaltitle]{journaltitle}% + \setunit{\subtitlepunct}% + \printfield[journaltitle]{journalsubtitle} + \iflistundef{location} + {\relax}% + {\setunit{\addspace} + \printtext{\bibleftparen} + \unspace + \printlist[location]{location} + \unspace\printtext{\bibrightparen} + }%end iflistundef + \unspace + }%end printtext + }% end iffieldundef +}%end macro journal + +\renewbibmacro*{journal+issuetitle}{%------------------------------------------------ +%Restore any location data from the child (aritcle) record that is undefined in the parent (periodical). +\iffieldundef{issuetitle} + {\restorefield{issuetitle}{\childissuetitle}% + \restorefield{issuesubtitle}{\childissuesubtitle}}% + {\relax}% +\iffieldundef{issuetitle} + {\relax}% + {\usebibmacro{issue}%Prints issuetitle + \setunit{\addcomma\addspace}% + \usebibmacro{bytranslator+others}%Use translator and editors from parent record in any case + \setunit{\addcomma\addspace}% + \usebibmacro{byeditor+others}% + \newunit}% +\iffieldundef{note} + {\restorefield{note}{\childnote}}% + {\relax}% +\iffieldundef{note} + {\relax}% + {\printfield{note}% + \setunit{\addcomma\addspace}}% +\ifthenelse{\equal{\thefield{entrytype}}{\entrytypeper}}% + {\usebibmacro{periodical}}% + {\usebibmacro{journal}}% +\setunit{\addcomma\addspace}% +\iffieldundef{entrysubtype}% + {\restorefield{entrysubtype}{\childsubtype}}% + {\relax}% +\ifthenelse{\equal{\thefield{entrysubtype}}{\subtypemag}% + \OR \equal{\thefield{entrysubtype}}{\subtypenewsp}}% + {%Then cite magazines and newspapers by date, without parens + \usebibmacro{issue+date-mag}}% + {%Else default routine, with parens + \iffieldundef{series} + {\restorefield{series}{\childseries}}% + {\relax}% + \iffieldundef{series} + {\setunit*{\addspace}}% + {\setunit{\addcomma\addspace}% + \printfield{series}% + \setunit{\addcomma\addspace}}% + \iffieldundef{volume} + {\restorefield{volume}{\childvolume}}% + {\relax}% + \printfield{volume}% + \iffieldundef{number} + {\restorefield{number}{\childnumber}}% + {\relax}% + \iffieldnums{number} + {%then could be a single number or a range + \iffieldnum{number} + {%then use singular of bibstring + \setunit{\addcomma\addspace\bibstring{number}\addspace}}% + {%else use the plural + \setunit{\addcomma\addspace\bibstring{numbers}\addspace}}% + }% + {%else not a number at all; leave out the bibstring + \setunit{\addcomma\addspace}% + }% + \printfield{number}% + \setunit{\addspace}% + \iffieldundef{issue} + {\restorefield{issue}{\childissue}}% + {\relax}% + \iffieldundef{year} + {\restorefield{year}{\childyear}}% + {\relax}% + \iffieldundef{date} + {\restorefield{date}{\childdate}}% + {\relax}% + \usebibmacro{issue+date}% + }% +}%end macro journal+issuetitle + +\renewbibmacro*{issue+date}{%--------------------------------------------- +\printtext[parens]{% + \iffieldundef{issue} + {\usebibmacro{date-full}}% + {\printfield{issue}% + \setunit{\addspace}% + \usebibmacro{year}}}% + \newunit}%end macro issue+date + +\newbibmacro*{issue+date-mag}{%--------------------------------------------- + \printtext[noformat]{%Get rid of parens + \iffieldundef{issue} + {\usebibmacro{date-full}}% + {\printfield{issue}% + \setunit{\addspace}% + \usebibmacro{year}}% + \newunit}% +}%end macro issue+date-mag + + + +%For entrytype periodical: adjust punctuation +\renewbibmacro*{title+issuetitle}{%----------------------------------------- +\iffieldundef{issuetitle} + {%then untitled issue + \relax}% + {%else special case of issue with own title and/or editor + \usebibmacro{issue}% + \setunit{\addcomma\addspace}% + \usebibmacro{byeditor+others}% + \newunit}% +\iffieldundef{note} + {}% + {\printfield{note}\setunit{\addcomma\addspace}}% +\usebibmacro{periodical}% +\ifthenelse{\equal{\thefield{entrysubtype}}{\subtypemag}% + \OR\equal{\thefield{entrysubtype}}{\subtypenewsp}}% + {%then special treatment for newspapers and magazines + \newunit + \usebibmacro{issue+date-mag}% + }%endthen; end newsp/mag routine + {%else standard journal article + \iffieldundef{series} + {\setunit*{\addspace}}% + {\setunit{\addcomma\addspace}% + \printfield{series}% + \setunit{\addcomma\addspace}}% + \printfield{volume}% + \iffieldnum{number} + {\setunit{\addcomma\addspace\bibstring{number}\addspace}}% + {\iffieldnums{number} + {\setunit{\addcomma\addspace\bibstring{numbers}\addspace}}% + {\relax}}% + \printfield{number}% + \setunit{\addspace}% + \usebibmacro{issue+date}% + }%end else; end journal article routine + }%end macro title+issuetitle + +\renewbibmacro*{periodical}{% + \iffieldundef{title} + {}% + {\printtext[]{% + \printfield[]{title}% + \setunit{\subtitlepunct}% + \printfield[]{subtitle}}}} + +%----------------------------------------------------------------------------- +% ONLINE LOCATORS (all entrytypes) +% +%----------------------------------------------------------------------------- + +\newbibmacro{onlinelocation}{%----------------------------------------------- +\iftoggle{urllastflag} + {%then special case (from footciteurllast command); postnote comes first + \usebibmacro{cite:postnote}}% + {%else let cbx do the postnote as usual + \relax}% +\ifthenelse{\equal{\thefield{entrysubtype}}{\subtypeonline}% + \OR\equal{\thefield{entrytype}}{\entrytypeonline}}% + {%then override the option settings for these entrytypes/subtypes + \printfield{doi}% + \newunit\newblock% + \usebibmacro{eprint}% + \newunit\newblock% + \iffieldundef{url}% + {\relax}% + {\usebibmacro{url+urldate}}% + }%end then; end override + {%else use standard routine for online locators + \usebibmacro{doi+eprint+url}% + }%end ifthenelse +}%end macro onlinelocation + +%-------------------------------------------------------------------------------- +% LOWER-LEVEL ROUTINES, for title, author, editor, year, pubstate +% +%-------------------------------------------------------------------------------- + +%Standard routine for titles. +\renewbibmacro*{title}{%--------------------------------------------------------- +%Substitute shorttitle where required +\iffootnote + {\iffieldundef{shorttitle} + {\relax}% + {\iftoggle{useshorttitles}% + {%then shorttitle option is set: replace title with shorttitle + \clearfield{title}\clearfield{subtitle}% + \savefield{shorttitle}{\temptitle}% + \restorefield{title}{\temptitle}}% + {%else check entrysubtype + \ifthenelse{\equal{\thefield{entrysubtype}}{\subtypeearlybook} + \or\equal{\thefield{entrytype}}{\entrytyperef}} + {%Use shorttitles here, too + \clearfield{title}\clearfield{subtitle}% + \savefield{shorttitle}{\temptitle}% + \restorefield{title}{\temptitle}}% + {\relax}% + }%end iftoggle + }%end iffeldundef + }%end then, end footnote routine + {\relax}% No shorttitles in bibliography +\iffieldundef{title}% + {%then print titleaddon even without title (e.g. for describing untitled works), without preceding punctuation + \printtext[titlecase]{\printfield{titleaddon}}\isdot% + \setunit{\addspace}% + \printfield{usera}}%Special use of usera for year of anthologized article + {%else both title and titleaddon + \ifthenelse{\equal{\thefield{entrysubtype}}{\subtypevolume} + \OR\equal{\thefield{entrysubtype}}{\subtypepublicdocument} + \OR\equal{\thefield{entrytype}}{\entrytypebookinbook}}% + {%then special case, when incollection/inbook is a whole volume or a government document whose title needs to be italicized + \printtext[volumetitle]{% + \printfield[titlecase]{title}\isdot% + \iffieldundef{subtitle} + {\relax}% + {\setunit*{\subtitlepunct}% + \printfield[titlecase]{subtitle}}% + }%end printtext + }%end then, end subtype volume + {%else Other subtypes without italics + \printtext[title]{% + \printfield[titlecase]{title}\isdot% + \iffieldundef{subtitle} + {\relax}% + {\setunit*{\subtitlepunct}% + \printfield[titlecase]{subtitle}}}% + }%end ifthenelse + \iffieldundef{usere} + {\relax}% + {\setunit*{\addspace}\printtext[brackets]{\printfield[titlecase]{usere}}\setunit*{\addcomma\addspace}}% + \iffieldundef{titleaddon} + {\relax}% + {\newunit\printtext[titlecase]{\printfield{titleaddon}}\isdot}% + \iffieldundef{usera} + {\relax}% + {\iffootnote + {\setunit*{\addspace}% + \printfield[parens]{usera}}% + {\setunit*{\newunitpunct}% + \printfield{usera}}}% + }%end else, end iffieldundef{title} +}%end macro title + +\renewbibmacro*{booktitle}{% +\iffieldundef{booktitle}% + {%then + \printtext[titlecase]{\printfield{booktitleaddon}}\isdot + }%end then + {%else + \printtext[booktitle]{% + \printfield[titlecase]{booktitle}% + \setunit{\subtitlepunct}% + \printfield[titlecase]{booksubtitle}}% + }%end if + \iffieldundef{booktitleaddon} + {\relax}% + {\setunit{\addcomma\addspace}% + \printtext[titlecase]{\printfield{booktitleaddon}}\isdot}% +}%end macro booktitle + + +%Also print maintitleaddon even without title, and capitalize in bib +\renewbibmacro*{maintitle}{%------------------------------------------------------ +\iffieldundef{maintitle}% + {%then + \printtext[titlecase]{\printfield{maintitleaddon}}\isdot + }%end then + {%else + \printtext[maintitle]{% + \printfield[titlecase]{maintitle}% + \setunit{\subtitlepunct}% + \printfield[titlecase]{mainsubtitle}}% + }%end if + \iffieldundef{maintitleaddon} + {\relax}% + {\setunit{\addcomma\addspace}% + \printtext[titlecase]{\printfield{maintitleaddon}}\isdot}% +}%end macro maintitle + +%Handling anonymous/uncertain authorship; nameaddon +\renewbibmacro*{author}{%-------------------------------------------------------- +\ifthenelse{\ifuseauthor\AND\NOT\ifnameundef{author}} + {\ifthenelse{\iffieldequals{namehash}{\bbx@lasthash}\AND\NOT\iffirstonpage} + {\toggletrue{namedashflag}}% + {\togglefalse{namedashflag}% + \savefield{namehash}{\bbx@lasthash}}% + \iftoggle{useshortauthors} + {\iffootnote% + {\ifnameundef{shortauthor} + {\relax}% + {\savename{shortauthor}{\tempauthor}% + \restorename{author}{\tempauthor}}% + }% + {\relax}}% + {\relax}% + \usebibmacro{authortype+nameaddon}}% +{\global\undef\bbx@lasthash}% +}%end macro author + +\newbibmacro{authortype+nameaddon}{%-------------------------------------------- +\ifuseauthor + {%then check for anonymous, but known, authorship + \ifthenelse{\equal{\thefield{authortype}}{\authortypeanon}} + {%then anonymous author goes in brackets; usual punctuation outside brackets + \iftoggle{namedashflag} + {%then dash in place of name in bibliography + \mkbibbrackets{\bibnamedash}}% + {%else use name as usual + \mkbibbrackets{\printnames{author}}% + }%end iftoggle + }%endthen; end anonymous + {%else check for uncertain authorship + \ifthenelse{\equal{\thefield{authortype}}{\authortypeunsure}} + {%then question mark in brackets; usual punctuation outside brackets + \iftoggle{namedashflag} + {\mkbibbrackets{\bibnamedash\addquestion}}% + {\mkbibbrackets{\printnames{author}\addquestion}}% + }%endthen; end uncertain authorship + {%else no brackets; check for redundant author and suppress in footnotes + \ifthenelse {\equal{\thefield{authortype}}{\authortyperedundant}} + {%then + \iffootnote + {%then don't print redundant author in footnote + \relax}% + {%else print author or dashes in bibliography, even if redundant + \iftoggle{namedashflag} + {\bibnamedash}% + {\printnames{author}}% + }%end iffootnote + }%end then + {%else authortype not redundant, just print as usual + \iftoggle{namedashflag} + {\bibnamedash}% + {\unspace%Why is this necessary? + \printnames{author}}% + }%end ifthenelse redundant + }%endifthenelse unsure + }%endifthenelse anon; end uncertain/redundant authorship + \iffieldundef{nameaddon} + {\relax}% + {\setunit*{\addspace}% + \printfield{nameaddon}% + \iffootnote + {\ifpunctmark{.}{\isdot}{\relax}}% + {\relax}% + \setunit*{\labelnamepunct\addspace}% + }% + }%endthen (from ifuseauthor) + {%else Author not in use + \relax + }%end ifuseauthor +}%end macro authortype+nameaddon + +\newbibmacro*{bynamea}{%----------------------------------------------------------- +%Needed for government reports that give the institution as the author, but also +% credit an individual, whose name goes in namea + \ifnameundef{namea} + {\relax} + {\bibstring{byauthor}% + \setunit{\addspace}% + \printnames[byauthor]{namea}}}% + +\newbibmacro*{volume+pages}{%------------------------------------------------------ +\iftoggle{volumeprinted} + {\setunit{\addcomma\addspace}}% + {\printfield[noformat]{volume}% + \printfield{part}% + \iffieldundef{volume} + {\setunit{\addcomma\addspace}}% + {\setunit{\bibpagespunct}}}% +\printfield{pages}% +}%endmacro volume+pages + + +%Custom field for general editor of a collection containing an edited collection +%Needed when there is both a booktitle and a maintitle. The editora/b/c fields all go with the booktitle. Here nameb goes with the maintitle. +\newbibmacro{collectioneditor}{%---------------------------------------------------- +\iffieldundef{namebtype} + {%no descriptor in nametype field; use bibstring +% \iffootnote +% {\setunit{\addcomma\addspace\bibstring{byeditor}\addspace}}% +% {\setunit{\addcomma\addspace\bibstring{byeditorbib}\addspace}}% + \setunit{\addcomma\addspace\bibstring{byeditor}\addspace}% + }% + {%Get descriptor from nametype + \setunit{\addcomma\addspace\thefield{namebtype}\addspace}}% +\printnames{nameb}% +}%endmacro collectioneditor + + + +% Date routine, with pubstate and year as fallbacks +\newbibmacro*{date-full}{%--------------------------------------------------------------- + \ifthenelse{\iffieldundef{year}\and\iffieldundef{month}\and\iffieldundef{day}} + {%then no date; try pubstate + \iffieldundef{pubstate}% + {%then nothing available: insert `n.d.' + \bibstring{nodate}}% + {%else'substitute pubstate for date + \printfield{pubstate}}% + }%end then + {%else use the standard date routine + \usebibmacro{date}% + }%endif + }%end macro date + + +% Date routine, with pubstate and year as fallbacks +\newbibmacro*{date-optional}{%--------------------------------------------------------------- + \ifthenelse{\iffieldundef{year}\and\iffieldundef{month}\and\iffieldundef{day}} + {%then no date; try pubstate + \iffieldundef{pubstate}% + {%then nothing available, but don't insert `n.d.' + \relax}% + {%else'substitute pubstate for date + \printfield{pubstate}}% + }%end then + {%else use the standard date routine + \usebibmacro{date}% + }%endif + }%end macro date-optional + +%Date routine to leave out month and day +\newbibmacro{year}{%------------------------------------------------------------------ + \iffieldundef{year}% + {%then no year; try pubstate + \iffieldundef{pubstate}% + {%then nothing available: insert `n.d.' + \bibstring{nodate}}% + {%else substitute pubstate for date + \printfield{pubstate}}% + }% + {%else print the year (or range, if there's an endyear) + \printfield{year}% + \iffieldundef{endyear} + {\relax}% + {\setunit*{\bibrangedash}% + \printfield{endyear}}% + }% + }% end macro year + + +%%%%%%%% BIBLIOGRAPHY TWEAKS %%%%%%%%%%%%%%%%%% + +%When author names repeat, Turabian calls for eight underlines and a period, instead of biblatex's dashes +\renewcommand*{\bibnamedash}{% +% \ifdim\leftmargin<0.75em +% \mbox{\textemdash\space}% +% \else +% \makebox[\leftmargin][l]{% +% \ifdim\leftmargin<1.25em +% \textendash +% \else +% \textemdash +% \fi}% +% \fi +%\rule[0pt]{8ex}{.5pt}\unspace +\bibstring{namedash} + } + +%%%%% ANNOTATED BIBLIOGRAPHIES + + +\renewbibmacro*{finentry}{% + \iffootnote + {%then no annotations in the footnotes + \finentry}% + {%else + \ifcitation + {%then annotations in cite commands are handled in the cbx file + \finentry} + {%else bibliography environment: annotate if options are set + \printtext{\finentrypunct}% + \ifbool{bbx:annotation} + {%then add annotation in special environment + \begin{indentannote} + \usebibmacro{annotation}% + \finentry + \end{indentannote}% + }% + {%else no annotations + \finentry}% + }%end bibliography + }%end iffootnote +}%end macro finentry + +\endinput |