summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/biblatex/biblatex.sty
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/biblatex/biblatex.sty')
-rw-r--r--Master/texmf-dist/tex/latex/biblatex/biblatex.sty594
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