From 541682dd2c08c02da8f18457ba250167a2c37ef9 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Tue, 26 May 2020 21:31:15 +0000 Subject: biblatex-unified (26may20) git-svn-id: svn://tug.org/texlive/trunk@55290 c570f23f-e606-0410-a88d-b1316a301751 --- .../tex/latex/biblatex-unified/unified.bbx | 733 +++++++++++++++++++++ .../tex/latex/biblatex-unified/unified.cbx | 280 ++++++++ 2 files changed, 1013 insertions(+) create mode 100644 Master/texmf-dist/tex/latex/biblatex-unified/unified.bbx create mode 100644 Master/texmf-dist/tex/latex/biblatex-unified/unified.cbx (limited to 'Master/texmf-dist/tex/latex/biblatex-unified') diff --git a/Master/texmf-dist/tex/latex/biblatex-unified/unified.bbx b/Master/texmf-dist/tex/latex/biblatex-unified/unified.bbx new file mode 100644 index 00000000000..bb278b4a1cb --- /dev/null +++ b/Master/texmf-dist/tex/latex/biblatex-unified/unified.bbx @@ -0,0 +1,733 @@ +%% --------------------------------------------------------------- +%% biblatex-unified --- A biblatex implementation of the Unified Style +%% Sheet for Linguistics Journals. This is the house style of the +%% journal "Semantics & Pragmatics" (A journal of the Linguistic +%% Society of America). +%% Maintained by Kai von Fintel (fintel@mit.edu) +%% Released under the LaTeX Project Public License v1.3c or later +%% See http://www.latex-project.org/lppl.txt +%% --------------------------------------------------------------- +%% + +\ProvidesFile{unified.bbx}[2020/06/25 v1.00 biblatex bibliography style] + +% biblatex by default calls biblatex.def, we add to this authoryear.bbx, which +% in turn loads standard.bbx. So, unified.bbx is built on top of those styles; +% once authoryear.bbx is loaded, we tell it not to put in dashes for repeated +% authors (in accordance with the Unified Stylesheet) + +\RequireBibliographyStyle{authoryear} +\ExecuteBibliographyOptions{dashed=false,isbn=false,eprint=false} + +% NB: The Unified Style Sheet wants abbreviated "ed(s)", "edn". But using the +% abbreviate option also abbreviates the names of months. But then +% dateabbrev=false restores the long names of months + +% biblatex has a "useprefix" option, which makes "von" count for +% alphabetization; the Unified Stylesheet does not want that, so it is important +% that this option be disabled (even if an author tries to set it to true) + +\ExecuteBibliographyOptions{% + sorting=nyt,abbreviate,dateabbrev=false,useprefix=false} + +% For backward compatibility: choose labeldate or labeldateparts +% depending on the biblatex version +\@ifpackagelater{biblatex}{2016/09/09} {% + \ExecuteBibliographyOptions{labeldateparts}} {% + \ExecuteBibliographyOptions{labeldate} + \def\printlabeldateextra{\printdateextralabel} }% + +% If an @article entry contains Issuetitle and Editor information, we +% might not want to print it. The Unified Style Sheet does not offer +% explicit guidelines on this, but they don't have any examples where +% either of these pieces of information are actually printed. +% Therefore, we can offer an option for the user to decide whether to +% print it. The default will be not to print it since the Unified +% Style Sheet does not have examples where this information is +% printed. The user can print it by setting `issueandeditor=true` as a +% package option when biblatex is called. + +\newtoggle{issueandeditor} +\DeclareBibliographyOption{issueandeditor}[false]{% + \settoggle{issueandeditor}{#1}} + +% Formatting directives for name lists +% ------------------------------------------------------------------ +% +% In biblatex.def, there are name formats defined: first-last, last-first, +% last-first/first-last. They could be simplified (we don't need provisions for +% using initials only, since the Unified Style doesn't do that), but since +% biblatex.def is loaded automatically, there's no point. The name formats call +% bibmacros that figure out how to order the internal of name components. These +% are re-defined here to make sure that "von" is treated as part of the last +% name (it still doesn't count for sorting -- which is controlled by the +% \useprefix package option) name:last is used to produce citation labels +% name:last-first is used to produce the first author's name listing in the +% alphabetical bibliography + +% Also moved the Jr part to after the first name and inserted another comma, +% because the Unified Stylesheet disagrees with standard.bbx: it wants "Jr." not +% to be treated as part of the last name. + +% The macros here get 4 arguments passed to them. They are: #1 last name, #2 +% first name, #3 von, #4 Jr. + +% In biblatex v3.3 and onwards, the name formatting has changed in a big way. +% See for example: +% http://tex.stackexchange.com/questions/299036/biblatex-3-3-name-formatting, +% https://github.com/plk/biblatex/issues/372, and +% http://www.texdev.net/2016/03/13/biblatex-a-new-syntax-for-declarenameformat/. +% The name formats in biblatex.def are not called first-last etc. anymore but +% given-family etc. And while there are safeguard legacy aliases +% (\DeclareNameAlias{first-last}{given-family}, for example), the new formats +% then use macros like \usebibmacro{name:family-given}, which of course our old +% redefinitions didn't adjust. So, for newer biblatex, we need to do new +% versions of \renewbibmacro{name:...}. + +%% Redefinitions of name:last and name:last-first for biblatex versions before +%% v3.3 + +\renewbibmacro*{name:last}[4]{% + \usebibmacro{name:delim}{#3#1}% + \usebibmacro{name:hook}{#3#1}% + \ifblank{#3} + {} + {\ifcapital + {\mkbibnameprefix{\MakeCapital{#3}}\isdot} + {\mkbibnameprefix{#3}\isdot}% + \ifpunctmark{'}{}{\bibnamedelimc}}% + \mkbibnamelast{#1}}% + +\renewbibmacro*{name:last-first}[4]{% + \usebibmacro{name:delim}{#3#1}% + \usebibmacro{name:hook}{#3#1}% + \ifblank{#3}{}{% + \mkbibnameprefix{#3}\isdot% + \ifpunctmark{'}{}{\bibnamedelimc}}% + \mkbibnamelast{#1}\isdot + \ifblank{#2}{}{\addcomma\bibnamedelimd\mkbibnamefirst{#2}\isdot}% + \ifblank{#4}{}{\addcomma\bibnamedelimd\mkbibnameaffix{#4}\isdot}} + +%% Redefinitions of name:family and name:family-given for biblatex ever since +%% v3.3 + +\renewbibmacro*{name:family}[4]{% + \usebibmacro{name:delim}{#3#1}% + \usebibmacro{name:hook}{#3#1}% + \ifdefvoid{#3} + {} + {\ifcapital + {\mkbibnameprefix{\MakeCapital{#3}}\isdot} + {\mkbibnameprefix{#3}\isdot}% + \ifprefchar{}{\bibnamedelimc}}% + \mkbibnamefamily{#1}\isdot}% + +\renewbibmacro*{name:family-given}[4]{% + \usebibmacro{name:delim}{#3#1}% + \usebibmacro{name:hook}{#3#1}% + \ifdefvoid{#3} + {} + {\mkbibnameprefix{#3}\isdot% + \ifprefchar{}{\bibnamedelimc}}% + \mkbibnamefamily{#1}\isdot + \ifdefvoid{#2} + {} + {\revsdnamepunct\bibnamedelimd\mkbibnamegiven{#2}\isdot}% + \ifdefvoid{#4} + {} + {\addcomma\bibnamedelimd\mkbibnamesuffix{#4}\isdot}} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Various bibmacros used in producing the bibliography +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% We use `date+extradate` but biblatex versions before 3.8 didn't have that +% macro. Older versions were smart enough to complain about `\renewmacro` and +% use `\newmacro` instead. But the following construction works for both cases + +\providebibmacro{date+extradate}{} +\renewbibmacro*{date+extradate}{% + \iffieldundef{labelyear} {} + {\printtext{\printlabeldateextra}}}% Took out parentheses around the year + +\renewbibmacro*{author}{% + \ifboolexpr{ + test \ifuseauthor + and + not test {\ifnameundef{author}} + } + {\usebibmacro{bbx:dashcheck} + {\bibnamedash} + {\usebibmacro{bbx:savehash}% + \printnames{author}% + \iffieldundef{authortype} + {\newunit}% period instead of space + {\setunit{\addcomma\space}}}% + \iffieldundef{authortype} + {} + {\usebibmacro{authorstrg}% + \newunit}}% period instead of space + {\global\undef\bbx@lasthash + \usebibmacro{labeltitle}% + \newunit}% period instead of space + \usebibmacro{date+extradate}} + +\renewbibmacro*{editor}{% + \usebibmacro{bbx:editor}{editorstrg}} +\renewbibmacro*{editor+others}{% + \usebibmacro{bbx:editor}{editor+othersstrg}} +\renewbibmacro*{bbx:editor}[1]{% + \ifboolexpr{ + test \ifuseeditor + and + not test {\ifnameundef{editor}} + } + {\usebibmacro{bbx:dashcheck} + {\bibnamedash} + {\printnames{editor}% + \setunit{\addspace}% + \usebibmacro{bbx:savehash}}% + \printtext[parens]{\usebibmacro{#1}}% + \clearname{editor}% + \newunit}% period instead of space + {\global\undef\bbx@lasthash + \usebibmacro{labeltitle}% + \newunit}% period instead of space + \usebibmacro{date+extradate}} + +\renewbibmacro*{translator}{% + \usebibmacro{bbx:translator}{translatorstrg}} +\renewbibmacro*{translator+others}{% + \usebibmacro{bbx:translator}{translator+othersstrg}} +\renewbibmacro*{bbx:translator}[1]{% + \ifboolexpr{ + test \ifusetranslator + and + not test {\ifnameundef{translator}} + } + {\usebibmacro{bbx:dashcheck} + {\bibnamedash} + {\printnames{translator}% + \setunit{\addcomma\space}% + \usebibmacro{bbx:savehash}}% + \usebibmacro{translator+othersstrg}% + \clearname{translator}% + \newunit}% period instead of space + {\global\undef\bbx@lasthash + \usebibmacro{labeltitle}% + \newunit}% period instead of space + \usebibmacro{date+extradate}} + +\renewbibmacro*{journal}{% + \iffieldundef{journaltitle} + {} + {\printtext{% + \printfield{journaltitle}% + \setunit{\subtitlepunct}% + \printfield{journalsubtitle}}}} + +\newbibmacro*{journal+issuetitle+editor}{% + \usebibmacro{journal}% + \setunit*{\addspace}% + \iffieldundef{series} + {} + {\newunit + \printfield{series}% + \setunit{\addspace}}% + \usebibmacro{volume+number+eid}% + \iftoggle{issueandeditor} + {\setunit{\addspace}% + \usebibmacro{issue+date}% + \setunit{\addcolon\space}% + \usebibmacro{issue} + % The following three lines were originally not included inside of + % the journal+issuetitle bibmacro. They have been moved inside of + % this macro in order to allow them to be controlled by the toggle + % `issuetitle` that is defined at the top of this style file. + \newunit + \usebibmacro{byeditor+others}% + \newunit} + {}% + \newunit} + +% The next three bib macros are for printing the maintitle and +% booktitle fields of an @inproceedings entry with an ISSN as an +% article in accordance with the unified style sheet guidelines. + +% 1. maintitle + +\newbibmacro*{unified:proc-as-article:maintitle}{% + \ifboolexpr{ + test {\iffieldundef{maintitle}} + and + test {\iffieldundef{mainsubtitle}} + } + {} + {\printtext{% + \printfield[maintitle]{maintitle}% + \setunit{\subtitlepunct}% + \printfield[maintitle]{mainsubtitle}}% + \newunit}% + \printfield{maintitleaddon}} + +% 2. booktitle + +\newbibmacro*{unified:proc-as-article:booktitle}{% + \ifboolexpr{ + test {\iffieldundef{booktitle}} + and + test {\iffieldundef{booksubtitle}} + } + {} + {\printtext{% + \printfield[booktitle]{booktitle}% + \setunit{\subtitlepunct}% + \printfield[booktitle]{booksubtitle}}% + \newunit}% + \printfield{booktitleaddon}} + +% 3. maintitle+booktitle + +\newbibmacro*{unified:proc-as-article:maintitle+booktitle}{% + \iffieldundef{maintitle} + {} + {\usebibmacro{unified:proc-as-article:maintitle}% + \newunit\newblock} + \usebibmacro{unified:proc-as-article:booktitle}% + \setunit{\addspace}} + +\renewbibmacro*{volume+number+eid}{% + \printfield{volume}% +% \setunit*{\adddot}% + \printfield[parens]{number}% parentheses instead of dot before issue number + \setunit{\addcomma\space}% + \printfield{eid}} + +% This is for printing the volume field of a proceedings with an ISSN +% as an article in accordance with the unified style sheet guidelines. +% It depends on the declared field format below. + +\newbibmacro*{unified:proc-as-article:volume+number+eid}{% + \printfield[volume:unified:proc-as-article]{volume}% + \printfield[parens]{number}% + \setunit{\addcomma\space}% + \printfield{eid}} + +% Because of the weird format "3 May, 2007" specified in the Unified +% Stylesheet for URL access dates, we need a special way to format the +% urldate + +\newcommand{\mkbibdateunified}[3]{% Year-Month-Day as input --> xx Month, Year + \iffieldundef{#3} + {} + {\stripzeros{\thefield{#3}}% + \nobreakspace}% + \iffieldundef{#2} + {\iffieldundef{#1}% + {}% + {\stripzeros{\thefield{#1}}}}% + {\mkbibmonth{\thefield{#2}}% + \iffieldundef{#1}% + {}% + {\iffieldundef{#3}% + {}% + {,}% + \space\stripzeros{\thefield{#1}}}% + }% + }% + +\renewbibmacro*{url+urldate}{% + \printfield{url}% + \iffieldundef{urlyear}% + {}% + {\setunit*{\addspace}% + \printtext[parens]{\mkbibdateunified{urlyear}{urlmonth}{urlday}}}% + } + +\renewbibmacro*{series+number}{% + \iffieldundef{series} + {} + {\printtext[parens]{% + \printfield{series}% + \setunit*{\addspace}% + \printfield{number}}% + }} + +\renewbibmacro*{byeditor+others}{% + \ifnameundef{editor} + {} + {\printnames[byeditor]{editor}% + \setunit{\addspace}% + \printtext[parens]{\usebibmacro{editor+othersstrg}}% + \clearname{editor}% + \newunit}% + \usebibmacro{byeditorx}% + \usebibmacro{bytranslator+others}} + +\renewbibmacro*{chapter+pages}{% + \iffieldundef{chapter}% + {}% + {\printfield{chapter}% + \setunit{\addcomma\space}}% + \printfield{pages}% + \newunit} + +\renewbibmacro*{note+pages}{% + \iffieldundef{note}% + {}% + {\printfield{note}% + \setunit{\addcomma\space}}% + \printfield{pages}% + \newunit} + +\newbibmacro*{institution+location+type+date}{% + \printlist{location}% + \iflistundef{institution} + {} + {\setunit*{\addcolon\space}}% + \printlist{institution}% + \setunit{\addspace}% + \printfield{type}% + \setunit*{\addcomma\space}% + \usebibmacro{date}% + \newunit} + +% The following is a hack to satisfy the Unified Stylesheet's decision +% to give the edition right after the OED as used as a sortlabel. + +\renewbibmacro*{labeltitle}{% + \iffieldundef{label} + {\iffieldundef{shorttitle} + {\printfield{title}% + \setunit{\addcomma\space}% Here it comes, preparing for the edition + \printfield{edition}% Here's the edition + \clearfield{title}% + \clearfield{edition}}% Clearing the edition field + {\printfield[title]{shorttitle}}} + {\printfield{label}}} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Punctuation & formatting +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% This gets rid of the Oxford comma in name lists and uses the +% ampersand rather than "and": + +\renewcommand*{\finalnamedelim}{\addspace\&\addspace} +\renewcommand*{\finallistdelim}{\addspace\&\addspace} + +% no colon after "In" in incollection entries (overriding +% biblatex.def): + +\renewcommand{\intitlepunct}{\addspace} + +\renewcommand{\subtitlepunct}{\addcolon\space} + +% No comma before pages, just the usual new unit period + +\renewcommand*{\bibpagespunct}{\newunitpunct} + +\DefineBibliographyStrings{english}{% + edition = {edn\adddot}, + phdthesis = {dissertation}, +} + +% basically everything is in sentence case, other than journals and +% book series (recurring titles) + +\DeclareFieldFormat[% + article,book,collection,incollection,inproceedings,thesis,unpublished]% + {titlecase}{\MakeSentenceCase*{#1}}% + +% No quotes around titles + +\DeclareFieldFormat[% + article,inbook,incollection,inproceedings,patent,thesis,unpublished]% + {title}{#1} + +% Just like book titles, thesis titles are in italics + +\DeclareFieldFormat[thesis]{title}{\mkbibemph{#1}} + +\DeclareFieldFormat{pages}{#1} % no pp. prefix, took \mkpageprefix out [kvf] +\DeclareFieldFormat{doi}{% + \ifhyperref + {\href{https://doi.org/#1}{\nolinkurl{https://doi.org/#1}}} + {\nolinkurl{https://doi.org/#1}}} +\DeclareFieldFormat{url}{\url{#1}} + +% This is for printing the volume field of a proceedings with an ISSN +% as an article in accordance with the unified style sheet guidelines + +\DeclareFieldFormat{volume:unified:proc-as-article}{#1} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% The bibliography drivers, specifying the formats of each type of +% entry in the bibliography +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%% First, the entry types used in the Unified Test Bibliography. +%%% Could rely on standard.bbx for all others as a fallback. + +% For the article type, the only departure from standard.bbx is that +% we don't use a literal "In: " before the journal title; other +% formatting departures are done in the format specs and bibmacros + +\DeclareBibliographyDriver{article}{% + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{author/translator+others}% + \setunit{\labelnamepunct}\newblock + \usebibmacro{title}% + \newunit + \printlist{language}% + \newunit\newblock + \usebibmacro{byauthor}% + \newunit\newblock + \usebibmacro{bytranslator+others}% + \newunit\newblock + \printfield{version}% + \newunit\newblock + \usebibmacro{journal+issuetitle+editor}% + \newblock% \newblock ensures period before pages + \usebibmacro{note+pages}% + \newunit\newblock + \iftoggle{bbx:isbn} + {\printfield{issn}} + {}% + \newunit\newblock + \usebibmacro{doi+eprint+url}% + \newunit\newblock + \usebibmacro{addendum+pubstate}% + \setunit{\bibpagerefpunct}\newblock + \usebibmacro{pageref}% + \newunit\newblock + \iftoggle{bbx:related} + {\usebibmacro{related:init}% + \usebibmacro{related}} + {}% + \usebibmacro{finentry}} + +\DeclareBibliographyDriver{book}{% + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{author/editor+others/translator+others}% + \setunit{\labelnamepunct}\newblock + \usebibmacro{maintitle+title}% + \newunit + \printlist{language}% + \newunit\newblock + \usebibmacro{byauthor}% + \newunit\newblock + \usebibmacro{byeditor+others}% + \newunit\newblock + \printfield{edition}% + \newunit + \iffieldundef{maintitle} + {\printfield{volume}% + \printfield{part}} + {}% + \newunit + \printfield{volumes}% + \setunit{\addspace}% + \usebibmacro{series+number}% + \newunit\newblock + \printfield{note}% + \newunit\newblock + \usebibmacro{publisher+location+date}% + \newunit\newblock + \usebibmacro{chapter+pages}% + \newunit + \printfield{pagetotal}% + \newunit\newblock + \iftoggle{bbx:isbn} + {\printfield{isbn}} + {}% + \newunit\newblock + \usebibmacro{doi+eprint+url}% + \newunit\newblock + \usebibmacro{addendum+pubstate}% + \setunit{\bibpagerefpunct}\newblock + \usebibmacro{pageref}% + \newunit\newblock + \iftoggle{bbx:related} + {\usebibmacro{related:init}% + \usebibmacro{related}} + {}% + \usebibmacro{finentry}} + +% Aliased to ensure no period between the title and the series. + +\DeclareBibliographyAlias{collection}{book} + +% @inbook entries look terrible as-is, and have fields very similar to +% @incollection anyway + +\DeclareBibliographyAlias{inbook}{incollection} + +\DeclareBibliographyAlias{incollection}{inproceedings} + +% Given the guidelines in the unified style sheet, we should print +% conference proceedings and working papers as @article's just in case +% the publication has an ISSN. So, rather than have users handle this +% in the database by changing the entry type, we can implement this by +% checking if the inproceedings entry has an ISSN. If the field is +% undefined, the driver will do what driver did for @inproceedings +% entries as of 512f11657199a6044f7663da454f3eac338bdbd5 except that +% \printlist{organization} and \newunit have been removed. On the +% other hand, if the ISSN field is not undefined, then we will do +% largely the exact same thing that we do in the @article driver, +% except that we use the two macros +% \usebibmacro{unified:proc-as-article:maintitle+booktitle} and +% \usebibmacro{unified:proc-as-article:volume+number+eid} instead of +% \usebibmacro{journal+issuetitle} and except that +% \usebibmacro{byeditor+others} has been removed so as to ensure that +% the editors are not listed even if they are present in the database. + +\DeclareBibliographyDriver{inproceedings}{% + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \iffieldundef{issn} + {\usebibmacro{author/translator+others}% + \setunit{\labelnamepunct}\newblock + \usebibmacro{title}% + \newunit + \printlist{language}% + \newunit\newblock + \usebibmacro{byauthor}% + \newunit\newblock + \usebibmacro{in:}% + \ifnameundef{editor} + {\setunit{\addspace}} + {\usebibmacro{byeditor+others}\setunit{\addcomma\space}} + \usebibmacro{maintitle+booktitle}% + \setunit{\addcomma\space} + \printfield{edition}% + \setunit{\addcomma\space} + \iffieldundef{maintitle} + {\printfield{volume}% + \printfield{part}} + {}% + \setunit{\addcomma\space} + \printfield{volumes}% + \setunit{\addspace}% + \usebibmacro{series+number}% + \setunit{\addcomma\space} + \usebibmacro{chapter+pages}% + \newunit\newblock + \printfield{note}% + \newunit\newblock + \usebibmacro{publisher+location+date}% + \newunit\newblock + \iftoggle{bbx:isbn} + {\printfield{isbn}} + {}% + \newunit\newblock + \usebibmacro{doi+eprint+url}% + \newunit\newblock + \usebibmacro{addendum+pubstate}% + \setunit{\bibpagerefpunct}\newblock + \usebibmacro{pageref}% + \newunit\newblock + \iftoggle{bbx:related} + {\usebibmacro{related:init}% + \usebibmacro{related}} + {}} + {\usebibmacro{author/translator+others}% + \setunit{\labelnamepunct}\newblock + \usebibmacro{title}% + \newunit + \printlist{language}% + \newunit\newblock + \usebibmacro{byauthor}% + \newunit\newblock + \usebibmacro{bytranslator+others}% + \newunit\newblock + \printfield{version}% + \newunit\newblock + \usebibmacro{unified:proc-as-article:maintitle+booktitle}% + \usebibmacro{unified:proc-as-article:volume+number+eid} + \newunit\newblock% + \usebibmacro{note+pages}% + \newunit\newblock + \iftoggle{bbx:isbn} + {\printfield{issn}} + {}% + \newunit\newblock + \usebibmacro{doi+eprint+url}% + \newunit\newblock + \usebibmacro{addendum+pubstate}% + \setunit{\bibpagerefpunct}\newblock + \usebibmacro{pageref}% + \newunit\newblock + \iftoggle{bbx:related} + {\usebibmacro{related:init}% + \usebibmacro{related}} + {}} + \usebibmacro{finentry}} + +\DeclareBibliographyDriver{thesis}{% + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{author}% + \setunit{\labelnamepunct}\newblock + \usebibmacro{title}% + \newunit + \printlist{language}% + \newunit\newblock + \usebibmacro{byauthor}% + \newunit\newblock + \printfield{note}% + \newunit\newblock + \usebibmacro{institution+location+type+date}% + \newunit\newblock + \usebibmacro{chapter+pages}% + \newunit + \printfield{pagetotal}% + \newunit\newblock + \iftoggle{bbx:isbn} + {\printfield{isbn}} + {}% + \newunit\newblock + \usebibmacro{doi+eprint+url}% + \newunit\newblock + \usebibmacro{addendum+pubstate}% + \setunit{\bibpagerefpunct}\newblock + \usebibmacro{pageref}% + \newunit\newblock + \iftoggle{bbx:related} + {\usebibmacro{related:init}% + \usebibmacro{related}} + {}% + \usebibmacro{finentry}} + +\DeclareBibliographyDriver{unpublished}{% + \usebibmacro{bibindex}% + \usebibmacro{begentry}% + \usebibmacro{author}% + \setunit{\labelnamepunct}\newblock + \usebibmacro{title}% + \newunit + \printlist{language}% + \newunit\newblock + \usebibmacro{byauthor}% + \newunit\newblock + \printfield{howpublished}% + \newunit\newblock + \printfield{note}% + \newunit\newblock + \usebibmacro{location+date}% + \newunit\newblock + \iftoggle{bbx:url} + {\usebibmacro{url+urldate}} + {}% + \newunit\newblock + \usebibmacro{addendum+pubstate}% + \setunit{\bibpagerefpunct}\newblock + \usebibmacro{pageref}% + \newunit\newblock + \iftoggle{bbx:related} + {\usebibmacro{related:init}% + \usebibmacro{related}} + {}% + \usebibmacro{finentry}} diff --git a/Master/texmf-dist/tex/latex/biblatex-unified/unified.cbx b/Master/texmf-dist/tex/latex/biblatex-unified/unified.cbx new file mode 100644 index 00000000000..95fe0d99e07 --- /dev/null +++ b/Master/texmf-dist/tex/latex/biblatex-unified/unified.cbx @@ -0,0 +1,280 @@ +%% --------------------------------------------------------------- +%% biblatex-unified --- A biblatex implementation of the Unified Style +%% Sheet for Linguistics Journals. This is the house style of the +%% journal "Semantics & Pragmatics" (A journal of the Linguistic +%% Society of America). +%% Maintained by Kai von Fintel (fintel@mit.edu) +%% Released under the LaTeX Project Public License v1.3c or later +%% See http://www.latex-project.org/lppl.txt +%% --------------------------------------------------------------- +%% + +\ProvidesFile{unified.cbx}[2020/05/25 v1.00 biblatex citation style] + +\RequireCitationStyle{authoryear-comp} + +\ExecuteBibliographyOptions{% + labeldateparts,% + uniquename=minfull,% + uniquelist=minyear,% + autocite=inline,% + sortcites=false} + +% disabled sortcites option, since it was sorting by name, instead of +% year, and we often want to keep citations in the order chosen by the +% author + +% Setting the delimiters the way we want them: + +\renewcommand*{\nameyeardelim}{\addspace} +\renewcommand*{\postnotedelim}{\addcolon\space} +\renewcommand*{\multicitedelim}{\addcomma\space} + +% Apart from setting some options, the main change from +% authoryear-comp is that we extend what parts of a citation label are +% hyperlinked (to match what natbib did in the old days). The solution +% used to be a very ugly homegrown rewrite of the entirety of +% `authoryear-comp.cbx`, which meant that we were left behind when +% that style was updated. The new solution, still a hack, is to apply +% patches to the base style. These patches were first proposed in +% https://tex.stackexchange.com/a/27615/70432. + +% It would be nice if biblatex simply offered more expansive +% hyperlinks as an option and then we wouldn't have to patch things. +% But this seems not to be in the cards: +% https://github.com/plk/biblatex/issues/428 + +\usepackage{xpatch} + +% Patches for biblatex > v3.8 2017-11-04, when labeldate+extradate +% were introduced + +% Combine label and labelyear links +\xpatchbibmacro{cite} + {\usebibmacro{cite:label}% + \setunit{\printdelim{nonameyeardelim}}% + \usebibmacro{cite:labeldate+extradate}} + {\printtext[bibhyperref]{% + \DeclareFieldAlias{bibhyperref}{default}% + \usebibmacro{cite:label}% + \setunit{\printdelim{nonameyeardelim}}% + \usebibmacro{cite:labeldate+extradate}}}{}{} + +% Include labelname in labelyear link +\xpatchbibmacro{cite} + {\printnames{labelname}% + \setunit{\printdelim{nameyeardelim}}% + \usebibmacro{cite:labeldate+extradate}} + {\printtext[bibhyperref]{% + \DeclareFieldAlias{bibhyperref}{default}% + \printnames{labelname}% + \setunit{\printdelim{nameyeardelim}}% + \usebibmacro{cite:labeldate+extradate}}}{}{} + +% Patches for biblatex 3.7 + +% Combine label and labelyear links +\xpatchbibmacro{cite} + {\usebibmacro{cite:label}% + \setunit{\printdelim{nonameyeardelim}}% + \usebibmacro{cite:labelyear+extrayear}} + {\printtext[bibhyperref]{% + \DeclareFieldAlias{bibhyperref}{default}% + \usebibmacro{cite:label}% + \setunit{\addspace}% + \usebibmacro{cite:labelyear+extrayear}}}{}{} + +% Include labelname in labelyear link +\xpatchbibmacro{cite} + {\printnames{labelname}% + \setunit{\printdelim{nameyeardelim}}% + \usebibmacro{cite:labelyear+extrayear}} + {\printtext[bibhyperref]{% + \DeclareFieldAlias{bibhyperref}{default}% + \printnames{labelname}% + \setunit{\nameyeardelim}% + \usebibmacro{cite:labelyear+extrayear}}}{}{} + +% Patches for biblatex before 3.7 + +% Combine label and labelyear links +\xpatchbibmacro{cite} + {\usebibmacro{cite:label}% + \setunit{\addspace}% + \usebibmacro{cite:labelyear+extrayear}} + {\printtext[bibhyperref]{% + \DeclareFieldAlias{bibhyperref}{default}% + \usebibmacro{cite:label}% + \setunit{\addspace}% + \usebibmacro{cite:labelyear+extrayear}}}{}{} + +% Include labelname in labelyear link +\xpatchbibmacro{cite} + {\printnames{labelname}% + \setunit{\nameyeardelim}% + \usebibmacro{cite:labelyear+extrayear}} + {\printtext[bibhyperref]{% + \DeclareFieldAlias{bibhyperref}{default}% + \printnames{labelname}% + \setunit{\nameyeardelim}% + \usebibmacro{cite:labelyear+extrayear}}}{}{} + +% Access hyperref's citation link start/end commands +\protected\def\blx@imc@biblinkstart{% + \@ifnextchar[%] + {\blx@biblinkstart} + {\blx@biblinkstart[\abx@field@entrykey]}} +\def\blx@biblinkstart[#1]{% + \blx@sfsave\hyper@natlinkstart{\the\c@refsection @#1}\blx@sfrest} +\protected\def\blx@imc@biblinkend{% + \blx@sfsave\hyper@natlinkend\blx@sfrest} +\blx@regimcs{\biblinkstart \biblinkend} + +\newbool{cbx:link} + +% Include parentheses around labelyear in \textcite only in +% single citations without pre- and postnotes +\def\iflinkparens{% + \ifboolexpr{ test {\ifnumequal{\value{multicitetotal}}{0}} and + test {\ifnumequal{\value{citetotal}}{1}} and + test {\iffieldundef{prenote}} and + test {\iffieldundef{postnote}} }} + +\xpatchbibmacro{textcite} + {\printnames{labelname}} + {\iflinkparens + {\DeclareFieldAlias{bibhyperref}{default}% + \global\booltrue{cbx:link}\biblinkstart% + \printnames{labelname}} + {\printtext[bibhyperref]{\printnames{labelname}}}}{}{} + +\xpatchbibmacro{textcite} + {\usebibmacro{cite:label}} + {\iflinkparens + {\DeclareFieldAlias{bibhyperref}{default}% + \global\booltrue{cbx:link}\biblinkstart% + \usebibmacro{cite:label}} + {\usebibmacro{cite:label}}}{}{} + +\xpretobibmacro{textcite:postnote} + {\ifbool{cbx:link}% patch 2.7+ + {\ifbool{cbx:parens} + {\bibcloseparen\global\boolfalse{cbx:parens}} + {}% + \biblinkend\global\boolfalse{cbx:link}} + {}} + {} + {\xpatchbibmacro{textcite}% patch earlier releases + {\setunit{% + \ifbool{cbx:parens} + {\bibcloseparen\global\boolfalse{cbx:parens}} + {}% + \multicitedelim}} + {\ifbool{cbx:link} + {\ifbool{cbx:parens} + {\bibcloseparen\global\boolfalse{cbx:parens}} + {}% + \biblinkend\global\boolfalse{cbx:link}} + {}% + \setunit{% + \ifbool{cbx:parens} + {\bibcloseparen\global\boolfalse{cbx:parens}} + {}% + \multicitedelim}} + {}{}} + +% Making the old code in \posscite work with new biblatex +\@ifpackagelater{biblatex}{2016/12/06}% +{\letbibmacro{cite:labelyear+extrayear}{cite:labeldate+extradate}} +{} + +% What follows is ugly and meh. These cite commands have been part of +% S&P's author convenience macros since the beginning. We shouldn't +% advertise them anymore, but here they are. We should add warnings +% that people shouldn't use them, because they are deprecated and will +% go away at some point. + +\newcommand{\pgcitep}[2]{(\cite{#1}:~#2)} +\newcommand{\pgcitealt}[2]{\cite{#1}:~#2} +\newcommand{\pgcitet}[2]{\citeauthor{#1} (\citeyear{#1}:~#2)} +\newcommand{\pgposscitet}[2]{\citeauthor{#1}'s (\citeyear{#1}:~#2)} +\newcommand{\seccitealt}[2]{\cite{#1}:~$\S$#2} +\newcommand{\seccitep}[2]{(\cite{#1}:~$\S$#2)} +\newcommand{\seccitet}[2]{\citeauthor{#1} (\citeyear{#1}:~$\S$#2)} +\newcommand{\secposscitet}[2]{\citeauthor{#1}'s (\citeyear{#1}:~$\S$#2)} + +\newbibmacro*{posscite}{% Based on textcite + \iffieldequals{namehash}{\cbx@lasthash} + {\iffieldundef{shorthand} + {\usebibmacro{labelyearrepeat}} + {\setunit{\compcitedelim}% + \usebibmacro{cite:shorthand}% + \global\undef\cbx@lastyear}} + {\ifnameundef{labelname} + {\printtext[bibhyperref]{% Include labelname in hyperlink + \DeclareFieldAlias{bibhyperref}{default}% Prevent nested hyperlinks + \iffieldundef{shorthand} + {\usebibmacro{cite:label}% + \setunit{% + \global\booltrue{cbx:parens}% + \addspace\bibopenparen}% + \ifnumequal{\value{citecount}}{1} + {\usebibmacro{prenote}} + {}% + \usebibmacro{cite:labelyear+extrayear}} + {\usebibmacro{cite:shorthand}}% + \ifthenelse{\iffieldundef{postnote}\AND + \(\value{multicitetotal}=0\AND\value{citetotal}=1\)} + {\bibcloseparen% Include closing parenthesis in hyperlink + \global\boolfalse{cbx:parens}} + {}}} + {\printtext[bibhyperref]{% Include labelname in hyperlink + \DeclareFieldAlias{bibhyperref}{default}% Prevent nested hyperlinks + \printnames{labelname}'s% + \setunit{% + \global\booltrue{cbx:parens}% + \addspace\bibopenparen}% + \ifnumequal{\value{citecount}}{1} + {\usebibmacro{prenote}} + {}% + \iffieldundef{shorthand} + {\iffieldundef{labelyear} + {\usebibmacro{cite:label}} + {\usebibmacro{cite:labelyear+extrayear}}% + \savefield{labelyear}{\cbx@lastyear}} + {\usebibmacro{cite:shorthand}% + \global\undef\cbx@lastyear}% + \ifthenelse{\iffieldundef{postnote}\AND + \(\value{multicitetotal}=0\AND\value{citetotal}=1\)} + {\bibcloseparen% Include closing parenthesis in hyperlink + \global\boolfalse{cbx:parens}} + {}}% + \savefield{namehash}{\cbx@lasthash}}}% + \setunit{% + \ifbool{cbx:parens} + {\bibcloseparen\global\boolfalse{cbx:parens}} + {}% + \multicitedelim}} +\DeclareCiteCommand{\posscitet} + {\usebibmacro{cite:init}} + {\usebibmacro{citeindex}% + \usebibmacro{posscite}} + {} + {\usebibmacro{textcite:postnote}} + +\DeclareCiteCommand{\posscitealt} + {\boolfalse{citetracker}% + \boolfalse{pagetracker}} + {\printtext[bibhyperref]{\printnames{labelname}'s \iffieldundef{year}{\printfield{labelyear}}{\printfield{year}}\printfield{extradate}}} + {} + {} + +\DeclareCiteCommand{\possciteauthor} + {\boolfalse{citetracker}% + \boolfalse{pagetracker}} + {\printtext[bibhyperref]{\printnames{labelname}'s}} + {} + {} + + +\endinput -- cgit v1.2.3