diff options
author | Karl Berry <karl@freefriends.org> | 2011-11-14 23:55:19 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2011-11-14 23:55:19 +0000 |
commit | a29c7813b0314e553b69c72ed2b6a88b57cc1e20 (patch) | |
tree | 16337cec204b13e6cbda22ac470ddb16cc880a03 /Master/texmf-dist/tex/latex/biblatex/biblatex.sty | |
parent | 389fcf38bf3f3a413329dc89f7381a1b53d25561 (diff) |
biblatex 1.7 (14nov11)
git-svn-id: svn://tug.org/texlive/trunk@24596 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/biblatex/biblatex.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/biblatex/biblatex.sty | 594 |
1 files changed, 412 insertions, 182 deletions
diff --git a/Master/texmf-dist/tex/latex/biblatex/biblatex.sty b/Master/texmf-dist/tex/latex/biblatex/biblatex.sty index ea050248981..6eeb7ae78e9 100644 --- a/Master/texmf-dist/tex/latex/biblatex/biblatex.sty +++ b/Master/texmf-dist/tex/latex/biblatex/biblatex.sty @@ -1,4 +1,4 @@ -% $Id: biblatex.sty,v 1.6 2011/07/29 19:21:28 lehman stable $ +% $Id: biblatex.sty,v 1.7 2011/11/13 19:09:07 lehman stable $ % Copyright (c) 2006-2011 Philipp Lehman. % @@ -21,11 +21,11 @@ \NeedsTeXFormat{LaTeX2e}[2005/12/01] \ProvidesPackage{biblatex} -[\abx@rcsid $Id: biblatex.sty,v 1.6 2011/07/29 19:21:28 lehman stable $ +[\abx@rcsid $Id: biblatex.sty,v 1.7 2011/11/13 19:09:07 lehman stable $ programmable bibliographies] \def\blx@bblversion$#1: #2 ${#2} -\edef\blx@bblversion{\blx@bblversion$Revision: 1.6 $} +\edef\blx@bblversion{\blx@bblversion$Revision: 1.7 $} %% Dependencies @@ -366,8 +366,16 @@ \def\blx@minbibnames{0} \def\blx@maxcitenames{0} \def\blx@mincitenames{0} +\def\blx@maxbibnames@type{\blx@maxbibnames} +\def\blx@minbibnames@type{\blx@minbibnames} +\def\blx@maxcitenames@type{\blx@maxcitenames} +\def\blx@mincitenames@type{\blx@mincitenames} \def\blx@maxalphanames{0} \def\blx@minalphanames{0} +\def\blx@maxitems{0} +\def\blx@minitems{0} +\def\blx@maxitems@type{\blx@maxitems} +\def\blx@minitems@type{\blx@minitems} \newlength{\labelnumberwidth} \newlength{\labelalphawidth} @@ -456,7 +464,7 @@ #1\ifx#2\@empty\else \expandafter\blx@tempa \fi#2} -\edef\blx@ctrlfile{% +\edef\blx@ctrlfile@bibtex{% \noexpand\blx@tempa \expandafter\blx@tempa\jobname"\@empty \space\noexpand\@empty} @@ -464,7 +472,7 @@ #1\ifx#2\@empty\else \string_\expandafter\blx@tempa \fi#2} -\xdef\blx@ctrlfile{\blx@ctrlfile} +\xdef\blx@ctrlfile@bibtex{\blx@ctrlfile@bibtex} \endgroup \def\blx@secinit{% @@ -652,7 +660,7 @@ \fi \string\bibstyle{biblatex}\blx@nl \string\bibdata{% - \blx@ctrlfile\blxauxsuffix + \blx@ctrlfile@bibtex\blxauxsuffix \ifx#1\@empty \else \dolistloop#1% @@ -1048,7 +1056,7 @@ \provides[type=dynamic]{ \def\do##1{\file{##1.aux}} \dolistloop\blx@list@inactive - \file{\blx@ctrlfile\blxauxsuffix.bib} + \file{\blx@ctrlfile@bibtex\blxauxsuffix.bib} } \requires[type=dynamic]{ \def\do##1{\file{##1.bbl}} @@ -1105,7 +1113,7 @@ } \requires[type=dynamic]{ \file{#2.aux} - \file{\blx@ctrlfile\blxauxsuffix.bib} + \file{\blx@ctrlfile@bibtex\blxauxsuffix.bib} } \requires[type=editable]{ \ifcsdef{blx@list@bibfiles@#2} @@ -2022,7 +2030,42 @@ % {<namelist1>}{<namelist2>}{<true>}{<false>} \def\blx@imc@ifnamesequal#1#2{% - \ifcsequal{abx@name@#1}{abx@name@#2}} + \ifcsundef{abx@name@#1} + {\@secondoftwo} + {\ifcsundef{abx@name@#2} + {\@secondoftwo} + {\blx@ifnamesequal{#1}{#2}}}} + +\def\blx@ifnamesequal#1#2{% + \begingroup + \let\blx@tempa\@empty + \expandafter\expandafter + \expandafter\blx@ifnamesequal@i\csname abx@name@#2\endcsname + \let\blx@tempb\blx@tempa + \let\blx@tempa\@empty + \expandafter\expandafter + \expandafter\blx@ifnamesequal@i\csname abx@name@#1\endcsname + \expandafter\endgroup + \ifx\blx@tempa\blx@tempb + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi} + +\def\blx@ifnamesequal@i#1#2{% + \expandafter\blx@ifnamesequal@ii#2{}&} + +\def\blx@ifnamesequal@ii#1{% + \ifblank{#1} + {\blx@namebreak} + {\blx@ifnamesequal@iii#1% + \blx@ifnamesequal@ii}} + +\def\blx@ifnamesequal@iii#1#2#3#4#5#6#7#8#9{% + \setkeys{blx@opt@name}{#1}% + \ifdef\abx@field@hash + {\eappto\blx@tempa{{\abx@field@hash}}} + {\appto\blx@tempa{{{#2}{#4}{#6}{#8}}}}} % {<field>}{<macro>}{<true>}{<false>} @@ -2052,7 +2095,7 @@ % {<namelist>}{<macro>}{<true>}{<false>} -\def\blx@imc@ifnameequals#1#2{% +\def\blx@imc@ifnameequals#1#2{% FIXME \blx@imc@ifnameundef{#1} {\@secondoftwo} {\ifundef#2% @@ -2075,7 +2118,7 @@ % {<namelist>}{<csname>}{<true>}{<false>} -\def\blx@imc@ifnameequalcs#1{% +\def\blx@imc@ifnameequalcs#1{% FIXME \ifcsequal{abx@name@#1}} % {<field>}{<string>}{<true>}{<false>} @@ -2745,31 +2788,47 @@ \setcounter{mincompwidth}{1} \def\abx@rangeproclimit{100000} -% [<postpro>]{<string>} +% <*>[<postpro>]{<string>} -\newrobustcmd*{\mkcomprange}[2][\@firstofone]{% +\newrobustcmd*{\mkcomprange}{% \begingroup + \@ifstar + {\blx@comprange\blx@comprange@ii} + {\blx@comprange\blx@comprange@i}} + +\def\blx@comprange#1{% + \@ifnextchar[{#1}{#1[\@firstofone]}} + +\def\blx@comprange@i[#1]#2{% \let\blx@tempa\@empty - \protected\def\blx@range@out{\appto\blx@tempa}% + \protected\def\blx@range@out@value{\appto\blx@tempa}% + \let\blx@range@out@delim\blx@range@out@value \let\blx@range@split\blx@comprange@split - \blx@imc@ifpages{#2} - {\blx@range@chunk{#2}} - {\blx@range@out{#2}}% + \blx@range@chunk{#2}% \edef\blx@tempa{\endgroup \unexpanded{#1}{\expandonce\blx@tempa}}% \blx@tempa} +\def\blx@comprange@ii[#1]#2{% + \protected\def\blx@range@out@value{#1}% + \let\blx@range@out@delim\@firstofone + \let\blx@range@split\blx@comprange@split + \blx@range@chunk{#2}% + \endgroup} + \def\blx@comprange@split#1{% - \def\blx@comprange@abort{\blx@range@out{#1}}% - \blx@comprange@range#1\bibrangedash\bibrangedash&} + \def\blx@comprange@abort{\blx@range@out@value{#1}}% + \blx@imc@ifpages{#1} + {\blx@comprange@range#1\bibrangedash\bibrangedash&} + {\blx@comprange@abort}} \def\blx@comprange@range#1\bibrangedash#2\bibrangedash#3&{% \ifblank{#3} {\blx@comprange@hyphen#1--&} {\ifblank{#2} - {\blx@range@out{#1\bibrangedash}} + {\blx@range@out@value{#1\bibrangedash}} {\ifblank{#1} - {\blx@range@out{\bibrangedash#2}} + {\blx@range@out@value{\bibrangedash#2}} {\blx@comprange@check{#1}{#2}}}}} \def\blx@comprange@hyphen#1-#2-#3&{% @@ -2781,16 +2840,16 @@ {\def\blx@tempb{#1}}% \blx@comprange@hyphen@i#3&} {\ifblank{#1} - {\blx@range@out{\bibrangedash#2}} + {\blx@range@out@value{\bibrangedash#2}} {\blx@comprange@check{#1}{#2}}}}} \def\blx@comprange@hyphen@i#1-#2&{% \ifblank{#1#2} - {\expandafter\blx@range@out + {\expandafter\blx@range@out@value \expandafter{\blx@tempb\bibrangedash}} {\notblank{#1} {\ifdefempty\blx@tempb - {\blx@range@out{\bibrangedash#1}} + {\blx@range@out@value{\bibrangedash#1}} {\expandafter\blx@comprange@check \expandafter{\blx@tempb}{#1}}} {\blx@comprange@hyphen@i#2&}}} @@ -2799,8 +2858,8 @@ \blx@imc@ifinteger{#1} {\blx@imc@ifinteger{#2} {\blx@comprange@comp{#1}{#2}} - {\blx@range@out{#1\bibrangedash#2}}} - {\blx@range@out{#1\bibrangedash#2}}} + {\blx@range@out@value{#1\bibrangedash#2}}} + {\blx@range@out@value{#1\bibrangedash#2}}} \def\blx@comprange@comp#1#2{% \def\blx@tempb{#1}% @@ -2830,7 +2889,7 @@ \else \numdef\blx@tempc\blx@tempd \fi - \edef\blx@tempb{\blx@range@out{\blx@tempb\noexpand\bibrangedash\blx@tempc}}% + \edef\blx@tempb{\blx@range@out@value{\blx@tempb\noexpand\bibrangedash\blx@tempc}}% \blx@tempb} \def\blx@comprange@comp@div{% @@ -2862,7 +2921,7 @@ {\blx@range@chunk@comma#1,&} {}% \notblank{#2} - {\notblank{#1}{\blx@range@out{;\space}}{}% + {\notblank{#1}{\blx@range@out@delim{;\space}}{}% \blx@range@chunk@semcol#2&} {}} @@ -2872,34 +2931,48 @@ \expandafter{\@firstofone#1}} {}% \notblank{#2} - {\notblank{#1}{\blx@range@out{,\space}}{}% + {\notblank{#1}{\blx@range@out@delim{,\space}}{}% \blx@range@chunk@comma#2&} {}} -% [<postpro>]{<string>} +% <*>[<postpro>]{<string>} -\newrobustcmd*{\mkfirstpage}[2][\@firstofone]{% +\newrobustcmd*{\mkfirstpage}{% \begingroup + \@ifstar + {\blx@firstpage\blx@firstpage@ii} + {\blx@firstpage\blx@firstpage@i}} + +\def\blx@firstpage#1{% + \@ifnextchar[{#1}{#1[\@firstofone]}} + +\def\blx@firstpage@i[#1]#2{% \let\blx@tempa\@empty - \protected\def\blx@range@out{\appto\blx@tempa}% + \protected\def\blx@range@out@value{\appto\blx@tempa}% + \let\blx@range@out@delim\blx@range@out@value \let\blx@range@split\blx@firstpage@split - \blx@imc@ifpages{#2} - {\blx@range@chunk{#2}} - {\blx@range@out{#2}}% + \blx@range@chunk{#2}% \edef\blx@tempa{\endgroup \unexpanded{#1}{\expandonce\blx@tempa}}% \blx@tempa} +\def\blx@firstpage@ii[#1]#2{% + \protected\def\blx@range@out@value{#1}% + \let\blx@range@out@delim\@firstofone + \let\blx@range@split\blx@firstpage@split + \blx@range@chunk{#2}% + \endgroup} + \def\blx@firstpage@split#1{% - \def\blx@firstpage@abort{\blx@range@out{#1}}% + \def\blx@firstpage@abort{\blx@range@out@value{#1}}% \blx@firstpage@range#1\bibrangedash\bibrangedash&} \def\blx@firstpage@range#1\bibrangedash#2\bibrangedash#3&{% \ifblank{#3} {\blx@firstpage@hyphen#1--&} {\ifblank{#1} - {\blx@range@out{\bibrangedash#2}} - {\blx@range@out{#1}}}} + {\blx@range@out@value{\bibrangedash#2}} + {\blx@range@out@value{#1}}}} \def\blx@firstpage@hyphen#1-#2-#3&{% \ifblank{#3} @@ -2907,15 +2980,15 @@ {\ifblank{#1} {\ifblank{#2} {\blx@firstpage@hyphen@i#3&} - {\blx@range@out{\bibrangedash#2}}} - {\blx@range@out{#1}}}} + {\blx@range@out@value{\bibrangedash#2}}} + {\blx@range@out@value{#1}}}} \def\blx@firstpage@hyphen@i#1-#2&{% \ifblank{#1} {\ifblank{#2} {\blx@firstpage@abort} {\blx@firstpage@hyphen@i#2&}} - {\blx@range@out{\bibrangedash#1}}} + {\blx@range@out@value{\bibrangedash#1}}} \newcommand*{\ppspace}{\addnbspace} \newcommand*{\sqspace}{\addnbspace} @@ -3776,6 +3849,7 @@ {\begingroup \blx@imc@clearlist{pageref}% \blx@getdata{#1}% + \blx@setoptions@type\abx@field@entrytype \def\abx@field@entrysetcount{1}% \blx@entryset@precode \blx@driver{\blx@imc@thefield{entrytype}}% @@ -3945,38 +4019,65 @@ \let\blx@hook@lc\relax \AtEndPreamble{% + \toggletrue{blx@tempa}% + \toggletrue{blx@tempb}% \expandafter\patchcmd\csname MakeUppercase \endcsname {\protected@edef} {\blx@hook@uc\protected@edef} - {} - {\blx@err@patch{\string\MakeUppercase}}% + {\togglefalse{blx@tempa}} + {}% \expandafter\patchcmd\csname MakeLowercase \endcsname {\protected@edef} {\blx@hook@lc\protected@edef} - {} - {\blx@err@patch{\string\MakeLowercase}}} + {\togglefalse{blx@tempb}} + {}% + \@ifpackageloaded{textcase} + {\expandafter\patchcmd\csname MakeUppercase \endcsname + {\def\i} + {\blx@hook@uc\def\i} + {\togglefalse{blx@tempa}} + {}% + \expandafter\patchcmd\csname MakeLowercase \endcsname + {\@uclcnotmath{}} + {\@uclcnotmath{\blx@hook@lc}} + {\togglefalse{blx@tempb}} + {}% + \expandafter\patchcmd\csname MakeTextUppercase \endcsname + {\def\i} + {\blx@hook@uc\def\i} + {} + {}% + \expandafter\patchcmd\csname MakeTextLowercase \endcsname + {\@uclcnotmath{}} + {\@uclcnotmath{\blx@hook@lc}} + {} + {}} + {}% + \iftoggle{blx@tempa}{\blx@err@patch{\string\MakeUppercase}}{}% + \iftoggle{blx@tempb}{\blx@err@patch{\string\MakeLowercase}}{}% +} \appto\blx@blxinit{% \def\blx@hook@uc{% - \let\bibstring\blx@imc@bibucstring - \let\biblstring\blx@imc@bibuclstring - \let\bibsstring\blx@imc@bibucsstring - \let\biblcstring\blx@imc@bibucstring - \let\biblclstring\blx@imc@bibuclstring - \let\biblcsstring\blx@imc@bibucsstring - \let\bibcpstring\blx@imc@bibucstring - \let\bibcplstring\blx@imc@bibuclstring - \let\bibcpsstring\blx@imc@bibucsstring}% + \def\bibstring{\blx@imc@bibucstring}% + \def\biblstring{\blx@imc@bibuclstring}% + \def\bibsstring{\blx@imc@bibucsstring}% + \def\biblcstring{\blx@imc@bibucstring}% + \def\biblclstring{\blx@imc@bibuclstring}% + \def\biblcsstring{\blx@imc@bibucsstring}% + \def\bibcpstring{\blx@imc@bibucstring}% + \def\bibcplstring{\blx@imc@bibuclstring}% + \def\bibcpsstring{\blx@imc@bibucsstring}}% \def\blx@hook@lc{% - \let\bibstring\blx@imc@biblcstring - \let\biblstring\blx@imc@biblclstring - \let\bibsstring\blx@imc@biblcsstring - \let\bibucstring\blx@imc@biblcstring - \let\bibuclstring\blx@imc@biblclstring - \let\bibucsstring\blx@imc@biblcsstring - \let\bibcpstring\blx@imc@biblcstring - \let\bibcplstring\blx@imc@biblclstring - \let\bibcpsstring\blx@imc@biblcsstring}} + \def\bibstring{\blx@imc@biblcstring}% + \def\biblstring{\blx@imc@biblclstring}% + \def\bibsstring{\blx@imc@biblcsstring}% + \def\bibucstring{\blx@imc@biblcstring}% + \def\bibuclstring{\blx@imc@biblclstring}% + \def\bibucsstring{\blx@imc@biblcsstring}% + \def\bibcpstring{\blx@imc@biblcstring}% + \def\bibcplstring{\blx@imc@biblclstring}% + \def\bibcpsstring{\blx@imc@biblcsstring}}} \def\abx@dostrings{% \do{bibliography}% @@ -4131,6 +4232,7 @@ \do{andmore}% \do{volume}% \do{volumes}% + \do{part}% \do{jourvol}% \do{jourser}% \do{newseries}% @@ -4154,6 +4256,8 @@ \do{in}% \do{inseries}% \do{ofseries}% + \do{book}% + \do{issue}% \do{number}% \do{chapter}% \do{mathesis}% @@ -4168,9 +4272,10 @@ \do{url}% \do{urlseen}% \do{file}% - \do{inpress}% \do{inpreparation}% \do{submitted}% + \do{inpress}% + \do{forthcoming}% \do{library}% \do{abstract}% \do{annotation}% @@ -4211,9 +4316,11 @@ \do{december}% \do{langamerican}% \do{langbrazilian}% + \do{langcroatian}% \do{langdanish}% \do{langdutch}% \do{langenglish}% + \do{langfinnish}% \do{langfrench}% \do{langgerman}% \do{langgreek}% @@ -4221,13 +4328,16 @@ \do{langlatin}% \do{langnorwegian}% \do{langportuguese}% + \do{langrussian}% \do{langspanish}% \do{langswedish}% \do{fromamerican}% \do{frombrazilian}% + \do{fromcroatian}% \do{fromdanish}% \do{fromdutch}% \do{fromenglish}% + \do{fromfinnish}% \do{fromfrench}% \do{fromgerman}% \do{fromgreek}% @@ -4235,6 +4345,7 @@ \do{fromlatin}% \do{fromnorwegian}% \do{fromportuguese}% + \do{fromrussian}% \do{fromspanish}% \do{fromswedish}% \do{countryde}% @@ -4497,7 +4608,7 @@ \newrobustcmd*{\mkbibrangefull}[2]{% \iffieldundef{#2year} {} - {\printtext{% + {\printtext[#2date]{% \csuse{mkbibdate#1}{#2year}{#2month}{#2day}% \iffieldundef{#2endyear} {} @@ -4509,7 +4620,7 @@ \newrobustcmd*{\mkbibrangetrunc}[2]{% \iffieldundef{#2year} {} - {\printtext{% + {\printtext[#2date]{% \iffieldsequal{#2year}{#2endyear} {\iffieldsequal{#2month}{#2endmonth} {\csuse{mkbibdate#1}{}{}{#2day}} @@ -4525,42 +4636,44 @@ \newrobustcmd*{\mkbibrangefullextra}[2]{% \iffieldundef{#2year} {} - {\printtext{% - \csuse{mkbibdate#1}{#2year}{#2month}{#2day}}% - \iffieldundef{#2endyear} - {\printfield{extrayear}} - {\iffieldequalstr{#2endyear}{} - {\printfield{extrayear}% - \printtext{\mbox{\bibdatedash}}} - {\printtext{% - \bibdatedash - \csuse{mkbibdate#1}{#2endyear}{#2endmonth}{#2endday}% - \printfield{extrayear}}}}}} + {\printtext[#2date]{% + \printtext{% + \csuse{mkbibdate#1}{#2year}{#2month}{#2day}}% + \iffieldundef{#2endyear} + {\printfield{extrayear}} + {\iffieldequalstr{#2endyear}{} + {\printfield{extrayear}% + \printtext{\mbox{\bibdatedash}}} + {\printtext{% + \bibdatedash + \csuse{mkbibdate#1}{#2endyear}{#2endmonth}{#2endday}% + \printfield{extrayear}}}}}}} \newrobustcmd*{\mkbibrangetruncextra}[2]{% \iffieldundef{#2year} {} - {\printtext{% - \iffieldsequal{#2year}{#2endyear} - {\iffieldsequal{#2month}{#2endmonth} - {\csuse{mkbibdate#1}{}{}{#2day}} - {\csuse{mkbibdate#1}{}{#2month}{#2day}}} - {\csuse{mkbibdate#1}{#2year}{#2month}{#2day}}}% - \iffieldundef{#2endyear} - {\printfield{extrayear}} - {\iffieldequalstr{#2endyear}{} - {\printfield{extrayear}% - \printtext{\mbox{\bibdatedash}}} - {\printtext{% - \bibdatedash - \csuse{mkbibdate#1}{#2endyear}{#2endmonth}{#2endday}% - \printfield{extrayear}}}}}} + {\printtext[#2date]{% + \printtext{% + \iffieldsequal{#2year}{#2endyear} + {\iffieldsequal{#2month}{#2endmonth} + {\csuse{mkbibdate#1}{}{}{#2day}} + {\csuse{mkbibdate#1}{}{#2month}{#2day}}} + {\csuse{mkbibdate#1}{#2year}{#2month}{#2day}}}% + \iffieldundef{#2endyear} + {\printfield{extrayear}} + {\iffieldequalstr{#2endyear}{} + {\printfield{extrayear}% + \printtext{\mbox{\bibdatedash}}} + {\printtext{% + \bibdatedash + \csuse{mkbibdate#1}{#2endyear}{#2endmonth}{#2endday}% + \printfield{extrayear}}}}}}} \expandafter\newrobustcmd \expandafter*\csname mkbibrangeiso8601\endcsname[1]{% \iffieldundef{#1year} {} - {\printtext{% + {\printtext[#1date]{% \blx@isodate{#1year}{#1month}{#1day}% \iffieldundef{#1endyear} {} @@ -4570,7 +4683,7 @@ \expandafter*\csname mkbibrangeiso8601extra\endcsname[1]{% \iffieldundef{#1year} {} - {\printtext{% + {\printtext[#1date]{% \blx@isodate[extrayear]{#1year}{#1month}{#1day}% \iffieldundef{#1endyear} {} @@ -4589,6 +4702,7 @@ \newrobustcmd*{\mkbibordinal}[1]{#1} \newrobustcmd*{\mkbibmascord}{\mkbibordinal} \newrobustcmd*{\mkbibfemord}{\mkbibordinal} +\newrobustcmd*{\mkbibneutord}{\mkbibordinal} \newrobustcmd*{\mkbibmonth}[1]{% \ifcase0#1\relax \blx@warning@entry{Month out of range or not an integer}% @@ -4973,8 +5087,15 @@ \abx@dofields\do{execute}\do{options}% \def\do##1{\togglefalse{abx@bool@##1}}% \abx@dobooleans + \let\do\blx@saved@do \c@citecounter\z@ - \let\do\blx@saved@do} + \iftoggle{blx@bibliography} + {\c@maxnames\blx@maxbibnames\relax + \c@minnames\blx@minbibnames\relax} + {\c@maxnames\blx@maxcitenames\relax + \c@minnames\blx@mincitenames\relax}% + \c@maxitems\blx@maxitems\relax + \c@minitems\blx@minitems\relax} \protected\def\blx@saveentry{% \let\blx@saved@do\do @@ -5331,7 +5452,8 @@ {\begingroup \edef\blx@tempa{\endgroup \noexpand\setkeys{blx@opt@ent}{\abx@field@options}}% - \blx@tempa}} + \blx@tempa + \blx@checkoptions@entry}} \def\blx@setoptions@type#1{% \ifcsdef{blx@opts@type@#1} @@ -5341,6 +5463,10 @@ \blx@tempa} {}} +\def\blx@checkoptions@global{} +\def\blx@checkoptions@type{} +\def\blx@checkoptions@entry{} + \def\blx@entrysetcount{% \ifdef\abx@field@entrykey {\ifcsdef{blx@seti@\the\c@refsection @\abx@field@entrykey} @@ -6206,8 +6332,6 @@ \let\blx@theprenote\@empty \let\blx@thepostnote\@empty \let\blx@thetitle\@empty - \c@maxnames\blx@maxbibnames\relax - \c@minnames\blx@minbibnames\relax \blx@safe@actives \setkeys{blx@bib}{#1}% \blx@rest@actives @@ -6234,8 +6358,6 @@ \let\blx@thepostnote\@empty \let\blx@thetitle\@empty \c@refsection\z@ - \c@maxnames\blx@maxbibnames\relax - \c@minnames\blx@minbibnames\relax \blx@safe@actives \setkeys{blx@bbs}{#1}% \blx@rest@actives @@ -6276,8 +6398,6 @@ \let\blx@thetitle\@empty \c@refsection\z@ \c@refsegment\@ne - \c@maxnames\blx@maxbibnames\relax - \c@minnames\blx@minbibnames\relax \blx@safe@actives \setkeys{blx@bbg}{#1}% \blx@rest@actives @@ -6320,8 +6440,6 @@ \let\blx@thetitle\@empty \c@refsection\z@ \blx@safe@actives - \c@maxnames\blx@maxbibnames\relax - \c@minnames\blx@minbibnames\relax \setkeys{blx@bbc}{#1}% \blx@rest@actives \togglefalse{blx@tempa}% @@ -6541,8 +6659,6 @@ \let\blx@thepostnote\@empty \let\blx@thetitle\@empty \let\blx@printbibchecks\relax - \c@maxnames\blx@maxbibnames\relax - \c@minnames\blx@minbibnames\relax \blx@safe@actives \setkeys{blx@los}{#1}% \blx@rest@actives @@ -8648,8 +8764,8 @@ \blx@getformat\blx@tempc{ffd}{}{volcitepages}% \edef\blx@tempa{\expandonce\blx@tempa[{% \expandonce{\blx@tempb{#1}}% - \noexpand\addcomma\noexpand\space - \expandonce{\blx@tempc{#2}}}]} + \noexpand\volcitedelim + \expandonce{\blx@tempc{#2}}}]}% \blx@tempa} %% Control file @@ -8686,6 +8802,19 @@ \xdef\blx@xml@ordered#1#2{% ~~~~~~<bcf:value order="#1">#2</bcf:value>\blx@nl} +\xdef\blx@xml@displaymodes#1#2{% + ~~<bcf:displaymodes type="#1">\blx@nl + #2% + ~~</bcf:displaymodes>\blx@nl} +\xdef\blx@xml@displaymode#1{% + ~~~~<bcf:displaymode>\blx@nl + #1% + ~~~~</bcf:displaymode>\blx@nl} +\xdef\blx@xml@dtarget#1{% + ~~~~~~<bcf:dtarget>#1</bcf:dtarget>\blx@nl} +\xdef\blx@xml@dmode#1#2{% + ~~~~~~<bcf:dmode order="#1">#2</bcf:dmode>\blx@nl} + \xdef\blx@xml@inheritance#1{% ~~<bcf:inheritance>\blx@nl #1% @@ -8761,12 +8890,12 @@ \blx@xml@mvalue{labelyearspec}{\blx@bcf@labelyearspec}% \blx@xml@svalue{maxalphanames}{\blx@maxalphanames}% \blx@xml@svalue{maxbibnames}{\blx@maxbibnames}% - \blx@xml@svalue{maxitems}{\the\c@maxitems}% - \blx@xml@svalue{maxnames}{\blx@maxcitenames}% + \blx@xml@svalue{maxcitenames}{\blx@maxcitenames}% + \blx@xml@svalue{maxitems}{\blx@maxitems}% \blx@xml@svalue{minalphanames}{\blx@minalphanames}% \blx@xml@svalue{minbibnames}{\blx@minbibnames}% - \blx@xml@svalue{minitems}{\the\c@minitems}% - \blx@xml@svalue{minnames}{\blx@mincitenames}% + \blx@xml@svalue{mincitenames}{\blx@mincitenames}% + \blx@xml@svalue{minitems}{\blx@minitems}% \blx@xml@toggle{singletitle}% \blx@xml@svalue{sortalphaothers}{\sortalphaothers}% \blx@xml@svalue{sortlos}{\blx@sortlos}% @@ -8792,6 +8921,14 @@ \ifcsdef{blx@bcf@labelyearspec@#1} {\csuse{blx@bcf@labelyearspec@#1}} {\blx@bcf@labelyearspec}}% + \blx@xml@svalue{maxalphanames}{\blx@maxalphanames}% + \blx@xml@svalue{maxbibnames}{\blx@maxbibnames@type}% + \blx@xml@svalue{maxcitenames}{\blx@maxcitenames@type}% + \blx@xml@svalue{maxitems}{\blx@maxitems@type}% + \blx@xml@svalue{minalphanames}{\blx@minalphanames}% + \blx@xml@svalue{minbibnames}{\blx@minbibnames@type}% + \blx@xml@svalue{mincitenames}{\blx@mincitenames@type}% + \blx@xml@svalue{minitems}{\blx@minitems@type}% \blx@xml@toggle{singletitle}% \blx@xml@toggle{skipbib}% \blx@xml@toggle{skiplab}% @@ -8836,7 +8973,7 @@ } \def\blx@ctrlwrite@bibtex{% - \immediate\openout\blx@auxout\blx@ctrlfile\blxauxsuffix.bib\relax + \immediate\openout\blx@auxout\blx@ctrlfile@bibtex\blxauxsuffix.bib\relax \blx@auxwrite\blx@auxout{}{\blx@ctrl@bibtex}% \immediate\closeout\blx@auxout} @@ -8870,10 +9007,21 @@ {\def\do##1{% \begingroup \blx@setoptions@type{##1}% + \begingroup + \let\protect\relax + \blx@checkoptions@type + \endgroup \xappto\blx@tempa{\blx@bcf@options@type{##1}}% \endgroup}% \dolistloop\blx@opts@type} {}% + % displaymode + \eappto\blx@tempa{% + \blx@xml@comment{DISPLAYMODES}% + \blx@xml@displaymodes{global}{% + \csuse{blx@biber@displaymodes@global}% + }% + }% % data inheritance \eappto\blx@tempa{% \blx@xml@comment{CROSSREF}% @@ -9149,6 +9297,25 @@ \docsvlist{#2}% \endgroup} +% experimental + +\newrobustcmd*{\DeclareDisplaymode}[2][global]{% + \begingroup + \blx@tempcnta\z@ + \def\blx@tempa{\blx@xml@dtarget{*}}% + \forcsvlist\blx@defdisplaymode{#2}% + \csxdef{blx@biber@displaymodes@#1}{% + \blx@xml@displaymode{\blx@tempa}}% + \endgroup} + +\def\blx@defdisplaymode#1{% + \advance\blx@tempcnta\@ne + \edef\blx@tempa{% + \blx@tempa + \blx@xml@dmode{\the\blx@tempcnta}{#1}}} + +\DeclareDisplaymode{original,romanised,uniform,translated} + %% Package options % [<entrytype,entrytype,...>]{<options>} @@ -9285,71 +9452,144 @@ \def\blx@opt@sortlos@los{1} \DeclareBibliographyOption{maxnames}{% - \blx@setmaxval{names}{#1}% - \numdef\blx@maxbibnames{#1}% - \numdef\blx@maxcitenames{#1}} + \numdef\blx@maxcitenames{#1}% + \numdef\blx@maxbibnames{#1}} \DeclareBibliographyOption{minnames}{% - \blx@setminval{names}{#1}% - \numdef\blx@minbibnames{#1}% - \numdef\blx@mincitenames{#1}} + \numdef\blx@mincitenames{#1}% + \numdef\blx@minbibnames{#1}} +\DeclareTypeOption{maxnames}{% + \numdef\blx@maxcitenames@type{#1}% + \numdef\blx@maxbibnames@type{#1}% + \c@maxnames#1\relax} +\DeclareTypeOption{minnames}{% + \numdef\blx@mincitenames@type{#1}% + \numdef\blx@minbibnames@type{#1}% + \c@minnames#1\relax} +\DeclareEntryOption{maxnames}{% + \c@maxnames#1\relax} +\DeclareEntryOption{minnames}{% + \c@minnames#1\relax} \DeclareBibliographyOption{maxbibnames}{% - \blx@defmaxval{bibnames}{#1}} + \numdef\blx@maxbibnames{#1}} \DeclareBibliographyOption{minbibnames}{% - \blx@defminval{bibnames}{#1}} + \numdef\blx@minbibnames{#1}} +\DeclareTypeOption{maxbibnames}{% + \numdef\blx@maxbibnames@type{#1}% + \iftoggle{blx@bibliography} + {\c@maxnames#1\relax} + {}} +\DeclareTypeOption{minbibnames}{% + \numdef\blx@minbibnames@type{#1}% + \iftoggle{blx@bibliography} + {\c@minnames#1\relax} + {}} +\DeclareEntryOption{maxbibnames}{% + \iftoggle{blx@bibliography} + {\c@maxnames#1\relax} + {}} +\DeclareEntryOption{minbibnames}{% + \iftoggle{blx@bibliography} + {\c@minnames#1\relax} + {}} \DeclareBibliographyOption{maxcitenames}{% - \blx@defmaxval{citenames}{#1}} + \numdef\blx@maxcitenames{#1}} \DeclareBibliographyOption{mincitenames}{% - \blx@defminval{citenames}{#1}} + \numdef\blx@minbibnames{#1}} +\DeclareTypeOption{maxcitenames}{% + \numdef\blx@maxcitenames@type{#1}% + \iftoggle{blx@bibliography} + {} + {\c@maxnames#1\relax}} +\DeclareTypeOption{mincitenames}{% + \numdef\blx@minbibnames@type{#1}% + \iftoggle{blx@bibliography} + {} + {\c@minnames#1\relax}} +\DeclareEntryOption{maxcitenames}{% + \iftoggle{blx@bibliography} + {} + {\c@maxnames#1\relax}} +\DeclareEntryOption{mincitenames}{% + \iftoggle{blx@bibliography} + {} + {\c@minnames#1\relax}} -\DeclareBibliographyOption{maxalphanames}{% - \blx@defmaxval{alphanames}{#1}} -\DeclareBibliographyOption{minalphanames}{% - \blx@defminval{alphanames}{#1}} - -\def\blx@setmaxval#1#2{% - \ifnumless{#2}\@ne - {\blx@err@invopt{max#1=#2}{% - 'max#1' must be greater than zero}} - {\ifnumless{#2}{\csname c@min#1\endcsname} - {\blx@err@confopt{max#1/min#1}{% - 'max#1' must be greater than or equal to 'min#1'}} - {\defcounter{max#1}{#2}}}} - -\def\blx@setminval#1#2{% - \ifnumless{#2}\@ne - {\blx@err@invopt{min#1=#2}{% - min#1' must be greater than zero}} - {\ifnumgreater{#2}{\csname c@max#1\endcsname} - {\blx@err@confopt{max#1/min#1}{% - 'min#1' must be less than or equal to 'max#1'}} - {\defcounter{min#1}{#2}}}} - -\def\blx@defmaxval#1#2{% - \ifnumless{#2}\@ne - {\blx@err@invopt{max#1=#2}{% - 'max#1' must be greater than zero}} - {\ifnumless{#2}{\csname blx@min#1\endcsname} - {\blx@err@confopt{max#1/min#1}{% - 'max#1' must be greater than or equal to 'min#1'}} - {\csnumdef{blx@max#1}{#2}}}} - -\def\blx@defminval#1#2{% - \ifnumless{#2}\@ne - {\blx@err@invopt{min#1=#2}{% - min#1' must be greater than zero}} - {\ifnumgreater{#2}{\csname blx@max#1\endcsname} - {\blx@err@confopt{max#1/min#1}{% - 'min#1' must be less than or equal to 'max#1'}} - {\csnumdef{blx@min#1}{#2}}}} +\appto\blx@checkoptions@global{% + \blx@maxmin@num{maxbibnames}{minbibnames}\blx@maxbibnames\blx@minbibnames + \blx@maxmin@num{maxcitenames}{mincitenames}\blx@maxcitenames\blx@mincitenames} +\appto\blx@checkoptions@type{% + \blx@maxmin@num{maxbibnames}{minbibnames}\blx@maxbibnames@type\blx@minbibnames@type + \blx@maxmin@num{maxcitenames}{mincitenames}\blx@maxcitenames@type\blx@mincitenames@type} +\appto\blx@checkoptions@entry{% + \blx@maxmin@cnt{maxnames}{minnames}\c@maxnames\c@minnames} \DeclareBibliographyOption{maxitems}{% - \blx@setmaxval{items}{#1}} + \numdef\blx@maxitems{#1}} \DeclareBibliographyOption{minitems}{% - \blx@setminval{items}{#1}} + \numdef\blx@minitems{#1}} +\DeclareTypeOption{maxitems}{% + \numdef\blx@maxitems@type{#1}% + \c@maxitems#1\relax} +\DeclareTypeOption{minitems}{% + \numdef\blx@minitems@type{#1}% + \c@minitems#1\relax} +\DeclareEntryOption{maxitems}{% + \c@maxitems#1\relax} +\DeclareEntryOption{minitems}{% + \c@minitems#1\relax} + +\appto\blx@checkoptions@global{% + \blx@maxmin@num{maxitems}{minitems}\blx@maxitems\blx@minitems} +\appto\blx@checkoptions@type{% + \blx@maxmin@num{maxitems}{minitems}\blx@maxitems@type\blx@minitems@type} +\appto\blx@checkoptions@entry{% + \blx@maxmin@cnt{maxitems}{minitems}\c@maxitems\blx@minitems} -\DeclareBibliographyOption{maxline}{% +\DeclareBibliographyOption{maxalphanames}{% + \numdef\blx@maxalphanames{#1}} +\DeclareBibliographyOption{minalphanames}{% + \numdef\blx@minalphanames{#1}} +\DeclareTypeOption{maxalphanames}{% + \numdef\blx@maxalphanames{#1}} +\DeclareTypeOption{minalphanames}{% + \numdef\blx@minalphanames{#1}} + +\appto\blx@checkoptions@global{% + \blx@maxmin@num{maxalphanames}{minalphanames}\blx@maxalphanames\blx@minalphanames} +\appto\blx@checkoptions@type{% + \blx@maxmin@num{maxalphanames}{minalphanames}\blx@maxalphanames\blx@minalphanames} + +\def\blx@maxmin@num#1#2#3#4{% + \ifnumless#3\@ne + {\blx@err@invopt{#1=#3}{'#1' must be greater than zero}% + \let#3\@ne} + {}% + \ifnumless#4\@ne + {\blx@err@invopt{#2=#4}{'#2' must be greater than zero}% + \let#4\@ne} + {}% + \ifnumless#3#4 + {\blx@err@confopt{#1/#2}{'#1' must be greater than or equal to '#2'}% + \let#3#4} + {}} + +\def\blx@maxmin@cnt#1#2#3#4{% + \ifnumless#3\@ne + {\blx@err@invopt{#1=\number#3}{'#1' must be greater than zero}% + #3\@ne} + {}% + \ifnumless#4\@ne + {\blx@err@invopt{#2=\number#4}{'#2' must be greater than zero}% + #4\@ne} + {}% + \ifnumless#3#4 + {\blx@err@confopt{#1/#2}{'#1' must be greater than or equal to '#2'}% + #3=#4} + {}} + +\DeclareBibliographyOption{maxline}{% BibTeX only \ifnum#1<49 \def\blx@maxline{49}% \else @@ -10061,18 +10301,11 @@ % Deferred setup at end of preamble \AtEndPreamble{% - \ifnumless\blx@maxbibnames\blx@maxcitenames - {\blx@warn@conflopt{% - 'maxbibnames' (=\the\numexpr\blx@maxbibnames\relax) - should not be smaller than\MessageBreak - 'maxcitenames' (=\the\numexpr\blx@maxcitenames\relax)}} - {}% - \ifnumless\blx@minbibnames\blx@mincitenames - {\blx@warn@conflopt{% - 'minbibnames' (=\the\numexpr\blx@minbibnames\relax) - should not be smaller than\MessageBreak - 'mincitenames' (=\the\numexpr\blx@mincitenames\relax)}} - {}% + \blx@checkoptions@global + \c@maxnames\blx@maxcitenames\relax + \c@minnames\blx@mincitenames\relax + \c@maxitems\blx@maxitems\relax + \c@minitems\blx@minitems\relax \iftoggle{blx@firstinits} {\ifnumequal\blx@uniquename\blx@opt@uniquename@full {\blx@warn@conflopt{% @@ -10184,7 +10417,6 @@ Use backend=bibtex8 or backend=biber}}}}% \ifboolexpr{% togl {blx@safeinputenc} - and test {\ifdefstring\blx@texencoding{utf8}} and test {\ifnumequal\blx@backend\blx@backend@biber} and ( test {\@ifpackageloaded{inputenc}} or @@ -10202,8 +10434,6 @@ \AtBeginDocument{% \blx@checkbackend{style}% \blx@checkencoding - \c@maxnames\blx@maxcitenames\relax - \c@minnames\blx@mincitenames\relax \if@filesw \ifnum\blx@backend=\blx@backend@biber \blx@ifsigned{\jobname}{bcf} @@ -10211,7 +10441,7 @@ {}% \else \blx@auxinit@bibtex\blx@bibfiles - \blx@ifsigned{\blx@ctrlfile\blxauxsuffix}{bib} + \blx@ifsigned{\blx@ctrlfile@bibtex\blxauxsuffix}{bib} {\blx@ctrlwrite@bibtex} {}% \fi |