diff options
Diffstat (limited to 'macros/latex/contrib/biblatex-contrib/biblatex-mla/mla.cbx')
-rw-r--r-- | macros/latex/contrib/biblatex-contrib/biblatex-mla/mla.cbx | 188 |
1 files changed, 154 insertions, 34 deletions
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-mla/mla.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-mla/mla.cbx index 1085fb5623..1e2ef627a0 100644 --- a/macros/latex/contrib/biblatex-contrib/biblatex-mla/mla.cbx +++ b/macros/latex/contrib/biblatex-contrib/biblatex-mla/mla.cbx @@ -1,11 +1,11 @@ -% mla.cbx, v2.0 2021/06/07 * compatible with biblatex 3.16 +% mla.cbx, v2.1 2022/02/21 * compatible with biblatex 3.16 % Maintained at <https://github.com/jmclawson/biblatex-mla>. % % Feel free to improve, redistribute, and adapt to your own ends. Please share improvements back to the project on GitHub or to James Clawson: <clawson@gmail.com>. % % This material is subject to the LaTeX Project Public License. See http://www.ctan.org/tex-archive/help/Catalogue/licenses.lppl.html for the details of that license. -\ProvidesFile{mla.cbx}[2021/06/07 v2.0 biblatex citation style] +\ProvidesFile{mla.cbx}[2021/10/31 v2.1 biblatex citation style] \RequireCitationStyle{mla-footnotes} @@ -40,7 +40,7 @@ \xdef\split@prev{\the\insertpenalties}% }} -\ExecuteBibliographyOptions{citetracker=true,ibidtracker=constrict,opcittracker=constrict,singletitle,autocite=inline,uniquename=init,hyperref=true,useprefix=true,firstlonghand,annotation=false,loccittracker=strict,noremoteinfo=true,date=comp,urldate=long,mancitepar=false,datezeros=false,datecirca=true,eprint=true}% +\ExecuteBibliographyOptions{citetracker=true,ibidtracker=constrict,opcittracker=constrict,singletitle,autocite=inline,uniquename=init,hyperref=true,useprefix=true,firstlonghand,annotation=false,loccittracker=strict,noremoteinfo=true,date=comp,urldate=long,mancitepar=false,datezeros=false,datecirca=true,dateuncertain=true,eprint=true,abbreviate=false}% \newbool{cbx@named}% \newbool{cbx@mlafootnotes}% @@ -65,7 +65,61 @@ \blx@ibidreset@force \blx@idemreset@force \blx@opcitreset@force - \blx@loccitreset@force}} + \blx@loccitreset@force} + \global\undef\bbx@lasthash}% 2.1 last part added + +% 2.1 adding citeauthor tracking for full / partial names +\newrobustcmd*{\cbx@nametracker@global}[1]{% + \xifinlistcs{#1}{cbx@bseen@names@\the\c@refsection} + {} + {\listcsxadd{cbx@bseen@names@\the\c@refsection}{#1}}} + +\newrobustcmd*{\cbx@nametracker@context}[1]{% + \iftoggle{blx@footnote} + {\xifinlistcs{#1}{cbx@fseen@names@\the\c@refsection} + {} + {\listcsxadd{cbx@fseen@names@\the\c@refsection}{#1}}} + {\xifinlistcs{#1}{cbx@bseen@names@\the\c@refsection} + {} + {\listcsxadd{cbx@bseen@names@\the\c@refsection}{#1}}}} + +\newrobustcmd*{\cbx@ifnameseen@global}[1]{% + \xifinlistcs{#1}{cbx@bseen@names@\the\c@refsection}} + +\newrobustcmd*{\cbx@ifnameseen@context}[1]{% + \iftoggle{blx@footnote}% + {\xifinlistcs{#1}{cbx@fseen@names@\the\c@refsection}}% + {\xifinlistcs{#1}{cbx@bseen@names@\the\c@refsection}}} + +\DeclareBibliographyOption[string]{nametracker}[true]{% + \ifcsdef{blx@opt@nametracker@#1} + {\csuse{blx@opt@nametracker@#1}} + {\blx@err@invopt{nametracker=#1}{}}} + +\def\blx@opt@nametracker@global{% + \let\cbx@ifnameseen\cbx@ifnameseen@global + \let\cbx@nametracker\cbx@nametracker@global} + +\let\blx@opt@nametracker@true\blx@opt@nametracker@global + +\def\blx@opt@nametracker@false{% + \protected\long\def\cbx@ifnameseen##1##2##3{##3}% + \let\cbx@nametracker\relax} + +\def\blx@opt@nametracker@context{% + \let\cbx@ifnameseen\cbx@ifnameseen@context + \let\cbx@nametracker\cbx@nametracker@context} + +\appto\blx@secinit{% + \ifcsundef{cbx@bseen@names@\the\c@refsection} + {\global\cslet{cbx@bseen@names@\the\c@refsection}\@empty} + {}% + \ifcsundef{cbx@fseen@names@\the\c@refsection} + {\global\cslet{cbx@fseen@names@\the\c@refsection}\@empty} + {}} + +\ExecuteBibliographyOptions{nametracker=context} +% 2.1 adding citeauthor tracking for full / partial names \InitializeCitationStyle{% \usebibmacro{cite:reset}% @@ -75,7 +129,9 @@ \fi \long\def\mlasymbolfootnote#1{\begingroup\def% \thefootnote{\fnsymbol{footnote}}\footnote[0]{#1}\endgroup}% - \newcounter{mladraftnote}} + \newcounter{mladraftnote}% + \global\cslet{cbx@bseen@names@\the\c@refsection}\@empty% + \global\cslet{cbx@fseen@names@\the\c@refsection}\@empty} \OnManualCitation{% \usebibmacro{cite:reset}% @@ -146,10 +202,11 @@ \newbibmacro*{cite:name}{% \ifsingletitle% - {\printtext[bibhyperref]{% - \printnames{labelname}}% - \savefield{namehash}{\cbx@lasthash}% - \global\booltrue{cbx@named}}% + {\ifbool{cbx@totalnames}% + {\printtext[bibhyperref]{\printnames[][-\value{listtotal}]{labelname}}}% + {\printtext[bibhyperref]{\printnames{labelname}}}% + \savefield{namehash}{\cbx@lasthash}% + \global\booltrue{cbx@named}}% {\printnames{labelname}% \savefield{namehash}{\cbx@lasthash}% \global\booltrue{cbx@named}}}% @@ -166,7 +223,9 @@ {\printtext[bibhyperref]{\printfield[citetitle:\strfield{entrysubtype}]{labeltitle}}\clearfield{title}}% {\iffieldequalstr{entrysubtype}{untitled}% {\printtext[bibhyperref]{\printfield[noformat]{labeltitle}}}% - {\printtext[bibhyperref]{\printfield[citetitle:\strfield{entrytype}]{labeltitle}}}}}} + {\iffieldequalstr{entrytype}{online}% 2.1 format online titles by entrysubtype + {\printtext[bibhyperref]{\printfield[citetitle:online:\strfield{entrysubtype}]{labeltitle}}} + {\printtext[bibhyperref]{\printfield[citetitle:\strfield{entrytype}]{labeltitle}}}}}}} \newbibmacro*{cite:mla:title}{% \ifnameundef{labelname}% @@ -250,21 +309,27 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \DeclareFieldFormat{citetitle:article}{\mkbibquote{#1}} -\DeclareFieldFormat{citetitle:inreference}{\mkbibquote{#1}} \DeclareFieldFormat{citetitle:book}{\mkbibemph{#1}} \DeclareFieldFormat{citetitle:bookinbook}{\mkbibemph{#1}}% NEW in 2.0 \DeclareFieldFormat{citetitle:booklet}{\mkbibemph{#1}}% \DeclareFieldFormat{citetitle:collection}{\mkbibemph{#1}}% -\DeclareFieldFormat{citetitle:reference}{\mkbibemph{#1}}% -\DeclareFieldFormat{citetitle:incollection}{\mkbibquote{#1}} +\DeclareFieldFormat{citetitle:dataset}{\mkbibquote{#1}}% NEW in 2.1 +\DeclareFieldFormat{citetitle:image}{#1}% 2.1 finally styled right \DeclareFieldFormat{citetitle:inbook}{\mkbibquote{#1}}% NEW in 2.0 +\DeclareFieldFormat{citetitle:incollection}{\mkbibquote{#1}} +\DeclareFieldFormat{citetitle:inproceedings}{\mkbibquote{#1}} +\DeclareFieldFormat{citetitle:inreference}{\mkbibquote{#1}} +\DeclareFieldFormat{citetitle:misc}{#1}% 2.1 finally styled right \DeclareFieldFormat{citetitle:mvbook}{\mkbibemph{#1}}% NEW in 2.0 \DeclareFieldFormat{citetitle:online}{\mkbibquote{#1}}% -\DeclareFieldFormat{citetitle:inproceedings}{\mkbibquote{#1}} -\DeclareFieldFormat{citetitle:unpublished}{\mkbibquote{#1}} +\DeclareFieldFormat{citetitle:online:website}{\mkbibemph{#1}}% +\DeclareFieldFormat{citetitle:performance}{\mkbibemph{#1}}% NEW in 2.1 +\DeclareFieldFormat{citetitle:reference}{\mkbibemph{#1}}% +\DeclareFieldFormat{citetitle:review}{\mkbibquote{#1}}% +\DeclareFieldFormat{citetitle:software}{\mkbibemph{#1}}% NEW in 2.1 \DeclareFieldFormat{citetitle:thesis}{\mkbibquote{#1}} +\DeclareFieldFormat{citetitle:unpublished}{\mkbibquote{#1}}% fixme still needs work for unstyled types \DeclareFieldFormat{citetitle:video}{\mkbibemph{#1}} -\DeclareFieldFormat{citetitle:review}{\mkbibquote{#1}}% \DeclareFieldFormat{mla:lowercase}{\MakeLowercase{#1}}% \DeclareFieldFormat[mlasource]{mla:unstyled}{#1\unspace}% \DeclareFieldFormat[mlasource]{mla:complete}{\mkbibemph{#1}\unspace}% @@ -405,24 +470,87 @@ {\ifciteindex {\indexnames{labelname}} {}% - \printnames[given-family]{labelname}%FUTURE add check for citeseen (to print first name on first mention) - } + \printnames[citeauthor]{labelname}}% {\multicitedelim} {\usebibmacro{postnote}\usebibmacro{cite:save}} -\DeclareCiteCommand*{\citeauthor}% +\DeclareCiteCommand*{\citeauthor}% print just the surname {\usebibmacro{prenote}} {\ifciteindex {\indexnames{labelname}} {}% - \printnames[family]{labelname}% - % \ifentryseen{labelname}%FUTURE skeleton to check for first mention - doesn't work just now - % {\printnames{labelname}}% TRUE - % {\printnames[given-family]{labelname}}% FALSE - } + \printnames[citeauthorstar]{labelname}}% {\multicitedelim} {\usebibmacro{postnote}\usebibmacro{cite:save}} +% 2.1 tracking seen names for citeauthor +\DeclareNameFormat{citeauthor}{% + \cbx@ifnameseen{\thefield{hash}} + {\ifcase\value{uniquename}% + \usebibmacro{name:family} + {\namepartfamily} + {\namepartgiven} + {\namepartprefix} + {\namepartsuffix}% + \or + \ifuseprefix + {\usebibmacro{name:given-family} + {\namepartfamily} + {\namepartgiveni} + {\namepartprefix} + {\namepartsuffixi}} + {\usebibmacro{name:given-family} + {\namepartfamily} + {\namepartgiveni} + {\namepartprefixi} + {\namepartsuffixi}}% + \or + \usebibmacro{name:given-family} + {\namepartfamily} + {\namepartgiven} + {\namepartprefix} + {\namepartsuffix}% + \fi} + {\usebibmacro{name:given-family} + {\namepartfamily} + {\namepartgiven} + {\namepartprefix} + {\namepartsuffix}% + \cbx@nametracker{\thefield{hash}}}% + \usebibmacro{name:andothers}} + +\DeclareNameFormat{citeauthorstar}{% + \ifcase\value{uniquename}% + \usebibmacro{name:family} + {\namepartfamily} + {\namepartgiven} + {\namepartprefix} + {\namepartsuffix}% + \or + \ifuseprefix + {\usebibmacro{name:given-family} + {\namepartfamily} + {\namepartgiveni} + {\namepartprefix} + {\namepartsuffixi}} + {\usebibmacro{name:given-family} + {\namepartfamily} + {\namepartgiveni} + {\namepartprefixi} + {\namepartsuffixi}}% + \or + \usebibmacro{name:given-family} + {\namepartfamily} + {\namepartgiven} + {\namepartprefix} + {\namepartsuffix}% + \fi + \cbx@ifnameseen{\thefield{hash}} + {} + {\cbx@nametracker{\thefield{hash}}}% + \usebibmacro{name:andothers}} +% 2.1 tracking seen names for citeauthor + \DeclareCiteCommand{\citetitle} {\boolfalse{citetracker}% \boolfalse{pagetracker}% @@ -430,11 +558,7 @@ {\ifciteindex {\indexfield{indextitle}} {}% - \ifthenelse{\iffieldequalstr{entrytype}{unpublished}% - \AND\NOT% - \iffieldundef{entrysubtype}}% - {\printfield[citetitle:\strfield{entrysubtype}]{labeltitle}}% - {\printfield[citetitle]{labeltitle}}} + \usebibmacro{just:title:it}}% 2.1 simplified {\multicitedelim} {\usebibmacro{postnote}} @@ -445,11 +569,7 @@ {\ifciteindex {\indexfield{indextitle}} {}% - \ifthenelse{\iffieldequalstr{entrytype}{unpublished}% - \AND\NOT% - \iffieldundef{entrysubtype}}% - {\printfield[citetitle:\strfield{entrysubtype}]{title}}% - {\printfield[citetitle]{title}}}% + \usebibmacro{just:title:it}}% 2.1 simplified {\multicitedelim} {\usebibmacro{postnote}} |