From 275a02abde664ff395868e975c7c06d89276ac0b Mon Sep 17 00:00:00 2001
From: Karl Berry <karl@freefriends.org>
Date: Thu, 11 Jul 2013 23:36:27 +0000
Subject: biblatex (10jul13)

git-svn-id: svn://tug.org/texlive/trunk@31176 c570f23f-e606-0410-a88d-b1316a301751
---
 Master/texmf-dist/tex/latex/biblatex/biblatex2.sty | 235 +++++++++++++++------
 1 file changed, 168 insertions(+), 67 deletions(-)

(limited to 'Master/texmf-dist/tex/latex/biblatex/biblatex2.sty')

diff --git a/Master/texmf-dist/tex/latex/biblatex/biblatex2.sty b/Master/texmf-dist/tex/latex/biblatex/biblatex2.sty
index 1a9542da6c6..fd4576f2653 100644
--- a/Master/texmf-dist/tex/latex/biblatex/biblatex2.sty
+++ b/Master/texmf-dist/tex/latex/biblatex/biblatex2.sty
@@ -65,7 +65,11 @@
     amsrefs,apacite,babelbib,backref,bibtopic,bibunits,chapterbib,
     cite,citeref,drftcite,footbib,inlinebib,jurabib,mcite,mciteplus,
     mlbib,multibbl,multibib,natbib,opcit,overcite,splitbib,ucs}%
-  \@ifpackageloaded{babel}
+  \ifboolexpr{
+    test {\@ifpackageloaded{babel}}
+    and
+    not test {\@ifpackageloaded{polyglossia}}
+  }
     {\iftoggle{blx@autolang}
        {\blx@mkbabel}
        {\blx@mknobabel}}
@@ -368,8 +372,6 @@
 \newcount\blx@parenlevel@foot
 \expandafter\newcount\csname blx@sectionciteorder@0\endcsname
 
-
-
 \def\blx@uniquename{0}
 \def\blx@uniquelist{0}
 \def\blx@maxbibnames{0}
@@ -2155,6 +2157,19 @@
           \expandafter\@secondoftwo
         \fi}}}
 
+% {<true>}{<false>}
+
+\def\blx@imc@iffirstcitekey{%
+  \ifboolexpr{ ( test {\ifnumequal\c@multicitetotal\z@}
+                 and test {\ifnumequal\c@citecount\@ne} )
+    or ( test {\ifnumgreater\c@multicitetotal\z@}
+         and test {\ifnumequal\c@multicitecount\@ne}
+         and test {\ifnumequal\c@citecount\@ne} ) }}
+
+\def\blx@imc@iflastcitekey{%
+  \ifboolexpr{ test {\ifnumequal\c@citecount\c@citetotal}
+               and test {\ifnumequal\c@multicitecount\c@multicitetotal} }}
+
 % {<category>}{<true>}{<false>}
 
 \protected\def\blx@imc@ifcategory{%
@@ -2203,6 +2218,12 @@
      \expandafter{\abx@field@entrykey}}
     {\@secondoftwo}}
 
+\protected\def\blx@ifciteseen@context{%
+  \ifdef\abx@field@entrykey
+    {\expandafter\blx@ifseen@context
+     \expandafter{\abx@field@entrykey}}
+    {\@secondoftwo}}
+
 % {<entrykey>}{<true>}{<false>}
 
 \protected\def\blx@ifentryseen@global{%
@@ -2817,7 +2838,8 @@
   \else
     \numdef\blx@tempc\blx@tempd
   \fi
-  \edef\blx@tempb{\blx@range@out@value{\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{%
@@ -3046,11 +3068,12 @@
   \ifdriver \thefield \strfield \csfield \usefield \thelist \thename
   \clearfield \clearlist \clearname \restorefield \restorelist \restorename
   \ifcategory \ifentrycategory \ifkeyword \ifentrykeyword
-  \ifciteseen \ifentryseen \ifciteibid \ifciteidem \ifopcit \ifloccit
+  \ifciteseen \ifentryseen \ifentryinbib \ifciteibid \ifciteidem \ifopcit \ifloccit
   \ifcurrentfield \ifcurrentlist \ifcurrentname \ifentrytype
   \iffieldequalcs \iffieldequals \iffieldequalstr \iffieldsequal
   \ifbibmacroundef \iffieldundef \iffieldxref \iflistequalcs \iflistequals
-  \iflistsequal \iflistundef \iflistxref \ifmorenames \ifmoreitems
+  \iflistsequal \iflistundef \iflistxref
+  \ifmorenames \ifmoreitems \iffirstcitekey \iflastcitekey
   \ifnameequalcs \ifnameequals \ifnamesequal \ifnameundef \ifnamexref
   \iffirstonpage \ifsamepage \savefield \savefieldcs \savelist
   \savelistcs \savename \savenamecs \usedriver
@@ -4310,6 +4333,7 @@
   \do{langitalian}%
   \do{langlatin}%
   \do{langnorwegian}%
+  \do{langpolish}%
   \do{langportuguese}%
   \do{langrussian}%
   \do{langspanish}%
@@ -4329,6 +4353,7 @@
   \do{fromitalian}%
   \do{fromlatin}%
   \do{fromnorwegian}%
+  \do{frompolish}%
   \do{fromportuguese}%
   \do{fromrussian}%
   \do{fromspanish}%
@@ -4685,6 +4710,7 @@
 \newrobustcmd*{\bibrangessep}{,\space}
 \newrobustcmd*{\bibdatedash}{\bibrangedash}
 \newrobustcmd*{\finalandcomma}{}
+\newrobustcmd*{\finalandsemicolon}{}
 \newrobustcmd*{\mkbibordinal}[1]{#1}
 \newrobustcmd*{\mkbibmascord}{\mkbibordinal}
 \newrobustcmd*{\mkbibfemord}{\mkbibordinal}
@@ -5109,7 +5135,7 @@
 
 % {<counter>}{<value>}
 
-\protected\long\def\blx@bbl@countdef#1#2{%
+\protected\long\def\blx@bbl@cntdef#1#2{%
   \csxappto\blx@bbl@data{%
     \csname c@#1\endcsname#2\relax}}
 
@@ -5262,6 +5288,7 @@
 
 \def\blx@ifdata#1{%
   \ifcsdef{blx@data@\the\c@refsection @#1}}
+\let\blx@imc@ifentryinbib\blx@ifdata
 
 \def\blx@getdata#1{%
   \csuse{blx@data@\the\c@refsection @#1}%
@@ -5564,7 +5591,7 @@
   \let\list\blx@bbl@listdef
   \let\field\blx@bbl@fielddef
   \let\strng\blx@bbl@stringdef
-  \let\count\blx@bbl@countdef
+  \let\cnt\blx@bbl@cntdef
   \let\true\blx@bbl@booltrue
   \let\false\blx@bbl@boolfalse
   \let\verb\blx@bbl@verbdef
@@ -5637,19 +5664,19 @@
       {}
       {\blx@logreq@active{}}}
     {}%
-  % Test to see if we removed any mention of a sorting scheme since last run.
+  % Test if we removed any mention of a sorting scheme since last run.
   % If we did, we need to re-run biber
   \def\do#1{\ifinlist{#1}{\blx@sortschemes}{}{\blx@logreq@active{}}\relax}%
   \dolistloop\blx@lastsortschemes
-  % Test to see if we added any mention of a sorting scheme since last run
+  % Test if we added any mention of a sorting scheme since last run
   % If we did, we need to re-run biber
   \def\do#1{\ifinlist{#1}{\blx@lastsortschemes}{}{\blx@logreq@active{}}\relax}%
   \dolistloop\blx@sortschemes
-  % Test to see if we removed any mention of a shorthand sorting scheme since last run.
+  % Test if we removed any mention of a shorthand sorting scheme since last run.
   % If we did, we need to re-run biber
   \def\do#1{\ifinlist{#1}{\blx@sortschemeslos}{}{\blx@logreq@active{}}\relax}%
   \dolistloop\blx@lastsortschemeslos
-  % Test to see if we added any mention of a shorthand sorting scheme since last run
+  % Test to see if we added any mention of a shorthand sorting scheme since last run.
   % If we did, we need to re-run biber
   \def\do#1{\ifinlist{#1}{\blx@lastsortschemeslos}{}{\blx@logreq@active{}}\relax}%
   \dolistloop\blx@sortschemeslos
@@ -5679,17 +5706,28 @@
               {\let\abx@field@localnumber\@empty}
               {\csnumgdef{blx@labelnumber@\the\c@refsection}{%
                  \csuse{blx@labelnumber@\the\c@refsection}+1}%
-                 \edef\abx@field@localnumber{\csuse{blx@labelnumber@\the\c@refsection}}%
+                 \edef\abx@field@localnumber{%
+                   \csuse{blx@labelnumber@\the\c@refsection}}%
                  \blx@bbl@addentryfield{\abx@field@entrykey}{\the\c@refsection}%
                    {localnumber}{\abx@field@localnumber}}%
-                 \listxadd\blx@localnumaux{\string\abx@aux@number{\the\c@instcount}{\abx@field@entrykey}{\the\c@refsection}{\abx@field@localnumber}}}
+                 \listxadd\blx@localnumaux{%
+                   \string\abx@aux@number
+                     {\the\c@instcount}
+                     {\abx@field@entrykey}
+                     {\the\c@refsection}
+                     {\abx@field@localnumber}}}
              % If localnumbers were already in the .aux, add them
              % again from the .aux. This prevents some cycling
              % problems where pagebreaks change after localnumber
              % settles down and then we need another run which then
              % regenerates localnumber requiring another run but then
              % the pagebreaks change back again ... etc.
-             {\listxadd\blx@localnumaux{\string\abx@aux@number{\the\c@instcount}{\abx@field@entrykey}{\the\c@refsection}{\abx@field@localnumber}}}}
+             {\listxadd\blx@localnumaux{%
+                 \string\abx@aux@number
+                   {\the\c@instcount}
+                   {\abx@field@entrykey}
+                   {\the\c@refsection}
+                   {\abx@field@localnumber}}}}
           {}}%
        {}}
     {}%
@@ -6284,7 +6322,8 @@
   \togglefalse{blx@omitnumbers}%
   \setkeys{blx@bib2}{#1}% ... now we have correct \blx@tempa, set rest of options
   \blx@rest@actives
-  \csxappto{blx@xml@slistsbib}{\blx@xml@slist{entry}{\blx@tempe}{\blx@tempc}{\blx@tempd}}%
+  \csxappto{blx@xml@slistsbib}{%
+    \blx@xml@slist{entry}{\blx@tempe}{\blx@tempc}{\blx@tempd}}%
   \ifdefvoid\blx@tempa
     {\blx@warn@bibempty\endgroup}
     {\blx@bibliography\blx@tempa}}
@@ -6536,6 +6575,10 @@
 \@onlypreamble\AtBeginBibliography
 \@onlypreamble\AtEveryBibitem
 
+\def\blx@imc@UseBibitemHook{\csuse{blx@hook@bibitem}}
+
+\blx@regimcs{\UseBibitemHook}
+
 \newrobustcmd*{\AtNextBibliography}{%
   \ifundef\blx@hook@bibinit@next
     {\gdef\blx@hook@bibinit@next{\global\undef\blx@hook@bibinit@next}}
@@ -6637,7 +6680,8 @@
   \blx@safe@actives
   \setkeys{blx@los2}{#1}% ... now we have correct \blx@tempa, set rest of options
   \blx@rest@actives
-  \csxappto{blx@xml@slistsbib}{\blx@xml@slistlos{shorthand}{\blx@tempe}{\blx@tempc}{\blx@tempd}}%
+  \csxappto{blx@xml@slistsbib}{%
+    \blx@xml@slistlos{shorthand}{\blx@tempe}{\blx@tempc}{\blx@tempd}}%
   \ifdefvoid\blx@tempa
     {\blx@warn@losempty\endgroup}
     {\blx@shorthands\blx@tempa}}
@@ -6756,8 +6800,9 @@
     \ifblank{#1}
       {}
       {\let\blx@bibfiles\@empty
-       \blx@xsanitizeafter{\forcsvlist\blx@refsection@addfile}{#1}%
+       % globals should be first as it might contain macros needed for others
        \forlistloop{\listadd\blx@bibfiles}\blx@bibfiles@global}%
+       \blx@xsanitizeafter{\forcsvlist\blx@refsection@addfile}{#1}%
     \blx@refsection@biber
   \fi
   \blx@info{Setting label 'refsection:\the\c@refsection'}%
@@ -7057,8 +7102,14 @@
 
 \newrobustcmd*{\AtEveryCite}{\gappto\blx@hook@cite}
 \newrobustcmd*{\AtEveryCitekey}{\gappto\blx@hook@citekey}
+\newrobustcmd*{\AtEveryMultiCite}{\gappto\blx@hook@mcite}
 \@onlypreamble\AtEveryCite
 \@onlypreamble\AtEveryCitekey
+\@onlypreamble\AtEveryMultiCite
+
+\def\blx@imc@UseEveryCiteHook{\csuse{blx@hook@cite}}
+\def\blx@imc@UseEveryCitekeyHook{\csuse{blx@hook@citekey}}
+\def\blx@imc@UseEveryMultiCiteHook{\csuse{blx@hook@mcite}}
 
 \newrobustcmd*{\AtNextCite}{%
   \ifundef\blx@hook@cite@next
@@ -7072,7 +7123,24 @@
     {}%
   \gappto\blx@hook@citekey@next}
 
-% {<style>]
+\newrobustcmd*{\AtNextMultiCite}{%
+  \ifundef\blx@hook@mcite@next
+    {\gdef\blx@hook@mcite@next{\global\undef\blx@hook@mcite@next}}
+    {}%
+  \gappto\blx@hook@mcite@next}
+
+\def\blx@imc@UseNextCiteHook{\csuse{blx@hook@cite@next}}
+\def\blx@imc@UseNextCitekeyHook{\csuse{blx@hook@citekey@next}}
+\def\blx@imc@UseNextMultiCiteHook{\csuse{blx@hook@mcite@next}}
+
+\def\blx@imc@DeferNextCitekeyHook{\undef\blx@hook@citekey@next}
+
+\blx@regimcs{%
+  \UseEveryCiteHook \UseEveryCitekeyHook \UseEveryMultiCiteHook
+  \UseNextCiteHook \UseNextCitekeyHook \UseNextMultiCiteHook
+  \DeferNextCitekeyHook}
+
+% {<style>}
 
 \newrobustcmd*{\RequireCitationStyle}[1]{%
   \blx@inputonce{#1.cbx}{citation style '#1'}{}{}{}
@@ -7877,8 +7945,10 @@
   \fi
   \blx@checkpunct@ii}
 \def\blx@checkpunct@iii#1\blx@checkpunct@ii{%
+  \global\undef\abx@field@postpunct
   \blx@tempa{\blx@postpunct}}
 \def\blx@checkpunct@iv#1\blx@checkpunct@ii#2&#3{%
+  \gdef\abx@field@postpunct{#3}%
   \edef\blx@tempa{%
     \expandonce\blx@tempa{%
     \ifcsdef{blx@pm@\detokenize{#3}}
@@ -8009,6 +8079,8 @@
   \ifnum\c@multicitetotal>\@ne
     \let\blx@ifcitesingle\@secondoftwo
   \fi
+  \csuse{blx@hook@mcite}%
+  \csuse{blx@hook@mcite@next}%
   \ifblank{#2}%
     {}
     {\def\abx@field@multiprenote{#2}}%
@@ -8062,6 +8134,7 @@
 
 \def\blx@multicite#1#2#3#4{%
   \begingroup
+  \csuse{blx@hook@mcite@before}%
   \def\blx@tempa{#1}%
   \def\blx@tempb{#2}%
   \def\blx@tempc{#3}%
@@ -8322,8 +8395,11 @@
     \def\ifhyperref{\blx@TE\blx@imc@ifhyperref}%
     \def\ifmorenames{\blx@TE\blx@imc@ifmorenames}%
     \def\ifmoreitems{\blx@TE\blx@imc@ifmoreitems}%
+    \def\iffirstcitekey{\blx@TE\blx@imc@iffirstcitekey}%
+    \def\iflastcitekey{\blx@TE\blx@imc@iflastcitekey}%
     \def\ifciteseen{\blx@TE\blx@imc@ifciteseen}%
     \def\ifentryseen{\blx@TE\blx@imc@ifentryseen}%
+    \def\ifentryinbib{\blx@TE\blx@imc@ifentryinbib}%
     \def\ifciteibid{\blx@TE\blx@imc@ifciteibid}%
     \def\ifciteidem{\blx@TE\blx@imc@ifciteidem}%
     \def\ifopcit{\blx@TE\blx@imc@ifopcit}%
@@ -8338,6 +8414,7 @@
     \def\iffieldequals#1#2{\blx@TE{\blx@imc@iffieldequals{#1}{#2}}}%
     \def\iffieldequalstr#1#2{\blx@TE{\blx@imc@iffieldequalstr{#1}{#2}}}%
     \def\iffieldsequal#1#2{\blx@TE{\blx@imc@iffieldsequal{#1}{#2}}}%
+    \def\ifbibmacroundef#1{\blx@TE{\blx@imc@ifbibmacroundef{#1}}}%
     \def\iffieldundef#1{\blx@TE{\blx@imc@iffieldundef{#1}}}%
     \def\ifnameequalcs#1#2{\blx@TE{\blx@imc@ifnameequalcs{#1}{#2}}}%
     \def\ifnameequals#1#2{\blx@TE{\blx@imc@ifnameequals{#1}{#2}}}%
@@ -8672,35 +8749,36 @@
   n\or o\or p\or q\or r\or s\or t\or u\or v\or w\or x\or y\or z\else
   \blx@warning@entry{Value out of range}\number#1\fi}
 
-\newrobustcmd*{\volcitecmd}[1]{%
-  \begingroup
-  \def\blx@tempa{\endgroup#1}%
-  \@ifstar
-    {\appto\blx@tempa{*}%
-     \blx@volcitecmd@i}
-    {\blx@volcitecmd@i}}
+% {<macro>}[<pre>]{<vol>}[<post>] => <macro>{<pre>}{{<vol>}{<post>}}
+
+\newrobustcmd*{\volcitecmd}{%
+  \AtNextCite{\DeclareFieldAlias{postnote}{volcitenote}}%
+  \begingroup\let\blx@citeargs\blx@volciteargs}
 
-\def\blx@volcitecmd@i{%
+\protected\def\blx@volciteargs#1{%
+  \endgroup
   \@ifnextchar[%]
-    {\blx@volcitecmd@ii}
-    {\blx@volcitecmd@ii[]}}
+    {\blx@volciteargs@i{#1}}
+    {\blx@volciteargs@i{#1}[]}}
 
-\def\blx@volcitecmd@ii[#1]#2{%
-  \appto\blx@tempa{[#1]}%
-  \blx@getformat\blx@tempb{ffd}{}{volcitevolume}%
+\long\def\blx@volciteargs@i#1[#2]#3{%
   \@ifnextchar[%]
-    {\blx@volcitecmd@iii{#2}}
-    {\edef\blx@tempa{\expandonce\blx@tempa[{%
-       \expandonce{\blx@tempb{#2}}}]}%
-     \blx@tempa}}
+    {\blx@volciteargs@ii{#1}{#2}{#3}}
+    {\blx@citeargs@iii{#1{#2}{{#3}{}}}}}
 
-\def\blx@volcitecmd@iii#1[#2]{%
-  \blx@getformat\blx@tempc{ffd}{}{volcitepages}%
-  \edef\blx@tempa{\expandonce\blx@tempa[{%
-    \expandonce{\blx@tempb{#1}}%
-    \noexpand\volcitedelim
-    \expandonce{\blx@tempc{#2}}}]}%
-  \blx@tempa}
+\long\def\blx@volciteargs@ii#1#2#3[#4]{%
+  \blx@citeargs@iii{#1{#2}{{#3}{#4}}}}
+
+\newrobustcmd*{\multivolcitecmd}{%
+  \AtNextCite{\DeclareFieldAlias{postnote}{volcitenote}}%
+  \def\blx@hook@mcite@before{%
+    \global\undef\blx@hook@mcite@before
+    \let\blx@citeargs\blx@volmciteargs}}
+
+\protected\def\blx@volmciteargs#1{%
+  \@ifnextchar[%]
+    {\blx@volciteargs@i{#1}}
+    {\blx@volciteargs@i{#1}[]}}
 
 %% Control file
 
@@ -8750,11 +8828,11 @@
   #2%
   ~~~~~~</bcf:map>\blx@nl}
 \xdef\blx@xml@sourcemap@perdatasource#1{%
-  ~~~~~~~~<bcf:per_datasource>#1</bcf:per_datasource>\blx@nl}
+  ~~~~~~~~<bcf:per\string_datasource>#1</bcf:per\string_datasource>\blx@nl}
 \xdef\blx@xml@sourcemap@pertype#1{%
-  ~~~~~~~~<bcf:per_type>#1</bcf:per_type>\blx@nl}
+  ~~~~~~~~<bcf:per\string_type>#1</bcf:per\string_type>\blx@nl}
 \xdef\blx@xml@sourcemap@step#1{%
-  ~~~~~~~~<bcf:map_step#1/>\blx@nl}
+  ~~~~~~~~<bcf:map\string_step#1/>\blx@nl}
 
 \xdef\blx@xml@labelalphatemplate#1#2{%
   ~~<bcf:labelalphatemplate type="#1">\blx@nl
@@ -8972,15 +9050,27 @@
     {\eappto\blx@tempa{%
       \blx@xml@comment{SOURCEMAP}%
       \blx@xml@sourcemap{%
-        \ifcsdef{blx@biber@sourcemap@user}{\csuse{blx@biber@sourcemap@user}}{}%
-        \ifcsdef{blx@biber@sourcemap@style}{\csuse{blx@biber@sourcemap@style}}{}%
-        \ifcsdef{blx@biber@sourcemap@defaults@bibtex}{\csuse{blx@biber@sourcemap@defaults@bibtex}}{}%
-        \ifcsdef{blx@biber@sourcemap@defaults@biblatexml}{\csuse{blx@biber@sourcemap@defaults@biblatexml}}{}%
-        \ifcsdef{blx@biber@sourcemap@defaults@endnotexml}{\csuse{blx@biber@sourcemap@defaults@endnotexml}}{}%
-        \ifcsdef{blx@biber@sourcemap@defaults@ris}{\csuse{blx@biber@sourcemap@defaults@ris}}{}%
-        \ifcsdef{blx@biber@sourcemap@defaults@zoterordfxml}{\csuse{blx@biber@sourcemap@defaults@zoterordfxml}}{}%
-      }%
-    }}
+        \ifcsdef{blx@biber@sourcemap@user}
+          {\csuse{blx@biber@sourcemap@user}}
+          {}%
+        \ifcsdef{blx@biber@sourcemap@style}
+          {\csuse{blx@biber@sourcemap@style}}
+          {}%
+        \ifcsdef{blx@biber@sourcemap@defaults@bibtex}
+          {\csuse{blx@biber@sourcemap@defaults@bibtex}}
+          {}%
+        \ifcsdef{blx@biber@sourcemap@defaults@biblatexml}
+          {\csuse{blx@biber@sourcemap@defaults@biblatexml}}
+          {}%
+        \ifcsdef{blx@biber@sourcemap@defaults@endnotexml}
+          {\csuse{blx@biber@sourcemap@defaults@endnotexml}}
+          {}%
+        \ifcsdef{blx@biber@sourcemap@defaults@ris}
+          {\csuse{blx@biber@sourcemap@defaults@ris}}
+          {}%
+        \ifcsdef{blx@biber@sourcemap@defaults@zoterordfxml}
+          {\csuse{blx@biber@sourcemap@defaults@zoterordfxml}}
+          {}}}}
     {}%
   % labelalpha template
   \eappto\blx@tempa{%
@@ -9168,7 +9258,7 @@
     \appto\blx@tempb{ level="#1"}}
 
 \newcommand*{\blx@sourcemap@map}[2][]{%
-  \let\blx@tempd\@empty
+  \let\blx@tempm\@empty
   \let\blx@tempe\@empty
   \let\perdatasource\blx@sourcemap@perdatasource
   \let\pertype\blx@sourcemap@pertype
@@ -9178,11 +9268,11 @@
     {\setkeys{blx@sourcemap@map}{#1}}%
   #2%
   \eappto\blx@tempc{%
-    \blx@xml@sourcemap@map{\blx@tempd}{\blx@tempe}}}
+    \blx@xml@sourcemap@map{\blx@tempm}{\blx@tempe}}}
 
 \define@key{blx@sourcemap@map}{overwrite}[true]{% true|false
   \ifstrequal{#1}{true}
-    {\appto\blx@tempd{ map\string_overwrite="1"}}
+    {\appto\blx@tempm{ map\string_overwrite="1"}}
     {}}
 
 \newcommand*{\blx@sourcemap@perdatasource}[1]{%
@@ -9244,6 +9334,8 @@
     {}}
 \define@key{blx@sourcemap@step}{match}{% characters
   \appto\blx@tempf{ map\string_match="#1"}}
+\define@key{blx@sourcemap@step}{notmatch}{% characters
+  \appto\blx@tempf{ map\string_notmatch="#1"}}
 \define@key{blx@sourcemap@step}{replace}{% characters
   \eappto\blx@tempf{ map\string_replace="#1"}}
 
@@ -9606,9 +9698,12 @@
     {\setkeys{blx@ordered@field}{#1}}%
   \advance\blx@tempcnta\@ne
   \ifdefempty{\blx@tempa}
-    {\csxappto{blx@bcf@\blx@tempb}{\noexpand\blx@xml@ordered{\the\blx@tempcnta}{\blx@tempc}{#2}}}
-    {\def\do##1{\blx@addtypeopt{##1}%
-                \csxappto{blx@bcf@\blx@tempb @##1}{\noexpand\blx@xml@ordered{\the\blx@tempcnta}{\blx@tempc}{#2}}}%
+    {\csxappto{blx@bcf@\blx@tempb}{%
+       \noexpand\blx@xml@ordered{\the\blx@tempcnta}{\blx@tempc}{#2}}}
+    {\def\do##1{%
+       \blx@addtypeopt{##1}%
+       \csxappto{blx@bcf@\blx@tempb @##1}{%
+         \noexpand\blx@xml@ordered{\the\blx@tempcnta}{\blx@tempc}{#2}}}%
      \expandafter\docsvlist\expandafter{\blx@tempa}}}
 
 \newcommand*{\blx@orderedld@field}[2][]{%
@@ -9618,17 +9713,23 @@
     {\setkeys{blx@ordered@field}{#1}}%
   \advance\blx@tempcnta\@ne
   \ifdefempty{\blx@tempa}
-    {\csxappto{blx@bcf@\blx@tempb}{\noexpand\blx@xml@ordered{\the\blx@tempcnta}{ type="field"\blx@tempc}{#2}}}
-    {\def\do##1{\blx@addtypeopt{##1}%
-                \csxappto{blx@bcf@\blx@tempb @##1}{\noexpand\blx@xml@ordered{\the\blx@tempcnta}{\blx@tempc}{#2}}}%
+    {\csxappto{blx@bcf@\blx@tempb}{%
+       \noexpand\blx@xml@ordered{\the\blx@tempcnta}{ type="field"\blx@tempc}{#2}}}
+    {\def\do##1{%
+       \blx@addtypeopt{##1}%
+       \csxappto{blx@bcf@\blx@tempb @##1}{%
+         \noexpand\blx@xml@ordered{\the\blx@tempcnta}{\blx@tempc}{#2}}}%
      \expandafter\docsvlist\expandafter{\blx@tempa}}}
 
 \newcommand*{\blx@orderedld@literal}[1]{%
   \advance\blx@tempcnta\@ne
   \ifdefempty{\blx@tempa}
-    {\csxappto{blx@bcf@\blx@tempb}{\noexpand\blx@xml@ordered{\the\blx@tempcnta}{ type="string"}{#1}}}
-    {\def\do##1{\blx@addtypeopt{##1}%
-                \csxappto{blx@bcf@\blx@tempb @##1}{\noexpand\blx@xml@ordered{\the\blx@tempcnta}{ type="string"}{#1}}}%
+    {\csxappto{blx@bcf@\blx@tempb}{%
+       \noexpand\blx@xml@ordered{\the\blx@tempcnta}{ type="string"}{#1}}}
+    {\def\do##1{%
+       \blx@addtypeopt{##1}%
+       \csxappto{blx@bcf@\blx@tempb @##1}{%
+         \noexpand\blx@xml@ordered{\the\blx@tempcnta}{ type="string"}{#1}}}%
      \expandafter\docsvlist\expandafter{\blx@tempa}}}
 
 \define@key{blx@ordered@field}{form}{%
-- 
cgit v1.2.3

