diff options
author | Karl Berry <karl@freefriends.org> | 2016-05-16 20:26:50 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2016-05-16 20:26:50 +0000 |
commit | 99b61eb759c55661a05ac34b0661970d39ec555e (patch) | |
tree | 981a8c7f471e8fcab120012186ac8699a551ef88 /Master | |
parent | 815e54f6a349937be9afb419f12989c0b9652ab3 (diff) |
biblatex 3.4 (16may16)
git-svn-id: svn://tug.org/texlive/trunk@41192 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
182 files changed, 15314 insertions, 31511 deletions
diff --git a/Master/texmf-dist/bibtex/bst/biblatex/biblatex.bst b/Master/texmf-dist/bibtex/bst/biblatex/biblatex.bst index 56184c314de..557797bc3fd 100644 --- a/Master/texmf-dist/bibtex/bst/biblatex/biblatex.bst +++ b/Master/texmf-dist/bibtex/bst/biblatex/biblatex.bst @@ -1,11 +1,9 @@ % Copyright (c) 2006-2011 Philipp Lehman. +% 2012-2016 Philip Kime, Audrey Boruvka, Joseph Wright % % Permission is granted to copy, distribute and/or modify this % software under the terms of the LaTeX Project Public License -% (LPPL), version 1.3. -% -% The LPPL maintenance status of this software is -% 'author-maintained'. +% (LPPL), version 1.3c. % % This software is provided 'as is', without warranty of any kind, % either expressed or implied, including, but not limited to, the @@ -165,14 +163,15 @@ ENTRY { sortinit label.name label.year sortkey.nosort sortkey.name sortkey.year sortkey.title sortkey.alpha sort.year sort.alph warningmsg } -INTEGERS { ctrl.debug ctrl.bibtex8 ctrl.maxline ctrl.sorting ctrl.cssort ctrl.sortlos +INTEGERS { ctrl.debug ctrl.bibtex8 ctrl.maxline ctrl.sorting ctrl.cssort ctrl.maxnames ctrl.minnames ctrl.useauthor ctrl.useeditor ctrl.usetranslator - ctrl.useprefix ctrl.terseinits ctrl.labelalpha ctrl.singletitle + ctrl.useprefix ctrl.labelalpha ctrl.singletitle ctrl.labeldate citecount tempctra tempctrb tempctrc resvctra resvctrb resvctrc last.extra.num } -STRINGS { ctrl.alphaothers templist tempstrga tempstrgb resvstrga +STRINGS { ctrl.alphaothers ctrl.sortstr + templist tempstrga tempstrgb resvstrga resvstrgb resvstrgc last.name last.hash last.year last.extra } FUNCTION {initialize} { @@ -180,21 +179,20 @@ FUNCTION {initialize} { #12 entry.max$ substring$ #-3 entry.max$ substring$ "Biblatex version: " swap$ * top$ - #0 'ctrl.terseinits := - #0 'ctrl.debug := - #0 'ctrl.labelalpha := - #0 'ctrl.labeldate := - #0 'ctrl.singletitle := - #0 'ctrl.sorting := - #0 'ctrl.sortlos := - #1 'ctrl.useauthor := - #1 'ctrl.useeditor := - #0 'ctrl.usetranslator := - #0 'ctrl.useprefix := - #1 'ctrl.minnames := - #99 'ctrl.maxnames := - #79 'ctrl.maxline := - "+" 'ctrl.alphaothers := + #0 'ctrl.debug := + #0 'ctrl.labelalpha := + #0 'ctrl.labeldate := + #0 'ctrl.singletitle := + #0 'ctrl.sorting := + #1 'ctrl.useauthor := + #1 'ctrl.useeditor := + #0 'ctrl.usetranslator := + #0 'ctrl.useprefix := + #1 'ctrl.minnames := + #99 'ctrl.maxnames := + #79 'ctrl.maxline := + "+" 'ctrl.alphaothers := + "nty" 'ctrl.sortstr := } % ------------------------------------------------------------------- @@ -275,6 +273,13 @@ FUNCTION {wrap:braces} { if$ } +FUNCTION {combine:key:value} { + "=" * + swap$ + wrap:braces * + "," * +} + FUNCTION {delimiter.1} { ctrl.bibtex8 { "0" } @@ -347,6 +352,34 @@ FUNCTION {enquote} { "'" swap$ * "'" * } +FUNCTION {str:length} { + #1 'resvctra := + { duplicate$ duplicate$ #1 resvctra substring$ = not } + { resvctra #1 + 'resvctra := } + while$ + pop$ + resvctra +} + +FUNCTION {str:replace} { + 'resvstrga := + 'resvstrgb := + 'resvstrgc := + resvstrgb str:length 'resvctra := + "" + { resvstrgc empty$ not } + { resvstrgc #1 resvctra substring$ resvstrgb = + { resvstrga * + resvstrgc #1 resvctra + global.max$ substring$ 'resvstrgc := + } + { resvstrgc #1 #1 substring$ * + resvstrgc #2 global.max$ substring$ 'resvstrgc := + } + if$ + } + while$ +} + FUNCTION {bol.to.int} { "true" = { #1 } @@ -423,6 +456,30 @@ FUNCTION {push:fullname} { if$ } +FUNCTION {push:labelname:translator} { + translator empty$ not + usetranslator + and + { "translator" } + { "" } + if$ +} + +FUNCTION {push:labelname:editor} { + useeditor + { shorteditor empty$ + { editor empty$ + { push:labelname:translator } + { "editor" } + if$ + } + { "shorteditor" } + if$ + } + { push:labelname:translator } + if$ +} + FUNCTION {push:shortname:translator} { translator empty$ not usetranslator @@ -530,6 +587,21 @@ FUNCTION {push:name:fullhash} { if$ } +FUNCTION {push:labelname} { + useauthor + { shortauthor empty$ + { author empty$ + { push:labelname:editor } + { "author" } + if$ + } + { "shortauthor" } + if$ + } + { push:labelname:editor } + if$ +} + FUNCTION {check:sortname} { sortname empty$ 'skip$ @@ -600,6 +672,17 @@ FUNCTION {format.range} while$ } +FUNCTION {format:name:part} { + "\~" "[[[TILDE ACCENT]]]" str:replace + "~" "\bibnamedelima " str:replace + "[[[TILDE ACCENT]]]" "\~" str:replace +} + +FUNCTION {format:name:initials} { + ".~" "\bibinitperiod\bibinitdelim " str:replace + "." "\bibinitperiod" str:replace +} + FUNCTION {is.number} { #1 { #0 > } @@ -972,7 +1055,10 @@ FUNCTION {sortkey:main} { { sortkey.alpha * } { shorthand purify * } if$ - delimiter.1 * + duplicate$ empty$ + 'skip$ + { delimiter.1 * } + if$ ctrl.sorting #10 - sortkey:main:string } { ctrl.sorting #30 < @@ -1002,14 +1088,21 @@ FUNCTION {sortkey:main} { FUNCTION {output:indent:field} { duplicate$ empty$ 'skip$ - { " " swap$ * write$ newline$ } + { " " swap$ * write$ newline$ } if$ } FUNCTION {output:indent:subfield} { duplicate$ empty$ 'skip$ - { " " swap$ * write$ newline$ } + { " " swap$ * write$ newline$ } + if$ +} + +FUNCTION {output:indent:subfield:keyval} { + duplicate$ empty$ + 'skip$ + { " " swap$ * write$ newline$ } if$ } @@ -1116,38 +1209,44 @@ FUNCTION {output:write:verb} { if$ } +FUNCTION {output:write:name:hash} { + templist tempctra "{v{}}{l{}}{f{}}{j{}}" format.name$ purify$ +} + FUNCTION {output:write:name:last} { templist tempctra "{ll}" format.name$ duplicate$ 'tempstrga := - wrap:braces - templist tempctra - ctrl.terseinits - { "{l{}}" format.name$ } - { "{l.}" format.name$ + duplicate$ empty$ + 'pop$ + { format:name:part + "family" combine:key:value output:indent:subfield:keyval + templist tempctra "{l.}" format.name$ duplicate$ tempstrga "." * = { duplicate$ text.length$ #1 - text.prefix$ } 'skip$ if$ + format:name:initials + "family_i" combine:key:value output:indent:subfield:keyval } if$ - wrap:braces * } FUNCTION {output:write:name:first} { templist tempctra "{ff}" format.name$ duplicate$ 'tempstrga := - wrap:braces - templist tempctra - ctrl.terseinits - { "{f{}}" format.name$ } - { "{f.}" format.name$ + duplicate$ empty$ + 'pop$ + { format:name:part + "given" combine:key:value output:indent:subfield:keyval + templist tempctra "{f.}" format.name$ duplicate$ tempstrga "." * = { duplicate$ text.length$ #1 - text.prefix$ } 'skip$ if$ + format:name:initials + "given_i" combine:key:value output:indent:subfield:keyval } if$ - wrap:braces * } FUNCTION {output:write:name:prefix} { @@ -1157,11 +1256,11 @@ FUNCTION {output:write:name:prefix} { { #1 'tempctrc := } { #0 'tempctrc := } if$ - wrap:braces - templist tempctra - ctrl.terseinits - { "{v{}}" format.name$ } - { "{v.}" format.name$ + duplicate$ empty$ + 'pop$ + { format:name:part + "prefix" combine:key:value output:indent:subfield:keyval + templist tempctra "{v.}" format.name$ tempctrc { duplicate$ text.length$ #1 - text.prefix$ "'" * } { duplicate$ tempstrga "." * = @@ -1170,26 +1269,28 @@ FUNCTION {output:write:name:prefix} { if$ } if$ + format:name:initials + "prefix_i" combine:key:value output:indent:subfield:keyval } if$ - wrap:braces * } FUNCTION {output:write:name:suffix} { templist tempctra "{jj}" format.name$ duplicate$ 'tempstrga := - wrap:braces - templist tempctra - ctrl.terseinits - { "{j{}}" format.name$ } - { "{j.}" format.name$ + duplicate$ empty$ + 'pop$ + { format:name:part + "suffix" combine:key:value output:indent:subfield:keyval + templist tempctra "{j.}" format.name$ duplicate$ tempstrga "." * = { duplicate$ text.length$ #1 - text.prefix$ } 'skip$ if$ + format:name:initials + "suffix_i" combine:key:value output:indent:subfield:keyval } if$ - wrap:braces * } FUNCTION {output:write:name} { @@ -1210,11 +1311,12 @@ FUNCTION {output:write:name} { "" wrap:braces * "{%" * output:indent:field { tempctrb #0 > } - { "{{}%" output:indent:subfield - " " output:write:name:last * "%" * output:indent:subfield - " " output:write:name:first * "%" * output:indent:subfield - " " output:write:name:prefix * "%" * output:indent:subfield - " " output:write:name:suffix * "}%" * output:indent:subfield + { "{{hash=" output:write:name:hash * "}{%" * output:indent:subfield + output:write:name:prefix + output:write:name:last + output:write:name:suffix + output:write:name:first + "}}%" output:indent:subfield tempctra #1 + 'tempctra := tempctrb #1 - 'tempctrb := } @@ -1308,7 +1410,17 @@ FUNCTION {output:specials} { { label } { shorthand } if$ - "label" swap$ output:write:field + "label" swap$ output:write:field + "labelnamesource" push:labelname output:write:field + shorttitle empty$ + { title empty$ + { "" } + { "title" } + if$ + } + { "shorttitle" } + if$ + "labeltitlesource" swap$ output:write:field ctrl.labelalpha { "labelalpha" labelalpha output:write:field "extraalpha" extraalpha output:write:field @@ -1338,6 +1450,7 @@ FUNCTION {output:specials} { 'skip$ if$ "sortinit" sortinit output:write:field + "sortinithash" sortinit output:write:field singletitle { "singletitle" #1 output:write:bool } 'skip$ @@ -1663,7 +1776,7 @@ FUNCTION {output:entry} { { output:debug } 'skip$ if$ - "\entry" + " \entry" push:cite wrap:braces * tempstrga wrap:braces * entryoptions wrap:braces * @@ -1681,7 +1794,7 @@ FUNCTION {output:entry} { output:dates.2 output:user output:warning - "\endentry" write$ newline$ + " \endentry" write$ newline$ } FUNCTION {control} { skip$ } @@ -1775,7 +1888,7 @@ FUNCTION {input:control:options} { % This version corresponds to the .bbl version, *not* the biblatex version! FUNCTION {input:control:version} { input:control:parse - "$Revision: 2.6 $" + "$Revision: 2.7 $" #12 entry.max$ substring$ #-3 entry.max$ substring$ 'tempstrga := @@ -1796,7 +1909,6 @@ FUNCTION {input:control} { { input:control:options 'ctrl.debug := input:control:options 'ctrl.bibtex8 := input:control:options 'ctrl.cssort := - input:control:options 'ctrl.terseinits := input:control:options 'ctrl.useprefix := input:control:options 'ctrl.useauthor := input:control:options 'ctrl.useeditor := @@ -1805,11 +1917,11 @@ FUNCTION {input:control} { input:control:options 'ctrl.labeldate := input:control:options 'ctrl.singletitle := input:control:options 'ctrl.sorting := - input:control:options 'ctrl.sortlos := input:control:options 'ctrl.maxnames := input:control:options 'ctrl.minnames := input:control:options 'ctrl.maxline := - 'ctrl.alphaothers := + input:control:parse 'ctrl.alphaothers := + 'ctrl.sortstr := } if$ ctrl.maxline #49 < @@ -2180,7 +2292,12 @@ FUNCTION {makelabel:ctrl:alpha:format} { if$ makelabel:alpha:year * } - { pop$ "" } + { pop$ + ctrl.labelalpha not shorthand empty$ or + { "" } + { shorthand } + if$ + } if$ } @@ -2578,20 +2695,6 @@ FUNCTION {mainsort} { 'sort.key$ := } -FUNCTION {lossort} { - ctrl.sortlos - { shorthand empty$ - ctrl:skiplos or - { "" } - { shorthand } - if$ - truncate - 'sort.key$ := - } - 'skip$ - if$ -} - ITERATE {mainsort} SORT @@ -2599,7 +2702,7 @@ SORT % This version corresponds to the .bbl version, *not* the biblatex version! FUNCTION {output:main:begin} { "% $ biblatex auxiliary file $" write$ newline$ - "% $ biblatex version " "$Revision: 2.6 $" + "% $ biblatex bbl format version " "$Revision: 2.7 $" #12 entry.max$ substring$ #-3 entry.max$ substring$ * " $" * write$ newline$ "% Do not modify the above lines!" write$ newline$ "%" write$ newline$ @@ -2616,6 +2719,8 @@ FUNCTION {output:main:begin} { " \aftergroup\endinput}" write$ newline$ " {}" write$ newline$ "\endgroup" write$ newline$ + newline$ + "\sortlist[entry]{" ctrl.sortstr * "/global/}" * write$ } FUNCTION {output:main:preamble} { @@ -2630,44 +2735,16 @@ FUNCTION {output:main:preamble} { } FUNCTION {output:main:end} { - newline$ - "\endinput" write$ newline$ -} - -FUNCTION {output:los:begin} { - newline$ - "\lossort" write$ newline$ + "\endsortlist" write$ newline$ + "\endinput" write$ newline$ } -FUNCTION {output:los:iterate} { - shorthand empty$ - ctrl:skiplos or - 'skip$ - { " \key{" push:cite * "}" * write$ newline$ } - if$ -} - -FUNCTION {output:los:end} { - "\endlossort" write$ newline$ -} - - EXECUTE {output:main:begin} EXECUTE {output:main:preamble} ITERATE {call.type$} -ITERATE {lossort} - -SORT - -EXECUTE {output:los:begin} - -ITERATE {output:los:iterate} - -EXECUTE {output:los:end} - EXECUTE {output:main:end} % ------------------------------------------------------------------- diff --git a/Master/texmf-dist/bibtex/csf/biblatex/latin1.csf b/Master/texmf-dist/bibtex/csf/biblatex/latin1.csf deleted file mode 100644 index 48dfdec0692..00000000000 --- a/Master/texmf-dist/bibtex/csf/biblatex/latin1.csf +++ /dev/null @@ -1,263 +0,0 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% CHARACTER SET: ISO 8859-1 (Latin 1) -% -% ISO 8859-1 is the system character set used by Unix/X Windows and -% MS Windows. -% -% SORTING ORDER: Latin countries -% -% Alphabetical sorting order of Aa..Zz (including accented characters). -% -% This is a BibTeX Codepage and Sort definition file (CSF). It is -% used to define the 8-bit character set used by BibTeX and the -% order in which those characters should be sorted. The file -% format is documented below this header section. -% -% This file will only work with the 8-bit implementation of BibTeX -% written by Niel Kempson and Alejandro Aguilar-Sierra: -% -% http://www.ctan.org/tex-archive/biblio/bibtex/8-bit/ -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% FILE FORMAT -% -% The codepage and sorting order (CS) file defines how BibTeX will treat an -% 8-bit character set, specifically which characters are to be treated as -% letters, the upper/lower case relationships between characters, and the -% sorting order of characters. -% -% The CS file may contain a number of sections, each presented in the -% form of a TeX macro: -% -% \section-name{ -% <section definitions> -% } -% -% Four sections are currently supported: \lowupcase, \lowercase, \uppercase -% and \order. The syntax of the four supported sections is summarised below. -% -% 8-bit characters may be entered naturally, but to avoid problems with -% character set translation or corruption, they can also be entered using -% the TeX-style portable notation for character codes, i.e. ^^XX, where XX -% is the hexadecimal value ofthe character code. -% -% Reading of the sections ends when the first '}' character is reached, so -% '}' can't be included in a section. You can't use ^^7d either. -% -% The percent sign ('%') is used to introduce a trailing comment - it and -% all remaining characters on a line are ignored. ^^25 has the same effect. -% -% -% \lowupcase section -% -% The \lowupcase section of the CS file is used to define the lower -% /upper and upper/lower case relationship of pairs of specified -% characters. It is only used if the relationship is symmetrical - use -% \lowercase or \upcase if it isn't. -% -% The syntax of the \lowupcase section is: -% -% \lowupcase{ -% <LC-1> <UC-1> % Comment begins with a percent sign -% <LC-2> <UC-2> -% ... -% <LC-N> <UC-N> -% } -% -% Each <LC-n> <UC-n> pair of characters defines that the upper case -% equivalent of <LC-n> is <UC-n> *and* the lower case equivalent of -% <UC-n> is <LC-n>. -% -% You cannot redefine the lower or upper case equivalent of an ASCII -% character (code < 128), so all instances of <LC-n> and <UC-n> -% (i.e. both sides of the relationship) must have codes > 127. -% -% -% \lowercase section -% -% The \lowercase section of the CS file is used to define the lower case -% equivalent of specified characters. It should normally only be used -% if the relationship isn't symmetrical - use \lowupcase if it is. -% -% The syntax of the \lowercase section is: -% -% \lowercase{ -% <UC-1> <LC-1> % Comment begins with a percent sign -% <UC-2> <LC-2> -% ... -% <UC-N> <LC-N> -% } -% -% Each <LC-n> <UC-n> pair of characters defines that the lower case -% equivalent of <UC-n> is <LC-n>. -% -% You cannot redefine the lower case equivalent of an ASCII character -% (code < 128), so all instances of <UC-n> (i.e. the left hand side -% of the relationship) must have codes > 127. -% -% -% \uppercase section -% -% The \uppercase section of the CS file is used to define the upper case -% equivalent of specified characters. It should normally only be used -% if the relationship isn't symmetrical - use \lowupcase if it is. -% -% The syntax of the \uppercase section is: -% -% \uppercase{ -% <LC-1> <UC-1> % Comment begins with a percent sign -% <LC-2> <UC-2> -% ... -% <LC-N> <UC-N> -% } -% -% Each <LC-n> <UC-n> pair of characters defines that the upper case -% case equivalent of <LC-n> is <UC-n>. -% -% You cannot redefine the upper case equivalent of an ASCII character -% (code < 128), so all instances of <LC-n> (i.e. the left hand side -% of the relationship) must have codes > 127. -% -% -% \order section -% -% The \order section of the CS file is used to define the order in which -% characters are sorted. -% -% The syntax of the \order section is: -% -% \order{ -% <char-1> % Comment begins with a percent sign -% <char-2> <char-3> % whitespace between the chars -% <char-4> - <char-5> % a hyphen between the chars -% <char-4> _ <char-5> % an underscore between the chars -% ... -% <char-n> -% } -% -% All characters on the same line are given the same sorting weight. -% -% The construct <char-1> <underscore> <char-2> is used to denote that -% all characters in the range <char-1> to <char-2> should be given the -% same sorting weight. For example, "A _ Z" would cause all ASCII -% upper case alphabetical characters to have the same sorting weight -% and would be equivalent to placing all 26 characters on the same line. -% -% The construct <char-1> <hyphen> <char-2> is used to denote that all -% characters in the range <char-1> to <char-2> should be given an -% ascending set of sorting weights, starting with <char-1> and ending -% with <char-2>. For example, "A - Z" would cause all upper case ASCII -% alphabetical characters to be sorted in ascending order and would be -% equivalent to placing 'A' on the first line, 'B' on the second, -% through to 'Z' on the 26th line. -% -% The characters at the beginning of the order section are given a lower -% sorting weight than characters occuring later. When sorting -% alphabetically, characters with the lowest weight come first. -% -% All characters not in the \order section (including ASCII characters) -% are given the same very high sorting weight to ensure that they come -% last when sorting alphabetically. -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% CHARACTER SET - -\lowupcase{ % Lowercase Uppercase - % Code TeX Code TeX - % - à À % ^^e0 \`{a} ^^c0 \`{A} - á Á % ^^e1 \'{a} ^^c1 \'{A} - â  % ^^e2 \^{a} ^^c2 \^{A} - ã à % ^^e3 \~{a} ^^c3 \~{A} - ä Ä % ^^e4 \"{a} ^^c4 \"{A} - å Å % ^^e5 \aa ^^c5 \AA - æ Æ % ^^e6 \ae ^^c6 \AE - ç Ç % ^^e7 \c{c} ^^c7 \c{C} - è È % ^^e8 \`{e} ^^c8 \`{E} - é É % ^^e9 \'{e} ^^c9 \'{E} - ê Ê % ^^ea \^{e} ^^ca \^{E} - ë Ë % ^^eb \"{e} ^^cb \"{E} - ì Ì % ^^ec \`{\i} ^^cc \`{I} - í Í % ^^ed \'{\i} ^^cd \'{I} - î Î % ^^ee \^{\i} ^^ce \^{I} - ï Ï % ^^ef \"{\i} ^^cf \"{I} - ð Ð % ^^f0 \dh ^^d0 \DH - ñ Ñ % ^^f1 \~{n} ^^d1 \~{N} - ò Ò % ^^f2 \`{o} ^^d2 \`{O} - ó Ó % ^^f3 \'{o} ^^d3 \'{O} - ô Ô % ^^f4 \^{o} ^^d4 \^{O} - õ Õ % ^^f5 \~{o} ^^d5 \~{O} - ö Ö % ^^f6 \"{o} ^^d6 \"{O} - ø Ø % ^^f8 \o ^^d8 \O - ù Ù % ^^f9 \`{u} ^^d9 \`{U} - ú Ú % ^^fa \'{u} ^^da \'{U} - û Û % ^^fb \^{u} ^^db \^{U} - ü Ü % ^^fc \"{u} ^^dc \"{U} - ý Ý % ^^fd \'{y} ^^dd \'{Y} - þ Þ % ^^fe \th ^^de \TH -} - -% SORTING ORDER - -\order{ - 0-9 - A À Á Â Ã Å Ä Æ - a à á â ã å ä æ - B - b - C Ç - c ç - D Ð - d ð - E È É Ê Ë - e è é ê ë - F - f - G - g - H - h - I Ì Í Î Ï - i ì í î ï - J - j - K - k - L - l - M - m - N Ñ - n ñ - O Ò Ó Ô Õ Ö Ø - o ò ó ô õ ö ø - P - p - Q - q - R - r - S - s ß - T Þ - t þ - U Ù Ú Û Ü - u ù ú û ü - V - v - W - w - X - x - Y Ý - y ý ÿ - Z - z -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% END OF FILE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/Master/texmf-dist/bibtex/csf/biblatex/latin1_at.csf b/Master/texmf-dist/bibtex/csf/biblatex/latin1_at.csf deleted file mode 100644 index 68c27534fc3..00000000000 --- a/Master/texmf-dist/bibtex/csf/biblatex/latin1_at.csf +++ /dev/null @@ -1,270 +0,0 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% CHARACTER SET: ISO 8859-1 (Latin 1) -% -% ISO 8859-1 is the system character set used by Unix/X Windows and -% MS Windows. -% -% SORTING ORDER: Austrian -% -% Alphabetical sorting order of Aa..Zz (including accented characters). -% -% This is a BibTeX Codepage and Sort definition file (CSF). It is -% used to define the 8-bit character set used by BibTeX and the -% order in which those characters should be sorted. The file -% format is documented below this header section. -% -% This file will only work with the 8-bit implementation of BibTeX -% written by Niel Kempson and Alejandro Aguilar-Sierra: -% -% http://www.ctan.org/tex-archive/biblio/bibtex/8-bit/ -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% FILE FORMAT -% -% The codepage and sorting order (CS) file defines how BibTeX will treat an -% 8-bit character set, specifically which characters are to be treated as -% letters, the upper/lower case relationships between characters, and the -% sorting order of characters. -% -% The CS file may contain a number of sections, each presented in the -% form of a TeX macro: -% -% \section-name{ -% <section definitions> -% } -% -% Four sections are currently supported: \lowupcase, \lowercase, \uppercase -% and \order. The syntax of the four supported sections is summarised below. -% -% 8-bit characters may be entered naturally, but to avoid problems with -% character set translation or corruption, they can also be entered using -% the TeX-style portable notation for character codes, i.e. ^^XX, where XX -% is the hexadecimal value ofthe character code. -% -% Reading of the sections ends when the first '}' character is reached, so -% '}' can't be included in a section. You can't use ^^7d either. -% -% The percent sign ('%') is used to introduce a trailing comment - it and -% all remaining characters on a line are ignored. ^^25 has the same effect. -% -% -% \lowupcase section -% -% The \lowupcase section of the CS file is used to define the lower -% /upper and upper/lower case relationship of pairs of specified -% characters. It is only used if the relationship is symmetrical - use -% \lowercase or \upcase if it isn't. -% -% The syntax of the \lowupcase section is: -% -% \lowupcase{ -% <LC-1> <UC-1> % Comment begins with a percent sign -% <LC-2> <UC-2> -% ... -% <LC-N> <UC-N> -% } -% -% Each <LC-n> <UC-n> pair of characters defines that the upper case -% equivalent of <LC-n> is <UC-n> *and* the lower case equivalent of -% <UC-n> is <LC-n>. -% -% You cannot redefine the lower or upper case equivalent of an ASCII -% character (code < 128), so all instances of <LC-n> and <UC-n> -% (i.e. both sides of the relationship) must have codes > 127. -% -% -% \lowercase section -% -% The \lowercase section of the CS file is used to define the lower case -% equivalent of specified characters. It should normally only be used -% if the relationship isn't symmetrical - use \lowupcase if it is. -% -% The syntax of the \lowercase section is: -% -% \lowercase{ -% <UC-1> <LC-1> % Comment begins with a percent sign -% <UC-2> <LC-2> -% ... -% <UC-N> <LC-N> -% } -% -% Each <LC-n> <UC-n> pair of characters defines that the lower case -% equivalent of <UC-n> is <LC-n>. -% -% You cannot redefine the lower case equivalent of an ASCII character -% (code < 128), so all instances of <UC-n> (i.e. the left hand side -% of the relationship) must have codes > 127. -% -% -% \uppercase section -% -% The \uppercase section of the CS file is used to define the upper case -% equivalent of specified characters. It should normally only be used -% if the relationship isn't symmetrical - use \lowupcase if it is. -% -% The syntax of the \uppercase section is: -% -% \uppercase{ -% <LC-1> <UC-1> % Comment begins with a percent sign -% <LC-2> <UC-2> -% ... -% <LC-N> <UC-N> -% } -% -% Each <LC-n> <UC-n> pair of characters defines that the upper case -% case equivalent of <LC-n> is <UC-n>. -% -% You cannot redefine the upper case equivalent of an ASCII character -% (code < 128), so all instances of <LC-n> (i.e. the left hand side -% of the relationship) must have codes > 127. -% -% -% \order section -% -% The \order section of the CS file is used to define the order in which -% characters are sorted. -% -% The syntax of the \order section is: -% -% \order{ -% <char-1> % Comment begins with a percent sign -% <char-2> <char-3> % whitespace between the chars -% <char-4> - <char-5> % a hyphen between the chars -% <char-4> _ <char-5> % an underscore between the chars -% ... -% <char-n> -% } -% -% All characters on the same line are given the same sorting weight. -% -% The construct <char-1> <underscore> <char-2> is used to denote that -% all characters in the range <char-1> to <char-2> should be given the -% same sorting weight. For example, "A _ Z" would cause all ASCII -% upper case alphabetical characters to have the same sorting weight -% and would be equivalent to placing all 26 characters on the same line. -% -% The construct <char-1> <hyphen> <char-2> is used to denote that all -% characters in the range <char-1> to <char-2> should be given an -% ascending set of sorting weights, starting with <char-1> and ending -% with <char-2>. For example, "A - Z" would cause all upper case ASCII -% alphabetical characters to be sorted in ascending order and would be -% equivalent to placing 'A' on the first line, 'B' on the second, -% through to 'Z' on the 26th line. -% -% The characters at the beginning of the order section are given a lower -% sorting weight than characters occuring later. When sorting -% alphabetically, characters with the lowest weight come first. -% -% All characters not in the \order section (including ASCII characters) -% are given the same very high sorting weight to ensure that they come -% last when sorting alphabetically. -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% CHARACTER SET - -\lowupcase{ % Lowercase Uppercase - % Code TeX Code TeX - % - à À % ^^e0 \`{a} ^^c0 \`{A} - á Á % ^^e1 \'{a} ^^c1 \'{A} - â  % ^^e2 \^{a} ^^c2 \^{A} - ã à % ^^e3 \~{a} ^^c3 \~{A} - ä Ä % ^^e4 \"{a} ^^c4 \"{A} - å Å % ^^e5 \aa ^^c5 \AA - æ Æ % ^^e6 \ae ^^c6 \AE - ç Ç % ^^e7 \c{c} ^^c7 \c{C} - è È % ^^e8 \`{e} ^^c8 \`{E} - é É % ^^e9 \'{e} ^^c9 \'{E} - ê Ê % ^^ea \^{e} ^^ca \^{E} - ë Ë % ^^eb \"{e} ^^cb \"{E} - ì Ì % ^^ec \`{\i} ^^cc \`{I} - í Í % ^^ed \'{\i} ^^cd \'{I} - î Î % ^^ee \^{\i} ^^ce \^{I} - ï Ï % ^^ef \"{\i} ^^cf \"{I} - ð Ð % ^^f0 \dh ^^d0 \DH - ñ Ñ % ^^f1 \~{n} ^^d1 \~{N} - ò Ò % ^^f2 \`{o} ^^d2 \`{O} - ó Ó % ^^f3 \'{o} ^^d3 \'{O} - ô Ô % ^^f4 \^{o} ^^d4 \^{O} - õ Õ % ^^f5 \~{o} ^^d5 \~{O} - ö Ö % ^^f6 \"{o} ^^d6 \"{O} - ø Ø % ^^f8 \o ^^d8 \O - ù Ù % ^^f9 \`{u} ^^d9 \`{U} - ú Ú % ^^fa \'{u} ^^da \'{U} - û Û % ^^fb \^{u} ^^db \^{U} - ü Ü % ^^fc \"{u} ^^dc \"{U} - ý Ý % ^^fd \'{y} ^^dd \'{Y} - þ Þ % ^^fe \th ^^de \TH -} - -% SORTING ORDER - -\order{ - 0-9 - A À Á  à Š- Ä Æ - a à á â ã å - ä æ - B - b - C Ç - c ç - D Ð - d ð - E È É Ê Ë - e è é ê ë - F - f - G - g - H - h - I Ì Í Î Ï - i ì í î ï - J - j - K - k - L - l - M - m - N Ñ - n ñ - O Ò Ó Ô Õ - Ö Ø - o ò ó ô õ - ö ø - P - p - Q - q - R - r - S - s - ß - T Þ - t þ - U Ù Ú Û - Ü - u ù ú û - ü - V - v - W - w - X - x - Y Ý - y ý ÿ - Z - z -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% END OF FILE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/Master/texmf-dist/bibtex/csf/biblatex/latin1_de.csf b/Master/texmf-dist/bibtex/csf/biblatex/latin1_de.csf deleted file mode 100644 index 1fadc91c024..00000000000 --- a/Master/texmf-dist/bibtex/csf/biblatex/latin1_de.csf +++ /dev/null @@ -1,270 +0,0 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% CHARACTER SET: ISO 8859-1 (Latin 1) -% -% ISO 8859-1 is the system character set used by Unix/X Windows and -% MS Windows. -% -% SORTING ORDER: German -% -% Alphabetical sorting order of Aa..Zz (including accented characters). -% -% This is a BibTeX Codepage and Sort definition file (CSF). It is -% used to define the 8-bit character set used by BibTeX and the -% order in which those characters should be sorted. The file -% format is documented below this header section. -% -% This file will only work with the 8-bit implementation of BibTeX -% written by Niel Kempson and Alejandro Aguilar-Sierra: -% -% http://www.ctan.org/tex-archive/biblio/bibtex/8-bit/ -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% FILE FORMAT -% -% The codepage and sorting order (CS) file defines how BibTeX will treat an -% 8-bit character set, specifically which characters are to be treated as -% letters, the upper/lower case relationships between characters, and the -% sorting order of characters. -% -% The CS file may contain a number of sections, each presented in the -% form of a TeX macro: -% -% \section-name{ -% <section definitions> -% } -% -% Four sections are currently supported: \lowupcase, \lowercase, \uppercase -% and \order. The syntax of the four supported sections is summarised below. -% -% 8-bit characters may be entered naturally, but to avoid problems with -% character set translation or corruption, they can also be entered using -% the TeX-style portable notation for character codes, i.e. ^^XX, where XX -% is the hexadecimal value ofthe character code. -% -% Reading of the sections ends when the first '}' character is reached, so -% '}' can't be included in a section. You can't use ^^7d either. -% -% The percent sign ('%') is used to introduce a trailing comment - it and -% all remaining characters on a line are ignored. ^^25 has the same effect. -% -% -% \lowupcase section -% -% The \lowupcase section of the CS file is used to define the lower -% /upper and upper/lower case relationship of pairs of specified -% characters. It is only used if the relationship is symmetrical - use -% \lowercase or \upcase if it isn't. -% -% The syntax of the \lowupcase section is: -% -% \lowupcase{ -% <LC-1> <UC-1> % Comment begins with a percent sign -% <LC-2> <UC-2> -% ... -% <LC-N> <UC-N> -% } -% -% Each <LC-n> <UC-n> pair of characters defines that the upper case -% equivalent of <LC-n> is <UC-n> *and* the lower case equivalent of -% <UC-n> is <LC-n>. -% -% You cannot redefine the lower or upper case equivalent of an ASCII -% character (code < 128), so all instances of <LC-n> and <UC-n> -% (i.e. both sides of the relationship) must have codes > 127. -% -% -% \lowercase section -% -% The \lowercase section of the CS file is used to define the lower case -% equivalent of specified characters. It should normally only be used -% if the relationship isn't symmetrical - use \lowupcase if it is. -% -% The syntax of the \lowercase section is: -% -% \lowercase{ -% <UC-1> <LC-1> % Comment begins with a percent sign -% <UC-2> <LC-2> -% ... -% <UC-N> <LC-N> -% } -% -% Each <LC-n> <UC-n> pair of characters defines that the lower case -% equivalent of <UC-n> is <LC-n>. -% -% You cannot redefine the lower case equivalent of an ASCII character -% (code < 128), so all instances of <UC-n> (i.e. the left hand side -% of the relationship) must have codes > 127. -% -% -% \uppercase section -% -% The \uppercase section of the CS file is used to define the upper case -% equivalent of specified characters. It should normally only be used -% if the relationship isn't symmetrical - use \lowupcase if it is. -% -% The syntax of the \uppercase section is: -% -% \uppercase{ -% <LC-1> <UC-1> % Comment begins with a percent sign -% <LC-2> <UC-2> -% ... -% <LC-N> <UC-N> -% } -% -% Each <LC-n> <UC-n> pair of characters defines that the upper case -% case equivalent of <LC-n> is <UC-n>. -% -% You cannot redefine the upper case equivalent of an ASCII character -% (code < 128), so all instances of <LC-n> (i.e. the left hand side -% of the relationship) must have codes > 127. -% -% -% \order section -% -% The \order section of the CS file is used to define the order in which -% characters are sorted. -% -% The syntax of the \order section is: -% -% \order{ -% <char-1> % Comment begins with a percent sign -% <char-2> <char-3> % whitespace between the chars -% <char-4> - <char-5> % a hyphen between the chars -% <char-4> _ <char-5> % an underscore between the chars -% ... -% <char-n> -% } -% -% All characters on the same line are given the same sorting weight. -% -% The construct <char-1> <underscore> <char-2> is used to denote that -% all characters in the range <char-1> to <char-2> should be given the -% same sorting weight. For example, "A _ Z" would cause all ASCII -% upper case alphabetical characters to have the same sorting weight -% and would be equivalent to placing all 26 characters on the same line. -% -% The construct <char-1> <hyphen> <char-2> is used to denote that all -% characters in the range <char-1> to <char-2> should be given an -% ascending set of sorting weights, starting with <char-1> and ending -% with <char-2>. For example, "A - Z" would cause all upper case ASCII -% alphabetical characters to be sorted in ascending order and would be -% equivalent to placing 'A' on the first line, 'B' on the second, -% through to 'Z' on the 26th line. -% -% The characters at the beginning of the order section are given a lower -% sorting weight than characters occuring later. When sorting -% alphabetically, characters with the lowest weight come first. -% -% All characters not in the \order section (including ASCII characters) -% are given the same very high sorting weight to ensure that they come -% last when sorting alphabetically. -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% CHARACTER SET - -\lowupcase{ % Lowercase Uppercase - % Code TeX Code TeX - % - à À % ^^e0 \`{a} ^^c0 \`{A} - á Á % ^^e1 \'{a} ^^c1 \'{A} - â  % ^^e2 \^{a} ^^c2 \^{A} - ã à % ^^e3 \~{a} ^^c3 \~{A} - ä Ä % ^^e4 \"{a} ^^c4 \"{A} - å Å % ^^e5 \aa ^^c5 \AA - æ Æ % ^^e6 \ae ^^c6 \AE - ç Ç % ^^e7 \c{c} ^^c7 \c{C} - è È % ^^e8 \`{e} ^^c8 \`{E} - é É % ^^e9 \'{e} ^^c9 \'{E} - ê Ê % ^^ea \^{e} ^^ca \^{E} - ë Ë % ^^eb \"{e} ^^cb \"{E} - ì Ì % ^^ec \`{\i} ^^cc \`{I} - í Í % ^^ed \'{\i} ^^cd \'{I} - î Î % ^^ee \^{\i} ^^ce \^{I} - ï Ï % ^^ef \"{\i} ^^cf \"{I} - ð Ð % ^^f0 \dh ^^d0 \DH - ñ Ñ % ^^f1 \~{n} ^^d1 \~{N} - ò Ò % ^^f2 \`{o} ^^d2 \`{O} - ó Ó % ^^f3 \'{o} ^^d3 \'{O} - ô Ô % ^^f4 \^{o} ^^d4 \^{O} - õ Õ % ^^f5 \~{o} ^^d5 \~{O} - ö Ö % ^^f6 \"{o} ^^d6 \"{O} - ø Ø % ^^f8 \o ^^d8 \O - ù Ù % ^^f9 \`{u} ^^d9 \`{U} - ú Ú % ^^fa \'{u} ^^da \'{U} - û Û % ^^fb \^{u} ^^db \^{U} - ü Ü % ^^fc \"{u} ^^dc \"{U} - ý Ý % ^^fd \'{y} ^^dd \'{Y} - þ Þ % ^^fe \th ^^de \TH -} - -% SORTING ORDER - -\order{ - 0-9 - A À Á  à Š- Ä Æ - a à á â ã å - ä æ - B - b - C Ç - c ç - D Ð - d ð - E È É Ê Ë - e è é ê ë - F - f - G - g - H - h - I Ì Í Î Ï - i ì í î ï - J - j - K - k - L - l - M - m - N Ñ - n ñ - O Ò Ó Ô Õ - Ö Ø - o ò ó ô õ - ö ø - P - p - Q - q - R - r - S - s - ß - T Þ - t þ - U Ù Ú Û - Ü - u ù ú û - ü - V - v - W - w - X - x - Y Ý - y ý ÿ - Z - z -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% END OF FILE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/Master/texmf-dist/bibtex/csf/biblatex/latin1_dk.csf b/Master/texmf-dist/bibtex/csf/biblatex/latin1_dk.csf deleted file mode 100644 index 0f42fb8d5aa..00000000000 --- a/Master/texmf-dist/bibtex/csf/biblatex/latin1_dk.csf +++ /dev/null @@ -1,269 +0,0 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% CHARACTER SET: ISO 8859-1 (Latin 1) -% -% ISO 8859-1 is the system character set used by Unix/X Windows and -% MS Windows. -% -% SORTING ORDER: Danish/Norwegian -% -% Alphabetical sorting order of Aa..Zz (including accented characters). -% -% This is a BibTeX Codepage and Sort definition file (CSF). It is -% used to define the 8-bit character set used by BibTeX and the -% order in which those characters should be sorted. The file -% format is documented below this header section. -% -% This file will only work with the 8-bit implementation of BibTeX -% written by Niel Kempson and Alejandro Aguilar-Sierra: -% -% http://www.ctan.org/tex-archive/biblio/bibtex/8-bit/ -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% FILE FORMAT -% -% The codepage and sorting order (CS) file defines how BibTeX will treat an -% 8-bit character set, specifically which characters are to be treated as -% letters, the upper/lower case relationships between characters, and the -% sorting order of characters. -% -% The CS file may contain a number of sections, each presented in the -% form of a TeX macro: -% -% \section-name{ -% <section definitions> -% } -% -% Four sections are currently supported: \lowupcase, \lowercase, \uppercase -% and \order. The syntax of the four supported sections is summarised below. -% -% 8-bit characters may be entered naturally, but to avoid problems with -% character set translation or corruption, they can also be entered using -% the TeX-style portable notation for character codes, i.e. ^^XX, where XX -% is the hexadecimal value ofthe character code. -% -% Reading of the sections ends when the first '}' character is reached, so -% '}' can't be included in a section. You can't use ^^7d either. -% -% The percent sign ('%') is used to introduce a trailing comment - it and -% all remaining characters on a line are ignored. ^^25 has the same effect. -% -% -% \lowupcase section -% -% The \lowupcase section of the CS file is used to define the lower -% /upper and upper/lower case relationship of pairs of specified -% characters. It is only used if the relationship is symmetrical - use -% \lowercase or \upcase if it isn't. -% -% The syntax of the \lowupcase section is: -% -% \lowupcase{ -% <LC-1> <UC-1> % Comment begins with a percent sign -% <LC-2> <UC-2> -% ... -% <LC-N> <UC-N> -% } -% -% Each <LC-n> <UC-n> pair of characters defines that the upper case -% equivalent of <LC-n> is <UC-n> *and* the lower case equivalent of -% <UC-n> is <LC-n>. -% -% You cannot redefine the lower or upper case equivalent of an ASCII -% character (code < 128), so all instances of <LC-n> and <UC-n> -% (i.e. both sides of the relationship) must have codes > 127. -% -% -% \lowercase section -% -% The \lowercase section of the CS file is used to define the lower case -% equivalent of specified characters. It should normally only be used -% if the relationship isn't symmetrical - use \lowupcase if it is. -% -% The syntax of the \lowercase section is: -% -% \lowercase{ -% <UC-1> <LC-1> % Comment begins with a percent sign -% <UC-2> <LC-2> -% ... -% <UC-N> <LC-N> -% } -% -% Each <LC-n> <UC-n> pair of characters defines that the lower case -% equivalent of <UC-n> is <LC-n>. -% -% You cannot redefine the lower case equivalent of an ASCII character -% (code < 128), so all instances of <UC-n> (i.e. the left hand side -% of the relationship) must have codes > 127. -% -% -% \uppercase section -% -% The \uppercase section of the CS file is used to define the upper case -% equivalent of specified characters. It should normally only be used -% if the relationship isn't symmetrical - use \lowupcase if it is. -% -% The syntax of the \uppercase section is: -% -% \uppercase{ -% <LC-1> <UC-1> % Comment begins with a percent sign -% <LC-2> <UC-2> -% ... -% <LC-N> <UC-N> -% } -% -% Each <LC-n> <UC-n> pair of characters defines that the upper case -% case equivalent of <LC-n> is <UC-n>. -% -% You cannot redefine the upper case equivalent of an ASCII character -% (code < 128), so all instances of <LC-n> (i.e. the left hand side -% of the relationship) must have codes > 127. -% -% -% \order section -% -% The \order section of the CS file is used to define the order in which -% characters are sorted. -% -% The syntax of the \order section is: -% -% \order{ -% <char-1> % Comment begins with a percent sign -% <char-2> <char-3> % whitespace between the chars -% <char-4> - <char-5> % a hyphen between the chars -% <char-4> _ <char-5> % an underscore between the chars -% ... -% <char-n> -% } -% -% All characters on the same line are given the same sorting weight. -% -% The construct <char-1> <underscore> <char-2> is used to denote that -% all characters in the range <char-1> to <char-2> should be given the -% same sorting weight. For example, "A _ Z" would cause all ASCII -% upper case alphabetical characters to have the same sorting weight -% and would be equivalent to placing all 26 characters on the same line. -% -% The construct <char-1> <hyphen> <char-2> is used to denote that all -% characters in the range <char-1> to <char-2> should be given an -% ascending set of sorting weights, starting with <char-1> and ending -% with <char-2>. For example, "A - Z" would cause all upper case ASCII -% alphabetical characters to be sorted in ascending order and would be -% equivalent to placing 'A' on the first line, 'B' on the second, -% through to 'Z' on the 26th line. -% -% The characters at the beginning of the order section are given a lower -% sorting weight than characters occuring later. When sorting -% alphabetically, characters with the lowest weight come first. -% -% All characters not in the \order section (including ASCII characters) -% are given the same very high sorting weight to ensure that they come -% last when sorting alphabetically. -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% CHARACTER SET - -\lowupcase{ % Lowercase Uppercase - % Code TeX Code TeX - % - à À % ^^e0 \`{a} ^^c0 \`{A} - á Á % ^^e1 \'{a} ^^c1 \'{A} - â  % ^^e2 \^{a} ^^c2 \^{A} - ã à % ^^e3 \~{a} ^^c3 \~{A} - ä Ä % ^^e4 \"{a} ^^c4 \"{A} - å Å % ^^e5 \aa ^^c5 \AA - æ Æ % ^^e6 \ae ^^c6 \AE - ç Ç % ^^e7 \c{c} ^^c7 \c{C} - è È % ^^e8 \`{e} ^^c8 \`{E} - é É % ^^e9 \'{e} ^^c9 \'{E} - ê Ê % ^^ea \^{e} ^^ca \^{E} - ë Ë % ^^eb \"{e} ^^cb \"{E} - ì Ì % ^^ec \`{\i} ^^cc \`{I} - í Í % ^^ed \'{\i} ^^cd \'{I} - î Î % ^^ee \^{\i} ^^ce \^{I} - ï Ï % ^^ef \"{\i} ^^cf \"{I} - ð Ð % ^^f0 \dh ^^d0 \DH - ñ Ñ % ^^f1 \~{n} ^^d1 \~{N} - ò Ò % ^^f2 \`{o} ^^d2 \`{O} - ó Ó % ^^f3 \'{o} ^^d3 \'{O} - ô Ô % ^^f4 \^{o} ^^d4 \^{O} - õ Õ % ^^f5 \~{o} ^^d5 \~{O} - ö Ö % ^^f6 \"{o} ^^d6 \"{O} - ø Ø % ^^f8 \o ^^d8 \O - ù Ù % ^^f9 \`{u} ^^d9 \`{U} - ú Ú % ^^fa \'{u} ^^da \'{U} - û Û % ^^fb \^{u} ^^db \^{U} - ü Ü % ^^fc \"{u} ^^dc \"{U} - ý Ý % ^^fd \'{y} ^^dd \'{Y} - þ Þ % ^^fe \th ^^de \TH -} - -% SORTING ORDER - -\order{ - 0-9 - A À Á Â Ã Ä - a à á â ã ä - B - b - C Ç - c ç - D Ð - d ð - E È É Ê Ë - e è é ê ë - F - f - G - g - H - h - I Ì Í Î Ï - i ì í î ï - J - j - K - k - L - l - M - m - N Ñ - n ñ - O Ò Ó Ô Õ Ö - o ò ó ô õ ö - P - p - Q - q - R - r - S - s ß - T Þ - t þ - U Ù Ú Û Ü - u ù ú û ü - V - v - W - w - X - x - Y Ý - y ý ÿ - Z - z - Æ - æ - Ø - ø - Å - å -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% END OF FILE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/Master/texmf-dist/bibtex/csf/biblatex/latin1_fi.csf b/Master/texmf-dist/bibtex/csf/biblatex/latin1_fi.csf deleted file mode 100644 index 0d2942bca25..00000000000 --- a/Master/texmf-dist/bibtex/csf/biblatex/latin1_fi.csf +++ /dev/null @@ -1,240 +0,0 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% CHARACTER SET: ISO 8859-1 (Latin 1) -% -% ISO 8859-1 is the system character set used by Unix/X Windows and -% MS Windows. -% -% SORTING ORDER: Finnish -% -% Alphabetical sorting order of Aa..Zz (including accented characters). -% -% This is a BibTeX Codepage and Sort definition file (CSF). It is -% used to define the 8-bit character set used by BibTeX and the -% order in which those characters should be sorted. The file -% format is documented below this header section. -% -% This file will only work with the 8-bit implementation of BibTeX -% written by Niel Kempson and Alejandro Aguilar-Sierra: -% -% http://www.ctan.org/tex-archive/biblio/bibtex/8-bit/ -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% FILE FORMAT -% -% The codepage and sorting order (CS) file defines how BibTeX will treat an -% 8-bit character set, specifically which characters are to be treated as -% letters, the upper/lower case relationships between characters, and the -% sorting order of characters. -% -% The CS file may contain a number of sections, each presented in the -% form of a TeX macro: -% -% \section-name{ -% <section definitions> -% } -% -% Four sections are currently supported: \lowupcase, \lowercase, \uppercase -% and \order. The syntax of the four supported sections is summarised below. -% -% 8-bit characters may be entered naturally, but to avoid problems with -% character set translation or corruption, they can also be entered using -% the TeX-style portable notation for character codes, i.e. ^^XX, where XX -% is the hexadecimal value ofthe character code. -% -% Reading of the sections ends when the first '}' character is reached, so -% '}' can't be included in a section. You can't use ^^7d either. -% -% The percent sign ('%') is used to introduce a trailing comment - it and -% all remaining characters on a line are ignored. ^^25 has the same effect. -% -% -% \lowupcase section -% -% The \lowupcase section of the CS file is used to define the lower -% /upper and upper/lower case relationship of pairs of specified -% characters. It is only used if the relationship is symmetrical - use -% \lowercase or \upcase if it isn't. -% -% The syntax of the \lowupcase section is: -% -% \lowupcase{ -% <LC-1> <UC-1> % Comment begins with a percent sign -% <LC-2> <UC-2> -% ... -% <LC-N> <UC-N> -% } -% -% Each <LC-n> <UC-n> pair of characters defines that the upper case -% equivalent of <LC-n> is <UC-n> *and* the lower case equivalent of -% <UC-n> is <LC-n>. -% -% You cannot redefine the lower or upper case equivalent of an ASCII -% character (code < 128), so all instances of <LC-n> and <UC-n> -% (i.e. both sides of the relationship) must have codes > 127. -% -% -% \lowercase section -% -% The \lowercase section of the CS file is used to define the lower case -% equivalent of specified characters. It should normally only be used -% if the relationship isn't symmetrical - use \lowupcase if it is. -% -% The syntax of the \lowercase section is: -% -% \lowercase{ -% <UC-1> <LC-1> % Comment begins with a percent sign -% <UC-2> <LC-2> -% ... -% <UC-N> <LC-N> -% } -% -% Each <LC-n> <UC-n> pair of characters defines that the lower case -% equivalent of <UC-n> is <LC-n>. -% -% You cannot redefine the lower case equivalent of an ASCII character -% (code < 128), so all instances of <UC-n> (i.e. the left hand side -% of the relationship) must have codes > 127. -% -% -% \uppercase section -% -% The \uppercase section of the CS file is used to define the upper case -% equivalent of specified characters. It should normally only be used -% if the relationship isn't symmetrical - use \lowupcase if it is. -% -% The syntax of the \uppercase section is: -% -% \uppercase{ -% <LC-1> <UC-1> % Comment begins with a percent sign -% <LC-2> <UC-2> -% ... -% <LC-N> <UC-N> -% } -% -% Each <LC-n> <UC-n> pair of characters defines that the upper case -% case equivalent of <LC-n> is <UC-n>. -% -% You cannot redefine the upper case equivalent of an ASCII character -% (code < 128), so all instances of <LC-n> (i.e. the left hand side -% of the relationship) must have codes > 127. -% -% -% \order section -% -% The \order section of the CS file is used to define the order in which -% characters are sorted. -% -% The syntax of the \order section is: -% -% \order{ -% <char-1> % Comment begins with a percent sign -% <char-2> <char-3> % whitespace between the chars -% <char-4> - <char-5> % a hyphen between the chars -% <char-4> _ <char-5> % an underscore between the chars -% ... -% <char-n> -% } -% -% All characters on the same line are given the same sorting weight. -% -% The construct <char-1> <underscore> <char-2> is used to denote that -% all characters in the range <char-1> to <char-2> should be given the -% same sorting weight. For example, "A _ Z" would cause all ASCII -% upper case alphabetical characters to have the same sorting weight -% and would be equivalent to placing all 26 characters on the same line. -% -% The construct <char-1> <hyphen> <char-2> is used to denote that all -% characters in the range <char-1> to <char-2> should be given an -% ascending set of sorting weights, starting with <char-1> and ending -% with <char-2>. For example, "A - Z" would cause all upper case ASCII -% alphabetical characters to be sorted in ascending order and would be -% equivalent to placing 'A' on the first line, 'B' on the second, -% through to 'Z' on the 26th line. -% -% The characters at the beginning of the order section are given a lower -% sorting weight than characters occuring later. When sorting -% alphabetically, characters with the lowest weight come first. -% -% All characters not in the \order section (including ASCII characters) -% are given the same very high sorting weight to ensure that they come -% last when sorting alphabetically. -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% CHARACTER SET - -\lowupcase{ % Lowercase Uppercase - % Code TeX Code TeX - % - à À % ^^e0 \`{a} ^^c0 \`{A} - á Á % ^^e1 \'{a} ^^c1 \'{A} - â  % ^^e2 \^{a} ^^c2 \^{A} - ã à % ^^e3 \~{a} ^^c3 \~{A} - ä Ä % ^^e4 \"{a} ^^c4 \"{A} - å Å % ^^e5 \aa ^^c5 \AA - æ Æ % ^^e6 \ae ^^c6 \AE - ç Ç % ^^e7 \c{c} ^^c7 \c{C} - è È % ^^e8 \`{e} ^^c8 \`{E} - é É % ^^e9 \'{e} ^^c9 \'{E} - ê Ê % ^^ea \^{e} ^^ca \^{E} - ë Ë % ^^eb \"{e} ^^cb \"{E} - ì Ì % ^^ec \`{\i} ^^cc \`{I} - í Í % ^^ed \'{\i} ^^cd \'{I} - î Î % ^^ee \^{\i} ^^ce \^{I} - ï Ï % ^^ef \"{\i} ^^cf \"{I} - ð Ð % ^^f0 \dh ^^d0 \DH - ñ Ñ % ^^f1 \~{n} ^^d1 \~{N} - ò Ò % ^^f2 \`{o} ^^d2 \`{O} - ó Ó % ^^f3 \'{o} ^^d3 \'{O} - ô Ô % ^^f4 \^{o} ^^d4 \^{O} - õ Õ % ^^f5 \~{o} ^^d5 \~{O} - ö Ö % ^^f6 \"{o} ^^d6 \"{O} - ø Ø % ^^f8 \o ^^d8 \O - ù Ù % ^^f9 \`{u} ^^d9 \`{U} - ú Ú % ^^fa \'{u} ^^da \'{U} - û Û % ^^fb \^{u} ^^db \^{U} - ü Ü % ^^fc \"{u} ^^dc \"{U} - ý Ý % ^^fd \'{y} ^^dd \'{Y} - þ Þ % ^^fe \th ^^de \TH -} - -% SORTING ORDER - -\order{ - 0-9 - A À Á Â Ã Å Ä Æ a à á â ã å ä æ - B b - C Ç c ç - D Ð d ð - E È É Ê Ë e è é ê ë - F f - G g - H h - I Ì Í Î Ï i ì í î ï - J j - K k - L l - M m - N Ñ n ñ - O Ò Ó Ô o ò ó ô - P p - Q q - R r - S s ß - T Þ t þ - U Ù Ú Û u ù ú û - V v - W w - X x - Y Ý Ü y ý ÿ ü - Z z - Å å - Ä ä - Ö Õ Ø ö õ ø -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% END OF FILE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/Master/texmf-dist/bibtex/csf/biblatex/latin1_no.csf b/Master/texmf-dist/bibtex/csf/biblatex/latin1_no.csf deleted file mode 100644 index 0f42fb8d5aa..00000000000 --- a/Master/texmf-dist/bibtex/csf/biblatex/latin1_no.csf +++ /dev/null @@ -1,269 +0,0 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% CHARACTER SET: ISO 8859-1 (Latin 1) -% -% ISO 8859-1 is the system character set used by Unix/X Windows and -% MS Windows. -% -% SORTING ORDER: Danish/Norwegian -% -% Alphabetical sorting order of Aa..Zz (including accented characters). -% -% This is a BibTeX Codepage and Sort definition file (CSF). It is -% used to define the 8-bit character set used by BibTeX and the -% order in which those characters should be sorted. The file -% format is documented below this header section. -% -% This file will only work with the 8-bit implementation of BibTeX -% written by Niel Kempson and Alejandro Aguilar-Sierra: -% -% http://www.ctan.org/tex-archive/biblio/bibtex/8-bit/ -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% FILE FORMAT -% -% The codepage and sorting order (CS) file defines how BibTeX will treat an -% 8-bit character set, specifically which characters are to be treated as -% letters, the upper/lower case relationships between characters, and the -% sorting order of characters. -% -% The CS file may contain a number of sections, each presented in the -% form of a TeX macro: -% -% \section-name{ -% <section definitions> -% } -% -% Four sections are currently supported: \lowupcase, \lowercase, \uppercase -% and \order. The syntax of the four supported sections is summarised below. -% -% 8-bit characters may be entered naturally, but to avoid problems with -% character set translation or corruption, they can also be entered using -% the TeX-style portable notation for character codes, i.e. ^^XX, where XX -% is the hexadecimal value ofthe character code. -% -% Reading of the sections ends when the first '}' character is reached, so -% '}' can't be included in a section. You can't use ^^7d either. -% -% The percent sign ('%') is used to introduce a trailing comment - it and -% all remaining characters on a line are ignored. ^^25 has the same effect. -% -% -% \lowupcase section -% -% The \lowupcase section of the CS file is used to define the lower -% /upper and upper/lower case relationship of pairs of specified -% characters. It is only used if the relationship is symmetrical - use -% \lowercase or \upcase if it isn't. -% -% The syntax of the \lowupcase section is: -% -% \lowupcase{ -% <LC-1> <UC-1> % Comment begins with a percent sign -% <LC-2> <UC-2> -% ... -% <LC-N> <UC-N> -% } -% -% Each <LC-n> <UC-n> pair of characters defines that the upper case -% equivalent of <LC-n> is <UC-n> *and* the lower case equivalent of -% <UC-n> is <LC-n>. -% -% You cannot redefine the lower or upper case equivalent of an ASCII -% character (code < 128), so all instances of <LC-n> and <UC-n> -% (i.e. both sides of the relationship) must have codes > 127. -% -% -% \lowercase section -% -% The \lowercase section of the CS file is used to define the lower case -% equivalent of specified characters. It should normally only be used -% if the relationship isn't symmetrical - use \lowupcase if it is. -% -% The syntax of the \lowercase section is: -% -% \lowercase{ -% <UC-1> <LC-1> % Comment begins with a percent sign -% <UC-2> <LC-2> -% ... -% <UC-N> <LC-N> -% } -% -% Each <LC-n> <UC-n> pair of characters defines that the lower case -% equivalent of <UC-n> is <LC-n>. -% -% You cannot redefine the lower case equivalent of an ASCII character -% (code < 128), so all instances of <UC-n> (i.e. the left hand side -% of the relationship) must have codes > 127. -% -% -% \uppercase section -% -% The \uppercase section of the CS file is used to define the upper case -% equivalent of specified characters. It should normally only be used -% if the relationship isn't symmetrical - use \lowupcase if it is. -% -% The syntax of the \uppercase section is: -% -% \uppercase{ -% <LC-1> <UC-1> % Comment begins with a percent sign -% <LC-2> <UC-2> -% ... -% <LC-N> <UC-N> -% } -% -% Each <LC-n> <UC-n> pair of characters defines that the upper case -% case equivalent of <LC-n> is <UC-n>. -% -% You cannot redefine the upper case equivalent of an ASCII character -% (code < 128), so all instances of <LC-n> (i.e. the left hand side -% of the relationship) must have codes > 127. -% -% -% \order section -% -% The \order section of the CS file is used to define the order in which -% characters are sorted. -% -% The syntax of the \order section is: -% -% \order{ -% <char-1> % Comment begins with a percent sign -% <char-2> <char-3> % whitespace between the chars -% <char-4> - <char-5> % a hyphen between the chars -% <char-4> _ <char-5> % an underscore between the chars -% ... -% <char-n> -% } -% -% All characters on the same line are given the same sorting weight. -% -% The construct <char-1> <underscore> <char-2> is used to denote that -% all characters in the range <char-1> to <char-2> should be given the -% same sorting weight. For example, "A _ Z" would cause all ASCII -% upper case alphabetical characters to have the same sorting weight -% and would be equivalent to placing all 26 characters on the same line. -% -% The construct <char-1> <hyphen> <char-2> is used to denote that all -% characters in the range <char-1> to <char-2> should be given an -% ascending set of sorting weights, starting with <char-1> and ending -% with <char-2>. For example, "A - Z" would cause all upper case ASCII -% alphabetical characters to be sorted in ascending order and would be -% equivalent to placing 'A' on the first line, 'B' on the second, -% through to 'Z' on the 26th line. -% -% The characters at the beginning of the order section are given a lower -% sorting weight than characters occuring later. When sorting -% alphabetically, characters with the lowest weight come first. -% -% All characters not in the \order section (including ASCII characters) -% are given the same very high sorting weight to ensure that they come -% last when sorting alphabetically. -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% CHARACTER SET - -\lowupcase{ % Lowercase Uppercase - % Code TeX Code TeX - % - à À % ^^e0 \`{a} ^^c0 \`{A} - á Á % ^^e1 \'{a} ^^c1 \'{A} - â  % ^^e2 \^{a} ^^c2 \^{A} - ã à % ^^e3 \~{a} ^^c3 \~{A} - ä Ä % ^^e4 \"{a} ^^c4 \"{A} - å Å % ^^e5 \aa ^^c5 \AA - æ Æ % ^^e6 \ae ^^c6 \AE - ç Ç % ^^e7 \c{c} ^^c7 \c{C} - è È % ^^e8 \`{e} ^^c8 \`{E} - é É % ^^e9 \'{e} ^^c9 \'{E} - ê Ê % ^^ea \^{e} ^^ca \^{E} - ë Ë % ^^eb \"{e} ^^cb \"{E} - ì Ì % ^^ec \`{\i} ^^cc \`{I} - í Í % ^^ed \'{\i} ^^cd \'{I} - î Î % ^^ee \^{\i} ^^ce \^{I} - ï Ï % ^^ef \"{\i} ^^cf \"{I} - ð Ð % ^^f0 \dh ^^d0 \DH - ñ Ñ % ^^f1 \~{n} ^^d1 \~{N} - ò Ò % ^^f2 \`{o} ^^d2 \`{O} - ó Ó % ^^f3 \'{o} ^^d3 \'{O} - ô Ô % ^^f4 \^{o} ^^d4 \^{O} - õ Õ % ^^f5 \~{o} ^^d5 \~{O} - ö Ö % ^^f6 \"{o} ^^d6 \"{O} - ø Ø % ^^f8 \o ^^d8 \O - ù Ù % ^^f9 \`{u} ^^d9 \`{U} - ú Ú % ^^fa \'{u} ^^da \'{U} - û Û % ^^fb \^{u} ^^db \^{U} - ü Ü % ^^fc \"{u} ^^dc \"{U} - ý Ý % ^^fd \'{y} ^^dd \'{Y} - þ Þ % ^^fe \th ^^de \TH -} - -% SORTING ORDER - -\order{ - 0-9 - A À Á Â Ã Ä - a à á â ã ä - B - b - C Ç - c ç - D Ð - d ð - E È É Ê Ë - e è é ê ë - F - f - G - g - H - h - I Ì Í Î Ï - i ì í î ï - J - j - K - k - L - l - M - m - N Ñ - n ñ - O Ò Ó Ô Õ Ö - o ò ó ô õ ö - P - p - Q - q - R - r - S - s ß - T Þ - t þ - U Ù Ú Û Ü - u ù ú û ü - V - v - W - w - X - x - Y Ý - y ý ÿ - Z - z - Æ - æ - Ø - ø - Å - å -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% END OF FILE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/Master/texmf-dist/bibtex/csf/biblatex/latin1_se.csf b/Master/texmf-dist/bibtex/csf/biblatex/latin1_se.csf deleted file mode 100644 index 77cbc094485..00000000000 --- a/Master/texmf-dist/bibtex/csf/biblatex/latin1_se.csf +++ /dev/null @@ -1,269 +0,0 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% CHARACTER SET: ISO 8859-1 (Latin 1) -% -% ISO 8859-1 is the system character set used by Unix/X Windows and -% MS Windows. -% -% SORTING ORDER: Swedish -% -% Alphabetical sorting order of Aa..Zz (including accented characters). -% -% This is a BibTeX Codepage and Sort definition file (CSF). It is -% used to define the 8-bit character set used by BibTeX and the -% order in which those characters should be sorted. The file -% format is documented below this header section. -% -% This file will only work with the 8-bit implementation of BibTeX -% written by Niel Kempson and Alejandro Aguilar-Sierra: -% -% http://www.ctan.org/tex-archive/biblio/bibtex/8-bit/ -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% FILE FORMAT -% -% The codepage and sorting order (CS) file defines how BibTeX will treat an -% 8-bit character set, specifically which characters are to be treated as -% letters, the upper/lower case relationships between characters, and the -% sorting order of characters. -% -% The CS file may contain a number of sections, each presented in the -% form of a TeX macro: -% -% \section-name{ -% <section definitions> -% } -% -% Four sections are currently supported: \lowupcase, \lowercase, \uppercase -% and \order. The syntax of the four supported sections is summarised below. -% -% 8-bit characters may be entered naturally, but to avoid problems with -% character set translation or corruption, they can also be entered using -% the TeX-style portable notation for character codes, i.e. ^^XX, where XX -% is the hexadecimal value ofthe character code. -% -% Reading of the sections ends when the first '}' character is reached, so -% '}' can't be included in a section. You can't use ^^7d either. -% -% The percent sign ('%') is used to introduce a trailing comment - it and -% all remaining characters on a line are ignored. ^^25 has the same effect. -% -% -% \lowupcase section -% -% The \lowupcase section of the CS file is used to define the lower -% /upper and upper/lower case relationship of pairs of specified -% characters. It is only used if the relationship is symmetrical - use -% \lowercase or \upcase if it isn't. -% -% The syntax of the \lowupcase section is: -% -% \lowupcase{ -% <LC-1> <UC-1> % Comment begins with a percent sign -% <LC-2> <UC-2> -% ... -% <LC-N> <UC-N> -% } -% -% Each <LC-n> <UC-n> pair of characters defines that the upper case -% equivalent of <LC-n> is <UC-n> *and* the lower case equivalent of -% <UC-n> is <LC-n>. -% -% You cannot redefine the lower or upper case equivalent of an ASCII -% character (code < 128), so all instances of <LC-n> and <UC-n> -% (i.e. both sides of the relationship) must have codes > 127. -% -% -% \lowercase section -% -% The \lowercase section of the CS file is used to define the lower case -% equivalent of specified characters. It should normally only be used -% if the relationship isn't symmetrical - use \lowupcase if it is. -% -% The syntax of the \lowercase section is: -% -% \lowercase{ -% <UC-1> <LC-1> % Comment begins with a percent sign -% <UC-2> <LC-2> -% ... -% <UC-N> <LC-N> -% } -% -% Each <LC-n> <UC-n> pair of characters defines that the lower case -% equivalent of <UC-n> is <LC-n>. -% -% You cannot redefine the lower case equivalent of an ASCII character -% (code < 128), so all instances of <UC-n> (i.e. the left hand side -% of the relationship) must have codes > 127. -% -% -% \uppercase section -% -% The \uppercase section of the CS file is used to define the upper case -% equivalent of specified characters. It should normally only be used -% if the relationship isn't symmetrical - use \lowupcase if it is. -% -% The syntax of the \uppercase section is: -% -% \uppercase{ -% <LC-1> <UC-1> % Comment begins with a percent sign -% <LC-2> <UC-2> -% ... -% <LC-N> <UC-N> -% } -% -% Each <LC-n> <UC-n> pair of characters defines that the upper case -% case equivalent of <LC-n> is <UC-n>. -% -% You cannot redefine the upper case equivalent of an ASCII character -% (code < 128), so all instances of <LC-n> (i.e. the left hand side -% of the relationship) must have codes > 127. -% -% -% \order section -% -% The \order section of the CS file is used to define the order in which -% characters are sorted. -% -% The syntax of the \order section is: -% -% \order{ -% <char-1> % Comment begins with a percent sign -% <char-2> <char-3> % whitespace between the chars -% <char-4> - <char-5> % a hyphen between the chars -% <char-4> _ <char-5> % an underscore between the chars -% ... -% <char-n> -% } -% -% All characters on the same line are given the same sorting weight. -% -% The construct <char-1> <underscore> <char-2> is used to denote that -% all characters in the range <char-1> to <char-2> should be given the -% same sorting weight. For example, "A _ Z" would cause all ASCII -% upper case alphabetical characters to have the same sorting weight -% and would be equivalent to placing all 26 characters on the same line. -% -% The construct <char-1> <hyphen> <char-2> is used to denote that all -% characters in the range <char-1> to <char-2> should be given an -% ascending set of sorting weights, starting with <char-1> and ending -% with <char-2>. For example, "A - Z" would cause all upper case ASCII -% alphabetical characters to be sorted in ascending order and would be -% equivalent to placing 'A' on the first line, 'B' on the second, -% through to 'Z' on the 26th line. -% -% The characters at the beginning of the order section are given a lower -% sorting weight than characters occuring later. When sorting -% alphabetically, characters with the lowest weight come first. -% -% All characters not in the \order section (including ASCII characters) -% are given the same very high sorting weight to ensure that they come -% last when sorting alphabetically. -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% CHARACTER SET - -\lowupcase{ % Lowercase Uppercase - % Code TeX Code TeX - % - à À % ^^e0 \`{a} ^^c0 \`{A} - á Á % ^^e1 \'{a} ^^c1 \'{A} - â  % ^^e2 \^{a} ^^c2 \^{A} - ã à % ^^e3 \~{a} ^^c3 \~{A} - ä Ä % ^^e4 \"{a} ^^c4 \"{A} - å Å % ^^e5 \aa ^^c5 \AA - æ Æ % ^^e6 \ae ^^c6 \AE - ç Ç % ^^e7 \c{c} ^^c7 \c{C} - è È % ^^e8 \`{e} ^^c8 \`{E} - é É % ^^e9 \'{e} ^^c9 \'{E} - ê Ê % ^^ea \^{e} ^^ca \^{E} - ë Ë % ^^eb \"{e} ^^cb \"{E} - ì Ì % ^^ec \`{\i} ^^cc \`{I} - í Í % ^^ed \'{\i} ^^cd \'{I} - î Î % ^^ee \^{\i} ^^ce \^{I} - ï Ï % ^^ef \"{\i} ^^cf \"{I} - ð Ð % ^^f0 \dh ^^d0 \DH - ñ Ñ % ^^f1 \~{n} ^^d1 \~{N} - ò Ò % ^^f2 \`{o} ^^d2 \`{O} - ó Ó % ^^f3 \'{o} ^^d3 \'{O} - ô Ô % ^^f4 \^{o} ^^d4 \^{O} - õ Õ % ^^f5 \~{o} ^^d5 \~{O} - ö Ö % ^^f6 \"{o} ^^d6 \"{O} - ø Ø % ^^f8 \o ^^d8 \O - ù Ù % ^^f9 \`{u} ^^d9 \`{U} - ú Ú % ^^fa \'{u} ^^da \'{U} - û Û % ^^fb \^{u} ^^db \^{U} - ü Ü % ^^fc \"{u} ^^dc \"{U} - ý Ý % ^^fd \'{y} ^^dd \'{Y} - þ Þ % ^^fe \th ^^de \TH -} - -% SORTING ORDER - -\order{ - 0-9 - A À Á Â Ã Æ - a à á â ã æ - B - b - C Ç - c ç - D Ð - d ð - E È É Ê Ë - e è é ê ë - F - f - G - g - H - h - I Ì Í Î Ï - i ì í î ï - J - j - K - k - L - l - M - m - N Ñ - n ñ - O Ò Ó Ô Õ Ø - o ò ó ô õ ø - P - p - Q - q - R - r - S - s ß - T Þ - t þ - U Ù Ú Û Ü - u ù ú û ü - V - v - W - w - X - x - Y Ý - y ý ÿ - Z - z - Å - å - Ä - ä - Ö - ö -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% END OF FILE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/Master/texmf-dist/bibtex/csf/biblatex/latin9.csf b/Master/texmf-dist/bibtex/csf/biblatex/latin9.csf deleted file mode 100644 index b2dda51c3e0..00000000000 --- a/Master/texmf-dist/bibtex/csf/biblatex/latin9.csf +++ /dev/null @@ -1,266 +0,0 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% CHARACTER SET: ISO 8859-15 (Latin 9) -% -% ISO 8859-15 is a character set used by Unix/X Windows. -% -% SORTING ORDER: Latin countries -% -% Alphabetical sorting order of Aa..Zz (including accented characters). -% -% This is a BibTeX Codepage and Sort definition file (CSF). It is -% used to define the 8-bit character set used by BibTeX and the -% order in which those characters should be sorted. The file -% format is documented below this header section. -% -% This file will only work with the 8-bit implementation of BibTeX -% written by Niel Kempson and Alejandro Aguilar-Sierra: -% -% http://www.ctan.org/tex-archive/biblio/bibtex/8-bit/ -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% FILE FORMAT -% -% The codepage and sorting order (CS) file defines how BibTeX will treat an -% 8-bit character set, specifically which characters are to be treated as -% letters, the upper/lower case relationships between characters, and the -% sorting order of characters. -% -% The CS file may contain a number of sections, each presented in the -% form of a TeX macro: -% -% \section-name{ -% <section definitions> -% } -% -% Four sections are currently supported: \lowupcase, \lowercase, \uppercase -% and \order. The syntax of the four supported sections is summarised below. -% -% 8-bit characters may be entered naturally, but to avoid problems with -% character set translation or corruption, they can also be entered using -% the TeX-style portable notation for character codes, i.e. ^^XX, where XX -% is the hexadecimal value ofthe character code. -% -% Reading of the sections ends when the first '}' character is reached, so -% '}' can't be included in a section. You can't use ^^7d either. -% -% The percent sign ('%') is used to introduce a trailing comment - it and -% all remaining characters on a line are ignored. ^^25 has the same effect. -% -% -% \lowupcase section -% -% The \lowupcase section of the CS file is used to define the lower -% /upper and upper/lower case relationship of pairs of specified -% characters. It is only used if the relationship is symmetrical - use -% \lowercase or \upcase if it isn't. -% -% The syntax of the \lowupcase section is: -% -% \lowupcase{ -% <LC-1> <UC-1> % Comment begins with a percent sign -% <LC-2> <UC-2> -% ... -% <LC-N> <UC-N> -% } -% -% Each <LC-n> <UC-n> pair of characters defines that the upper case -% equivalent of <LC-n> is <UC-n> *and* the lower case equivalent of -% <UC-n> is <LC-n>. -% -% You cannot redefine the lower or upper case equivalent of an ASCII -% character (code < 128), so all instances of <LC-n> and <UC-n> -% (i.e. both sides of the relationship) must have codes > 127. -% -% -% \lowercase section -% -% The \lowercase section of the CS file is used to define the lower case -% equivalent of specified characters. It should normally only be used -% if the relationship isn't symmetrical - use \lowupcase if it is. -% -% The syntax of the \lowercase section is: -% -% \lowercase{ -% <UC-1> <LC-1> % Comment begins with a percent sign -% <UC-2> <LC-2> -% ... -% <UC-N> <LC-N> -% } -% -% Each <LC-n> <UC-n> pair of characters defines that the lower case -% equivalent of <UC-n> is <LC-n>. -% -% You cannot redefine the lower case equivalent of an ASCII character -% (code < 128), so all instances of <UC-n> (i.e. the left hand side -% of the relationship) must have codes > 127. -% -% -% \uppercase section -% -% The \uppercase section of the CS file is used to define the upper case -% equivalent of specified characters. It should normally only be used -% if the relationship isn't symmetrical - use \lowupcase if it is. -% -% The syntax of the \uppercase section is: -% -% \uppercase{ -% <LC-1> <UC-1> % Comment begins with a percent sign -% <LC-2> <UC-2> -% ... -% <LC-N> <UC-N> -% } -% -% Each <LC-n> <UC-n> pair of characters defines that the upper case -% case equivalent of <LC-n> is <UC-n>. -% -% You cannot redefine the upper case equivalent of an ASCII character -% (code < 128), so all instances of <LC-n> (i.e. the left hand side -% of the relationship) must have codes > 127. -% -% -% \order section -% -% The \order section of the CS file is used to define the order in which -% characters are sorted. -% -% The syntax of the \order section is: -% -% \order{ -% <char-1> % Comment begins with a percent sign -% <char-2> <char-3> % whitespace between the chars -% <char-4> - <char-5> % a hyphen between the chars -% <char-4> _ <char-5> % an underscore between the chars -% ... -% <char-n> -% } -% -% All characters on the same line are given the same sorting weight. -% -% The construct <char-1> <underscore> <char-2> is used to denote that -% all characters in the range <char-1> to <char-2> should be given the -% same sorting weight. For example, "A _ Z" would cause all ASCII -% upper case alphabetical characters to have the same sorting weight -% and would be equivalent to placing all 26 characters on the same line. -% -% The construct <char-1> <hyphen> <char-2> is used to denote that all -% characters in the range <char-1> to <char-2> should be given an -% ascending set of sorting weights, starting with <char-1> and ending -% with <char-2>. For example, "A - Z" would cause all upper case ASCII -% alphabetical characters to be sorted in ascending order and would be -% equivalent to placing 'A' on the first line, 'B' on the second, -% through to 'Z' on the 26th line. -% -% The characters at the beginning of the order section are given a lower -% sorting weight than characters occuring later. When sorting -% alphabetically, characters with the lowest weight come first. -% -% All characters not in the \order section (including ASCII characters) -% are given the same very high sorting weight to ensure that they come -% last when sorting alphabetically. -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% CHARACTER SET - -\lowupcase{ % Lowercase Uppercase - % Code TeX Code TeX - % - ¨ ¦ % ^^a8 \v{\s} ^^a6 \v{S} - ¸ ´ % ^^b8 \v{\z} ^^b4 \v{Z} - ½ ¼ % ^^bd \oe ^^bc \OE - à À % ^^e0 \`{a} ^^c0 \`{A} - á Á % ^^e1 \'{a} ^^c1 \'{A} - â  % ^^e2 \^{a} ^^c2 \^{A} - ã à % ^^e3 \~{a} ^^c3 \~{A} - ä Ä % ^^e4 \"{a} ^^c4 \"{A} - å Å % ^^e5 \aa ^^c5 \AA - æ Æ % ^^e6 \ae ^^c6 \AE - ç Ç % ^^e7 \c{c} ^^c7 \c{C} - è È % ^^e8 \`{e} ^^c8 \`{E} - é É % ^^e9 \'{e} ^^c9 \'{E} - ê Ê % ^^ea \^{e} ^^ca \^{E} - ë Ë % ^^eb \"{e} ^^cb \"{E} - ì Ì % ^^ec \`{\i} ^^cc \`{I} - í Í % ^^ed \'{\i} ^^cd \'{I} - î Î % ^^ee \^{\i} ^^ce \^{I} - ï Ï % ^^ef \"{\i} ^^cf \"{I} - ð Ð % ^^f0 \dh ^^d0 \DH - ñ Ñ % ^^f1 \~{n} ^^d1 \~{N} - ò Ò % ^^f2 \`{o} ^^d2 \`{O} - ó Ó % ^^f3 \'{o} ^^d3 \'{O} - ô Ô % ^^f4 \^{o} ^^d4 \^{O} - õ Õ % ^^f5 \~{o} ^^d5 \~{O} - ö Ö % ^^f6 \"{o} ^^d6 \"{O} - ø Ø % ^^f8 \o ^^d8 \O - ù Ù % ^^f9 \`{u} ^^d9 \`{U} - ú Ú % ^^fa \'{u} ^^da \'{U} - û Û % ^^fb \^{u} ^^db \^{U} - ü Ü % ^^fc \"{u} ^^dc \"{U} - ý Ý % ^^fd \'{y} ^^dd \'{Y} - þ Þ % ^^fe \th ^^de \TH - ÿ ¾ % ^^ff \"{y} ^^be \"{Y} -} - -% SORTING ORDER - -\order{ - 0-9 - A À Á Â Ã Å Ä Æ - a à á â ã å ä æ - B - b - C Ç - c ç - D Ð - d ð - E È É Ê Ë - e è é ê ë - F - f - G - g - H - h - I Ì Í Î Ï - i ì í î ï - J - j - K - k - L - l - M - m - N Ñ - n ñ - O Ò Ó Ô Õ Ö Ø ¼ - o ò ó ô õ ö ø ½ - P - p - Q - q - R - r - S ¦ - s ¨ ß - T Þ - t þ - U Ù Ú Û Ü - u ù ú û ü - V - v - W - w - X - x - Y Ý ¾ - y ý ÿ - Z ´ - z ¸ -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% END OF FILE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/Master/texmf-dist/bibtex/csf/biblatex/latin9_at.csf b/Master/texmf-dist/bibtex/csf/biblatex/latin9_at.csf deleted file mode 100644 index 7a676d663b0..00000000000 --- a/Master/texmf-dist/bibtex/csf/biblatex/latin9_at.csf +++ /dev/null @@ -1,273 +0,0 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% CHARACTER SET: ISO 8859-15 (Latin 9) -% -% ISO 8859-15 is a character set used by Unix/X Windows. -% -% SORTING ORDER: Austrian -% -% Alphabetical sorting order of Aa..Zz (including accented characters). -% -% This is a BibTeX Codepage and Sort definition file (CSF). It is -% used to define the 8-bit character set used by BibTeX and the -% order in which those characters should be sorted. The file -% format is documented below this header section. -% -% This file will only work with the 8-bit implementation of BibTeX -% written by Niel Kempson and Alejandro Aguilar-Sierra: -% -% http://www.ctan.org/tex-archive/biblio/bibtex/8-bit/ -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% FILE FORMAT -% -% The codepage and sorting order (CS) file defines how BibTeX will treat an -% 8-bit character set, specifically which characters are to be treated as -% letters, the upper/lower case relationships between characters, and the -% sorting order of characters. -% -% The CS file may contain a number of sections, each presented in the -% form of a TeX macro: -% -% \section-name{ -% <section definitions> -% } -% -% Four sections are currently supported: \lowupcase, \lowercase, \uppercase -% and \order. The syntax of the four supported sections is summarised below. -% -% 8-bit characters may be entered naturally, but to avoid problems with -% character set translation or corruption, they can also be entered using -% the TeX-style portable notation for character codes, i.e. ^^XX, where XX -% is the hexadecimal value ofthe character code. -% -% Reading of the sections ends when the first '}' character is reached, so -% '}' can't be included in a section. You can't use ^^7d either. -% -% The percent sign ('%') is used to introduce a trailing comment - it and -% all remaining characters on a line are ignored. ^^25 has the same effect. -% -% -% \lowupcase section -% -% The \lowupcase section of the CS file is used to define the lower -% /upper and upper/lower case relationship of pairs of specified -% characters. It is only used if the relationship is symmetrical - use -% \lowercase or \upcase if it isn't. -% -% The syntax of the \lowupcase section is: -% -% \lowupcase{ -% <LC-1> <UC-1> % Comment begins with a percent sign -% <LC-2> <UC-2> -% ... -% <LC-N> <UC-N> -% } -% -% Each <LC-n> <UC-n> pair of characters defines that the upper case -% equivalent of <LC-n> is <UC-n> *and* the lower case equivalent of -% <UC-n> is <LC-n>. -% -% You cannot redefine the lower or upper case equivalent of an ASCII -% character (code < 128), so all instances of <LC-n> and <UC-n> -% (i.e. both sides of the relationship) must have codes > 127. -% -% -% \lowercase section -% -% The \lowercase section of the CS file is used to define the lower case -% equivalent of specified characters. It should normally only be used -% if the relationship isn't symmetrical - use \lowupcase if it is. -% -% The syntax of the \lowercase section is: -% -% \lowercase{ -% <UC-1> <LC-1> % Comment begins with a percent sign -% <UC-2> <LC-2> -% ... -% <UC-N> <LC-N> -% } -% -% Each <LC-n> <UC-n> pair of characters defines that the lower case -% equivalent of <UC-n> is <LC-n>. -% -% You cannot redefine the lower case equivalent of an ASCII character -% (code < 128), so all instances of <UC-n> (i.e. the left hand side -% of the relationship) must have codes > 127. -% -% -% \uppercase section -% -% The \uppercase section of the CS file is used to define the upper case -% equivalent of specified characters. It should normally only be used -% if the relationship isn't symmetrical - use \lowupcase if it is. -% -% The syntax of the \uppercase section is: -% -% \uppercase{ -% <LC-1> <UC-1> % Comment begins with a percent sign -% <LC-2> <UC-2> -% ... -% <LC-N> <UC-N> -% } -% -% Each <LC-n> <UC-n> pair of characters defines that the upper case -% case equivalent of <LC-n> is <UC-n>. -% -% You cannot redefine the upper case equivalent of an ASCII character -% (code < 128), so all instances of <LC-n> (i.e. the left hand side -% of the relationship) must have codes > 127. -% -% -% \order section -% -% The \order section of the CS file is used to define the order in which -% characters are sorted. -% -% The syntax of the \order section is: -% -% \order{ -% <char-1> % Comment begins with a percent sign -% <char-2> <char-3> % whitespace between the chars -% <char-4> - <char-5> % a hyphen between the chars -% <char-4> _ <char-5> % an underscore between the chars -% ... -% <char-n> -% } -% -% All characters on the same line are given the same sorting weight. -% -% The construct <char-1> <underscore> <char-2> is used to denote that -% all characters in the range <char-1> to <char-2> should be given the -% same sorting weight. For example, "A _ Z" would cause all ASCII -% upper case alphabetical characters to have the same sorting weight -% and would be equivalent to placing all 26 characters on the same line. -% -% The construct <char-1> <hyphen> <char-2> is used to denote that all -% characters in the range <char-1> to <char-2> should be given an -% ascending set of sorting weights, starting with <char-1> and ending -% with <char-2>. For example, "A - Z" would cause all upper case ASCII -% alphabetical characters to be sorted in ascending order and would be -% equivalent to placing 'A' on the first line, 'B' on the second, -% through to 'Z' on the 26th line. -% -% The characters at the beginning of the order section are given a lower -% sorting weight than characters occuring later. When sorting -% alphabetically, characters with the lowest weight come first. -% -% All characters not in the \order section (including ASCII characters) -% are given the same very high sorting weight to ensure that they come -% last when sorting alphabetically. -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% CHARACTER SET - -\lowupcase{ % Lowercase Uppercase - % Code TeX Code TeX - % - ¨ ¦ % ^^a8 \v{\s} ^^a6 \v{S} - ¸ ´ % ^^b8 \v{\z} ^^b4 \v{Z} - ½ ¼ % ^^bd \oe ^^bc \OE - à À % ^^e0 \`{a} ^^c0 \`{A} - á Á % ^^e1 \'{a} ^^c1 \'{A} - â  % ^^e2 \^{a} ^^c2 \^{A} - ã à % ^^e3 \~{a} ^^c3 \~{A} - ä Ä % ^^e4 \"{a} ^^c4 \"{A} - å Å % ^^e5 \aa ^^c5 \AA - æ Æ % ^^e6 \ae ^^c6 \AE - ç Ç % ^^e7 \c{c} ^^c7 \c{C} - è È % ^^e8 \`{e} ^^c8 \`{E} - é É % ^^e9 \'{e} ^^c9 \'{E} - ê Ê % ^^ea \^{e} ^^ca \^{E} - ë Ë % ^^eb \"{e} ^^cb \"{E} - ì Ì % ^^ec \`{\i} ^^cc \`{I} - í Í % ^^ed \'{\i} ^^cd \'{I} - î Î % ^^ee \^{\i} ^^ce \^{I} - ï Ï % ^^ef \"{\i} ^^cf \"{I} - ð Ð % ^^f0 \dh ^^d0 \DH - ñ Ñ % ^^f1 \~{n} ^^d1 \~{N} - ò Ò % ^^f2 \`{o} ^^d2 \`{O} - ó Ó % ^^f3 \'{o} ^^d3 \'{O} - ô Ô % ^^f4 \^{o} ^^d4 \^{O} - õ Õ % ^^f5 \~{o} ^^d5 \~{O} - ö Ö % ^^f6 \"{o} ^^d6 \"{O} - ø Ø % ^^f8 \o ^^d8 \O - ù Ù % ^^f9 \`{u} ^^d9 \`{U} - ú Ú % ^^fa \'{u} ^^da \'{U} - û Û % ^^fb \^{u} ^^db \^{U} - ü Ü % ^^fc \"{u} ^^dc \"{U} - ý Ý % ^^fd \'{y} ^^dd \'{Y} - þ Þ % ^^fe \th ^^de \TH - ÿ ¾ % ^^ff \"{y} ^^be \"{Y} -} - -% SORTING ORDER - -\order{ - 0-9 - A À Á  à Š- Ä Æ - a à á â ã å - ä æ - B - b - C Ç - c ç - D Ð - d ð - E È É Ê Ë - e è é ê ë - F - f - G - g - H - h - I Ì Í Î Ï - i ì í î ï - J - j - K - k - L - l - M - m - N Ñ - n ñ - O Ò Ó Ô Õ - Ö Ø ¼ - o ò ó ô õ - ö ø ½ - P - p - Q - q - R - r - S ¦ - s ¨ - ß - T Þ - t þ - U Ù Ú Û - Ü - u ù ú û - ü - V - v - W - w - X - x - Y Ý ¾ - y ý ÿ - Z ´ - z ¸ -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% END OF FILE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/Master/texmf-dist/bibtex/csf/biblatex/latin9_de.csf b/Master/texmf-dist/bibtex/csf/biblatex/latin9_de.csf deleted file mode 100644 index 652866110ca..00000000000 --- a/Master/texmf-dist/bibtex/csf/biblatex/latin9_de.csf +++ /dev/null @@ -1,273 +0,0 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% CHARACTER SET: ISO 8859-15 (Latin 9) -% -% ISO 8859-15 is a character set used by Unix/X Windows. -% -% SORTING ORDER: German -% -% Alphabetical sorting order of Aa..Zz (including accented characters). -% -% This is a BibTeX Codepage and Sort definition file (CSF). It is -% used to define the 8-bit character set used by BibTeX and the -% order in which those characters should be sorted. The file -% format is documented below this header section. -% -% This file will only work with the 8-bit implementation of BibTeX -% written by Niel Kempson and Alejandro Aguilar-Sierra: -% -% http://www.ctan.org/tex-archive/biblio/bibtex/8-bit/ -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% FILE FORMAT -% -% The codepage and sorting order (CS) file defines how BibTeX will treat an -% 8-bit character set, specifically which characters are to be treated as -% letters, the upper/lower case relationships between characters, and the -% sorting order of characters. -% -% The CS file may contain a number of sections, each presented in the -% form of a TeX macro: -% -% \section-name{ -% <section definitions> -% } -% -% Four sections are currently supported: \lowupcase, \lowercase, \uppercase -% and \order. The syntax of the four supported sections is summarised below. -% -% 8-bit characters may be entered naturally, but to avoid problems with -% character set translation or corruption, they can also be entered using -% the TeX-style portable notation for character codes, i.e. ^^XX, where XX -% is the hexadecimal value ofthe character code. -% -% Reading of the sections ends when the first '}' character is reached, so -% '}' can't be included in a section. You can't use ^^7d either. -% -% The percent sign ('%') is used to introduce a trailing comment - it and -% all remaining characters on a line are ignored. ^^25 has the same effect. -% -% -% \lowupcase section -% -% The \lowupcase section of the CS file is used to define the lower -% /upper and upper/lower case relationship of pairs of specified -% characters. It is only used if the relationship is symmetrical - use -% \lowercase or \upcase if it isn't. -% -% The syntax of the \lowupcase section is: -% -% \lowupcase{ -% <LC-1> <UC-1> % Comment begins with a percent sign -% <LC-2> <UC-2> -% ... -% <LC-N> <UC-N> -% } -% -% Each <LC-n> <UC-n> pair of characters defines that the upper case -% equivalent of <LC-n> is <UC-n> *and* the lower case equivalent of -% <UC-n> is <LC-n>. -% -% You cannot redefine the lower or upper case equivalent of an ASCII -% character (code < 128), so all instances of <LC-n> and <UC-n> -% (i.e. both sides of the relationship) must have codes > 127. -% -% -% \lowercase section -% -% The \lowercase section of the CS file is used to define the lower case -% equivalent of specified characters. It should normally only be used -% if the relationship isn't symmetrical - use \lowupcase if it is. -% -% The syntax of the \lowercase section is: -% -% \lowercase{ -% <UC-1> <LC-1> % Comment begins with a percent sign -% <UC-2> <LC-2> -% ... -% <UC-N> <LC-N> -% } -% -% Each <LC-n> <UC-n> pair of characters defines that the lower case -% equivalent of <UC-n> is <LC-n>. -% -% You cannot redefine the lower case equivalent of an ASCII character -% (code < 128), so all instances of <UC-n> (i.e. the left hand side -% of the relationship) must have codes > 127. -% -% -% \uppercase section -% -% The \uppercase section of the CS file is used to define the upper case -% equivalent of specified characters. It should normally only be used -% if the relationship isn't symmetrical - use \lowupcase if it is. -% -% The syntax of the \uppercase section is: -% -% \uppercase{ -% <LC-1> <UC-1> % Comment begins with a percent sign -% <LC-2> <UC-2> -% ... -% <LC-N> <UC-N> -% } -% -% Each <LC-n> <UC-n> pair of characters defines that the upper case -% case equivalent of <LC-n> is <UC-n>. -% -% You cannot redefine the upper case equivalent of an ASCII character -% (code < 128), so all instances of <LC-n> (i.e. the left hand side -% of the relationship) must have codes > 127. -% -% -% \order section -% -% The \order section of the CS file is used to define the order in which -% characters are sorted. -% -% The syntax of the \order section is: -% -% \order{ -% <char-1> % Comment begins with a percent sign -% <char-2> <char-3> % whitespace between the chars -% <char-4> - <char-5> % a hyphen between the chars -% <char-4> _ <char-5> % an underscore between the chars -% ... -% <char-n> -% } -% -% All characters on the same line are given the same sorting weight. -% -% The construct <char-1> <underscore> <char-2> is used to denote that -% all characters in the range <char-1> to <char-2> should be given the -% same sorting weight. For example, "A _ Z" would cause all ASCII -% upper case alphabetical characters to have the same sorting weight -% and would be equivalent to placing all 26 characters on the same line. -% -% The construct <char-1> <hyphen> <char-2> is used to denote that all -% characters in the range <char-1> to <char-2> should be given an -% ascending set of sorting weights, starting with <char-1> and ending -% with <char-2>. For example, "A - Z" would cause all upper case ASCII -% alphabetical characters to be sorted in ascending order and would be -% equivalent to placing 'A' on the first line, 'B' on the second, -% through to 'Z' on the 26th line. -% -% The characters at the beginning of the order section are given a lower -% sorting weight than characters occuring later. When sorting -% alphabetically, characters with the lowest weight come first. -% -% All characters not in the \order section (including ASCII characters) -% are given the same very high sorting weight to ensure that they come -% last when sorting alphabetically. -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% CHARACTER SET - -\lowupcase{ % Lowercase Uppercase - % Code TeX Code TeX - % - ¨ ¦ % ^^a8 \v{\s} ^^a6 \v{S} - ¸ ´ % ^^b8 \v{\z} ^^b4 \v{Z} - ½ ¼ % ^^bd \oe ^^bc \OE - à À % ^^e0 \`{a} ^^c0 \`{A} - á Á % ^^e1 \'{a} ^^c1 \'{A} - â  % ^^e2 \^{a} ^^c2 \^{A} - ã à % ^^e3 \~{a} ^^c3 \~{A} - ä Ä % ^^e4 \"{a} ^^c4 \"{A} - å Å % ^^e5 \aa ^^c5 \AA - æ Æ % ^^e6 \ae ^^c6 \AE - ç Ç % ^^e7 \c{c} ^^c7 \c{C} - è È % ^^e8 \`{e} ^^c8 \`{E} - é É % ^^e9 \'{e} ^^c9 \'{E} - ê Ê % ^^ea \^{e} ^^ca \^{E} - ë Ë % ^^eb \"{e} ^^cb \"{E} - ì Ì % ^^ec \`{\i} ^^cc \`{I} - í Í % ^^ed \'{\i} ^^cd \'{I} - î Î % ^^ee \^{\i} ^^ce \^{I} - ï Ï % ^^ef \"{\i} ^^cf \"{I} - ð Ð % ^^f0 \dh ^^d0 \DH - ñ Ñ % ^^f1 \~{n} ^^d1 \~{N} - ò Ò % ^^f2 \`{o} ^^d2 \`{O} - ó Ó % ^^f3 \'{o} ^^d3 \'{O} - ô Ô % ^^f4 \^{o} ^^d4 \^{O} - õ Õ % ^^f5 \~{o} ^^d5 \~{O} - ö Ö % ^^f6 \"{o} ^^d6 \"{O} - ø Ø % ^^f8 \o ^^d8 \O - ù Ù % ^^f9 \`{u} ^^d9 \`{U} - ú Ú % ^^fa \'{u} ^^da \'{U} - û Û % ^^fb \^{u} ^^db \^{U} - ü Ü % ^^fc \"{u} ^^dc \"{U} - ý Ý % ^^fd \'{y} ^^dd \'{Y} - þ Þ % ^^fe \th ^^de \TH - ÿ ¾ % ^^ff \"{y} ^^be \"{Y} -} - -% SORTING ORDER - -\order{ - 0-9 - A À Á  à Š- Ä Æ - a à á â ã å - ä æ - B - b - C Ç - c ç - D Ð - d ð - E È É Ê Ë - e è é ê ë - F - f - G - g - H - h - I Ì Í Î Ï - i ì í î ï - J - j - K - k - L - l - M - m - N Ñ - n ñ - O Ò Ó Ô Õ - Ö Ø ¼ - o ò ó ô õ - ö ø ½ - P - p - Q - q - R - r - S ¦ - s ¨ - ß - T Þ - t þ - U Ù Ú Û - Ü - u ù ú û - ü - V - v - W - w - X - x - Y Ý ¾ - y ý ÿ - Z ´ - z ¸ -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% END OF FILE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/Master/texmf-dist/bibtex/csf/biblatex/latin9_dk.csf b/Master/texmf-dist/bibtex/csf/biblatex/latin9_dk.csf deleted file mode 100644 index da229e3759f..00000000000 --- a/Master/texmf-dist/bibtex/csf/biblatex/latin9_dk.csf +++ /dev/null @@ -1,272 +0,0 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% CHARACTER SET: ISO 8859-15 (Latin 9) -% -% ISO 8859-15 is a character set used by Unix/X Windows. -% -% SORTING ORDER: Danish/Norwegian -% -% Alphabetical sorting order of Aa..Zz (including accented characters). -% -% This is a BibTeX Codepage and Sort definition file (CSF). It is -% used to define the 8-bit character set used by BibTeX and the -% order in which those characters should be sorted. The file -% format is documented below this header section. -% -% This file will only work with the 8-bit implementation of BibTeX -% written by Niel Kempson and Alejandro Aguilar-Sierra: -% -% http://www.ctan.org/tex-archive/biblio/bibtex/8-bit/ -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% FILE FORMAT -% -% The codepage and sorting order (CS) file defines how BibTeX will treat an -% 8-bit character set, specifically which characters are to be treated as -% letters, the upper/lower case relationships between characters, and the -% sorting order of characters. -% -% The CS file may contain a number of sections, each presented in the -% form of a TeX macro: -% -% \section-name{ -% <section definitions> -% } -% -% Four sections are currently supported: \lowupcase, \lowercase, \uppercase -% and \order. The syntax of the four supported sections is summarised below. -% -% 8-bit characters may be entered naturally, but to avoid problems with -% character set translation or corruption, they can also be entered using -% the TeX-style portable notation for character codes, i.e. ^^XX, where XX -% is the hexadecimal value ofthe character code. -% -% Reading of the sections ends when the first '}' character is reached, so -% '}' can't be included in a section. You can't use ^^7d either. -% -% The percent sign ('%') is used to introduce a trailing comment - it and -% all remaining characters on a line are ignored. ^^25 has the same effect. -% -% -% \lowupcase section -% -% The \lowupcase section of the CS file is used to define the lower -% /upper and upper/lower case relationship of pairs of specified -% characters. It is only used if the relationship is symmetrical - use -% \lowercase or \upcase if it isn't. -% -% The syntax of the \lowupcase section is: -% -% \lowupcase{ -% <LC-1> <UC-1> % Comment begins with a percent sign -% <LC-2> <UC-2> -% ... -% <LC-N> <UC-N> -% } -% -% Each <LC-n> <UC-n> pair of characters defines that the upper case -% equivalent of <LC-n> is <UC-n> *and* the lower case equivalent of -% <UC-n> is <LC-n>. -% -% You cannot redefine the lower or upper case equivalent of an ASCII -% character (code < 128), so all instances of <LC-n> and <UC-n> -% (i.e. both sides of the relationship) must have codes > 127. -% -% -% \lowercase section -% -% The \lowercase section of the CS file is used to define the lower case -% equivalent of specified characters. It should normally only be used -% if the relationship isn't symmetrical - use \lowupcase if it is. -% -% The syntax of the \lowercase section is: -% -% \lowercase{ -% <UC-1> <LC-1> % Comment begins with a percent sign -% <UC-2> <LC-2> -% ... -% <UC-N> <LC-N> -% } -% -% Each <LC-n> <UC-n> pair of characters defines that the lower case -% equivalent of <UC-n> is <LC-n>. -% -% You cannot redefine the lower case equivalent of an ASCII character -% (code < 128), so all instances of <UC-n> (i.e. the left hand side -% of the relationship) must have codes > 127. -% -% -% \uppercase section -% -% The \uppercase section of the CS file is used to define the upper case -% equivalent of specified characters. It should normally only be used -% if the relationship isn't symmetrical - use \lowupcase if it is. -% -% The syntax of the \uppercase section is: -% -% \uppercase{ -% <LC-1> <UC-1> % Comment begins with a percent sign -% <LC-2> <UC-2> -% ... -% <LC-N> <UC-N> -% } -% -% Each <LC-n> <UC-n> pair of characters defines that the upper case -% case equivalent of <LC-n> is <UC-n>. -% -% You cannot redefine the upper case equivalent of an ASCII character -% (code < 128), so all instances of <LC-n> (i.e. the left hand side -% of the relationship) must have codes > 127. -% -% -% \order section -% -% The \order section of the CS file is used to define the order in which -% characters are sorted. -% -% The syntax of the \order section is: -% -% \order{ -% <char-1> % Comment begins with a percent sign -% <char-2> <char-3> % whitespace between the chars -% <char-4> - <char-5> % a hyphen between the chars -% <char-4> _ <char-5> % an underscore between the chars -% ... -% <char-n> -% } -% -% All characters on the same line are given the same sorting weight. -% -% The construct <char-1> <underscore> <char-2> is used to denote that -% all characters in the range <char-1> to <char-2> should be given the -% same sorting weight. For example, "A _ Z" would cause all ASCII -% upper case alphabetical characters to have the same sorting weight -% and would be equivalent to placing all 26 characters on the same line. -% -% The construct <char-1> <hyphen> <char-2> is used to denote that all -% characters in the range <char-1> to <char-2> should be given an -% ascending set of sorting weights, starting with <char-1> and ending -% with <char-2>. For example, "A - Z" would cause all upper case ASCII -% alphabetical characters to be sorted in ascending order and would be -% equivalent to placing 'A' on the first line, 'B' on the second, -% through to 'Z' on the 26th line. -% -% The characters at the beginning of the order section are given a lower -% sorting weight than characters occuring later. When sorting -% alphabetically, characters with the lowest weight come first. -% -% All characters not in the \order section (including ASCII characters) -% are given the same very high sorting weight to ensure that they come -% last when sorting alphabetically. -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% CHARACTER SET - -\lowupcase{ % Lowercase Uppercase - % Code TeX Code TeX - % - ¨ ¦ % ^^a8 \v{\s} ^^a6 \v{S} - ¸ ´ % ^^b8 \v{\z} ^^b4 \v{Z} - ½ ¼ % ^^bd \oe ^^bc \OE - à À % ^^e0 \`{a} ^^c0 \`{A} - á Á % ^^e1 \'{a} ^^c1 \'{A} - â  % ^^e2 \^{a} ^^c2 \^{A} - ã à % ^^e3 \~{a} ^^c3 \~{A} - ä Ä % ^^e4 \"{a} ^^c4 \"{A} - å Å % ^^e5 \aa ^^c5 \AA - æ Æ % ^^e6 \ae ^^c6 \AE - ç Ç % ^^e7 \c{c} ^^c7 \c{C} - è È % ^^e8 \`{e} ^^c8 \`{E} - é É % ^^e9 \'{e} ^^c9 \'{E} - ê Ê % ^^ea \^{e} ^^ca \^{E} - ë Ë % ^^eb \"{e} ^^cb \"{E} - ì Ì % ^^ec \`{\i} ^^cc \`{I} - í Í % ^^ed \'{\i} ^^cd \'{I} - î Î % ^^ee \^{\i} ^^ce \^{I} - ï Ï % ^^ef \"{\i} ^^cf \"{I} - ð Ð % ^^f0 \dh ^^d0 \DH - ñ Ñ % ^^f1 \~{n} ^^d1 \~{N} - ò Ò % ^^f2 \`{o} ^^d2 \`{O} - ó Ó % ^^f3 \'{o} ^^d3 \'{O} - ô Ô % ^^f4 \^{o} ^^d4 \^{O} - õ Õ % ^^f5 \~{o} ^^d5 \~{O} - ö Ö % ^^f6 \"{o} ^^d6 \"{O} - ø Ø % ^^f8 \o ^^d8 \O - ù Ù % ^^f9 \`{u} ^^d9 \`{U} - ú Ú % ^^fa \'{u} ^^da \'{U} - û Û % ^^fb \^{u} ^^db \^{U} - ü Ü % ^^fc \"{u} ^^dc \"{U} - ý Ý % ^^fd \'{y} ^^dd \'{Y} - þ Þ % ^^fe \th ^^de \TH - ÿ ¾ % ^^ff \"{y} ^^be \"{Y} -} - -% SORTING ORDER - -\order{ - 0-9 - A À Á Â Ã Ä - a à á â ã ä - B - b - C Ç - c ç - D Ð - d ð - E È É Ê Ë - e è é ê ë - F - f - G - g - H - h - I Ì Í Î Ï - i ì í î ï - J - j - K - k - L - l - M - m - N Ñ - n ñ - O Ò Ó Ô Õ Ö ¼ - o ò ó ô õ ö ½ - P - p - Q - q - R - r - S ¦ - s ¨ ß - T Þ - t þ - U Ù Ú Û Ü - u ù ú û ü - V - v - W - w - X - x - Y Ý ¾ - y ý ÿ - Z ´ - z ¸ - Æ - æ - Ø - ø - Å - å -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% END OF FILE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/Master/texmf-dist/bibtex/csf/biblatex/latin9_fi.csf b/Master/texmf-dist/bibtex/csf/biblatex/latin9_fi.csf deleted file mode 100644 index d4f166559df..00000000000 --- a/Master/texmf-dist/bibtex/csf/biblatex/latin9_fi.csf +++ /dev/null @@ -1,243 +0,0 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% CHARACTER SET: ISO 8859-15 (Latin 9) -% -% ISO 8859-15 is a character set used by Unix/X Windows. -% -% SORTING ORDER: Finnish -% -% Alphabetical sorting order of Aa..Zz (including accented characters). -% -% This is a BibTeX Codepage and Sort definition file (CSF). It is -% used to define the 8-bit character set used by BibTeX and the -% order in which those characters should be sorted. The file -% format is documented below this header section. -% -% This file will only work with the 8-bit implementation of BibTeX -% written by Niel Kempson and Alejandro Aguilar-Sierra: -% -% http://www.ctan.org/tex-archive/biblio/bibtex/8-bit/ -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% FILE FORMAT -% -% The codepage and sorting order (CS) file defines how BibTeX will treat an -% 8-bit character set, specifically which characters are to be treated as -% letters, the upper/lower case relationships between characters, and the -% sorting order of characters. -% -% The CS file may contain a number of sections, each presented in the -% form of a TeX macro: -% -% \section-name{ -% <section definitions> -% } -% -% Four sections are currently supported: \lowupcase, \lowercase, \uppercase -% and \order. The syntax of the four supported sections is summarised below. -% -% 8-bit characters may be entered naturally, but to avoid problems with -% character set translation or corruption, they can also be entered using -% the TeX-style portable notation for character codes, i.e. ^^XX, where XX -% is the hexadecimal value ofthe character code. -% -% Reading of the sections ends when the first '}' character is reached, so -% '}' can't be included in a section. You can't use ^^7d either. -% -% The percent sign ('%') is used to introduce a trailing comment - it and -% all remaining characters on a line are ignored. ^^25 has the same effect. -% -% -% \lowupcase section -% -% The \lowupcase section of the CS file is used to define the lower -% /upper and upper/lower case relationship of pairs of specified -% characters. It is only used if the relationship is symmetrical - use -% \lowercase or \upcase if it isn't. -% -% The syntax of the \lowupcase section is: -% -% \lowupcase{ -% <LC-1> <UC-1> % Comment begins with a percent sign -% <LC-2> <UC-2> -% ... -% <LC-N> <UC-N> -% } -% -% Each <LC-n> <UC-n> pair of characters defines that the upper case -% equivalent of <LC-n> is <UC-n> *and* the lower case equivalent of -% <UC-n> is <LC-n>. -% -% You cannot redefine the lower or upper case equivalent of an ASCII -% character (code < 128), so all instances of <LC-n> and <UC-n> -% (i.e. both sides of the relationship) must have codes > 127. -% -% -% \lowercase section -% -% The \lowercase section of the CS file is used to define the lower case -% equivalent of specified characters. It should normally only be used -% if the relationship isn't symmetrical - use \lowupcase if it is. -% -% The syntax of the \lowercase section is: -% -% \lowercase{ -% <UC-1> <LC-1> % Comment begins with a percent sign -% <UC-2> <LC-2> -% ... -% <UC-N> <LC-N> -% } -% -% Each <LC-n> <UC-n> pair of characters defines that the lower case -% equivalent of <UC-n> is <LC-n>. -% -% You cannot redefine the lower case equivalent of an ASCII character -% (code < 128), so all instances of <UC-n> (i.e. the left hand side -% of the relationship) must have codes > 127. -% -% -% \uppercase section -% -% The \uppercase section of the CS file is used to define the upper case -% equivalent of specified characters. It should normally only be used -% if the relationship isn't symmetrical - use \lowupcase if it is. -% -% The syntax of the \uppercase section is: -% -% \uppercase{ -% <LC-1> <UC-1> % Comment begins with a percent sign -% <LC-2> <UC-2> -% ... -% <LC-N> <UC-N> -% } -% -% Each <LC-n> <UC-n> pair of characters defines that the upper case -% case equivalent of <LC-n> is <UC-n>. -% -% You cannot redefine the upper case equivalent of an ASCII character -% (code < 128), so all instances of <LC-n> (i.e. the left hand side -% of the relationship) must have codes > 127. -% -% -% \order section -% -% The \order section of the CS file is used to define the order in which -% characters are sorted. -% -% The syntax of the \order section is: -% -% \order{ -% <char-1> % Comment begins with a percent sign -% <char-2> <char-3> % whitespace between the chars -% <char-4> - <char-5> % a hyphen between the chars -% <char-4> _ <char-5> % an underscore between the chars -% ... -% <char-n> -% } -% -% All characters on the same line are given the same sorting weight. -% -% The construct <char-1> <underscore> <char-2> is used to denote that -% all characters in the range <char-1> to <char-2> should be given the -% same sorting weight. For example, "A _ Z" would cause all ASCII -% upper case alphabetical characters to have the same sorting weight -% and would be equivalent to placing all 26 characters on the same line. -% -% The construct <char-1> <hyphen> <char-2> is used to denote that all -% characters in the range <char-1> to <char-2> should be given an -% ascending set of sorting weights, starting with <char-1> and ending -% with <char-2>. For example, "A - Z" would cause all upper case ASCII -% alphabetical characters to be sorted in ascending order and would be -% equivalent to placing 'A' on the first line, 'B' on the second, -% through to 'Z' on the 26th line. -% -% The characters at the beginning of the order section are given a lower -% sorting weight than characters occuring later. When sorting -% alphabetically, characters with the lowest weight come first. -% -% All characters not in the \order section (including ASCII characters) -% are given the same very high sorting weight to ensure that they come -% last when sorting alphabetically. -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% CHARACTER SET - -\lowupcase{ % Lowercase Uppercase - % Code TeX Code TeX - % - ¨ ¦ % ^^a8 \v{\s} ^^a6 \v{S} - ¸ ´ % ^^b8 \v{\z} ^^b4 \v{Z} - ½ ¼ % ^^bd \oe ^^bc \OE - à À % ^^e0 \`{a} ^^c0 \`{A} - á Á % ^^e1 \'{a} ^^c1 \'{A} - â  % ^^e2 \^{a} ^^c2 \^{A} - ã à % ^^e3 \~{a} ^^c3 \~{A} - ä Ä % ^^e4 \"{a} ^^c4 \"{A} - å Å % ^^e5 \aa ^^c5 \AA - æ Æ % ^^e6 \ae ^^c6 \AE - ç Ç % ^^e7 \c{c} ^^c7 \c{C} - è È % ^^e8 \`{e} ^^c8 \`{E} - é É % ^^e9 \'{e} ^^c9 \'{E} - ê Ê % ^^ea \^{e} ^^ca \^{E} - ë Ë % ^^eb \"{e} ^^cb \"{E} - ì Ì % ^^ec \`{\i} ^^cc \`{I} - í Í % ^^ed \'{\i} ^^cd \'{I} - î Î % ^^ee \^{\i} ^^ce \^{I} - ï Ï % ^^ef \"{\i} ^^cf \"{I} - ð Ð % ^^f0 \dh ^^d0 \DH - ñ Ñ % ^^f1 \~{n} ^^d1 \~{N} - ò Ò % ^^f2 \`{o} ^^d2 \`{O} - ó Ó % ^^f3 \'{o} ^^d3 \'{O} - ô Ô % ^^f4 \^{o} ^^d4 \^{O} - õ Õ % ^^f5 \~{o} ^^d5 \~{O} - ö Ö % ^^f6 \"{o} ^^d6 \"{O} - ø Ø % ^^f8 \o ^^d8 \O - ù Ù % ^^f9 \`{u} ^^d9 \`{U} - ú Ú % ^^fa \'{u} ^^da \'{U} - û Û % ^^fb \^{u} ^^db \^{U} - ü Ü % ^^fc \"{u} ^^dc \"{U} - ý Ý % ^^fd \'{y} ^^dd \'{Y} - þ Þ % ^^fe \th ^^de \TH - ÿ ¾ % ^^ff \"{y} ^^be \"{Y} -} - -% SORTING ORDER - -\order{ - 0-9 - A À Á Â Ã Å Ä Æ a à á â ã å ä æ - B b - C Ç c ç - D Ð d ð - E È É Ê Ë e è é ê ë - F f - G g - H h - I Ì Í Î Ï i ì í î ï - J j - K k - L l - M m - N Ñ n ñ - O Ò Ó Ô ¼ o ò ó ô ½ - P p - Q q - R r - S ¦ s ¨ ß - T Þ t þ - U Ù Ú Û u ù ú û - V v - W w - X x - Y Ý ¾ Ü y ý ÿ ü - Z ´ z ¸ - Å å - Ä ä - Ö Õ Ø ö õ ø -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% END OF FILE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/Master/texmf-dist/bibtex/csf/biblatex/latin9_no.csf b/Master/texmf-dist/bibtex/csf/biblatex/latin9_no.csf deleted file mode 100644 index da229e3759f..00000000000 --- a/Master/texmf-dist/bibtex/csf/biblatex/latin9_no.csf +++ /dev/null @@ -1,272 +0,0 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% CHARACTER SET: ISO 8859-15 (Latin 9) -% -% ISO 8859-15 is a character set used by Unix/X Windows. -% -% SORTING ORDER: Danish/Norwegian -% -% Alphabetical sorting order of Aa..Zz (including accented characters). -% -% This is a BibTeX Codepage and Sort definition file (CSF). It is -% used to define the 8-bit character set used by BibTeX and the -% order in which those characters should be sorted. The file -% format is documented below this header section. -% -% This file will only work with the 8-bit implementation of BibTeX -% written by Niel Kempson and Alejandro Aguilar-Sierra: -% -% http://www.ctan.org/tex-archive/biblio/bibtex/8-bit/ -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% FILE FORMAT -% -% The codepage and sorting order (CS) file defines how BibTeX will treat an -% 8-bit character set, specifically which characters are to be treated as -% letters, the upper/lower case relationships between characters, and the -% sorting order of characters. -% -% The CS file may contain a number of sections, each presented in the -% form of a TeX macro: -% -% \section-name{ -% <section definitions> -% } -% -% Four sections are currently supported: \lowupcase, \lowercase, \uppercase -% and \order. The syntax of the four supported sections is summarised below. -% -% 8-bit characters may be entered naturally, but to avoid problems with -% character set translation or corruption, they can also be entered using -% the TeX-style portable notation for character codes, i.e. ^^XX, where XX -% is the hexadecimal value ofthe character code. -% -% Reading of the sections ends when the first '}' character is reached, so -% '}' can't be included in a section. You can't use ^^7d either. -% -% The percent sign ('%') is used to introduce a trailing comment - it and -% all remaining characters on a line are ignored. ^^25 has the same effect. -% -% -% \lowupcase section -% -% The \lowupcase section of the CS file is used to define the lower -% /upper and upper/lower case relationship of pairs of specified -% characters. It is only used if the relationship is symmetrical - use -% \lowercase or \upcase if it isn't. -% -% The syntax of the \lowupcase section is: -% -% \lowupcase{ -% <LC-1> <UC-1> % Comment begins with a percent sign -% <LC-2> <UC-2> -% ... -% <LC-N> <UC-N> -% } -% -% Each <LC-n> <UC-n> pair of characters defines that the upper case -% equivalent of <LC-n> is <UC-n> *and* the lower case equivalent of -% <UC-n> is <LC-n>. -% -% You cannot redefine the lower or upper case equivalent of an ASCII -% character (code < 128), so all instances of <LC-n> and <UC-n> -% (i.e. both sides of the relationship) must have codes > 127. -% -% -% \lowercase section -% -% The \lowercase section of the CS file is used to define the lower case -% equivalent of specified characters. It should normally only be used -% if the relationship isn't symmetrical - use \lowupcase if it is. -% -% The syntax of the \lowercase section is: -% -% \lowercase{ -% <UC-1> <LC-1> % Comment begins with a percent sign -% <UC-2> <LC-2> -% ... -% <UC-N> <LC-N> -% } -% -% Each <LC-n> <UC-n> pair of characters defines that the lower case -% equivalent of <UC-n> is <LC-n>. -% -% You cannot redefine the lower case equivalent of an ASCII character -% (code < 128), so all instances of <UC-n> (i.e. the left hand side -% of the relationship) must have codes > 127. -% -% -% \uppercase section -% -% The \uppercase section of the CS file is used to define the upper case -% equivalent of specified characters. It should normally only be used -% if the relationship isn't symmetrical - use \lowupcase if it is. -% -% The syntax of the \uppercase section is: -% -% \uppercase{ -% <LC-1> <UC-1> % Comment begins with a percent sign -% <LC-2> <UC-2> -% ... -% <LC-N> <UC-N> -% } -% -% Each <LC-n> <UC-n> pair of characters defines that the upper case -% case equivalent of <LC-n> is <UC-n>. -% -% You cannot redefine the upper case equivalent of an ASCII character -% (code < 128), so all instances of <LC-n> (i.e. the left hand side -% of the relationship) must have codes > 127. -% -% -% \order section -% -% The \order section of the CS file is used to define the order in which -% characters are sorted. -% -% The syntax of the \order section is: -% -% \order{ -% <char-1> % Comment begins with a percent sign -% <char-2> <char-3> % whitespace between the chars -% <char-4> - <char-5> % a hyphen between the chars -% <char-4> _ <char-5> % an underscore between the chars -% ... -% <char-n> -% } -% -% All characters on the same line are given the same sorting weight. -% -% The construct <char-1> <underscore> <char-2> is used to denote that -% all characters in the range <char-1> to <char-2> should be given the -% same sorting weight. For example, "A _ Z" would cause all ASCII -% upper case alphabetical characters to have the same sorting weight -% and would be equivalent to placing all 26 characters on the same line. -% -% The construct <char-1> <hyphen> <char-2> is used to denote that all -% characters in the range <char-1> to <char-2> should be given an -% ascending set of sorting weights, starting with <char-1> and ending -% with <char-2>. For example, "A - Z" would cause all upper case ASCII -% alphabetical characters to be sorted in ascending order and would be -% equivalent to placing 'A' on the first line, 'B' on the second, -% through to 'Z' on the 26th line. -% -% The characters at the beginning of the order section are given a lower -% sorting weight than characters occuring later. When sorting -% alphabetically, characters with the lowest weight come first. -% -% All characters not in the \order section (including ASCII characters) -% are given the same very high sorting weight to ensure that they come -% last when sorting alphabetically. -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% CHARACTER SET - -\lowupcase{ % Lowercase Uppercase - % Code TeX Code TeX - % - ¨ ¦ % ^^a8 \v{\s} ^^a6 \v{S} - ¸ ´ % ^^b8 \v{\z} ^^b4 \v{Z} - ½ ¼ % ^^bd \oe ^^bc \OE - à À % ^^e0 \`{a} ^^c0 \`{A} - á Á % ^^e1 \'{a} ^^c1 \'{A} - â  % ^^e2 \^{a} ^^c2 \^{A} - ã à % ^^e3 \~{a} ^^c3 \~{A} - ä Ä % ^^e4 \"{a} ^^c4 \"{A} - å Å % ^^e5 \aa ^^c5 \AA - æ Æ % ^^e6 \ae ^^c6 \AE - ç Ç % ^^e7 \c{c} ^^c7 \c{C} - è È % ^^e8 \`{e} ^^c8 \`{E} - é É % ^^e9 \'{e} ^^c9 \'{E} - ê Ê % ^^ea \^{e} ^^ca \^{E} - ë Ë % ^^eb \"{e} ^^cb \"{E} - ì Ì % ^^ec \`{\i} ^^cc \`{I} - í Í % ^^ed \'{\i} ^^cd \'{I} - î Î % ^^ee \^{\i} ^^ce \^{I} - ï Ï % ^^ef \"{\i} ^^cf \"{I} - ð Ð % ^^f0 \dh ^^d0 \DH - ñ Ñ % ^^f1 \~{n} ^^d1 \~{N} - ò Ò % ^^f2 \`{o} ^^d2 \`{O} - ó Ó % ^^f3 \'{o} ^^d3 \'{O} - ô Ô % ^^f4 \^{o} ^^d4 \^{O} - õ Õ % ^^f5 \~{o} ^^d5 \~{O} - ö Ö % ^^f6 \"{o} ^^d6 \"{O} - ø Ø % ^^f8 \o ^^d8 \O - ù Ù % ^^f9 \`{u} ^^d9 \`{U} - ú Ú % ^^fa \'{u} ^^da \'{U} - û Û % ^^fb \^{u} ^^db \^{U} - ü Ü % ^^fc \"{u} ^^dc \"{U} - ý Ý % ^^fd \'{y} ^^dd \'{Y} - þ Þ % ^^fe \th ^^de \TH - ÿ ¾ % ^^ff \"{y} ^^be \"{Y} -} - -% SORTING ORDER - -\order{ - 0-9 - A À Á Â Ã Ä - a à á â ã ä - B - b - C Ç - c ç - D Ð - d ð - E È É Ê Ë - e è é ê ë - F - f - G - g - H - h - I Ì Í Î Ï - i ì í î ï - J - j - K - k - L - l - M - m - N Ñ - n ñ - O Ò Ó Ô Õ Ö ¼ - o ò ó ô õ ö ½ - P - p - Q - q - R - r - S ¦ - s ¨ ß - T Þ - t þ - U Ù Ú Û Ü - u ù ú û ü - V - v - W - w - X - x - Y Ý ¾ - y ý ÿ - Z ´ - z ¸ - Æ - æ - Ø - ø - Å - å -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% END OF FILE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/Master/texmf-dist/bibtex/csf/biblatex/latin9_se.csf b/Master/texmf-dist/bibtex/csf/biblatex/latin9_se.csf deleted file mode 100644 index a4d97c393e0..00000000000 --- a/Master/texmf-dist/bibtex/csf/biblatex/latin9_se.csf +++ /dev/null @@ -1,272 +0,0 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% CHARACTER SET: ISO 8859-15 (Latin 9) -% -% ISO 8859-15 is a character set used by Unix/X Windows. -% -% SORTING ORDER: Swedish -% -% Alphabetical sorting order of Aa..Zz (including accented characters). -% -% This is a BibTeX Codepage and Sort definition file (CSF). It is -% used to define the 8-bit character set used by BibTeX and the -% order in which those characters should be sorted. The file -% format is documented below this header section. -% -% This file will only work with the 8-bit implementation of BibTeX -% written by Niel Kempson and Alejandro Aguilar-Sierra: -% -% http://www.ctan.org/tex-archive/biblio/bibtex/8-bit/ -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% FILE FORMAT -% -% The codepage and sorting order (CS) file defines how BibTeX will treat an -% 8-bit character set, specifically which characters are to be treated as -% letters, the upper/lower case relationships between characters, and the -% sorting order of characters. -% -% The CS file may contain a number of sections, each presented in the -% form of a TeX macro: -% -% \section-name{ -% <section definitions> -% } -% -% Four sections are currently supported: \lowupcase, \lowercase, \uppercase -% and \order. The syntax of the four supported sections is summarised below. -% -% 8-bit characters may be entered naturally, but to avoid problems with -% character set translation or corruption, they can also be entered using -% the TeX-style portable notation for character codes, i.e. ^^XX, where XX -% is the hexadecimal value ofthe character code. -% -% Reading of the sections ends when the first '}' character is reached, so -% '}' can't be included in a section. You can't use ^^7d either. -% -% The percent sign ('%') is used to introduce a trailing comment - it and -% all remaining characters on a line are ignored. ^^25 has the same effect. -% -% -% \lowupcase section -% -% The \lowupcase section of the CS file is used to define the lower -% /upper and upper/lower case relationship of pairs of specified -% characters. It is only used if the relationship is symmetrical - use -% \lowercase or \upcase if it isn't. -% -% The syntax of the \lowupcase section is: -% -% \lowupcase{ -% <LC-1> <UC-1> % Comment begins with a percent sign -% <LC-2> <UC-2> -% ... -% <LC-N> <UC-N> -% } -% -% Each <LC-n> <UC-n> pair of characters defines that the upper case -% equivalent of <LC-n> is <UC-n> *and* the lower case equivalent of -% <UC-n> is <LC-n>. -% -% You cannot redefine the lower or upper case equivalent of an ASCII -% character (code < 128), so all instances of <LC-n> and <UC-n> -% (i.e. both sides of the relationship) must have codes > 127. -% -% -% \lowercase section -% -% The \lowercase section of the CS file is used to define the lower case -% equivalent of specified characters. It should normally only be used -% if the relationship isn't symmetrical - use \lowupcase if it is. -% -% The syntax of the \lowercase section is: -% -% \lowercase{ -% <UC-1> <LC-1> % Comment begins with a percent sign -% <UC-2> <LC-2> -% ... -% <UC-N> <LC-N> -% } -% -% Each <LC-n> <UC-n> pair of characters defines that the lower case -% equivalent of <UC-n> is <LC-n>. -% -% You cannot redefine the lower case equivalent of an ASCII character -% (code < 128), so all instances of <UC-n> (i.e. the left hand side -% of the relationship) must have codes > 127. -% -% -% \uppercase section -% -% The \uppercase section of the CS file is used to define the upper case -% equivalent of specified characters. It should normally only be used -% if the relationship isn't symmetrical - use \lowupcase if it is. -% -% The syntax of the \uppercase section is: -% -% \uppercase{ -% <LC-1> <UC-1> % Comment begins with a percent sign -% <LC-2> <UC-2> -% ... -% <LC-N> <UC-N> -% } -% -% Each <LC-n> <UC-n> pair of characters defines that the upper case -% case equivalent of <LC-n> is <UC-n>. -% -% You cannot redefine the upper case equivalent of an ASCII character -% (code < 128), so all instances of <LC-n> (i.e. the left hand side -% of the relationship) must have codes > 127. -% -% -% \order section -% -% The \order section of the CS file is used to define the order in which -% characters are sorted. -% -% The syntax of the \order section is: -% -% \order{ -% <char-1> % Comment begins with a percent sign -% <char-2> <char-3> % whitespace between the chars -% <char-4> - <char-5> % a hyphen between the chars -% <char-4> _ <char-5> % an underscore between the chars -% ... -% <char-n> -% } -% -% All characters on the same line are given the same sorting weight. -% -% The construct <char-1> <underscore> <char-2> is used to denote that -% all characters in the range <char-1> to <char-2> should be given the -% same sorting weight. For example, "A _ Z" would cause all ASCII -% upper case alphabetical characters to have the same sorting weight -% and would be equivalent to placing all 26 characters on the same line. -% -% The construct <char-1> <hyphen> <char-2> is used to denote that all -% characters in the range <char-1> to <char-2> should be given an -% ascending set of sorting weights, starting with <char-1> and ending -% with <char-2>. For example, "A - Z" would cause all upper case ASCII -% alphabetical characters to be sorted in ascending order and would be -% equivalent to placing 'A' on the first line, 'B' on the second, -% through to 'Z' on the 26th line. -% -% The characters at the beginning of the order section are given a lower -% sorting weight than characters occuring later. When sorting -% alphabetically, characters with the lowest weight come first. -% -% All characters not in the \order section (including ASCII characters) -% are given the same very high sorting weight to ensure that they come -% last when sorting alphabetically. -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% CHARACTER SET - -\lowupcase{ % Lowercase Uppercase - % Code TeX Code TeX - % - ¨ ¦ % ^^a8 \v{\s} ^^a6 \v{S} - ¸ ´ % ^^b8 \v{\z} ^^b4 \v{Z} - ½ ¼ % ^^bd \oe ^^bc \OE - à À % ^^e0 \`{a} ^^c0 \`{A} - á Á % ^^e1 \'{a} ^^c1 \'{A} - â  % ^^e2 \^{a} ^^c2 \^{A} - ã à % ^^e3 \~{a} ^^c3 \~{A} - ä Ä % ^^e4 \"{a} ^^c4 \"{A} - å Å % ^^e5 \aa ^^c5 \AA - æ Æ % ^^e6 \ae ^^c6 \AE - ç Ç % ^^e7 \c{c} ^^c7 \c{C} - è È % ^^e8 \`{e} ^^c8 \`{E} - é É % ^^e9 \'{e} ^^c9 \'{E} - ê Ê % ^^ea \^{e} ^^ca \^{E} - ë Ë % ^^eb \"{e} ^^cb \"{E} - ì Ì % ^^ec \`{\i} ^^cc \`{I} - í Í % ^^ed \'{\i} ^^cd \'{I} - î Î % ^^ee \^{\i} ^^ce \^{I} - ï Ï % ^^ef \"{\i} ^^cf \"{I} - ð Ð % ^^f0 \dh ^^d0 \DH - ñ Ñ % ^^f1 \~{n} ^^d1 \~{N} - ò Ò % ^^f2 \`{o} ^^d2 \`{O} - ó Ó % ^^f3 \'{o} ^^d3 \'{O} - ô Ô % ^^f4 \^{o} ^^d4 \^{O} - õ Õ % ^^f5 \~{o} ^^d5 \~{O} - ö Ö % ^^f6 \"{o} ^^d6 \"{O} - ø Ø % ^^f8 \o ^^d8 \O - ù Ù % ^^f9 \`{u} ^^d9 \`{U} - ú Ú % ^^fa \'{u} ^^da \'{U} - û Û % ^^fb \^{u} ^^db \^{U} - ü Ü % ^^fc \"{u} ^^dc \"{U} - ý Ý % ^^fd \'{y} ^^dd \'{Y} - þ Þ % ^^fe \th ^^de \TH - ÿ ¾ % ^^ff \"{y} ^^be \"{Y} -} - -% SORTING ORDER - -\order{ - 0-9 - A À Á Â Ã Æ - a à á â ã æ - B - b - C Ç - c ç - D Ð - d ð - E È É Ê Ë - e è é ê ë - F - f - G - g - H - h - I Ì Í Î Ï - i ì í î ï - J - j - K - k - L - l - M - m - N Ñ - n ñ - O Ò Ó Ô Õ Ø ¼ - o ò ó ô õ ø ½ - P - p - Q - q - R - r - S ¦ - s ¨ ß - T Þ - t þ - U Ù Ú Û Ü - u ù ú û ü - V - v - W - w - X - x - Y Ý ¾ - y ý ÿ - Z ´ - z ¸ - Å - å - Ä - ä - Ö - Ö -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% END OF FILE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/Master/texmf-dist/bibtex/csf/biblatex/winansi.csf b/Master/texmf-dist/bibtex/csf/biblatex/winansi.csf deleted file mode 100644 index 8530eb05ce3..00000000000 --- a/Master/texmf-dist/bibtex/csf/biblatex/winansi.csf +++ /dev/null @@ -1,267 +0,0 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% CHARACTER SET: MS CP-1252 (Windows Ansi) -% -% MS CP-1252 is a character set used by Microsoft Windows. -% -% SORTING ORDER: Latin countries -% -% Alphabetical sorting order of Aa..Zz (including accented characters). -% -% This is a BibTeX Codepage and Sort definition file (CSF). It is -% used to define the 8-bit character set used by BibTeX and the -% order in which those characters should be sorted. The file -% format is documented below this header section. -% -% This file will only work with the 8-bit implementation of BibTeX -% written by Niel Kempson and Alejandro Aguilar-Sierra: -% -% http://www.ctan.org/tex-archive/biblio/bibtex/8-bit/ -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% FILE FORMAT -% -% The codepage and sorting order (CS) file defines how BibTeX will treat an -% 8-bit character set, specifically which characters are to be treated as -% letters, the upper/lower case relationships between characters, and the -% sorting order of characters. -% -% The CS file may contain a number of sections, each presented in the -% form of a TeX macro: -% -% \section-name{ -% <section definitions> -% } -% -% Four sections are currently supported: \lowupcase, \lowercase, \uppercase -% and \order. The syntax of the four supported sections is summarised below. -% -% 8-bit characters may be entered naturally, but to avoid problems with -% character set translation or corruption, they can also be entered using -% the TeX-style portable notation for character codes, i.e. ^^XX, where XX -% is the hexadecimal value ofthe character code. -% -% Reading of the sections ends when the first '}' character is reached, so -% '}' can't be included in a section. You can't use ^^7d either. -% -% The percent sign ('%') is used to introduce a trailing comment - it and -% all remaining characters on a line are ignored. ^^25 has the same effect. -% -% -% \lowupcase section -% -% The \lowupcase section of the CS file is used to define the lower -% /upper and upper/lower case relationship of pairs of specified -% characters. It is only used if the relationship is symmetrical - use -% \lowercase or \upcase if it isn't. -% -% The syntax of the \lowupcase section is: -% -% \lowupcase{ -% <LC-1> <UC-1> % Comment begins with a percent sign -% <LC-2> <UC-2> -% ... -% <LC-N> <UC-N> -% } -% -% Each <LC-n> <UC-n> pair of characters defines that the upper case -% equivalent of <LC-n> is <UC-n> *and* the lower case equivalent of -% <UC-n> is <LC-n>. -% -% You cannot redefine the lower or upper case equivalent of an ASCII -% character (code < 128), so all instances of <LC-n> and <UC-n> -% (i.e. both sides of the relationship) must have codes > 127. -% -% -% \lowercase section -% -% The \lowercase section of the CS file is used to define the lower case -% equivalent of specified characters. It should normally only be used -% if the relationship isn't symmetrical - use \lowupcase if it is. -% -% The syntax of the \lowercase section is: -% -% \lowercase{ -% <UC-1> <LC-1> % Comment begins with a percent sign -% <UC-2> <LC-2> -% ... -% <UC-N> <LC-N> -% } -% -% Each <LC-n> <UC-n> pair of characters defines that the lower case -% equivalent of <UC-n> is <LC-n>. -% -% You cannot redefine the lower case equivalent of an ASCII character -% (code < 128), so all instances of <UC-n> (i.e. the left hand side -% of the relationship) must have codes > 127. -% -% -% \uppercase section -% -% The \uppercase section of the CS file is used to define the upper case -% equivalent of specified characters. It should normally only be used -% if the relationship isn't symmetrical - use \lowupcase if it is. -% -% The syntax of the \uppercase section is: -% -% \uppercase{ -% <LC-1> <UC-1> % Comment begins with a percent sign -% <LC-2> <UC-2> -% ... -% <LC-N> <UC-N> -% } -% -% Each <LC-n> <UC-n> pair of characters defines that the upper case -% case equivalent of <LC-n> is <UC-n>. -% -% You cannot redefine the upper case equivalent of an ASCII character -% (code < 128), so all instances of <LC-n> (i.e. the left hand side -% of the relationship) must have codes > 127. -% -% -% \order section -% -% The \order section of the CS file is used to define the order in which -% characters are sorted. -% -% The syntax of the \order section is: -% -% \order{ -% <char-1> % Comment begins with a percent sign -% <char-2> <char-3> % whitespace between the chars -% <char-4> - <char-5> % a hyphen between the chars -% <char-4> _ <char-5> % an underscore between the chars -% ... -% <char-n> -% } -% -% All characters on the same line are given the same sorting weight. -% -% The construct <char-1> <underscore> <char-2> is used to denote that -% all characters in the range <char-1> to <char-2> should be given the -% same sorting weight. For example, "A _ Z" would cause all ASCII -% upper case alphabetical characters to have the same sorting weight -% and would be equivalent to placing all 26 characters on the same line. -% -% The construct <char-1> <hyphen> <char-2> is used to denote that all -% characters in the range <char-1> to <char-2> should be given an -% ascending set of sorting weights, starting with <char-1> and ending -% with <char-2>. For example, "A - Z" would cause all upper case ASCII -% alphabetical characters to be sorted in ascending order and would be -% equivalent to placing 'A' on the first line, 'B' on the second, -% through to 'Z' on the 26th line. -% -% The characters at the beginning of the order section are given a lower -% sorting weight than characters occuring later. When sorting -% alphabetically, characters with the lowest weight come first. -% -% All characters not in the \order section (including ASCII characters) -% are given the same very high sorting weight to ensure that they come -% last when sorting alphabetically. -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% CHARACTER SET - -\lowupcase{ % Lowercase Uppercase - % Code TeX Code TeX - % - š Š % ^^9a \v{\s} ^^8a \v{S} - œ Œ % ^^9c \oe ^^8c \OE - ž Ž % ^^9e \v{\z} ^^8e \v{Z} - à À % ^^e0 \`{a} ^^c0 \`{A} - á Á % ^^e1 \'{a} ^^c1 \'{A} - â  % ^^e2 \^{a} ^^c2 \^{A} - ã à % ^^e3 \~{a} ^^c3 \~{A} - ä Ä % ^^e4 \"{a} ^^c4 \"{A} - å Å % ^^e5 \aa ^^c5 \AA - æ Æ % ^^e6 \ae ^^c6 \AE - ç Ç % ^^e7 \c{c} ^^c7 \c{C} - è È % ^^e8 \`{e} ^^c8 \`{E} - é É % ^^e9 \'{e} ^^c9 \'{E} - ê Ê % ^^ea \^{e} ^^ca \^{E} - ë Ë % ^^eb \"{e} ^^cb \"{E} - ì Ì % ^^ec \`{\i} ^^cc \`{I} - í Í % ^^ed \'{\i} ^^cd \'{I} - î Î % ^^ee \^{\i} ^^ce \^{I} - ï Ï % ^^ef \"{\i} ^^cf \"{I} - ð Ð % ^^f0 \dh ^^d0 \DH - ñ Ñ % ^^f1 \~{n} ^^d1 \~{N} - ò Ò % ^^f2 \`{o} ^^d2 \`{O} - ó Ó % ^^f3 \'{o} ^^d3 \'{O} - ô Ô % ^^f4 \^{o} ^^d4 \^{O} - õ Õ % ^^f5 \~{o} ^^d5 \~{O} - ö Ö % ^^f6 \"{o} ^^d6 \"{O} - ø Ø % ^^f8 \o ^^d8 \O - ù Ù % ^^f9 \`{u} ^^d9 \`{U} - ú Ú % ^^fa \'{u} ^^da \'{U} - û Û % ^^fb \^{u} ^^db \^{U} - ü Ü % ^^fc \"{u} ^^dc \"{U} - ý Ý % ^^fd \'{y} ^^dd \'{Y} - þ Þ % ^^fe \th ^^de \TH - ÿ Ÿ % ^^ff \"{y} ^^9f \"{Y} - -} - -% SORTING ORDER - -\order{ - 0-9 - A À Á Â Ã Å Ä Æ - a à á â ã å ä æ - B - b - C Ç - c ç - D Ð - d ð - E È É Ê Ë - e è é ê ë - F - f - G - g - H - h - I Ì Í Î Ï - i ì í î ï - J - j - K - k - L - l - M - m - N Ñ - n ñ - O Ò Ó Ô Õ Ö Ø Œ - o ò ó ô õ ö ø œ - P - p - Q - q - R - r - S Š - s š ß - T Þ - t þ - U Ù Ú Û Ü - u ù ú û ü - V - v - W - w - X - x - Y Ý Ÿ - y ý ÿ - Z Ž - z ž -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% END OF FILE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/Master/texmf-dist/bibtex/csf/biblatex/winansi_at.csf b/Master/texmf-dist/bibtex/csf/biblatex/winansi_at.csf deleted file mode 100644 index 311d26ae149..00000000000 --- a/Master/texmf-dist/bibtex/csf/biblatex/winansi_at.csf +++ /dev/null @@ -1,274 +0,0 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% CHARACTER SET: MS CP-1252 (Windows Ansi) -% -% MS CP-1252 is a character set used by Microsoft Windows. -% -% SORTING ORDER: Austrian -% -% Alphabetical sorting order of Aa..Zz (including accented characters). -% -% This is a BibTeX Codepage and Sort definition file (CSF). It is -% used to define the 8-bit character set used by BibTeX and the -% order in which those characters should be sorted. The file -% format is documented below this header section. -% -% This file will only work with the 8-bit implementation of BibTeX -% written by Niel Kempson and Alejandro Aguilar-Sierra: -% -% http://www.ctan.org/tex-archive/biblio/bibtex/8-bit/ -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% FILE FORMAT -% -% The codepage and sorting order (CS) file defines how BibTeX will treat an -% 8-bit character set, specifically which characters are to be treated as -% letters, the upper/lower case relationships between characters, and the -% sorting order of characters. -% -% The CS file may contain a number of sections, each presented in the -% form of a TeX macro: -% -% \section-name{ -% <section definitions> -% } -% -% Four sections are currently supported: \lowupcase, \lowercase, \uppercase -% and \order. The syntax of the four supported sections is summarised below. -% -% 8-bit characters may be entered naturally, but to avoid problems with -% character set translation or corruption, they can also be entered using -% the TeX-style portable notation for character codes, i.e. ^^XX, where XX -% is the hexadecimal value ofthe character code. -% -% Reading of the sections ends when the first '}' character is reached, so -% '}' can't be included in a section. You can't use ^^7d either. -% -% The percent sign ('%') is used to introduce a trailing comment - it and -% all remaining characters on a line are ignored. ^^25 has the same effect. -% -% -% \lowupcase section -% -% The \lowupcase section of the CS file is used to define the lower -% /upper and upper/lower case relationship of pairs of specified -% characters. It is only used if the relationship is symmetrical - use -% \lowercase or \upcase if it isn't. -% -% The syntax of the \lowupcase section is: -% -% \lowupcase{ -% <LC-1> <UC-1> % Comment begins with a percent sign -% <LC-2> <UC-2> -% ... -% <LC-N> <UC-N> -% } -% -% Each <LC-n> <UC-n> pair of characters defines that the upper case -% equivalent of <LC-n> is <UC-n> *and* the lower case equivalent of -% <UC-n> is <LC-n>. -% -% You cannot redefine the lower or upper case equivalent of an ASCII -% character (code < 128), so all instances of <LC-n> and <UC-n> -% (i.e. both sides of the relationship) must have codes > 127. -% -% -% \lowercase section -% -% The \lowercase section of the CS file is used to define the lower case -% equivalent of specified characters. It should normally only be used -% if the relationship isn't symmetrical - use \lowupcase if it is. -% -% The syntax of the \lowercase section is: -% -% \lowercase{ -% <UC-1> <LC-1> % Comment begins with a percent sign -% <UC-2> <LC-2> -% ... -% <UC-N> <LC-N> -% } -% -% Each <LC-n> <UC-n> pair of characters defines that the lower case -% equivalent of <UC-n> is <LC-n>. -% -% You cannot redefine the lower case equivalent of an ASCII character -% (code < 128), so all instances of <UC-n> (i.e. the left hand side -% of the relationship) must have codes > 127. -% -% -% \uppercase section -% -% The \uppercase section of the CS file is used to define the upper case -% equivalent of specified characters. It should normally only be used -% if the relationship isn't symmetrical - use \lowupcase if it is. -% -% The syntax of the \uppercase section is: -% -% \uppercase{ -% <LC-1> <UC-1> % Comment begins with a percent sign -% <LC-2> <UC-2> -% ... -% <LC-N> <UC-N> -% } -% -% Each <LC-n> <UC-n> pair of characters defines that the upper case -% case equivalent of <LC-n> is <UC-n>. -% -% You cannot redefine the upper case equivalent of an ASCII character -% (code < 128), so all instances of <LC-n> (i.e. the left hand side -% of the relationship) must have codes > 127. -% -% -% \order section -% -% The \order section of the CS file is used to define the order in which -% characters are sorted. -% -% The syntax of the \order section is: -% -% \order{ -% <char-1> % Comment begins with a percent sign -% <char-2> <char-3> % whitespace between the chars -% <char-4> - <char-5> % a hyphen between the chars -% <char-4> _ <char-5> % an underscore between the chars -% ... -% <char-n> -% } -% -% All characters on the same line are given the same sorting weight. -% -% The construct <char-1> <underscore> <char-2> is used to denote that -% all characters in the range <char-1> to <char-2> should be given the -% same sorting weight. For example, "A _ Z" would cause all ASCII -% upper case alphabetical characters to have the same sorting weight -% and would be equivalent to placing all 26 characters on the same line. -% -% The construct <char-1> <hyphen> <char-2> is used to denote that all -% characters in the range <char-1> to <char-2> should be given an -% ascending set of sorting weights, starting with <char-1> and ending -% with <char-2>. For example, "A - Z" would cause all upper case ASCII -% alphabetical characters to be sorted in ascending order and would be -% equivalent to placing 'A' on the first line, 'B' on the second, -% through to 'Z' on the 26th line. -% -% The characters at the beginning of the order section are given a lower -% sorting weight than characters occuring later. When sorting -% alphabetically, characters with the lowest weight come first. -% -% All characters not in the \order section (including ASCII characters) -% are given the same very high sorting weight to ensure that they come -% last when sorting alphabetically. -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% CHARACTER SET - -\lowupcase{ % Lowercase Uppercase - % Code TeX Code TeX - % - š Š % ^^9a \v{\s} ^^8a \v{S} - œ Œ % ^^9c \oe ^^8c \OE - ž Ž % ^^9e \v{\z} ^^8e \v{Z} - à À % ^^e0 \`{a} ^^c0 \`{A} - á Á % ^^e1 \'{a} ^^c1 \'{A} - â  % ^^e2 \^{a} ^^c2 \^{A} - ã à % ^^e3 \~{a} ^^c3 \~{A} - ä Ä % ^^e4 \"{a} ^^c4 \"{A} - å Å % ^^e5 \aa ^^c5 \AA - æ Æ % ^^e6 \ae ^^c6 \AE - ç Ç % ^^e7 \c{c} ^^c7 \c{C} - è È % ^^e8 \`{e} ^^c8 \`{E} - é É % ^^e9 \'{e} ^^c9 \'{E} - ê Ê % ^^ea \^{e} ^^ca \^{E} - ë Ë % ^^eb \"{e} ^^cb \"{E} - ì Ì % ^^ec \`{\i} ^^cc \`{I} - í Í % ^^ed \'{\i} ^^cd \'{I} - î Î % ^^ee \^{\i} ^^ce \^{I} - ï Ï % ^^ef \"{\i} ^^cf \"{I} - ð Ð % ^^f0 \dh ^^d0 \DH - ñ Ñ % ^^f1 \~{n} ^^d1 \~{N} - ò Ò % ^^f2 \`{o} ^^d2 \`{O} - ó Ó % ^^f3 \'{o} ^^d3 \'{O} - ô Ô % ^^f4 \^{o} ^^d4 \^{O} - õ Õ % ^^f5 \~{o} ^^d5 \~{O} - ö Ö % ^^f6 \"{o} ^^d6 \"{O} - ø Ø % ^^f8 \o ^^d8 \O - ù Ù % ^^f9 \`{u} ^^d9 \`{U} - ú Ú % ^^fa \'{u} ^^da \'{U} - û Û % ^^fb \^{u} ^^db \^{U} - ü Ü % ^^fc \"{u} ^^dc \"{U} - ý Ý % ^^fd \'{y} ^^dd \'{Y} - þ Þ % ^^fe \th ^^de \TH - ÿ Ÿ % ^^ff \"{y} ^^9f \"{Y} - -} - -% SORTING ORDER - -\order{ - 0-9 - A À Á  à Š- Ä Æ - a à á â ã å - ä æ - B - b - C Ç - c ç - D Ð - d ð - E È É Ê Ë - e è é ê ë - F - f - G - g - H - h - I Ì Í Î Ï - i ì í î ï - J - j - K - k - L - l - M - m - N Ñ - n ñ - O Ò Ó Ô Õ - Ö Ø Œ - o ò ó ô õ - ö ø œ - P - p - Q - q - R - r - S Š - s š - ß - T Þ - t þ - U Ù Ú Û - Ü - u ù ú û - ü - V - v - W - w - X - x - Y Ý Ÿ - y ý ÿ - Z Ž - z ž -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% END OF FILE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/Master/texmf-dist/bibtex/csf/biblatex/winansi_de.csf b/Master/texmf-dist/bibtex/csf/biblatex/winansi_de.csf deleted file mode 100644 index 3a6c7cba64a..00000000000 --- a/Master/texmf-dist/bibtex/csf/biblatex/winansi_de.csf +++ /dev/null @@ -1,273 +0,0 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% CHARACTER SET: MS CP-1252 (Windows Ansi) -% -% MS CP-1252 is a character set used by Microsoft Windows. -% -% SORTING ORDER: German -% -% Alphabetical sorting order of Aa..Zz (including accented characters). -% -% This is a BibTeX Codepage and Sort definition file (CSF). It is -% used to define the 8-bit character set used by BibTeX and the -% order in which those characters should be sorted. The file -% format is documented below this header section. -% -% This file will only work with the 8-bit implementation of BibTeX -% written by Niel Kempson and Alejandro Aguilar-Sierra: -% -% http://www.ctan.org/tex-archive/biblio/bibtex/8-bit/ -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% FILE FORMAT -% -% The codepage and sorting order (CS) file defines how BibTeX will treat an -% 8-bit character set, specifically which characters are to be treated as -% letters, the upper/lower case relationships between characters, and the -% sorting order of characters. -% -% The CS file may contain a number of sections, each presented in the -% form of a TeX macro: -% -% \section-name{ -% <section definitions> -% } -% -% Four sections are currently supported: \lowupcase, \lowercase, \uppercase -% and \order. The syntax of the four supported sections is summarised below. -% -% 8-bit characters may be entered naturally, but to avoid problems with -% character set translation or corruption, they can also be entered using -% the TeX-style portable notation for character codes, i.e. ^^XX, where XX -% is the hexadecimal value ofthe character code. -% -% Reading of the sections ends when the first '}' character is reached, so -% '}' can't be included in a section. You can't use ^^7d either. -% -% The percent sign ('%') is used to introduce a trailing comment - it and -% all remaining characters on a line are ignored. ^^25 has the same effect. -% -% -% \lowupcase section -% -% The \lowupcase section of the CS file is used to define the lower -% /upper and upper/lower case relationship of pairs of specified -% characters. It is only used if the relationship is symmetrical - use -% \lowercase or \upcase if it isn't. -% -% The syntax of the \lowupcase section is: -% -% \lowupcase{ -% <LC-1> <UC-1> % Comment begins with a percent sign -% <LC-2> <UC-2> -% ... -% <LC-N> <UC-N> -% } -% -% Each <LC-n> <UC-n> pair of characters defines that the upper case -% equivalent of <LC-n> is <UC-n> *and* the lower case equivalent of -% <UC-n> is <LC-n>. -% -% You cannot redefine the lower or upper case equivalent of an ASCII -% character (code < 128), so all instances of <LC-n> and <UC-n> -% (i.e. both sides of the relationship) must have codes > 127. -% -% -% \lowercase section -% -% The \lowercase section of the CS file is used to define the lower case -% equivalent of specified characters. It should normally only be used -% if the relationship isn't symmetrical - use \lowupcase if it is. -% -% The syntax of the \lowercase section is: -% -% \lowercase{ -% <UC-1> <LC-1> % Comment begins with a percent sign -% <UC-2> <LC-2> -% ... -% <UC-N> <LC-N> -% } -% -% Each <LC-n> <UC-n> pair of characters defines that the lower case -% equivalent of <UC-n> is <LC-n>. -% -% You cannot redefine the lower case equivalent of an ASCII character -% (code < 128), so all instances of <UC-n> (i.e. the left hand side -% of the relationship) must have codes > 127. -% -% -% \uppercase section -% -% The \uppercase section of the CS file is used to define the upper case -% equivalent of specified characters. It should normally only be used -% if the relationship isn't symmetrical - use \lowupcase if it is. -% -% The syntax of the \uppercase section is: -% -% \uppercase{ -% <LC-1> <UC-1> % Comment begins with a percent sign -% <LC-2> <UC-2> -% ... -% <LC-N> <UC-N> -% } -% -% Each <LC-n> <UC-n> pair of characters defines that the upper case -% case equivalent of <LC-n> is <UC-n>. -% -% You cannot redefine the upper case equivalent of an ASCII character -% (code < 128), so all instances of <LC-n> (i.e. the left hand side -% of the relationship) must have codes > 127. -% -% -% \order section -% -% The \order section of the CS file is used to define the order in which -% characters are sorted. -% -% The syntax of the \order section is: -% -% \order{ -% <char-1> % Comment begins with a percent sign -% <char-2> <char-3> % whitespace between the chars -% <char-4> - <char-5> % a hyphen between the chars -% <char-4> _ <char-5> % an underscore between the chars -% ... -% <char-n> -% } -% -% All characters on the same line are given the same sorting weight. -% -% The construct <char-1> <underscore> <char-2> is used to denote that -% all characters in the range <char-1> to <char-2> should be given the -% same sorting weight. For example, "A _ Z" would cause all ASCII -% upper case alphabetical characters to have the same sorting weight -% and would be equivalent to placing all 26 characters on the same line. -% -% The construct <char-1> <hyphen> <char-2> is used to denote that all -% characters in the range <char-1> to <char-2> should be given an -% ascending set of sorting weights, starting with <char-1> and ending -% with <char-2>. For example, "A - Z" would cause all upper case ASCII -% alphabetical characters to be sorted in ascending order and would be -% equivalent to placing 'A' on the first line, 'B' on the second, -% through to 'Z' on the 26th line. -% -% The characters at the beginning of the order section are given a lower -% sorting weight than characters occuring later. When sorting -% alphabetically, characters with the lowest weight come first. -% -% All characters not in the \order section (including ASCII characters) -% are given the same very high sorting weight to ensure that they come -% last when sorting alphabetically. -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% CHARACTER SET - -\lowupcase{ % Lowercase Uppercase - % Code TeX Code TeX - % - š Š % ^^9a \v{\s} ^^8a \v{S} - œ Œ % ^^9c \oe ^^8c \OE - ž Ž % ^^9e \v{\z} ^^8e \v{Z} - à À % ^^e0 \`{a} ^^c0 \`{A} - á Á % ^^e1 \'{a} ^^c1 \'{A} - â  % ^^e2 \^{a} ^^c2 \^{A} - ã à % ^^e3 \~{a} ^^c3 \~{A} - ä Ä % ^^e4 \"{a} ^^c4 \"{A} - å Å % ^^e5 \aa ^^c5 \AA - æ Æ % ^^e6 \ae ^^c6 \AE - ç Ç % ^^e7 \c{c} ^^c7 \c{C} - è È % ^^e8 \`{e} ^^c8 \`{E} - é É % ^^e9 \'{e} ^^c9 \'{E} - ê Ê % ^^ea \^{e} ^^ca \^{E} - ë Ë % ^^eb \"{e} ^^cb \"{E} - ì Ì % ^^ec \`{\i} ^^cc \`{I} - í Í % ^^ed \'{\i} ^^cd \'{I} - î Î % ^^ee \^{\i} ^^ce \^{I} - ï Ï % ^^ef \"{\i} ^^cf \"{I} - ð Ð % ^^f0 \dh ^^d0 \DH - ñ Ñ % ^^f1 \~{n} ^^d1 \~{N} - ò Ò % ^^f2 \`{o} ^^d2 \`{O} - ó Ó % ^^f3 \'{o} ^^d3 \'{O} - ô Ô % ^^f4 \^{o} ^^d4 \^{O} - õ Õ % ^^f5 \~{o} ^^d5 \~{O} - ö Ö % ^^f6 \"{o} ^^d6 \"{O} - ø Ø % ^^f8 \o ^^d8 \O - ù Ù % ^^f9 \`{u} ^^d9 \`{U} - ú Ú % ^^fa \'{u} ^^da \'{U} - û Û % ^^fb \^{u} ^^db \^{U} - ü Ü % ^^fc \"{u} ^^dc \"{U} - ý Ý % ^^fd \'{y} ^^dd \'{Y} - þ Þ % ^^fe \th ^^de \TH - ÿ Ÿ % ^^ff \"{y} ^^9f \"{Y} -} - -% SORTING ORDER - -\order{ - 0-9 - A À Á  à Š- Ä Æ - a à á â ã å - ä æ - B - b - C Ç - c ç - D Ð - d ð - E È É Ê Ë - e è é ê ë - F - f - G - g - H - h - I Ì Í Î Ï - i ì í î ï - J - j - K - k - L - l - M - m - N Ñ - n ñ - O Ò Ó Ô Õ - Ö Ø Œ - o ò ó ô õ - ö ø œ - P - p - Q - q - R - r - S Š - s š - ß - T Þ - t þ - U Ù Ú Û - Ü - u ù ú û - ü - V - v - W - w - X - x - Y Ý Ÿ - y ý ÿ - Z Ž - z ž -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% END OF FILE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/Master/texmf-dist/bibtex/csf/biblatex/winansi_dk.csf b/Master/texmf-dist/bibtex/csf/biblatex/winansi_dk.csf deleted file mode 100644 index 5722d85da80..00000000000 --- a/Master/texmf-dist/bibtex/csf/biblatex/winansi_dk.csf +++ /dev/null @@ -1,273 +0,0 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% CHARACTER SET: MS CP-1252 (Windows Ansi) -% -% MS CP-1252 is a character set used by Microsoft Windows. -% -% SORTING ORDER: Danish/Norwegian -% -% Alphabetical sorting order of Aa..Zz (including accented characters). -% -% This is a BibTeX Codepage and Sort definition file (CSF). It is -% used to define the 8-bit character set used by BibTeX and the -% order in which those characters should be sorted. The file -% format is documented below this header section. -% -% This file will only work with the 8-bit implementation of BibTeX -% written by Niel Kempson and Alejandro Aguilar-Sierra: -% -% http://www.ctan.org/tex-archive/biblio/bibtex/8-bit/ -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% FILE FORMAT -% -% The codepage and sorting order (CS) file defines how BibTeX will treat an -% 8-bit character set, specifically which characters are to be treated as -% letters, the upper/lower case relationships between characters, and the -% sorting order of characters. -% -% The CS file may contain a number of sections, each presented in the -% form of a TeX macro: -% -% \section-name{ -% <section definitions> -% } -% -% Four sections are currently supported: \lowupcase, \lowercase, \uppercase -% and \order. The syntax of the four supported sections is summarised below. -% -% 8-bit characters may be entered naturally, but to avoid problems with -% character set translation or corruption, they can also be entered using -% the TeX-style portable notation for character codes, i.e. ^^XX, where XX -% is the hexadecimal value ofthe character code. -% -% Reading of the sections ends when the first '}' character is reached, so -% '}' can't be included in a section. You can't use ^^7d either. -% -% The percent sign ('%') is used to introduce a trailing comment - it and -% all remaining characters on a line are ignored. ^^25 has the same effect. -% -% -% \lowupcase section -% -% The \lowupcase section of the CS file is used to define the lower -% /upper and upper/lower case relationship of pairs of specified -% characters. It is only used if the relationship is symmetrical - use -% \lowercase or \upcase if it isn't. -% -% The syntax of the \lowupcase section is: -% -% \lowupcase{ -% <LC-1> <UC-1> % Comment begins with a percent sign -% <LC-2> <UC-2> -% ... -% <LC-N> <UC-N> -% } -% -% Each <LC-n> <UC-n> pair of characters defines that the upper case -% equivalent of <LC-n> is <UC-n> *and* the lower case equivalent of -% <UC-n> is <LC-n>. -% -% You cannot redefine the lower or upper case equivalent of an ASCII -% character (code < 128), so all instances of <LC-n> and <UC-n> -% (i.e. both sides of the relationship) must have codes > 127. -% -% -% \lowercase section -% -% The \lowercase section of the CS file is used to define the lower case -% equivalent of specified characters. It should normally only be used -% if the relationship isn't symmetrical - use \lowupcase if it is. -% -% The syntax of the \lowercase section is: -% -% \lowercase{ -% <UC-1> <LC-1> % Comment begins with a percent sign -% <UC-2> <LC-2> -% ... -% <UC-N> <LC-N> -% } -% -% Each <LC-n> <UC-n> pair of characters defines that the lower case -% equivalent of <UC-n> is <LC-n>. -% -% You cannot redefine the lower case equivalent of an ASCII character -% (code < 128), so all instances of <UC-n> (i.e. the left hand side -% of the relationship) must have codes > 127. -% -% -% \uppercase section -% -% The \uppercase section of the CS file is used to define the upper case -% equivalent of specified characters. It should normally only be used -% if the relationship isn't symmetrical - use \lowupcase if it is. -% -% The syntax of the \uppercase section is: -% -% \uppercase{ -% <LC-1> <UC-1> % Comment begins with a percent sign -% <LC-2> <UC-2> -% ... -% <LC-N> <UC-N> -% } -% -% Each <LC-n> <UC-n> pair of characters defines that the upper case -% case equivalent of <LC-n> is <UC-n>. -% -% You cannot redefine the upper case equivalent of an ASCII character -% (code < 128), so all instances of <LC-n> (i.e. the left hand side -% of the relationship) must have codes > 127. -% -% -% \order section -% -% The \order section of the CS file is used to define the order in which -% characters are sorted. -% -% The syntax of the \order section is: -% -% \order{ -% <char-1> % Comment begins with a percent sign -% <char-2> <char-3> % whitespace between the chars -% <char-4> - <char-5> % a hyphen between the chars -% <char-4> _ <char-5> % an underscore between the chars -% ... -% <char-n> -% } -% -% All characters on the same line are given the same sorting weight. -% -% The construct <char-1> <underscore> <char-2> is used to denote that -% all characters in the range <char-1> to <char-2> should be given the -% same sorting weight. For example, "A _ Z" would cause all ASCII -% upper case alphabetical characters to have the same sorting weight -% and would be equivalent to placing all 26 characters on the same line. -% -% The construct <char-1> <hyphen> <char-2> is used to denote that all -% characters in the range <char-1> to <char-2> should be given an -% ascending set of sorting weights, starting with <char-1> and ending -% with <char-2>. For example, "A - Z" would cause all upper case ASCII -% alphabetical characters to be sorted in ascending order and would be -% equivalent to placing 'A' on the first line, 'B' on the second, -% through to 'Z' on the 26th line. -% -% The characters at the beginning of the order section are given a lower -% sorting weight than characters occuring later. When sorting -% alphabetically, characters with the lowest weight come first. -% -% All characters not in the \order section (including ASCII characters) -% are given the same very high sorting weight to ensure that they come -% last when sorting alphabetically. -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% CHARACTER SET - -\lowupcase{ % Lowercase Uppercase - % Code TeX Code TeX - % - š Š % ^^9a \v{\s} ^^8a \v{S} - œ Œ % ^^9c \oe ^^8c \OE - ž Ž % ^^9e \v{\z} ^^8e \v{Z} - à À % ^^e0 \`{a} ^^c0 \`{A} - á Á % ^^e1 \'{a} ^^c1 \'{A} - â  % ^^e2 \^{a} ^^c2 \^{A} - ã à % ^^e3 \~{a} ^^c3 \~{A} - ä Ä % ^^e4 \"{a} ^^c4 \"{A} - å Å % ^^e5 \aa ^^c5 \AA - æ Æ % ^^e6 \ae ^^c6 \AE - ç Ç % ^^e7 \c{c} ^^c7 \c{C} - è È % ^^e8 \`{e} ^^c8 \`{E} - é É % ^^e9 \'{e} ^^c9 \'{E} - ê Ê % ^^ea \^{e} ^^ca \^{E} - ë Ë % ^^eb \"{e} ^^cb \"{E} - ì Ì % ^^ec \`{\i} ^^cc \`{I} - í Í % ^^ed \'{\i} ^^cd \'{I} - î Î % ^^ee \^{\i} ^^ce \^{I} - ï Ï % ^^ef \"{\i} ^^cf \"{I} - ð Ð % ^^f0 \dh ^^d0 \DH - ñ Ñ % ^^f1 \~{n} ^^d1 \~{N} - ò Ò % ^^f2 \`{o} ^^d2 \`{O} - ó Ó % ^^f3 \'{o} ^^d3 \'{O} - ô Ô % ^^f4 \^{o} ^^d4 \^{O} - õ Õ % ^^f5 \~{o} ^^d5 \~{O} - ö Ö % ^^f6 \"{o} ^^d6 \"{O} - ø Ø % ^^f8 \o ^^d8 \O - ù Ù % ^^f9 \`{u} ^^d9 \`{U} - ú Ú % ^^fa \'{u} ^^da \'{U} - û Û % ^^fb \^{u} ^^db \^{U} - ü Ü % ^^fc \"{u} ^^dc \"{U} - ý Ý % ^^fd \'{y} ^^dd \'{Y} - þ Þ % ^^fe \th ^^de \TH - ÿ Ÿ % ^^ff \"{y} ^^9f \"{Y} - -} - -% SORTING ORDER - -\order{ - 0-9 - A À Á Â Ã Ä - a à á â ã ä - B - b - C Ç - c ç - D Ð - d ð - E È É Ê Ë - e è é ê ë - F - f - G - g - H - h - I Ì Í Î Ï - i ì í î ï - J - j - K - k - L - l - M - m - N Ñ - n ñ - O Ò Ó Ô Õ Ö Œ - o ò ó ô õ ö œ - P - p - Q - q - R - r - S Š - s š ß - T Þ - t þ - U Ù Ú Û Ü - u ù ú û ü - V - v - W - w - X - x - Y Ý Ÿ - y ý ÿ - Z Ž - z ž - Æ - æ - Ø - ø - Å - å -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% END OF FILE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/Master/texmf-dist/bibtex/csf/biblatex/winansi_fi.csf b/Master/texmf-dist/bibtex/csf/biblatex/winansi_fi.csf deleted file mode 100644 index abc8369347e..00000000000 --- a/Master/texmf-dist/bibtex/csf/biblatex/winansi_fi.csf +++ /dev/null @@ -1,243 +0,0 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% CHARACTER SET: MS CP-1252 (Windows Ansi) -% -% MS CP-1252 is a character set used by Microsoft Windows. -% -% SORTING ORDER: Finnish -% -% Alphabetical sorting order of Aa..Zz (including accented characters). -% -% This is a BibTeX Codepage and Sort definition file (CSF). It is -% used to define the 8-bit character set used by BibTeX and the -% order in which those characters should be sorted. The file -% format is documented below this header section. -% -% This file will only work with the 8-bit implementation of BibTeX -% written by Niel Kempson and Alejandro Aguilar-Sierra: -% -% http://www.ctan.org/tex-archive/biblio/bibtex/8-bit/ -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% FILE FORMAT -% -% The codepage and sorting order (CS) file defines how BibTeX will treat an -% 8-bit character set, specifically which characters are to be treated as -% letters, the upper/lower case relationships between characters, and the -% sorting order of characters. -% -% The CS file may contain a number of sections, each presented in the -% form of a TeX macro: -% -% \section-name{ -% <section definitions> -% } -% -% Four sections are currently supported: \lowupcase, \lowercase, \uppercase -% and \order. The syntax of the four supported sections is summarised below. -% -% 8-bit characters may be entered naturally, but to avoid problems with -% character set translation or corruption, they can also be entered using -% the TeX-style portable notation for character codes, i.e. ^^XX, where XX -% is the hexadecimal value ofthe character code. -% -% Reading of the sections ends when the first '}' character is reached, so -% '}' can't be included in a section. You can't use ^^7d either. -% -% The percent sign ('%') is used to introduce a trailing comment - it and -% all remaining characters on a line are ignored. ^^25 has the same effect. -% -% -% \lowupcase section -% -% The \lowupcase section of the CS file is used to define the lower -% /upper and upper/lower case relationship of pairs of specified -% characters. It is only used if the relationship is symmetrical - use -% \lowercase or \upcase if it isn't. -% -% The syntax of the \lowupcase section is: -% -% \lowupcase{ -% <LC-1> <UC-1> % Comment begins with a percent sign -% <LC-2> <UC-2> -% ... -% <LC-N> <UC-N> -% } -% -% Each <LC-n> <UC-n> pair of characters defines that the upper case -% equivalent of <LC-n> is <UC-n> *and* the lower case equivalent of -% <UC-n> is <LC-n>. -% -% You cannot redefine the lower or upper case equivalent of an ASCII -% character (code < 128), so all instances of <LC-n> and <UC-n> -% (i.e. both sides of the relationship) must have codes > 127. -% -% -% \lowercase section -% -% The \lowercase section of the CS file is used to define the lower case -% equivalent of specified characters. It should normally only be used -% if the relationship isn't symmetrical - use \lowupcase if it is. -% -% The syntax of the \lowercase section is: -% -% \lowercase{ -% <UC-1> <LC-1> % Comment begins with a percent sign -% <UC-2> <LC-2> -% ... -% <UC-N> <LC-N> -% } -% -% Each <LC-n> <UC-n> pair of characters defines that the lower case -% equivalent of <UC-n> is <LC-n>. -% -% You cannot redefine the lower case equivalent of an ASCII character -% (code < 128), so all instances of <UC-n> (i.e. the left hand side -% of the relationship) must have codes > 127. -% -% -% \uppercase section -% -% The \uppercase section of the CS file is used to define the upper case -% equivalent of specified characters. It should normally only be used -% if the relationship isn't symmetrical - use \lowupcase if it is. -% -% The syntax of the \uppercase section is: -% -% \uppercase{ -% <LC-1> <UC-1> % Comment begins with a percent sign -% <LC-2> <UC-2> -% ... -% <LC-N> <UC-N> -% } -% -% Each <LC-n> <UC-n> pair of characters defines that the upper case -% case equivalent of <LC-n> is <UC-n>. -% -% You cannot redefine the upper case equivalent of an ASCII character -% (code < 128), so all instances of <LC-n> (i.e. the left hand side -% of the relationship) must have codes > 127. -% -% -% \order section -% -% The \order section of the CS file is used to define the order in which -% characters are sorted. -% -% The syntax of the \order section is: -% -% \order{ -% <char-1> % Comment begins with a percent sign -% <char-2> <char-3> % whitespace between the chars -% <char-4> - <char-5> % a hyphen between the chars -% <char-4> _ <char-5> % an underscore between the chars -% ... -% <char-n> -% } -% -% All characters on the same line are given the same sorting weight. -% -% The construct <char-1> <underscore> <char-2> is used to denote that -% all characters in the range <char-1> to <char-2> should be given the -% same sorting weight. For example, "A _ Z" would cause all ASCII -% upper case alphabetical characters to have the same sorting weight -% and would be equivalent to placing all 26 characters on the same line. -% -% The construct <char-1> <hyphen> <char-2> is used to denote that all -% characters in the range <char-1> to <char-2> should be given an -% ascending set of sorting weights, starting with <char-1> and ending -% with <char-2>. For example, "A - Z" would cause all upper case ASCII -% alphabetical characters to be sorted in ascending order and would be -% equivalent to placing 'A' on the first line, 'B' on the second, -% through to 'Z' on the 26th line. -% -% The characters at the beginning of the order section are given a lower -% sorting weight than characters occuring later. When sorting -% alphabetically, characters with the lowest weight come first. -% -% All characters not in the \order section (including ASCII characters) -% are given the same very high sorting weight to ensure that they come -% last when sorting alphabetically. -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% CHARACTER SET - -\lowupcase{ % Lowercase Uppercase - % Code TeX Code TeX - % - š Š % ^^9a \v{\s} ^^8a \v{S} - œ Œ % ^^9c \oe ^^8c \OE - ž Ž % ^^9e \v{\z} ^^8e \v{Z} - à À % ^^e0 \`{a} ^^c0 \`{A} - á Á % ^^e1 \'{a} ^^c1 \'{A} - â  % ^^e2 \^{a} ^^c2 \^{A} - ã à % ^^e3 \~{a} ^^c3 \~{A} - ä Ä % ^^e4 \"{a} ^^c4 \"{A} - å Å % ^^e5 \aa ^^c5 \AA - æ Æ % ^^e6 \ae ^^c6 \AE - ç Ç % ^^e7 \c{c} ^^c7 \c{C} - è È % ^^e8 \`{e} ^^c8 \`{E} - é É % ^^e9 \'{e} ^^c9 \'{E} - ê Ê % ^^ea \^{e} ^^ca \^{E} - ë Ë % ^^eb \"{e} ^^cb \"{E} - ì Ì % ^^ec \`{\i} ^^cc \`{I} - í Í % ^^ed \'{\i} ^^cd \'{I} - î Î % ^^ee \^{\i} ^^ce \^{I} - ï Ï % ^^ef \"{\i} ^^cf \"{I} - ð Ð % ^^f0 \dh ^^d0 \DH - ñ Ñ % ^^f1 \~{n} ^^d1 \~{N} - ò Ò % ^^f2 \`{o} ^^d2 \`{O} - ó Ó % ^^f3 \'{o} ^^d3 \'{O} - ô Ô % ^^f4 \^{o} ^^d4 \^{O} - õ Õ % ^^f5 \~{o} ^^d5 \~{O} - ö Ö % ^^f6 \"{o} ^^d6 \"{O} - ø Ø % ^^f8 \o ^^d8 \O - ù Ù % ^^f9 \`{u} ^^d9 \`{U} - ú Ú % ^^fa \'{u} ^^da \'{U} - û Û % ^^fb \^{u} ^^db \^{U} - ü Ü % ^^fc \"{u} ^^dc \"{U} - ý Ý % ^^fd \'{y} ^^dd \'{Y} - þ Þ % ^^fe \th ^^de \TH - ÿ Ÿ % ^^ff \"{y} ^^9f \"{Y} -} - -% SORTING ORDER - -\order{ - 0-9 - A À Á Â Ã Å Ä Æ a à á â ã å ä æ - B b - C Ç c ç - D Ð d ð - E È É Ê Ë e è é ê ë - F f - G g - H h - I Ì Í Î Ï i ì í î ï - J j - K k - L l - M m - N Ñ n ñ - O Ò Ó Ô Œ o ò ó ô œ - P p - Q q - R r - S Š s š ß - T Þ t þ - U Ù Ú Û u ù ú û - V v - W w - X x - Y Ý Ÿ Ü y ý ÿ ü - Z Ž z ž - Å å - Ä ä - Ö Õ Ø ö õ ø -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% END OF FILE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/Master/texmf-dist/bibtex/csf/biblatex/winansi_no.csf b/Master/texmf-dist/bibtex/csf/biblatex/winansi_no.csf deleted file mode 100644 index 5722d85da80..00000000000 --- a/Master/texmf-dist/bibtex/csf/biblatex/winansi_no.csf +++ /dev/null @@ -1,273 +0,0 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% CHARACTER SET: MS CP-1252 (Windows Ansi) -% -% MS CP-1252 is a character set used by Microsoft Windows. -% -% SORTING ORDER: Danish/Norwegian -% -% Alphabetical sorting order of Aa..Zz (including accented characters). -% -% This is a BibTeX Codepage and Sort definition file (CSF). It is -% used to define the 8-bit character set used by BibTeX and the -% order in which those characters should be sorted. The file -% format is documented below this header section. -% -% This file will only work with the 8-bit implementation of BibTeX -% written by Niel Kempson and Alejandro Aguilar-Sierra: -% -% http://www.ctan.org/tex-archive/biblio/bibtex/8-bit/ -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% FILE FORMAT -% -% The codepage and sorting order (CS) file defines how BibTeX will treat an -% 8-bit character set, specifically which characters are to be treated as -% letters, the upper/lower case relationships between characters, and the -% sorting order of characters. -% -% The CS file may contain a number of sections, each presented in the -% form of a TeX macro: -% -% \section-name{ -% <section definitions> -% } -% -% Four sections are currently supported: \lowupcase, \lowercase, \uppercase -% and \order. The syntax of the four supported sections is summarised below. -% -% 8-bit characters may be entered naturally, but to avoid problems with -% character set translation or corruption, they can also be entered using -% the TeX-style portable notation for character codes, i.e. ^^XX, where XX -% is the hexadecimal value ofthe character code. -% -% Reading of the sections ends when the first '}' character is reached, so -% '}' can't be included in a section. You can't use ^^7d either. -% -% The percent sign ('%') is used to introduce a trailing comment - it and -% all remaining characters on a line are ignored. ^^25 has the same effect. -% -% -% \lowupcase section -% -% The \lowupcase section of the CS file is used to define the lower -% /upper and upper/lower case relationship of pairs of specified -% characters. It is only used if the relationship is symmetrical - use -% \lowercase or \upcase if it isn't. -% -% The syntax of the \lowupcase section is: -% -% \lowupcase{ -% <LC-1> <UC-1> % Comment begins with a percent sign -% <LC-2> <UC-2> -% ... -% <LC-N> <UC-N> -% } -% -% Each <LC-n> <UC-n> pair of characters defines that the upper case -% equivalent of <LC-n> is <UC-n> *and* the lower case equivalent of -% <UC-n> is <LC-n>. -% -% You cannot redefine the lower or upper case equivalent of an ASCII -% character (code < 128), so all instances of <LC-n> and <UC-n> -% (i.e. both sides of the relationship) must have codes > 127. -% -% -% \lowercase section -% -% The \lowercase section of the CS file is used to define the lower case -% equivalent of specified characters. It should normally only be used -% if the relationship isn't symmetrical - use \lowupcase if it is. -% -% The syntax of the \lowercase section is: -% -% \lowercase{ -% <UC-1> <LC-1> % Comment begins with a percent sign -% <UC-2> <LC-2> -% ... -% <UC-N> <LC-N> -% } -% -% Each <LC-n> <UC-n> pair of characters defines that the lower case -% equivalent of <UC-n> is <LC-n>. -% -% You cannot redefine the lower case equivalent of an ASCII character -% (code < 128), so all instances of <UC-n> (i.e. the left hand side -% of the relationship) must have codes > 127. -% -% -% \uppercase section -% -% The \uppercase section of the CS file is used to define the upper case -% equivalent of specified characters. It should normally only be used -% if the relationship isn't symmetrical - use \lowupcase if it is. -% -% The syntax of the \uppercase section is: -% -% \uppercase{ -% <LC-1> <UC-1> % Comment begins with a percent sign -% <LC-2> <UC-2> -% ... -% <LC-N> <UC-N> -% } -% -% Each <LC-n> <UC-n> pair of characters defines that the upper case -% case equivalent of <LC-n> is <UC-n>. -% -% You cannot redefine the upper case equivalent of an ASCII character -% (code < 128), so all instances of <LC-n> (i.e. the left hand side -% of the relationship) must have codes > 127. -% -% -% \order section -% -% The \order section of the CS file is used to define the order in which -% characters are sorted. -% -% The syntax of the \order section is: -% -% \order{ -% <char-1> % Comment begins with a percent sign -% <char-2> <char-3> % whitespace between the chars -% <char-4> - <char-5> % a hyphen between the chars -% <char-4> _ <char-5> % an underscore between the chars -% ... -% <char-n> -% } -% -% All characters on the same line are given the same sorting weight. -% -% The construct <char-1> <underscore> <char-2> is used to denote that -% all characters in the range <char-1> to <char-2> should be given the -% same sorting weight. For example, "A _ Z" would cause all ASCII -% upper case alphabetical characters to have the same sorting weight -% and would be equivalent to placing all 26 characters on the same line. -% -% The construct <char-1> <hyphen> <char-2> is used to denote that all -% characters in the range <char-1> to <char-2> should be given an -% ascending set of sorting weights, starting with <char-1> and ending -% with <char-2>. For example, "A - Z" would cause all upper case ASCII -% alphabetical characters to be sorted in ascending order and would be -% equivalent to placing 'A' on the first line, 'B' on the second, -% through to 'Z' on the 26th line. -% -% The characters at the beginning of the order section are given a lower -% sorting weight than characters occuring later. When sorting -% alphabetically, characters with the lowest weight come first. -% -% All characters not in the \order section (including ASCII characters) -% are given the same very high sorting weight to ensure that they come -% last when sorting alphabetically. -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% CHARACTER SET - -\lowupcase{ % Lowercase Uppercase - % Code TeX Code TeX - % - š Š % ^^9a \v{\s} ^^8a \v{S} - œ Œ % ^^9c \oe ^^8c \OE - ž Ž % ^^9e \v{\z} ^^8e \v{Z} - à À % ^^e0 \`{a} ^^c0 \`{A} - á Á % ^^e1 \'{a} ^^c1 \'{A} - â  % ^^e2 \^{a} ^^c2 \^{A} - ã à % ^^e3 \~{a} ^^c3 \~{A} - ä Ä % ^^e4 \"{a} ^^c4 \"{A} - å Å % ^^e5 \aa ^^c5 \AA - æ Æ % ^^e6 \ae ^^c6 \AE - ç Ç % ^^e7 \c{c} ^^c7 \c{C} - è È % ^^e8 \`{e} ^^c8 \`{E} - é É % ^^e9 \'{e} ^^c9 \'{E} - ê Ê % ^^ea \^{e} ^^ca \^{E} - ë Ë % ^^eb \"{e} ^^cb \"{E} - ì Ì % ^^ec \`{\i} ^^cc \`{I} - í Í % ^^ed \'{\i} ^^cd \'{I} - î Î % ^^ee \^{\i} ^^ce \^{I} - ï Ï % ^^ef \"{\i} ^^cf \"{I} - ð Ð % ^^f0 \dh ^^d0 \DH - ñ Ñ % ^^f1 \~{n} ^^d1 \~{N} - ò Ò % ^^f2 \`{o} ^^d2 \`{O} - ó Ó % ^^f3 \'{o} ^^d3 \'{O} - ô Ô % ^^f4 \^{o} ^^d4 \^{O} - õ Õ % ^^f5 \~{o} ^^d5 \~{O} - ö Ö % ^^f6 \"{o} ^^d6 \"{O} - ø Ø % ^^f8 \o ^^d8 \O - ù Ù % ^^f9 \`{u} ^^d9 \`{U} - ú Ú % ^^fa \'{u} ^^da \'{U} - û Û % ^^fb \^{u} ^^db \^{U} - ü Ü % ^^fc \"{u} ^^dc \"{U} - ý Ý % ^^fd \'{y} ^^dd \'{Y} - þ Þ % ^^fe \th ^^de \TH - ÿ Ÿ % ^^ff \"{y} ^^9f \"{Y} - -} - -% SORTING ORDER - -\order{ - 0-9 - A À Á Â Ã Ä - a à á â ã ä - B - b - C Ç - c ç - D Ð - d ð - E È É Ê Ë - e è é ê ë - F - f - G - g - H - h - I Ì Í Î Ï - i ì í î ï - J - j - K - k - L - l - M - m - N Ñ - n ñ - O Ò Ó Ô Õ Ö Œ - o ò ó ô õ ö œ - P - p - Q - q - R - r - S Š - s š ß - T Þ - t þ - U Ù Ú Û Ü - u ù ú û ü - V - v - W - w - X - x - Y Ý Ÿ - y ý ÿ - Z Ž - z ž - Æ - æ - Ø - ø - Å - å -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% END OF FILE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/Master/texmf-dist/bibtex/csf/biblatex/winansi_se.csf b/Master/texmf-dist/bibtex/csf/biblatex/winansi_se.csf deleted file mode 100644 index 25db16f4d82..00000000000 --- a/Master/texmf-dist/bibtex/csf/biblatex/winansi_se.csf +++ /dev/null @@ -1,273 +0,0 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% CHARACTER SET: MS CP-1252 (Windows Ansi) -% -% MS CP-1252 is a character set used by Microsoft Windows. -% -% SORTING ORDER: Swedish -% -% Alphabetical sorting order of Aa..Zz (including accented characters). -% -% This is a BibTeX Codepage and Sort definition file (CSF). It is -% used to define the 8-bit character set used by BibTeX and the -% order in which those characters should be sorted. The file -% format is documented below this header section. -% -% This file will only work with the 8-bit implementation of BibTeX -% written by Niel Kempson and Alejandro Aguilar-Sierra: -% -% http://www.ctan.org/tex-archive/biblio/bibtex/8-bit/ -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% FILE FORMAT -% -% The codepage and sorting order (CS) file defines how BibTeX will treat an -% 8-bit character set, specifically which characters are to be treated as -% letters, the upper/lower case relationships between characters, and the -% sorting order of characters. -% -% The CS file may contain a number of sections, each presented in the -% form of a TeX macro: -% -% \section-name{ -% <section definitions> -% } -% -% Four sections are currently supported: \lowupcase, \lowercase, \uppercase -% and \order. The syntax of the four supported sections is summarised below. -% -% 8-bit characters may be entered naturally, but to avoid problems with -% character set translation or corruption, they can also be entered using -% the TeX-style portable notation for character codes, i.e. ^^XX, where XX -% is the hexadecimal value ofthe character code. -% -% Reading of the sections ends when the first '}' character is reached, so -% '}' can't be included in a section. You can't use ^^7d either. -% -% The percent sign ('%') is used to introduce a trailing comment - it and -% all remaining characters on a line are ignored. ^^25 has the same effect. -% -% -% \lowupcase section -% -% The \lowupcase section of the CS file is used to define the lower -% /upper and upper/lower case relationship of pairs of specified -% characters. It is only used if the relationship is symmetrical - use -% \lowercase or \upcase if it isn't. -% -% The syntax of the \lowupcase section is: -% -% \lowupcase{ -% <LC-1> <UC-1> % Comment begins with a percent sign -% <LC-2> <UC-2> -% ... -% <LC-N> <UC-N> -% } -% -% Each <LC-n> <UC-n> pair of characters defines that the upper case -% equivalent of <LC-n> is <UC-n> *and* the lower case equivalent of -% <UC-n> is <LC-n>. -% -% You cannot redefine the lower or upper case equivalent of an ASCII -% character (code < 128), so all instances of <LC-n> and <UC-n> -% (i.e. both sides of the relationship) must have codes > 127. -% -% -% \lowercase section -% -% The \lowercase section of the CS file is used to define the lower case -% equivalent of specified characters. It should normally only be used -% if the relationship isn't symmetrical - use \lowupcase if it is. -% -% The syntax of the \lowercase section is: -% -% \lowercase{ -% <UC-1> <LC-1> % Comment begins with a percent sign -% <UC-2> <LC-2> -% ... -% <UC-N> <LC-N> -% } -% -% Each <LC-n> <UC-n> pair of characters defines that the lower case -% equivalent of <UC-n> is <LC-n>. -% -% You cannot redefine the lower case equivalent of an ASCII character -% (code < 128), so all instances of <UC-n> (i.e. the left hand side -% of the relationship) must have codes > 127. -% -% -% \uppercase section -% -% The \uppercase section of the CS file is used to define the upper case -% equivalent of specified characters. It should normally only be used -% if the relationship isn't symmetrical - use \lowupcase if it is. -% -% The syntax of the \uppercase section is: -% -% \uppercase{ -% <LC-1> <UC-1> % Comment begins with a percent sign -% <LC-2> <UC-2> -% ... -% <LC-N> <UC-N> -% } -% -% Each <LC-n> <UC-n> pair of characters defines that the upper case -% case equivalent of <LC-n> is <UC-n>. -% -% You cannot redefine the upper case equivalent of an ASCII character -% (code < 128), so all instances of <LC-n> (i.e. the left hand side -% of the relationship) must have codes > 127. -% -% -% \order section -% -% The \order section of the CS file is used to define the order in which -% characters are sorted. -% -% The syntax of the \order section is: -% -% \order{ -% <char-1> % Comment begins with a percent sign -% <char-2> <char-3> % whitespace between the chars -% <char-4> - <char-5> % a hyphen between the chars -% <char-4> _ <char-5> % an underscore between the chars -% ... -% <char-n> -% } -% -% All characters on the same line are given the same sorting weight. -% -% The construct <char-1> <underscore> <char-2> is used to denote that -% all characters in the range <char-1> to <char-2> should be given the -% same sorting weight. For example, "A _ Z" would cause all ASCII -% upper case alphabetical characters to have the same sorting weight -% and would be equivalent to placing all 26 characters on the same line. -% -% The construct <char-1> <hyphen> <char-2> is used to denote that all -% characters in the range <char-1> to <char-2> should be given an -% ascending set of sorting weights, starting with <char-1> and ending -% with <char-2>. For example, "A - Z" would cause all upper case ASCII -% alphabetical characters to be sorted in ascending order and would be -% equivalent to placing 'A' on the first line, 'B' on the second, -% through to 'Z' on the 26th line. -% -% The characters at the beginning of the order section are given a lower -% sorting weight than characters occuring later. When sorting -% alphabetically, characters with the lowest weight come first. -% -% All characters not in the \order section (including ASCII characters) -% are given the same very high sorting weight to ensure that they come -% last when sorting alphabetically. -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% CHARACTER SET - -\lowupcase{ % Lowercase Uppercase - % Code TeX Code TeX - % - š Š % ^^9a \v{\s} ^^8a \v{S} - œ Œ % ^^9c \oe ^^8c \OE - ž Ž % ^^9e \v{\z} ^^8e \v{Z} - à À % ^^e0 \`{a} ^^c0 \`{A} - á Á % ^^e1 \'{a} ^^c1 \'{A} - â  % ^^e2 \^{a} ^^c2 \^{A} - ã à % ^^e3 \~{a} ^^c3 \~{A} - ä Ä % ^^e4 \"{a} ^^c4 \"{A} - å Å % ^^e5 \aa ^^c5 \AA - æ Æ % ^^e6 \ae ^^c6 \AE - ç Ç % ^^e7 \c{c} ^^c7 \c{C} - è È % ^^e8 \`{e} ^^c8 \`{E} - é É % ^^e9 \'{e} ^^c9 \'{E} - ê Ê % ^^ea \^{e} ^^ca \^{E} - ë Ë % ^^eb \"{e} ^^cb \"{E} - ì Ì % ^^ec \`{\i} ^^cc \`{I} - í Í % ^^ed \'{\i} ^^cd \'{I} - î Î % ^^ee \^{\i} ^^ce \^{I} - ï Ï % ^^ef \"{\i} ^^cf \"{I} - ð Ð % ^^f0 \dh ^^d0 \DH - ñ Ñ % ^^f1 \~{n} ^^d1 \~{N} - ò Ò % ^^f2 \`{o} ^^d2 \`{O} - ó Ó % ^^f3 \'{o} ^^d3 \'{O} - ô Ô % ^^f4 \^{o} ^^d4 \^{O} - õ Õ % ^^f5 \~{o} ^^d5 \~{O} - ö Ö % ^^f6 \"{o} ^^d6 \"{O} - ø Ø % ^^f8 \o ^^d8 \O - ù Ù % ^^f9 \`{u} ^^d9 \`{U} - ú Ú % ^^fa \'{u} ^^da \'{U} - û Û % ^^fb \^{u} ^^db \^{U} - ü Ü % ^^fc \"{u} ^^dc \"{U} - ý Ý % ^^fd \'{y} ^^dd \'{Y} - þ Þ % ^^fe \th ^^de \TH - ÿ Ÿ % ^^ff \"{y} ^^9f \"{Y} - -} - -% SORTING ORDER - -\order{ - 0-9 - A À Á Â Ã Æ - a à á â ã æ - B - b - C Ç - c ç - D Ð - d ð - E È É Ê Ë - e è é ê ë - F - f - G - g - H - h - I Ì Í Î Ï - i ì í î ï - J - j - K - k - L - l - M - m - N Ñ - n ñ - O Ò Ó Ô Õ Ø Œ - o ò ó ô õ ø œ - P - p - Q - q - R - r - S Š - s š ß - T Þ - t þ - U Ù Ú Û Ü - u ù ú û ü - V - v - W - w - X - x - Y Ý Ÿ - y ý ÿ - Z Ž - z ž - Å - å - Ä - ä - Ö - ö -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% END OF FILE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/Master/texmf-dist/doc/latex/biblatex/RELEASE b/Master/texmf-dist/doc/latex/biblatex/CHANGES index 4bb203b278d..85cd8ce9937 100644 --- a/Master/texmf-dist/doc/latex/biblatex/RELEASE +++ b/Master/texmf-dist/doc/latex/biblatex/CHANGES @@ -1,3 +1,61 @@ +RELEASE NOTES FOR VERSION 3.4 + +* Biber version 2.5 is required for biblatex 3.4 +* INCOMPATIBLE CHANGE - There have been major changes to the support for + bibtex as a backend. In order to facilitate future development, the + bibtex and biber code paths have been merged and bibtex as a biblatex + backend is now officially deprecated with a view to discontinued support + in a future release. bibtex as a backend will still work currently with a + reduced feature set. Of particular note are the labelprefix (formerly + prefixnumbers) option and support for shorthand lists, neither of which + will work with the bibtex backend any longer as it was deemed too + difficult to maintain support for these with merged backend code paths. + Please switch to using biber to use these features. The documentation no + longer mentioned biber/bibtex specific features and should be taken as + referring to biber features with limited fallback support for bibtex. +* A new data annotations feature is available which allows attachment of + semantic annotation markers to bibliographic data. Macros are provided + for accessing the annotations during formatting. This allows, for + example, highlighting of particular names in a name list without putting + markup in the data. See the main documentation for details. +* There is a new per-entry option "noinherit" which allows fine-grained + blocking of data inheritance declared with \DeclareDataInheritance. See + the docs for \DeclareDataInheritance. +* A new context-sensitive delimiter interface (\DeclareDelimFormat) is now + available. This is able to vary a delimiter based on where it occurs (in a + citation, in a bib item etc.) A new sample file (04-delimiters) demonstrates the + interface and how it interacts with the basic static delimiter definition interface. +* Arbitrary sets of data fields can now be defined with + \DeclareDatafieldSet. Such sets are now used to determine behaviour in + various places - search the PDF doc for mention of this macro. + Users/style authors can define their own sets of fields and access them + with automatically generated etoolbox list macros. +* Transliteration support during sorting is now possible via + \DeclareSortTranslit. This is useful for sorting languages which are not + directly supported by the UCA+CLDR. The only currently supported + transliteration is for Sanskrit (IAST romanisation->DevanÄgarÄ«). Please + open a github ticket if you think you require any other transliterations. +* The \ifempty macro for testing namepart emptiness introduced in 3.3 was a + mistake. If you used this, please use \ifdefvoid instead - this is standard etoolbox. +* The "prefixnumbers" option has been renamed to "labelprefix" since it is + not specific to numeric styles and may be used with alpha label styles + too. Since this option can change citation labels, which are not + contained in a bibliography list, it is no longer an option of + \printbibliography and is now an option of reference contexts. This makes + certain things now possible such as citing the same entry from different + bibliographies with different prefices. +* INCOMPATIBLE CHANGE - The internal field "prefixnumber" is now called + "labelprefix" as the name was a legacy of originally only applying to + numeric styles. If you refer to this field in your style, please change it. + Using the field "prefixnumber" will issue a deprecation warning +* With biber, for fields of datatype "date" in the datamodel, the internal + macros, package options and datepart fields are automatically created. + This makes defining custom date fields easier. +* The \nameparts macro inside \DeclareNameFormat is no longer necessary. + Name part macros will be automatically populated and \nameparts will be + ignored if found. +* Bugfixes + RELEASE NOTES FOR VERSION 3.3 * Biber version 2.4 is required for biblatex 3.3 diff --git a/Master/texmf-dist/doc/latex/biblatex/README b/Master/texmf-dist/doc/latex/biblatex/README index 88e856e9cfa..dd70d9e999e 100644 --- a/Master/texmf-dist/doc/latex/biblatex/README +++ b/Master/texmf-dist/doc/latex/biblatex/README @@ -1,7 +1,7 @@ ABOUT The biblatex package is a complete reimplementation of the -bibliographic facilities provided by LaTeX. A custom backend "Biber" +bibliographic facilities provided by LaTeX. A custom backend "biber" by default is used which processed the BibTeX format data files and them performs all sorting, label generation (and a great deal more). Legacy BibTeX is also supported as a backend, albeit with a @@ -60,7 +60,7 @@ Strictly required: Strongly recommended: - Biber -- babel +- babel/polyglossia - csquotes 4.4 or later Biber is available from CTAN, via TeXLive or from @@ -158,30 +158,6 @@ Note that you may have to create some or all of the above directories if this is the first package you're installing locally (as opposed to via a package manager). -ADDITIONAL RESOURCES - -latin1.csf - -A codepage and sort definition file for the 8-bit implementation of -BibTeX. This file adds support for ISO 8859-1 (Latin 1). It is a -modified and expanded version of the 88591lat.csf file that ships -with bibtex8. latin1.csf implements a generic sorting order; the -latin1_*.csf files are optimized for specific languages. - -latin9.csf - -A codepage and sort definition file for the 8-bit implementation of -BibTeX. This file adds support for ISO 8859-15 (Latin 9). latin9.csf -implements a generic sorting order; the latin9_*.csf files are -optimized for specific languages. - -winansi.csf - -A codepage and sort definition file for the 8-bit implementation of -BibTeX. This file adds support for Microsoft Codepage 1252 (Windows -Ansi). winansi.csf implements a generic sorting order; the -winansi_*.csf files are optimized for specific languages. - USAGE Refer to biblatex.pdf for a systematic reference manual and to the @@ -190,4 +166,4 @@ Refer to biblatex.pdf for a systematic reference manual and to the CHANGES A list of changes relevant to users of this package is included at -the end of 'biblatex.pdf'. See also the release notes in 'RELEASE'. +the end of 'biblatex.pdf'. See also the release notes in 'CHANGES'. diff --git a/Master/texmf-dist/doc/latex/biblatex/biblatex.pdf b/Master/texmf-dist/doc/latex/biblatex/biblatex.pdf Binary files differindex a4762be524d..6895b570155 100644 --- a/Master/texmf-dist/doc/latex/biblatex/biblatex.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/biblatex.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/biblatex.tex b/Master/texmf-dist/doc/latex/biblatex/biblatex.tex index 6ed0af92e75..dce955d9c86 100644 --- a/Master/texmf-dist/doc/latex/biblatex/biblatex.tex +++ b/Master/texmf-dist/doc/latex/biblatex/biblatex.tex @@ -45,13 +45,12 @@ \MakeAutoQuote*{<}{>} \MakeShortVerb{\|} -\newcommand*{\biber}{Biber\xspace} -\newcommand*{\biblatex}{BibLaTeX\xspace} -\newcommand*{\biblatexml}{BibLaTeXML\xspace} -\newcommand*{\ris}{RIS\xspace} +\newcommand*{\biber}{\sty{biber}\xspace} +\newcommand*{\biblatex}{\sty{biblatex}\xspace} +\newcommand*{\biblatexml}{\sty{biblatexml}\xspace} +\newcommand*{\ris}{\sty{RIS}\xspace} \newcommand*{\biblatexhome}{http://sourceforge.net/projects/biblatex/} -\newcommand*{\biblatexctan}{% - http://www.ctan.org/tex-archive/macros/latex/contrib/biblatex/} +\newcommand*{\biblatexctan}{http://ctan.org/pkg/biblatex/} \titlepage{% title={The \biblatex Package}, @@ -60,7 +59,7 @@ author={Philipp Lehman \\(with Philip Kime, Audrey Boruvka and Joseph Wright)}, email={}, revision={3.4}, - date={//2016}} + date={\today}} \hypersetup{% pdftitle={The \biblatex Package}, @@ -125,18 +124,15 @@ \textcolor{spot}{\margnotefont Deprecated}} \newrobustcmd*{\DeprecatedMark}{% \leavevmode\marginpar{\Deprecated}} -\newrobustcmd*{\BiberOnly}{% - \textcolor{spot}{\margnotefont Biber only}} -\newrobustcmd*{\BiberOnlyMark}{% - \leavevmode\marginpar{\BiberOnly}} -\newrobustcmd*{\BibTeXOnly}{% - \textcolor{spot}{\margnotefont BibTeX only}} -\newrobustcmd*{\BibTeXOnlyMark}{% - \leavevmode\marginpar{\BibTeXOnly}} \newrobustcmd*{\LF}{% \textcolor{spot}{\margnotefont Label field}} \newrobustcmd*{\LFMark}{% \leavevmode\marginpar{\LF}} +\newrobustcmd*{\CSdelim}{% + \textcolor{spot}{\margnotefont Context Sensitive}} +\newrobustcmd*{\CSdelimMark}{% + \leavevmode\marginpar{\CSdelim}} + % following snippet is based on code by Michael Ummels (TeX Stack Exchange) % <http://tex.stackexchange.com/a/13073/8305> @@ -166,18 +162,18 @@ For a quick start guide, browse \secref{int:abt, bib:typ, bib:fld, bib:use, use: \subsection[About]{About \biblatex} \label{int:abt} -This package provides advanced bibliographic facilities for use with \latex in conjunction with \bibtex. The package is a complete reimplementation of the bibliographic facilities provided by \latex. A custom backend \biber by default is used which processes the \bibtex format data files and them performs all sorting, label generation (and a great deal more). Legacy \bibtex is also supported as a backend, albeit with a reduced feature set. Biblatex does not use the backend to format the bibliography information as with traditional \bibtex: instead of being implemented in \bibtex style files, the formatting of the bibliography is entirely controlled by TeX macros. Good working knowledge in \latex should be sufficient to design new bibliography and citation styles. There is no need to learn \bibtex's postfix stack language. This package also supports subdivided bibliographies, multiple bibliographies within one document, and separate lists of bibliographic information such as abbreviations of various fields. Bibliographies may be subdivided into parts and\slash or segmented by topics. Just like the bibliography styles, all citation commands may be freely defined. With \biber as the backend, features such as customisable sorting, multiple bibliographies with different sorting, customisable labels, dynamic data modification are available. Please refer to \secref{int:pre:bibercompat} for information on \biber/\biblatex version compatibility. The package is completely localized and can interface with the \sty{babel} package. Please refer to \tabref{bib:fld:tab1} for a list of languages currently supported by this package. +This package provides advanced bibliographic facilities for use with \latex. The package is a complete reimplementation of the bibliographic facilities provided by \latex. The \biblatex\ package works with the \enquote{backend} (program) \biber, which is used to process \bibtex\ format data files and them performs all sorting, label generation (and a great deal more). Formatting of the bibliography is entirely controlled by \tex\ macros. Good working knowledge in \latex should be sufficient to design new bibliography and citation styles. This package also supports subdivided bibliographies, multiple bibliographies within one document, and separate lists of bibliographic information such as abbreviations of various fields. Bibliographies may be subdivided into parts and\slash or segmented by topics. Just like the bibliography styles, all citation commands may be freely defined. Features such as full Unicode support for bibliography data, customisable sorting, multiple bibliographies with different sorting, customisable labels and dynamic data modification are available. Please refer to \secref{int:pre:bibercompat} for information on \biber/\biblatex version compatibility. The package is completely localised and can interface with the \sty{babel} and \sty{polyglossia} packages. Please refer to \tabref{bib:fld:tab1} for a list of languages currently supported by this package. \subsection{License} -Copyright \textcopyright\ 2006--2012 Philipp Lehman, 2012--2013 Philip Kime, Audrey Boruvka, Joseph Wright. Permission is granted to copy, distribute and\slash or modify this software under the terms of the \lppl, version 1.3.\fnurl{http://www.ctan.org/tex-archive/macros/latex/base/lppl.txt} +Copyright \textcopyright\ 2006--2012 Philipp Lehman, 2012--2016 Philip Kime, Audrey Boruvka, Joseph Wright. Permission is granted to copy, distribute and\slash or modify this software under the terms of the \lppl, version 1.3.\fnurl{http://www.latex-project.org/lppl.txt} \subsection{Feedback} \label{int:feb} Please use the \biblatex project page on GitHub to report bugs and submit feature requests.\fnurl{http://github.com/plk/biblatex} Before making a feature request, please ensure that you have thoroughly studied this manual. If you do not want to report a bug or request a feature but are simply in need of assistance, you might want to consider posting your question on the \texttt{comp.text.tex} newsgroup or \tex-\latex Stack Exchange.\fnurl{http://tex.stackexchange.com/questions/tagged/biblatex} -\subsection{Acknowledgments} +\subsection{Acknowledgements} The language modules of this package are made possible thanks to the following contributors: Augusto Ritter Stoffel, Mateus Araújo (Brazilian); @@ -199,6 +195,7 @@ Oleg Domanov (Russian); Tea TuÅ¡ar and Bogdan FilipiÄ (Slovene); Ignacio Fernández Galván (Spanish); Per Starbäck, Carl-Gustav Werner, Filip Ã…sblom (Swedish). +Martin Vrábel, Dávid Lupták (Slovak); \subsection{Prerequisites} \label{int:pre} @@ -216,19 +213,16 @@ The resources listed in this section are strictly required for \biblatex to func The \biblatex package requires \etex. \tex distributions have been shipping \etex binaries for quite some time, the popular distributions use them by default these days. The \biblatex package checks if it is running under \etex. Simply try compiling your documents as you usually do, the chances are that it just works. If you get an error message, try compiling the document with \bin{elatex} instead of \bin{latex} or \bin{pdfelatex} instead of \bin{pdflatex}, respectively. \item[\biber] -\biber is the default backend of \biblatex. You only need one backend, either \bibtex or \biber. \biber comes with TeXLive and is also available from SourceForge.\fnurl{http://biblatex-biber.sourceforge.net/}. There are some slight differences in name parsing of <von> parts with \biber as compared with \bibtex which you probably won't normally notice. \biber uses the \texttt{btparse} C library for \bibtex format file parsing which aimed to be compatible with \bibtex's parsing rules but also aimed at correcting some of the common problems. For details, see the manual page for the Perl \texttt{Text::BibTeX} module\fnurl{http://search.cpan.org/~ambs/Text-BibTeX}. - -\item[\bibtex] -The \biblatex package can use legacy \bibtex as a data backend. While a legacy \bibtex binary is sufficient to run \biblatex, using \bin{bibtex8} is recommended. If your \tex distribution does not ship with \bin{bibtex8}, you can get it from \acr{CTAN}.\fnurl{http://www.ctan.org/tex-archive/biblio/bibtex/8-bit/} +\biber is the backend of \biblatex used to transfer data from source files to the \latex code. \biber comes with TeX Live and is also available from SourceForge.\fnurl{http://biblatex-biber.sourceforge.net/}. \biber uses the \texttt{btparse} C library for \bibtex format file parsing which aimed to be compatible with \bibtex's parsing rules but also aimed at correcting some of the common problems. For details, see the manual page for the Perl \texttt{Text::BibTeX} module\fnurl{http://search.cpan.org/~ambs/Text-BibTeX}. \item[etoolbox] -This \latex package, which is loaded automatically, provides generic programming facilities required by \biblatex. It is available from \acr{CTAN}.\fnurl{http://www.ctan.org/tex-archive/macros/latex/contrib/etoolbox/} +This \latex package, which is loaded automatically, provides generic programming facilities required by \biblatex. It is available from \acr{CTAN}.\fnurl{http://ctan.org/pkg/etoolbox} \item[kvoptions] -This \latex package, which is also loaded automatically, is used for internal option handling. It is available with the \sty{oberdiek} package bundle from \acr{CTAN}.\fnurl{http://www.ctan.org/pkg/kvoptions} +This \latex package, which is also loaded automatically, is used for internal option handling. It is available with the \sty{oberdiek} package bundle from \acr{CTAN}.\fnurl{http://ctan.org/pkg/kvoptions} \item[logreq] -This \latex package, which is also loaded automatically, provides a frontend for writing machine-readable messages to an auxiliary log file. It is available from \acr{CTAN}.\fnurl{http://www.ctan.org/tex-archive/macros/latex/contrib/logreq/} +This \latex package, which is also loaded automatically, provides a frontend for writing machine-readable messages to an auxiliary log file. It is available from \acr{CTAN}.\fnurl{http://ctan.org/pkg/logreq/} \end{marglist} @@ -242,13 +236,13 @@ The packages listed in this section are not required for \biblatex to function, \begin{marglist} \item[babel/polyglossia] -The \sty{babel} and \sty{polyglossia} packages provides the core architecture for multilingual typesetting. If you are writing in a language other than American English, using one of these packages is strongly recommended. If loaded, \biblatex package will detect \sty{babel} or \sty{polyglossia} automatically. +The \sty{babel} and \sty{polyglossia} packages provides the core architecture for multilingual typesetting. If you are writing in a language other than American English, using one of these packages is strongly recommended. You should load \sty{babel} or \sty{polyglossia} before \biblatex and then \biblatex will detect \sty{babel} or \sty{polyglossia} automatically. \item[csquotes] -If this package is available, \biblatex will use its language sensitive quotation facilities to enclose certain titles in quotation marks. If not, \biblatex uses quotes suitable for American English as a fallback. When writing in any other language, loading \sty{csquotes} is strongly recommended.\fnurl{http://www.ctan.org/tex-archive/macros/latex/contrib/csquotes/} +If this package is available, \biblatex will use its language sensitive quotation facilities to enclose certain titles in quotation marks. If not, \biblatex uses quotes suitable for American English as a fallback. When writing in a language other than American English, loading \sty{csquotes} is strongly recommended.\fnurl{http://ctan.org/pkg/csquotes/} \item[xpatch] -The \sty{xpatch} package extends the patching commands of \sty{etoolbox} to \biblatex bibliography macros, drivers and formatting directives.\fnurl{http://www.ctan.org/tex-archive/macros/latex/contrib/xpatch/} +The \sty{xpatch} package extends the patching commands of \sty{etoolbox} to \biblatex bibliography macros, drivers and formatting directives.\fnurl{http://ctan.org/pkg/xpatch/} \end{marglist} @@ -280,16 +274,6 @@ The packages listed in this section are not compatible with \biblatex. Since it \begin{marglist} -% FIXME: complete list -% -% amsrefs -% apacite -% drftcite -% footbib -% multibbl -% overcite -% bibtopicprefix - \item[babelbib] The \sty{babelbib} package provides support for multilingual bibliographies. This is a standard feature of \biblatex. Use the \bibfield{langid} field and the package option \opt{autolang} for similar functionality. Note that \biblatex automatically adjusts to the main document language if \sty{babel} or \sty{polyglossia} is loaded. You only need the above mentioned features if you want to switch languages on a per"=entry basis within the bibliography. See \secref{bib:fld:spc, use:opt:pre:gen} for details. Also see \secref{use:lng}. @@ -344,7 +328,7 @@ The \sty{ucs} package provides support for \utf encoded input. Either use \sty{i \label{int:pre:bibercompat} \biber\ versions are closely coupled with \biblatex\ versions. You -need to have the right combination of the two. \biber\ will warn you +need to have the right combination of the two. \biber\ will throw a fatal error during processing if it encounters information which comes from a \biblatex\ version which is incompatible. \tabref{tab:int:pre:bibercompat} shows a compatibility matrix for the recent versions. @@ -356,6 +340,9 @@ compatibility matrix for the recent versions. \sffamily\bfseries\spotcolor Biber version & \sffamily\bfseries\spotcolor \biblatex\ version\\ \midrule +2.5 & 3.4\\ +2.4 & 3.3\\ +2.3 & 3.2\\ 2.2 & 3.1\\ 2.1 & 3.0\\ 2.0 & 3.0\\ @@ -388,9 +375,7 @@ compatibility matrix for the recent versions. \section{Database Guide} \label{bib} -It is important to distinguish between \bibtex the program and \bibtex the file format. \biblatex can be used with or without \bibtex the program since its default backend \biber uses fully supports the \bibtex file format (\file{bib}) and users should be able to move to \biblatex will little or no changes to their \bibtex data files when using \biber as a backend. If using \bibtex as the data backend, note that you cannot use arbitrary \file{bst} files because the package depends on a special \bibtex interface. When using \bibtex as a backend, \biblatex uses its own special \file{bst} file only. The entry guide below is backend agnostic unless otherwise stated. - -This section describes the default data model defined in the \file{blx-dm.def} file which is part of \path{biblatex}. The data model is defined using the macros documented in \secref{aut:ctm:dm}. It is possible to redefine the data model which both \biblatex and \biber use so that datasources can contain new entrytypes and fields (which of course will need style support). The data model specification also allows for constraints to be defined so that data sources can be validated against the data model (using \biber's \path{--validate_datamodel} option). Users who want to customise the data model need to look at the \file{blx-dm.def} file and to read \secref{aut:ctm:dm}. +This section describes the default data model defined in the \file{blx-dm.def} file which is part of \path{biblatex}. The data model is defined using the macros documented in \secref{aut:ctm:dm}. It is possible to redefine the data model which both \biblatex and \biber use so that datasources can contain new entrytypes and fields (which of course will need style support). The data model specification also allows for constraints to be defined so that data sources can be validated against the data model (using \biber's \path{--validate-datamodel} option). Users who want to customise the data model need to look at the \file{blx-dm.def} file and to read \secref{aut:ctm:dm}. \subsection{Entry Types} \label{bib:typ} @@ -571,7 +556,7 @@ A work with an author and a title which has not been formally published, such as \typeitem{xdata} -\BiberOnlyMark This entry type is special. \bibtype{xdata} entries hold data which may be inherited by other entries using the \bibfield{xdata} field. Entries of this type only serve as data containers; they may not be cited or added to the bibliography. See \secref{use:use:xdat} for details. +This entry type is special. \bibtype{xdata} entries hold data which may be inherited by other entries using the \bibfield{xdata} field. Entries of this type only serve as data containers; they may not be cited or added to the bibliography. See \secref{use:use:xdat} for details. \typeitem{custom[a--f]} @@ -586,15 +571,15 @@ The entry types listed in this section are provided for backwards compatibility \begin{typelist} -\typeitem{conference} A \bibtex legacy alias for \bibtype{inproceedings}. +\typeitem{conference} A legacy alias for \bibtype{inproceedings}. \typeitem{electronic} An alias for \bibtype{online}. -\typeitem{mastersthesis} Similar to \bibtype{thesis} except that the \bibfield{type} field is optional and defaults to the localized term <Master's thesis>. You may still use the \bibfield{type} field to override that. +\typeitem{mastersthesis} Similar to \bibtype{thesis} except that the \bibfield{type} field is optional and defaults to the localised term <Master's thesis>. You may still use the \bibfield{type} field to override that. -\typeitem{phdthesis} Similar to \bibtype{thesis} except that the \bibfield{type} field is optional and defaults to the localized term <PhD thesis>. You may still use the \bibfield{type} field to override that. +\typeitem{phdthesis} Similar to \bibtype{thesis} except that the \bibfield{type} field is optional and defaults to the localised term <PhD thesis>. You may still use the \bibfield{type} field to override that. -\typeitem{techreport} Similar to \bibtype{report} except that the \bibfield{type} field is optional and defaults to the localized term <technical report>. You may still use the \bibfield{type} field to override that. +\typeitem{techreport} Similar to \bibtype{report} except that the \bibfield{type} field is optional and defaults to the localised term <technical report>. You may still use the \bibfield{type} field to override that. \typeitem{www} @@ -689,7 +674,7 @@ In datasources such as a \file{bib} file, all bibliographic data is specified in \item[Name lists] are parsed and split up into the individual items at the \texttt{and} delimiter. Each item in the list is then dissected into four name components: the given name, the name prefix (von, van, of, da, de, della, \dots), the family name, and the name suffix (junior, senior, \dots). Name lists may be truncated in the \file{bib} file with the keyword <\texttt{and others}>. Typical examples of name lists are \bibfield{author} and \bibfield{editor}. -\BiberOnlyMark With \biber, name list fields automatically have an \cmd{ifuse*} test created as per the name lists in the default data model (see \secref{aut:aux:tst}). They are also automatically have a \opt{ifuse*} option created which controls labelling and sorting behaviour with the name (see \secref{use:opt:bib:hyb}). \biber supports a customisable list of name parts but current this is defined to be the same set of parts as supported by \bibtex: +Name list fields automatically have an \cmd{ifuse*} test created as per the name lists in the default data model (see \secref{aut:aux:tst}). They are also automatically have a \opt{ifuse*} option created which controls labelling and sorting behaviour with the name (see \secref{use:opt:bib:hyb}). \biber supports a customisable list of name parts but current this is defined to be the same set of parts as supported by traditional \bibtex: \begin{itemize} \item Family name (also known as <last> part) @@ -706,7 +691,7 @@ The supported list of name parts is defined as a constant list in the default da \item[Literal lists] in the strict sense are handled as described above. The individual items are simply printed as is. Typical examples of such literal lists are \bibfield{publisher} and \bibfield{location}. -\item[Key lists] are a variant of literal lists which may hold printable data or localization keys. For each item in the list, a test is performed to determine whether it is a known localization key (the localization keys defined by default are listed in \secref{aut:lng:key}). If so, the localized string is printed. If not, the item is printed as is. A typical example of a key list is \bibfield{language}. +\item[Key lists] are a variant of literal lists which may hold printable data or localisation keys. For each item in the list, a test is performed to determine whether it is a known localisation key (the localisation keys defined by default are listed in \secref{aut:lng:key}). If so, the localised string is printed. If not, the item is printed as is. A typical example of a key list is \bibfield{language}. \end{description} \end{description} @@ -719,23 +704,23 @@ The supported list of name parts is defined as a constant list in the default da \item[Literal fields] are printed as is. Typical examples of literal fields are \bibfield{title} and \bibfield{note}. -\item[Range fields] consist of one or more ranges where all dashes are normalized and replaced by the command \cmd{bibrangedash}. A range is something optionally followed by one or more dashes optionally followed by some non-dash (e.g. \texttt{5--7}). Any number of consecutive dashes will only yield a single range dash. A typical example of a range field is the \bibfield{pages} field. See also the \BiberOnlyMark\cmd{bibrangessep} command which can be used to customise the separator between multiple ranges. With \biber, range fields will be skipped and will generate a warning if they do not consist of one or more ranges. You can normalise messy range fields before they are parsed using \cmd{DeclareSourcemap} (see \secref{aut:ctm:map}). +\item[Range fields] consist of one or more ranges where all dashes are normalized and replaced by the command \cmd{bibrangedash}. A range is something optionally followed by one or more dashes optionally followed by some non-dash (e.g. \texttt{5--7}). Any number of consecutive dashes will only yield a single range dash. A typical example of a range field is the \bibfield{pages} field. See also the \cmd{bibrangessep} command which can be used to customise the separator between multiple ranges. Range fields will be skipped and will generate a warning if they do not consist of one or more ranges. You can normalise messy range fields before they are parsed using \cmd{DeclareSourcemap} (see \secref{aut:ctm:map}). \item[Integer fields] hold unformatted integers which may be converted to ordinals or strings as they are printed. A typical example is the \bibfield{extrayear} field. -\item[Datepart fields] hold unformatted integers which may be converted to ordinals or strings as they are printed. A typical example is the \bibfield{month} field. +\item[Datepart fields] hold unformatted integers which may be converted to ordinals or strings as they are printed. A typical example is the \bibfield{month} field. For every field X of datatype \bibfield{date} in the datamodel, datepart fields are automatically created with the following names: \bibfield{Xyear}, \bibfield{Xendyear}, \bibfield{Xmonth}, \bibfield{Xendmonth}, \bibfield{Xday}, \bibfield{Xendday}. -\item[Date fields] hold a date specification in \texttt{yyyy-mm-dd} format or a date range in \texttt{yyyy-mm-dd/yyyy-mm-dd} format. Date fields are special in that the date is parsed and split up into its components. See \secref{bib:use:dat} for details. A typical example is the \bibfield{date} field. +\item[Date fields] hold a date specification in \texttt{yyyy-mm-dd} format or a date range in \texttt{yyyy-mm-dd/yyyy-mm-dd} format. Date fields are special in that the date is parsed and split up into its datepart type components. The \bibfield{datepart} components (see above) are automatically defined and recognised when a field of datatype \bibfield{date} is defined in the datamodel. See \secref{bib:use:dat} for details. A typical example is the \bibfield{date} field. \item[Verbatim fields] are processed in verbatim mode and may contain special characters. Typical examples of verbatim fields are \bibfield{file} and \bibfield{doi}. \item[URI fields] are processed in verbatim mode and may contain special characters. They are also URL-escaped if they don't look like they already are. The typical example of a uri field is \bibfield{url}. -\item[Separated value fields] A separated list of literal values. Examples are the \bibfield{keywords} and \bibfield{options} fields. The separator is always a comma when using \bibtex as the backend but can be configured to be any Perl regular expression when using \biber via the \opt{xsvsep} option which defaults to the usual \bibtex comma surrounded by optional whitespace. +\item[Separated value fields] A separated list of literal values. Examples are the \bibfield{keywords} and \bibfield{options} fields. The separator can be configured to be any Perl regular expression via the \opt{xsvsep} option which defaults to the usual \bibtex comma surrounded by optional whitespace. \item[Pattern fields] A literal field which must match a particular pattern. An example is the \bibfield{gender} field from \secref{bib:fld:spc}. -\item[Key fields] May hold printable data or localization keys. A test is performed to determine whether the value of the field is a known localization key (the localization keys defined by default are listed in \secref{aut:lng:key}). If so, the localized string is printed. If not, the value is printed as is. A typical example is the \bibfield{type} field. +\item[Key fields] May hold printable data or localisation keys. A test is performed to determine whether the value of the field is a known localisation key (the localisation keys defined by default are listed in \secref{aut:lng:key}). If so, the localised string is printed. If not, the value is printed as is. A typical example is the \bibfield{type} field. \item[Code fields] Holds \tex code. @@ -747,7 +732,7 @@ The supported list of name parts is defined as a constant list in the default da The fields listed in this section are the regular ones holding printable data in the default data model. The name on the left is the default data model name of the field as used by \biblatex and its backend. The \biblatex data type is given to the right of the name. See \secref{bib:fld:typ} for explanation of the various data types. -\BiberOnlyMark Some fields are marked as <Label fields> which means that they are often used as abbreviation labels when printing bibliography lists in the sense of section \secref{use:bib:biblist}. \biblatex automatically creates supporting macros for such fields. See \secref{use:bib:biblist}. +Some fields are marked as <Label fields> which means that they are often used as abbreviation labels when printing bibliography lists in the sense of section \secref{use:bib:biblist}. \biblatex automatically creates supporting macros for such fields. See \secref{use:bib:biblist}. \begin{fieldlist} @@ -961,7 +946,7 @@ A designation to be used by the citation style as a substitute for the regular l \listitem{language}{key} -The language(s) of the work. Languages may be specified literally or as localization keys. If localization keys are used, the prefix \texttt{lang} is omissible. See also \bibfield{origlanguage} and compare \bibfield{langid} in \secref{bib:fld:spc}. +The language(s) of the work. Languages may be specified literally or as localisation keys. If localisation keys are used, the prefix \texttt{lang} is omissible. See also \bibfield{origlanguage} and compare \bibfield{langid} in \secref{bib:fld:spc}. \fielditem{library}{literal} @@ -1049,7 +1034,7 @@ The publication state of the work, \eg\ <in press>. See \secref{aut:lng:key:pst} \fielditem{reprinttitle}{literal} -\BibTeXOnlyMark The title of a reprint of the work. Not used by the standard styles. +The title of a reprint of the work. Not used by the standard styles. \fielditem{series}{literal} @@ -1105,7 +1090,7 @@ The type of a \bibfield{manual}, \bibfield{patent}, \bibfield{report}, or \bibfi \fielditem{url}{uri} -The \acr{URL} of an online publication. If it is not URL-escaped (no <\%> chars), with \biber, it will be URI-escaped according to RFC 3987, that is, even Unicode chars will be correctly escaped. +The \acr{URL} of an online publication. If it is not URL-escaped (no <\%> chars) it will be URI-escaped according to RFC 3987, that is, even Unicode chars will be correctly escaped. \fielditem{urldate}{date} @@ -1187,7 +1172,8 @@ Polish & Poland & \opt{polish} \\ Portuguese & Brazil & \opt{brazil} \\ & Portugal & \opt{portuguese}, \opt{portuges} \\ Russian & Russia & \opt{russian} \\ -Slovene & Slovenian & \opt{slovene} \\ +Slovak & Slovakia & \opt{slovak} \\ +Slovene & Slovenia & \opt{slovene} \\ Spanish & Spain & \opt{spanish} \\ Swedish & Sweden & \opt{swedish} \\ \bottomrule @@ -1198,7 +1184,7 @@ Swedish & Sweden & \opt{swedish} \\ \fielditem{langid}{identifier} -The language id of the bibliography entry. The alias \bibfield{hyphenation} is provided for backwards compatibility. The identifier must be a language name known to the \sty{babel}/\sty{polyglossia} packages. This information may be used to switch hyphenation patterns and localize strings in the bibliography. Note that the language names are case sensitive. The languages currently supported by this package are given in \tabref{bib:fld:tab1}. Note that \sty{babel} treats the identifier \opt{english} as an alias for \opt{british} or \opt{american}, depending on the \sty{babel} version. The \biblatex package always treats it as an alias for \opt{american}. It is preferable to use the language identifiers \opt{american} and \opt{british} (\sty{babel}) or a language specific option to specify a language variant (\sty{polyglossia}, using the \bibfield{langidopts} field) to avoid any possible confusion. Compare \bibfield{language} in \secref{bib:fld:dat}. +The language id of the bibliography entry. The alias \bibfield{hyphenation} is provided for backwards compatibility. The identifier must be a language name known to the \sty{babel}/\sty{polyglossia} packages. This information may be used to switch hyphenation patterns and localise strings in the bibliography. Note that the language names are case sensitive. The languages currently supported by this package are given in \tabref{bib:fld:tab1}. Note that \sty{babel} treats the identifier \opt{english} as an alias for \opt{british} or \opt{american}, depending on the \sty{babel} version. The \biblatex package always treats it as an alias for \opt{american}. It is preferable to use the language identifiers \opt{american} and \opt{british} (\sty{babel}) or a language specific option to specify a language variant (\sty{polyglossia}, using the \bibfield{langidopts} field) to avoid any possible confusion. Compare \bibfield{language} in \secref{bib:fld:dat}. \fielditem{langidopts}{literal} @@ -1218,7 +1204,7 @@ would wrap the bibliography entry in: \end{ltxexample} % -\fielditem{ids}{separated list of entrykeys\BiberOnlyMark} +\fielditem{ids}{separated list of entrykeys} Citation key aliases for the main citation key. An entry may be cited by any of its aliases and \biblatex will treat the citation as if it had used the primary citation key. This is to aid users who change their citation keys but have legacy documents which use older keys for the same entry. This field is consumed by the backend processing and does not appear in the \path{.bbl}. @@ -1246,21 +1232,21 @@ A separated list of entry options in \keyval notation. This field is used to set A special field used to modify the sorting order of the bibliography. This field is the first item the sorting routine considers when sorting the bibliography, hence it may be used to arrange the entries in groups. This may be useful when creating subdivided bibliographies with the bibliography filters. Please refer to \secref{use:srt} for further details. Also see \secref{aut:ctm:srt}. This field is consumed by the backend processing and does not appear in the \path{.bbl}. -\fielditem{related}{separated values\BiberOnlyMark} +\fielditem{related}{separated values} Citation keys of other entries which have a relationship to this entry. The relationship is specified by the \bibfield{relatedtype} field. Please refer to \secref{use:rel} for further details. -\fielditem{relatedoptions}{separated values\BiberOnlyMark} +\fielditem{relatedoptions}{separated values} Per"=type options to set for a related entry. Note that this does not set the options on the related entry itself, only the \opt{dataonly} clone which is used as a datasource for the parent entry. -\fielditem{relatedtype}{identifier\BiberOnlyMark} +\fielditem{relatedtype}{identifier} -An identifier which specified the type of relationship for the keys listed in the \bibfield{related} field. The identifier is a localized bibliography string printed +An identifier which specified the type of relationship for the keys listed in the \bibfield{related} field. The identifier is a localised bibliography string printed before the data from the related entry list. It is also used to identify type-specific formatting directives and bibliography macros for the related entries. Please refer to \secref{use:rel} for further details. -\fielditem{relatedstring}{literal\BiberOnlyMark} +\fielditem{relatedstring}{literal} A field used to override the bibliography string specified by \bibfield{relatedtype}. Please refer to \secref{use:rel} for further details. @@ -1272,7 +1258,7 @@ A field used to modify the sorting order of the bibliography. Think of this fiel A name or a list of names used to modify the sorting order of the bibliography. If present, this list is used instead of \bibfield{author} or \bibfield{editor} when sorting the bibliography. Please refer to \secref{use:srt} for further details. This field is consumed by the backend processing and does not appear in the \path{.bbl}. -\fielditem{sortshorthand}{literal\BiberOnlyMark} +\fielditem{sortshorthand}{literal} Similar to \bibfield{sortkey} but used in the list of shorthands. If present, \biblatex uses this field instead of \bibfield{shorthand} when sorting the list of shorthands. This is useful if the \bibfield{shorthand} field holds shorthands with formatting commands such as \cmd{emph} or \cmd{textbf}. This field is consumed by the backend processing and does not appear in the \path{.bbl}. @@ -1284,13 +1270,13 @@ A field used to modify the sorting order of the bibliography. If present, this f A field used to modify the sorting order of the bibliography. If present, this field is used instead of the \bibfield{year} field when sorting the bibliography. Please refer to \secref{use:srt} for further details. This field is consumed by the backend processing and does not appear in the \path{.bbl}. -\fielditem{xdata}{separated list of entrykeys\BiberOnlyMark} +\fielditem{xdata}{separated list of entrykeys} This field inherits data from one or more \bibtype{xdata} entries. Conceptually, the \bibfield{xdata} field is related to \bibfield{crossref} and \bibfield{xref}: \bibfield{crossref} establishes a logical parent/child relation and inherits data; \bibfield{xref} establishes as logical parent/child relation without inheriting data; \bibfield{xdata} inherits data without establishing a relation. The value of the \bibfield{xdata} may be a single entry key or a separated list of keys. See \secref{use:use:xdat} for further details. This field is consumed by the backend processing and does not appear in the \path{.bbl}. \fielditem{xref}{entry key} -This field is an alternative cross"=referencing mechanism. It differs from \bibfield{crossref} in that the child entry will not inherit any data from the parent entry specified in the \bibfield{xref} field. If the number of child entries referencing a specific parent entry hits a certain threshold, the parent entry is automatically added to the bibliography even if it has not been cited explicitly. The threshold is settable with the \opt{mincrossrefs} package option from \secref{use:opt:pre:gen}. Style authors should note that whether or not the \bibfield{xref} fields of the child entries are defined on the \biblatex level depends on the availability of the parent entry. If the parent entry is available, the \bibfield{xref} fields of the child entries will be defined. If not, their \bibfield{xref} fields will be undefined. Whether the parent entry is added to the bibliography implicitly because of the threshold or explicitly because it has been cited does not matter. See also the \bibfield{crossref} field in this section as well as \secref{bib:cav:ref}. +This field is an alternative cross"=referencing mechanism. It differs from \bibfield{crossref} in that the child entry will not inherit any data from the parent entry specified in the \bibfield{xref} field. If the number of child entries referencing a specific parent entry hits a certain threshold, the parent entry is automatically added to the bibliography even if it has not been cited explicitly. The threshold is settable with the \opt{minxrefs} package option from \secref{use:opt:pre:gen}. Style authors should note that whether or not the \bibfield{xref} fields of the child entries are defined on the \biblatex level depends on the availability of the parent entry. If the parent entry is available, the \bibfield{xref} fields of the child entries will be defined. If not, their \bibfield{xref} fields will be undefined. Whether the parent entry is added to the bibliography implicitly because of the threshold or explicitly because it has been cited does not matter. See also the \bibfield{crossref} field in this section as well as \secref{bib:cav:ref}. \end{fieldlist} @@ -1566,7 +1552,7 @@ Note that only the \bibfield{editor} is considered in citations and when sorting ... \end{lstlisting} % -You may add more roles by initializing and defining a new localization key whose name corresponds to the identifier in the \bibfield{editor...type} field. See \secref{use:lng,aut:lng:cmd} for details. +You may add more roles by initializing and defining a new localisation key whose name corresponds to the identifier in the \bibfield{editor...type} field. See \secref{use:lng,aut:lng:cmd} for details. \subsubsection{Publication and Journal Series} \label{bib:use:ser} @@ -1582,7 +1568,7 @@ The \bibfield{series} field is used by traditional \bibtex styles both for the m ... \end{lstlisting} % -The \bibtype{article} entry type makes use of the \bibfield{series} field as well, but handles it in a special way. First, a test is performed to determine whether the value of the field is an integer. If so, it will be printed as an ordinal. If not, another test is performed to determine whether it is a localization key. If so, the localized string is printed. If not, the value is printed as is. Consider the following example of a journal published in numbered series: +The \bibtype{article} entry type makes use of the \bibfield{series} field as well, but handles it in a special way. First, a test is performed to determine whether the value of the field is an integer. If so, it will be printed as an ordinal. If not, another test is performed to determine whether it is a localisation key. If so, the localised string is printed. If not, the value is printed as is. Consider the following example of a journal published in numbered series: \begin{lstlisting}[style=bibtex]{} @Article{..., @@ -1594,7 +1580,7 @@ The \bibtype{article} entry type makes use of the \bibfield{series} field as wel ... \end{lstlisting} % -This entry will be printed as «\emph{Journal Name}. 3rd ser. 15.7 (1995)». Some journals use designations such as «old series» and «new series» instead of a number. Such designations may be given in the \bibfield{series} field as well, either as a literal string or as a localization key. Consider the following example which makes use of the localization key \texttt{newseries}: +This entry will be printed as «\emph{Journal Name}. 3rd ser. 15.7 (1995)». Some journals use designations such as «old series» and «new series» instead of a number. Such designations may be given in the \bibfield{series} field as well, either as a literal string or as a localisation key. Consider the following example which makes use of the localisation key \texttt{newseries}: \begin{lstlisting}[style=bibtex]{} @Article{..., @@ -1605,7 +1591,7 @@ This entry will be printed as «\emph{Journal Name}. 3rd ser. 15.7 (1995)». Som ... \end{lstlisting} % -This entry will be printed as «\emph{Journal Name}. New ser. 9 (1998)». See \secref{aut:lng:key} for a list of localization keys defined by default. +This entry will be printed as «\emph{Journal Name}. New ser. 9 (1998)». See \secref{aut:lng:key} for a list of localisation keys defined by default. \subsubsection{Date Specifications} \label{bib:use:dat} @@ -1658,7 +1644,7 @@ When specifying a page or page range, either in the \bibfield{pages} field of an % The \bibfield{bookpagination} field affects the formatting of the \bibfield{pages} and \bibfield{pagetotal} fields in the list of references. Since \texttt{page} is the default, this field is omissible in the above example. In this case, the page range will be formatted as <pp.~53--65>. Suppose that, when quoting from this work, it is customary to use verse numbers rather than page numbers in citations. This is reflected by the \bibfield{pagination} field, which affects the formatting of the \prm{postnote} argument to any citation command. With a citation like |\cite[17]{key}|, the postnote will be formatted as <v.~17>. Setting the \bibfield{pagination} field to \texttt{section} would yield <\S~17>. See \secref{use:cav:pag} for further usage instructions. -The \bibfield{pagination} and \bibfield{bookpagination} fields are key fields. This package will try to use their value as a localization key, provided that the key is defined. Always use the singular form of the key name in \file{bib} files, the plural is formed automatically. The keys \texttt{page}, \texttt{column}, \texttt{line}, \texttt{verse}, \texttt{section}, and \texttt{paragraph} are predefined, with \texttt{page} being the default. The string <\texttt{none}> has a special meaning when used in a \bibfield{pagination} or \bibfield{bookpagination} field. It suppresses the prefix for the respective entry. If there are no predefined localization keys for the pagination scheme required by a certain entry, you can simply add them. See the commands \cmd{NewBibliographyString} and \cmd{DefineBibliographyStrings} in \secref{use:lng}. You need to define two localization strings for each additional pagination scheme: the singular form (whose localization key corresponds to the value of the \bibfield{pagination} field) and the plural form (whose localization key must be the singular plus the letter <\texttt{s}>). See the predefined keys in \secref{aut:lng:key} for examples. +The \bibfield{pagination} and \bibfield{bookpagination} fields are key fields. This package will try to use their value as a localisation key, provided that the key is defined. Always use the singular form of the key name in \file{bib} files, the plural is formed automatically. The keys \texttt{page}, \texttt{column}, \texttt{line}, \texttt{verse}, \texttt{section}, and \texttt{paragraph} are predefined, with \texttt{page} being the default. The string <\texttt{none}> has a special meaning when used in a \bibfield{pagination} or \bibfield{bookpagination} field. It suppresses the prefix for the respective entry. If there are no predefined localisation keys for the pagination scheme required by a certain entry, you can simply add them. See the commands \cmd{NewBibliographyString} and \cmd{DefineBibliographyStrings} in \secref{use:lng}. You need to define two localisation strings for each additional pagination scheme: the singular form (whose localisation key corresponds to the value of the \bibfield{pagination} field) and the plural form (whose localisation key must be the singular plus the letter <\texttt{s}>). See the predefined keys in \secref{aut:lng:key} for examples. \subsection{Hints and Caveats} \label{bib:cav} @@ -1668,37 +1654,7 @@ This section provides some additional hints concerning the data interface of thi \subsubsection{Cross-referencing} \label{bib:cav:ref} -\paragraph{The \bibfield{crossref} field (\bibtex)} -\label{bib:cav:ref:btx} - -The \bibfield{crossref} field is a convenient way to establish a parent\slash child relation between two associated entries. Unfortunately, the \bibtex program uses symmetric field mapping which reduces the usefulness of the \bibfield{crossref} field significantly. The are two issues with symmetric field mapping, as seen in the following example: - -\begin{lstlisting}[style=bibtex]{} -@Book{book, - <<author>> = {Author}, - <<bookauthor>> = {Author}, - <<title>> = {Booktitle}, - <<booktitle>> = {Booktitle}, - <<subtitle>> = {Booksubtitle}, - <<booksubtitle>> = {Booksubtitle}, - publisher = {Publisher}, - location = {Location}, - date = {1995}, -} -@InBook{inbook, - crossref = {book}, - title = {Title}, - <<subtitle>> = {}, - pages = {5--25}, -} -\end{lstlisting} -% -As \bibtex is not capable of mapping the \bibfield{title} field of the parent to the \bibfield{booktitle} field of the child, the title of the book needs to be given twice. The style then needs to ignore the \bibfield{booktitle} of the parent since it is only required to work around this fundamental limitation of \bibtex. The problem with the \bibfield{subtitle} field is the inverse of that. Since the \bibfield{subtitle} of the parent would become the \bibfield{subtitle}, rather than in the \bibfield{booksubtitle}, of the child, we need to add an empty \bibfield{subtitle} field to the child entry to prevent inheritance of this field. Of course we also need to duplicate the subtitle in the parent entry to ensure that it is available as \bibfield{booksubtitle} in the child entry. In short, using \bibtex's \bibfield{crossref} field tends to bloat database files and corrupt the data model. - -\paragraph{The \bibfield{crossref} field (\biber)} -\label{bib:cav:ref:bbr} - -With \biber, the limitations of \bibtex's \bibfield{crossref} field belong to the past. \biber features a highly customizable cross-referencing mechanism with flexible data inheritance rules. Duplicating certain fields in the parent entry or adding empty fields to the child entry is no longer required. Entries are specified in a natural way: +\biber features a highly customizable cross-referencing mechanism with flexible data inheritance rules. Duplicating certain fields in the parent entry or adding empty fields to the child entry is no longer required. Entries are specified in a natural way: \begin{lstlisting}[style=bibtex]{} @Book{book, @@ -1735,137 +1691,31 @@ See \apxref{apx:ref} for a list of mapping rules set up by default. Note that al \paragraph{The \bibfield{xref} field} \label{bib:cav:ref:ref} -In addition to the \bibfield{crossref} field, \biblatex supports a simplified cross"=referencing mechanism based on the \bibfield{xref} field. This is useful if you want to establish a parent\slash child relation between two associated entries but prefer to keep them independent as far as the data is concerned. The \bibfield{xref} field differs from \bibfield{crossref} in that the child entry will not inherit any data from the parent. If the parent is referenced by a certain number of child entries, \biblatex will automatically add it to the bibliography. The threshold is controlled by the \opt{mincrossrefs} package option from \secref{use:opt:pre:gen}. The \bibfield{xref} field is supported with all backends. See also \secref{bib:fld:spc}. - -\subsubsection{Capacity Issues} -\label{bib:cav:btx} - -\paragraph{\bibtex} -A venerable tool originally developed in the 1980s, \bibtex uses static memory allocation, much to the dismay of users working with large bibliographical databases. With a large \file{bib} file which contains several hundred entries, \bibtex is very likely to run out of memory. The number of entries it can cope with depends on the number of fields defined by the \bibtex style (\file{bst}). Style files which define a considerable number of fields, such as \path{biblatex.bst}, are more likely to trigger such problems. Unfortunately, traditional \bibtex does not output a clear error message when it runs out of memory but exposes a rather cryptical kind of faulty behavior. The warning messages printed in this case look like this: - -\begin{lstlisting}[style=plain]{} -Warning--I'm ignoring Jones1995's extra "year" field ---line 422 of file huge.bib -Warning--I'm ignoring Jones1995's extra "volume" field ---line 423 of file huge.bib -\end{lstlisting} -% -These warning messages could indeed indicate that the entry \texttt{Jones1995} is faulty because it includes two \bibfield{year} and two \bibfield{volume} fields. If that is not the case and the \file{bib} file is fairly large, this is most likely a capacity issue. What makes these warnings so confusing is that they are not tied to a specific entry. If you remove the allegedly faulty entry, a different one will trigger similar warnings. This is one reason why switching to \file{bibtex8} or \biber is advisable. - -\paragraph{\file{bibtex8}} -\file{bibtex8} is a venerable tool as well and will also run out of memory with its default capacity. Switching from traditional \bibtex to \file{bibtex8} is still an improvement because the capacity of the latter may be increased at run"=time via command"=line switches and it also prints unambiguous error messages, for example: - -\begin{table} -\tablesetup\lnstyle -\begin{tabularx}{\textwidth}{@{}>{\raggedright\ttfamily}X% - @{}>{\raggedright\ttfamily}X% - rR{50pt}R{50pt}R{50pt}@{}} -\toprule -\multicolumn{1}{@{}H}{Parameter} & -\multicolumn{1}{@{}H}{Switch} & -\multicolumn{4}{@{}H}{Capacity} \\ -\cmidrule{3-6} -&& \multicolumn{1}{@{}H}{Default} & -\multicolumn{1}{@{}>{\sffamily\bfseries\spotcolor\ttfamily}r}{-{}-big} & -\multicolumn{1}{@{}>{\sffamily\bfseries\spotcolor\ttfamily}r}{-{}-huge} & -\multicolumn{1}{@{}>{\sffamily\bfseries\spotcolor\ttfamily}r@{}}{-{}-wolfgang} \\ -\cmidrule(r){1-1}\cmidrule(r){2-2}\cmidrule{3-6} -max\_cites & -{}-mcites & 750 & 2000 & 5000 & 7500 \\ -max\_ent\_ints & -{}-mentints & 3000 & 4000 & 5000 & 7500 \\ -max\_ent\_strs & -{}-mentstrs & 3000 & 6000 & 10000 & 10000 \\ -max\_fields & -{}-mfields & 17250 & 30000 & 85000 & 125000 \\ -max\_strings & -{}-mstrings & 4000 & 10000 & 19000 & 30000 \\ -pool\_size & -{}-mpool & 65530 & 130000 & 500000 & 750000 \\ -wiz\_fn\_space & -{}-mwizfuns & 3000 & 6000 & 10000 & 10000 \\ -hash\_prime & & 4253 & 8501 & 16319 & 30011 \\ -hash\_size & & 5000 & 10000 & 19000 & 35000 \\ -\bottomrule -\end{tabularx} -\caption[Capacity of \bin{bibtex8}]{Capacity and Switches of \bin{bibtex8}} -\label{bib:cav:tab2} -\end{table} - -\begin{lstlisting}[style=plain]{} -17289 fields: -Sorry---you've exceeded BibTeX's total number of fields 17250 -\end{lstlisting} -% -\Tabref{bib:cav:tab2} gives an overview of the various capacity parameters of \file{bibtex8} and the command"=line switches used to increase their default values. There are two ways to increase the capacity on the command"=line. You may use a high"=level switch like |--huge| to select a different set of defaults or low"=level switches such as |--mfields| to modify a single parameter. The first thing you should always do is run \file{bibtex8} with the |--wolfgang| switch. Don't even bother trying anything else. With a very large database, however, even that capacity may be too small. In this case, you need to resort to the low"=level switches. Here is an example of a set of switches which should cope with a \file{bib} file containing about 1000 entries: - -\begin{lstlisting}[style=plain]{} -bibtex8 --wolfgang --mcites 30000 --mentints 30000 --mentstrs 40000 - --mfields 250000 --mstrings 35000 --mpool 750000 --csfile csfile.csf - auxfile -\end{lstlisting} -% -When taking a closer look at \tabref{bib:cav:tab2}, you will notice that there are two parameters which can not be modified directly, |hash_prime| and |hash_size|. Increasing these values is only possible with the high"=level switches. That is why the above command includes the |--wolfgang| switch in addition to the low"=level switches. This situation is very unfortunate because the hash size effectively sets a cap on some other parameters. For example, |max_strings| can not be greater than |hash_size|. If you hit this cap, all you can do is recompile \file{bibtex8} with a larger capacity. Also note that the |wiz_fn_space| parameter is not related to the \file{bib} file but to the memory requirements of the \file{bst} file. \file{biblatex.bst} needs a value of about 6000. The value 10000 implicitly used by the |--wolfgang| switch is fine. - -\paragraph{\biber} -\biber eliminates all of the above limitations. +In addition to the \bibfield{crossref} field, \biblatex supports a simplified cross"=referencing mechanism based on the \bibfield{xref} field. This is useful if you want to establish a parent\slash child relation between two associated entries but prefer to keep them independent as far as the data is concerned. The \bibfield{xref} field differs from \bibfield{crossref} in that the child entry will not inherit any data from the parent. If the parent is referenced by a certain number of child entries, \biblatex will automatically add it to the bibliography. The threshold is controlled by the \opt{minxrefs} package option from \secref{use:opt:pre:gen}.u See also \secref{bib:fld:spc}. \subsubsection{Sorting and Encoding Issues} \label{bib:cav:enc} -\paragraph{\bibtex} -\label{bib:cav:enc:btx} -Traditional \bibtex can only alphabetize Ascii characters correctly. If the bibliographic data includes non"=Ascii characters, they have to be given in Ascii notation. For example, instead of typing a letter like <ä> directly, you need to input it as |\"a|, using an accent command and the Ascii letter. This Ascii notation needs to be wrapped in a pair of curly braces. Traditional \bibtex will then ignore the accent and use the Ascii letter for sorting. Here are a few examples: +\biber handles Ascii, 8-bit encodings such as Latin\,1, and \utf. It features true Unicode support and is capable of reencoding the \file{bib} data on the fly in a robust way. For sorting, \biber uses a Perl implementation of the Unicode Collation Algorithm (\acr{UCA}), as outlined in Unicode Technical Standard \#10.\fnurl{http://unicode.org/reports/tr10/} Collation tailoring based on the Unicode Common Locale Data Repository (\acr{CLDR}) is also supported.\fnurl{http://cldr.unicode.org/} -\begin{lstlisting}[style=bibtex,upquote]{} -author = {S<<{\'a}>>nchez, Jos<<{\'e}>>}, -editor = {Ma<<{\ss}>>mann, R<<{\"u}>>diger}, -translator = {Ferdi<<{\`e}>>re, Fr<<{\c{c}}>>ois}, -title = {<<{\OE}>>uvres compl<<{\`e}>>tes}, -\end{lstlisting} -% -Apart from it being inconvenient, there are two major issues with this convention. One subtle problem is that the extra set of braces suppresses the kerning on both sides of all non"=Ascii letters. But first and foremost, simply ignoring all accents may not be the correct way to handle them. For example, in Danish, the letter <Ã¥> is the very last letter of the alphabet, so it should be alphabetized after <z>. \bibtex will sort it like an <a>. The <æ> ligature and the letter <ø> are also sorted after <z> in this language. There are similar cases in Norwegian. In Swedish, the letter <ö> is the very last letter of the alphabet and the letters <Ã¥> and <ä> are also alphabetized after <z>, rather than like an <a>. What's more, even the sorting of Ascii characters is done in a rather peculiar way by traditional \bibtex because the sorting algorithm uses Ascii codepage order (\texttt{0-9,A-Z,a-z}). This implies that the lowercase letter <a> would end up after the uppercase <Z>, which is not even acceptable in the language \bibtex was originally designed for. The traditional \file{bst} files work around this problem by converting all strings used for sorting to lowercase, \ie sorting is effectively case"=insensitive. See also \secref{bib:cav:enc:enc}. - -\paragraph{\file{bibtex8}} -\label{bib:cav:enc:bt8} -Switching to \file{bibtex8} will help in such cases. \file{bibtex8} can sort case"=sensitively and it can handle 8-bit characters properly, provided that you supply it with a suitable \file{csf} file and give the |--csfile| switch on the command line. This also implies that it is possible to apply language specific sorting rules to the bibliography. The \biblatex package comes with \file{csf} files for some common Western European encodings. \bin{bibtex8} also ships with a few \file{csf} files. Note that \file{biblatex.bst} can not detect if it is running under traditional \bibtex or \file{bibtex8}, hence the \opt{bibtex8} package option. By default, sorting is case-insensitive since this is required for traditional \bibtex. If the \opt{bibtex8} package option is enabled, sorting is case-sensitive. - -Since \file{bibtex8} is backwards compatible with traditional \bibtex, it is possible to mix 8-bit input and Ascii notation. This is useful if the encoding used in the \file{bib} file does not cover all required characters. There are also a few marginal cases in which the Ascii notation scheme would yield better sorting results. A typical example is the ligature <Å“>. \file{bibtex8} will handle this ligature like a single character. Depending on the sorting scheme defined in the \file{csf} file, it could be treated like an <o> or alphabetized after the letter <o> but it can not be sorted as <oe>. The Ascii notation (|\oe|) is equivalent to <oe> during sorting: - -\begin{lstlisting}[style=bibtex,upquote]{} -title = {<<Å’>>uvres compl<<è>>tes}, -title = {<<{\OE}>>uvres compl<<è>>tes}, -\end{lstlisting} -% -Sometimes even that is not sufficient and further tricks are required. For example, the letter <ß> in German is particularly tricky. This letter is essentially alphabetized as <ss> but after <ss>. The name <Baßmann> would be alphabetized as follows: Basmann\slash Bassmann\slash Baßmann\slash Bastmann. In this case, the Ascii notation (|\ss|) would yield slightly better sorting results than <ß> in conjunction with a \file{csf} file which treats <ß> like <s>: - -\begin{lstlisting}[style=bibtex,upquote]{} -author = {Ba<<{\ss}>>mann, Paul}, -\end{lstlisting} -% -To get it absolutely right, however, you need to resort to the \bibfield{sortname} field: - -\begin{lstlisting}[style=bibtex,upquote]{} -author = {Ba<<ß>>mann, Paul}, -sortname = {Ba<<sszz>>mann, Paul}, -\end{lstlisting} -% -Not only \bibtex, \latex needs to know about the encoding as well. See \secref{bib:cav:enc:enc} on how to specify encodings. - -\paragraph{\biber} -\biber handles Ascii, 8-bit encodings such as Latin\,1, and \utf. It features true Unicode support and is capable of reencoding the \file{bib} data on the fly in a robust way. For sorting, \biber uses a Perl implementation of the Unicode Collation Algorithm (\acr{UCA}), as outlined in Unicode Technical Standard \#10.\fnurl{http://unicode.org/reports/tr10/} Collation tailoring based on the Unicode Common Locale Data Repository (\acr{CLDR}) is also supported.\fnurl{http://cldr.unicode.org/} The bottom line is that \biber will deliver sorting results far superior to both \bibtex and \file{bibtex8} in many cases. If you are interested in the technical details, section 1.8 of Unicode Technical Standard \#10 will provide you with a very concise summary of why the inadequateness of traditional \bibtex and even \bin{bibtex8} is of a very general nature and not limited to the lack of \utf support.\fnurl{http://unicode.org/reports/tr10/#Common_Misperceptions} - -Supporting Unicode implies much more than handling \utf input. Unicode is a complex standard covering more than its most well-known parts, the Unicode character encoding and transport encodings such as \utf. It also standardizes aspects such as string collation, which is required for language-sensitive sorting. For example, by using the Unicode Collation Algorithm, \biber can handle the character <ß> mentioned as an example in \secref{bib:cav:enc:bt8} without any manual intervention. All you need to do to get localized sorting is specify the locale: +Supporting Unicode implies much more than handling \utf input. Unicode is a complex standard covering more than its most well-known parts, the Unicode character encoding and transport encodings such as \utf. It also standardizes aspects such as string collation, which is required for language-sensitive sorting. For example, by using the Unicode Collation Algorithm, \biber can handle the character <ß> without any manual intervention. All you need to do to get localised sorting is specify the locale: \begin{ltxexample} -\usepackage[backend=biber,sortlocale=de]{biblatex} +\usepackage[sortlocale=de]{biblatex} \end{ltxexample} % -or if you are using german as the main document language via Babel or Polyglossia: +or if you are using German as the main document language via \sty{babel} or \sty{polyglossia}: \begin{ltxexample} -\usepackage[backend=biber,sortlocale=auto]{biblatex} +\usepackage[sortlocale=auto]{biblatex} \end{ltxexample} % -This will make \biblatex pass the Babel/Polyglossia main document language +This will make \biblatex pass the \sty{babel}/\sty{polyglossia} main document language as the locale which \biber will map into a suitable default locale. \biber will not try to get locale information from its environment as this makes document processing dependent on something not in the document which is against \tex's spirit of reproducibility. This also makes sense since -Babel/Polyglossia are in fact the relevant environment for a document. Note +\sty{babel}/\sty{polyglossia} are in fact the relevant environment for a document. Note that this will also work with 8-bit encodings such as Latin\,9, \ie you can take advantage of Unicode-based sorting even though you are not using \utf input. See \secref{bib:cav:enc:enc} on how to specify input and data @@ -1873,25 +1723,25 @@ encodings properly. \paragraph{Specifying Encodings} \label{bib:cav:enc:enc} -When using a non-Ascii encoding in the \file{bib} file, it is important to understand what \biblatex can do for you and what may require manual intervention. The package takes care of the \latex side, \ie it ensures that the data imported from the \file{bbl} file is interpreted correctly, provided that the \opt{bibencoding} package option is set properly. Depending on the backend, the \bibtex side may demand attention, too. When using \bin{bibtex8}, you need to supply \bin{bibtex8} with a matching \file{csf} file as it needs to know about the encoding of the \file{bib} file to be able to alphabetize the entries correctly. Unfortunately, there is no way for \biblatex to pass this information to \bin{bibtex8} automatically. The only way is setting its |--csfile| option on the command line when running \bin{bibtex8}. When using \biber, all of this is handled automatically and no further steps, apart from setting the \opt{bibencoding} option in certain cases, are required. Here are a few typical usage scenarios along with the relevant lines from the document preamble: +When using a non-Ascii encoding in the \file{bib} file, it is important to understand what \biblatex can do for you and what may require manual intervention. The package takes care of the \latex side, \ie it ensures that the data imported from the \file{bbl} file is interpreted correctly, provided that the \opt{bibencoding} package option is set properly. All of this is handled automatically and no further steps, apart from setting the \opt{bibencoding} option in certain cases, are required. Here are a few typical usage scenarios along with the relevant lines from the document preamble: \begin{itemize} \setlength{\itemsep}{0pt} -\item Ascii notation in both the \file{tex} and the \file{bib} file with \pdftex or traditional \tex (this will work with \bibtex, \file{bibtex8}, and \biber): +\item Ascii notation in both the \file{tex} and the \file{bib} file with \pdftex or traditional \tex: \begin{ltxexample} \usepackage{biblatex} \end{ltxexample} -\item Latin\,1 encoding (\acr{ISO}-8859-1) in the \file{tex} file, Ascii notation in the \file{bib} file with \pdftex or traditional \tex (\bibtex, \file{bibtex8}, \biber): +\item Latin\,1 encoding (\acr{ISO}-8859-1) in the \file{tex} file, Ascii notation in the \file{bib} file with \pdftex or traditional \tex : \begin{ltxexample} \usepackage[latin1]{inputenc} \usepackage[bibencoding=ascii]{biblatex} \end{ltxexample} -\item Latin\,9 encoding (\acr{ISO}-8859-15) in both the \file{tex} and the \file{bib} file with \pdftex or traditional \tex (\file{bibtex8}, \biber): +\item Latin\,9 encoding (\acr{ISO}-8859-15) in both the \file{tex} and the \file{bib} file with \pdftex or traditional: \begin{ltxexample} \usepackage[latin9]{inputenc} @@ -1905,7 +1755,7 @@ Since \kvopt{bibencoding}{auto} is the default setting, the option is omissible. \usepackage{biblatex} \end{ltxexample} -\item \utf encoding in the \file{tex} file, Latin\,1 (\acr{ISO}-8859-1) in the \file{bib} file with \pdftex or traditional \tex (\file{bibtex8}, \biber): +\item \utf encoding in the \file{tex} file, Latin\,1 (\acr{ISO}-8859-1) in the \file{bib} file with \pdftex or traditional \tex: \begin{ltxexample} \usepackage[utf8]{inputenc} @@ -1918,19 +1768,6 @@ The same scenario with \xetex or \luatex in native \utf mode: \usepackage[bibencoding=latin1]{biblatex} \end{ltxexample} -\item Using \utf encoding in both the \file{tex} and the \file{bib} file is not possible with traditional \bibtex or \bin{bibtex8} since neither of them is capable of handling \utf. Unless you switch to \biber, you need to use an 8-bit encoding such as Latin\,1 (see above) or resort to Ascii notation in this case: - -\begin{ltxexample} -\usepackage[utf8]{inputenc} -\usepackage[bibencoding=ascii]{biblatex} -\end{ltxexample} - -The same scenario with \xetex or \luatex in native \utf mode: - -\begin{ltxexample} -\usepackage[bibencoding=ascii]{biblatex} -\end{ltxexample} - \end{itemize} \biber can handle Ascii notation, 8-bit encodings such as Latin\,1, and \utf. It is also capable of reencoding the \file{bib} data on the fly (replacing the limited macro-level reencoding feature of \biblatex). This will happen automatically if required, provided that you specify the encoding of the \file{bib} files properly. In addition to the scenarios discussed above, \biber can also handle the following cases: @@ -1977,16 +1814,17 @@ Some workarounds may be required when using traditional \tex or \pdftex with \ut \usepackage[safeinputenc]{biblatex} \end{ltxexample} % -If this option is enabled, \biblatex will ignore \sty{inputenc}'s \opt{utf8} option and use Ascii. \biber will then try to convert the \file{bib} data to Ascii notation. For example, it will convert \texttt{\k{S}} to |\k{S}|. This option is similar to setting \kvopt{texencoding}{ascii} but will only take effect in this specific scenario (\sty{inputenc}\slash \sty{inputenx} with \utf). This workaround takes advantage of the fact that both Unicode and the \utf transport encoding are backwards compatible with Ascii. +If this option is enabled, \biblatex will ignore \sty{inputenc}'s \opt{utf8} option and use Ascii. \biber will then try to convert the \file{bib} data to Ascii notation. For example, it will convert \k{S} to |\k{S}|. This option is similar to setting \kvopt{texencoding}{ascii} but will only take effect in this specific scenario (\sty{inputenc}\slash \sty{inputenx} with \utf). This workaround takes advantage of the fact that both Unicode and the \utf transport encoding are backwards compatible with Ascii. \end{itemize} -This solution may be acceptable as a workaround if the data in the \file{bib} file is mostly Ascii anyway, with only a few strings, such as some authors' names, causing problems. However, keep in mind that it will not magically make traditional \tex or \pdftex support Unicode. It may help if the occasional odd character is not supported by \sty{inputenc}, but may still be processed by \tex when using an accent command (\eg |\d{S}| instead of \texttt{\d{S}}). If you need full Unicode support, however, switch to \xetex or \luatex. +This solution may be acceptable as a workaround if the data in the \file{bib} file is mostly Ascii anyway, with only a few strings, such as some authors' names, causing problems. However, keep in mind that it will not magically make traditional \tex or \pdftex support Unicode. It may help if the occasional odd character is not supported by \sty{inputenc}, but may still be processed by \tex when using an accent command (\eg |\d{S}| instead of \d{S}). If you need full Unicode support, however, switch to \xetex or \luatex. Typical errors when \sty{inputenc} cannot handle a certain UTF-8 character are: \begin{verbatim} -Package inputenc Error: Unicode char \u8: not set up for use with LaTeX +! Package inputenc Error: Unicode char <char> (U+<codepoint>) +(inputenc) not set up for use with LaTeX. \end{verbatim} % but also less obvious things like: @@ -1995,13 +1833,6 @@ but also less obvious things like: ! Argument of \UTFviii@three@octets has an extra }. \end{verbatim} -\subsubsection{Editors and Compiler Scripts} -\label{bib:cav:ide} - -This section is in need of an update to match the new script interface used by \biblatex. For the time being, see the documentation of the \sty{logreq} package\fnurl{http://www.ctan.org/tex-archive/macros/latex/contrib/logreq/} and the Biblatex Developer's Wiki for a draft spec.\fnurl{http://sourceforge.net/apps/mediawiki/biblatex/index.php?title=Workflow_Automation} - -% FIXME: update! - \section{User Guide} \label{use} @@ -2019,7 +1850,7 @@ The following options must be used as \biblatex is loaded, \ie in the optional a \begin{optionlist} -\optitem[biber]{backend}{\opt{bibtex}, \opt{bibtex8}, \opt{bibtexu}, \opt{biber}} +\optitem[biber]{backend}{\opt{bibtex}, \opt{bibtex8}, \opt{biber}} Specifies the database backend. The following backends are supported: @@ -2029,25 +1860,24 @@ Specifies the database backend. The following backends are supported: \item[bibtex] Legacy \bibtex. Traditional \bibtex supports Ascii encoding only. Sorting is always case"=insensitive. -\item[bibtex8] \bin{bibtex8}, the 8-bit implementation of \bibtex, supports Ascii and 8-bit encodings such as Latin~1. Depending on the \file{csf} file, case"=sensitive sorting may be supported. +\item[bibtex8] \bin{bibtex8}, the 8-bit implementation of \bibtex, supports Ascii and 8-bit encodings such as Latin~1. -\item[bibtexu] \bin{bibtexu} is a Unicode-enabled implementation of \bibtex which supports \utf. Note that \bin{bibtexu} is not actively supported by \biblatex and has not been tested as backend in any way. \biber is the recommended backend. \end{valuelist} -See \secref{bib:cav:enc} for further instructions concerning the encoding of \file{bib} files. This option is only available at load-time as internally, the code chooses completely different paths depending on the backend. This means that you can't set the backend with, for example, \cmd{ExecuteBibliographyOptions} in the preamble. +See \secref{use:bibtex} for details of using \bibtex as a backend. \valitem[numeric]{style}{file} -Loads the bibliography style \path{file.bbx} and the citation style \path{file.cbx}. See \secref{use:xbx} for an overview of the standard styles. +Loads the bibliography style \prm{file}\path{.bbx} and the citation style \prm{file}\path{.cbx}. See \secref{use:xbx} for an overview of the standard styles. \valitem[numeric]{bibstyle}{file} -Loads the bibliography style \path{file.bbx}. See \secref{use:xbx:bbx} for an overview of the standard bibliography styles. +Loads the bibliography style \prm{file}\path{.bbx}. See \secref{use:xbx:bbx} for an overview of the standard bibliography styles. \valitem[numeric]{citestyle}{file} -Loads the citation style \path{file.cbx}. See \secref{use:xbx:cbx} for an overview of the standard citation styles. +Loads the citation style \prm{file}\path{.cbx}. See \secref{use:xbx:cbx} for an overview of the standard citation styles. \boolitem[false]{natbib} @@ -2083,35 +1913,24 @@ The sorting order of the bibliography. Unless stated otherwise, the entries are \item[ydnt] Sort by year (descending), name, title. \item[none] Do not sort at all. All entries are processed in citation order. \item[debug] Sort by entry key. This is intended for debugging only. -\item[\prm{name}] \BiberOnlyMark Use \prm{name}, as defined with \cmd{DeclareSortingScheme} (\secref{aut:ctm:srt}) +\item[\prm{name}] Use \prm{name}, as defined with \cmd{DeclareSortingScheme} (\secref{aut:ctm:srt}) \end{valuelist} Using any of the <alphabetic> sorting schemes only makes sense in conjunction with a bibliography style which prints the corresponding labels. Note that some bibliography styles initialize this package option to a value different from the package default (\opt{nty}). See \secref{use:xbx:bbx} for details. Please refer to \secref{use:srt} for an in"=depth explanation of the above sorting options as well as the fields considered in the sorting process. See also \secref{aut:ctm:srt} on how to adapt the predefined schemes or define new ones. \boolitem[true]{sortcase} -Whether or not to sort the bibliography and the list of shorthands case"=sensitively. Note that case"=sensitive sorting is only supported by the \bin{bibtex8} and \biber backends. Sorting is always case"=insensitive with legacy \bibtex. See the \opt{backend} option for details. - -\boolitem[true]{sortupper}[\BiberOnly] +Whether or not to sort the bibliography and the list of shorthands case"=sensitively. -This option corresponds to \biber's |--sortupper| command-line option. It has no effect with any other backend. If enabled, the bibliography is sorted in <uppercase before lowercase> order. Disabling this option means <lowercase before uppercase> order. +\boolitem[true]{sortupper} -\optitem{sortlocale}{\opt{auto}, \prm{locale}}[\BiberOnly] +This option corresponds to \biber's |--sortupper| command-line option. If enabled, the bibliography is sorted in <uppercase before lowercase> order. Disabling this option means <lowercase before uppercase> order. -This option sets the global sorting locale. Every sorting scheme inherits this locale if none is specified using the \prm{locale} option to \cmd{printbibliography}. Setting this to \opt{auto} requests that it be set to the Babel/Polyglossia main document language identifier, if these packages are used and \texttt{en\_US} otherwise. \biber will map Babel/Polyglossia language identifiers into sensible locale identifiers (see the \biber documentation). You can therefore specify either a normal locale identifier like \texttt{de\_DE\_phonebook}, \texttt{es\_ES} or one of the supported Babel/Polyglossia language identifiers if the mapping \biber makes of this is fine for you. +\optitem{sortlocale}{\opt{auto}, \prm{locale}} -\optitem[los]{sortlos}{\opt{bib}, \opt{los}}[\BibTeXOnly] +This option sets the global sorting locale. Every sorting scheme inherits this locale if none is specified using the \prm{locale} option to \cmd{printbibliography}. Setting this to \opt{auto} requests that it be set to the \sty{babel}/\sty{polyglossia} main document language identifier, if these packages are used and \texttt{en\_US} otherwise. \biber will map \sty{babel}/\sty{polyglossia} language identifiers into sensible locale identifiers (see the \biber documentation). You can therefore specify either a normal locale identifier like \texttt{de\_DE\_phonebook}, \texttt{es\_ES} or one of the supported \sty{babel}/\sty{polyglossia} language identifiers if the mapping \biber makes of this is fine for you. -The sorting order of the list of shorthands. The following choices are available: - -\begin{valuelist} -\item[bib] Sort according to the sorting order of the bibliography. -\item[los] Sort by shorthand. -\end{valuelist} - -The sorting order of shorthands with \biber is more flexible and is set with the \opt{sorting} option to the \cmd{printbiblist} command. - -\boolitem[true]{related}[\BiberOnly] +\boolitem[true]{related} Whether or not to use information from related entries or not. See \secref{use:rel}. @@ -2161,7 +1980,7 @@ This option controls whether the citation commands scan ahead for punctuation ma \optitem[autobib]{language}{\opt{autobib}, \opt{autocite}, \opt{auto}, \prm{language}} -This option controls multilingual support. When set to \opt{autobib}, \opt{autocite} or \opt{auto}, \biblatex will try to get the main document language from the \sty{babel}/\sty{polyglossia} package (and fall back to English if \sty{babel}/\sty{polyglossia} is not available). It is also possible to select the document language manually. In this case, the \opt{autolang} option below will have no effect. Please refer to \tabref{bib:fld:tab1} for a list of supported languages and the corresponding identifiers. \opt{autobib} switches the language for each entry in the bibliography using the \bibfield{langid} field and the language environment specified by the \opt{autolang} option. \opt{autocite} switches the language for each citation using the \bibfield{langid} field and the language environment specified by the \opt{autolang} option. \opt{auto} is a shorthand to set both \opt{autobib} and \opt{autocite}. The default is to switch languages automatically only for bibliography entries (\opt{autobib}). +This option controls multilingual support. When set to \opt{autobib}, \opt{autocite} or \opt{auto}, \biblatex will try to get the main document language from the \sty{babel}/\sty{polyglossia} package (and fall back to English if \sty{babel}/\sty{polyglossia} is not available). It is also possible to select the package language manually. In this case, the language chosen will override the \bibfield{langid} of entries and you should still choose a language switching environment with the \opt{autolang} option to select how the switch to the manually chosen language is handled. Please refer to \tabref{bib:fld:tab1} for a list of supported languages and the corresponding identifiers. \opt{autobib} switches the language for each entry in the bibliography using the \bibfield{langid} field and the language environment specified by the \opt{autolang} option. \opt{autocite} switches the language for each citation using the \bibfield{langid} field and the language environment specified by the \opt{autolang} option. \opt{auto} is a shorthand to set both \opt{autobib} and \opt{autocite}. \boolitem[true]{clearlang} @@ -2180,7 +1999,7 @@ Disable this feature, \ie do not use any language environment at all. Enclose the entry in a \env{hyphenrules} environment. This will load hyphenation patterns for the language specified in the \env{hyphenation} field of the entry, if available. \item[other] -Enclose the entry in an \env{otherlanguage} environment. This will load hyphenation patterns for the specified language, enable all extra definitions which \sty{babel}/\sty{polyglossia} and \biblatex provide for the respective language, and translate key terms such as <editor> and <volume>. The extra definitions include localizations of the date format, of ordinals, and similar things. +Enclose the entry in an \env{otherlanguage} environment. This will load hyphenation patterns for the specified language, enable all extra definitions which \sty{babel}/\sty{polyglossia} and \biblatex provide for the respective language, and translate key terms such as <editor> and <volume>. The extra definitions include localisations of the date format, of ordinals, and similar things. \item[other*] Enclose the entry in an \env{otherlanguage*} environment. Please note that \biblatex treats \env{otherlanguage*} like \env{otherlanguage} but other packages may make a distinction in this case. @@ -2240,9 +2059,9 @@ This option controls how sequences of consecutive pages in the list of back refe \item[two] Compress any sequence of two or more consecutive pages to a range, \eg the above list is compressed to <1--2, 11--13, 21--24>. -\item[two+] Similar in concept to \opt{two} but a sequence of exactly two consecutive pages is printed using the starting page and the localization string \texttt{sequens}, \eg the above list is compressed to <1\,sq., 11--13, 21--24>. +\item[two+] Similar in concept to \opt{two} but a sequence of exactly two consecutive pages is printed using the starting page and the localisation string \texttt{sequens}, \eg the above list is compressed to <1\,sq., 11--13, 21--24>. -\item[three+] Similar in concept to \opt{two+} but a sequence of exactly three consecutive pages is printed using the starting page and the localization string \texttt{sequentes}, \eg the above list is compressed to <1\,sq., 11\,sqq., 21--24>. +\item[three+] Similar in concept to \opt{two+} but a sequence of exactly three consecutive pages is printed using the starting page and the localisation string \texttt{sequentes}, \eg the above list is compressed to <1\,sq., 11\,sqq., 21--24>. \item[all+] Similar in concept to \opt{three+} but any sequence of consecutive pages is printed as an open-ended range, \eg the above list is compressed to <1\,sq., 11\,sqq., 21\,sqq.>. @@ -2321,7 +2140,7 @@ The starred versions of these commands will not trigger a reset. \boolitem[true]{abbreviate} -Whether or not to use long or abbreviated strings in citations and in the bibliography. This option affects the localization modules. If this option is enabled, key terms such as <editor> are abbreviated. If not, they are written out. +Whether or not to use long or abbreviated strings in citations and in the bibliography. This option affects the localisation modules. If this option is enabled, key terms such as <editor> are abbreviated. If not, they are written out. \optitem[comp]{date}{\opt{year}, \opt{short}, \opt{long}, \opt{terse}, \opt{comp}, \opt{iso8601}} @@ -2403,7 +2222,7 @@ See \secref{use:use:epr} for details on support for arXiv and electronic publish \optitem[auto]{texencoding}{\opt{auto}, \prm{encoding}} -Specifies the encoding of the \file{tex} file. This option affects the data transferred from the backend to \biblatex. When using \biber, this corresponds to \biber's |--output_encoding| option. The following choices are available: +Specifies the encoding of the \file{tex} file. This option affects the data transferred from the backend to \biblatex. This corresponds to \biber's |--output_encoding| option. The following choices are available: \begin{valuelist} @@ -2417,7 +2236,7 @@ Note that setting \kvopt{texencoding}{\prm{encoding}} will also affect the \opt{ \optitem[auto]{bibencoding}{\opt{auto}, \prm{encoding}} -Specifies the encoding of the \file{bib} files. When using \biber, this corresponds to \biber's |--input_encoding| option. The following choices are available: +Specifies the encoding of the \file{bib} files. This corresponds to \biber's |--input_encoding| option. The following choices are available: \begin{valuelist} @@ -2427,9 +2246,9 @@ Specifies the encoding of the \file{bib} files. When using \biber, this correspo \end{valuelist} -By default, \biblatex assumes that the \file{tex} file and the \file{bib} file use the same encoding (\kvopt{bibencoding}{auto}). Note that some backends only support a limited number of encodings. See \secref{bib:cav:enc} for further instructions. +By default, \biblatex assumes that the \file{tex} file and the \file{bib} file use the same encoding (\kvopt{bibencoding}{auto}). -\boolitem[false]{safeinputenc}[\BiberOnly] +\boolitem[false]{safeinputenc} If this option is enabled, \biblatex will automatically force \kvopt{texencoding}{ascii} if the \sty{inputenc}\slash \sty{inputenx} package has been loaded and the input encoding is \utf, \ie it will ignore any macro-based \utf support and use Ascii only. \biber will then try to convert any non-Ascii data in the \file{bib} file to Ascii. For example, it will convert \texttt{\d{S}} to |\d{S}|. See \secref{bib:cav:enc:enc} for an explanation of why you may want to enable this option. @@ -2439,7 +2258,11 @@ By default, \biblatex will report warnings issued by the backend concerning the \intitem[2]{mincrossrefs} -Sets the minimum number of cross references to \prm{integer} when requesting a backend run.\footnote{If an entry which is cross-referenced by other entries in the \file{bib} file hits this threshold, it is included in the bibliography even if it has not been cited explicitly. This is a standard feature of the \bibtex (also \biber) and not specific to \biblatex. See the description of the \bibfield{crossref} field in \secref{bib:fld:spc} for further information.} Note that when using the \bibtex backend, this package option merely affects the format of certain requests written to the transcript file. It will not have any effect if the editor or compiler script launching \bibtex does not include dedicated \biblatex support or if \bibtex is manually launched from the command"=line.\footnote{As of this writing, no \latex editors or compiler scripts with dedicated \biblatex support are known, but this will hopefully change in the future.} See \secref{bib:cav:ide} for details. This option also affects the handling of the \bibfield{xref} field. See the field description in \secref{bib:fld:spc} as well as \secref{bib:cav:ref} for details. +Sets the minimum number of cross references to \prm{integer} when requesting a backend run.\footnote{If an entry which is cross-referenced by other entries in the \file{bib} file hits this threshold, it is included in the bibliography even if it has not been cited explicitly. This is a standard feature of the \bibtex format and not specific to \biblatex. See the description of the \bibfield{crossref} field in \secref{bib:fld:spc} for further information.} This option also affects the handling of the \bibfield{xref} field. See the field description in \secref{bib:fld:spc} as well as \secref{bib:cav:ref} for details. + +\intitem[2]{minxrefs} + +As \opt{mincrossrefs} but for \bibfield{xref} fields. \end{optionlist} @@ -2582,22 +2405,22 @@ When enabled, all first and middle names will be rendered as initials. The optio \boolitem[false]{sortgiveninits} -When enabled, sorting names will only use their initials. \BiberOnlyMark This is separate from \opt{giveninits} in case users want to show only inits but sort on full names, for example. +When enabled, sorting names will only use their initials. This is separate from \opt{giveninits} in case users want to show only inits but sort on full names, for example. \boolitem[false]{terseinits} -This option controls the format of initials generated by \biblatex. If enabled, initials are rendered using a terse format without dots and spaces. For example, the initials of Donald Ervin Knuth would be rendered as <D.~E.> by default, and as <DE> if this option is enabled. The option will affect the \cmd{ifterseinits} test from \secref{aut:aux:tst}. \BiberOnlyMark With \biber, the option works by redefining some macros which control the format of initials. See \secref{use:cav:nam} for details. +This option controls the format of initials generated by \biblatex. If enabled, initials are rendered using a terse format without dots and spaces. For example, the initials of Donald Ervin Knuth would be rendered as <D.~E.> by default, and as <DE> if this option is enabled. The option will affect the \cmd{ifterseinits} test from \secref{aut:aux:tst}. The option works by redefining some macros which control the format of initials. See \secref{use:cav:nam} for details. \boolitem[false]{labelalpha} Whether or not to provide the special fields \bibfield{labelalpha} and \bibfield{extraalpha}, see \secref{aut:bbx:fld} for details. -\BiberOnlyMark With \biber, this option is also settable on a per-type basis. See also \opt{maxalphanames} and \opt{minalphanames}. Table \ref{use:opt:tab1} summarises the various \opt{extra*} disambiguation counters and what they track. +This option is also settable on a per-type basis. See also \opt{maxalphanames} and \opt{minalphanames}. Table \ref{use:opt:tab1} summarises the various \opt{extra*} disambiguation counters and what they track. -\intitem[3]{maxalphanames}[\BiberOnly] +\intitem[3]{maxalphanames} Similar to the \opt{maxnames} option but customizes the format of the \bibfield{labelalpha} field. -\intitem[1]{minalphanames}[\BiberOnly] +\intitem[1]{minalphanames} Similar to the \opt{minnames} option but customizes the format of the \bibfield{labelalpha} field. @@ -2606,26 +2429,35 @@ Similar to the \opt{minnames} option but customizes the format of the \bibfield{ Whether or not to provide the special field \bibfield{labelnumber}, see \secref{aut:bbx:fld} for details. This option is also settable on a per-type basis. -\boolitem[false]{labeltitle}[\BiberOnly] +\boolitem[false]{labeltitle} Whether or not to provide the special field \bibfield{extratitle}, see \secref{aut:bbx:fld} for details. Note that the special field \bibfield{labeltitle} is always provided and this option controls rather whether \bibfield{labeltitle} is used to generate \bibfield{extratitle} information. This option is also settable on a per-type basis. Table \ref{use:opt:tab1} summarises the various \opt{extra*} disambiguation counters and what they track. -\boolitem[false]{labeltitleyear}[\BiberOnly] +\boolitem[false]{labeltitleyear} Whether or not to provide the special field \bibfield{extratitleyear}, see \secref{aut:bbx:fld} for details. Note that the special field \bibfield{labeltitle} is always provided and this option controls rather whether \bibfield{labeltitle} is used to generate \bibfield{extratitleyear} information. This option is also settable on a per-type basis. Table \ref{use:opt:tab1} summarises the various \opt{extra*} disambiguation counters and what they track. \boolitem[false]{labeldate} Whether or not to provide the special fields \bibfield{labelyear}, \bibfield{labelmonth}, \bibfield{labelday} and \bibfield{extrayear}, see \secref{aut:bbx:fld} for details. -\BiberOnlyMark With \biber, this option is also settable on a per-type basis. Table \ref{use:opt:tab1} summarises the various \opt{extra*} disambiguation counters and what they track. +This option is also settable on a per-type basis. Table \ref{use:opt:tab1} summarises the various \opt{extra*} disambiguation counters and what they track. \boolitem[false]{singletitle} Whether or not to provide the data required by the \cmd{ifsingletitle} test, see \secref{aut:aux:tst} for details. -\BiberOnlyMark With \biber, this option is also settable on a per-type basis. +This option is also settable on a per-type basis. + +\boolitem[false]{uniquetitle} + +Whether or not to provide the data required by the \cmd{ifuniquetitle} test, see \secref{aut:aux:tst} for details. +This option is also settable on a per-type basis. + +\boolitem[false]{uniqueprimaryauthor} + +Whether or not to provide the data required by the \cmd{ifuniqueprimaryauthor} test, see \secref{aut:aux:tst} for details. \optitem[false]{uniquename}{\opt{true}, \opt{false}, \opt{init}, \opt{full}, \opt{allinit}, \opt{allfull}, -\opt{mininit}, \opt{minfull}}[\BiberOnly] +\opt{mininit}, \opt{minfull}} Whether or not to update the \cnt{uniquename} counter, see \secref{aut:aux:tst} for details. This feature will disambiguate individual names in the \bibfield{labelname} list. This option is also settable on a per-type basis. The possible choices are: @@ -2642,7 +2474,7 @@ Whether or not to update the \cnt{uniquename} counter, see \secref{aut:aux:tst} % Note that the \opt{uniquename} option will also affect \opt{uniquelist}, the \cmd{ifsingletitle} test, and the \bibfield{extrayear} field. See \secref{aut:cav:amb} for further details and practical examples. -\optitem[false]{uniquelist}{\opt{true}, \opt{false}, \opt{minyear}}[\BiberOnly] +\optitem[false]{uniquelist}{\opt{true}, \opt{false}, \opt{minyear}} Whether or not to update the \cnt{uniquelist} counter, see \secref{aut:aux:tst} for details. This feature will disambiguate the \bibfield{labelname} list if it has become ambiguous after \opt{maxnames}\slash \opt{minnames} truncation. Essentially, it overrides \opt{maxnames}\slash \opt{minnames} on a per-field basis. This option is also settable on a per-type basis. The possible choices are: @@ -2691,17 +2523,17 @@ The following options are settable on a per"=type basis or on a per"=entry in th \boolitem[true]{useauthor} Whether the \bibfield{author} is used in labels and considered during sorting. This may be useful if an entry includes an \bibfield{author} field but is usually not cited by author for some reason. Setting \kvopt{useauthor}{false} does not mean that the \bibfield{author} is ignored completely. It means that the \bibfield{author} is not used in labels and ignored during sorting. The entry will then be alphabetized by \bibfield{editor} or \bibfield{title}. With the standard styles, the \bibfield{author} is printed after the title in this case. See also \secref{use:srt}. -\BiberOnlyMark With \biber, this option is also settable on a per-type and per-entry basis. +This option is also settable on a per-type and per-entry basis. \boolitem[true]{useeditor} Whether the \bibfield{editor} replaces a missing \bibfield{author} in labels and during sorting. This may be useful if an entry includes an \bibfield{editor} field but is usually not cited by editor. Setting \kvopt{useeditor}{false} does not mean that the \bibfield{editor} is ignored completely. It means that the \bibfield{editor} does not replace a missing \bibfield{author} in labels and during sorting. The entry will then be alphabetized by \bibfield{title}. With the standard styles, the \bibfield{editor} is printed after the title in this case. See also \secref{use:srt}. -\BiberOnlyMark With \biber, this option is also settable on a per-type and per-entry basis. +This option is also settable on a per-type and per-entry basis. \boolitem[false]{usetranslator} Whether the \bibfield{translator} replaces a missing \bibfield{author}\slash \bibfield{editor} in labels and during sorting. Setting \kvopt{usetranslator}{true} does not mean that the \bibfield{translator} overrides the \bibfield{author}\slash \bibfield{editor}. It means that the \bibfield{translator} is considered as a fallback if the \bibfield{author}\slash \bibfield{editor} is missing or if \opt{useauthor} and \opt{useeditor} are set to \texttt{false}. In other words, in order to cite a book by translator rather than by author, you need to set the following options: -\BiberOnlyMark With \biber, this option is also settable on a per-type and per-entry basis. +This option is also settable on a per-type and per-entry basis. \begin{lstlisting}[style=bibtex]{} @Book{..., @@ -2721,7 +2553,7 @@ defined. Global, per-type and per-entry options called <use$<$name$>$>are automa \boolitem[false]{useprefix} Whether the name prefix (von, van, of, da, de, della, etc.) is considered when printing the last name in citations. This also affects the sorting and formatting of the bibliography as well as the generation of certain types of labels. If this option is enabled, \biblatex always precedes the last name with the prefix. For example, Ludwig van Beethoven would be cited as «Beethoven» and alphabetized as «Beethoven, Ludwig van» by default. If this option is enabled, he is cited as «van Beethoven» and alphabetized as «Van Beethoven, Ludwig» instead. -\BiberOnlyMark With \biber, this option is also settable on a per-type scope. With \biblatexml datasources, this is settable on per-namelist and per-name scopes. +This option is also settable on a per-type scope. With \biblatexml datasources, this is settable on per-namelist and per-name scopes. \optitem{indexing}{\opt{true}, \opt{false}, \opt{cite}, \opt{bib}} @@ -2739,26 +2571,22 @@ The following options are settable on a per"=type basis or on a per"=entry in th \boolitem[false]{skipbib} If this option is enabled, the entry is excluded from the bibliography but it may still be cited. -\BiberOnlyMark With \biber, this option is also settable on a per-type basis. - -\boolitem[false]{skiplos}[\BibTeXOnly] - -If this option is enabled, the entry is excluded from the list of shorthands. It is still included in the bibliography and it may also be cited by shorthand. This option is deprecated when using \biber as the backend. Use \opt{skipbiblist} instead. +This option is also settable on a per-type basis. -\boolitem[false]{skipbiblist}[\BiberOnly] +\boolitem[false]{skipbiblist} -This is the same as the \opt{skiplos} option when using the \bibtex backend. It is renamed for \biber to be consistent with the more generalised bibliography list functionality, see \secref{use:bib:biblist}. If this option is enabled, the entry is excluded from and bibliography lists. It is still included in the bibliography and it may also be cited by shorthand etc. +If this option is enabled, the entry is excluded from and bibliography lists. It is still included in the bibliography and it may also be cited by shorthand etc. This option is also settable on a per-type basis. \boolitem[false]{skiplab} If this option is enabled, \biblatex will not assign any labels to the entry. It is not required for normal operation. Use it with care. If enabled, \biblatex can not guarantee unique citations for the respective entry and citations styles which require labels may fail to create valid citations for the entry. -\BiberOnlyMark With \biber, this option is also settable on a per-type basis. +This option is also settable on a per-type basis. \boolitem[false]{dataonly} Setting this option is equivalent to \kvopt{uniquename}{false}, \kvopt{uniquelist}{false, }\opt{skipbib}, \opt{skiplos}/\opt{skipbiblist}, and \opt{skiplab}. It is not required for normal operation. Use it with care. -\BiberOnlyMark With \biber, this option is also settable on a per-type basis. +This option is also settable on a per-type basis. \paragraph{Entry Only Options} \label{use:opt:bib:entry} @@ -2948,7 +2776,7 @@ This style prints all bibliographic data in tabular format. It is intended for d \subsection{Related Entries} \label{use:rel} -Almost all bibliography styles require authors to specify certain types of relationship between entries such as «Reprint of», «Reprinted in» etc. It is impossible to provide data fields to cover all of these relationships and so \biblatex provides a general mechanism for this using the entry fields \bibfield{related}, \bibfield{relatedtype} and \bibfield{relatedstring}. A related entry does not need to be cited and does not appear in the bibliography itself (unless of course it is also cited itself independently) as a clone is taken of the related entry to be used as a data source. The \bibfield{relatedtype} field should specify a localization string which will be printed before the information from the related entries is printed, for example «Orig. Pub. as». The \bibfield{relatedstring} field can be used to override the string determined via \bibfield{relatedtype}. Some examples: +Almost all bibliography styles require authors to specify certain types of relationship between entries such as «Reprint of», «Reprinted in» etc. It is impossible to provide data fields to cover all of these relationships and so \biblatex provides a general mechanism for this using the entry fields \bibfield{related}, \bibfield{relatedtype} and \bibfield{relatedstring}. A related entry does not need to be cited and does not appear in the bibliography itself (unless of course it is also cited itself independently) as a clone is taken of the related entry to be used as a data source. The \bibfield{relatedtype} field should specify a localisation string which will be printed before the information from the related entries is printed, for example «Orig. Pub. as». The \bibfield{relatedstring} field can be used to override the string determined via \bibfield{relatedtype}. Some examples: \begin{lstlisting}[style=bibtex]{} @Book{key1, @@ -2966,9 +2794,9 @@ Almost all bibliography styles require authors to specify certain types of relat Here we specify that entry \texttt{key1} is a reprint of entry \texttt{key2}. In the bibliography driver for \texttt{Book} entries, when \cmd{usebibmacro\{related\}} is called for entry \texttt{key1}: \begin{itemize} -\item If the localization string «\texttt{reprintof}» is defined, it is printed in the \texttt{relatedstring:reprintof} format. If this formatting directive is undefined, the string is printed in the \texttt{relatedstring:default} format. +\item If the localisation string «\texttt{reprintof}» is defined, it is printed in the \texttt{relatedstring:reprintof} format. If this formatting directive is undefined, the string is printed in the \texttt{relatedstring:default} format. \item If the \texttt{related:reprintof} macro is defined, it is used to format the information contained in entry \texttt{key2}, otherwise the \texttt{related:default} macro is used -\item If the \texttt{related:reprintof} format is defined, it is used to format both the localization string and data. If this format is not defined, then the \texttt{related} format is used instead. +\item If the \texttt{related:reprintof} format is defined, it is used to format both the localisation string and data. If this format is not defined, then the \texttt{related} format is used instead. \end{itemize} % It is also supported to have cascading and/or circular relations: @@ -3027,7 +2855,124 @@ The first item considered in the sorting process is always the \bibfield{presort The chronological sorting schemes presented in \apxref{apx:srt:chr} also make use of the \bibfield{presort} and \bibfield{sortkey} fields, if defined. The next item considered is the \bibfield{sortyear} or the \bibfield{year} field, depending on availability. The \opt{ynt} scheme extracts the first four Arabic figures from the field. If both fields are undefined, the string \texttt{9999} is used as a fallback value. This means that all entries without a year will be moved to the end of the list. The \opt{ydnt} scheme is similar in concept but sorts the year in descending order. As with the \opt{ynt} scheme, the string \texttt{9999} is used as a fallback value. The remaining items are similar to the alphabetic sorting schemes discussed above. Note that the \opt{ydnt} sorting scheme will only sort the date in descending order. All other items are sorted in ascending order as usual. -Using special fields such as \bibfield{sortkey}, \bibfield{sortname}, or \bibfield{sorttitle} is usually not required. The \biblatex package is quite capable of working out the desired sorting order by using the data found in the regular fields of an entry. You will only need them if you want to manually modify the sorting order of the bibliography or if any data required for sorting is missing. Please refer to the field descriptions in \secref{bib:fld:spc} for details on possible uses of the special fields. Also note that using \biber instead of legacy \bibtex is strongly recommended. +Using special fields such as \bibfield{sortkey}, \bibfield{sortname}, or \bibfield{sorttitle} is usually not required. The \biblatex package is quite capable of working out the desired sorting order by using the data found in the regular fields of an entry. You will only need them if you want to manually modify the sorting order of the bibliography or if any data required for sorting is missing. Please refer to the field descriptions in \secref{bib:fld:spc} for details on possible uses of the special fields. + +\subsection{Data Annotations} +\label{use:annote} +Ideally, there should be no formatting information in a bibliography data file, however, sometimes such questionable practice seems to the only way in which the desired results can be achieved. Data annotations are a way of addressing this by allowing users to attach semantic information (rather than typographical markup) to information in a bibliography data source so that the information can be used at markup time by a style. For example, if you wanted to highlight certain names in a work depending on whether they were a student author (indicated by a superscript asterisk in the references) or a corresponding author (indicated by bold face), then you might be tempted to try: + +\begin{lstlisting}[style=bibtex]{} +@MISC{Article1, + AUTHOR = {Last1\textsuperscript{*}, First1 and \textbf{Last2}, \textbf{First2} and Last3, First3} +} +\end{lstlisting} +% +There are several problems with this. Firstly, it will break \bibtex's fragile name parsing routines and probably won't compile at all. Secondly, it is not only mixing up data with markup, it does so in a hard-coded way: this data can't easily be shared and used with other styles. While it is possible to achieve this formatting using \biblatex internals in a style or document, this is a complex and unreliable method which many users will not wish to use. + +In order to address these issues, \biblatex has a general data annotation facility which allows you to attach a comma"=separated list of annotations to data fields, items within data field lists (like names) and even parts of specific items such as parts of names (given name, family name etc.). There are macros provided to check for annotations which can be used in formatting directives. + +There are three «scopes» for data annotations, in order of increasing specificity: + +\begin{itemize} +\item \opt{field}---applied to top-level fields in a data source entry +\item \opt{item}---applied to items within a list field in a data source entry +\item \opt{part}---applied to parts within items within a list field in a data source entry +\end{itemize} +% +Data annotations are supported for \bibtex and \biblatexml data sources. + +Attaching annotations to data is easy in \biblatexml data sources as they are specified by simple XML attributes. Continuing with the example above, we would have: + +\begin{lstlisting}[language=xml] +<bltx:entries xmlns:bltx="http://biblatex-biber.sourceforge.net/biblatexml"> + <bltx:entry id="test" entrytype="misc"> + <bltx:names type="author"> + <bltx:name> + <bltx:namepart type="given" initial="F">First1</bltx:namepart> + <bltx:namepart type="family" initial="L" annotation="student">Last1</bltx:namepart> + </bltx:name> + <bltx:name annotation="corresponding"> + <bltx:namepart type="given" initial="F">First2</bltx:namepart> + <bltx:namepart type="family" initial="L">Last2</bltx:namepart> + </bltx:name> + <bltx:name> + <bltx:namepart type="given" initial="F">First3</bltx:namepart> + <bltx:namepart type="family" initial="L">Last3</bltx:namepart> + </bltx:name> + </bltx:names> + </bltx:entry> +</bltx:entries> +\end{lstlisting} +% +Here the annotations are attached in an obvious way to the data items. With \bibtex data sources, the format for annotations is not quite as intuitive: + +\begin{lstlisting}[style=bibtex]{} +@MISC{ann1, + AUTHOR = {Last1, First1 and Last2, First2 and Last3, First3}, + AUTHOR+an = {1:family=student;2=corresponding}, +} +\end{lstlisting} +% +Here the field name suffix \texttt{+an} is a user-definable\footnote{See \biber's \opt{--annotation-marker} option.} suffix which marks a data field as an annotation of the unsuffixed field. The format of annotation fields in \bibtex data sources is is as follows: + +\begin{lstlisting} +<annotationspecs> ::= <annotationspec> [ ";" <annotationspec> ] +<annotationspec> ::= [ <itemcount> [ ":" <part> ] ] "=" <annotations> +<annotations> ::= <annotation> [ "," <annotation> ] +<annotation> ::= (string) +\end{lstlisting} +% +That is, one or more specifications separated by semi-colons. Each specification is an equals sign followed by a comma"=separated list of annotation keywords. To annotation a specific item in a list, put the number of the list item before the equals sign (lists start at 1). If you need to annotate a specific part of the list item, give its name after the list item number, preceded by a colon. Name part names are defined in the data model, see \secref{aut:bbx:drv}. Some examples: + +\begin{lstlisting}[style=bibtex]{} +AUTHOR = {Last1, First1 and Last2, First2 and Last3, First3}, +AUTHOR+an = {3:given=annotation1, annotation2}, +TITLE = {A title}, +TITLE+an = {=a title annotation, another title annotation}, +LANGUAGE = {english and french}, +LANGUAGE+an = {1=annotation3; 2=annotation4} +} +\end{lstlisting} +% +To access the annotation information when formatting bibliography data, three macros are provided, corresponding to the three annotation scopes: + +\begin{ltxsyntax} + +\cmditem{iffieldannotation}{annotation}{true}{false} + +Executes \prm{true} if the current data field has an annotation \prm{annotation} and false otherwise. + +\cmditem{ifitemannotation}{annotation}{true}{false} + +Executes \prm{true} if the current item in the current data field has an annotation \prm{annotation} and false otherwise. + +\cmditem{ifpartannotation}{part}{annotation}{true}{false} + +Executes \prm{true} if the part named \prm{part} in current item in the current data field has an annotation \prm{annotation} and false otherwise. + +\end{ltxsyntax} +% +These macros are available in the same places as \cmd{currentfield}, \cmd{currentlist} and \cmd{currentname} (see \secref{aut:bib:fmt}), that is, inside formatting directives. They automatically determine the name of the current data field being processed and also the current \opt{listcount} value which determines the current item in list fields. Parts such as name parts need to be named explicitly. As an example of how to use the annotation information to solve the problem originally presented in this section, this could be used in the name formatting directives to put an asterisk after all family names annotated as «student»: + +\begin{lstlisting}[style=latex]{} + \ifpartannotation{family}{student} + {\textsuperscript{*}} + {}% +\end{lstlisting} +% +To put the given and family names of name list items annotated as «corresponding» in boldface: + +\begin{lstlisting}[style=latex]{} +\renewcommand*{\mkbibnamegiven}[1]{% + \ifitemannotation{corresponding} + {\textbf{#1}} + {#1}} + +\renewcommand*{\mkbibnamefamily}[1]{% + \ifitemannotation{corresponding} + {\textbf{#1}} + {#1}} +\end{lstlisting} \subsection{Bibliography Commands} \label{use:bib} @@ -3072,9 +3017,9 @@ The data type (format) of the resource. The following formats are currently supp \item[bibtex] \bibtex format. -\item[biblatexml]\BiberOnlyMark Experimental XML format for \biblatex. See \secref{apx:biblatexml}. +\item[biblatexml] Experimental XML format for \biblatex. See \secref{apx:biblatexml}. -\item[ris]\BiberOnlyMark Research Information Systems (\acr{RIS}) format.\fnurl{http://en.wikipedia.org/wiki/RIS_(file_format)} Note that an \texttt{ID} tag is required in all \acr{RIS} records. The \texttt{ID} value corresponds to the entry key. Support for this format is experimental. +\item[ris] Research Information Systems (\acr{RIS}) format.\fnurl{http://en.wikipedia.org/wiki/RIS_(file_format)} Note that an \texttt{ID} tag is required in all \acr{RIS} records. The \texttt{ID} value corresponds to the entry key. Support for this format is experimental. \end{valuelist} @@ -3171,10 +3116,6 @@ Filter the entries with filter \prm{name}, as defined with \cmd{defbibfilter}. S Filter the entries with check \prm{name}, as defined with \cmd{defbibcheck}. See \secref{use:bib:flt} for details. -\valitem{prefixnumbers}{string} - -This option applies to numerical citation\slash bibliography styles only and requires that the \opt{defernumbers} option from \secref{use:opt:pre:gen} be enabled globally. Setting this option will implicitly enable \opt{resetnumbers} for the current bibliography. The option assigns the \prm{string} as a prefix to all entries in the respective bibliography. For example, if the \prm{string} is \texttt{A}, the numerical labels printed will be \texttt{[A1]}, \texttt{[A2]}, \texttt{[A3]}, etc. This is useful for subdivided numerical bibliographies where each subbibliography uses a different prefix. The \prm{string} is available to styles in the \bibfield{prefixnumber} field of all affected entries. See \secref{aut:bbx:fld:lab} for details. - \valitem{resetnumbers}{true,false,number} This option applies to numerical citation\slash bibliography styles only and requires that the \opt{defernumbers} option from \secref{use:opt:pre:gen} be enabled globally. If enabled, it will reset the numerical labels assigned to the entries in the respective bibliography, \ie the numbering will restart at~1. You can also pass a number to this option, for example: \texttt{resetnumbers=10} to reset numbering to the specified number to aid numbering continuity across documents. Use this option with care as \biblatex can not guarantee unique labels globally if they are reset manually. @@ -3207,28 +3148,9 @@ This command prints a bibliography heading defined with \cmd{defbibheading}. It % To print a bibliography with a different sorting scheme than the global sorting scheme, use the bibliography context switching commands from \secref{use:bib:context}. -\subsubsection{The List of Shorthands} -\label{use:bib:los} - -\BibTeXOnlyMark This section applies only to \bibtex. When using \biber, the list of shorthands is just a special case of a bibliography list. See \secref{use:bib:biblist}. - -If any entry includes a \bibfield{shorthand} field, \sty{biblatex} automatically builds a list of shorthands which may be printed in addition to the regular bibliography. The following command prints the list of shorthands. - -\begin{ltxsyntax} - -\cmditem{printshorthands}[key=value, \dots] - -This command prints the list of shorthands. It takes one optional argument, which is a list of options given in \keyval notation. Valid options are all options supported by \cmd{printbibliography} (\secref{use:bib:bib}) except \opt{prefixnumbers}, \opt{resetnumbers}, and \opt{omitnumbers}. If there are any \env{refsection} environments in the document, the list of shorthands will be local to these environments; see \secref{use:bib:sec} for details. By default, this command uses the heading \texttt{shorthands}. See \secref{use:bib:hdg} for details. - -The \opt{sorting} option differs from \cmd{printbibliography} in that if omitted, the default is to sort by shorthand. - -\end{ltxsyntax} - \subsubsection{Bibliography Lists} \label{use:bib:biblist} -\BiberOnlyMark This section applies only to \biber. It is a generalisation of the shorthands facility available in earlier versions and with \bibtex. When using \bibtex as the backend, please refer to section \secref{use:bib:los}. - \biblatex can, in addition to printing normal bibliographies, also print arbitrary lists of information derived from the bibliography data such as a list of shorthand abbreviations for particular entries or a list of abbreviations of journal titles. A bibliography list differs from a normal bibliography in that the same bibliography driver is used to print all entries rather than a specific driver being used for each entry depending on the entry type. @@ -3237,7 +3159,7 @@ A bibliography list differs from a normal bibliography in that the same bibliogr \cmditem{printbiblist}[key=value, \dots]{<biblistname>} -This command prints a bibliography list. It takes an optional argument, which is a list of options given in \keyval notation. Valid options are all options supported by \cmd{printbibliography} (\secref{use:bib:bib}) except \opt{prefixnumbers}, \opt{resetnumbers}, and \opt{omitnumbers}. If there are any \env{refsection} environments in the document, the bibliography list will be local to these environments; see \secref{use:bib:sec} for details. By default, this command uses the heading \texttt{biblist}. See \secref{use:bib:hdg} for details. +This command prints a bibliography list. It takes an optional argument, which is a list of options given in \keyval notation. Valid options are all options supported by \cmd{printbibliography} (\secref{use:bib:bib}) except \opt{resetnumbers} and \opt{omitnumbers}. If there are any \env{refsection} environments in the document, the bibliography list will be local to these environments; see \secref{use:bib:sec} for details. By default, this command uses the heading \texttt{biblist}. See \secref{use:bib:hdg} for details. The \prm{biblistname} is a mandatory argument which names the bibliography list. This name is used to identify: \begin{itemize} @@ -3403,7 +3325,7 @@ The following headings, which are intended for use with \cmd{printbibliography} \begin{valuelist*} \item[bibliography] -This is the default heading used by \cmd{printbibliography} if the \opt{heading} option is not given. Its default definition depends on the document class. If the class provides a \cmd{chapter} command, the heading is similar to the bibliography heading of the standard \latex \texttt{book} class, \ie it uses \cmd{chapter*} to create an unnumbered chapter heading which is not included in the table of contents. If there is no \cmd{chapter} command, it is similar to the bibliography heading of the standard \latex \texttt{article} class, \ie it uses \cmd{section*} to create an unnumbered section heading which is not included in the table of contents. The string used in the heading also depends on the document class. With \texttt{book}-like classes the localization string \texttt{bibliography} is used, with other classes it is \texttt{references} (see \secref{aut:lng:key}). See also \secref{use:cav:scr, use:cav:mem} for class-specific hints. +This is the default heading used by \cmd{printbibliography} if the \opt{heading} option is not given. Its default definition depends on the document class. If the class provides a \cmd{chapter} command, the heading is similar to the bibliography heading of the standard \latex \texttt{book} class, \ie it uses \cmd{chapter*} to create an unnumbered chapter heading which is not included in the table of contents. If there is no \cmd{chapter} command, it is similar to the bibliography heading of the standard \latex \texttt{article} class, \ie it uses \cmd{section*} to create an unnumbered section heading which is not included in the table of contents. The string used in the heading also depends on the document class. With \texttt{book}-like classes the localisation string \texttt{bibliography} is used, with other classes it is \texttt{references} (see \secref{aut:lng:key}). See also \secref{use:cav:scr, use:cav:mem} for class-specific hints. \item[subbibliography] Similar to \texttt{bibliography} but one sectioning level lower. This heading definition uses \cmd{section*} instead of \cmd{chapter*} with a \texttt{book}-like class and \cmd{subsection*} instead of \cmd{section*} otherwise. @@ -3430,7 +3352,7 @@ The following headings intended for use with \cmd{printbiblist} are predefined: \begin{valuelist*} \item[biblist] -This is the default heading used by \cmd{printbiblist} if the \opt{heading} option is not given. It is similar to \texttt{bibliography} above except that it uses the localization string \texttt{shorthands} instead of \texttt{bibliography} or \texttt{references} (see \secref{aut:lng:key}). See also \secref{use:cav:scr, use:cav:mem} for class-specific hints. +This is the default heading used by \cmd{printbiblist} if the \opt{heading} option is not given. It is similar to \texttt{bibliography} above except that it uses the localisation string \texttt{shorthands} instead of \texttt{bibliography} or \texttt{references} (see \secref{aut:lng:key}). See also \secref{use:cav:scr, use:cav:mem} for class-specific hints. \item[biblistintoc] Similar to \texttt{biblist} above but adds an entry to the table of contents. @@ -3536,14 +3458,16 @@ See the author guide, in particular \secref{aut:aux:tst,aut:aux:ife}, for furthe \end{ltxsyntax} -\subsubsection{Bibliography Contexts}\BiberOnlyMark +\subsubsection{Reference Contexts} \label{use:bib:context} -References in a bibliography are cited and printed in a <context>. The context determines the data which is actually used to cite or provide bibliographic data for an entry. A context consists currently of the following information (the <context> concept is designed for future extensibility): +References in a bibliography are cited and printed in a <context>. The context determines the data which is actually used to cite or provide bibliographic data for an entry. A context consists of the following information (the <context> concept is designed for future extensibility): \begin{itemize} \item A sorting scheme \item A scheme for constructing the sorting keys for names + \item A string prefix for citation schemes which use alphabetic or numeric + labels \end{itemize} % The point of bibliography contexts is twofold. Firstly, they are used to set options which influence a printed bibliography and secondly to influence the data printed by citation commands. @@ -3593,6 +3517,34 @@ To demonstrate the second type of use of bibliography contexts, we have to under % Here, the second use of the citations, along with the \cmd{printbibliography} command will use data from the context of the custom <yntd> sorting scheme which may well be different from the data associated with the default <nyt> scheme. That is, the citation labels (in an authoryear style which uses \opt{extrayear}) may be different \emph{for the exact same entries} between different bibliography contexts and so the citations themselves may look different. +By default, data for a citation is drawn from the reference context of the last bibliography in which it was printed. For example, in the fragment: + +\begin{ltxexample}[style=latex]{} +\begin{document} + +\cite{book, article, misc} + +\printbibliography[type=book] + +\newrefcontext[labelprefix=A] +\printbibliography[type=article] + +\newrefcontext[sorting=ydnt, resetnumbers] +\printbibliography[type=misc] + +\end{document} +\end{ltxexample} +% +Assuming the entrykeys are indicative of their entrytypes, this is the default situation for the citations which corresponds to what users normally expect: + +\begin{itemize} +\item The citation of entry \bibfield{book} would draw its data from the global reference context, because the last bibliography in which it was printed was the one in the global reference context. +\item The citation of entry \bibfield{article} would draw its data from reference context with \opt{labelprefix=A} and would therefore have a <A> prefix when cited. +\item The citation of entry \bibfield{misc} would draw its data from the reference context with \opt{sorting=ydnt} +\end{itemize} +% +In cases where the user has entries which occur in multiple bibliographies in different forms or with potentially different labels (in a numeric scheme with different \bibfield{labelprefix} values for example), it may be necessary to tell \biblatex from which reference context you wish to draw the citation information. As shown above this can be done by explicitly putting citations inside reference contexts. This can be onerous in a large document and so there is specific functionality for assigning citations to reference contexts programatically, see the \cmd{assignrefcontext*} macros below. + \begin{ltxsyntax} \envitem{refcontext}[key=value, \dots] @@ -3609,6 +3561,10 @@ Specify a sorting scheme defined previously with \cmd{DeclareSortingScheme}. Thi Specify a sorting name key scheme defined previously with \cmd{DeclareSortingNamekeyScheme}. This scheme is used to construct sorting keys for names inside the context. +\valitem{labelprefix}{string} + +This option applies to numerical citation\slash bibliography styles only and requires that the \opt{defernumbers} option from \secref{use:opt:pre:gen} be enabled globally. Setting this option will implicitly enable \opt{resetnumbers} for the any \cmd{printbibliography} in the scope of the context. The option assigns the \prm{string} as a prefix to all entries in the reference context. For example, if the \prm{string} is \texttt{A}, the numerical labels printed will be \texttt{[A1]}, \texttt{[A2]}, \texttt{[A3]}, etc. This is useful for subdivided numerical bibliographies where each subbibliography uses a different prefix. The \prm{string} is available to styles in the \bibfield{labelprefix} field of all affected entries. See \secref{aut:bbx:fld:lab} for details. + \end{optionlist*} % The \opt{refcontext} environment cannot be nested and \biblatex will generate an error if you try to do so. @@ -3618,31 +3574,40 @@ The \opt{refcontext} environment cannot be nested and \biblatex will generate an This command is similar to the \env{refcontext} environment except that it is a stand"=alone command rather than an environment. It automatically ends the previous context section (if any) and immediately starts a new one. Note that the context section started by the last \cmd{newrefcontext} command in the document will extend to the very end of the document. Use \cmd{endrefcontext} if you want to terminate it earlier. \end{ltxsyntax} % -At the beginning of the document, there is always a global context containing global settings for each of the context attributes. +At the beginning of the document, there is always a global context containing global settings for each of the reference context options. \begin{ltxsyntax} \cmditem{assignrefcontextkeyws}[key=value, \dots]{keyword1,keyword2, ...} +\cmditem{assignrefcontextkeyws*}[key=value, \dots]{keyword1,keyword2, ...} \cmditem{assignrefcontextcats}[key=value, \dots]{category1, category2, ...} +\cmditem{assignrefcontextcats*}[key=value, \dots]{category1, category2, ...} \cmditem{assignrefcontextentries}[key=value, \dots]{entrykey1, entrykey2, ...} +\cmditem{assignrefcontextentries*}[key=value, \dots]{entrykey1, entrykey2, ...} \end{ltxsyntax} -These commands automate putting citations into refcontexts. Instead of wrapping citation commands in \env{refcontext} environments, which might be error-prone and tedious, you can register a comma"=separated list of \prm{keywords}, \prm{categories} or \prm{entrykeys} which, respectively, make the entries with any of the specified keywords, entries in any of the specified categories (see \secref{use:use:div}) or entries with any of the specified citation keys be cited in a particular refcontext specified by the \prm{refcontext key/values} which are parsed exactly as the per \env{refcontext} options. Such refcontext auto-assignments are specific to the current refsection. This is useful if you have multiple bibliographies, differently sorted whilst using \opt{defernumbers} as then \biblatex needs to know which bibliography (which is always in a particular refcontext) it should construct the citation from since the citations could well have different numbers in different bibliographies. You may specify the same citation key in any of these commands but be aware that assignment is done in the order \prm{keywords}, \prm{categories}, \prm{entrykeys} with the later specifications overriding the earlier. An example: +These commands automate putting citations into refcontexts when the default behaviour is not sufficient. The default behaviour is that the data for a citation is drawn from the refcontext of the last bibliography in which it was printed. For citations that are used in some way but not printed in a bibliography or bibliography list, they default to drawing their data from the global refcontext established at the beginning of the document. To override this behaviour, instead of manually wrapping citation commands in \env{refcontext} environments, which might be error-prone and tedious, you can register a comma"=separated list of \prm{keywords}, \prm{categories} or \prm{entrykeys} which, respectively, make the entries with any of the specified keywords, entries in any of the specified categories (see \secref{use:use:div}) or entries with any of the specified citation keys draw their data from a particular refcontext specified by the \prm{refcontext key/values} which are parsed as the per the corresponding \env{refcontext} options. Such refcontext auto-assignments are specific to the current refsection. You may specify the same citation key in any of these commands but be aware that assignment is done in the order \prm{keywords}, \prm{categories}, \prm{entrykeys} with the later specifications overriding the earlier. An example: \begin{ltxexample}[style=latex]{} -\assignrefcontextentries[sorting=nty]{key1,key2} -\cite{key1}, \cite{key2} +\assignrefcontextentries[labelprefix=A]{key2} +\cite{key1} +\begin{refcontext}[labelprefix=B] +\cite{key2} +\end{refcontext} \end{ltxexample} % -This forces all citations of entries \bibfield{key1} and \bibfield{key2} to be drawn from the refcontext specified by \opt{sorting=nty}. It is identical in function to: +Here, the data for the citation of \bibfield{key2} will be drawn from refcontext \opt{labelprefix=A} and not \opt{labelprefix=B} (resulting in a label with prefix <A> and not <B>). +The starred versions do not override a local refcontext and so with: \begin{ltxexample}[style=latex]{} -\begin{refcontext}[sorting=nty] -\cite{key1}, \cite{key2} +\assignrefcontextentries*[labelprefix=A]{key2} +\cite{key1} +\begin{refcontext}[labelprefix=B] +\cite{key2} \end{refcontext} \end{ltxexample} % -which is not so convenient as such manual specification of refcontexts for citations requires manual insertion of refcontext changing commands wherever the citations occur. +the data for the citation of \bibfield{key2} will be drawn from refcontext \opt{labelprefix=B}. Note that these commands are rarely necessary unless you have multiple bibliographies in which the same citations occur and \biblatex\ cannot by default tell which bibliography list a citation should refer to. See the example file \file{94-labelprefix.tex} for more details. \subsubsection{Dynamic Entry Sets} \label{use:bib:set} @@ -3651,9 +3616,9 @@ In addition to the \bibtype{set} entry type, \biblatex also supports dynamic ent \begin{ltxsyntax} -\cmditem{defbibentryset}{key}{key1,key2,key3, \dots}\BiberOnlyMark +\cmditem{defbibentryset}{key}{key1,key2,key3, \dots} -The \prm{key} is the entry key of the set, which is used like any other entry key when referring to the set. The \prm{key} must be unique and it must not conflict with any other entry key. The second argument is a comma"=separated list of the entry keys which make up the set. \cmd{defbibentryset} implies the equivalent of a \cmd{nocite} command, \ie all sets which are declared are also added to the bibliography. When declaring the same set more than once, only the first invocation of \cmd{defbibentryset} will define the set. Subsequent definitions of the same \prm{key} are ignored and work like \cmd{nocite}\prm{key}. Dynamic entry sets defined in the document body are local to the enclosing \env{refsection} environment, if any. Otherwise, they are assigned to reference section~0. Those defined in the preamble are assigned to reference section~0. Note that dynamic entry sets require \biber. They will not work with any other backend. See \secref{use:use:set} for further details. +The \prm{key} is the entry key of the set, which is used like any other entry key when referring to the set. The \prm{key} must be unique and it must not conflict with any other entry key. The second argument is a comma"=separated list of the entry keys which make up the set. \cmd{defbibentryset} implies the equivalent of a \cmd{nocite} command, \ie all sets which are declared are also added to the bibliography. When declaring the same set more than once, only the first invocation of \cmd{defbibentryset} will define the set. Subsequent definitions of the same \prm{key} are ignored and work like \cmd{nocite}\prm{key}. Dynamic entry sets defined in the document body are local to the enclosing \env{refsection} environment, if any. Otherwise, they are assigned to reference section~0. Those defined in the preamble are assigned to reference section~0. See \secref{use:use:set} for further details. \end{ltxsyntax} @@ -3868,7 +3833,9 @@ The following special commands are also provided by the core of \biblatex. \cmditem{nocite}{key} \cmditem*{nocite}|\{*\}| -This command is similar to the standard \latex \cmd{nocite} command. It adds the \prm{key} to the bibliography without printing a citation. If the \prm{key} is an asterisk, all entries available in the \file{bib} file are added to the bibliography. Like all other citation commands, \cmd{nocite} commands in the document body are local to the enclosing \env{refsection} environment, if any. In contrast to standard \latex, \cmd{nocite} may also be used in the document preamble. In this case, the references are assigned to reference section~0. +This command is similar to the standard \latex \cmd{nocite} command. It +adds the \prm{key} to the bibliography without printing a citation. If the +\prm{key} is an asterisk, all entries available in the in-scope bibliography datasource(s) are added to the bibliography. Like all other citation commands, \cmd{nocite} commands in the document body are local to the enclosing \env{refsection} environment, if any. In contrast to standard \latex, \cmd{nocite} may also be used in the document preamble. In this case, the references are assigned to reference section~0. \cmditem{fullcite}[prenote][postnote]{key} @@ -4008,11 +3975,11 @@ Similar to \cmd{pno} but suppresses all prefixes. See \secref{use:cav:pag} for f \csitem{psq} -In the \prm{postnote} argument to a citation command, this command indicates a range of two pages where only the starting page is given. See \secref{use:cav:pag} for further details and usage instructions. The suffix printed is the localization string \texttt{sequens}, see \secref{aut:lng:key}. The spacing inserted between the suffix and the page number may be modified by redefining the macro \cmd{sqspace}. The default is an unbreakable interword space. Note that this command is only available locally in citations and the bibliography. +In the \prm{postnote} argument to a citation command, this command indicates a range of two pages where only the starting page is given. See \secref{use:cav:pag} for further details and usage instructions. The suffix printed is the localisation string \texttt{sequens}, see \secref{aut:lng:key}. The spacing inserted between the suffix and the page number may be modified by redefining the macro \cmd{sqspace}. The default is an unbreakable interword space. Note that this command is only available locally in citations and the bibliography. \csitem{psqq} -Similar to \cmd{psq} but indicates an open-ended page range. See \secref{use:cav:pag} for further details and usage instructions. The suffix printed is the localization string \texttt{sequentes}, see \secref{aut:lng:key}. This command is only available locally in citations and the bibliography. +Similar to \cmd{psq} but indicates an open-ended page range. See \secref{use:cav:pag} for further details and usage instructions. The suffix printed is the localisation string \texttt{sequentes}, see \secref{aut:lng:key}. This command is only available locally in citations and the bibliography. \cmditem{RN}{integer} @@ -4029,7 +3996,7 @@ Similar to \cmd{RN} but prints a lowercase Roman numeral. The formatting applied The \opt{natbib} package option loads a \sty{natbib} compatibility module. The module defines aliases for the citation commands provided by the \sty{natbib} package. This includes aliases for the core citation commands \cmd{citet} and \cmd{citep} as well as the variants \cmd{citealt} and \cmd{citealp}. The starred variants of these commands, which print the full author list, are also supported. The \cmd{cite} command, which is handled in a particular way by \sty{natbib}, is not treated in a special way. The text commands (\cmd{citeauthor}, \cmd{citeyear}, etc.) are also supported, as are all commands which capitalize the name prefix (\cmd{Citet}, \cmd{Citep}, \cmd{Citeauthor}, etc.). Aliasing with \cmd{defcitealias}, \cmd{citetalias}, and \cmd{citepalias} is possible as well. Note that the compatibility commands will not emulate the citation format of the \sty{natbib} package. They merely alias \sty{natbib}'s commands to functionally equivalent facilities of the \biblatex package. The citation format depends on the main citation style. However, the compatibility style will adapt \cmd{nameyeardelim} to match the default style of the \sty{natbib} package. -\subsubsection[\sty{mcite}-like Citation Commands]{\sty{mcite}-like Citation Commands\BiberOnlyMark} +\subsubsection[\sty{mcite}-like Citation Commands]{\sty{mcite}-like Citation Commands} \label{use:cit:mct} The \opt{mcite} package option loads a special citation module which provides \sty{mcite}\slash \sty{mciteplus}-like citation commands. Strictly speaking, what the module provides are wrappers for the commands of the main citation style. For example, the following command: @@ -4125,7 +4092,7 @@ The \biblatex package provides translations for key terms such as <edition> or < \cmditem{DefineBibliographyStrings}{language}{definitions} -This command is used to define localization strings. The \prm{language} must be a language name known to the \sty{babel}/\sty{polyglossia} packages, \ie one of the identifiers listed in \tabref{bib:fld:tab1} on page \pageref{bib:fld:tab1}. The \prm{definitions} are \keyval pairs which assign an expression to an identifier: +This command is used to define localisation strings. The \prm{language} must be a language name known to the \sty{babel}/\sty{polyglossia} packages, \ie one of the identifiers listed in \tabref{bib:fld:tab1} on page \pageref{bib:fld:tab1}. The \prm{definitions} are \keyval pairs which assign an expression to an identifier: \begin{ltxexample} \DefineBibliographyStrings{american}{% @@ -4159,7 +4126,7 @@ The \prm{language} must be a language name known to the \sty{babel}/\sty{polyglo \cmditem{NewBibliographyString}{key} -This command declares new localization strings, \ie it initializes a new \prm{key} to be used in the +This command declares new localisation strings, \ie it initializes a new \prm{key} to be used in the \prm{definitions} of \cmd{DefineBibliographyStrings}. The \prm{key} argument may also be a comma"=separated list of key names. The keys listed in \secref{aut:lng:key} are defined by default. @@ -4173,7 +4140,7 @@ The commands and facilities presented in this section may be used to adapt the f \subsubsection{Generic Commands and Hooks} \label{use:fmt:fmt} -The commands in this section may be redefined with \cmd{renewcommand} in the document preamble. Note that all commands starting with \cmd{mk\dots} take one argument. All of these commands are defined in \path{biblatex$_$.def}. +The commands in this section may be redefined with \cmd{renewcommand} in the document preamble. Those marked as <Context Sensitive> in the margin can also be customised with \cmd{DeclareDelimFormat} and are printed with \cmd{printdelim} (\secref{use:fmt:csd}). Note that all commands starting with \cmd{mk\dots} take one argument. All of these commands are defined in \path{biblatex$_$.def}. \begin{ltxsyntax} @@ -4195,13 +4162,13 @@ The separator inserted between <units> in the sense explained in \secref{aut:pct \csitem{finentrypunct} The punctuation printed at the very end of every bibliography entry, usually a period. The default definition is a period. -\csitem{entrysetpunct}\BiberOnlyMark +\csitem{entrysetpunct} The punctuation printed between bibliography subentries of an entry set. The default definition is a semicolon and a space. -\csitem{bibnamedelima}\BiberOnlyMark +\csitem{bibnamedelima} This delimiter controls the spacing between the elements which make up a name part. It is inserted automatically after the first name element if the element is less than three characters long and before the last element. The default definition is an interword space penalized by the value of the \cnt{highnamepenalty} counter (\secref{use:fmt:len}). Please refer to \secref{use:cav:nam} for further details. -\csitem{bibnamedelimb}\BiberOnlyMark +\csitem{bibnamedelimb} This delimiter is inserted between the elements which make up a name part where \cmd{bibnamedelima} does not apply. The default definition is an interword space penalized by the value of the \cnt{lownamepenalty} counter (\secref{use:fmt:len}). Please refer to \secref{use:cav:nam} for further details. \csitem{bibnamedelimc} @@ -4210,16 +4177,16 @@ This delimiter controls the spacing between name parts. It is inserted between t \csitem{bibnamedelimd} This delimiter is inserted between all name parts where \cmd{bibnamedelimc} does not apply. The default definition is an interword space penalized by the value of the \cnt{lownamepenalty} counter (\secref{use:fmt:len}). Please refer to \secref{use:cav:nam} for further details. -\csitem{bibnamedelimi}\BiberOnlyMark +\csitem{bibnamedelimi} This delimiter replaces \cmd{bibnamedelima/b} after initials. Note that this only applies to initials given as such in the \file{bib} file, not to the initials automatically generated by \biblatex which use their own set of delimiters. -\csitem{bibinitperiod}\BiberOnlyMark +\csitem{bibinitperiod} The punctuation inserted after initials unless \cmd{bibinithyphendelim} applies. The default definition is a period (\cmd{adddot}). Please refer to \secref{use:cav:nam} for further details. -\csitem{bibinitdelim}\BiberOnlyMark +\csitem{bibinitdelim} The spacing inserted between multiple initials unless \cmd{bibinithyphendelim} applies. The default definition is an unbreakable interword space. Please refer to \secref{use:cav:nam} for further details. -\csitem{bibinithyphendelim}\BiberOnlyMark +\csitem{bibinithyphendelim} The punctuation inserted between the initials of hyphenated name parts, replacing \cmd{bibinitperiod} and \cmd{bibinitdelim}. The default definition is a period followed by an unbreakable hyphen. Please refer to \secref{use:cav:nam} for further details. \csitem{bibindexnamedelima} @@ -4277,7 +4244,7 @@ The separator printed before the \bibfield{pageref} field. The default is an int The delimiter printed between multiple items in a name list like \bibfield{author} or \bibfield{editor} if there are more than two names in the list. The default is a comma plus an interword space. See \cmd{finalnamedelim} for an example.\footnote{Note that \cmd{multinamedelim} is not used at all if there are only two names in the list. In this case, the default styles use the \cmd{finalnamedelim}.} \csitem{finalnamedelim} -The delimiter printed instead of \cmd{multinamedelim} before the final name in a name list. The default is the localized term <and>, separated by interword spaces. Here is an example: +The delimiter printed instead of \cmd{multinamedelim} before the final name in a name list. The default is the localised term <and>, separated by interword spaces. Here is an example: \begin{ltxexample} Michel Goossens<<,>> Frank Mittelbach <<and>> Alexander Samarin @@ -4296,16 +4263,16 @@ Jones, Edward<<, and>> Joe Williams In this example, the comma after <Edward> is the \cmd{revsdnamedelim} whereas the string <and> is the \cmd{finalnamedelim}, printed in addition to the former. \csitem{andothersdelim} -The delimiter printed before the localization string <\texttt{andothers}> if a name list like \bibfield{author} or \bibfield{editor} is truncated. The default is an interword space. +The delimiter printed before the localisation string <\texttt{andothers}> if a name list like \bibfield{author} or \bibfield{editor} is truncated. The default is an interword space. \csitem{multilistdelim} The delimiter printed between multiple items in a literal list like \bibfield{publisher} or \bibfield{location} if there are more than two items in the list. The default is a comma plus an interword space. See \cmd{multinamedelim} for further explanation. \csitem{finallistdelim} -The delimiter printed instead of \cmd{multilistdelim} before the final item in a literal list. The default is the localized term <and>, separated by interword spaces. See \cmd{finalnamedelim} for further explanation. +The delimiter printed instead of \cmd{multilistdelim} before the final item in a literal list. The default is the localised term <and>, separated by interword spaces. See \cmd{finalnamedelim} for further explanation. \csitem{andmoredelim} -The delimiter printed before the localization string <\texttt{andmore}> if a literal list like \bibfield{publisher} or \bibfield{location} is truncated. The default is an interword space. +The delimiter printed before the localisation string <\texttt{andmore}> if a literal list like \bibfield{publisher} or \bibfield{location} is truncated. The default is an interword space. \csitem{multicitedelim} The delimiter printed between citations if multiple entry keys are passed to a single citation command. The default is a semicolon plus an interword space. @@ -4317,21 +4284,24 @@ Similar to \cmd{multicitedelim}, but used by the \cmd{supercite} command only. T Similar to \cmd{multicitedelim}, but used by certain citation styles when <compressing> multiple citations. The default definition is a comma plus an interword space. \csitem{textcitedelim} -Similar to \cmd{multicitedelim}, but used by \cmd{textcite} and related commands (\secref{use:cit:cbx}). The default is a comma plus an interword space. The standard styles modify this provisional definition to ensure that the delimiter before the final citation is the localized term <and>, separated by interword spaces. See also \cmd{finalandcomma} and \cmd{finalandsemicolon} in \secref{use:fmt:lng}. +Similar to \cmd{multicitedelim}, but used by \cmd{textcite} and related commands (\secref{use:cit:cbx}). The default is a comma plus an interword space. The standard styles modify this provisional definition to ensure that the delimiter before the final citation is the localised term <and>, separated by interword spaces. See also \cmd{finalandcomma} and \cmd{finalandsemicolon} in \secref{use:fmt:lng}. -\csitem{nametitledelim} -The delimiter printed between the author\slash editor and the title by author-title and some verbose citation styles. The default definition is a comma plus an interword space. +\csitem{nametitledelim}\CSdelimMark +The delimiter printed between the author\slash editor and the title by author-title and some verbose citation styles. The default definition inside bibliographies is \cmd{labelnamepunct} and is a comma plus an interword space otherwise. -\csitem{nameyeardelim} -The delimiter printed between the author\slash editor and the year by author-year citation styles. The default definition is an interword space. +\csitem{nameyeardelim}\CSdelimMark +The delimiter printed between the author\slash editor and the year by author-year citation styles. The default definition is an interword space. -\csitem{nonameyeardelim} +\csitem{namelabeldelim}\CSdelimMark +The delimiter printed between the name\slash title and the label by alphabetic and numeric citation styles. The default definition is an interword space. + +\csitem{nonameyeardelim}\CSdelimMark The delimiter printed between the substitute for the labelname when it does not exist (usually the label or title in standard styles) and the year in author-year citation styles. This is only used when there is no labelname since when the labelname exists, \cmd{nameyeardelim} is used. The default definition is an interword space. \csitem{labelalphaothers} A string to be appended to the non"=numeric portion of the \bibfield{labelalpha} field (\ie the field holding the citation label used by alphabetic citation styles) if the number of authors\slash editors exceeds the \opt{maxalphanames} threshold or the \bibfield{author}\slash \bibfield{editor} list was truncated in the \file{bib} file with the keyword <\texttt{and others}>. This will typically be a single character such as a plus sign or an asterisk. The default is a plus sign. This command may also be redefined to an empty string to disable this feature. In any case, it must be redefined in the preamble. -\csitem{sortalphaothers}\BiberOnlyMark +\csitem{sortalphaothers} Similar to \cmd{labelalphaothers} but used in the sorting process. Setting it to a different value is advisable if the latter contains formatting commands, for example: \begin{ltxexample} @@ -4354,22 +4324,22 @@ The delimiter printed between the citation and the parenthetical \prm{postnote} This command, which takes one argument, is used to format the name part <namepart> of name list fields. The default datamodel defines the name parts <family>, <given>, <prefix> and <suffix> and therefore the following macros are automatically defined: \begin{ltxexample} -\makebibnamefamily -\makebibnamegiven -\makebibnameprefix -\makebibnamesuffix +\mkbibnamefamily +\mkbibnamegiven +\mkbibnameprefix +\mkbibnamesuffix \end{ltxexample} % -For backwards compatibility with the legacy \bibtex name parts, the following are also defined: +For backwards compatibility with the legacy \bibtex name parts, the following are also defined, will generate warnings and will set the correct macro: \begin{ltxexample} -\makebibnamelast -\makebibnamefirst -\makebibnameaffix +\mkbibnamelast +\mkbibnamefirst +\mkbibnameaffix \end{ltxexample} \csitem{relatedpunct} -The separator between the \bibfield{relatedtype} bibliography localization string and the data from the first related entry. Here is an example with \cmd{relatedpunct} set to a dash: +The separator between the \bibfield{relatedtype} bibliography localisation string and the data from the first related entry. Here is an example with \cmd{relatedpunct} set to a dash: \begin{ltxexample} A. Smith. Title. 2000, (Orig. pub. as<<->>Origtitle) @@ -4390,6 +4360,62 @@ Vol. E: Computer Modern Typefaces. 1986. \end{ltxsyntax} + +\subsubsection{Context-sensitive Delimiters} +\label{use:fmt:csd} +The delimiters described in \secref{use:fmt:fmt} are globally defined. That is, no matter where you use them, they print the same thing. This is not necessarily desirable for delimiters which you might want to print different things in different contexts. Here <context> means things like <inside a text citation> or <inside a bibliography item>. For this reason, \biblatex\ provides a more sophisticated delimiter specification and user interface alongside the standard one based on normal macros defined with \cmd{newcommand}. + +\begin{ltxsyntax} + +\cmditem{DeclareDelimFormat}[context, \dots]{name, \dots}{code} +\cmditem*{DeclareDelimFormat}*[context, \dots]{name, \dots}{code} + +Declares the delimiter macros in the comma"=separated list \prm{names} with the replacement test \prm{code}. If the optional comma"=separated list of \prm{contexts} is given, declare the \prm{names} only for those contexts. \prm{names} defined without any \prm{contexts} behave just like the global delimiter definitions which \cmd{newcommand} gives---just a plain macro with a replacement which can be used as \cmd{name}. However, you can also call delimiter macros defined in this way by using \cmd{printdelim}, which is context-aware. The starred version clears all \prm{context} specific declarations for all \prm{names} first. + +\cmditem{printdelim}[context]{name} + +Prints a delimiter with name \prm{name}, locally establishing a optional \prm{context} first. Without the optional \prm{context}, \cmd{printdelim} uses the currently active delimiter context. + +Delimiter contexts are simply a string, the value of the internal macro \cmd{blx@delimcontext} which can be set manually by the command \cmd{delimcontext} + +\cmditem{delimcontext}{context} + +Set the delimiter context to \prm{context}. This setting is not global so that delimiter contexts can be nested using the usual \latex group method. + +\end{ltxsyntax} +% +\biblatex\ has several default contexts which are established automatically in various places: + +\begin{description} +\item[none] At begin document +\item[bib] Inside a bibliography begun with \cmd{printbibliography} or inside a \cmd{usedriver} +\item[biblist] Inside a bibliography list begun with \cmd{printbiblist} +\item[<citecommand>] Inside a citation command \cmd{citecommand} defined with \cmd{DeclareCiteCommand} +\end{description} + +For example, the defaults for \cmd{nametitledelim} are: + +\begin{ltxexample}[style=latex]{} +\DeclareDelimFormat{nametitledelim}{\addcomma\space} +\DeclareDelimFormat[textcite]{nametitledelim}{\addspace} +\end{ltxexample} +% +This means that \cmd{nametitledelim} is defined globally as <\cmd{addcomma}\cmd{space}> as per the standard delimiter interface. However, in addition, the delimiter can be printed using \cmd{printdelim} which would print the same as \cmd{nametitledelim} apart from inside a \cmd{textcite}, in which it would print \cmd{addspace} which is more suitable for running text. If desired, a context can be forced with the optional argument to \cmd{printdelim}, so + +\begin{ltxexample}[style=latex]{} +\printdelim[textcite]{nametitledelim} +\end{ltxexample} +% +Would print \cmd{addspace} regardless of the surrounding context of the \cmd{printdelim}. Contexts are just arbitrary strings and so you can establish them at any time, using \cmd{delimcontext}. If \cmd{printdelim} finds no special value for the delimiter \prm{name} in the current context, it simply prints \cmd{name}. This means that style authors can use \cmd{printdelim} and users expecting to be able to use \cmd{renewcommand} to redefine delimiters can do so with one caveat---such a definition won't change any context-specific delimiters which are defined: + +\begin{ltxexample}[style=latex]{} +\DeclareDelimFormat{delima}{X} +\DeclareDelimFormat[textcite]{delima}{Y} +\renewcommand*{delima}{Z} +\end{ltxexample} +% +Here, \cmd{delima} always prints <Z>. \verb+\printdelim{delima}+ in any context other than <textcite> also prints \cmd{delima} and hence <Z> but in a <textcite> context prints <Y>. See the \file{04-delimiters.tex} example file that comes with \biblatex\ for more information. + \subsubsection{Language-specific Commands} \label{use:fmt:lng} @@ -4401,7 +4427,7 @@ The commands in this section are language specific. When redefining them, you ne The language specific dash to be used for ranges of numbers. -\csitem{bibrangessep}\BiberOnlyMark +\csitem{bibrangessep} The language specific separator to be used between multiple ranges. @@ -4496,7 +4522,7 @@ The vertical space between paragraphs within an entry in the bibliography. The d \cntitem{abbrvpenalty} -This counter, which is used by the localization modules, holds the penalty used in short or abbreviated localization strings. For example, a linebreak in expressions such as «et al.» or «ed. by» is unfortunate, but should still be possible to prevent overfull boxes. This counter is initialized to \cmd{hyphenpenalty} at load-time. The idea is making \tex treat the whole expression as if it were a single, hyphenatable word as far as line"=breaking is concerned. If you dislike such linebreaks, use a higher value. If you do not mind them at all, set this counter to zero. If you want to suppress them unconditionally, set it to <infinite> (10\,000 or higher).\footnote{The default values assigned to \cnt{abbrvpenalty}, \cnt{lownamepenalty}, and \cnt{highnamepenalty} are deliberately very low to prevent overfull boxes. This implies that you will hardly notice any effect on line-breaking if the text is set justified. If you set these counters to 10\,000 to suppress the respective breakpoints, you will notice their effect but you may also be confronted with overfull boxes. Keep in mind that line-breaking in the bibliography is often more difficult than in the body text and that you can not resort to rephrasing a sentence. In some cases it may be preferable to set the entire bibliography \cmd{raggedright} to prevent suboptimal linebreaks. In this case, even the fairly low default penalties will make a visible difference.} +This counter, which is used by the localisation modules, holds the penalty used in short or abbreviated localisation strings. For example, a linebreak in expressions such as «et al.» or «ed. by» is unfortunate, but should still be possible to prevent overfull boxes. This counter is initialized to \cmd{hyphenpenalty} at load-time. The idea is making \tex treat the whole expression as if it were a single, hyphenatable word as far as line"=breaking is concerned. If you dislike such linebreaks, use a higher value. If you do not mind them at all, set this counter to zero. If you want to suppress them unconditionally, set it to <infinite> (10\,000 or higher).\footnote{The default values assigned to \cnt{abbrvpenalty}, \cnt{lownamepenalty}, and \cnt{highnamepenalty} are deliberately very low to prevent overfull boxes. This implies that you will hardly notice any effect on line-breaking if the text is set justified. If you set these counters to 10\,000 to suppress the respective breakpoints, you will notice their effect but you may also be confronted with overfull boxes. Keep in mind that line-breaking in the bibliography is often more difficult than in the body text and that you can not resort to rephrasing a sentence. In some cases it may be preferable to set the entire bibliography \cmd{raggedright} to prevent suboptimal linebreaks. In this case, even the fairly low default penalties will make a visible difference.} \cntitem{highnamepenalty} @@ -4553,7 +4579,7 @@ Generic command which typesets an acronym using the small caps variant of the cu \cmditem{autocap}{character} -Automatically converts the \prm{character} to its uppercase form if \biblatex's punctuation tracker would capitalize a localization string at the current location. This command is robust. It is useful for conditional capitalization of certain strings in an entry. Note that the \prm{character} argument is a single character given in lowercase. For example: +Automatically converts the \prm{character} to its uppercase form if \biblatex's punctuation tracker would capitalize a localisation string at the current location. This command is robust. It is useful for conditional capitalization of certain strings in an entry. Note that the \prm{character} argument is a single character given in lowercase. For example: \begin{ltxexample} \autocap{s}pecial issue @@ -4578,12 +4604,12 @@ This will yield <Å’uvres> or <Å“uvres>. \subsection[Language notes]{Language-specific Notes} \label{use:loc} -The facilities discussed in this section are specific to certain localization modules. +The facilities discussed in this section are specific to certain localisation modules. \subsubsection{American} \label{use:loc:us} -The American localization module uses \cmd{uspunctuation} from \secref{aut:pct:cfg} to enable <American-style> punctuation. If this feature is enabled, all trailing commas and periods after \cmd{mkbibquote} will be moved inside the quotes. If you want to disable this feature, use \cmd{stdpunctuation} as follows: +The American localisation module uses \cmd{uspunctuation} from \secref{aut:pct:cfg} to enable <American-style> punctuation. If this feature is enabled, all trailing commas and periods after \cmd{mkbibquote} will be moved inside the quotes. If you want to disable this feature, use \cmd{stdpunctuation} as follows: \begin{ltxexample} \DefineBibliographyExtras{american}{% @@ -4591,24 +4617,24 @@ The American localization module uses \cmd{uspunctuation} from \secref{aut:pct:c } \end{ltxexample} % -By default, the <American punctuation> feature is enabled by the \texttt{american} localization module only. The above code is only required if you want American localization without American punctuation. Since standard punctuation is the package default, it would be redundant with any other language. +By default, the <American punctuation> feature is enabled by the \texttt{american} localisation module only. The above code is only required if you want American localisation without American punctuation. Since standard punctuation is the package default, it would be redundant with any other language. It is highly advisable to always specify \texttt{american}, \texttt{british}, \texttt{australian}, etc. rather than \texttt{english} when loading the \sty{babel}/\sty{polyglossia} packages to avoid any possible confusion. Older versions of the \sty{babel} package used to treat \opt{english} as an alias for \opt{british}; more recent ones treat it as an alias for \opt{american}. The \biblatex package essentially treats \texttt{english} as an alias for \opt{american}, except for the above feature which is only enabled if \texttt{american} is requested explicitly. \subsubsection{Spanish} \label{use:loc:esp} -Handling the word <and> is more difficult in Spanish than in the other languages supported by this package because it may be <y> or <e>, depending on the initial sound of the following word. Therefore, the Spanish localization module does not use the localization string <\texttt{and}> but a special internal <smart and> command. The behavior of this command is controlled by the \cnt{smartand} counter. +Handling the word <and> is more difficult in Spanish than in the other languages supported by this package because it may be <y> or <e>, depending on the initial sound of the following word. Therefore, the Spanish localisation module does not use the localisation string <\texttt{and}> but a special internal <smart and> command. The behavior of this command is controlled by the \cnt{smartand} counter. \begin{ltxsyntax} \cntitem{smartand} -This counter controls the behavior of the internal <smart and> command. When set to 1, it prints <y> or <e>, depending on the context. When set to 2, it always prints <y>. When set to 3, it always prints <e>. When set to 0, the <smart and> feature is disabled. This counter is initialized to 1 at load-time and may be changed in the preamble. Note that setting this counter to a positive value implies that the Spanish localization module ignores \cmd{finalnamedelim} and \cmd{finallistdelim}. +This counter controls the behavior of the internal <smart and> command. When set to 1, it prints <y> or <e>, depending on the context. When set to 2, it always prints <y>. When set to 3, it always prints <e>. When set to 0, the <smart and> feature is disabled. This counter is initialized to 1 at load-time and may be changed in the preamble. Note that setting this counter to a positive value implies that the Spanish localisation module ignores \cmd{finalnamedelim} and \cmd{finallistdelim}. \csitem{forceE} -Use this command in \file{bib} files if \biblatex gets the <and> before a certain name wrong. As its name suggests, it will enforce <e>. This command must be used in a special way to prevent confusing \bibtex. Here is an example: +Use this command in \file{bib} files if \biblatex gets the <and> before a certain name wrong. As its name suggests, it will enforce <e>. This command must be used in a special way to be correct \bibtex datafile format. Here is an example: \begin{lstlisting}[style=bibtex]{} author = {Edward Jones and Eoin Maguire}, @@ -4626,12 +4652,12 @@ Similar to \cmd{forceE} but enforces <y>. \subsubsection{Greek} \label{use:loc:grk} -The Greek localization module requires \utf support. It will not work with any other encoding. Generally speaking, the \biblatex package is compatible with the \sty{inputenc} package and with \xelatex. The \sty{ucs} package will not work. Since \sty{inputenc}'s standard \file{utf8} module is missing glyph mappings for Greek, this leaves Greek users with \xelatex. Note that you may need to load additional packages which set up Greek fonts. As a rule of thumb, a setup which works for regular Greek documents should also work with \biblatex. However, there is one fundamental limitation. As of this writing, \biblatex has no support for switching scripts. Greek titles in the bibliography should work fine, provided that you use \biber as a backend, but English and other titles in the bibliography may be rendered in Greek letters. If you need multi-script bibliographies, using \xelatex is the only sensible choice. +The Greek localisation module requires \utf support. It will not work with any other encoding. Generally speaking, the \biblatex package is compatible with the \sty{inputenc} package and with \xelatex. The \sty{ucs} package will not work. Since \sty{inputenc}'s standard \file{utf8} module is missing glyph mappings for Greek, this leaves Greek users with \xelatex. Note that you may need to load additional packages which set up Greek fonts. As a rule of thumb, a setup which works for regular Greek documents should also work with \biblatex. However, there is one fundamental limitation. As of this writing, \biblatex has no support for switching scripts. Greek titles in the bibliography should work fine, but English and other titles in the bibliography may be rendered in Greek letters. If you need multi-script bibliographies, using \xelatex is the only sensible choice. \subsubsection{Russian} \label{use:loc:rus} -Like the Greek localization module, the Russian module also requires \utf support. It will not work with any other encoding. +Like the Greek localisation module, the Russian module also requires \utf support. It will not work with any other encoding. \subsection{Usage Notes} \label{use:use} @@ -4656,8 +4682,6 @@ Using the \biblatex package is slightly different from using traditional \bibtex % With traditional \bibtex, the \cmd{bibliography} command serves two purposes. It marks the location of the bibliography and it also specifies the \file{bib} file(s). The file extension is omitted. With \biblatex, resources are specified in the preamble with \cmd{addbibresource} using the full name with \file{.bib} suffix. The bibliography is printed using the \cmd{printbibliography} command which may be used multiple times (see \secref{use:bib} for details). The document body may contain any number of citation commands (\secref{use:cit}). Processing this example file requires that a certain procedure be followed. Suppose our example file is called \path{example.tex} and our bibliographic data is in \path{bibfile.bib}. The procedure, then, is as follows: -\paragraph{\biber} - \begin{enumerate} \item Run \bin{latex} on \path{example.tex}. If the file contains any citations, \biblatex will request the respective data from \biber by writing commands to the auxiliary file \path{example.bcf}. @@ -4666,58 +4690,16 @@ With traditional \bibtex, the \cmd{bibliography} command serves two purposes. It \end{enumerate} -\paragraph{\bibtex} - -\begin{enumerate} - -\item Run \bin{latex} on \path{example.tex}. If the file contains any citations, \biblatex will request the respective data from \bibtex by writing commands to the auxiliary file \path{example.aux}. -\item Run \bin{bibtex} on \path{example.aux}. \bibtex will retrieve the data from \path{bibfile.bib} and write it to the auxiliary file \path{example.bbl} in a format which can be processed by \biblatex. -\item Run \bin{latex} on \path{example.tex}. \biblatex will read the data from \path{example.bbl} and print all citations as well as the bibliography. - -\end{enumerate} - -Whenever a reference to a work which has not been cited before is added, this procedure must be repeated. This is also the case if the last reference to a work which has been cited before is removed because some citation labels may change in this case. In contrast to traditional \bibtex, there is normally no need to run \bin{latex} twice after running the backend as far as the handling of bibliographic data is concerned.\footnote{That is, unless the \opt{defernumbers} package option is enabled. See \secref{aut:int}} - -\BibTeXOnlyMark Note that when using \bibtex as the backend this only applies to the most basic case. Using the \bibfield{xref} field or the \bibfield{entryset} field may require an additional \latex/\bibtex/\latex cycle. Some other facilities provided by \biblatex may also require an additional \bin{latex} run to get certain references and the page tracking right. In this case, the usual warning messages such as «There were undefined references» and «Label(s) may have changed. Rerun to get cross-references right» will be printed. - \subsubsection{Auxiliary Files} \label{use:use:aux} -\paragraph{\biber} - The \biblatex package uses one auxiliary \file{bcf} file only. Even if there are citation commands in a file included via \cmd{include}, you only need to run \biber on the main \file{bcf} file. All information \biber needs is in the \file{bcf} file, including information about all refsections if using multiple \env{refsection} environments (see \secref{use:use:mlt}). -\paragraph{\bibtex} - -By default, the \biblatex package uses the main \file{aux} file only. Even if there are citation commands in a file included via \cmd{include}, which has its own \file{aux} file, you only need to run \bibtex on the main \file{aux} file. If you are using \env{refsection} environments in a document (see \secref{use:use:mlt}) \biblatex will create one additional \file{aux} file for every \env{refsection} environment. In this case, you also need to run \bin{bibtex} on each additional \file{aux} file. The name of the additional \file{aux} files is the base name of the main input file with the string \file{-blx} and a running number appended at the end. The \biblatex package issues a warning listing the files which require an additional \bibtex run. With the basic example presented in \secref{use:use:int}, it would issue the following warning: - -\begin{lstlisting}[style=plain] -Package biblatex Warning: Please (re)run BibTeX on the file(s): -(biblatex) example.aux -(biblatex) and rerun LaTeX afterwards. -\end{lstlisting} -% -If the input file contained three \env{refsection} environments, the warning would read as follows: - -\begin{lstlisting}[style=plain] -Package biblatex Warning: Please (re)run BibTeX on the file(s): -(biblatex) example1-blx.aux -(biblatex) example2-blx.aux -(biblatex) example3-blx.aux -(biblatex) and rerun LaTeX afterwards. -\end{lstlisting} -% -Apart from these \file{aux} files, \biblatex uses an additional \file{bib} file with the same suffix to pass certain control parameters to \bibtex. In the example above, this file would be named \path{example-blx.bib}. In the event of a file name conflict, you can change the suffix by redefining the macro \cmd{blxauxsuffix} in the document preamble. When using \biber, \biblatex writes a control file named \path{example.bcf} and ignores \cmd{blxauxsuffix}. There is also no auxiliary \file{bib} file in this case. - -Note that \biblatex will not overwrite any files it did not create. All auxiliary files created automatically by this package start with a special signature line. Before overwriting a file (excluding the main \file{aux} file, which is managed by \latex), \biblatex inspects the first line of the file to make sure that there is no file name conflict. If the file in question is missing the signature line, \biblatex will immediately issue an error message and abort before opening the output stream. In this case you should delete any spurious files accidentally left in the working directory. If the error persists, there may be a file name conflict with a file found in one of the \tex installation trees. Since the installation trees usually do not contain any \file{aux} files and the string \file{-blx} is fairly exotic in the name of a \file{bib} file, this is rather unlikely but theoretically possible. If you find out that this is indeed the case, you should redefine \cmd{blxauxsuffix} permanently in the \biblatex configuration file, \path{biblatex.cfg.} - \subsubsection{Multiple Bibliographies} \label{use:use:mlt} In a collection of articles by different authors, such as a conference proceedings volume for example, it is very common to have one bibliography for each article rather than a global one for the entire book. In the example below, each article would be presented as a separate \cmd{chapter} with its own bibliography. -\BibTeXOnlyMark Note that with the \bibtex backend, \biblatex creates one additional \file{aux} file for every \env{refsection} environment. These files have to be processed by \bibtex as well, see \secref{use:use:aux} for details. - \begin{ltxexample} \documentclass{...} \usepackage{biblatex} @@ -4774,7 +4756,7 @@ Since giving one \cmd{printbibliography} command for each part of a subdivided b <<\bibbysection[heading=subbibliography]>> \end{ltxexample} % -When using a format with one cumulative bibliography subdivided by chapter (or any other document division) it may be more appropriate to use \env{refsegment} rather than \env{refsection} environments. The difference is that the \env{refsection} environment generates labels local to the environment while \env{refsegment} does not affect the generation of labels, hence they will be unique across the entire document. Note that when using \bibtex as the backend, \env{refsegment} environments do not require additional \file{aux} files. The next example could also be given in \secref{use:use:div} because, visually, it creates one global bibliography subdivided into multiple segments. +When using a format with one cumulative bibliography subdivided by chapter (or any other document division) it may be more appropriate to use \env{refsegment} rather than \env{refsection} environments. The difference is that the \env{refsection} environment generates labels local to the environment while \env{refsegment} does not affect the generation of labels, hence they will be unique across the entire document. The next example could also be given in \secref{use:use:div} because, visually, it creates one global bibliography subdivided into multiple segments. \begin{ltxexample} \documentclass{...} @@ -4926,7 +4908,7 @@ An entry set is a group of entries which are cited as a single reference and lis \paragraph{Static entry sets} -\BiberOnlyMark Static entry sets are defined in the \file{bib} file like any other entry. When using \biber as the backend, defining an entry set is as simple as adding an entry of type \bibtype{set}. The entry has an \bibfield{entryset} field defining the members of the set as a separated list of entry keys: +Static entry sets are defined in the \file{bib} file like any other entry. Defining an entry set is as simple as adding an entry of type \bibtype{set}. The entry has an \bibfield{entryset} field defining the members of the set as a separated list of entry keys: \begin{lstlisting}[style=bibtex]{} <<@Set>>{<<set1>>, @@ -4936,36 +4918,7 @@ An entry set is a group of entries which are cited as a single reference and lis % Entries may be part of a set in one document\slash refsection and stand-alone references in another one, depending on the presence of the \bibtype{set} entry. If the \bibtype{set} entry is cited, the set members are grouped automatically. If not, they will work like any regular entry. -When using \bibtex as the backend, which has no native support for entry sets, setting up entry sets involves more work. \bibtex requires \bibfield{entryset} and \bibfield{crossref} fields to be used in a special way. The members of the set are given in the \bibfield{entryset} field of the \bibtype{set} entry. The \bibtype{set} entry also requires a \bibfield{crossref} field which points to the first key in the \bibfield{entryset} field. In addition to that, all members of the set require \bibfield{entryset} fields which are reverse pointers to the entry key of the \bibtype{set} head entry: - -\begin{lstlisting}[style=bibtex]{} -@Set{set1, - <<entryset>> = {<<key1>>,key2,key3}, - <<crossref>> = {<<key1>>}, -} -@Article{key1, - <<entryset>> = {set1}, - author = {...}, - title = {...}, - ... -} -@InCollection{key2, - <<entryset>> = {set1}, - author = {...}, - title = {...}, - ... -} -@Article{key3, - <<entryset>> = {set1}, - author = {...}, - title = {...}, - ... -} -\end{lstlisting} -% -Note that citing any set member will automatically load the entire set with \bibtex. If you want to refer to an item as part of a set in one document\slash refsection and as a stand-alone reference in another one, you need two distinct entries with \bibtex. - -\paragraph[Dynamic entry sets]{Dynamic entry sets\BiberOnlyMark} +\paragraph[Dynamic entry sets]{Dynamic entry sets} Dynamic entry sets are set up and work much like static ones. The main difference is that they are defined in the document preamble or on the fly in the document body using the \cmd{defbibentryset} command from \secref{use:bib:set}: @@ -4973,9 +4926,9 @@ Dynamic entry sets are set up and work much like static ones. The main differenc \defbibentryset{set1}{key1,key2,key3} \end{lstlisting} % -Dynamic entry sets in the document body are local to the enclosing \env{refsection} environment, if any. Otherwise, they are assigned to reference section~0. Those defined in the preamble are assigned to reference section~0. Note that dynamic entry sets require \biber. They will not work with any other backend. +Dynamic entry sets in the document body are local to the enclosing \env{refsection} environment, if any. Otherwise, they are assigned to reference section~0. Those defined in the preamble are assigned to reference section~0. -\subsubsection[Data Containers]{Data Containers\BiberOnlyMark} +\subsubsection[Data Containers]{Data Containers} \label{use:use:xdat} The \bibtype{xdata} entry type serves as a data container holding one or more fields. These fields may be inherited by other entries using the \bibfield{xdata} field. \bibtype{xdata} entries may not be cited or added to the bibliography, they only serve as a data source for other entries. This data inheritance mechanism is useful for fixed field combinations such as \bibfield{publisher}\slash \bibfield{location} and for other frequently used data: @@ -5221,7 +5174,7 @@ The \prm{postnote} argument is handled as a field and the formatting of this fie \subsubsection{Name Parts and Name Spacing} \label{use:cav:nam} -The \biblatex package gives users and style authors very fine"=grained control of name spacing and the line"=breaking behavior of names, especially when they are using \biber as the backend. The commands discussed in the following are documented in \secref{use:fmt:fmt,aut:fmt:fmt}. This section is meant to give an overview of how they are put together. A note on terminology: a name \emph{part} is a basic part of the name, for example the given or the family name. Each part of a name may be a single name or it may be composed of multiple names. For example, the name part \enquote*{given name} may be composed of a given and a middle name. The latter are referred to as name \emph{elements} in this section. Let's consider a simple name first: \enquote{John Edward Doe}. This name is composed of the following parts: +The \biblatex package gives users and style authors very fine"=grained control of name spacing and the line"=breaking behavior of names. The commands discussed in the following are documented in \secref{use:fmt:fmt,aut:fmt:fmt}. This section is meant to give an overview of how they are put together. A note on terminology: a name \emph{part} is a basic part of the name, for example the given or the family name. Each part of a name may be a single name or it may be composed of multiple names. For example, the name part \enquote*{given name} may be composed of a given and a middle name. The latter are referred to as name \emph{elements} in this section. Let's consider a simple name first: \enquote{John Edward Doe}. This name is composed of the following parts: \begin{nameparts} Given & John Edward \\ @@ -5310,15 +5263,45 @@ All \latex environments enclosed in \cmd{begin} and \cmd{end} form a group. This % This will not from a group, but otherwise works as usual. As far as \biblatex is concerned, it does not matter which syntax you use. The alternative syntax is also supported by the \env{refsegment} environment. Note that the commands \cmd{newrefsection} and \cmd{newrefsegment} do not form a group. See \secref{use:bib:sec, use:bib:seg} for details. +\subsection{Using the fallback \bibtex\ backend} +\label{use:bibtex} + +To utilise all of the features described here, \biblatex must be used with the +\biber program as a backend. Indeed, the documentation in general assumes this. However, for a \emph{limited} subset of use cases it is possible to use the +long-established \bibtex program (either the 7-bit \texttt{bibtex} or +8-bit \texttt{bibtex8}) as the supporting backend. This works in much the +same way as for \biber with the only proviso being that \bibtex is much more +limited as a backend. + +Using \bibtex as the backend requires that the option \opt{backend=bibtex} +or \opt{backend=bibtex8} is given at load time. The \biblatex package will +then write appropriate data for use by \bibtex into the auxiliary file(s) +and a special data file (automatically included in those to be read by +\bibtex). The \bibtex(8) program should then be run on each auxiliary file: +\biblatex will list all of the required files in the log. + +Key limitations of the \bibtex backend are: +\begin{itemize} +\item Sorting is global and is limited to Ascii ordering +\item No re-encoding is possible and thus database entries must be in + LICR form to work reliably +\item The data model is fixed +\item Cross-referencing is more limited and entry sets must be written + into the \path{.bib} file +\item Fixed memory capacity (using the \verb|--wolfgang| option with + \verb|bibtex8| is strongly recommended to minimize the likelihood of + an issue here) +\end{itemize} + \section{Author Guide} \label{aut} -This part of the manual documents the author interface of the \biblatex package. The author guide covers everything you need to know in order to write new citation and bibliography styles or localization modules. You should read the user guide first before continuing with this part of the manual. +This part of the manual documents the author interface of the \biblatex package. The author guide covers everything you need to know in order to write new citation and bibliography styles or localisation modules. You should read the user guide first before continuing with this part of the manual. \subsection{Overview} \label{aut:int} -Before we get to the commands and facilities provided by \biblatex, we will have a look at some of its fundamental concepts. The \biblatex package uses auxiliary files in a special way. Most notably, the \file{bbl} file is used differently and when using \bibtex as the backend, there is only one \file{bst} file which implements a structured data interface rather than exporting printable data. With \latex's standard bibliographic facilities, a document includes any number of citation commands in the document body plus \cmd{bibliographystyle} and \cmd{bibliography}, usually towards the end of the document. The location of the former is arbitrary, the latter marks the spot where the list of references is to be printed: +Before we get to the commands and facilities provided by \biblatex, we will have a look at some of its fundamental concepts. The \biblatex package uses auxiliary files in a special way. Most notably, the \file{bbl} file is used differently and there is no concept of a style-dependent \file{bst} file. With \latex's standard bibliographic facilities, a document includes any number of citation commands in the document body plus \cmd{bibliographystyle} and \cmd{bibliography}, usually towards the end of the document. The location of the former is arbitrary, the latter marks the spot where the list of references is to be printed: \begin{ltxexample} \documentclass{...} @@ -5409,9 +5392,9 @@ In order to streamline the whole procedure, \biblatex essentially employs the \f \begin{enumerate} -\item Run \bin{latex}: The first step is similar to the traditional procedure described above: \cmd{bibstyle} and \cmd{bibdata} commands are written to the \file{aux} file (\bibtex backend) or \file{bcf} file (\biber backend), along with \cmd{citation} commands for all citations. We then wait for the backend to supply the required data. With \bibtex as a backend, since \biblatex uses a special \file{bst} file which implements its data interface on the \bibtex end, the \cmd{bibstyle} command is always |\bibstyle{biblatex}|. +\item Run \bin{latex}: The first step is similar to the traditional procedure described above: \cmd{bibstyle} and \cmd{bibdata} commands are written to th \file{bcf} file, along with \cmd{citation} commands for all citations. We then wait for the backend to supply the required data. -\item Run \bin{biber} or \bin{bibtex}: The backend supplies those entries from the \file{bib} file which were requested by the \cmd{citation} commands in the auxiliary file. However, it does not write a printable bibliography to the \file{bbl} file, but rather a structured representation of the bibliographic data. Just like an \file{aux} file, this \file{bbl} file does not print anything when read in. It merely puts data in memory. +\item Run \bin{biber}: The backend supplies those entries from the \file{bib} file which were requested by the \cmd{citation} commands in the auxiliary file. However, it does not write a printable bibliography to the \file{bbl} file, but rather a structured representation of the bibliographic data. Just like an \file{aux} file, this \file{bbl} file does not print anything when read in. It merely puts data in memory. \item Run \bin{latex}: Starting with the second run, the \file{bbl} file is processed right at the beginning of the document body, just like an \file{aux} file. From this point on, all bibliographic data is available in memory so that all citations can be printed right away.\footnote{If the \opt{defernumbers} package option is enabled \biblatex uses an algorithm similar to the traditional procedure to generate numeric labels. In this case, the numbers are assigned as the bibliography is printed and then cycled through the backend auxiliary file. It will take an additional \latex run for them to be picked up in citations.} The citation commands have access to the complete bibliographic data, not only to a predefined label. The bibliography is generated from memory using the same data and may be filtered or split as required. @@ -5429,7 +5412,7 @@ Let's consider the sample entry given above once more: } \end{lstlisting} % -With \biblatex and the \biber backend, this entry is essentially exported in the following format: +This entry is essentially exported in the following format: \begin{ltxexample} \entry{companion}{book}{} @@ -5509,7 +5492,7 @@ If a bibliography driver covers more than one entry type, this command may be us \cmditem{DeclareBibliographyOption}[datatype]{key}[value]{code} This command defines additional preamble options in \keyval format. The \prm{key} is the option key. The \prm{code} is arbitrary \tex code to be executed whenever the option is used. The value passed to the option is passed on to the \prm{code} as |#1|. The optional \prm{value} is a default value to be used if the bare key is given without any value. This is useful for boolean switches. -The \prm{datatype} is a the datatype for the option. This optional parameter can only be used when using \biber which uses the value internally for various checks. If omitted, it defaults to <boolean>. For example, with a definition like the following: +The \prm{datatype} is a the datatype for the option. If omitted, it defaults to <boolean>. For example, with a definition like the following: \begin{ltxexample} \DeclareBibliographyOption[boolean]{somekey}[true]{...} @@ -5563,7 +5546,7 @@ This definition employs a \env{list} environment with hanging indentation, using % Some bibliography styles print labels in the bibliography. For example, a bibliography style designed for a numeric citation scheme will print the number of every entry such that the bibliography looks like a numbered list. In the first example, the first argument to \cmd{list} was empty. In this example, we need it to insert the number, which is provided by \biblatex in the \bibfield{labelnumber} field. We also employ several length registers and other facilities provided by \biblatex, see \secref{aut:fmt:ich, aut:fmt:ilc} for details. The \texttt{numeric} bibliography style uses the definition given above. The \texttt{alphabetic} style is similar, except that \textsf{\texttt{labelnumber}} is replaced by \texttt{labelalpha} and \texttt{labelnumberwidth} by \texttt{labelalphawidth}. -Bibliography lists are handled in a similar way. \cmd{printbiblist} uses the environment named after the bibliography list by default (when using \bibtex, \cmd{printshorthands} always uses the \texttt{shorthand} environment). A typical example is given below. See \secref{aut:fmt:ich, aut:fmt:ilc} for details on the length registers and facilities used in this example. +Bibliography lists are handled in a similar way. \cmd{printbiblist} uses the environment named after the bibliography list by default. A typical example is given below. See \secref{aut:fmt:ich, aut:fmt:ilc} for details on the length registers and facilities used in this example. \begin{ltxexample} \defbibenvironment{shorthand} @@ -5632,20 +5615,16 @@ List formats are slightly more complex. After splitting up the list into individ {}} \end{ltxexample} % -Formatting directives for names are similar to those for literal lists, but depend on the datamodel constant <nameparts> which has the default definition: +Formatting directives for names are similar to those for literal lists. + +Names depend on the datamodel constant <nameparts> which has the default definition: \begin{ltxexample} \DeclareDatamodelConstant[type=list]{nameparts} {prefix,family,suffix,given} \end{ltxexample} % -All name formats should use the macro: - -\begin{ltxexample} -\nameparts{#1}% -\end{ltxexample} -% -which populates two macros for each name part defined in the datamodel: +Inside name formats, this makes available two macros for each name part defined in the datamodel: \begin{ltxexample} \namepart<namepart> @@ -5656,7 +5635,6 @@ The name formatting directive is executed once for each name in the name list. H \begin{ltxexample} \DeclareNameFormat{author}{% - \nameparts{#1}% \ifthenelse{\value{listcount}=1} {\namepartfamily% \ifblank{\namepartgiven}{}{\addcomma\space\namepartgiven}} @@ -5687,7 +5665,7 @@ The entry key of an item in the \file{bib} file. This is the string used by \bib When citing a subentry of an entry set, \biblatex provides the data of the parent \bibtype{set} entry to citation commands. This implies that the \bibfield{entrykey} field holds the entry key of the parent. The entry key of the child entry being cited is provided in the \bibfield{childentrykey} field. This field is only available when citing a subentry of an entry set. -\fielditem{datelabelsource}{literal\BiberOnlyMark} +\fielditem{datelabelsource}{literal} Holds the prefix coming before <date> of the date field name chosen by \cmd{DeclareLabeldate}. For example, if the label date field is \bibfield{eventdate}, then \bibfield{datelabelsource} will be <event>. In case \cmd{DeclareLabeldate} selects the \bibfield{date} field, then \bibfield{datelabelsource} will be defined but will be an empty string as the prefix coming before <date> in the date label name is empty. This is so that the contents of \bibfield{datelabelsource} can be used in constructing references to the field which \cmd{DeclareLabeldate} chooses. Since \cmd{DeclareLabeldate} can also select literal strings for fallbacks, if \bibfield{datelabelsource} is undefined, then either the \opt{labeldate} package option is set to false or \cmd{DeclareLabeldate} chose a literal string instead of a date field. Bear in mind that \cmd{DeclareLabeldate} can also be used to select non-date fields as a fallback and so \bibfield{datelabelsource} might contain a field name. So, in summary, the rules are @@ -5721,7 +5699,7 @@ When citing a subentry of an entry set, \biblatex provides the data of the paren This field holds an integer indicating the position of a set member in the entry set (starting at \texttt{1}). This field is only available in the subentries of an entry set. -\fielditem{hash}{string\BiberOnlyMark} +\fielditem{hash}{string} This field is special in that it is only available locally in name formatting directives. It holds a hash string which uniquely identifies individual names in a name list. This information is available for all names in all name lists. See also \bibfield{namehash} and \bibfield{fullhash}. @@ -5740,13 +5718,12 @@ If the \opt{backref} package option is enabled, this list holds the page numbers \fielditem{sortinit}{literal} This field holds the initial character of the information used during sorting. -With \bibtex, this field is also used internally instead of \bibfield{sortinithash}. -\fielditem{sortinithash}{string\BiberOnlyMark} +\fielditem{sortinithash}{string} -With \biber, this field holds a hash of the (locale-specific) Unicode Collation Algorithm primary weight of the first extended grapheme cluster (essentially the first character) of the string used during sorting. This is useful when subdividing the bibliography alphabetically and is used internally by \cmd{bibinitsep} (see \secref{use:fmt:len}). +This field holds a hash of the (locale-specific) Unicode Collation Algorithm primary weight of the first extended grapheme cluster (essentially the first character) of the string used during sorting. This is useful when subdividing the bibliography alphabetically and is used internally by \cmd{bibinitsep} (see \secref{use:fmt:len}). -\fielditem{clonesourcekey}{string\BiberOnlyMark} +\fielditem{clonesourcekey}{string} This field holds the entry key of the entry from which an entry was cloned. Clones are created for entries which are mentioned in \bibfield{related} fields as part of related entry processing, for example. @@ -5760,7 +5737,7 @@ entries which are mentioned in \bibfield{related} fields as part of related entr \fielditem{labelalpha}{literal} -When using \bibtex as the backend, a label similar to the labels generated by the \path{alpha.bst} style of traditional \bibtex. This default label consists of initials drawn from the \bibfield{labelname} list plus the last two digits of the publication year. The \bibfield{label} field may be used to override its non"=numeric portion. If the \bibfield{label} field is defined, \biblatex will use its value and append the last two digits of the publication year when generating \bibfield{labelalpha}. The \bibfield{shorthand} field may be used to override the entire label. If defined, \bibfield{labelalpha} is the \bibfield{shorthand} rather than an automatically generated label. \BiberOnlyMark With \biber, users can specify a template used to construct the alphabetic label (see \secref{aut:ctm:lab}) and the default template mirrors the format mentioned for bibtex above. A complete <alphabetic> label consists of the fields \bibfield{labelalpha} plus \bibfield{extraalpha}. Note that the \bibfield{labelalpha} and \bibfield{extraalpha} fields need to be requested with the package option \opt{labelalpha} (\secref{use:opt:pre:int}). See also \bibfield{extraalpha} as well as \cmd{labelalphaothers} in \secref{use:fmt:fmt}. +A label similar to the labels generated by the \path{alpha.bst} style of traditional \bibtex. This default label consists of initials drawn from the \bibfield{labelname} list plus the last two digits of the publication year. The \bibfield{label} field may be used to override its non"=numeric portion. If the \bibfield{label} field is defined, \biblatex will use its value and append the last two digits of the publication year when generating \bibfield{labelalpha}. The \bibfield{shorthand} field may be used to override the entire label. If defined, \bibfield{labelalpha} is the \bibfield{shorthand} rather than an automatically generated label. Users can specify a template used to construct the alphabetic label (see \secref{aut:ctm:lab}) and the default template mirrors the format mentioned for bibtex above. A complete <alphabetic> label consists of the fields \bibfield{labelalpha} plus \bibfield{extraalpha}. Note that the \bibfield{labelalpha} and \bibfield{extraalpha} fields need to be requested with the package option \opt{labelalpha} (\secref{use:opt:pre:int}). See also \bibfield{extraalpha} as well as \cmd{labelalphaothers} in \secref{use:fmt:fmt}. \fielditem{extraalpha}{integer} @@ -5769,19 +5746,19 @@ The <alphabetic> citation scheme usually requires a letter to be appended to the \listitem{labelname}{name} The name to be printed in citations. This list is a copy of either the \bibfield{shortauthor}, the \bibfield{author}, the \bibfield{shorteditor}, the \bibfield{editor}, or the \bibfield{translator} list, which are normally checked for in this order. If no authors and editors are available, this list is undefined. Note that this list is also responsive to the \opt{use$<$name$>$}, options, see \secref{use:opt:bib}. Citation styles should use this list when printing the name in a citation. This list is provided for convenience only and does not carry any additional meaning. -\BiberOnlyMark With \biber, this field may be customized. See \secref{aut:ctm:fld} for details. +This field may be customized. See \secref{aut:ctm:fld} for details. \fielditem{labelnumber}{literal} The number of the bibliography entry, as required by numeric citation schemes. If the \bibfield{shorthand} field is defined, \biblatex does not assign a number to the respective entry. In this case \bibfield{labelnumber} is the shorthand rather than a number. Numeric styles must use the value of this field instead of a counter. Note that this field needs to be requested with the package option \opt{labelnumber}, see \secref{use:opt:pre:int} for details. Also see the package option \opt{defernumbers} in \secref{use:opt:pre:gen}. -\fielditem{prefixnumber}{literal} +\fielditem{labelprefix}{literal} -If the \opt{prefixnumbers} option of \cmd{printbibliography} has been set in order to prefix all entries in a subbibliography with a fixed string, this string is available in the \bibfield{prefixnumber} field of all affected entries. If no prefix has been set, the \bibfield{prefixnumber} field of the respective entry is undefined. See the \opt{prefixnumbers} option of \cmd{printbibliography} in \secref{use:bib:bib} for details. If the \bibfield{shorthand} field is defined, \biblatex does not assign the prefix to the \bibfield{prefixnumber} field of the respective entry. In this case, the \bibfield{prefixnumber} field is undefined. +If the \opt{labelprefix} option of \cmd{newrefcontext} has been set in order to prefix all entries in a subbibliography with a fixed string, this string is available in the \bibfield{labelprefix} field of all affected entries. If no prefix has been set, the \bibfield{labelprefix} field of the respective entry is undefined. See the \opt{labelprefix} option of \cmd{newrefcontext} in \secref{use:bib:context} for details. If the \bibfield{shorthand} field is defined, \biblatex does not assign the prefix to the \bibfield{labelprefix} field of the respective entry. In this case, the \bibfield{labelprefix} field is undefined. \fielditem{labeltitle}{literal} -The printable title of a work. In some circumstances, a style might need to choose a title from a list of a possible title fields. For example, citation styles printing short titles may want to print the \bibfield{shorttitle} field if it exists but otherwise print the \bibfield{title} field. \BiberOnlyMark The list of fields to be considered when constructing \bibfield{labeltitle} may be customized. See \secref{aut:ctm:fld} for details. Note that the \bibfield{extratitle} field needs to be requested with the package option \opt{labeltitle}, see \secref{use:opt:pre:int} for details. See also \bibfield{extratitle}. Note also that the \bibfield{extratitleyear} field needs to be requested with the package option \opt{labeltitleyear}. See also \bibfield{extratitleyear}. +The printable title of a work. In some circumstances, a style might need to choose a title from a list of a possible title fields. For example, citation styles printing short titles may want to print the \bibfield{shorttitle} field if it exists but otherwise print the \bibfield{title} field. The list of fields to be considered when constructing \bibfield{labeltitle} may be customized. See \secref{aut:ctm:fld} for details. Note that the \bibfield{extratitle} field needs to be requested with the package option \opt{labeltitle}, see \secref{use:opt:pre:int} for details. See also \bibfield{extratitle}. Note also that the \bibfield{extratitleyear} field needs to be requested with the package option \opt{labeltitleyear}. See also \bibfield{extratitleyear}. \fielditem{extratitle}{integer} @@ -5794,17 +5771,17 @@ It is sometimes useful, for example in author"=title citation schemes, to be abl \fielditem{labelyear}{literal} The publication year, as specified in the \bibfield{date} or the \bibfield{year} field, for use in author-year labels. A complete author-year label consists of the fields \bibfield{labelyear} plus \bibfield{extrayear}. Note that the \bibfield{labelyear} and \bibfield{extrayear} fields need to be requested with the package option \opt{labeldate}, see \secref{use:opt:pre:int} for details. See also \bibfield{extrayear}. -\BiberOnlyMark With \biber, the source date field for this may be customized. See \secref{aut:ctm:fld} for details. +The source date field for this may be customized. See \secref{aut:ctm:fld} for details. \fielditem{labelmonth}{datepart} The publication month, as specified in the \bibfield{date} or the \bibfield{month} field, for use in author-year labels. Note that the \bibfield{labelmonth} field needs to be requested with the package option \opt{labeldate}, see \secref{use:opt:pre:int} for details. -\BiberOnlyMark With \biber, the source date field for this may be customized. See \secref{aut:ctm:fld} for details. +The source date field for this may be customized. See \secref{aut:ctm:fld} for details. \fielditem{labelday}{datepart} The publication day, as specified in the \bibfield{date}, for use in author-year labels. Note that the \bibfield{labelday} field needs to be requested with the package option \opt{labeldate}, see \secref{use:opt:pre:int} for details. -\BiberOnlyMark With \biber, the source date field for this may be customized. See \secref{aut:ctm:fld} for details. +The source date field for this may be customized. See \secref{aut:ctm:fld} for details. \fielditem{extrayear}{integer} @@ -5815,6 +5792,8 @@ The author"=year citation scheme usually requires a letter to be appended to the \paragraph{Date Component Fields} \label{aut:bbx:fld:dat} +Note that it is possible to define new date fields in the datamodel which behave exactly like the default data model date fields described in this section. + See \tabref{aut:bbx:fld:tab1} for an overview of how the date fields in \file{bib} files are related to the date fields provided by the style interface. When testing for a field like \bibfield{origdate} in a style, use code like: \begin{ltxcode} @@ -6094,6 +6073,17 @@ This section introduces the main data interface of the \biblatex package. These \begin{ltxsyntax} +\cmditem{DeprecateField}{field}{message} +\cmditem{DeprecateList}{list}{message} +\cmditem{DeprecateName}{name}{message} + +When an attempt is made to print \prm{field}, \prm{list}, \prm{name}, a +deprecation warning issued with the additional \prm{message}. This aids +style authors who are changing field names in their style. Note that the +deprecated item must no longer be defined in the datamodel for this work; +\prm{field}, \prm{list} or \prm{name} cannot be listed anywhere as an +argument to \cmd{DeclareDatamodelFields}. + \cmditem{printfield}[format]{field} This command prints a \prm{field} using the formatting directive \prm{format}, as defined with \cmd{DeclareFieldFormat}. If a type"=specific \prm{format} has been declared, the type"=specific formatting directive takes precedence over the generic one. If the \prm{field} is undefined, nothing is printed. If the \prm{format} is omitted, \cmd{printfield} tries using the name of the field as a format name. For example, if the \bibfield{title} field is to be printed and the \prm{format} is not specified, it will try to use the field format \texttt{title}.\footnote{In other words, \texttt{\textbackslash printfield\{title\}} is equivalent to \texttt{\textbackslash printfield[title]\{title\}}.} In this case, any type"=specific formatting directive will also take precedence over the generic one. If all of these formats are undefined, it falls back to \texttt{default} as a last resort. Note that \cmd{printfield} provides the name of the field currently being processed in \cmd{currentfield} for use in field formatting directives. @@ -6208,7 +6198,7 @@ contains the value of the name, \cmd{NewCount} contains the number of individual \subsubsection{Formatting Directives} \label{aut:bib:fmt} -This section introduces the commands used to define the formatting directives required by the data commands from \secref{aut:bib:dat}. Note that all standard formats are defined in \path{biblatex$_$.def}. +This section introduces the commands used to define the formatting directives required by the data commands from \secref{aut:bib:dat}. Note that all standard formats are defined in \path{biblatex_.def}. \begin{ltxsyntax} @@ -6225,7 +6215,7 @@ Defines the literal list format \prm{format}. This formatting directive is arbit \cmditem{DeclareNameFormat}[entrytype, \dots]{format}{code} \cmditem*{DeclareNameFormat}*{format}{code} -Defines the name list format \prm{format}. This formatting directive is arbitrary \prm{code} to be executed for every name in a list processed by \cmd{printnames}. If an \prm{entrytype} is specified, the format is specific to that type. The \prm{entrytype} argument may be a comma"=separated list of values. The individual parts of a name will be passed to the \prm{code} as a comma"=separated list which should be processed by \cmd{nameparts} (see example above). The default data mode defines four name part which correspond to the standard \bibtex name parts arguments: +Defines the name list format \prm{format}. This formatting directive is arbitrary \prm{code} to be executed for every name in a list processed by \cmd{printnames}. If an \prm{entrytype} is specified, the format is specific to that type. The \prm{entrytype} argument may be a comma"=separated list of values. The individual parts of a name will be available in automatically created macros (see below). The default data mode defines four name part which correspond to the standard \bibtex name parts arguments: \begin{argumentlist}{00} \item[family] The family name(s), know as <last> in \bibtex. If a name consists of a single part only (for example, <Aristotle>), this part will be treated as the family name. @@ -6234,13 +6224,7 @@ Defines the name list format \prm{format}. This formatting directive is arbitrar \item[suffix] Any name suffices, for example Jr, Sr. Note that name suffices are referred to as the <Jr> part of the name in the \bibtex file format documentation. \end{argumentlist} % -Each format should use the macro: - -\begin{ltxexample} -\nameparts{#1}% -\end{ltxexample} -% -which populates two macros for each name part in the datamodel for the name. So, for example, in the default data model, name formats will have defined the following macros: +The value of the datamodel <nameparts> constant (see \secref{aut:bbx:drv}) creates two macros for each name part in the datamodel for the name. So, for example, in the default data model, name formats will have defined the following macros: \begin{ltxexample} \namepartprefix @@ -6253,7 +6237,7 @@ which populates two macros for each name part in the datamodel for the name. So, \namepartgiveni \end{ltxexample} % -If a certain part of a name is not available, the corresponding macro will be empty, hence you may use \cmd{ifempty} (see \secref{aut:aux:tst}) tests to check for the individual parts of a name. The name of the name list currently being processed is available to the \prm{code} as \cmd{currentname}. Note that the formatting directive also handles the punctuation to be inserted between separate names and between the individual parts of a name. You need to check whether you are in the middle of or at the end of the list, \ie whether \cnt{listcount} is smaller than or equal to \cnt{liststop}. See also \secref{use:cav:nam}. The starred variant of this command is similar to the regular version, except that all type-specific formats are cleared. +If a certain part of a name is not available, the corresponding macro will be empty, hence you may use, for example, the \sty{etoolbox} tests like \cmd{ifdefvoid} to check for the individual parts of a name. The name of the name list currently being processed is available to the \prm{code} as \cmd{currentname}. Note that the formatting directive also handles the punctuation to be inserted between separate names and between the individual parts of a name. You need to check whether you are in the middle of or at the end of the list, \ie whether \cnt{listcount} is smaller than or equal to \cnt{liststop}. See also \secref{use:cav:nam}. The starred variant of this command is similar to the regular version, except that all type-specific formats are cleared. \cmditem{DeclareIndexFieldFormat}[entrytype, \dots]{format}{code} \cmditem*{DeclareIndexFieldFormat}*{format}{code} @@ -6304,20 +6288,76 @@ Declares \prm{alias} to be an alias for the name list format \prm{format}. If an The related entries feature comprises the following components: \begin{itemize} \item Special fields in an entry to set up and describe relationships -\item Optionally, localization strings to prefix the related data +\item Optionally, localisation strings to prefix the related data \item Macros to extract and print the related data -\item Formats to format the localization string and related data +\item Formats to format the localisation string and related data \end{itemize} % The special fields are \bibfield{related}, \bibfield{relatedtype}, \bibfield{relatedstring} and \bibfield{relatedoptions}: \begin{keymarglist} \item[related] A separated list of keys of entries which are related to this entry in some way. Note the the order of the keys is important. The data from multiple related entries is printed in the order of the keys listed in this field. -\item[relatedtype] The type of relationship. This serves three purposes. If the value of this field resolves to a localization string identifier, then the resulting localized string is printed before the data from the related entries. Secondly, if there is a macro called \texttt{related:\prm{relatedtype}}, this is used to format the data from the related entries. If no such macro exists, then the macro \texttt{related:default} is used. Lastly, if there is a format named \texttt{related:\prm{relatedtype}}, then it is used to format both the localized string and related entry data. If there is no related type specific format, the \texttt{related} format is used. -\item[relatedstring] If an entry contains this field, then if value of the field resolves to a localization string identifier, the localization key value specified is printed before data from the related entries. If the field does not specify a localization key, its value is printed literally. If both \bibfield{relatedtype} and \bibfield{relatedstring} are present in an entry, \bibfield{relatedstring} is used for the pre-data string (but \bibfield{relatedtype} is still used to determine the macro and format to use when printing the data). +\item[relatedtype] The type of relationship. This serves three purposes. If the value of this field resolves to a localisation string identifier, then the resulting localised string is printed before the data from the related entries. Secondly, if there is a macro called \texttt{related:\prm{relatedtype}}, this is used to format the data from the related entries. If no such macro exists, then the macro \texttt{related:default} is used. Lastly, if there is a format named \texttt{related:\prm{relatedtype}}, then it is used to format both the localised string and related entry data. If there is no related type specific format, the \texttt{related} format is used. +\item[relatedstring] If an entry contains this field, then if value of the field resolves to a localisation string identifier, the localisation key value specified is printed before data from the related entries. If the field does not specify a localisation key, its value is printed literally. If both \bibfield{relatedtype} and \bibfield{relatedstring} are present in an entry, \bibfield{relatedstring} is used for the pre-data string (but \bibfield{relatedtype} is still used to determine the macro and format to use when printing the data). \item[relatedoptions] A list of per"=entry options to set on the related entry (actually on the clone of the related entry which is used as a data source---the actual related entry is not modified because it might be cited directly itself). \end{keymarglist} -The related entry feature is enabled by default by the package option \opt{related} from \secref{use:opt:pre:gen}. The related information entry data from the related entries is included via a \cmd{usebibmacro\{related\}} call. Standard styles call this macro towards the end of each driver. Style authors should ensure the existence of (or take note of existing) localization strings which are useful as values for the \bibfield{relatedtype} field, such as \texttt{translationof} or perhaps \texttt{translatedas}. A plural variant can be identified with the localization key \prm{relatedtype}\texttt{s}. This key's corresponding string is printed whenever more than one entry is specified in \bibfield{related}. Bibliography macros and formatting directives for printing entries related by \prm{relatedtype} should be defined using the name \texttt{related:\prm{relatedtype}}. The file \path{biblatex$_$.def} contains macros and formats for some common relation types which can be used as templates. In particular, the \cmd{entrydata*} command is essential in such macros in order to make the data of the related entries available. Examples of entries using this feature can be found in the \biblatex distribution examples file \path{biblatex-examples.bib}. There are some specific formatting macros for this feature which control delimiters and separators in related entry information, see \secref{aut:fmt:fmt}. +The related entry feature is enabled by default by the package option \opt{related} from \secref{use:opt:pre:gen}. The related information entry data from the related entries is included via a \cmd{usebibmacro\{related\}} call. Standard styles call this macro towards the end of each driver. Style authors should ensure the existence of (or take note of existing) localisation strings which are useful as values for the \bibfield{relatedtype} field, such as \texttt{translationof} or perhaps \texttt{translatedas}. A plural variant can be identified with the localisation key \prm{relatedtype}\texttt{s}. This key's corresponding string is printed whenever more than one entry is specified in \bibfield{related}. Bibliography macros and formatting directives for printing entries related by \prm{relatedtype} should be defined using the name \texttt{related:\prm{relatedtype}}. The file \path{biblatex$_$.def} contains macros and formats for some common relation types which can be used as templates. In particular, the \cmd{entrydata*} command is essential in such macros in order to make the data of the related entries available. Examples of entries using this feature can be found in the \biblatex distribution examples file \path{biblatex-examples.bib}. There are some specific formatting macros for this feature which control delimiters and separators in related entry information, see \secref{aut:fmt:fmt}. + +\subsubsection{Datasource Sets} +\label{aut:ctm:dsets} + +It is useful to be able to define named sets of datasource field names for use in loops etc. In addition, \biber can use such sets in order to apply options and perform operations on particular sets of datasource fields. The following macros allow the user to define arbitrary sets of datasource fields, exposed to \biblatex as \sty{etoolbox} lists and to \biber in the \file{.bcf}. + + +\begin{ltxsyntax} + +\cmditem{DeclareDatafieldSet}{name}{specification} + +Declare a set of datasource fields with name \prm{name}. + +\begin{optionlist*} + +\valitem{name}{set name} + +The name of the set. + +\end{optionlist*} + +The \prm{specification} is one or more \cmd{member} items: + +\cmditem{member} + +\begin{optionlist*} + +\valitem{fieldtype}{fieldtype} +\valitem{datatype}{datatype} +\valitem{field}{fieldname} + +\end{optionlist*} + +A \cmd{member} specification appends fields to the set. Fields can be specified by datamodel \prm{fieldtype} and/or \prm{datatype} (see \secref{aut:ctm:dm}). Alternatively, fields can be explicitly added by name using the \prm{field} option. Once defined, the set is available as an \sty{etoolbox} list called \cmd{datafieldset<setname>} and is also passed via the \file{.bcf} to \biber. + +For example, here are the default sets defined by \biblatex for name fields and title fields: + +\end{ltxsyntax} + +\begin{ltxexample}[style=latex]{} +\DeclareDatafieldSet{setnames}{ + \member[datatype=name, fieldtype=list] +} + +\DeclareDatafieldSet{settitles}{ + \member[field=title] + \member[field=booktitle] + \member[field=eventtitle] + \member[field=issuetitle] + \member[field=journaltitle] + \member[field=maintitle] + \member[field=origtitle] +} +\end{ltxexample} +% +This defines the macros \cmd{datafieldsetsetnames} and \cmd{datafieldsetsettitles} as \sty{etoolbox} lists containing the names of the member datasource fields specified. \subsubsection{Dynamic Modification of Data} \label{aut:ctm:map} @@ -6334,7 +6374,7 @@ in a defined order. See the \biblatex\ manual regarding these macros:\\[2ex] \begin{ltxsyntax} -\cmditem{DeclareSourcemap}{specification}\BiberOnlyMark +\cmditem{DeclareSourcemap}{specification} Defines source data modification (mapping) rules which can be used to perform any combination of the following tasks: @@ -6379,11 +6419,22 @@ A container for an ordered set of map \cmd{step}s, optionally restricted to part As the same option on the parent \cmd{maps} element. This option allows an override on a per-map group basis. If this option is not specified, the default is the parent \cmd{maps} element option value. The short form \opt{overwrite} is equivalent to \kvopt{overwrite}{true}. -\valitem{foreach}{field} +\valitem{foreach}{loopval} Loop over all \cmd{step}s in this \cmd{map}, setting the special variable |$MAPLOOP| %$ -to each of the comma-separated values contained in the entry field \prm{field}. This allows the user to repeat a group of \cmd{step}s for each value of another CSV field. Using regexp maps, it is possible to create a CSV field for use with this functionality. The special variable |$MAPUNIQ| %$ -may also be used the \cmd{step}s to generate a random unique string. This can be useful when creating keys for new entries. +to each of the comma-separated values contained in \prm{loopval}. \prm{loopval} can either be the name of a datafield set defined with \cmd{DeclareDatafieldSet} (see \secref{aut:ctm:dsets}), a datasource field which is fetched and parsed as a comma"=separated values list or an explicit comma"=separated values list. \prm{loopval} is determined in this order. This allows the user to repeat a group of \cmd{step}s for each value \prm{loopval}. Using regexp maps, it is possible to create a CSV field for use with this functionality. The special variable |$MAPUNIQ| %$ +may also be used the \cmd{step}s to generate a random unique string. This can be useful when creating keys for new entries. An example: + +\begin{ltxexample}[style=latex]{} +\DeclareSourcemap{ + \maps[datatype=bibtex]{ + \map[overwrite, foreach={author,editor, translator}]{ + \step[fieldsource=\regexp{$MAPLOOP}, match={Smith}, replace={Jones}] + } + } +} +\end{ltxexample} +% This loops over several name fields, making some textual replacememts. \end{optionlist*} @@ -6414,8 +6465,8 @@ A mapping step. Each step is applied sequentially to every relevant entry where \valitem{replace}{regexp} \valitem{fieldset}{entryfield} \valitem{fieldvalue}{string} -\valitem{entryclone}{string} -\valitem{entrynew}{string} +\valitem{entryclone}{clonekey} +\valitem{entrynew}{entrynewkey} \valitem{entrynewtype}{string} \valitem{entrytarget}{string} \boolitem[false]{entrynull} @@ -6431,10 +6482,10 @@ For all boolean \cmd{step} options, the short form \opt{option} is equivalent to \renewcommand{\labelitemii}{$\circ$} \begin{itemize} -\item If \texttt{entrynew} is set, a new entry is created with the entry key given as the value - to \texttt{entrynew} and the entry type given in the option \texttt{entrynewtype}. This +\item If \texttt{entrynew} is set, a new entry is created with the entry key \texttt{entrynewkey} and the entry type given in the option \texttt{entrynewtype}. This entry is only in-scope during the processing of the current entry and can be referenced by - \texttt{entrytarget}. + \texttt{entrytarget}. In \texttt{entrynewkey}, you may use standard Perl regular expression + backreferences to captures from a previous \texttt{match} step. \item When a \texttt{fieldset} step has \texttt{entrytarget} set to the entrykey of an entry created by \texttt{entrynew}, the target for the field set will be the \texttt{entrytarget} entry rather than the entry being currently processed. This allows users to create new entries and set @@ -6444,12 +6495,12 @@ For all boolean \cmd{step} options, the short form \opt{option} is equivalent to as if it did not exist in the datasource. Obviously, you should select the entries which you want to apply this to using prior mapping steps. -\item If \texttt{entryclone} is set, a clone of the entry is created with - an entry key prefixed by \texttt{prefix}. Obviously this may cause - labelling problems in author/year styles etc. and should be used with - care. It is mainly intended for numbering issues with numeric styles and - multiple bibliographies where the same entries occur in more than one - bibliography. +\item If \texttt{entryclone} is set, a clone of the entry is created with an entry key + \texttt{clonekey}. Obviously this may cause labelling problems in author/year styles etc. + and should be used with care. The cloned entry is in-scope during the processing of the + current entry and can be modified by passing its key as the value to \texttt{entrytarget}. + In \texttt{clonekey}, you may use standard Perl regular expression backreferences to + captures from a previous \texttt{match} step. \item Change the \texttt{typesource} \prm{entrytype} to the \texttt{typetarget} \prm{entrytype}, if defined. If \texttt{final} is \texttt{true} then if the \prm{entrytype} of the entry is not \texttt{typesource}, processing of the parent \cmd{map} immediately terminates. @@ -6488,7 +6539,7 @@ be changed (used as \texttt{fieldset}, \texttt{fieldtarget} or changed using \te \begin{ltxsyntax} -\cmditem{DeclareStyleSourcemap}{specification}\BiberOnlyMark +\cmditem{DeclareStyleSourcemap}{specification} This command sets the source mappings used by a style. Such mappings are conceptually separate from user mappings defined with \cmd{DeclareSourcemap} and are applied directly after user maps. The syntax is identical to \cmd{DeclareSourcemap}. This command is provided for style authors so that any maps defined for the style do not interfere with user maps or the default driver maps defined with \cmd{DeclareDriverSourcemap}. This command is for use in style files and can only be used once---subsequent uses will overwrite earlier definitions. @@ -6496,7 +6547,7 @@ This command sets the source mappings used by a style. Such mappings are concept \begin{ltxsyntax} -\cmditem{DeclareDriverSourcemap}[datatype=driver]{specification}\BiberOnlyMark +\cmditem{DeclareDriverSourcemap}[datatype=driver]{specification} This command sets the driver default source mappings for the specified \prm{driver}. Such mappings are conceptually separate from user mappings defined with \cmd{DeclareSourcemap} and style mapping defined with \cmd{DeclareStyleSourcemap}. They consist of mappings which are part of the driver setup. Users should not normally need to change these. Driver default mapping are applied after user mappings (\cmd{DeclareSourcemap}) and style mappings (\cmd{DeclareStyleSourcemap}). These defaults are described in Appendix \secref{apx:maps}. The \prm{specification} is identical to that for \cmd{DeclareSourcemap} but without the \cmd{maps} elements: the \prm{specification} is just a list of \cmd{map} elements since each \cmd{DeclareDriverSourcemap} only applies to one datatype driver. See the default definitions in Appendix \secref{apx:maps} for examples. @@ -6831,7 +6882,7 @@ These maps, respectively, \item Set the pre-namelist \opt{useprefix} option on the \bibfield{author} name list to <false> \end{itemize} -\subsubsection{Data Model Specification}\BiberOnlyMark +\subsubsection{Data Model Specification} \label{aut:ctm:dm} The data model which \biblatex uses consists of four main elements: @@ -6844,7 +6895,7 @@ The data model which \biblatex uses consists of four main elements: \item Specification of constraints which can be used to validate data against the data model \end{itemize} -The default data model is defined in the core \biblatex file \file{blx-dm.def} using the macros described in this section. The default data model is described in detail in \secref{bib}. The data model is used internally by \biblatex and also by the backends. The data model for the \bibtex backend is hard-coded and cannot be changed. Changing the data model is only supported for the \biber backend. In practice, changing the data model means that you can define the entrytypes and fields for your datasources and validate your data against the data model. Naturally, this is not much use unless your style supports any new entrytypes or fields and it raises issues of portability between styles (although this can be mitigated by using the dynamic data modification functionality described in \secref{aut:ctm:map}). +The default data model is defined in the core \biblatex file \file{blx-dm.def} using the macros described in this section. The default data model is described in detail in \secref{bib}. The data model is used internally by \biblatex and also by the backend. In practice, changing the data model means that you can define the entrytypes and fields for your datasources and validate your data against the data model. Naturally, this is not much use unless your style supports any new entrytypes or fields and it raises issues of portability between styles (although this can be mitigated by using the dynamic data modification functionality described in \secref{aut:ctm:map}). Validation against the data model means that after mapping your data sources into the data model, \biber (using its \path{--validate_datamodel} option) can check: @@ -6867,9 +6918,9 @@ Alternatively, the name of the data model file can be different from any of the \begin{ltxsyntax} -\cmditem{DeclareDatamodelConstant}[options]{name}{constantdef}\BiberOnlyMark +\cmditem{DeclareDatamodelConstant}[options]{name}{constantdef} -Declares the \prm{name} as a datamodel constant with definition \prm{constantdef}. Such constants are typically used internally by the \biber backend. +Declares the \prm{name} as a datamodel constant with definition \prm{constantdef}. Such constants are typically used internally by \biber. \begin{optionlist*} @@ -6879,7 +6930,7 @@ A constant can be a simple string (default if the \prm{type} option is omitted) \end{optionlist*} -\cmditem{DeclareDatamodelEntrytypes}[options]{entrytypes}\BiberOnlyMark +\cmditem{DeclareDatamodelEntrytypes}[options]{entrytypes} Declares the comma"=separated list of \prm{entrytypes} to be valid entrytypes in the data model. As usual in \tex csv lists, make sure each element is immediately followed by a comma or the closing brace---no extraneous whitespace. @@ -6891,7 +6942,7 @@ This entrytype is not output to the \file{.bbl}. Typically used for special entr \end{optionlist*} -\cmditem{DeclareDatamodelFields}[options]{fields}\BiberOnlyMark +\cmditem{DeclareDatamodelFields}[options]{fields} Declares the comma"=separated list of \prm{fields} to be valid fields in the data model with associated comma"=separated \prm{options}. The \prm{type} and \prm{datatype} options are mandatory. All valid \prm{options} are: @@ -6899,7 +6950,7 @@ Declares the comma"=separated list of \prm{fields} to be valid fields in the dat \valitem{type}{field type} -Set the type of the field as described in \secref{bib:fld:typ}. Is typically <field> or <list>. +Set the type of the field as described in \secref{bib:fld:typ}, typically <field> or <list>. \valitem{format}{field format} @@ -6923,11 +6974,11 @@ The field can be used as a label in a bibliography or bibliography list. Specify \end{optionlist*} -\cmditem{DeclareDatamodelEntryfields}[entrytypes]{fields}\BiberOnlyMark +\cmditem{DeclareDatamodelEntryfields}[entrytypes]{fields} Declares that the comma"=separated list of \prm{fields} is valid for the comma"=separated list of \prm{entrytypes}. If \prm{entrytypes} is not given, the fields are valid for all entrytypes. As usual in \tex csv lists, make sure each element is immediately followed by a comma or the closing brace---no extraneous whitespace. -\cmditem{DeclareDatamodelConstraints}[entrytypes]{specification}\BiberOnlyMark +\cmditem{DeclareDatamodelConstraints}[entrytypes]{specification} If a comma"=separated list of \prm{entrytypes} is given, the constraints apply only to those entrytypes. The \prm{specification} is an undelimited list of \cmd{constraint} directives which specify a constraint. Spaces, tabs, and line endings may be used freely to visually arrange the \prm{specification}. Blank lines are not permissible. @@ -7079,11 +7130,11 @@ This model specifies: \subsubsection{Labels} \label{aut:ctm:lab} -Alphabetic styles use a label to identify bibliography entries. This label is constructed from components of the entry using a template which describes how to build the label. The template can be customised on a global or per-type basis. Label customisation requires \biber and will not work with any other backend. +Alphabetic styles use a label to identify bibliography entries. This label is constructed from components of the entry using a template which describes how to build the label. The template can be customised on a global or per-type basis. \begin{ltxsyntax} -\cmditem{DeclareLabelalphaTemplate}[entrytype, \dots]{specification}\BiberOnlyMark +\cmditem{DeclareLabelalphaTemplate}[entrytype, \dots]{specification} Defines the alphabetic label template for the given entrytypes. If no entrytypes are specified in the first argument, then the global label template is defined. The \prm{specification} is an undelimited list of \cmd{labelelement} directives which specify the elements used to build the label. Spaces, tabs, and line endings may be used freely to visually arrange the \prm{specification}. Blank lines are not permissible. This command may only be used in the preamble. @@ -7157,22 +7208,33 @@ For static (non-varwidth) disambiguation, treat family name name components sepa As \opt{compound} but applies to name prefices. Only applies if the \biblatex option \kvopt{useprefix}{true}. -\intitem{ifnames} +\valitem{ifnames}{range} -Only use this \cmd{field} specification if it is a name list field with \texttt{ifnames} names in it. This allows a \cmd{labelelement} to be conditionalised on name length (see below). +Only use this \cmd{field} specification if it is a name list field with a number of names matching the \texttt{ifnames} range value. This allows a \cmd{labelelement} to be conditionalised on name length (see below). The range can specified as in the following examples: + +\begin{lstlisting}[language=xml] +ifnames=3 -> Only apply to name lists containing exactly 3 names +ifnames={2-4} -> Only apply to name lists containing minimum 2 and maximum 4 names +ifnames={-3} -> Only apply to name lists containing at most 3 names +ifnames={2-} -> Only apply to name lists containing at least 2 names +\end{lstlisting} -\intitem{names} +\valitem{names}{range} -By default, for name list fields, the names used range from the first name to the \cnt{maxalphanames}\slash \cnt{minalphanames} truncation. This option can be used to override this with an explicit range of names to consider. The plus <+> sign is a special end of range marker denoting the truncation point of max/minalphanames. The range seperator can be any number of characters with the Unicode Dash property. For example: +By default, for name list fields, the names used range from the first name to the \cnt{maxalphanames}\slash \cnt{minalphanames} truncation. This option can be used to override this with an explicit range of names to consider. The plus <+> sign is a special end of range marker denoting the truncation point of max/minalphanames. The range separator can be any number of characters with the Unicode Dash property. For example: \begin{lstlisting}[language=xml] -name=3 -> Use first 3 names in the name list +name=3 -> Use first 3 names in the name list name={2-3} -> Use second and thirds names only -name={-3} -> Same as 1-3 -name={2-} -> Use all names starting with the second name (ignoring max/minalphanames truncation) +name={-3} -> Same as 1-3 +name={2-} -> Use all names starting with the second name (ignoring max/minalphanames truncation) name={2-+} -> Use all names starting with the second name (respecting max/minalphanames truncation) \end{lstlisting} +\valitem{namessep}[empty]{string} + +An arbitrary string separator to put between names in a namelist. + \boolitem[false]{noalphaothers} By default, \cmd{labelalphaothers} is appended to label parts derived from name lists if there are more names in the list than are shown in the label part. This option can be used to disable the default behaviour. @@ -7349,7 +7411,7 @@ Here is another rather contrived example showing that you don't need to speciall \literal{\%} } \labelelement{ - \field[strwidth=4, padchar=_]{<<labelname>>} + \field[namessep={/}, strwidth=4, padchar=_]{<<labelname>>} } \labelelement{ \field[strwidth=3, padchar=&, padside=left]{title} @@ -7363,21 +7425,21 @@ Here is another rather contrived example showing that you don't need to speciall which given: \begin{lstlisting}[style=bibtex]{} @Book{test, - author = {XXX YY}, + author = {XXX YY and WWW ZZ}, title = {T}, year = {2007}, } \end{lstlisting} would resulting a label looking like this: \begin{verbatim} -[>%YY__&&T07] +[>%YY/ZZ__&&T07] \end{verbatim} Generating labels from fields may involve some difficulties when you have fields containing diacritics, hyphens, spaces etc. Often, you want to ignore things like separator characters or spaces when generating labels. An option is provided to customise the regular expression(s) to strip from a field before it is passed to the label generation system. \begin{ltxsyntax} -\cmditem{DeclareNolabel}{specification}\BiberOnlyMark +\cmditem{DeclareNolabel}{specification} Defines regular expressions to strip from any field before generating a label part for the field. The \prm{specification} is an undelimited list of \cmd{nolabel} directives which specify the regular expressions to remove from fields. Spaces, tabs and line endings may be used freely to visually arrange the \prm{specification}. Blank lines are not permissible. This command may only be used in the preamble. @@ -7400,7 +7462,7 @@ This \biber default strips punctuation, symbol, separator and control characters \begin{ltxsyntax} -\cmditem{DeclareNolabelwidthcount}{specification}\BiberOnlyMark +\cmditem{DeclareNolabelwidthcount}{specification} Defines regular expressions to ignore from any field when counting characters in fixed-width substrings. The \prm{specification} is an undelimited list of \cmd{nolabelwidthcount} directives which specify the regular expressions to ignore when counting characters for fixed-width substrings. Spaces, tabs and line endings may be used freely to visually arrange the \prm{specification}. Blank lines are not permissible. This command may only be used in the preamble. @@ -7417,11 +7479,11 @@ this setting is only taken into account when using fixed-width substrings \subsubsection{Sorting} \label{aut:ctm:srt} -In addition to the predefined sorting schemes discussed in \secref{use:srt}, it is possible to define new ones or modify the default definitions. The sorting process may be customized further by excluding certain fields from sorting on a per-type basis and by automatically populating the \bibfield{presort} field on a per-type basis. Note that custom sorting schemes require \biber. They will not work with any other backend. +In addition to the predefined sorting schemes discussed in \secref{use:srt}, it is possible to define new ones or modify the default definitions. The sorting process may be customized further by excluding certain fields from sorting on a per-type basis and by automatically populating the \bibfield{presort} field on a per-type basis. \begin{ltxsyntax} -\cmditem{DeclareSortingScheme}[options]{name}{specification}\BiberOnlyMark +\cmditem{DeclareSortingScheme}[options]{name}{specification} Defines the sorting scheme \prm{name}. The \prm{name} is the identifier passed to the \opt{sorting} option (\secref{use:opt:pre:gen}) when selecting the sorting scheme. The \cmd{DeclareSortingScheme} command supports the following optional arguments: @@ -7528,7 +7590,7 @@ This sorts the bibliography purely lexically by the order of the keys in the cit % This sorts «two» before «one», even though lexically, «one» would sort before «two». This is possible because the semantic order can be disambiguated by the further sorting on year. With the standard \opt{none} sorting scheme, the lexical order and semantic order are identical because there is nothing further to disambiguate them. This means that you can use \cmd{citeorder} just like any other sorting specification element, choosing how to further sort entries cited at the same time (in the same citation command). -\cmditem{DeclareSortingNamekeyScheme}[schemename]{specification}\BiberOnlyMark +\cmditem{DeclareSortingNamekeyScheme}[schemename]{specification} Defines how the sorting keys for names are constructed. This can change the sorting order of names arbitrarily because you can choose how to put together the name parts when constructing the string to compare when sorting. The sorting key construction scheme so defined is called \prm{schemename} which defaults to «global» if this optional parameter is absent. When constructing the sorting key for a name, a sorting key for each name part is constructed and the key for each name is formed into an ordered key list with a special internal separator. The point of this option is to accommodate languages or situations where sorting of names needs to be customised (for example, Icelandic names are sometimes sorted by given names rather than by family names). This macro may be used multiple times to define schemes with different names which can then be referred to later. Sorting name key schemes can have the following scopes, in order of increasing precedence: @@ -7689,23 +7751,65 @@ Finally, here is an example of a sorting scheme which overrides the global sorti \begin{ltxsyntax} -\cmditem{DeclareSortExclusion}{entrytype, \dots}{field, \dots}\BiberOnlyMark +\cmditem{DeclareSortExclusion}{entrytype, \dots}{field, \dots} Specifies fields to be excluded from sorting on a per-type basis. The \prm{entrytype} argument and the \prm{field} argument may be a comma"=separated list of values. A blank \prm{field} argument will clear all exclusions for this \prm{entrytype}. This command may only be used in the preamble. -\cmditem{DeclarePresort}[entrytype, \dots]{string}\BiberOnlyMark +\cmditem{DeclarePresort}[entrytype, \dots]{string} Specifies a string to be used to automatically populate the \bibfield{presort} field of entries without a \bibfield{presort} field. The \bibfield{presort} may be defined globally or on a per-type basis. If the optional \prm{entrytype} argument is given, the \prm{string} applies to the respective entry type. If not, it serves as the global default value. Specifying an \prm{entrytype} in conjunction with a blank \prm{string} will clear the type-specific setting. The \prm{entrytype} argument may be a comma"=separated list of values. This command may only be used in the preamble. +\cmditem{DeclareSortTranslit}[entrytype]{specification} + +Languages which can be written in different scripts or alphabets often only have CLDR sorting tailoring for one script and it is expected that you transliterate into the supported script for sorting purposes. A common example is Sanskrit which is often written in academic contexts in IAST +romanised script but which needs to be sorted in the <sa> locale which expects the DevanÄgarÄ« script. This means that it is necessary to transliterate into the sorting script internally. \cmd{DeclareSortTranslit} declares which parts of an entry you would like to transliterate for sorting purposes. Without the \prm{entrytype} parameter, the \prm{specification} applies to all entrytypes. The \prm{specification} is one or more \cmd{translit} commands: + +\cmditem{translit}{field or fieldset}{from}{to} + +Specifies that the data field \bibfield{field} or all fields in a fieldset \prm{fieldset} declared with \cmd{DeclareDatafieldSet} (see \secref{aut:ctm:dsets}) should be transliterated from script \prm{from} to script \prm{to} for sorting purposes. The field/set argument can also be <*> to apply transliteration to all fields. The valid \prm{from} and \prm{to} values are given in table \ref{tab:translit}. Note that \biblatex does not aim to support general transliteration, only those which are useful for sorting purposes. Please open a GitHub ticket for \biblatex\ if you think you need additional transliterations. + +An example of transliterating titles so that they sort correctly in Sanskrit: + +\begin{ltxexample} +\DeclareDatafieldSet{settitles}{ + \member[field=title] + \member[field=booktitle] + \member[field=eventtitle] + \member[field=issuetitle] + \member[field=journaltitle] + \member[field=maintitle] + \member[field=origtitle] +} + +\DeclareSortTranslit{ + \translit[settitles]{iast}{devanagari} +} +\end{ltxexample} + \end{ltxsyntax} -\subsubsection[Bibliography List Filters]{Bibliography List Filters\BiberOnlyMark} +\begin{table} +\tablesetup\centering +\begin{tabular}{lll} +\toprule +\sffamily\bfseries\spotcolor From + & \sffamily\bfseries\spotcolor To + & Description\\ +\midrule +iast & devanagari & Sanskrit IAST\footnote{International Alphabet of Sanskrit Transliteration} to DevanÄgarÄ«\\ +\bottomrule +\end{tabular} +\caption{Valid transliteration pairs} +\label{tab:translit} +\end{table} + +\subsubsection[Bibliography List Filters]{Bibliography List Filters} \label{aut:ctm:bibfilt} When using customisable bibliography lists (See \secref{use:bib:biblist}), usually one wants to return in the \file{.bbl} only those entries which have the particular fields which the bibliography list is summarising. For example, when printing a normal list of shorthands, you want the list returned by \biber in the \file{.bbl} to contain only those entries which have a \bibfield{shorthand} field. This is accomplished by defining a bibliography list filter using the \cmd{DeclareBiblistFilter} command. This differs from the filters defined using \cmd{defbibfilter} (see \secref{use:bib:flt}) since the filters defined by \cmd{defbibfilter} run inside \biblatex after the \file{.bbl} has been generated. In addition, bibliography lists in the \file{.bbl} do not contain entry data, only the citation keys for the entries and so no filtering by \biblatex using \cmd{defbibfilter} is possible for bibliography lists. \begin{ltxsyntax} -\cmditem{DeclareBiblistFilter}{name}{specification}\BiberOnlyMark +\cmditem{DeclareBiblistFilter}{name}{specification} Defines a bibliography list filter with \prm{name}. The \prm{specification} consists of one or more \cmd{filter} or \cmd{filteror} macros, all of which must be satisfied for the entry to pass the filter: @@ -7744,7 +7848,7 @@ Generating initials for name parts from a given name involves some difficulties \begin{ltxsyntax} -\cmditem{DeclareNoinit}{specification}\BiberOnlyMark +\cmditem{DeclareNoinit}{specification} Defines regular expressions to strip from names before generating initials. The \prm{specification} is an undelimited list of \cmd{noinit} directives which specify the regular expressions to remove from the name. Spaces, tabs and line endings may be used freely to visually arrange the \prm{specification}. Blank lines are not permissible. This command may only be used in the preamble. @@ -7774,7 +7878,7 @@ It can be useful to fine tune sorting so that it ignores certain parts of partic \begin{ltxsyntax} -\cmditem{DeclareNosort}{specification}\BiberOnlyMark +\cmditem{DeclareNosort}{specification} Defines regular expressions to strip from particular fields or types of fields when sorting. The \prm{specification} is an undelimited list of \cmd{nosort} directives which specify the regular expressions to remove from particular fields or type of field. Spaces, tabs and line endings may be used freely to visually arrange the \prm{specification}. Blank lines are not permissible. This command may only be used in the preamble. @@ -7852,11 +7956,11 @@ Or if you wanted to ignore «The» at the beginning of any title field: \subsubsection{Special Fields} \label{aut:ctm:fld} -Some of the automatically generated fields from \secref{aut:bbx:fld:lab} may be customized. Note that this requires \biber. +Some of the automatically generated fields from \secref{aut:bbx:fld:lab} may be customized. \begin{ltxsyntax} -\cmditem{DeclareLabelname}[entrytype, \dots]{specification}\BiberOnlyMark +\cmditem{DeclareLabelname}[entrytype, \dots]{specification} Defines the fields to consider when generating the \bibfield{labelname} field (see \secref{aut:bbx:fld:lab}). The \prm{specification} is an ordered list of \cmd{field} commands. The fields are checked in the order listed and the first field which is available will be used as \bibfield{labelname}. This is the default definition: @@ -7872,9 +7976,9 @@ Defines the fields to consider when generating the \bibfield{labelname} field (s % The \bibfield{labelname} field may be customized globally or on a per-type basis. If the optional \prm{entrytype} argument is given, the specification applies to the respective entry type. If not, it is applied globally. The \prm{entrytype} argument may be a comma"=separated list of values. This command may only be used in the preamble. -\cmditem{DeclareLabeldate}[entrytype, \dots]{specification}\BiberOnlyMark +\cmditem{DeclareLabeldate}[entrytype, \dots]{specification} -Defines the date components to consider when generating \bibfield{labelyear}, \bibfield{labelmonth} and \bibfield{labelday} fields (see \secref{aut:bbx:fld:lab}). The \prm{specification} is an ordered list of \cmd{field} or \cmd{literal} commands. The items are checked in the order listed and the first item which is available will be used to popluate the \bibfield{labelyear}, \bibfield{labelmonth} and \bibfield{labelday} fields. Note that the \cmd{field} items do not have to be datetype <date> in the data model so that you can create pseudo-year labels by, for example, using a \bibfield{pubstate} field contents, if available, as the year label by defining \cmd{DeclareLabeldate} suitably. Note also that a \cmd{literal} command will always be used when found and so this should always be the last thing in the list. If the value of a \cmd{literal} command is a valid localization string, then this will be resolved in the current language, otherwise the value is used as a literal string as-is. This is the default definition: +Defines the date components to consider when generating \bibfield{labelyear}, \bibfield{labelmonth} and \bibfield{labelday} fields (see \secref{aut:bbx:fld:lab}). The \prm{specification} is an ordered list of \cmd{field} or \cmd{literal} commands. The items are checked in the order listed and the first item which is available will be used to popluate the \bibfield{labelyear}, \bibfield{labelmonth} and \bibfield{labelday} fields. Note that the \cmd{field} items do not have to be datetype <date> in the data model so that you can create pseudo-year labels by, for example, using a \bibfield{pubstate} field contents, if available, as the year label by defining \cmd{DeclareLabeldate} suitably. Note also that a \cmd{literal} command will always be used when found and so this should always be the last thing in the list. If the value of a \cmd{literal} command is a valid localisation string, then this will be resolved in the current language, otherwise the value is used as a literal string as-is. This is the default definition: \begin{ltxexample} \DeclareLabeldate{% @@ -7889,7 +7993,7 @@ Defines the date components to consider when generating \bibfield{labelyear}, \b Note that the \bibfield{date} field is split by the backend into \bibfield{year}, \bibfield{month} which are also valid fields in the default data model. In order to support legacy data which directly sets \bibfield{year} and/or \bibfield{month}, the specification <\bibfield{date}> in \cmd{DeclareLabeldate} will also match \bibfield{year} and \bibfield{month} fields, if present. The \bibfield{labelyear}, \bibfield{labelmonth} and \bibfield{labelday} fields may be customized globally or on a per-type basis. If the optional \prm{entrytype} argument is given, the specification applies to the respective entry type. If not, it is applied globally. The \prm{entrytype} argument may be a comma"=separated list of values. This command may only be used in the preamble. See also \secref{aut:bbx:fld:dat}. -\cmditem{DeclareLabeltitle}[entrytype, \dots]{specification}\BiberOnlyMark +\cmditem{DeclareLabeltitle}[entrytype, \dots]{specification} Defines the fields to consider when generating the \bibfield{labeltitle} field (see \secref{aut:bbx:fld:lab}). The \prm{specification} is an ordered list of \cmd{field} commands. The fields are checked in the order listed and the first field which is available will be used as \bibfield{labeltitle}. This is the default definition: @@ -7907,11 +8011,11 @@ The \bibfield{labeltitle} field may be customized globally or on a per-type basi \subsubsection{Data Inheritance (\bibfield{crossref})} \label{aut:ctm:ref} -\biber features a highly customizable cross-referencing mechanism with flexible data inheritance rules. This sections deals with the configuration interface. See \apxref{apx:ref} for the default configuration. Note that customized data inheritance requires \biber. It will not work with any other backend. A note on terminology: the \emph{child} or \emph{target} is the entry with the \bibfield{crossref} field, the \emph{parent} or \emph{source} is the entry the \bibfield{crossref} field points to. The child inherits data from the parent. +\biber features a highly customizable cross-referencing mechanism with flexible data inheritance rules. This sections deals with the configuration interface. See \apxref{apx:ref} for the default configuration. A note on terminology: the \emph{child} or \emph{target} is the entry with the \bibfield{crossref} field, the \emph{parent} or \emph{source} is the entry the \bibfield{crossref} field points to. The child inherits data from the parent. \begin{ltxsyntax} -\cmditem{DefaultInheritance}[exceptions]{options}\BiberOnlyMark +\cmditem{DefaultInheritance}[exceptions]{options} Configures the default inheritance behavior. This command may only be used in the preamble. The default behavior may be customized be setting the following \prm{options}: @@ -7929,7 +8033,7 @@ The optional \prm{exceptions} are an undelimited list of \cmd{except} directives Sets the \prm{options} for a specific \prm{source} and \prm{target} combination. The \prm{source} and \prm{target} arguments specify the parent and the child entry type. The asterisk matches all types and is permissible in either argument. -\cmditem{DeclareDataInheritance}{source, \dots}{target, \dots}{rules}\BiberOnlyMark +\cmditem{DeclareDataInheritance}{source, \dots}{target, \dots}{rules} Declares inheritance rules. The \prm{source} and \prm{target} arguments specify the parent and the child entry type. Either argument may be a single entry type, a comma"=separated list of types, or an asterisk. The asterisk matches all entry types. The \prm{rules} are an undelimited list of \cmd{inherit} and\slash or \cmd{noinherit} directives. Spaces, tabs, and line endings may be used freely to visually arrange the \prm{rules}. Blank lines are not permissible. This command may only be used in the preamble. @@ -7941,7 +8045,7 @@ Defines an inheritance rule by mapping a \prm{source} field to a \prm{target} fi Unconditionally prevents inheritance of the \prm{source} field. -\csitem{ResetDataInheritance}\BiberOnlyMark +\csitem{ResetDataInheritance} Clears all inheritance rules defined with \cmd{DeclareDataInheritance}. This command may only be used in the preamble. @@ -8006,6 +8110,33 @@ This rule, which applies to all entries, regardless of the source and target ent % This example demonstrates how to emulate traditional \bibtex's cross"=referencing mechanism. It enables inheritance by default, disables overwriting, and clears all other inheritance rules and mappings. +In a bibliography entry, you can give an option <noinherit> where the value +is a datafield set defined with \cmd{DeclareDatafieldSet} +(\secref{aut:ctm:dsets}). This will block inheritance of the fields in the +set on a per-entry basis. For example: + +\begin{ltxexample} +\DeclareDatafieldSet{nobtitle}{ + \member[field=booktitle] +} +\end{ltxexample} + +\begin{lstlisting}[style=bibtex]{} +@INBOOK{s1, + OPTIONS = {noinherit=nobtitle}, + TITLE = {Subtitle}, + CROSSREF = {s2} +} + +@BOOK{s2, + TITLE = {Title} +} +\end{lstlisting} +% +Here, \bibfield{s1} will not inherit the \bibfield{TITLE} of \bibfield{s2} +as \bibfield{BOOKTITLE} as this is blocked by the datafield set given as +the value to the \opt{noinherit} option. + \subsection{Auxiliary Commands} \label{aut:aux} @@ -8113,9 +8244,12 @@ The commands in this section are various kinds of stand"=alone tests for use in \begin{ltxsyntax} -\cmditem{ifempty}{arg}{true}{false} +\cmditem{ifcaselang}[language]{true}{false} -Fully expands \prm{arg} and then uses the \sty{etoolbox} \cmd{ifblank} test to determine whether to expand to \prm{true} or \prm{false}. This is useful for testing for emptiness of \prm{arg} regardless of whether \prm{arg} consists of macros or strings. +Expands to \prm{true} if the the optional \prm{language} is one of those +declared by \cmd{DeclareCaseLangs} (see \secref{aut:aux:msc}) and to +\prm{false} otherwise. Without the optional argument, checks the current +value of \cmd{currentlang}. \cmditem{ifsortnamekeyscheme}{string}{true}{false} @@ -8217,10 +8351,27 @@ This is just a particular case of the \cmd{ifuse$<$name$>$} macro below but is m Expands to \prm{true} if the \opt{use$<$name$>$} option is enabled (either globally or for the current entry), and \prm{false} otherwise. See \secref{use:opt:bib} for details on this option. +\cmditem{ifcrossrefsource}{true}{false} + +Expands to \prm{true} if the entry was inclued in the \file{.bbl} due to being referenced more than \opt{mincrossrefs} times and false otherwise. See \secref{use:opt:pre:gen}. Also expands to false if the entry was directly cited. + +\cmditem{ifxrefsource}{true}{false} + +Expands to \prm{true} if the entry was inclued in the \file{.bbl} due to being referenced more than \opt{minxrefs} times and false otherwise. See \secref{use:opt:pre:gen}. Also expands to false if the entry was directly cited. + \cmditem{ifsingletitle}{true}{false} Expands to \prm{true} if there is only one work by the \opt{labelname} name in the bibliography, and to \prm{false} otherwise. If there is no \opt{labelname} name at all for the entry, then this expands to \prm{true} if there is only one work with the \opt{labeltitle} title in the bibliography and \prm{false} otherwise. If neither \opt{labelname} nor \opt{labeltitle} are set for an entry, this will always expand to \prm{false}. Note that this feature needs to be enabled explicitly with the package option \opt{singletitle}. +\cmditem{ifuniquetitle}{true}{false} + +Expands to \prm{true} if there is only one work with the title \opt{labeltitle} and to \prm{false} otherwise. If \opt{labeltitle} is not set for an entry, this will always expand to \prm{false}. Note that this feature needs to be enabled explicitly with the package option \opt{uniquetitle}. + +\cmditem{ifuniqueprimaryauthor}{true}{false} + +Expands to \prm{true} if there is only one work by the primary (first) author family +name of \opt{labelname} and to \prm{false} otherwise. If \opt{labelname} is not set for an entry, this will always expand to \prm{false}. Note that this feature needs to be enabled explicitly with the package option \opt{uniqueprimaryauthor}. + \cmditem{ifandothers}{list}{true}{false} Expands to \prm{true} if the \prm{list} is defined and has been truncated in the \file{bib} file with the keyword <\texttt{and others}>, and to \prm{false} otherwise. The \prm{list} may be a literal list or a name list. @@ -8351,7 +8502,7 @@ Similar to \cmd{ifpages}, but uses the value of a \prm{field} rather than a lite \cmditem{ifbibstring}{string}{true}{false} -Expands to \prm{true} if the \prm{string} is a known localization key, and to \prm{false} otherwise. The localization keys defined by default are listed in \secref{aut:lng:key}. New ones may be defined with \cmd{NewBibliographyString}. +Expands to \prm{true} if the \prm{string} is a known localisation key, and to \prm{false} otherwise. The localisation keys defined by default are listed in \secref{aut:lng:key}. New ones may be defined with \cmd{NewBibliographyString}. \cmditem{ifbibxstring}{string}{true}{false} @@ -8367,7 +8518,7 @@ Expands to \prm{true} if a driver for the \prm{entrytype} is available, and to \ \cmditem{ifcapital}{true}{false} -Executes \prm{true} if \biblatex's punctuation tracker would capitalize a localization string at the current location, and \prm{false} otherwise. This command is robust. It may be useful for conditional capitalization of certain parts of a name in a formatting directive. +Executes \prm{true} if \biblatex's punctuation tracker would capitalize a localisation string at the current location, and \prm{false} otherwise. This command is robust. It may be useful for conditional capitalization of certain parts of a name in a formatting directive. \cmditem{ifcitation}{true}{false} @@ -8397,10 +8548,10 @@ Expands to \prm{true} when located in a footnote, and to \prm{false} otherwise. This counter indicates how many times the entry currently being processed is cited in the current reference section. Note that this feature needs to be enabled explicitly with the package option \opt{citecounter}. If the option is set to \texttt{context}, citations in the body text and in footnotes are counted separately. In this case, \cnt{citecounter} will hold the value of the context it is used in. -\cntitem{uniquename}\BiberOnlyMark +\cntitem{uniquename} This counter refers to the \bibfield{labelname} list. It is set on a per-name basis. Its value is \texttt{0} if the last name is unique, \texttt{1} if adding the other parts of the name (first name, prefix, suffix) as initials will make it unique, and \texttt{2} if the full name is required to disambiguate the name. This information is required by author-year and author-title citation schemes which add additional parts of the name when citing different authors with the same last name. For example, if there is one <John Doe> and one <Edward Doe> in the list of references, this counter will be set to \texttt{1}. If there is one <John Doe> and one <Jane Doe>, the value of the counter will be \texttt{2}. If the option is set to \texttt{init}\slash \texttt{allinit}\slash \texttt{mininit}, the counter will be limited to \texttt{1}. This is useful for citations styles which use initials to disambiguate names but never print the full name in citations. If adding the initials is not sufficient to disambiguate the name, \cnt{uniquename} will also be set to \texttt{0} for that name. This feature needs to be enabled explicitly with the package option \opt{uniquename}. Note that the \cnt{uniquename} counter is local to \cmd{printnames} and that it is only set for the \bibfield{labelname} list and to the name list \bibfield{labelname} has been derived from (typically \bibfield{author} or \bibfield{editor}). Its value is zero in any other context, i.e., it must be evaluated in the name formatting directives handling name lists. See \secref{aut:cav:amb} for further details and practical examples. -\cntitem{uniquelist}\BiberOnlyMark +\cntitem{uniquelist} This counter refers to the \bibfield{labelname} list. It is set on a per-field basis. Its value indicates the number of names required to disambiguate the name list if automatic \cnt{maxnames}\slash \cnt{minnames} truncation would lead to ambiguous citations. For example, if there is one work by <Doe\slash Smith\slash Johnson> and another one by <Doe\slash Edwards\slash Williams>, setting \kvopt{maxnames}{1} would lead to <Doe et al.> in both cases. In this case, \cnt{uniquelist} would be set to \texttt{2} on the \bibfield{labelname} lists of both entries because at least the first two names are required to disambiguate them. Note that the \cnt{uniquelist} counter is local to \cmd{printnames} and that it is only set for the \bibfield{labelname} list and to the name list \bibfield{labelname} has been derived from (typically \bibfield{author} or \bibfield{editor}). Its value is zero in any other context. If available, the \cnt{uniquelist} value will be used automatically by \cmd{printnames} when processing the name list, \ie it will automatically override \cnt{maxnames}\slash \cnt{minnames}. This feature needs to be enabled explicitly with the package option \opt{uniquelist}. See \secref{aut:cav:amb} for further details and practical examples. \cntitem{parenlevel} @@ -8483,27 +8634,27 @@ This command executes the macro \prm{name}, as defined with \cmd{newbibmacro}. I \cmditem{savecommand}{command} \cmditem{restorecommand}{command} -These commands save and restore any \prm{command}, which must be a command name starting with a backslash. Both commands work within a local scope. They are mainly provided for use in localization files. +These commands save and restore any \prm{command}, which must be a command name starting with a backslash. Both commands work within a local scope. They are mainly provided for use in localisation files. \cmditem{savebibmacro}{name} \cmditem{restorebibmacro}{name} -These commands save and restore the macro \prm{name}, where \prm{name} is the identifier of a macro defined with \cmd{newbibmacro}. Both commands work within a local scope. They are mainly provided for use in localization files. +These commands save and restore the macro \prm{name}, where \prm{name} is the identifier of a macro defined with \cmd{newbibmacro}. Both commands work within a local scope. They are mainly provided for use in localisation files. \cmditem{savefieldformat}[entry type]{format} \cmditem{restorefieldformat}[entry type]{format} -These commands save and restore the formatting directive \prm{format}, as defined with \cmd{DeclareFieldFormat}. Both commands work within a local scope. They are mainly provided for use in localization files. +These commands save and restore the formatting directive \prm{format}, as defined with \cmd{DeclareFieldFormat}. Both commands work within a local scope. They are mainly provided for use in localisation files. \cmditem{savelistformat}[entry type]{format} \cmditem{restorelistformat}[entry type]{format} -These commands save and restore the formatting directive \prm{format}, as defined with \cmd{DeclareListFormat}. Both commands work within a local scope. They are mainly provided for use in localization files. +These commands save and restore the formatting directive \prm{format}, as defined with \cmd{DeclareListFormat}. Both commands work within a local scope. They are mainly provided for use in localisation files. \cmditem{savenameformat}[entry type]{format} \cmditem{restorenameformat}[entry type]{format} -These commands save and restore the formatting directive \prm{format}, as defined with \cmd{DeclareNameFormat}. Both commands work within a local scope. They are mainly provided for use in localization files. +These commands save and restore the formatting directive \prm{format}, as defined with \cmd{DeclareNameFormat}. Both commands work within a local scope. They are mainly provided for use in localisation files. \cmditem{ifbibmacroundef}{name}{true}{false} @@ -8551,7 +8702,7 @@ Similar to \cmd{MakeUppercase} but only coverts the first printable character in \cmditem{MakeSentenceCase}{text} \cmditem*{MakeSentenceCase*}{text} -Converts its \prm{text} argument to sentence case, \ie the first word is capitalized and the remainder of the string is converted to lowercase. This command is robust. The starred variant differs from the regular version in that it considers the language of the entry, as specified in the \bibfield{langid} field. It only converts the \prm{text} to sentence case if the \bibfield{langid} field is undefined or if it holds a language declared with \cmd{DeclareCaseLangs} (see below).\footnote{By default, converting to sentence case is enabled for the following language identifiers: \texttt{american}, \texttt{british}, \texttt{canadian}, \texttt{english}, \texttt{australian}, \texttt{newzealand} as well as the aliases \texttt{USenglish} and \texttt{UKenglish}. Use \cmd{DeclareCaseLangs} to extend or change this list.} Otherwise, the \prm{text} is not altered in any way. It is recommended to use \cmd{MakeSentenceCase*} rather than the regular variant in formatting directives. Both variants support the traditional \bibtex convention for \file{bib} files that anything wrapped in a pair of curly braces is not modified when changing the case. For example: +Converts its \prm{text} argument to sentence case, \ie the first word is capitalized and the remainder of the string is converted to lowercase. This command is robust. The starred variant differs from the regular version in that it considers the language of the entry, as specified in the \bibfield{langid} field. If the \bibfield{langid} field is defined and holds a language declared with \cmd{DeclareCaseLangs} (see below)\footnote{By default, converting to sentence case is enabled for the following language identifiers: \texttt{american}, \texttt{british}, \texttt{canadian}, \texttt{english}, \texttt{australian}, \texttt{newzealand} as well as the aliases \texttt{USenglish} and \texttt{UKenglish}. Use \cmd{DeclareCaseLangs} to extend or change this list.}, then the sentence case conversion is performed. If the \bibfield{langid} field is undefined, then the language list declared with \cmd{DeclareCaseLangs} is checked for the presence of the main document language derived from the \opt{language} option. If found, sentence case conversion is performed, if not, the \prm{text} is not altered in any way. It is recommended to use \cmd{MakeSentenceCase*} rather than the regular variant in formatting directives. Both variants support the traditional \bibtex convention for \file{bib} files that anything wrapped in a pair of curly braces is not modified when changing the case. For example: \begin{ltxexample} \MakeSentenceCase{an Introduction to LaTeX} @@ -8633,7 +8784,7 @@ The optional argument \bibfield{bookpagination} is omissible in this case. \cmditem{mkcomprange}[postpro]{text} \cmditem*{mkcomprange*}[postpro]{text} -This command, which is intended for use in field formatting directives, will parse its \prm{text} argument for page ranges and compress them. For example, «125--129» may be formatted as «125--9». You may configure the behavior of \cmd{mkcomprange} by adjusting the \latex counters \cnt{mincomprange}, \cnt{maxcomprange}, and \cnt{mincompwidth}, as illustrated in \tabref{aut:aux:tab1}. The default settings are \texttt{10}, \texttt{100000}, and \texttt{1}, respectively. This means that the command tries to compress as much as possible by default. Use \cmd{setcounter} to adjust the parameters. The scanner recognizes \cmd{bibrangedash} and hyphens as range dashes. It will normalize the dash by replacing any number of consecutive hyphens with \cmd{bibrangedash}. Lists of ranges delimited with \cmd{bibrangessep} (\biber\footnote{\biber will always convert commas/semicolon multi-range separators into \cmd{bibrangessep} so that it can be controlled in the style.}) or commas/semicolons (BibTeX) are also supported. With \biber, the scanner will normalise any comma or semi-colons surrounded by optional space by replacing them with \cmd{bibrangessep}. If you want to hide a character from the list/range scanner for some reason, wrap the character or the entire string in curly braces. The optional \prm{postpro} argument specifies a macro to be used for post-processing the \prm{text}. This is important if you want to combine \cmd{mkcomprange} with other formatting macros which also need to parse their \prm{text} argument, such as \cmd{mkpageprefix}. Simply nesting these commands will not work as expected. Use the \prm{postpro} argument to set up the processing chain as follows: +This command, which is intended for use in field formatting directives, will parse its \prm{text} argument for page ranges and compress them. For example, «125--129» may be formatted as «125--9». You may configure the behavior of \cmd{mkcomprange} by adjusting the \latex counters \cnt{mincomprange}, \cnt{maxcomprange}, and \cnt{mincompwidth}, as illustrated in \tabref{aut:aux:tab1}. The default settings are \texttt{10}, \texttt{100000}, and \texttt{1}, respectively. This means that the command tries to compress as much as possible by default. Use \cmd{setcounter} to adjust the parameters. The scanner recognizes \cmd{bibrangedash} and hyphens as range dashes. It will normalize the dash by replacing any number of consecutive hyphens with \cmd{bibrangedash}. Lists of ranges delimited with \cmd{bibrangessep} are also supported. The backend will normalise any comma or semi-colons surrounded by optional space by replacing them with \cmd{bibrangessep}. If you want to hide a character from the list/range scanner for some reason, wrap the character or the entire string in curly braces. The optional \prm{postpro} argument specifies a macro to be used for post-processing the \prm{text}. This is important if you want to combine \cmd{mkcomprange} with other formatting macros which also need to parse their \prm{text} argument, such as \cmd{mkpageprefix}. Simply nesting these commands will not work as expected. Use the \prm{postpro} argument to set up the processing chain as follows: \begin{ltxexample} \DeclareFieldFormat{postnote}{\mkcomprange[<<{>>\mkpageprefix[pagination]<<}>>]{#1}} @@ -8656,7 +8807,7 @@ p. 5, pp. 123-9, pp. 423-39 \cmditem{mkfirstpage}[postpro]{text} \cmditem*{mkfirstpage*}[postpro]{text} -This command, which is intended for use in field formatting directives, will parse its \prm{text} argument for page ranges and print the start page of the range only. The scanner recognizes \cmd{bibrangedash} and hyphens as range dashes. Lists of ranges delimited with \cmd{bibrangessep} (\biber\footnote{\biber will always convert commas/semicolon multi-range separators into \cmd{bibrangessep} so that it can be controlled in the style.}) or commas/semicolons (BibTeX) are also supported. If you want to hide a character from the list/range scanner for some reason, wrap the character or the entire string in curly braces. The optional \prm{postpro} argument specifies a macro to be used for post-processing the \prm{text}. See \cmd{mkcomprange} on how to use this argument. The starred version of this command differs from the regular one in the way the \prm{postpro} argument is applied to a list of values. For example: +This command, which is intended for use in field formatting directives, will parse its \prm{text} argument for page ranges and print the start page of the range only. The scanner recognizes \cmd{bibrangedash} and hyphens as range dashes. Lists of ranges delimited with \cmd{bibrangessep} are also supported. If you want to hide a character from the list/range scanner for some reason, wrap the character or the entire string in curly braces. The optional \prm{postpro} argument specifies a macro to be used for post-processing the \prm{text}. See \cmd{mkcomprange} on how to use this argument. The starred version of this command differs from the regular one in the way the \prm{postpro} argument is applied to a list of values. For example: \begin{ltxexample} \mkfirstpage[\mkpageprefix]{5, 123-129, 423-439} @@ -8670,26 +8821,9 @@ pp. 5, 123, 423 p. 5, p. 123, p. 423 \end{ltxexample} -\cmditem{rangelen}{text} - -This command will parse its argument as a range and return the length of the range. It will return -1 for open-ended ranges. - -\begin{ltxexample} -\rangelen{5-10} returns '5' -\rangelen{-10} returns '0' -\rangelen{5-} returns '0' -\rangelen{5} returns '1' -\end{ltxexample} -% -This can be used as part of tests in styles which require, for example, <f> as a suffix for ranges of only two pages as when a page range <36-37> should be printed as <36f>. This could be done using \cmd{ifnumcomp}: - -\begin{ltxexample} -\ifnumcomp{\rangelen{\thefield{pages}}}{=}{1}{add 'f'}{do nothing} -\end{ltxexample} - -\cmditem{frangelen}{rangefield}\BiberOnlyMark +\cmditem{rangelen}{rangefield} -Takes the name of a bibfield declared as a range field in the data model and returns the length of the range. This is calculated by \biber, can handle many special cases and is generally more robust than \cmd{rangelen}. It will return -1 for open ended ranges. Specifically \cmd{frangelen} can: +Takes the name of a bibfield declared as a range field in the data model and returns the length of the range. This is calculated by \biber and can handle many special cases. It will return $-1$ for open ended ranges. Specifically \cmd{rangelen} can: \begin{itemize} \item Calculate the total of multiple ranges in the same field such as <1-10, 20-30> @@ -8700,23 +8834,23 @@ Takes the name of a bibfield declared as a range field in the data model and ret Here are some examples: \begin{tabular}{ll} -pages = <10> & |\frangelen{pages}| returns '1'\\ -pages = <10-15> & |\frangelen{pages}| returns '6'\\ -pages = <10-15,47-53> & |\frangelen{pages}| returns '13'\\ -pages = <10-> & |\frangelen{pages}| returns '-1'\\ -pages = <-10> & |\frangelen{pages}| returns '-1'\\ -pages = <48-9> & |\frangelen{pages}| returns '2'\\ -pages = <172-77> & |\frangelen{pages}| returns '6'\\ -pages = <i-vi> & |\frangelen{pages}| returns '6'\\ -pages = <X-XX> & |\frangelen{pages}| returns '11'\\ -pages = <â…¥â… -â…»> & |\frangelen{pages}| returns '6'\\ -pages = <â…¥â… -â…», 145-7, 135-39> & |\frangelen{pages}| returns '14' +pages = <10> & |\rangelen{pages}| returns '1'\\ +pages = <10-15> & |\rangelen{pages}| returns '6'\\ +pages = <10-15,47-53> & |\rangelen{pages}| returns '13'\\ +pages = <10-> & |\rangelen{pages}| returns '-1'\\ +pages = <-10> & |\rangelen{pages}| returns '-1'\\ +pages = <48-9> & |\rangelen{pages}| returns '2'\\ +pages = <172-77> & |\rangelen{pages}| returns '6'\\ +pages = <i-vi> & |\rangelen{pages}| returns '6'\\ +pages = <X-XX> & |\rangelen{pages}| returns '11'\\ +pages = <â…¥â… -â…»> & |\rangelen{pages}| returns '6'\\ +pages = <â…¥â… -â…», 145-7, 135-39> & |\rangelen{pages}| returns '14' \end{tabular} -As with \cmd{rangelen}, \cmd{frangelen} can be used in tests: +The \cmd{rangelen} command can be used in tests: \begin{ltxexample} -\ifnumcomp{\frangelen{pages}}{=}{1}{add 'f'}{do nothing} +\ifnumcomp{\rangelen{pages}}{=}{1}{add 'f'}{do nothing} \end{ltxexample} \cmditem{DeclareNumChars}{characters} @@ -8768,12 +8902,11 @@ Use this command to temporarily redefine any commands which interfere with the t \cmditem{DeclareCaseLangs}{languages} \cmditem*{DeclareCaseLangs*}{languages} -Defines the list of languages which are considered by the \cmd{MakeSentenceCase*} command as it converts a string to sentence case. The \prm{languages} argument is a comma"=separated list of \sty{babel}/\sty{polyglossia} languages identifiers. The regular version of this command replaces the current setting, the starred version appends its argument to the current list. The default setting is: +Defines the list of languages which are considered by the \cmd{MakeSentenceCase*} command as it converts a string to sentence case. The \prm{languages} argument is a comma"=separated list of \sty{babel}/\sty{polyglossia} language identifiers. The regular version of this command replaces the current setting, the starred version appends its argument to the current list. The default setting is: \begin{ltxexample} \DeclareCaseLangs{% - american,british,canadian,english,australian,newzealand, - USenglish,UKenglish} + american,british,canadian,english,australian,newzealand,USenglish,UKenglish} \end{ltxexample} % See the \sty{babel}/\sty{polyglossia} manuals and \tabref{bib:fld:tab1} for a list of languages identifiers. @@ -8782,10 +8915,6 @@ See the \sty{babel}/\sty{polyglossia} manuals and \tabref{bib:fld:tab1} for a li This command is similar to \cmd{PackageWarning} but prints the entry key of the entry currently being processed in addition to the input line number. It may be used in the bibliography as well as in citation commands. If the \prm{message} is fairly long, use \cmd{MessageBreak} to include line breaks. Note that the standard \cmd{PackageWarning} command does not provide a meaningful clue when used in the bibliography since the input line number is the line on which the \cmd{printbibliography} command was given. -\cmditem{RequireBiber}[severity] - -This command is intended for use in \file{cbx}\slash\file{bbx} files and in the \texttt{@preamble} of \file{bib} files. It checks the selected backend and warns if it is not \biber. The optional \prm{severity} argument is an integer specifying the severity. The value 1 triggers an informational message stating that \biber is recommended; 2 triggers a warning stating that \biber is required and the style\slash\file{bib} file may not work properly; 3 triggers an error stating that \biber is strictly required and the style\slash\file{bib} file will not work at all with any other backend. If \cmd{RequireBiber} is used multiple times, the highest \prm{severity} takes precedence. \file{cbx}\slash\file{bbx} files on the one hand and the \texttt{@preamble} snippets of all \file{bib} files on the other are tracked separately. If the optional \prm{severity} argument is omitted, the default severity is 2 (warning). - \boolitem{pagetracker} These commands activate or deactivate the citation tracker locally (this will affect the \cmd{iffirstonpage} and \cmd{ifsamepage} test from \secref{aut:aux:tst}). They are intended for use in the definition of citation commands or anywhere in the document body. If a citation command is to be excluded from page tracking, use \cmd{pagetrackerfalse} in the \prm{precode} argument of \cmd{DeclareCiteCommand}. See \secref{aut:cbx:cbx} for details. Note that these commands have no effect if page tracking has been disabled globally. @@ -8803,7 +8932,7 @@ These commands activate or deactivate the \texttt{backref} tracker locally. They \subsection[Punctuation]{Punctuation and Spacing} \label{aut:pct} -The \biblatex package provides elaborate facilities designed to manage and track punctuation and spacing in the bibliography and in citations. These facilities work on two levels. The high"=level commands discussed in \secref{aut:pct:new} deal with punctuation and whitespace inserted by the bibliography style between the individual segments of a bibliography entry. The commands in \secref{aut:pct:chk, aut:pct:pct, aut:pct:spc} work at a lower level. They use \tex's space factor and modified space factor codes to track punctuation in a robust and efficient way. This way it is possible to detect trailing punctuation marks within fields, not only those explicitly inserted between fields. The same technique is also used for automatic capitalization of localization strings, see \cmd{DeclareCapitalPunctuation} in \secref{aut:pct:cfg} as well as \secref{aut:str} for details. Note that these facilities are only made available locally in citations and bibliographies. They will not affect any other part of a document. +The \biblatex package provides elaborate facilities designed to manage and track punctuation and spacing in the bibliography and in citations. These facilities work on two levels. The high"=level commands discussed in \secref{aut:pct:new} deal with punctuation and whitespace inserted by the bibliography style between the individual segments of a bibliography entry. The commands in \secref{aut:pct:chk, aut:pct:pct, aut:pct:spc} work at a lower level. They use \tex's space factor and modified space factor codes to track punctuation in a robust and efficient way. This way it is possible to detect trailing punctuation marks within fields, not only those explicitly inserted between fields. The same technique is also used for automatic capitalization of localisation strings, see \cmd{DeclareCapitalPunctuation} in \secref{aut:pct:cfg} as well as \secref{aut:str} for details. Note that these facilities are only made available locally in citations and bibliographies. They will not affect any other part of a document. \subsubsection{Block and Unit Punctuation} \label{aut:pct:new} @@ -9003,13 +9132,13 @@ This definition is restored automatically whenever the \opt{autopunct} package o \cmditem{DeclareCapitalPunctuation}{characters} -When \biblatex inserts localization strings, \ie key terms such as <edition> or <volume>, it automatically capitalizes them after terminal punctuation marks. This command defines the punctuation marks which will cause localization strings to be capitalized if one of them precedes a string. Note that \prm{characters} is an undelimited list of characters. Valid \prm{characters} are period, comma, semicolon, colon, exclamation and question mark. The package default is: +When \biblatex inserts localisation strings, \ie key terms such as <edition> or <volume>, it automatically capitalizes them after terminal punctuation marks. This command defines the punctuation marks which will cause localisation strings to be capitalized if one of them precedes a string. Note that \prm{characters} is an undelimited list of characters. Valid \prm{characters} are period, comma, semicolon, colon, exclamation and question mark. The package default is: \begin{ltxexample} \DeclareCapitalPunctuation{.!?} \end{ltxexample} % -Using \cmd{DeclareCapitalPunctuation} with an empty argument is equivalent to disabling automatic capitalization. Since this feature is language specific, this command must be used in the argument to \cmd{DefineBibliographyExtras} (when used in the preamble) or \cmd{DeclareBibliographyExtras} (when used in a localization module). See \secref{use:lng, aut:lng} for details. By default, strings are capitalized after periods, exclamation marks, and question marks. All strings are generally capitalized at the beginning of a paragraph (in fact whenever \tex is in vertical mode). +Using \cmd{DeclareCapitalPunctuation} with an empty argument is equivalent to disabling automatic capitalization. Since this feature is language specific, this command must be used in the argument to \cmd{DefineBibliographyExtras} (when used in the preamble) or \cmd{DeclareBibliographyExtras} (when used in a localisation module). See \secref{use:lng, aut:lng} for details. By default, strings are capitalized after periods, exclamation marks, and question marks. All strings are generally capitalized at the beginning of a paragraph (in fact whenever \tex is in vertical mode). \cmditem{DeclarePunctuationPairs}{identifier}{characters} @@ -9031,7 +9160,7 @@ The \prm{identifier} selects the command to be configured. The identifiers corre \DeclarePunctuationPairs{question}{*} \end{ltxexample} % -Since this feature is language specific, \cmd{DeclarePunctuationPairs} must be used in the argument to \cmd{DefineBibliographyExtras} (when used in the preamble) or \cmd{DeclareBibliographyExtras} (when used in a localization module). See \secref{use:lng, aut:lng} for details. Note that some localization modules may use a setup which is different from the package default.\footnote{As of this writing, the \texttt{american} module uses different settings for <American-style> punctuation.} +Since this feature is language specific, \cmd{DeclarePunctuationPairs} must be used in the argument to \cmd{DefineBibliographyExtras} (when used in the preamble) or \cmd{DeclareBibliographyExtras} (when used in a localisation module). See \secref{use:lng, aut:lng} for details. Note that some localisation modules may use a setup which is different from the package default.\footnote{As of this writing, the \texttt{american} module uses different settings for <American-style> punctuation.} \cmditem{DeclareQuotePunctuation}{characters} @@ -9041,7 +9170,7 @@ This command controls <American-style> punctuation. The \cmd{mkbibquote} wrapper \DeclareQuotePunctuation{.,} \end{ltxexample} % -Executing |\DeclareQuotePunctuation{}| is equivalent to disabling this feature. This is the package default. Since this feature is language specific, this command must be used in the argument to \cmd{DefineBibliographyExtras} (when used in the preamble) or \cmd{DeclareBibliographyExtras} (when used in a localization module). See \secref{use:lng, aut:lng} for details. See also \secref{use:loc:us}. +Executing |\DeclareQuotePunctuation{}| is equivalent to disabling this feature. This is the package default. Since this feature is language specific, this command must be used in the argument to \cmd{DefineBibliographyExtras} (when used in the preamble) or \cmd{DeclareBibliographyExtras} (when used in a localisation module). See \secref{use:lng, aut:lng} for details. See also \secref{use:loc:us}. \csitem{uspunctuation} @@ -9056,17 +9185,17 @@ Undoes the settings applied by \cmd{uspunctuation}, restoring standard punctuati \subsubsection{Correcting Punctuation Tracking} \label{aut:pct:ctr} -The facilities for punctuation tracking and automatic capitalization are very reliable under normal circumstances, but there are always marginal cases which may require manual intervention. Typical cases are localization strings printed as the first word in a footnote (which is usually treated as the beginning of a paragraph as far as capitalization is concerned, but \tex is not in vertical mode at this point) or punctuation after periods which are not really end"=of"=sentence periods (for example, after an ellipsis like «[\dots\unkern]» a command such as \cmd{addperiod} would do nothing since parentheses and brackets are transparent to the punctuation tracker). In such cases, use the following commands in bibliography and citation styles to mark the beginning or middle of a sentence if and where required: +The facilities for punctuation tracking and automatic capitalization are very reliable under normal circumstances, but there are always marginal cases which may require manual intervention. Typical cases are localisation strings printed as the first word in a footnote (which is usually treated as the beginning of a paragraph as far as capitalization is concerned, but \tex is not in vertical mode at this point) or punctuation after periods which are not really end"=of"=sentence periods (for example, after an ellipsis like «[\dots\unkern]» a command such as \cmd{addperiod} would do nothing since parentheses and brackets are transparent to the punctuation tracker). In such cases, use the following commands in bibliography and citation styles to mark the beginning or middle of a sentence if and where required: \begin{ltxsyntax} \csitem{bibsentence} -This command marks the beginning of a sentence. A localization string immediately after this command will be capitalized and the punctuation tracker is reset, \ie this command hides all preceding punctuation marks from the punctuation tracker and enforces capitalization. +This command marks the beginning of a sentence. A localisation string immediately after this command will be capitalized and the punctuation tracker is reset, \ie this command hides all preceding punctuation marks from the punctuation tracker and enforces capitalization. \csitem{midsentence} -This command marks the middle of a sentence. A localization string immediately after this command will not be capitalized and the punctuation tracker is reset, \ie this command hides all preceding punctuation marks from the punctuation tracker and suppresses capitalization. +This command marks the middle of a sentence. A localisation string immediately after this command will not be capitalized and the punctuation tracker is reset, \ie this command hides all preceding punctuation marks from the punctuation tracker and suppresses capitalization. \csitem*{midsentence*} @@ -9077,14 +9206,14 @@ The starred variant of \cmd{midsentence} differs from the regular one in that a \subsection{Localization Strings} \label{aut:str} -Localization strings are key terms such as <edition> or <volume> which are automatically translated by \biblatex's localization modules. See \secref{aut:lng} for an overview and \secref{aut:lng:key} for a list of all strings supported by default. The commands in this section are used to print the localized term. +Localization strings are key terms such as <edition> or <volume> which are automatically translated by \biblatex's localisation modules. See \secref{aut:lng} for an overview and \secref{aut:lng:key} for a list of all strings supported by default. The commands in this section are used to print the localised term. \begin{ltxsyntax} \cmditem{bibstring}[wrapper]{key} -Prints the localization string \prm{key}, where \prm{key} is an identifier in lowercase letters (see \secref{aut:lng:key}). The string will be capitalized as required, see \secref{aut:pct:cfg} for details. -Depending on the \opt{abbreviate} package option from \secref{use:opt:pre:gen}, \cmd{bibstring} prints the short or the long version of the string. If localization strings are nested, \ie if \cmd{bibstring} is used in another string, it will behave like \cmd{bibxstring}. +Prints the localisation string \prm{key}, where \prm{key} is an identifier in lowercase letters (see \secref{aut:lng:key}). The string will be capitalized as required, see \secref{aut:pct:cfg} for details. +Depending on the \opt{abbreviate} package option from \secref{use:opt:pre:gen}, \cmd{bibstring} prints the short or the long version of the string. If localisation strings are nested, \ie if \cmd{bibstring} is used in another string, it will behave like \cmd{bibxstring}. If the \prm{wrapper} argument is given, the string is passed to the \prm{wrapper} for formatting. This is intended for font commands such as \cmd{emph}. \cmditem{biblstring}[wrapper]{key} @@ -9133,7 +9262,7 @@ Similar to \cmd{bibsstring} but the whole term is lowercased. \cmditem{bibxstring}{key} -A simplified but expandable version of \cmd{bibstring}. Note that this variant does not capitalize automatically, nor does it hook into the punctuation tracker. It is intended for special cases in which strings are nested or an expanded localization string is required in a test. +A simplified but expandable version of \cmd{bibstring}. Note that this variant does not capitalize automatically, nor does it hook into the punctuation tracker. It is intended for special cases in which strings are nested or an expanded localisation string is required in a test. \cmditem{bibxlstring}[wrapper]{key} @@ -9145,25 +9274,25 @@ Similar to \cmd{bibxstring} but always uses the short string, ignoring the \opt{ \cmditem{mainlang} -Switches from the current language to the main document language. This can be used the \prm{wrapper} argument in the localization string commands above. +Switches from the current language to the main document language. This can be used the \prm{wrapper} argument in the localisation string commands above. \end{ltxsyntax} \subsection{Localization Modules} \label{aut:lng} -A localization module provides translations for key terms such as <edition> or <volume> as well as definitions for language specific features such as the date format and ordinals. These definitions are provided in files with the suffix \file{lbx}. The base name of the file must be a language name known to the \sty{babel}/\sty{polyglossia} packages. The \file{lbx} files may also be used to map \sty{babel}/\sty{polyglossia} language names to the backend modules of the \biblatex package. All localization modules are loaded on demand in the document body. Note that the contents of the file are processed in a group and that the category code of the character \texttt{@} is temporarily set to <letter>. +A localisation module provides translations for key terms such as <edition> or <volume> as well as definitions for language specific features such as the date format and ordinals. These definitions are provided in files with the suffix \file{lbx}. The base name of the file must be a language name known to the \sty{babel}/\sty{polyglossia} packages. The \file{lbx} files may also be used to map \sty{babel}/\sty{polyglossia} language names to the backend modules of the \biblatex package. All localisation modules are loaded on demand in the document body. Note that the contents of the file are processed in a group and that the category code of the character \texttt{@} is temporarily set to <letter>. \subsubsection{Localization Commands} \label{aut:lng:cmd} -The user"=level versions of the localization commands were already introduced in \secref{use:lng}. When used in \file{lbx} files, however, the syntax of localization commands is different from the user syntax in the preamble and the configuration file. When used in localization files, there is no need to specify the \prm{language} because the mapping of strings to a language is already provided by the name of the \file{lbx} file. +The user"=level versions of the localisation commands were already introduced in \secref{use:lng}. When used in \file{lbx} files, however, the syntax of localisation commands is different from the user syntax in the preamble and the configuration file. When used in localisation files, there is no need to specify the \prm{language} because the mapping of strings to a language is already provided by the name of the \file{lbx} file. \begin{ltxsyntax} \cmditem{DeclareBibliographyStrings}{definitions} -This command is only available in \file{lbx} files. It is used to define localization strings. The \prm{definitions} consist of \keyval pairs which assign an expression to an identifier. A complete list of all keys supported by default is given is \secref{aut:lng:key}. Note that the syntax of the value is different in \file{lbx} files. The value assigned to a key consists of two expressions, each of which is wrapped in an additional pair of brackets. This is best shown by example: +This command is only available in \file{lbx} files. It is used to define localisation strings. The \prm{definitions} consist of \keyval pairs which assign an expression to an identifier. A complete list of all keys supported by default is given is \secref{aut:lng:key}. Note that the syntax of the value is different in \file{lbx} files. The value assigned to a key consists of two expressions, each of which is wrapped in an additional pair of brackets. This is best shown by example: \begin{ltxexample} \DeclareBibliographyStrings{% @@ -9183,7 +9312,7 @@ The first value is the long, written out expression, the second one is an abbrev } \end{ltxexample} -The above examples are slightly simplified. Real localization files should use the punctuation and formatting commands discussed in \secref{aut:pct:pct, use:fmt} instead of literal punctuation. Here is an excerpt from a real localization file: +The above examples are slightly simplified. Real localisation files should use the punctuation and formatting commands discussed in \secref{aut:pct:pct, use:fmt} instead of literal punctuation. Here is an excerpt from a real localisation file: \begin{ltxexample} bibliography = {{Bibliography}{Bibliography}}, @@ -9198,7 +9327,7 @@ Note the handling of abbreviation dots, the spacing in abbreviated expressions, \cmditem{InheritBibliographyStrings}{language} -This command is only available in \file{lbx} files. It copies the localization strings for \prm{language} to the current language, as specified by the name of the \file{lbx} file. +This command is only available in \file{lbx} files. It copies the localisation strings for \prm{language} to the current language, as specified by the name of the \file{lbx} file. \cmditem{DeclareBibliographyExtras}{code} @@ -9206,7 +9335,7 @@ This command is only available in \file{lbx} files. It is used to adapt language \cmditem{UndeclareBibliographyExtras}{code} -This command is only available in \file{lbx} files. It is used to restore any formatting commands modified with \cmd{DeclareBibliographyExtras}. If a redefined command is included in \secref{aut:fmt:lng}, there is no need to restore its previous definition since these commands are localized by all language modules anyway. +This command is only available in \file{lbx} files. It is used to restore any formatting commands modified with \cmd{DeclareBibliographyExtras}. If a redefined command is included in \secref{aut:fmt:lng}, there is no need to restore its previous definition since these commands are localised by all language modules anyway. \cmditem{InheritBibliographyExtras}{language} @@ -9236,14 +9365,14 @@ This command maps a \sty{babel}/\sty{polyglossia} language identifier to an \fil \cmditem{NewBibliographyString}{key} -This command, which may be used in the preamble (including \file{cbx} and \file{bbx} files) as well as in \file{lbx} files, declares new localization strings, \ie it initializes a new \prm{key} to be used in the \prm{definitions} of \cmd{DefineBibliographyStrings} or \cmd{DeclareBibliographyStrings}. The \prm{key} argument may also be a comma"=separated list of key names. When used in an \file{lbx}, the \prm{key} is initialized only for the language specified by the name of the \file{lbx} file. The keys listed in \secref{aut:lng:key} are defined by default. +This command, which may be used in the preamble (including \file{cbx} and \file{bbx} files) as well as in \file{lbx} files, declares new localisation strings, \ie it initializes a new \prm{key} to be used in the \prm{definitions} of \cmd{DefineBibliographyStrings} or \cmd{DeclareBibliographyStrings}. The \prm{key} argument may also be a comma"=separated list of key names. When used in an \file{lbx}, the \prm{key} is initialized only for the language specified by the name of the \file{lbx} file. The keys listed in \secref{aut:lng:key} are defined by default. \end{ltxsyntax} \subsubsection{Localization Keys} \label{aut:lng:key} -The localization keys in this section are defined by default and covered by the localization files which come with \biblatex. Note that these strings are only available in citations, the bibliography and bibliography lists. All expressions should be capitalized as they usually are when used in the middle of a sentence. \biblatex will capitalize them automatically at the beginning of a sentence. The only exceptions to these rules are the three strings intended for use in headings. +The localisation keys in this section are defined by default and covered by the localisation files which come with \biblatex. Note that these strings are only available in citations, the bibliography and bibliography lists. All expressions should be capitalized as they usually are when used in the middle of a sentence. \biblatex will capitalize them automatically at the beginning of a sentence. The only exceptions to these rules are the three strings intended for use in headings. \paragraph{Headings} \label{aut:lng:key:bhd} @@ -9418,7 +9547,7 @@ The following keys refer to roles which are expressed as an action (<edited by>, \item[byreviser] The expression <revised by \prm{name}>. \item[byreviewer] The expression <reviewed by \prm{name}>. \item[bycollaborator] An expression like <in collaboration with \prm{name}> or <in cooperation with \prm{name}>. -\item[bytranslator] The expression <translated by \prm{name}> or <translated from \prm{language} by \prm{name}>. +\item[bytranslator] The expression <translated by \prm{name}> or <translated from \prm{language} by \prm{name}>. \item[bycommentator] The expression <commented by \prm{name}>. \item[byannotator] The expression <annotated by \prm{name}>. \end{keymarglist} @@ -9714,6 +9843,7 @@ Other expressions frequently used in citations: \item[langpolish] The language <Polish>. \item[langportuguese] The language <Portuguese>. \item[langrussian] The language <Russian>. +\item[langslovak] The language <Slovak>. \item[langslovene] The language <Slovene>. \item[langspanish] The language <Spanish>. \item[langswedish] The language <Swedish>. @@ -9725,8 +9855,8 @@ The following strings are intended for use in phrases like <translated from [the \item[fromamerican] The expression <from [the] American> or <from [the] American English>. \item[frombrazilian] The expression <from [the] Brazilian> or <from [the] Brazilian Portuguese>. \item[fromcatalan] The expression <from [the] Catalan>. -\item[fromczech] The expression <from [the] Czech>. \item[fromcroatian] The expression <from [the] Croatian>. +\item[fromczech] The expression <from [the] Czech>. \item[fromdanish] The expression <from [the] Danish>. \item[fromdutch] The expression <from [the] Dutch>. \item[fromenglish] The expression <from [the] English>. @@ -9741,6 +9871,7 @@ The following strings are intended for use in phrases like <translated from [the \item[frompolish] The expression <from [the] Polish>. \item[fromportuguese] The expression <from [the] Portuguese>. \item[fromrussian] The expression <from [the] Russian>. +\item[fromslovak] The expression <from [the] Slovak>. \item[fromslovene] The expression <from [the] Slovene>. \item[fromspanish] The expression <from [the] Spanish>. \item[fromswedish] The expression <from [the] Swedish>. @@ -9749,7 +9880,7 @@ The following strings are intended for use in phrases like <translated from [the \paragraph{Country Names} \label{aut:lng:key:cnt} -Country names are localized by using the string \texttt{country} plus the \acr{ISO}-3166 country code as the key. The short version of the translation should be the \acr{ISO}-3166 country code. Note that only a small number of country names is defined by default, mainly to illustrate this scheme. These keys are used in the \bibfield{location} list of \bibtype{patent} entries but they may be useful for other purposes as well. +Country names are localised by using the string \texttt{country} plus the \acr{ISO}-3166 country code as the key. The short version of the translation should be the \acr{ISO}-3166 country code. Note that only a small number of country names is defined by default, mainly to illustrate this scheme. These keys are used in the \bibfield{location} list of \bibtype{patent} entries but they may be useful for other purposes as well. \begin{keymarglist} \item[countryde] The name <Germany>, abbreviated as \texttt{DE}. @@ -9763,7 +9894,7 @@ Country names are localized by using the string \texttt{country} plus the \acr{I \paragraph{Patents and Patent Requests} \label{aut:lng:key:pat} -Strings related to patents are localized by using the term \texttt{patent} plus the \acr{ISO}-3166 country code as the key. Note that only a small number of patent keys is defined by default, mainly to illustrate this scheme. These keys are used in the \bibfield{type} field of \bibtype{patent} entries. +Strings related to patents are localised by using the term \texttt{patent} plus the \acr{ISO}-3166 country code as the key. Note that only a small number of patent keys is defined by default, mainly to illustrate this scheme. These keys are used in the \bibfield{type} field of \bibtype{patent} entries. \begin{keymarglist} \item[patent] The generic term <patent>. @@ -9797,10 +9928,10 @@ This section corresponds to \secref{use:fmt:fmt} in the user part of the manual. \begin{ltxsyntax} -\csitem{bibnamedelima}\BiberOnlyMark +\csitem{bibnamedelima} This delimiter controls the spacing between the elements which make up a name part. It is inserted automatically by the backend after the first name element if the element is less than three characters long and before the last element. The default definition is \cmd{addhighpenspace}, \ie a space penalized by the value of the \cnt{highnamepenalty} counter (\secref{use:fmt:len}). Please refer to \secref{use:cav:nam} for further details. -\csitem{bibnamedelimb}\BiberOnlyMark +\csitem{bibnamedelimb} This delimiter controls the spacing between the elements which make up a name part. It is inserted automatically by the backend between all name elements where \cmd{bibnamedelima} does not apply. The default definition is \cmd{addlowpenspace}, \ie a space penalized by the value of the \cnt{lownamepenalty} counter (\secref{use:fmt:len}). Please refer to \secref{use:cav:nam} for further details. \csitem{bibnamedelimc} @@ -9809,16 +9940,16 @@ This delimiter controls the spacing between name parts. The default name formats \csitem{bibnamedelimd} This delimiter controls the spacing between name parts. The default name formats use it between all name parts where \cmd{bibnamedelimc} does not apply. The default definition is \cmd{addlowpenspace}, \ie a space penalized by the value of the \cnt{lownamepenalty} counter (\secref{use:fmt:len}). Please refer to \secref{use:cav:nam} for further details. -\csitem{bibnamedelimi}\BiberOnlyMark +\csitem{bibnamedelimi} This delimiter replaces \cmd{bibnamedelima/b} after initials. Note that this only applies to initials given as such in the \file{bib} file, not to the initials automatically generated by \biblatex which use their own set of delimiters. -\csitem{bibinitperiod}\BiberOnlyMark +\csitem{bibinitperiod} The punctuation inserted automatically by the backend after all initials unless \cmd{bibinithyphendelim} applies. The default definition is a period (\cmd{adddot}). Please refer to \secref{use:cav:nam} for further details. -\csitem{bibinitdelim}\BiberOnlyMark +\csitem{bibinitdelim} The spacing inserted automatically by the backend between multiple initials unless \cmd{bibinithyphendelim} applies. The default definition is an unbreakable interword space. Please refer to \secref{use:cav:nam} for further details. -\csitem{bibinithyphendelim}\BiberOnlyMark +\csitem{bibinithyphendelim} The punctuation inserted automatically by the backend between the initials of hyphenated name parts, replacing \cmd{bibinitperiod} and \cmd{bibinitdelim}. The default definition is a period followed by an unbreakable hyphen. Please refer to \secref{use:cav:nam} for further details. \csitem{bibindexnamedelima} @@ -9876,7 +10007,7 @@ Use this command instead of \cmd{multinamedelim} before the final name in a name The extra delimiter to be printed after the first name in a name list consisting of two names (in addition to \cmd{finalnamedelim}) if the first name is reversed. This command should be incorporated in all formatting directives for name lists. \csitem{andothersdelim} -The delimiter to be printed before the localization string <\texttt{andothers}> if a name list like \bibfield{author} or \bibfield{editor} is truncated. This command should be incorporated in all formatting directives for name lists. +The delimiter to be printed before the localisation string <\texttt{andothers}> if a name list like \bibfield{author} or \bibfield{editor} is truncated. This command should be incorporated in all formatting directives for name lists. \csitem{multilistdelim} The delimiter to be printed between multiple items in a literal list like \bibfield{publisher} or \bibfield{location} if there are more than two names in the list. If there are only two items in the list, use the \cmd{finallistdelim} instead. This command should be incorporated in all formatting directives for literal lists. @@ -9885,7 +10016,7 @@ The delimiter to be printed between multiple items in a literal list like \bibfi Use this command instead of \cmd{multilistdelim} before the final item in a literal list. \csitem{andmoredelim} -The delimiter to be printed before the localization string <\texttt{andmore}> if a literal list like \bibfield{publisher} or \bibfield{location} is truncated. This command should be incorporated in all formatting directives for literal lists. +The delimiter to be printed before the localisation string <\texttt{andmore}> if a literal list like \bibfield{publisher} or \bibfield{location} is truncated. This command should be incorporated in all formatting directives for literal lists. \csitem{multicitedelim} The delimiter printed between citations if multiple entry keys are passed to a single citation command. This command should be incorporated in the definition of all citation commands, for example in the \prm{sepcode} argument passed to \cmd{DeclareCiteCommand}. See \secref{aut:cbx:cbx} for details. @@ -9905,6 +10036,9 @@ The delimiter to be printed between the author\slash editor and the title. This \csitem{nameyeardelim} The delimiter to be printed between the author\slash editor and the year. This command should be incorporated in the definition of all citation commands of author-year citation styles. +\csitem{namelabeldelim} +The delimiter printed between the name\slash title and the label. This command should be incorporated in the definition of all citation commands of alphabetic and numeric citation styles. + \csitem{nonameyeardelim} The delimiter printed between the substitute for the labelname when it does not exist (usually the label or title in standard styles) and the year in author-year citation styles. This is only used when there is no labelname since when the labelname exists, \cmd{nameyeardelim} is used. @@ -9920,20 +10054,20 @@ The delimiter to be printed after the \prm{postnote} argument of a citation comm \csitem{extpostnotedelim} The delimiter printed between the citation and the parenthetical \prm{postnote} argument of a citation command when the postnote occurs outside of the citation parentheses. In the standard styles, this occurs when the citation uses the shorthand field of the entry. -\cmditem{mkbibnamelast}{text} -Formatting hook for the last name, to be used in all formatting directives for name lists. +\cmditem{mkbibnamefamily}{text} +Formatting hook for the family name, to be used in all formatting directives for name lists. -\cmditem{mkbibnamefirst}{text} -Similar to \cmd{mkbibnamelast}, but intended for the first name. +\cmditem{mkbibnamegiven}{text} +Similar to \cmd{mkbibnamefamily}, but intended for the given name. \cmditem{mkbibnameprefix}{text} Similar to \cmd{mkbibnamelast}, but intended for the name prefix. -\cmditem{mkbibnameaffix}{text} -Similar to \cmd{mkbibnamelast}, but intended for the name affix. +\cmditem{mkbibnamesuffix}{text} +Similar to \cmd{mkbibnamefamily}, but intended for the name suffix. \csitem{relatedpunct} -The separator between the relatedtype bibliography localization string and the data from the first related entry. +The separator between the relatedtype bibliography localisation string and the data from the first related entry. \csitem{relateddelim} The separator between the data of multiple related entries. The default definition is a linebreak. @@ -9943,7 +10077,7 @@ The separator between the data of multiple related entries. The default definiti \subsubsection{Language-specific Commands} \label{aut:fmt:lng} -This section corresponds to \secref{use:fmt:lng} in the user part of the manual. The commands discussed here are usually handled by the localization modules, but may also be redefined by users on a per"=language basis. Note that all commands starting with \cmd{mk\dots} take one or more mandatory arguments. +This section corresponds to \secref{use:fmt:lng} in the user part of the manual. The commands discussed here are usually handled by the localisation modules, but may also be redefined by users on a per"=language basis. Note that all commands starting with \cmd{mk\dots} take one or more mandatory arguments. \begin{ltxsyntax} @@ -10127,7 +10261,7 @@ A generic command which prints its argument as superscripted text. This is a sim \cmditem{mkbibmonth}{integer} -This command takes an integer argument and prints it as a month name. Even though the output of this command is language specific, its definition is not, hence it is normally not redefined in localization modules. +This command takes an integer argument and prints it as a month name. Even though the output of this command is language specific, its definition is not, hence it is normally not redefined in localisation modules. \cmditem{mkdatezeros}{integer} @@ -10137,13 +10271,9 @@ This command strips leading zeros from a number or preserves them, depending on This command strips leading zeros from a number. It is intended for date formatting and ordinals. -\optitem{shorthandwidth}\BibTeXOnlyMark +\optitem{<labelfield>width} -A special field formatting directive which is used internally by \biblatex. When the bibliographic data is read from the \file{bbl} file, \biblatex measures the values of all \bibfield{shorthand} fields and sets the length register \cmd{shorthandwidth} to the width of the widest shorthand (see \secref{aut:fmt:ilc}). In order to determine the correct width, the package considers two factors: the definition of \cmd{bibfont} and this formatting directive. All styles should adjust this directive such that it corresponds to the format used in the list of shorthands. - -\optitem{<labelfield>width}\BiberOnlyMark - -With \biber, for every field marked as a <Label field> in the data model, a formatting directive is created as per \texttt{shorthandwidth} above. Since \bibfield{shorthand} is so marked in the default data model, this functionality is a superset of that described for \texttt{shorthandwidth}. +For every field marked as a <Label field> in the data model, a formatting directive is created as per \texttt{shorthandwidth} above. Since \bibfield{shorthand} is so marked in the default data model, this functionality is a superset of that described for \texttt{shorthandwidth}. \optitem{labelnumberwidth} @@ -10202,13 +10332,9 @@ The length registers and counters discussed here are used by \biblatex to pass i \begin{ltxsyntax} -\lenitem{shorthandwidth}\BibTeXOnlyMark - -This length register indicates the width of the widest \bibfield{shorthand}. Bibliography styles should incorporate this length in the definition of the list of shorthands, if applicable. +\lenitem{<labelfield>width} -\lenitem{<labelfield>width}\BiberOnlyMark - -With \biber, for every field marked as a <Label field> in the data model, a length register is created as per \texttt{shorthandwidth} above. Since \bibfield{shorthand} is so marked in the default data model, this functionality is a superset of that described for \texttt{shorthandwidth}. +For every field marked as a <Label field> in the data model, a length register is created as per \texttt{shorthandwidth} above. Since \bibfield{shorthand} is so marked in the default data model, this functionality is a superset of that described for \texttt{shorthandwidth}. \lenitem{labelnumberwidth} @@ -10287,6 +10413,14 @@ This counter holds the \prm{start} argument passed to \cmd{printnames} or \cmd{p This counter holds the \prm{stop} argument passed to \cmd{printnames} or \cmd{printlist}. It is intended for use in list formatting directives and does not hold a meaningful value when used anywhere else. +\csitem{currentlang} + +The name of the currently active language for \biblatex. Can be used anywhere and +defaults to the main document language. This is automatically switched +inside entries which define \bibfield{langid}, given suitable settings of the +\opt{autolang} and \opt{language} options. Note that this does not track +all document language changes, only the current \biblatex\ setting. + \csitem{currentfield} The name of the field currently being processed by \cmd{printfield}. This information is only available locally in field formatting directives. @@ -10314,13 +10448,13 @@ Appends the \prm{code} to an internal hook executed at the beginning of the bibl Appends the \prm{code} to an internal hook executed at the beginning of the list of shorthands. The \prm{code} is executed at the beginning of the list of shorthands, immediately after the \prm{begin code} of \cmd{defbibenvironment}. This command may only be used in the preamble. -When using \biber, this is just an alias for: +This is just an alias for: \begin{ltxexample} \AtBeginBiblist{shorthand}{code} \end{ltxexample} -\cmditem{AtBeginBiblist}{biblistname}{code}\BiberOnlyMark +\cmditem{AtBeginBiblist}{biblistname}{code} Appends the \prm{code} to an internal hook executed at the beginning of the bibliography list \prm{biblistname}. The \prm{code} is executed at the beginning of the bibliography list, immediately after the \prm{begin code} of \cmd{defbibenvironment}. This command may only be used in the preamble. @@ -10332,13 +10466,13 @@ Appends the \prm{code} to an internal hook executed at the beginning of every it Appends the \prm{code} to an internal hook executed at the beginning of every item in the list of shorthands. The \prm{code} is executed immediately after the \prm{item code} of \cmd{defbibenvironment}. The bibliographic data of the respective entry is available at this point. This command may only be used in the preamble. -When using \biber, this is just an alias for: +This is just an alias for: \begin{ltxexample} \AtEveryBiblistitem{shorthand}{code} \end{ltxexample} -\cmditem{AtEveryBiblistitem}{biblistname}{code}\BiberOnlyMark +\cmditem{AtEveryBiblistitem}{biblistname}{code} Appends the \prm{code} to an internal hook executed at the beginning of every item in the bibliography list named \prm{biblistname}. The \prm{code} is executed immediately after the \prm{item code} of \cmd{defbibenvironment}. The bibliographic data of the respective entry is available at this point. This command may only be used in the preamble. @@ -10488,7 +10622,7 @@ External abstracts and annotations have been discussed in \secref{use:use:prf}. % If the \bibfield{abstract}\slash \bibfield{annotation} field is undefined, the above code tries to load the abstracts\slash annotations from an external file. The \cmd{printfile} commands also incorporate file name prefixes which may be redefined by users. Note that you must enable \cmd{printfile} explicitly by setting the \opt{loadfiles} package option from \secref{use:opt:pre:gen}. This feature is disabled by default for performance reasons. -\subsubsection[Name Disambiguation]{Name Disambiguation\BiberOnlyMark} +\subsubsection[Name Disambiguation]{Name Disambiguation} \label{aut:cav:amb} The \opt{uniquename} and \opt{uniquelist} options introduced in \secref{use:opt:pre:int} support various modes of operation. This section explains the differences between these modes by way of example. The \opt{uniquename} option disambiguates individual names in the \bibfield{labelname} list. The \opt{uniquelist} option disambiguates the \bibfield{labelname} list if it has become ambiguous after \opt{maxnames}\slash \opt{minnames} truncation. You can use either option stand-alone or combine both. @@ -10928,7 +11062,7 @@ We still need to handle cases in which there is no series information at all, so \printfield{number}}}% \end{ltxexample} % -One final hint: localization strings are not literal text as far as the punctuation tracker is concerned. Since \cmd{bibstring} and similar commands interface with the punctuation tracker, there is no need to wrap them in a \cmd{printtext} command. +One final hint: localisation strings are not literal text as far as the punctuation tracker is concerned. Since \cmd{bibstring} and similar commands interface with the punctuation tracker, there is no need to wrap them in a \cmd{printtext} command. \paragraph{Advanced Usage} @@ -11033,7 +11167,7 @@ Since the alternative \file{lbx} file can inherit strings from the standard \pat \endinput \end{ltxexample} % -Alternative \file{lbx} files must ensure that the localization module is complete. They will typically do so by inheriting data from the corresponding standard module. If the language \texttt{american} is mapped to \path{american-mla.lbx}, \biblatex will not load \path{american.lbx} unless this module is requested explicitly. In the above example, inheriting <strings> and <extras> will cause \biblatex to load \path{american.lbx} before applying the modifications in \path{american-mla.lbx}. +Alternative \file{lbx} files must ensure that the localisation module is complete. They will typically do so by inheriting data from the corresponding standard module. If the language \texttt{american} is mapped to \path{american-mla.lbx}, \biblatex will not load \path{american.lbx} unless this module is requested explicitly. In the above example, inheriting <strings> and <extras> will cause \biblatex to load \path{american.lbx} before applying the modifications in \path{american-mla.lbx}. Note that \cmd{DeclareLanguageMapping} is not intended to handle language variants (\eg American English vs. British English) or \sty{babel}/\sty{polyglossia} language aliases (\eg \texttt{USenglish} vs. \texttt{american}). For example, \sty{babel}/\sty{polyglossia} offers the \texttt{USenglish} option which is similar to \texttt{american}. Therefore, \biblatex ships with an \path{USenglish.lbx} file which simply inherits all data from \path{american.lbx} (which in turn gets the <strings> from \path{english.lbx}). In other words, the mapping of language variants and \sty{babel}/\sty{polyglossia} language aliases happens on the file level, the point being that \biblatex's language support can be extended simply by adding additional \file{lbx} files. There is no need for centralized mapping. If you need support for, say, Portuguese (babel/polyglossia: \file{portuges}), you create a file named \path{portuges.lbx}. If \sty{babel}/\sty{polyglossia} offered an alias named \texttt{brasil}, you would create \path{brasil.lbx} and inherit the data from \path{portuges.lbx}. In contrast to that, the point of \cmd{DeclareLanguageMapping} is handling \emph{stylistic} variants like <humanities vs. natural sciences> or <\acr{mla} vs. \acr{apa}> etc. which will typically be built on top of existing \file{lbx} files. @@ -11075,7 +11209,7 @@ In order to minimize the risk of name clashes, \latex packages typically prefix \item[\texttt{cbx}] This is the recommended prefix for internal macros defined in citation styles. -\item[\texttt{lbx}] This is the recommended base prefix for internal macros defined in localization modules. The localization module should add a second prefix to specify the language. For example, an internal macro defined by the Spanish localization module would be named \cmd{lbx@es@macro}. +\item[\texttt{lbx}] This is the recommended base prefix for internal macros defined in localisation modules. The localisation module should add a second prefix to specify the language. For example, an internal macro defined by the Spanish localisation module would be named \cmd{lbx@es@macro}. \end{marglist} @@ -11398,7 +11532,7 @@ ydnt & presort\alt mm & \end{longtable} \endgroup -\section{\biblatexml}\BiberOnlyMark +\section{\biblatexml} \label{apx:biblatexml} The \biblatexml\ XML datasource format is designed to be an extensible and modern data source format for \biblatex\ users. There are limitations with \bibtex\ format \file{.bib} files, in particular one might mention UTF-8 support and name formats. \biber\ goes some way to addressing the UTF-8 limitations by using a modified version of the \texttt{btparse} C library but the rather archaic name parsing rules for \bibtex\ are hard-coded and specific to simple Western names. @@ -11695,9 +11829,11 @@ minalphanames &\+&\+&\+&\+\\ minbibnames &\+&\+&\+&\+\\ mincitenames &\+&\+&\+&\+\\ mincrossrefs &\+&\+&\_&\_\\ +minxrefs &\+&\+&\_&\_\\ minitems &\+&\+&\+&\+\\ minnames &\+&\+&\+&\+\\ natbib &\+&\_&\_&\_\\ +noinherit &\_&\_&\_&\+\\ notetype &\+&\+&\_&\_\\ opcittracker &\+&\+&\_&\_\\ openbib &\+&\+&\_&\_\\ @@ -11726,6 +11862,7 @@ terseinits &\+&\+&\_&\_\\ texencoding &\+&\+&\_&\_\\ uniquelist &\+&\+&\+&\+\\ uniquename &\+&\+&\+&\+\\ +uniquetitle &\+&\+&\+&\_\\ urldate &\+&\+&\_&\_\\ url &\+&\+&\_&\_\\ useprefix &\+&\+&\+&\+\\ @@ -11736,18 +11873,35 @@ use$<$name$>$ &\+&\+&\+&\+\\ \section{Revision History} \label{apx:log} -This revision history is a list of changes relevant to users of this package. Changes of a more technical nature which do not affect the user interface or the behavior of the package are not included in the list. If an entry in the revision history states that a feature has been \emph{improved} or \emph{extended}, this indicates a modification which either does not affect the syntax and behavior of the package or is syntactically backwards compatible (such as the addition of an optional argument to an existing command). Entries stating that a feature has been \emph{modified}, \emph{renamed}, or \emph{removed} demand attention. They indicate a modification which may require changes to existing styles or documents in some, hopefully rare, cases. The numbers on the right indicate the relevant section of this manual. +This revision history is a list of changes relevant to users of this package. Changes of a more technical nature which do not affect the user interface or the behavior of the package are not included in the list. More technical details are to be found in the CHANGES file. The numbers on the right indicate the relevant section of this manual. \begin{changelog} +\begin{release}{3.4}{2016-05-10} +\item Added \cmd{ifcrossrefsource} and \cmd{ifxrefsource}\see{aut:aux:tst} +\item Added data annotation feature\see{use:annote} +\item Added package option \opt{minxrefs}\see{use:opt:pre:gen} +\item Added \cmd{ifuniqueprimaryauthor} and associated global option\see{aut:aux:tst} +\item Added \cmd{DeprecateField}, \cmd{DeprecateList} and \cmd{DeprecateName}\see{aut:bib:dat} +\item Added \cmd{ifcaselang}\see{aut:aux:tst} +\item Added \cmd{DeclareSortTranslit}\see{aut:ctm:srt} +\item Added \opt{uniquetitle} test\see{aut:aux:tst} +\item Added \cmd{namelabeldelim}\see{use:fmt:fmt} +\item New starred variants of the \cmd{assignrefcontext*} macros\see{use:bib:context} +\item New context-sensitive delimiter interface\see{use:fmt:csd} +\item Moved \opt{prefixnumbers} option to \cmd{newrefcontext} and renamed to \opt{labelprefix}\see{use:bib:context} +\item Added \cmd{DeclareDatafieldSet}\see{aut:ctm:dsets} +\end{release} + \begin{release}{3.3}{2016-03-01} -\item Schema documentation for \biblatexml\see{apx:biblatexml}\BiberOnlyMark -\item Sourcemapping documentation and examples for \biblatexml\see{aut:ctm:map}\BiberOnlyMark -\item Changes for name formats to generalise available name parts\see{aut:bib:fmt}\BiberOnlyMark +\item New macros for auto-assignment of refcontexts\see{use:bib:context} +\item Schema documentation for \biblatexml\see{apx:biblatexml} +\item Sourcemapping documentation and examples for \biblatexml\see{aut:ctm:map} +\item Changes for name formats to generalise available name parts\see{aut:bib:fmt} \item \opt{useprefix} can now be specified per-namelist and per-name in \biblatexml datasources -\item New sourcemapping options for creating new entries dynamically and looping over map steps\see{aut:ctm:map}\BiberOnlyMark +\item New sourcemapping options for creating new entries dynamically and looping over map steps\see{aut:ctm:map} \item Added \opt{noalphaothers} and enhanced name range selection in \cmd{DeclareLabelalphaTemplate}\see{aut:ctm:lab} -\item Added \cmd{DeclareDatamodelConstant}\see{aut:ctm:dm}\BiberOnlyMark +\item Added \cmd{DeclareDatamodelConstant}\see{aut:ctm:dm} \item Renamed \opt{firstinits} and \opt{sortfirstinits} \item Added \cmd{DeclareSortingNamekeyScheme}\see{aut:ctm:srt} \item Removed messy experimental endnote and zoterordf support for \biber @@ -11756,13 +11910,13 @@ This revision history is a list of changes relevant to users of this package. Ch \end{release} \begin{release}{3.2}{2015-12-28} -\item Added \opt{pstrwidth} and \opt{pcompound} to \cmd{DeclareLabelalphaTemplate}\see{aut:ctm:lab}\BiberOnlyMark +\item Added \opt{pstrwidth} and \opt{pcompound} to \cmd{DeclareLabelalphaTemplate}\see{aut:ctm:lab} \item Added \cmd{AtEachCitekey}\see{aut:fmt:hok} \end{release} \begin{release}{3.1}{2015-09} -\item Added \cmd{DeclareNolabel}\see{aut:ctm:lab}\BiberOnlyMark -\item Added \cmd{DeclareNolabelwidthcount}\see{aut:ctm:lab}\BiberOnlyMark +\item Added \cmd{DeclareNolabel}\see{aut:ctm:lab} +\item Added \cmd{DeclareNolabelwidthcount}\see{aut:ctm:lab} \end{release} \begin{release}{3.0}{2015-04-20} @@ -11780,20 +11934,20 @@ This revision history is a list of changes relevant to users of this package. Ch \end{release} \begin{release}{2.9}{2014-02-25} -\item Generalised shorthands facility\see{use:bib:biblist}\BiberOnlyMark -\item Sorting locales can now be defined as part of a sorting scheme\see{aut:ctm:srt}\BiberOnlyMark -\item Added \bibfield{sortinithash}\see{aut:bbx:fld:gen}\BiberOnlyMark +\item Generalised shorthands facility\see{use:bib:biblist} +\item Sorting locales can now be defined as part of a sorting scheme\see{aut:ctm:srt} +\item Added \bibfield{sortinithash}\see{aut:bbx:fld:gen} \item Added Slovene localisation (Tea TuÅ¡ar and Bogdan FilipiÄ) \item Added \cmd{mkbibitalic}\see{aut:fmt:ich} \item Recommend \texttt{begentry} and \texttt{finentry} bibliography macros\see{aut:bbx:drv} \end{release} \begin{release}{2.8a}{2013-11-25} -\item Split option \opt{language=auto} into \opt{language=autocite} and \opt{language=autobib}\see{use:opt:pre:gen}\BiberOnlyMark +\item Split option \opt{language=auto} into \opt{language=autocite} and \opt{language=autobib}\see{use:opt:pre:gen} \end{release} \begin{release}{2.8}{2013-10-21} -\item New \bibfield{langidopts}\see{bib:fld:spc}\BiberOnlyMark +\item New \bibfield{langidopts}\see{bib:fld:spc} \item \bibfield{hyphenation} field renamed to \bibfield{langid}\see{bib:fld:spc} \item \sty{polyglossia} support \item Renamed \opt{babel} option to \opt{autolang}\see{use:opt:pre:gen} @@ -11816,54 +11970,54 @@ This revision history is a list of changes relevant to users of this package. Ch \item Added multicite variants of \cmd{volcite} and related commands\see{use:cit:spc} \item Added \cmd{finalandsemicolon}\see{use:fmt:lng} \item Added citation delimiter \cmd{textcitedelim} for \cmd{textcite} and related commands to styles\see{aut:fmt:fmt} -\item Updated Russian localization (Oleg Domanov) -\item Fixed Brazilian and Finnish localization +\item Updated Russian localisation (Oleg Domanov) +\item Fixed Brazilian and Finnish localisation \end{release} \begin{release}{2.6}{2013-04-30} \item Added \cmd{printunit}\see{aut:pct:new} -\item Added field \bibfield{clonesourcekey}\see{aut:bbx:fld:gen}\BiberOnlyMark -\item New options for \cmd{DeclareLabelalphaTemplate}\see{aut:ctm:lab}\BiberOnlyMark -\item Added \cmd{DeclareLabeldate} and retired \cmd{DeclareLabelyear}\see{aut:ctm:fld}\BiberOnlyMark -\item Added \texttt{nodate} localization string\see{aut:lng:key:msc} +\item Added field \bibfield{clonesourcekey}\see{aut:bbx:fld:gen} +\item New options for \cmd{DeclareLabelalphaTemplate}\see{aut:ctm:lab} +\item Added \cmd{DeclareLabeldate} and retired \cmd{DeclareLabelyear}\see{aut:ctm:fld} +\item Added \texttt{nodate} localisation string\see{aut:lng:key:msc} \item Added \cmd{rangelen}\see{aut:aux:msc} \item Added starred variants of \cmd{citeauthor} and \cmd{Citeauthor}\see{use:cit:txt} -\item Restored original \texttt{url} format. Added \texttt{urlfrom} localization key\see{aut:lng:key:lab} +\item Restored original \texttt{url} format. Added \texttt{urlfrom} localisation key\see{aut:lng:key:lab} \item Added \cmd{AtNextBibliography}\see{aut:fmt:hok} \item Fixed related entry processing to allow nested and cyclic related entries -\item Added Croatian localization (Ivo Pletikosić) -\item Added Polish localization (Anastasia Kandulina, Yuriy Chernyshov) -\item Fixed Catalan localization -\item Added smart ``of'' for titles to Catalan and French localization +\item Added Croatian localisation (Ivo Pletikosić) +\item Added Polish localisation (Anastasia Kandulina, Yuriy Chernyshov) +\item Fixed Catalan localisation +\item Added smart ``of'' for titles to Catalan and French localisation \item Misc bug fixes \end{release} \begin{release}{2.5}{2013-01-10} -\item Made \texttt{url} work as a localization string, defaulting to previously hard-coded value <\textsc{URL}>. +\item Made \texttt{url} work as a localisation string, defaulting to previously hard-coded value <\textsc{URL}>. \item Changed some \biber\ option names to cohere with \biber\ 1.5. -\item New sourcemap step for conditionally removing entire entries\see{aut:ctm:map}\BiberOnlyMark -\item Updated Catalan localization (Sebastià Vila-Marta) +\item New sourcemap step for conditionally removing entire entries\see{aut:ctm:map} +\item Updated Catalan localisation (Sebastià Vila-Marta) \end{release} \begin{release}{2.4}{2012-11-28} -\item Added \bibfield{relatedoptions} field\see{aut:ctm:rel}\BiberOnlyMark -\item Added \cmd{DeclareStyleSourcemap}\see{aut:ctm:map}\BiberOnlyMark -\item Renamed \cmd{DeclareDefaultSourcemap} to \cmd{DeclareDriverSourcemap}\see{aut:ctm:map}\BiberOnlyMark +\item Added \bibfield{relatedoptions} field\see{aut:ctm:rel} +\item Added \cmd{DeclareStyleSourcemap}\see{aut:ctm:map} +\item Renamed \cmd{DeclareDefaultSourcemap} to \cmd{DeclareDriverSourcemap}\see{aut:ctm:map} \item Documented \cmd{DeclareFieldInputHandler}, \cmd{DeclareListInputHandler} and \cmd{DeclareNameInputHandler}. -\item Added Czech localization (Michal Hoftich) -\item Updated Catalan localization (Sebastià Vila-Marta) +\item Added Czech localisation (Michal Hoftich) +\item Updated Catalan localisation (Sebastià Vila-Marta) \end{release} \begin{release}{2.3}{2012-11-01} \item Better detection of situations which require a \biber\ or \LaTeX\ re-run -\item New append mode for \cmd{DeclareSourcemap} so that fields can be combined\see{aut:ctm:map}\BiberOnlyMark +\item New append mode for \cmd{DeclareSourcemap} so that fields can be combined\see{aut:ctm:map} \item Extended auxiliary indexing macros -\item Added support for plural localization strings with \bibfield{relatedtype}\see{aut:ctm:rel}\BiberOnlyMark +\item Added support for plural localisation strings with \bibfield{relatedtype}\see{aut:ctm:rel} \item Added \cmd{csfield} and \cmd{usefield}\see{aut:aux:dat} \item Added starred variant of \cmd{usebibmacro}\see{aut:aux:msc} \item Added \cmd{ifbibmacroundef}, \cmd{iffieldformatundef}, \cmd{iflistformatundef} and \cmd{ifnameformatundef}\see{aut:aux:msc} -\item Added Catalan localization (Sebastià Vila-Marta) +\item Added Catalan localisation (Sebastià Vila-Marta) \item Misc bug fixes \end{release} @@ -11875,42 +12029,42 @@ This revision history is a list of changes relevant to users of this package. Ch \begin{release}{2.1}{2012-08-01} \item Misc bug fixes -\item Updated Norwegian localization (HÃ¥kon Malmedal) -\item Increased data model auto-loading possibilities\see{aut:ctm:dm}\BiberOnlyMark +\item Updated Norwegian localisation (HÃ¥kon Malmedal) +\item Increased data model auto-loading possibilities\see{aut:ctm:dm} \end{release} \begin{release}{2.0}{2012-07-01} \item Misc bug fixes -\item Generalised \opt{singletitle} test a little\see{aut:aux:tst}\BiberOnlyMark -\item Added new special field \bibfield{extratitleyear}\see{aut:bbx:fld}\BiberOnlyMark -\item Customisable data model\see{aut:ctm:dm}\BiberOnlyMark -\item Added \cmd{DeclareDefaultSourcemap}\see{aut:ctm:map}\BiberOnlyMark -\item Added \opt{labeltitle} option\see{use:opt:pre:int}\BiberOnlyMark -\item Added new special field \bibfield{extratitle}\see{aut:bbx:fld}\BiberOnlyMark -\item Made special field \bibfield{labeltitle} customisable\see{aut:bbx:fld}\BiberOnlyMark -\item Removed field \bibfield{reprinttitle}\see{use:rel}\BiberOnlyMark -\item Added related entry feature\see{use:rel}\BiberOnlyMark -\item Added \cmd{DeclareNoinit}\see{aut:ctm:noinit}\BiberOnlyMark -\item Added \cmd{DeclareNosort}\see{aut:ctm:nosort}\BiberOnlyMark -\item Added \opt{sorting} option for \cmd{printbibliography} and \cmd{printshorthands}\see{use:bib:bib}\BiberOnlyMark -\item Added \texttt{ids} field for citekey aliasing\see{bib:fld}\BiberOnlyMark -\item Added \opt{sortfirstinits} option\see{use:opt:pre:int}\BiberOnlyMark -\item Added data stream modification feature\see{aut:ctm:map}\BiberOnlyMark -\item Added customisable labels feature\see{aut:ctm:lab}\BiberOnlyMark +\item Generalised \opt{singletitle} test a little\see{aut:aux:tst} +\item Added new special field \bibfield{extratitleyear}\see{aut:bbx:fld} +\item Customisable data model\see{aut:ctm:dm} +\item Added \cmd{DeclareDefaultSourcemap}\see{aut:ctm:map} +\item Added \opt{labeltitle} option\see{use:opt:pre:int} +\item Added new special field \bibfield{extratitle}\see{aut:bbx:fld} +\item Made special field \bibfield{labeltitle} customisable\see{aut:bbx:fld} +\item Removed field \bibfield{reprinttitle}\see{use:rel} +\item Added related entry feature\see{use:rel} +\item Added \cmd{DeclareNoinit}\see{aut:ctm:noinit} +\item Added \cmd{DeclareNosort}\see{aut:ctm:nosort} +\item Added \opt{sorting} option for \cmd{printbibliography} and \cmd{printshorthands}\see{use:bib:bib} +\item Added \texttt{ids} field for citekey aliasing\see{bib:fld} +\item Added \opt{sortfirstinits} option\see{use:opt:pre:int} +\item Added data stream modification feature\see{aut:ctm:map} +\item Added customisable labels feature\see{aut:ctm:lab} \item Added \cmd{citeyear*} and \cmd{citedate*}\see{use:cit:txt} \end{release} % \begin{release}{1.7}{2011-11-13} -% \item Added \texttt{xdata} containers\see{use:use:xdat}\BiberOnlyMark -% \item Added special entry type \bibfield{xdata}\see{bib:typ:blx}\BiberOnlyMark -% \item Added special field \bibfield{xdata}\see{bib:fld:spc}\BiberOnlyMark -% \item Support \opt{maxnames}/\opt{minnames} globally/per-type/per-entry\see{use:opt:pre:gen}\BiberOnlyMark -% \item Support \opt{maxbibnames}/\opt{minbibnames} globally/per-type/per-entry\see{use:opt:pre:gen}\BiberOnlyMark -% \item Support \opt{maxcitenames}/\opt{mincitenames} globally/per-type/per-entry\see{use:opt:pre:gen}\BiberOnlyMark -% \item Support \opt{maxitems}/\opt{minitems} globally/per-type/per-entry\see{use:opt:pre:gen}\BiberOnlyMark -% \item Support \opt{maxalphanames}/\opt{minalphanames} globally/per-type/per-entry\see{use:opt:pre:int}\BiberOnlyMark -% \item Support \opt{uniquelist} globally/per-type/per-entry\see{use:opt:pre:int}\BiberOnlyMark -% \item Support \opt{uniquename} globally/per-type/per-entry\see{use:opt:pre:int}\BiberOnlyMark +% \item Added \texttt{xdata} containers\see{use:use:xdat} +% \item Added special entry type \bibfield{xdata}\see{bib:typ:blx} +% \item Added special field \bibfield{xdata}\see{bib:fld:spc} +% \item Support \opt{maxnames}/\opt{minnames} globally/per-type/per-entry\see{use:opt:pre:gen} +% \item Support \opt{maxbibnames}/\opt{minbibnames} globally/per-type/per-entry\see{use:opt:pre:gen} +% \item Support \opt{maxcitenames}/\opt{mincitenames} globally/per-type/per-entry\see{use:opt:pre:gen} +% \item Support \opt{maxitems}/\opt{minitems} globally/per-type/per-entry\see{use:opt:pre:gen} +% \item Support \opt{maxalphanames}/\opt{minalphanames} globally/per-type/per-entry\see{use:opt:pre:int} +% \item Support \opt{uniquelist} globally/per-type/per-entry\see{use:opt:pre:int} +% \item Support \opt{uniquename} globally/per-type/per-entry\see{use:opt:pre:int} % \item Added \cmd{textcite} and \cmd{textcites} to all \texttt{verbose} citation styles\see{use:xbx:cbx} % \item Added special field formats \texttt{date}, \texttt{urldate}, \texttt{origdate}, \texttt{eventdate}\see{aut:fmt:ich} % \item Added \cmd{mkcomprange*}\see{aut:aux:msc} @@ -11921,8 +12075,8 @@ This revision history is a list of changes relevant to users of this package. Ch % \item Added counter \cnt{biburlnumpenalty}\see{aut:fmt:len} % \item Added counter \cnt{biburlucpenalty}\see{aut:fmt:len} % \item Added counter \cnt{biburllcpenalty}\see{aut:fmt:len} -% \item Added localization keys \texttt{book}, \texttt{part}, \texttt{issue}, \texttt{forthcoming}\see{aut:lng:key} -% \item Added some \texttt{lang...} and \texttt{from...} localization keys\see{aut:lng:key} +% \item Added localisation keys \texttt{book}, \texttt{part}, \texttt{issue}, \texttt{forthcoming}\see{aut:lng:key} +% \item Added some \texttt{lang...} and \texttt{from...} localisation keys\see{aut:lng:key} % \item Expanded documentation\see{apx:opt} % \item Added support for Russian (Oleg Domanov) % \item Updated support for Dutch (Pieter Belmans) @@ -11931,11 +12085,11 @@ This revision history is a list of changes relevant to users of this package. Ch % \end{release} % \begin{release}{1.6}{2011-07-29} -% \item Added special field \bibfield{sortshorthand}\see{bib:fld:spc}\BiberOnlyMark +% \item Added special field \bibfield{sortshorthand}\see{bib:fld:spc} % \item Revised options \opt{maxnames}/\opt{minnames}\see{use:opt:pre:gen} -% \item Options \opt{maxcitenames}/\opt{mincitenames} now supported by backend\see{use:opt:pre:gen}\BiberOnlyMark -% \item Options \opt{maxbibnames}/\opt{minbibnames} now supported by backend\see{use:opt:pre:gen}\BiberOnlyMark -% \item Added options \opt{maxalphanames}/\opt{minalphanames}\see{use:opt:pre:int}\BiberOnlyMark +% \item Options \opt{maxcitenames}/\opt{mincitenames} now supported by backend\see{use:opt:pre:gen} +% \item Options \opt{maxbibnames}/\opt{minbibnames} now supported by backend\see{use:opt:pre:gen} +% \item Added options \opt{maxalphanames}/\opt{minalphanames}\see{use:opt:pre:int} % \item Removed local options \opt{maxnames}/\opt{minnames} from \cmd{printbibliography}\see{use:bib:bib} % \item Removed local options \opt{maxitems}/\opt{minitems} from \cmd{printbibliography}\see{use:bib:bib} % \item Removed local options \opt{maxnames}/\opt{minnames} from \cmd{bibbysection}\see{use:bib:bib} @@ -11948,7 +12102,7 @@ This revision history is a list of changes relevant to users of this package. Ch % \item Removed local options \opt{maxitems}/\opt{minitems} from \cmd{printshorthands}\see{use:bib:biblist} % \item Added special field format \bibfield{volcitevolume}\see{use:cit:spc} % \item Added special field format \bibfield{volcitepages}\see{use:cit:spc} -% \item Added special field \bibfield{hash}\see{aut:bbx:fld:gen}\BiberOnlyMark +% \item Added special field \bibfield{hash}\see{aut:bbx:fld:gen} % \item Added \cmd{mkcomprange}\see{aut:aux:msc} % \item Added \cmd{mkfirstpage}\see{aut:aux:msc} % \item Removed \cmd{mkpagefirst}\see{aut:aux:msc} @@ -11960,13 +12114,13 @@ This revision history is a list of changes relevant to users of this package. Ch % \end{release} % \begin{release}{1.5}{2011-06-08} -% \item Added option \kvopt{uniquename}{mininit/minfull}\see{use:opt:pre:int}\BiberOnlyMark -% \item Added option \kvopt{uniquelist}{minyear}\see{use:opt:pre:int}\BiberOnlyMark -% \item Updated documentation of \cnt{uniquename} counter\see{aut:aux:tst}\BiberOnlyMark -% \item Updated documentation of \cnt{uniquelist} counter\see{aut:aux:tst}\BiberOnlyMark -% \item Expanded documentation for \opt{uniquename/uniquelist} options\see{aut:cav:amb}\BiberOnlyMark +% \item Added option \kvopt{uniquename}{mininit/minfull}\see{use:opt:pre:int} +% \item Added option \kvopt{uniquelist}{minyear}\see{use:opt:pre:int} +% \item Updated documentation of \cnt{uniquename} counter\see{aut:aux:tst} +% \item Updated documentation of \cnt{uniquelist} counter\see{aut:aux:tst} +% \item Expanded documentation for \opt{uniquename/uniquelist} options\see{aut:cav:amb} % \item Added editorial role \texttt{reviser}\see{bib:use:edr} -% \item Added localization keys \texttt{reviser}, \texttt{revisers}, \texttt{byreviser}\see{aut:lng:key} +% \item Added localisation keys \texttt{reviser}, \texttt{revisers}, \texttt{byreviser}\see{aut:lng:key} % \item Added bibliography heading \texttt{none}\see{use:bib:hdg} % \item Fixed some \sty{memoir} compatibility issues % \end{release} @@ -11986,11 +12140,11 @@ This revision history is a list of changes relevant to users of this package. Ch % \end{release} % \begin{release}{1.4}{2011-03-31} -% \item Added package option \opt{uniquelist}\see{use:opt:pre:int}\BiberOnlyMark -% \item Added special counter \cnt{uniquelist}\see{aut:aux:tst}\BiberOnlyMark -% \item Revised and improved package option \opt{uniquename}\see{use:opt:pre:int}\BiberOnlyMark -% \item Revised and improved special counter \cnt{uniquename}\see{aut:aux:tst}\BiberOnlyMark -% \item Added \cmd{bibnamedelimi}\see{use:fmt:fmt}\BiberOnlyMark +% \item Added package option \opt{uniquelist}\see{use:opt:pre:int} +% \item Added special counter \cnt{uniquelist}\see{aut:aux:tst} +% \item Revised and improved package option \opt{uniquename}\see{use:opt:pre:int} +% \item Revised and improved special counter \cnt{uniquename}\see{aut:aux:tst} +% \item Added \cmd{bibnamedelimi}\see{use:fmt:fmt} % \item Added \cmd{bibindexnamedelima}\see{use:fmt:fmt} % \item Added \cmd{bibindexnamedelimb}\see{use:fmt:fmt} % \item Added \cmd{bibindexnamedelimc}\see{use:fmt:fmt} @@ -12011,20 +12165,20 @@ This revision history is a list of changes relevant to users of this package. Ch % \item Updated \opt{terseinits} option\see{use:opt:pre:gen} % \item Allow macros in argument to \cmd{addbibresource} and friends\see{use:bib:res} % \item Allow macros in argument to \cmd{bibliography}\see{use:bib:res} -% \item Introducing experimental support for Zotero \acr{RDF}/\acr{XML}\see{use:bib:res}\BiberOnlyMark -% \item Introducing experimental support for EndNote \acr{XML}\see{use:bib:res}\BiberOnlyMark +% \item Introducing experimental support for Zotero \acr{RDF}/\acr{XML}\see{use:bib:res} +% \item Introducing experimental support for EndNote \acr{XML}\see{use:bib:res} % \item Added option \opt{citecounter}\see{use:opt:pre:int} % \item Added \cnt{citecounter}\see{aut:aux:tst} % \item Added \cmd{smartcite} and \cmd{Smartcite}\see{use:cit:cbx} % \item Added \cmd{smartcites} and \cmd{Smartcites}\see{use:cit:mlt} % \item Added \cmd{svolcite} and \cmd{Svolcite}\see{use:cit:spc} -% \item Added \cmd{bibnamedelima}\see{use:fmt:fmt}\BiberOnlyMark -% \item Added \cmd{bibnamedelimb}\see{use:fmt:fmt}\BiberOnlyMark +% \item Added \cmd{bibnamedelima}\see{use:fmt:fmt} +% \item Added \cmd{bibnamedelimb}\see{use:fmt:fmt} % \item Added \cmd{bibnamedelimc}\see{use:fmt:fmt} % \item Added \cmd{bibnamedelimd}\see{use:fmt:fmt} -% \item Added \cmd{bibinitperiod}\see{use:fmt:fmt}\BiberOnlyMark -% \item Added \cmd{bibinitdelim}\see{use:fmt:fmt}\BiberOnlyMark -% \item Added \cmd{bibinithyphendelim}\see{use:fmt:fmt}\BiberOnlyMark +% \item Added \cmd{bibinitperiod}\see{use:fmt:fmt} +% \item Added \cmd{bibinitdelim}\see{use:fmt:fmt} +% \item Added \cmd{bibinithyphendelim}\see{use:fmt:fmt} % \item Expanded documentation\see{use:cav:nam} % \item Added \prm{position} parameter \texttt{f} to \cmd{DeclareAutoCiteCommand}\see{aut:cbx:cbx} % \end{release} @@ -12038,18 +12192,18 @@ This revision history is a list of changes relevant to users of this package. Ch % \item Added entry type \bibtype{mvcollection}\see{bib:typ:blx} % \item Added entry type \bibtype{mvproceedings}\see{bib:typ:blx} % \item Added entry type \bibtype{mvreference}\see{bib:typ:blx} -% \item Introducing remote resources\see{use:bib:res}\BiberOnlyMark -% \item Introducing experimental \acr{RIS} support\see{use:bib:res}\BiberOnlyMark +% \item Introducing remote resources\see{use:bib:res} +% \item Introducing experimental \acr{RIS} support\see{use:bib:res} % \item Added \cmd{addbibresource}\see{use:bib:res} % \item \cmd{bibliography} now deprecated\see{use:bib:res} % \item \cmd{bibliography*} replaced by \cmd{addglobalbib}\see{use:bib:res} % \item Added \cmd{addsectionbib}\see{use:bib:res} % \item Updated and expanded documentation\see{bib:cav:ref} -% \item Introducing smart \bibfield{crossref} data inheritance\see{bib:cav:ref:bbr}\BiberOnlyMark -% \item Introducing \bibfield{crossref} configuration interface\see{aut:ctm:ref}\BiberOnlyMark -% \item Added \cmd{DefaultInheritance}\see{aut:ctm:ref}\BiberOnlyMark -% \item Added \cmd{DeclareDataInheritance}\see{aut:ctm:ref}\BiberOnlyMark -% \item Added \cmd{ResetDataInheritance}\see{aut:ctm:ref}\BiberOnlyMark +% \item Introducing smart \bibfield{crossref} data inheritance\see{bib:cav:ref:bbr} +% \item Introducing \bibfield{crossref} configuration interface\see{aut:ctm:ref} +% \item Added \cmd{DefaultInheritance}\see{aut:ctm:ref} +% \item Added \cmd{DeclareDataInheritance}\see{aut:ctm:ref} +% \item Added \cmd{ResetDataInheritance}\see{aut:ctm:ref} % \item Added \cmd{ifkeyword}\see{aut:aux:tst} % \item Added \cmd{ifentrykeyword}\see{aut:aux:tst} % \item Added \cmd{ifcategory}\see{aut:aux:tst} @@ -12059,16 +12213,16 @@ This revision history is a list of changes relevant to users of this package. Ch % \item Extended \cmd{mkpageprefix}\see{aut:aux:msc} % \item Extended \cmd{mkpagetotal}\see{aut:aux:msc} % \item Extended \cmd{mkpagefirst}\see{aut:aux:msc} -% \item Added localization key \texttt{inpreparation}\see{aut:lng:key} +% \item Added localisation key \texttt{inpreparation}\see{aut:lng:key} % \item Rearranged manual slightly, moving some tables to the appendix % \end{release} % \begin{release}{1.1b}{2011-02-04} -% \item Added option \opt{texencoding}\see{use:opt:pre:gen}\BiberOnlyMark -% \item Added option \opt{safeinputenc}\see{use:opt:pre:gen}\BiberOnlyMark +% \item Added option \opt{texencoding}\see{use:opt:pre:gen} +% \item Added option \opt{safeinputenc}\see{use:opt:pre:gen} % \item Expanded documentation\see{bib:cav:enc:enc} % \item Improved \opt{mergedate} option of bibliography style \texttt{authoryear}\see{use:xbx:bbx} -% \item Removed \opt{pass} option of \cmd{DeclareSortingScheme}\see{aut:ctm:srt}\BiberOnlyMark +% \item Removed \opt{pass} option of \cmd{DeclareSortingScheme}\see{aut:ctm:srt} % \item Fixed some bugs % \end{release} @@ -12086,29 +12240,29 @@ This revision history is a list of changes relevant to users of this package. Ch % \item Fixed \kvopt{idemtracker}{strict} and \kvopt{idemtracker}{constrict}\see{use:opt:pre:int} % \item Added option \opt{mergedate} to bibliography style \texttt{authoryear}\see{use:xbx:bbx} % \item Added support for \opt{prefixnumbers} to bibliography style \texttt{alphabetic}\see{use:xbx:bbx} -% \item Made option \bibfield{useprefix} settable on a per-type basis\see{use:opt:bib}\BiberOnlyMark -% \item Made option \bibfield{useauthor} settable on a per-type basis\see{use:opt:bib}\BiberOnlyMark -% \item Made option \bibfield{useeditor} settable on a per-type basis\see{use:opt:bib}\BiberOnlyMark -% \item Made option \opt{usetranslator} settable on a per-type basis\see{use:opt:bib}\BiberOnlyMark -% \item Made option \opt{skipbib} settable on a per-type basis\see{use:opt:bib}\BiberOnlyMark -% \item Made option \opt{skiplos} settable on a per-type basis\see{use:opt:bib}\BiberOnlyMark -% \item Made option \opt{skiplab} settable on a per-type basis\see{use:opt:bib}\BiberOnlyMark -% \item Made option \opt{dataonly} settable on a per-type basis\see{use:opt:bib}\BiberOnlyMark -% \item Made option \opt{labelalpha} settable on a per-type basis\see{use:opt:pre:int}\BiberOnlyMark +% \item Made option \bibfield{useprefix} settable on a per-type basis\see{use:opt:bib} +% \item Made option \bibfield{useauthor} settable on a per-type basis\see{use:opt:bib} +% \item Made option \bibfield{useeditor} settable on a per-type basis\see{use:opt:bib} +% \item Made option \opt{usetranslator} settable on a per-type basis\see{use:opt:bib} +% \item Made option \opt{skipbib} settable on a per-type basis\see{use:opt:bib} +% \item Made option \opt{skiplos} settable on a per-type basis\see{use:opt:bib} +% \item Made option \opt{skiplab} settable on a per-type basis\see{use:opt:bib} +% \item Made option \opt{dataonly} settable on a per-type basis\see{use:opt:bib} +% \item Made option \opt{labelalpha} settable on a per-type basis\see{use:opt:pre:int} % \item Made option \opt{labelnumber} settable on a per-type basis\see{use:opt:pre:int} -% \item Made option \opt{labelyear} settable on a per-type basis\see{use:opt:pre:int}\BiberOnlyMark -% \item Made option \opt{singletitle} settable on a per-type basis\see{use:opt:pre:int}\BiberOnlyMark -% \item Made option \opt{uniquename} settable on a per-type basis\see{use:opt:pre:int}\BiberOnlyMark +% \item Made option \opt{labelyear} settable on a per-type basis\see{use:opt:pre:int} +% \item Made option \opt{singletitle} settable on a per-type basis\see{use:opt:pre:int} +% \item Made option \opt{uniquename} settable on a per-type basis\see{use:opt:pre:int} % \item Made option \opt{indexing} settable on a per-type basis\see{use:opt:pre:gen} % \item Made option \opt{indexing} settable on a per-entry basis\see{use:opt:pre:gen} % \item Extended \cmd{ExecuteBibliographyOptions}\see{use:cfg:opt} % \item Added \cmd{citedate}\see{use:cit:txt} -% \item Improved static entry sets\see{use:use:set}\BiberOnlyMark -% \item Introducing dynamic entry sets\see{use:use:set}\BiberOnlyMark -% \item Added \cmd{defbibentryset}\see{use:bib:set}\BiberOnlyMark -% \item Added option \opt{mcite}\see{use:opt:ldt}\BiberOnlyMark -% \item Added \sty{mcite}\slash\sty{mciteplus}-like commands\see{use:cit:mct}\BiberOnlyMark -% \item Added \cmd{sortalphaothers}\see{use:fmt:fmt}\BiberOnlyMark +% \item Improved static entry sets\see{use:use:set} +% \item Introducing dynamic entry sets\see{use:use:set} +% \item Added \cmd{defbibentryset}\see{use:bib:set} +% \item Added option \opt{mcite}\see{use:opt:ldt} +% \item Added \sty{mcite}\slash\sty{mciteplus}-like commands\see{use:cit:mct} +% \item Added \cmd{sortalphaothers}\see{use:fmt:fmt} % \item Extended \cmd{DeclareNameFormat}\see{aut:bib:fmt} % \item Extended \cmd{DeclareIndexNameFormat}\see{aut:bib:fmt} % \item Extended \cmd{DeclareListFormat}\see{aut:bib:fmt} @@ -12121,14 +12275,14 @@ This revision history is a list of changes relevant to users of this package. Ch % \item Added \cmd{DeclareIndexListFormat*}\see{aut:bib:fmt} % \item Added \cmd{DeclareFieldFormat*}\see{aut:bib:fmt} % \item Added \cmd{DeclareIndexFieldFormat*}\see{aut:bib:fmt} -% \item Introducing configurable sorting schemes\BiberOnlyMark -% \item Added \cmd{DeclareSortingScheme}\see{aut:ctm:srt}\BiberOnlyMark -% \item Added \cmd{DeclarePresort}\see{aut:ctm:srt}\BiberOnlyMark -% \item Added \cmd{DeclareSortExclusion}\see{aut:ctm:srt}\BiberOnlyMark -% \item Added \cmd{DeclareLabelname}\see{aut:ctm:fld}\BiberOnlyMark -% \item Added \cmd{DeclareLabelyear}\see{aut:ctm:fld}\BiberOnlyMark -% \item Improved special field \bibfield{labelname}\see{aut:bbx:fld}\BiberOnlyMark -% \item Improved special field \bibfield{labelyear}\see{aut:bbx:fld}\BiberOnlyMark +% \item Introducing configurable sorting schemes +% \item Added \cmd{DeclareSortingScheme}\see{aut:ctm:srt} +% \item Added \cmd{DeclarePresort}\see{aut:ctm:srt} +% \item Added \cmd{DeclareSortExclusion}\see{aut:ctm:srt} +% \item Added \cmd{DeclareLabelname}\see{aut:ctm:fld} +% \item Added \cmd{DeclareLabelyear}\see{aut:ctm:fld} +% \item Improved special field \bibfield{labelname}\see{aut:bbx:fld} +% \item Improved special field \bibfield{labelyear}\see{aut:bbx:fld} % \item Added \cmd{entrydata*}\see{aut:bib:dat} % \item Added \cmd{RequireBiber}\see{aut:aux:msc} % \item Added option \opt{check} to \cmd{printbibliography}\see{use:bib:bib} @@ -12275,8 +12429,8 @@ This revision history is a list of changes relevant to users of this package. Ch %\item Added \cmd{ifnatbibmode}\see{aut:aux:tst} %\item Added missing documentation of \cmd{ifbibxstring}\see{aut:aux:tst} %\item Added \cmd{providebibmacro}\see{aut:aux:msc} -%\item Added localization key \texttt{backrefpage}\see{aut:lng:key} -%\item Added localization key \texttt{backrefpages}\see{aut:lng:key} +%\item Added localisation key \texttt{backrefpage}\see{aut:lng:key} +%\item Added localisation key \texttt{backrefpages}\see{aut:lng:key} %\item Slightly expanded documentation\see{bib:use:dat} %\item Slightly expanded documentation\see{aut:bbx:fld:dat} %\item Added support for Finnish (translations by Hannu Väisänen) @@ -12395,28 +12549,28 @@ This revision history is a list of changes relevant to users of this package. Ch %\item Added \cmd{iffieldpages}\see{aut:aux:tst} %\item Added \cmd{DeclarePageCommands} and \cmd{DeclarePageCommands*}\see{aut:aux:msc} %\item Improved \cmd{NewBibliographyString}\see{aut:lng:cmd} -%\item Removed localization key \texttt{editor}\see{aut:lng:key} -%\item Removed localization key \texttt{editors}\see{aut:lng:key} -%\item Renamed localization key \texttt{typeeditor} to \texttt{editor}\see{aut:lng:key} -%\item Renamed localization key \texttt{typeeditors} to \texttt{editors}\see{aut:lng:key} -%\item Renamed localization key \texttt{typecompiler} to \texttt{compiler}\see{aut:lng:key} -%\item Renamed localization key \texttt{typecompilers} to \texttt{compilers}\see{aut:lng:key} -%\item Added localization key \texttt{founder}\see{aut:lng:key} -%\item Added localization key \texttt{founders}\see{aut:lng:key} -%\item Added localization key \texttt{continuator}\see{aut:lng:key} -%\item Added localization key \texttt{continuators}\see{aut:lng:key} -%\item Added localization key \texttt{collaborator}\see{aut:lng:key} -%\item Added localization key \texttt{collaborators}\see{aut:lng:key} -%\item Removed localization key \texttt{byauthor}\see{aut:lng:key} -%\item Renamed localization key \texttt{bytypeauthor} to \texttt{byauthor}\see{aut:lng:key} -%\item Removed localization key \texttt{byeditor}\see{aut:lng:key} -%\item Renamed localization key \texttt{bytypeeditor} to \texttt{byeditor}\see{aut:lng:key} -%\item Renamed localization key \texttt{bytypecompiler} to \texttt{bycompiler}\see{aut:lng:key} -%\item Added localization key \texttt{byfounder}\see{aut:lng:key} -%\item Added localization key \texttt{bycontinuator}\see{aut:lng:key} -%\item Added localization key \texttt{bycollaborator}\see{aut:lng:key} -%\item Added localization key \texttt{inpress}\see{aut:lng:key} -%\item Added localization key \texttt{submitted}\see{aut:lng:key} +%\item Removed localisation key \texttt{editor}\see{aut:lng:key} +%\item Removed localisation key \texttt{editors}\see{aut:lng:key} +%\item Renamed localisation key \texttt{typeeditor} to \texttt{editor}\see{aut:lng:key} +%\item Renamed localisation key \texttt{typeeditors} to \texttt{editors}\see{aut:lng:key} +%\item Renamed localisation key \texttt{typecompiler} to \texttt{compiler}\see{aut:lng:key} +%\item Renamed localisation key \texttt{typecompilers} to \texttt{compilers}\see{aut:lng:key} +%\item Added localisation key \texttt{founder}\see{aut:lng:key} +%\item Added localisation key \texttt{founders}\see{aut:lng:key} +%\item Added localisation key \texttt{continuator}\see{aut:lng:key} +%\item Added localisation key \texttt{continuators}\see{aut:lng:key} +%\item Added localisation key \texttt{collaborator}\see{aut:lng:key} +%\item Added localisation key \texttt{collaborators}\see{aut:lng:key} +%\item Removed localisation key \texttt{byauthor}\see{aut:lng:key} +%\item Renamed localisation key \texttt{bytypeauthor} to \texttt{byauthor}\see{aut:lng:key} +%\item Removed localisation key \texttt{byeditor}\see{aut:lng:key} +%\item Renamed localisation key \texttt{bytypeeditor} to \texttt{byeditor}\see{aut:lng:key} +%\item Renamed localisation key \texttt{bytypecompiler} to \texttt{bycompiler}\see{aut:lng:key} +%\item Added localisation key \texttt{byfounder}\see{aut:lng:key} +%\item Added localisation key \texttt{bycontinuator}\see{aut:lng:key} +%\item Added localisation key \texttt{bycollaborator}\see{aut:lng:key} +%\item Added localisation key \texttt{inpress}\see{aut:lng:key} +%\item Added localisation key \texttt{submitted}\see{aut:lng:key} %\item Added support for Dutch (translations by Alexander van Loon) %\item Added support for Greek (translations by Apostolos Syropoulos) %\item Added notes on Greek\see{use:loc:grk} @@ -12452,12 +12606,12 @@ This revision history is a list of changes relevant to users of this package. Ch %\item Added \cmd{mkbibordedition}\see{use:fmt:lng} %\item Added \cmd{mkbibordseries}\see{use:fmt:lng} %\item Added \cmd{mkbibendnote}\see{aut:fmt:ich} -%\item Added several localization keys related to \texttt{editor}\see{aut:lng:key} -%\item Added several localization keys related to \texttt{translator}\see{aut:lng:key} -%\item Added localization key \texttt{thiscite}\see{aut:lng:key} -%\item Removed several \texttt{country...} localization keys\see{aut:lng:key} -%\item Removed several \texttt{patent...} localization keys\see{aut:lng:key} -%\item Removed several \texttt{patreq...} localization keys\see{aut:lng:key} +%\item Added several localisation keys related to \texttt{editor}\see{aut:lng:key} +%\item Added several localisation keys related to \texttt{translator}\see{aut:lng:key} +%\item Added localisation key \texttt{thiscite}\see{aut:lng:key} +%\item Removed several \texttt{country...} localisation keys\see{aut:lng:key} +%\item Removed several \texttt{patent...} localisation keys\see{aut:lng:key} +%\item Removed several \texttt{patreq...} localisation keys\see{aut:lng:key} %\item Updated and clarified documentation\see{aut:lng:key} %\item Added support for Brazilian Portuguese (by Augusto Ritter Stoffel) %\item Added preliminary support for Portuguese/Portugal\see{use:opt:pre:gen} @@ -12484,7 +12638,7 @@ This revision history is a list of changes relevant to users of this package. Ch %\item Added \cmd{addabthinspace}\see{aut:pct:spc} %\item Disable citation and page trackers in \acr{TOC}/\acr{LOT}/\acr{LOF}\see{aut:cav:flt} %\item Disable citation and page trackers in floats\see{aut:cav:flt} -%\item Improved on-demand loading of localization modules +%\item Improved on-demand loading of localisation modules %\item Fixed some bugs % %\end{release} @@ -12543,7 +12697,7 @@ This revision history is a list of changes relevant to users of this package. Ch %\item Improved punctuation tracker\see{aut:pct:pct} %\item Added \cmd{DeclarePunctuationPairs}\see{aut:pct:cfg} %\item Added \cmd{DeclareLanguageMapping}\see{aut:lng:cmd} -%\item Added support for custom localization modules\see{aut:cav:lng} +%\item Added support for custom localisation modules\see{aut:cav:lng} %\item Added extended \pdf bookmarks to this manual %\item Fixed various bugs % @@ -12560,8 +12714,8 @@ This revision history is a list of changes relevant to users of this package. Ch %\item Added \cmd{ifmemoirbibintoc}\see{use:cav:mem} %\item Updated documentation\see{use:bib:hdg} %\item Updated documentation of \cmd{iffootnote}\see{aut:aux:tst} -%\item Added several new localization keys\see{aut:lng:key} -%\item Rearranged some localization keys (\texttt{section} vs. \texttt{paragraph})\see{aut:lng:key} +%\item Added several new localisation keys\see{aut:lng:key} +%\item Rearranged some localisation keys (\texttt{section} vs. \texttt{paragraph})\see{aut:lng:key} %\item Added unsupported entry type \bibtype{letter}\see{bib:typ:ctm} %\item Added entry type \bibtype{suppbook}\see{bib:typ:blx} %\item Added entry type \bibtype{suppcollection}\see{bib:typ:blx} @@ -12635,7 +12789,7 @@ This revision history is a list of changes relevant to users of this package. Ch %\item Added \cmd{DeclareRangeChars}\see{aut:aux:msc} %\item Added \cmd{DeclareRangeCommands}\see{aut:aux:msc} %\item Added support for Swedish (translations by Per Starbäck and others) -%\item Updated various localization files +%\item Updated various localisation files %\item Various minor improvements throughout %\item Fixed some bugs % @@ -12859,7 +13013,7 @@ This revision history is a list of changes relevant to users of this package. Ch %\item Added \cmd{AtNextCite}\see{aut:fmt:hok} %\item Added \cmd{AtNextCitekey}\see{aut:fmt:hok} %\item Added \cmd{AtDataInput}\see{aut:fmt:hok} -%\item Added several new localization keys\see{aut:lng:key} +%\item Added several new localisation keys\see{aut:lng:key} %\item Added support for Norwegian (translations by Johannes Wilm) %\item Added support for Danish (translations by Johannes Wilm) %\item Expanded documentation\see{aut:cav:grp} @@ -12952,7 +13106,7 @@ This revision history is a list of changes relevant to users of this package. Ch %\item Added \cmd{savecommand}\see{aut:aux:msc} %\item Added \cmd{restorecommand}\see{aut:aux:msc} %\item Added documentation of \texttt{shorthands} driver\see{aut:bbx:bbx} -%\item Rearranged, renamed, and extended localization keys\see{aut:lng:key} +%\item Rearranged, renamed, and extended localisation keys\see{aut:lng:key} %\item Renamed counter \cnt{citecount} to \cnt{instcount}\see{aut:fmt:ilc} %\item Added new counter \cnt{citecount}\see{aut:fmt:ilc} %\item Added counter \cnt{citetotal}\see{aut:fmt:ilc} @@ -13056,30 +13210,30 @@ This revision history is a list of changes relevant to users of this package. Ch %\item Added \cmd{UndefineBibliographyExtras}\see{use:lng} %\item Added \cmd{UndeclareBibliographyExtras}\see{aut:lng:cmd} %\item Added \cmd{finalandcomma}\see{use:fmt:lng} -%\item Added localization key \texttt{citedas}\see{aut:lng:key} -%\item Renamed localization key \texttt{editby} to \texttt{edited}\see{aut:lng:key} -%\item Renamed localization key \texttt{transby} to \texttt{translated}\see{aut:lng:key} -%\item Added localization key \texttt{annotated}\see{aut:lng:key} -%\item Added localization key \texttt{commented}\see{aut:lng:key} -%\item Added localization key \texttt{introduced}\see{aut:lng:key} -%\item Added localization key \texttt{foreworded}\see{aut:lng:key} -%\item Added localization key \texttt{afterworded}\see{aut:lng:key} -%\item Added localization key \texttt{commentary}\see{aut:lng:key} -%\item Added localization key \texttt{annotations}\see{aut:lng:key} -%\item Added localization key \texttt{introduction}\see{aut:lng:key} -%\item Added localization key \texttt{foreword}\see{aut:lng:key} -%\item Added localization key \texttt{afterword}\see{aut:lng:key} -%\item Added localization key \texttt{doneby}\see{aut:lng:key} -%\item Added localization key \texttt{itemby}\see{aut:lng:key} -%\item Added localization key \texttt{spanish}\see{aut:lng:key} -%\item Added localization key \texttt{latin}\see{aut:lng:key} -%\item Added localization key \texttt{greek}\see{aut:lng:key} -%\item Modified localization key \texttt{fromenglish}\see{aut:lng:key} -%\item Modified localization key \texttt{fromfrench}\see{aut:lng:key} -%\item Modified localization key \texttt{fromgerman}\see{aut:lng:key} -%\item Added localization key \texttt{fromspanish}\see{aut:lng:key} -%\item Added localization key \texttt{fromlatin}\see{aut:lng:key} -%\item Added localization key \texttt{fromgreek}\see{aut:lng:key} +%\item Added localisation key \texttt{citedas}\see{aut:lng:key} +%\item Renamed localisation key \texttt{editby} to \texttt{edited}\see{aut:lng:key} +%\item Renamed localisation key \texttt{transby} to \texttt{translated}\see{aut:lng:key} +%\item Added localisation key \texttt{annotated}\see{aut:lng:key} +%\item Added localisation key \texttt{commented}\see{aut:lng:key} +%\item Added localisation key \texttt{introduced}\see{aut:lng:key} +%\item Added localisation key \texttt{foreworded}\see{aut:lng:key} +%\item Added localisation key \texttt{afterworded}\see{aut:lng:key} +%\item Added localisation key \texttt{commentary}\see{aut:lng:key} +%\item Added localisation key \texttt{annotations}\see{aut:lng:key} +%\item Added localisation key \texttt{introduction}\see{aut:lng:key} +%\item Added localisation key \texttt{foreword}\see{aut:lng:key} +%\item Added localisation key \texttt{afterword}\see{aut:lng:key} +%\item Added localisation key \texttt{doneby}\see{aut:lng:key} +%\item Added localisation key \texttt{itemby}\see{aut:lng:key} +%\item Added localisation key \texttt{spanish}\see{aut:lng:key} +%\item Added localisation key \texttt{latin}\see{aut:lng:key} +%\item Added localisation key \texttt{greek}\see{aut:lng:key} +%\item Modified localisation key \texttt{fromenglish}\see{aut:lng:key} +%\item Modified localisation key \texttt{fromfrench}\see{aut:lng:key} +%\item Modified localisation key \texttt{fromgerman}\see{aut:lng:key} +%\item Added localisation key \texttt{fromspanish}\see{aut:lng:key} +%\item Added localisation key \texttt{fromlatin}\see{aut:lng:key} +%\item Added localisation key \texttt{fromgreek}\see{aut:lng:key} %\item Expanded documentation\see{bib:use} %\item Updated documentation\see{use:xbx:cbx} %\item Updated documentation\see{use:xbx:bbx} diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/01-introduction.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/01-introduction-biber.pdf Binary files differindex c221513af60..87dbe0feb38 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/01-introduction.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/01-introduction-biber.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/01-introduction-bibtex.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/01-introduction-bibtex.pdf Binary files differindex 35ff0d28af3..b8238af5ab8 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/01-introduction-bibtex.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/01-introduction-bibtex.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/02-annotations.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/02-annotations-biber.pdf Binary files differindex 30097f0b5c9..812676379b7 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/02-annotations.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/02-annotations-biber.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/02-annotations-bibtex.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/02-annotations-bibtex.pdf Binary files differindex 4319601a780..2f20414ed0b 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/02-annotations-bibtex.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/02-annotations-bibtex.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/03-localization-keys.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/03-localization-keys-biber.pdf Binary files differindex 19bd7fd1f3f..c4000e0fbd1 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/03-localization-keys.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/03-localization-keys-biber.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/03-localization-keys-bibtex.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/03-localization-keys-bibtex.pdf Binary files differindex 81e6b52e807..bdbe1bfe7c6 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/03-localization-keys-bibtex.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/03-localization-keys-bibtex.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/03-localization-keys.tex b/Master/texmf-dist/doc/latex/biblatex/examples/03-localization-keys.tex index 4e7d82fbbdc..59277ad0b75 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/03-localization-keys.tex +++ b/Master/texmf-dist/doc/latex/biblatex/examples/03-localization-keys.tex @@ -571,8 +571,8 @@ The following strings are intended for use in phrases like <translated from [the \keyitem{fromamerican} The expression <from [the] American> or <from [the] American English>. \keyitem{frombrazilian} The expression <from [the] Brazilian> or <from [the] Brazilian Portuguese>. \keyitem{fromcatalan} The expression <from [the] Catalan>. -\keyitem{fromczech} The expression <from [the] Czech>. \keyitem{fromcroatian} The expression <from [the] Croatian>. +\keyitem{fromczech} The expression <from [the] Czech>. \keyitem{fromdanish} The expression <from [the] Danish>. \keyitem{fromdutch} The expression <from [the] Dutch>. \keyitem{fromenglish} The expression <from [the] English>. diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/04-delimiters-biber.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/04-delimiters-biber.pdf Binary files differnew file mode 100644 index 00000000000..7df85bbbce2 --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex/examples/04-delimiters-biber.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/04-delimiters-bibtex.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/04-delimiters-bibtex.pdf Binary files differnew file mode 100644 index 00000000000..87a0e084e2a --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex/examples/04-delimiters-bibtex.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/04-delimiters.tex b/Master/texmf-dist/doc/latex/biblatex/examples/04-delimiters.tex new file mode 100644 index 00000000000..29b1450ffa8 --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex/examples/04-delimiters.tex @@ -0,0 +1,68 @@ +\documentclass[a4paper]{article} +\usepackage[T1]{fontenc} +\usepackage[utf8]{inputenc} +\usepackage[american]{babel} +\usepackage{csquotes} +\usepackage{verbatim} +\usepackage[style=authortitle,backend=biber]{biblatex} +\addbibresource{biblatex-examples.bib} +\setlength{\parindent}{0pt} +\newcommand{\cmd}[1]{\texttt{\textbackslash #1}} + +\DeclareDelimFormat[bib]{space}{X} +\DeclareDelimFormat[test]{space}{Y} +\DeclareDelimFormat{testb}{B} +\DeclareDelimFormat[testbcontext]{testb}{C} +\DeclareDelimFormat{testc}{D} +\DeclareDelimFormat[testccontext]{testc}{E} +\makeatletter +% Some of these tests generate definition warnins which we don't want in tests +\def\blx@warn@delimdeclare#1#2{\relax} +\makeatother +\begin{document} +\section*{Context-Sensitive Delimiters} + +Normal cite uses global delim definition with comma:\\\\ +\cite{averroes/hannes}\\\\ +Textual cite uses "textcite" context without comma:\\\\ +\textcite{averroes/hannes}\\\\ +Reset of global delimiter with traditional method:\\\\ +\renewcommand*{\nametitledelim}{\addcomma\space} +\cite{averroes/hannes}\\\\ +Textual cite in "textcite" context is not reset:\\\\ +\textcite{averroes/hannes}\\\\ +\begingroup +\def\addcomma{,} +\let\space\textvisiblespace +Invoke default delimiter in context-sensitive interface:\\ +\printdelim{nametitledelim}\\\\ +Invoke global delimiter via normal macro:\\ +\nametitledelim\\\\ +Invoke delimiter in context-sensitive interface with explicit context:\\\\ +\printdelim[textcite]{nametitledelim}\\\\ +\endgroup +Default delimiter "testb":\\\\ +\printdelim{testb}\\\\ +Setting "testbcontext" with \cmd{delimcontext}:\\\\ +\delimcontext{testbcontext}\printdelim{testb}\\\\ +Redefine "testb" delim with starred version to remove all contexts:\\\\ +\DeclareDelimFormat*{testb}{B} +\printdelim{testb}\\\\ +Check nesting\\\\ +\begingroup +\delimcontext{testccontext}\printdelim{testc}\\\\ +\endgroup +\printdelim{testc}\\\\ +\printbibliography + +Reset the \cmd{space} command for this bibliography to use the +context-sensitive interface. First we use the default "bib" context: +\AtNextBibliography{\renewcommand*{\space}{\printdelim{space}}} +\printbibliography + +Now use a custom context "test" and \cmd{space} expands to something +different. Also, "nametitledelim" is back to default because we override +the default "bib" context: +\AtNextBibliography{\renewcommand*{\space}{\printdelim{space}}\delimcontext{test}} +\printbibliography +\end{document} diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/10-references-per-section.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/10-references-per-section-biber.pdf Binary files differindex 69f88d78270..e8ea19c9653 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/10-references-per-section.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/10-references-per-section-biber.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/10-references-per-section-bibtex.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/10-references-per-section-bibtex.pdf Binary files differindex b409e81b040..0e2c4a4d53b 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/10-references-per-section-bibtex.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/10-references-per-section-bibtex.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/11-references-by-section.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/11-references-by-section-biber.pdf Binary files differindex 9c2ed931a44..4a14bcbe716 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/11-references-by-section.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/11-references-by-section-biber.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/11-references-by-section-bibtex.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/11-references-by-section-bibtex.pdf Binary files differindex 90fbc56fa54..cfa3d762e93 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/11-references-by-section-bibtex.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/11-references-by-section-bibtex.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/12-references-by-segment.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/12-references-by-segment-biber.pdf Binary files differindex e2bc9010d9c..efdbab08534 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/12-references-by-segment.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/12-references-by-segment-biber.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/12-references-by-segment-bibtex.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/12-references-by-segment-bibtex.pdf Binary files differindex 2c7dd0c8fab..4a36eafcbb0 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/12-references-by-segment-bibtex.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/12-references-by-segment-bibtex.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/13-references-by-keyword.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/13-references-by-keyword-biber.pdf Binary files differindex ccf2300377f..d1f6c023b93 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/13-references-by-keyword.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/13-references-by-keyword-biber.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/13-references-by-keyword-bibtex.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/13-references-by-keyword-bibtex.pdf Binary files differindex 86e2077a8f6..b58647a6727 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/13-references-by-keyword-bibtex.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/13-references-by-keyword-bibtex.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/14-references-by-category.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/14-references-by-category-biber.pdf Binary files differindex 4a4786a9a13..0204a8d7558 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/14-references-by-category.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/14-references-by-category-biber.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/14-references-by-category-bibtex.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/14-references-by-category-bibtex.pdf Binary files differindex 3a87a445784..ae371ac6209 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/14-references-by-category-bibtex.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/14-references-by-category-bibtex.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/15-references-by-type.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/15-references-by-type-biber.pdf Binary files differindex a44dab94e9e..461b2f6fac7 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/15-references-by-type.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/15-references-by-type-biber.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/15-references-by-type-bibtex.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/15-references-by-type-bibtex.pdf Binary files differindex 9df8e5c5aef..7661294c11c 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/15-references-by-type-bibtex.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/15-references-by-type-bibtex.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/16-numeric-prefixed-1.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/16-numeric-prefixed-1-biber.pdf Binary files differindex 833a9d1c24f..232c9a3d755 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/16-numeric-prefixed-1.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/16-numeric-prefixed-1-biber.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/16-numeric-prefixed-1-bibtex.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/16-numeric-prefixed-1-bibtex.pdf Binary files differindex 67d388211bd..92f345b51be 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/16-numeric-prefixed-1-bibtex.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/16-numeric-prefixed-1-bibtex.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/16-numeric-prefixed-1-bibtex.tex b/Master/texmf-dist/doc/latex/biblatex/examples/16-numeric-prefixed-1-bibtex.tex new file mode 100644 index 00000000000..2ba9fa7417a --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex/examples/16-numeric-prefixed-1-bibtex.tex @@ -0,0 +1,53 @@ +% +% This file demonstrates how to configure biblatex to prefix +% numerical citations with a letter or a string. This will work with +% all numerical styles which ship with biblatex. Note that you must +% set defernumbers=true globally when using prefixes. +% +% Since the prefixes are assigned as the bibliography is generated, +% you may use any filter supported by biblatex to subdivide the +% references (by type, by category, by keyword, etc.). +% +\documentclass[a4paper,oneside]{article} +\usepackage[T1]{fontenc} +\usepackage[american]{babel} +\usepackage{csquotes} +% When using prefixed numerical labels, the labels must be assigned +% as the bibliography is generated. That's why we set +% defernumbers=true here: +\usepackage[style=numeric,defernumbers,backend=bibtex]{biblatex} +\usepackage{hyperref} +\usepackage{nameref} +\addbibresource{biblatex-examples.bib} +% A catch-all filter for all items which are not assigned to a +% dedicated sub-bibliography: +\defbibfilter{other}{ + not type=article + and + not type=book + and + not type=collection +} + +\begin{document} + +\section*{Prefixed numerical citations} + +% Some citations: +\cite{angenendt, kastenholz, augustine, companion, jaffe, ctan} + +\nocite{*} + +% Let's print the overall heading of the bibliography first: +\printbibheading + +% And now the sub-bibliographies: we use three of them (based on the +% entry type). Each sub-bibliography assigns a different prefix: +\printbibliography[heading=subbibliography,title={Articles},type=article, prefixnumbers={A}] +\printbibliography[heading=subbibliography,title={Books},type=book, prefixnumbers={B}] +\printbibliography[heading=subbibliography,title={Collections},type=collection, prefixnumbers={C}] + +% The catch-all sub-bibliography for all remaining types: +\printbibliography[heading=subbibliography,title={Other Sources},filter=other, prefixnumbers={O}] + +\end{document} diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/16-numeric-prefixed-1.tex b/Master/texmf-dist/doc/latex/biblatex/examples/16-numeric-prefixed-1.tex index 8835878e049..d8597789b13 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/16-numeric-prefixed-1.tex +++ b/Master/texmf-dist/doc/latex/biblatex/examples/16-numeric-prefixed-1.tex @@ -29,6 +29,7 @@ and not type=collection } + \begin{document} \section*{Prefixed numerical citations} @@ -43,11 +44,15 @@ % And now the sub-bibliographies: we use three of them (based on the % entry type). Each sub-bibliography assigns a different prefix: -\printbibliography[heading=subbibliography,title={Articles},type=article,prefixnumbers={A}] -\printbibliography[heading=subbibliography,title={Books},type=book,prefixnumbers={B}] -\printbibliography[heading=subbibliography,title={Collections},type=collection,prefixnumbers={C}] +\newrefcontext[labelprefix={A}] +\printbibliography[heading=subbibliography,title={Articles},type=article] +\newrefcontext[labelprefix={B}] +\printbibliography[heading=subbibliography,title={Books},type=book] +\newrefcontext[labelprefix={C}] +\printbibliography[heading=subbibliography,title={Collections},type=collection] % The catch-all sub-bibliography for all remaining types: -\printbibliography[heading=subbibliography,title={Other Sources},filter=other,prefixnumbers={O}] +\newrefcontext[labelprefix={O}] +\printbibliography[heading=subbibliography,title={Other Sources},filter=other] \end{document} diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/17-numeric-prefixed-2.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/17-numeric-prefixed-2-biber.pdf Binary files differindex dba3e4218d7..6dcc5a81bfd 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/17-numeric-prefixed-2.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/17-numeric-prefixed-2-biber.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/17-numeric-prefixed-2-bibtex.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/17-numeric-prefixed-2-bibtex.pdf Binary files differindex 9cad8d32d08..6d40d1c5d9a 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/17-numeric-prefixed-2-bibtex.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/17-numeric-prefixed-2-bibtex.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/17-numeric-prefixed-2-bibtex.tex b/Master/texmf-dist/doc/latex/biblatex/examples/17-numeric-prefixed-2-bibtex.tex new file mode 100644 index 00000000000..c0952bab424 --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex/examples/17-numeric-prefixed-2-bibtex.tex @@ -0,0 +1,40 @@ +% +% This example is almost the same as the previous one except that +% the catch-all sub-bibliography does not assign any prefix. +% +\documentclass[a4paper,oneside]{article} +\usepackage[T1]{fontenc} +\usepackage[american]{babel} +\usepackage{csquotes} +\usepackage[style=numeric,defernumbers,backend=bibtex]{biblatex} +\usepackage{hyperref} +\usepackage{nameref} +\addbibresource{biblatex-examples.bib} +\defbibfilter{other}{ + not type=article + and + not type=book + and + not type=collection +} +\begin{document} + +\section*{Prefixed numerical citations} + +% Some citations: +\cite{angenendt, kastenholz, augustine, companion, jaffe, ctan} + +\nocite{*} + +\printbibheading + +\printbibliography[heading=subbibliography,title={Articles},type=article, prefixnumbers={A}] +\printbibliography[heading=subbibliography,title={Books},type=book, prefixnumbers={A}] +\printbibliography[heading=subbibliography,title={Collections},type=collection, prefixnumbers={C}] + +% The catch-all sub-bibliography for all remaining types. We don't +% use a prefix but we still need to set resetnumbers=true to restart +% the item numbering: +\printbibliography[heading=subbibliography,title={Other Sources},filter=other,resetnumbers] + +\end{document} diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/17-numeric-prefixed-2.tex b/Master/texmf-dist/doc/latex/biblatex/examples/17-numeric-prefixed-2.tex index f16d2886146..cd00b02293d 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/17-numeric-prefixed-2.tex +++ b/Master/texmf-dist/doc/latex/biblatex/examples/17-numeric-prefixed-2.tex @@ -29,9 +29,13 @@ \printbibheading -\printbibliography[heading=subbibliography,title={Articles},type=article,prefixnumbers={A}] -\printbibliography[heading=subbibliography,title={Books},type=book,prefixnumbers={B}] -\printbibliography[heading=subbibliography,title={Collections},type=collection,prefixnumbers={C}] +\newrefcontext[labelprefix={A}] +\printbibliography[heading=subbibliography,title={Articles},type=article] +\newrefcontext[labelprefix={B}] +\printbibliography[heading=subbibliography,title={Books},type=book] +\newrefcontext[labelprefix={C}] +\printbibliography[heading=subbibliography,title={Collections},type=collection] +\endrefcontext % The catch-all sub-bibliography for all remaining types. We don't % use a prefix but we still need to set resetnumbers=true to restart diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/18-numeric-hybrid.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/18-numeric-hybrid-biber.pdf Binary files differindex e51cf4e12ca..34fc63b7b69 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/18-numeric-hybrid.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/18-numeric-hybrid-biber.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/18-numeric-hybrid-bibtex.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/18-numeric-hybrid-bibtex.pdf Binary files differindex 6b6686f6294..293cc184867 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/18-numeric-hybrid-bibtex.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/18-numeric-hybrid-bibtex.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/18-numeric-hybrid.tex b/Master/texmf-dist/doc/latex/biblatex/examples/18-numeric-hybrid.tex index ccd6d379437..ebf3117955a 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/18-numeric-hybrid.tex +++ b/Master/texmf-dist/doc/latex/biblatex/examples/18-numeric-hybrid.tex @@ -32,7 +32,7 @@ {\usebibmacro{prenote}} {\usebibmacro{citeindex}% \printtext[bibhyperref]{% - \printfield{prefixnumber}% + \printfield{labelprefix}% \printfield{labelnumber}}} {\multicitedelim} {\usebibmacro{postnote}} @@ -43,7 +43,7 @@ {\list {\printtext[labelnumberwidth]{% \iffieldundef{shorthand} - {\printfield{prefixnumber}% + {\printfield{labelprefix}% \printfield{labelnumber}} {\printfield{shorthand}}}} {\setlength{\labelwidth}{\labelnumberwidth}% diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/19-alphabetic-prefixed.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/19-alphabetic-prefixed-biber.pdf Binary files differindex da16205e51f..d7377a694d4 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/19-alphabetic-prefixed.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/19-alphabetic-prefixed-biber.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/19-alphabetic-prefixed-bibtex.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/19-alphabetic-prefixed-bibtex.pdf Binary files differindex f82df549e6c..5937a019cfd 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/19-alphabetic-prefixed-bibtex.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/19-alphabetic-prefixed-bibtex.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/19-alphabetic-prefixed-bibtex.tex b/Master/texmf-dist/doc/latex/biblatex/examples/19-alphabetic-prefixed-bibtex.tex new file mode 100644 index 00000000000..31cac5de0b3 --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex/examples/19-alphabetic-prefixed-bibtex.tex @@ -0,0 +1,44 @@ +% +% Prefixes also work with alphabetic the styles. +% +\documentclass[a4paper,oneside]{article} +\usepackage[T1]{fontenc} +\usepackage[american]{babel} +\usepackage{csquotes} +\usepackage[style=alphabetic,backend=bibtex]{biblatex} +\usepackage{hyperref} +\usepackage{nameref} +\addbibresource{biblatex-examples.bib} +% A catch-all filter for all items which are not assigned to a +% dedicated sub-bibliography: +\defbibfilter{other}{ + not type=article + and + not type=book + and + not type=collection +} +\begin{document} + +\section*{Prefixed alphabetic citations} + +% Some citations: +\cite{angenendt, kastenholz, augustine, companion, jaffe, ctan} + +\nocite{*} + +% Let's print the overall heading of the bibliography first: +\printbibheading + +% And now the sub-bibliographies: we use three of them (based on the +% entry type). Each sub-bibliography assigns a different prefix. The +% option is called 'prefixnumbers' because it was originally intended +% for numeric citations only. It also works with alphabetic labels: +\printbibliography[heading=subbibliography,title={Articles},type=article,prefixnumbers={A-}] +\printbibliography[heading=subbibliography,title={Books},type=book,prefixnumbers={B-}] +\printbibliography[heading=subbibliography,title={Collections},type=collection,prefixnumbers={C-}] + +% The catch-all sub-bibliography for all remaining types: +\printbibliography[heading=subbibliography,title={Other Sources},filter=other,prefixnumbers={O-}] + +\end{document} diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/19-alphabetic-prefixed.tex b/Master/texmf-dist/doc/latex/biblatex/examples/19-alphabetic-prefixed.tex index 2b130c7fe74..f670a33eb43 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/19-alphabetic-prefixed.tex +++ b/Master/texmf-dist/doc/latex/biblatex/examples/19-alphabetic-prefixed.tex @@ -32,14 +32,16 @@ \printbibheading % And now the sub-bibliographies: we use three of them (based on the -% entry type). Each sub-bibliography assigns a different prefix. The -% option is called 'prefixnumbers' because it was originally intended -% for numeric citations only. It also works with alphabetic labels: -\printbibliography[heading=subbibliography,title={Articles},type=article,prefixnumbers={A-}] -\printbibliography[heading=subbibliography,title={Books},type=book,prefixnumbers={B-}] -\printbibliography[heading=subbibliography,title={Collections},type=collection,prefixnumbers={C-}] +% entry type). Each sub-bibliography assigns a different prefix. +\newrefcontext[labelprefix={A-}] +\printbibliography[heading=subbibliography,title={Articles},type=article] +\newrefcontext[labelprefix={B-}] +\printbibliography[heading=subbibliography,title={Books},type=book] +\newrefcontext[labelprefix={C-}] +\printbibliography[heading=subbibliography,title={Collections},type=collection] % The catch-all sub-bibliography for all remaining types: -\printbibliography[heading=subbibliography,title={Other Sources},filter=other,prefixnumbers={O-}] +\newrefcontext[labelprefix={O-}] +\printbibliography[heading=subbibliography,title={Other Sources},filter=other] \end{document} diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/20-indexing-single.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/20-indexing-single-biber.pdf Binary files differindex 5857fbdcfa7..76a1f1c8a1d 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/20-indexing-single.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/20-indexing-single-biber.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/20-indexing-single-bibtex.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/20-indexing-single-bibtex.pdf Binary files differindex b3c46b73fe6..5223aaecbad 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/20-indexing-single-bibtex.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/20-indexing-single-bibtex.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/21-indexing-multiple.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/21-indexing-multiple-biber.pdf Binary files differindex d2c400155f0..a9ff3e50707 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/21-indexing-multiple.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/21-indexing-multiple-biber.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/21-indexing-multiple-bibtex.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/21-indexing-multiple-bibtex.pdf Binary files differindex c329f5ae459..6a1d6f03613 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/21-indexing-multiple-bibtex.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/21-indexing-multiple-bibtex.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/21-indexing-multiple.tex b/Master/texmf-dist/doc/latex/biblatex/examples/21-indexing-multiple.tex index 81d8eee825a..3ae30c0a9a2 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/21-indexing-multiple.tex +++ b/Master/texmf-dist/doc/latex/biblatex/examples/21-indexing-multiple.tex @@ -57,7 +57,6 @@ {\DeclareIndexNameFormat{default}{% \usebibmacro{index:name}{\index[names]}{#1}{#3}{#5}{#7}}} {\DeclareIndexNameFormat{default}{% - \nameparts{#1}% \usebibmacro{index:name}{\index[names]} {\namepartfamily} {\namepartgiven} diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/22-indexing-subentry.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/22-indexing-subentry-biber.pdf Binary files differindex b1ddc180b4c..6628fb808b1 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/22-indexing-subentry.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/22-indexing-subentry-biber.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/22-indexing-subentry-bibtex.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/22-indexing-subentry-bibtex.pdf Binary files differindex 623581637f4..1e79f508ec7 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/22-indexing-subentry-bibtex.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/22-indexing-subentry-bibtex.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/22-indexing-subentry.tex b/Master/texmf-dist/doc/latex/biblatex/examples/22-indexing-subentry.tex index 52f92ecbf52..5be1df91f55 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/22-indexing-subentry.tex +++ b/Master/texmf-dist/doc/latex/biblatex/examples/22-indexing-subentry.tex @@ -48,7 +48,6 @@ {\usebibmacro{index:name}{\index[name-title]}{#1}{#3}{#5}{#7}} {\usebibmacro{index:name:title}{\index[name-title]}{#1}{#3}{#5}{#7}}}} {\DeclareIndexNameFormat{name:title}{% - \nameparts{#1}% \iffieldundef{title} {\usebibmacro{index:name}{\index[name-title]} {\namepartfamily} diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/30-style-numeric.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/30-style-numeric-biber.pdf Binary files differindex f947df523b1..e4ef3ffd3ae 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/30-style-numeric.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/30-style-numeric-biber.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/30-style-numeric-bibtex.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/30-style-numeric-bibtex.pdf Binary files differindex 3db7aaaab18..c4a58c2d13e 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/30-style-numeric-bibtex.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/30-style-numeric-bibtex.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/31-style-numeric-comp.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/31-style-numeric-comp-biber.pdf Binary files differindex cf0b4c64038..952eacb61c7 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/31-style-numeric-comp.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/31-style-numeric-comp-biber.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/31-style-numeric-comp-bibtex.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/31-style-numeric-comp-bibtex.pdf Binary files differindex 77a3b8fbf53..435b4f1be18 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/31-style-numeric-comp-bibtex.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/31-style-numeric-comp-bibtex.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/32-style-numeric-verb.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/32-style-numeric-verb-biber.pdf Binary files differindex 141a2626dfd..53c57cf4c66 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/32-style-numeric-verb.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/32-style-numeric-verb-biber.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/32-style-numeric-verb-bibtex.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/32-style-numeric-verb-bibtex.pdf Binary files differindex 8e860c89d89..8310512ab28 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/32-style-numeric-verb-bibtex.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/32-style-numeric-verb-bibtex.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/40-style-alphabetic.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/40-style-alphabetic-biber.pdf Binary files differindex 23b923fcb69..18f545cf638 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/40-style-alphabetic.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/40-style-alphabetic-biber.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/40-style-alphabetic-bibtex.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/40-style-alphabetic-bibtex.pdf Binary files differindex c8901188e0a..6c60f881ee7 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/40-style-alphabetic-bibtex.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/40-style-alphabetic-bibtex.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/41-style-alphabetic-verb.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/41-style-alphabetic-verb-biber.pdf Binary files differindex 3317a204d0b..78009c92758 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/41-style-alphabetic-verb.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/41-style-alphabetic-verb-biber.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/41-style-alphabetic-verb-bibtex.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/41-style-alphabetic-verb-bibtex.pdf Binary files differindex c45566b68c9..7f9806b9e7a 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/41-style-alphabetic-verb-bibtex.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/41-style-alphabetic-verb-bibtex.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/42-style-alphabetic-template.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/42-style-alphabetic-template-biber.pdf Binary files differindex 9350caf4e38..8fbd0cf0b80 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/42-style-alphabetic-template.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/42-style-alphabetic-template-biber.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/42-style-alphabetic-template-bibtex.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/42-style-alphabetic-template-bibtex.pdf Binary files differindex 7405e8b58ce..02920994551 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/42-style-alphabetic-template-bibtex.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/42-style-alphabetic-template-bibtex.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/42-style-alphabetic-template.tex b/Master/texmf-dist/doc/latex/biblatex/examples/42-style-alphabetic-template.tex index e7511032baf..976306cbc01 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/42-style-alphabetic-template.tex +++ b/Master/texmf-dist/doc/latex/biblatex/examples/42-style-alphabetic-template.tex @@ -7,7 +7,7 @@ \usepackage[utf8]{inputenc} \usepackage[american]{babel} \usepackage{csquotes} -\usepackage[backend=biber,style=alphabetic,backend=biber]{biblatex} +\usepackage[style=alphabetic,backend=biber]{biblatex} \usepackage{hyperref} \addbibresource{biblatex-examples.bib} diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/50-style-authoryear.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/50-style-authoryear-biber.pdf Binary files differindex 98d7b53e3cb..fd5d6dd1d94 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/50-style-authoryear.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/50-style-authoryear-biber.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/50-style-authoryear-bibtex.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/50-style-authoryear-bibtex.pdf Binary files differindex 12b94699917..d4b27d97f56 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/50-style-authoryear-bibtex.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/50-style-authoryear-bibtex.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/51-style-authoryear-ibid.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/51-style-authoryear-ibid-biber.pdf Binary files differindex 0977ae7ede5..34b1a352d90 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/51-style-authoryear-ibid.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/51-style-authoryear-ibid-biber.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/51-style-authoryear-ibid-bibtex.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/51-style-authoryear-ibid-bibtex.pdf Binary files differindex 2176417661e..6a1e41af6f2 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/51-style-authoryear-ibid-bibtex.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/51-style-authoryear-ibid-bibtex.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/52-style-authoryear-comp.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/52-style-authoryear-comp-biber.pdf Binary files differindex 0418cf8b16b..075782a1525 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/52-style-authoryear-comp.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/52-style-authoryear-comp-biber.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/52-style-authoryear-comp-bibtex.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/52-style-authoryear-comp-bibtex.pdf Binary files differindex a0d0fc538db..a5e4ed46cd2 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/52-style-authoryear-comp-bibtex.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/52-style-authoryear-comp-bibtex.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/53-style-authoryear-icomp.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/53-style-authoryear-icomp-biber.pdf Binary files differindex a393d821c44..37a8b822f6d 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/53-style-authoryear-icomp.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/53-style-authoryear-icomp-biber.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/53-style-authoryear-icomp-bibtex.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/53-style-authoryear-icomp-bibtex.pdf Binary files differindex aa12525b1bc..1b284f92256 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/53-style-authoryear-icomp-bibtex.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/53-style-authoryear-icomp-bibtex.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/60-style-authortitle.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/60-style-authortitle-biber.pdf Binary files differindex ce2d9087ee3..510d4af68bd 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/60-style-authortitle.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/60-style-authortitle-biber.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/60-style-authortitle-bibtex.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/60-style-authortitle-bibtex.pdf Binary files differindex 435a51b2823..9e43451dbf9 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/60-style-authortitle-bibtex.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/60-style-authortitle-bibtex.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/61-style-authortitle-ibid.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/61-style-authortitle-ibid-biber.pdf Binary files differindex 4c8c790b308..d12e69ae4d4 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/61-style-authortitle-ibid.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/61-style-authortitle-ibid-biber.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/61-style-authortitle-ibid-bibtex.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/61-style-authortitle-ibid-bibtex.pdf Binary files differindex 4bdea7aa2ef..5e49cadaa50 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/61-style-authortitle-ibid-bibtex.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/61-style-authortitle-ibid-bibtex.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/62-style-authortitle-comp.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/62-style-authortitle-comp-biber.pdf Binary files differindex 609fcd796ca..19ee46d0d0a 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/62-style-authortitle-comp.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/62-style-authortitle-comp-biber.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/62-style-authortitle-comp-bibtex.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/62-style-authortitle-comp-bibtex.pdf Binary files differindex c752967805a..1c41e4e47fa 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/62-style-authortitle-comp-bibtex.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/62-style-authortitle-comp-bibtex.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/63-style-authortitle-icomp.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/63-style-authortitle-icomp-biber.pdf Binary files differindex 335969f80d3..65714c22826 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/63-style-authortitle-icomp.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/63-style-authortitle-icomp-biber.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/63-style-authortitle-icomp-bibtex.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/63-style-authortitle-icomp-bibtex.pdf Binary files differindex 1ad56b94424..e436ca26061 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/63-style-authortitle-icomp-bibtex.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/63-style-authortitle-icomp-bibtex.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/64-style-authortitle-terse.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/64-style-authortitle-terse-biber.pdf Binary files differindex aa933d974ea..bf0b8db0a70 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/64-style-authortitle-terse.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/64-style-authortitle-terse-biber.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/64-style-authortitle-terse-bibtex.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/64-style-authortitle-terse-bibtex.pdf Binary files differindex 26890203454..d584b78702d 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/64-style-authortitle-terse-bibtex.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/64-style-authortitle-terse-bibtex.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/65-style-authortitle-tcomp.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/65-style-authortitle-tcomp-biber.pdf Binary files differindex e8add0b0bea..d489ea720c3 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/65-style-authortitle-tcomp.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/65-style-authortitle-tcomp-biber.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/65-style-authortitle-tcomp-bibtex.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/65-style-authortitle-tcomp-bibtex.pdf Binary files differindex 6179d094298..5bf03b156cd 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/65-style-authortitle-tcomp-bibtex.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/65-style-authortitle-tcomp-bibtex.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/66-style-authortitle-ticomp.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/66-style-authortitle-ticomp-biber.pdf Binary files differindex 27a9e61da9c..7df4876ab38 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/66-style-authortitle-ticomp.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/66-style-authortitle-ticomp-biber.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/66-style-authortitle-ticomp-bibtex.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/66-style-authortitle-ticomp-bibtex.pdf Binary files differindex 5ae7fec8531..7351b2d468e 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/66-style-authortitle-ticomp-bibtex.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/66-style-authortitle-ticomp-bibtex.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/70-style-verbose.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/70-style-verbose-biber.pdf Binary files differindex 978160bc9a1..b475ddf54f5 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/70-style-verbose.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/70-style-verbose-biber.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/70-style-verbose-bibtex.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/70-style-verbose-bibtex.pdf Binary files differindex e3434a18758..e483572a3fe 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/70-style-verbose-bibtex.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/70-style-verbose-bibtex.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/71-style-verbose-ibid.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/71-style-verbose-ibid-biber.pdf Binary files differindex 420f2068305..c01c1bcb874 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/71-style-verbose-ibid.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/71-style-verbose-ibid-biber.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/71-style-verbose-ibid-bibtex.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/71-style-verbose-ibid-bibtex.pdf Binary files differindex 0ef729cce7e..043ee3c0e3c 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/71-style-verbose-ibid-bibtex.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/71-style-verbose-ibid-bibtex.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/72-style-verbose-note.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/72-style-verbose-note-biber.pdf Binary files differindex 4c84b27426b..3cd79268f4e 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/72-style-verbose-note.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/72-style-verbose-note-biber.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/72-style-verbose-note-bibtex.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/72-style-verbose-note-bibtex.pdf Binary files differindex 1c1d5835438..da57900da0b 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/72-style-verbose-note-bibtex.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/72-style-verbose-note-bibtex.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/73-style-verbose-inote.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/73-style-verbose-inote-biber.pdf Binary files differindex 3ffd99dbd45..da7dd8825ba 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/73-style-verbose-inote.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/73-style-verbose-inote-biber.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/73-style-verbose-inote-bibtex.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/73-style-verbose-inote-bibtex.pdf Binary files differindex 79256d15ff6..88214751fcf 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/73-style-verbose-inote-bibtex.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/73-style-verbose-inote-bibtex.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/74-style-verbose-trad1.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/74-style-verbose-trad1-biber.pdf Binary files differindex 00cdf88fb84..5ca29b029c3 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/74-style-verbose-trad1.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/74-style-verbose-trad1-biber.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/74-style-verbose-trad1-bibtex.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/74-style-verbose-trad1-bibtex.pdf Binary files differindex 47a9b185a4a..b6f07e657d7 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/74-style-verbose-trad1-bibtex.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/74-style-verbose-trad1-bibtex.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/75-style-verbose-trad2.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/75-style-verbose-trad2-biber.pdf Binary files differindex 3f67a41f440..d9f1f5225ad 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/75-style-verbose-trad2.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/75-style-verbose-trad2-biber.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/75-style-verbose-trad2-bibtex.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/75-style-verbose-trad2-bibtex.pdf Binary files differindex f6f37a0617f..23b2b5546ae 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/75-style-verbose-trad2-bibtex.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/75-style-verbose-trad2-bibtex.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/76-style-verbose-trad3.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/76-style-verbose-trad3-biber.pdf Binary files differindex 0820a4837ef..c55593a7338 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/76-style-verbose-trad3.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/76-style-verbose-trad3-biber.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/76-style-verbose-trad3-bibtex.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/76-style-verbose-trad3-bibtex.pdf Binary files differindex 8bd1e14a49a..a9926a3e0ba 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/76-style-verbose-trad3-bibtex.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/76-style-verbose-trad3-bibtex.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/80-style-reading.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/80-style-reading-biber.pdf Binary files differindex 3f1f26c6aca..380a21f171c 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/80-style-reading.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/80-style-reading-biber.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/80-style-reading-bibtex.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/80-style-reading-bibtex.pdf Binary files differindex e8908c87e55..ed70a7526c2 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/80-style-reading-bibtex.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/80-style-reading-bibtex.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/81-style-draft.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/81-style-draft-biber.pdf Binary files differindex 12cd468d025..14296b6e05b 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/81-style-draft.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/81-style-draft-biber.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/81-style-draft-bibtex.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/81-style-draft-bibtex.pdf Binary files differindex aac1f76cf0a..3dcdb994462 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/81-style-draft-bibtex.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/81-style-draft-bibtex.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/82-style-debug.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/82-style-debug-biber.pdf Binary files differindex 6f183c9f848..2efab5faa01 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/82-style-debug.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/82-style-debug-biber.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/82-style-debug-bibtex.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/82-style-debug-bibtex.pdf Binary files differindex a61aac1e5cb..eacff03116f 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/82-style-debug-bibtex.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/examples/82-style-debug-bibtex.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/90-related-entries-biber.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/90-related-entries-biber.pdf Binary files differnew file mode 100644 index 00000000000..ccaccae5a99 --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex/examples/90-related-entries-biber.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/90-related-entries.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/90-related-entries.pdf Binary files differdeleted file mode 100644 index 13d59de1a93..00000000000 --- a/Master/texmf-dist/doc/latex/biblatex/examples/90-related-entries.pdf +++ /dev/null diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/90-related-entries.tex b/Master/texmf-dist/doc/latex/biblatex/examples/90-related-entries.tex index a037d7554cd..916316b0f28 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/90-related-entries.tex +++ b/Master/texmf-dist/doc/latex/biblatex/examples/90-related-entries.tex @@ -1,11 +1,5 @@ -% -% This file presents related entries from biblatex-examples.bib -% \documentclass[a4paper]{article} \usepackage{fontspec} -\setmainfont{Cambria} -\setsansfont{Arial} -\setmonofont{Courier New} \usepackage[american]{babel} \usepackage{csquotes} \usepackage[style=reading,backend=biber]{biblatex} diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/91-sorting-schemes-biber.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/91-sorting-schemes-biber.pdf Binary files differnew file mode 100644 index 00000000000..71ef1b05106 --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex/examples/91-sorting-schemes-biber.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/91-sorting-schemes.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/91-sorting-schemes.pdf Binary files differdeleted file mode 100644 index a1a3cfa0a9d..00000000000 --- a/Master/texmf-dist/doc/latex/biblatex/examples/91-sorting-schemes.pdf +++ /dev/null diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/91-sorting-schemes.tex b/Master/texmf-dist/doc/latex/biblatex/examples/91-sorting-schemes.tex index 7591fc234cb..799b57f182e 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/91-sorting-schemes.tex +++ b/Master/texmf-dist/doc/latex/biblatex/examples/91-sorting-schemes.tex @@ -1,12 +1,5 @@ -% -% This file presents the 'authoryear' style with different sorting schemes in -% citation lists and the bibliography. -% \documentclass[a4paper]{article} \usepackage{fontspec} -\setmainfont{Cambria} -\setsansfont{Arial} -\setmonofont{Courier New} \usepackage[american]{babel} \usepackage{csquotes} \usepackage[style=authoryear,sortcites,sorting=ynt,backend=biber]{biblatex} diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/92-bibliographylists-biber.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/92-bibliographylists-biber.pdf Binary files differnew file mode 100644 index 00000000000..3d39d979001 --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex/examples/92-bibliographylists-biber.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/92-bibliographylists.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/92-bibliographylists.pdf Binary files differdeleted file mode 100644 index 97c12f242f2..00000000000 --- a/Master/texmf-dist/doc/latex/biblatex/examples/92-bibliographylists.pdf +++ /dev/null diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/92-bibliographylists.tex b/Master/texmf-dist/doc/latex/biblatex/examples/92-bibliographylists.tex index ff60eddc275..52661044fda 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/92-bibliographylists.tex +++ b/Master/texmf-dist/doc/latex/biblatex/examples/92-bibliographylists.tex @@ -1,12 +1,5 @@ -% -% This file demonstrates the facilities for printing arbitrary bibliography -% lists containing information about abbreviations etc. Biber only. -% \documentclass[a4paper]{article} \usepackage{fontspec} -\setmainfont{Cambria} -\setsansfont{Arial} -\setmonofont{Courier New} \usepackage[american]{babel} \usepackage{csquotes} \usepackage[style=authoryear,backend=biber]{biblatex} diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/93-nameparts-biber.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/93-nameparts-biber.pdf Binary files differnew file mode 100644 index 00000000000..95405a0af79 --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex/examples/93-nameparts-biber.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/93-nameparts.tex b/Master/texmf-dist/doc/latex/biblatex/examples/93-nameparts.tex index c59cba1065a..9f07e567bd6 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/93-nameparts.tex +++ b/Master/texmf-dist/doc/latex/biblatex/examples/93-nameparts.tex @@ -1,25 +1,20 @@ -% -% This file demonstrates modification of the datamodel to allow new -% nameparts. Biber only. -% \documentclass[a4paper]{article} \usepackage{fontspec} \setmainfont{Cambria} \setsansfont{Arial} \setmonofont{Courier New} \usepackage[russian]{babel} +\usepackage[russian]{babel} \usepackage{csquotes} \usepackage[style=authoryear,datamodel=93-nameparts,backend=biber]{biblatex} -\usepackage{hyperref} \addbibresource[datatype=biblatexml]{biblatex-examples.bltxml} % A format using the new name part \DeclareNameFormat{author}{% - \nameparts{#1}% \usebibmacro{name:delim}{#1}% \usebibmacro{name:hook}{#1}% \mkbibnamefamily{\namepartfamily}% - \ifempty{\namepartgiven} + \ifdefvoid\namepartgiven {} {\revsdnamepunct \bibnamedelimd diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/94-labelprefix-biber.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/94-labelprefix-biber.pdf Binary files differnew file mode 100644 index 00000000000..0328e582f1f --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex/examples/94-labelprefix-biber.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/94-labelprefix.tex b/Master/texmf-dist/doc/latex/biblatex/examples/94-labelprefix.tex new file mode 100644 index 00000000000..81f244bc1eb --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex/examples/94-labelprefix.tex @@ -0,0 +1,77 @@ +\documentclass[a4paper]{article} +\usepackage{fontspec} +\usepackage{csquotes} +\usepackage[style=numeric, sorting=none, defernumbers=true, backend=biber]{biblatex} +\addbibresource{biblatex-examples.bib} + +\DeclareBibliographyCategory{cat1} +\addtocategory{cat1}{yoon} +\DeclareBibliographyCategory{cat2} +\addtocategory{cat2}{piccato} +\assignrefcontextcats[sorting=none,labelprefix=Q]{cat2} +\assignrefcontextentries[labelprefix=Q]{yoon} +\assignrefcontextkeyws*[sorting=none,labelprefix=S]{secondary} +\defbibfilter{cats}{category=cat1 or category=cat2} + +\setlength{\parindent}{0pt} +\newcommand{\cmd}[1]{\texttt{\textbackslash #1}} +\begin{document} +This example demonstrates the quite complex options for assigning +labelprefices to bibliographies and how citations decide which bibliography +to point to. The default rule is that a citation will point to its entry in +the last bibliography in which it appears. This can be overridden by +explicit assignment to particular refcontexts with the +\cmd{assignrefcontext*} macros.\\ + +% refcontext=none/global// + +This is a publication by Aristotle: +\cite{aristotle:anima} % comes from refcontext=none/global/R + +These are not publications by Aristotle: +\cite{yoon} % comes from default refcontext=none/global/Q due to \assignrefcontextentries +\cite{worman} % comes from default refcontext=nty/global// and not from + % nty/global/T in next refsection even though that is the + % last printed bib/biblist with worman in it. This is because + % refcontext defaults are local to refcontexts +\cite{piccato} % comes from refcontext=none/global/Q due to \assignrefcontextcats +\cite{nussbaum} % comes from refcontext=none/global/S due to \assignrefcontextkeyws* + +This is another publication by Aristotle: +\cite{aristotle:physics} % comes from refcontext=none/global/R + +\begin{refcontext}[labelprefix=R] +% refcontext=none/global/R +\printbibliography[keyword=primary, title={Aristotle Publications}] +% aristotle:anima and aristotle:physics default refcontext is this one +\end{refcontext} + +\begin{refcontext}[labelprefix=S] +% refcontext=none/global/S +\printbibliography[ notkeyword=primary, title={Other publications}] +\end{refcontext} + +\begin{refcontext}[labelprefix=Q] +% refcontext=none/global/Q +\printbibliography[filter=cats, title={Other publications}] +\end{refcontext} + +\begin{refcontext}[sorting=nty] +% refcontext=nty/global// +\printbibliography[resetnumbers, notkeyword=primary, title={More Other publications}] +% Nussbaum default refcontext is this one +% piccato default refcontext is this one +% yoon default refcontext is this one +% worman default refcontext is this one +\cite{nussbaum} % comes from refcontext=nty/global// due to weak \assignrefcontextkeyws* +\end{refcontext} + +\section*{New Refsection} +\newrefsection +\cite{worman} % comes from default refcontext=nty/global/T +\begin{refcontext}[sorting=nty, labelprefix=T] +% refcontext=nty/global// +\printbibliography[resetnumbers, notkeyword=primary, title={More Other publications}] +\end{refcontext} + +\end{document}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/95-customlists-biber.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/95-customlists-biber.pdf Binary files differnew file mode 100644 index 00000000000..bfae8393fb3 --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex/examples/95-customlists-biber.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/95-customlists.bib b/Master/texmf-dist/doc/latex/biblatex/examples/95-customlists.bib new file mode 100644 index 00000000000..611798f6b47 --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex/examples/95-customlists.bib @@ -0,0 +1,23 @@ +@ARTICLE{test1, + AUTHOR = {Arthur Smith and James Jones and Bill Smiley and Jake Wrath}, + JOURNALTITLE = {A Journal}, + YEAR = {2010} +} + +@ARTICLE{test2, + AUTHOR = {Philippa Smyth and Arthur Smith and Bill Likely}, + JOURNALTITLE = {Another Journal}, + YEAR = {2011} +} + +@ARTICLE{test3, + AUTHOR = {Arthur Smith}, + JOURNALTITLE = {The Best Journal}, + YEAR = {2013} +} + +@ARTICLE{test4, + AUTHOR = {Philippa Smyth and Arthur Smith and James Jones}, + JOURNALTITLE = {Again Another Journal}, + YEAR = {2014} +} diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/95-customlists.dbx b/Master/texmf-dist/doc/latex/biblatex/examples/95-customlists.dbx new file mode 100644 index 00000000000..5abddf79e62 --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex/examples/95-customlists.dbx @@ -0,0 +1,3 @@ +\DeclareDatamodelFields[type=list, datatype=name, label=true]{coauthor} +\DeclareDatamodelEntrytypes{coauthor} +\DeclareDatamodelEntryfields[coauthor]{coauthor} diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/95-customlists.tex b/Master/texmf-dist/doc/latex/biblatex/examples/95-customlists.tex new file mode 100644 index 00000000000..20958c1c6c6 --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex/examples/95-customlists.tex @@ -0,0 +1,93 @@ +\documentclass[a4paper]{article} +\usepackage{fontspec} +% Using a custom data model to declare the "coauthor" field +\usepackage[style=authoryear,datamodel=95-customlists,backend=biber]{biblatex} +\addbibresource{95-customlists.bib} + +% 1. First, check if the author list contain me, here, "Arthur Smith" (and +% isn't *just* me as then we can ignore this entry as there are no coauthors) +% 2. Copy the author field to a temporary field "coauthortext". We don't need +% datamodel declarations for this as this will be deleted after use and +% will never get anywhere near code that queries the data model. +% 3. Remove me (Arthur Smith) from this temporary copy of the author list +% 4. Turn the resulting field into a comma-separated list +% 5. Loop over this comma-separated list, creating new entries of type +% "coauthor" each with a "coauthor" name list field containing the data +% from the loop variable +% 6. Remove the temporary author field copy "coauthortext" +% +% The special $MAPLOOP variable holds each value of the csv field named by +% the "foreach" option on the \map macro. +% The special $MAPUNIQ variable is a random string generated automatically +% at the beginning of each \map section. This is useful when you need a unique +% string as we do here because citation keys should be unique. +% $MAPLOOPVAL can be used to refer to the last created $MAPUNIQ +\DeclareSourcemap{ + \maps[datatype=bibtex]{ + \map[overwrite]{ + \step[fieldsource=author, + match=\regexp{Arthur\s+Smith}, final] + \step[fieldsource=author, + notmatch=\regexp{^Arthur\s+Smith$}, final] + \step[fieldsource=author, fieldset=coauthortext, origfieldval] + \step[fieldsource=coauthortext, + match=\regexp{Arthur\s+Smith\s+and\s+}, + replace={}] + \step[fieldsource=coauthortext, + match=\regexp{\s+and\s+Arthur\s+Smith}, + replace={}] + \step[fieldsource=coauthortext, + match=\regexp{\s+and\s+}, + replace={,}] + } + \map[overwrite, foreach=coauthortext]{ + \step[fieldsource=coauthortext, match=\regexp{.}, final] + \step[entrynew=\regexp{$MAPUNIQ}, entrynewtype=coauthor] + \step[entrytarget=\regexp{$MAPUNIQVAL}, fieldset=coauthor, fieldvalue=\regexp{$MAPLOOP}] + \step[entrytarget=\regexp{$MAPUNIQVAL}, fieldset=options, fieldvalue=skipbib] + } + \map[overwrite]{ + \step[fieldsource=coauthortext, null] + } + } +} + +% Sort the biblist by coauthor name +\DeclareSortingScheme{coauthor}{ + \sort{ + \field{coauthor} + } +} + +% Driver to print the biblist items +\DeclareBibliographyDriver{coauthor}{% + \printnames{coauthor}} + +% bibcheck to strip duplicates +\defbibcheck{coauthor}{% + \ifcsdef{\strname{coauthor}} + {\skipentry} + {\savenamecs{coauthor}{\strname{coauthor}}}} + +% Simple bibenvironment to print the biblist +\defbibenvironment{coauthor} +{\list{} + {\setlength{\leftmargin}{\bibhang}% + \setlength{\itemindent}{-\leftmargin}% + \setlength{\itemsep}{\bibitemsep}% + \setlength{\parsep}{\bibparsep}}} +{\endlist} +{\item} + +\begin{document} +\nocite{*} +\printbibliography +% This will automatically use the "coauthor" sorting scheme/biblist/driver etc. +\printbiblist[title=CoAuthors]{coauthor} +\end{document} + + + + + + diff --git a/Master/texmf-dist/tex/latex/biblatex/bbx/alphabetic.bbx b/Master/texmf-dist/tex/latex/biblatex/bbx/alphabetic.bbx index e2ef3b61486..06d91ba6c07 100644 --- a/Master/texmf-dist/tex/latex/biblatex/bbx/alphabetic.bbx +++ b/Master/texmf-dist/tex/latex/biblatex/bbx/alphabetic.bbx @@ -14,7 +14,7 @@ \defbibenvironment{bibliography} {\list {\printtext[labelalphawidth]{% - \printfield{prefixnumber}% + \printfield{labelprefix}% \printfield{labelalpha}% \printfield{extraalpha}}} {\setlength{\labelwidth}{\labelalphawidth}% diff --git a/Master/texmf-dist/tex/latex/biblatex/bbx/authoryear.bbx b/Master/texmf-dist/tex/latex/biblatex/bbx/authoryear.bbx index 6b3984ebade..4f6c6bc5dda 100644 --- a/Master/texmf-dist/tex/latex/biblatex/bbx/authoryear.bbx +++ b/Master/texmf-dist/tex/latex/biblatex/bbx/authoryear.bbx @@ -188,15 +188,15 @@ {\usebibmacro{bbx:savehash}% \printnames{author}% \iffieldundef{authortype} - {\setunit{\addspace}} + {\setunit{\printdelim{nameyeardelim}}} {\setunit{\addcomma\space}}}% \iffieldundef{authortype} {} {\usebibmacro{authorstrg}% - \setunit{\addspace}}}% + \setunit{\printdelim{nameyeardelim}}}}% {\global\undef\bbx@lasthash \usebibmacro{labeltitle}% - \setunit*{\addspace}}% + \setunit*{\printdelim{nonameyeardelim}}}% \usebibmacro{date+extrayear}} \renewbibmacro*{editor}{% @@ -216,10 +216,10 @@ \usebibmacro{bbx:savehash}}% \usebibmacro{#1}% \clearname{editor}% - \setunit{\addspace}}% + \setunit{\printdelim{nameyeardelim}}}% {\global\undef\bbx@lasthash \usebibmacro{labeltitle}% - \setunit*{\addspace}}% + \setunit*{\printdelim{nonameyeardelim}}}% \usebibmacro{date+extrayear}} \renewbibmacro*{translator}{% @@ -239,10 +239,10 @@ \usebibmacro{bbx:savehash}}% \usebibmacro{translator+othersstrg}% \clearname{translator}% - \setunit{\addspace}}% + \setunit{\printdelim{nameyeardelim}}}% {\global\undef\bbx@lasthash \usebibmacro{labeltitle}% - \setunit*{\addspace}}% + \setunit*{\printdelim{nonameyeardelim}}}% \usebibmacro{date+extrayear}} \newbibmacro*{bbx:dashcheck}[2]{% diff --git a/Master/texmf-dist/tex/latex/biblatex/bbx/debug.bbx b/Master/texmf-dist/tex/latex/biblatex/bbx/debug.bbx index 319b26e0553..c9e5145727e 100644 --- a/Master/texmf-dist/tex/latex/biblatex/bbx/debug.bbx +++ b/Master/texmf-dist/tex/latex/biblatex/bbx/debug.bbx @@ -52,7 +52,6 @@ \detokenize{#2}% \ifblank{#8}{}{\space\detokenize{#8}}}} {\DeclareNameFormat{debug}{% - \nameparts{#1}% \bbx@mklabel{\currentname}% \ifdefvoid{\namepartgiven}{}{\expandafter\detokenize\expandafter{\namepartgiven}\space}% \ifdefvoid{\namepartprefix}{}{\expandafter\detokenize\expandafter{\namepartprefix}\ifpunctmark{'}{}{\space}}% @@ -103,7 +102,7 @@ \clearpage} \def\do#1{\DeclareBibliographyAlias{#1}{debug}} -\abx@dotypes +\abx@doentrytypes \do{*} \DeclareBibliographyDriver{shorthand}{% diff --git a/Master/texmf-dist/tex/latex/biblatex/bbx/numeric.bbx b/Master/texmf-dist/tex/latex/biblatex/bbx/numeric.bbx index 02299df2a6a..5458f8a5957 100644 --- a/Master/texmf-dist/tex/latex/biblatex/bbx/numeric.bbx +++ b/Master/texmf-dist/tex/latex/biblatex/bbx/numeric.bbx @@ -20,7 +20,7 @@ \defbibenvironment{bibliography} {\list {\printtext[labelnumberwidth]{% - \printfield{prefixnumber}% + \printfield{labelprefix}% \printfield{labelnumber}}} {\setlength{\labelwidth}{\labelnumberwidth}% \setlength{\leftmargin}{\labelwidth}% diff --git a/Master/texmf-dist/tex/latex/biblatex/bbx/standard.bbx b/Master/texmf-dist/tex/latex/biblatex/bbx/standard.bbx index c1d480d4d70..e8a1606383f 100644 --- a/Master/texmf-dist/tex/latex/biblatex/bbx/standard.bbx +++ b/Master/texmf-dist/tex/latex/biblatex/bbx/standard.bbx @@ -27,7 +27,7 @@ \usebibmacro{bibindex}% \usebibmacro{begentry}% \usebibmacro{author/translator+others}% - \setunit{\labelnamepunct}\newblock + \setunit{\printdelim{nametitledelim}}\newblock \usebibmacro{title}% \newunit \printlist{language}% @@ -65,7 +65,7 @@ \usebibmacro{bibindex}% \usebibmacro{begentry}% \usebibmacro{author/editor+others/translator+others}% - \setunit{\labelnamepunct}\newblock + \setunit{\printdelim{nametitledelim}}\newblock \usebibmacro{maintitle+title}% \newunit \printlist{language}% @@ -113,7 +113,7 @@ \usebibmacro{bibindex}% \usebibmacro{begentry}% \usebibmacro{author/editor+others/translator+others}% - \setunit{\labelnamepunct}\newblock + \setunit{\printdelim{nametitledelim}}\newblock \usebibmacro{title}% \newunit \printlist{language}% @@ -150,7 +150,7 @@ \usebibmacro{bibindex}% \usebibmacro{begentry}% \usebibmacro{editor+others}% - \setunit{\labelnamepunct}\newblock + \setunit{\printdelim{nametitledelim}}\newblock \usebibmacro{maintitle+title}% \newunit \printlist{language}% @@ -196,7 +196,7 @@ \usebibmacro{bibindex}% \usebibmacro{begentry}% \usebibmacro{author/translator+others}% - \setunit{\labelnamepunct}\newblock + \setunit{\printdelim{nametitledelim}}\newblock \usebibmacro{title}% \newunit \printlist{language}% @@ -247,7 +247,7 @@ \usebibmacro{bibindex}% \usebibmacro{begentry}% \usebibmacro{author/translator+others}% - \setunit{\labelnamepunct}\newblock + \setunit{\printdelim{nametitledelim}}\newblock \usebibmacro{title}% \newunit \printlist{language}% @@ -296,7 +296,7 @@ \usebibmacro{bibindex}% \usebibmacro{begentry}% \usebibmacro{author/translator+others}% - \setunit{\labelnamepunct}\newblock + \setunit{\printdelim{nametitledelim}}\newblock \usebibmacro{title}% \newunit \printlist{language}% @@ -347,7 +347,7 @@ \usebibmacro{bibindex}% \usebibmacro{begentry}% \usebibmacro{author/editor}% - \setunit{\labelnamepunct}\newblock + \setunit{\printdelim{nametitledelim}}\newblock \usebibmacro{title}% \newunit \printlist{language}% @@ -394,7 +394,7 @@ \usebibmacro{bibindex}% \usebibmacro{begentry}% \usebibmacro{author/editor+others/translator+others}% - \setunit{\labelnamepunct}\newblock + \setunit{\printdelim{nametitledelim}}\newblock \usebibmacro{title}% \newunit \printlist{language}% @@ -429,7 +429,7 @@ \usebibmacro{bibindex}% \usebibmacro{begentry}% \usebibmacro{author/editor+others/translator+others}% - \setunit{\labelnamepunct}\newblock + \setunit{\printdelim{nametitledelim}}\newblock \usebibmacro{title}% \newunit \printlist{language}% @@ -466,7 +466,7 @@ \usebibmacro{bibindex}% \usebibmacro{begentry}% \usebibmacro{author}% - \setunit{\labelnamepunct}\newblock + \setunit{\printdelim{nametitledelim}}\newblock \usebibmacro{title}% \newunit \printlist{language}% @@ -504,7 +504,7 @@ \usebibmacro{bibindex}% \usebibmacro{begentry}% \usebibmacro{editor}% - \setunit{\labelnamepunct}\newblock + \setunit{\printdelim{nametitledelim}}\newblock \usebibmacro{title+issuetitle}% \newunit \printlist{language}% @@ -533,7 +533,7 @@ \usebibmacro{bibindex}% \usebibmacro{begentry}% \usebibmacro{editor+others}% - \setunit{\labelnamepunct}\newblock + \setunit{\printdelim{nametitledelim}}\newblock \usebibmacro{maintitle+title}% \newunit \printlist{language}% @@ -581,7 +581,7 @@ \usebibmacro{bibindex}% \usebibmacro{begentry}% \usebibmacro{author}% - \setunit{\labelnamepunct}\newblock + \setunit{\printdelim{nametitledelim}}\newblock \usebibmacro{title}% \newunit \printlist{language}% @@ -622,7 +622,7 @@ \usebibmacro{bibindex}% \usebibmacro{begentry}% \usebibmacro{author}% - \setunit{\labelnamepunct}\newblock + \setunit{\printdelim{nametitledelim}}\newblock \usebibmacro{title}% \newunit \printlist{language}% @@ -659,7 +659,7 @@ \usebibmacro{bibindex}% \usebibmacro{begentry}% \usebibmacro{author}% - \setunit{\labelnamepunct}\newblock + \setunit{\printdelim{nametitledelim}}\newblock \usebibmacro{title}% \newunit \printlist{language}% diff --git a/Master/texmf-dist/tex/latex/biblatex/biblatex_.def b/Master/texmf-dist/tex/latex/biblatex/biblatex.def index 1ac6cc1f723..3016d22fef6 100644 --- a/Master/texmf-dist/tex/latex/biblatex/biblatex_.def +++ b/Master/texmf-dist/tex/latex/biblatex/biblatex.def @@ -1,5 +1,5 @@ -% -*- mode: LaTeX -*- -\ProvidesFile{biblatex_.def} +\ProvidesFile{biblatex.def} +[\abx@cptid] % ------------------------------------------------------------------ % FORMATTING COMMANDS @@ -10,23 +10,74 @@ % Used in citations, bibliography and bibliography lists +% legacy - no longer needed could be removed one day when no-one is using it. +\def\nameparts#1{} + % Define namepart keys from datamodel constant list % \namepart<namepart> - e.g. \namepartfamily % \namepart<namepart>i - e.g. \namepartfamilyi -\def\nameparts#1{\setkeys{blx@opt@namepart}{#1}} \def\do#1{% \csdef{mkbibname#1}##1{##1}% \define@key{blx@opt@namepart}{#1}{\csdef{namepart#1}{##1}}% \define@key{blx@opt@namepart}{#1_i}{\csdef{namepart#1i}{##1}}} \expandafter\docsvlist\expandafter{\blx@datamodel@constant@nameparts} -\newcommand*{\mkbibnamefirst}[1]{#1}% legacy alias -\newcommand*{\mkbibnamelast}[1]{#1}% legacy alias -\newcommand*{\mkbibnameaffix}[1]{#1}% legacy alias +% legacy aliases +% set empty defaults so we can check if they have been redefined +\let\mkbibnamefirst\@empty +\let\mkbibnamelast\@empty +\let\mkbibnameaffix\@empty + +\AtEndPreamble{% + + \ifdefempty\mkbibnamelast + {\let\@mkbibnamelastsaved\mkbibnamefamily}% not redefined by user + {\blx@warning@noline{% + Attempt to redefine deprecated \string\mkbibnamelast\space, please + use \string\mkbibnamefamily\space instead. Using + \string\mkbibnamefamily}% + \let\@mkbibnamelastsaved\mkbibnamelast + \let\mkbibnamefamily\@mkbibnamelastsaved}% + % Now redefine it in case it's used + \def\mkbibnamelast{% + \blx@warning@noline{% + \string\mkbibnamelast\space is deprecated, please use + \string\mkbibnamefamily. Using \string\mkbibnamefamily}% + \@mkbibnamelastsaved} + + \ifdefempty\mkbibnamefirst + {\let\@mkbibnamefirstsaved\mkbibnamegiven}% not redefined by user + {\blx@warning@noline{% + Attempt to redefine deprecated \string\mkbibnamefirst\space, please + use \string\mkbibnamegiven\space instead. Using + \string\mkbibnamegiven}% + \let\@mkbibnamefirstsaved\mkbibnamefirst + \let\mkbibnamegiven\@mkbibnamefirstsaved}% + % Now redefine it in case it's used + \def\mkbibnamefirst{% + \blx@warning@noline{% + \string\mkbibnamefirst\space is deprecated, please use + \string\mkbibnamegiven. Using \string\mkbibnamegiven}% + \@mkbibnamefirstsaved} + + \ifdefempty\mkbibnameaffix + {\let\@mkbibnameaffixsaved\mkbibnamesuffix}% not redefined by user + {\blx@warning@noline{% + Attempt to redefine deprecated \string\mkbibnameaffix\space, please + use \string\mkbibnamesuffix\space instead. Using + \string\mkbibnamesuffix}% + \let\@mkbibnameaffixsaved\mkbibnameaffix + \let\mkbibnamesuffix\@mkbibnameaffixsaved}% + % Now redefine it in case it's used + \def\mkbibnameaffix{% + \blx@warning@noline{% + \string\mkbibnameaffix\space is deprecated, please use + \string\mkbibnamesuffix. Using \string\mkbibnamesuffix}% + \@mkbibnameaffixsaved}} + \newcommand*{\bibellipsis}{[\textellipsis\unkern]\midsentence} % Delimiters used in citations, bibliography and bibliography lists - \newcommand*{\multinamedelim}{\addcomma\space} \newcommand*{\finalnamedelim}{% \ifnumgreater{\value{liststop}}{2}{\finalandcomma}{}% @@ -40,17 +91,12 @@ \addspace\bibstring{and}\space} \newcommand*{\andmoredelim}{\addspace} -% Used in citations - \newcommand*{\multicitedelim}{\addsemicolon\space} \newcommand*{\compcitedelim}{\addcomma\space} \newcommand*{\supercitedelim}{\addcomma} \newcommand*{\prenotedelim}{\addspace} \newcommand*{\postnotedelim}{\addcomma\space} \newcommand*{\extpostnotedelim}{\addspace} -\newcommand*{\nametitledelim}{\addcomma\space} -\newcommand*{\nameyeardelim}{\addspace} -\newcommand*{\nonameyeardelim}{\addspace} \newcommand*{\volcitedelim}{\addcomma\space} \newcommand*{\textcitedelim}{% \iffinalcitedelim @@ -60,6 +106,22 @@ {\iftextcitepunct{\addsemicolon}{\addcomma}}% \space} +% context-sensitive delimiters +% retain compatibility with \labelnamepunct +\DeclareDelimFormat{namelabeldelim}{\addspace} +\DeclareDelimFormat{nametitledelim}{\addcomma\space} +\DeclareDelimFormat[bib]{nametitledelim}{\labelnamepunct} +\DeclareDelimFormat[biblist]{nametitledelim}{\labelnamepunct} +\DeclareDelimFormat[textcite]{nametitledelim}{\addspace} +\DeclareDelimFormat{nameyeardelim}{\addspace} +\DeclareDelimFormat[textcite]{nameyeardelim}{\addspace} +\DeclareDelimFormat[bib]{nameyeardelim}{\addspace} +\DeclareDelimFormat[biblist]{nameyeardelim}{\addspace} +\DeclareDelimFormat{nonameyeardelim}{\addspace} +\DeclareDelimFormat[textcite]{nonameyeardelim}{\addspace} +\DeclareDelimFormat[bib]{nonameyeardelim}{\addspace} +\DeclareDelimFormat[biblist]{nonameyeardelim}{\addspace} + % This is a provisional definition for \iffinalcitedelim{<true>}{<false>}, a % test that should expand <true> if the next non-compact citation delimiter % is the last one in the citation list printed by \textcite or \textcites. @@ -677,7 +739,6 @@ \DeclareNameAlias{first-last}{given-family}% legacy alias \DeclareNameFormat{given-family}{% - \nameparts{#1}% \ifgiveninits {\usebibmacro{name:given-family} {\namepartfamily} @@ -693,7 +754,6 @@ \DeclareNameAlias{last-first}{family-given}% legacy alias \DeclareNameFormat{family-given}{% - \nameparts{#1}% \ifgiveninits {\usebibmacro{name:family-given} {\namepartfamily} @@ -707,9 +767,8 @@ {\namepartsuffix}}% \usebibmacro{name:andothers}} -\DeclareNameAlias{last-first/first-last}{family-given/given-family}% legacy aliAs +\DeclareNameAlias{last-first/first-last}{family-given/given-family}% legacy alias \DeclareNameFormat{family-given/given-family}{% - \nameparts{#1}% \ifnumequal{\value{listcount}}{1} {\ifgiveninits {\usebibmacro{name:family-given} @@ -722,7 +781,10 @@ {\namepartgiven} {\namepartprefix} {\namepartsuffix}}% - \ifempty{\namepartgiven\namepartprefix} + \ifboolexpe{% + test {\ifdefvoid\namepartgiven} + and + test {\ifdefvoid\namepartprefix}} {} {\usebibmacro{name:revsdelim}}} {\ifgiveninits @@ -739,7 +801,6 @@ \usebibmacro{name:andothers}} \DeclareNameFormat{initsonly}{% - \nameparts{#1}% \usebibmacro{name:given-family} {\namepartfamilyi} {\namepartgiveni} @@ -758,7 +819,6 @@ % Used in some citations \DeclareNameFormat{labelname}{% - \nameparts{#1}% \ifcase\value{uniquename}% \usebibmacro{name:family} {\namepartfamily} @@ -822,7 +882,7 @@ \ifuseprefix {\usebibmacro{name:delim}{#3#1}% \usebibmacro{name:hook}{#3#1}% - \ifempty{#3} + \ifdefvoid{#3} {} {\ifcapital {\mkbibnameprefix{\MakeCapital{#3}}\isdot} @@ -839,14 +899,14 @@ \newbibmacro*{name:given-family}[4]{% \usebibmacro{name:delim}{#2#3#1}% \usebibmacro{name:hook}{#2#3#1}% - \ifempty{#2}{}{\mkbibnamegiven{#2}\isdot\bibnamedelimd}% - \ifempty{#3}{}{% + \ifdefvoid{#2}{}{\mkbibnamegiven{#2}\isdot\bibnamedelimd}% + \ifdefvoid{#3}{}{% \mkbibnameprefix{#3}\isdot \ifprefchar {} {\ifuseprefix{\bibnamedelimc}{\bibnamedelimd}}}% \mkbibnamefamily{#1}\isdot - \ifempty{#4}{}{\bibnamedelimd\mkbibnameaffix{#4}\isdot}} + \ifdefvoid{#4}{}{\bibnamedelimd\mkbibnamesuffix{#4}\isdot}} \newbibmacro*{name:first-last}[4]{% legacy alias \blx@warning@noline{% 'name:first-last' is deprecated, please use 'name:given-family'}% @@ -856,21 +916,26 @@ \ifuseprefix {\usebibmacro{name:delim}{#3#1}% \usebibmacro{name:hook}{#3#1}% - \ifempty{#3}{}{% + \ifdefvoid{#3}{}{% \ifcapital {\mkbibnameprefix{\MakeCapital{#3}}\isdot} {\mkbibnameprefix{#3}\isdot}% \ifprefchar{}{\bibnamedelimc}}% \mkbibnamefamily{#1}\isdot - \ifempty{#4}{}{\bibnamedelimd\mkbibnameaffix{#4}\isdot}% - \ifempty{#2}{}{\revsdnamepunct\bibnamedelimd\mkbibnamegiven{#2}\isdot}} + \ifdefvoid{#4}{}{\bibnamedelimd\mkbibnamesuffix{#4}\isdot}% + \ifdefvoid{#2}{}{\revsdnamepunct\bibnamedelimd\mkbibnamegiven{#2}\isdot}} {\usebibmacro{name:delim}{#1}% \usebibmacro{name:hook}{#1}% \mkbibnamefamily{#1}\isdot - \ifempty{#4}{}{\bibnamedelimd\mkbibnameaffix{#4}\isdot}% - \ifempty{#2#3}{}{\revsdnamepunct}% - \ifempty{#2}{}{\bibnamedelimd\mkbibnamegiven{#2}\isdot}% - \ifempty{#3}{}{\bibnamedelimd\mkbibnameprefix{#3}\isdot}}} + \ifdefvoid{#4}{}{\bibnamedelimd\mkbibnamesuffix{#4}\isdot}% + \ifboolexpe{% + test {\ifdefvoid{#2}} + and + test {\ifdefvoid{#3}}} + {} + {\revsdnamepunct}% + \ifdefvoid{#2}{}{\bibnamedelimd\mkbibnamegiven{#2}\isdot}% + \ifdefvoid{#3}{}{\bibnamedelimd\mkbibnameprefix{#3}\isdot}}} \newbibmacro*{name:last-first}[4]{% legacy alias \blx@warning@noline{% 'name:last-first' is deprecated, please use 'name:family-given'}% @@ -969,7 +1034,6 @@ % The fallback used by \indexnames \DeclareIndexNameFormat{default}{% - \nameparts{#1}% \usebibmacro{index:name} {\index} {\namepartfamily} @@ -1019,26 +1083,29 @@ \usebibmacro{index:entry}{#1}{\mkbibindexname{#2}{#3}{#4}{#5}}} % {<family name>}{<given name>}{<given initials>}{<family name prefix>} - \newcommand*{\mkbibindexname}[4]{% \ifuseprefix - {\ifblank{#3}{}{#3 }% + {\ifdefvoid{#3}{}{#3 }% \@firstofone #1% remove spurious braces - \ifblank{#4}{}{ #4}% - \ifblank{#2}{}{, #2}% + \ifdefvoid{#4}{}{ #4}% + \ifdefvoid{#2}{}{, #2}% \actualoperator - \ifblank{#3}{}{\MakeCapital{#3} }% + \ifdefvoid{#3}{}{\MakeCapital{#3} }% #1% - \ifblank{#4}{}{ #4}% - \ifblank{#2}{}{, #2}} + \ifdefvoid{#4}{}{ #4}% + \ifdefvoid{#2}{}{, #2}} {\@firstofone #1% remove spurious braces - \ifblank{#4}{}{ #4}% - \ifblank{#2#3}{}{,}% - \ifblank{#2}{}{ #2}% - \ifblank{#3}{}{ #3}}} + \ifdefvoid{#4}{}{ #4}% + \ifboolexpe{% + test {\ifdefvoid{#2}} + and + test {\ifdefvoid{#3}}} + {} + {,}% + \ifdefvoid{#2}{}{ #2}% + \ifdefvoid{#3}{}{ #3}}} % {<control sequence>}{<control sequence>} - \newcommand*{\mkbibindexsubentry}[2]{% \ifblank{#1}{}{\subentryoperator#1\actualoperator#2}} @@ -1057,6 +1124,25 @@ \mkbibindexname{#2}{#3}{#4}{#5}\mkbibindexsubentry{#6}{#7}}} % ------------------------------------------------------------------ +% datafieldsets +% ------------------------------------------------------------------ + +% Some defaults for backwards compat for the biber nosort option +\DeclareDatafieldSet{setnames}{ + \member[datatype=name, fieldtype=list] +} + +\DeclareDatafieldSet{settitles}{ + \member[field=title] + \member[field=booktitle] + \member[field=eventtitle] + \member[field=issuetitle] + \member[field=journaltitle] + \member[field=maintitle] + \member[field=origtitle] +} + +% ------------------------------------------------------------------ % Driver sourcemaps % ------------------------------------------------------------------ diff --git a/Master/texmf-dist/tex/latex/biblatex/biblatex.sty b/Master/texmf-dist/tex/latex/biblatex/biblatex.sty index 3271b7b39a5..98fd4dd7ca4 100644 --- a/Master/texmf-dist/tex/latex/biblatex/biblatex.sty +++ b/Master/texmf-dist/tex/latex/biblatex/biblatex.sty @@ -1,92 +1,12091 @@ -%% -%% This is file `biblatex.sty'. -%% +% Copyright (c) 2006-2011 Philipp Lehman. +% 2012-2016 Philip Kime, Audrey Boruvka, Joseph Wright +% +% Permission is granted to copy, distribute and/or modify this +% software under the terms of the LaTeX Project Public License +% (LPPL), version 1.3c. +% +% This software is provided 'as is', without warranty of any kind, +% either expressed or implied, including, but not limited to, the +% implied warranties of merchantability and fitness for a +% particular purpose. -% Set up the version strings here, so they are the same for both branches -\def\abx@date{2016/03/03} -\def\abx@version{3.3} +% Set up the version strings here +\def\abx@date{2016/05/14} +\def\abx@version{3.4} \def\abx@bbxid{\abx@date\space v\abx@version\space biblatex bibliography style (PK/JW/AB)} \def\abx@cbxid{\abx@date\space v\abx@version\space biblatex citation style (PK/JW/AB)} \def\abx@lbxid{\abx@date\space v\abx@version\space biblatex localization (PK/JW/AB)} \def\abx@cptid{\abx@date\space v\abx@version\space biblatex compatibility (PK/JW/AB)} -% This is not updated by build script as the controlfile version + +% This is not updated by build script as the control file version % does not necessarily change with the package version. % This is used when writing the .bcf -\def\blx@bcfversion{3.0} +\def\blx@bcfversion{3.1} + % This is not updated by build script as the bbl version % does not necessarily change with the package version. % This is used when checking the .bbl -\def\blx@bblversion{2.6} +\def\blx@bblversion{2.7} \NeedsTeXFormat{LaTeX2e}[2005/12/01] \ProvidesPackage{biblatex} [\abx@date\space v\abx@version\space programmable bibliographies (PK/JW/AB)] -% Set up a switch for choosing the version -\newif\ifblx@load@version@legacy +%% Dependencies +\RequirePackage{iftex} +\RequirePackage{pdftexcmds} +\RequirePackage{etoolbox} +\RequirePackage{keyval} +\RequirePackage{kvoptions} +\RequirePackage{logreq} +\RequirePackage{ifthen} +\RequirePackage{url} +\RequirePackage{xstring} +%\RequirePackage{trace} -% A switch so we can issue a message about the backend -\newif\ifblx@load@backend@seen +\@ifpackagelater{etoolbox}{2010/11/29} + {} + {\PackageError{biblatex} + {Outdated 'etoolbox' package} + {Upgrade to etoolbox v2.1 (2010/11/29) or later.\MessageBreak + I found: '\csuse{ver@etoolbox.sty}'.\MessageBreak + This is a fatal error. I'm aborting now.}% + \endinput} -% Fake keyval options to detect the backend -% All basically the same, so passing the backend is done simply -\DeclareOption{backend=bibtex}{% - \PassOptionsToPackage{\CurrentOption}{biblatex_legacy}% - \blx@load@version@legacytrue - \blx@load@backend@seentrue -} -\DeclareOption{backend=bibtex8}{% - \PassOptionsToPackage{\CurrentOption}{biblatex_legacy}% - \blx@load@version@legacytrue - \blx@load@backend@seentrue +%% Category codes + +\def\blx@docatcodes{% + \do\=\do\<\do\>\do\-\do\"\do\'\do\`\do\.% + \do\,\do\;\do\:\do\!\do\?\do\/} +\def\do#1{\catcode\number`#1=\the\catcode`#1\relax} +\edef\blx@catcodes{\blx@docatcodes\do\^\do\~\do\&\do\|} +\let\do\noexpand + +\def\blx@saneccodes{% + \catcode`\~=\active + \let\do\@makeother + \blx@docatcodes + \let\do\noexpand} + +\blx@saneccodes +\catcode`\&=3 +\catcode`\|=3 +\catcode`\^=7 +\def\blx@nl{^^J} + +%% Compatibility + +\AtEndPreamble{% + \def\do#1{% + \@ifpackageloaded{#1} + {\blx@error + {Incompatible package '#1'} + {The '#1' package and biblatex are incompatible}} + {}}% + \docsvlist{% + amsrefs,apacite,babelbib,backref,bibtopic,bibunits,chapterbib, + cite,citeref,drftcite,footbib,inlinebib,jurabib,mcite,mciteplus, + mlbib,multibbl,multibib,natbib,opcit,overcite,splitbib,ucs}% + \def\blx@langstrings{}% + % Set up sortlocale defaults + \ifdefstring\blx@sortlocale{auto} + {\ifdef\bbl@main@language% babel or polyglossia is loaded + {\edef\blx@sortlocale{\bbl@main@language}} + {\def\blx@sortlocale{english}}} + {}% + \@ifpackageloaded{polyglossia} + {% This is required for languages which are never explicitly selected + % This check because \xpg@loaded is not defined in polyglossia <= v1.42.0 + \ifundef\xpg@loaded + {\let\xpg@loaded\@empty + \let\xpg@vloaded\@empty + \PackageWarningNoLine{biblatex}{Upgrade package 'polyglossia' to >v1.42.0 recommended}} + {}% + \def\do#1{\blx@langsetup{#1}}% + \expandafter\docsvlist\expandafter{\xpg@loaded}% + \expandafter\docsvlist\expandafter{\xpg@vloaded}% + \ifboolexpr{ + not test {\iftoggle{blx@autolangbib}} + and + not test {\iftoggle{blx@autolangcite}}} + {\blx@mknoautolang} + {\blx@mkautolangpoly}} + {\@ifpackageloaded{babel} + {% This is required for languages which are never explicitly selected + \def\do#1{\blx@langsetup{#1}}% + \expandafter\docsvlist\expandafter{\bbl@loaded}% + \ifboolexpr{ + not test {\iftoggle{blx@autolangbib}} + and + not test {\iftoggle{blx@autolangcite}}} + {\blx@mknoautolang} + {\blx@mkautolangbabel}} + {\blx@mknoautolang}}% + % These already have defaults set to basically do nothing + % so if the toggles are true, we need to define again since + % mkautolang* redefines \blx@beglang + % In turn, \blx@beglang defines \blx@endlang and so \blx@beglangcite and + % \blx@endlangcite need redefining inside \blx@beglang after \blx@endlang + % has been defined. + \iftoggle{blx@autolangbib} + {\let\blx@beglangbib\blx@beglang} + {}% + \iftoggle{blx@autolangcite} + {\let\blx@beglangcite\blx@beglang} + {}% + \csuse{abx@extras@\blx@languagename}% + \csuse{abx@strings@\blx@languagename}% + \undef\blx@mkautolangbabel + \undef\blx@mkautolangpoly + \undef\blx@mknoautolang + \ifnum\blx@hyperref=\z@ + \blx@mknohyperref + \else + \@ifpackageloaded{hyperref} + {\blx@mkhyperref} + {\ifnum\blx@hyperref=\@ne + \blx@warning@noline{% + Missing 'hyperref' package.\MessageBreak + Setting hyperref=false}% + \fi + \blx@mknohyperref}% + \fi + \providecommand*{\nolinkurl}{\url}% + \undef\blx@mkhyperref + \undef\blx@mknohyperref + \ifundef\TE@hook + {\let\TE@hook\@empty + \toggletrue{blx@tempa}% + \def\do#1{% + \patchcmd#1% + {\let\isundefined\TE@undef} + {\let\isundefined\TE@undef\TE@hook} + {\togglefalse{blx@tempa}\listbreak} + {}}% + \docsvlist{% + \ifthenelse,% ifthen + \org@ifthenelse,% babel + \HyOrg@ifthenelse,% hyperref + \NROrg@ifthenelse}% nameref + \iftoggle{blx@tempa} + {\blx@err@patch{'ifthen' package}} + {}} + {}% + \appto\TE@hook{\blx@TE@hook}% + \toggletrue{blx@tempa}% + \def\do#1{% + \patchcmd#1% + {\color@begingroup} + {\color@begingroup\toggletrue{blx@footnote}} + {\togglefalse{blx@tempa}\listbreak} + {}}% + \docsvlist{% + \@footnotetext,% latex + \H@@footnotetext,% hyperref + \V@@footnotetext,% fancyvrb + \scr@saved@footnotetext,% koma-script 3.x + \l@dold@footnotetext,% ledmac + \l@doldold@footnotetext,% ledmac + \@fntORI}% frenchle + \iftoggle{blx@tempa}% ams classes + {\patchcmd\@footnotetext + {\@makefntext} + {\toggletrue{blx@footnote}\@makefntext} + {\togglefalse{blx@tempa}} + {}} + {}% + \@ifclassloaded{memoir} + {\def\do#1{% + \patchcmd#1% + {\color@begingroup} + {\color@begingroup\toggletrue{blx@footnote}} + {} + {}}% + \docsvlist{% + \m@mold@footnotetext,% + \@plainfootnotetext,% + \@twocolfootnotetext,% + \@threecolfootnotetext,% + \@parafootnotetext}% + \def\do#1{% + \patchcmd#1% + {\color@begingroup\@makefntext} + {\color@begingroup\toggletrue{blx@footnote}\@makefntext} + {} + {}}% + \docsvlist{% + \@footnotetext,% patch twice + \H@@footnotetext,% patch twice + \@plainfootnotetext}} + {}% + \iftoggle{blx@tempa} + {\blx@warning@noline{% + Patching footnotes failed.\MessageBreak + Footnote detection will not work}} + {}% + \@ifpackageloaded{endnotes} + {\patchcmd\theendnotes + {\enoteformat} + {\toggletrue{blx@footnote}\enoteformat} + {} + {\blx@err@patch{'endnotes' package}}} + {}% + \@ifpackageloaded{bigfoot} + {\apptocmd\@makefnstartbox + {\toggletrue{blx@footnote}} + {} + {\blx@err@patch{'bigfoot' package}}} + {}% + \@ifpackageloaded{showkeys} + {\ifdef\SK@ + {\AtEveryBibitem{\SK@\SK@@label{\thefield{entrykey}}}% + \AtEveryLositem{\SK@\SK@@label{\thefield{entrykey}}}% + \ifundef\SK@cite % = 'notcite' disabled + {\AtEveryCitekey{\SK@\SK@@ref{\thefield{entrykey}}}} + {}} + {}} + {}% + \apptocmd\@floatboxreset + {\boolfalse{citetracker}% + \boolfalse{pagetracker}} + {} + {\blx@err@patch{floats}}% + \ifdef\TX@endtabularx % tabularx/memoir + {\pretocmd\TX@endtabularx + {\addtocounter{tabx@nest}{1}}% track nested tabularx environments + {} + {\blx@err@patch{'tabularx'}}% + % no need to conditionalise on top-level tabx as the search/replace + % will only match once anyway + \patchcmd\TX@endtabularx + {\edef\TX@ckpt{\cl@@ckpt}} + {\edef\TX@ckpt{\cl@@ckpt\abx@resttrackers}% + \abx@savetrackers} + {} + {\blx@err@patch{'tabularx'}}% + \apptocmd\TX@endtabularx + {\ifnum\value{tabx@nest}=1% only clear trackers for top-level tabularx + \abx@cleartrackers + \fi + \addtocounter{tabx@nest}{-1}} + {} + {\blx@err@patch{'tabularx'}}} + {}% + \@ifpackageloaded{csquotes} + {\@ifpackagelater{csquotes}{2009/05/30} + {} + {\blx@error + {Outdated 'csquotes' package} + {Upgrade to csquotes v4.4 (2009/05/30) or later.\MessageBreak + I found: '\csuse{ver@csquotes.sty}'}}% + \BlockquoteDisable{\let\blx@thecheckpunct\@gobble}% + \@ifpackagelater{csquotes}{2009/08/27} + {\appto\@blockquote@prehook{\abx@savetrackers}% + \appto\@blockquote@posthook{\abx@resttrackers\abx@cleartrackers}} + {}% + \@ifpackagelater{csquotes}{2010/06/09} + {} + {\newcommand*{\@quotereset}{}\newcount\@quotereset}} + {\@ifpackageloaded{babel} + {\blx@warning@noline{% + 'babel/polyglossia' detected but 'csquotes' missing.\MessageBreak + Loading 'csquotes' recommended}} + {}% + \newcommand*{\@quotelevel}{}% + \newcount\@quotelevel + \newcommand*{\@quotereset}{}% + \newcount\@quotereset + \newcommand*{\@setquotesfcodes}{}% + \let\@setquotesfcodes\relax + \newrobustcmd*{\initoquote}{\@quotelevel\@ne}% + \newrobustcmd*{\initiquote}{\@quotelevel\tw@}% + \newrobustcmd*{\textooquote}{``}% + \newrobustcmd*{\textcoquote}{''}% + \newrobustcmd*{\textoiquote}{`\relax}% block ligs + \newrobustcmd*{\textciquote}{'\relax}% block ligs + \newrobustcmd*{\enquote}{\@ifstar\blx@enquote@ii\blx@enquote}% + \def\blx@enquote{% + \ifnum\@quotelevel>\z@ + \expandafter\blx@enquote@ii + \else + \expandafter\blx@enquote@i + \fi}% + \long\def\blx@enquote@i#1{% + \begingroup\initoquote + \textooquote#1\textcoquote + \endgroup}% + \long\def\blx@enquote@ii#1{% + \begingroup\initiquote + \textoiquote#1\textciquote + \endgroup}% + \appto\blx@setsfcodes{% + \sfcode`\`=\z@ + \sfcode`\'=\z@}}% + \let\do\noexpand} + +\begingroup +\@makeother\# +% \relax: gobble newline -> titletoc.sty +\AtEndPreamble{% + \addtocontents{toc}{% + \boolfalse{citerequest}% + \boolfalse{citetracker}% + \boolfalse{pagetracker}% + \boolfalse{backtracker}\relax}% + \addtocontents{lof}{% + \boolfalse{citerequest}% + \boolfalse{citetracker}% + \boolfalse{pagetracker}% + \boolfalse{backtracker}\relax}% + \addtocontents{lot}{% + \boolfalse{citerequest}% + \boolfalse{citetracker}% + \boolfalse{pagetracker}% + \boolfalse{backtracker}\relax}% + \patchcmd\addtocontents + {\string\@writefile} + {\string\@writefile{#1}{\defcounter{refsection}{\the\c@refsection}\relax}% + \string\@writefile} + {} + {\blx@err@patch{\string\addtocontents}}} +\endgroup + +% trick hyperref into believing we're natbib +\let\NAT@parse\@empty +% trick showkeys into believing we're havard +\let\HAR@checkdef\@empty + +%% Allocation + +\providecommand{\@gobblefive}[5]{} + +% Counter to track nested tabularx environemnts so we don't +% try to patch the commands more than once below as this undefs some +% macros and an error is thrown +\newcounter{tabx@nest} +\setcounter{tabx@nest}{0} + +\newcounter{listtotal} +\def\thelisttotal{\the\c@listtotal} +\newcounter{listcount} +\def\thelistcount{\the\c@listcount} +\newcounter{liststart} +\def\theliststart{\the\c@liststart} +\newcounter{liststop} +\def\theliststop{\the\c@liststop} +\newcounter{citecount} +\def\thecitecount{\the\c@citecount} +\newcounter{citetotal} +\def\thecitetotal{\the\c@citetotal} +\newcounter{multicitecount} +\def\themulticitecount{\the\c@multicitecount} +\newcounter{multicitetotal} +\def\themulticitetotal{\the\c@multicitetotal} +\newcounter{instcount} +\def\theinstcount{\the\c@instcount} +\newcounter{maxnames} +\def\themaxnames{\the\c@maxnames} +\newcounter{minnames} +\def\theminnames{\the\c@minnames} +\newcounter{maxitems} +\def\themaxitems{\the\c@maxitems} +\newcounter{minitems} +\def\theminitems{\the\c@minitems} +\newcounter{citecounter} +\def\thecitecount{\the\c@citecounter} +\newcounter{savedcitecounter} +\def\thecitecount{\the\c@savedcitecounter} +\newcounter{uniquelist} +\def\theuniquelist{\the\c@uniquelist} +\newcounter{uniquename} +\def\theuniquename{\the\c@uniquename} +\newcounter{refsection} +\def\therefsection{\the\c@refsection} +\newcounter{refsegment} +\def\therefsegment{\the\c@refsegment} +\newcounter{maxextratitle} +\def\themaxextratitle{\the\c@maxextratitle} +\newcounter{maxextratitleyear} +\def\themaxextratitleyear{\the\c@maxextratitleyear} +\newcounter{maxextrayear} +\def\themaxextrayear{\the\c@maxextrayear} +\newcounter{maxextraalpha} +\def\themaxextraalpha{\the\c@maxextraalpha} +\newcounter{abbrvpenalty} +\def\theabbrvpenalty{\the\c@abbrvpenalty} +\newcounter{highnamepenalty} +\def\thehighnamepenalty{\the\c@highnamepenalty} +\newcounter{lownamepenalty} +\def\thelownamepenalty{\the\c@lownamepenalty} +\newcounter{maxparens} +\def\themaxparens{\the\c@maxparens} +\newcounter{parenlevel} +\def\theparenlevel{\the\c@parenlevel} + +\newcount\blx@tempcnta +\newcount\blx@tempcntb +\newcount\blx@tempcntc +\newcount\blx@maxsection +\expandafter\newcount\csname blx@maxsegment@0\endcsname +\newcount\blx@notetype +\newcount\blx@parenlevel@text +\newcount\blx@parenlevel@foot +\expandafter\newcount\csname blx@sectionciteorder@0\endcsname + +\def\blx@uniquename{0} +\def\blx@uniquelist{0} +\def\blx@maxbibnames{0} +\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} +\newlength{\biblabelsep} +\ifdef\bibitemsep % memoir + {} + {\newlength{\bibitemsep}} +\newlength{\bibnamesep} +\newlength{\bibinitsep} +\newlength{\bibparsep} +\newlength{\bibhang} + +\newbool{refcontextdefaults} +\booltrue{refcontextdefaults}% +\newbool{sourcemap} +\newbool{citetracker} +\newbool{pagetracker} +\newbool{backtracker} +\newbool{citerequest} +\booltrue{citerequest} +\newbool{sortcites} + +\newtoggle{blx@bbldone} +\newtoggle{blx@tempa} +\newtoggle{blx@tempb} +\newtoggle{blx@runltx} +\newtoggle{blx@runbiber} +\newtoggle{blx@block} +\newtoggle{blx@unit} +\newtoggle{blx@skipentry} +\newtoggle{blx@insert} +\newtoggle{blx@lastins} +\newtoggle{blx@keepunit} +\newtoggle{blx@bibtex} +\newtoggle{blx@debug} +\newtoggle{blx@sortcase} +\newtoggle{blx@sortupper} +\newtoggle{blx@autolangbib} +\newtoggle{blx@autolangcite} +\newtoggle{blx@clearlang} +\newtoggle{blx@defernumbers} +\newtoggle{blx@omitnumbers} +\newtoggle{blx@footnote} +\newtoggle{blx@labelalpha} +\newtoggle{blx@labelnumber} +\newtoggle{blx@labeltitle} +\newtoggle{blx@labeltitleyear} +\newtoggle{blx@labeldate} +\newtoggle{blx@natbib} +\newtoggle{blx@mcite} +\newtoggle{blx@loadfiles} +\newtoggle{blx@singletitle} +\newtoggle{blx@crossrefsource} +\newtoggle{blx@xrefsource} +\newtoggle{blx@uniqueprimaryauthor} +\newtoggle{blx@uniquetitle} +\newtoggle{blx@terseinits} +\newtoggle{blx@giveninits} +\newtoggle{blx@sortgiveninits} +\newtoggle{blx@useprefix} +\newtoggle{blx@addset} +\newtoggle{blx@setonly} +\newtoggle{blx@dataonly} +\newtoggle{blx@skipbib} +\newtoggle{blx@skipbiblist} +\newtoggle{blx@skiplab} +\newtoggle{blx@citation} +\newtoggle{blx@bibliography} +\newtoggle{blx@citeindex} +\newtoggle{blx@bibindex} +\newtoggle{blx@localnumber} +\newtoggle{blx@refcontext} + +% Nice command from etextools which causes too many problems if you load +% the whole package +% Don't use it on arbitrary user input as it dies on non-expandable arguments +\newcommand*{\blx@xifempty}[1]{\blx@xifstrcmp{#1}{}} +% {string1}{string2}{true}{false} +\newcommand*{\blx@xifstrcmp}[2]{\csname @% + \ifnum\pdf@strcmp{#1}{#2}=0 first\else second\fi + oftwo\endcsname} + +% Special fields which need resolution using the information provided by biber +\listadd\abx@rfields{labeltitle} +\def\abx@dorfields{% + \dolistcsloop{abx@rfields}% } -\DeclareOption{backend=bibtexu}{% - \PassOptionsToPackage{\CurrentOption}{biblatex_legacy}% - \blx@load@version@legacytrue - \blx@load@backend@seentrue +% Just in case we ever have non-name lists to instantiate +%\listadd\abx@rlists{} +% \def\abx@dorlists{% +% \dolistcsloop{abx@rlists}% +% } +\listadd\abx@rnames{labelname} +\def\abx@dornames{% + \dolistcsloop{abx@rnames}% } -\DeclareOption{backend=biber}{% - \blx@load@version@legacyfalse - \blx@load@backend@seentrue + +% Used to track default refcontexts for citations +\cslet{blx@defaultrefcontexts@0}\@empty +\listadd\blx@allrefsections{0} + +% Used to track sorting name key specifications +\global\let\blx@sortingnamekeyspecs\@empty + +% Used to track transliterations +\global\let\blx@translits\@empty + +% Initialise some lists which track changing citations/sortschemes +% etc. between runs +\global\let\blx@cites\@empty +\global\let\blx@refcontexts\@empty +\global\let\blx@lastrefcontexts\@empty +\global\let\blx@sortschemes\@empty +\global\let\blx@lastsortschemes\@empty +\global\let\blx@biblists\@empty +\global\let\blx@lastbiblists\@empty +\global\let\blx@lastcites\@empty +\global\let\blx@localnumaux\@empty + +\newread\blx@bcfin +\newwrite\blx@bcfout + +\def\blx@onlypreamble#1{% + \gappto\blx@dopreamblecmds{\do#1}} + +\def\blx@dopreamblecmds{% + \do\blx@dopreamblecmds + \do\blx@onlypreamble} + +% Deprecations +\newrobustcmd*{\DeprecateField}[2]{% + \csdef{abx@field@#1}{% + \ifcsundef{abx@field@legacy@warning@#1}{\blx@warning@noline{Field '#1' deprecated. #2}}{}% + \global\csdef{abx@field@legacy@warning@#1}{}}}% +\newrobustcmd*{\DeprecateList}[2]{% + \csdef{abx@list@#1}{% + \ifcsundef{abx@list@legacy@warning@#1}{\blx@warning@noline{List '#1' deprecated. #2}}{}% + \global\csdef{abx@list@legacy@warning@#1}{}}}% +\newrobustcmd*{\DeprecateName}[2]{% + \csdef{abx@name@#1}{% + \ifcsundef{abx@name@legacy@warning@#1}{\blx@warning@noline{Name '#1' deprecated. #2}}{}% + \global\csdef{abx@name@legacy@warning@#1}{}}}% + +\DeprecateField{prefixnumber}{Please use 'labelprefix' instead} % Biblatex v3.4 + +%% Initialization +\def\blx@blxinit{% + \let\blx@blxinit\relax + \blx@initunit} + +\def\blx@secinit{% + \csgdef{blx@sections@\the\c@refsection}{true}% just to say we have a section for tests later + \ifcsundef{blx@bsee@\the\c@refsection} + {\global\cslet{blx@bsee@\the\c@refsection}\@empty} + {}% + \ifcsundef{blx@fsee@\the\c@refsection} + {\global\cslet{blx@fsee@\the\c@refsection}\@empty} + {}% + \blx@ibidreset@force + \blx@idemreset@force + \blx@opcitreset@force + \blx@loccitreset@force + % List to track all aliases in a section. We need to output all aliases + % to the .bcf every time so that they are visible to biber + % Reset only if undefined + \ifcsundef{blx@keyaliases@\the\c@refsection} + {\global\cslet{blx@keyaliases@\the\c@refsection}\@empty} + {}% + \ifcsundef{blx@segm@\the\c@refsection @\the\c@refsegment} + {\global\cslet{blx@segm@\the\c@refsection @\the\c@refsegment}\@empty} + {}} + +%% Auxiliary commands + +\protected\def\blx@safe@actives{% + \let\blx@if@safe@actives\if@safe@actives + \let\if@safe@actives\iftrue} + +\protected\def\blx@rest@actives{% + \let\if@safe@actives\blx@if@safe@actives} + +\protected\def\blx@regimc#1{% + \xappto\blx@blxinit{% + \let\noexpand#1\expandafter\noexpand\csname + blx@imc@\expandafter\@gobble\string#1\endcsname}} + +\protected\def\blx@regimcs#1{\blx@regimcs@i#1&} +\def\blx@regimcs@i#1{% + \ifx#1&\else + \blx@regimc#1% + \expandafter\blx@regimcs@i + \fi} + +% {<field>} => \do{<item1>}\do{<item2>}... +\def\blx@imc@docsvfield#1{% + \blx@imc@iffieldundef{#1} + {} + {\expandafter\expandafter\expandafter\docsvlist + \expandafter\expandafter\expandafter{% + \csname abx@field@#1\endcsname}}} + +% {<handler>}{<field>} => <handler>{<item1>}<handler>{<item2>}... +\def\blx@imc@forcsvfield#1#2{% + \blx@imc@iffieldundef{#2} + {} + {\expandafter\expandafter\expandafter\blx@imc@forcsvfield@i + \expandafter\expandafter\expandafter{% + \csname abx@field@#2\endcsname}{#1}}} + +\def\blx@imc@forcsvfield@i#1#2{\forcsvlist{#2}{#1}} + +\blx@regimcs{\docsvfield \forcsvfield} + +% {<list>|<listmacro>} +\protected\long\def\blx@listloop#1{% + \expandafter\blx@listloop@i#1|&} +\long\def\blx@listloop@i#1|{% + \ifblank{#1} + {\blx@break} + {\blx@do{#1}\blx@listloop@i}} + +\long\def\blx@break#1&{% + \blx@done + \undef\blx@do + \undef\blx@done} + +% {<listmacro>}{<listcsname>} => matches in <listmacro> +\protected\def\blx@filter#1#2{% + \def\do##1{% + \ifinlistcs{##1}{#2} + {\listadd#1{##1}} + {}}% + \blx@runfilter#1} + +% {<listmacro>}{<listcsname>} => matches in <listmacro> +% Slightly odd use of filtering to do citation sorting. +% Same as blx@filter but it keeps \tempcnta in step with the +% resulting number of things in the filtered list. This is +% because \tempcnta is used to set citetotal - this use +% of filtering for cite sorting has the side-effect of stripping +% duplicates like \cite{foo,foo} but we need then to keep citetotal +% in sync. +\protected\def\blx@filtercitesort#1#2{% + \blx@tempcnta\z@ + \def\do##1{% + \ifinlistcs{##1}{#2} + {\listadd#1{##1}% + \advance\blx@tempcnta\@ne} + {}}% + \blx@runfilter#1} + +% {<listmacro>}{<listcsname>} => neg. matches in <listmacro> +\protected\def\blx@notfilter#1#2{% + \def\do##1{% + \ifinlistcs{##1}{#2} + {} + {\listadd#1{##1}}}% + \blx@runfilter#1} + +\def\blx@runfilter#1{% + \begingroup\edef#1{\endgroup + \unexpanded{\let#1\@empty\dolistloop}{#1}}% + #1\let\do\noexpand} + +% {<code>}{<string>} => <code>{<string>} +\protected\def\blx@xsanitizeafter#1#2{% + \begingroup + \abx@hook@xsanitize + \def\blx@tempa{\endgroup#1}% + \edef\blx@tempb{#2}% + \expandafter\blx@tempa + \expandafter{\detokenize\expandafter{\blx@tempb}}} + +\def\abx@hook@xsanitize{% + \blx@safe@actives + \let\protect\string} + +% {<code>}{<string>} => <code>{<string>} +\begingroup +\catcode`\<=\active +\catcode`\>=\active +\catcode`\&=\active +\catcode`\"=\active +\catcode`\'=\active +\protected\gdef\blx@xmlsanitizeafter#1#2{% + \begingroup + \abx@hook@xsanitize + \def\blx@tempa{\endgroup#1}% + \edef\blx@tempb{#2}% + \let\do\@makeother + \dospecials + \catcode`\<=\active + \catcode`\>=\active + \catcode`\&=\active + \catcode`\"=\active + \catcode`\'=\active + \edef<{\string<\string;}% + \edef>{\string>\string;}% + \edef&{\string&\string;}% + \edef"{\string"\string;}% + \edef'{\string&apos\string;}% + \endlinechar\m@ne + \everyeof{\noexpand}% + \edef\blx@tempb{\scantokens\expandafter{\blx@tempb}}% + \expandafter\blx@tempa + \expandafter{\detokenize\expandafter{\blx@tempb}}} +\endgroup + +% {<file>}{<message>}{<preload>}{<postload>}{<success>}{<failure>} +\protected\long\def\blx@inputonce#1#2#3#4#5#6{% + \ifcsundef{blx@file@#1} + {\blx@info@noline{Trying to load #2..}% + \IfFileExists{#1} + {\blx@info@noline{... file '#1' found}% + \listxadd\blx@list@req@stat{#1}% + #3\@@input\@filef@und#4#5} + {\blx@info@noline{... file '#1' not found}#6}% + \global\csdef{blx@file@#1}{}% + \@addtofilelist{#1}} + {#5}} + +% {<write>}{<precode>}{<string>} +\protected\def\blx@auxwrite#1#2#3{% + \if@filesw + \begingroup + \blx@safe@actives + \let\protect\string + #2% + \immediate\write#1{#3}% + \endgroup + \fi} + +% {<file>}{<signature>}{<true>}{<false>} +\def\blx@ifsigned#1#2{% + \begingroup + \let\blx@tempa\@firstoftwo + \edef\blx@tempb{\csuse{blx@sig@#2}}% + \edef\blx@tempb{\detokenize\expandafter{\blx@tempb}}% + \openin\blx@bcfin #1.#2\relax + \ifeof\blx@bcfin + \else + \endlinechar\m@ne + \readline\blx@bcfin to \blx@tempc + \ifeof\blx@bcfin + \else + \ifx\blx@tempb\blx@tempc + \readline\blx@bcfin to \blx@tempc + \edef\blx@tempb{\csuse{blx@ver@#2}}% + \edef\blx@tempb{\detokenize\expandafter{\blx@tempb}}% + \ifx\blx@tempb\blx@tempc + \else + \blx@warning@noline{% + File '#1.#2' is wrong format version - expected \blx@bblversion} + \fi + \else + \blx@error + {File '#1.#2' not created by biblatex} + {This file was apparently not created by biblatex. + Rename it or\MessageBreak move it to a location were + TeX will not find it. If this error\MessageBreak + persists, consider redefining \string\blxauxsuffix.% + See the biblatex\MessageBreak manual for details}% + \let\blx@tempa\@secondoftwo + \fi + \fi + \fi + \closein\blx@bcfin + \expandafter\endgroup\blx@tempa} + +\edef\blx@sig@bbl{\@percentchar\space $ biblatex auxiliary file $} +\edef\blx@ver@bbl{\@percentchar\space $ biblatex bbl format version \blx@bblversion\space $} +\edef\blx@sig@bcf{\detokenize{<?xml version="1.0" encoding="UTF-8"?>}} +\edef\blx@ver@bcf{% + \detokenize{<bcf:controlfile version="}\blx@bcfversion + \detokenize{" bltxversion="}\abx@version + \detokenize{" xmlns:bcf="https://sourceforge.net/projects/biblatex">}} + +% {<true>}{<false>} +\newrobustcmd*{\lbx@ifutfinput}{\ifboolexpr{% + test {\ifdefstring\inputencodingname{utf8}} + or + test {\ifdefstring\inputencodingname{utf8x}} + or + test {\ifdefstring\inputencodingname{lutf8}} + or + ( test {\ifundef\inputencodingname} + and + ( not test {\ifundef\XeTeXrevision} + or + not test {\ifundef\luatexversion} + ) + ) +}} + +%% User feedback + +\protected\def\blx@error#1#2{% + \begingroup + \blx@safe@actives + \PackageError{biblatex}{#1}{#2.}% + \endgroup} + +\protected\def\blx@warning@noline#1{% + \begingroup + \blx@safe@actives + \PackageWarningNoLine{biblatex}{#1}% + \endgroup} +\let\blx@warning\blx@warning@noline +\AtEndOfPackage{ + \protected\def\blx@warning#1{% + \begingroup + \blx@safe@actives + \PackageWarning{biblatex}{#1}% + \endgroup}} + +\protected\def\blx@warning@entry#1{% + \ifdef\abx@field@entrykey + {\blx@warning{#1\MessageBreak at entry '\abx@field@entrykey'}} + {\blx@warning{#1}}} + +\protected\def\blx@info@noline#1{% + \begingroup + \blx@safe@actives + \PackageInfo{biblatex}{#1\@gobble}% + \endgroup} +\let\blx@info\blx@info@noline +\AtEndOfPackage{ + \protected\def\blx@info#1{% + \begingroup + \blx@safe@actives + \PackageInfo{biblatex}{#1}% + \endgroup}} + +\let\blx@noline\@gobble +\AtEndOfPackage{\let\blx@noline\@empty} +\def\blx@imc@BibliographyWarning{\blx@warning@entry} +\blx@regimc\BibliographyWarning + +\protected\def\abx@missing#1{% + \mbox{\reset@font\bfseries#1}} + +\def\blx@err@patch#1{% + \blx@error + {Patching #1 failed} + {This is an internal issue typically caused by a + conflict\MessageBreak between biblatex and some + other package. Modifying\MessageBreak the package + loading order may fix the problem}} + +\def\blx@err@nolang#1{% + \blx@error + {Language '#1' not found} + {The localization module for '#1' could not be found}} + +\def\blx@err@invarg#1#2{% + \blx@error + {Argument '#1' invalid} + {\ifblank{#2} + {The argument you have supplied is invalid.\MessageBreak + See the biblatex manual for details} + {#2}}} + +\def\blx@err@invopt#1#2{% + \blx@error + {Option '#1' invalid} + {\ifblank{#2} + {The option you have supplied is invalid.\MessageBreak + See the biblatex manual for valid option keys and + possible values} + {#2}}} + +\def\blx@err@confopt#1#2{% + \blx@error + {Conflicting options\ifblank{#1}{}{ (#1)}} + {\ifblank{#2} + {The option you have supplied conflicts with another one.\MessageBreak + See the biblatex manual for valid option keys and possible values} + {#2}}} + +\def\blx@err@optdef#1{% + \blx@error + {Conflicting options} + {The option '#1' is already defined}} + +\def\blx@err@nodocdiv#1{% + \blx@error + {\@backslashchar#1 not provided by class} + {The document class does not seems to support #1s}} + +\def\blx@err@nosec#1{% + \blx@error + {Section '#1' not found} + {The reference section '#1' could not be found}} + +\def\blx@err@nosort#1{% + \blx@error + {Sorting scheme '#1' not found} + {The sorting scheme '#1' does not seem to have been defined anywhere}} + +\def\blx@err@secfirst{% + \blx@error + {'section' not first filter} + {When passing multiple filter options, + the 'section' filter must be given first}} + +\protected\def\blx@err@nestcite{% + \blx@error + {Nested citation command} + {Citation commands may not be nested}} + +\def\blx@err@nestenv#1{% + \blx@error + {Nested '#1' environment} + {This environment may not be nested}} + +\protected\def\blx@err@citecmd#1{% + \begingroup + \escapechar\m@ne + \blx@error + {Command '\@backslashchar\string#1' undefined} + {The citation command '\@backslashchar\string#1' + has not been defined\MessageBreak by the + selected citation style}% + \endgroup} + +\def\blx@err@endnote#1{% + \blx@error + {Missing or incomplete endnote support} + {There does not seem to be endnote support available\MessageBreak + or the available support is incomplete.\MessageBreak + If you continue, I will fall back to '\string#1'}% + #1} + +\def\blx@err@matchparen#1{% + \blx@error + {Unbalanced parentheses or brackets} + {\iftoggle{blx@footnote}{#1 in foot or endnote}{#1}.\MessageBreak + This error is triggered if \string\bibopenparen\space and + \string\bibcloseparen\MessageBreak or + \string\bibopenbracket\space and \string\bibclosebracket\space + are unbalanced\MessageBreak or mismatched}} + +\def\blx@err@nestparen#1{% + \blx@error + {Too deeply nested parentheses or brackets} + {#1 nested too deeply% + \iftoggle{blx@footnote}{\space in foot or endnote}{}.\MessageBreak + This error may also be triggered if \string\mkbibparens\MessageBreak + or \string\mkbibbrackets\space are nested too deeply}} + +\def\blx@err@filter{% + \blx@error + {Invalid filter expression} + {The filter expression you have supplied is invalid.\MessageBreak + See the biblatex manual for details}} + +\def\blx@warn@nohyph#1{% + \blx@warning{No hyphenation patterns for '#1'}} + +\protected\def\blx@warn@citecmd#1#2{% + \blx@warning{% + '\string#1' not defined by citation style.\MessageBreak + Falling back to '\string#2'}% + #2} + +\protected\def\blx@warn@nostring#1{% + \blx@warning@entry{Bibliography string '#1' undefined}% + \abx@missing{#1}} + +\def\blx@warn@conflopt#1{% + \blx@warning{Conflicting options.\MessageBreak#1}} + +\def\blx@warn@badoptdt#1{% + \blx@warning{Invalid option datatype '#1'.\MessageBreak Defaulting to 'boolean'}} + +\def\blx@warn@depropt#1{% + \blx@warning{Deprecated option.\MessageBreak Ignoring '#1'}} + +\def\blx@warn@bibempty{% + \@latex@warning{Empty bibliography}} + +\def\blx@warn@biblistempty#1{% + \@latex@warning{Empty biblist '#1'}} + +\def\blx@inf@refsec{% + \blx@info{Reference section=\the\c@refsection}}% + +\def\blx@warn@delimdeclare#1#2{% + \blx@warning{Delimiter '#1' in context '#2' already defined, overwriting}} + +\def\blx@warn@delimuse#1#2{% + \blx@warning{Delimiter '#1' in context '#2' undefined}} + +\def\blx@inf@refseg{% + \ifnum\c@refsection=\z@ + \blx@info{Reference segment=\the\c@refsegment}% + \else + \blx@info{% + Reference section/segment=% + \the\c@refsection/\the\c@refsegment}% + \fi} + +\def\blx@inf@creset{% + \blx@info{Resetting trackers}}% + +\def\blx@msg@cundef#1{% + Citation '#1' undefined} +\def\blx@msg@cundefon#1{% + Citation '#1' on page \the\c@page\space undefined} + +% Dummy as backend is biber by default. Some style may still use this to +% check though. +\newrobustcmd*{\RequireBiber}[1][2]{} + +% \blx@list@active active aux files (basename) +% [internal list] +% \blx@list@inactive inactive aux files (basename) +% [internal list] +% \blx@list@bibfiles@<auxfile> aux file -> bib file mapping (refsections) +% aux file (basename) -> bib files (full) +% [internal list] + +\let\blx@list@active\@empty +\let\blx@list@inactive\@empty +\listeadd\blx@list@inactive{\jobname} + +\protected\def\blx@regbibfiles#1#2{% + \forlistloop{\blx@regbibfile{#1}}{#2}} + +\def\blx@regbibfile#1#2{% + \ifcsundef{blx@res@loca@#2} + {\blx@regbibfile@i{#1}{#2}} + {\ifcsstring{blx@res@loca@#2}{local} + {\blx@regbibfile@i{#1}{#2}} + {}}} + +\def\blx@regbibfile@i#1#2{% + \ifinlistcs{#2}{blx@list@bibfiles@#1} + {} + {\listcsxadd{blx@list@bibfiles@#1}{#2}}} + +\def\blx@check@logreq{% + \begingroup + \ltxrequest{biblatex}{{\iftoggle{blx@runltx}{1}{0}}}{% + \provides[type=dynamic]{ + \file{\jobname.bcf} + } + \requires[type=dynamic]{ + \file{\jobname.bbl} + } + \ifdef\blx@list@req@edit + {\requires[type=editable]{ + \forlistloop\file\blx@list@req@edit + }} + {} + \ifdef\blx@list@req@stat + {\requires[type=static]{ + \forlistloop\file\blx@list@req@stat + }} + {} + }% + \logrequest[package=biblatex,priority=5,active={{\iftoggle{blx@runbiber}{1}{0}}}]{% + \generic{biber} + \cmdline{ + \binary{biber} + \infile{\jobname} + } + \input{ + \file{\jobname.bcf} + } + \output{ + \file{\jobname.bbl} + } + \provides[type=dynamic]{ + \file{\jobname.bbl} + } + \requires[type=dynamic]{ + \file{\jobname.bcf} + } + \ifcsdef{blx@list@bibfiles@\jobname} + {\requires[type=editable]{ + \def\do{\file} + \dolistcsloop{blx@list@bibfiles@\jobname} + }} + {} + }% + \endgroup} + +\def\blx@logreq@active#1{% + \ifblank{#1} + {} + {\@latex@warning{#1}}% + \blx@rerun@latex + \blx@rerun@biber} + +\def\blx@rerun@latex{% + \G@refundefinedtrue + \global\toggletrue{blx@runltx}% + \global\let\blx@rerun@latex\relax} + +\def\blx@rerun@biber{% + \global\toggletrue{blx@runbiber}% + \global\let\blx@rerun@biber\relax} + +\let\blx@checksum@old\@empty +\let\blx@checksum@new\@empty +\let\blx@pagesum@old\@empty +\let\blx@pagesum@new\@empty + +\def\blx@checksum#1#2#3{% + \begingroup + \blx@tempcnta\the\numexpr0#2*0#3\relax + \blx@tempcntb\blx@tempcnta + \divide\blx@tempcntb10 + \multiply\blx@tempcntb10 + \advance\blx@tempcnta-\blx@tempcntb + \xdef#1{#1\the\blx@tempcnta}% + \endgroup} + +\def\blx@addchecksum{\blx@checksum\blx@checksum@old} +\def\blx@addpagesum{\blx@checksum\blx@pagesum@old} +\AtEndDocument{% + \def\blx@addchecksum{\blx@checksum\blx@checksum@new}% + \def\blx@addpagesum{\blx@checksum\blx@pagesum@new}} + +\protected\def\blx@check@rerun{% + \begingroup + \blx@tempcnta\z@ + \iftoggle{blx@runltx} + {\blx@tempcnta\@ne} + {\ifx\blx@checksum@old\blx@checksum@new + \ifx\blx@pagesum@old\blx@pagesum@new + \else + \blx@tempcnta\@ne + \fi + \else + \blx@tempcnta\@ne + \fi}% + \iftoggle{blx@runbiber} + {\advance\blx@tempcnta\tw@} + {}% + \ifcase\blx@tempcnta + \or + \blx@rerun@latex + \blx@warning@noline{% + Please rerun LaTeX% + \ifx\blx@pagesum@old\blx@pagesum@new\else + .\MessageBreak Page breaks have changed% + \fi}% + \else + \blx@rerun@latex + \blx@warn@auxlist + \fi + \endgroup} + +\def\blx@warn@auxlist{% + \begingroup + \edef\blx@tempa{% + Please (re)run Biber on the file:\MessageBreak + \jobname}% + \blx@warning@noline{% + \blx@tempa\MessageBreak + and rerun LaTeX afterwards}% + \endgroup} + +\AfterEndDocument{% + \blx@check@rerun + \blx@check@logreq} + +%% Punctuation and capitalization + +% 1001 prefix sep for names (e.g. d'Argent ... \printnames only) +% 1002 abbreviation period (dot) +% 1003/1250 comma +% 1004/1500 semicolon +% 1005/2000 colon +% 1006/3000 period +% 1007/3001 exclamation mark +% 1008/3002 question mark +% 1009 suppress punctuation +% 1010 new paragaph + +\mathchardef\blx@sf@prefixchar=1001% e.g. apostrophe or equivalent for prefix handling +\mathchardef\blx@sf@dot=1002 +\mathchardef\blx@sf@comma=1003 +\mathchardef\blx@sf@semicolon=1004 +\mathchardef\blx@sf@colon=1005 +\mathchardef\blx@sf@period=1006 +\mathchardef\blx@sf@exclam=1007 +\mathchardef\blx@sf@question=1008 +\mathchardef\blx@sf@nopunct=1009 +\mathchardef\blx@sf@par=1010 +\mathchardef\blx@sf@threshold@low=1002 +\mathchardef\blx@sf@threshold@high=1009 + +\csdef{blx@sf@1250}{\the\blx@sf@comma} +\csdef{blx@sf@1500}{\the\blx@sf@semicolon} +\csdef{blx@sf@2000}{\the\blx@sf@colon} +\csdef{blx@sf@3000}{\the\blx@sf@period} +\csdef{blx@sf@3001}{\the\blx@sf@exclam} +\csdef{blx@sf@3002}{\the\blx@sf@question} + +\csdef{blx@pm@,}{comma} +\csdef{blx@pm@;}{semicolon} +\csdef{blx@pm@:}{colon} +\csdef{blx@pm@.}{period} +\csdef{blx@pm@!}{exclam} +\csdef{blx@pm@?}{question} + +\def\blx@setsfcodes{% + \let\blx@setsfcodes\relax + \let\frenchspacing\blx@setfrcodes + \let\nonfrenchspacing\blx@setencodes + \ifnum\sfcode`\.>2000 + \blx@setencodes + \else + \blx@setfrcodes + \fi + \@setquotesfcodes + \sfcode`\(=\z@ + \sfcode`\)=\z@ + \sfcode`\[=\z@ + \sfcode`\]=\z@ + \sfcode`\<=\z@ + \sfcode`\>=\z@} + +\def\blx@setfrcodes{% + \ifnum\sfcode`\A=\@m + \else + \blx@setazcodes + \fi + \sfcode`\,=\blx@sf@comma + \sfcode`\;=\blx@sf@semicolon + \sfcode`\:=\blx@sf@colon + \sfcode`\.=\blx@sf@period + \sfcode`\!=\blx@sf@exclam + \sfcode`\?=\blx@sf@question } -\DeclareOption*{% - \PassOptionsToPackage{\CurrentOption}{biblatex_legacy}% - \PassOptionsToPackage{\CurrentOption}{biblatex_}% + +\def\blx@setencodes{% + \sfcode`\,=1250 + \sfcode`\;=1500 + \sfcode`\:=2000 + \sfcode`\.=3000 + \sfcode`\!=3001 + \sfcode`\?=3002 } -% Default to the Biber backend -\blx@load@version@legacyfalse -\ProcessOptions\relax +% Defining characters that count as prefices in names like d'Argent +% Code from moewe +\let\blx@prefchars\@empty + +\def\blx@defprefchars@loop#1{% + \ifx#1\relax + \else + \listadd{\blx@prefchars}{#1}% + \expandafter\blx@defprefchars@loop + \fi} + +\def\blx@defprefchars#1{% + \expandafter\blx@defprefchars@loop\detokenize{#1}\relax} + +\newrobustcmd*{\DeclarePrefChars}{% + \@ifstar + {\blx@defprefchars} + {\let\blx@prefchars\@empty + \blx@defprefchars}} +\DeclarePrefChars{'} + +\protected\def\blx@imc@ifprefchar{% + \ifhmode + \begingroup + \ifnum\spacefactor=\blx@sf@prefixchar + \endgroup + \expandafter\expandafter + \expandafter\@firstoftwo + \else + \endgroup + \expandafter\expandafter + \expandafter\@secondoftwo + \fi + \else + \expandafter\@secondoftwo + \fi} + +\blx@regimcs{\ifprefchar} -\ifblx@load@backend@seen +\def\blx@namecodes{% + \ifnum\sfcode`\A=\@m + \else + \blx@setazcodes + \fi + \def\do##1{\sfcode`##1=\blx@sf@prefixchar}% + \dolistloop\blx@prefchars +} + +\begingroup +\let\blx@setazcodes\@empty +\def\blx@tempa{% + \xdef\blx@setazcodes{% + \blx@setazcodes + \sfcode\the\blx@tempcnta=\@m} + \ifnum\blx@tempcnta<\blx@tempcntb + \advance\blx@tempcnta\@ne + \expandafter\blx@tempa + \fi} +\blx@tempcnta`\A +\blx@tempcntb`\Z +\blx@tempa +\ifnum\inputlineno=\m@ne\else + \blx@tempcnta"80 + \blx@tempcntb"9C + \blx@tempa + \blx@tempcnta"C0 + \blx@tempcntb"DF + \blx@tempa +\fi +\ifx\Umathcode\undefined \else - \PackageWarningNoLine{biblatex} - {% - No "backend" specified, using Biber backend.\MessageBreak - To use BibTeX, load biblatex with \MessageBreak - the "backend=bibtex" option% + \openin\blx@bcfin=UnicodeData.txt % + \ifeof\blx@bcfin + \else + \let\blx@setazcodes\@empty + \def\Lu{Lu} + \def\storedpar{\par} + \def\blx@tempa#1;#2;#3;#4\relax{% + \def\temp{#3}% + \ifx\temp\Lu + \xdef\blx@setazcodes{% + \blx@setazcodes + \sfcode"#1=\@m + } + \fi } + \loop\unless\ifeof\blx@bcfin + \read\blx@bcfin to \blx@tempb + \unless\ifx\blx@tempb\storedpar + \expandafter\blx@tempa\blx@tempb\relax + \fi + \repeat + \fi + \closein\blx@bcfin \fi +\endgroup + +\def\blx@spacefactor{% + \ifhmode + \ifcsundef{blx@sf@\the\spacefactor} + {\the\spacefactor} + {\csname blx@sf@\the\spacefactor\endcsname}% + \else + \the\blx@sf@par + \fi} + +\protected\def\blx@leavevmode{% + \ifhmode + \else + \leavevmode\spacefactor\blx@sf@par + \fi} + +\protected\def\blx@leavevmode@cite{% + \ifhmode + \ifnum\spacefactor=\blx@sf@par + \else + \spacefactor\@m + \fi + \else + \leavevmode + \fi} + +\protected\def\blx@imc@setpunctfont#1{% + \blx@ifpuncthook + {\gdef\abx@puncthook{% + \ifdim\lastkern>\z@\unkern\fi + \blx@imc@resetpunctfont#1}} + {}} +\protected\def\blx@imc@resetpunctfont{% + \blx@ifpuncthook + {\global\let\abx@puncthook\@firstofone} + {}} + +\protected\def\blx@setpostpunct#1{% + \blx@ifuspunct + {\global\let\blx@postpunct\blx@dopostpunct + \ifdef\blx@thepostpunct + {\gappto\blx@thepostpunct{#1}} + {\gdef\blx@thepostpunct{#1}}} + {}} + +\def\blx@dopostpunct{% + \blx@thepostpunct + \global\let\blx@postpunct\@empty + \global\undef\blx@thepostpunct} + +\protected\def\blx@postpunct@agroup{% + \aftergroup\blx@postpunct + \let\blx@postpunct@agroup\@empty} + +% {<characters>} +\newrobustcmd*{\DeclareCapitalPunctuation}[1]{% + \cslet{blx@cap@\the\blx@sf@par}\@empty + \csundef{blx@cap@\the\blx@sf@comma}% + \csundef{blx@cap@\the\blx@sf@semicolon}% + \csundef{blx@cap@\the\blx@sf@colon}% + \csundef{blx@cap@\the\blx@sf@period}% + \csundef{blx@cap@\the\blx@sf@exclam}% + \csundef{blx@cap@\the\blx@sf@question}% + \ifblank{#1} + {} + {\expandafter\blx@defcapstring\detokenize{#1}\relax}} + +\def\blx@defcapstring#1{% + \ifx#1\relax + \else + \begingroup + \blx@setfrcodes + \ifcsdef{blx@pm@#1} + {\expandafter\endgroup + \expandafter\let + \csname blx@cap@\the\sfcode`#1\endcsname\@empty} + {\blx@warning{Ignoring invalid punctuation mark '#1'}% + \endgroup}% + \expandafter\blx@defcapstring + \fi} + +% {<characters>} +\newrobustcmd*{\DeclareQuotePunctuation}[1]{% + \csdef{blx@qp@comma}{\blx@postpunct}% + \csdef{blx@qp@semicolon}{\blx@postpunct}% + \csdef{blx@qp@colon}{\blx@postpunct}% + \csdef{blx@qp@period}{\blx@postpunct}% + \csdef{blx@qp@exclam}{\blx@postpunct}% + \csdef{blx@qp@question}{\blx@postpunct}% + \cslet{blx@pq@comma}\@empty + \cslet{blx@pq@semicolon}\@empty + \cslet{blx@pq@colon}\@empty + \cslet{blx@pq@period}\@empty + \cslet{blx@pq@exclam}\@empty + \cslet{blx@pq@question}\@empty + \let\blx@quotepunct\@empty + \ifblank{#1} + {\let\blx@ifuspunct\@secondoftwo} + {\let\blx@ifuspunct\@firstoftwo + \expandafter\blx@defquotepunct\detokenize{#1}&}} + +\def\blx@defquotepunct#1{% + \ifx\relax + \else + \ifcsdef{blx@pm@#1} + {\appto\blx@quotepunct{#1}% + \cslet{blx@qp@\csuse{blx@pm@#1}}\@empty + \csdef{blx@pq@\csuse{blx@pm@#1}}{\blx@postpunct}} + {\blx@warning{Ignoring invalid punctuation mark '#1'}}% + \expandafter\blx@defquotepunct + \fi} + +% {<mark>}{<characters>} +\newrobustcmd*{\DeclarePunctuationPairs}[2]{% + \ifcsdef{blx@sf@\detokenize{#1}} + {\ifnum\csname blx@sf@\detokenize{#1}\endcsname>\blx@sf@prefixchar + \ifnum\csname blx@sf@\detokenize{#1}\endcsname<\blx@sf@nopunct + \expandafter\blx@defpunctpairs + \expandafter{\the\csname blx@sf@\detokenize{#1}\endcsname}{#2}% + \else + \blx@err@invarg{\detokenize{#1}{}}% + \fi + \else + \blx@err@invarg{\detokenize{#1}{}}% + \fi} + {\blx@err@invarg{\detokenize{#1}{}}}} + +\def\blx@defpunctpairs#1#2{% + \blx@undefpair{#1}{\the\blx@sf@dot}% + \blx@undefpair{#1}{\the\blx@sf@comma}% + \blx@undefpair{#1}{\the\blx@sf@semicolon}% + \blx@undefpair{#1}{\the\blx@sf@colon}% + \blx@undefpair{#1}{\the\blx@sf@period}% + \blx@undefpair{#1}{\the\blx@sf@exclam}% + \blx@undefpair{#1}{\the\blx@sf@question}% + \ifblank{#2} + {} + {\begingroup + \def\blx@tempa{#1}% + \let\blx@tempb\@empty + \blx@setfrcodes + \sfcode`\*=\blx@sf@dot + \expandafter\blx@defpair\detokenize{#2}&% + \expandafter\endgroup\blx@tempb}} + +\def\blx@defpair#1{% + \ifx% + \else + \ifnum\the\sfcode`#1>\blx@sf@prefixchar + \ifnum\the\sfcode`#1<\blx@sf@nopunct + \eappto\blx@tempb{% + \cslet{blx@pp@\blx@tempa @\the\sfcode`#1}\noexpand\@empty}% + \else + \blx@err@invarg{#1}{}% + \fi + \else + \blx@err@invarg{#1}{}% + \fi + \expandafter\blx@defpair + \fi} + +\def\blx@undefpair#1#2{% + \ifcsdef{blx@pp@#1@#2} + {\csundef{blx@pp@#1@#2}} + {}} + +\protected\def\blx@resetpunct{% + \DeclareCapitalPunctuation{.!?}% + \DeclarePunctuationPairs{dot}{}% + \DeclarePunctuationPairs{comma}{*!?}% + \DeclarePunctuationPairs{semicolon}{*!?}% + \DeclarePunctuationPairs{colon}{*!?}% + \DeclarePunctuationPairs{period}{}% + \DeclarePunctuationPairs{exclam}{*}% + \DeclarePunctuationPairs{question}{*}% + \DeclareQuotePunctuation{}% + \def\abx@dot{\ifdim\lastkern>\z@\unkern\fi.\spacefactor\blx@sf@dot}% + \def\abx@comma{\ifdim\lastkern>\z@\unkern\fi\abx@puncthook{,}}% + \def\abx@semicolon{\abx@puncthook{;}}% + \def\abx@colon{\abx@puncthook{:}}% + \def\abx@period{\ifdim\lastkern>\z@\unkern\fi\abx@puncthook{.}}% + \def\abx@exclam{\abx@puncthook{!}}% + \def\abx@question{\abx@puncthook{?}}% + \global\let\abx@puncthook\@firstofone + \global\let\blx@postpunct\@empty} + +\blx@resetpunct + +% {<character>}{<true>}{<false>} +\protected\def\blx@imc@ifpunctmark#1{% + \ifhmode + \begingroup + \sfcode`\*=\blx@sf@dot + \ifnum\sfcode`#1=\spacefactor + \endgroup + \expandafter\expandafter + \expandafter\@firstoftwo + \else + \endgroup + \expandafter\expandafter + \expandafter\@secondoftwo + \fi + \else + \expandafter\@secondoftwo + \fi} + +% {<true>}{<false>} +\protected\def\blx@imc@ifterm{% + \ifhmode + \expandafter\blx@imc@ifcapital + \else + \expandafter\@secondoftwo + \fi} + +% {<true>}{<false>} +\protected\def\blx@imc@ifcapital{% + \ifcsdef{blx@cap@\blx@spacefactor}} + +% {<true>}{<false>} +\protected\def\blx@imc@ifpunct{% + \ifnum\blx@spacefactor>\blx@sf@threshold@low + \ifnum\blx@spacefactor<\blx@sf@threshold@high + \expandafter\expandafter + \expandafter\@firstoftwo + \else + \expandafter\expandafter + \expandafter\@secondoftwo + \fi + \else + \expandafter\@secondoftwo + \fi} + +% {<character>} +\newrobustcmd*{\autocap}[1]{#1} + +\protected\def\blx@imc@autocap{% + \blx@imc@ifcapital\MakeUppercase\@firstofone} + +\protected\def\blx@imc@nopunct{% + \leavevmode\spacefactor\blx@sf@nopunct} + +\protected\def\blx@imc@isdot{% + \ifnum\blx@spacefactor=\blx@sf@period + \spacefactor\blx@sf@dot + \fi} + +\protected\def\blx@imc@adddot{% + \blx@addpunct{dot}% + \ifnum\blx@spacefactor=\blx@sf@period + \spacefactor\blx@sf@dot + \fi} + +\protected\def\blx@imc@addperiod{% + \blx@addpunct{period}% + \ifnum\blx@spacefactor=\blx@sf@dot + \spacefactor\blx@sf@period + \fi} + +\protected\def\blx@imc@addcomma{\blx@addpunct{comma}} +\protected\def\blx@imc@addsemicolon{\blx@addpunct{semicolon}} +\protected\def\blx@imc@addcolon{\blx@addpunct{colon}} +\protected\def\blx@imc@addexclam{\blx@addpunct{exclam}} +\protected\def\blx@imc@addquestion{\blx@addpunct{question}} + +\def\blx@addpunct#1{% + \unspace + \ifnum\blx@spacefactor<\blx@sf@threshold@low + \csuse{blx@qp@#1}\csuse{abx@#1}% + \else + \ifnum\blx@spacefactor>\blx@sf@threshold@high + \csuse{blx@qp@#1}\csuse{abx@#1}% + \else + \ifcsdef{blx@pp@\the\csname blx@sf@#1\endcsname @\blx@spacefactor} + {\csuse{blx@qp@#1}\csuse{abx@#1}} + {\csuse{blx@qp@#1}}% + \fi + \fi + \csuse{blx@pq@#1}} + +\providerobustcmd*{\unspace}{% + \ifbool{hmode} + {\ifdimgreater\lastskip\z@ + {\unskip\unspace} + {\ifnumgreater\lastpenalty\z@ + {\unpenalty\unspace} + {}}} + {}} + +\newrobustcmd*{\bibsentence}{% + \leavevmode\spacefactor\blx@sf@par + \ignorespaces} + +\newrobustcmd*{\midsentence}{% + \leavevmode + \@ifstar + {\ifnum\spacefactor=\blx@sf@dot + \else + \spacefactor\@m + \fi} + {\spacefactor\@m}} + +\newrobustcmd*{\addslash}{% + \unspace/\penalty\hyphenpenalty\hskip\z@skip} + +\newrobustcmd*{\addspace}{% + \unspace\blx@postpunct + \space\blx@imc@resetpunctfont} + +\newrobustcmd*{\addnbspace}{% + \unspace\blx@postpunct + \nobreak\space\blx@imc@resetpunctfont} + +\newrobustcmd*{\addthinspace}{% + \unspace\blx@postpunct + \hskip0.16667em\relax + \blx@imc@resetpunctfont} + +\newrobustcmd*{\addnbthinspace}{% + \unspace\blx@postpunct + \nobreak\hskip0.16667em\relax + \blx@imc@resetpunctfont} + +\newrobustcmd*{\addlowpenspace}{% + \unspace\blx@postpunct + \penalty\value{lownamepenalty}\space + \blx@imc@resetpunctfont} + +\newrobustcmd*{\addhighpenspace}{% + \unspace\blx@postpunct + \penalty\value{highnamepenalty}\space + \blx@imc@resetpunctfont} + +\newrobustcmd*{\addlpthinspace}{% + \unspace\blx@postpunct + \penalty\value{lownamepenalty}% + \hskip0.16667em\relax\blx@imc@resetpunctfont} + +\newrobustcmd*{\addhpthinspace}{% + \unspace\blx@postpunct + \penalty\value{highnamepenalty}% + \hskip0.16667em\relax\blx@imc@resetpunctfont} + +\newrobustcmd*{\addabbrvspace}{% + \unspace\blx@postpunct + \penalty\value{abbrvpenalty}% + \space\blx@imc@resetpunctfont} + +\newrobustcmd*{\addabthinspace}{% + \unspace\blx@postpunct + \penalty\value{abbrvpenalty}% + \hskip0.16667em\relax + \blx@imc@resetpunctfont} + +\newrobustcmd*{\adddotspace}{% + \unspace\adddot\blx@postpunct + \penalty\value{abbrvpenalty}% + \space\blx@imc@resetpunctfont} + +\providerobustcmd*{\noligature}{% + \penalty\@M\discretionary{-}{}{\kern0.03em}% + \nobreak\hskip\z@skip} + +\providerobustcmd*{\hyphen}{% + \nobreak-\nobreak\hskip\z@skip} + +\providerobustcmd*{\nbhyphen}{% + \nobreak\mbox{-}\nobreak\hskip\z@skip} + +\providerobustcmd*{\hyphenate}{% + \nobreak\-\nobreak\hskip\z@skip} + +\providerobustcmd*{\allowhyphens}{% + \nobreak\hskip\z@skip} + +\providerobustcmd*{\nohyphenation}{% + \lefthyphenmin\@m} + +\providerobustcmd*{\textnohyphenation}[1]{% + \bgroup\nohyphenation#1\egroup} + +\blx@regimcs{% + \setpunctfont \resetpunctfont \ifcapital \autocap \ifpunctmark + \ifpunct \ifterm \nopunct \isdot \adddot \addperiod \addcomma + \addsemicolon \addcolon \addexclam \addquestion} + +\appto\blx@blxinit{% + \appto\nocorrlist{\isdot\adddot\addperiod\addcomma}} + +%% Style definition + +% {<bibstyle>} +\newrobustcmd*{\RequireBibliographyStyle}[1]{% + \blx@inputonce{#1.bbx}{bibliography style '#1'}{}{}{} + {\blx@error + {Style '#1' not found} + {The bibliography style '#1' could not be found}}} +\@onlypreamble\RequireBibliographyStyle + +% {<code>} +\newrobustcmd*{\InitializeBibliographyStyle}{\appto\blx@hook@bbxinit} +\@onlypreamble\InitializeBibliographyStyle + +% {<entry type>}{<driverdef>} +\newrobustcmd*{\DeclareBibliographyDriver}[1]{% + \long\csdef{blx@bbx@#1}} +\@onlypreamble\DeclareBibliographyDriver + +% {<entry type>} +\def\blx@driver#1{% + \ifcsdef{blx@bbx@#1} + {\csuse{blx@bbx@#1}} + {\ifcsdef{blx@bbx@*} + {\blx@warning{% + No driver for entry type '#1'.\MessageBreak + Using fallback driver}% + \csuse{blx@bbx@*}} + {\blx@error + {No driver found} + {I can't find a driver for the entry type + '\abx@field@entrytype'\MessageBreak + and there is no fallback driver either}}}} + +% {<type>}{<true>}{<false>} +\def\blx@imc@ifdriver#1{\ifcsdef{blx@bbx@#1}} + +% {<alias>}{<type>} +\newrobustcmd*{\DeclareBibliographyAlias}[2]{% + \csedef{blx@bbx@#1}{% + \expandafter\noexpand\csname blx@bbx@#2\endcsname}} +\@onlypreamble\DeclareBibliographyAlias + +%% Auxiliary commands +\newrobustcmd*{\citereset}{% + \csuse{blx@hook@cbxinit}% + \@ifstar + {} + {\global\cslet{blx@bsee@\the\c@refsection}\@empty + \global\cslet{blx@fsee@\the\c@refsection}\@empty + \blx@ibidreset@force + \blx@idemreset@force + \blx@opcitreset@force + \blx@loccitreset@force}} + +\def\blx@save#1{% + \ifcsdef{blx@saved@#1} + {} + {\blx@safe@actives + \csletcs{blx@saved@#1}{#1}% + \blx@rest@actives}} + +\def\blx@restore#1{% + \ifcsdef{blx@saved@#1} + {\blx@safe@actives + \csletcs{#1}{blx@saved@#1}% + \csundef{blx@saved@#1}% + \blx@rest@actives} + {}} + +\newrobustcmd*{\savecommand}[1]{% + \ifcsdef{blx@saved@cmd@\detokenize{#1}} + {} + {\cslet{blx@saved@cmd@\detokenize{#1}}{#1}}} + +\newrobustcmd*{\restorecommand}[1]{% + \ifcsdef{blx@saved@cmd@\detokenize{#1}} + {\letcs{#1}{blx@saved@cmd@\detokenize{#1}}% + \csundef{blx@saved@cmd@\detokenize{#1}}} + {}} + +% {<name>} +\newrobustcmd*{\savebibmacro}[1]{% + \blx@save{abx@macro@\detokenize{#1}}} + +\newrobustcmd*{\restorebibmacro}[1]{% + \blx@restore{abx@macro@\detokenize{#1}}} + +% {<name>}[<args>][<optarg>]{<definition>} +\newrobustcmd*{\newbibmacro}{% + \@star@or@long\blx@newbibmacro} + +\def\blx@newbibmacro#1{% + \ifcsundef{abx@macro@\detokenize{#1}} + {\blx@defbibmacro\new@command{#1}} + {\blx@warning{% + Macro '\detokenize{#1}' already defined.\MessageBreak + Using \string\renewbibmacro} + \blx@defbibmacro\renew@command{#1}}} + +\newrobustcmd*{\renewbibmacro}{% + \@star@or@long\blx@renewbibmacro} + +\def\blx@renewbibmacro#1{% + \ifcsundef{abx@macro@\detokenize{#1}} + {\blx@warning{% + Macro '\detokenize{#1}' undefined.\MessageBreak + Using \string\newbibmacro} + \blx@defbibmacro\new@command{#1}} + {\blx@defbibmacro\renew@command{#1}}} + +\newrobustcmd*{\providebibmacro}{% + \@star@or@long{\blx@defbibmacro\provide@command}} + +\def\blx@defbibmacro#1#2{% + \expandafter#1\csname abx@macro@\detokenize{#2}\endcsname} + +% {<name>} +\newrobustcmd*{\usebibmacro}{% + \@ifstar + {\blx@usebibmacro@i} + {\blx@usebibmacro}} + +\def\blx@usebibmacro#1{% + \blx@usebibmacro@i{\detokenize{#1}}} + +\def\blx@usebibmacro@i#1{% + \ifcsundef{abx@macro@#1} + {\blx@error + {Bibliography macro '#1' undefined} + {Use '\string\newbibmacro' to define this macro}} + {\csuse{abx@macro@#1}}} + +% {<name>}{<true>}{<false>} +\def\blx@imc@ifbibmacroundef#1{% + \ifcsundef{abx@macro@#1}} + +% {<field>} +\def\blx@imc@thefield#1{\csuse{abx@field@#1}} + +\def\blx@imc@strfield#1{% + \ifcsdef{abx@field@#1} + {\detokenize\expandafter\expandafter\expandafter + {\csname abx@field@#1\endcsname}} + {}} + +\def\blx@imc@csfield#1{\usefield{\unexpanded}{#1}} + +% {<command>}{<field>} +\def\blx@imc@usefield#1#2{% + \expandafter\expandafter\expandafter#1% + \expandafter\expandafter\expandafter{\csname abx@field@#2\endcsname}} + +% {<plainlist>} +\def\blx@imc@thelist#1{\csuse{abx@list@#1}} + +\def\blx@imc@strlist#1{% + \ifcsdef{abx@list@#1} + {\detokenize\expandafter\expandafter\expandafter + {\csname abx@list@#1\endcsname}} + {}} + +% {<namelist>} +\def\blx@imc@thename#1{\csuse{abx@name@#1}} + +\def\blx@imc@strname#1{% + \ifcsdef{abx@name@#1} + {\detokenize\expandafter\expandafter\expandafter + {\csname abx@name@#1\endcsname}} + {}} + + +% We have to save cleared fields/lists/names in case a related entry +% needs them for tests +\let\abx@dorelfields\@empty +\let\abx@dorellists\@empty +\let\abx@dorelnames\@empty + +% {<field>} +% If there is a related field in the entry, save a special copy in case +% the related entry needs it for tests. See the corresponding tests in +% \blx@save{field,list,name} +\protected\def\blx@imc@clearfield#1{% + \ifdef\abx@field@related + {\csletcs{abx@field@relsaved#1}{abx@field@#1}% + \listadd\abx@dorelfields{#1}} + {}% + \csundef{abx@field@#1}} + +% {<plainlist>} +% If there is a related field in the entry, save a special copy in case +% the related entry needs it for tests. See the corresponding tests in +% \blx@save{field,list,name} +\protected\def\blx@imc@clearlist#1{% + \ifcsundef{abx@list@#1} + {} + {\ifdef\abx@field@related + {\csletcs{abx@list@relsaved#1}{abx@list@#1}% + \csletcs{etb@tgl@abx@bool@morerelsaved#1}{etb@tgl@abx@bool@more#1}% + \csletcs{c@relsaved#1}{c@#1}% + \listadd\abx@dorellists{#1}} + {}% + \togglefalse{abx@bool@more#1}% + \csundef{abx@list@#1}% + \csname c@#1\endcsname\z@}} + +% {<namelist>} +% If there is a related field in the entry, save a special copy in case +% the related entry needs it for tests. See the corresponding tests in +% \blx@save{field,list,name} +\protected\def\blx@imc@clearname#1{% + \ifcsundef{abx@name@#1} + {} + {\ifdef\abx@field@related + {\csletcs{abx@name@relsaved#1}{abx@name@#1}% + \csletcs{etb@tgl@abx@bool@morerelsaved#1}{etb@tgl@abx@bool@more#1}% + \csletcs{c@relsaved#1}{c@#1}% + \listadd\abx@dorelnames{#1}} + {}% + \togglefalse{abx@bool@more#1}% + \csundef{abx@name@#1}% + \csname c@#1\endcsname\z@}} + +% {<field>}{<macro>} +\protected\def\blx@imc@restorefield#1{\cslet{abx@field@#1}} + +% {<plainlist>}{<macro>} +\protected\def\blx@imc@restorelist#1{\cslet{abx@list@#1}} + +% {<namelist>}{<macro>} +\protected\def\blx@imc@restorename#1{\cslet{abx@name@#1}} + +% {<field>}{<macro>} +\protected\def\blx@imc@savefield{% + \@ifstar{\blx@savedata{field}}{\global\blx@savedata{field}}} +\def\blx@savedata#1#2#3{\letcs#3{abx@#1@#2}} + +% {<plainlist>}{<macro>} +\protected\def\blx@imc@savelist{% + \@ifstar{\blx@savedata{list}}{\global\blx@savedata{list}}} + +% {<namelist>}{<macro>} +\protected\def\blx@imc@savename{% + \@ifstar{\blx@savedata{name}}{\global\blx@savedata{name}}} + +% {<field>}{<csname>} +\protected\def\blx@imc@savefieldcs{% + \@ifstar{\blx@savedatacs{field}}{\global\blx@savedatacs{field}}} +\def\blx@savedatacs#1#2#3{\csletcs{#3}{abx@#1@#2}} + +% {<plainlist>}{<csname>} +\protected\def\blx@imc@savelistcs{% + \@ifstar{\blx@savedatacs{list}}{\global\blx@savedatacs{list}}} + +% {<namelist>}{<csname>} +\protected\def\blx@imc@savenamecs{% + \@ifstar{\blx@savedatacs{name}}{\global\blx@savedatacs{name}}} + +% {<field>}{<true>}{<false>} +\def\blx@imc@iffieldundef#1{% + \ifcsundef{abx@field@#1}} + +% {<plainlist>}{<true>}{<false>} +\def\blx@imc@iflistundef#1{% + \ifcsundef{abx@list@#1}} + +% {<namelist>}{<true>}{<false>} +\def\blx@imc@ifnameundef#1{% + \ifcsundef{abx@name@#1}} + +% {<field1>}{<field2>}{<true>}{<false>} +\def\blx@imc@iffieldsequal#1#2{% + \ifcsequal{abx@field@#1}{abx@field@#2}} + +% {<plainlist1>}{<plainlist2>}{<true>}{<false>} +\def\blx@imc@iflistsequal#1#2{% + \ifcsequal{abx@list@#1}{abx@list@#2}} + +% {<namelist1>}{<namelist2>}{<true>}{<false>} +\def\blx@imc@ifnamesequal#1#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{% + \setkeys{blx@opt@name}{#1}% + \setkeys{blx@opt@namepart}{#2}% + \ifdef\abx@field@hash + {\eappto\blx@tempa{{\abx@field@hash}}} + {\eappto\blx@tempa{{{\namepartfamily}{\namepartgiven}{\namepartprefix}{\namepartsuffix}}}}} + +% {<field>}{<macro>}{<true>}{<false>} +\def\blx@imc@iffieldequals#1#2{% + \blx@imc@iffieldundef{#1} + {\@secondoftwo} + {\ifundef#2% + {\@secondoftwo} + {\expandafter\ifx\csname abx@field@#1\endcsname#2% + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi}}} + +% {<plainlist>}{<macro>}{<true>}{<false>} +\def\blx@imc@iflistequals#1#2{% + \blx@imc@iflistundef{#1} + {\@secondoftwo} + {\ifundef#2% + {\@secondoftwo} + {\expandafter\ifx\csname abx@list@#1\endcsname#2% + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi}}} + +% {<namelist>}{<macro>}{<true>}{<false>} +\def\blx@imc@ifnameequals#1#2{% FIXME + \blx@imc@ifnameundef{#1} + {\@secondoftwo} + {\ifundef#2% + {\@secondoftwo} + {\expandafter\ifx\csname abx@name@#1\endcsname#2% + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi}}} + +% {<field>}{<csname>}{<true>}{<false>} +\def\blx@imc@iffieldequalcs#1{% + \ifcsequal{abx@field@#1}} + +% {<plainlist>}{<csname>}{<true>}{<false>} +\def\blx@imc@iflistequalcs#1{% + \ifcsequal{abx@list@#1}} + +% {<namelist>}{<csname>}{<true>}{<false>} +\def\blx@imc@ifnameequalcs#1{% FIXME + \ifcsequal{abx@name@#1}} + +% {<field>}{<string>}{<true>}{<false>} +\protected\long\def\blx@imc@iffieldequalstr#1#2{% + \blx@imc@iffieldundef{#1} + {\@secondoftwo} + {\expandafter\expandafter\expandafter\ifstrequal + \expandafter\expandafter\expandafter{% + \csname abx@field@#1\endcsname}{#2}}} + +% {<field>}{<true>}{<false>} +\protected\def\blx@imc@iffieldxref#1{% + \blx@imc@iffieldundef{#1} + {\@secondoftwo} + {\blx@whichxref + {\blx@iffieldxref{#1}} + {\@secondoftwo}}} + +\def\blx@iffieldxref#1#2{% + \begingroup + \letcs\blx@tempa{abx@field@#2}% + \letcs\blx@tempb{abx@field@#1}% + \csundef{abx@field@#1}% + \blx@getdata{\blx@tempa}% + \blx@imc@iffieldequals{#1}\blx@tempb + {\aftergroup\@firstoftwo} + {\aftergroup\@secondoftwo}% + \endgroup} + +\def\blx@whichxref#1#2{% + \blx@imc@iffieldundef{crossref} + {\blx@imc@iffieldundef{xref} + {#2} + {#1{xref}}} + {#1{crossref}}} + +% {<plainlist>}{<true>}{<false>} +\protected\def\blx@imc@iflistxref#1{% + \blx@imc@iflistundef{#1} + {\@secondoftwo} + {\blx@whichxref + {\blx@iflistxref{#1}} + {\@secondoftwo}}} + +\def\blx@iflistxref#1#2{% + \begingroup + \letcs\blx@tempa{abx@field@#2}% + \letcs\blx@tempb{abx@list@#1}% + \csundef{abx@list@#1}% + \blx@getdata{\blx@tempa}% + \blx@imc@iflistequals{#1}\blx@tempb + {\aftergroup\@firstoftwo} + {\aftergroup\@secondoftwo}% + \endgroup} + +% {<namelist>}{<true>}{<false>} +\protected\def\blx@imc@ifnamexref#1{% + \blx@imc@ifnameundef{#1} + {\@secondoftwo} + {\blx@whichxref + {\blx@ifnamexref{#1}} + {\@secondoftwo}}} + +\def\blx@ifnamexref#1#2{% + \begingroup + \letcs\blx@tempa{abx@field@#2}% + \letcs\blx@tempb{abx@name@#1}% + \csundef{abx@name@#1}% + \blx@getdata{\blx@tempa}% + \blx@imc@ifnameequals{#1}\blx@tempb + {\aftergroup\@firstoftwo} + {\aftergroup\@secondoftwo}% + \endgroup} + +% {<string>}{<true>}{<false>} +\protected\def\blx@imc@ifcurrentfield#1{% + \begingroup + \def\blx@tempa{#1}% + \ifx\currentfield\blx@tempa + \aftergroup\@firstoftwo + \else + \aftergroup\@secondoftwo + \fi + \endgroup} + +% {<string>}{<true>}{<false>} +\protected\def\blx@imc@ifcurrentlist#1{% + \begingroup + \def\blx@tempa{#1}% + \ifx\currentlist\blx@tempa + \aftergroup\@firstoftwo + \else + \aftergroup\@secondoftwo + \fi + \endgroup} + +% {<string>}{<true>}{<false>} +\protected\def\blx@imc@ifcurrentname#1{% + \begingroup + \def\blx@tempa{#1}% + \ifx\currentname\blx@tempa + \aftergroup\@firstoftwo + \else + \aftergroup\@secondoftwo + \fi + \endgroup} + +% {<string>}{<true>}{<false>} +\protected\def\blx@imc@ifentrytype#1{% + \begingroup + \def\blx@tempa{#1}% + \ifx\abx@field@entrytype\blx@tempa + \aftergroup\@firstoftwo + \else + \aftergroup\@secondoftwo + \fi + \endgroup} + +% {<true>}{<false>} +\def\blx@imc@ifmorenames{% + \ifundef\currentname + {\@secondoftwo} + {\iftoggle{abx@bool@more\currentname} + {\@firstoftwo} + {\ifnum\c@listtotal>\c@liststop + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi}}} + +% {<true>}{<false>} +\def\blx@imc@ifmoreitems{% + \ifundef\currentlist + {\@secondoftwo} + {\iftoggle{abx@bool@more\currentlist} + {\@firstoftwo} + {\ifnum\c@listtotal>\c@liststop + \expandafter\@firstoftwo + \else + \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{% + \ifdef\abx@field@entrykey + {\blx@imc@ifentrycategory\abx@field@entrykey} + {\expandafter\@secondoftwo\@gobble}} + +% {<entrykey>}{<category>}{<true>}{<false>} +\protected\def\blx@imc@ifentrycategory{% + \blx@xsanitizeafter\blx@imc@ifentrycategory@i} + +\def\blx@imc@ifentrycategory@i#1#2{% + \ifcsdef{blx@catg@\detokenize{#2}} + {\ifinlistcs{#1}{blx@catg@\detokenize{#2}}} + {\@secondoftwo}} + +% {<keyword>}{<true>}{<false>} +\protected\def\blx@imc@ifkeyword{% + \ifdef\abx@field@entrykey + {\blx@imc@ifentrykeyword\abx@field@entrykey} + {\expandafter\@secondoftwo\@gobble}} + +% {<entrykey>}{<keyword>}{<true>}{<false>} +\protected\def\blx@imc@ifentrykeyword{% + \blx@xsanitizeafter\blx@imc@ifentrykeyword@i} + +\def\blx@imc@ifentrykeyword@i#1#2{% + \ifcsdef{blx@keyw@\the\c@refsection @\detokenize{#2}} + {\ifinlistcs{#1}{blx@keyw@\the\c@refsection @\detokenize{#2}}} + {\@secondoftwo}} + +% {<true>}{<false>} +\protected\def\blx@ifciteseen@global{% + \ifbool{citetracker} + {\ifdef\abx@field@entrykey + {\expandafter\blx@ifseen@global + \expandafter{\abx@field@entrykey}} + {\@secondoftwo}} + {\@secondoftwo}} + +\protected\def\blx@ifciteseen@context{% + \ifbool{citetracker} + {\ifdef\abx@field@entrykey + {\expandafter\blx@ifseen@context + \expandafter{\abx@field@entrykey}} + {\@secondoftwo}} + {\@secondoftwo}} + +\protected\def\blx@ifciteseen@context{% + \ifbool{citetracker} + {\ifdef\abx@field@entrykey + {\expandafter\blx@ifseen@context + \expandafter{\abx@field@entrykey}} + {\@secondoftwo}} + {\@secondoftwo}} + +% {<entrykey>}{<true>}{<false>} +\protected\def\blx@ifentryseen@global{% + \blx@xsanitizeafter\blx@ifseen@global} + +\protected\def\blx@ifentryseen@context{% + \blx@xsanitizeafter\blx@ifseen@context} + +\def\blx@ifseen@global#1{% + \ifbool{citetracker} + {\ifinlistcs{#1}{blx@bsee@\the\c@refsection}} + {\@secondoftwo}} + +\def\blx@ifseen@context#1{% + \ifbool{citetracker} + {\iftoggle{blx@footnote} + {\ifinlistcs{#1}{blx@fsee@\the\c@refsection}} + {\ifinlistcs{#1}{blx@bsee@\the\c@refsection}}} + {\@secondoftwo}} + +% {<true>}{<false>} +\def\blx@ifciteibid@global{% + \ifbool{citetracker} + {\blx@imc@iffieldequals{entrykey}\blx@lastkey@text} + {\@secondoftwo}} + +\def\blx@ifciteibid@context{% + \ifbool{citetracker} + {\iftoggle{blx@footnote} + {\blx@imc@iffieldequals{entrykey}\blx@lastkey@foot} + {\blx@imc@iffieldequals{entrykey}\blx@lastkey@text}} + {\@secondoftwo}} + +\def\blx@ifciteibid@strict{% + \ifbool{citetracker} + {\blx@ifcitesingle + {\blx@ifciteibid@global} + {\@secondoftwo}} + {\@secondoftwo}} + +\def\blx@ifciteibid@constrict{% + \ifbool{citetracker} + {\blx@ifcitesingle + {\iftoggle{blx@footnote} + {\blx@ifmpfncheck + {\blx@imc@iffieldequals{entrykey}\blx@lastkey@foot} + {\@secondoftwo}} + {\blx@imc@iffieldequals{entrykey}\blx@lastkey@text}} + {\@secondoftwo}} + {\@secondoftwo}} + +% {<true>}{<false>} +\def\blx@ifciteidem@global{% + \ifbool{citetracker} + {\blx@imc@iffieldequals{fullhash}\blx@lasthash@text} + {\@secondoftwo}} + +\def\blx@ifciteidem@context{% + \ifbool{citetracker} + {\iftoggle{blx@footnote} + {\blx@imc@iffieldequals{fullhash}\blx@lasthash@foot} + {\blx@imc@iffieldequals{fullhash}\blx@lasthash@text}} + {\@secondoftwo}} + +\let\blx@ifciteidem@strict\blx@ifciteidem@global + +\def\blx@ifciteidem@constrict{% + \ifbool{citetracker} + {\iftoggle{blx@footnote} + {\blx@ifmpfncheck + {\blx@imc@iffieldequals{fullhash}\blx@lasthash@foot} + {\@secondoftwo}} + {\blx@imc@iffieldequals{fullhash}\blx@lasthash@text}} + {\@secondoftwo}} + +% {<true>}{<false>} +\def\blx@ifopcit@global{% + \ifbool{citetracker} + {\blx@imc@iffieldundef{namehash} + {\@secondoftwo} + {\blx@imc@iffieldequalcs{entrykey}{blx@lastkey@text@\abx@field@namehash}}} + {\@secondoftwo}} + +\def\blx@ifopcit@context{% + \ifbool{citetracker} + {\blx@imc@iffieldundef{namehash} + {\@secondoftwo} + {\iftoggle{blx@footnote} + {\blx@imc@iffieldequalcs{entrykey}{blx@lastkey@foot@\abx@field@namehash}} + {\blx@imc@iffieldequalcs{entrykey}{blx@lastkey@text@\abx@field@namehash}}}} + {\@secondoftwo}} + +\def\blx@ifopcit@strict{% + \ifbool{citetracker} + {\blx@ifcitesingle + {\blx@ifopcit@global} + {\@secondoftwo}} + {\@secondoftwo}} + +\def\blx@ifopcit@constrict{% + \ifbool{citetracker} + {\blx@ifcitesingle + {\blx@imc@iffieldundef{namehash} + {\@secondoftwo} + {\iftoggle{blx@footnote} + {\blx@ifmpfncheck + {\blx@imc@iffieldequalcs{entrykey}{blx@lastkey@foot@\abx@field@namehash}} + {\@secondoftwo}} + {\blx@imc@iffieldequalcs{entrykey}{blx@lastkey@text@\abx@field@namehash}}}} + {\@secondoftwo}} + {\@secondoftwo}} + +% {<true>}{<false>} +\def\blx@ifloccit@global{% + \ifbool{citetracker} + {\blx@loccit@check{text}} + {\@secondoftwo}} + +\def\blx@ifloccit@context{% + \ifbool{citetracker} + {\iftoggle{blx@footnote} + {\blx@loccit@check{foot}} + {\blx@loccit@check{text}}} + {\@secondoftwo}} + +\def\blx@ifloccit@strict{% + \ifbool{citetracker} + {\blx@ifcitesingle + {\blx@loccit@numcheck{text}} + {\@secondoftwo}} + {\@secondoftwo}} + +\def\blx@ifloccit@constrict{% + \ifbool{citetracker} + {\blx@ifcitesingle + {\iftoggle{blx@footnote} + {\blx@ifmpfncheck + {\blx@loccit@numcheck{foot}} + {\@secondoftwo}} + {\blx@loccit@numcheck{text}}} + {\@secondoftwo}} + {\@secondoftwo}} + +\def\blx@loccit@check#1{% + \blx@imc@iffieldundef{postnote} + {\@secondoftwo} + {\blx@imc@iffieldequalcs{postnote}{blx@lastnote@#1@\abx@field@entrykey}}} + +\def\blx@loccit@numcheck#1{% + \blx@imc@iffieldundef{postnote} + {\@secondoftwo} + {\expandafter\blx@imc@ifpages + \expandafter{\abx@field@postnote} + {\blx@imc@iffieldequalcs{postnote}{blx@lastnote@#1@\abx@field@entrykey}} + {\@secondoftwo}}} + +% {<true>}{<false>} +\def\blx@ifmpfncheck{% + \ifnum\numexpr\value\@mpfn-\blx@lastmpfn<\tw@ + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi} + +\def\blx@mpfnsave{% + \xdef\blx@lastmpfn{\the\value\@mpfn}} + +\def\blx@mpfnreset{% + \global\let\blx@lastmpfn\z@} + +\blx@mpfnreset + +% {<true>}{<false>} +\def\blx@imc@iffirstonpage{% + \ifbool{pagetracker} + {\iftoggle{blx@footnote} + {\blx@iffirstonpage{fnpage}} + {\blx@iffirstonpage{page}}} + {\@secondoftwo}} + +\def\blx@iffirstonpage#1{% + \ifcsundef{blx@#1@\number\c@instcount} + {\@secondoftwo} + {\expandafter\blx@iffirstonpage@i + \expandafter{\number\numexpr\c@instcount-1}{#1}}} + +\def\blx@iffirstonpage@i#1#2{% + \ifcsundef{blx@#2@#1} + {\ifnum#1>\@ne + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {\expandafter\blx@iffirstonpage@i + \expandafter{\number\numexpr#1-1}{#2}} + {\@firstoftwo}} + {\ifnum\csuse{blx@#2@\number\c@instcount}=% + \csuse{blx@#2@#1} % + \expandafter\@secondoftwo + \else + \expandafter\@firstoftwo + \fi}} + +% {<count1>}{<count2>}{<true>}{<false>} +\def\blx@imc@ifsamepage#1#2{% + \ifbool{pagetracker} + {\ifcsundef{blx@page@\number\numexpr#1} + {\ifcsundef{blx@fnpage@\number\numexpr#1} + {\@secondoftwo} + {\blx@ifsamepage{#1}{#2}{fnpage}}} + {\blx@ifsamepage{#1}{#2}{page}}} + {\@secondoftwo}} + +\def\blx@ifsamepage#1#2#3{% + \ifcsundef{blx@page@\number\numexpr#2} + {\ifcsundef{blx@fnpage@\number\numexpr#2} + {\@secondoftwo} + {\blx@ifsamepage@i{#1}{#2}{#3}{fnpage}}} + {\blx@ifsamepage@i{#1}{#2}{#3}{page}}} + +\def\blx@ifsamepage@i#1#2#3#4{% + \ifnum\csuse{blx@#3@\number\numexpr#1}=% + \csuse{blx@#4@\number\numexpr#2} % + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi} + +% {<string>}{<true>}{<false>} +\protected\long\def\blx@imc@ifinteger#1{% + \begingroup + \def\do##1{\uccode`##1=`\%}% + \do\0\do\1\do\2\do\3\do\4\do\5\do\6\do\7\do\8\do\9% + \makeatletter + \catcode`\%=9 + \endlinechar\m@ne + \uppercase{\scantokens{\def\blx@tempa{#1}}}% + \ifx\blx@tempa\@empty + \aftergroup\@firstoftwo + \else + \aftergroup\@secondoftwo + \fi + \endgroup} + +% {<field>}{<true>}{<false>} +\protected\def\blx@imc@iffieldint#1{% + \blx@imc@iffieldundef{#1} + {\@secondoftwo} + {\expandafter\expandafter + \expandafter\ifinteger + \expandafter\expandafter + \expandafter{\csname abx@field@#1\endcsname}}} + +% {<string>}{<true>}{<false>} +\protected\def\blx@imc@ifnumeral{% + \blx@ifnum\blx@hook@ifnum} + +\protected\def\blx@imc@ifnumerals{% + \blx@ifnum\blx@hook@ifnums} + +\protected\def\blx@imc@ifpages{% + \blx@ifnum\blx@hook@ifpages} + +\long\def\blx@ifnum#1#2{% + \begingroup + \let\protect\@unexpandable@protect + \uppercase{\edef\blx@tempa{#2}}% + \ifx\blx@tempa\@empty + \aftergroup\@secondoftwo + \else + \makeatletter + \catcode`\%=9 + \endlinechar\m@ne + \everyeof{\noexpand}#1% + \uppercase{\edef\blx@tempa{\scantokens{#2}}}% + \ifx\blx@tempa\@empty + \aftergroup\@firstoftwo + \else + \aftergroup\@secondoftwo + \fi + \fi + \endgroup} + +\def\blx@hook@ifnum{% + \def\do##1{\uccode`##1=`\%}% + \do\ \do\0\do\1\do\2\do\3\do\4\do\5\do\6\do\7\do\8\do\9% + \do\i\do\v\do\x\do\l\do\c\do\d\do\m + \do\I\do\V\do\X\do\L\do\C\do\D\do\M + \blx@donumchars + \let\RN\@firstofone + \let\Rn\@firstofone} + +\def\blx@hook@ifnums{% + \blx@hook@ifnum + \def\do##1{\uccode`##1=`\%}% + \blx@dorangechars + \def\do##1{\let##1\@empty}% + \blx@dorangecmds} + +\def\blx@hook@ifpages{% + \blx@hook@ifnum + \blx@hook@ifnums + \def\do##1{\let##1\@empty}% + \blx@dopagecmds} + +% {<field>}{<true>}{<false>} +\protected\def\blx@imc@iffieldnum#1{% + \blx@imc@iffieldundef{#1} + {\@secondoftwo} + {\expandafter\expandafter + \expandafter\blx@imc@ifnumeral + \expandafter\expandafter + \expandafter{\csname abx@field@#1\endcsname}}} + +\protected\def\blx@imc@iffieldnums#1{% + \blx@imc@iffieldundef{#1} + {\@secondoftwo} + {\expandafter\expandafter + \expandafter\blx@imc@ifnumerals + \expandafter\expandafter + \expandafter{\csname abx@field@#1\endcsname}}} + +\protected\def\blx@imc@iffieldpages#1{% + \blx@imc@iffieldundef{#1} + {\@secondoftwo} + {\expandafter\expandafter + \expandafter\blx@imc@ifpages + \expandafter\expandafter + \expandafter{\csname abx@field@#1\endcsname}}} + +% {<chars>} +\newrobustcmd*{\DeclareNumChars}{% + \@ifstar + {\blx@defnumchars} + {\global\let\blx@donumchars\@empty + \blx@defnumchars}} + +\def\blx@defnumchars#1{% + \ifblank{#1} + {} + {\expandafter\blx@defdochars + \expandafter\blx@donumchars + \detokenize{#1}\relax}} + +% {<chars>} +\newrobustcmd*{\DeclareRangeChars}{% + \@ifstar + {\blx@defrangechars} + {\global\let\blx@dorangechars\@empty + \blx@defrangechars}} + +\def\blx@defrangechars#1{% + \ifblank{#1} + {} + {\expandafter\blx@defdochars + \expandafter\blx@dorangechars + \detokenize{#1}\relax}} + +\def\blx@defdochars#1#2{% + \ifx#2\relax + \else + \xdef#1{% + \expandonce#1\noexpand\do + \expandafter\noexpand\csname#2\endcsname}% + \expandafter\blx@defdochars + \expandafter#1% + \fi} + +% {<cstokens>} +\newrobustcmd*{\DeclareRangeCommands}{% + \@ifstar + {\blx@defrangecmds} + {\global\let\blx@dorangecmds\@empty + \blx@defrangecmds}} + +\def\blx@defrangecmds#1{% + \ifblank{#1} + {} + {\blx@defrangecmds@i#1&}} + +\def\blx@defrangecmds@i#1{% + \ifx% + \else + \gappto\blx@dorangecmds{\do#1}% + \expandafter\blx@defrangecmds@i + \fi} + +% {<cstokens>} +\newrobustcmd*{\DeclarePageCommands}{% + \@ifstar + {\blx@defpagecmds} + {\global\let\blx@dopagecmds\@empty + \blx@defpagecmds}} + +\def\blx@defpagecmds#1{% + \ifblank{#1} + {} + {\blx@defpagecmds@i#1&}} + +\def\blx@defpagecmds@i#1{% + \ifx% + \else + \gappto\blx@dopagecmds{\do#1}% + \expandafter\blx@defpagecmds@i + \fi} + +\DeclareNumChars{.} +\DeclareRangeChars{~,;-+/} +\DeclareRangeCommands{% + \ \,\space\nobreakspace\addspace\addnbspace + \addthinspace\addnbthinspace\addlowpenspace + \addhighpenspace\addlpthinspace\addhpthinspace + \adddotspace\addabbrvspace\&\psq\psqq + \bibrangedash\bibdatedash\textendash\textemdash\bibrangessep} +\DeclarePageCommands{\pno\ppno} -% Now do the loading: avoid any awkward stuff with the conditional by -% expanding first -\ifblx@load@version@legacy - \expandafter\@firstoftwo +% *{<code>} +\newrobustcmd*{\NumCheckSetup}{\appto\blx@hook@ifnum} +\newcommand*{\NumcheckSetup}{\NumCheckSetup} + +% [<pagination>][<postpro>]{<string>} +\newrobustcmd*{\blx@imc@mkpageprefix}[1][pagination]{% + \begingroup + \def\blx@tempa{\blx@mkpageprefix{page}}% + \iffieldundef{#1} + {} + {\iffieldequalstr{#1}{none} + {\def\blx@tempa{\blx@mkpageprefix@i}} + {\iffieldbibstring{#1} + {\edef\blx@tempa{\blx@mkpageprefix{\thefield{#1}}}} + {\blx@warning@entry{% + Unknown pagination type '\strfield{#1}'}}}}% + \@ifnextchar[%] + {\blx@tempa} + {\blx@tempa[\@firstofone]}} + +\protected\long\def\blx@mkpageprefix#1[#2]#3{% + \ifnumeral{#3} + {\bibstring{#1}\ppspace} + {\ifnumerals{#3} + {\bibstring{#1s}\ppspace} + {\def\pno{\bibstring{#1}}% + \def\ppno{\bibstring{#1s}}}}% + \blx@mkpageprefix@i[#2]{#3}} + +\long\def\blx@mkpageprefix@i[#1]#2{#1{#2}\endgroup} + +% [<pagination>][<postpro>]{<string>} +\newrobustcmd*{\blx@imc@mkpagetotal}[1][bookpagination]{% + \begingroup + \def\blx@tempa{\blx@mkpagetotal{page}}% + \iffieldundef{#1} + {} + {\iffieldequalstr{#1}{none} + {\def\blx@tempa{\blx@mkpagetotal@i}} + {\iffieldbibstring{#1} + {\edef\blx@tempa{\blx@mkpagetotal{\thefield{#1}}}} + {\blx@warning@entry{% + Unknown pagination type '\strfield{#1}'}}}}% + \@ifnextchar[%] + {\blx@tempa} + {\blx@tempa[\@firstofone]}} + +\protected\long\def\blx@mkpagetotal#1[#2]#3{% + \ifnumeral{#3} + {\setbox\@tempboxa=\hbox{% + \blx@tempcnta0#3\relax + \ifnum\blx@tempcnta=\@ne + \aftergroup\@firstoftwo + \else + \aftergroup\@secondoftwo + \fi}% + {#2{#3}\ppspace\bibstring{#1}} + {#2{#3}\ppspace\bibstring{#1s}}} + {\def\pno{\bibstring{#1}}% + \def\ppno{\bibstring{#1s}}% + #2{#3}}% + \endgroup} + +\long\def\blx@mkpagetotal@i[#1]#2{#1{#2}\endgroup} + +\newcounter{mincomprange} +\newcounter{maxcomprange} +\newcounter{mincompwidth} +\setcounter{mincomprange}{10} +\setcounter{maxcomprange}{100000} +\setcounter{mincompwidth}{1} +\def\abx@rangeproclimit{100000} + +% {<rangefield>} +\newcommand*{\rangelen}[1]{% + \ifcsdef{abx@range@#1} + {\csuse{abx@range@#1}} + {}} + +\let\frangelen\rangelen % Legacy name for \rangelen + +% <*>[<postpro>]{<string>} +\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@value{\appto\blx@tempa}% + \let\blx@range@out@delim\blx@range@out@value + \let\blx@range@split\blx@comprange@split + \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@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@value{#1\bibrangedash}} + {\ifblank{#1} + {\blx@range@out@value{\bibrangedash#2}} + {\blx@comprange@check{#1}{#2}}}}} + +\def\blx@comprange@hyphen#1-#2-#3&{% + \ifblank{#3} + {\blx@comprange@abort} + {\ifblank{#2} + {\ifblank{#1} + {\let\blx@tempb\@empty} + {\def\blx@tempb{#1}}% + \blx@comprange@hyphen@i#3&} + {\ifblank{#1} + {\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@value + \expandafter{\blx@tempb\bibrangedash}} + {\notblank{#1} + {\ifdefempty\blx@tempb + {\blx@range@out@value{\bibrangedash#1}} + {\expandafter\blx@comprange@check + \expandafter{\blx@tempb}{#1}}} + {\blx@comprange@hyphen@i#2&}}} + +\def\blx@comprange@check#1#2{% + \blx@imc@ifinteger{#1} + {\blx@imc@ifinteger{#2} + {\blx@comprange@comp{#1}{#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}% + \def\blx@tempc{#2}% + \let\blx@tempd\blx@tempc + \ifnum\c@maxcomprange<\abx@rangeproclimit\relax + \numdef\blx@tempe\abx@rangeproclimit + \else + \numdef\blx@tempe\c@maxcomprange + \fi + \blx@tempcntc=\blx@tempe\relax + \ifnum + \ifnum\c@mincompwidth<1\space1\fi + \ifnum\c@maxcomprange<10\space1\fi + \ifnum\c@mincomprange<\blx@tempb\space\else1\fi + \ifnum\blx@tempb<\numexpr\blx@tempcntc*10\relax\else1\fi + 0=\z@ + \expandafter\blx@comprange@comp@div + \else + \expandafter\blx@comprange@end + \fi} + +\def\blx@comprange@end{% + \numdef\blx@tempb\blx@tempb + \ifnum\blx@tempe>\c@maxcomprange\relax + \numdef\blx@tempc\blx@tempc + \else + \numdef\blx@tempc\blx@tempd + \fi + \edef\blx@tempb{% + \blx@range@out@value{\blx@tempb\noexpand\bibrangedash\blx@tempc}}% + \blx@tempb} + +\def\blx@comprange@comp@div{% + \unless\ifnum\blx@tempb<\blx@tempcntc + \blx@tempcnta\blx@tempb\relax + \blx@tempcntb\blx@tempc\relax + \divide\blx@tempcnta\blx@tempcntc + \divide\blx@tempcntb\blx@tempcntc + \ifnum\blx@tempcnta=\blx@tempcntb + \edef\blx@tempd{\expandafter\@gobble\blx@tempd}% + \numdef\blx@tempe\blx@tempcntc + \fi + \fi + \divide\blx@tempcntc10\relax + \ifnum + \ifnum\blx@tempcntc<10 1\fi + \ifnum\blx@tempcntc>\c@mincompwidth\else 1\fi + 0=\z@ + \expandafter\blx@comprange@comp@div + \else + \expandafter\blx@comprange@end + \fi} + +\def\blx@range@chunk#1{% + \blx@range@chunk@semcol#1;&} + +\def\blx@range@chunk@semcol#1;#2&{% + \notblank{#1} + {\blx@range@chunk@comma#1,&} + {}% + \notblank{#2} + {\notblank{#1}{\blx@range@out@delim{\bibrangessep}}{}% + \blx@range@chunk@semcol#2&} + {}} + +\def\blx@range@chunk@comma#1,#2&{% + \notblank{#1} + {\blx@range@chunk@sep#1\bibrangessep&} + {}% + \notblank{#2} + {\notblank{#1}{\blx@range@out@delim{\bibrangessep}}{}% + \blx@range@chunk@comma#2&} + {}} + +\def\blx@range@chunk@sep#1\bibrangessep#2&{% + \notblank{#1} + {\expandafter\blx@range@split + \expandafter{\@firstofone#1}} + {}% + \notblank{#2} + {\notblank{#1}{\blx@range@out@delim{\bibrangessep}}{}% + \blx@range@chunk@sep#2&} + {}} + +% <*>[<postpro>]{<string>} +\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@value{\appto\blx@tempa}% + \let\blx@range@out@delim\blx@range@out@value + \let\blx@range@split\blx@firstpage@split + \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@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@value{\bibrangedash#2}} + {\blx@range@out@value{#1}}}} + +\def\blx@firstpage@hyphen#1-#2-#3&{% + \ifblank{#3} + {\blx@firstpage@abort} + {\ifblank{#1} + {\ifblank{#2} + {\blx@firstpage@hyphen@i#3&} + {\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@value{\bibrangedash#1}}} + +\newcommand*{\ppspace}{\addnbspace} +\newcommand*{\sqspace}{\addnbspace} + +\newrobustcmd*{\RN}[1]{% + \begingroup + \expandafter\RNfont + \expandafter{\romannumeral#1}% + \endgroup} +\newrobustcmd*{\Rn}[1]{% + \begingroup + \expandafter\Rnfont + \expandafter{\romannumeral#1}% + \endgroup} + +\newcommand*{\RNfont}{\uppercase} +\newcommand*{\Rnfont}{} + +% Delimiter interface + +% [<contextname, ...>]{<name, ...>}{<code>} +\newrobustcmd*{\DeclareDelimFormat}{% + \@ifstar + {\blx@declaredelimclear} + {\blx@declaredelim}} + +\newrobustcmd*{\blx@declaredelimclear}[3][]{% + \def\do##1{\global\cslet{blx@printdelim@##1@#2}=\undefined}% + \dolistcsloop{blx@declaredelimcontexts@#2}% + \ifblank{#1} + {\blx@declaredelim{#2}{#3}} + {\blx@declaredelim[#1]{#2}{#3}}} + +\newrobustcmd*{\blx@declaredelim}[3][]{% + \ifblank{#1} + {\blx@declaredelim@i{}{}{#2}{#3}} + {\def\do##1{% + \listcsgadd{blx@declaredelimcontexts@#2}{##1}% + \blx@declaredelim@i{blx@printdelim@##1@}{##1}{#2}{#3}} + \docsvlist{#1}}}% + +\def\blx@declaredelim@i#1#2#3#4{% + \begingroup + \def\do##1{% + \ifcsdef{#1##1} + {\blx@warn@delimdeclare{##1}{#2}} + {}% + \csgdef{#1##1}{#4}}% + \docsvlist{#3} + \endgroup} + +\def\blx@delimcontext{none} +\newcommand*{\printdelim}[2][]{% + \ifblank{#1} + {\ifcsdef{blx@printdelim@\blx@delimcontext @#2} + {\csuse{blx@printdelim@\blx@delimcontext @#2}} + {\ifcsdef{#2}% fall back on legacy macros + {\csuse{#2}} + {\blx@warn@delimuse{#2}{*}}}} + {\ifcsdef{blx@printdelim@#1@#2} + {\csuse{blx@printdelim@#1@#2}} + {\blx@warn@delimuse{#2}{#1}}}} + +\newcommand*{\delimcontext}[1]{% + \edef\blx@delimcontext{#1}} + +% {<init>}{<entrytype>} +\protected\def\blx@imc@usedriver#1#2{% + \begingroup + \let\finentry\blx@finentry@usedrv + \let\newblock\relax + \let\abx@macro@bibindex\@empty + \let\abx@macro@pageref\@empty + \csuse{blx@hook@bbxinit}#1% + \delimcontext{bib}% + \blx@beglangbib + \blx@driver{#2}% + \blx@endlangbib + \endgroup} + +% Punctuation + +\protected\def\blx@initunit{% + \global\togglefalse{blx@block}% + \global\togglefalse{blx@unit}% + \global\togglefalse{blx@insert}% + \global\togglefalse{blx@lastins}% + \global\togglefalse{blx@keepunit}% + \global\let\blx@unitpunct\newunitpunct + \blx@imc@resetpunctfont} + +\def\blx@begunit{% + \toggletrue{blx@tempa}% + \iftoggle{blx@insert} + {\iftoggle{blx@unit} + {\begingroup + \let\blx@begunit\@empty + \let\blx@endunit\@empty + \let\blx@endnounit\@empty + \blx@unitpunct\blx@postpunct + \endgroup + \global\togglefalse{blx@unit}% + \togglefalse{blx@tempa}} + {\blx@postpunct}% + \iftoggle{blx@block} + {\begingroup + \let\blx@begunit\@empty + \let\blx@endunit\@empty + \let\blx@endnounit\@empty + \newblockpunct + \endgroup + \global\togglefalse{blx@block}% + \togglefalse{blx@tempa}} + {}} + {}% + \blx@postpunct + \blx@imc@resetpunctfont + \iftoggle{blx@tempa} + {} + {\global\togglefalse{blx@insert}}% + \blx@leavevmode + \begingroup} + +\def\blx@endunit{% + \endgroup + \global\toggletrue{blx@insert}% + \global\toggletrue{blx@lastins}} + +\def\blx@nounit{% + \global\togglefalse{blx@lastins}} + +\def\blx@endnounit{% + \endgroup\blx@nounit} + +\protected\def\blx@imc@newblock{% + \global\toggletrue{blx@block}}% + +\protected\def\blx@imc@newunit{% + \iftoggle{blx@keepunit} + {} + {\global\let\blx@unitpunct\newunitpunct + \global\toggletrue{blx@unit}}} + +\protected\def\blx@imc@setunit{% + \@ifstar\blx@setunit@i\blx@setunit} + +\long\def\blx@setunit#1{% + \iftoggle{blx@keepunit} + {} + {\long\gdef\blx@unitpunct{#1}% + \global\toggletrue{blx@unit}}} + +\def\blx@setunit@i{% + \iftoggle{blx@lastins} + {\blx@setunit} + {\@gobble}} + +\protected\def\blx@imc@printunit{% + \@ifstar\blx@printunit@i\blx@printunit} + +\def\blx@printunit#1{% + \long\gdef\blx@unitpunct{#1\global\togglefalse{blx@keepunit}}% + \global\toggletrue{blx@keepunit}% + \global\toggletrue{blx@unit}} + +\def\blx@printunit@i{% + \iftoggle{blx@lastins} + {\blx@printunit} + {\@gobble}} + +\protected\def\blx@imc@finentry{% + \unspace\finentrypunct + \blx@postpunct + \blx@initunit} + +\protected\def\blx@finentry@usedrv{% + \blx@setunit\relax} + +\protected\def\blx@finentry@inset{% + \blx@setunit\entrysetpunct + \global\toggletrue{blx@block}} + +\blx@regimcs{% + \ifdriver \thefield \strfield \csfield \usefield \thelist \strlist \thename \strname + \clearfield \clearlist \clearname \restorefield \restorelist \restorename + \ifcategory \ifentrycategory \ifkeyword \ifentrykeyword + \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 \iffirstcitekey \iflastcitekey + \ifnameequalcs \ifnameequals \ifnamesequal \ifnameundef \ifnamexref + \iffirstonpage \ifsamepage \savefield \savefieldcs \savelist + \savelistcs \savename \savenamecs \usedriver + \ifinteger \ifnumeral \ifnumerals \ifpages + \iffieldint \iffieldnum \iffieldnums \iffieldpages + \mkpageprefix \mkpagetotal + \newblock \newunit \setunit \printunit \finentry} + +\appto\blx@blxinit{% + \def\ifnatbibmode{\iftoggle{blx@natbib}}% + \def\ifcitation{\iftoggle{blx@citation}}% + \def\ifbibliography{\iftoggle{blx@bibliography}}% + \def\ifciteindex{\iftoggle{blx@citeindex}}% + \def\ifbibindex{\iftoggle{blx@bibindex}}% + \def\iffootnote{\iftoggle{blx@footnote}}% + \def\ifuseprefix{\iftoggle{blx@useprefix}}% + \def\ifterseinits{\iftoggle{blx@terseinits}}% + \def\iffirstinits{\iftoggle{blx@giveninits}}% legacy name for \ifgiveninits + \def\ifgiveninits{\iftoggle{blx@giveninits}}% + \def\ifcrossrefsource{\iftoggle{abx@bool@crossrefsource}}% + \def\ifxrefsource{\iftoggle{abx@bool@xrefsource}}% + \def\ifsingletitle{\iftoggle{abx@bool@singletitle}}% + \def\ifuniquetitle{\iftoggle{abx@bool@uniquetitle}}% + \def\ifuniqueprimaryauthor{\iftoggle{abx@bool@uniqueprimaryauthor}}% + \def\ifandothers#1{\iftoggle{abx@bool@more#1}}% + \protected\def\pno{\bibstring{page}}% + \protected\def\ppno{\bibstring{pages}}% + \let\nopp\relax + \protected\def\psq{\sqspace\bibstring{sequens}}% + \protected\def\psqq{\sqspace\bibstring{sequentes}}} + +% Make sure that commands which might pop up inside an \edef will be defined +% as something. If they are taken \AtBeginDocument then we assume that all will +% be well. If not, then provide a definition which will give an error outside +% of a citation context. +\AtBeginDocument{% + \protected\def\do#1{% + \ifdefined#1% + \else + \protected\def#1{\ERROR}% + \fi + }% + \docsvlist{\pno,\ppno,\nopp,\psq,\psqq}% +} + +%% Global formatting hooks + +% capitalization + +% {<text>} +\newrobustcmd{\MakeCapital}[1]{% + \begingroup + \blx@mkcp@init + \protected@edef\blx@tempa{#1}% + \expandafter\blx@mkcp@parse\blx@tempa\@empty\blx@mkcp@end} + +\def\blx@mkcp@init{% + \def\blx@mkcp@iec{\noexpand\blx@mkcp@iec\noexpand}% + \def\blx@mkcp@bbl{\noexpand\blx@mkcp@bbl\noexpand}% + \def\blx@mkcp@sgl{\noexpand\blx@mkcp@sgl\noexpand}% + \def\blx@mkcp@dbl{\noexpand\blx@mkcp@dbl\noexpand}% + \def\do##1{\def##1{\blx@mkcp@sgl##1}}\abx@dosingleaccents + \def\do##1{\def##1{\blx@mkcp@dbl##1}}\abx@dodoubleaccents + \def\IeC##1{\blx@mkcp@iec\IeC{##1}}% + \def\@tabacckludge##1{% + \expandafter\blx@mkcp@sgl\csname\string##1\endcsname}} + +\begingroup +\catcode`\"=\active +\gappto\blx@mkcp@init{% + \ifnum\catcode`\"=\active + \def"#1{\blx@mkcp@bbl"\noexpand#1}% + \fi} +\endgroup + +\def\blx@mkcp@parse{% + \futurelet\@let@token\blx@mkcp@eval} + +\long\def\blx@mkcp@eval{% + \ifx\@let@token\blx@mkcp@iec + \expandafter\blx@mkcp@getiec + \fi + \ifx\@let@token\blx@mkcp@bbl + \expandafter\blx@mkcp@gettwo + \fi + \ifx\@let@token\blx@mkcp@sgl + \expandafter\blx@mkcp@gettwo + \fi + \ifx\@let@token\blx@mkcp@dbl + \expandafter\blx@mkcp@getthree + \fi + \blx@mkcp@case} + +\def\blx@mkcp@getiec#1\blx@mkcp@case#2#3#4{% + \blx@mkcp@case{#2#3{#4}}} + +\def\blx@mkcp@gettwo#1\blx@mkcp@case#2#3#4{% + \blx@mkcp@case{#2#3#4}} + +\def\blx@mkcp@getthree#1\blx@mkcp@case#2#3#4#5{% + \blx@mkcp@case{#2#3#4#5}} + +\long\def\blx@mkcp@case#1{% + \begingroup + \def\i{I}\def\j{J}% + \def\do##1##2{\let##1##2\do}% + \expandafter\do\@uclclist\relax{\relax\@gobble}% + \uppercase{\protected@edef\blx@tempa{\endgroup\blx@mkcp@end#1}}% + \blx@tempa} + +\protected\long\def\blx@mkcp@end#1\blx@mkcp@end{% + \let\blx@mkcp@iec\noexpand + \let\blx@mkcp@bbl\noexpand + \let\blx@mkcp@sgl\noexpand + \let\blx@mkcp@dbl\noexpand + \protected@edef\blx@tempa{\endgroup#1}% + \blx@tempa} + +\def\abx@dosingleaccents{% + \do\"\do\'\do\`\do\^\do\~\do\=\do\.% + \do\H\do\b\do\c\do\d\do\r\do\u\do\v} +\def\abx@dodoubleaccents{% + \do\t} + +% {<text>} +\newrobustcmd*{\MakeSentenceCase}{% + \@ifstar\blx@mksc@i\blx@mksc@ii} + +% if we have option language=<lang>, then this overrides +% langid field, otherwise, we try than, otherwise try main doc lang +\def\blx@mksc@i{% + \ifdef\blx@forcelanguagename + {\xifinlist\blx@forcelanguagename\blx@cmksc@lang + {\blx@mksc@ii} + {\@firstofone}} + {\ifdef\abx@field@langid + {\xifinlist\abx@field@langid\blx@cmksc@lang + {\blx@mksc@ii} + {\@firstofone}} + {\xifinlist\bbl@main@language\blx@cmksc@lang + {\blx@mksc@ii} + {\@firstofone}}}} + +\long\def\blx@mksc@ii#1{% + \begingroup + \let\blx@tempa\@empty + \let\blx@tempb\@empty + \blx@mksc@init + \protected@edef\@tempa{#1}% + \expandafter\blx@mksc@parse\@tempa\blx@mksc@end} + +\def\blx@mksc@init{% + \blx@mkcp@init + \def\blx@mkcp@nil{\noexpand\blx@mkcp@nil\noexpand}% + \def\i{\blx@mkcp@nil\i}\def\j{\blx@mkcp@nil\j}% + \def\do##1{% + \ifx##1\relax + \else + \def##1{\blx@mkcp@nil##1}% + \expandafter\do + \fi}% + \expandafter\do\@uclclist\relax} + +\def\blx@mksc@parse{% + \futurelet\@let@token\blx@mksc@eval} + +\def\blx@mksc@eval{% + \ifx\@let@token\blx@mksc@end + \expandafter\blx@mksc@end + \fi + \ifx\@let@token\bgroup + \expandafter\blx@mksc@group + \fi + \ifx\@let@token\@sptoken + \expandafter\blx@mksc@space + \fi + \ifx\@let@token\blx@mkcp@nil + \expandafter\blx@mksc@getone + \fi + \ifx\@let@token\blx@mkcp@iec + \expandafter\blx@mksc@getiec + \fi + \ifx\@let@token\blx@mkcp@bbl + \expandafter\blx@mksc@gettwo + \fi + \ifx\@let@token\blx@mkcp@sgl + \expandafter\blx@mksc@gettwo + \fi + \ifx\@let@token\blx@mkcp@dbl + \expandafter\blx@mksc@getthree + \fi + \if\noexpand\@let@token\relax + \expandafter\blx@mksc@cs + \fi + \blx@mksc@other} + +\def\blx@mksc@end#1\blx@mksc@end{% + \blx@mksc@eject + \let\blx@mkcp@nil\noexpand + \let\blx@mkcp@iec\noexpand + \let\blx@mkcp@bbl\noexpand + \let\blx@mkcp@sgl\noexpand + \let\blx@mkcp@dbl\noexpand + \let\MakeUppercase\relax + \let\MakeLowercase\relax + \protected@edef\blx@tempa{\endgroup\blx@tempa}% + \blx@tempa} + +\long\def\blx@mksc@group#1\blx@mksc@other#2{% + \futurelet\@let@token\blx@mksc@ingroup#2&{#2}% + \blx@mksc@endhead + \blx@mksc@parse} + +\long\def\blx@mksc@ingroup#1{% + \if\noexpand\@let@token\relax + \blx@mksc@locase{{#2}}% + \else + \blx@mksc@nocase{{#2}}% + \fi} + +\def\blx@mksc@space{\def\blx@mksc@space##1\blx@mksc@other} +\csuse{blx@mksc@space} {% + \blx@mksc@anycase{ }% + \blx@mksc@endhead + \blx@mksc@parse} + +\long\def\blx@mksc@cs#1\blx@mksc@other#2{% + \ifcat\noexpand~\noexpand#2% + \blx@mksc@locase{#2}% + \else + \blx@mksc@nocase{#2}% + \fi + \blx@mksc@endhead + \blx@mksc@parse} + +\def\blx@mksc@getiec#1\blx@mksc@other#2#3#4{% + \blx@mksc@other{#2#3{#4}}} + +\def\blx@mksc@getone#1\blx@mksc@other#2#3{% + \blx@mksc@other{#2#3}} + +\def\blx@mksc@gettwo#1\blx@mksc@other#2#3#4{% + \blx@mksc@other{#2#3#4}} + +\def\blx@mksc@getthree#1\blx@mksc@other#2#3#4#5{% + \blx@mksc@other{#2#3#4#5}} + +\long\def\blx@mksc@other#1{% + \blx@mksc@locase{#1}% + \blx@mksc@endhead + \blx@mksc@parse} + +\def\blx@mksc@locase{% + \appto\blx@tempb} + +\def\blx@mksc@nocase{% + \blx@mksc@eject + \appto\blx@tempa} + +\def\blx@mksc@anycase{% + \ifx\blx@tempb\@empty + \expandafter\appto + \expandafter\blx@tempa + \else + \expandafter\appto + \expandafter\blx@tempb + \fi} + +\def\blx@mksc@eject{% + \ifx\blx@tempb\@empty + \else + \eappto\blx@tempa{\noexpand\MakeLowercase{\expandonce\blx@tempb}}% + \let\blx@tempb\@empty + \fi} + +\def\blx@mksc@endhead{% + \ifx\blx@tempb\@empty + \else + \eappto\blx@tempa{\noexpand\MakeCapital{\expandonce\blx@tempb}}% + \let\blx@tempb\@empty + \fi + \let\blx@mksc@endhead\relax} + +% {<language,language,...>} +\newrobustcmd*{\DeclareCaseLangs}{% + \@ifstar + {\blx@defcaselangs} + {\global\let\blx@cmksc@lang\@empty + \blx@defcaselangs}} + +\def\blx@defcaselangs#1{% + \ifblank{#1} + {} + {\forcsvlist{\listgadd\blx@cmksc@lang}{#1}}} + +\DeclareCaseLangs{% + american,british,canadian, + english,USenglish,UKenglish, + australian,newzealand} + +\newrobustcmd*{\ifcaselang}[1][]{% + \ifblank{#1} + {\xifinlist\blx@languagename\blx@cmksc@lang} + {\xifinlist{#1}\blx@cmksc@lang}} + +%% Main formatting commands +% The work by creating a \let alias: +% \abx@<class>@<entrytype>@<formatname> -> \blx@defformat@d +% for later use in \print* +% Then, \blx@defformat@d is defined by calling +% \def\blx@defformat@d#1{format body} + +% [<entrytype>]{<name>}{<definiton>} +\newrobustcmd*{\DeclareNameFormat}{% + \@ifstar + {\blx@defformat\blx@defnameformat{nfd}*} + {\blx@defformat\blx@defnameformat{nfd}{}}} + +\newrobustcmd*{\DeclareIndexNameFormat}{% + \@ifstar + {\blx@defformat\blx@defnameformat{nid}*} + {\blx@defformat\blx@defnameformat{nid}{}}} + +\newrobustcmd*{\DeclareListFormat}{% + \@ifstar + {\blx@defformat\blx@defplainformat{lfd}*} + {\blx@defformat\blx@defplainformat{lfd}{}}} +\newrobustcmd*{\DeclareIndexListFormat}{% + \@ifstar + {\blx@defformat\blx@defplainformat{lid}*} + {\blx@defformat\blx@defplainformat{lid}{}}} + +\newrobustcmd*{\DeclareFieldFormat}{% + \@ifstar + {\blx@defformat\blx@defplainformat{ffd}*} + {\blx@defformat\blx@defplainformat{ffd}{}}} +\newrobustcmd*{\DeclareIndexFieldFormat}{% + \@ifstar + {\blx@defformat\blx@defplainformat{fid}*} + {\blx@defformat\blx@defplainformat{fid}{}}} + +% {<macro>}{<class>}{<*>} +\def\blx@defformat#1#2#3{% + \@ifnextchar[%] + {\blx@defformat@i{#1}{#2}{#3}} + {\blx@defformat@i{#1}{#2}{#3}[*]}} + +% {<macro>}{<class>}{<*>}[<entrytype>]{<name>} +\def\blx@defformat@i#1#2#3[#4]#5{% + \notblank{#3} + {\blx@resetformat{#2}{#5}} + {}% + \def\blx@defformat@a{#2}% + \def\blx@defformat@b{#4}% + \blx@xsanitizeafter{\def\blx@defformat@c}{#5}% + \afterassignment\blx@defformat@ii + #1} + +\def\blx@defformat@ii{% + \expandafter\forcsvlist + \expandafter\blx@defformat@iii + \expandafter{\blx@defformat@b}} + +\def\blx@defformat@iii#1{% + \cslet{abx@\blx@defformat@a @#1@\blx@defformat@c}\blx@defformat@d} + +\def\blx@defplainformat{% + \long\def\blx@defformat@d##1} + +\def\blx@defnameformat{% + \long\def\blx@defformat@d##1} + +\def\blx@resetformat#1#2{% + \let\blx@saved@do\do + \def\do##1{\blx@resetformat@i{#1}{#2}{##1}}% + \blx@safe@actives + \abx@doentrytypes + \blx@rest@actives + \let\do\blx@saved@do} + +\def\blx@resetformat@i#1#2#3{% + \ifcsdef{abx@#1@#3@#2} + {\csundef{abx@#1@#3@#2}} + {}} + +% {<name>}{<name>} +\def\blx@letformat#1#2{% + \blx@safe@actives + \afterassignment\blx@rest@actives + \csletcs{#1}{#2}} + +% [aliastype]{aliasname}[formattype]{formatname} +\def\blx@defalias#1{% + \@ifnextchar[%] + {\blx@defalias@i{#1}} + {\blx@defalias@i{#1}[*]}} +\def\blx@defalias@i#1[#2]#3{% + \@ifnextchar[%] + {\blx@defalias@ii{#1}{#2}{#3}} + {\blx@defalias@ii{#1}{#2}{#3}[*]}} +\def\blx@defalias@ii#1#2#3[#4]#5{% + \blx@safe@actives + \afterassignment\blx@rest@actives + \csedef{abx@#1@#2@#3}{% + \expandonce{\csname abx@#1@#4@#5\endcsname}}} + + + +% {<macro>}{<class>}{<name>}{<field>} +\def\blx@getformat#1#2#3#4{% + \blx@safe@actives + \afterassignment\blx@rest@actives + \ifcsundef{abx@#2@\blx@imc@thefield{entrytype}@#3} + {\ifcsundef{abx@#2@*@#3} + {\ifcsundef{abx@#2@\blx@imc@thefield{entrytype}@#4} + {\ifcsundef{abx@#2@*@#4} + {\letcs#1{abx@#2@*@default}} + {\letcs#1{abx@#2@*@#4}}} + {\letcs#1{abx@#2@\blx@imc@thefield{entrytype}@#4}}} + {\letcs#1{abx@#2@*@#3}}} + {\letcs#1{abx@#2@\blx@imc@thefield{entrytype}@#3}}} + +% [<entrytype>]{<name>} +\newrobustcmd*{\savefieldformat}[2][*]{\blx@save{abx@ffd@#1@#2}} +\newrobustcmd*{\savelistformat}[2][*]{\blx@save{abx@lfd@#1@#2}} +\newrobustcmd*{\savenameformat}[2][*]{\blx@save{abx@nfd@#1@#2}} + +\newrobustcmd*{\restorefieldformat}[2][*]{\blx@restore{abx@ffd@#1@#2}} +\newrobustcmd*{\restorelistformat}[2][*]{\blx@restore{abx@lfd@#1@#2}} +\newrobustcmd*{\restorenameformat}[2][*]{\blx@restore{abx@nfd@#1@#2}} + +% [<entrytype>]{<name>}{<true>}{<false>} +\newrobustcmd*{\iffieldformatundef}[2][*]{\ifcsundef{abx@ffd@#1@#2}} +\newrobustcmd*{\iflistformatundef}[2][*]{\ifcsundef{abx@lfd@#1@#2}} +\newrobustcmd*{\ifnameformatundef}[2][*]{\ifcsundef{abx@nfd@#1@#2}} + +% [<entrytype>]{<alias>}[<entrytype>]{<name>} +\newrobustcmd*{\DeclareNameAlias}{\blx@defalias{nfd}} +\newrobustcmd*{\DeclareIndexNameAlias}{\blx@defalias{nid}} + +\newrobustcmd*{\DeclareListAlias}{\blx@defalias{lfd}} +\newrobustcmd*{\DeclareIndexListAlias}{\blx@defalias{lid}} + +\newrobustcmd*{\DeclareFieldAlias}{\blx@defalias{ffd}} +\newrobustcmd*{\DeclareIndexFieldAlias}{\blx@defalias{fid}} + +% [<format>]{<text>} +\newrobustcmd{\blx@imc@printtext}[2][]{% + \ifblank{#2} + {\blx@nounit} + {\ifblank{#1} + {\let\blx@theformat\@firstofone} + {\blx@getformat\blx@theformat{ffd}{#1}{}}% + \ifdefvoid\blx@theformat + {\blx@nounit} + {\blx@begunit + \blx@theformat{#2}% + \blx@endunit}}} + +% [<format>]{<field>} +\newrobustcmd*{\blx@imc@printfield}[2][]{% + \blx@imc@iffieldundef{#2} + {\blx@nounit} + {\blx@getformat\blx@theformat{ffd}{#1}{#2}% + \ifdefvoid\blx@theformat + {\blx@nounit} + {\blx@begunit + \edef\currentfield{#2}% + \expandafter\expandafter + \expandafter\blx@theformat + \expandafter\expandafter + \expandafter{\csname abx@field@#2\endcsname}% + \blx@endunit}}} + +% [<format>]{<field>} +\newcommand*{\blx@imc@indexfield}[2][]{% + \blx@imc@iffieldundef{#2} + {} + {\blx@getformat\blx@theformat{fid}{#1}{#2}% + \ifdefvoid\blx@theformat + {} + {\begingroup + \edef\currentfield{#2}% + \letcs\blx@tempa{abx@field@#2}% + \expandafter\blx@theformat\expandafter{\blx@tempa}% + \endgroup}}} + +% [<format>]{<file>} +\newrobustcmd*{\blx@imc@printfile}[2][]{% + \iftoggle{blx@loadfiles} + {\IfFileExists{#2} + {\listxadd\blx@list@req@edit{#2}% + \blx@imc@printtext[#1]{\input{#2}\unspace}} + {\blx@nounit}} + {\blx@nounit}} + +% {<macro>}[<format>][<start>-<stop>] +% => <macro>{<format>}{<start>}{<stop>} +\def\blx@listargs#1{% + \@ifnextchar[%] + {\blx@listargs@i{#1}} + {#1{}{}{}}} + +\def\blx@listargs@i#1[#2]{% + \@ifnextchar[%] + {\blx@listargs@ii{#1}{#2}} + {#1{#2}{}{}}} + +\def\blx@listargs@ii#1#2[#3]{% + \blx@listargs@iii{#1}{#2}#3&} + +\def\blx@listargs@iii#1#2#3-#4&{% + #1{#2}{#3}{#4}} + +% [<format>][<start>-<stop>]{<namelist>} +\protected\def\blx@imc@printnames{% + \blx@listargs\blx@printnames} + +% {<format>}{<start>}{<stop>}{<namelist>} +\def\blx@printnames#1#2#3#4{% + \blx@imc@ifnameundef{#4} + {\blx@nounit} + {\blx@getformat\blx@theformat{nfd}{#1}{#4}% + \ifdefvoid\blx@theformat + {\blx@nounit} + {\blx@begunit + \blx@namesetup{#2}{#3}{#4}% + \expandafter\blx@nameparser\blx@thedata{}&% + \blx@endunit}}} + +\def\blx@namesetup#1#2#3{% + \def\currentname{#3}% + \c@listcount\@ne + \c@listtotal\csname c@#3\endcsname + \blx@namesetup@i{#3}% + \ifblank{#1} + {\c@liststart\@ne} + {\ifnum#1<\@ne + \c@liststart\@ne + \else + \c@liststart#1\relax + \fi}% + \ifblank{#2} + {\c@liststop\c@listtotal + \ifnum\c@liststop>\c@maxnames + \c@liststop\c@minnames + \ifnum\c@uniquelist>\c@liststop + \c@liststop\c@uniquelist + \fi + \fi} + {\ifnum#2>\c@listtotal + \c@liststop\c@listtotal + \else + \ifnum#2<\@ne + \c@liststop\@ne + \else + \c@liststop#2\relax + \fi + \fi}% + \blx@namecodes} + +\def\blx@namesetup@i#1{% + \expandafter\expandafter + \expandafter\blx@namesetup@ii\csname abx@name@#1\endcsname} + +\def\blx@namesetup@ii#1#2{% + \c@uniquelist\z@ + \ifblank{#1} + {} + {\setkeys{blx@opt@namelist}{#1}}% + \def\blx@thedata{#2}} + +% Per-namelist options +\define@key{blx@opt@namelist}{uniquelist}{\c@uniquelist#1\relax} +\define@key{blx@opt@namelist}{useprefix}{\settoggle{blx@useprefix}{#1}} +\define@key{blx@opt@namelist}{sortnamekeyscheme}{\def\blx@refcontext@sortingnamekey{#1}} + +% Per-name options +\define@key{blx@opt@name}{uniquename}{\c@uniquename#1\relax} +\define@key{blx@opt@name}{hash}{\edef\abx@field@hash{\detokenize{#1}}} +\define@key{blx@opt@name}{useprefix}{\settoggle{blx@useprefix}{#1}} +\define@key{blx@opt@name}{sortnamekeyscheme}{\def\blx@refcontext@sortingnamekey{#1}} + +\newrobustcmd*{\bibinitperiod}{\adddot} +\newrobustcmd*{\bibinitdelim}{\addnbspace} +\newrobustcmd*{\bibinithyphendelim}{.\mbox{-}} +\newrobustcmd*{\bibnamedelima}{\addhighpenspace} +\newrobustcmd*{\bibnamedelimb}{\addlowpenspace} +\newrobustcmd*{\bibnamedelimc}{\addhighpenspace} +\newrobustcmd*{\bibnamedelimd}{\addlowpenspace} +\newrobustcmd*{\bibnamedelimi}{\addnbspace} + +% [<format>][<start>-<stop>]{<namelist>} +\protected\def\blx@imc@indexnames{% + \blx@listargs\blx@indexnames} + +% {<format>}{<start>}{<stop>}{<namelist>} +\def\blx@indexnames#1#2#3#4{% + \blx@imc@ifnameundef{#4} + {} + {\blx@getformat\blx@theformat{nid}{#1}{#4}% + \ifdefvoid\blx@theformat + {} + {\begingroup + \blx@namesetup{#2}{#3}{#4}% + \blx@indexnamesetup + \expandafter\blx@nameparser\blx@thedata{}&% + \endgroup}}} + +\def\blx@indexnamesetup{% + \let\bibinitperiod\bibindexinitperiod + \let\bibinitdelim\bibindexinitdelim + \let\bibinithyphendelim\bibindexinithyphendelim + \let\bibnamedelima\bibindexnamedelima + \let\bibnamedelimb\bibindexnamedelimb + \let\bibnamedelimc\bibindexnamedelimc + \let\bibnamedelimd\bibindexnamedelimd + \let\bibnamedelimi\bibindexnamedelimi} + +% {<name1>}{<name2>}{...} +\long\def\blx@nameparser#1{% + \ifblank{#1} + {\blx@namebreak} + {\ifnum\c@listcount<\c@liststart + \else + \blx@nameparser@i#1% + \fi + \advance\c@listcount\@ne + \ifnum\c@listcount>\c@liststop + \expandafter\blx@namebreak + \fi + \blx@nameparser}} + +% {name opts}{nameparts} +\long\def\blx@nameparser@i#1#2{% + \ifblank{#1} + {} + {\setkeys{blx@opt@name}{#1}}% + % reset all the nameparts to empty between names + \def\do##1{% + \cslet{namepart##1}\@empty + \cslet{namepart##1i}\@empty}% + \expandafter\docsvlist\expandafter{\blx@datamodel@constant@nameparts}% + \setkeys{blx@opt@namepart}{#2}% Extract nameparts information + % Still pass the nameparts forward for backwards compat + % When \nameparts is finally removed, remove the "{2}" and remove the + % arg to \blx@defformat@d in def of \blx@defnameformat + \blx@theformat{#2}} + +\long\def\blx@namebreak#1&{} + +% [<format>][<start>-<stop>]{<plainlist>} +\protected\def\blx@imc@printlist{% + \blx@listargs\blx@printlist} + +% {<format>}{<start>}{<stop>}{<plainlist>} +\def\blx@printlist#1#2#3#4{% + \blx@imc@iflistundef{#4} + {\blx@nounit} + {\blx@getformat\blx@theformat{lfd}{#1}{#4}% + \ifdefvoid\blx@theformat + {\blx@nounit} + {\blx@begunit + \blx@listsetup{#2}{#3}{#4}% + \expandafter\blx@listparser\blx@thedata{}&% + \blx@endunit}}} + +\def\blx@listsetup#1#2#3{% + \def\currentlist{#3}% + \c@listcount\@ne + \expandafter\c@listtotal\csname c@#3\endcsname + \letcs\blx@thedata{abx@list@#3}% + \ifblank{#1} + {\c@liststart\@ne} + {\ifnum#1<\@ne + \c@liststart\@ne + \else + \c@liststart#1\relax + \fi}% + \ifblank{#2} + {\c@liststop\c@listtotal + \ifnum\c@listtotal>\c@maxitems + \c@liststop\c@minitems + \fi} + {\ifnum#2>\c@listtotal + \c@liststop\c@listtotal + \else + \ifnum#2<\@ne + \c@liststop\@ne + \else + \c@liststop#2\relax + \fi + \fi}} + +% [<format>][<start>-<stop>]{<plainlist>} +\protected\def\blx@imc@indexlist{% + \blx@listargs\blx@indexlist} + +% {<format>}{<start>}{<stop>}{<plainlist>} +\def\blx@indexlist#1#2#3#4{% + \blx@imc@iflistundef{#4} + {} + {\blx@getformat\blx@theformat{lid}{#1}{#4}% + \ifdefvoid\blx@theformat + {} + {\begingroup + \blx@listsetup{#2}{#3}{#4}% + \expandafter\blx@listparser\blx@thedata{}&% + \endgroup}}} + +% {<item1>}{<item2>}{...} +\long\def\blx@listparser#1{% + \ifblank{#1} + {\blx@listbreak} + {\ifnum\c@listcount<\c@liststart + \else + \blx@theformat{#1}% + \fi + \advance\c@listcount\@ne + \ifnum\c@listcount>\c@liststop + \expandafter\blx@listbreak + \fi + \blx@listparser}} + +\long\def\blx@listbreak#1&{} + +% <*>{<key>}{<code>} +\protected\def\blx@imc@entrydata{% + \@ifstar + {\blx@xsanitizeafter{\blx@imc@entrydata@i\blx@saveentry}} + {\blx@xsanitizeafter{\blx@imc@entrydata@i{}}}} + +\long\def\blx@imc@entrydata@i#1#2#3{% + \blx@getrefcontext{#2}% + \blx@ifdata{#2} + {\begingroup + #1% + \blx@resetdata + \blx@getdata{#2}% + \blx@entrysetcount + \blx@setoptions@type\abx@field@entrytype + \blx@setoptions@entry + \addtocounter{instcount}\@ne + \blx@execute + \blx@beglangbib#3\blx@endlangbib + \endgroup} + {}} + +\protected\def\blx@imc@entryset#1#2{% + \blx@imc@iffieldundef{entrykey} + {} + {\begingroup + \long\def\blx@entryset@precode{#1}% + \long\def\blx@entryset@postcode{#2}% + \let\finentry\blx@finentry@inset + \let\do\blx@entryset + \blx@imc@docsvfield{entryset}% + \endgroup}} + +\def\blx@entryset#1{% + \blx@ifdata{#1} + {\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}}% + \blx@entryset@postcode + \endgroup} + {}% + \let\do\blx@entryset@i} + +\def\blx@entryset@i#1{% + \blx@ifdata{#1} + {\begingroup + \blx@resetdata + \blx@getdata{#1}% + \blx@entrysetcount + \blx@setoptions@type\abx@field@entrytype + \blx@setoptions@entry + \addtocounter{instcount}\@ne + \blx@execute + \blx@beglangbib + \blx@begunit + \blx@entryset@precode + \blx@driver{\blx@imc@thefield{entrytype}} + \blx@entryset@postcode + \blx@endunit + \blx@endlangbib + \endgroup} + {\blx@nounit}} + +\blx@regimcs{% + \printtext \printfield \printlist \printnames \printfile + \indexfield \indexlist \indexnames \entrydata \entryset} + +%% Localization + +% [<wrapper>]{<string>} +\newrobustcmd*{\blx@imc@bibstring}[2][\@firstofone]{% + \blx@bibstring{#1}{\abx@str}{#2}} + +\newrobustcmd*{\blx@imc@biblstring}[2][\@firstofone]{% + \blx@bibstring{#1}{abx@lstr}{#2}} + +\newrobustcmd*{\blx@imc@bibsstring}[2][\@firstofone]{% + \blx@bibstring{#1}{abx@sstr}{#2}} + +\protected\def\blx@bibstring#1#2#3{% + \blx@begunit + \blx@hyphenreset + \let\bibstring\blx@imc@bibxstring + \let\biblstring\blx@imc@bibxlstring + \let\bibsstring\blx@imc@bibxsstring + \lowercase{\edef\blx@tempa{#3}}% + \ifcsundef{#2@\blx@tempa} + {\blx@warn@nostring\blx@tempa + \blx@endnounit} + {\blx@imc@ifcapital + {#1{\MakeCapital{\csuse{#2@\blx@tempa}}}} + {#1{\csuse{#2@\blx@tempa}}}% + \blx@endunit}} + +% [<wrapper>]{<string>} +\newrobustcmd*{\blx@imc@bibcpstring}[2][\@firstofone]{% + \blx@bibcpstring{#1}{\abx@str}{#2}} + +\newrobustcmd*{\blx@imc@bibcplstring}[2][\@firstofone]{% + \blx@bibcpstring{#1}{abx@lstr}{#2}} + +\newrobustcmd*{\blx@imc@bibcpsstring}[2][\@firstofone]{% + \blx@bibcpstring{#1}{abx@sstr}{#2}} + +\protected\def\blx@bibcpstring#1#2#3{% + \blx@begunit + \blx@hyphenreset + \let\bibstring\blx@imc@bibxstring + \let\biblstring\blx@imc@bibxlstring + \let\bibsstring\blx@imc@bibxsstring + \lowercase{\edef\blx@tempa{#3}}% + \ifcsundef{#2@\blx@tempa} + {\blx@warn@nostring\blx@tempa + \blx@endnounit} + {#1{\MakeCapital{\csuse{#2@\blx@tempa}}}% + \blx@endunit}} + +% [<wrapper>]{<string>} +\newrobustcmd*{\blx@imc@biblcstring}[2][\@firstofone]{% + \blx@biblcstring{#1}{\abx@str}{#2}} + +\newrobustcmd*{\blx@imc@biblclstring}[2][\@firstofone]{% + \blx@biblcstring{#1}{abx@lstr}{#2}} + +\newrobustcmd*{\blx@imc@biblcsstring}[2][\@firstofone]{% + \blx@biblcstring{#1}{abx@sstr}{#2}} + +\protected\def\blx@biblcstring#1#2#3{% + \blx@begunit + \blx@hyphenreset + \let\bibstring\blx@imc@bibxstring + \let\biblstring\blx@imc@bibxlstring + \let\bibsstring\blx@imc@bibxsstring + \lowercase{\edef\blx@tempa{#3}}% + \ifcsundef{#2@\blx@tempa} + {\blx@warn@nostring\blx@tempa + \blx@endnounit} + {#1{\MakeLowercase{\csuse{#2@\blx@tempa}}}% + \blx@endunit}} + +% [<wrapper>]{<string>} +\newrobustcmd*{\blx@imc@bibucstring}[2][\@firstofone]{% + \blx@bibucstring{#1}{\abx@str}{#2}} + +\newrobustcmd*{\blx@imc@bibuclstring}[2][\@firstofone]{% + \blx@bibucstring{#1}{abx@lstr}{#2}} + +\newrobustcmd*{\blx@imc@bibucsstring}[2][\@firstofone]{% + \blx@bibucstring{#1}{abx@sstr}{#2}} + +\protected\def\blx@bibucstring#1#2#3{% + \blx@begunit + \blx@hyphenreset + \let\bibstring\blx@imc@bibxstring + \let\biblstring\blx@imc@bibxlstring + \let\bibsstring\blx@imc@bibxsstring + \lowercase{\edef\blx@tempa{#3}}% + \ifcsundef{#2@\blx@tempa} + {\blx@warn@nostring\blx@tempa + \blx@endnounit} + {#1{\MakeUppercase{\csuse{#2@\blx@tempa}}}% + \blx@endunit}} + +% {<string>} +\def\blx@imc@bibxstring#1{% + \blx@bibxstring{\abx@str}{#1}} + +\def\blx@imc@bibxlstring#1{% + \blx@bibxstring{abx@lstr}{#1}} + +\def\blx@imc@bibxsstring#1{% + \blx@bibxstring{abx@sstr}{#1}} + +\def\blx@bibxstring#1#2{% + \ifcsundef{#1@#2} + {\protect\blx@warn@nostring{#2}} + {\csuse{#1@#2}}} + +% {<string>}{<true>}{<false>} +\def\blx@imc@ifbibstring#1{% + \ifcsundef{\abx@str @\detokenize{#1}} + {\@secondoftwo} + {\@firstoftwo}} + +\def\blx@imc@ifbibxstring#1{% + \blx@xsanitizeafter\ifcsundef{\abx@str @#1} + {\@secondoftwo} + {\@firstoftwo}} + +% {<field>}{<true>}{<false>} +\def\blx@imc@iffieldbibstring#1{% + \blx@imc@iffieldundef{#1} + {\@secondoftwo} + {\ifcsundef{\abx@str @\detokenize\expandafter + \expandafter\expandafter{% + \csname abx@field@#1\endcsname}} + {\@secondoftwo} + {\@firstoftwo}}} + +\blx@regimcs{% + \bibstring \biblstring \bibsstring + \bibxstring \bibxlstring \bibxsstring + \bibcpstring \bibcplstring \bibcpsstring + \biblcstring \biblclstring \biblcsstring + \bibucstring \bibuclstring \bibucsstring + \ifbibstring \ifbibxstring \iffieldbibstring} + +\let\blx@hook@uc\relax +\let\blx@hook@lc\relax + +\AtEndPreamble{% + \toggletrue{blx@tempa}% + \toggletrue{blx@tempb}% + \expandafter\patchcmd\csname MakeUppercase \endcsname + {\protected@edef} + {\blx@hook@uc\protected@edef} + {\togglefalse{blx@tempa}} + {}% + \expandafter\patchcmd\csname MakeLowercase \endcsname + {\protected@edef} + {\blx@hook@lc\protected@edef} + {\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{% + \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{% + \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}% + \do{references}% + \do{shorthands}% + \do{editor}% + \do{editors}% + \do{compiler}% + \do{compilers}% + \do{redactor}% + \do{redactors}% + \do{reviser}% + \do{revisers}% + \do{founder}% + \do{founders}% + \do{continuator}% + \do{continuators}% + \do{collaborator}% + \do{collaborators}% + \do{translator}% + \do{translators}% + \do{commentator}% + \do{commentators}% + \do{annotator}% + \do{annotators}% + \do{commentary}% + \do{annotations}% + \do{introduction}% + \do{foreword}% + \do{afterword}% + \do{editortr}% + \do{editorstr}% + \do{editorco}% + \do{editorsco}% + \do{editoran}% + \do{editorsan}% + \do{editorin}% + \do{editorsin}% + \do{editorfo}% + \do{editorsfo}% + \do{editoraf}% + \do{editorsaf}% + \do{editortrco}% + \do{editorstrco}% + \do{editortran}% + \do{editorstran}% + \do{editortrin}% + \do{editorstrin}% + \do{editortrfo}% + \do{editorstrfo}% + \do{editortraf}% + \do{editorstraf}% + \do{editorcoin}% + \do{editorscoin}% + \do{editorcofo}% + \do{editorscofo}% + \do{editorcoaf}% + \do{editorscoaf}% + \do{editoranin}% + \do{editorsanin}% + \do{editoranfo}% + \do{editorsanfo}% + \do{editoranaf}% + \do{editorsanaf}% + \do{editortrcoin}% + \do{editorstrcoin}% + \do{editortrcofo}% + \do{editorstrcofo}% + \do{editortrcoaf}% + \do{editorstrcoaf}% + \do{editortranin}% + \do{editorstranin}% + \do{editortranfo}% + \do{editorstranfo}% + \do{editortranaf}% + \do{editorstranaf}% + \do{translatorco}% + \do{translatorsco}% + \do{translatoran}% + \do{translatorsan}% + \do{translatorin}% + \do{translatorsin}% + \do{translatorfo}% + \do{translatorsfo}% + \do{translatoraf}% + \do{translatorsaf}% + \do{translatorcoin}% + \do{translatorscoin}% + \do{translatorcofo}% + \do{translatorscofo}% + \do{translatorcoaf}% + \do{translatorscoaf}% + \do{translatoranin}% + \do{translatorsanin}% + \do{translatoranfo}% + \do{translatorsanfo}% + \do{translatoranaf}% + \do{translatorsanaf}% + \do{byauthor}% + \do{byeditor}% + \do{bycompiler}% + \do{byredactor}% + \do{byreviser}% + \do{byreviewer}% + \do{byfounder}% + \do{bycontinuator}% + \do{bycollaborator}% + \do{bytranslator}% + \do{bycommentator}% + \do{byannotator}% + \do{withcommentator}% + \do{withannotator}% + \do{withintroduction}% + \do{withforeword}% + \do{withafterword}% + \do{byeditortr}% + \do{byeditorco}% + \do{byeditoran}% + \do{byeditorin}% + \do{byeditorfo}% + \do{byeditoraf}% + \do{byeditortrco}% + \do{byeditortran}% + \do{byeditortrin}% + \do{byeditortrfo}% + \do{byeditortraf}% + \do{byeditorcoin}% + \do{byeditorcofo}% + \do{byeditorcoaf}% + \do{byeditoranin}% + \do{byeditoranfo}% + \do{byeditoranaf}% + \do{byeditortrcoin}% + \do{byeditortrcofo}% + \do{byeditortrcoaf}% + \do{byeditortranin}% + \do{byeditortranfo}% + \do{byeditortranaf}% + \do{bytranslatorco}% + \do{bytranslatoran}% + \do{bytranslatorin}% + \do{bytranslatorfo}% + \do{bytranslatoraf}% + \do{bytranslatorcoin}% + \do{bytranslatorcofo}% + \do{bytranslatorcoaf}% + \do{bytranslatoranin}% + \do{bytranslatoranfo}% + \do{bytranslatoranaf}% + \do{and}% + \do{andothers}% + \do{andmore}% + \do{volume}% + \do{volumes}% + \do{involumes}% + \do{part}% + \do{jourvol}% + \do{jourser}% + \do{newseries}% + \do{oldseries}% + \do{edition}% + \do{reprint}% + \do{reprintof}% + \do{reprintas}% + \do{reprintfrom}% + \do{reviewof}% + \do{translationof}% + \do{translationas}% + \do{translationfrom}% + \do{origpubas}% + \do{origpubin}% + \do{astitle}% + \do{bypublisher}% + \do{page}% + \do{pages}% + \do{column}% + \do{columns}% + \do{line}% + \do{lines}% + \do{nodate}% + \do{verse}% + \do{verses}% + \do{section}% + \do{sections}% + \do{paragraph}% + \do{paragraphs}% + \do{in}% + \do{inseries}% + \do{ofseries}% + \do{book}% + \do{issue}% + \do{number}% + \do{chapter}% + \do{mathesis}% + \do{phdthesis}% + \do{candthesis}% + \do{resreport}% + \do{techreport}% + \do{software}% + \do{datacd}% + \do{audiocd}% + \do{version}% + \do{url}% + \do{urlfrom}% + \do{urlseen}% + \do{file}% + \do{inpreparation}% + \do{submitted}% + \do{inpress}% + \do{prepublished}% + \do{forthcoming}% + \do{library}% + \do{abstract}% + \do{annotation}% + \do{citedas}% + \do{seenote}% + \do{quotedin}% + \do{opcit}% + \do{loccit}% + \do{ibidem}% + \do{idem}% + \do{idemsf}% + \do{idemsm}% + \do{idemsn}% + \do{idempf}% + \do{idempm}% + \do{idempn}% + \do{idempp}% + \do{confer}% + \do{sequens}% + \do{sequentes}% + \do{passim}% + \do{see}% + \do{seealso}% + \do{backrefpage}% + \do{backrefpages}% + \do{thiscite}% + \do{january}% + \do{february}% + \do{march}% + \do{april}% + \do{may}% + \do{june}% + \do{july}% + \do{august}% + \do{september}% + \do{october}% + \do{november}% + \do{december}% + \do{langamerican}% + \do{langbrazilian}% + \do{langcatalan}% + \do{langcroatian}% + \do{langczech}% + \do{langdanish}% + \do{langdutch}% + \do{langenglish}% + \do{langfinnish}% + \do{langfrench}% + \do{langgerman}% + \do{langgreek}% + \do{langitalian}% + \do{langjapanese}% + \do{langlatin}% + \do{langnorwegian}% + \do{langpolish}% + \do{langportuguese}% + \do{langrussian}% + \do{langslovak}% + \do{langslovene}% + \do{langspanish}% + \do{langswedish}% + \do{fromamerican}% + \do{frombrazilian}% + \do{fromcatalan}% + \do{fromcroatian}% + \do{fromczech}% + \do{fromdanish}% + \do{fromdutch}% + \do{fromenglish}% + \do{fromfinnish}% + \do{fromfrench}% + \do{fromgerman}% + \do{fromgreek}% + \do{fromitalian}% + \do{fromjapanese}% + \do{fromlatin}% + \do{fromnorwegian}% + \do{frompolish}% + \do{fromportuguese}% + \do{fromrussian}% + \do{fromslovak}% + \do{fromslovene}% + \do{fromspanish}% + \do{fromswedish}% + \do{countryde}% + \do{countryep}% + \do{countryeu}% + \do{countryfr}% + \do{countryuk}% + \do{countryus}% + \do{patent}% + \do{patentde}% + \do{patenteu}% + \do{patentfr}% + \do{patentuk}% + \do{patentus}% + \do{patreq}% + \do{patreqde}% + \do{patreqeu}% + \do{patreqfr}% + \do{patrequk}% + \do{patrequs}% +} + +\newrobustcmd*{\NewBibliographyString}[1]{% + \forcsvlist\blx@newstring{#1}} + +\def\blx@newstring#1{% + \ifcsundef{KV@blx@lbx@#1} + {\gappto\abx@dostrings{\do{#1}}% + \csgdef{KV@blx@lbx@#1}##1{\blx@defstring{#1}{##1}}} + {}} + +% in *.cbx/bbx/tex: <key> = {<string>}, +% in *.lbx: <key> = {{<longstring>}{<abbrevstring>}}, +\def\do#1{\define@key{blx@lbx}{#1}{\blx@defstring{#1}{##1}}} +\abx@dostrings + +% in *.cbx/bbx/tex: (implicit) +% in *.lbx: inherit = {<language>}, +\define@key{blx@lbx}{inherit}{% + \blx@lbxinput{#1}{}{\blx@err@nolang{#1}}% + \csuse{abx@strings@#1}} + +\def\blx@cfg@defstring#1#2{% + \csdef{abx@lstr@#1}{#2}% + \csdef{abx@sstr@#1}{#2}} + +\def\blx@lbx@defstring#1#2{% + \blx@lbx@defstring@i{#1}#2} +\def\blx@lbx@defstring@i#1#2#3{% + \csdef{abx@lstr@#1}{#2}% + \csdef{abx@sstr@#1}{#3}} + +% {<language>} +\def\blx@lbxcheck#1{% + \ifcsdef{blx@lng@#1} + {\expandafter\expandafter\expandafter\IfFileExists + \expandafter\expandafter\expandafter{% + \csname blx@lng@#1\endcsname.lbx} + {} + {\blx@err@nolang{#1}}} + {\IfFileExists{#1.lbx} + {} + {\blx@err@nolang{#1}}}} + +% {<language>}{<definitions>} +\newrobustcmd*{\DefineBibliographyExtras}[2]{% + \blx@lbxcheck{#1}% + \csgappto{blx@hook@extras@#1}{% + \blx@defbibextras{#1}{#2}}} +\@onlypreamble\DefineBibliographyExtras + +\newrobustcmd*{\UndefineBibliographyExtras}[2]{% + \blx@lbxcheck{#1}% + \csgappto{blx@hook@noextras@#1}{% + \blx@undefbibextras{#1}{#2}}} +\@onlypreamble\UndefineBibliographyExtras + +\def\blx@defbibextras#1{\csgappto{abx@extras@#1}} +\def\blx@undefbibextras#1{\csgappto{abx@noextras@#1}} + +% {<language>}{<language>} +\def\blx@letbibextras#1#2{% + \blx@lbxinput{#2}{}{\blx@err@nolang{#2}}% + \global\csletcs{abx@extras@#1}{abx@extras@#2} + \global\csletcs{abx@noextras@#1}{abx@noextras@#2}}% + +% {<language>}{<strings>} +\newrobustcmd*{\DefineBibliographyStrings}[2]{% + \blx@lbxcheck{#1}% + \csgappto{blx@hook@strings@#1}{% + \begingroup + \let\blx@defstring\blx@cfg@defstring + \blx@defbibstrings{#1}{#2}% + \endgroup}} +\@onlypreamble\DefineBibliographyStrings + +\def\blx@defbibstrings#1#2{% + \def\do##1{\csundef{abx@lstr@##1}\csundef{abx@sstr@##1}}% + \abx@dostrings + \csuse{abx@strings@#1}% + \setkeys{blx@lbx}{#2}% + \let\do\blx@defbibstrings@i + \csxdef{abx@strings@#1}{\abx@dostrings}% + \csgappto{abx@strings@#1}{% + \ifcsdef{\abx@str @bibliography} + {\letcs\bibname{\abx@str @bibliography}} + {\let\bibname\@empty}% + \ifcsdef{\abx@str @references} + {\letcs\refname{\abx@str @references}} + {\let\refname\@empty}% + \ifcsdef{\abx@str @shorthands} + {\letcs\biblistname{\abx@str @shorthands}} + {\let\biblistname\@empty}}} + +\def\blx@defbibstrings@i#1{% + \ifcsdef{abx@lstr@#1} + {\def\expandafter\noexpand\csname abx@lstr@#1\endcsname{% + \csexpandonce{abx@lstr@#1}}} + {\undef\expandafter\noexpand\csname abx@lstr@#1\endcsname}% + \ifcsdef{abx@sstr@#1} + {\def\expandafter\noexpand\csname abx@sstr@#1\endcsname{% + \csexpandonce{abx@sstr@#1}}} + {\undef\expandafter\noexpand\csname abx@sstr@#1\endcsname}} + +% {<language>}{<language>} +\def\blx@letbibstrings#1#2{% + \blx@lbxinput{#2}{}{\blx@err@nolang{#2}}% + \global\csletcs{abx@strings@#1}{abx@strings@#2}}% + +% {<language>}{<exceptions>} +\newrobustcmd*{\DefineHyphenationExceptions}[2]{% + \ifcsundef{l@#1} + {\blx@warn@nohyph{#1}} + {}% + \csgappto{blx@hook@hyph@#1}{\blx@hyphexcept{#1}{#2}}} +\@onlypreamble\DefineHyphenationExceptions + +\def\blx@hyphexcept#1#2{% + \ifcsundef{l@#1} + {\blx@warn@nohyph{#1}} + {\begingroup + \language\csname l@#1\endcsname\relax + \hyphenation{#2}% + \endgroup}} + +% {<language>}{<mapping>} +\newrobustcmd*{\DeclareLanguageMapping}[2]{% + \csgdef{blx@lng@#1}{#2}} +\@onlypreamble\DeclareLanguageMapping + +% {<language>}{<success>}{<failure>} +\def\blx@lbxinput#1{% + \ifcsdef{blx@lng@#1} + {\expandafter\expandafter\expandafter\blx@lbxinput@i + \expandafter\expandafter\expandafter{% + \csname blx@lng@#1\endcsname}{#1}} + {\blx@lbxinput@ii{#1}{#1}{language '#1'}}} + +% {<mapping>}{<language>} +\def\blx@lbxinput@i#1#2{% + \global\csundef{blx@lng@#2}% + \IfFileExists{#1.lbx} + {\blx@lbxinput@ii{#2}{#1}{language '#2' -> '#1'}} + {\blx@warning@noline{% + File '#1.lbx' not found!\MessageBreak + Ignoring mapping '#2' -> '#1'}% + \blx@lbxinput{#2}}} + +% {<language>}{<lbxfile>}{<message>} +\def\blx@lbxinput@ii#1#2#3{% + \begingroup + \setbox\@tempboxa=\hbox\bgroup + \aftergroup\endgroup + \blx@inputonce{#2.lbx}{#3} + {\global\cslet{abx@strings@#1}\@empty + \global\cslet{abx@extras@#1}\@empty + \global\cslet{abx@noextras@#1}\@empty + \blx@maplang{#1}{#1}% + \def\InheritBibliographyStrings{% + \blx@letbibstrings{#1}}% + \def\DeclareBibliographyStrings####1{% + \begingroup + \let\blx@defstring\blx@lbx@defstring + \blx@defbibstrings{#1}{####1}% + \endgroup}% + \def\InheritBibliographyExtras{\blx@letbibextras{#1}}% + \def\DeclareBibliographyExtras{\blx@defbibextras{#1}}% + \def\UndeclareBibliographyExtras{\blx@undefbibextras{#1}}% + \def\DeclareHyphenationExceptions{\blx@hyphexcept{#1}}% + \begingroup + \blx@saneccodes + \makeatletter} + {\endgroup + \csuse{blx@hook@strings@#1}% + \csuse{blx@hook@strings@#2}% + \csuse{blx@hook@extras@#1}% + \csuse{blx@hook@extras@#2}% + \csuse{blx@hook@noextras@#1}% + \csuse{blx@hook@noextras@#2}% + \csuse{blx@hook@hyph@#1}% + \csuse{blx@hook@hyph@#2}} + {\aftergroup\@firstoftwo} + {\aftergroup\@secondoftwo}% + \egroup} + +% {<language>} +\def\blx@langsetup#1{% + \blx@lbxinput{#1} + {\edef\blx@languagename{#1}} + {\blx@warning + {Language '#1' not supported.\MessageBreak + Using fallback language '\blx@languagename'}% + \blx@lbxinput{\blx@languagename} + {\blx@maplang{#1}{\blx@languagename}} + {\blx@err@nolang{\blx@languagename}}}} + +% auxiliary macros + +% {<field base name>} + +\newrobustcmd*{\mkbibrangeshort}{% + \mkbibrangefull{short}} + +\newrobustcmd*{\mkbibrangelong}{% + \mkbibrangefull{long}} + +\newrobustcmd*{\mkbibrangeterse}{% + \mkbibrangetrunc{short}} + +\newrobustcmd*{\mkbibrangecomp}{% + \mkbibrangetrunc{long}} + +\newrobustcmd*{\mkbibrangeshortextra}{% + \mkbibrangefullextra{short}} + +\newrobustcmd*{\mkbibrangelongextra}{% + \mkbibrangefullextra{long}} + +\newrobustcmd*{\mkbibrangeterseextra}{% + \mkbibrangetruncextra{short}} + +\newrobustcmd*{\mkbibrangecompextra}{% + \mkbibrangetruncextra{long}} + +% {<short|long>}{<basename>} + +\newrobustcmd*{\mkbibrangefull}[2]{% + \iffieldundef{#2year} + {} + {\printtext[#2date]{% + \csuse{mkbibdate#1}{#2year}{#2month}{#2day}% + \iffieldundef{#2endyear} + {} + {\iffieldequalstr{#2endyear}{} + {\mbox{\bibdatedash}} + {\bibdatedash + \csuse{mkbibdate#1}{#2endyear}{#2endmonth}{#2endday}}}}}} + +\newrobustcmd*{\mkbibrangetrunc}[2]{% + \iffieldundef{#2year} + {} + {\printtext[#2date]{% + \iffieldsequal{#2year}{#2endyear} + {\iffieldsequal{#2month}{#2endmonth} + {\csuse{mkbibdate#1}{}{}{#2day}} + {\csuse{mkbibdate#1}{}{#2month}{#2day}}} + {\csuse{mkbibdate#1}{#2year}{#2month}{#2day}}% + \iffieldundef{#2endyear} + {} + {\iffieldequalstr{#2endyear}{} + {\mbox{\bibdatedash}} + {\bibdatedash + \csuse{mkbibdate#1}{#2endyear}{#2endmonth}{#2endday}}}}}} + +\newrobustcmd*{\mkbibrangefullextra}[2]{% + \iffieldundef{#2year} + {} + {\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[#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}}}}}}} + +\newrobustcmd*{\mkbibrangeyear}[1]{% + \blx@imc@clearfield{#1month}% + \blx@imc@clearfield{#1day}% + \blx@imc@clearfield{#1endmonth}% + \blx@imc@clearfield{#1endday}% + \iffieldsequal{#1year}{#1endyear} + {\blx@imc@clearfield{#1endyear}} + {}% + \mkbibrangefull{short}{#1}} + +\newrobustcmd*{\mkbibrangeyearextra}[1]{% + \blx@imc@clearfield{#1month}% + \blx@imc@clearfield{#1day}% + \blx@imc@clearfield{#1endmonth}% + \blx@imc@clearfield{#1endday}% + \iffieldsequal{#1year}{#1endyear} + {\blx@imc@clearfield{#1endyear}} + {}% + \mkbibrangefullextra{short}{#1}} + +\expandafter\newrobustcmd +\expandafter*\csname mkbibrangeiso8601\endcsname[1]{% + \iffieldundef{#1year} + {} + {\printtext[#1date]{% + \blx@isodate{#1year}{#1month}{#1day}% + \iffieldundef{#1endyear} + {} + {\addslash\blx@isodate{#1endyear}{#1endmonth}{#1endday}}}}} + +\expandafter\newrobustcmd +\expandafter*\csname mkbibrangeiso8601extra\endcsname[1]{% + \iffieldundef{#1year} + {} + {\printtext[#1date]{% + \blx@isodate[extrayear]{#1year}{#1month}{#1day}% + \iffieldundef{#1endyear} + {} + {\addslash\blx@isodate{#1endyear}{#1endmonth}{#1endday}}}}} + +\newrobustcmd*{\blx@isodate}[4][]{% + \thefield{#2}\ifblank{#1}{}{\printfield{#1}}% + \iffieldundef{#3}{}{\mbox{-}\thefield{#3}}% + \iffieldundef{#4}{}{\mbox{-}\thefield{#4}}} + +\newrobustcmd*{\mkbibdatelong}[3]{} +\newrobustcmd*{\mkbibdateshort}[3]{} +\newrobustcmd*{\bibrangedash}{\textendash} +\newrobustcmd*{\bibrangessep}{,\space} +\newrobustcmd*{\bibdatedash}{\bibrangedash} +\newrobustcmd*{\finalandcomma}{} +\newrobustcmd*{\finalandsemicolon}{} +\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}% + \or\abx@bibmonth{january}% + \or\abx@bibmonth{february}% + \or\abx@bibmonth{march}% + \or\abx@bibmonth{april}% + \or\abx@bibmonth{may}% + \or\abx@bibmonth{june}% + \or\abx@bibmonth{july}% + \or\abx@bibmonth{august}% + \or\abx@bibmonth{september}% + \or\abx@bibmonth{october}% + \or\abx@bibmonth{november}% + \or\abx@bibmonth{december}% + \else + \blx@warning@entry{Month out of range}#1% + \fi} + +\protected\def\blx@imc@printdatelabel{} +\protected\def\blx@imc@printdateextralabel{} + +\let\blx@imc@mkdatezeros\@firstofone +\protected\def\blx@imc@stripzeros#1{% + \begingroup + \setbox\@tempboxa=\hbox\bgroup + \aftergroup\endgroup + \abx@hook@xsanitize + \if0#1\relax + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {\@tempcnta#1\relax + \expandafter\egroup + \number\@tempcnta + \@tempcnta#1\relax} + {\egroup#1}} + +\blx@regimcs{\printdatelabel \printdateextralabel \printorigdate \stripzeros \mkdatezeros} + +% User macro for retrieving currrent language +\def\currentlang{\blx@languagename} + +% {<language>}{<strings>} +\def\blx@maplang#1#2{% + \csxappto{extras#1}{% + \noexpand\blx@resetpunct + \expandafter\noexpand\csname abx@extras@#2\endcsname + \expandafter\noexpand\csname abx@strings@#2\endcsname}% + \csxappto{noextras#1}{% + \noexpand\blx@resetpunct + \expandafter\noexpand\csname abx@noextras@#2\endcsname}} + +%% babel/polyglossia interface +\def\blx@beglang{\blx@clearlang\begingroup} +\def\blx@endlang{\endgroup} +\let\blx@beglangbib\blx@beglang +\let\blx@endlangbib\blx@endlang +\let\blx@beglangcite\blx@beglang +\let\blx@endlangcite\blx@endlang +\let\blx@hook@endlang\@empty +\let\blx@hook@initlang\@empty +\let\blx@imc@mainlang\@empty +\def\blx@hyphenreset{% + \ifcsundef{l@\blx@languagename} + {} + {\language\csname l@\blx@languagename\endcsname\relax}% + \ifcsundef{\blx@languagename hyphenmins} + {\blx@sethyphenmins\tw@\thr@@} + {\expandafter\expandafter\expandafter\blx@sethyphenmins + \csname\blx@languagename hyphenmins\endcsname}} +\def\blx@sethyphenmins#1#2{% + \lefthyphenmin#1\relax + \righthyphenmin#2\relax} + +\begingroup +\@makeother\# +\gdef\blx@mkautolangbabel{% + \ifundef\bbl@main@language + {\blx@error + {No default babel language defined} + {You must define a default language for babel}} + {}% + \pretocmd\select@language{\blx@langsetup{#1}} + {\ifdef\blx@thelangenv + {\def\blx@beglang{% + \blx@clearlang + \begingroup + % Need to override all entries, regardless of if there is a langid + % if language=<language> option is given + \ifboolexpr { test {\ifdef\abx@field@langid } + or + test {\ifdef\blx@forcelanguagename} } + % override local langid if we forced it with + % language=<language> option + {\ifdef\blx@forcelanguagename + {\let\abx@field@langid\blx@forcelanguagename} + {}% + \let\blx@languagename\abx@field@langid% track global language + \ifcsundef{l@\abx@field@langid} + {\blx@warn@nohyph{\abx@field@langid}} + {\blx@hook@initlang + \def\blx@endlang{% + \blx@hook@endlang + \csname end\blx@thelangenv\endcsname + \endgroup}% + \iftoggle{blx@autolangbib} + {\let\blx@endlangbib\blx@endlang} + {}% + \iftoggle{blx@autolangcite} + {\let\blx@endlangcite\blx@endlang} + {}% + \csname\blx@thelangenv\expandafter\endcsname + \expandafter{\abx@field@langid}}} + {}}} + {}% + \def\blx@langstrings{}% + \def\blx@imc@mainlang{\select@language{\bbl@main@language}}% + \blx@langsetup\bbl@main@language} + {\blx@err@patch{'babel' package}% + \blx@mknoautolang}} + +\gdef\blx@mkautolangpoly{% + \ifundef\bbl@main@language + {\blx@error + {No default polyglossia language defined} + {You must define a default language for polyglossia}} + {}% + \catcode`\_=11% polyglossia uses "_" as a letter + \pretocmd\select@language{\blx@langsetup{#1}} + {\ifdef\blx@thelangenv + {\def\blx@beglang{% + \blx@clearlang + \begingroup + % Need to override all entries, regardless of if there is a langid + % if language=<language> option is given + \ifboolexpr { test {\ifdef\abx@field@langid } + or + test {\ifdef\blx@forcelanguagename} } + % override local langid if we forced it with + % language=<language> option + {\ifdef\blx@forcelanguagename + {\let\abx@field@langid\blx@forcelanguagename} + {}% + \let\blx@languagename\abx@field@langid% track global language + \ifcsundef{l@\abx@field@langid} + {\blx@warn@nohyph{\abx@field@langid}} + {\blx@hook@initlang + \def\blx@endlang{% + \blx@hook@endlang + % Polyglossia language envs are \<lang>[] + \ifcsstring{blx@thelangenv}{langname} + {\csname end\abx@field@langid\endcsname} + {\csname end\blx@thelangenv\endcsname}% + \endgroup}% + \iftoggle{blx@autolangbib} + {\let\blx@endlangbib\blx@endlang} + {}% + \iftoggle{blx@autolangcite} + {\let\blx@endlangcite\blx@endlang} + {}% + \ifcsstring{blx@thelangenv}{langname} + {\ifdef\abx@field@langidopts + {\csname\abx@field@langid\expandafter\endcsname\expandafter[\abx@field@langidopts]} + {\csname\abx@field@langid\endcsname}} + {\csname\blx@thelangenv\expandafter\endcsname\expandafter{\abx@field@langid}}% + % These lines are equal to \blx@maplang + \blx@resetpunct + \csuse{abx@extras@\abx@field@langid}% + \csuse{abx@strings@\abx@field@langid}}} + {}}} + {}% + % polyglossia needs this - it doesn't get the + % strings automatically set for some reason + \def\blx@langstrings{% + \csuse{abx@extras@\languagename}% + \csuse{abx@strings@\languagename}}% + \def\blx@imc@mainlang{% + \select@language{\bbl@main@language}% + % These lines are equal to \blx@maplang + \blx@resetpunct + \csuse{abx@extras@\bbl@main@language}% + \csuse{abx@strings@\bbl@main@language}}% + \blx@langsetup\bbl@main@language} + {\blx@err@patch{'polyglossia' package}% + \blx@mknoautolang}% + \catcode`\_=8} +\endgroup + +\def\blx@mknoautolang{% + \blx@lbxinput{\blx@languagename} + {} + {\blx@err@nolang{\blx@languagename}}} + +\blx@regimcs{\mainlang} + +\newrobustcmd*{\DeclareRedundantLanguages}[2]{% + \begingroup + \ifblank{#2} + {\def\do##1{% + \global\csundef{blx@rlm@##1}% + \global\csundef{blx@rlm@lang##1}}} + {\def\do##1{% + \csxdef{blx@rlm@##1}{#2}% + \csxdef{blx@rlm@lang##1}{#2}}}% + \docsvlist{#1}% + \endgroup} + +\def\blx@clearlang{% + \iftoggle{blx@clearlang} + {\iflistundef{language} + {} + {\ifnumgreater{\value{language}}{1} + {} + {\expandafter\blx@clearlang@i\abx@list@language}}} + {}} + +\def\blx@clearlang@i#1{% + \ifcsdef{blx@rlm@#1} + {\expandafter\expandafter\expandafter\forcsvlist + \expandafter\expandafter\expandafter\blx@clearlang@ii + \expandafter\expandafter\expandafter{% + \csname blx@rlm@#1\endcsname}} + {}} + +\def\blx@clearlang@ii#1{% + \ifdefstring\languagename{#1} + {\clearlist{language}} + {}} + +%% Biber equivalents to bibtex data interface + +\def\abx@doentrytypes{\dolistcsloop{blx@datamodel@entrytypes}} + +% fields which can be used as labels - we auto-create some macros for these +\def\abx@dolabelfields{\dolistcsloop{blx@datamodel@labelfields}} + +\def\abx@donames{\dolistcsloop{blx@datamodel@names}} + +\def\abx@dofields{\dolistcsloop{blx@datamodel@fields}} + +\def\abx@dolists{% + \dolistcsloop{blx@datamodel@lists}% + \do{pageref}} + +\def\abx@dodates{\dolistcsloop{blx@datamodel@dates}} + +% Used to pass regexps to .bcf +\def\regexp#1{\expandafter\zap@space\detokenize{#1} \@empty} + +% Have to do this otherwise the '~'s in the .bcf strings are not expanded +% This is done for the .bcf later but since we have to do all the +% data model things much earlier, have to set this here and reset on finishing +\let\blx@tsave~ +\let~\space +% Data model and supporting macros must be loaded early +\blx@inputonce{blx-dm.def}{biblatex default data model}{}{}{}{} +\let~\blx@tsave + +% We need to now load any style data model +% Order of precedence is: +% <datamodel option>.dbx +% <style option>.dbx +% <citestyle option>.dbx and <bibstyle option>.dbx +% This has to be done before the real options processing so we need to +% pick out just these four options to look at. You can't do this with keyval, +% you have to use kvoptions. So, pick out these four, pass through all +% others and delete datamodel option as we don't care about it when we come +% to really set options below +\SetupKeyvalOptions{ + family=blx@opt@eldt, + prefix=blx@opt@eldt@} +\DeclareStringOption{datamodel} +\DeclareStringOption{style} +\DeclareStringOption{citestyle} +\DeclareStringOption{bibstyle} +\DeclareDefaultOption{} +\ProcessLocalKeyvalOptions{blx@opt@eldt} +\ifx\blx@opt@eldt@datamodel\@empty + \ifx\blx@opt@eldt@style\@empty + \ifx\blx@opt@eldt@citestyle\@empty + \else + \blx@inputonce{\blx@opt@eldt@citestyle.dbx}{biblatex citestyle data model}{}{}{}{} + \fi + \ifx\blx@opt@eldt@bibstyle\@empty + \else + \blx@inputonce{\blx@opt@eldt@bibstyle.dbx}{biblatex bibstyle data model}{}{}{}{} + \fi + \else + \blx@inputonce{\blx@opt@eldt@style.dbx}{biblatex style data model}{}{}{}{} + \fi \else - \expandafter\@secondoftwo + \blx@inputonce{\blx@opt@eldt@datamodel.dbx}{biblatex style data model}{}{}{}{} \fi - {\RequirePackage{biblatex_legacy}} - {\RequirePackage{biblatex_}} - -%% Copyright (C) 2006-2011 Philipp Lehman -%% 2012-2016 Philip Kime, Audrey Boruvka, Joseph Wright -%% -%% It may be distributed and/or modified under the conditions of -%% the LaTeX Project Public License (LPPL), either version 1.3c of -%% this license or (at your option) any later version. The latest -%% version of this license is in the file: -%% -%% http://www.latex-project.org/lppl.txt -%% -%% This work is "maintained" (as per LPPL maintenance status) by -%% Philip Kime, Audrey Boruvka, Joseph Wright. +\DisableKeyvalOption[action=undef,local]{blx@opt@eldt}{datamodel} + +% Override with user-defined data model if there is one +\blx@inputonce{biblatex-dm.cfg}{biblatex custom data model}{}{}{}{} + +% Initialise option datatypes lists +\global\let\blx@bcf@options@scope@global\@empty +\global\let\blx@bcf@options@scope@type\@empty +\global\let\blx@bcf@options@scope@entry\@empty +\global\let\blx@bcf@options@scope@namelist\@empty +\global\let\blx@bcf@options@scope@name\@empty +\global\let\blx@globalopts@datatypes\@empty +\global\let\blx@typeopts@datatypes\@empty +\global\let\blx@entryopts@datatypes\@empty +\global\let\blx@namelistopts@datatypes\@empty +\global\let\blx@nameopts@datatypes\@empty +\def\do#1{% + \global\cslet{blx@globalopts@#1}\@empty + \global\cslet{blx@typeopts@#1}\@empty + \global\cslet{blx@entryopts@#1}\@empty + \global\cslet{blx@namelistopts@#1}\@empty + \global\cslet{blx@nameopts@#1}\@empty} +\expandafter\expandafter\expandafter\docsvlist\expandafter\expandafter\expandafter{\csname blx@datamodel@constant@optiondatatypes\endcsname} + +% Helper for collecting options and datatypes +% {<datatype>}{<scope>}{<name>} +\def\blx@collectopts#1#2#3{% + \ifinlistcs{#1}{#2@datatypes} + {} + {\listcsgadd{#2@datatypes}{#1}}% + \ifinlistcs{#3}{#2@#1} + {} + {\listcsgadd{#2@#1}{#3}}} + +% per-entry inheritance blocking option for biber +\blx@collectopts{string}{blx@entryopts}{noinherit} + +% useprefix namelist/name scope +\blx@collectopts{boolean}{blx@namelistopts}{useprefix}% for passing to bcf +\blx@collectopts{boolean}{blx@nameopts}{useprefix}% for passing to the .bcf + +% sortnamekeyscheme namelist/name scope +\blx@collectopts{string}{blx@namelistopts}{sortnamekeyscheme}% for passing to bcf +\blx@collectopts{string}{blx@nameopts}{sortnamekeyscheme}% for passing to the .bcf + +% Misc globalopts +\blx@collectopts{xml}{blx@globalopts}{datamodel}% for passing to the .bcf +\blx@collectopts{string}{blx@globalopts}{controlversion}% for passing to the .bcf + +\newcommand*{\labelalphaothers}{+} +\newcommand*{\sortalphaothers}{\labelalphaothers} +\blx@collectopts{string}{blx@globalopts}{alphaothers}% for passing to the .bcf +\blx@collectopts{string}{blx@typeopts}{alphaothers}% for passing to the .bcf +\blx@collectopts{string}{blx@globalopts}{sortalphaothers}% for passing to the .bcf +\blx@collectopts{string}{blx@typeopts}{sortalphaothers}% for passing to the .bcf + +% The Declare*Option macros are for options which need to be visible +% to biblatex. For options which only biber needs to see, they can be +% passed to the .bcf directly using \blx@collectopts +% [<datatype>]{<key>}[<value>]{<code>} +\newrobustcmd*{\DeclareBibliographyOption}[2][]{ + \ifblank{#1} + {\def\blx@tempa{boolean}} + {\ifcsundef{blx@globalopts@#1} + {\blx@warn@badoptdt{#1}% + \def\blx@tempa{boolean}} + {\def\blx@tempa{#1}}}% + \expandafter\blx@collectopts\expandafter{\blx@tempa}{blx@globalopts}{#2}% + \@ifnextchar[%] + {\blx@defbibopt{#2}} + {\blx@defbibopt{#2}[]}} + +\long\def\blx@defbibopt#1[#2]#3{% + \ifcsundef{KV@blx@opt@ldt@#1} + {\ifcsundef{KV@blx@opt@pre@#1} + {\ifblank{#2} + {\define@key{blx@opt@pre}{#1}{#3}} + {\define@key{blx@opt@pre}{#1}[#2]{#3}}} + {\blx@err@optdef{#1}}} + {\blx@err@optdef{#1}}} + +% [<datatype>]{<key>}[<value>]{<code>} +\newrobustcmd*{\DeclareTypeOption}[2][]{% + \ifblank{#1} + {\def\blx@tempa{boolean}} + {\ifcsundef{blx@typeopts@#1} + {\blx@warn@badoptdt{#1}% + \def\blx@tempa{boolean}} + {\def\blx@tempa{#1}}}% + \expandafter\blx@collectopts\expandafter{\blx@tempa}{blx@typeopts}{#2}% + \@ifnextchar[%] + {\blx@deftypeopt{#2}} + {\blx@deftypeopt{#2}[]}} + +\long\def\blx@deftypeopt#1[#2]#3{% + \ifcsundef{KV@blx@opt@typ@#1} + {\ifblank{#2} + {\define@key{blx@opt@typ}{#1}{#3}} + {\define@key{blx@opt@typ}{#1}[#2]{#3}}} + {\blx@err@optdef{#1}}} + +% [<datatype>]{<key>}[<value>]{<code>} +\newrobustcmd*{\DeclareEntryOption}[2][]{% + \ifblank{#1} + {\def\blx@tempa{boolean}} + {\ifcsundef{blx@entryopts@#1} + {\blx@warn@badoptdt{#1}% + \def\blx@tempa{boolean}} + {\def\blx@tempa{#1}}}% + \expandafter\blx@collectopts\expandafter{\blx@tempa}{blx@entryopts}{#2}% + \@ifnextchar[%] + {\blx@defentryopt{#2}} + {\blx@defentryopt{#2}[]}} + + \long\def\blx@defentryopt#1[#2]#3{% + \ifcsundef{KV@blx@opt@ent@#1} + {\ifblank{#2} + {\define@key{blx@opt@ent}{#1}{#3}} + {\define@key{blx@opt@ent}{#1}[#2]{#3}}} + {\blx@err@optdef{#1}}} + +% These are internal fields which are not part of the data model but +% which need to be dealt with along with data model fields in places +\def\abx@dointernalfields{% + \do{childentrykey}% + \do{clonesourcekey}% + \do{datelabelsource}% + \do{entrykey}% + \do{entryset}% + \do{entrysetcount}% + \do{entrytype}% + \do{extraalpha}% + \do{extratitle}% + \do{extratitleyear}% + \do{extrayear}% + \do{fullhash}% + \do{labelalpha}% + \do{labelnumber}% + \do{labeltitleyear}% + \do{labeldate}% + \do{localnumber}% + \do{namehash}% + \do{labelprefix}% + \do{sortinit}% + \do{sortinithash}} + +\def\abx@dobooleans{% + \do{crossrefsource}% + \do{xrefsource}% + \do{singletitle}% + \do{uniquetitle}% + \do{uniqueprimaryauthor}} + +% Date datatype fields +\def\do#1{% + \protected\csdef{blx@imc@print#1}{}% + \protected\csdef{blx@imc@print#1extra}{}} +\abx@dodates + +% \blx@regimcs doesn't work in do-lists nicely so use internal macro it calls +\def\do#1{% + \xappto\blx@blxinit{\csletcs{print#1}{blx@imc@print#1}}% + \xappto\blx@blxinit{\csletcs{print#1extra}{blx@imc@print#1extra}}} +\abx@dodates + +% Name toggles like \ifauthor etc. need to be dynamically created for all +% name datatypes in the data model and we have to do this here after the +% datamodel is available. Need to be careful about expansions here as these +% go into hooks to be executed later + +% Define name toggles +\def\do#1{\newtoggle{blx@use#1}\toggletrue{blx@use#1}} +\abx@donames + +% Define name toggle checking macros +\let\blx@nametoggles\@empty +\def\do#1{\gappto\blx@nametoggles{\expandafter\def\csname ifuse#1\endcsname{\iftoggle{blx@use#1}}}} +\abx@donames +\eappto\blx@blxinit{\expandafter\expandonce\noexpand\blx@nametoggles} + +% Define ifthen interface name toggle checking macros +\let\blx@nametogglesit\@empty +\def\do#1{\gappto\blx@nametogglesit{\expandafter\def\csname ifuse#1\endcsname{\blx@TE{\iftoggle{blx@use#1}}}}} +\abx@donames +\expandafter\def\expandafter\blx@nametogglesite\expandafter{\expandonce\blx@nametogglesit} +\appto\blx@blxinit{\appto\blx@TE@hook{\blx@nametogglesite}} + +% Define \ifuse<name> options scope for biber +\def\do#1{\blx@collectopts{boolean}{blx@globalopts}{use#1}% + \blx@collectopts{boolean}{blx@typeopts}{use#1}% + \blx@collectopts{boolean}{blx@entryopts}{use#1}} +\abx@donames + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Since these are bare counters which define \the<string>, save any current values +% (memoir, titling, koma etc. have a \theauthor macro, for example) and restore at +% end of package +\def\do#1{% + \csletcs{blx@compat@the#1}{the#1}% + \newcounter{#1}% + \newcounter{saved#1}% + \appto\abx@dobooleans{\do{more#1}}} + +\abx@donames +\abx@dornames +\abx@dolists +%\abx@dorlists + +\AtEndOfPackage{% + \def\do#1{\csletcs{the#1}{blx@compat@the#1}}% + \abx@donames + \abx@dornames + \abx@dolists} + +\def\do#1{\newtoggle{abx@bool@#1}} +\abx@dobooleans + +\def\do#1{\expandafter\newlength\expandafter{\csname #1width\endcsname}} +\abx@dolabelfields + +\protected\def\blx@resetdata{% + \let\blx@saved@do\do + \let\do\blx@imc@clearname + \abx@donames + \let\do\blx@imc@clearlist + \abx@dolists + \let\do\blx@imc@clearfield + \abx@dofields + \do{options}\do{labelyear}\do{labelmonth}\do{labelday}\do{datelabelsource}% + \abx@dointernalfields + \def\do##1{\togglefalse{abx@bool@##1}}% + \abx@dobooleans + \let\do\blx@saved@do + \c@citecounter\z@ + \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 + \let\do\blx@savename + \abx@donames + \let\do\blx@saverelname + \dolistloop\abx@dorelnames + \let\do\blx@savelist + \abx@dolists + \let\do\blx@saverellist + \dolistloop\abx@dorellists + \let\do\blx@savefield + \abx@dofields + \let\do\blx@saverelfield + \dolistloop\abx@dorelfields + \do{options}\do{labelyear}\do{labelmonth}\do{labelday}\do{datelabelsource}% + \abx@dointernalfields + \let\do\blx@savebool + \abx@dobooleans + \c@savedcitecounter\c@citecounter + \let\do\blx@saved@do} + +\protected\def\blx@savename#1{% + \csletcs{etb@tgl@abx@bool@moresaved#1}{etb@tgl@abx@bool@more#1}% + \csletcs{abx@name@saved#1}{abx@name@#1}% + \csname c@saved#1\endcsname\csname c@#1\endcsname} + +% override with name saved from \clearfield for related processing +\protected\def\blx@saverelname#1{% + \csletcs{etb@tgl@abx@bool@moresaved#1}{etb@tgl@abx@bool@morerelsaved#1}% + \csletcs{abx@name@saved#1}{abx@name@relsaved#1}% + \csname c@saved#1\endcsname\csname c@relsaved#1\endcsname} + +\protected\def\blx@savelist#1{% + \csletcs{etb@tgl@abx@bool@moresaved#1}{etb@tgl@abx@bool@more#1}% + \csletcs{abx@list@saved#1}{abx@list@#1}% + \csname c@saved#1\endcsname\csname c@#1\endcsname} + +% override with list saved from \clearfield for related processing +\protected\def\blx@saverellist#1{% + \csletcs{etb@tgl@abx@bool@moresaved#1}{etb@tgl@abx@bool@morerelsaved#1}% + \csletcs{abx@list@saved#1}{abx@list@relsaved#1}% + \csname c@saved#1\endcsname\csname c@relsaved#1\endcsname} + +\protected\def\blx@savefield#1{% + \csletcs{abx@field@saved#1}{abx@field@#1}} + +% override with field saved from \clearfield for related processing +\protected\def\blx@saverelfield#1{% + \csletcs{abx@field@saved@#1}{abx@field@relsaved#1}} + +\protected\def\blx@savebool#1{% + \csletcs{abx@bool@saved#1}{abx@bool@#1}} + +% {<code>} +\protected\long\def\blx@bbl@preamble#1{% + \gappto\abx@preamble{#1}} + +% {<message>} +\protected\def\blx@bbl@warn#1{% + \begingroup + \def\item{\MessageBreak-\space}% + \def\break{\MessageBreak\space\space}% + \edef\blx@tempa{% + Biber reported the following issues% + \ifdef\abx@field@entrykey + {\MessageBreak with '\abx@field@entrykey'} + {}% + :#1}% + \blx@warning@noline{\blx@tempa}% + \endgroup} + +% {<field>}{<code>} +\newrobustcmd{\DeclareFieldInputHandler}[2]{% + \ifblank{#2} + {\csundef{blx@fih@#1}} + {\long\csdef{blx@fih@#1}##1{#2}}} +\@onlypreamble\DeclareFieldInputHandler + +% {<list>}{<code>} +\newrobustcmd*{\DeclareListInputHandler}[2]{% + \ifblank{#2} + {\csundef{blx@lih@#1}} + {\csdef{blx@lih@#1}##1{#2}}} +\@onlypreamble\DeclareListInputHandler + +% {<name>}{<code>} +\newrobustcmd*{\DeclareNameInputHandler}[2]{% + \ifblank{#2} + {\csundef{blx@nih@#1}} + {\csdef{blx@nih@#1}##1{#2}}} +\@onlypreamble\DeclareNameInputHandler + +% {<entrykey>}{<refsection>}{<field>}{<sort context>}{<value>} +\long\def\blx@bbl@addentryfield#1#2#3#4#5{% + \csxappto{blx@data@#2@#4@#1}{% + \def\expandafter\noexpand\csname abx@field@#3\endcsname{#5}}} + +% {<rangefield>}{<value>} +\protected\def\blx@bbl@rangedef#1#2{% + \csxappto\blx@bbl@data{% + \def\expandafter\noexpand\csname abx@range@#1\endcsname{#2}}} + +% {<field>}{<value>} +\long\def\blx@bbl@addfield#1#2{% + \csxappto\blx@bbl@data{% + \def\expandafter\noexpand\csname abx@field@#1\endcsname{#2}}} + +\protected\long\def\blx@bbl@fielddef#1#2{% + \def\NewValue{#2}% + \ifcsdef{blx@fih@#1} + {\csname blx@fih@#1\endcsname{#2}% + \ifdefvoid\NewValue} + {\@secondoftwo} + {} + {\blx@bbl@addfield{#1}{\expandonce\NewValue}}} + +\protected\long\def\blx@bbl@fieldedef#1#2{% + \edef\NewValue{#2}% + \ifcsdef{blx@fih@#1} + {\csname blx@fih@#1\expandafter + \endcsname\expandafter{\NewValue}% + \ifdefvoid\NewValue} + {\@secondoftwo} + {} + {\blx@bbl@addfield{#1}{\NewValue}}} + +\protected\long\def\blx@bbl@stringdef#1#2{% + \begingroup + \edef\blx@tempa{\endgroup + \blx@bbl@fielddef{#1}{\detokenize{#2}}}% + \blx@tempa} + +% Verbatim lists +% {<list>}{<listcount>} +\protected\def\blx@bbl@verbldef#1#2{% + \begingroup + \let\lverb\blx@bbl@verbladd + \def\blx@tempa{#1}% + \def\blx@tempb{#2}% + \let\blx@tempc\@empty + \let\NewValue\@empty} + +\protected\def\blx@bbl@verblend{% + \expandafter\blx@bbl@listdef\expandafter{\expandafter\blx@tempa\expandafter}\expandafter{\expandafter\blx@tempb\expandafter}\expandafter{\blx@tempc}% + \endgroup} + +\protected\def\blx@bbl@verbladd{% + \begingroup + \let\do\@makeother + \dospecials + \catcode\endlinechar=12\relax + \blx@bbl@verbladd@i} + +% Verbatim fields +% {<field>} +\protected\def\blx@bbl@verbdef#1{% + \begingroup + \let\verb\blx@bbl@verbadd + \def\blx@tempa{#1}% + \let\NewValue\@empty} + +\protected\def\blx@bbl@verbend{% + \ifcsdef{blx@fih@\blx@tempa} + {\csname blx@fih@\blx@tempa\expandafter + \endcsname\expandafter{\NewValue}% + \ifdefvoid\NewValue} + {\@secondoftwo} + {} + {\blx@bbl@addfield{\blx@tempa}{\NewValue}}% + \endgroup} + +\protected\def\blx@bbl@verbadd{% + \begingroup + \let\do\@makeother + \dospecials + \catcode\endlinechar=12\relax + \blx@bbl@verbadd@i} + +% {<scope>}{<field>}{<itemcount>}{<part>}{<value>} +\protected\def\blx@bbl@annotationdef#1#2#3#4#5{% + \ifboolexpr { test {\ifstrequal{#1}{field}} } + {\csxappto\blx@bbl@data{% + \def\do####1{\listcsadd{abx@annotation@#1@#2}{####1}}% + \docsvlist{#5}}} + {}% + \ifboolexpr { test {\ifstrequal{#1}{item}} } + {\csxappto\blx@bbl@data{% + \def\do####1{\listcsadd{abx@annotation@#1@#2@#3}{####1}}% + \docsvlist{#5}}} + {}% + \ifboolexpr { test {\ifstrequal{#1}{part}} } + {\csxappto\blx@bbl@data{% + \def\do####1{\listcsadd{abx@annotation@#1@#2@#3@#4}{####1}}% + \docsvlist{#5}}} + {}} + +% {<annotation>} +\newcommand*{\iffieldannotation}[1]{% + \ifdefvoid\currentfield{}{\let\blx@tempa\currentfield}% + \ifdefvoid\currentlist{}{\let\blx@tempa\currentlist}% + \ifdefvoid\currentname{}{\let\blx@tempa\currentname}% + \ifinlistcs{#1}{abx@annotation@field@\blx@tempa}} + +% {<annotation>} +\newcommand*{\ifitemannotation}[1]{% + \ifdefvoid\currentfield{}{\let\blx@tempa\currentfield}% + \ifdefvoid\currentlist{}{\let\blx@tempa\currentlist}% + \ifdefvoid\currentname{}{\let\blx@tempa\currentname}% + \ifinlistcs{#1}{abx@annotation@item@\blx@tempa @\the\value{listcount}}} + +% {<part>}{<annotation>} +\newcommand*{\ifpartannotation}[2]{% + \ifdefvoid\currentfield{}{\let\blx@tempa\currentfield}% + \ifdefvoid\currentlist{}{\let\blx@tempa\currentlist}% + \ifdefvoid\currentname{}{\let\blx@tempa\currentname}% + \ifinlistcs{#2}{abx@annotation@part@\blx@tempa @\the\value{listcount}@#1}} + +\begingroup +\catcode`\<=12 +\catcode`\>=12 +\uccode`\<=`\ % +\uccode`\>=\endlinechar +\uppercase{\gdef\blx@bbl@verbadd@i<#1>}{% + \endgroup + \edef\NewValue{\NewValue\detokenize{#1}}} +\uppercase{\gdef\blx@bbl@verbladd@i<#1>}{% + \endgroup + \eappto\blx@tempc{{\detokenize{#1}}}}% +\endgroup + +% {<counter>}{<value>} +\protected\long\def\blx@bbl@cntdef#1#2{% + \csxappto\blx@bbl@data{% + \csname c@#1\endcsname#2\relax}} + +% {<boolean>} +\protected\def\blx@bbl@booltrue#1{% + \csgappto\blx@bbl@data{% + \toggletrue{abx@bool@#1}}} + +\protected\def\blx@bbl@boolfalse#1{% + \csgappto\blx@bbl@data{% + \togglefalse{abx@bool@#1}}} + +% {<list>}{<itemcount>}{<value>} +\protected\def\blx@bbl@listdef#1#2#3{% + \def\NewCount{#2}% + \def\NewValue{#3}% + \ifcsdef{blx@lih@#1} + {\csname blx@lih@#1\endcsname{#3}% + \ifdefvoid\NewValue} + {\@secondoftwo} + {} + {\csxappto\blx@bbl@data{% + \csname c@#1\endcsname\NewCount\relax + \def\expandafter\noexpand\csname abx@list@#1\endcsname + {\expandonce\NewValue}}}} + +% {<name>}{<itemcount>}{<nameoptions>}{<value>} +\protected\def\blx@bbl@namedef#1#2#3#4{% + \def\NewCount{#2}% + \def\NewOption{#3}% + \def\NewValue{#4}% + \ifcsdef{blx@nih@#1} + {\csname blx@nih@#1\endcsname{#4}% + \ifdefvoid\NewValue} + {\@secondoftwo} + {} + {\csxappto\blx@bbl@data{% + \csname c@#1\endcsname\NewCount\relax + \def\expandafter\noexpand\csname abx@name@#1\endcsname + {{\expandonce\NewOption}{\expandonce\NewValue}}}}} + +% blx@setp@<rs>@<sp> = map of set parent <sp> in a refsection <rs> to csv +% of set children +% blx@seti@<rs>@<sc> = position of set child <sc> in entry set in +% refsection <rs> +% blx@setc@<rs>@<sc> = map of set child <sc> in refsection <rs> to set parent + +% {<entrykey>,...} +\protected\def\blx@bbl@set#1{% + \blx@bbl@fieldedef{entryset}{\detokenize{#1}}% + \csxdef{blx@setp@\the\c@refsection @\abx@field@entrykey}{\detokenize{#1}}% + \begingroup + \blx@tempcnta\z@ + \expandafter\forcsvlist + \expandafter\blx@bbl@set@i + \expandafter{\detokenize{#1}}% + \endgroup} + +\def\blx@bbl@set@i#1{% + \advance\blx@tempcnta\@ne + \csxdef{blx@seti@\the\c@refsection @#1}{\the\blx@tempcnta}} + +% {<entrykey>} +\protected\def\blx@bbl@inset#1{% + \toggletrue{blx@setonly}% + \blx@bbl@fieldedef{entryset}{\detokenize{#1}}% + \csxdef{blx@setc@\the\c@refsection @\abx@field@entrykey}{\detokenize{#1}}} + +% {<entrykey>} +\protected\def\blx@bbl@xref#1{}% No-op to avoid an error with BibTeX .bbl + +% {<keyword>,...} +\protected\def\blx@bbl@keyw#1{% + \iftoggle{blx@skipbib} + {} + {\forcsvlist{\blx@addkeyword{\abx@field@entrykey}}{#1}% + \blx@bbl@fielddef{keywords}{#1}}} + +\def\blx@addkeyword#1#2{% + \listcsxadd{blx@keyw@\the\c@refsection @\detokenize{#2}}{#1}} + +% {<options>} +\protected\long\def\blx@bbl@options#1{% + \begingroup + \let\blx@tempa\@empty + \forcsvlist\blx@bbl@options@i{#1}% + \edef\blx@tempa{% + \endgroup + \ifx\blx@tempa\@empty + \else + \def\noexpand\abx@field@options{\expandonce\blx@tempa}% + \fi}% + \blx@tempa} + +\long\def\blx@bbl@options@i#1{\blx@bbl@options@ii#1==&} + +\long\def\blx@bbl@options@ii#1=#2=#3&{% + \ifcsundef{KV@blx@opt@ent@#1} + {\blx@warning@noline{% + Ignoring undefined option '#1'\MessageBreak + at entry '\abx@field@entrykey'}} + {\eappto\blx@tempa{% + \ifx\blx@tempa\@empty\else,\fi + \unexpanded{#1}\ifblank{#2}{}{=\unexpanded{#2}}}}} + +\def\blx@ifdata#1{% + \ifcsdef{blx@data@\the\c@refsection @\blx@refcontext@context @#1}} +\let\blx@imc@ifentryinbib\blx@ifdata + +\def\blx@getdata#1{% + \csuse{blx@data@\the\c@refsection @\blx@refcontext@context @#1}% + % Here we resolve label* bib fields to their real fields. Doing this here + % dynamically means that we can vary the field chosen depending on the refcontext. + % biber used to resolve these and materialise them in the .bbl but this + % means a static resolution which is independent of the document context. + \def\do##1{% + \ifcsdef{abx@field@##1source} + {\expandafter\def\csname abx@field@##1\endcsname{\csuse{abx@field@\csuse{abx@field@##1source}}}}% + {}}% + \dolistloop\abx@rfields% + % Just in case we ever have non-name lists to instantiate + % \def\do##1{% + % \ifcsdef{abx@field@##1source} + % {\csname c@##1\expandafter\endcsname\expandafter\the\csname c@\csuse{abx@field@##1source}\endcsname + % \csletcs{abx@list@##1}{abx@list@\csuse{abx@field@##1source}}} + % {}}% + % \dolistloop\abx@rlists% + \def\do##1{% + \ifcsdef{abx@field@##1source} + {\csname c@##1\expandafter\endcsname\expandafter\the\csname c@\csuse{abx@field@##1source}\endcsname + \csletcs{abx@name@##1}{abx@name@\csuse{abx@field@##1source}}} + {}}% + \dolistloop\abx@rnames% + \blx@setcitecounter} + +\def\blx@getdata@cite#1{% + \ifcsdef{blx@setc@\the\c@refsection @#1} + {\expandafter\expandafter\expandafter\blx@getdata + \expandafter\expandafter\expandafter{% + \csname blx@setc@\the\c@refsection @#1\endcsname}% + \blx@ifdata{#1} + {\def\abx@field@childentrykey{#1}% + \begingroup + \blx@getdata{#1}% + \edef\blx@tempa{\endgroup + \def\noexpand\abx@field@childentrytype{\abx@field@entrytype}}% + \blx@tempa} + {}} + {\blx@getdata{#1}}% + \ifcsdef{blx@seti@\the\c@refsection @#1} + {\letcs\abx@field@entrysetcount{blx@seti@\the\c@refsection @#1}} + {}} + +\def\blx@execute{% + \blx@imc@thefield{execute}} + +\def\blx@setoptions@entry{% + \blx@imc@iffieldundef{options} + {} + {\begingroup + \edef\blx@tempa{\endgroup + \noexpand\setkeys{blx@opt@ent}{\abx@field@options}}% + \blx@tempa + \blx@checkoptions@entry}} + +\def\blx@setoptions@type#1{% + \ifcsdef{blx@opts@type@#1} + {\begingroup + \edef\blx@tempa{\endgroup + \noexpand\setkeys{blx@opt@typ}{\csuse{blx@opts@type@#1}}}% + \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} + {\letcs\abx@field@entrysetcount{% + blx@seti@\the\c@refsection @\abx@field@entrykey}} + {}} + {}} + +% {<section>} +\def\blx@bbl@refsection#1{% + \begingroup + \c@refsection#1\relax} + +\def\blx@bbl@endrefsection{% + \iftoggle{blx@addset} + {\blx@addset + \global\togglefalse{blx@addset}} + {}% + \endgroup} + +% {<entrykey>} +\protected\def\blx@bbl@missing#1{% + \listcsxadd{blx@miss@\the\c@refsection}{\detokenize{#1}}% + \blx@warning@noline{% + The following entry could not be found\MessageBreak + in the database% + \ifnumgreater\c@refsection\z@ + { (refsection \the\c@refsection)} + {}:\MessageBreak + \detokenize{#1}\MessageBreak + Please verify the spelling and rerun\MessageBreak + LaTeX afterwards}} + +% We create an alias resolving macro and also a list of aliases +% which we need to add to the .bcf. We need to resolve the aliases +% for internal use but we always want the aliases themselves in the .bcf +% so that biber can correctly use and resolve them too. +\protected\def\blx@bbl@keyalias#1#2{% + \csgdef{blx@keyalias@\the\c@refsection @#1}{\detokenize{#2}}% + \listcsgadd{blx@keyaliases@\the\c@refsection}{#1}} + +% blx@slist@list@<section>@<scheme> - a list of list items in a scheme in a +% section (for tracking bibliography lists, +% obeys skipbiblist) +% blx@slist@entry@<section>@<scheme> - a list of normal entries in a scheme in a +% section (for tracking bibliographies, +% obeys skipbib) +% blx@slist@centry@<section>@<scheme> - a list of normal entries in a scheme in a +% section (for tracking citations, +% obeys skipbib). Same as @entry@ but +% with added set children + +% {<entrykey>}{<entrytype>}{<options>} +\protected\def\blx@bbl@entry#1#2#3{% + \begingroup + \edef\abx@field@entrykey{\detokenize{#1}}% + \blx@setoptions@type{#2}% + \blx@bbl@options{#3}% + \blx@setoptions@entry + \edef\blx@bbl@data{blx@data@\the\c@refsection @\blx@slist@name @\abx@field@entrykey}% + \csuse\blx@bbl@data + \blx@bbl@addfield{entrykey}{\abx@field@entrykey}% + \blx@bbl@addfield{entrytype}{#2}% + \blx@imc@iffieldundef{options} + {} + {\blx@bbl@fieldedef{options}{\expandonce\abx@field@options}}} + +\protected\def\blx@bbl@endentry{% + \csuse\blx@bbl@data + \ifcsundef{blx@pref@\the\c@refsection @\abx@field@entrykey} + {} + {\blx@addpageref{\abx@field@entrykey}}% + \nottoggle{blx@setonly} + {} + {\global\toggletrue{blx@addset}% + \toggletrue{blx@skipbib}% + \toggletrue{blx@skipbiblist}% + \toggletrue{blx@skiplab}}% + \nottoggle{blx@skipbib} + {\expandafter\ifstrequal\expandafter{\blx@slist@type}{entry} + {\listcsxadd{blx@slist@entry@\the\c@refsection @\blx@slist@name}{\abx@field@entrykey}% + \listcsxadd{blx@slist@centry@\the\c@refsection @\blx@slist@name}{\abx@field@entrykey}% + \listcsxadd{blx@type@\the\c@refsection @\abx@field@entrytype}{\abx@field@entrykey}% + \ifdef\abx@field@entrysubtype + {\listcsxadd{blx@subt@\the\c@refsection @\abx@field@entrysubtype}{\abx@field@entrykey}} + {}} + {}}% + {}% + \nottoggle{blx@skipbiblist} + {\expandafter\ifstrequal\expandafter{\blx@slist@type}{list} + {\blx@bbl@labelfields + \listcsxadd{blx@slist@\blx@slist@type @\the\c@refsection @\blx@slist@name}{\abx@field@entrykey}} + {}}% + {}% + \nottoggle{blx@skiplab} + {\iftoggle{blx@labelnumber} + {\blx@bbl@labelnumber} + {}% + \iftoggle{blx@labelalpha} + {\blx@bbl@labelalpha} + {}% + \iftoggle{blx@labeltitle} + {\blx@bbl@labeltitle} + {}% + \iftoggle{blx@labeltitleyear} + {\blx@bbl@labeltitleyear} + {}% + \iftoggle{blx@labeldate} + {\blx@bbl@labeldate} + {}} + {}% + \blx@bbl@titles + \blx@bbl@hooks + \endgroup} + +% This, at the end of the .bbl, puts any set parent children into the +% current context sort list of citations (a separate list *@centry@* to the +% bibliography *@entry@* which doesn't want the children adding if they weren't +% cited) as this is needed for the subentry citing +% when sortcites is enabled as for sortcites, the current context sorting list +% is used and the parent set of a subentry is not necessarily +% available in the current context sortlist. +\def\blx@addset{% + \begingroup + \letcs\blx@tempa{blx@slist@centry@\the\c@refsection @\blx@refcontext@context}% + \global\cslet{blx@slist@centry@\the\c@refsection @\blx@refcontext@context}\@empty + \forlistloop\blx@addset@i\blx@tempa + \endgroup} + +\def\blx@addset@i#1{% + \listcsgadd{blx@slist@centry@\the\c@refsection @\blx@refcontext@context}{#1}% + \ifcsdef{blx@setp@\the\c@refsection @#1} + {\expandafter\expandafter\expandafter\forcsvlist + \expandafter\expandafter\expandafter\blx@addset@ii + \expandafter\expandafter\expandafter{% + \csname blx@setp@\the\c@refsection @#1\endcsname}} + {}} + +\def\blx@addset@ii#1{% + \listcsgadd{blx@slist@centry@\the\c@refsection @\blx@refcontext@context}{#1}} + +\def\blx@bbl@labelfields{% + \def\do##1{% + \ifcsundef{abx@field@##1} + {} + {\blx@setlabwidth{\csname ##1width\endcsname}{% + \csuse{abx@ffd@*@##1width}{\csname abx@field@##1\endcsname}}}}% + \abx@dolabelfields} + +\def\blx@bbl@labelnumber{% + % Used at endentry, when reading .bbl + % only do this for the global sorting list otherwise we increment + % the labelnumbers for each sortlist + \ifdefempty\abx@field@localnumber + {}% only if omitnumbers=true + {\ifcsundef{abx@ffd@\blx@imc@thefield{entrytype}@labelnumberwidth} + {\letcs{\@lnw@labelnumberwidth}{abx@ffd@*@labelnumberwidth}} + {\letcs{\@lnw@labelnumberwidth}{abx@ffd@\blx@imc@thefield{entrytype}@labelnumberwidth}}% + \ifcsundef{abx@ffd@\blx@imc@thefield{entrytype}@labelprefix} + {\letcs{\@lnw@labelprefix}{abx@ffd@*@labelprefix}} + {\letcs{\@lnw@labelprefix}{abx@ffd@\blx@imc@thefield{entrytype}@labelprefix}}% + \ifcsundef{abx@ffd@\blx@imc@thefield{entrytype}@labelnumber} + {\letcs{\@lnw@labelnumber}{abx@ffd@*@labelnumber}} + {\letcs{\@lnw@labelnumber}{abx@ffd@\blx@imc@thefield{entrytype}@labelnumber}}% + \ifundef\abx@field@shorthand + {\iftoggle{blx@defernumbers} + % only if defernumbers=true, we have to define localnumber to + % something to stop labelnumberwidth def complaining on first + % post-backend run since there will be nothing in the .aux yet + % for defernums localnumbers. On the second post-backend run, + % it will have a value correct for generating labelnumberwidth + % We also have to define a dummy value for labelnumber here for + % first post-backend runs otherwise references to labelnumber + % in cite styles like numeric-comp will die. + {\ifundef\abx@field@localnumber + {\numdef\abx@field@localnumber{0}% + \blx@bbl@fielddef{labelnumber}{0}}% + {}} + {\csnumgdef{blx@labelnumber@\the\c@refsection}{% + \csuse{blx@labelnumber@\the\c@refsection}+1}% + \edef\abx@field@localnumber{% + \csuse{blx@labelnumber@\the\c@refsection}}% + \blx@bbl@fieldedef{labelnumber}{\abx@field@localnumber}}% + \iftoggle{blx@skipbib} + {} + {\blx@setlabwidth{\labelnumberwidth}{% + \csuse{@lnw@labelnumberwidth}{% + \ifdef\abx@field@labelprefix + {\csuse{@lnw@labelprefix}{\abx@field@labelprefix}} + {}% + \csuse{@lnw@labelnumber}{\abx@field@localnumber}}}}} + {\csgappto\blx@bbl@data{\let\abx@field@labelnumber\abx@field@shorthand}% + \iftoggle{blx@skipbib} + {} + {\blx@setlabwidth{\labelnumberwidth}{% + \csuse{@lnw@labelnumberwidth}{\abx@field@shorthand}}}}}} + +\def\blx@bbl@labelalpha{% + \ifundef\abx@field@labelalpha + {} + {\ifundef\abx@field@extraalpha + {} + {\ifnum\abx@field@extraalpha>\c@maxextraalpha + \global\c@maxextraalpha\abx@field@extraalpha\relax + \fi}% + \iftoggle{blx@skipbib} + {} + {\blx@setlabwidth{\labelalphawidth}{% + \csuse{abx@ffd@*@labelalphawidth}{% + \ifdef\abx@field@labelprefix + {\csuse{abx@ffd@*@labelprefix}{\abx@field@labelprefix}} + {}% + \csuse{abx@ffd@*@labelalpha}{\abx@field@labelalpha}% + \ifundef\abx@field@extraalpha + {} + {\csuse{abx@ffd@*@extraalpha}{\abx@field@extraalpha}}}}}}} + +\def\blx@bbl@labeltitle{% + \ifundef\abx@field@extratitle + {} + {\ifnum\abx@field@extratitle>\c@maxextratitle + \global\c@maxextratitle\abx@field@extratitle\relax + \fi}} + +\def\blx@bbl@labeltitleyear{% + \ifundef\abx@field@extratitleyear + {} + {\ifnum\abx@field@extratitleyear>\c@maxextratitleyear + \global\c@maxextratitleyear\abx@field@extratitleyear\relax + \fi}} + +\def\blx@bbl@labeldate{% + \ifundef\abx@field@extrayear + {} + {\ifnum\abx@field@extrayear>\c@maxextrayear + \global\c@maxextrayear\abx@field@extrayear\relax + \fi}} + +\def\blx@bbl@titles{% + \ifundef\abx@field@indextitle + {\csgappto\blx@bbl@data{% + \let\abx@field@indextitle\abx@field@title}} + {}% + \ifundef\abx@field@indexsorttitle + {\csgappto\blx@bbl@data{% + \let\abx@field@indexsorttitle\abx@field@indextitle}} + {}} + +\def\blx@bbl@hooks{% + \ifcsundef{blx@hook@bblitem@*} + {\ifcsundef{blx@hook@bblitem@\abx@field@entrytype} + {} + {\csuse\blx@bbl@data + \csuse{blx@hook@bblitem@\abx@field@entrytype}}} + {\csuse\blx@bbl@data + \csuse{blx@hook@bblitem@*}% + \csuse{blx@hook@bblitem@\abx@field@entrytype}}} + +\newrobustcmd*{\AtDataInput}[1][*]{\csgappto{blx@hook@bblitem@#1}} +\@onlypreamble\AtDataInput + +\def\blx@setlabwidth#1#2{% + \begingroup + \settowidth{\@tempdima}{\bibfont#2}% + \ifnum\@tempdima>#1% + \global#1\@tempdima + \fi + \endgroup} + +\def\blx@bblstart{% + \let\preamble\blx@bbl@preamble + \let\warn\blx@bbl@thewarn + \let\refsection\blx@bbl@refsection + \let\endrefsection\blx@bbl@endrefsection + \let\entry\blx@bbl@entry + \let\endentry\blx@bbl@endentry + \let\missing\blx@bbl@missing + \let\keyalias\blx@bbl@keyalias + \let\sortlist\blx@bbl@slist + \let\endsortlist\blx@bbl@endslist + \let\set\blx@bbl@set + \let\inset\blx@bbl@inset + \let\xref\blx@bbl@xref % A No-op for Biber + \let\keyw\blx@bbl@keyw + \let\name\blx@bbl@namedef + \let\list\blx@bbl@listdef + \let\field\blx@bbl@fielddef + \let\range\blx@bbl@rangedef + \let\strng\blx@bbl@stringdef + \let\cnt\blx@bbl@cntdef + \let\true\blx@bbl@booltrue + \let\false\blx@bbl@boolfalse + \let\verb\blx@bbl@verbdef + \let\endverb\blx@bbl@verbend + \let\lverb\blx@bbl@verbldef + \let\endlverb\blx@bbl@verblend + \let\annotation\blx@bbl@annotationdef} + +\def\blx@bblend{} + +% {<entrykey>} +% Get the saved information on which citations were mentioned last run +\protected\def\abx@aux@cite#1{% + \listxadd\blx@lastcites{\detokenize{#1}}} + +% {<sortschemename>} +% Get the saved information on which sorting schemes were mentioned last run +\protected\def\abx@aux@sortscheme#1{% + \listgadd\blx@lastsortschemes{#1}} + +% {<refcontext>} +% Get the saved information on which refcontexts were mentioned last run +\protected\def\abx@aux@refcontext#1{% + \listgadd\blx@lastrefcontexts{#1}} + +% {<sortschemename>} +% Get the saved information on which shorthand sorting schemes were mentioned last run +\protected\def\abx@aux@biblist#1{% + \listgadd\blx@lastbiblists{#1}} + +% Here we mustn't change the checksum if we used localnumbers from the +% .aux file as this means that deferred numbering is +% complete. Otherwise we get in an endless rerun loop because the +% checksum due to number changes is always different. +\AtEndDocument{% + \def\abx@aux@number#1#2#3#4#5{% + \ifblank{#5} + {} + {\nottoggle{blx@localnumber} + {\blx@addchecksum{#1}{#5}} + {}}}} + +\AtEndDocument{% + % Here we run some tests to decide if we need to issue re-run + % messages in certain circumstances. In general, if we add/remove + % any citations or add/remove any sorting schemes, we need to re-run + % biber. Also, if we have to re-run biber, we need to defer writing + % the defernumbers .aux information because it will not yet be correct. + + % Test to see if we *removed* any citations since last run + % (adding citations is dealt with naturally in \blx@citation@entry) + % If so, give a rerun biber message. This also sets the + % rerun biber toggle so defernums doesn't consume the localnumbers + % in the .aux but instead, re-writes them, which is what we need. + \begingroup + \def\do#1{\ifinlist{#1}{\blx@cites}{}{\blx@logreq@active{}}\relax}% + \dolistloop\blx@lastcites + % Special case - if we are using sortscheme "none" anywhere, then changes + % in citation order matter and we need to re-run biber. So a special test + % to see if the cites from last run are identical in order. We have + % already tested for more or less cites between runs by now, we are + % testing here for exactly the same cites by treating the cite and + % lastcite lists as strings and comparing them. This doesn't apply + % to biblist sortschemes as nobody wants to sort biblists with + % "none", since it makes no sense + \ifinlist{none}{\blx@sortschemes} + {\ifdefstrequal{\blx@cites}{\blx@lastcites} + {} + {\blx@logreq@active{}}} + {}% + % Test if we removed any mention of a reference context since last run + % If we did, we need to re-run biber + \def\do#1{\ifinlist{#1}{\blx@refcontexts}{}{\blx@logreq@active{}}\relax}% + \dolistloop\blx@lastrefcontexts + % Test if we added any mention of a reference context since last run + % If we did, we need to re-run biber + \def\do#1{\ifinlist{#1}{\blx@lastrefcontexts}{}{\blx@logreq@active{}}\relax}% + \dolistloop\blx@refcontexts + % Test if we removed any mention of a biblist since last run. + % If we did, we need to re-run biber + \def\do#1{\ifinlist{#1}{\blx@biblists}{}{\blx@logreq@active{}}\relax}% + \dolistloop\blx@lastbiblists + % Test to see if we added any mention of a biblist since last run. + % If we did, we need to re-run biber + \def\do#1{\ifinlist{#1}{\blx@lastbiblists}{}{\blx@logreq@active{}}\relax}% + \dolistloop\blx@biblists + % If we have to run biber or latex again and we are using defernumbers, + % don't write the localnumber information to the .aux file yet as we will + % potentially have to regenerate sorting order first in biber + \iftoggle{blx@defernumbers} + {\iftoggle{blx@runbiber} + {} + {\def\do#1{\blx@auxwrite\@mainaux{}{#1}} + \dolistloop\blx@localnumaux}} + {}% + \endgroup} + +% {<instcount>}{<entrykey>}{<refsection>}{<refcontext>}{<labelnumber>} +\protected\def\blx@aux@number#1#2#3#4#5{% + \blx@bbl@addentryfield{\detokenize{#2}}{#3}{localnumber}{#4}{#5}% + \blx@bbl@addentryfield{\detokenize{#2}}{#3}{labelnumber}{#4}{#5}% + \global\toggletrue{blx@localnumber}% + \ifblank{#5} + {} + {\csgdef{blx@labelnumber@#3}{#5}}} + +% Called as part of bib output for an entry +% Only used when defernumbers=true +\def\blx@addlabelnumber{% + \begingroup + \nottoggle{blx@skiplab} + {\iftoggle{blx@labelnumber} + {\ifundef\abx@field@shorthand + % Need to know if we set any localnumber from .aux file, not + % just current item. Otherwise, we may just write new + % localnumbers but not existing ones + % Also, don't want to regenerate localnumber for any key in a + % refsection which we've already seen because this has the nasty + % side-effect of incrementing the localnum counter + {\ifboolexpr { not togl {blx@localnumber} + and + not test {\ifcsdef{blx@defer@\the\c@refsection @\blx@refcontext@context @\abx@field@entrykey}} } + {\iftoggle{blx@omitnumbers} + {\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}}% + \blx@bbl@addentryfield{\abx@field@entrykey}{\the\c@refsection}% + {localnumber}{\blx@refcontext@context}{\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. + \ifcsundef{blx@defer@\the\c@refsection @\blx@refcontext@context @\abx@field@entrykey} + {\listxadd\blx@localnumaux{% + \string\abx@aux@number% + {\the\c@instcount}% + {\abx@field@entrykey}% + {\the\c@refsection}% + {\blx@refcontext@context}% + {\abx@field@localnumber}}% + % record that we have already generated and output localnum + % for this key in this refsection/refcontext + \csgdef{blx@defer@\the\c@refsection @\blx@refcontext@context @\abx@field@entrykey}{}} + {}} + {}}% + {}} + {}% + \endgroup} + +% {<sortlistname>} +\def\blx@bbl@slist[#1]#2{% + \begingroup + \def\blx@slist@type{#1}% + \def\blx@slist@name{#2}} + +\def\blx@bbl@endslist{% + \csnumgdef{blx@labelnumber@\the\c@refsection}{0}% + \endgroup} + +\def\blx@addpageref#1{% + \begingroup + \blx@tempcnta\z@ + \let\blx@tempa\@empty + \def\do##1{% + \appto\blx@tempa{{##1}}% + \advance\blx@tempcnta\@ne}% + \dolistcsloop{blx@pref@\the\c@refsection @#1}% + \edef\blx@tempa{\endgroup\noexpand\blx@bbl@listdef + {pageref}{\the\blx@tempcnta}{\blx@tempa}}% + \blx@tempa} + +%% Data input + +\def\blx@bblinput{% + \begingroup + \blx@info@noline{Trying to load bibliographic data..}% + \blx@blxinit + \blx@bblfile + \endgroup} + +\def\blx@bblfile{% + \blx@secinit + \begingroup + \blx@bblstart + \blx@ifsigned{\jobname}{bbl} + {\InputIfFileExists{\jobname.bbl} + {\blx@info@noline{... file '\jobname.bbl' found}% + \global\toggletrue{blx@bbldone}} + {\blx@info@noline{... file '\jobname.bbl' not found}% + \typeout{No file \jobname.bbl.}}} + {}% + \blx@bblend + \endgroup + % global sorting as this is called at BeginDocument + \csnumgdef{blx@labelnumber@\the\c@refsection}{0}} + +%% Bibliography + +% {<name>}{<start code>}[<end code>]{<item code>} +\newrobustcmd*{\defbibenvironment}[4]{% + \long\csdef{blx@env@#1}{#2}% + \long\csdef{blx@endenv@#1}{#3}% + \long\csdef{blx@item@#1}{#4}} + +\defbibenvironment{bibliography} + {\list{}{% + \leftmargin\bibhang + \itemindent-\leftmargin + \itemsep\bibitemsep + \parsep\bibparsep}} + {\endlist} + {\item} + +\def\do#1{% + \defbibenvironment{#1} + {\list{\thefield{#1}}{% + \labelwidth\csname #1width\endcsname + \labelsep\biblabelsep + \leftmargin\labelwidth + \advance\leftmargin\labelsep + \itemsep\bibitemsep + \parsep\bibparsep + \def\makelabel####1{####1\hss}}} + {\endlist} + {\item}} +\abx@dolabelfields + +% {<name>}[<default>]{<code>} +\newrobustcmd*{\defbibheading}[1]{% + \@ifnextchar[%] + {\blx@defbibheading{blx@head@#1}} + {\blx@defbibheading{blx@head@#1}[\bibname]}} + +\def\blx@defbibheading#1[#2]{% + \csundef{#1}% + \expandafter\newcommand\csname#1\endcsname[1][#2]} + +% {<name>}{<text>} +\newrobustcmd*{\defbibnote}[1]{% + \long\csdef{blx@note@#1}} + +% {<name>}{<code>} +\newrobustcmd*{\defbibfilter}[2]{% + \begingroup + \def\blx@flt@error{\csname blx@flt@errortrue\endcsname}% + \let\not\blx@flt@not \let\NOT\not + \let\and\blx@flt@and \let\AND\and + \let\or\blx@flt@or \let\OR\or + \letcs\({blx@flt@(} \letcs\){blx@flt@)}% + \def\section##1{\blx@flt@error}% + \def\segment##1{segment=##1}% + \def\type##1{type=##1}% + \def\subtype##1{subtype=##1}% + \def\keyword##1{keyword={##1}}% + \def\category##1{category={##1}}% + \edef\blx@tempa{\noexpand\blx@defbibfilter{#2}}% + \ifdef\blx@flt@errortrue + {\blx@err@filter} + {\let\the\relax + \let\blx@flt@item\relax + \edef\blx@tempa{\blx@tempa}% + \ifdef\blx@flt@errortrue + {\blx@err@filter} + {\csxdef{blx@filter@#1}{\blx@tempa}}}% + \endgroup} + +\def\blx@defbibfilter#1{% + \blx@defbibfilter@i#1 &} +\def\blx@defbibfilter@i#1 #2&{% + \blx@defbibfilter@ii#1==&% + \ifblank{#2}{}{\blx@defbibfilter@i#2 &}} +\def\blx@defbibfilter@ii#1=#2=#3&{% + \ifblank{#2} + {\ifblank{#1} + {} + {\ifcsdef{blx@flt@#1} + {\csname blx@flt@#1\endcsname} + {\blx@flt@error}}} + {\ifcsdef{blx@flt@#1} + {\csname blx@flt@#1\endcsname{\detokenize{#2}}} + {\blx@flt@error}}} + +\def\blx@flt@and{ and } +\def\blx@flt@or{ or } +\def\blx@flt@not{ not } +\csdef{blx@flt@(}{ ( } +\csdef{blx@flt@)}{ ) } +\def\blx@flt@segment#1{% + test {\xifinlistcs\blx@flt@item{blx@segm@\the\c@refsection @#1}}} +\def\blx@flt@type#1{% + test {\xifinlistcs\blx@flt@item{blx@type@\the\c@refsection @#1}}} +\def\blx@flt@subtype#1{% + test {\xifinlistcs\blx@flt@item{blx@subt@\the\c@refsection @#1}}} +\def\blx@flt@keyword#1{% + test {\xifinlistcs\blx@flt@item{blx@keyw@\the\c@refsection @#1}}} +\def\blx@flt@category#1{% + test {\xifinlistcs\blx@flt@item{blx@catg@#1}}} + +% {<name>}{<code>} +\newrobustcmd*{\defbibcheck}[2]{% + \csdef{blx@bibcheck@#1}{% + \togglefalse{blx@skipentry}% + \def\skipentry{\toggletrue{blx@skipentry}}% + #2\undef\skipentry}} + +% options +% We need a 2-pass structure for options in \printbibliography and +% \printbiblist because the section has to be set before any +% other options and this partly determines which list to use for later filtering +\define@key{blx@bib1}{segment}{} +\define@key{blx@bib1}{type}{} +\define@key{blx@bib1}{nottype}{} +\define@key{blx@bib1}{subtype}{} +\define@key{blx@bib1}{notsubtype}{} +\define@key{blx@bib1}{keyword}{} +\define@key{blx@bib1}{notkeyword}{} +\define@key{blx@bib1}{category}{} +\define@key{blx@bib1}{notcategory}{} +\define@key{blx@bib1}{filter}{} +\define@key{blx@bib1}{check}{} +\define@key{blx@bib1}{heading}{} +\define@key{blx@bib1}{env}{} +\define@key{blx@bib1}{title}{} +\define@key{blx@bib1}{prenote}{} +\define@key{blx@bib1}{postnote}{} +\define@key{blx@bib1}{resetnumbers}[]{} +\define@key{blx@bib1}{omitnumbers}[]{} +\define@key{blx@bib1}{prefixnumbers}{}% legacy name for labelprefix + +\define@key{blx@bib2}{section}{} +\define@key{blx@bib2}{sorting}{} + +\define@key{blx@biblist1}{segment}{} +\define@key{blx@biblist1}{type}{} +\define@key{blx@biblist1}{nottype}{} +\define@key{blx@biblist1}{subtype}{} +\define@key{blx@biblist1}{notsubtype}{} +\define@key{blx@biblist1}{keyword}{} +\define@key{blx@biblist1}{notkeyword}{} +\define@key{blx@biblist1}{category}{} +\define@key{blx@biblist1}{notcategory}{} +\define@key{blx@biblist1}{filter}{} +\define@key{blx@biblist1}{check}{} +\define@key{blx@biblist1}{heading}{} +\define@key{blx@biblist1}{env}{} +\define@key{blx@biblist1}{title}{} +\define@key{blx@biblist1}{prenote}{} +\define@key{blx@biblist1}{postnote}{} + +\define@key{blx@biblist2}{section}{} +\define@key{blx@biblist2}{sorting}{} + +\define@key{blx@bib1}{sorting}{% + \blx@warning@noline{% + sorting option to \string\printbibliography\space is no longer supported, use 'sorting' option to \string\newrefcontext}} + +\define@key{blx@bib1}{section}{% + \ifcsundef{blx@sections@#1} + {\blx@err@nosec{#1}} + {\c@refsection#1\relax + \def\blx@tempe{#1}}} + +\define@key{blx@biblist1}{section}{% + \ifcsundef{blx@sections@#1} + {\blx@err@nosec{#1}} + {\c@refsection#1\relax + \def\blx@tempe{#1}}} + +\define@key{blx@biblist1}{sorting}{% + \blx@warning@noline{% + sorting option to \string\printbiblist\space is no longer supported, use 'sorting' option to \string\newrefcontext}} + +\define@key{blx@bbg}{section}{% + \ifcsundef{blx@sections@#1} + {\blx@err@nosec{#1}} + {\c@refsection#1\relax}} + +\define@key{blx@bbc}{section}{% + \ifcsundef{blx@sections@#1} + {\blx@err@nosec{#1}} + {\c@refsection#1\relax}} + +\define@key{blx@bib2}{segment}{\blx@key@segment{#1}} +\define@key{blx@biblist2}{segment}{\blx@key@segment{#1}} + +\def\blx@key@segment#1{% + \ifcsundef{blx@segm@\the\c@refsection @#1} + {\blx@warning{Segment '#1' not found in section '\the\c@refsection'}} + {\c@refsegment#1\relax + \blx@printbibchecks + \blx@filter\blx@tempa{blx@segm@\the\c@refsection @#1}}} + +\define@key{blx@bib2}{type}{\blx@key@type{#1}} +\define@key{blx@biblist2}{type}{\blx@key@type{#1}} + +\def\blx@key@type#1{% + \ifcsundef{blx@type@\the\c@refsection @#1} + {\blx@warning{Type '#1' not found}% + \let\blx@tempa\@empty} + {\blx@printbibchecks + \iftoggle{blx@tempb} + {\togglefalse{blx@tempb}% + \blx@filter\blx@tempa{blx@type@\the\c@refsection @#1}} + {\let\blx@tempa\@empty + \blx@error + {'type' used multiple times} + {When passing multiple filter options, each entry\MessageBreak + must satisfy all conditions (AND conjunction),\MessageBreak + hence some options may not be used twice.\MessageBreak + Use 'filter' and '\string\defbibfilter' with OR conjunctions}}}} + +\define@key{blx@bib2}{nottype}{\blx@key@nottype{#1}} +\define@key{blx@biblist2}{nottype}{\blx@key@nottype{#1}} + +\def\blx@key@nottype#1{% + \ifcsundef{blx@type@\the\c@refsection @#1} + {} + {\blx@printbibchecks + \blx@notfilter\blx@tempa{blx@type@\the\c@refsection @#1}}} + +\define@key{blx@bib2}{subtype}{\blx@key@subtype{#1}} +\define@key{blx@biblist2}{subtype}{\blx@key@subtype{#1}} + +\def\blx@key@subtype#1{% + \ifcsundef{blx@subt@\the\c@refsection @#1} + {\blx@warning{Subtype '#1' not found}% + \let\blx@tempa\@empty} + {\blx@printbibchecks + \iftoggle{blx@tempb} + {\togglefalse{blx@tempb}% + \blx@filter\blx@tempa{blx@subt@\the\c@refsection @#1}} + {\let\blx@tempa\@empty + \blx@error + {'subtype' used multiple times} + {When passing multiple filter options, each entry\MessageBreak + must satisfy all conditions (AND conjunction),\MessageBreak + hence some options may not be used twice.\MessageBreak + Use 'filter' and '\string\defbibfilter' with OR conjunctions}}}} + +\define@key{blx@bib2}{notsubtype}{\blx@key@notsubtype{#1}} +\define@key{blx@biblist2}{notsubtype}{\blx@key@notsubtype{#1}} + +\def\blx@key@notsubtype#1{% + \ifcsundef{blx@subt@\the\c@refsection @#1} + {} + {\blx@printbibchecks + \blx@notfilter\blx@tempa{blx@subt@\the\c@refsection @#1}}} + +\define@key{blx@bib2}{keyword}{\blx@key@keyword{#1}} +\define@key{blx@biblist2}{keyword}{\blx@key@keyword{#1}} + +\def\blx@key@keyword#1{% + \ifcsundef{blx@keyw@\the\c@refsection @\detokenize{#1}} + {\blx@warning{Keyword '\detokenize{#1}' not found}% + \let\blx@tempa\@empty} + {\blx@printbibchecks + \blx@filter\blx@tempa{blx@keyw@\the\c@refsection @\detokenize{#1}}}} + +\define@key{blx@bib2}{notkeyword}{\blx@key@notkeyword{#1}} +\define@key{blx@biblist2}{notkeyword}{\blx@key@notkeyword{#1}} + +\def\blx@key@notkeyword#1{% + \ifcsundef{blx@keyw@\the\c@refsection @\detokenize{#1}} + {} + {\blx@printbibchecks + \blx@notfilter\blx@tempa{blx@keyw@\the\c@refsection @\detokenize{#1}}}} + +\define@key{blx@bib2}{category}{\blx@key@category{#1}} +\define@key{blx@biblist2}{category}{\blx@key@category{#1}} + +\def\blx@key@category#1{% + \ifcsundef{blx@catg@\detokenize{#1}} + {\blx@warning{Category '\detokenize{#1}' not found}% + \let\blx@tempa\@empty} + {\blx@printbibchecks + \blx@filter\blx@tempa{blx@catg@\detokenize{#1}}}} + +\define@key{blx@bib2}{notcategory}{\blx@key@notcategory{#1}} +\define@key{blx@biblist2}{notcategory}{\blx@key@notcategory{#1}} + +\def\blx@key@notcategory#1{% + \ifcsundef{blx@catg@#1} + {} + {\blx@printbibchecks + \blx@notfilter\blx@tempa{blx@catg@#1}}} + +\define@key{blx@bib2}{filter}{\blx@key@filter{#1}} +\define@key{blx@biblist2}{filter}{\blx@key@filter{#1}} + +\def\blx@key@filter#1{% + \ifcsdef{blx@filter@#1} + {\blx@printbibchecks + \blx@bibfilter\blx@tempa{blx@filter@#1}} + {\let\blx@tempa\@empty + \blx@error + {Filter '#1' not found} + {The filter '#1' could not be found.\MessageBreak + Use \string\defbibfilter\space to define it}}} + +\define@key{blx@bib2}{check}{\blx@key@bibcheck{#1}} +\define@key{blx@biblist2}{check}{\blx@key@bibcheck{#1}} + +\def\blx@key@bibcheck#1{% + \ifcsdef{blx@bibcheck@#1} + {\letcs\blx@bibcheck{blx@bibcheck@#1}} + {\let\blx@tempa\@empty + \blx@error + {Check '#1' not found} + {The check '#1' could not be found.\MessageBreak + Use \string\defbibcheck\space to define it}}} + +\define@key{blx@bhd}{heading}{\blx@key@heading{#1}} +\define@key{blx@bib2}{heading}{\blx@key@heading{#1}} +\define@key{blx@biblist2}{heading}{\blx@key@heading{#1}} +\define@key{blx@bbs}{heading}{\blx@key@heading{#1}} +\define@key{blx@bbg}{heading}{\blx@key@heading{#1}} + +\def\blx@key@heading#1{% + \ifcsundef{blx@head@#1} + {\blx@error + {Heading '#1' not found} + {The heading '#1' could not be found.\MessageBreak + Use \string\defbibheading\space to define it}} + {\def\blx@theheading{#1}}} + +\define@key{blx@bib2}{env}{\blx@key@env{#1}} +\define@key{blx@biblist2}{env}{\blx@key@env{#1}} +\define@key{blx@bbs}{env}{\blx@key@env{#1}} +\define@key{blx@bbg}{env}{\blx@key@env{#1}} +\define@key{blx@bbc}{env}{\blx@key@env{#1}} + +\def\blx@key@env#1{% + \ifcsundef{blx@env@#1} + {\blx@error + {Environment '#1' not found} + {The environment '#1' could not be found.\MessageBreak + Use \string\defbibenvironment\space to define it}} + {\def\blx@theenv{#1}}} + +\define@key{blx@bhd}{title}{\def\blx@thetitle{#1}} +\define@key{blx@bib2}{title}{\def\blx@thetitle{#1}} +\define@key{blx@biblist2}{title}{\def\blx@thetitle{#1}} + +\define@key{blx@bib2}{prenote}{\blx@key@prenote{#1}} +\define@key{blx@biblist2}{prenote}{\blx@key@prenote{#1}} +\define@key{blx@bbs}{prenote}{\blx@key@prenote{#1}} +\define@key{blx@bbg}{prenote}{\blx@key@prenote{#1}} +\define@key{blx@bbc}{prenote}{\blx@key@prenote{#1}} +\def\blx@key@prenote#1{% + \ifcsundef{blx@note@#1} + {\blx@error + {Note '#1' not found} + {The note '#1' could not be found.\MessageBreak + Use \string\defbibnote\space to define it}} + {\def\blx@theprenote{#1}}} + +\define@key{blx@bib2}{postnote}{\blx@key@postnote{#1}} +\define@key{blx@biblist2}{postnote}{\blx@key@postnote{#1}} +\define@key{blx@bbs}{postnote}{\blx@key@postnote{#1}} +\define@key{blx@bbg}{postnote}{\blx@key@postnote{#1}} +\define@key{blx@bbc}{postnote}{\blx@key@postnote{#1}} + +\def\blx@key@postnote#1{% + \ifcsundef{blx@note@#1} + {\blx@error + {Note '#1' not found} + {The note '#1' could not be found.\MessageBreak + Use \string\defbibnote\space to define it}} + {\def\blx@thepostnote{#1}}} + +\define@key{blx@bib2}{resetnumbers}[true]{% + \iftoggle{blx@defernumbers} + {\ifstrequal{#1}{true} + {\csnumdef{blx@labelnumber@\the\c@refsection}{0}} + {\ifstrequal{#1}{false} + {} + {\csnumdef{blx@labelnumber@\the\c@refsection}{#1-1}}}} + {\blx@warning{% + Option 'resetnumbers' requires 'defernumbers=true'.\MessageBreak + Ignoring 'resetnumbers=true'}}} + +\define@key{blx@bib2}{omitnumbers}[true]{% + \ifstrequal{#1}{true} + {\iftoggle{blx@defernumbers} + {\toggletrue{blx@omitnumbers}} + {\blx@warning{% + Option 'omitnumbers' requires 'defernumbers=true'.\MessageBreak + Ignoring 'omitnumbers=true'}}} + {}} + +\define@key{blx@bib2}{prefixnumbers}{% + \blx@warning@noline{% + prefixnumbers option to \string\printbibliography\space is no longer supported, use 'labelprefix' option to \string\newrefcontext}} + +% [<options>] +\newrobustcmd*{\printbibheading}{% + \begingroup + \edef\on@line{\on@line}% + \@ifnextchar[%] + {\blx@printbibheading} + {\blx@printbibheading[]}} + +\def\blx@printbibheading[#1]{% + \def\blx@theheading{bibliography}% + \let\blx@thetitle\@empty + \blx@safe@actives + \setkeys{blx@bhd}{#1}% + \blx@rest@actives + \blx@langstrings + \blx@bibheading\blx@theheading\blx@thetitle + \endgroup} + +% [<options>] +\newrobustcmd*{\printbibliography}{% + \begingroup + \delimcontext{bib}% + \edef\on@line{\on@line}% + \@ifnextchar[%] + {\blx@printbibliography} + {\blx@printbibliography[]}} + +\def\blx@printbibliography[#1]{% + \ifdefempty\blx@refcontext@labelprefix + {} + {\csnumdef{blx@labelnumber@\the\c@refsection}{0}}% + \toggletrue{blx@tempa}% + \toggletrue{blx@tempb}% + \def\blx@theheading{bibliography}% + \def\blx@theenv{bibliography}% + \let\blx@theprenote\@empty + \let\blx@thepostnote\@empty + \let\blx@thetitle\@empty + % defaults + \let\blx@tempa\@empty% before there is a .bbl, this must not be undef + \edef\blx@tempd{% + \blx@xml@sorting{% + \ifcsdef{blx@sortdef@locale@\blx@refcontext@sorting} + { locale="\csuse{blx@sortdef@locale@\blx@refcontext@sorting}"} + {}}{% + \csuse{blx@sorting@\blx@refcontext@sorting}}}% default to context + \edef\blx@tempe{\the\c@refsection}% default refsection is current + \blx@safe@actives + \edef\blx@tempd{% + \blx@xml@sorting{% + \ifcsdef{blx@sortdef@locale@\blx@refcontext@sorting} + { locale="\csuse{blx@sortdef@locale@\blx@refcontext@sorting}"} + {}}{% + \csuse{blx@sorting@\blx@refcontext@sorting}}}% + \setkeys{blx@bib1}{#1}% Set section only, if present ... + \blx@rest@actives + \ifcsvoid{blx@slist@entry@\blx@tempe @\blx@refcontext@context} + {} + {\letcs\blx@tempa{blx@slist@entry@\blx@tempe @\blx@refcontext@context}}% + \blx@safe@actives + % Must reset omitnumbers as it's a global macro and if we don't, any + % \printbibliography following one with this set will inherit any + % previous "true" value + \togglefalse{blx@omitnumbers}% + \setkeys{blx@bib2}{#1}% ... now we have correct \blx@tempa, set rest of options + \blx@rest@actives + \csxappto{blx@slists}{% + \blx@xml@slist{\blx@refcontext@context}{entry}{\blx@tempe}{\blx@refcontext@sorting}{\blx@refcontext@sortingnamekey}{\blx@refcontext@labelprefix}{\blx@tempd}{}}% + \ifdefvoid\blx@tempa + {\blx@warn@bibempty\endgroup} + {\blx@bibliography\blx@tempa}} + +% [<options>] +\newrobustcmd*{\bibbysection}{% + \begingroup + \delimcontext{bib}% + \ifnum\blx@maxsection=\z@ + \blx@warning{No reference sections found}% + \fi + \edef\on@line{\on@line}% + \@ifnextchar[%] + {\blx@bibbysection} + {\blx@bibbysection[]}} + +\def\blx@bibbysection[#1]{% + \def\blx@theheading{bibliography}% + \def\blx@theenv{bibliography}% + \let\blx@theprenote\@empty + \let\blx@thepostnote\@empty + \let\blx@thetitle\@empty + \c@refsection\z@ + \blx@safe@actives + \setkeys{blx@bbs}{#1}% + \blx@rest@actives + \togglefalse{blx@tempa}% + \blx@refsections} + +\def\blx@refsections{% + \ifcsvoid{blx@slist@entry@\the\c@refsection @\blx@refcontext@context} + {} + {\toggletrue{blx@tempa}% + \begingroup + \expandafter\blx@bibliography\csname blx@slist@entry@\the\c@refsection @\blx@refcontext@context\endcsname}% + \ifnum\c@refsection<\blx@maxsection + \advance\c@refsection\@ne + \expandafter\blx@refsections + \else + \iftoggle{blx@tempa}{}{\blx@warn@bibempty}% + \endgroup + \fi} + +% [<options>] +\newrobustcmd*{\bibbysegment}{% + \begingroup + \delimcontext{bib}% + \edef\on@line{\on@line}% + \ifnum\csname blx@maxsegment@\the\c@refsection\endcsname=\z@ + \blx@warning{No reference segments found}% + \fi + \@ifnextchar[%] + {\blx@bibbysegment} + {\blx@bibbysegment[]}} + +\def\blx@bibbysegment[#1]{% + \def\blx@theheading{bibliography}% + \def\blx@theenv{bibliography}% + \let\blx@theprenote\@empty + \let\blx@thepostnote\@empty + \let\blx@thetitle\@empty + \c@refsegment\@ne + \blx@safe@actives + \setkeys{blx@bbg}{#1}% + \blx@rest@actives + \togglefalse{blx@tempa}% + \blx@refsegments} + +\def\blx@refsegments{% + \ifcsvoid{blx@segm@\the\c@refsection @\the\c@refsegment} + {} + {\toggletrue{blx@tempa}% + \begingroup + \let\blx@tempa\@empty + \ifcsvoid{blx@slist@entry@\the\c@refsection @\blx@refcontext@context} + {} + {\letcs\blx@tempa{blx@slist@entry@\the\c@refsection @\blx@refcontext@context}}% + \blx@filter\blx@tempa{blx@segm@\the\c@refsection @\the\c@refsegment}% + \blx@bibliography\blx@tempa}% + \ifnum\c@refsegment<\csname blx@maxsegment@\the\c@refsection\endcsname + \advance\c@refsegment\@ne + \expandafter\blx@refsegments + \else + \iftoggle{blx@tempa}{}{\blx@warn@bibempty}% + \endgroup + \fi} + +% [<options>] +\newrobustcmd*{\bibbycategory}{% + \begingroup + \delimcontext{bib}% + \edef\on@line{\on@line}% + \ifx\blx@categories\@empty + \blx@warning{No categories found}% + \fi + \@ifnextchar[%] + {\blx@bibbycategory} + {\blx@bibbycategory[]}} + +\def\blx@bibbycategory[#1]{% + \def\blx@theheading{bibliography}% + \def\blx@theenv{bibliography}% + \let\blx@theprenote\@empty + \let\blx@thepostnote\@empty + \let\blx@thetitle\@empty + \c@refsection\z@ + \blx@safe@actives + \setkeys{blx@bbc}{#1}% + \blx@rest@actives + \togglefalse{blx@tempa}% + \forlistloop\blx@bibcategory\blx@categories + \blx@endbibcategory} + +\def\blx@bibcategory#1{% + \ifcsvoid{blx@catg@#1} + {} + {\toggletrue{blx@tempa}% + \begingroup + \blx@key@heading{#1}% + \let\blx@tempa\@empty + \ifcsvoid{blx@slist@entry@\the\c@refsection @\blx@refcontext@context} + {} + {\letcs\blx@tempa{blx@slist@entry@\the\c@refsection @\blx@refcontext@context}}% + \blx@filter\blx@tempa{blx@catg@#1}% + \blx@bibliography\blx@tempa}}% + +\def\blx@endbibcategory{% + \iftoggle{blx@tempa}{}{\blx@warn@bibempty}% + \endgroup} + +% {<entrykey>,...} +\def\blx@bibliography{% + \blx@langstrings + \blx@bibheading\blx@theheading\blx@thetitle + \blx@bibnote\blx@theprenote + \begingroup + \blx@bibinit + \let\@noitemerr\@empty + \let\blx@noitem\blx@warn@bibempty + \ifnum\bibinitsep=\z@ + \let\blx@initsep\relax + \fi + \ifnum\bibnamesep=\z@ + \let\blx@namesep\relax + \fi + \csuse{blx@env@\blx@theenv}% + \csuse{blx@hook@bibinit}% + \csuse{blx@hook@bibinit@next}% + \let\blx@do\blx@bibitem + \let\blx@done\blx@endbibliography + \blx@listloop} + +\def\blx@endbibliography{% + \csuse{blx@endenv@\blx@theenv}% + \blx@noitem + \endgroup + \blx@bibnote\blx@thepostnote + \endgroup} + +\def\blx@bibheading#1#2{% + \begingroup + \edef\blx@tempa{\endgroup + \noexpand\blx@bibheading@i{\expandonce#1}{\expandonce#2}}% + \blx@tempa} + +\def\blx@bibheading@i#1#2{% + \let\newrefsection\relax + \let\newrefsegment\relax + \ifblank{#2} + {\csuse{blx@head@#1}} + {\csuse{blx@head@#1}[#2]}% + \let\newrefsection\blx@newrefsection + \let\newrefsegment\blx@newrefsegment} + +\def\blx@bibnote#1{% + \ifdefempty#1 + {} + {\begingroup + \let\newrefsection\relax + \let\newrefsegment\relax + \noindent + \csuse{blx@note@#1}\par\nobreak + \endgroup}} + +\def\blx@bibinit{% + \iftoggle{blx@citation} + {} + {\toggletrue{blx@bibliography}}% + \blx@blxinit + \blx@resetdata + \csuse{blx@hook@bbxinit}% + \bibsetup\bibfont + \blx@setsfcodes + \csuse{blx@bibsetup}} + +% {<entrykey>} +% output a bib item, this is why \blx@thelabelnumber is here so that +% labelnumber is deferred if defernumbers=true +\def\blx@bibitem#1{% + \blx@ifdata{#1} + {\begingroup + \blx@getdata{#1}% + \blx@bibcheck + \iftoggle{blx@skipentry}{}{% + \blx@setdefaultrefcontext{#1}% + \global\let\blx@noitem\@empty + \blx@setoptions@type\abx@field@entrytype + \blx@setoptions@entry + \blx@thelabelnumber + \addtocounter{instcount}\@ne + \csuse{blx@item@\blx@theenv}\relax + \blx@initsep + \blx@namesep + \csuse{blx@hook@bibitem}% + \blx@execute + \blx@initunit + \blx@anchor + \blx@beglangbib + \bibsentence + \blx@pagetracker + \blx@driver\abx@field@entrytype + \blx@postpunct + \blx@endlangbib}% + \endgroup} + {}} + +\let\blx@bibcheck\relax + +% This sets and saves to the .aux the default refcontext for an entry. The +% default refcontext for an entry is the refcontext of the last +% bibliography in the refsection in which it is actually printed . This +% allows citations to default to selecting data from the correct +% bibliography list in standard cases where entries are not listed in +% multiple bibliographies +\def\blx@setdefaultrefcontext#1{% + \ifbool{refcontextdefaults} + {\blx@rerun@latex}% + {}% + \ifinlistcs{#1}{blx@defaultrefcontexts@\the\c@refsection} + {} + {\listcsgadd{blx@defaultrefcontexts@\the\c@refsection}{#1}}% + \csxdef{blx@assignedrefcontextbib@\the\c@refsection @#1}{\blx@refcontext@context}} +% <refsection><key><refcontext> +\def\abx@aux@defaultrefcontext#1#2#3{% + \global\boolfalse{refcontextdefaults}% + \csxdef{blx@assignedrefcontextbib@#1@#2}{#3}} +\def\abx@aux@refcontextdefaultsdone{% + \global\boolfalse{refcontextdefaults}} + +\AtEndDocument{% + % write the .aux to say we don't need to re-run to consume refcontext defaults + \ifbool{refcontextdefaults} + {} + {\blx@auxwrite\@mainaux{}{\string\abx@aux@refcontextdefaultsdone}}% + % always add default refcontext declarations to .aux after biber run + \iftoggle{blx@bbldone} + {\def\do#1{% + \begingroup + \def\do##1{% + \blx@auxwrite\@mainaux{}{\string\abx@aux@defaultrefcontext{#1}{##1}{\csuse{blx@assignedrefcontextbib@#1@##1}}}}% + \dolistcsloop{blx@defaultrefcontexts@#1}% + \endgroup} + \dolistloop\blx@allrefsections} + {}} + +\def\blx@initsep{% + \blx@imc@iffieldundef{sortinithash} + {} + {\ifnum\c@instcount>\@ne + \blx@imc@iffieldequals{sortinithash}\blx@previnithash + {} + {\addvspace{\bibinitsep}}% + \fi + \global\let\blx@previnithash\abx@field@sortinithash}} + +\def\blx@namesep{% + \ifnum\c@instcount>\@ne + \blx@imc@iffieldequals{fullhash}\blx@prevhash + {} + {\addvspace{\bibnamesep}}% + \fi + \global\let\blx@prevhash\abx@field@fullhash} + +\newrobustcmd*{\AtBeginBibliography}{\gappto\blx@hook@bibinit} +\newrobustcmd*{\AtEveryBibitem}{\gappto\blx@hook@bibitem} +\@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}} + {}% + \gappto\blx@hook@bibinit@next} + +% page tracker +\def\blx@pagetracker@context{% + \blx@leavevmode + \ifbool{@filesw} + {\ifbool{pagetracker} + {\protected@write\@mainaux{}{% + \iftoggle{blx@footnote} + {\string\abx@aux@fnpage} + {\string\abx@aux@page}% + {\the\c@instcount}{\noexpand\the\c@page}}} + {}} + {}} + +% {<instcount>}{<page>} +\protected\def\blx@aux@page#1#2{% + \csgdef{blx@page@#1}{#2}% + \blx@addpagesum{#1}{#2}} +\protected\def\blx@aux@spread#1#2{% + \ifodd#2\relax + \csxdef{blx@page@#1}{\number\numexpr#2-1}% + \else + \csgdef{blx@page@#1}{#2}% + \fi + \blx@addpagesum{#1}{#2}} + +\protected\def\blx@aux@fnpage#1#2{% + \csgdef{blx@fnpage@#1}{#2}% + \blx@addpagesum{#1}{#2}} +\protected\def\blx@aux@fnspread#1#2{% + \ifodd#2\relax + \csxdef{blx@fnpage@#1}{\number\numexpr#2-1}% + \else + \csgdef{blx@fnpage@#1}{#2}% + \fi + \blx@addpagesum{#1}{#2}} + +\AtEndDocument{% + \def\abx@aux@page#1#2{\blx@addpagesum{#1}{#2}}% + \def\abx@aux@fnpage#1#2{\blx@addpagesum{#1}{#2}}} + +% hyperref interface +\appto\blx@mkhyperref{% + \let\blx@anchors\@empty + \ifundef\hyper@natanchorstart + {\protected\def\blx@anchor{% + \xifinlist{\the\c@refsection @\abx@field@entrykey}{\blx@anchors} + {} + {\listxadd\blx@anchors{\the\c@refsection @\abx@field@entrykey}% + \hypertarget{cite.\the\c@refsection @\abx@field@entrykey}{}}}} + {\protected\def\blx@anchor{% + \xifinlist{\the\c@refsection @\abx@field@entrykey}{\blx@anchors} + {} + {\listxadd\blx@anchors{\the\c@refsection @\abx@field@entrykey}% + \hyper@natanchorstart{\the\c@refsection @\abx@field@entrykey}% + \hyper@natanchorend}}}} + +\appto\blx@mknohyperref{\let\blx@anchor\relax} + +% Legacy alias for \printshorthands +\def\printshorthands{% + \@ifnextchar[%] + {\blx@printshorthands} + {\blx@printshorthands[]}} + +\def\blx@printshorthands[#1]{\printbiblist[#1]{shorthand}} + +% Custom bibliography list +% [<otions>]{biblistname} +\newrobustcmd*{\printbiblist}[2][]{% + \begingroup + \delimcontext{biblist}% + \edef\on@line{\on@line}% + \toggletrue{blx@tempa}% + \toggletrue{blx@tempb}% + \def\blx@theheading{biblist}% default to biblist heading + \def\blx@theenv{#2}% default to list name + \def\blx@thebiblist{#2}% + \let\blx@theprenote\@empty + \let\blx@thepostnote\@empty + \let\blx@thetitle\@empty + % defaults + \let\blx@tempa\@empty% before there is a .bbl, this must not be undef + % default sorting scheme and scheme name for list is same name as list + % name, then current context if not found + \edef\blx@tempc{% + \ifcsdef{blx@sorting@#2} + {#2} + {\blx@refcontext@sorting}}% + % locally define this since we want to fetch data from the slist named + % after the list we are printing rather than the data in refcontext list + \edef\blx@refcontext@context{\blx@tempc/\blx@refcontext@sortingnamekey/\blx@refcontext@labelprefix}% + \edef\blx@tempd{% + \blx@xml@sorting + {\ifcsdef{blx@sortdef@locale@#2} + { locale="\csuse{blx@sortdef@locale@#2}"} + {}} + {\csuse{blx@sorting@\blx@tempc}}}% + \let\blx@printbibchecks\relax + \edef\blx@tempe{\the\c@refsection}% default refsection is current + \blx@safe@actives + \blx@printbibchecks + % Add the sortscheme to the list of sortschemes for this biblist + % so we can compare on next run + \xifinlist{\blx@tempc}{\blx@biblists} + {} + {\listxadd\blx@biblists\blx@tempc + \blx@auxwrite\@mainaux{}{\string\abx@aux@biblist{\blx@tempc}}}% + \edef\blx@tempd{% + \blx@xml@sorting{% + \ifcsdef{blx@sortdef@locale@\blx@tempc} + { locale="\csuse{blx@sortdef@locale@\blx@tempc}"} + {}}{% + \csuse{blx@sorting@\blx@tempc}}}% + \setkeys{blx@biblist1}{#1}% Set section only, if present ... + \blx@rest@actives + \ifcsvoid{blx@slist@list@\blx@tempe @\blx@refcontext@context} + {} + {\letcs\blx@tempa{blx@slist@list@\blx@tempe @\blx@refcontext@context}}% + \blx@safe@actives + \setkeys{blx@biblist2}{#1}% ... now we have correct \blx@tempa, set rest of options + \ifundef\blx@bibcheck + {\ifcsdef{blx@bibcheck@#2} + {\letcs\blx@bibcheck{blx@bibcheck@#2}} + {}} + {}% + \blx@rest@actives + \csxappto{blx@slists}{% + \blx@xml@slist{\blx@refcontext@context}{list}{\blx@tempe}{\blx@tempc}{\blx@refcontext@sortingnamekey}{\blx@refcontext@labelprefix}{\blx@tempd}{\csuse{blx@biblistfilters@#2}}}% + \ifdefvoid\blx@tempa + {\blx@warn@biblistempty{#2}\endgroup} + {\blx@biblist\blx@tempa}} + +\def\blx@printbibchecks{% + \togglefalse{blx@tempa}% + \iftoggle{blx@defernumbers} + {\global\let\blx@printbibchecks\relax} + {\iftoggle{blx@labelnumber} + {\blx@warning@noline{Setting 'defernumbers=true' recommended}} + {\global\let\blx@printbibchecks\relax}}} + +% {<entrykey>,...} +\def\blx@biblist{% + \if@twocolumn + \@restonecoltrue\onecolumn + \else + \@restonecolfalse + \fi + \blx@langstrings + \blx@bibheading\blx@theheading\blx@thetitle + \blx@bibnote\blx@theprenote + \begingroup + \blx@bibinit + \let\@noitemerr\@empty + \def\blx@noitem{\blx@warn@biblistempty{\blx@thebiblist}}% + \csuse{blx@env@\blx@theenv}% + \csuse{blx@hook@biblistinit@\blx@thebiblist}% + \let\blx@do\blx@biblistitem + \let\blx@done\blx@endbiblist + \blx@listloop} + +\def\blx@endbiblist{% + \csuse{blx@endenv@\blx@theenv}% + \blx@noitem + \endgroup + \blx@bibnote\blx@thepostnote + \endgroup + \if@restonecol\twocolumn\fi} + +% Legacy aliases +\def\AtBeginShorthands{\AtBeginBiblist{shorthand}} +\def\AtEveryLositem{\AtEveryBiblistitem{shorthand}} +\@onlypreamble\AtBeginShorthands +\@onlypreamble\AtEveryLositem + +% {<biblistname>} +\newrobustcmd*{\AtBeginBiblist}[1]{\csgappto{blx@hook@biblistinit@#1}} +\newrobustcmd*{\AtEveryBiblistitem}[1]{\csgappto{blx@hook@biblistitem@#1}} +\@onlypreamble\AtBeginBiblist +\@onlypreamble\AtEveryBiblistitem + +% {<entrykey>} +\def\blx@biblistitem#1{% + \blx@ifdata{#1} + {\begingroup + \blx@getdata{#1}% + \blx@bibcheck + \iftoggle{blx@skipentry}{}{% + \blx@setdefaultrefcontext{#1}% + \global\let\blx@noitem\@empty + \blx@setoptions@type\abx@field@entrytype + \blx@setoptions@entry + \addtocounter{instcount}\@ne + \csuse{blx@item@\blx@theenv}\relax + \csuse{blx@hook@biblistitem@\blx@thebiblist}% + \blx@execute + \blx@initunit + \blx@beglangbib + \bibsentence + \blx@pagetracker + \blx@driver{\blx@thebiblist}% + \blx@postpunct + \blx@endlangbib}% + \endgroup} + {}} + +% Just a default in case .bbx doesn't define it. standard.bbx defines +% it to print a complete entry, like the bibliography. +\DeclareBibliographyDriver{shorthand}{% + \iffieldundef{shorttitle} + {\printfield{title}} + {\printfield{shorttitle}}} + +% Reference contexts +\def\newrefcontext{% + \endrefcontext + \refcontext} + +\def\refcontext[#1]{% + \iftoggle{blx@refcontext} + {\blx@err@nestenv{refcontext}% + \endrefcontext} + {\toggletrue{blx@refcontext}% + \setkeys{blx@refcontext}{#1}% + % Add the sortscheme to the list of sortschemes so we can track + % special cases like sorting=none which need cite order change detection + \xifinlist\blx@refcontext@sorting\blx@sortschemes + {} + {\listxadd\blx@sortschemes\blx@refcontext@sorting + \blx@auxwrite\@mainaux{}{\string\abx@aux@sortscheme{\blx@refcontext@sorting}}}% + \xdef\blx@refcontext@context{\blx@refcontext@sorting/\blx@refcontext@sortingnamekey/\blx@refcontext@labelprefix}% + % Add the refcontext to the list of refcontexts so we can compare on next run + \xifinlist\blx@refcontext@context\blx@refcontexts + {} + {\listxadd\blx@refcontexts\blx@refcontext@context + \blx@auxwrite\@mainaux{}{\string\abx@aux@refcontext{\blx@refcontext@context}}}% + \ifcsundef{blx@sorting@\blx@refcontext@sorting} + {\blx@err@invopt{sorting=\blx@refcontext@sorting}{}} + {}% + \ifcsundef{blx@sortingnamekey@\blx@refcontext@sortingnamekey} + {\blx@err@invopt{sortingnamekeyscheme=\blx@refcontext@sortingnamekey}{}} + {}}} + +% Reset to global sorting etc. when we leave a ref context (since they can't be nested) +\protected\def\endrefcontext{% + \togglefalse{blx@refcontext}% + \global\let\blx@refcontext@labelprefix\@empty + \xdef\blx@refcontext@sorting{\blx@sorting}% + \gdef\blx@refcontext@sortingnamekey{global}% + \xdef\blx@refcontext@context{\blx@refcontext@sorting/\blx@refcontext@sortingnamekey/}} + +\define@key{blx@refcontext}{sorting}{\gdef\blx@refcontext@sorting{#1}} +\define@key{blx@refcontext}{sortingnamekeyscheme}{\gdef\blx@refcontext@sortingnamekey{#1}} +\define@key{blx@refcontext}{labelprefix}{% + \gdef\blx@refcontext@labelprefix{#1}% + \iftoggle{blx@defernumbers} + {}% + {\iftoggle{blx@labelnumber} + {\blx@warning{% + Option 'labelprefix' requires global\MessageBreak + 'defernumbers=true'}} + {}}} +\define@key{blx@refcontext}{prefixnumbers}{% legacy + \blx@warning@noline{% + prefixnumbers option to \string\newrefcontext\space has been renamed, + use 'labelprefix' option instead}% + \setkeys{blx@refcontext}{labelprefix=#1}} + +% [refcontext keys]{<keyword1>,<keyword2>,...} +\newcommand*{\assignrefcontextkeyws}{% + \@ifstar + {\blx@assignrefcontextkeyws[*]} + {\blx@assignrefcontextkeyws[]}} + +\def\blx@assignrefcontextkeyws[#1][#2]#3{% + \edef\blx@tempa{\blx@sorting}% + \def\blx@tempb{global}% + \let\blx@tempc\@empty% + \setkeys{blx@assignrefcontext}{#2}% + \def\do##1{% + \listxadd\blx@assignedrefcontextkeywlist{##1}% + \csxdef{blx@assignedrefcontextkeyws#1@\the\c@refsection @##1}{\blx@tempa/\blx@tempb/\blx@tempc}} + \docsvlist{#3}} + +% [refcontext keys]{<category1>,<category2>,...} +\newcommand*{\assignrefcontextcats}{% + \@ifstar + {\blx@assignrefcontextcats[*]} + {\blx@assignrefcontextcats[]}} + +\def\blx@assignrefcontextcats[#1][#2]#3{% + \edef\blx@tempa{\blx@sorting}% + \def\blx@tempb{global}% + \let\blx@tempc\@empty% + \setkeys{blx@assignrefcontext}{#2}% + \def\do##1{% + \listxadd\blx@assignedrefcontextcatlist{##1}% + \csxdef{blx@assignedrefcontextcats#1@\the\c@refsection @##1}{\blx@tempa/\blx@tempb/\blx@tempc}} + \docsvlist{#3}} + +% [refcontext keys]{<entrykey1>,<entrykey2>,...} +\newcommand*{\assignrefcontextentries}{% + \@ifstar + {\blx@assignrefcontextentries[*]} + {\blx@assignrefcontextentries[]}} + +\def\blx@assignrefcontextentries[#1][#2]#3{% + \edef\blx@tempa{\blx@sorting}% + \def\blx@tempb{global}% + \let\blx@tempc\@empty% + \setkeys{blx@assignrefcontext}{#2}% + \def\do##1{% + \csxdef{blx@assignedrefcontextkeys#1@\the\c@refsection @##1}{\blx@tempa/\blx@tempb/\blx@tempc}}% + \docsvlist{#3}} + +\define@key{blx@assignrefcontext}{sorting}{\def\blx@tempa{#1}} +\define@key{blx@assignrefcontext}{sortingnamekeyscheme}{\def\blx@tempb{#1}} +\define@key{blx@assignrefcontext}{labelprefix}{\def\blx@tempc{#1}} + +% Reference sections +\newrobustcmd*{\newrefsection}{% + \ifnum\c@refsection>\z@ + \endrefsection + \fi + \refsection} +\let\blx@newrefsection\newrefsection + +\newrobustcmd*{\refsection}{% + \begingroup + \edef\on@line{\on@line}% + \ifnum\c@refsection>\z@ + \blx@err@nestenv{refsection}% + \blx@endrefsection + \fi + \ifnum\c@refsegment>\z@ + \blx@err@nestenv{refsection}% + \blx@endrefsegment + \fi + \@ifnextchar[%] + {\blx@refsection} + {\blx@refsection[]}} + +\def\blx@refsection{% + \begingroup + \blx@hook@fileverb + \blx@refsection@i} + +\def\blx@refsection@i[#1]{% + \endgroup + \global\advance\blx@maxsection\@ne + \global\c@refsection\blx@maxsection + \xifinlist{\the\c@refsection}\blx@allrefsections + {} + {\listxadd\blx@allrefsections{\the\c@refsection}}% + \ifcsdef{blx@defaultrefcontexts@\the\c@refsection} + {} + {\global\cslet{blx@defaultrefcontexts@\the\c@refsection}\@empty}% + \expandafter\newcount\csname blx@maxsegment@\the\c@refsection\endcsname + \expandafter\newcount\csname blx@sectionciteorder@\the\c@refsection\endcsname + \blx@inf@refsec + \blx@secinit + \if@filesw + \blx@auxwrite\@mainaux{}{% + \string\abx@aux@refsection{\the\c@refsection}{\the\c@page}}% + \ifblank{#1} + {} + {\let\blx@bibfiles\@empty + % 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@ii + \fi + \blx@info{Setting label 'refsection:\the\c@refsection'}% + \label{refsection:\the\c@refsection}% + \endgroup} + +\def\blx@refsection@addfile#1{% + \ifcsdef{blx@res@labl@#1} + {\blx@refsection@addfile@i{\csuse{blx@res@labl@#1}}} + {\blx@refsection@addfile@i{#1}}} + +\def\blx@refsection@addfile@i#1{% + \ifcsdef{blx@res@loca@#1} + {\listeadd\blx@bibfiles{#1}} + {\listeadd\blx@bibfiles{\blx@stripbib{#1}\detokenize{.bib}}}} + +\def\blx@refsection@ii{% + \blx@regbibfiles\jobname\blx@bibfiles + \begingroup + \let\blx@tempa\@empty + \blx@bibdata\blx@tempa\blx@bibfiles + \blx@auxwrite\blx@bcfout + {\let\do\blx@datasource} + {\blx@xml@endsection\blx@nl + \blx@xml@comment{SECTION \the\c@refsection}% + \blx@xml@bibdata{\the\c@refsection}{\blx@tempa}% + \blx@xml@section{\the\c@refsection}}% + \endgroup} + +\protected\def\endrefsection{% + \blx@endrefsection + \blx@inf@refsec} + +\def\blx@endrefsection{% + \blx@endrefsegment + % make sure we always output aliases to the .bcf otherwise after their + % first resolution by biber, they will be invisible to subsequent biber + % runs since biblatex will resolve the \keyalias{} macro to the main + % entry key, biber won't put \keyalias{}in the .bbl on subsequent runs + % and biblatex will report a missing citekey + \def\do##1{% + % Make sure this counter exists. Sometimes it might not when using, e.g: + % refsection=chapter and \includeonly to put in the chapters or when + % inserting citations into table of contents + \ifcsname blx@sectionciteorder@\the\c@refsection\endcsname\else + \expandafter\newcount\csname blx@sectionciteorder@\the\c@refsection\endcsname + \fi + \global\advance\csname blx@sectionciteorder@\the\c@refsection\endcsname\@ne + \blx@auxwrite\blx@bcfout{}{\blx@xml@citekey{##1}{\expandafter\the\csname blx@sectionciteorder@\the\c@refsection\endcsname}}}% + \dolistcsloop{blx@keyaliases@\the\c@refsection}% + \ifnum\c@refsection>\z@ + \blx@auxwrite\blx@bcfout{}{% + \blx@xml@endsection\blx@nl + \blx@xml@comment{SECTION 0 (cont.)}% + \blx@xml@section{0}}% + \fi + \global\c@refsection\z@} + +\AtEndDocument{% + \endrefcontext + \blx@endrefsection + \def\abx@aux@refsection#1#2{\blx@addchecksum{#1}{#2}}} + +\protected\def\abx@aux@refsection#1#2{% + \ifnum#1>\blx@maxsection + \global\blx@maxsection#1\relax + \fi + \blx@addchecksum{#1}{#2}} + +% Reference segments +\newrobustcmd*{\newrefsegment}{% + \ifnum\c@refsegment>\z@ + \blx@endrefsegment + \fi + \refsegment} +\let\blx@newrefsegment\newrefsegment + +\newrobustcmd*{\refsegment}{% + \ifnum\c@refsegment>\z@ + \blx@err@nestenv{refsegment}% + \blx@endrefsegment + \fi + \global\advance\csname blx@maxsegment@\the\c@refsection\endcsname\@ne + \global\c@refsegment\csname blx@maxsegment@\the\c@refsection\endcsname + \blx@inf@refseg + \blx@info{Setting label 'refsegment:\the\c@refsection\the\c@refsegment'}% + \label{refsegment:\the\c@refsection\the\c@refsegment}% + \ifcsundef{blx@segm@\the\c@refsection @\the\c@refsegment} + {\global\cslet{blx@segm@\the\c@refsection @\the\c@refsegment}\@empty} + {}} + +\protected\def\endrefsegment{% + \blx@endrefsegment + \blx@inf@refseg} + +\def\blx@endrefsegment{% + \global\c@refsegment\z@} + +% Reference section/segment auto-reset +% we are prepending to the commands so that the resets happen before +% the part title is typeset otherwise \cites in there could be "ibid" +% which makes no sense +\def\blx@refpatch@part#1{% + \ifundef\part + {\blx@err@nodocdiv{part}} + {\toggletrue{blx@tempa}% + \def\do##1{% + \pretocmd##1{#1} + {\togglefalse{blx@tempa}\listbreak} + {}}% + \docsvlist{% + \H@old@part,% hyperref + \NR@part,% nameref + \@part}% latex/koma-script/memoir + \iftoggle{blx@tempa} + {\blx@err@patch{\string\@part}} + {}% + \let\do\noexpand}} + +\def\blx@refpatch@chapter#1{% + \ifundef\chapter + {\blx@err@nodocdiv{chapter}} + {\pretocmd\@makechapterhead{#1} + {} + {\blx@err@patch{\string\@makechapterhead}}}} + +\def\blx@refpatch@sect#1{% + \ifcsundef{#1} + {\blx@err@nodocdiv{#1}\@gobbletwo} + {\blx@refpatch@sect@i}} + +\edef\blx@refpatch@sect@i#1#2{% + \def\noexpand\do##1{% + \pretocmd##1% + {\noexpand\blx@refpatch@sect@ii{#1}{#2}{\string#2}} + {\togglefalse{blx@tempa}\noexpand\listbreak} + {}}% + \noexpand\blx@refpatch@sect@iii} + +\def\blx@refpatch@sect@ii#1#2#3{% + \ifnumequal{#2}{#3}{#1}{}} + +\def\blx@refpatch@sect@iii{% + \toggletrue{blx@tempa}% + \docsvlist{% order does matter: + \H@old@sectm@m,% memoir+hyperref (what a mess...) + \M@sect,% memoir + \H@old@sect,% hyperref + \NR@sect,% nameref + \scr@sect,% koma-script 3.x + \@sect}% latex + \iftoggle{blx@tempa} + {\blx@err@patch{\string\@sect}} + {}% + \let\do\noexpand} + +% Bibliography categories + +\let\blx@categories\@empty + +% {<category>} +\newrobustcmd*{\DeclareBibliographyCategory}[1]{% + \ifcsundef{blx@catg@#1} + {\global\cslet{blx@catg@#1}\@empty + \listgadd\blx@categories{#1}} + {\blx@error + {Category '#1' already declared} + {The bibliography category '#1'\MessageBreak + has already been declared}}} +\@onlypreamble\DeclareBibliographyCategory + +% {<category>}{<entrykey>,...} +\newrobustcmd*{\addtocategory}[2]{% + \ifcsundef{blx@catg@#1} + {\blx@error + {Category '#1' not declared} + {Use \string\DeclareBibliographyCategory\space to declare}} + {\AfterPreamble{% + \blx@xsanitizeafter{\forcsvlist{\blx@addtocategory{#1}}}{#2}}}} + +% {<category>}{<entrykey>,...} +\def\blx@addtocategory#1#2{% + % If we are adding a set member to a category, make sure we also add the + % set parent if it is cited. If it is cited, we should be using the set + % parent in the category, not the set child member. blx@setc@... will + % only exist if the set parent is also cited as it is only defined when a + % member contains \inset which only happens when the set parent is cited. + \ifcsdef{blx@setc@\the\c@refsection @#2} + {\blx@auxwrite\@mainaux{}{\string\abx@aux@category{#1}{\csuse{blx@setc@\the\c@refsection @#2}}}% + \abx@aux@category{#1}{\csuse{blx@setc@\the\c@refsection @#2}}} + {}% + \blx@auxwrite\@mainaux{}{\string\abx@aux@category{#1}{#2}}% + \abx@aux@category{#1}{#2}} + +% {<category>}{<entrykey>,...} +\protected\def\abx@aux@category#1#2{% + \xifinlistcs{\detokenize{#2}}{blx@catg@#1} + {} + {\listcsxadd{blx@catg@#1}{\detokenize{#2}}}} + +\AtEndDocument{\let\abx@aux@category\@gobbletwo} + +% [<options>]{<resource>,...} +\renewrobustcmd*{\bibliography}[1]{% + \begingroup + \def\blx@tempa{file}% + \def\blx@tempb{bibtex}% + \def\blx@tempc{local}% + \blx@xsanitizeafter{\forcsvlist\blx@addbib@legacy}{#1}% + \endgroup} +\@onlypreamble\bibliography + +\def\blx@addbib@legacy#1{% + \begingroup + \edef\blx@tempa{\endgroup + \noexpand\blx@addbib@resource{\blx@stripbib{#1}\detokenize{.bib}}}% + \blx@tempa} + +\def\blx@stripbib#1{% + \expandafter\blx@stripbib@i\detokenize{#1.bib}&} +\edef\blx@stripbib@i{% + \def\noexpand\blx@stripbib@i##1\detokenize{.bib}##2&} +\blx@stripbib@i{#1} + +% [<options>]{<resource>,...} +\newrobustcmd*{\addbibresource}{% + \blx@addbib\blx@addbib@resource} +\@onlypreamble\addbibresource + +\newrobustcmd*{\addglobalbib}{% + \blx@addbib\blx@addbib@global} +\@onlypreamble\addglobalbib + +\newrobustcmd*{\addsectionbib}{% + \blx@addbib\blx@addbib@register} +\@onlypreamble\addsectionbib + +\def\blx@addbib#1{% + \@ifnextchar[%] + {\blx@addbib@i{#1}} + {\blx@addbib@i{#1}[]}} + +\def\blx@addbib@i#1[#2]{% + \begingroup + \blx@hook@fileverb + \blx@addbib@ii{#1}{#2}} + +\def\blx@addbib@ii#1#2#3{% + \endgroup + \begingroup + \def\blx@tempa{file}% + \def\blx@tempb{bibtex}% + \def\blx@tempc{local}% + \undef\blx@tempd + \setkeys{blx@addbib}{#2}% + \blx@xsanitizeafter{#1}{#3}% + \endgroup} + +\def\blx@hook@fileverb{% + \let\do\@makeother + \dospecials + \catcode`\\=\z@ + \catcode`\{=\@ne + \catcode`\}=\tw@} + +\define@key{blx@addbib}{type}{\def\blx@tempa{#1}} +\define@key{blx@addbib}{datatype}{\def\blx@tempb{#1}} +\define@key{blx@addbib}{location}{\def\blx@tempc{#1}} +\define@key{blx@addbib}{label}{\edef\blx@tempd{\detokenize{#1}}} + +% \blx@res@type@<resource> resource -> type +% \blx@res@data@<resource> resource -> datatype +% \blx@res@loca@<resource> resource -> datatype +% \blx@res@labl@<resource> label -> resource + +\def\blx@addbib@register#1{% + \csxdef{blx@res@type@#1}{\blx@tempa}% + \csxdef{blx@res@data@#1}{\blx@tempb}% + \csxdef{blx@res@loca@#1}{\blx@tempc}% + \ifdef\blx@tempd + {\csxdef{blx@res@labl@\blx@tempd}{#1}} + {}} + +\def\blx@addbib@resource#1{% + \blx@addbib@register{#1}% + \listgadd\blx@bibfiles{#1}% + \blx@regbibfile\jobname{#1}} + +\def\blx@addbib@global#1{% + \blx@addbib@resource{#1}% + \listgadd\blx@bibfiles@global{#1}} + +\let\blx@bibfiles\@empty +\let\blx@bibfiles@global\@empty + +\def\blx@bibdata#1#2{% + \forlistloop{\blx@bibdata@i{#1}}#2} +\def\blx@bibdata@i#1#2{% + \blx@xmlsanitizeafter{\blx@bibdata@ii{#1}{#2}}{#2}} +\def\blx@bibdata@ii#1#2#3{% + \eappto#1{% + \blx@xml@datasource + {\ifcsdef{blx@res@type@#2} + {\csuse{blx@res@type@#2}} + {file}} + {\ifcsdef{blx@res@data@#2} + {\csuse{blx@res@data@#2}} + {bibtex}} + {#3}}} + +%% Citations + +\newrobustcmd*{\AtEveryCite}{\gappto\blx@hook@cite} +\newrobustcmd*{\AtEveryCitekey}{\gappto\blx@hook@citekey} +\newrobustcmd*{\AtEveryMultiCite}{\gappto\blx@hook@mcite} +\@onlypreamble\AtEveryCite +\@onlypreamble\AtEveryCitekey +\@onlypreamble\AtEveryMultiCite + +\newrobustcmd*{\AtEachCitekey}{% + \iftoggle{blx@citation}{\appto\blx@hook@citekey}{\@gobble}} + +\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 + {\gdef\blx@hook@cite@next{\global\undef\blx@hook@cite@next}} + {}% + \gappto\blx@hook@cite@next} + +\newrobustcmd*{\AtNextCitekey}{% + \ifundef\blx@hook@citekey@next + {\gdef\blx@hook@citekey@next{\global\undef\blx@hook@citekey@next}} + {}% + \gappto\blx@hook@citekey@next} + +\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'}{}{}{} + {\blx@error + {Style '#1' not found} + {The citation style '#1' could not be found}}} +\@onlypreamble\RequireCitationStyle + +% {<code>} + +\newrobustcmd*{\InitializeCitationStyle}{\appto\blx@hook@cbxinit} +\@onlypreamble\InitializeCitationStyle + +% {<code>} + +\newrobustcmd*{\OnManualCitation}{\appto\blx@hook@mancite} +\@onlypreamble\OnManualCitation + +\newrobustcmd*{\mancite}{% + \csuse{blx@hook@mancite}% + \blx@ibidreset + \blx@idemreset + \blx@opcitreset + \blx@loccitreset} + +% {<entrykey>}{<message>} +% Just a wrapper to suppress citation tracking in toc/lof etc. +\def\blx@citation#1#2{% + \ifbool{citerequest} + {\blx@citation@entry{#1}{#2}} + {}} + +\def\blx@citation@entry#1#2{% + \blx@bibreq{#1}% + \ifinlist{#1}\blx@cites + {} + {\listgadd{\blx@cites}{#1}% + \blx@auxwrite\@mainaux{}{\string\abx@aux@cite{#1}}}% + \ifinlistcs{#1}{blx@segm@\the\c@refsection @\the\c@refsegment} + {} + {\listcsgadd{blx@segm@\the\c@refsection @\the\c@refsegment}{#1}}% + \blx@auxwrite\@mainaux{}{\string\abx@aux@segm{\the\c@refsection}{\the\c@refsegment}{\detokenize{#1}}}% + \blx@ifdata{#1} + {} + {\ifcsdef{blx@miss@\the\c@refsection} + {\ifinlistcs{#1}{blx@miss@\the\c@refsection} + {} + {\blx@logreq@active{#2{#1}}}} + {\blx@logreq@active{#2{#1}}}}} + +\protected\def\abx@aux@segm#1#2#3{% + \listcsxadd{blx@segm@#1@#2}{\detokenize{#3}}} + +\def\blx@citation@set#1#2{% + \blx@citation@entry{#1}{#2}% + \begingroup + \def\do##1{\blx@citation@entry{##1}\blx@msg@cundef}% + \expandafter\expandafter\expandafter\docsvlist + \expandafter\expandafter\expandafter{% + \csname blx@setp@\the\c@refsection @#1\endcsname}% + \endgroup} + +\def\blx@citation@inset#1#2{% + \blx@citation@entry{#1}{#2}% + \expandafter\expandafter\expandafter\blx@citation@inset@i + \expandafter\expandafter\expandafter{% + \csname blx@setc@\the\c@refsection @#1\endcsname}\blx@msg@cundef} + +\def\blx@citation@inset@i#1{% + \ifcsdef{blx@setp@\the\c@refsection @#1} + {\blx@citation@set{#1}} + {\blx@citation@entry{#1}}} + +\def\blx@citation@all{% + \ifbool{citerequest} + {\blx@bibreq{*}% + \global\csletcs + {blx@segm@\the\c@refsection @\the\c@refsegment} + {blx@slist@entry@\the\c@refsection @\blx@refcontext@context}% + \ifcsvoid{blx@slist@entry@\the\c@refsection @\blx@refcontext@context} + {\blx@logreq@active{}} + {}} + {}} + +\protected\def\blx@bibreq#1{% + \begingroup + \blx@xmlsanitizeafter{\def\blx@tempa}{#1}% + % citeall is always order "0" - this makes no real difference as biber + % ignores all other citekeys in the section if citeall is present + \ifstrequal{*}{#1} + {\blx@auxwrite\blx@bcfout{}{\blx@xml@citekey{\blx@tempa}{0}}} + {\blx@auxwrite\blx@bcfout{}{\blx@xml@citekey{\blx@tempa}{\expandafter\the\csname blx@sectionciteorder@\the\c@refsection\endcsname}}}% + \endgroup} + +% {<set>}{<key1,key2,key3>} + +\newrobustcmd*{\defbibentryset}[2]{% + \@bsphack + \begingroup + \blx@xsanitizeafter{\def\blx@tempa}{#1}% + \let\blx@tempb\@empty + \let\blx@tempc\@empty + \blx@xsanitizeafter{\forcsvlist\blx@defentryset@add}{#2}% + \ifcsdef{blx@set@\the\c@refsection @\blx@tempa} + {\expandafter\ifdefequal + \csname blx@set@\the\c@refsection @\blx@tempa\endcsname + \blx@tempb + {} + {\blx@error + {Conflicting definitions of '\blx@tempa'} + {The entry set '\blx@tempa' been defined before.\MessageBreak + old: \blx@tempa\space = % + \csuse{blx@set@\the\c@refsection @\blx@tempa}\MessageBreak + new: \blx@tempa\space = \blx@tempb\MessageBreak + I'm ignoring the new definition}}} + {\global\cslet{blx@set@\the\c@refsection @\blx@tempa}\blx@tempb + \edef\blx@tempa{% + \AfterPreamble{\blx@setreq{\blx@tempa}{\blx@tempb}}}% + \blx@tempa}% + \endgroup + \@esphack} + +\def\blx@defentryset@add#1{% + \edef\blx@tempb{\blx@tempb\blx@tempc#1}% + \def\blx@tempc{,}} + +\protected\def\blx@setreq#1#2{% + \begingroup + \blx@xmlsanitizeafter{\def\blx@tempa}{#1}% + \blx@xmlsanitizeafter{\def\blx@tempb}{#2}% + \blx@auxwrite\blx@bcfout{}{\blx@xml@citeset{\blx@tempa}{\blx@tempb}}% + \endgroup} + +% {<entrykey>,...} +\protected\def\blx@citeloop#1{% + \begingroup + % Make sure this counter exists. Sometimes it might not when using, e.g: + % refsection=chapter and \includeonly to put in the chapters or when + % inserting citations into table of contents + \ifcsname blx@sectionciteorder@\the\c@refsection\endcsname\else + \expandafter\newcount\csname blx@sectionciteorder@\the\c@refsection\endcsname + \fi + \global\advance\csname blx@sectionciteorder@\the\c@refsection\endcsname\@ne + \blx@tempcnta\z@ + \blx@tempcntb\z@ + \let\blx@tempa\@empty + \forcsvlist\blx@citeadd{#1}% + \blx@thenotecheck + \ifnum\blx@tempcnta>\z@ + \ifnum\blx@tempcntb>\z@ + \multicitedelim + \fi + \fi + \letcs\blx@tempb{blx@slist@centry@\the\c@refsection @\blx@refcontext@context}% + \blx@thecitesort + \edef\blx@tempa{\endgroup + \c@citecount\z@ + \c@citetotal\the\blx@tempcnta\relax + \unexpanded{\forlistloop\blx@citeprint}{\blx@tempb}}% + \blx@tempa} + +\def\blx@notecheck{% + \ifnum\blx@tempcnta>\@ne + \blx@warning{% + Package option 'sortcites' enabled.\MessageBreak + Verify postnote placement}% + \fi} + +\def\blx@citesort{% + \ifnum\blx@tempcnta>\@ne + \blx@filtercitesort\blx@tempb{blx@tempa}% + \else + \blx@citenosort + \fi} + +\def\blx@citenosort{% + \let\blx@tempb\blx@tempa} + +% {<entrykey>} +\def\blx@citeadd#1{% + \ifcsdef{blx@keyalias@\the\c@refsection @#1} + {\edef\blx@realkey{\csuse{blx@keyalias@\the\c@refsection @#1}}} + {\def\blx@realkey{#1}}% + \expandafter\blx@getrefcontext\expandafter{\blx@realkey}% needed for \ifdata + \expandafter\blx@citation\expandafter{\blx@realkey}\blx@msg@cundefon + \expandafter\blx@ifdata\expandafter{\blx@realkey} + {\advance\blx@tempcnta\@ne + \listeadd\blx@tempa{\blx@realkey}} + {\ifnum\blx@tempcntb>\z@\multicitedelim\fi + \expandafter\abx@missing\expandafter{\blx@realkey}% + \advance\blx@tempcntb\@ne}} + +% set default refcontext for one citation key +% and then override with data from auto-assign \assignrefcontext* macros, if any +% <entrykey> +\def\blx@getrefcontext#1{% + % Save refcontext for restoration at end of \citeprint + \let\blx@refcontext@context@saved\blx@refcontext@context + % Get the default refcontext + % If there was one due to appearance in a bib/biblist, use it + % otherwise fall back on global refcontext. This can happen for cites + % made (a bit strangely but some styles do this) inside a biblist + % which never appear in any printed bib/biblist and therefore have no default + % refcontext defined + % However, only do this if sortcites is not used for in this case, by default we + % want to use the current refcontext in which the cites occur + \ifbool{sortcites} + {} + {\ifcsdef{blx@assignedrefcontextbib@\the\c@refsection @#1} + {\letcs\blx@refcontext@context{blx@assignedrefcontextbib@\the\c@refsection @#1}} + {\edef\blx@refcontext@context{\blx@sorting/global/}}}% + % assignment via keyword list + \ifdef\blx@assignedrefcontextkeywlist + {\def\do##1{% + \blx@imc@ifentrykeyword{#1}{##1} + {% weak version + \ifboolexpr{test {\ifcsdef{blx@assignedrefcontextkeyws*@\the\c@refsection @##1}} + and + not togl {blx@refcontext}}% inside explicit non-global refcontext + {\letcs\blx@refcontext@context{blx@assignedrefcontextkeyws*@\the\c@refsection @##1}} + {}% + % strong version + \ifcsdef{blx@assignedrefcontextkeyws@\the\c@refsection @##1} + {\letcs\blx@refcontext@context{blx@assignedrefcontextkeyws@\the\c@refsection @##1}} + {}} + {}}% + \dolistloop\blx@assignedrefcontextkeywlist} + {}% + % assignment via category + \ifdef\blx@assignedrefcontextcatlist + {\def\do##1{% + \blx@imc@ifentrycategory{#1}{##1} + {% weak version + \ifboolexpr{test {\ifcsdef{blx@assignedrefcontextcats*@\the\c@refsection @##1}} + and + not togl {blx@refcontext}}% inside explicit non-global refcontext + {\letcs\blx@refcontext@context{blx@assignedrefcontextcats*@\the\c@refsection @##1}} + {}% + % strong version + \ifcsdef{blx@assignedrefcontextcats@\the\c@refsection @##1} + {\letcs\blx@refcontext@context{blx@assignedrefcontextcats@\the\c@refsection @##1}} + {}} + {}}% + \dolistloop\blx@assignedrefcontextcatlist} + {}% + % assignment via entrykeys + % weak version + \ifboolexpr{test {\ifcsdef{blx@assignedrefcontextkeys*@\the\c@refsection @#1}} + and + not togl {blx@refcontext}}% inside explicit non-global refcontext + {\letcs\blx@refcontext@context{blx@assignedrefcontextkeys*@\the\c@refsection @#1}} + {}% + % strong version + \ifcsdef{blx@assignedrefcontextkeys@\the\c@refsection @#1} + {\letcs\blx@refcontext@context{blx@assignedrefcontextkeys@\the\c@refsection @#1}} + {}} + +% {<entrykey>} +\protected\def\blx@citeprint#1{% + \blx@getrefcontext{#1}% + \advance\c@citecount\@ne + \addtocounter{instcount}\@ne + \ifnum\c@citecount=\@ne + \blx@getdata@cite{#1}% + \blx@precode + \ifnum\c@citetotal>\@ne + \blx@resetdata + \fi + \else + \blx@dlimcode + \fi + \begingroup + \ifnum\c@citetotal>\@ne + \blx@getdata@cite{#1}% + \fi + \blx@entrysetcount + \blx@setoptions@type\abx@field@entrytype + \blx@setoptions@entry + \blx@backref{#1}% + \blx@pagetracker + \csuse{blx@hook@citekey}% + \csuse{blx@hook@citekey@next}% + \blx@beglangcite + \blx@execute + \blx@loopcode + \blx@citecounter + \blx@citetracker + \blx@ibidtracker + \blx@idemtracker + \blx@opcittracker + \blx@loccittracker + \ifnum\c@citecount=\c@citetotal + \def\blx@thecheckpunct{\blx@err@nestcite\@gobble}% + \blx@postcode + \fi + \blx@endlangcite + \endgroup + \let\blx@refcontext@context\blx@refcontext@context@saved} + +% cite counter + +\def\blx@citecounter@global{% + \ifbool{@filesw} + {\ifbool{citetracker} + {\immediate\write\@mainaux{% + \string\abx@aux@count + {\the\c@refsection}{\abx@field@entrykey}}} + {}} + {}} + +\def\blx@citecounter@context{% + \ifbool{@filesw} + {\ifbool{citetracker} + {\immediate\write\@mainaux{% + \iftoggle{blx@footnote} + {\string\abx@aux@fncount} + {\string\abx@aux@count}% + {\the\c@refsection}{\abx@field@entrykey}}} + {}} + {}} + +% {<refsection>}{<entrykey>} + +\protected\def\blx@aux@count#1#2{% + \csnumgdef{blx@count@#1@\detokenize{#2}}{\csuse{blx@count@#1@\detokenize{#2}}+1}} +\protected\def\blx@aux@fncount#1#2{% + \csnumgdef{blx@fncount@#1@\detokenize{#2}}{\csuse{blx@fncount@#1@\detokenize{#2}}+1}} + +\let\abx@aux@count\@gobbletwo +\let\abx@aux@fncount\@gobbletwo + +\AtEndDocument{% + \let\abx@aux@count\@gobbletwo + \let\abx@aux@fncount\@gobbletwo} + +\protected\def\blx@setcitecounter@global{% + \c@citecounter0% + \csuse{blx@count@\the\c@refsection @\abx@field@entrykey}% + \relax} + +\protected\def\blx@setcitecounter@context{% + \c@citecounter0% + \iftoggle{blx@footnote} + {\csuse{blx@fncount@\the\c@refsection @\abx@field@entrykey}} + {\csuse{blx@count@\the\c@refsection @\abx@field@entrykey}}% + \relax} + +% cite tracker + +\def\blx@citetracker@global{% + \ifbool{citetracker} + {\xifinlistcs\abx@field@entrykey{blx@bsee@\the\c@refsection} + {} + {\listcsxadd{blx@bsee@\the\c@refsection}\abx@field@entrykey}} + {}} + +\def\blx@citetracker@context{% + \ifbool{citetracker} + {\iftoggle{blx@footnote} + {\xifinlistcs\abx@field@entrykey{blx@fsee@\the\c@refsection} + {} + {\listcsxadd{blx@fsee@\the\c@refsection}\abx@field@entrykey}} + {\xifinlistcs{\abx@field@entrykey}{blx@bsee@\the\c@refsection} + {} + {\listcsxadd{blx@bsee@\the\c@refsection}\abx@field@entrykey}}} + {}} + +\protected\appto\abx@savetrackers{% + \global\csletcs{blx@saved@bsee@\the\c@refsection}{blx@bsee@\the\c@refsection}% + \global\csletcs{blx@saved@fsee@\the\c@refsection}{blx@fsee@\the\c@refsection}} + +\protected\appto\abx@resttrackers{% + \global\csletcs{blx@bsee@\the\c@refsection}{blx@saved@bsee@\the\c@refsection}% + \global\csletcs{blx@fsee@\the\c@refsection}{blx@saved@fsee@\the\c@refsection}} + +\protected\appto\abx@cleartrackers{% + \global\cslet{blx@saved@bsee@\the\c@refsection}\@empty + \global\cslet{blx@saved@fsee@\the\c@refsection}\@empty} + +% ibidem tracker + +\def\blx@ibidtracker@global{% + \ifbool{citetracker} + {\global\let\blx@lastkey@text\abx@field@entrykey} + {}} + +\def\blx@ibidtracker@context{% + \ifbool{citetracker} + {\iftoggle{blx@footnote} + {\global\let\blx@lastkey@foot\abx@field@entrykey} + {\global\let\blx@lastkey@text\abx@field@entrykey}} + {}} + +\def\blx@ibidtracker@strict{% + \blx@ifcitesingle + {\blx@ibidtracker@global} + {\blx@ibidreset@global}}% + +\def\blx@ibidtracker@constrict{% + \blx@ifcitesingle + {\blx@mpfnsave + \blx@ibidtracker@context} + {\blx@ibidreset@context}}% + +\def\blx@ibidreset@force{% + \global\undef\blx@lastkey@text + \global\undef\blx@lastkey@foot + \blx@mpfnreset} + +\def\blx@ibidreset@global{% + \global\undef\blx@lastkey@text} + +\def\blx@ibidreset@context{% + \iftoggle{blx@footnote} + {\blx@mpfnreset + \global\undef\blx@lastkey@foot} + {\global\undef\blx@lastkey@text}} + +\protected\appto\abx@savetrackers{% + \global\let\blx@saved@lastkey@text\blx@lastkey@text + \global\let\blx@saved@lastkey@foot\blx@lastkey@foot} + +\protected\appto\abx@resttrackers{% + \global\let\blx@lastkey@text\blx@saved@lastkey@text + \global\let\blx@lastkey@foot\blx@saved@lastkey@foot} + +\protected\appto\abx@cleartrackers{% + \global\undef\blx@saved@lastkey@text + \global\undef\blx@saved@lastkey@foot} + +% idem tracker + +\def\blx@idemtracker@global{% + \ifbool{citetracker} + {\global\let\blx@lasthash@text\abx@field@fullhash} + {}} + +\def\blx@idemtracker@context{% + \ifbool{citetracker} + {\iftoggle{blx@footnote} + {\global\let\blx@lasthash@foot\abx@field@fullhash} + {\global\let\blx@lasthash@text\abx@field@fullhash}} + {}} + +\let\blx@idemtracker@strict\blx@idemtracker@global + +\def\blx@idemtracker@constrict{% + \blx@mpfnsave + \blx@idemtracker@context} + +\def\blx@idemreset@force{% + \global\undef\blx@lasthash@text + \global\undef\blx@lasthash@foot + \blx@mpfnreset} + +\def\blx@idemreset@global{% + \global\undef\blx@lasthash@text} + +\def\blx@idemreset@context{% + \iftoggle{blx@footnote} + {\blx@mpfnreset + \global\undef\blx@lasthash@foot} + {\global\undef\blx@lasthash@text}} + +\protected\appto\abx@savetrackers{% + \global\let\blx@saved@lasthash@text\blx@lasthash@text + \global\let\blx@saved@lasthash@text\blx@lasthash@text} + +\protected\appto\abx@resttrackers{% + \global\let\blx@lasthash@text\blx@saved@lasthash@text + \global\let\blx@lasthash@text\blx@saved@lasthash@text} + +\protected\appto\abx@cleartrackers{% + \global\undef\blx@saved@lasthash@text + \global\undef\blx@saved@lasthash@foot} + +% opcit tracker + +\def\blx@opcittracker@global{% + \ifbool{citetracker} + {\blx@opcit@tracker{text}} + {}} + +\def\blx@opcittracker@context{% + \ifbool{citetracker} + {\iftoggle{blx@footnote} + {\blx@opcit@tracker{foot}} + {\blx@opcit@tracker{text}}} + {}} + +\def\blx@opcittracker@strict{% + \blx@ifcitesingle + {\blx@opcittracker@global} + {\blx@opcitreset@global}}% + +\def\blx@opcittracker@constrict{% + \blx@ifcitesingle + {\blx@mpfnsave + \blx@opcittracker@context} + {\blx@opcitreset@context}}% + +\def\blx@opcit@tracker#1{% + \blx@imc@iffieldundef{namehash} + {} + {\global\cslet{blx@lastkey@#1@\abx@field@namehash}\abx@field@entrykey + \xifinlistcs\abx@field@namehash{blx@trackhash@#1} + {} + {\listcsxadd{blx@trackhash@#1}\abx@field@namehash}}} + +\def\blx@opcit@reset#1{% + \begingroup + \def\do##1{\global\csundef{blx@lastkey@#1@##1}}% + \dolistcsloop{blx@trackhash@#1}% + \global\cslet{blx@trackhash@#1}\@empty + \endgroup} + +\def\blx@opcitreset@force{% + \blx@opcit@reset{text}% + \blx@opcit@reset{foot}% + \blx@mpfnreset} + +\def\blx@opcitreset@global{% + \blx@opcit@reset{text}} + +\def\blx@opcitreset@context{% + \iftoggle{blx@footnote} + {\blx@opcit@reset{foot}% + \blx@mpfnreset} + {\blx@opcit@reset{text}}} + +\let\blx@trackhash@text\@empty +\let\blx@trackhash@foot\@empty + +\protected\appto\abx@savetrackers{% + \begingroup + \def\do#1{\global\csletcs{blx@saved@lastkey@text@#1}{blx@lastkey@text@#1}}% + \dolistloop\blx@trackhash@text + \global\let\blx@saved@trackhash@text\blx@trackhash@text + \def\do#1{\global\csletcs{blx@saved@lastkey@foot@#1}{blx@lastkey@foot@#1}}% + \dolistloop\blx@trackhash@foot + \global\let\blx@saved@trackhash@foot\blx@trackhash@foot + \endgroup} + +\protected\appto\abx@resttrackers{% + \begingroup + \blx@opcit@reset{text}% + \global\let\blx@trackhash@text\blx@saved@trackhash@text + \def\do#1{\global\csletcs{blx@lastkey@text@#1}{blx@saved@lastkey@text@#1}}% + \dolistloop\blx@trackhash@text + \blx@opcit@reset{foot}% + \global\let\blx@trackhash@foot\blx@saved@trackhash@foot + \def\do#1{\global\csletcs{blx@lastkey@foot@#1}{blx@saved@lastkey@foot@#1}}% + \dolistloop\blx@trackhash@foot + \endgroup} + +\protected\appto\abx@cleartrackers{% + \begingroup + \def\do#1{\global\csundef{blx@saved@lastkey@text@#1}}% + \dolistloop\blx@saved@trackhash@text + \global\undef\blx@saved@trackhash@text + \def\do#1{\global\csundef{blx@saved@lastkey@foot@#1}}% + \dolistloop\blx@saved@trackhash@foot + \global\undef\blx@saved@trackhash@foot + \endgroup} + +% loccit tracker + +\def\blx@loccittracker@global{% + \ifbool{citetracker} + {\blx@loccit@tracker{text}} + {}} + +\def\blx@loccittracker@context{% + \ifbool{citetracker} + {\iftoggle{blx@footnote} + {\blx@loccit@tracker{foot}} + {\blx@loccit@tracker{text}}} + {}} + +\def\blx@loccittracker@strict{% + \ifbool{citetracker} + {\blx@loccit@stricttracker{text}} + {}} + +\def\blx@loccittracker@constrict{% + \ifbool{citetracker} + {\iftoggle{blx@footnote} + {\blx@mpfnsave + \blx@loccit@stricttracker{foot}} + {\blx@loccit@stricttracker{text}}} + {}} + +\def\blx@loccit@tracker#1{% + \global\csundef{blx@lastnote@#1@\abx@field@entrykey}% + \blx@imc@iffieldundef{postnote} + {} + {\global\cslet{blx@lastnote@#1@\abx@field@entrykey}\abx@field@postnote + \xifinlistcs\abx@field@entrykey{blx@trackkeys@#1} + {} + {\listcsxadd{blx@trackkeys@#1}\abx@field@entrykey}}} + +\def\blx@loccit@stricttracker#1{% + \global\csundef{blx@lastnote@#1@\abx@field@entrykey}% + \blx@imc@iffieldundef{postnote} + {} + {\blx@ifcitesingle + {\expandafter\blx@imc@ifpages + \expandafter{\abx@field@postnote} + {\global\cslet{blx@lastnote@#1@\abx@field@entrykey}\abx@field@postnote + \xifinlistcs\abx@field@entrykey{blx@trackkeys@#1} + {} + {\listcsxadd{blx@trackkeys@#1}\abx@field@entrykey}} + {}} + {}}} + +\def\blx@loccit@reset#1{% + \begingroup + \def\do##1{\global\csundef{blx@lastnote@#1@##1}}% + \dolistcsloop{blx@trackkeys@#1}% + \global\cslet{blx@trackkeys@#1}\@empty + \endgroup} + +\def\blx@loccitreset@force{% + \blx@loccit@reset{text}% + \blx@loccit@reset{foot}% + \blx@mpfnreset} + +\def\blx@loccitreset@global{% + \blx@loccit@reset{text}} + +\def\blx@loccitreset@context{% + \iftoggle{blx@footnote} + {\blx@loccit@reset{foot}% + \blx@mpfnreset} + {\blx@loccit@reset{text}}} + +\let\blx@trackkeys@text\@empty +\let\blx@trackkeys@foot\@empty + +\protected\appto\abx@savetrackers{% + \begingroup + \def\do#1{\global\csletcs{blx@saved@lastnote@text@#1}{blx@lastnote@text@#1}}% + \dolistloop\blx@trackkeys@text + \global\let\blx@saved@trackkeys@text\blx@trackkeys@text + \def\do#1{\global\csletcs{blx@saved@lastnote@foot@#1}{blx@lastnote@foot@#1}}% + \dolistloop\blx@trackkeys@foot + \global\let\blx@saved@trackkeys@foot\blx@trackkeys@foot + \endgroup} + +\protected\appto\abx@resttrackers{% + \begingroup + \blx@loccit@reset{text}% + \global\let\blx@trackkeys@text\blx@saved@trackkeys@text + \def\do#1{\global\csletcs{blx@lastnote@text@#1}{blx@saved@lastnote@text@#1}}% + \dolistloop\blx@trackkeys@text + \blx@loccit@reset{foot}% + \global\let\blx@trackkeys@foot\blx@saved@trackkeys@foot + \def\do#1{\global\csletcs{blx@lastnote@foot@#1}{blx@saved@lastnote@foot@#1}}% + \dolistloop\blx@trackkeys@foot + \endgroup} + +\protected\appto\abx@cleartrackers{% + \begingroup + \def\do#1{\global\csundef{blx@saved@lastnote@text@#1}}% + \dolistloop\blx@saved@trackkeys@text + \global\undef\blx@saved@trackkeys@text + \def\do#1{\global\csundef{blx@saved@lastnote@foot@#1}}% + \dolistloop\blx@saved@trackkeys@foot + \global\undef\blx@saved@trackkeys@foot + \endgroup} + +\def\blx@addbackref#1{% + \ifcsdef{blx@setp@\the\c@refsection @#1} + {\ifcase\blx@backrefsetstyle + \blx@addbackref@i{#1}% + \or + \blx@addbackref@ii{setp}{#1}% + \or + \blx@addbackref@i{#1}% + \or + \blx@addbackref@i{#1}% + \or + \blx@addbackref@i{#1}% + \blx@addbackref@ii{setp}{#1}% + \or + \blx@addbackref@i{#1}% + \blx@addbackref@ii{setp}{#1}% + \fi} + {\ifcsdef{blx@setc@\the\c@refsection @#1} + {\ifcase\blx@backrefsetstyle + \blx@addbackref@ii{setc}{#1}% + \or + \blx@addbackref@i{#1}% + \or + \blx@addbackref@i{#1}% + \or + \blx@addbackref@i{#1}% + \blx@addbackref@ii{setc}{#1}% + \or + \blx@addbackref@i{#1}% + \or + \blx@addbackref@i{#1}% + \blx@addbackref@ii{setc}{#1}% + \fi} + {\blx@addbackref@i{#1}}}} + +\def\blx@addbackref@i#1{% + \ifbacktracker + \blx@leavevmode + \if@filesw + \protected@write\@mainaux{}{\string\abx@aux@backref + {\the\c@instcount}{#1}{\the\c@refsection}% + {\thepage}{\noexpand\the\c@page}}% + \fi + \fi} + +\def\blx@addbackref@ii#1#2{% + \expandafter\expandafter\expandafter\forcsvlist + \expandafter\expandafter\expandafter\blx@addbackref@i + \expandafter\expandafter\expandafter{% + \csname blx@#1@\the\c@refsection @#2\endcsname}} + +% {<instcount>}{<entrykey>}{<refsection>}{<page>}{<page int>} +\protected\def\blx@aux@backref#1#2#3#4#5{% + \ifcsundef{blx@pref@#3@\detokenize{#2}} + {\global\cslet{blx@pref@#3@\detokenize{#2}}\@empty + \expandafter\blx@onlypreamble\csname blx@pref@#3@\detokenize{#2}\endcsname} + {}% + \ifinlistcs{#4}{blx@pref@#3@\detokenize{#2}} + {} + {\listcsgadd{blx@pref@#3@\detokenize{#2}}{#4}}% + \blx@addpagesum{#1}{#5}} + +\AtEndDocument{% + \def\abx@aux@backref#1#2#3#4#5{\blx@addpagesum{#1}{#5}}} + +% {<true>}{<false>} +\def\blx@ifcitesingle{% + \ifnum\c@citetotal=\@ne + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi} + +% hyperref interface + +\appto\blx@mkhyperref{% + \protected\def\blx@imc@bibhyperref{% + \@ifnextchar[%] + {\blx@bibhyperref} + {\blx@bibhyperref[\abx@field@entrykey]}}% + \ifundef\hyper@natanchorstart + {\long\def\blx@bibhyperref[#1]#2{% + \blx@sfsave\hyperlink{cite.\the\c@refsection @#1}{\blx@sfrest + #2% + \blx@sfsave}\blx@sfrest}% + \protected\long\def\blx@imc@bibhyperlink#1#2{% + \blx@sfsave\hyperlink{cite.\the\c@refsection:#1}{\blx@sfrest + #2% + \blx@sfsave}\blx@sfrest}% + \protected\long\def\blx@imc@bibhypertarget#1#2{% + \blx@sfsave\hypertarget{cite.\the\c@refsection:#1}{\blx@sfrest + #2% + \blx@sfsave}\blx@sfrest}}% + {\long\def\blx@bibhyperref[#1]#2{% + \blx@sfsave\hyper@natlinkstart{\the\c@refsection @#1}\blx@sfrest + #2% + \blx@sfsave\hyper@natlinkend\blx@sfrest}% + \protected\long\def\blx@imc@bibhyperlink#1#2{% + \blx@sfsave\hyper@natlinkstart{\the\c@refsection:#1}\blx@sfrest + #2% + \blx@sfsave\hyper@natlinkend\blx@sfrest}% + \protected\long\def\blx@imc@bibhypertarget#1#2{% + \blx@sfsave\hyper@natanchorstart{\the\c@refsection:#1}\blx@sfrest + #2% + \blx@sfsave\hyper@natanchorend\blx@sfrest}} + \let\blx@imc@ifhyperref\@firstoftwo + \def\blx@sf{\spacefactor}% + \def\blx@sfsave{% + \blx@leavevmode + \numgdef\blx@sf{\spacefactor}}% + \def\blx@sfrest{% + \ifhmode\spacefactor\blx@sf\relax\fi + \gdef\blx@sf{\spacefactor}}} + +\appto\blx@mknohyperref{% + \protected\def\blx@imc@bibhyperref{\@ifnextchar[\blx@nohyperref\@firstofone}% + \def\blx@nohyperref[#1]#2{#2}% + \let\blx@imc@bibhyperlink\@secondoftwo + \let\blx@imc@bibhypertarget\@secondoftwo + \let\blx@imc@ifhyperref\@secondoftwo} + +\blx@regimcs{% + \bibhyperref \bibhyperlink \bibhypertarget \ifhyperref} + +% {<entrykey>,...} +\protected\def\nocite#{\blx@nocite} + +\def\blx@nocite#1{% + \@bsphack + \AfterPreamble{% + \iftoggle{blx@bibliography} + {} + {\ifstrequal{*}{#1} + {\blx@citation@all} + {\blx@xsanitizeafter{\forcsvlist\blx@nocite@do}{#1}}}}% + \@esphack} + +\def\blx@nocite@do#1{% + % Make sure this counter exists. Sometimes it might not when using, e.g: + % refsection=chapter and \includeonly to put in the chapters or when + % inserting citations into table of contents + \ifcsname blx@sectionciteorder@\the\c@refsection\endcsname\else + \expandafter\newcount\csname blx@sectionciteorder@\the\c@refsection\endcsname + \fi + \global\advance\csname blx@sectionciteorder@\the\c@refsection\endcsname\@ne + \blx@citation{#1}\blx@msg@cundef} + +% {<macro>}[<arg1>][<arg2>]{<arg3>} +% => <macro>{<arg1>}{<arg2>}{<arg3>} +\protected\def\blx@citeargs#1{% + \@ifnextchar[%] + {\blx@citeargs@i{#1}} + {\blx@citeargs@iii{#1{}{}}}} +\long\def\blx@citeargs@i#1[#2]{% + \@ifnextchar[%] + {\blx@citeargs@ii{#1{#2}}} + {\blx@citeargs@iii{#1{}{#2}}}} +\long\def\blx@citeargs@ii#1[#2]{% + \blx@citeargs@iii{#1{#2}}} +\long\def\blx@citeargs@iii#1#2{% + \blx@xsanitizeafter{#1}{#2}} + +% {<macro>}(<arg1>)(<arg2>) +% => <macro>{<arg1>}{<arg2>} +\protected\def\blx@multiargs#1{% + \@ifnextchar(%) + {\blx@multiargs@i{#1}} + {#1{}{}}} +\long\def\blx@multiargs@i#1(#2){% + \@ifnextchar(%) + {\blx@multiargs@ii{#1{#2}}} + {#1{}{#2}}} +\long\def\blx@multiargs@ii#1(#2){#1{#2}} + +% {<macro>}[<arg1>][<arg2>]{<arg3>}<punct> +% => <macro>{<arg1>}{<arg2>}{<arg3>}{<punctcmd>} +\protected\def\blx@citepunct#1{% + \blx@citeargs{\blx@citepunct@i{#1}}} +\long\def\blx@citepunct@i#1#2#3#4{% + \blx@thecheckpunct{#1{#2}{#3}{#4}}} + +% {<csname>}[<arg1>][<arg2>]{arg3}[arg4]{arg5}<punct> +% => <macro>{<arg1>}{<arg2>}{<arg3>}{<arg4>}{arg5}{<punctcmd>} +\protected\def\blx@citexpunct#1{% + \blx@citeargs{\blx@citexpunct@i{#1}}} +\long\def\blx@citexpunct@i#1#2#3#4{% + \@ifnextchar[%] + {\blx@citexpunct@ii{#1}{{#2}{#3}{#4}}} + {\blx@citexpunct@ii{#1}{{#2}{#3}{#4}}[#1]}} +\long\def\blx@citexpunct@ii#1#2[#3]#4{% + \blx@thecheckpunct{\blxcitecmd{#1}#2{#3}{#4}}} + +% {<code>}<punct> => <code>{<punctcmd>} +\long\def\blx@checkpunct#1{% + \begingroup + \def\blx@tempa{\endgroup#1}% + \futurelet\blx@tempb\blx@checkpunct@i} +\def\blx@checkpunct@i{% + \expandafter\blx@checkpunct@ii\blx@autopunct&} +\def\blx@checkpunct@ii#1{% + \ifx#1&% + \expandafter\blx@checkpunct@iii + \fi + \ifx#1\blx@tempb + \expandafter\blx@checkpunct@iv + \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{% + \gdef\abx@field@postpunct{#3}% + \edef\blx@tempa{% + \expandonce\blx@tempa{% + \ifcsdef{blx@pm@\detokenize{#3}} + {\csname blx@imc@add\csname blx@pm@\detokenize{#3}\endcsname + \endcsname} + {\noexpand#3}}}% + \blx@tempa} + +\long\def\blx@nocheckpunct#1{#1{}} + +\protected\def\blx@citeinit{% + \iftoggle{blx@bibliography} + {} + {\toggletrue{blx@citation}}% + \blx@blxinit + \blx@langstrings + \citesetup + \blx@setsfcodes + \blx@postpunct@agroup + \blx@resetdata + \blx@leavevmode + \csuse{blx@hook@cite}% + \csuse{blx@hook@cite@next}% + \let\blx@citeinit\blx@resetdata} + +\protected\def\blx@citecmdinit{% + \blx@leavevmode@cite + \iftoggle{blx@bibliography} + {} + {\blx@initunit}} + +% *{<command>}[<wrapper>]{<precode>}{<loopcode>}{<delimcode>}{<postcode>} +\newrobustcmd*{\DeclareCiteCommand}{% + \@ifstar{\blx@defcitecmd*}{\blx@defcitecmd{}}} + +\def\blx@defcitecmd#1#2{% + \begingroup + \escapechar\m@ne + \edef\blx@tempa{\endgroup + \noexpand\blx@defcitecmd@i{#1}{\string#2}}% + \blx@tempa} + +\def\blx@defcitecmd@i#1#2{% + \blx@checkcitecmd{#2}{#1}% + \protected\csdef{#2}{% + \blx@citecmdinit + \@ifstar + {\blx@citepunct{\blxcitecmd{#2*}}} + {\blx@citepunct{\blxcitecmd{#2}}}}% + \@ifnextchar[%] + {\blx@defcitecmd@iii{#2#1}} + {\blx@defcitecmd@ii{#2#1}}} + +\long\def\blx@defcitecmd@ii#1{% + \protected\csedef{blx@cite@#1}{\blxciteicmd{#1}}% + \blx@defcitecmd@iv{#1}} + +\long\def\blx@defcitecmd@iii#1[#2]{% + \protected\long\csedef{blx@cite@#1}##1##2##3##4{% + \begingroup + \blx@citeinit + \unexpanded{#2}{\blxciteicmd{#1}{##1}{##2}{##3}{}}% + ##4\endgroup}% + \blx@defcitecmd@iv{#1}} + +\long\def\blx@defcitecmd@iv#1#2#3#4#5{% + \protected\long\csdef{blx@citei@#1}##1##2##3##4{% + \ifblank{##1} + {} + {\def\abx@field@prenote{##1}}% + \ifblank{##2} + {\let\blx@thenotecheck\relax} + {\def\abx@field@postnote{##2}}% + \def\blx@precode{\delimcontext{#1}#2}% + \def\blx@loopcode{#3}% + \def\blx@dlimcode{#4}% + \def\blx@postcode{#5##4}% + \blx@citeloop{##3}% + \endgroup}} + +% {<type>}{<name>}{*} +\def\blx@checkcitecmd#1#2{% + \ifblank{#2} + {\ifcsdef{blx@cite@#1} + {\blx@info{Redefining '\@backslashchar#1'}} + {\ifcsundef{#1} + {} + {\blx@warning@noline{Redefining '\@backslashchar#1'}}}% + \ifcsdef{blx@cite@#1*} + {} + {\csedef{blx@cite@#1*}{% + \expandafter\noexpand\csname blx@cite@#1\endcsname}% + \csedef{blx@citei@#1*}{% + \expandafter\noexpand\csname blx@citei@#1\endcsname}}} + {\ifcsdef{blx@cite@#1} + {} + {\csdef{blx@cite@#1}{\blx@err@citecmd{#1}}% + \csdef{blx@citei@#1}{\blx@err@citecmd{#1}}}}} + +% {<name>}{prenote}{postnote}{citekey}{punct} +\newrobustcmd*{\blxcitecmd}[1]{% + \ifcsundef{blx@cite@#1} + {\blx@err@citecmd{#1}} + {\csuse{blx@cite@#1}}} + +\newrobustcmd*{\blxciteicmd}[1]{% + \begingroup + \blx@citeinit + \ifcsundef{blx@citei@#1} + {\blx@err@citecmd{#1}} + {\csuse{blx@citei@#1}}} + +% {<multicitecount>}{<name>}{prenote}{postnote}{citekey}{punct} +\protected\def\blxmciteicmd#1{% + \c@multicitecount#1\relax + \blxciteicmd} + +% {<multicitetotal>}{<multiprenote>}{<multipostnote>} +\protected\def\blxmcites#1#2#3{% + \begingroup + \blx@citeinit + \c@multicitecount\z@ + \c@multicitetotal#1\relax + \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}}% + \ifblank{#3}% + {} + {\def\abx@field@multipostnote{#3}}% + \usebibmacro{multiprenote}} + +\protected\def\blxendmcites{% + \usebibmacro{multipostnote}% + \endgroup} + +% {<command>}[<wrapper>]{<cite>}{<delimiter>} +\newrobustcmd{\DeclareMultiCiteCommand}[1]{% + \ifundef#1% + {} + {\blx@info{Redefining '\string#1'}}% + \@ifnextchar[%] + {\blx@defmcitecmd{#1}} + {\blx@defmcitecmd{#1}[\@firstofone]}} + +\def\blx@defmcitecmd#1[#2]#3#4{% + \begingroup + \escapechar\m@ne + \edef\blx@tempa{\endgroup + \protected\def\noexpand#1{% + \blx@citecmdinit + \noexpand\@ifstar + {\expandafter\noexpand + \csname blx@mcite@\string#1\endcsname*% + \expandafter\noexpand + \csname blx@mcitei@\string#1\endcsname} + {\expandafter\noexpand + \csname blx@mcite@\string#1\endcsname{}% + \expandafter\noexpand + \csname blx@mcitei@\string#1\endcsname}}% + \protected\csdef{blx@mcite@\string#1}####1####2{% + \begingroup + \blx@citeinit + \noexpand\blx@multicite + ####2% + {\unexpanded{#2}}% + {\string#3####1}% + {\unexpanded{#4}}}% + \protected\long\csdef{blx@mcitei@\string#1}}% + \blx@tempa##1##2##3{##1{##2}##3\endgroup}} + +% {<command>}{<wrapper>}{<citecmd>}{<delimiter>} => +% <init><command>{<wrapper>}{<cites>}{<punct>} +\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}% + \def\blx@tempd{#4}% + \c@multicitetotal\z@ + \blx@multiargs\blx@multicite@i} + +\def\blx@multicite@i#1#2{% + \ifblank{#1}% + {\let\abx@field@multiprenote\@empty}% + {\def\abx@field@multiprenote{#1}}% + \ifblank{#2}% + {\let\abx@field@multipostnote\@empty}% + {\def\abx@field@multipostnote{#2}}% + \let\blx@tempe\@empty + \let\blx@tempf\@empty + \togglefalse{blx@tempa}% + \blx@multiparse} + +\def\blx@multicite@add#1#2#3{% + \togglefalse{blx@tempa}% + \advance\c@multicitetotal\@ne + \eappto\blx@tempe{% + \expandonce\blx@tempf + \blxmciteicmd{\the\c@multicitetotal}% + {\expandonce\blx@tempc}\unexpanded{{#1}{#2}{#3}}{}}% + \let\blx@tempf\blx@tempd + \blx@multiparse} + +\def\blx@multicite@end#1{% + \edef\blx@tempa{\endgroup + \expandonce\blx@tempa + {\expandonce\blx@tempb}% + {\blxmcites + {\the\c@multicitetotal}% + {\expandonce\abx@field@multiprenote}% + {\expandonce\abx@field@multipostnote}% + \expandonce\blx@tempe + \blxendmcites}% + {#1}% + \iftoggle{blx@tempa}{\relax\space}{}}% + \blx@tempa} + +\def\blx@multiparse{% + \futurelet\@let@token\blx@multiparse@i} + +\def\blx@multiparse@i{% + \ifx\@let@token\relax + \blx@multiparse@ii{\blx@multicite@end{}}% + \fi + \ifx\@let@token[%] + \blx@multiparse@ii{\blx@citeargs\blx@multicite@add}% + \fi + \ifx\@let@token\bgroup + \blx@multiparse@ii{\blx@citeargs\blx@multicite@add}% + \fi + \ifx\@let@token\@sptoken + \blx@multiparse@ii\blx@multiparse@iii + \fi + \iftrue + \iftoggle{blx@tempa} + {\blx@multiparse@ii{\blx@multicite@end{}}} + {\blx@multiparse@ii{\blx@thecheckpunct\blx@multicite@end}}% + \fi + &} + +\def\blx@multiparse@ii#1#2&{\fi#1} +\csdef{blx@multiparse@iii} {\toggletrue{blx@tempa}\blx@multiparse} + +% {<name>}[l|i|r]{<cite>}{<multicite>} +\newrobustcmd*{\DeclareAutoCiteCommand}[1]{% + \ifcsundef{blx@acite@#1} + {} + {\blx@info{Redefining autocite command '#1'}}% + \@ifnextchar[%] + {\blx@defautocmd@i{#1}} + {\blx@defautocmd@i{#1}[r]}} + +\def\blx@defautocmd@i#1[#2]#3#4{% + \begingroup + \escapechar\m@ne + \edef\blx@tempa{\endgroup + \noexpand\blx@defautocmd@ii{#1}{#2}% + {\string#3}{\string#4}}% + \blx@tempa} + +\def\blx@defautocmd@ii#1#2#3#4{% + \protected\csedef{blx@acite@#1}{% + \blx@citecmdinit + \noexpand\@ifstar + {\blx@citepunct{\expandafter\noexpand + \csname blx@acitei@#1\endcsname*}} + {\blx@citepunct{\expandafter\noexpand + \csname blx@acitei@#1\endcsname{}}}}% + \protected\csedef{blx@acitei@#1}##1##2##3##4##5{% + \begingroup + \blx@citeinit + \if l#2\noexpand\unspace##5\fi + \if f#2\noexpand\iftoggle{blx@footnote}{}{\unspace##5}\fi + \blxcitecmd{#3##1}{##2}{##3}{##4}{}% + \if r#2##5\fi + \if f#2\noexpand\iftoggle{blx@footnote}{##5}{}\fi + \endgroup}% + \protected\csedef{blx@macite@#1}{% + \blx@citecmdinit + \noexpand\@ifstar + {\expandafter\noexpand + \csname blx@mcite@#4\endcsname*% + \expandafter\noexpand + \csname blx@macitei@#1\endcsname} + {\expandafter\noexpand + \csname blx@mcite@#4\endcsname{}% + \expandafter\noexpand + \csname blx@macitei@#1\endcsname}}% + \protected\csedef{blx@macitei@#1}##1##2##3{% + \if l#2\noexpand\unspace##3\fi + \if f#2\noexpand\iftoggle{blx@footnote}{}{\unspace##3}\fi + ##1{##2}% + \if r#2##3\fi + \if f#2\noexpand\iftoggle{blx@footnote}{##3}{}\fi + \endgroup}} + +% {<characters>} +\newrobustcmd*{\DeclareAutoPunctuation}[1]{% + \ifblank{#1} + {\let\blx@thecheckpunct\blx@nocheckpunct} + {\let\blx@thecheckpunct\blx@checkpunct + \def\blx@autopunct{#1}}} + +\AfterEndPreamble{% babel + \begingroup + \makeatletter + \endlinechar\m@ne + \scantokens\expandafter{% + \expandafter\gdef + \expandafter\blx@autopunct + \expandafter{\blx@autopunct}}% + \endgroup} + +% [<prenote>][<postnote>]{<entrykey>,...}[<format>]{<namelist>}<punct> +\newrobustcmd*{\citename}{\blx@citexpunct{citename}} +\long\csdef{blx@cite@citename}#1#2#3#4#5#6{% + \begingroup + \blx@citecmdinit + \blx@citeinit + \ifblank{#1} + {} + {\def\abx@field@prenote{#1}}% + \ifblank{#2} + {\let\blx@thenotecheck\relax} + {\def\abx@field@postnote{#2}}% + \def\blx@precode{\usebibmacro{prenote}}% + \def\blx@loopcode{% + \ifnameundef{#5} + {\blx@warning@entry{'#5' undefined or not a name list}% + \abx@missing{#5}} + {\printnames[#4]{#5}}}% + \def\blx@dlimcode{\multicitedelim}% + \ifblank{#2} + {\def\blx@postcode{#6}} + {\def\blx@postcode{\usebibmacro{postnote}#6}}% + \boolfalse{citetracker}% + \boolfalse{pagetracker}% + \blx@citeloop{#3}% + \endgroup} + +% [<prenote>][<postnote>]{<entrykey>,...}[<format>]{<list>}<punct> +\newrobustcmd*{\citelist}{\blx@citexpunct{citelist}} +\long\csdef{blx@cite@citelist}#1#2#3#4#5#6{% + \begingroup + \blx@citecmdinit + \blx@citeinit + \ifblank{#1} + {} + {\def\abx@field@prenote{#1}}% + \ifblank{#2} + {\let\blx@thenotecheck\relax} + {\def\abx@field@postnote{#2}}% + \def\blx@precode{\usebibmacro{prenote}}% + \def\blx@loopcode{% + \iflistundef{#5} + {\blx@warning@entry{'#5' undefined or not a literal list}% + \abx@missing{#5}} + {\printlist[#4]{#5}}}% + \def\blx@dlimcode{\multicitedelim}% + \ifblank{#2} + {\def\blx@postcode{#6}} + {\def\blx@postcode{\usebibmacro{postnote}#6}}% + \boolfalse{citetracker}% + \boolfalse{pagetracker}% + \blx@citeloop{#3}% + \endgroup} + +% [<prenote>][<postnote>]{<entrykey>,...}[<format>]{<field>}<punct> + +\newrobustcmd*{\citefield}{\blx@citexpunct{citefield}} +\long\csdef{blx@cite@citefield}#1#2#3#4#5#6{% + \begingroup + \blx@citecmdinit + \blx@citeinit + \ifblank{#1} + {} + {\def\abx@field@prenote{#1}}% + \ifblank{#2} + {\let\blx@thenotecheck\relax} + {\def\abx@field@postnote{#2}}% + \def\blx@precode{\usebibmacro{prenote}}% + \def\blx@loopcode{% + \iffieldundef{#5} + {\blx@warning@entry{'#5' undefined or not a field}% + \abx@missing{#5}} + {\printfield[#4]{#5}}}% + \def\blx@dlimcode{\multicitedelim}% + \ifblank{#2} + {\def\blx@postcode{#6}} + {\def\blx@postcode{\usebibmacro{postnote}#6}}% + \boolfalse{citetracker}% + \boolfalse{pagetracker}% + \blx@citeloop{#3}% + \endgroup} + +\renewrobustcmd*{\cite}{\blx@err@citecmd\cite} +\let\blx@cite@cite\relax +\newrobustcmd*{\parencite}{\blx@warn@citecmd\parencite\cite} +\let\blx@cite@parencite\relax +\newrobustcmd*{\footcite}{\blx@warn@citecmd\footcite\cite} +\let\blx@cite@footcite\relax +\newrobustcmd*{\footcitetext}{\blx@warn@citecmd\footcitetext\cite} +\let\blx@cite@footcitetext\relax +\newrobustcmd*{\smartcite}{\blx@warn@citecmd\smartcite\cite} +\let\blx@cite@smartcite\relax +\newrobustcmd*{\textcite}{\blx@warn@citecmd\textcite\cite} +\let\blx@cite@textcite\relax +\newrobustcmd*{\supercite}{\blx@warn@citecmd\supercite\cite} +\let\blx@cite@supercite\relax + +%% ifthen interface + +\def\blx@TE#1#2{% + \TE@throw + \unexpanded{% + \iftrue\@nameuse{fi}% + #1{\@nameuse{iftrue}}{\@nameuse{iffalse}}}#2} + +\def\blx@xTE#1#2{% + \TE@throw + \unexpanded{\iftrue\@nameuse{fi}}% + #1\unexpanded{{\@nameuse{iftrue}}{\@nameuse{iffalse}}}#2} + +\let\blx@TE@hook\@empty + +\appto\blx@blxinit{% + \appto\blx@TE@hook{% + \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}% + \def\ifloccit{\blx@TE\blx@imc@ifloccit}% + \def\ifsamepage{\blx@TE\blx@imc@ifsamepage}% + \def\iffirstonpage{\blx@TE\blx@imc@iffirstonpage}% + \def\ifcurrentfield#1{\blx@TE{\blx@imc@ifcurrentfield{#1}}}% + \def\ifcurrentlist#1{\blx@TE{\blx@imc@ifcurrentlist{#1}}}% + \def\ifcurrentname#1{\blx@TE{\blx@imc@ifcurrentname{#1}}}% + \def\ifentrytype#1{\blx@TE{\blx@imc@ifentrytype{#1}}}% + \def\iffieldequalcs#1#2{\blx@TE{\blx@imc@iffieldequalcs{#1}{#2}}}% + \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}}}% + \def\ifnamesequal#1#2{\blx@TE{\blx@imc@ifnamesequal{#1}{#2}}}% + \def\ifnameundef#1{\blx@TE{\blx@imc@ifnameundef{#1}}}% + \def\ifcategory#1{\blx@TE{\blx@imc@ifcategory{#1}}}% + \def\ifkeyword#1{\blx@TE{\blx@imc@ifkeyword{#1}}}% + \def\ifentrycategory#1#2{\blx@TE{\blx@imc@ifentrycategory{#1}{#2}}}% + \def\ifentrykeyword#1#2{\blx@TE{\blx@imc@ifentrykeyword{#1}{#2}}}% + \def\ifcapital{\blx@TE\blx@imc@ifcapital}% + \def\ifinteger#1{\blx@TE{\blx@imc@ifinteger{#1}}}% + \def\iffieldint#1{\blx@TE{\blx@imc@iffieldint{#1}}}% + \def\ifnumeral#1{\blx@TE{\blx@imc@ifnumeral{#1}}}% + \def\ifnumerals#1{\blx@TE{\blx@imc@ifnumerals{#1}}}% + \def\ifpages#1{\blx@TE{\blx@imc@ifpages{#1}}}% + \def\iffieldnum#1{\blx@TE{\blx@imc@iffieldnum{#1}}}% + \def\iffieldnums#1{\blx@TE{\blx@imc@iffieldnums{#1}}}% + \def\iffieldpages#1{\blx@TE{\blx@imc@iffieldpages{#1}}}% + \def\ifbibstring#1{\blx@TE{\blx@imc@ifbibstring{#1}}}% + \def\iffieldbibstring#1{\blx@TE{\blx@imc@iffieldbibstring{#1}}}% + \def\ifnatbibmode{\blx@TE{\iftoggle{blx@natbib}}}% + \def\ifcitation{\blx@TE{\iftoggle{blx@citation}}}% + \def\ifbibliography{\blx@TE{\iftoggle{blx@bibliography}}}% + \def\ifciteindex{\blx@TE{\iftoggle{blx@citeindex}}}% + \def\ifbibindex{\blx@TE{\iftoggle{blx@bibindex}}}% + \def\iffootnote{\blx@TE{\iftoggle{blx@footnote}}}% + \def\ifuseprefix{\blx@TE{\iftoggle{blx@useprefix}}}% + \def\ifterseinits{\blx@TE{\iftoggle{blx@terseinits}}}% + \def\iffirstinits{\blx@TE{\iftoggle{blx@giveninits}}}% legacy name for \ifgiveninits + \def\ifgiveninits{\blx@TE{\iftoggle{blx@giveninits}}}% + \def\ifsingletitle{\blx@TE{\iftoggle{abx@bool@singletitle}}}% + \def\ifuniquetitle{\blx@TE{\iftoggle{abx@bool@uniquetitle}}}% + \def\ifuniqueprimaryauthor{\blx@TE{\iftoggle{abx@bool@uniqueprimaryauthor}}}% + \def\ifandothers#1{\blx@TE{\iftoggle{abx@bool@more#1}}}}} + +% {<listmacro>}{<filtercsname>} => matches in <listmacro> + +\protected\def\blx@bibfilter#1#2{% + \begingroup + \edef\blx@do##1{% + \def\noexpand\blx@flt@item{##1}% + \ifboolexpr{\csexpandonce{#2}}% + {\listadd\noexpand\blx@tempa{##1}}% + {}}% + \let\blx@done\relax + \edef\blx@tempa{% + \let\noexpand\blx@tempa\noexpand\@empty + \blx@listloop{#1}}% + \blx@tempa + \edef\blx@tempa{\endgroup + \def\noexpand#1{\blx@tempa}}% + \blx@tempa} + +%% Auxiliary macros + +\newrobustcmd*{\mkbibquote}{\enquote} +\protected\def\blx@imc@mkbibquote{% + \blx@ifuspunct\blx@usquote\enquote} + +\def\blx@usquote{% + \ifnum\@quotelevel>\z@ + \expandafter\blx@usiquote + \else + \expandafter\blx@usoquote + \fi} + +\long\def\blx@usoquote#1{% + \begingroup + \initoquote + \textooquote#1% + \futurelet\@let@token\blx@usoquote@i} + +\def\blx@usoquote@i{% + \blx@usqcheck + {\ifx\blx@postpunct\@empty\else\blx@dopostpunct\fi + \textcoquote\endgroup} + {\blx@setpostpunct\textcoquote\endgroup}} + +\long\def\blx@usiquote#1{% + \begingroup + \initiquote + \textoiquote#1% + \futurelet\@let@token\blx@usiquote@i} + +\def\blx@usiquote@i{% + \blx@usqcheck + {\textciquote\endgroup} + {\blx@setpostpunct\textciquote\endgroup}} + +\long\def\blx@usqcheck#1#2{% + \def\blx@tempa{#1}% + \def\blx@tempb{#2}% + \ifx\@let@token\space + \blx@usqcheck@i\blx@tempa + \fi + \ifx\@let@token\@sptoken + \blx@usqcheck@i\blx@tempa + \fi + \if\noexpand\@let@token\relax + \expandafter\blx@usqcheck@iv + \fi + \expandafter\blx@usqcheck@ii\blx@quotepunct\relax&} + +\long\def\blx@usqcheck@i#1#2&{\fi#1} + +\long\def\blx@usqcheck@ii#1{% + \if\noexpand#1\relax + \blx@usqcheck@i\blx@tempa + \fi + \if\noexpand#1\noexpand\@let@token + \blx@usqcheck@i{\blx@usqcheck@iii\blx@tempa}% + \fi + \blx@usqcheck@ii +} + +\long\def\blx@usqcheck@iii#1#2{#2#1} + +\long\def\blx@usqcheck@iv#1{% + \begingroup + \escapechar=-1 % + \edef\blx@tempa{\expandafter\@gobble\string#2}% + \expandafter\endgroup + \ifx\blx@tempa\@empty + \else + \blx@usqcheck@i\blx@tempb + \fi + #1% +} + +\newrobustcmd*{\mkbibemph}{\emph} +\protected\long\def\blx@imc@mkbibemph#1{% + \emph{#1}\blx@imc@setpunctfont\emph} + +\newrobustcmd*{\mkbibbold}{\textbf} +\protected\long\def\blx@imc@mkbibbold#1{% + \textbf{#1}\blx@imc@setpunctfont\textbf} + +\newrobustcmd*{\mkbibitalic}{\textit} +\protected\long\def\blx@imc@mkbibitalic#1{% + \textit{#1}\blx@imc@setpunctfont\textit} + +\blx@regimcs{\mkbibquote \mkbibemph \mkbibbold \mkbibitalic} + +\newcommand*{\bibleftparen}{\blx@postpunct(} +\newcommand*{\bibrightparen}{\blx@postpunct)\midsentence} +\newcommand*{\bibleftbracket}{\blx@postpunct[} +\newcommand*{\bibrightbracket}{\blx@postpunct]\midsentence} + +\def\blx@parenlevel{% + \iftoggle{blx@footnote} + {\blx@parenlevel@foot} + {\blx@parenlevel@text}} + +\newrobustcmd*{\blx@bibopenparen}{% + \blx@opencheck\bibopenparen + \blx@postpunct + \ifnum\blx@parenlevel=\z@ + \global\blx@parenlevel\@ne + \global\c@parenlevel\@ne + \expandafter\bibleftparen + \else + \expandafter\blx@openparen + \fi} + +\newrobustcmd*{\blx@bibopenbracket}{% + \blx@opencheck\bibopenbracket + \blx@postpunct + \ifnum\blx@parenlevel=\z@ + \global\blx@parenlevel1002 + \global\c@parenlevel\@ne + \expandafter\bibleftbracket + \else + \expandafter\blx@openparen + \fi} + +\newrobustcmd*{\blx@bibcloseparen}{% + \blx@closecheck\bibcloseparen + \blx@postpunct\blx@closeparen} + +\newrobustcmd*{\blx@bibclosebracket}{% + \blx@closecheck\bibclosebracket + \blx@postpunct\blx@closeparen} + +\def\blx@openparen{% + \ifodd\blx@parenlevel + \global\advance\blx@parenlevel\@ne + \global\advance\c@parenlevel\@ne + \expandafter\bibleftbracket + \else + \global\advance\blx@parenlevel\@ne + \global\advance\c@parenlevel\@ne + \expandafter\bibleftparen + \fi} + +\def\blx@closeparen{% + \ifodd\blx@parenlevel + \blx@closeparen@i + \expandafter\bibrightparen + \else + \blx@closeparen@i + \expandafter\bibrightbracket + \fi} + +\def\blx@closeparen@i{% + \ifnum\blx@parenlevel=1002 + \global\blx@parenlevel\z@ + \global\c@parenlevel\z@ + \else + \global\advance\blx@parenlevel\m@ne + \global\advance\c@parenlevel\m@ne + \fi} + +\def\blx@opencheck#1{% + \ifnum\numexpr\blx@parenlevel+\@ne + \ifnum\blx@parenlevel>\@m -1001\fi + >\c@maxparens + \blx@err@nestparen{\string#1}% + \blx@errormark + \fi} + +\def\blx@closecheck#1{% + \ifnum\numexpr\blx@parenlevel + \ifnum\blx@parenlevel>\@m -1001\fi + >\c@maxparens + \blx@err@nestparen{\string#1}% + \blx@errormark + \fi + \ifnum\blx@parenlevel<\@ne + \blx@err@matchparen{Unmatched \string#1}% + \blx@errormark + \fi} + +\protected\def\blx@errormark{% + \rule[0.25ex]{1.25ex}{1.25ex}} + +\AtEndDocument{% + \unless\ifnum\blx@parenlevel@text=\z@ + \blx@err@matchparen{% + Unbalanced parentheses or brackets in the document body}% + \fi + \unless\ifnum\blx@parenlevel@foot=\z@ + \blx@err@matchparen{% + Unbalanced parentheses or brackets in a foot or endnote}% + \fi} + +\newrobustcmd{\mkbibparens}[1]{% + \begingroup + \blx@blxinit + \blx@setsfcodes + \bibopenparen#1\bibcloseparen + \endgroup} + +\newrobustcmd{\mkbibbrackets}[1]{% + \begingroup + \blx@blxinit + \blx@setsfcodes + \bibopenbracket#1\bibclosebracket + \endgroup} + +\newrobustcmd*{\parentext}{\mkbibparens} +\newrobustcmd*{\brackettext}{\mkbibbrackets} + +\newrobustcmd{\mkbibsuperscript}[1]{% + \unspace\allowhyphens\textsuperscript{% + \begingroup + \protected\long\def\mkbibsuperscript##1{% + \blx@warning{Nested superscript}% + \mkbibbrackets{##1}}% + #1\endgroup}} + +\newrobustcmd{\mkbibfootnote}{\blx@mkbibfootnote{}} +\newrobustcmd{\mkbibfootnotetext}{\blx@mkbibfootnote{text}} +\newrobustcmd{\blx@mkbibfootnote}[2]{% + \iftoggle{blx@footnote} + {\blx@warning{Nested notes}% + \addspace\mkbibparens{#2}} + {\unspace + \ifnum\blx@notetype=\tw@ + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {\csuse{blx@theendnote#1}{\protecting{\blxmkbibnote{end}{#2}}}} + {\csuse{footnote#1}{\protecting{\blxmkbibnote{foot}{#2}}}}}} + +\newrobustcmd{\mkbibendnote}{\blx@mkbibendnote{}} +\newrobustcmd{\mkbibendnotetext}{\blx@mkbibendnote{text}} +\newrobustcmd{\blx@mkbibendnote}[2]{% + \iftoggle{blx@footnote} + {\blx@warning{Nested notes}% + \addspace\mkbibparens{#2}} + {\unspace + \ifnum\blx@notetype=\@ne + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {\csuse{footnote#1}{\protecting{\blxmkbibnote{foot}{#2}}}} + {\csuse{blx@theendnote#1}{\protecting{\blxmkbibnote{end}{#2}}}}}} + +\newrobustcmd{\blxmkbibnote}[2]{% + \begingroup + \blx@blxinit + \blx@setsfcodes + \blx@postpunct@agroup + \toggletrue{blx@footnote}% + \csuse{bib#1notewrapper}{#2}% + \endgroup} + +\newcommand{\bibfootnotewrapper}[1]{% + \bibsentence#1\addperiod} + +\newcommand{\bibendnotewrapper}[1]{% + \bibsentence#1\addperiod} + +\AtEndPreamble{% + \def\blx@theendnote{\blx@err@endnote\footnote}% + \def\blx@theendnotetext{\blx@err@endnote\footnotetext}% + \ifdef\endnote + {\def\blx@theendnote{\endnote}% + \ifdef\endnotetext + {\def\blx@theendnotetext{\endnotetext}} + {}} + {\ifdef\pagenote + {\def\blx@theendnote{\pagenote}% + \ifdef\pagenotetext + {\def\blx@theendnotetext{\pagenotetext}} + {}} + {}}} + +\newrobustcmd*{\mknumalph}[1]{% + \begingroup + \blx@tempcnta=#1\relax + \ifnum\blx@tempcnta>702 % + \else + \ifnum\blx@tempcnta>26 % + \advance\blx@tempcnta\m@ne + \divide\blx@tempcnta26\relax + \blx@numalph\blx@tempcnta + \multiply\blx@tempcnta26\relax + \blx@tempcnta=\numexpr#1-\blx@tempcnta\relax + \fi + \fi + \blx@numalph\blx@tempcnta + \endgroup} +\def\blx@numalph#1{% + \ifcase#1\relax\blx@warning@entry{Value out of range}\number#1\or + a\or b\or c\or d\or e\or f\or g\or h\or i\or j\or k\or l\or m\or + 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} + +% {<macro>}[<pre>]{<vol>}[<post>] => <macro>{<pre>}{{<vol>}{<post>}} + +\newrobustcmd*{\volcitecmd}{% + \AtNextCite{\DeclareFieldAlias{postnote}{volcitenote}}% + \begingroup\let\blx@citeargs\blx@volciteargs} + +\protected\def\blx@volciteargs#1{% + \endgroup + \@ifnextchar[%] + {\blx@volciteargs@i{#1}} + {\blx@volciteargs@i{#1}[]}} + +\long\def\blx@volciteargs@i#1[#2]#3{% + \@ifnextchar[%] + {\blx@volciteargs@ii{#1}{#2}{#3}} + {\blx@citeargs@iii{#1{#2}{{#3}{}}}}} + +\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 + +\begingroup +\let~\space +\@makeother\< +\@makeother\> +\@makeother\. +\@makeother\: +\@makeother\? +\@makeother\" +\@makeother\- +\@makeother\= +\@makeother\/ +\xdef\blx@xml@file{% + \blx@sig@bcf\blx@nl + \blx@ver@bcf\blx@nl} +\xdef\blx@xml@endfile{% + </bcf:controlfile>} +\xdef\blx@xml@comment#1{% + ~~<!-- #1 -->\blx@nl} +\xdef\blx@xml@options#1#2#3{% + ~~<bcf:options% + \noexpand\ifblank{#1}{}{ component="#1"}% + \noexpand\ifblank{#2}{}{ type="#2"}% + >\blx@nl + #3% + ~~</bcf:options>\blx@nl} +\xdef\blx@xml@option#1#2{% + ~~~~<bcf:option type="#1">\blx@nl + #2% + ~~~~</bcf:option>\blx@nl} +\xdef\blx@xml@ordered#1#2#3{% + ~~~~~~<bcf:value order="#1"#2% + >#3</bcf:value>\blx@nl} + +\xdef\blx@xml@datafieldset#1#2{% + ~~<bcf:datafieldset name="#1">\blx@nl + #2% + ~~</bcf:datafieldset>\blx@nl} + +\xdef\blx@xml@datafieldsets@member#1{% + ~~~~<bcf:member#1/>\blx@nl} + +\xdef\blx@xml@transliteration#1#2{% + ~~<bcf:transliteration entrytype="#1">\blx@nl + #2% + ~~</bcf:transliteration>\blx@nl} +\xdef\blx@xml@translit#1#2#3{% + ~~~~<bcf:translit target="#1" from="#2" to="#3"/>\blx@nl} + +\xdef\blx@xml@sourcemap#1{% + ~~<bcf:sourcemap>\blx@nl + #1% + ~~</bcf:sourcemap>\blx@nl} +\xdef\blx@xml@sourcemap@maps#1#2{% + ~~~~<bcf:maps#1>\blx@nl + #2% + ~~~~</bcf:maps>\blx@nl} +\xdef\blx@xml@sourcemap@map#1#2{% + ~~~~~~<bcf:map#1>\blx@nl + #2% + ~~~~~~</bcf:map>\blx@nl} +\xdef\blx@xml@sourcemap@perdatasource#1{% + ~~~~~~~~<bcf:per\string_datasource>#1</bcf:per\string_datasource>\blx@nl} +\xdef\blx@xml@sourcemap@pertype#1{% + ~~~~~~~~<bcf:per\string_type>#1</bcf:per\string_type>\blx@nl} +\xdef\blx@xml@sourcemap@pernottype#1{% + ~~~~~~~~<bcf:per\string_nottype>#1</bcf:per\string_nottype>\blx@nl} +\xdef\blx@xml@sourcemap@step#1{% + ~~~~~~~~<bcf:map\string_step#1/>\blx@nl} + +\xdef\blx@xml@labelalphatemplate#1#2{% + ~~<bcf:labelalphatemplate type="#1">\blx@nl + #2% + ~~</bcf:labelalphatemplate>\blx@nl} +\xdef\blx@xml@labelalpha@element#1#2{% + ~~~~<bcf:labelelement order="#1">\blx@nl + #2% + ~~~~</bcf:labelelement>\blx@nl} +\xdef\blx@xml@labelalpha@part#1#2{% + ~~~~~~<bcf:labelpart#1>#2</bcf:labelpart>\blx@nl} + +\xdef\blx@xml@inheritance#1{% + ~~<bcf:inheritance>\blx@nl + #1% + ~~</bcf:inheritance>\blx@nl} +\xdef\blx@xml@inherit@defaults#1#2{% + ~~~~<bcf:defaults#1>\blx@nl + #2% + ~~~~</bcf:defaults>\blx@nl} +\xdef\blx@xml@inherit@data#1{% + ~~~~<bcf:inherit>\blx@nl + #1% + ~~~~</bcf:inherit>\blx@nl} +\xdef\blx@xml@inherit@type#1#2#3{% + ~~~~~~<bcf:type\string_pair source="#1" target="#2"#3/>\blx@nl} +\xdef\blx@xml@inherit@field#1#2#3{% + ~~~~~~<bcf:field source="#1" target="#2"#3/>\blx@nl} +\xdef\blx@xml@inherit@block#1{% + ~~~~~~<bcf:field source="#1" skip="true"/>\blx@nl} + +\xdef\blx@xml@nosorts#1{% + ~~<bcf:nosorts>\blx@nl + #1% + ~~</bcf:nosorts>\blx@nl} +\xdef\blx@xml@nosort#1#2{% + ~~~~<bcf:nosort field="#1" value="#2"/>\blx@nl} + +\xdef\blx@xml@noinits#1{% + ~~<bcf:noinits>\blx@nl + #1% + ~~</bcf:noinits>\blx@nl} +\xdef\blx@xml@noinit#1{% + ~~~~<bcf:noinit value="#1"/>\blx@nl} + +\xdef\blx@xml@nolabels#1{% + ~~<bcf:nolabels>\blx@nl + #1% + ~~</bcf:nolabels>\blx@nl} +\xdef\blx@xml@nolabel#1{% + ~~~~<bcf:nolabel value="#1"/>\blx@nl} + +\xdef\blx@xml@nolabelwidthcounts#1{% + ~~<bcf:nolabelwidthcounts>\blx@nl + #1% + ~~</bcf:nolabelwidthcounts>\blx@nl} +\xdef\blx@xml@nolabelwidthcount#1{% + ~~~~<bcf:nolabelwidthcount value="#1"/>\blx@nl} + +\xdef\blx@xml@sortingnamekey#1#2{% + ~~<bcf:sortingnamekey keyscheme="#1">\blx@nl% + #2% + ~~</bcf:sortingnamekey>\blx@nl} + +\xdef\blx@xml@sortingnamekeykeypart#1#2{% + ~~~~<bcf:keypart#1>\blx@nl + #2% + ~~~~</bcf:keypart>\blx@nl} + +\xdef\blx@xml@sortingnamekeynamepart#1#2#3{% + ~~~~~~<bcf:part type="namepart"#1#2>#3</bcf:part>\blx@nl} + +\xdef\blx@xml@sortingnamekeyliteral#1#2{% + ~~~~~~<bcf:part type="literal"#1>#2</bcf:part>\blx@nl} + +\xdef\blx@xml@sorting#1#2{% + ~~<bcf:sorting#1>\blx@nl% + #2% + ~~</bcf:sorting>\blx@nl} +\xdef\blx@xml@presort#1#2{% + ~~~~<bcf:presort\noexpand\ifblank{#1}{}{ type="#1"}>% + #2</bcf:presort>\blx@nl} + +\xdef\blx@xml@sortexclude#1#2{% + ~~~~<bcf:sortexclusion\noexpand\ifblank{#1}{}{ type="#1"}>\blx@nl + #2% + ~~~~</bcf:sortexclusion>\blx@nl} +\xdef\blx@xml@exclude#1{% + ~~~~~~<bcf:exclusion>#1</bcf:exclusion>\blx@nl} +\xdef\blx@xml@sort#1#2{% + ~~~~<bcf:sort #1>\blx@nl + #2% + ~~~~</bcf:sort>\blx@nl} +\xdef\blx@xml@sortitem#1#2{% + ~~~~~~<bcf:sortitem #1>#2</bcf:sortitem>\blx@nl} +\xdef\blx@xml@section#1{% + ~~<bcf:section number="#1">} +\xdef\blx@xml@endsection{% + ~~</bcf:section>} + +\xdef\blx@xml@slist#1#2#3#4#5#6#7#8{% + ~~<bcf:sortlist section="#3" name="#1" type="#2" sortscheme="#4" + sortnamekeyscheme="#5" labelprefix="#6">\blx@nl + #8% + #7% + ~~</bcf:sortlist>\blx@nl} +\xdef\blx@xml@slistfilterorbegin{% + ~~~~<bcf:filteror>\blx@nl} +\xdef\blx@xml@slistfilterorend{% + ~~~~</bcf:filteror>\blx@nl} +\xdef\blx@xml@slistfilter#1#2{% + ~~~~<bcf:filter type="#1">#2</bcf:filter>\blx@nl} + +\xdef\blx@xml@bibdata#1#2{% + ~~<bcf:bibdata section="#1">\blx@nl + #2% + ~~</bcf:bibdata>\blx@nl} +\xdef\blx@xml@datasource#1#2#3{% + ~~~~<bcf:datasource type="#1" datatype="#2">#3</bcf:datasource>\blx@nl} +\xdef\blx@xml@citekey#1#2{% + ~~~~<bcf:citekey order="#2">#1</bcf:citekey>} +\xdef\blx@xml@citeset#1#2{% + ~~~~<bcf:citekey type="set" members="#2">#1</bcf:citekey>} +\xdef\blx@xml@svalue#1#2{% + \blx@xml@option{singlevalued}{% + ~~~~~~<bcf:key>#1</bcf:key>\blx@nl + ~~~~~~<bcf:value>#2</bcf:value>\blx@nl}} +\xdef\blx@xml@mvalue#1#2{% + \blx@xml@option{multivalued}{% + ~~~~~~<bcf:key>#1</bcf:key>\blx@nl + #2}} +\xdef\blx@xml@toggle#1{% + \blx@xml@svalue{#1}{\noexpand\iftoggle{blx@#1}{1}{0}}} +\xdef\blx@xml@options@scope#1#2{% + ~~<bcf:optionscope type="#1">\blx@nl + #2% + ~~</bcf:optionscope>\blx@nl} +\xdef\blx@xml@option@scope#1#2{% + ~~~~<bcf:option datatype="#1">#2</bcf:option>\blx@nl} +\endgroup + +\def\blx@bcf@options@global{% + \blx@xml@comment{GLOBAL}% + \blx@xml@options{biblatex}{global}{% + \blx@xml@svalue{alphaothers}{\labelalphaothers}% + \blx@xml@toggle{labelalpha}% + \blx@xml@mvalue{labelnamespec}{\blx@bcf@labelnamespec}% + \blx@xml@toggle{labeltitle}% + \blx@xml@mvalue{labeltitlespec}{\blx@bcf@labeltitlespec}% + \blx@xml@toggle{labeltitleyear}% + \blx@xml@toggle{labeldate}% + \blx@xml@mvalue{labeldatespec}{\blx@bcf@labeldatespec}% + \blx@xml@svalue{maxalphanames}{\blx@maxalphanames}% + \blx@xml@svalue{maxbibnames}{\blx@maxbibnames}% + \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{mincitenames}{\blx@mincitenames}% + \blx@xml@svalue{minitems}{\blx@minitems}% + \blx@xml@toggle{singletitle}% + \blx@xml@svalue{sortalphaothers}{\sortalphaothers}% + \blx@xml@svalue{sortlocale}{\blx@sortlocale}% + \blx@xml@svalue{sortscheme}{\blx@sorting}% + \blx@xml@svalue{uniquelist}{\blx@uniquelist}% + \blx@xml@svalue{uniquename}{\blx@uniquename}% + \blx@xml@toggle{uniqueprimaryauthor}% + \blx@xml@toggle{uniquetitle}% + \blx@xml@toggle{useprefix}% + \blx@xml@nametoggles + }% +} + +\def\blx@bcf@options@type#1{% + \blx@xml@comment{#1}% + \blx@xml@options{biblatex}{#1}{% + \blx@xml@toggle{labelalpha}% + \blx@xml@mvalue{labelnamespec}{% + \ifcsdef{blx@bcf@labelnamespec@#1} + {\csuse{blx@bcf@labelnamespec@#1}} + {\blx@bcf@labelnamespec}}% + \blx@xml@toggle{labeltitle}% + \blx@xml@mvalue{labeltitlespec}{% + \ifcsdef{blx@bcf@labeltitlespec@#1} + {\csuse{blx@bcf@labeltitlespec@#1}} + {\blx@bcf@labeltitlespec}}% + \blx@xml@toggle{labeltitleyear}% + \blx@xml@toggle{labeldate}% + \blx@xml@mvalue{labeldatespec}{% + \ifcsdef{blx@bcf@labeldatespec@#1} + {\csuse{blx@bcf@labeldatespec@#1}} + {\blx@bcf@labeldatespec}}% + \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}% + \blx@xml@toggle{skipbiblist}% + \blx@xml@svalue{uniquelist}{\blx@uniquelist}% + \blx@xml@svalue{uniquename}{\blx@uniquename}% + \blx@xml@toggle{uniqueprimaryauthor}% + \blx@xml@toggle{uniquetitle}% + \blx@xml@toggle{useprefix}% + \blx@xml@nametoggles + }% +} + +\def\blx@ctrlwrite{% + \begingroup + \blx@safe@actives + \let\protect\string + % options + \edef\labelalphaothers{\labelalphaothers}% + \edef\sortalphaothers{\sortalphaothers}% + \blx@xmlsanitizeafter{\def\labelalphaothers}{\labelalphaothers}% + \blx@xmlsanitizeafter{\def\sortalphaothers}{\sortalphaothers}% + % Expand the global use* name toggles + \let\blx@xml@nametoggles\@empty + \def\do##1{\eappto\blx@xml@nametoggles{\blx@xml@toggle{use##1}}}% + \abx@donames + \edef\blx@tempa{% + \blx@xml@file + \blx@xml@comment{BIBER OPTIONS}% + \blx@xml@options{biber}{global}{% + \blx@xml@svalue{output_encoding}{\blx@texencoding}% + \blx@xml@svalue{input_encoding}{\blx@bibencoding}% + \blx@xml@toggle{debug}% + \blx@xml@svalue{mincrossrefs}{\blx@mincrossrefs}% + \blx@xml@svalue{minxrefs}{\blx@minxrefs}% + \blx@xml@toggle{sortcase}% + \blx@xml@toggle{sortgiveninits}% + \blx@xml@toggle{sortupper}% + }% + \blx@xml@comment{BIBLATEX OPTIONS}% + \blx@bcf@options@global + }% + \ifdef\blx@opts@type + {\def\do##1{% + \begingroup + \blx@setoptions@type{##1}% + % Expand the type use* name toggles + \let\blx@xml@nametoggles\@empty + \def\do####1{\eappto\blx@xml@nametoggles{\blx@xml@toggle{use####1}}}% + \abx@donames + \begingroup + \let\protect\relax + \blx@checkoptions@type + \endgroup + \xappto\blx@tempa{\blx@bcf@options@type{##1}}% + \endgroup}% + \dolistloop\blx@opts@type} + {}% + % options scope + % GLOBAL + \def\do##1{% + \begingroup + \def\do####1{\xappto\blx@bcf@options@scope@global{\blx@xml@option@scope{##1}{####1}}}% + \dolistcsloop{blx@globalopts@##1}% + \endgroup}% + \dolistloop\blx@globalopts@datatypes + % ENTRYTYPE + \def\do##1{% + \begingroup + \def\do####1{\xappto\blx@bcf@options@scope@type{\blx@xml@option@scope{##1}{####1}}}% + \dolistcsloop{blx@typeopts@##1}% + \endgroup}% + \dolistloop\blx@typeopts@datatypes + % ENTRY + \def\do##1{% + \begingroup + \def\do####1{\xappto\blx@bcf@options@scope@entry{\blx@xml@option@scope{##1}{####1}}}% + \dolistcsloop{blx@entryopts@##1}% + \endgroup}% + \dolistloop\blx@entryopts@datatypes + % NAMELIST + \def\do##1{% + \begingroup + \def\do####1{\xappto\blx@bcf@options@scope@namelist{\blx@xml@option@scope{##1}{####1}}}% + \dolistcsloop{blx@namelistopts@##1}% + \endgroup}% + \dolistloop\blx@entryopts@datatypes + % NAME + \def\do##1{% + \begingroup + \def\do####1{\xappto\blx@bcf@options@scope@name{\blx@xml@option@scope{##1}{####1}}}% + \dolistcsloop{blx@nameopts@##1}% + \endgroup}% + \dolistloop\blx@entryopts@datatypes + + \eappto\blx@tempa{% + \blx@xml@comment{BIBLATEX OPTION SCOPE}% + \blx@xml@options@scope{GLOBAL}{\blx@bcf@options@scope@global}% + \blx@xml@options@scope{ENTRYTYPE}{\blx@bcf@options@scope@type}% + \blx@xml@options@scope{ENTRY}{\blx@bcf@options@scope@entry}% + \blx@xml@options@scope{NAMELIST}{\blx@bcf@options@scope@namelist}% + \blx@xml@options@scope{NAME}{\blx@bcf@options@scope@name}} + % datafieldsets + \def\do##1{% + \xappto\blx@bcf@datafieldsets{\blx@xml@datafieldset{##1}{\csuse{blx@datafieldsetmembers@##1}}}} + \dolistloop\blx@datafieldsets + + \eappto\blx@tempa{% + \blx@xml@comment{DATAFIELDSETS}% + \blx@bcf@datafieldsets}% + % sourcemap + \ifbool{sourcemap} + {\eappto\blx@tempa{% + \blx@xml@comment{SOURCEMAP}% + \blx@xml@sourcemap{% + \ifcsdef{blx@sourcemap@user} + {\csuse{blx@sourcemap@user}} + {}% + \ifcsdef{blx@sourcemap@style} + {\csuse{blx@sourcemap@style}} + {}% + \ifcsdef{blx@sourcemap@defaults@bibtex} + {\csuse{blx@sourcemap@defaults@bibtex}} + {}% + \ifcsdef{blx@sourcemap@defaults@biblatexml} + {\csuse{blx@sourcemap@defaults@biblatexml}} + {}% + \ifcsdef{blx@sourcemap@defaults@endnotexml} + {\csuse{blx@sourcemap@defaults@endnotexml}} + {}% + \ifcsdef{blx@sourcemap@defaults@ris} + {\csuse{blx@sourcemap@defaults@ris}} + {}% + \ifcsdef{blx@sourcemap@defaults@zoterordfxml} + {\csuse{blx@sourcemap@defaults@zoterordfxml}} + {}}}} + {}% + % labelalpha template + \eappto\blx@tempa{% + \blx@xml@comment{LABELALPHA TEMPLATE}}% + \def\do##1{% + \eappto\blx@tempa{% + \blx@xml@labelalphatemplate{##1}{% + \csuse{blx@labelalphatemplate@##1}}% + }% + }% + \dolistloop\blx@latem@type + % data inheritance + \eappto\blx@tempa{% + \blx@xml@comment{INHERITANCE}% + \blx@xml@inheritance{% + \csuse{blx@inherit@default}% + \csuse{blx@inherit@data}% + }% + }% + % noinit + \ifcsdef{blx@noinit} + {\eappto\blx@tempa{% + \blx@xml@comment{NOINIT}% + \blx@xml@noinits{% + \csuse{blx@noinit}% + }% + }} + {}% + % nolabel + \ifcsdef{blx@nolabel} + {\eappto\blx@tempa{% + \blx@xml@comment{NOLABEL}% + \blx@xml@nolabels{% + \csuse{blx@nolabel}% + }% + }} + {}% + % nolabel + \ifcsdef{blx@nolabelwidthcount} + {\eappto\blx@tempa{% + \blx@xml@comment{NOLABELWIDTHCOUNT}% + \blx@xml@nolabelwidthcounts{% + \csuse{blx@nolabelwidthcount}% + }% + }} + {}% + % nosort + \ifcsdef{blx@nosort} + {\eappto\blx@tempa{% + \blx@xml@comment{NOSORT}% + \blx@xml@nosorts{% + \csuse{blx@nosort}% + }% + }} + {}% + % transliteration + \ifdefempty\blx@translits + {} + {\eappto\blx@tempa{\blx@xml@comment{TRANSLITERATION}}% + \def\do##1{% + \eappto\blx@tempa{\blx@xml@transliteration{##1}{\csuse{blx@translit@##1}}}}% + \dolistloop\blx@translits}% + % sortingnamekey + \eappto\blx@tempa{\blx@xml@comment{SORTING NAME KEY}}% + \def\do##1{% + \eappto\blx@tempa{% + \blx@xml@sortingnamekey{##1}{% + \csuse{blx@sortingnamekey@##1}}}}% + \dolistloop\blx@sortingnamekeyspecs + % sorting + \def\do##1{% + \eappto\blx@bcf@presort{\csuse{blx@bcf@presort@##1}}% + \eappto\blx@bcf@exclude{\csuse{blx@bcf@exclude@##1}}}% + \abx@doentrytypes + \eappto\blx@tempa{% + \blx@xml@comment{SORTING}% + \blx@xml@sorting{}{% + \blx@bcf@presort + \blx@bcf@exclude + \csuse{blx@sorting@\blx@sorting}% + }% + }% + % datamodel + \eappto\blx@tempa{% + \blx@xml@comment{DATA MODEL}% + \blx@xml@datamodel{% + \blx@xml@datamodel@constants{% + \blx@bcf@datamodel@constants + }% + \blx@xml@datamodel@entrytypes{% + \blx@bcf@datamodel@entrytypes + }% + \blx@xml@datamodel@fields{% + \blx@bcf@datamodel@fields + }% + \blx@bcf@datamodel@entryfields + \blx@bcf@datamodel@constraints + }% + }% + % files + \let\blx@tempb\@empty + \blx@bibdata\blx@tempb\blx@bibfiles + \eappto\blx@tempa{% + \blx@xml@comment{CITATION DATA}% + \blx@xml@comment{SECTION 0}% + \blx@xml@bibdata{0}{\blx@tempb}% + \blx@xml@section{0}% + }% + \immediate\openout\blx@bcfout\jobname.bcf\relax + \blx@auxwrite\blx@bcfout{}{\blx@tempa}% + \global\undef\blx@tempa + \endgroup + \AfterEndDocument{% + \blx@auxwrite\blx@bcfout{}{% + \blx@xml@endsection\blx@nl + \csuse{blx@slists}% + \blx@xml@endfile}% + \immediate\closeout\blx@bcfout}} + +%% Customisation + +% nolabel +\newrobustcmd*{\DeclareNolabel}[1]{% + \begingroup + \let\nolabel\blx@nolabel@setup + \let\blx@tempa\@empty + #1% + \global\let\blx@nolabel\blx@tempa + \endgroup} +\@onlypreamble\DeclareNolabel + +\newcommand*{\blx@nolabel@setup}[1]{% + \eappto\blx@tempa{% + \blx@xml@nolabel{#1}}} + +% nolabelwidthcount +\newrobustcmd*{\DeclareNolabelwidthcount}[1]{% + \begingroup + \let\nolabel\blx@nolabelwidthcount@setup + \let\blx@tempa\@empty + #1% + \global\let\blx@nolabelwidthcount\blx@tempa + \endgroup} +\@onlypreamble\DeclareNolabelwidthcount + +\newcommand*{\blx@nolabelwidthcount@setup}[1]{% + \eappto\blx@tempa{% + \blx@xml@nolabelwidthcount{#1}}} + +% nosort +\newrobustcmd*{\DeclareNosort}[1]{% + \begingroup + \let\nosort\blx@nosort@setup + \let\blx@tempa\@empty + #1% + \global\let\blx@nosort\blx@tempa + \endgroup} +\@onlypreamble\DeclareNosort + +\newcommand*{\blx@nosort@setup}[2]{% + \eappto\blx@tempa{% + \blx@xml@nosort{#1}{#2}}} + +% noinit +\newrobustcmd*{\DeclareNoinit}[1]{% + \begingroup + \let\noinit\blx@noinit@setup + \let\blx@tempa\@empty + #1% + \global\let\blx@noinit\blx@tempa + \endgroup} +\@onlypreamble\DeclareNoinit + +\newcommand*{\blx@noinit@setup}[1]{% + \eappto\blx@tempa{% + \blx@xml@noinit{#1}}} + +% datafieldsets +\newrobustcmd*{\DeclareDatafieldSet}[2]{% + \begingroup + \let\member\blx@datafieldset@member + \let\blx@tempa\@empty + \def\blx@setname{#1} + \cslet{blx@datafieldset@#1}\@empty + #2% + \csxdef{blx@datafieldsetmembers@#1}{\blx@tempa}% + \listgadd\blx@datafieldsets{#1}% + \global\csletcs{datafieldset#1}{blx@datafieldset@#1}% expose user-facing macro + \endgroup} +\@onlypreamble\DeclareDatafieldSet + +\newcommand*{\blx@datafieldset@member}[1][2]{% + \let\blx@dm@fieldtype\@empty + \let\blx@dm@datatype\@empty + \let\blx@member@field\@empty + \let\blx@tempb\@empty + \setkeys{blx@datafieldsets@member}{#1}% + \eappto\blx@tempa{% + \blx@xml@datafieldsets@member{\blx@tempb}}% + \ifdefempty\blx@member@field + {} + {\listcsxadd{blx@datafieldset@\blx@setname}{\blx@member@field}}% + % Set some internal macros in case biblatex needs to use the set + \ifboolexpr{% + not test {\ifdefempty{\blx@dm@fieldtype}} + and + not test {\ifdefempty{\blx@dm@datatype}}} + {\def\do##1{% + \listcsxadd{blx@datafieldset@\blx@setname}{##1}} + \dolistcsloop{blx@datamodelfields@types@\blx@dm@fieldtype @\blx@dm@datatype}} + {\ifdefempty{\blx@dm@fieldtype} + {} + {\def\do##1{% + \listcsxadd{blx@datafieldset@\blx@setname}{##1}} + \dolistcsloop{blx@datamodelfields@fieldtypes@\blx@dm@fieldtype}}% + \ifdefempty{\blx@dm@datatype} + {} + {\def\do##1{% + \listcsxadd{blx@datafieldset@\blx@setname}{##1}} + \dolistcsloop{blx@datamodelfields@datatypes@\blx@dm@datatype}}}} + +\define@key{blx@datafieldsets@member}{datatype}{% characters + \appto\blx@tempb{ datatype="#1"}% + \def\blx@dm@datatype{#1}} +\define@key{blx@datafieldsets@member}{fieldtype}{% characters + \appto\blx@tempb{ fieldtype="#1"}% + \def\blx@dm@fieldtype{#1}} +\define@key{blx@datafieldsets@member}{field}{% characters + \appto\blx@tempb{ field="#1"}% + \def\blx@member@field{#1}} + +% sourcemap +\newrobustcmd*{\DeclareSourcemap}[1]{% + \booltrue{sourcemap}% + \begingroup + \let\maps\blx@usersourcemap@maps + \let\blx@tempa\@empty + #1% + \csxdef{blx@sourcemap@user}{\blx@tempa}% + \endgroup} +\@onlypreamble\DeclareSourcemap + +\newrobustcmd*{\DeclareStyleSourcemap}[1]{% + \booltrue{sourcemap}% + \begingroup + \let\maps\blx@stylesourcemap@maps + \let\blx@tempa\@empty + #1% + \csxdef{blx@sourcemap@style}{\blx@tempa}% + \endgroup} + +\@onlypreamble\DeclareStyleSourcemap + +\newrobustcmd*{\DeclareDriverSourcemap}[2][]{% + \booltrue{sourcemap}% + \begingroup + \let\blx@tempa\@empty + \let\blx@tempb\@empty + \let\blx@tempc\@empty + \let\blx@tempd\@empty + \let\map\blx@sourcemap@map + #2% + \ifblank{#1} + {\setkeys{blx@sourcemap@maps}{datatype=bibtex, level=driver}} + {\setkeys{blx@sourcemap@maps}{#1, level=driver}}% + \eappto\blx@tempa{% + \blx@xml@sourcemap@maps{\blx@tempb}{\blx@tempc}}% + \csxdef{blx@sourcemap@defaults@\blx@tempd}{\blx@tempa}% + \endgroup} +\@onlypreamble\DeclareDriverSourcemap + +\newcommand*{\blx@usersourcemap@maps}[2][]{% + \let\blx@tempb\@empty + \let\blx@tempc\@empty + \let\map\blx@sourcemap@map + \ifblank{#1} + {\setkeys{blx@sourcemap@maps}{datatype=bibtex, level=user}} + {\setkeys{blx@sourcemap@maps}{#1, level=user}}% + #2% + \eappto\blx@tempa{% + \blx@xml@sourcemap@maps{\blx@tempb}{\blx@tempc}}} + +\newcommand*{\blx@stylesourcemap@maps}[2][]{% + \let\blx@tempb\@empty + \let\blx@tempc\@empty + \let\map\blx@sourcemap@map + \ifblank{#1} + {\setkeys{blx@sourcemap@maps}{datatype=bibtex, level=style}} + {\setkeys{blx@sourcemap@maps}{#1, level=style}}% + #2% + \eappto\blx@tempa{% + \blx@xml@sourcemap@maps{\blx@tempb}{\blx@tempc}}} + +\define@key{blx@sourcemap@maps}{datatype}{% characters + \eappto\blx@tempb{ datatype="#1"}% + \eappto\blx@tempd{#1}} +\define@key{blx@sourcemap@maps}{overwrite}[true]{% true|false + \ifstrequal{#1}{true} + {\appto\blx@tempb{ map\string_overwrite="1"}} + {}} +\define@key{blx@sourcemap@maps}{level}{% user|style|driver + \appto\blx@tempb{ level="#1"}} + +\newcommand*{\blx@sourcemap@map}[2][]{% + \let\blx@tempm\@empty + \let\blx@tempe\@empty + \let\perdatasource\blx@sourcemap@perdatasource + \let\pertype\blx@sourcemap@pertype + \let\pernottype\blx@sourcemap@pernottype + \let\step\blx@sourcemap@step + \ifblank{#1} + {} + {\setkeys{blx@sourcemap@map}{#1}}% + #2% + \eappto\blx@tempc{% + \blx@xml@sourcemap@map{\blx@tempm}{\blx@tempe}}} + +\define@key{blx@sourcemap@map}{overwrite}[true]{% true|false + \ifstrequal{#1}{true} + {\appto\blx@tempm{ map\string_overwrite="1"}} + {}} +\define@key{blx@sourcemap@map}{foreach}{% characters + \eappto\blx@tempm{ map\string_foreach="#1"}} + +\newcommand*{\blx@sourcemap@perdatasource}[1]{% + \eappto\blx@tempe{% + \blx@xml@sourcemap@perdatasource{#1}}} + +\newcommand*{\blx@sourcemap@pertype}[1]{% + \eappto\blx@tempe{% + \blx@xml@sourcemap@pertype{#1}}} + +\newcommand*{\blx@sourcemap@pernottype}[1]{% + \eappto\blx@tempe{% + \blx@xml@sourcemap@pernottype{#1}}} + +\newcommand*{\blx@sourcemap@step}[1][2]{% + \let\blx@tempf\@empty + \setkeys{blx@sourcemap@step}{#1}% + \eappto\blx@tempe{% + \blx@xml@sourcemap@step{\blx@tempf}}} + +\define@key{blx@sourcemap@step}{typesource}{% characters + \eappto\blx@tempf{ map\string_type\string_source="#1"}} +\define@key{blx@sourcemap@step}{typetarget}{% characters + \eappto\blx@tempf{ map\string_type\string_target="#1"}} +\define@key{blx@sourcemap@step}{final}[true]{% true|false + \ifstrequal{#1}{true} + {\appto\blx@tempf{ map\string_final="1"}} + {}} +\define@key{blx@sourcemap@step}{fieldsource}{% characters + \eappto\blx@tempf{ map\string_field\string_source="#1"}} +\define@key{blx@sourcemap@step}{fieldtarget}{% characters + \eappto\blx@tempf{ map\string_field\string_target="#1"}} +\define@key{blx@sourcemap@step}{fieldset}{% characters + \eappto\blx@tempf{ map\string_field\string_set="#1"}} +% We are sanitising the XML here as it's the value of an attribute which +% might contain quotes or ampersands (URLs, for example) +\define@key{blx@sourcemap@step}{fieldvalue}{% characters + \blx@xmlsanitizeafter{\def\blx@temps}{#1}% + \eappto\blx@tempf{ map\string_field\string_value="\blx@temps"}} +\define@key{blx@sourcemap@step}{append}[true]{% true|false + \ifstrequal{#1}{true} + {\appto\blx@tempf{ map\string_append="1"}} + {}} +\define@key{blx@sourcemap@step}{null}[true]{% true|false + \ifstrequal{#1}{true} + {\appto\blx@tempf{ map\string_null="1"}} + {}} +\define@key{blx@sourcemap@step}{entrynull}[true]{% true|false + \ifstrequal{#1}{true} + {\appto\blx@tempf{ map\string_entry\string_null="1"}} + {}} +\define@key{blx@sourcemap@step}{entrynew}{% characters + \appto\blx@tempf{ map\string_entry\string_new="#1"}} +\define@key{blx@sourcemap@step}{entrynewtype}{% characters + \appto\blx@tempf{ map\string_entry\string_newtype="#1"}} +\define@key{blx@sourcemap@step}{entrytarget}{% characters + \appto\blx@tempf{ map\string_entrytarget="#1"}} +\define@key{blx@sourcemap@step}{entryclone}{% characters + \appto\blx@tempf{ map\string_entry\string_clone="#1"}} +\define@key{blx@sourcemap@step}{origfield}[true]{% true|false + \ifstrequal{#1}{true} + {\appto\blx@tempf{ map\string_origfield="1"}} + {}} +\define@key{blx@sourcemap@step}{origfieldval}[true]{% true|false + \ifstrequal{#1}{true} + {\appto\blx@tempf{ map\string_origfieldval="1"}} + {}} +\define@key{blx@sourcemap@step}{origentrytype}[true]{% true|false + \ifstrequal{#1}{true} + {\appto\blx@tempf{ map\string_origentrytype="1"}} + {}} +\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"}} + +%%% + +\newrobustcmd*{\DeclareLabelalphaTemplate}[2][]{% + \ifblank{#1} + {\blx@latem{#2}{global}} + {\forcsvlist{\blx@latem{#2}}{#1}}} +\@onlypreamble\DeclareLabelalphaTemplate +\blx@collectopts{xml}{blx@globalopts}{labelalphatemplate}% for passing to the .bcf +\blx@collectopts{xml}{blx@typeopts}{labelalphatemplate}% for passing to the .bcf + +\def\blx@latem#1#2{% + \begingroup + \let\labelelement\blx@latem@element + \let\field\blx@latem@field + \let\literal\blx@latem@literal + \blx@tempcnta\z@ + \let\blx@tempa\@empty + #1% + \ifdef\blx@latem@type + {\ifinlist{#2}{\blx@latem@type} + {\global\cslet{blx@labelalphatemplate@#2}\blx@tempa} + {\listgadd\blx@latem@type{#2}% + \global\cslet{blx@labelalphatemplate@#2}\blx@tempa}}% + {\listgadd\blx@latem@type{#2}% + \global\cslet{blx@labelalphatemplate@#2}\blx@tempa}% + \endgroup} + +\newcommand*{\blx@latem@element}[1]{% + \advance\blx@tempcnta\@ne + \let\blx@tempb\@empty + #1% + \eappto\blx@tempa{% + \blx@xml@labelalpha@element{\the\blx@tempcnta}{\blx@tempb}}} + +\newcommand*{\blx@latem@literal}[1]{% + \blx@xmlsanitizeafter{\def\blx@temps}{#1}% + \eappto\blx@tempb{% + \blx@xml@labelalpha@part{}{\expandafter\regexp\expandafter{\blx@temps}}}} + +\newcommand*{\blx@latem@field}[2][]{% + \let\blx@tempc\@empty + \ifblank{#1} + {} + {\setkeys{blx@latem@field}{#1}}% + \eappto\blx@tempb{% + \blx@xml@labelalpha@part{\blx@tempc}{#2}}} + +\define@key{blx@latem@field}{uppercase}[true]{% true|false + \ifstrequal{#1}{true} + {\appto\blx@tempc{ uppercase="1"}} + {}} +\define@key{blx@latem@field}{lowercase}[true]{% true|false + \ifstrequal{#1}{true} + {\appto\blx@tempc{ lowercase="1"}} + {}} +\define@key{blx@latem@field}{final}[true]{% true|false + \ifstrequal{#1}{true} + {\appto\blx@tempc{ final="1"}} + {}} +\define@key{blx@latem@field}{strwidth}{% integer + \eappto\blx@tempc{ substring\string_width="#1"}} +\define@key{blx@latem@field}{pstrwidth}{% integer + \eappto\blx@tempc{ substring\string_pwidth="#1"}} +\define@key{blx@latem@field}{varwidth}[true]{% "v" + \ifstrequal{#1}{true} + {\appto\blx@tempc{ substring\string_width="v"}} + {}} +\define@key{blx@latem@field}{varwidthnorm}[true]{% "vf" + \ifstrequal{#1}{true} + {\appto\blx@tempc{ substring\string_width="vf"}} + {}} +\define@key{blx@latem@field}{varwidthlist}[true]{% "l" + \ifstrequal{#1}{true} + {\appto\blx@tempc{ substring\string_width="l"}} + {}} +\define@key{blx@latem@field}{strfixedcount}{% + \eappto\blx@tempc{ substring\string_fixed\string_threshold="#1"}} +\define@key{blx@latem@field}{strwidthmax}{% + \eappto\blx@tempc{ substring\string_width\string_max="#1"}} +\define@key{blx@latem@field}{strside}{% left|right + \ifstrequal{#1}{right} + {\eappto\blx@tempc{ substring\string_side="right"}} + {\eappto\blx@tempc{ substring\string_side="left"}}} +\define@key{blx@latem@field}{compound}[true]{% true|false + \ifstrequal{#1}{true} + {\appto\blx@tempc{ substring\string_compound="1"}} + {}} +\define@key{blx@latem@field}{pcompound}[true]{% true|false + \ifstrequal{#1}{true} + {\appto\blx@tempc{ substring\string_pcompound="1"}} + {}} +\define@key{blx@latem@field}{namessep}{% + \eappto\blx@tempc{ namessep="#1"}} +\define@key{blx@latem@field}{ifnames}{% + \eappto\blx@tempc{ ifnames="#1"}} +\define@key{blx@latem@field}{names}{% + \eappto\blx@tempc{ names="#1"}} +\define@key{blx@latem@field}{noalphaothers}[true]{% + \eappto\blx@tempc{ noalphaothers="1"}} +\define@key{blx@latem@field}{padchar}{% + \blx@xmlsanitizeafter{\def\blx@temps}{#1}% + \eappto\blx@tempc{ pad\string_char="\expandafter\regexp\expandafter{\blx@temps}"}} +\define@key{blx@latem@field}{padside}{% left|right + \ifstrequal{#1}{left} + {\eappto\blx@tempc{ pad\string_side="left"}} + {\eappto\blx@tempc{ pad\string_side="right"}}} + +% [<exceptions>]{<options>} + +\newrobustcmd*{\DefaultInheritance}[2][]{% + \begingroup + \ifblank{#2} + {} + {\setkeys{blx@inherit@default}{#2}}% + \edef\blx@tempa{\space + inherit\string_all="\iftoggle{blx@inherit@all}{true}{false}"\space + override\string_target="\iftoggle{blx@inherit@override}{true}{false}"}% + \let\blx@tempb\@empty + \let\except\blx@inherit@except + #1% + \xdef\blx@inherit@default{% + \blx@xml@inherit@defaults{\blx@tempa}{\blx@tempb}}% + \endgroup} +\@onlypreamble\DefaultInheritance + +\newtoggle{blx@inherit@all} +\newtoggle{blx@inherit@override} + +\define@key{blx@inherit@default}{all}[true]{% true|false + \settoggle{blx@inherit@all}{#1}} +\define@key{blx@inherit@default}{override}[true]{% true|false + \settoggle{blx@inherit@override}{#1}} + +% {<source>}{<target>}{<options>} + +\newcommand*{\blx@inherit@except}[3]{% + \let\blx@tempc\@empty + \ifblank{#3} + {} + {\setkeys{blx@inherit@except}{#3}}% + \eappto\blx@tempb{% + \blx@xml@inherit@type{#1}{#2}{\blx@tempc}}} + +\define@key{blx@inherit@except}{all}[true]{% true|false + \eappto\blx@tempc{ inherit\string_all="#1"}} +\define@key{blx@inherit@except}{override}[true]{% true|false + \eappto\blx@tempc{ override\string_target="#1"}} + +% {<type,type,...>}{<type,type,...>}{<spec>} +\newrobustcmd*{\DeclareDataInheritance}[3]{% + \begingroup + \let\blx@tempa\@empty + \forcsvlist{\blx@inherit@i{#2}}{#1}% + \let\blx@tempb\@empty + \let\inherit\blx@inherit@field + \let\noinherit\blx@inherit@block + #3% + \xappto\blx@inherit@data{% + \blx@xml@inherit@data{% + \blx@tempa + \blx@tempb}}% + \endgroup} +\@onlypreamble\DeclareDataInheritance + +\def\blx@inherit@i#1#2{% + \forcsvlist{\blx@inherit@ii{#2}}{#1}} + +\def\blx@inherit@ii#1#2{% + \eappto\blx@tempa{\blx@xml@inherit@type{#1}{#2}{}}} + +\blx@collectopts{xml}{blx@globalopts}{inheritance}% for passing to the .bcf + +% [<options>]{<source>}{<target>} +\newcommand*{\blx@inherit@field}[3][]{% + \let\blx@tempc\@empty + \ifblank{#1} + {} + {\setkeys{blx@inherit@field}{#1}}% + \eappto\blx@tempb{% + \blx@xml@inherit@field{#2}{#3}{\blx@tempc}}} + +\newcommand*{\blx@inherit@block}[1]{% + \eappto\blx@tempb{\blx@xml@inherit@block{#1}}} + +\define@key{blx@inherit@field}{override}[true]{% true|false + \ifstrequal{#1}{true} + {\edef\blx@tempc{ override\string_target="true"}} + {\edef\blx@tempc{ override\string_target="false"}}} + +\newrobustcmd*{\ResetDataInheritance}{% + \global\csundef{blx@inherit@data}} +\@onlypreamble\ResetDataInheritance + +% {<name>}{<spec>} +\newrobustcmd*{\DeclareBiblistFilter}[2]{% + \begingroup + \let\filteror\blx@biblistfilteror + \let\filter\blx@biblistfilter + \let\blx@tempa\@empty + #2% + \global\cslet{blx@biblistfilters@#1}\blx@tempa + \endgroup} +\@onlypreamble\DeclareBiblistFilter + +\newcommand*{\blx@biblistfilteror}[1]{% + \eappto\blx@tempa{\blx@xml@slistfilterorbegin}% + #1% + \eappto\blx@tempa{\blx@xml@slistfilterorend}} + +\newcommand*{\blx@biblistfilter}[1][2]{% + \let\blx@tempc\@empty + \let\blx@tempd\@empty + \setkeys{blx@biblistfilter@filter}{#1}% + \eappto\blx@tempa{% + \blx@xml@slistfilter{\blx@tempc}{\blx@tempd}}} + +\define@key{blx@biblistfilter@filter}{type}{% + \def\blx@tempc{#1}} +\define@key{blx@biblistfilter@filter}{filter}{% + \def\blx@tempd{#1}} + +% Predefine filters for label fields +\def\do#1{\DeclareBiblistFilter{#1}{\filter[type=field,filter=#1]}} +\abx@dolabelfields + +% [<entrytype>] +\newrobustcmd*{\DeclareSortTranslit}[2][]{% + \begingroup + \ifblank{#1} + {\def\blx@tempa{*}} + {\def\blx@tempa{#1}}% + \let\translit\blx@translit@setup + \let\blx@tempb\@empty + #2% + \global\cslet{blx@translit@\blx@tempa}\blx@tempb + \xifinlist\blx@tempa\blx@translits + {} + {\listxadd\blx@translits\blx@tempa}% + \endgroup} +\@onlypreamble\DeclareSortTranslit +\blx@collectopts{xml}{blx@globalopts}{translit}% for passing to the .bcf +\blx@collectopts{xml}{blx@typeopts}{translit}% for passing to the .bcf + +\newcommand*{\blx@translit@setup}[3][*]{% + \eappto\blx@tempb{% + \blx@xml@translit{#1}{#2}{#3}}} + +% [<specname>]{<spec>} +\newrobustcmd*{\DeclareSortingNamekeyScheme}[2][]{% + \begingroup + \ifblank{#1} + {\def\blx@snkname{global}}% default + {\def\blx@snkname{#1}}% + \let\namepart\blx@sortnk@namepart + \let\keypart\blx@sortnk@keypart + \let\literal\blx@sortnk@literal + \let\blx@tempa\@empty + \blx@tempcnta\z@ + #2% + \global\cslet{blx@sortingnamekey@\blx@snkname}\blx@tempa + \xifinlist\blx@snkname\blx@sortingnamekeyspecs + {} + {\listxadd\blx@sortingnamekeyspecs\blx@snkname}% + \endgroup} +\@onlypreamble\DeclareSortingNamekeyScheme +\blx@collectopts{xml}{blx@globalopts}{sortingnamekey}% for passing to the .bcf +\DeclareEntryOption[string]{sortnamekeyscheme}{% + \def\blx@refcontext@sortingnamekey{#1}} + +% User-mode macro for checking sorting name key scheme +\def\ifsortnamekeyscheme#1{% + \expandafter\ifstrequal\expandafter{\blx@refcontext@sortingnamekey}{#1}} + +\newcommand*{\blx@sortnk@keypart}[1]{% + \advance\blx@tempcnta\@ne + \blx@tempcntb\z@ + \edef\blx@tempd{ order="\the\blx@tempcnta"}% + \let\blx@tempb\@empty + #1% + \eappto\blx@tempa{% + \blx@xml@sortingnamekeykeypart{\blx@tempd}{\blx@tempb}}} + +\newcommand*{\blx@sortnk@literal}[1]{% + \advance\blx@tempcntb\@ne + \edef\blx@tempe{ order="\the\blx@tempcntb"}% + \let\blx@tempc\@empty + \eappto\blx@tempb{% + \blx@xml@sortingnamekeyliteral{\blx@tempe}{#1}}} + +\newcommand*{\blx@sortnk@namepart}[2][]{% + \advance\blx@tempcntb\@ne + \edef\blx@tempe{ order="\the\blx@tempcntb"}% + \let\blx@tempc\@empty + \ifblank{#1} + {} + {\setkeys{blx@sortnk@namepart}{#1}}% + \eappto\blx@tempb{% + \blx@xml@sortingnamekeynamepart{\blx@tempe}{\blx@tempc}{#2}}} + +\define@key{blx@sortnk@namepart}{use}[true]{% use* option for namepart true|false + \ifstrequal{#1}{true} + {\appto\blx@tempc{ use="1"}} + {\appto\blx@tempc{ use="0"}}} + +% {<name>}{<spec>} +\newrobustcmd*{\DeclareSortingScheme}[3][]{% + \ifblank{#1} + {} + {\setkeys{blx@sortdef@sorting}{#1}% + \csxdef{blx@sortdef@locale@#2}{\blx@templ}}% + \begingroup + \let\sort\blx@sortdef@sort + \let\name\blx@sortdef@field% legacy pre-biblatex 2.0 compat + \let\list\blx@sortdef@field% legacy pre-biblatex 2.0 compat + \let\field\blx@sortdef@field + \let\literal\blx@sortdef@literal + \def\citeorder{\blx@sortdef@field{citeorder}}% + \blx@tempcnta\z@ + \let\blx@tempa\@empty + #3% + \global\cslet{blx@sorting@#2}\blx@tempa + \endgroup} +\@onlypreamble\DeclareSortingScheme +\blx@collectopts{xml}{blx@globalopts}{sortscheme}% for passing to the .bcf + +\define@key{blx@sortdef@sorting}{locale}{% locale name + \def\blx@templ{#1}} + +\newcommand*{\blx@sortdef@sort}[2][]{% + \advance\blx@tempcnta\@ne + \blx@tempcntb\z@ + \let\blx@tempb\@empty + \edef\blx@tempc{order="\the\blx@tempcnta"}% + \ifblank{#1} + {} + {\setkeys{blx@sortdef@sort}{#1}}% + \let\do\@firstofone + #2% + \eappto\blx@tempa{% + \blx@xml@sort{\blx@tempc}{\blx@tempb}}} + +\define@key{blx@sortdef@sort}{locale}{% locale name + \eappto\blx@tempc{ locale="#1"}} +\define@key{blx@sortdef@sort}{direction}{% ascending|descending + \ifstrequal{#1}{ascending} + {\eappto\blx@tempc{ sort\string_direction="ascending"}} + {\eappto\blx@tempc{ sort\string_direction="descending"}}} +\define@key{blx@sortdef@sort}{final}[true]{% true|false + \ifstrequal{#1}{true} + {\appto\blx@tempc{ final="1"}} + {}} +\define@key{blx@sortdef@sort}{sortcase}[true]{% true|false + \ifstrequal{#1}{true} + {\appto\blx@tempc{ sortcase="1"}} + {\appto\blx@tempc{ sortcase="0"}}} +\define@key{blx@sortdef@sort}{sortupper}[true]{% true|false + \ifstrequal{#1}{true} + {\appto\blx@tempc{ sortupper="1"}} + {\appto\blx@tempc{ sortupper="0"}}} + +\newcommand*{\blx@sortdef@field}[2][]{% + \advance\blx@tempcntb\@ne + \edef\blx@tempd{order="\the\blx@tempcntb"}% + \ifblank{#1} + {} + {\setkeys{blx@sortdef@field}{#1}}% + \eappto\blx@tempb{% + \blx@xml@sortitem{\blx@tempd}{#2}}} + +\define@key{blx@sortdef@field}{padside}{% left|right + \ifstrequal{#1}{right} + {\eappto\blx@tempd{ pad\string_side="right"}} + {\eappto\blx@tempd{ pad\string_side="left"}}} +\define@key{blx@sortdef@field}{padwidth}{% integer + \eappto\blx@tempd{ pad\string_width="#1"}} +\define@key{blx@sortdef@field}{padchar}{% character + \blx@xmlsanitizeafter{\def\blx@tempe}{#1}% + \eappto\blx@tempd{ pad\string_char="\blx@tempe"}} +\define@key{blx@sortdef@field}{strside}{% left|right + \ifstrequal{#1}{right} + {\eappto\blx@tempd{ substring\string_side="right"}} + {\eappto\blx@tempd{ substring\string_side="left"}}} +\define@key{blx@sortdef@field}{strwidth}{% integer + \eappto\blx@tempd{ substring\string_width="#1"}} + +\def\blx@sortdef@literal#1{% + \advance\blx@tempcntb\@ne + \blx@xmlsanitizeafter{\def\blx@tempe}{#1}% + \eappto\blx@tempb{% + \blx@xml@sortitem{order="\the\blx@tempcntb"}{\blx@tempe}}} + +% [<type,type,...>]{<string>} + +\newrobustcmd*{\DeclarePresort}[2][]{% + \begingroup + \blx@xmlsanitizeafter{\def\blx@tempa}{#2}% + \ifblank{#1} + {\xdef\blx@bcf@presort{\blx@xml@presort{}{\blx@tempa}}} + {\notblank{#2} + {\forcsvlist{\blx@defpresort\blx@tempa}{#1}} + {\forcsvlist\blx@undefpresort{#1}}}% + \endgroup} +\@onlypreamble\DeclarePresort +\blx@collectopts{string}{blx@globalopts}{presort}% for passing to the .bcf +\blx@collectopts{string}{blx@typeopts}{presort}% for passing to the .bcf +\blx@collectopts{string}{blx@entryopts}{presort}% for passing to the .bcf + +\def\blx@defpresort#1#2{% + \csxdef{blx@bcf@presort@#2}{\blx@xml@presort{#2}{#1}}} +\def\blx@undefpresort#1{% + \global\csundef{blx@bcf@presort@#1}} + +\newrobustcmd*{\DeclareSortExclusion}[2]{% + \forcsvlist{\blx@sortexlude{#2}}{#1}} +\blx@collectopts{xml}{blx@typeopts}{sortexclusion}% for passing to the .bcf + +\def\blx@sortexlude#1#2{% + \begingroup + \ifblank{#1} + {\global\csundef{blx@bcf@exclude@#2}} + {\let\blx@tempa\@empty + \forcsvlist\blx@sortexlude@i{#1}% + \csxdef{blx@bcf@exclude@#2}{% + \blx@xml@sortexclude{#2}{\blx@tempa}}} + \endgroup} + +\def\blx@sortexlude@i#1{% + \appto\blx@tempa{\blx@xml@exclude{#1}}} + +% [<type,type,...>]{<field,field,...>} + +\newrobustcmd*{\DeclareLabelname}[2][]{% + \begingroup + \let\blx@tempa\@empty + \def\blx@tempb{labelnamespec}% + \let\field\blx@ordered@field + \ifblank{#1} + {\global\cslet{blx@bcf@labelnamespec}\@empty} + {\def\blx@tempa{#1}% + \def\do##1{\global\cslet{blx@bcf@labelnamespec@##1}\@empty}% + \expandafter\docsvlist\expandafter{#1}}% + #2% + \endgroup} +\@onlypreamble\DeclareLabelname +\blx@collectopts{xml}{blx@globalopts}{labelnamespec}% for passing to the .bcf +\blx@collectopts{xml}{blx@typeopts}{labelnamespec}% for passing to the .bcf + +\newrobustcmd*{\DeclareLabeltitle}[2][]{% + \begingroup + \let\blx@tempa\@empty + \def\blx@tempb{labeltitlespec}% + \let\field\blx@ordered@field + \ifblank{#1} + {\global\cslet{blx@bcf@labeltitlespec}\@empty} + {\def\blx@tempa{#1}% + \def\do##1{\global\cslet{blx@bcf@labeltitlespec@##1}\@empty}% + \expandafter\docsvlist\expandafter{#1}}% + #2% + \endgroup} +\@onlypreamble\DeclareLabeltitle +\blx@collectopts{xml}{blx@globalopts}{labeltitlespec}% for passing to the .bcf +\blx@collectopts{xml}{blx@typeopts}{labeltitlespec}% for passing to the .bcf + +\newrobustcmd*{\DeclareLabelyear}[2][]{% + \blx@warning@noline{% + 'DeclareLabelyear' is deprecated, please use 'DeclareLabeldate'}} + +\newrobustcmd*{\DeclareLabeldate}[2][]{% + \begingroup + \let\blx@tempa\@empty + \def\blx@tempb{labeldatespec}% + \let\field\blx@orderedld@field + \let\literal\blx@orderedld@literal + \ifblank{#1} + {\global\cslet{blx@bcf@labeldatespec}\@empty} + {\def\blx@tempa{#1}% + \def\do##1{\global\cslet{blx@bcf@labeldatespec@##1}\@empty}% + \expandafter\docsvlist\expandafter{#1}}% + #2% + \endgroup} +\@onlypreamble\DeclareLabeldate +\blx@collectopts{xml}{blx@globalopts}{labeldatespec}% for passing to the .bcf +\blx@collectopts{xml}{blx@typeopts}{labeldatespec}% for passing to the .bcf + +\newcommand*{\blx@ordered@field}[2][]{% + \let\blx@tempc\@empty + \ifblank{#1} + {} + {\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}}}% + \expandafter\docsvlist\expandafter{\blx@tempa}}} + +\newcommand*{\blx@orderedld@field}[2][]{% + \let\blx@tempc\@empty + \ifblank{#1} + {} + {\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}{ type="field"\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}}}% + \expandafter\docsvlist\expandafter{\blx@tempa}}} + +%% Package options + +% [<entrytype,entrytype,...>]{<options>} + +\newrobustcmd*{\ExecuteBibliographyOptions}[2][]{% + \ifblank{#1} + {\setkeys{blx@opt@pre}{#2}} + {\forcsvlist{\blx@typeoptions{#2}}{#1}}} +\@onlypreamble\ExecuteBibliographyOptions + +\def\blx@typeoptions#1#2{% + \blx@addtypeopt{#2}% + \csappto{blx@opts@type@#2}{#1,}} + +\def\blx@addtypeopt#1{% + \notblank{#1} + {\ifdef\blx@opts@type + {\ifinlist{#1}{\blx@opts@type} + {} + {\listgadd\blx@opts@type{#1}}} + {\listgadd\blx@opts@type{#1}}} + {}} + +% load-time only + +% Have to have a dummy for this as it's set much earlier but is passed +% through to here where we just ignore it +\define@key{blx@opt@ldt}{datamodel}{} + +\define@key{blx@opt@ldt}{backend}{% + \ifstrequal{#1}{biber} + {} + {\ifboolexpr{ + test {\ifstrequal{#1}{bibtex}} + or + test {\ifstrequal{#1}{bibtex8}}} + {\settoggle{blx@bibtex}{true}% + \newtoggle{blx@bibtex8}% + \ifstrequal{#1}{bibtex8} + {\settoggle{blx@bibtex8}{true}} + {}}% + {\blx@err@invopt{backend=#1}{}}}} + +\define@key{blx@opt@ldt}{style}{% + \def\blx@cbxfile{#1}% + \def\blx@bbxfile{#1}} + +\define@key{blx@opt@ldt}{bibstyle}{% + \def\blx@bbxfile{#1}} + +\define@key{blx@opt@ldt}{citestyle}{% + \def\blx@cbxfile{#1}} + +\define@key{blx@opt@ldt}{natbib}[true]{% + \settoggle{blx@natbib}{#1}} + +\define@key{blx@opt@ldt}{mcite}[true]{% + \settoggle{blx@mcite}{#1}} + +% load-time and preamble + +\DeclareBibliographyOption[boolean]{debug}[true]{% + \settoggle{blx@debug}{#1}} + +\DeclareBibliographyOption[boolean]{loadfiles}[true]{% + \settoggle{blx@loadfiles}{#1}} + +\DeclareBibliographyOption[integer]{mincrossrefs}{% + \ifnum#1<\z@ + \def\blx@mincrossrefs{1}% + \else + \def\blx@mincrossrefs{#1}% + \fi} + +\DeclareBibliographyOption[integer]{minxrefs}{% + \ifnum#1<\z@ + \def\blx@minxrefs{1}% + \else + \def\blx@minxrefs{#1}% + \fi} +\def\blx@minxrefs{2} + +\DeclareBibliographyOption[string]{texencoding}{% + \ifstrequal{#1}{auto} + {\undef\blx@texencoding} + {\def\blx@texencoding{#1}}} + +\DeclareBibliographyOption[string]{bibencoding}{% + \ifcsdef{blx@bibenc@#1} + {\letcs\blx@bibencoding{blx@bibenc@#1}} + {\def\blx@bibencoding{#1}}} + +\def\abx@mapbibenc#1#2{\csdef{blx@bibenc@#1}{#2}} +\abx@mapbibenc{inputenc}{auto} +\abx@mapbibenc{x-ascii}{ascii} + +\def\abx@mapinpenc#1#2{\csdef{blx@inpenc@#1}{#2}} +\abx@mapinpenc{utf8x}{utf8} +\abx@mapinpenc{lutf8}{utf8} +\abx@mapinpenc{x-ascii}{ascii} + +\DeclareBibliographyOption[boolean]{safeinputenc}[true]{% + \settoggle{blx@safeinputenc}{#1}} +\newtoggle{blx@safeinputenc} + +\DeclareBibliographyOption[string]{sorting}{% + \def\blx@sorting{#1}% + \def\blx@refcontext@sorting{#1}} + +\AtEndPreamble{% + \ifcsdef{blx@sorting@\blx@sorting} + {} + {\blx@err@invopt{sorting=\blx@sorting}{}% + \def\blx@sorting{nty}% + \def\blx@refcontext@sorting{nty}}% + \listxadd\blx@sortschemes\blx@sorting + \def\blx@refcontext@sortingnamekey{global}% + \let\blx@refcontext@labelprefix\@empty + \xdef\blx@refcontext@context{\blx@refcontext@sorting/\blx@refcontext@sortingnamekey/\blx@refcontext@labelprefix}% + \listxadd\blx@refcontexts\blx@refcontext@context} + +\DeclareBibliographyOption[boolean]{sortcase}[true]{% + \settoggle{blx@sortcase}{#1}} + +\DeclareBibliographyOption[boolean]{sortupper}[true]{% + \settoggle{blx@sortupper}{#1}} + +\DeclareBibliographyOption[string]{sortlos}{% + \blx@warning@noline{% + sortlos option is deprecated, use 'sorting' option to \string\printbiblist}} + +\DeclareBibliographyOption[integer]{maxnames}{% + \numdef\blx@maxcitenames{#1}% + \numdef\blx@maxbibnames{#1}} +\DeclareBibliographyOption[integer]{minnames}{% + \numdef\blx@mincitenames{#1}% + \numdef\blx@minbibnames{#1}} +\DeclareTypeOption[integer]{maxnames}{% + \numdef\blx@maxcitenames@type{#1}% + \numdef\blx@maxbibnames@type{#1}% + \c@maxnames#1\relax} +\DeclareTypeOption[integer]{minnames}{% + \numdef\blx@mincitenames@type{#1}% + \numdef\blx@minbibnames@type{#1}% + \c@minnames#1\relax} +\DeclareEntryOption[integer]{maxnames}{% + \c@maxnames#1\relax} +\DeclareEntryOption[integer]{minnames}{% + \c@minnames#1\relax} + +\DeclareBibliographyOption[integer]{maxbibnames}{% + \numdef\blx@maxbibnames{#1}} +\DeclareBibliographyOption[integer]{minbibnames}{% + \numdef\blx@minbibnames{#1}} +\DeclareTypeOption[integer]{maxbibnames}{% + \numdef\blx@maxbibnames@type{#1}% + \iftoggle{blx@bibliography} + {\c@maxnames#1\relax} + {}} +\DeclareTypeOption[integer]{minbibnames}{% + \numdef\blx@minbibnames@type{#1}% + \iftoggle{blx@bibliography} + {\c@minnames#1\relax} + {}} +\DeclareEntryOption[integer]{maxbibnames}{% + \iftoggle{blx@bibliography} + {\c@maxnames#1\relax} + {}} +\DeclareEntryOption[integer]{minbibnames}{% + \iftoggle{blx@bibliography} + {\c@minnames#1\relax} + {}} + +\DeclareBibliographyOption[integer]{maxcitenames}{% + \numdef\blx@maxcitenames{#1}} +\DeclareBibliographyOption[integer]{mincitenames}{% + \numdef\blx@mincitenames{#1}} +\DeclareTypeOption[integer]{maxcitenames}{% + \numdef\blx@maxcitenames@type{#1}% + \iftoggle{blx@bibliography} + {} + {\c@maxnames#1\relax}} +\DeclareTypeOption[integer]{mincitenames}{% + \numdef\blx@mincitenames@type{#1}% + \iftoggle{blx@bibliography} + {} + {\c@minnames#1\relax}} +\DeclareEntryOption[integer]{maxcitenames}{% + \iftoggle{blx@bibliography} + {} + {\c@maxnames#1\relax}} +\DeclareEntryOption[integer]{mincitenames}{% + \iftoggle{blx@bibliography} + {} + {\c@minnames#1\relax}} + +\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[integer]{maxitems}{% + \numdef\blx@maxitems{#1}} +\DeclareBibliographyOption[integer]{minitems}{% + \numdef\blx@minitems{#1}} +\DeclareTypeOption[integer]{maxitems}{% + \numdef\blx@maxitems@type{#1}% + \c@maxitems#1\relax} +\DeclareTypeOption[integer]{minitems}{% + \numdef\blx@minitems@type{#1}% + \c@minitems#1\relax} +\DeclareEntryOption[integer]{maxitems}{% + \c@maxitems#1\relax} +\DeclareEntryOption[integer]{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[integer]{maxalphanames}{% + \numdef\blx@maxalphanames{#1}} +\DeclareBibliographyOption[integer]{minalphanames}{% + \numdef\blx@minalphanames{#1}} +\DeclareTypeOption[integer]{maxalphanames}{% + \numdef\blx@maxalphanames{#1}} +\DeclareTypeOption[integer]{minalphanames}{% + \numdef\blx@minalphanames{#1}} +\DeclareEntryOption[integer]{maxalphanames}{% + \numdef\blx@maxalphanames{#1}} +\DeclareEntryOption[integer]{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[boolean]{terseinits}[true]{% + \ifstrequal{#1}{true} + {\toggletrue{blx@terseinits} + \renewrobustcmd*{\bibinitperiod}{} + \renewrobustcmd*{\bibinitdelim}{} + \renewrobustcmd*{\bibinithyphendelim}{}} + {\togglefalse{blx@terseinits} + \renewrobustcmd*{\bibinitperiod}{\adddot} + \renewrobustcmd*{\bibinitdelim}{\addnbspace} + \renewrobustcmd*{\bibinithyphendelim}{\adddot\mbox{-}}}} + +% Legacy for giveninits +\DeclareBibliographyOption[boolean]{firstinits}[true]{% + \blx@warning@noline{% + 'firstinits' option is deprecated, use 'giveninits' instead}% + \settoggle{blx@giveninits}{#1}} + +% Legacy for sortgiveninits +\DeclareBibliographyOption[boolean]{sortfirstinits}[true]{% + \blx@warning@noline{% + 'sortfirstinits' option is deprecated, use 'sortgiveninits' instead}% + \settoggle{blx@sortgiveninits}{#1}} + +\DeclareBibliographyOption[boolean]{giveninits}[true]{% + \settoggle{blx@giveninits}{#1}} + +\DeclareBibliographyOption[boolean]{sortgiveninits}[true]{% + \settoggle{blx@sortgiveninits}{#1}} + +\DeclareBibliographyOption[boolean]{abbreviate}[true]{% + \ifstrequal{#1}{true} + {\def\abx@str{abx@sstr}} + {\def\abx@str{abx@lstr}}} + +\DeclareBibliographyOption[boolean]{dateabbrev}[true]{% + \ifstrequal{#1}{true} + {\let\abx@bibmonth\blx@imc@bibsstring} + {\let\abx@bibmonth\blx@imc@biblstring}} + +\DeclareBibliographyOption[string]{sortlocale}{% + \edef\blx@sortlocale{\detokenize{#1}}} + +\DeclareBibliographyOption[string]{language}{% + \togglefalse{blx@autolangbib}% + \togglefalse{blx@autolangcite}% + \ifboolexpr{ + test {\ifstrequal{#1}{auto}} + or + test {\ifstrequal{#1}{autobib}} + or + test {\ifstrequal{#1}{autocite}} + } + {\def\blx@languagename{english}% + \ifstrequal{#1}{auto} + {\toggletrue{blx@autolangbib}% + \toggletrue{blx@autolangcite}} + {}% + \ifstrequal{#1}{autobib} + {\toggletrue{blx@autolangbib}} + {}% + \ifstrequal{#1}{autocite} + {\toggletrue{blx@autolangcite}} + {}} + % If language is explicit, we do want to auto-switch but only to the + % selected language + {\IfFileExists{#1.lbx} + {\toggletrue{blx@autolangbib}% + \toggletrue{blx@autolangcite}% + \edef\blx@languagename{#1}% + \edef\blx@forcelanguagename{#1}} + {\blx@error + {Language '#1' not supported} + {Failed to find a matching '#1.lbx' file}}}} + +\DeclareBibliographyOption[boolean]{clearlang}[true]{% + \settoggle{blx@clearlang}{#1}} + +\DeclareBibliographyOption[string]{babel}{% + \blx@warning@noline{% + 'babel' option is deprecated, use 'autolang' instead}% + \blx@autolang@i{#1}} + +\DeclareBibliographyOption[string]{autolang}{% + \blx@autolang@i{#1}} + +\def\blx@autolang@i#1{% + \ifcsdef{blx@opt@autolang@#1} + {\csuse{blx@opt@autolang@#1}} + {\blx@err@invopt{autolang=#1}{}}} + +\def\blx@opt@autolang@none{% + \undef\blx@thelangenv + \let\blx@hook@initlang\@empty + \let\blx@hook@endlang\@empty} +\def\blx@opt@autolang@hyphen{% + \def\blx@thelangenv{hyphenrules}% + \let\blx@hook@initlang\@empty + \let\blx@hook@endlang\@empty} +\csdef{blx@opt@autolang@other*}{% + \def\blx@thelangenv{otherlanguage*}% + \def\blx@hook@initlang{\@quotereset\@ne}% + \def\blx@hook@endlang{\blx@postpunct}} +\def\blx@opt@autolang@other{% + \def\blx@thelangenv{otherlanguage}% + \def\blx@hook@initlang{\@quotereset\@ne}% + \def\blx@hook@endlang{\blx@postpunct}} +\def\blx@opt@autolang@langname{% + \@ifpackageloaded{polyglossia} + {\def\blx@thelangenv{langname}} + {\def\blx@thelangenv{otherlanguage}}% + \def\blx@hook@initlang{\@quotereset\@ne}% + \def\blx@hook@endlang{\blx@postpunct}} + +\DeclareBibliographyOption[boolean]{indexing}[true]{% + \blx@opt@index{#1}} +\DeclareTypeOption[boolean]{indexing}[true]{% + \blx@opt@index{#1}} +\DeclareEntryOption[boolean]{indexing}[true]{% + \blx@opt@index{#1}} +\def\blx@opt@index#1{% + \ifcsdef{blx@opt@index@#1} + {\csuse{blx@opt@index@#1}} + {\blx@err@invopt{indexing=#1}{}}} +\def\blx@opt@index@true{% + \toggletrue{blx@citeindex}% + \toggletrue{blx@bibindex}} +\def\blx@opt@index@false{% + \togglefalse{blx@citeindex}% + \togglefalse{blx@bibindex}} +\def\blx@opt@index@cite{% + \toggletrue{blx@citeindex}% + \togglefalse{blx@bibindex}} +\def\blx@opt@index@bib{% + \togglefalse{blx@citeindex}% + \toggletrue{blx@bibindex}} + +\DeclareBibliographyOption[boolean]{sortcites}[true]{% + \ifstrequal{#1}{true} + {\let\blx@thecitesort\blx@citesort + \let\blx@thenotecheck\blx@notecheck + \booltrue{sortcites}} + {\let\blx@thecitesort\blx@citenosort + \let\blx@thenotecheck\relax}} + +\DeclareBibliographyOption[boolean]{hyperref}[true]{% + \ifcsdef{blx@opt@hyperref@#1} + {\letcs\blx@hyperref{blx@opt@hyperref@#1}} + {\blx@err@invopt{hyperref=#1}{}}} +\def\blx@opt@hyperref@false{0} +\def\blx@opt@hyperref@true{1} +\def\blx@opt@hyperref@auto{2} + +\DeclareBibliographyOption[boolean]{backref}[true]{% + \ifstrequal{#1}{true} + {\let\blx@backref\blx@addbackref + \let\abx@aux@backref\blx@aux@backref + \booltrue{backtracker}} + {\let\blx@backref\@gobble + \let\abx@aux@backref\@gobblefive + \boolfalse{backtracker}}} + +\DeclareBibliographyOption[string]{backrefsetstyle}{% + \ifcsdef{blx@opt@backrefsetstyle@#1} + {\letcs\blx@backrefsetstyle{blx@opt@backrefsetstyle@#1}} + {\blx@err@invopt{backrefsetstyle=#1}{}}} +\def\blx@opt@backrefsetstyle@setonly{0} +\def\blx@opt@backrefsetstyle@memonly{1} +\def\blx@opt@backrefsetstyle@setormem{2} +\def\blx@opt@backrefsetstyle@setandmem{3} +\def\blx@opt@backrefsetstyle@memandset{4} +\def\blx@opt@backrefsetstyle@setplusmem{5} + +\appto\blx@mkhyperref{% + \ifHy@plainpages + \blx@warning@noline{% + hyperref package option 'plainpages' enabled.\MessageBreak + This may cause problems with hyperlinked back\MessageBreak + references. 'plainpages=false' is recommended}% + \fi + \ifHy@pageanchor\else + \blx@warning@noline{% + hyperref package option 'pageanchor' disabled.\MessageBreak + This will cause problems with hyperlinked back\MessageBreak + references. 'pageanchor=true' is required}% + \fi} + +\DeclareBibliographyOption[string]{block}{% + \ifcsdef{blx@opt@block@#1} + {\csuse{blx@opt@block@#1}} + {\blx@err@invopt{block=#1}{}}} +\def\blx@opt@block@none{% + \let\blx@bibsetup\@empty + \let\newblockpunct\@empty} +\def\blx@opt@block@par{% + \let\blx@bibsetup\@empty + \def\newblockpunct{\par}} +\def\blx@opt@block@nbpar{% + \def\blx@bibsetup{\interlinepenalty\@M}% + \def\newblockpunct{\par\nobreak}} +\def\blx@opt@block@space{% + \let\blx@bibsetup\@empty + \def\newblockpunct{% + \unspace\space + \hskip 0.11em + \@plus 0.33em + \@minus 0.07em}} +\def\blx@opt@block@ragged{% + \let\blx@bibsetup\raggedright + \def\newblockpunct{% + \unspace\penalty-9\relax\space}} + +\DeclareBibliographyOption[boolean]{pagetracker}[true]{% + \ifcsdef{blx@opt@pagetracker@#1} + {\csuse{blx@opt@pagetracker@#1}} + {\blx@err@invopt{pagetracker=#1}{}}} +\def\blx@opt@pagetracker@true{% + \if@twoside + \blx@opt@pagetracker@spread + \else + \blx@opt@pagetracker@page + \fi} +\def\blx@opt@pagetracker@false{% + \let\blx@pagetracker\relax + \let\abx@aux@page\@gobbletwo + \let\abx@aux@fnpage\@gobbletwo + \boolfalse{pagetracker}} +\def\blx@opt@pagetracker@page{% + \let\blx@pagetracker\blx@pagetracker@context + \let\abx@aux@page\blx@aux@page + \let\abx@aux@fnpage\blx@aux@fnpage + \booltrue{pagetracker}} +\def\blx@opt@pagetracker@spread{% + \if@twoside + \let\blx@pagetracker\blx@pagetracker@context + \let\abx@aux@page\blx@aux@spread + \let\abx@aux@fnpage\blx@aux@fnspread + \booltrue{pagetracker}% + \else + \blx@warning@noline{% + LaTeX not in twoside mode\MessageBreak + Falling back to 'pagetracker=page'}% + \blx@opt@pagetracker@page + \fi} + +\DeclareBibliographyOption[boolean]{citecounter}[true]{% + \ifcsdef{blx@opt@citecounter@#1} + {\csuse{blx@opt@citecounter@#1}} + {\blx@err@invopt{citecounter=#1}{}}} +\def\blx@opt@citecounter@true{% + \let\blx@setcitecounter\blx@setcitecounter@global + \let\blx@citecounter\blx@citecounter@global + \let\abx@aux@count\blx@aux@count + \let\abx@aux@fncount\blx@aux@fncount + \booltrue{citetracker}} +\def\blx@opt@citecounter@context{% + \let\blx@setcitecounter\blx@setcitecounter@context + \let\blx@citecounter\blx@citecounter@context + \let\abx@aux@count\blx@aux@count + \let\abx@aux@fncount\blx@aux@fncount + \booltrue{citetracker}} +\def\blx@opt@citecounter@false{% + \let\blx@setcitecounter\relax + \let\blx@citecounter\relax + \let\abx@aux@count\@gobbletwo + \let\abx@aux@fncount\@gobbletwo} + +\DeclareBibliographyOption[boolean]{citetracker}[true]{% + \ifcsdef{blx@opt@citetracker@#1} + {\csuse{blx@opt@citetracker@#1}} + {\blx@err@invopt{citetracker=#1}{}}} +\def\blx@opt@citetracker@true{% + \let\blx@imc@ifciteseen\blx@ifciteseen@global + \let\blx@imc@ifentryseen\blx@ifentryseen@global + \let\blx@citetracker\blx@citetracker@global + \booltrue{citetracker}} +\def\blx@opt@citetracker@false{% + \let\blx@imc@ifciteseen\@secondoftwo + \protected\long\def\blx@imc@ifentryseen##1##2##3{##3}% + \let\blx@citetracker\relax} +\def\blx@opt@citetracker@context{% + \let\blx@imc@ifciteseen\blx@ifciteseen@context + \let\blx@imc@ifentryseen\blx@ifentryseen@context + \let\blx@citetracker\blx@citetracker@context + \booltrue{citetracker}} +\def\blx@opt@citetracker@strict{% + \let\blx@imc@ifciteseen\blx@ifciteseen@global + \let\blx@imc@ifentryseen\blx@ifentryseen@global + \def\blx@citetracker{% + \blx@ifcitesingle{\blx@citetracker@global}{}}% + \booltrue{citetracker}} +\def\blx@opt@citetracker@constrict{% + \let\blx@imc@ifciteseen\blx@ifciteseen@context + \let\blx@imc@ifentryseen\blx@ifentryseen@context + \def\blx@citetracker{% + \blx@ifcitesingle{\blx@citetracker@context}{}}% + \booltrue{citetracker}} + +\DeclareBibliographyOption[boolean]{ibidtracker}[true]{% + \ifcsdef{blx@opt@ibidtracker@#1} + {\csuse{blx@opt@ibidtracker@#1}} + {\blx@err@invopt{ibidtracker=#1}{}}} +\def\blx@opt@ibidtracker@true{% + \let\blx@imc@ifciteibid\blx@ifciteibid@global + \let\blx@ibidtracker\blx@ibidtracker@global + \let\blx@ibidreset\blx@ibidreset@global + \booltrue{citetracker}} +\def\blx@opt@ibidtracker@false{% + \let\blx@imc@ifciteibid\@secondoftwo + \let\blx@ibidtracker\relax + \let\blx@ibidreset\relax} +\def\blx@opt@ibidtracker@context{% + \let\blx@imc@ifciteibid\blx@ifciteibid@context + \let\blx@ibidtracker\blx@ibidtracker@context + \let\blx@ibidreset\blx@ibidreset@context + \booltrue{citetracker}} +\def\blx@opt@ibidtracker@strict{% + \let\blx@imc@ifciteibid\blx@ifciteibid@strict + \let\blx@ibidtracker\blx@ibidtracker@strict + \let\blx@ibidreset\blx@ibidreset@global + \booltrue{citetracker}} +\def\blx@opt@ibidtracker@constrict{% + \let\blx@imc@ifciteibid\blx@ifciteibid@constrict + \let\blx@ibidtracker\blx@ibidtracker@constrict + \let\blx@ibidreset\blx@ibidreset@context + \booltrue{citetracker}} + +\DeclareBibliographyOption[boolean]{idemtracker}[true]{% + \ifcsdef{blx@opt@idemtracker@#1} + {\csuse{blx@opt@idemtracker@#1}} + {\blx@err@invopt{idemtracker=#1}{}}} +\def\blx@opt@idemtracker@true{% + \let\blx@imc@ifciteidem\blx@ifciteidem@global + \let\blx@idemtracker\blx@idemtracker@global + \let\blx@idemreset\blx@idemreset@global + \booltrue{citetracker}} +\def\blx@opt@idemtracker@false{% + \let\blx@imc@ifciteidem\@secondoftwo + \let\blx@idemtracker\relax + \let\blx@idemreset\relax} +\def\blx@opt@idemtracker@context{% + \let\blx@imc@ifciteidem\blx@ifciteidem@context + \let\blx@idemtracker\blx@idemtracker@context + \let\blx@idemreset\blx@idemreset@context + \booltrue{citetracker}} +\def\blx@opt@idemtracker@strict{% + \let\blx@imc@ifciteidem\blx@ifciteidem@strict + \let\blx@idemtracker\blx@idemtracker@strict + \let\blx@idemreset\blx@idemreset@global + \booltrue{citetracker}} +\def\blx@opt@idemtracker@constrict{% + \let\blx@imc@ifciteidem\blx@ifciteidem@constrict + \let\blx@idemtracker\blx@idemtracker@constrict + \let\blx@idemreset\blx@idemreset@context + \booltrue{citetracker}} + +\DeclareBibliographyOption[boolean]{opcittracker}[true]{% + \ifcsdef{blx@opt@opcittracker@#1} + {\csuse{blx@opt@opcittracker@#1}} + {\blx@err@invopt{opcittracker=#1}{}}} +\def\blx@opt@opcittracker@true{% + \let\blx@imc@ifopcit\blx@ifopcit@global + \let\blx@opcittracker\blx@opcittracker@global + \let\blx@opcitreset\blx@opcitreset@global + \booltrue{citetracker}} +\def\blx@opt@opcittracker@false{% + \let\blx@imc@ifopcit\@secondoftwo + \let\blx@opcittracker\relax + \let\blx@opcitreset\relax} +\def\blx@opt@opcittracker@context{% + \let\blx@imc@ifopcit\blx@ifopcit@context + \let\blx@opcittracker\blx@opcittracker@context + \let\blx@opcitreset\blx@opcitreset@context + \booltrue{citetracker}} +\def\blx@opt@opcittracker@strict{% + \let\blx@imc@ifopcit\blx@ifopcit@strict + \let\blx@opcittracker\blx@opcittracker@strict + \let\blx@opcitreset\blx@opcitreset@global + \booltrue{citetracker}} +\def\blx@opt@opcittracker@constrict{% + \let\blx@imc@ifopcit\blx@ifopcit@constrict + \let\blx@opcittracker\blx@opcittracker@constrict + \let\blx@opcitreset\blx@opcitreset@context + \booltrue{citetracker}} + +\DeclareBibliographyOption[boolean]{loccittracker}[true]{% + \ifcsdef{blx@opt@loccittracker@#1} + {\csuse{blx@opt@loccittracker@#1}} + {\blx@err@invopt{loccittracker=#1}{}}} +\def\blx@opt@loccittracker@true{% + \let\blx@imc@ifloccit\blx@ifloccit@global + \let\blx@loccittracker\blx@loccittracker@global + \let\blx@loccitreset\blx@loccitreset@global + \booltrue{citetracker}} +\def\blx@opt@loccittracker@false{% + \let\blx@imc@ifloccit\@secondoftwo + \let\blx@loccittracker\relax + \let\blx@loccitreset\relax} +\def\blx@opt@loccittracker@context{% + \let\blx@imc@ifloccit\blx@ifloccit@context + \let\blx@loccittracker\blx@loccittracker@context + \let\blx@loccitreset\blx@loccitreset@context + \booltrue{citetracker}} +\def\blx@opt@loccittracker@strict{% + \let\blx@imc@ifloccit\blx@ifloccit@strict + \let\blx@loccittracker\blx@loccittracker@strict + \let\blx@loccitreset\blx@loccitreset@global + \booltrue{citetracker}} +\def\blx@opt@loccittracker@constrict{% + \let\blx@imc@ifloccit\blx@ifloccit@constrict + \let\blx@loccittracker\blx@loccittracker@constrict + \let\blx@loccitreset\blx@loccitreset@context + \booltrue{citetracker}} + +\DeclareBibliographyOption[boolean]{parentracker}[true]{% + \ifstrequal{#1}{true} + {\let\bibopenparen\blx@bibopenparen + \let\bibcloseparen\blx@bibcloseparen + \let\bibopenbracket\blx@bibopenbracket + \let\bibclosebracket\blx@bibclosebracket} + {\protected\def\bibopenparen{\bibleftparen}% + \protected\def\bibcloseparen{\bibrightparen}% + \protected\def\bibopenbracket{\bibleftbracket}% + \protected\def\bibclosebracket{\bibrightbracket}}} + +\DeclareBibliographyOption[integer]{maxparens}{% + \ifnumless{#1}{1} + {\blx@err@invopt{maxparens=#1}{}} + {\setcounter{maxparens}{#1}}} + +\DeclareBibliographyOption[string]{datelabel}{% + \ifcsdef{mkbibrange#1} + {\protected\def\blx@imc@printdatelabel{% + \blx@imc@iffieldundef{year} + {\csuse{mkbibrange#1}{label}} + {\csuse{mkbibrange#1}{}}}% + \protected\def\blx@imc@printdateextralabel{% + \blx@imc@iffieldundef{year} + {\csuse{mkbibrange#1extra}{label}} + {\csuse{mkbibrange#1extra}{}}}} + {\blx@err@invopt{datelabel=#1}{}}} + + +\def\do#1{% + \DeclareBibliographyOption[string]{#1}{% + \StrCut{#1}{date}\blx@datetype\blx@tempnull + \ifcsdef{mkbibrange##1} + {\protected\csedef{blx@imc@print#1}{\noexpand\csuse{mkbibrange##1}{\blx@datetype}}} + {\blx@err@invopt{#1=##1}{}}% + \ifcsdef{mkbibrange##1extra} + {\protected\csedef{blx@imc@print#1extra}{\noexpand\csuse{mkbibrange##1extra}{\blx@datetype}}} + {}}} +\abx@dodates + +% Default for new date fields is "comp" but this is overridden below by +% biblatex defaults +\def\do#1{\setkeys{blx@opt@pre}{#1=comp}} +\abx@dodates + +\DeclareBibliographyOption[string]{alldates}{% + \ExecuteBibliographyOptions{datelabel=#1}% + \def\do##1{\ExecuteBibliographyOptions{##1=#1}}% + \abx@dodates} + +\DeclareBibliographyOption[boolean]{datezeros}[true]{% + \ifstrequal{#1}{true} + {\let\blx@imc@mkdatezeros\@firstofone} + {\let\blx@imc@mkdatezeros\blx@imc@stripzeros}} + +\DeclareBibliographyOption[string]{autocite}{% + \ifcsundef{blx@acite@#1} + {\blx@error + {Autocite command '#1' undefined} + {The autocite command '#1' has not been defined by + the\MessageBreak selected citation style}} + {\letcs\autocite{blx@acite@#1}% + \letcs\autocites{blx@macite@#1}}} + +\DeclareBibliographyOption[string]{notetype}{% + \ifcsdef{blx@opt@notetype@#1} + {\blx@notetype\csuse{blx@opt@notetype@#1}} + {\blx@err@invopt{notetype=#1}{}}} +\cslet{blx@opt@notetype@foot+end}\z@ +\let\blx@opt@notetype@footonly\@ne +\let\blx@opt@notetype@endonly\tw@ + +\DeclareBibliographyOption[boolean]{autopunct}[true]{% + \ifstrequal{#1}{true} + {\DeclareAutoPunctuation{.,;:!?}} + {\DeclareAutoPunctuation{}}} + +\DeclareBibliographyOption[boolean]{punctfont}[true]{% + \ifstrequal{#1}{true} + {\let\blx@ifpuncthook\@firstoftwo} + {\let\blx@ifpuncthook\@secondoftwo}} + +\DeclareBibliographyOption[boolean]{labelnumber}[true]{% + \settoggle{blx@labelnumber}{#1}% + \iftoggle{blx@labelnumber} + {} + {\setkeys{blx@opt@pre}{defernumbers=false}}} +\DeclareTypeOption[boolean]{labelnumber}[true]{% + \settoggle{blx@labelnumber}{#1}} + +\DeclareBibliographyOption[boolean]{labelalpha}[true]{% + \settoggle{blx@labelalpha}{#1}} +\DeclareTypeOption[boolean]{labelalpha}[true]{% + \settoggle{blx@labelalpha}{#1}} + +\DeclareBibliographyOption[boolean]{labeltitle}[true]{% + \settoggle{blx@labeltitle}{#1}} +\DeclareTypeOption[boolean]{labeltitle}[true]{% + \settoggle{blx@labeltitle}{#1}} + +\DeclareBibliographyOption[boolean]{labeltitleyear}[true]{% + \settoggle{blx@labeltitleyear}{#1}} +\DeclareTypeOption[boolean]{labeltitleyear}[true]{% + \settoggle{blx@labeltitleyear}{#1}} + +\DeclareBibliographyOption[boolean]{labeldate}[true]{% + \settoggle{blx@labeldate}{#1}} +\DeclareTypeOption[boolean]{labeldate}[true]{% + \settoggle{blx@labeldate}{#1}} + +\DeclareBibliographyOption[boolean]{labelyear}[true]{% + \blx@warning@noline{% + 'labelyear' option is deprecated, use 'labeldate' instead}% + \settoggle{blx@labeldate}{#1}} +\DeclareTypeOption[boolean]{labelyear}[true]{% + \blx@warning@noline{% + 'labelyear' option is deprecated, use 'labeldate' instead}% + \settoggle{blx@labeldate}{#1}} + +\DeclareBibliographyOption[boolean]{uniquelist}[true]{% + \ifcsdef{blx@opt@uniquelist@#1} + {\letcs\blx@uniquelist{blx@opt@uniquelist@#1}} + {\blx@err@invopt{uniquelist=#1}{}}} +\DeclareTypeOption[boolean]{uniquelist}[true]{% + \ifcsdef{blx@opt@uniquelist@#1} + {\letcs\blx@uniquelist{blx@opt@uniquelist@#1}} + {\blx@err@invopt{uniquelist=#1}{}}} +\DeclareEntryOption[boolean]{uniquelist}[true]{% + \ifcsdef{blx@opt@uniquelist@#1} + {\letcs\blx@uniquelist{blx@opt@uniquelist@#1}} + {\blx@err@invopt{uniquelist=#1}{}}} +\def\blx@opt@uniquelist@false{0} +\def\blx@opt@uniquelist@true{1} +\def\blx@opt@uniquelist@minyear{2} + +\DeclareBibliographyOption[boolean]{uniquename}[true]{% + \ifcsdef{blx@opt@uniquename@#1} + {\letcs\blx@uniquename{blx@opt@uniquename@#1}} + {\blx@err@invopt{uniquename=#1}{}}} +\DeclareTypeOption[boolean]{uniquename}[true]{% + \ifcsdef{blx@opt@uniquename@#1} + {\letcs\blx@uniquename{blx@opt@uniquename@#1}} + {\blx@err@invopt{uniquename=#1}{}}} +\DeclareEntryOption[boolean]{uniquename}[true]{% + \ifcsdef{blx@opt@uniquename@#1} + {\letcs\blx@uniquename{blx@opt@uniquename@#1}} + {\blx@err@invopt{uniquename=#1}{}}} +\def\blx@opt@uniquename@false{0} +\def\blx@opt@uniquename@init{1} +\def\blx@opt@uniquename@true{2} +\def\blx@opt@uniquename@full{2} +\def\blx@opt@uniquename@allinit{3} +\def\blx@opt@uniquename@allfull{4} +\def\blx@opt@uniquename@mininit{5} +\def\blx@opt@uniquename@minfull{6} + +\DeclareBibliographyOption[boolean]{singletitle}[true]{% + \settoggle{blx@singletitle}{#1}} +\DeclareTypeOption[boolean]{singletitle}[true]{% + \settoggle{blx@singletitle}{#1}} + +\DeclareBibliographyOption[boolean]{uniquetitle}[true]{% + \settoggle{blx@uniquetitle}{#1}} +\DeclareTypeOption[boolean]{uniquetitle}[true]{% + \settoggle{blx@uniquetitle}{#1}} + +\DeclareBibliographyOption[boolean]{uniqueprimaryauthor}[true]{% + \settoggle{blx@uniqueprimaryauthor}{#1}} + +\DeclareBibliographyOption[boolean]{defernumbers}[true]{% + \settoggle{blx@defernumbers}{#1}% + \iftoggle{blx@defernumbers} + {\setkeys{blx@opt@pre}{labelnumber}% + \let\blx@thelabelnumber\blx@addlabelnumber + \let\abx@aux@number\blx@aux@number} + {\let\blx@thelabelnumber\relax + \let\abx@aux@number\@gobblefive}} + +\DeclareBibliographyOption[string]{refsection}{% + \ifcsdef{blx@opt@refsection@#1} + {\letcs\blx@refsecreset@level{blx@opt@refsection@#1}} + {\blx@err@invopt{refsection=#1}{}}} +\def\blx@opt@refsection@none{0} +\def\blx@opt@refsection@part{1} +\def\blx@opt@refsection@chapter{2} +\def\blx@opt@refsection@section{3} +\def\blx@opt@refsection@subsection{4} + +\AtEndPreamble{% + \ifcase\blx@refsecreset@level + \or % 1 + \blx@refpatch@part\newrefsection + \or % 2 + \blx@refpatch@chapter\newrefsection + \or % 3 + \blx@refpatch@sect{section}{\newrefsection}{1}% + \or % 4 + \blx@refpatch@sect{subsection}{\newrefsection}{2}% + \fi} + +\DeclareBibliographyOption[string]{refsegment}{% + \ifcsdef{blx@opt@refsegment@#1} + {\letcs\blx@refsegreset@level{blx@opt@refsegment@#1}} + {\blx@err@invopt{refsegment=#1}{}}} +\def\blx@opt@refsegment@none{0} +\def\blx@opt@refsegment@part{1} +\def\blx@opt@refsegment@chapter{2} +\def\blx@opt@refsegment@section{3} +\def\blx@opt@refsegment@subsection{4} + +\AtEndPreamble{% + \ifnumgreater\blx@refsegreset@level\z@ + {\ifnumgreater\blx@refsegreset@level\blx@refsecreset@level + {} + {\blx@err@confopt + {refsegment/refsection} + {The 'refsegment' option must point to a + lower-level\MessageBreak document division + than 'refsection'}% + \def\blx@refsegreset@level{0}}} + {}% + \ifcase\blx@refsegreset@level + \or % 1 + \blx@refpatch@part\newrefsegment + \or % 2 + \blx@refpatch@chapter\newrefsegment + \or % 3 + \blx@refpatch@sect{section}{\newrefsegment}{1}% + \or % 4 + \blx@refpatch@sect{subsection}{\newrefsegment}{2}% + \fi} + +\DeclareBibliographyOption[string]{citereset}{% + \ifcsdef{blx@opt@citereset@#1} + {\letcs\blx@citereset@level{blx@opt@citereset@#1}} + {\blx@err@invopt{citereset=#1}{}}} +\def\blx@opt@citereset@none{0} +\def\blx@opt@citereset@part{1} +\def\blx@opt@citereset@chapter{2} +\def\blx@opt@citereset@section{3} +\def\blx@opt@citereset@subsection{4} + +\AtEndPreamble{% + \ifcase\blx@citereset@level + \or % 1 + \blx@refpatch@part{\citereset\blx@inf@creset}% + \or % 2 + \blx@refpatch@chapter{\citereset\blx@inf@creset}% + \or % 3 + \blx@refpatch@sect{section}{\citereset\blx@inf@creset}{1}% + \or % 4 + \blx@refpatch@sect{subsection}{\citereset\blx@inf@creset}{2}% + \fi} + +\DeclareBibliographyOption[boolean]{bibwarn}[true]{% + \ifstrequal{#1}{true} + {\let\blx@bbl@thewarn\blx@bbl@warn} + {\let\blx@bbl@thewarn\@gobble}} + +% Name field options +\def\do#1{% + \DeclareBibliographyOption[boolean]{use#1}[true]{% + \settoggle{blx@use#1}{##1}} + \DeclareTypeOption[boolean]{use#1}[true]{% + \settoggle{blx@use#1}{##1}} + \DeclareEntryOption[boolean]{use#1}[true]{% + \settoggle{blx@use#1}{##1}}} +\abx@donames + +% Entry options +\DeclareBibliographyOption[boolean]{useprefix}[true]{% + \settoggle{blx@useprefix}{#1}} +\DeclareTypeOption[boolean]{useprefix}[true]{% + \settoggle{blx@useprefix}{#1}} +\DeclareEntryOption[boolean]{useprefix}[true]{% + \settoggle{blx@useprefix}{#1}} + +\DeclareTypeOption[boolean]{skipbib}[true]{% + \settoggle{blx@skipbib}{#1}} +\DeclareEntryOption[boolean]{skipbib}[true]{% + \settoggle{blx@skipbib}{#1}} + +\DeclareTypeOption[boolean]{skiplos}{% + \blx@warning@noline{% + skiplos option is deprecated, use 'skipbiblist' instead}% + \settoggle{blx@skipbiblist}{#1}} +\DeclareEntryOption[boolean]{skiplos}{% + \blx@warning@noline{% + skiplos option is deprecated, use 'skipbiblist' instead}% + \settoggle{blx@skipbiblist}{#1}} + +\DeclareTypeOption[boolean]{skipbiblist}[true]{% + \settoggle{blx@skipbiblist}{#1}} +\DeclareEntryOption[boolean]{skipbiblist}[true]{% + \settoggle{blx@skipbiblist}{#1}} + +\DeclareTypeOption[boolean]{skiplab}[true]{% + \settoggle{blx@skiplab}{#1}} +\DeclareEntryOption[boolean]{skiplab}[true]{% + \settoggle{blx@skiplab}{#1}} + +\DeclareTypeOption[boolean]{dataonly}[true]{% + \settoggle{blx@skipbib}{#1}% + \settoggle{blx@skipbiblist}{#1}% + \settoggle{blx@skiplab}{#1}} +\DeclareEntryOption[boolean]{dataonly}[true]{% + \settoggle{blx@skipbib}{#1}% + \settoggle{blx@skipbiblist}{#1}% + \settoggle{blx@skiplab}{#1}} + +% Option processor/scheduler +\DeclareOption*{% + \begingroup + \def\blx@tempa#1=#2&{#1}% + \edef\blx@tempa{% + \expandafter\blx@tempa\CurrentOption=&}% + \ifcsundef{KV@blx@opt@ldt@\blx@tempa} + {\endgroup + \eappto\blx@theoptions{\CurrentOption,}} + {\edef\blx@tempa{\endgroup + \noexpand\setkeys{blx@opt@ldt}{\CurrentOption}}% + \blx@tempa}} + +\def\blx@processoptions{% + \ifundef\blx@theoptions + {} + {\begingroup + \edef\blx@tempa{\endgroup + \noexpand\setkeys{blx@opt@pre}{\blx@theoptions}}% + \blx@tempa}} + +%% Initial setup + +% Set defaults + +\setkeys{blx@opt@ldt}{style=numeric} +\setkeys{blx@opt@pre}{% + sorting=nty,sortlocale=auto,sortcase,sortupper,sortcites=false, + maxnames=3,minnames=1,maxalphanames=3,minalphanames=1, + maxitems=3,minitems=1,mincrossrefs=2,minxrefs=2,useauthor=true,useeditor=true, + usetranslator=false,indexing=false,abbreviate=true,dateabbrev=true, + backref=false,backrefsetstyle=setonly,pagetracker=false,ibidtracker=false, + idemtracker=false,opcittracker=false,loccittracker=false,citetracker=false, + citecounter=false,block=none,language=autobib,clearlang=true,autolang=none, + date=comp,datelabel=year,origdate=comp,eventdate=comp,urldate=short, + autopunct=true,punctfont=false,defernumbers=false, + refsection=none,refsegment=none,citereset=none,hyperref=auto, + parentracker,maxparens=3,bibencoding=auto,bibwarn} + +% Load compatibility code + +\blx@inputonce{blx-compat.def}{compatibility code}{}{}{}{} + +% Restore catcodes + +\blx@catcodes +\undef\blx@catcodes + +% Process load-time options + +\ProcessOptions* + +% Switch to BibTeX support if requests + +\iftoggle{blx@bibtex} + {\blx@inputonce{blx-bibtex.def}{BibTeX backend compatibility}{}{}{}{}} + {} + +% Load citation and bibliography styles, configuration file + +\blx@inputonce{biblatex.def}{generic definitions}{}{}{}{} +\iftoggle{blx@natbib} + {\blx@inputonce{blx-natbib.def}{natbib compatibility}{}{}{}{}} + {} +\iftoggle{blx@mcite} + {\blx@inputonce{blx-mcite.def}{mcite-like commands}{}{}{}{}} + {} +\RequireBibliographyStyle{\blx@bbxfile} +\RequireCitationStyle{\blx@cbxfile} +\blx@secinit +\citereset +\blx@inputonce{biblatex.cfg}{configuration file}{}{}{}{} + +% Process preamble options + +\blx@processoptions + +% Deferred setup at end of preamble + +\AtEndPreamble{% + \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@giveninits} + {\ifnumequal\blx@uniquename\blx@opt@uniquename@full + {\blx@warn@conflopt{% + 'giveninits' conflicts with 'uniquename=full'.\MessageBreak + Setting 'uniquename=init'}% + \setkeys{blx@opt@pre}{uniquename=init}} + {}% + \ifnumequal\blx@uniquename\blx@opt@uniquename@allfull + {\blx@warn@conflopt{% + 'giveninits' conflicts with 'uniquename=allfull'.\MessageBreak + Setting 'uniquename=allinit}% + \setkeys{blx@opt@pre}{uniquename=allinit}} + {}% + \ifnumequal\blx@uniquename\blx@opt@uniquename@minfull + {\blx@warn@conflopt{% + 'giveninits' conflicts with 'uniquename=minfull'.\MessageBreak + Setting 'uniquename=mininit}% + \setkeys{blx@opt@pre}{uniquename=mininit}} + {}} + {}% + \nottoggle{blx@labeldate} + {\ifnumequal\blx@uniquelist\blx@opt@uniquelist@minyear + {\blx@warn@conflopt{% + 'uniquelist=minyear' requires 'labeldate'.\MessageBreak + Setting 'uniquelist=true'}% + \setkeys{blx@opt@pre}{uniquelist}} + {}} + {}} + +\def\blx@checkencoding{% + \ifdef\blx@texencoding + {\blx@info@noline{% + Input encoding '\blx@texencoding' specified}} + {\ifundef\inputencodingname + {\ifundef\XeTeXrevision + {\ifundef\luatexversion + {\def\blx@texencoding{ascii}% + \blx@info@noline{% + No input encoding detected.\MessageBreak + Assuming '\blx@texencoding'}} + {\def\blx@texencoding{utf8}% + \blx@info@noline{% + LuaTeX detected.\MessageBreak + Assuming input encoding '\blx@texencoding'}}} + {\def\blx@texencoding{utf8}% + \blx@info@noline{% + XeTeX detected.\MessageBreak + Assuming input encoding '\blx@texencoding'}}} + {\ifcsdef{blx@inpenc@\inputencodingname} + {\letcs\blx@texencoding{blx@inpenc@\inputencodingname}} + {\let\blx@texencoding\inputencodingname}% + \blx@info@noline{% + Input encoding '\blx@texencoding' detected}}}% + \ifdef\blx@bibencoding + {\ifdefstring\blx@bibencoding{ascii} + {\blx@info@noline{% + Data encoding '\blx@bibencoding' specified.\MessageBreak + No need to reencode data}} + {\ifdefstring\blx@bibencoding{auto} + {\let\blx@bibencoding\blx@texencoding + \blx@info@noline{% + Automatic encoding selection.\MessageBreak + Assuming data encoding '\blx@bibencoding'}} + {\ifdefstrequal\blx@bibencoding\blx@texencoding + {\blx@info@noline{% + Data encoding '\blx@bibencoding' specified.\MessageBreak + No need to reencode data}} + {\blx@info@noline{% + Data encoding '\blx@bibencoding' specified.\MessageBreak + Backend will reencode on the fly}}}}} + {\def\blx@bibencoding{ascii}% + \blx@info@noline{% + Data encoding not specified.\MessageBreak + Assuming '\blx@bibencoding'}}% + \ifboolexpr{% + togl {blx@safeinputenc} + and ( test {\@ifpackageloaded{inputenc}} + or + test {\@ifpackageloaded{inputenx}} ) + } + {\def\blx@texencoding{ascii}% + \blx@info@noline{% + Input encoding '\blx@texencoding' forced by\MessageBreak + 'safeinputenc' option}} + {}% +} + +% Deferred last minute setup +\AtBeginDocument{% + \blx@auxwrite\@mainaux{}{\string\abx@aux@sortscheme{\blx@sorting}}% + \blx@auxwrite\@mainaux{}{\string\abx@aux@refcontext{\blx@refcontext@context}} + \blx@checkencoding + \if@filesw + \blx@ctrlwrite + \blx@bblinput + \blx@maxsection\z@ + \fi + \csuse{abx@preamble}% + \blx@inf@refsec + \blx@inf@refseg} + +\AtEndOfPackage{% + % Data model macros are forbidden after package load is finished + \def\blx@warn@dm#1{\blx@warning@noline{Data model macro '#1' cannot be used in preamble}} + \def\ResetDatamodelEntrytypes{\blx@warn@dm{ResetDatamodelEntrytypes}} + \def\ResetDatamodelFields{\blx@warn@dm{ResetDatamodelFields}} + \def\ResetDatamodelEntryfields{\blx@warn@dm{ResetDatamodelEntryfields}} + \def\ResetDatamodelConstraints{\blx@warn@dm{ResetDatamodelConstraints}} + \renewcommand*{\DeclareDatamodelEntrytypes}[2][]{\blx@warn@dm{DeclareDatamodelEntrytypes}} + \renewcommand*{\DeclareDatamodelFields}[2][]{\blx@warn@dm{DeclareDatamodelFields}} + \renewcommand*{\DeclareDatamodelEntryfields}[2][]{\blx@warn@dm{DeclareDatamodelEntryfields}} + \renewcommand*{\DeclareDatamodelConstraints}[2][]{\blx@warn@dm{DeclareDatamodelConstraints}} + \renewcommand*{\DeclareDatamodelConstant}[3][]{\blx@warn@dm{DeclareDatamodelConstant}} + \AtBeginDocument{% + \let\do\undef + \blx@dopreamblecmds + \let\do\noexpand}} + +\endinput diff --git a/Master/texmf-dist/tex/latex/biblatex/biblatex_.sty b/Master/texmf-dist/tex/latex/biblatex/biblatex_.sty deleted file mode 100644 index 0bc186ad0f0..00000000000 --- a/Master/texmf-dist/tex/latex/biblatex/biblatex_.sty +++ /dev/null @@ -1,11607 +0,0 @@ -% Copyright (c) 2006-2011 Philipp Lehman. -% 2012-2016 Philip Kime, Audrey Boruvka, Joseph Wright -% -% Permission is granted to copy, distribute and/or modify this -% software under the terms of the LaTeX Project Public License -% (LPPL), version 1.3. -% -% This software is provided 'as is', without warranty of any kind, -% either expressed or implied, including, but not limited to, the -% implied warranties of merchantability and fitness for a -% particular purpose. - -\NeedsTeXFormat{LaTeX2e}[2005/12/01] -\ProvidesPackage{biblatex_} -[\abx@date\space v\abx@version\space programmable bibliographies (biber) (PK/JW/AB)] - -%% Dependencies -\RequirePackage{etoolbox} -\RequirePackage{keyval} -\RequirePackage{kvoptions} -\RequirePackage{logreq} -\RequirePackage{ifthen} -\RequirePackage{url} -%\RequirePackage{trace} - -\@ifpackagelater{etoolbox}{2010/11/29} - {} - {\PackageError{biblatex} - {Outdated 'etoolbox' package} - {Upgrade to etoolbox v2.1 (2010/11/29) or later.\MessageBreak - I found: '\csuse{ver@etoolbox.sty}'.\MessageBreak - This is a fatal error. I'm aborting now.}% - \endinput} - -% Tests for emptiness, regardless whether the arg is macro or literal -% Expand everything and test as string -\def\ifempty#1{% - \edef\z{#1}% - \expandafter\ifblank\expandafter{\z}} - -%% Category codes - -\def\blx@docatcodes{% - \do\=\do\<\do\>\do\-\do\"\do\'\do\`\do\.% - \do\,\do\;\do\:\do\!\do\?\do\/} -\def\do#1{\catcode\number`#1=\the\catcode`#1\relax} -\edef\blx@catcodes{\blx@docatcodes\do\^\do\~\do\&\do\|} -\let\do\noexpand - -\def\blx@saneccodes{% - \catcode`\~=\active - \let\do\@makeother - \blx@docatcodes - \let\do\noexpand} - -\blx@saneccodes -\catcode`\&=3 -\catcode`\|=3 -\catcode`\^=7 -\def\blx@nl{^^J} - -%% Compatibility - -\AtEndPreamble{% - \def\do#1{% - \@ifpackageloaded{#1} - {\blx@error - {Incompatible package '#1'} - {The '#1' package and biblatex are incompatible}} - {}}% - \docsvlist{% - amsrefs,apacite,babelbib,backref,bibtopic,bibunits,chapterbib, - cite,citeref,drftcite,footbib,inlinebib,jurabib,mcite,mciteplus, - mlbib,multibbl,multibib,natbib,opcit,overcite,splitbib,ucs}% - \def\blx@langstrings{}% - % Set up sortlocale defaults - \ifdefstring\blx@sortlocale{auto} - {\ifdef\bbl@main@language% babel or polyglossia is loaded - {\edef\blx@sortlocale{\bbl@main@language}} - {\def\blx@sortlocale{english}}} - {}% - \@ifpackageloaded{polyglossia} - {% This is required for languages which are never explicitly selected - % This check because \xpg@loaded is not defined in polyglossia <= v1.42.0 - \ifundef\xpg@loaded - {\let\xpg@loaded\@empty - \let\xpg@vloaded\@empty - \PackageWarningNoLine{biblatex}{Upgrade package 'polyglossia' to >v1.42.0 recommended}} - {}% - \def\do#1{\blx@langsetup{#1}}% - \expandafter\docsvlist\expandafter{\xpg@loaded}% - \expandafter\docsvlist\expandafter{\xpg@vloaded}% - \ifboolexpr{ - not test {\iftoggle{blx@autolangbib}} - and - not test {\iftoggle{blx@autolangcite}}} - {\blx@mknoautolang} - {\blx@mkautolangpoly}} - {\@ifpackageloaded{babel} - {% This is required for languages which are never explicitly selected - \def\do#1{\blx@langsetup{#1}}% - \expandafter\docsvlist\expandafter{\bbl@loaded}% - \ifboolexpr{ - not test {\iftoggle{blx@autolangbib}} - and - not test {\iftoggle{blx@autolangcite}}} - {\blx@mknoautolang} - {\blx@mkautolangbabel}} - {\blx@mknoautolang}}% - % These already have defaults set to basically do nothing - % so if the toggles are true, we need to define again since - % mkautolang* redefines \blx@beglang - % In turn, \blx@beglang defines \blx@endlang and so \blx@beglangcite and - % \blx@endlangcite need redefining inside \blx@beglang after \blx@endlang - % has been defined. - \iftoggle{blx@autolangbib} - {\let\blx@beglangbib\blx@beglang} - {}% - \iftoggle{blx@autolangcite} - {\let\blx@beglangcite\blx@beglang} - {}% - \csuse{abx@extras@\blx@languagename}% - \csuse{abx@strings@\blx@languagename}% - \undef\blx@mkautolangbabel - \undef\blx@mkautolangpoly - \undef\blx@mknoautolang - \ifnum\blx@hyperref=\z@ - \blx@mknohyperref - \else - \@ifpackageloaded{hyperref} - {\blx@mkhyperref} - {\ifnum\blx@hyperref=\@ne - \blx@warning@noline{% - Missing 'hyperref' package.\MessageBreak - Setting hyperref=false}% - \fi - \blx@mknohyperref}% - \fi - \providecommand*{\nolinkurl}{\url}% - \undef\blx@mkhyperref - \undef\blx@mknohyperref - \ifundef\TE@hook - {\let\TE@hook\@empty - \toggletrue{blx@tempa}% - \def\do#1{% - \patchcmd#1% - {\let\isundefined\TE@undef} - {\let\isundefined\TE@undef\TE@hook} - {\togglefalse{blx@tempa}\listbreak} - {}}% - \docsvlist{% - \ifthenelse,% ifthen - \org@ifthenelse,% babel - \HyOrg@ifthenelse,% hyperref - \NROrg@ifthenelse}% nameref - \iftoggle{blx@tempa} - {\blx@err@patch{'ifthen' package}} - {}} - {}% - \appto\TE@hook{\blx@TE@hook}% - \toggletrue{blx@tempa}% - \def\do#1{% - \patchcmd#1% - {\color@begingroup} - {\color@begingroup\toggletrue{blx@footnote}} - {\togglefalse{blx@tempa}\listbreak} - {}}% - \docsvlist{% - \@footnotetext,% latex - \H@@footnotetext,% hyperref - \V@@footnotetext,% fancyvrb - \scr@saved@footnotetext,% koma-script 3.x - \l@dold@footnotetext,% ledmac - \l@doldold@footnotetext,% ledmac - \@fntORI}% frenchle - \iftoggle{blx@tempa}% ams classes - {\patchcmd\@footnotetext - {\@makefntext} - {\toggletrue{blx@footnote}\@makefntext} - {\togglefalse{blx@tempa}} - {}} - {}% - \@ifclassloaded{memoir} - {\def\do#1{% - \patchcmd#1% - {\color@begingroup} - {\color@begingroup\toggletrue{blx@footnote}} - {} - {}}% - \docsvlist{% - \m@mold@footnotetext,% - \@plainfootnotetext,% - \@twocolfootnotetext,% - \@threecolfootnotetext,% - \@parafootnotetext}% - \def\do#1{% - \patchcmd#1% - {\color@begingroup\@makefntext} - {\color@begingroup\toggletrue{blx@footnote}\@makefntext} - {} - {}}% - \docsvlist{% - \@footnotetext,% patch twice - \H@@footnotetext,% patch twice - \@plainfootnotetext}} - {}% - \iftoggle{blx@tempa} - {\blx@warning@noline{% - Patching footnotes failed.\MessageBreak - Footnote detection will not work}} - {}% - \@ifpackageloaded{endnotes} - {\patchcmd\theendnotes - {\enoteformat} - {\toggletrue{blx@footnote}\enoteformat} - {} - {\blx@err@patch{'endnotes' package}}} - {}% - \@ifpackageloaded{bigfoot} - {\apptocmd\@makefnstartbox - {\toggletrue{blx@footnote}} - {} - {\blx@err@patch{'bigfoot' package}}} - {}% - \@ifpackageloaded{showkeys} - {\ifdef\SK@ - {\AtEveryBibitem{\SK@\SK@@label{\thefield{entrykey}}}% - \AtEveryLositem{\SK@\SK@@label{\thefield{entrykey}}}% - \ifundef\SK@cite % = 'notcite' disabled - {\AtEveryCitekey{\SK@\SK@@ref{\thefield{entrykey}}}} - {}} - {}} - {}% - \apptocmd\@floatboxreset - {\boolfalse{citetracker}% - \boolfalse{pagetracker}} - {} - {\blx@err@patch{floats}}% - \ifdef\TX@endtabularx % tabularx/memoir - {\pretocmd\TX@endtabularx - {\addtocounter{tabx@nest}{1}}% track nested tabularx environments - {} - {\blx@err@patch{'tabularx'}}% - % no need to conditionalise on top-level tabx as the search/replace - % will only match once anyway - \patchcmd\TX@endtabularx - {\edef\TX@ckpt{\cl@@ckpt}} - {\edef\TX@ckpt{\cl@@ckpt\abx@resttrackers}% - \abx@savetrackers} - {} - {\blx@err@patch{'tabularx'}}% - \apptocmd\TX@endtabularx - {\ifnum\value{tabx@nest}=1% only clear trackers for top-level tabularx - \abx@cleartrackers - \fi - \addtocounter{tabx@nest}{-1}} - {} - {\blx@err@patch{'tabularx'}}} - {}% - \@ifpackageloaded{csquotes} - {\@ifpackagelater{csquotes}{2009/05/30} - {} - {\blx@error - {Outdated 'csquotes' package} - {Upgrade to csquotes v4.4 (2009/05/30) or later.\MessageBreak - I found: '\csuse{ver@csquotes.sty}'}}% - \BlockquoteDisable{\let\blx@thecheckpunct\@gobble}% - \@ifpackagelater{csquotes}{2009/08/27} - {\appto\@blockquote@prehook{\abx@savetrackers}% - \appto\@blockquote@posthook{\abx@resttrackers\abx@cleartrackers}} - {}% - \@ifpackagelater{csquotes}{2010/06/09} - {} - {\newcommand*{\@quotereset}{}\newcount\@quotereset}} - {\@ifpackageloaded{babel} - {\blx@warning@noline{% - 'babel/polyglossia' detected but 'csquotes' missing.\MessageBreak - Loading 'csquotes' recommended}} - {}% - \newcommand*{\@quotelevel}{}% - \newcount\@quotelevel - \newcommand*{\@quotereset}{}% - \newcount\@quotereset - \newcommand*{\@setquotesfcodes}{}% - \let\@setquotesfcodes\relax - \newrobustcmd*{\initoquote}{\@quotelevel\@ne}% - \newrobustcmd*{\initiquote}{\@quotelevel\tw@}% - \newrobustcmd*{\textooquote}{``}% - \newrobustcmd*{\textcoquote}{''}% - \newrobustcmd*{\textoiquote}{`\relax}% block ligs - \newrobustcmd*{\textciquote}{'\relax}% block ligs - \newrobustcmd*{\enquote}{\@ifstar\blx@enquote@ii\blx@enquote}% - \def\blx@enquote{% - \ifnum\@quotelevel>\z@ - \expandafter\blx@enquote@ii - \else - \expandafter\blx@enquote@i - \fi}% - \long\def\blx@enquote@i#1{% - \begingroup\initoquote - \textooquote#1\textcoquote - \endgroup}% - \long\def\blx@enquote@ii#1{% - \begingroup\initiquote - \textoiquote#1\textciquote - \endgroup}% - \appto\blx@setsfcodes{% - \sfcode`\`=\z@ - \sfcode`\'=\z@}}% - \let\do\noexpand} - -\begingroup -\@makeother\# -% \relax: gobble newline -> titletoc.sty -\AtEndPreamble{% - \addtocontents{toc}{% - \boolfalse{citerequest}% - \boolfalse{citetracker}% - \boolfalse{pagetracker}% - \boolfalse{backtracker}\relax}% - \addtocontents{lof}{% - \boolfalse{citerequest}% - \boolfalse{citetracker}% - \boolfalse{pagetracker}% - \boolfalse{backtracker}\relax}% - \addtocontents{lot}{% - \boolfalse{citerequest}% - \boolfalse{citetracker}% - \boolfalse{pagetracker}% - \boolfalse{backtracker}\relax}% - \patchcmd\addtocontents - {\string\@writefile} - {\string\@writefile{#1}{\defcounter{refsection}{\the\c@refsection}\relax}% - \string\@writefile} - {} - {\blx@err@patch{\string\addtocontents}}} -\endgroup - -% trick hyperref into believing we're natbib -\let\NAT@parse\@empty -% trick showkeys into believing we're havard -\let\HAR@checkdef\@empty - -%% Allocation - -\providecommand{\@gobblefive}[5]{} - -% Counter to track nested tabularx environemnts so we don't -% try to patch the commands more than once below as this undefs some -% macros and an error is thrown -\newcounter{tabx@nest} -\setcounter{tabx@nest}{0} - -\newcounter{listtotal} -\def\thelisttotal{\the\c@listtotal} -\newcounter{listcount} -\def\thelistcount{\the\c@listcount} -\newcounter{liststart} -\def\theliststart{\the\c@liststart} -\newcounter{liststop} -\def\theliststop{\the\c@liststop} -\newcounter{citecount} -\def\thecitecount{\the\c@citecount} -\newcounter{citetotal} -\def\thecitetotal{\the\c@citetotal} -\newcounter{multicitecount} -\def\themulticitecount{\the\c@multicitecount} -\newcounter{multicitetotal} -\def\themulticitetotal{\the\c@multicitetotal} -\newcounter{instcount} -\def\theinstcount{\the\c@instcount} -\newcounter{maxnames} -\def\themaxnames{\the\c@maxnames} -\newcounter{minnames} -\def\theminnames{\the\c@minnames} -\newcounter{maxitems} -\def\themaxitems{\the\c@maxitems} -\newcounter{minitems} -\def\theminitems{\the\c@minitems} -\newcounter{citecounter} -\def\thecitecount{\the\c@citecounter} -\newcounter{savedcitecounter} -\def\thecitecount{\the\c@savedcitecounter} -\newcounter{uniquelist} -\def\theuniquelist{\the\c@uniquelist} -\newcounter{uniquename} -\def\theuniquename{\the\c@uniquename} -\newcounter{refsection} -\def\therefsection{\the\c@refsection} -\newcounter{refsegment} -\def\therefsegment{\the\c@refsegment} -\newcounter{maxextratitle} -\def\themaxextratitle{\the\c@maxextratitle} -\newcounter{maxextratitleyear} -\def\themaxextratitleyear{\the\c@maxextratitleyear} -\newcounter{maxextrayear} -\def\themaxextrayear{\the\c@maxextrayear} -\newcounter{maxextraalpha} -\def\themaxextraalpha{\the\c@maxextraalpha} -\newcounter{abbrvpenalty} -\def\theabbrvpenalty{\the\c@abbrvpenalty} -\newcounter{highnamepenalty} -\def\thehighnamepenalty{\the\c@highnamepenalty} -\newcounter{lownamepenalty} -\def\thelownamepenalty{\the\c@lownamepenalty} -\newcounter{maxparens} -\def\themaxparens{\the\c@maxparens} -\newcounter{parenlevel} -\def\theparenlevel{\the\c@parenlevel} - -\newcount\blx@tempcnta -\newcount\blx@tempcntb -\newcount\blx@tempcntc -\newcount\blx@maxsection -\expandafter\newcount\csname blx@maxsegment@0\endcsname -\newcount\blx@notetype -\newcount\blx@parenlevel@text -\newcount\blx@parenlevel@foot -\expandafter\newcount\csname blx@sectionciteorder@0\endcsname - -\def\blx@uniquename{0} -\def\blx@uniquelist{0} -\def\blx@maxbibnames{0} -\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} -\newlength{\biblabelsep} -\ifdef\bibitemsep % memoir - {} - {\newlength{\bibitemsep}} -\newlength{\bibnamesep} -\newlength{\bibinitsep} -\newlength{\bibparsep} -\newlength{\bibhang} - -\newbool{sourcemap} -\newbool{citetracker} -\newbool{pagetracker} -\newbool{backtracker} -\newbool{citerequest} -\booltrue{citerequest} - -\newtoggle{blx@tempa} -\newtoggle{blx@tempb} -\newtoggle{blx@runltx} -\newtoggle{blx@runbiber} -\newtoggle{blx@block} -\newtoggle{blx@unit} -\newtoggle{blx@skipentry} -\newtoggle{blx@insert} -\newtoggle{blx@lastins} -\newtoggle{blx@keepunit} -\newtoggle{blx@debug} -\newtoggle{blx@sortcase} -\newtoggle{blx@sortupper} -\newtoggle{blx@autolangbib} -\newtoggle{blx@autolangcite} -\newtoggle{blx@clearlang} -\newtoggle{blx@defernumbers} -\newtoggle{blx@omitnumbers} -\newtoggle{blx@footnote} -\newtoggle{blx@labelalpha} -\newtoggle{blx@labelnumber} -\newtoggle{blx@labeltitle} -\newtoggle{blx@labeltitleyear} -\newtoggle{blx@labeldate} -\newtoggle{blx@natbib} -\newtoggle{blx@mcite} -\newtoggle{blx@loadfiles} -\newtoggle{blx@singletitle} -\newtoggle{blx@terseinits} -\newtoggle{blx@giveninits} -\newtoggle{blx@sortgiveninits} -\newtoggle{blx@useprefix} -\newtoggle{blx@addset} -\newtoggle{blx@setonly} -\newtoggle{blx@dataonly} -\newtoggle{blx@skipbib} -\newtoggle{blx@skipbiblist} -\newtoggle{blx@skiplab} -\newtoggle{blx@citation} -\newtoggle{blx@bibliography} -\newtoggle{blx@citeindex} -\newtoggle{blx@bibindex} -\newtoggle{blx@localnumber} -\newtoggle{blx@refcontext} - -% Special fields which need resolution using the information provided by biber -\listadd\abx@rfields{labeltitle} -\def\abx@dorfields{% - \dolistcsloop{abx@rfields}% -} -% Just in case we ever have non-name lists to instantiate -%\listadd\abx@rlists{} -% \def\abx@dorlists{% -% \dolistcsloop{abx@rlists}% -% } -\listadd\abx@rnames{labelname} -\def\abx@dornames{% - \dolistcsloop{abx@rnames}% -} - -% Used to track sorting name key specifications -\global\let\blx@biber@sortingnamekeyspecs\@empty - -% Initialise some lists which track changing citations/sortschemes -% etc. between runs -\global\let\blx@cites\@empty -\global\let\blx@sortnamekeyschemes\@empty -\global\let\blx@lastsortnamekeyschemes\@empty -\global\let\blx@sortschemes\@empty -\global\let\blx@lastsortschemes\@empty -\global\let\blx@biblists\@empty -\global\let\blx@lastbiblists\@empty -\global\let\blx@lastcites\@empty -\global\let\blx@localnumaux\@empty - -\newread\blx@bcfin -\newwrite\blx@bcfout - -\def\blx@onlypreamble#1{% - \gappto\blx@dopreamblecmds{\do#1}} - -\def\blx@dopreamblecmds{% - \do\blx@dopreamblecmds - \do\blx@onlypreamble} - -%% Initialization -\def\blx@blxinit{% - \let\blx@blxinit\relax - \blx@initunit} - -\def\blx@secinit{% - \csgdef{blx@sections@\the\c@refsection}{true}% just to say we have a section for tests later - \ifcsundef{blx@bsee@\the\c@refsection} - {\global\cslet{blx@bsee@\the\c@refsection}\@empty} - {}% - \ifcsundef{blx@fsee@\the\c@refsection} - {\global\cslet{blx@fsee@\the\c@refsection}\@empty} - {}% - \blx@ibidreset@force - \blx@idemreset@force - \blx@opcitreset@force - \blx@loccitreset@force - % List to track all aliases in a section. We need to output all aliases - % to the .bcf every time so that they are visible to biber - % Reset only if undefined - \ifcsundef{blx@keyaliases@\the\c@refsection} - {\global\cslet{blx@keyaliases@\the\c@refsection}\@empty} - {}% - \ifcsundef{blx@segm@\the\c@refsection @\the\c@refsegment} - {\global\cslet{blx@segm@\the\c@refsection @\the\c@refsegment}\@empty} - {}} - -%% Auxiliary commands - -\protected\def\blx@safe@actives{% - \let\blx@if@safe@actives\if@safe@actives - \let\if@safe@actives\iftrue} - -\protected\def\blx@rest@actives{% - \let\if@safe@actives\blx@if@safe@actives} - -\protected\def\blx@regimc#1{% - \xappto\blx@blxinit{% - \let\noexpand#1\expandafter\noexpand\csname - blx@imc@\expandafter\@gobble\string#1\endcsname}} - -\protected\def\blx@regimcs#1{\blx@regimcs@i#1&} -\def\blx@regimcs@i#1{% - \ifx#1&\else - \blx@regimc#1% - \expandafter\blx@regimcs@i - \fi} - -% {<field>} => \do{<item1>}\do{<item2>}... -\def\blx@imc@docsvfield#1{% - \blx@imc@iffieldundef{#1} - {} - {\expandafter\expandafter\expandafter\docsvlist - \expandafter\expandafter\expandafter{% - \csname abx@field@#1\endcsname}}} - -% {<handler>}{<field>} => <handler>{<item1>}<handler>{<item2>}... -\def\blx@imc@forcsvfield#1#2{% - \blx@imc@iffieldundef{#2} - {} - {\expandafter\expandafter\expandafter\blx@imc@forcsvfield@i - \expandafter\expandafter\expandafter{% - \csname abx@field@#2\endcsname}{#1}}} - -\def\blx@imc@forcsvfield@i#1#2{\forcsvlist{#2}{#1}} - -\blx@regimcs{\docsvfield \forcsvfield} - -% {<list>|<listmacro>} -\protected\long\def\blx@listloop#1{% - \expandafter\blx@listloop@i#1|&} -\long\def\blx@listloop@i#1|{% - \ifblank{#1} - {\blx@break} - {\blx@do{#1}\blx@listloop@i}} - -\long\def\blx@break#1&{% - \blx@done - \undef\blx@do - \undef\blx@done} - -% {<listmacro>}{<listcsname>} => matches in <listmacro> -\protected\def\blx@filter#1#2{% - \def\do##1{% - \ifinlistcs{##1}{#2} - {\listadd#1{##1}} - {}}% - \blx@runfilter#1} - -% {<listmacro>}{<listcsname>} => matches in <listmacro> -% Slightly odd use of filtering to do citation sorting. -% Same as blx@filter but it keeps \tempcnta in step with the -% resulting number of things in the filtered list. This is -% because \tempcnta is used to set citetotal - this use -% of filtering for cite sorting has the side-effect of stripping -% duplicates like \cite{foo,foo} but we need then to keep citetotal -% in sync. -\protected\def\blx@filtercitesort#1#2{% - \blx@tempcnta\z@ - \def\do##1{% - \ifinlistcs{##1}{#2} - {\listadd#1{##1}% - \advance\blx@tempcnta\@ne} - {}}% - \blx@runfilter#1} - -% {<listmacro>}{<listcsname>} => neg. matches in <listmacro> -\protected\def\blx@notfilter#1#2{% - \def\do##1{% - \ifinlistcs{##1}{#2} - {} - {\listadd#1{##1}}}% - \blx@runfilter#1} - -\def\blx@runfilter#1{% - \begingroup\edef#1{\endgroup - \unexpanded{\let#1\@empty\dolistloop}{#1}}% - #1\let\do\noexpand} - -% {<code>}{<string>} => <code>{<string>} -\protected\def\blx@xsanitizeafter#1#2{% - \begingroup - \abx@hook@xsanitize - \def\blx@tempa{\endgroup#1}% - \edef\blx@tempb{#2}% - \expandafter\blx@tempa - \expandafter{\detokenize\expandafter{\blx@tempb}}} - -\def\abx@hook@xsanitize{% - \blx@safe@actives - \let\protect\string} - -% {<code>}{<string>} => <code>{<string>} -\begingroup -\catcode`\<=\active -\catcode`\>=\active -\catcode`\&=\active -\catcode`\"=\active -\catcode`\'=\active -\protected\gdef\blx@xmlsanitizeafter#1#2{% - \begingroup - \abx@hook@xsanitize - \def\blx@tempa{\endgroup#1}% - \edef\blx@tempb{#2}% - \let\do\@makeother - \dospecials - \catcode`\<=\active - \catcode`\>=\active - \catcode`\&=\active - \catcode`\"=\active - \catcode`\'=\active - \edef<{\string<\string;}% - \edef>{\string>\string;}% - \edef&{\string&\string;}% - \edef"{\string"\string;}% - \edef'{\string&apos\string;}% - \endlinechar\m@ne - \everyeof{\noexpand}% - \edef\blx@tempb{\scantokens\expandafter{\blx@tempb}}% - \expandafter\blx@tempa - \expandafter{\detokenize\expandafter{\blx@tempb}}} -\endgroup - -% {<file>}{<message>}{<preload>}{<postload>}{<success>}{<failure>} -\protected\long\def\blx@inputonce#1#2#3#4#5#6{% - \ifcsundef{blx@file@#1} - {\blx@info@noline{Trying to load #2..}% - \IfFileExists{#1} - {\blx@info@noline{... file '#1' found}% - \listxadd\blx@list@req@stat{#1}% - #3\@@input\@filef@und#4#5} - {\blx@info@noline{... file '#1' not found}#6}% - \global\csdef{blx@file@#1}{}% - \@addtofilelist{#1}} - {#5}} - -% {<write>}{<precode>}{<string>} -\protected\def\blx@auxwrite#1#2#3{% - \if@filesw - \begingroup - \blx@safe@actives - \let\protect\string - #2% - \immediate\write#1{#3}% - \endgroup - \fi} - -% {<file>}{<signature>}{<true>}{<false>} -\def\blx@ifsigned#1#2{% - \begingroup - \let\blx@tempa\@firstoftwo - \edef\blx@tempb{\csuse{blx@sig@#2}}% - \edef\blx@tempb{\detokenize\expandafter{\blx@tempb}}% - \openin\blx@bcfin #1.#2\relax - \ifeof\blx@bcfin - \else - \endlinechar\m@ne - \readline\blx@bcfin to \blx@tempc - \ifeof\blx@bcfin - \else - \ifx\blx@tempb\blx@tempc - \readline\blx@bcfin to \blx@tempc - \edef\blx@tempb{\csuse{blx@ver@#2}}% - \edef\blx@tempb{\detokenize\expandafter{\blx@tempb}}% - \ifx\blx@tempb\blx@tempc - \else - \blx@warning@noline{% - File '#1.#2' is wrong format version - expected \blx@bblversion} - \fi - \else - \blx@error - {File '#1.#2' not created by biblatex} - {This file was apparently not created by biblatex. - Rename it or\MessageBreak move it to a location were - TeX will not find it. If this error\MessageBreak - persists, consider redefining \string\blxauxsuffix.% - See the biblatex\MessageBreak manual for details}% - \let\blx@tempa\@secondoftwo - \fi - \fi - \fi - \closein\blx@bcfin - \expandafter\endgroup\blx@tempa} - -\edef\blx@sig@bbl{\@percentchar\space $ biblatex auxiliary file $} -\edef\blx@ver@bbl{\@percentchar\space $ biblatex bbl format version \blx@bblversion\space $} -\edef\blx@sig@bcf{\detokenize{<?xml version="1.0" encoding="UTF-8"?>}} -\edef\blx@ver@bcf{% - \detokenize{<bcf:controlfile version="}\blx@bcfversion - \detokenize{" xmlns:bcf="https://sourceforge.net/projects/biblatex">}} - -% {<true>}{<false>} -\newrobustcmd*{\lbx@ifutfinput}{\ifboolexpr{% - test {\ifdefstring\inputencodingname{utf8}} - or - test {\ifdefstring\inputencodingname{utf8x}} - or - test {\ifdefstring\inputencodingname{lutf8}} - or - ( test {\ifundef\inputencodingname} - and - ( not test {\ifundef\XeTeXrevision} - or - not test {\ifundef\luatexversion} - ) - ) -}} - -%% User feedback - -\protected\def\blx@error#1#2{% - \begingroup - \blx@safe@actives - \PackageError{biblatex}{#1}{#2.}% - \endgroup} - -\protected\def\blx@warning@noline#1{% - \begingroup - \blx@safe@actives - \PackageWarningNoLine{biblatex}{#1}% - \endgroup} -\let\blx@warning\blx@warning@noline -\AtEndOfPackage{ - \protected\def\blx@warning#1{% - \begingroup - \blx@safe@actives - \PackageWarning{biblatex}{#1}% - \endgroup}} - -\protected\def\blx@warning@entry#1{% - \ifdef\abx@field@entrykey - {\blx@warning{#1\MessageBreak at entry '\abx@field@entrykey'}} - {\blx@warning{#1}}} - -\protected\def\blx@info@noline#1{% - \begingroup - \blx@safe@actives - \PackageInfo{biblatex}{#1\@gobble}% - \endgroup} -\let\blx@info\blx@info@noline -\AtEndOfPackage{ - \protected\def\blx@info#1{% - \begingroup - \blx@safe@actives - \PackageInfo{biblatex}{#1}% - \endgroup}} - -\let\blx@noline\@gobble -\AtEndOfPackage{\let\blx@noline\@empty} -\def\blx@imc@BibliographyWarning{\blx@warning@entry} -\blx@regimc\BibliographyWarning - -\protected\def\abx@missing#1{% - \mbox{\reset@font\bfseries#1}} - -\def\blx@err@patch#1{% - \blx@error - {Patching #1 failed} - {This is an internal issue typically caused by a - conflict\MessageBreak between biblatex and some - other package. Modifying\MessageBreak the package - loading order may fix the problem}} - -\def\blx@err@nolang#1{% - \blx@error - {Language '#1' not found} - {The localization module for '#1' could not be found}} - -\def\blx@err@invarg#1#2{% - \blx@error - {Argument '#1' invalid} - {\ifblank{#2} - {The argument you have supplied is invalid.\MessageBreak - See the biblatex manual for details} - {#2}}} - -\def\blx@err@invopt#1#2{% - \blx@error - {Option '#1' invalid} - {\ifblank{#2} - {The option you have supplied is invalid.\MessageBreak - See the biblatex manual for valid option keys and - possible values} - {#2}}} - -\def\blx@err@confopt#1#2{% - \blx@error - {Conflicting options\ifblank{#1}{}{ (#1)}} - {\ifblank{#2} - {The option you have supplied conflicts with another one.\MessageBreak - See the biblatex manual for valid option keys and possible values} - {#2}}} - -\def\blx@err@optdef#1{% - \blx@error - {Conflicting options} - {The option '#1' is already defined}} - -\def\blx@err@nodocdiv#1{% - \blx@error - {\@backslashchar#1 not provided by class} - {The document class does not seems to support #1s}} - -\def\blx@err@nosec#1{% - \blx@error - {Section '#1' not found} - {The reference section '#1' could not be found}} - -\def\blx@err@nosort#1{% - \blx@error - {Sorting scheme '#1' not found} - {The sorting scheme '#1' does not seem to have been defined anywhere}} - -\def\blx@err@secfirst{% - \blx@error - {'section' not first filter} - {When passing multiple filter options, - the 'section' filter must be given first}} - -\protected\def\blx@err@nestcite{% - \blx@error - {Nested citation command} - {Citation commands may not be nested}} - -\def\blx@err@nestenv#1{% - \blx@error - {Nested '#1' environment} - {This environment may not be nested}} - -\protected\def\blx@err@citecmd#1{% - \begingroup - \escapechar\m@ne - \blx@error - {Command '\@backslashchar\string#1' undefined} - {The citation command '\@backslashchar\string#1' - has not been defined\MessageBreak by the - selected citation style}% - \endgroup} - -\def\blx@err@endnote#1{% - \blx@error - {Missing or incomplete endnote support} - {There does not seem to be endnote support available\MessageBreak - or the available support is incomplete.\MessageBreak - If you continue, I will fall back to '\string#1'}% - #1} - -\def\blx@err@matchparen#1{% - \blx@error - {Unbalanced parentheses or brackets} - {\iftoggle{blx@footnote}{#1 in foot or endnote}{#1}.\MessageBreak - This error is triggered if \string\bibopenparen\space and - \string\bibcloseparen\MessageBreak or - \string\bibopenbracket\space and \string\bibclosebracket\space - are unbalanced\MessageBreak or mismatched}} - -\def\blx@err@nestparen#1{% - \blx@error - {Too deeply nested parentheses or brackets} - {#1 nested too deeply% - \iftoggle{blx@footnote}{\space in foot or endnote}{}.\MessageBreak - This error may also be triggered if \string\mkbibparens\MessageBreak - or \string\mkbibbrackets\space are nested too deeply}} - -\def\blx@err@filter{% - \blx@error - {Invalid filter expression} - {The filter expression you have supplied is invalid.\MessageBreak - See the biblatex manual for details}} - -\def\blx@warn@nohyph#1{% - \blx@warning{No hyphenation patterns for '#1'}} - -\protected\def\blx@warn@citecmd#1#2{% - \blx@warning{% - '\string#1' not defined by citation style.\MessageBreak - Falling back to '\string#2'}% - #2} - -\protected\def\blx@warn@nostring#1{% - \blx@warning@entry{Bibliography string '#1' undefined}% - \abx@missing{#1}} - -\def\blx@warn@conflopt#1{% - \blx@warning{Conflicting options.\MessageBreak#1}} - -\def\blx@warn@badoptdt#1{% - \blx@warning{Invalid option datatype '#1'.\MessageBreak Defaulting to 'boolean'}} - -\def\blx@warn@depropt#1{% - \blx@warning{Deprecated option.\MessageBreak Ignoring '#1'}} - -\def\blx@warn@bibempty{% - \@latex@warning{Empty bibliography}} - -\def\blx@warn@biblistempty#1{% - \@latex@warning{Empty biblist '#1'}} - -\def\blx@inf@refsec{% - \blx@info{Reference section=\the\c@refsection}}% - -\def\blx@inf@refseg{% - \ifnum\c@refsection=\z@ - \blx@info{Reference segment=\the\c@refsegment}% - \else - \blx@info{% - Reference section/segment=% - \the\c@refsection/\the\c@refsegment}% - \fi} - -\def\blx@inf@creset{% - \blx@info{Resetting trackers}}% - -\def\blx@msg@cundef#1{% - Citation '#1' undefined} -\def\blx@msg@cundefon#1{% - Citation '#1' on page \the\c@page\space undefined} - -% Dummy as backend is biber by default. Some style may still use this to -% check though. -\newrobustcmd*{\RequireBiber}[1][2]{} - -% \blx@list@active active aux files (basename) -% [internal list] -% \blx@list@inactive inactive aux files (basename) -% [internal list] -% \blx@list@bibfiles@<auxfile> aux file -> bib file mapping (refsections) -% aux file (basename) -> bib files (full) -% [internal list] - -\let\blx@list@active\@empty -\let\blx@list@inactive\@empty -\listeadd\blx@list@inactive{\jobname} - -\protected\def\blx@regbibfiles#1#2{% - \forlistloop{\blx@regbibfile{#1}}{#2}} - -\def\blx@regbibfile#1#2{% - \ifcsundef{blx@res@loca@#2} - {\blx@regbibfile@i{#1}{#2}} - {\ifcsstring{blx@res@loca@#2}{local} - {\blx@regbibfile@i{#1}{#2}} - {}}} - -\def\blx@regbibfile@i#1#2{% - \ifinlistcs{#2}{blx@list@bibfiles@#1} - {} - {\listcsxadd{blx@list@bibfiles@#1}{#2}}} - -\def\blx@check@logreq{% - \begingroup - \ltxrequest{biblatex}{{\iftoggle{blx@runltx}{1}{0}}}{% - \provides[type=dynamic]{ - \file{\jobname.bcf} - } - \requires[type=dynamic]{ - \file{\jobname.bbl} - } - \ifdef\blx@list@req@edit - {\requires[type=editable]{ - \forlistloop\file\blx@list@req@edit - }} - {} - \ifdef\blx@list@req@stat - {\requires[type=static]{ - \forlistloop\file\blx@list@req@stat - }} - {} - }% - \logrequest[package=biblatex,priority=5,active={{\iftoggle{blx@runbiber}{1}{0}}}]{% - \generic{biber} - \cmdline{ - \binary{biber} - \infile{\jobname} - } - \input{ - \file{\jobname.bcf} - } - \output{ - \file{\jobname.bbl} - } - \provides[type=dynamic]{ - \file{\jobname.bbl} - } - \requires[type=dynamic]{ - \file{\jobname.bcf} - } - \ifcsdef{blx@list@bibfiles@\jobname} - {\requires[type=editable]{ - \def\do{\file} - \dolistcsloop{blx@list@bibfiles@\jobname} - }} - {} - }% - \endgroup} - -\def\blx@logreq@active#1{% - \ifblank{#1} - {} - {\@latex@warning{#1}}% - \blx@rerun@latex - \blx@rerun@biber} - -\def\blx@rerun@latex{% - \G@refundefinedtrue - \global\toggletrue{blx@runltx}% - \global\let\blx@rerun@latex\relax} - -\def\blx@rerun@biber{% - \global\toggletrue{blx@runbiber}% - \global\let\blx@rerun@biber\relax} - -\let\blx@checksum@old\@empty -\let\blx@checksum@new\@empty -\let\blx@pagesum@old\@empty -\let\blx@pagesum@new\@empty - -\def\blx@checksum#1#2#3{% - \begingroup - \blx@tempcnta\the\numexpr0#2*0#3\relax - \blx@tempcntb\blx@tempcnta - \divide\blx@tempcntb10 - \multiply\blx@tempcntb10 - \advance\blx@tempcnta-\blx@tempcntb - \xdef#1{#1\the\blx@tempcnta}% - \endgroup} - -\def\blx@addchecksum{\blx@checksum\blx@checksum@old} -\def\blx@addpagesum{\blx@checksum\blx@pagesum@old} -\AtEndDocument{% - \def\blx@addchecksum{\blx@checksum\blx@checksum@new}% - \def\blx@addpagesum{\blx@checksum\blx@pagesum@new}} - -\protected\def\blx@check@rerun{% - \begingroup - \blx@tempcnta\z@ - \iftoggle{blx@runltx} - {\blx@tempcnta\@ne} - {\ifx\blx@checksum@old\blx@checksum@new - \ifx\blx@pagesum@old\blx@pagesum@new - \else - \blx@tempcnta\@ne - \fi - \else - \blx@tempcnta\@ne - \fi}% - \iftoggle{blx@runbiber} - {\advance\blx@tempcnta\tw@} - {}% - \ifcase\blx@tempcnta - \or - \blx@rerun@latex - \blx@warning@noline{% - Please rerun LaTeX% - \ifx\blx@pagesum@old\blx@pagesum@new\else - .\MessageBreak Page breaks have changed% - \fi}% - \else - \blx@rerun@latex - \blx@warn@auxlist - \fi - \endgroup} - -\def\blx@warn@auxlist{% - \begingroup - \edef\blx@tempa{% - Please (re)run Biber on the file:\MessageBreak - \jobname}% - \blx@warning@noline{% - \blx@tempa\MessageBreak - and rerun LaTeX afterwards}% - \endgroup} - -\AfterEndDocument{% - \blx@check@rerun - \blx@check@logreq} - -%% Punctuation and capitalization - -% 1001 prefix sep for names (e.g. d'Argent ... \printnames only) -% 1002 abbreviation period (dot) -% 1003/1250 comma -% 1004/1500 semicolon -% 1005/2000 colon -% 1006/3000 period -% 1007/3001 exclamation mark -% 1008/3002 question mark -% 1009 suppress punctuation -% 1010 new paragaph - -\mathchardef\blx@sf@prefixchar=1001% e.g. apostrophe or equivalent for prefix handling -\mathchardef\blx@sf@dot=1002 -\mathchardef\blx@sf@comma=1003 -\mathchardef\blx@sf@semicolon=1004 -\mathchardef\blx@sf@colon=1005 -\mathchardef\blx@sf@period=1006 -\mathchardef\blx@sf@exclam=1007 -\mathchardef\blx@sf@question=1008 -\mathchardef\blx@sf@nopunct=1009 -\mathchardef\blx@sf@par=1010 -\mathchardef\blx@sf@threshold@low=1002 -\mathchardef\blx@sf@threshold@high=1009 - -\csdef{blx@sf@1250}{\the\blx@sf@comma} -\csdef{blx@sf@1500}{\the\blx@sf@semicolon} -\csdef{blx@sf@2000}{\the\blx@sf@colon} -\csdef{blx@sf@3000}{\the\blx@sf@period} -\csdef{blx@sf@3001}{\the\blx@sf@exclam} -\csdef{blx@sf@3002}{\the\blx@sf@question} - -\csdef{blx@pm@,}{comma} -\csdef{blx@pm@;}{semicolon} -\csdef{blx@pm@:}{colon} -\csdef{blx@pm@.}{period} -\csdef{blx@pm@!}{exclam} -\csdef{blx@pm@?}{question} - -\def\blx@setsfcodes{% - \let\blx@setsfcodes\relax - \let\frenchspacing\blx@setfrcodes - \let\nonfrenchspacing\blx@setencodes - \ifnum\sfcode`\.>2000 - \blx@setencodes - \else - \blx@setfrcodes - \fi - \@setquotesfcodes - \sfcode`\(=\z@ - \sfcode`\)=\z@ - \sfcode`\[=\z@ - \sfcode`\]=\z@ - \sfcode`\<=\z@ - \sfcode`\>=\z@} - -\def\blx@setfrcodes{% - \ifnum\sfcode`\A=\@m - \else - \blx@setazcodes - \fi - \sfcode`\,=\blx@sf@comma - \sfcode`\;=\blx@sf@semicolon - \sfcode`\:=\blx@sf@colon - \sfcode`\.=\blx@sf@period - \sfcode`\!=\blx@sf@exclam - \sfcode`\?=\blx@sf@question -} - -\def\blx@setencodes{% - \sfcode`\,=1250 - \sfcode`\;=1500 - \sfcode`\:=2000 - \sfcode`\.=3000 - \sfcode`\!=3001 - \sfcode`\?=3002 -} - -% Defining characters that count as prefices in names like d'Argent -% Code from moewe -\let\blx@prefchars\@empty - -\def\blx@defprefchars@loop#1{% - \ifx#1\relax - \else - \listadd{\blx@prefchars}{#1}% - \expandafter\blx@defprefchars@loop - \fi} - -\def\blx@defprefchars#1{% - \expandafter\blx@defprefchars@loop\detokenize{#1}\relax} - -\newrobustcmd*{\DeclarePrefChars}{% - \@ifstar - {\blx@defprefchars} - {\let\blx@prefchars\@empty - \blx@defprefchars}} -\DeclarePrefChars{'} - -\protected\def\blx@imc@ifprefchar{% - \ifhmode - \begingroup - \ifnum\spacefactor=\blx@sf@prefixchar - \endgroup - \expandafter\expandafter - \expandafter\@firstoftwo - \else - \endgroup - \expandafter\expandafter - \expandafter\@secondoftwo - \fi - \else - \expandafter\@secondoftwo - \fi} - -\blx@regimcs{\ifprefchar} - -\def\blx@namecodes{% - \ifnum\sfcode`\A=\@m - \else - \blx@setazcodes - \fi - \def\do##1{\sfcode`##1=\blx@sf@prefixchar}% - \dolistloop\blx@prefchars -} - -\begingroup -\let\blx@setazcodes\@empty -\def\blx@tempa{% - \xdef\blx@setazcodes{% - \blx@setazcodes - \sfcode\the\blx@tempcnta=\@m} - \ifnum\blx@tempcnta<\blx@tempcntb - \advance\blx@tempcnta\@ne - \expandafter\blx@tempa - \fi} -\blx@tempcnta`\A -\blx@tempcntb`\Z -\blx@tempa -\ifnum\inputlineno=\m@ne\else - \blx@tempcnta"80 - \blx@tempcntb"9C - \blx@tempa - \blx@tempcnta"C0 - \blx@tempcntb"DF - \blx@tempa -\fi -\endgroup - -\def\blx@spacefactor{% - \ifhmode - \ifcsundef{blx@sf@\the\spacefactor} - {\the\spacefactor} - {\csname blx@sf@\the\spacefactor\endcsname}% - \else - \the\blx@sf@par - \fi} - -\protected\def\blx@leavevmode{% - \ifhmode - \else - \leavevmode\spacefactor\blx@sf@par - \fi} - -\protected\def\blx@leavevmode@cite{% - \ifhmode - \ifnum\spacefactor=\blx@sf@par - \else - \spacefactor\@m - \fi - \else - \leavevmode - \fi} - -\protected\def\blx@imc@setpunctfont#1{% - \blx@ifpuncthook - {\gdef\abx@puncthook{% - \ifdim\lastkern>\z@\unkern\fi - \blx@imc@resetpunctfont#1}} - {}} -\protected\def\blx@imc@resetpunctfont{% - \blx@ifpuncthook - {\global\let\abx@puncthook\@firstofone} - {}} - -\protected\def\blx@setpostpunct#1{% - \blx@ifuspunct - {\global\let\blx@postpunct\blx@dopostpunct - \ifdef\blx@thepostpunct - {\gappto\blx@thepostpunct{#1}} - {\gdef\blx@thepostpunct{#1}}} - {}} - -\def\blx@dopostpunct{% - \blx@thepostpunct - \global\let\blx@postpunct\@empty - \global\undef\blx@thepostpunct} - -\protected\def\blx@postpunct@agroup{% - \aftergroup\blx@postpunct - \let\blx@postpunct@agroup\@empty} - -% {<characters>} - -\newrobustcmd*{\DeclareCapitalPunctuation}[1]{% - \cslet{blx@cap@\the\blx@sf@par}\@empty - \csundef{blx@cap@\the\blx@sf@comma}% - \csundef{blx@cap@\the\blx@sf@semicolon}% - \csundef{blx@cap@\the\blx@sf@colon}% - \csundef{blx@cap@\the\blx@sf@period}% - \csundef{blx@cap@\the\blx@sf@exclam}% - \csundef{blx@cap@\the\blx@sf@question}% - \ifblank{#1} - {} - {\expandafter\blx@defcapstring\detokenize{#1}\relax}} - -\def\blx@defcapstring#1{% - \ifx#1\relax - \else - \begingroup - \blx@setfrcodes - \ifcsdef{blx@pm@#1} - {\expandafter\endgroup - \expandafter\let - \csname blx@cap@\the\sfcode`#1\endcsname\@empty} - {\blx@warning{Ignoring invalid punctuation mark '#1'}% - \endgroup}% - \expandafter\blx@defcapstring - \fi} - -% {<characters>} - -\newrobustcmd*{\DeclareQuotePunctuation}[1]{% - \csdef{blx@qp@comma}{\blx@postpunct}% - \csdef{blx@qp@semicolon}{\blx@postpunct}% - \csdef{blx@qp@colon}{\blx@postpunct}% - \csdef{blx@qp@period}{\blx@postpunct}% - \csdef{blx@qp@exclam}{\blx@postpunct}% - \csdef{blx@qp@question}{\blx@postpunct}% - \cslet{blx@pq@comma}\@empty - \cslet{blx@pq@semicolon}\@empty - \cslet{blx@pq@colon}\@empty - \cslet{blx@pq@period}\@empty - \cslet{blx@pq@exclam}\@empty - \cslet{blx@pq@question}\@empty - \let\blx@quotepunct\@empty - \ifblank{#1} - {\let\blx@ifuspunct\@secondoftwo} - {\let\blx@ifuspunct\@firstoftwo - \expandafter\blx@defquotepunct\detokenize{#1}&}} - -\def\blx@defquotepunct#1{% - \ifx\relax - \else - \ifcsdef{blx@pm@#1} - {\appto\blx@quotepunct{#1}% - \cslet{blx@qp@\csuse{blx@pm@#1}}\@empty - \csdef{blx@pq@\csuse{blx@pm@#1}}{\blx@postpunct}} - {\blx@warning{Ignoring invalid punctuation mark '#1'}}% - \expandafter\blx@defquotepunct - \fi} - -% {<mark>}{<characters>} - -\newrobustcmd*{\DeclarePunctuationPairs}[2]{% - \ifcsdef{blx@sf@\detokenize{#1}} - {\ifnum\csname blx@sf@\detokenize{#1}\endcsname>\blx@sf@prefixchar - \ifnum\csname blx@sf@\detokenize{#1}\endcsname<\blx@sf@nopunct - \expandafter\blx@defpunctpairs - \expandafter{\the\csname blx@sf@\detokenize{#1}\endcsname}{#2}% - \else - \blx@err@invarg{\detokenize{#1}{}}% - \fi - \else - \blx@err@invarg{\detokenize{#1}{}}% - \fi} - {\blx@err@invarg{\detokenize{#1}{}}}} - -\def\blx@defpunctpairs#1#2{% - \blx@undefpair{#1}{\the\blx@sf@dot}% - \blx@undefpair{#1}{\the\blx@sf@comma}% - \blx@undefpair{#1}{\the\blx@sf@semicolon}% - \blx@undefpair{#1}{\the\blx@sf@colon}% - \blx@undefpair{#1}{\the\blx@sf@period}% - \blx@undefpair{#1}{\the\blx@sf@exclam}% - \blx@undefpair{#1}{\the\blx@sf@question}% - \ifblank{#2} - {} - {\begingroup - \def\blx@tempa{#1}% - \let\blx@tempb\@empty - \blx@setfrcodes - \sfcode`\*=\blx@sf@dot - \expandafter\blx@defpair\detokenize{#2}&% - \expandafter\endgroup\blx@tempb}} - -\def\blx@defpair#1{% - \ifx% - \else - \ifnum\the\sfcode`#1>\blx@sf@prefixchar - \ifnum\the\sfcode`#1<\blx@sf@nopunct - \eappto\blx@tempb{% - \cslet{blx@pp@\blx@tempa @\the\sfcode`#1}\noexpand\@empty}% - \else - \blx@err@invarg{#1}{}% - \fi - \else - \blx@err@invarg{#1}{}% - \fi - \expandafter\blx@defpair - \fi} - -\def\blx@undefpair#1#2{% - \ifcsdef{blx@pp@#1@#2} - {\csundef{blx@pp@#1@#2}} - {}} - -\protected\def\blx@resetpunct{% - \DeclareCapitalPunctuation{.!?}% - \DeclarePunctuationPairs{dot}{}% - \DeclarePunctuationPairs{comma}{*!?}% - \DeclarePunctuationPairs{semicolon}{*!?}% - \DeclarePunctuationPairs{colon}{*!?}% - \DeclarePunctuationPairs{period}{}% - \DeclarePunctuationPairs{exclam}{*}% - \DeclarePunctuationPairs{question}{*}% - \DeclareQuotePunctuation{}% - \def\abx@dot{\ifdim\lastkern>\z@\unkern\fi.\spacefactor\blx@sf@dot}% - \def\abx@comma{\ifdim\lastkern>\z@\unkern\fi\abx@puncthook{,}}% - \def\abx@semicolon{\abx@puncthook{;}}% - \def\abx@colon{\abx@puncthook{:}}% - \def\abx@period{\ifdim\lastkern>\z@\unkern\fi\abx@puncthook{.}}% - \def\abx@exclam{\abx@puncthook{!}}% - \def\abx@question{\abx@puncthook{?}}% - \global\let\abx@puncthook\@firstofone - \global\let\blx@postpunct\@empty} - -\blx@resetpunct - -% {<character>}{<true>}{<false>} - -\protected\def\blx@imc@ifpunctmark#1{% - \ifhmode - \begingroup - \sfcode`\*=\blx@sf@dot - \ifnum\sfcode`#1=\spacefactor - \endgroup - \expandafter\expandafter - \expandafter\@firstoftwo - \else - \endgroup - \expandafter\expandafter - \expandafter\@secondoftwo - \fi - \else - \expandafter\@secondoftwo - \fi} - -% {<true>}{<false>} - -\protected\def\blx@imc@ifterm{% - \ifhmode - \expandafter\blx@imc@ifcapital - \else - \expandafter\@secondoftwo - \fi} - -% {<true>}{<false>} - -\protected\def\blx@imc@ifcapital{% - \ifcsdef{blx@cap@\blx@spacefactor}} - -% {<true>}{<false>} - -\protected\def\blx@imc@ifpunct{% - \ifnum\blx@spacefactor>\blx@sf@threshold@low - \ifnum\blx@spacefactor<\blx@sf@threshold@high - \expandafter\expandafter - \expandafter\@firstoftwo - \else - \expandafter\expandafter - \expandafter\@secondoftwo - \fi - \else - \expandafter\@secondoftwo - \fi} - -% {<character>} - -\newrobustcmd*{\autocap}[1]{#1} - -\protected\def\blx@imc@autocap{% - \blx@imc@ifcapital\MakeUppercase\@firstofone} - -\protected\def\blx@imc@nopunct{% - \leavevmode\spacefactor\blx@sf@nopunct} - -\protected\def\blx@imc@isdot{% - \ifnum\blx@spacefactor=\blx@sf@period - \spacefactor\blx@sf@dot - \fi} - -\protected\def\blx@imc@adddot{% - \blx@addpunct{dot}% - \ifnum\blx@spacefactor=\blx@sf@period - \spacefactor\blx@sf@dot - \fi} - -\protected\def\blx@imc@addperiod{% - \blx@addpunct{period}% - \ifnum\blx@spacefactor=\blx@sf@dot - \spacefactor\blx@sf@period - \fi} - -\protected\def\blx@imc@addcomma{\blx@addpunct{comma}} -\protected\def\blx@imc@addsemicolon{\blx@addpunct{semicolon}} -\protected\def\blx@imc@addcolon{\blx@addpunct{colon}} -\protected\def\blx@imc@addexclam{\blx@addpunct{exclam}} -\protected\def\blx@imc@addquestion{\blx@addpunct{question}} - -\def\blx@addpunct#1{% - \unspace - \ifnum\blx@spacefactor<\blx@sf@threshold@low - \csuse{blx@qp@#1}\csuse{abx@#1}% - \else - \ifnum\blx@spacefactor>\blx@sf@threshold@high - \csuse{blx@qp@#1}\csuse{abx@#1}% - \else - \ifcsdef{blx@pp@\the\csname blx@sf@#1\endcsname @\blx@spacefactor} - {\csuse{blx@qp@#1}\csuse{abx@#1}} - {\csuse{blx@qp@#1}}% - \fi - \fi - \csuse{blx@pq@#1}} - -\providerobustcmd*{\unspace}{% - \ifbool{hmode} - {\ifdimgreater\lastskip\z@ - {\unskip\unspace} - {\ifnumgreater\lastpenalty\z@ - {\unpenalty\unspace} - {}}} - {}} - -\newrobustcmd*{\bibsentence}{% - \leavevmode\spacefactor\blx@sf@par - \ignorespaces} - -\newrobustcmd*{\midsentence}{% - \leavevmode - \@ifstar - {\ifnum\spacefactor=\blx@sf@dot - \else - \spacefactor\@m - \fi} - {\spacefactor\@m}} - -\newrobustcmd*{\addslash}{% - \unspace/\penalty\hyphenpenalty\hskip\z@skip} - -\newrobustcmd*{\addspace}{% - \unspace\blx@postpunct - \space\blx@imc@resetpunctfont} - -\newrobustcmd*{\addnbspace}{% - \unspace\blx@postpunct - \nobreak\space\blx@imc@resetpunctfont} - -\newrobustcmd*{\addthinspace}{% - \unspace\blx@postpunct - \hskip0.16667em\relax - \blx@imc@resetpunctfont} - -\newrobustcmd*{\addnbthinspace}{% - \unspace\blx@postpunct - \nobreak\hskip0.16667em\relax - \blx@imc@resetpunctfont} - -\newrobustcmd*{\addlowpenspace}{% - \unspace\blx@postpunct - \penalty\value{lownamepenalty}\space - \blx@imc@resetpunctfont} - -\newrobustcmd*{\addhighpenspace}{% - \unspace\blx@postpunct - \penalty\value{highnamepenalty}\space - \blx@imc@resetpunctfont} - -\newrobustcmd*{\addlpthinspace}{% - \unspace\blx@postpunct - \penalty\value{lownamepenalty}% - \hskip0.16667em\relax\blx@imc@resetpunctfont} - -\newrobustcmd*{\addhpthinspace}{% - \unspace\blx@postpunct - \penalty\value{highnamepenalty}% - \hskip0.16667em\relax\blx@imc@resetpunctfont} - -\newrobustcmd*{\addabbrvspace}{% - \unspace\blx@postpunct - \penalty\value{abbrvpenalty}% - \space\blx@imc@resetpunctfont} - -\newrobustcmd*{\addabthinspace}{% - \unspace\blx@postpunct - \penalty\value{abbrvpenalty}% - \hskip0.16667em\relax - \blx@imc@resetpunctfont} - -\newrobustcmd*{\adddotspace}{% - \unspace\adddot\blx@postpunct - \penalty\value{abbrvpenalty}% - \space\blx@imc@resetpunctfont} - -\providerobustcmd*{\noligature}{% - \penalty\@M\discretionary{-}{}{\kern0.03em}% - \nobreak\hskip\z@skip} - -\providerobustcmd*{\hyphen}{% - \nobreak-\nobreak\hskip\z@skip} - -\providerobustcmd*{\nbhyphen}{% - \nobreak\mbox{-}\nobreak\hskip\z@skip} - -\providerobustcmd*{\hyphenate}{% - \nobreak\-\nobreak\hskip\z@skip} - -\providerobustcmd*{\allowhyphens}{% - \nobreak\hskip\z@skip} - -\providerobustcmd*{\nohyphenation}{% - \lefthyphenmin\@m} - -\providerobustcmd*{\textnohyphenation}[1]{% - \bgroup\nohyphenation#1\egroup} - -\blx@regimcs{% - \setpunctfont \resetpunctfont \ifcapital \autocap \ifpunctmark - \ifpunct \ifterm \nopunct \isdot \adddot \addperiod \addcomma - \addsemicolon \addcolon \addexclam \addquestion} - -\appto\blx@blxinit{% - \appto\nocorrlist{\isdot\adddot\addperiod\addcomma}} - -%% Style definition - -% {<bibstyle>} -\newrobustcmd*{\RequireBibliographyStyle}[1]{% - \blx@inputonce{#1.bbx}{bibliography style '#1'}{}{}{} - {\blx@error - {Style '#1' not found} - {The bibliography style '#1' could not be found}}} -\@onlypreamble\RequireBibliographyStyle - -% {<code>} -\newrobustcmd*{\InitializeBibliographyStyle}{\appto\blx@hook@bbxinit} -\@onlypreamble\InitializeBibliographyStyle - -% {<entry type>}{<driverdef>} -\newrobustcmd*{\DeclareBibliographyDriver}[1]{% - \long\csdef{blx@bbx@#1}} -\@onlypreamble\DeclareBibliographyDriver - -% {<entry type>} -\def\blx@driver#1{% - \ifcsdef{blx@bbx@#1} - {\csuse{blx@bbx@#1}} - {\ifcsdef{blx@bbx@*} - {\blx@warning{% - No driver for entry type '#1'.\MessageBreak - Using fallback driver}% - \csuse{blx@bbx@*}} - {\blx@error - {No driver found} - {I can't find a driver for the entry type - '\abx@field@entrytype'\MessageBreak - and there is no fallback driver either}}}} - -% {<type>}{<true>}{<false>} -\def\blx@imc@ifdriver#1{\ifcsdef{blx@bbx@#1}} - -% {<alias>}{<type>} -\newrobustcmd*{\DeclareBibliographyAlias}[2]{% - \csedef{blx@bbx@#1}{% - \expandafter\noexpand\csname blx@bbx@#2\endcsname}} -\@onlypreamble\DeclareBibliographyAlias - -%% Auxiliary commands -\newrobustcmd*{\citereset}{% - \csuse{blx@hook@cbxinit}% - \@ifstar - {} - {\global\cslet{blx@bsee@\the\c@refsection}\@empty - \global\cslet{blx@fsee@\the\c@refsection}\@empty - \blx@ibidreset@force - \blx@idemreset@force - \blx@opcitreset@force - \blx@loccitreset@force}} - -\def\blx@save#1{% - \ifcsdef{blx@saved@#1} - {} - {\blx@safe@actives - \csletcs{blx@saved@#1}{#1}% - \blx@rest@actives}} - -\def\blx@restore#1{% - \ifcsdef{blx@saved@#1} - {\blx@safe@actives - \csletcs{#1}{blx@saved@#1}% - \csundef{blx@saved@#1}% - \blx@rest@actives} - {}} - -\newrobustcmd*{\savecommand}[1]{% - \ifcsdef{blx@saved@cmd@\detokenize{#1}} - {} - {\cslet{blx@saved@cmd@\detokenize{#1}}{#1}}} - -\newrobustcmd*{\restorecommand}[1]{% - \ifcsdef{blx@saved@cmd@\detokenize{#1}} - {\letcs{#1}{blx@saved@cmd@\detokenize{#1}}% - \csundef{blx@saved@cmd@\detokenize{#1}}} - {}} - -% {<name>} -\newrobustcmd*{\savebibmacro}[1]{% - \blx@save{abx@macro@\detokenize{#1}}} - -\newrobustcmd*{\restorebibmacro}[1]{% - \blx@restore{abx@macro@\detokenize{#1}}} - -% {<name>}[<args>][<optarg>]{<definition>} -\newrobustcmd*{\newbibmacro}{% - \@star@or@long\blx@newbibmacro} - -\def\blx@newbibmacro#1{% - \ifcsundef{abx@macro@\detokenize{#1}} - {\blx@defbibmacro\new@command{#1}} - {\blx@warning{% - Macro '\detokenize{#1}' already defined.\MessageBreak - Using \string\renewbibmacro} - \blx@defbibmacro\renew@command{#1}}} - -\newrobustcmd*{\renewbibmacro}{% - \@star@or@long\blx@renewbibmacro} - -\def\blx@renewbibmacro#1{% - \ifcsundef{abx@macro@\detokenize{#1}} - {\blx@warning{% - Macro '\detokenize{#1}' undefined.\MessageBreak - Using \string\newbibmacro} - \blx@defbibmacro\new@command{#1}} - {\blx@defbibmacro\renew@command{#1}}} - -\newrobustcmd*{\providebibmacro}{% - \@star@or@long{\blx@defbibmacro\provide@command}} - -\def\blx@defbibmacro#1#2{% - \expandafter#1\csname abx@macro@\detokenize{#2}\endcsname} - -% {<name>} -\newrobustcmd*{\usebibmacro}{% - \@ifstar - {\blx@usebibmacro@i} - {\blx@usebibmacro}} - -\def\blx@usebibmacro#1{% - \blx@usebibmacro@i{\detokenize{#1}}} - -\def\blx@usebibmacro@i#1{% - \ifcsundef{abx@macro@#1} - {\blx@error - {Bibliography macro '#1' undefined} - {Use '\string\newbibmacro' to define this macro}} - {\csuse{abx@macro@#1}}} - -% {<name>}{<true>}{<false>} -\def\blx@imc@ifbibmacroundef#1{% - \ifcsundef{abx@macro@#1}} - -% {<field>} -\def\blx@imc@thefield#1{\csuse{abx@field@#1}} - -\def\blx@imc@strfield#1{% - \ifcsdef{abx@field@#1} - {\detokenize\expandafter\expandafter\expandafter - {\csname abx@field@#1\endcsname}} - {}} - -\def\blx@imc@csfield#1{\usefield{\unexpanded}{#1}} - -% {<command>}{<field>} -\def\blx@imc@usefield#1#2{% - \expandafter\expandafter\expandafter#1% - \expandafter\expandafter\expandafter{\csname abx@field@#2\endcsname}} - -% {<plainlist>} -\def\blx@imc@thelist#1{\csuse{abx@list@#1}} - -\def\blx@imc@strlist#1{% - \ifcsdef{abx@list@#1} - {\detokenize\expandafter\expandafter\expandafter - {\csname abx@list@#1\endcsname}} - {}} - -% {<namelist>} -\def\blx@imc@thename#1{\csuse{abx@name@#1}} - -\def\blx@imc@strname#1{% - \ifcsdef{abx@name@#1} - {\detokenize\expandafter\expandafter\expandafter - {\csname abx@name@#1\endcsname}} - {}} - -% {<field>} -\protected\def\blx@imc@clearfield#1{% - \csundef{abx@field@#1}} - -% {<plainlist>} -\protected\def\blx@imc@clearlist#1{% - \ifcsundef{abx@list@#1} - {} - {\togglefalse{abx@bool@more#1}% - \csundef{abx@list@#1}% - \csname c@#1\endcsname\z@}} - -% {<namelist>} -\protected\def\blx@imc@clearname#1{% - \ifcsundef{abx@name@#1} - {} - {\togglefalse{abx@bool@more#1}% - \csundef{abx@name@#1}% - \csname c@#1\endcsname\z@}} - -% {<field>}{<macro>} -\protected\def\blx@imc@restorefield#1{\cslet{abx@field@#1}} - -% {<plainlist>}{<macro>} -\protected\def\blx@imc@restorelist#1{\cslet{abx@list@#1}} - -% {<namelist>}{<macro>} -\protected\def\blx@imc@restorename#1{\cslet{abx@name@#1}} - -% {<field>}{<macro>} -\protected\def\blx@imc@savefield{% - \@ifstar{\blx@savedata{field}}{\global\blx@savedata{field}}} -\def\blx@savedata#1#2#3{\letcs#3{abx@#1@#2}} - -% {<plainlist>}{<macro>} -\protected\def\blx@imc@savelist{% - \@ifstar{\blx@savedata{list}}{\global\blx@savedata{list}}} - -% {<namelist>}{<macro>} -\protected\def\blx@imc@savename{% - \@ifstar{\blx@savedata{name}}{\global\blx@savedata{name}}} - -% {<field>}{<csname>} -\protected\def\blx@imc@savefieldcs{% - \@ifstar{\blx@savedatacs{field}}{\global\blx@savedatacs{field}}} -\def\blx@savedatacs#1#2#3{\csletcs{#3}{abx@#1@#2}} - -% {<plainlist>}{<csname>} -\protected\def\blx@imc@savelistcs{% - \@ifstar{\blx@savedatacs{list}}{\global\blx@savedatacs{list}}} - -% {<namelist>}{<csname>} -\protected\def\blx@imc@savenamecs{% - \@ifstar{\blx@savedatacs{name}}{\global\blx@savedatacs{name}}} - -% {<field>}{<true>}{<false>} -\def\blx@imc@iffieldundef#1{% - \ifcsundef{abx@field@#1}} - -% {<plainlist>}{<true>}{<false>} -\def\blx@imc@iflistundef#1{% - \ifcsundef{abx@list@#1}} - -% {<namelist>}{<true>}{<false>} -\def\blx@imc@ifnameundef#1{% - \ifcsundef{abx@name@#1}} - -% {<field1>}{<field2>}{<true>}{<false>} -\def\blx@imc@iffieldsequal#1#2{% - \ifcsequal{abx@field@#1}{abx@field@#2}} - -% {<plainlist1>}{<plainlist2>}{<true>}{<false>} -\def\blx@imc@iflistsequal#1#2{% - \ifcsequal{abx@list@#1}{abx@list@#2}} - -% {<namelist1>}{<namelist2>}{<true>}{<false>} -\def\blx@imc@ifnamesequal#1#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{% - \setkeys{blx@opt@name}{#1}% - \setkeys{blx@opt@namepart}{#2}% - \ifdef\abx@field@hash - {\eappto\blx@tempa{{\abx@field@hash}}} - {\eappto\blx@tempa{{{\namepartfamily}{\namepartgiven}{\namepartprefix}{\namepartsuffix}}}}} - -% {<field>}{<macro>}{<true>}{<false>} -\def\blx@imc@iffieldequals#1#2{% - \blx@imc@iffieldundef{#1} - {\@secondoftwo} - {\ifundef#2% - {\@secondoftwo} - {\expandafter\ifx\csname abx@field@#1\endcsname#2% - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi}}} - -% {<plainlist>}{<macro>}{<true>}{<false>} -\def\blx@imc@iflistequals#1#2{% - \blx@imc@iflistundef{#1} - {\@secondoftwo} - {\ifundef#2% - {\@secondoftwo} - {\expandafter\ifx\csname abx@list@#1\endcsname#2% - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi}}} - -% {<namelist>}{<macro>}{<true>}{<false>} -\def\blx@imc@ifnameequals#1#2{% FIXME - \blx@imc@ifnameundef{#1} - {\@secondoftwo} - {\ifundef#2% - {\@secondoftwo} - {\expandafter\ifx\csname abx@name@#1\endcsname#2% - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi}}} - -% {<field>}{<csname>}{<true>}{<false>} -\def\blx@imc@iffieldequalcs#1{% - \ifcsequal{abx@field@#1}} - -% {<plainlist>}{<csname>}{<true>}{<false>} -\def\blx@imc@iflistequalcs#1{% - \ifcsequal{abx@list@#1}} - -% {<namelist>}{<csname>}{<true>}{<false>} -\def\blx@imc@ifnameequalcs#1{% FIXME - \ifcsequal{abx@name@#1}} - -% {<field>}{<string>}{<true>}{<false>} -\protected\long\def\blx@imc@iffieldequalstr#1#2{% - \blx@imc@iffieldundef{#1} - {\@secondoftwo} - {\expandafter\expandafter\expandafter\ifstrequal - \expandafter\expandafter\expandafter{% - \csname abx@field@#1\endcsname}{#2}}} - -% {<field>}{<true>}{<false>} -\protected\def\blx@imc@iffieldxref#1{% - \blx@imc@iffieldundef{#1} - {\@secondoftwo} - {\blx@whichxref - {\blx@iffieldxref{#1}} - {\@secondoftwo}}} - -\def\blx@iffieldxref#1#2{% - \begingroup - \letcs\blx@tempa{abx@field@#2}% - \letcs\blx@tempb{abx@field@#1}% - \csundef{abx@field@#1}% - \blx@getdata{\blx@tempa}% - \blx@imc@iffieldequals{#1}\blx@tempb - {\aftergroup\@firstoftwo} - {\aftergroup\@secondoftwo}% - \endgroup} - -\def\blx@whichxref#1#2{% - \blx@imc@iffieldundef{crossref} - {\blx@imc@iffieldundef{xref} - {#2} - {#1{xref}}} - {#1{crossref}}} - -% {<plainlist>}{<true>}{<false>} -\protected\def\blx@imc@iflistxref#1{% - \blx@imc@iflistundef{#1} - {\@secondoftwo} - {\blx@whichxref - {\blx@iflistxref{#1}} - {\@secondoftwo}}} - -\def\blx@iflistxref#1#2{% - \begingroup - \letcs\blx@tempa{abx@field@#2}% - \letcs\blx@tempb{abx@list@#1}% - \csundef{abx@list@#1}% - \blx@getdata{\blx@tempa}% - \blx@imc@iflistequals{#1}\blx@tempb - {\aftergroup\@firstoftwo} - {\aftergroup\@secondoftwo}% - \endgroup} - -% {<namelist>}{<true>}{<false>} -\protected\def\blx@imc@ifnamexref#1{% - \blx@imc@ifnameundef{#1} - {\@secondoftwo} - {\blx@whichxref - {\blx@ifnamexref{#1}} - {\@secondoftwo}}} - -\def\blx@ifnamexref#1#2{% - \begingroup - \letcs\blx@tempa{abx@field@#2}% - \letcs\blx@tempb{abx@name@#1}% - \csundef{abx@name@#1}% - \blx@getdata{\blx@tempa}% - \blx@imc@ifnameequals{#1}\blx@tempb - {\aftergroup\@firstoftwo} - {\aftergroup\@secondoftwo}% - \endgroup} - -% {<string>}{<true>}{<false>} -\protected\def\blx@imc@ifcurrentfield#1{% - \begingroup - \def\blx@tempa{#1}% - \ifx\currentfield\blx@tempa - \aftergroup\@firstoftwo - \else - \aftergroup\@secondoftwo - \fi - \endgroup} - -% {<string>}{<true>}{<false>} -\protected\def\blx@imc@ifcurrentlist#1{% - \begingroup - \def\blx@tempa{#1}% - \ifx\currentlist\blx@tempa - \aftergroup\@firstoftwo - \else - \aftergroup\@secondoftwo - \fi - \endgroup} - -% {<string>}{<true>}{<false>} -\protected\def\blx@imc@ifcurrentname#1{% - \begingroup - \def\blx@tempa{#1}% - \ifx\currentname\blx@tempa - \aftergroup\@firstoftwo - \else - \aftergroup\@secondoftwo - \fi - \endgroup} - -% {<string>}{<true>}{<false>} -\protected\def\blx@imc@ifentrytype#1{% - \begingroup - \def\blx@tempa{#1}% - \ifx\abx@field@entrytype\blx@tempa - \aftergroup\@firstoftwo - \else - \aftergroup\@secondoftwo - \fi - \endgroup} - -% {<true>}{<false>} -\def\blx@imc@ifmorenames{% - \ifundef\currentname - {\@secondoftwo} - {\iftoggle{abx@bool@more\currentname} - {\@firstoftwo} - {\ifnum\c@listtotal>\c@liststop - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi}}} - -% {<true>}{<false>} -\def\blx@imc@ifmoreitems{% - \ifundef\currentlist - {\@secondoftwo} - {\iftoggle{abx@bool@more\currentlist} - {\@firstoftwo} - {\ifnum\c@listtotal>\c@liststop - \expandafter\@firstoftwo - \else - \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{% - \ifdef\abx@field@entrykey - {\blx@imc@ifentrycategory\abx@field@entrykey} - {\expandafter\@secondoftwo\@gobble}} - -% {<entrykey>}{<category>}{<true>}{<false>} -\protected\def\blx@imc@ifentrycategory{% - \blx@xsanitizeafter\blx@imc@ifentrycategory@i} - -\def\blx@imc@ifentrycategory@i#1#2{% - \ifcsdef{blx@catg@\detokenize{#2}} - {\ifinlistcs{#1}{blx@catg@\detokenize{#2}}} - {\@secondoftwo}} - -% {<keyword>}{<true>}{<false>} -\protected\def\blx@imc@ifkeyword{% - \ifdef\abx@field@entrykey - {\blx@imc@ifentrykeyword\abx@field@entrykey} - {\expandafter\@secondoftwo\@gobble}} - -% {<entrykey>}{<keyword>}{<true>}{<false>} -\protected\def\blx@imc@ifentrykeyword{% - \blx@xsanitizeafter\blx@imc@ifentrykeyword@i} - -\def\blx@imc@ifentrykeyword@i#1#2{% - \ifcsdef{blx@keyw@\the\c@refsection @\detokenize{#2}} - {\ifinlistcs{#1}{blx@keyw@\the\c@refsection @\detokenize{#2}}} - {\@secondoftwo}} - -% {<true>}{<false>} -\protected\def\blx@ifciteseen@global{% - \ifbool{citetracker} - {\ifdef\abx@field@entrykey - {\expandafter\blx@ifseen@global - \expandafter{\abx@field@entrykey}} - {\@secondoftwo}} - {\@secondoftwo}} - -\protected\def\blx@ifciteseen@context{% - \ifbool{citetracker} - {\ifdef\abx@field@entrykey - {\expandafter\blx@ifseen@context - \expandafter{\abx@field@entrykey}} - {\@secondoftwo}} - {\@secondoftwo}} - -\protected\def\blx@ifciteseen@context{% - \ifbool{citetracker} - {\ifdef\abx@field@entrykey - {\expandafter\blx@ifseen@context - \expandafter{\abx@field@entrykey}} - {\@secondoftwo}} - {\@secondoftwo}} - -% {<entrykey>}{<true>}{<false>} -\protected\def\blx@ifentryseen@global{% - \blx@xsanitizeafter\blx@ifseen@global} - -\protected\def\blx@ifentryseen@context{% - \blx@xsanitizeafter\blx@ifseen@context} - -\def\blx@ifseen@global#1{% - \ifbool{citetracker} - {\ifinlistcs{#1}{blx@bsee@\the\c@refsection}} - {\@secondoftwo}} - -\def\blx@ifseen@context#1{% - \ifbool{citetracker} - {\iftoggle{blx@footnote} - {\ifinlistcs{#1}{blx@fsee@\the\c@refsection}} - {\ifinlistcs{#1}{blx@bsee@\the\c@refsection}}} - {\@secondoftwo}} - -% {<true>}{<false>} -\def\blx@ifciteibid@global{% - \ifbool{citetracker} - {\blx@imc@iffieldequals{entrykey}\blx@lastkey@text} - {\@secondoftwo}} - -\def\blx@ifciteibid@context{% - \ifbool{citetracker} - {\iftoggle{blx@footnote} - {\blx@imc@iffieldequals{entrykey}\blx@lastkey@foot} - {\blx@imc@iffieldequals{entrykey}\blx@lastkey@text}} - {\@secondoftwo}} - -\def\blx@ifciteibid@strict{% - \ifbool{citetracker} - {\blx@ifcitesingle - {\blx@ifciteibid@global} - {\@secondoftwo}} - {\@secondoftwo}} - -\def\blx@ifciteibid@constrict{% - \ifbool{citetracker} - {\blx@ifcitesingle - {\iftoggle{blx@footnote} - {\blx@ifmpfncheck - {\blx@imc@iffieldequals{entrykey}\blx@lastkey@foot} - {\@secondoftwo}} - {\blx@imc@iffieldequals{entrykey}\blx@lastkey@text}} - {\@secondoftwo}} - {\@secondoftwo}} - -% {<true>}{<false>} -\def\blx@ifciteidem@global{% - \ifbool{citetracker} - {\blx@imc@iffieldequals{fullhash}\blx@lasthash@text} - {\@secondoftwo}} - -\def\blx@ifciteidem@context{% - \ifbool{citetracker} - {\iftoggle{blx@footnote} - {\blx@imc@iffieldequals{fullhash}\blx@lasthash@foot} - {\blx@imc@iffieldequals{fullhash}\blx@lasthash@text}} - {\@secondoftwo}} - -\let\blx@ifciteidem@strict\blx@ifciteidem@global - -\def\blx@ifciteidem@constrict{% - \ifbool{citetracker} - {\iftoggle{blx@footnote} - {\blx@ifmpfncheck - {\blx@imc@iffieldequals{fullhash}\blx@lasthash@foot} - {\@secondoftwo}} - {\blx@imc@iffieldequals{fullhash}\blx@lasthash@text}} - {\@secondoftwo}} - -% {<true>}{<false>} -\def\blx@ifopcit@global{% - \ifbool{citetracker} - {\blx@imc@iffieldundef{namehash} - {\@secondoftwo} - {\blx@imc@iffieldequalcs{entrykey}{blx@lastkey@text@\abx@field@namehash}}} - {\@secondoftwo}} - -\def\blx@ifopcit@context{% - \ifbool{citetracker} - {\blx@imc@iffieldundef{namehash} - {\@secondoftwo} - {\iftoggle{blx@footnote} - {\blx@imc@iffieldequalcs{entrykey}{blx@lastkey@foot@\abx@field@namehash}} - {\blx@imc@iffieldequalcs{entrykey}{blx@lastkey@text@\abx@field@namehash}}}} - {\@secondoftwo}} - -\def\blx@ifopcit@strict{% - \ifbool{citetracker} - {\blx@ifcitesingle - {\blx@ifopcit@global} - {\@secondoftwo}} - {\@secondoftwo}} - -\def\blx@ifopcit@constrict{% - \ifbool{citetracker} - {\blx@ifcitesingle - {\blx@imc@iffieldundef{namehash} - {\@secondoftwo} - {\iftoggle{blx@footnote} - {\blx@ifmpfncheck - {\blx@imc@iffieldequalcs{entrykey}{blx@lastkey@foot@\abx@field@namehash}} - {\@secondoftwo}} - {\blx@imc@iffieldequalcs{entrykey}{blx@lastkey@text@\abx@field@namehash}}}} - {\@secondoftwo}} - {\@secondoftwo}} - -% {<true>}{<false>} -\def\blx@ifloccit@global{% - \ifbool{citetracker} - {\blx@loccit@check{text}} - {\@secondoftwo}} - -\def\blx@ifloccit@context{% - \ifbool{citetracker} - {\iftoggle{blx@footnote} - {\blx@loccit@check{foot}} - {\blx@loccit@check{text}}} - {\@secondoftwo}} - -\def\blx@ifloccit@strict{% - \ifbool{citetracker} - {\blx@ifcitesingle - {\blx@loccit@numcheck{text}} - {\@secondoftwo}} - {\@secondoftwo}} - -\def\blx@ifloccit@constrict{% - \ifbool{citetracker} - {\blx@ifcitesingle - {\iftoggle{blx@footnote} - {\blx@ifmpfncheck - {\blx@loccit@numcheck{foot}} - {\@secondoftwo}} - {\blx@loccit@numcheck{text}}} - {\@secondoftwo}} - {\@secondoftwo}} - -\def\blx@loccit@check#1{% - \blx@imc@iffieldundef{postnote} - {\@secondoftwo} - {\blx@imc@iffieldequalcs{postnote}{blx@lastnote@#1@\abx@field@entrykey}}} - -\def\blx@loccit@numcheck#1{% - \blx@imc@iffieldundef{postnote} - {\@secondoftwo} - {\expandafter\blx@imc@ifpages - \expandafter{\abx@field@postnote} - {\blx@imc@iffieldequalcs{postnote}{blx@lastnote@#1@\abx@field@entrykey}} - {\@secondoftwo}}} - -% {<true>}{<false>} -\def\blx@ifmpfncheck{% - \ifnum\numexpr\value\@mpfn-\blx@lastmpfn<\tw@ - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi} - -\def\blx@mpfnsave{% - \xdef\blx@lastmpfn{\the\value\@mpfn}} - -\def\blx@mpfnreset{% - \global\let\blx@lastmpfn\z@} - -\blx@mpfnreset - -% {<true>}{<false>} -\def\blx@imc@iffirstonpage{% - \ifbool{pagetracker} - {\iftoggle{blx@footnote} - {\blx@iffirstonpage{fnpage}} - {\blx@iffirstonpage{page}}} - {\@secondoftwo}} - -\def\blx@iffirstonpage#1{% - \ifcsundef{blx@#1@\number\c@instcount} - {\@secondoftwo} - {\expandafter\blx@iffirstonpage@i - \expandafter{\number\numexpr\c@instcount-1}{#1}}} - -\def\blx@iffirstonpage@i#1#2{% - \ifcsundef{blx@#2@#1} - {\ifnum#1>\@ne - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi - {\expandafter\blx@iffirstonpage@i - \expandafter{\number\numexpr#1-1}{#2}} - {\@firstoftwo}} - {\ifnum\csuse{blx@#2@\number\c@instcount}=% - \csuse{blx@#2@#1} % - \expandafter\@secondoftwo - \else - \expandafter\@firstoftwo - \fi}} - -% {<count1>}{<count2>}{<true>}{<false>} -\def\blx@imc@ifsamepage#1#2{% - \ifbool{pagetracker} - {\ifcsundef{blx@page@\number\numexpr#1} - {\ifcsundef{blx@fnpage@\number\numexpr#1} - {\@secondoftwo} - {\blx@ifsamepage{#1}{#2}{fnpage}}} - {\blx@ifsamepage{#1}{#2}{page}}} - {\@secondoftwo}} - -\def\blx@ifsamepage#1#2#3{% - \ifcsundef{blx@page@\number\numexpr#2} - {\ifcsundef{blx@fnpage@\number\numexpr#2} - {\@secondoftwo} - {\blx@ifsamepage@i{#1}{#2}{#3}{fnpage}}} - {\blx@ifsamepage@i{#1}{#2}{#3}{page}}} - -\def\blx@ifsamepage@i#1#2#3#4{% - \ifnum\csuse{blx@#3@\number\numexpr#1}=% - \csuse{blx@#4@\number\numexpr#2} % - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi} - -% {<string>}{<true>}{<false>} -\protected\long\def\blx@imc@ifinteger#1{% - \begingroup - \def\do##1{\uccode`##1=`\%}% - \do\0\do\1\do\2\do\3\do\4\do\5\do\6\do\7\do\8\do\9% - \makeatletter - \catcode`\%=9 - \endlinechar\m@ne - \uppercase{\scantokens{\def\blx@tempa{#1}}}% - \ifx\blx@tempa\@empty - \aftergroup\@firstoftwo - \else - \aftergroup\@secondoftwo - \fi - \endgroup} - -% {<field>}{<true>}{<false>} -\protected\def\blx@imc@iffieldint#1{% - \blx@imc@iffieldundef{#1} - {\@secondoftwo} - {\expandafter\expandafter - \expandafter\ifinteger - \expandafter\expandafter - \expandafter{\csname abx@field@#1\endcsname}}} - -% {<string>}{<true>}{<false>} -\protected\def\blx@imc@ifnumeral{% - \blx@ifnum\blx@hook@ifnum} - -\protected\def\blx@imc@ifnumerals{% - \blx@ifnum\blx@hook@ifnums} - -\protected\def\blx@imc@ifpages{% - \blx@ifnum\blx@hook@ifpages} - -\long\def\blx@ifnum#1#2{% - \begingroup - \let\protect\@unexpandable@protect - \uppercase{\edef\blx@tempa{#2}}% - \ifx\blx@tempa\@empty - \aftergroup\@secondoftwo - \else - \makeatletter - \catcode`\%=9 - \endlinechar\m@ne - \everyeof{\noexpand}#1% - \uppercase{\edef\blx@tempa{\scantokens{#2}}}% - \ifx\blx@tempa\@empty - \aftergroup\@firstoftwo - \else - \aftergroup\@secondoftwo - \fi - \fi - \endgroup} - -\def\blx@hook@ifnum{% - \def\do##1{\uccode`##1=`\%}% - \do\ \do\0\do\1\do\2\do\3\do\4\do\5\do\6\do\7\do\8\do\9% - \do\i\do\v\do\x\do\l\do\c\do\d\do\m - \do\I\do\V\do\X\do\L\do\C\do\D\do\M - \blx@donumchars - \let\RN\@firstofone - \let\Rn\@firstofone} - -\def\blx@hook@ifnums{% - \blx@hook@ifnum - \def\do##1{\uccode`##1=`\%}% - \blx@dorangechars - \def\do##1{\let##1\@empty}% - \blx@dorangecmds} - -\def\blx@hook@ifpages{% - \blx@hook@ifnum - \blx@hook@ifnums - \def\do##1{\let##1\@empty}% - \blx@dopagecmds} - -% {<field>}{<true>}{<false>} -\protected\def\blx@imc@iffieldnum#1{% - \blx@imc@iffieldundef{#1} - {\@secondoftwo} - {\expandafter\expandafter - \expandafter\blx@imc@ifnumeral - \expandafter\expandafter - \expandafter{\csname abx@field@#1\endcsname}}} - -\protected\def\blx@imc@iffieldnums#1{% - \blx@imc@iffieldundef{#1} - {\@secondoftwo} - {\expandafter\expandafter - \expandafter\blx@imc@ifnumerals - \expandafter\expandafter - \expandafter{\csname abx@field@#1\endcsname}}} - -\protected\def\blx@imc@iffieldpages#1{% - \blx@imc@iffieldundef{#1} - {\@secondoftwo} - {\expandafter\expandafter - \expandafter\blx@imc@ifpages - \expandafter\expandafter - \expandafter{\csname abx@field@#1\endcsname}}} - -% {<chars>} -\newrobustcmd*{\DeclareNumChars}{% - \@ifstar - {\blx@defnumchars} - {\global\let\blx@donumchars\@empty - \blx@defnumchars}} - -\def\blx@defnumchars#1{% - \ifblank{#1} - {} - {\expandafter\blx@defdochars - \expandafter\blx@donumchars - \detokenize{#1}\relax}} - -% {<chars>} -\newrobustcmd*{\DeclareRangeChars}{% - \@ifstar - {\blx@defrangechars} - {\global\let\blx@dorangechars\@empty - \blx@defrangechars}} - -\def\blx@defrangechars#1{% - \ifblank{#1} - {} - {\expandafter\blx@defdochars - \expandafter\blx@dorangechars - \detokenize{#1}\relax}} - -\def\blx@defdochars#1#2{% - \ifx#2\relax - \else - \xdef#1{% - \expandonce#1\noexpand\do - \expandafter\noexpand\csname#2\endcsname}% - \expandafter\blx@defdochars - \expandafter#1% - \fi} - -% {<cstokens>} -\newrobustcmd*{\DeclareRangeCommands}{% - \@ifstar - {\blx@defrangecmds} - {\global\let\blx@dorangecmds\@empty - \blx@defrangecmds}} - -\def\blx@defrangecmds#1{% - \ifblank{#1} - {} - {\blx@defrangecmds@i#1&}} - -\def\blx@defrangecmds@i#1{% - \ifx% - \else - \gappto\blx@dorangecmds{\do#1}% - \expandafter\blx@defrangecmds@i - \fi} - -% {<cstokens>} -\newrobustcmd*{\DeclarePageCommands}{% - \@ifstar - {\blx@defpagecmds} - {\global\let\blx@dopagecmds\@empty - \blx@defpagecmds}} - -\def\blx@defpagecmds#1{% - \ifblank{#1} - {} - {\blx@defpagecmds@i#1&}} - -\def\blx@defpagecmds@i#1{% - \ifx% - \else - \gappto\blx@dopagecmds{\do#1}% - \expandafter\blx@defpagecmds@i - \fi} - -\DeclareNumChars{.} -\DeclareRangeChars{~,;-+/} -\DeclareRangeCommands{% - \ \,\space\nobreakspace\addspace\addnbspace - \addthinspace\addnbthinspace\addlowpenspace - \addhighpenspace\addlpthinspace\addhpthinspace - \adddotspace\addabbrvspace\&\psq\psqq - \bibrangedash\bibdatedash\textendash\textemdash\bibrangessep} -\DeclarePageCommands{\pno\ppno} - -% *{<code>} -\newrobustcmd*{\NumCheckSetup}{\appto\blx@hook@ifnum} -\newcommand*{\NumcheckSetup}{\NumCheckSetup} - -% [<pagination>][<postpro>]{<string>} -\newrobustcmd*{\blx@imc@mkpageprefix}[1][pagination]{% - \begingroup - \def\blx@tempa{\blx@mkpageprefix{page}}% - \iffieldundef{#1} - {} - {\iffieldequalstr{#1}{none} - {\def\blx@tempa{\blx@mkpageprefix@i}} - {\iffieldbibstring{#1} - {\edef\blx@tempa{\blx@mkpageprefix{\thefield{#1}}}} - {\blx@warning@entry{% - Unknown pagination type '\strfield{#1}'}}}}% - \@ifnextchar[%] - {\blx@tempa} - {\blx@tempa[\@firstofone]}} - -\protected\long\def\blx@mkpageprefix#1[#2]#3{% - \ifnumeral{#3} - {\bibstring{#1}\ppspace} - {\ifnumerals{#3} - {\bibstring{#1s}\ppspace} - {\def\pno{\bibstring{#1}}% - \def\ppno{\bibstring{#1s}}}}% - \blx@mkpageprefix@i[#2]{#3}} - -\long\def\blx@mkpageprefix@i[#1]#2{#1{#2}\endgroup} - -% [<pagination>][<postpro>]{<string>} -\newrobustcmd*{\blx@imc@mkpagetotal}[1][bookpagination]{% - \begingroup - \def\blx@tempa{\blx@mkpagetotal{page}}% - \iffieldundef{#1} - {} - {\iffieldequalstr{#1}{none} - {\def\blx@tempa{\blx@mkpagetotal@i}} - {\iffieldbibstring{#1} - {\edef\blx@tempa{\blx@mkpagetotal{\thefield{#1}}}} - {\blx@warning@entry{% - Unknown pagination type '\strfield{#1}'}}}}% - \@ifnextchar[%] - {\blx@tempa} - {\blx@tempa[\@firstofone]}} - -\protected\long\def\blx@mkpagetotal#1[#2]#3{% - \ifnumeral{#3} - {\setbox\@tempboxa=\hbox{% - \blx@tempcnta0#3\relax - \ifnum\blx@tempcnta=\@ne - \aftergroup\@firstoftwo - \else - \aftergroup\@secondoftwo - \fi}% - {#2{#3}\ppspace\bibstring{#1}} - {#2{#3}\ppspace\bibstring{#1s}}} - {\def\pno{\bibstring{#1}}% - \def\ppno{\bibstring{#1s}}% - #2{#3}}% - \endgroup} - -\long\def\blx@mkpagetotal@i[#1]#2{#1{#2}\endgroup} - -\newcounter{mincomprange} -\newcounter{maxcomprange} -\newcounter{mincompwidth} -\setcounter{mincomprange}{10} -\setcounter{maxcomprange}{100000} -\setcounter{mincompwidth}{1} -\def\abx@rangeproclimit{100000} - -% {<rangefield>} -\newcommand*{\frangelen}[1]{% - \ifcsdef{abx@range@#1} - {\csuse{abx@range@#1}} - {}} - -% {<string>} -% This mustn't be robust as it's likely to be used mainly tests and so -% needs to be expandable -\newcommand*\rangelen[1]{% - \ifblank{#1} - {0}% - {% - \expandafter\blx@rangelen@range\romannumeral-`\q% - #1\bibrangedash\bibrangedash&% - }% - } - -\def\blx@rangelen@range#1\bibrangedash#2\bibrangedash#3&{% - \ifblank{#3} - {\blx@rangelen@hyphen#1--&} - {\blx@rangelen@check{#1}{#2}}% -} -\def\blx@rangelen@hyphen#1-#2-#3&{% - \ifblank{#3} - {1}% No range at all: assume one page - {\blx@rangelen@check{#1}{#2}}% -} -\def\blx@rangelen@check#1#2{% - \expandafter\blx@rangelen@check@aux - \number\numexpr - \blx@rangelen@check@int{#2} - - - \blx@rangelen@check@int{#1} - + 1 - \relax - &\stop -} -\def\blx@rangelen@check@aux#1\stop{% - \ifblank{#2} - {#1} - {-1}% -} -\def\blx@rangelen@check@int#1{% - \ifblank{#1} - {0&} - {% - \if\number\numexpr0#1-0#1\relax0 - #1 - \else - 0& - \fi - }% -} - -% <*>[<postpro>]{<string>} - -\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@value{\appto\blx@tempa}% - \let\blx@range@out@delim\blx@range@out@value - \let\blx@range@split\blx@comprange@split - \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@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@value{#1\bibrangedash}} - {\ifblank{#1} - {\blx@range@out@value{\bibrangedash#2}} - {\blx@comprange@check{#1}{#2}}}}} - -\def\blx@comprange@hyphen#1-#2-#3&{% - \ifblank{#3} - {\blx@comprange@abort} - {\ifblank{#2} - {\ifblank{#1} - {\let\blx@tempb\@empty} - {\def\blx@tempb{#1}}% - \blx@comprange@hyphen@i#3&} - {\ifblank{#1} - {\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@value - \expandafter{\blx@tempb\bibrangedash}} - {\notblank{#1} - {\ifdefempty\blx@tempb - {\blx@range@out@value{\bibrangedash#1}} - {\expandafter\blx@comprange@check - \expandafter{\blx@tempb}{#1}}} - {\blx@comprange@hyphen@i#2&}}} - -\def\blx@comprange@check#1#2{% - \blx@imc@ifinteger{#1} - {\blx@imc@ifinteger{#2} - {\blx@comprange@comp{#1}{#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}% - \def\blx@tempc{#2}% - \let\blx@tempd\blx@tempc - \ifnum\c@maxcomprange<\abx@rangeproclimit\relax - \numdef\blx@tempe\abx@rangeproclimit - \else - \numdef\blx@tempe\c@maxcomprange - \fi - \blx@tempcntc=\blx@tempe\relax - \ifnum - \ifnum\c@mincompwidth<1\space1\fi - \ifnum\c@maxcomprange<10\space1\fi - \ifnum\c@mincomprange<\blx@tempb\space\else1\fi - \ifnum\blx@tempb<\numexpr\blx@tempcntc*10\relax\else1\fi - 0=\z@ - \expandafter\blx@comprange@comp@div - \else - \expandafter\blx@comprange@end - \fi} - -\def\blx@comprange@end{% - \numdef\blx@tempb\blx@tempb - \ifnum\blx@tempe>\c@maxcomprange\relax - \numdef\blx@tempc\blx@tempc - \else - \numdef\blx@tempc\blx@tempd - \fi - \edef\blx@tempb{% - \blx@range@out@value{\blx@tempb\noexpand\bibrangedash\blx@tempc}}% - \blx@tempb} - -\def\blx@comprange@comp@div{% - \unless\ifnum\blx@tempb<\blx@tempcntc - \blx@tempcnta\blx@tempb\relax - \blx@tempcntb\blx@tempc\relax - \divide\blx@tempcnta\blx@tempcntc - \divide\blx@tempcntb\blx@tempcntc - \ifnum\blx@tempcnta=\blx@tempcntb - \edef\blx@tempd{\expandafter\@gobble\blx@tempd}% - \numdef\blx@tempe\blx@tempcntc - \fi - \fi - \divide\blx@tempcntc10\relax - \ifnum - \ifnum\blx@tempcntc<10 1\fi - \ifnum\blx@tempcntc>\c@mincompwidth\else 1\fi - 0=\z@ - \expandafter\blx@comprange@comp@div - \else - \expandafter\blx@comprange@end - \fi} - -\def\blx@range@chunk#1{% - \blx@range@chunk@semcol#1;&} - -\def\blx@range@chunk@semcol#1;#2&{% - \notblank{#1} - {\blx@range@chunk@comma#1,&} - {}% - \notblank{#2} - {\notblank{#1}{\blx@range@out@delim{\bibrangessep}}{}% - \blx@range@chunk@semcol#2&} - {}} - -\def\blx@range@chunk@comma#1,#2&{% - \notblank{#1} - {\blx@range@chunk@sep#1\bibrangessep&} - {}% - \notblank{#2} - {\notblank{#1}{\blx@range@out@delim{\bibrangessep}}{}% - \blx@range@chunk@comma#2&} - {}} - -\def\blx@range@chunk@sep#1\bibrangessep#2&{% - \notblank{#1} - {\expandafter\blx@range@split - \expandafter{\@firstofone#1}} - {}% - \notblank{#2} - {\notblank{#1}{\blx@range@out@delim{\bibrangessep}}{}% - \blx@range@chunk@sep#2&} - {}} - -% <*>[<postpro>]{<string>} -\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@value{\appto\blx@tempa}% - \let\blx@range@out@delim\blx@range@out@value - \let\blx@range@split\blx@firstpage@split - \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@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@value{\bibrangedash#2}} - {\blx@range@out@value{#1}}}} - -\def\blx@firstpage@hyphen#1-#2-#3&{% - \ifblank{#3} - {\blx@firstpage@abort} - {\ifblank{#1} - {\ifblank{#2} - {\blx@firstpage@hyphen@i#3&} - {\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@value{\bibrangedash#1}}} - -\newcommand*{\ppspace}{\addnbspace} -\newcommand*{\sqspace}{\addnbspace} - -\newrobustcmd*{\RN}[1]{% - \begingroup - \expandafter\RNfont - \expandafter{\romannumeral#1}% - \endgroup} -\newrobustcmd*{\Rn}[1]{% - \begingroup - \expandafter\Rnfont - \expandafter{\romannumeral#1}% - \endgroup} - -\newcommand*{\RNfont}{\uppercase} -\newcommand*{\Rnfont}{} - -% {<init>}{<entrytype>} - -\protected\def\blx@imc@usedriver#1#2{% - \begingroup - \let\finentry\blx@finentry@usedrv - \let\newblock\relax - \let\abx@macro@bibindex\@empty - \let\abx@macro@pageref\@empty - \csuse{blx@hook@bbxinit}#1% - \blx@beglangbib - \blx@driver{#2}% - \blx@endlangbib - \endgroup} - -% Punctuation - -\protected\def\blx@initunit{% - \global\togglefalse{blx@block}% - \global\togglefalse{blx@unit}% - \global\togglefalse{blx@insert}% - \global\togglefalse{blx@lastins}% - \global\togglefalse{blx@keepunit}% - \global\let\blx@unitpunct\newunitpunct - \blx@imc@resetpunctfont} - -\def\blx@begunit{% - \toggletrue{blx@tempa}% - \iftoggle{blx@insert} - {\iftoggle{blx@unit} - {\begingroup - \let\blx@begunit\@empty - \let\blx@endunit\@empty - \let\blx@endnounit\@empty - \blx@unitpunct\blx@postpunct - \endgroup - \global\togglefalse{blx@unit}% - \togglefalse{blx@tempa}} - {\blx@postpunct}% - \iftoggle{blx@block} - {\begingroup - \let\blx@begunit\@empty - \let\blx@endunit\@empty - \let\blx@endnounit\@empty - \newblockpunct - \endgroup - \global\togglefalse{blx@block}% - \togglefalse{blx@tempa}} - {}} - {}% - \blx@postpunct - \blx@imc@resetpunctfont - \iftoggle{blx@tempa} - {} - {\global\togglefalse{blx@insert}}% - \blx@leavevmode - \begingroup} - -\def\blx@endunit{% - \endgroup - \global\toggletrue{blx@insert}% - \global\toggletrue{blx@lastins}} - -\def\blx@nounit{% - \global\togglefalse{blx@lastins}} - -\def\blx@endnounit{% - \endgroup\blx@nounit} - -\protected\def\blx@imc@newblock{% - \global\toggletrue{blx@block}}% - -\protected\def\blx@imc@newunit{% - \iftoggle{blx@keepunit} - {} - {\global\let\blx@unitpunct\newunitpunct - \global\toggletrue{blx@unit}}} - -\protected\def\blx@imc@setunit{% - \@ifstar\blx@setunit@i\blx@setunit} - -\long\def\blx@setunit#1{% - \iftoggle{blx@keepunit} - {} - {\long\gdef\blx@unitpunct{#1}% - \global\toggletrue{blx@unit}}} - -\def\blx@setunit@i{% - \iftoggle{blx@lastins} - {\blx@setunit} - {\@gobble}} - -\protected\def\blx@imc@printunit{% - \@ifstar\blx@printunit@i\blx@printunit} - -\def\blx@printunit#1{% - \long\gdef\blx@unitpunct{#1\global\togglefalse{blx@keepunit}}% - \global\toggletrue{blx@keepunit}% - \global\toggletrue{blx@unit}} - -\def\blx@printunit@i{% - \iftoggle{blx@lastins} - {\blx@printunit} - {\@gobble}} - -\protected\def\blx@imc@finentry{% - \unspace\finentrypunct - \blx@postpunct - \blx@initunit} - -\protected\def\blx@finentry@usedrv{% - \blx@setunit\relax} - -\protected\def\blx@finentry@inset{% - \blx@setunit\entrysetpunct - \global\toggletrue{blx@block}} - -\blx@regimcs{% - \ifdriver \thefield \strfield \csfield \usefield \thelist \strlist \thename \strname - \clearfield \clearlist \clearname \restorefield \restorelist \restorename - \ifcategory \ifentrycategory \ifkeyword \ifentrykeyword - \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 \iffirstcitekey \iflastcitekey - \ifnameequalcs \ifnameequals \ifnamesequal \ifnameundef \ifnamexref - \iffirstonpage \ifsamepage \savefield \savefieldcs \savelist - \savelistcs \savename \savenamecs \usedriver - \ifinteger \ifnumeral \ifnumerals \ifpages - \iffieldint \iffieldnum \iffieldnums \iffieldpages - \mkpageprefix \mkpagetotal - \newblock \newunit \setunit \printunit \finentry} - -\appto\blx@blxinit{% - \def\ifnatbibmode{\iftoggle{blx@natbib}}% - \def\ifcitation{\iftoggle{blx@citation}}% - \def\ifbibliography{\iftoggle{blx@bibliography}}% - \def\ifciteindex{\iftoggle{blx@citeindex}}% - \def\ifbibindex{\iftoggle{blx@bibindex}}% - \def\iffootnote{\iftoggle{blx@footnote}}% - \def\ifuseprefix{\iftoggle{blx@useprefix}}% - \def\ifterseinits{\iftoggle{blx@terseinits}}% - \def\iffirstinits{\iftoggle{blx@giveninits}}% legacy name for \ifgiveninits - \def\ifgiveninits{\iftoggle{blx@giveninits}}% - \def\ifsingletitle{\iftoggle{abx@bool@singletitle}}% - \def\ifandothers#1{\iftoggle{abx@bool@more#1}}% - \protected\def\pno{\bibstring{page}}% - \protected\def\ppno{\bibstring{pages}}% - \let\nopp\relax - \protected\def\psq{\sqspace\bibstring{sequens}}% - \protected\def\psqq{\sqspace\bibstring{sequentes}}} - -% Make sure that commands which might pop up inside an \edef will be defined -% as something. If they are taken \AtBeginDocument then we assume that all will -% be well. If not, then provide a definition which will give an error outside -% of a citation context. -\AtBeginDocument{% - \protected\def\do#1{% - \ifdefined#1% - \else - \protected\def#1{\ERROR}% - \fi - }% - \docsvlist{\pno,\ppno,\nopp,\psq,\psqq}% -} - -%% Global formatting hooks - -% capitalization - -% {<text>} -\newrobustcmd{\MakeCapital}[1]{% - \begingroup - \blx@mkcp@init - \protected@edef\blx@tempa{#1}% - \expandafter\blx@mkcp@parse\blx@tempa\@empty\blx@mkcp@end} - -\def\blx@mkcp@init{% - \def\blx@mkcp@iec{\noexpand\blx@mkcp@iec\noexpand}% - \def\blx@mkcp@bbl{\noexpand\blx@mkcp@bbl\noexpand}% - \def\blx@mkcp@sgl{\noexpand\blx@mkcp@sgl\noexpand}% - \def\blx@mkcp@dbl{\noexpand\blx@mkcp@dbl\noexpand}% - \def\do##1{\def##1{\blx@mkcp@sgl##1}}\abx@dosingleaccents - \def\do##1{\def##1{\blx@mkcp@dbl##1}}\abx@dodoubleaccents - \def\IeC##1{\blx@mkcp@iec\IeC{##1}}% - \def\@tabacckludge##1{% - \expandafter\blx@mkcp@sgl\csname\string##1\endcsname}} - -\begingroup -\catcode`\"=\active -\gappto\blx@mkcp@init{% - \ifnum\catcode`\"=\active - \def"#1{\blx@mkcp@bbl"\noexpand#1}% - \fi} -\endgroup - -\def\blx@mkcp@parse{% - \futurelet\@let@token\blx@mkcp@eval} - -\long\def\blx@mkcp@eval{% - \ifx\@let@token\blx@mkcp@iec - \expandafter\blx@mkcp@getiec - \fi - \ifx\@let@token\blx@mkcp@bbl - \expandafter\blx@mkcp@gettwo - \fi - \ifx\@let@token\blx@mkcp@sgl - \expandafter\blx@mkcp@gettwo - \fi - \ifx\@let@token\blx@mkcp@dbl - \expandafter\blx@mkcp@getthree - \fi - \blx@mkcp@case} - -\def\blx@mkcp@getiec#1\blx@mkcp@case#2#3#4{% - \blx@mkcp@case{#2#3{#4}}} - -\def\blx@mkcp@gettwo#1\blx@mkcp@case#2#3#4{% - \blx@mkcp@case{#2#3#4}} - -\def\blx@mkcp@getthree#1\blx@mkcp@case#2#3#4#5{% - \blx@mkcp@case{#2#3#4#5}} - -\long\def\blx@mkcp@case#1{% - \begingroup - \def\i{I}\def\j{J}% - \def\do##1##2{\let##1##2\do}% - \expandafter\do\@uclclist\relax{\relax\@gobble}% - \uppercase{\protected@edef\blx@tempa{\endgroup\blx@mkcp@end#1}}% - \blx@tempa} - -\protected\long\def\blx@mkcp@end#1\blx@mkcp@end{% - \let\blx@mkcp@iec\noexpand - \let\blx@mkcp@bbl\noexpand - \let\blx@mkcp@sgl\noexpand - \let\blx@mkcp@dbl\noexpand - \protected@edef\blx@tempa{\endgroup#1}% - \blx@tempa} - -\def\abx@dosingleaccents{% - \do\"\do\'\do\`\do\^\do\~\do\=\do\.% - \do\H\do\b\do\c\do\d\do\r\do\u\do\v} -\def\abx@dodoubleaccents{% - \do\t} - -% {<text>} -\newrobustcmd*{\MakeSentenceCase}{% - \@ifstar\blx@mksc@i\blx@mksc@ii} - -\def\blx@mksc@i{% - \ifdef\abx@field@langid - {\xifinlist\abx@field@langid\blx@cmksc@lang - {\blx@mksc@ii} - {\@firstofone}} - {\blx@mksc@ii}} - -\long\def\blx@mksc@ii#1{% - \begingroup - \let\blx@tempa\@empty - \let\blx@tempb\@empty - \blx@mksc@init - \protected@edef\@tempa{#1}% - \expandafter\blx@mksc@parse\@tempa\blx@mksc@end} - -\def\blx@mksc@init{% - \blx@mkcp@init - \def\blx@mkcp@nil{\noexpand\blx@mkcp@nil\noexpand}% - \def\i{\blx@mkcp@nil\i}\def\j{\blx@mkcp@nil\j}% - \def\do##1{% - \ifx##1\relax - \else - \def##1{\blx@mkcp@nil##1}% - \expandafter\do - \fi}% - \expandafter\do\@uclclist\relax} - -\def\blx@mksc@parse{% - \futurelet\@let@token\blx@mksc@eval} - -\def\blx@mksc@eval{% - \ifx\@let@token\blx@mksc@end - \expandafter\blx@mksc@end - \fi - \ifx\@let@token\bgroup - \expandafter\blx@mksc@group - \fi - \ifx\@let@token\@sptoken - \expandafter\blx@mksc@space - \fi - \ifx\@let@token\blx@mkcp@nil - \expandafter\blx@mksc@getone - \fi - \ifx\@let@token\blx@mkcp@iec - \expandafter\blx@mksc@getiec - \fi - \ifx\@let@token\blx@mkcp@bbl - \expandafter\blx@mksc@gettwo - \fi - \ifx\@let@token\blx@mkcp@sgl - \expandafter\blx@mksc@gettwo - \fi - \ifx\@let@token\blx@mkcp@dbl - \expandafter\blx@mksc@getthree - \fi - \if\noexpand\@let@token\relax - \expandafter\blx@mksc@cs - \fi - \blx@mksc@other} - -\def\blx@mksc@end#1\blx@mksc@end{% - \blx@mksc@eject - \let\blx@mkcp@nil\noexpand - \let\blx@mkcp@iec\noexpand - \let\blx@mkcp@bbl\noexpand - \let\blx@mkcp@sgl\noexpand - \let\blx@mkcp@dbl\noexpand - \let\MakeUppercase\relax - \let\MakeLowercase\relax - \protected@edef\blx@tempa{\endgroup\blx@tempa}% - \blx@tempa} - -\long\def\blx@mksc@group#1\blx@mksc@other#2{% - \futurelet\@let@token\blx@mksc@ingroup#2&{#2}% - \blx@mksc@endhead - \blx@mksc@parse} - -\long\def\blx@mksc@ingroup#1{% - \if\noexpand\@let@token\relax - \blx@mksc@locase{{#2}}% - \else - \blx@mksc@nocase{{#2}}% - \fi} - -\def\blx@mksc@space{\def\blx@mksc@space##1\blx@mksc@other} -\csuse{blx@mksc@space} {% - \blx@mksc@anycase{ }% - \blx@mksc@endhead - \blx@mksc@parse} - -\long\def\blx@mksc@cs#1\blx@mksc@other#2{% - \ifcat\noexpand~\noexpand#2% - \blx@mksc@locase{#2}% - \else - \blx@mksc@nocase{#2}% - \fi - \blx@mksc@endhead - \blx@mksc@parse} - -\def\blx@mksc@getiec#1\blx@mksc@other#2#3#4{% - \blx@mksc@other{#2#3{#4}}} - -\def\blx@mksc@getone#1\blx@mksc@other#2#3{% - \blx@mksc@other{#2#3}} - -\def\blx@mksc@gettwo#1\blx@mksc@other#2#3#4{% - \blx@mksc@other{#2#3#4}} - -\def\blx@mksc@getthree#1\blx@mksc@other#2#3#4#5{% - \blx@mksc@other{#2#3#4#5}} - -\long\def\blx@mksc@other#1{% - \blx@mksc@locase{#1}% - \blx@mksc@endhead - \blx@mksc@parse} - -\def\blx@mksc@locase{% - \appto\blx@tempb} - -\def\blx@mksc@nocase{% - \blx@mksc@eject - \appto\blx@tempa} - -\def\blx@mksc@anycase{% - \ifx\blx@tempb\@empty - \expandafter\appto - \expandafter\blx@tempa - \else - \expandafter\appto - \expandafter\blx@tempb - \fi} - -\def\blx@mksc@eject{% - \ifx\blx@tempb\@empty - \else - \eappto\blx@tempa{\noexpand\MakeLowercase{\expandonce\blx@tempb}}% - \let\blx@tempb\@empty - \fi} - -\def\blx@mksc@endhead{% - \ifx\blx@tempb\@empty - \else - \eappto\blx@tempa{\noexpand\MakeCapital{\expandonce\blx@tempb}}% - \let\blx@tempb\@empty - \fi - \let\blx@mksc@endhead\relax} - -% {<language,language,...>} -\newrobustcmd*{\DeclareCaseLangs}{% - \@ifstar - {\blx@defcaselangs} - {\global\let\blx@cmksc@lang\@empty - \blx@defcaselangs}} - -\def\blx@defcaselangs#1{% - \ifblank{#1} - {} - {\forcsvlist{\listgadd\blx@cmksc@lang}{#1}}} - -\DeclareCaseLangs{% - american,british,canadian, - english,USenglish,UKenglish, - australian,newzealand} - -%% Main formatting commands - -% [<entrytype>]{<name>}{<definiton>} -\newrobustcmd*{\DeclareNameFormat}{% - \@ifstar - {\blx@defformat\blx@defnameformat{nfd}*} - {\blx@defformat\blx@defnameformat{nfd}{}}} - -\newrobustcmd*{\DeclareIndexNameFormat}{% - \@ifstar - {\blx@defformat\blx@defnameformat{nid}*} - {\blx@defformat\blx@defnameformat{nid}{}}} - -\newrobustcmd*{\DeclareListFormat}{% - \@ifstar - {\blx@defformat\blx@defplainformat{lfd}*} - {\blx@defformat\blx@defplainformat{lfd}{}}} -\newrobustcmd*{\DeclareIndexListFormat}{% - \@ifstar - {\blx@defformat\blx@defplainformat{lid}*} - {\blx@defformat\blx@defplainformat{lid}{}}} - -\newrobustcmd*{\DeclareFieldFormat}{% - \@ifstar - {\blx@defformat\blx@defplainformat{ffd}*} - {\blx@defformat\blx@defplainformat{ffd}{}}} -\newrobustcmd*{\DeclareIndexFieldFormat}{% - \@ifstar - {\blx@defformat\blx@defplainformat{fid}*} - {\blx@defformat\blx@defplainformat{fid}{}}} - -% {<macro>}{<class>}{<*>} -\def\blx@defformat#1#2#3{% - \@ifnextchar[%] - {\blx@defformat@i{#1}{#2}{#3}} - {\blx@defformat@i{#1}{#2}{#3}[*]}} - -% {<macro>}{<class>}{<*>}[<entrytype>]{<name>} -\def\blx@defformat@i#1#2#3[#4]#5{% - \notblank{#3} - {\blx@resetformat{#2}{#5}} - {}% - \def\blx@defformat@a{#2}% - \def\blx@defformat@b{#4}% - \blx@xsanitizeafter{\def\blx@defformat@c}{#5}% - \afterassignment\blx@defformat@ii - #1} - -\def\blx@defformat@ii{% - \expandafter\forcsvlist - \expandafter\blx@defformat@iii - \expandafter{\blx@defformat@b}} - -\def\blx@defformat@iii#1{% - \cslet{abx@\blx@defformat@a @#1@\blx@defformat@c}\blx@defformat@d} - -\def\blx@defplainformat{% - \long\def\blx@defformat@d##1} - -\def\blx@defnameformat{% - \long\def\blx@defformat@d##1} - -\def\blx@resetformat#1#2{% - \let\blx@saved@do\do - \def\do##1{\blx@resetformat@i{#1}{#2}{##1}}% - \blx@safe@actives - \dolistcsloop{blx@biber@datamodel@entrytypes}% - \blx@rest@actives - \let\do\blx@saved@do} - -\def\blx@resetformat@i#1#2#3{% - \ifcsdef{abx@#1@#3@#2} - {\csundef{abx@#1@#3@#2}} - {}} - -% {<name>}{<name>} -\def\blx@letformat#1#2{% - \blx@safe@actives - \afterassignment\blx@rest@actives - \csletcs{#1}{#2}} - -% [aliastype]{aliasname}[formattype]{formatname} -\def\blx@defalias#1{% - \@ifnextchar[%] - {\blx@defalias@i{#1}} - {\blx@defalias@i{#1}[*]}} -\def\blx@defalias@i#1[#2]#3{% - \@ifnextchar[%] - {\blx@defalias@ii{#1}{#2}{#3}} - {\blx@defalias@ii{#1}{#2}{#3}[*]}} -\def\blx@defalias@ii#1#2#3[#4]#5{% - \blx@safe@actives - \afterassignment\blx@rest@actives - \csedef{abx@#1@#2@#3}{% - \expandonce{\csname abx@#1@#4@#5\endcsname}}} - -% {<macro>}{<id>}{<name>}{<field>} -\def\blx@getformat#1#2#3#4{% - \blx@safe@actives - \afterassignment\blx@rest@actives - \ifcsundef{abx@#2@\blx@imc@thefield{entrytype}@#3} - {\ifcsundef{abx@#2@*@#3} - {\ifcsundef{abx@#2@\blx@imc@thefield{entrytype}@#4} - {\ifcsundef{abx@#2@*@#4} - {\letcs#1{abx@#2@*@default}} - {\letcs#1{abx@#2@*@#4}}} - {\letcs#1{abx@#2@\blx@imc@thefield{entrytype}@#4}}} - {\letcs#1{abx@#2@*@#3}}} - {\letcs#1{abx@#2@\blx@imc@thefield{entrytype}@#3}}} - -% [<entrytype>]{<name>} -\newrobustcmd*{\savefieldformat}[2][*]{\blx@save{abx@ffd@#1@#2}} -\newrobustcmd*{\savelistformat}[2][*]{\blx@save{abx@lfd@#1@#2}} -\newrobustcmd*{\savenameformat}[2][*]{\blx@save{abx@nfd@#1@#2}} - -\newrobustcmd*{\restorefieldformat}[2][*]{\blx@restore{abx@ffd@#1@#2}} -\newrobustcmd*{\restorelistformat}[2][*]{\blx@restore{abx@lfd@#1@#2}} -\newrobustcmd*{\restorenameformat}[2][*]{\blx@restore{abx@nfd@#1@#2}} - -% [<entrytype>]{<name>}{<true>}{<false>} -\newrobustcmd*{\iffieldformatundef}[2][*]{\ifcsundef{abx@ffd@#1@#2}} -\newrobustcmd*{\iflistformatundef}[2][*]{\ifcsundef{abx@lfd@#1@#2}} -\newrobustcmd*{\ifnameformatundef}[2][*]{\ifcsundef{abx@nfd@#1@#2}} - -% [<entrytype>]{<alias>}[<entrytype>]{<name>} -\newrobustcmd*{\DeclareNameAlias}{\blx@defalias{nfd}} -\newrobustcmd*{\DeclareIndexNameAlias}{\blx@defalias{nid}} - -\newrobustcmd*{\DeclareListAlias}{\blx@defalias{lfd}} -\newrobustcmd*{\DeclareIndexListAlias}{\blx@defalias{lid}} - -\newrobustcmd*{\DeclareFieldAlias}{\blx@defalias{ffd}} -\newrobustcmd*{\DeclareIndexFieldAlias}{\blx@defalias{fid}} - -% [<format>]{<text>} -\newrobustcmd{\blx@imc@printtext}[2][]{% - \ifblank{#2} - {\blx@nounit} - {\ifblank{#1} - {\let\blx@theformat\@firstofone} - {\blx@getformat\blx@theformat{ffd}{#1}{}}% - \ifdefvoid\blx@theformat - {\blx@nounit} - {\blx@begunit - \blx@theformat{#2}% - \blx@endunit}}} - -% [<format>]{<field>} -\newrobustcmd*{\blx@imc@printfield}[2][]{% - \blx@imc@iffieldundef{#2} - {\blx@nounit} - {\blx@getformat\blx@theformat{ffd}{#1}{#2}% - \ifdefvoid\blx@theformat - {\blx@nounit} - {\blx@begunit - \edef\currentfield{#2}% - \expandafter\expandafter - \expandafter\blx@theformat - \expandafter\expandafter - \expandafter{\csname abx@field@#2\endcsname}% - \blx@endunit}}} - -% [<format>]{<field>} -\newcommand*{\blx@imc@indexfield}[2][]{% - \blx@imc@iffieldundef{#2} - {} - {\blx@getformat\blx@theformat{fid}{#1}{#2}% - \ifdefvoid\blx@theformat - {} - {\begingroup - \edef\currentfield{#2}% - \letcs\blx@tempa{abx@field@#2}% - \expandafter\blx@theformat\expandafter{\blx@tempa}% - \endgroup}}} - -% [<format>]{<file>} -\newrobustcmd*{\blx@imc@printfile}[2][]{% - \iftoggle{blx@loadfiles} - {\IfFileExists{#2} - {\listxadd\blx@list@req@edit{#2}% - \blx@imc@printtext[#1]{\input{#2}\unspace}} - {\blx@nounit}} - {\blx@nounit}} - -% {<macro>}[<format>][<start>-<stop>] -% => <macro>{<format>}{<start>}{<stop>} -\def\blx@listargs#1{% - \@ifnextchar[%] - {\blx@listargs@i{#1}} - {#1{}{}{}}} - -\def\blx@listargs@i#1[#2]{% - \@ifnextchar[%] - {\blx@listargs@ii{#1}{#2}} - {#1{#2}{}{}}} - -\def\blx@listargs@ii#1#2[#3]{% - \blx@listargs@iii{#1}{#2}#3&} - -\def\blx@listargs@iii#1#2#3-#4&{% - #1{#2}{#3}{#4}} - -% [<format>][<start>-<stop>]{<namelist>} -\protected\def\blx@imc@printnames{% - \blx@listargs\blx@printnames} - -% {<format>}{<start>}{<stop>}{<namelist>} -\def\blx@printnames#1#2#3#4{% - \blx@imc@ifnameundef{#4} - {\blx@nounit} - {\blx@getformat\blx@theformat{nfd}{#1}{#4}% - \ifdefvoid\blx@theformat - {\blx@nounit} - {\blx@begunit - \blx@namesetup{#2}{#3}{#4}% - \expandafter\blx@nameparser\blx@thedata{}&% - \blx@endunit}}} - -\def\blx@namesetup#1#2#3{% - \def\currentname{#3}% - \c@listcount\@ne - \c@listtotal\csname c@#3\endcsname - \blx@namesetup@i{#3}% - \ifblank{#1} - {\c@liststart\@ne} - {\ifnum#1<\@ne - \c@liststart\@ne - \else - \c@liststart#1\relax - \fi}% - \ifblank{#2} - {\c@liststop\c@listtotal - \ifnum\c@liststop>\c@maxnames - \c@liststop\c@minnames - \ifnum\c@uniquelist>\c@liststop - \c@liststop\c@uniquelist - \fi - \fi} - {\ifnum#2>\c@listtotal - \c@liststop\c@listtotal - \else - \ifnum#2<\@ne - \c@liststop\@ne - \else - \c@liststop#2\relax - \fi - \fi}% - \blx@namecodes} - -\def\blx@namesetup@i#1{% - \expandafter\expandafter - \expandafter\blx@namesetup@ii\csname abx@name@#1\endcsname} - -\def\blx@namesetup@ii#1#2{% - \c@uniquelist\z@ - \ifblank{#1} - {} - {\setkeys{blx@opt@namelist}{#1}}% - \def\blx@thedata{#2}} - -% Per-namelist options -\define@key{blx@opt@namelist}{uniquelist}{\c@uniquelist#1\relax} -\define@key{blx@opt@namelist}{useprefix}{\settoggle{blx@useprefix}{#1}} -\define@key{blx@opt@namelist}{sortnamekeyscheme}{\def\blx@refcontext@sortingnamekey{#1}} - -% Per-name options -\define@key{blx@opt@name}{uniquename}{\c@uniquename#1\relax} -\define@key{blx@opt@name}{hash}{\edef\abx@field@hash{\detokenize{#1}}} -\define@key{blx@opt@name}{useprefix}{\settoggle{blx@useprefix}{#1}} -\define@key{blx@opt@name}{sortnamekeyscheme}{\def\blx@refcontext@sortingnamekey{#1}} - -\newrobustcmd*{\bibinitperiod}{\adddot} -\newrobustcmd*{\bibinitdelim}{\addnbspace} -\newrobustcmd*{\bibinithyphendelim}{.\mbox{-}} -\newrobustcmd*{\bibnamedelima}{\addhighpenspace} -\newrobustcmd*{\bibnamedelimb}{\addlowpenspace} -\newrobustcmd*{\bibnamedelimc}{\addhighpenspace} -\newrobustcmd*{\bibnamedelimd}{\addlowpenspace} -\newrobustcmd*{\bibnamedelimi}{\addnbspace} - -% [<format>][<start>-<stop>]{<namelist>} -\protected\def\blx@imc@indexnames{% - \blx@listargs\blx@indexnames} - -% {<format>}{<start>}{<stop>}{<namelist>} -\def\blx@indexnames#1#2#3#4{% - \blx@imc@ifnameundef{#4} - {} - {\blx@getformat\blx@theformat{nid}{#1}{#4}% - \ifdefvoid\blx@theformat - {} - {\begingroup - \blx@namesetup{#2}{#3}{#4}% - \blx@indexnamesetup - \expandafter\blx@nameparser\blx@thedata{}&% - \endgroup}}} - -\def\blx@indexnamesetup{% - \let\bibinitperiod\bibindexinitperiod - \let\bibinitdelim\bibindexinitdelim - \let\bibinithyphendelim\bibindexinithyphendelim - \let\bibnamedelima\bibindexnamedelima - \let\bibnamedelimb\bibindexnamedelimb - \let\bibnamedelimc\bibindexnamedelimc - \let\bibnamedelimd\bibindexnamedelimd - \let\bibnamedelimi\bibindexnamedelimi} - -% {<name1>}{<name2>}{...} -\long\def\blx@nameparser#1{% - \ifblank{#1} - {\blx@namebreak} - {\ifnum\c@listcount<\c@liststart - \else - \blx@nameparser@i#1% - \fi - \advance\c@listcount\@ne - \ifnum\c@listcount>\c@liststop - \expandafter\blx@namebreak - \fi - \blx@nameparser}} - -\long\def\blx@nameparser@i#1{% - \ifblank{#1} - {} - {\setkeys{blx@opt@name}{#1}}% - % reset all the nameparts to empty between names - \def\do##1{% - \cslet{namepart##1}\@empty - \cslet{namepart##1i}\@empty}% - \expandafter\docsvlist\expandafter{\blx@datamodel@constant@nameparts}% - \blx@theformat} - -\long\def\blx@namebreak#1&{} - -% [<format>][<start>-<stop>]{<plainlist>} -\protected\def\blx@imc@printlist{% - \blx@listargs\blx@printlist} - -% {<format>}{<start>}{<stop>}{<plainlist>} -\def\blx@printlist#1#2#3#4{% - \blx@imc@iflistundef{#4} - {\blx@nounit} - {\blx@getformat\blx@theformat{lfd}{#1}{#4}% - \ifdefvoid\blx@theformat - {\blx@nounit} - {\blx@begunit - \blx@listsetup{#2}{#3}{#4}% - \expandafter\blx@listparser\blx@thedata{}&% - \blx@endunit}}} - -\def\blx@listsetup#1#2#3{% - \def\currentlist{#3}% - \c@listcount\@ne - \expandafter\c@listtotal\csname c@#3\endcsname - \letcs\blx@thedata{abx@list@#3}% - \ifblank{#1} - {\c@liststart\@ne} - {\ifnum#1<\@ne - \c@liststart\@ne - \else - \c@liststart#1\relax - \fi}% - \ifblank{#2} - {\c@liststop\c@listtotal - \ifnum\c@listtotal>\c@maxitems - \c@liststop\c@minitems - \fi} - {\ifnum#2>\c@listtotal - \c@liststop\c@listtotal - \else - \ifnum#2<\@ne - \c@liststop\@ne - \else - \c@liststop#2\relax - \fi - \fi}} - -% [<format>][<start>-<stop>]{<plainlist>} -\protected\def\blx@imc@indexlist{% - \blx@listargs\blx@indexlist} - -% {<format>}{<start>}{<stop>}{<plainlist>} -\def\blx@indexlist#1#2#3#4{% - \blx@imc@iflistundef{#4} - {} - {\blx@getformat\blx@theformat{lid}{#1}{#4}% - \ifdefvoid\blx@theformat - {} - {\begingroup - \blx@listsetup{#2}{#3}{#4}% - \expandafter\blx@listparser\blx@thedata{}&% - \endgroup}}} - -% {<item1>}{<item2>}{...} -\long\def\blx@listparser#1{% - \ifblank{#1} - {\blx@listbreak} - {\ifnum\c@listcount<\c@liststart - \else - \blx@theformat{#1}% - \fi - \advance\c@listcount\@ne - \ifnum\c@listcount>\c@liststop - \expandafter\blx@listbreak - \fi - \blx@listparser}} - -\long\def\blx@listbreak#1&{} - -% <*>{<key>}{<code>} -\protected\def\blx@imc@entrydata{% - \@ifstar - {\blx@xsanitizeafter{\blx@imc@entrydata@i\blx@saveentry}} - {\blx@xsanitizeafter{\blx@imc@entrydata@i{}}}} - -\long\def\blx@imc@entrydata@i#1#2#3{% - \blx@ifdata{#2} - {\begingroup - #1% - \blx@resetdata - \blx@getdata{#2}% - \blx@entrysetcount - \blx@setoptions@type\abx@field@entrytype - \blx@setoptions@entry - \addtocounter{instcount}\@ne - \blx@execute - \blx@beglangbib#3\blx@endlangbib - \endgroup} - {}} - -\protected\def\blx@imc@entryset#1#2{% - \blx@imc@iffieldundef{entrykey} - {} - {\begingroup - \long\def\blx@entryset@precode{#1}% - \long\def\blx@entryset@postcode{#2}% - \let\finentry\blx@finentry@inset - \let\do\blx@entryset - \blx@imc@docsvfield{entryset}% - \endgroup}} - -\def\blx@entryset#1{% - \blx@ifdata{#1} - {\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}}% - \blx@entryset@postcode - \endgroup} - {}% - \let\do\blx@entryset@i} - -\def\blx@entryset@i#1{% - \blx@ifdata{#1} - {\begingroup - \blx@resetdata - \blx@getdata{#1}% - \blx@entrysetcount - \blx@setoptions@type\abx@field@entrytype - \blx@setoptions@entry - \addtocounter{instcount}\@ne - \blx@execute - \blx@beglangbib - \blx@begunit - \blx@entryset@precode - \blx@driver{\blx@imc@thefield{entrytype}} - \blx@entryset@postcode - \blx@endunit - \blx@endlangbib - \endgroup} - {\blx@nounit}} - -\blx@regimcs{% - \printtext \printfield \printlist \printnames \printfile - \indexfield \indexlist \indexnames \entrydata \entryset} - -%% Localization - -% [<wrapper>]{<string>} -\newrobustcmd*{\blx@imc@bibstring}[2][\@firstofone]{% - \blx@bibstring{#1}{\abx@str}{#2}} - -\newrobustcmd*{\blx@imc@biblstring}[2][\@firstofone]{% - \blx@bibstring{#1}{abx@lstr}{#2}} - -\newrobustcmd*{\blx@imc@bibsstring}[2][\@firstofone]{% - \blx@bibstring{#1}{abx@sstr}{#2}} - -\protected\def\blx@bibstring#1#2#3{% - \blx@begunit - \blx@hyphenreset - \let\bibstring\blx@imc@bibxstring - \let\biblstring\blx@imc@bibxlstring - \let\bibsstring\blx@imc@bibxsstring - \lowercase{\edef\blx@tempa{#3}}% - \ifcsundef{#2@\blx@tempa} - {\blx@warn@nostring\blx@tempa - \blx@endnounit} - {\blx@imc@ifcapital - {#1{\MakeCapital{\csuse{#2@\blx@tempa}}}} - {#1{\csuse{#2@\blx@tempa}}}% - \blx@endunit}} - -% [<wrapper>]{<string>} -\newrobustcmd*{\blx@imc@bibcpstring}[2][\@firstofone]{% - \blx@bibcpstring{#1}{\abx@str}{#2}} - -\newrobustcmd*{\blx@imc@bibcplstring}[2][\@firstofone]{% - \blx@bibcpstring{#1}{abx@lstr}{#2}} - -\newrobustcmd*{\blx@imc@bibcpsstring}[2][\@firstofone]{% - \blx@bibcpstring{#1}{abx@sstr}{#2}} - -\protected\def\blx@bibcpstring#1#2#3{% - \blx@begunit - \blx@hyphenreset - \let\bibstring\blx@imc@bibxstring - \let\biblstring\blx@imc@bibxlstring - \let\bibsstring\blx@imc@bibxsstring - \lowercase{\edef\blx@tempa{#3}}% - \ifcsundef{#2@\blx@tempa} - {\blx@warn@nostring\blx@tempa - \blx@endnounit} - {#1{\MakeCapital{\csuse{#2@\blx@tempa}}}% - \blx@endunit}} - -% [<wrapper>]{<string>} -\newrobustcmd*{\blx@imc@biblcstring}[2][\@firstofone]{% - \blx@biblcstring{#1}{\abx@str}{#2}} - -\newrobustcmd*{\blx@imc@biblclstring}[2][\@firstofone]{% - \blx@biblcstring{#1}{abx@lstr}{#2}} - -\newrobustcmd*{\blx@imc@biblcsstring}[2][\@firstofone]{% - \blx@biblcstring{#1}{abx@sstr}{#2}} - -\protected\def\blx@biblcstring#1#2#3{% - \blx@begunit - \blx@hyphenreset - \let\bibstring\blx@imc@bibxstring - \let\biblstring\blx@imc@bibxlstring - \let\bibsstring\blx@imc@bibxsstring - \lowercase{\edef\blx@tempa{#3}}% - \ifcsundef{#2@\blx@tempa} - {\blx@warn@nostring\blx@tempa - \blx@endnounit} - {#1{\MakeLowercase{\csuse{#2@\blx@tempa}}}% - \blx@endunit}} - -% [<wrapper>]{<string>} -\newrobustcmd*{\blx@imc@bibucstring}[2][\@firstofone]{% - \blx@bibucstring{#1}{\abx@str}{#2}} - -\newrobustcmd*{\blx@imc@bibuclstring}[2][\@firstofone]{% - \blx@bibucstring{#1}{abx@lstr}{#2}} - -\newrobustcmd*{\blx@imc@bibucsstring}[2][\@firstofone]{% - \blx@bibucstring{#1}{abx@sstr}{#2}} - -\protected\def\blx@bibucstring#1#2#3{% - \blx@begunit - \blx@hyphenreset - \let\bibstring\blx@imc@bibxstring - \let\biblstring\blx@imc@bibxlstring - \let\bibsstring\blx@imc@bibxsstring - \lowercase{\edef\blx@tempa{#3}}% - \ifcsundef{#2@\blx@tempa} - {\blx@warn@nostring\blx@tempa - \blx@endnounit} - {#1{\MakeUppercase{\csuse{#2@\blx@tempa}}}% - \blx@endunit}} - -% {<string>} -\def\blx@imc@bibxstring#1{% - \blx@bibxstring{\abx@str}{#1}} - -\def\blx@imc@bibxlstring#1{% - \blx@bibxstring{abx@lstr}{#1}} - -\def\blx@imc@bibxsstring#1{% - \blx@bibxstring{abx@sstr}{#1}} - -\def\blx@bibxstring#1#2{% - \ifcsundef{#1@#2} - {\protect\blx@warn@nostring{#2}} - {\csuse{#1@#2}}} - -% {<string>}{<true>}{<false>} -\def\blx@imc@ifbibstring#1{% - \ifcsundef{\abx@str @\detokenize{#1}} - {\@secondoftwo} - {\@firstoftwo}} - -\def\blx@imc@ifbibxstring#1{% - \blx@xsanitizeafter\ifcsundef{\abx@str @#1} - {\@secondoftwo} - {\@firstoftwo}} - -% {<field>}{<true>}{<false>} -\def\blx@imc@iffieldbibstring#1{% - \blx@imc@iffieldundef{#1} - {\@secondoftwo} - {\ifcsundef{\abx@str @\detokenize\expandafter - \expandafter\expandafter{% - \csname abx@field@#1\endcsname}} - {\@secondoftwo} - {\@firstoftwo}}} - -\blx@regimcs{% - \bibstring \biblstring \bibsstring - \bibxstring \bibxlstring \bibxsstring - \bibcpstring \bibcplstring \bibcpsstring - \biblcstring \biblclstring \biblcsstring - \bibucstring \bibuclstring \bibucsstring - \ifbibstring \ifbibxstring \iffieldbibstring} - -\let\blx@hook@uc\relax -\let\blx@hook@lc\relax - -\AtEndPreamble{% - \toggletrue{blx@tempa}% - \toggletrue{blx@tempb}% - \expandafter\patchcmd\csname MakeUppercase \endcsname - {\protected@edef} - {\blx@hook@uc\protected@edef} - {\togglefalse{blx@tempa}} - {}% - \expandafter\patchcmd\csname MakeLowercase \endcsname - {\protected@edef} - {\blx@hook@lc\protected@edef} - {\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{% - \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{% - \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}% - \do{references}% - \do{shorthands}% - \do{editor}% - \do{editors}% - \do{compiler}% - \do{compilers}% - \do{redactor}% - \do{redactors}% - \do{reviser}% - \do{revisers}% - \do{founder}% - \do{founders}% - \do{continuator}% - \do{continuators}% - \do{collaborator}% - \do{collaborators}% - \do{translator}% - \do{translators}% - \do{commentator}% - \do{commentators}% - \do{annotator}% - \do{annotators}% - \do{commentary}% - \do{annotations}% - \do{introduction}% - \do{foreword}% - \do{afterword}% - \do{editortr}% - \do{editorstr}% - \do{editorco}% - \do{editorsco}% - \do{editoran}% - \do{editorsan}% - \do{editorin}% - \do{editorsin}% - \do{editorfo}% - \do{editorsfo}% - \do{editoraf}% - \do{editorsaf}% - \do{editortrco}% - \do{editorstrco}% - \do{editortran}% - \do{editorstran}% - \do{editortrin}% - \do{editorstrin}% - \do{editortrfo}% - \do{editorstrfo}% - \do{editortraf}% - \do{editorstraf}% - \do{editorcoin}% - \do{editorscoin}% - \do{editorcofo}% - \do{editorscofo}% - \do{editorcoaf}% - \do{editorscoaf}% - \do{editoranin}% - \do{editorsanin}% - \do{editoranfo}% - \do{editorsanfo}% - \do{editoranaf}% - \do{editorsanaf}% - \do{editortrcoin}% - \do{editorstrcoin}% - \do{editortrcofo}% - \do{editorstrcofo}% - \do{editortrcoaf}% - \do{editorstrcoaf}% - \do{editortranin}% - \do{editorstranin}% - \do{editortranfo}% - \do{editorstranfo}% - \do{editortranaf}% - \do{editorstranaf}% - \do{translatorco}% - \do{translatorsco}% - \do{translatoran}% - \do{translatorsan}% - \do{translatorin}% - \do{translatorsin}% - \do{translatorfo}% - \do{translatorsfo}% - \do{translatoraf}% - \do{translatorsaf}% - \do{translatorcoin}% - \do{translatorscoin}% - \do{translatorcofo}% - \do{translatorscofo}% - \do{translatorcoaf}% - \do{translatorscoaf}% - \do{translatoranin}% - \do{translatorsanin}% - \do{translatoranfo}% - \do{translatorsanfo}% - \do{translatoranaf}% - \do{translatorsanaf}% - \do{byauthor}% - \do{byeditor}% - \do{bycompiler}% - \do{byredactor}% - \do{byreviser}% - \do{byreviewer}% - \do{byfounder}% - \do{bycontinuator}% - \do{bycollaborator}% - \do{bytranslator}% - \do{bycommentator}% - \do{byannotator}% - \do{withcommentator}% - \do{withannotator}% - \do{withintroduction}% - \do{withforeword}% - \do{withafterword}% - \do{byeditortr}% - \do{byeditorco}% - \do{byeditoran}% - \do{byeditorin}% - \do{byeditorfo}% - \do{byeditoraf}% - \do{byeditortrco}% - \do{byeditortran}% - \do{byeditortrin}% - \do{byeditortrfo}% - \do{byeditortraf}% - \do{byeditorcoin}% - \do{byeditorcofo}% - \do{byeditorcoaf}% - \do{byeditoranin}% - \do{byeditoranfo}% - \do{byeditoranaf}% - \do{byeditortrcoin}% - \do{byeditortrcofo}% - \do{byeditortrcoaf}% - \do{byeditortranin}% - \do{byeditortranfo}% - \do{byeditortranaf}% - \do{bytranslatorco}% - \do{bytranslatoran}% - \do{bytranslatorin}% - \do{bytranslatorfo}% - \do{bytranslatoraf}% - \do{bytranslatorcoin}% - \do{bytranslatorcofo}% - \do{bytranslatorcoaf}% - \do{bytranslatoranin}% - \do{bytranslatoranfo}% - \do{bytranslatoranaf}% - \do{and}% - \do{andothers}% - \do{andmore}% - \do{volume}% - \do{volumes}% - \do{involumes}% - \do{part}% - \do{jourvol}% - \do{jourser}% - \do{newseries}% - \do{oldseries}% - \do{edition}% - \do{reprint}% - \do{reprintof}% - \do{reprintas}% - \do{reprintfrom}% - \do{reviewof}% - \do{translationof}% - \do{translationas}% - \do{translationfrom}% - \do{origpubas}% - \do{origpubin}% - \do{astitle}% - \do{bypublisher}% - \do{page}% - \do{pages}% - \do{column}% - \do{columns}% - \do{line}% - \do{lines}% - \do{nodate}% - \do{verse}% - \do{verses}% - \do{section}% - \do{sections}% - \do{paragraph}% - \do{paragraphs}% - \do{in}% - \do{inseries}% - \do{ofseries}% - \do{book}% - \do{issue}% - \do{number}% - \do{chapter}% - \do{mathesis}% - \do{phdthesis}% - \do{candthesis}% - \do{resreport}% - \do{techreport}% - \do{software}% - \do{datacd}% - \do{audiocd}% - \do{version}% - \do{url}% - \do{urlfrom}% - \do{urlseen}% - \do{file}% - \do{inpreparation}% - \do{submitted}% - \do{inpress}% - \do{prepublished}% - \do{forthcoming}% - \do{library}% - \do{abstract}% - \do{annotation}% - \do{citedas}% - \do{seenote}% - \do{quotedin}% - \do{opcit}% - \do{loccit}% - \do{ibidem}% - \do{idem}% - \do{idemsf}% - \do{idemsm}% - \do{idemsn}% - \do{idempf}% - \do{idempm}% - \do{idempn}% - \do{idempp}% - \do{confer}% - \do{sequens}% - \do{sequentes}% - \do{passim}% - \do{see}% - \do{seealso}% - \do{backrefpage}% - \do{backrefpages}% - \do{thiscite}% - \do{january}% - \do{february}% - \do{march}% - \do{april}% - \do{may}% - \do{june}% - \do{july}% - \do{august}% - \do{september}% - \do{october}% - \do{november}% - \do{december}% - \do{langamerican}% - \do{langbrazilian}% - \do{langcatalan}% - \do{langcroatian}% - \do{langczech}% - \do{langdanish}% - \do{langdutch}% - \do{langenglish}% - \do{langfinnish}% - \do{langfrench}% - \do{langgerman}% - \do{langgreek}% - \do{langitalian}% - \do{langjapanese}% - \do{langlatin}% - \do{langnorwegian}% - \do{langpolish}% - \do{langportuguese}% - \do{langrussian}% - \do{langslovene}% - \do{langspanish}% - \do{langswedish}% - \do{fromamerican}% - \do{frombrazilian}% - \do{fromcatalan}% - \do{fromcroatian}% - \do{fromczech}% - \do{fromdanish}% - \do{fromdutch}% - \do{fromenglish}% - \do{fromfinnish}% - \do{fromfrench}% - \do{fromgerman}% - \do{fromgreek}% - \do{fromitalian}% - \do{fromjapanese}% - \do{fromlatin}% - \do{fromnorwegian}% - \do{frompolish}% - \do{fromportuguese}% - \do{fromrussian}% - \do{fromslovene}% - \do{fromspanish}% - \do{fromswedish}% - \do{countryde}% - \do{countryep}% - \do{countryeu}% - \do{countryfr}% - \do{countryuk}% - \do{countryus}% - \do{patent}% - \do{patentde}% - \do{patenteu}% - \do{patentfr}% - \do{patentuk}% - \do{patentus}% - \do{patreq}% - \do{patreqde}% - \do{patreqeu}% - \do{patreqfr}% - \do{patrequk}% - \do{patrequs}% -} - -\newrobustcmd*{\NewBibliographyString}[1]{% - \forcsvlist\blx@newstring{#1}} - -\def\blx@newstring#1{% - \ifcsundef{KV@blx@lbx@#1} - {\gappto\abx@dostrings{\do{#1}}% - \csgdef{KV@blx@lbx@#1}##1{\blx@defstring{#1}{##1}}} - {}} - -% in *.cbx/bbx/tex: <key> = {<string>}, -% in *.lbx: <key> = {{<longstring>}{<abbrevstring>}}, -\def\do#1{\define@key{blx@lbx}{#1}{\blx@defstring{#1}{##1}}} -\abx@dostrings - -% in *.cbx/bbx/tex: (implicit) -% in *.lbx: inherit = {<language>}, -\define@key{blx@lbx}{inherit}{% - \blx@lbxinput{#1}{}{\blx@err@nolang{#1}}% - \csuse{abx@strings@#1}} - -\def\blx@cfg@defstring#1#2{% - \csdef{abx@lstr@#1}{#2}% - \csdef{abx@sstr@#1}{#2}} - -\def\blx@lbx@defstring#1#2{% - \blx@lbx@defstring@i{#1}#2} -\def\blx@lbx@defstring@i#1#2#3{% - \csdef{abx@lstr@#1}{#2}% - \csdef{abx@sstr@#1}{#3}} - -% {<language>} -\def\blx@lbxcheck#1{% - \ifcsdef{blx@lng@#1} - {\expandafter\expandafter\expandafter\IfFileExists - \expandafter\expandafter\expandafter{% - \csname blx@lng@#1\endcsname.lbx} - {} - {\blx@err@nolang{#1}}} - {\IfFileExists{#1.lbx} - {} - {\blx@err@nolang{#1}}}} - -% {<language>}{<definitions>} -\newrobustcmd*{\DefineBibliographyExtras}[2]{% - \blx@lbxcheck{#1}% - \csgappto{blx@hook@extras@#1}{% - \blx@defbibextras{#1}{#2}}} -\@onlypreamble\DefineBibliographyExtras - -\newrobustcmd*{\UndefineBibliographyExtras}[2]{% - \blx@lbxcheck{#1}% - \csgappto{blx@hook@noextras@#1}{% - \blx@undefbibextras{#1}{#2}}} -\@onlypreamble\UndefineBibliographyExtras - -\def\blx@defbibextras#1{\csgappto{abx@extras@#1}} -\def\blx@undefbibextras#1{\csgappto{abx@noextras@#1}} - -% {<language>}{<language>} -\def\blx@letbibextras#1#2{% - \blx@lbxinput{#2}{}{\blx@err@nolang{#2}}% - \global\csletcs{abx@extras@#1}{abx@extras@#2} - \global\csletcs{abx@noextras@#1}{abx@noextras@#2}}% - -% {<language>}{<strings>} -\newrobustcmd*{\DefineBibliographyStrings}[2]{% - \blx@lbxcheck{#1}% - \csgappto{blx@hook@strings@#1}{% - \begingroup - \let\blx@defstring\blx@cfg@defstring - \blx@defbibstrings{#1}{#2}% - \endgroup}} -\@onlypreamble\DefineBibliographyStrings - -\def\blx@defbibstrings#1#2{% - \def\do##1{\csundef{abx@lstr@##1}\csundef{abx@sstr@##1}}% - \abx@dostrings - \csuse{abx@strings@#1}% - \setkeys{blx@lbx}{#2}% - \let\do\blx@defbibstrings@i - \csxdef{abx@strings@#1}{\abx@dostrings}% - \csgappto{abx@strings@#1}{% - \ifcsdef{\abx@str @bibliography} - {\letcs\bibname{\abx@str @bibliography}} - {\let\bibname\@empty}% - \ifcsdef{\abx@str @references} - {\letcs\refname{\abx@str @references}} - {\let\refname\@empty}% - \ifcsdef{\abx@str @shorthands} - {\letcs\biblistname{\abx@str @shorthands}} - {\let\biblistname\@empty}}} - -\def\blx@defbibstrings@i#1{% - \ifcsdef{abx@lstr@#1} - {\def\expandafter\noexpand\csname abx@lstr@#1\endcsname{% - \csexpandonce{abx@lstr@#1}}} - {\undef\expandafter\noexpand\csname abx@lstr@#1\endcsname}% - \ifcsdef{abx@sstr@#1} - {\def\expandafter\noexpand\csname abx@sstr@#1\endcsname{% - \csexpandonce{abx@sstr@#1}}} - {\undef\expandafter\noexpand\csname abx@sstr@#1\endcsname}} - -% {<language>}{<language>} -\def\blx@letbibstrings#1#2{% - \blx@lbxinput{#2}{}{\blx@err@nolang{#2}}% - \global\csletcs{abx@strings@#1}{abx@strings@#2}}% - -% {<language>}{<exceptions>} -\newrobustcmd*{\DefineHyphenationExceptions}[2]{% - \ifcsundef{l@#1} - {\blx@warn@nohyph{#1}} - {}% - \csgappto{blx@hook@hyph@#1}{\blx@hyphexcept{#1}{#2}}} -\@onlypreamble\DefineHyphenationExceptions - -\def\blx@hyphexcept#1#2{% - \ifcsundef{l@#1} - {\blx@warn@nohyph{#1}} - {\begingroup - \language\csname l@#1\endcsname\relax - \hyphenation{#2}% - \endgroup}} - -% {<language>}{<mapping>} -\newrobustcmd*{\DeclareLanguageMapping}[2]{% - \csgdef{blx@lng@#1}{#2}} -\@onlypreamble\DeclareLanguageMapping - -% {<language>}{<success>}{<failure>} -\def\blx@lbxinput#1{% - \ifcsdef{blx@lng@#1} - {\expandafter\expandafter\expandafter\blx@lbxinput@i - \expandafter\expandafter\expandafter{% - \csname blx@lng@#1\endcsname}{#1}} - {\blx@lbxinput@ii{#1}{#1}{language '#1'}}} - -% {<mapping>}{<language>} -\def\blx@lbxinput@i#1#2{% - \global\csundef{blx@lng@#2}% - \IfFileExists{#1.lbx} - {\blx@lbxinput@ii{#2}{#1}{language '#2' -> '#1'}} - {\blx@warning@noline{% - File '#1.lbx' not found!\MessageBreak - Ignoring mapping '#2' -> '#1'}% - \blx@lbxinput{#2}}} - -% {<language>}{<lbxfile>}{<message>} -\def\blx@lbxinput@ii#1#2#3{% - \begingroup - \setbox\@tempboxa=\hbox\bgroup - \aftergroup\endgroup - \blx@inputonce{#2.lbx}{#3} - {\global\cslet{abx@strings@#1}\@empty - \global\cslet{abx@extras@#1}\@empty - \global\cslet{abx@noextras@#1}\@empty - \blx@maplang{#1}{#1}% - \def\InheritBibliographyStrings{% - \blx@letbibstrings{#1}}% - \def\DeclareBibliographyStrings####1{% - \begingroup - \let\blx@defstring\blx@lbx@defstring - \blx@defbibstrings{#1}{####1}% - \endgroup}% - \def\InheritBibliographyExtras{\blx@letbibextras{#1}}% - \def\DeclareBibliographyExtras{\blx@defbibextras{#1}}% - \def\UndeclareBibliographyExtras{\blx@undefbibextras{#1}}% - \def\DeclareHyphenationExceptions{\blx@hyphexcept{#1}}% - \begingroup - \blx@saneccodes - \makeatletter} - {\endgroup - \csuse{blx@hook@strings@#1}% - \csuse{blx@hook@strings@#2}% - \csuse{blx@hook@extras@#1}% - \csuse{blx@hook@extras@#2}% - \csuse{blx@hook@noextras@#1}% - \csuse{blx@hook@noextras@#2}% - \csuse{blx@hook@hyph@#1}% - \csuse{blx@hook@hyph@#2}} - {\aftergroup\@firstoftwo} - {\aftergroup\@secondoftwo}% - \egroup} - -% {<language>} -\def\blx@langsetup#1{% - \blx@lbxinput{#1} - {\edef\blx@languagename{#1}} - {\blx@warning - {Language '#1' not supported.\MessageBreak - Using fallback language '\blx@languagename'}% - \blx@lbxinput{\blx@languagename} - {\blx@maplang{#1}{\blx@languagename}} - {\blx@err@nolang{\blx@languagename}}}} - -% auxiliary macros - -% {<field base name>} - -\newrobustcmd*{\mkbibrangeshort}{% - \mkbibrangefull{short}} - -\newrobustcmd*{\mkbibrangelong}{% - \mkbibrangefull{long}} - -\newrobustcmd*{\mkbibrangeterse}{% - \mkbibrangetrunc{short}} - -\newrobustcmd*{\mkbibrangecomp}{% - \mkbibrangetrunc{long}} - -\newrobustcmd*{\mkbibrangeshortextra}{% - \mkbibrangefullextra{short}} - -\newrobustcmd*{\mkbibrangelongextra}{% - \mkbibrangefullextra{long}} - -\newrobustcmd*{\mkbibrangeterseextra}{% - \mkbibrangetruncextra{short}} - -\newrobustcmd*{\mkbibrangecompextra}{% - \mkbibrangetruncextra{long}} - -% {<short|long>}{<basename>} - -\newrobustcmd*{\mkbibrangefull}[2]{% - \iffieldundef{#2year} - {} - {\printtext[#2date]{% - \csuse{mkbibdate#1}{#2year}{#2month}{#2day}% - \iffieldundef{#2endyear} - {} - {\iffieldequalstr{#2endyear}{} - {\mbox{\bibdatedash}} - {\bibdatedash - \csuse{mkbibdate#1}{#2endyear}{#2endmonth}{#2endday}}}}}} - -\newrobustcmd*{\mkbibrangetrunc}[2]{% - \iffieldundef{#2year} - {} - {\printtext[#2date]{% - \iffieldsequal{#2year}{#2endyear} - {\iffieldsequal{#2month}{#2endmonth} - {\csuse{mkbibdate#1}{}{}{#2day}} - {\csuse{mkbibdate#1}{}{#2month}{#2day}}} - {\csuse{mkbibdate#1}{#2year}{#2month}{#2day}}% - \iffieldundef{#2endyear} - {} - {\iffieldequalstr{#2endyear}{} - {\mbox{\bibdatedash}} - {\bibdatedash - \csuse{mkbibdate#1}{#2endyear}{#2endmonth}{#2endday}}}}}} - -\newrobustcmd*{\mkbibrangefullextra}[2]{% - \iffieldundef{#2year} - {} - {\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[#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}}}}}}} - -\newrobustcmd*{\mkbibrangeyear}[1]{% - \blx@imc@clearfield{#1month}% - \blx@imc@clearfield{#1day}% - \blx@imc@clearfield{#1endmonth}% - \blx@imc@clearfield{#1endday}% - \iffieldsequal{#1year}{#1endyear} - {\blx@imc@clearfield{#1endyear}} - {}% - \mkbibrangefull{short}{#1}} - -\newrobustcmd*{\mkbibrangeyearextra}[1]{% - \blx@imc@clearfield{#1month}% - \blx@imc@clearfield{#1day}% - \blx@imc@clearfield{#1endmonth}% - \blx@imc@clearfield{#1endday}% - \iffieldsequal{#1year}{#1endyear} - {\blx@imc@clearfield{#1endyear}} - {}% - \mkbibrangefullextra{short}{#1}} - -\expandafter\newrobustcmd -\expandafter*\csname mkbibrangeiso8601\endcsname[1]{% - \iffieldundef{#1year} - {} - {\printtext[#1date]{% - \blx@isodate{#1year}{#1month}{#1day}% - \iffieldundef{#1endyear} - {} - {\addslash\blx@isodate{#1endyear}{#1endmonth}{#1endday}}}}} - -\expandafter\newrobustcmd -\expandafter*\csname mkbibrangeiso8601extra\endcsname[1]{% - \iffieldundef{#1year} - {} - {\printtext[#1date]{% - \blx@isodate[extrayear]{#1year}{#1month}{#1day}% - \iffieldundef{#1endyear} - {} - {\addslash\blx@isodate{#1endyear}{#1endmonth}{#1endday}}}}} - -\newrobustcmd*{\blx@isodate}[4][]{% - \thefield{#2}\ifblank{#1}{}{\printfield{#1}}% - \iffieldundef{#3}{}{\mbox{-}\thefield{#3}}% - \iffieldundef{#4}{}{\mbox{-}\thefield{#4}}} - -\newrobustcmd*{\mkbibdatelong}[3]{} -\newrobustcmd*{\mkbibdateshort}[3]{} -\newrobustcmd*{\bibrangedash}{\textendash} -\newrobustcmd*{\bibrangessep}{,\space} -\newrobustcmd*{\bibdatedash}{\bibrangedash} -\newrobustcmd*{\finalandcomma}{} -\newrobustcmd*{\finalandsemicolon}{} -\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}% - \or\abx@bibmonth{january}% - \or\abx@bibmonth{february}% - \or\abx@bibmonth{march}% - \or\abx@bibmonth{april}% - \or\abx@bibmonth{may}% - \or\abx@bibmonth{june}% - \or\abx@bibmonth{july}% - \or\abx@bibmonth{august}% - \or\abx@bibmonth{september}% - \or\abx@bibmonth{october}% - \or\abx@bibmonth{november}% - \or\abx@bibmonth{december}% - \else - \blx@warning@entry{Month out of range}#1% - \fi} - -\protected\def\blx@imc@printdate{} -\protected\def\blx@imc@printdateextra{} -\protected\def\blx@imc@printdatelabel{} -\protected\def\blx@imc@printdateextralabel{} -\protected\def\blx@imc@printurldate{} -\protected\def\blx@imc@printeventdate{} -\protected\def\blx@imc@printorigdate{} - -\let\blx@imc@mkdatezeros\@firstofone -\protected\def\blx@imc@stripzeros#1{% - \begingroup - \setbox\@tempboxa=\hbox\bgroup - \aftergroup\endgroup - \abx@hook@xsanitize - \if0#1\relax - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi - {\@tempcnta#1\relax - \expandafter\egroup - \number\@tempcnta - \@tempcnta#1\relax} - {\egroup#1}} - -\blx@regimcs{% - \printdate \printdateextra \printdatelabel \printdateextralabel - \printurldate \printeventdate \printorigdate \stripzeros \mkdatezeros} - -% {<language>}{<strings>} -\def\blx@maplang#1#2{% - \csxappto{extras#1}{% - \noexpand\blx@resetpunct - \expandafter\noexpand\csname abx@extras@#2\endcsname - \expandafter\noexpand\csname abx@strings@#2\endcsname}% - \csxappto{noextras#1}{% - \noexpand\blx@resetpunct - \expandafter\noexpand\csname abx@noextras@#2\endcsname}} - -%% babel/polyglossia interface -\def\blx@beglang{\blx@clearlang\begingroup} -\def\blx@endlang{\endgroup} -\let\blx@beglangbib\blx@beglang -\let\blx@endlangbib\blx@endlang -\let\blx@beglangcite\blx@beglang -\let\blx@endlangcite\blx@endlang -\let\blx@hook@endlang\@empty -\let\blx@hook@initlang\@empty -\let\blx@imc@mainlang\@empty -\def\blx@hyphenreset{% - \ifcsundef{l@\blx@languagename} - {} - {\language\csname l@\blx@languagename\endcsname\relax}% - \ifcsundef{\blx@languagename hyphenmins} - {\blx@sethyphenmins\tw@\thr@@} - {\expandafter\expandafter\expandafter\blx@sethyphenmins - \csname\blx@languagename hyphenmins\endcsname}} -\def\blx@sethyphenmins#1#2{% - \lefthyphenmin#1\relax - \righthyphenmin#2\relax} - -\begingroup -\@makeother\# -\gdef\blx@mkautolangbabel{% - \ifundef\bbl@main@language - {\blx@error - {No default babel language defined} - {You must define a default language for babel}} - {}% - \pretocmd\select@language{\blx@langsetup{#1}} - {\ifdef\blx@thelangenv - {\def\blx@beglang{% - \blx@clearlang - \begingroup - \ifdef\abx@field@langid - {\ifcsundef{l@\abx@field@langid} - {\blx@warn@nohyph{\abx@field@langid}} - {\blx@hook@initlang - \def\blx@endlang{% - \blx@hook@endlang - \csname end\blx@thelangenv\endcsname - \endgroup}% - \iftoggle{blx@autolangbib} - {\let\blx@endlangbib\blx@endlang} - {}% - \iftoggle{blx@autolangcite} - {\let\blx@endlangcite\blx@endlang} - {}% - \csname\blx@thelangenv\expandafter\endcsname - \expandafter{\abx@field@langid}}} - {}}} - {}% - \def\blx@langstrings{}% - \def\blx@imc@mainlang{\select@language{\bbl@main@language}}% - \blx@langsetup\bbl@main@language} - {\blx@err@patch{'babel' package}% - \blx@mknoautolang}} - -\gdef\blx@mkautolangpoly{% - \ifundef\bbl@main@language - {\blx@error - {No default polyglossia language defined} - {You must define a default language for polyglossia}} - {}% - \catcode`\_=11% polyglossia uses "_" as a letter - \pretocmd\select@language{\blx@langsetup{#1}} - {\ifdef\blx@thelangenv - {\def\blx@beglang{% - \blx@clearlang - \begingroup - \ifdef\abx@field@langid - {\ifcsundef{l@\abx@field@langid} - {\blx@warn@nohyph{\abx@field@langid}} - {\blx@hook@initlang - \def\blx@endlang{% - \blx@hook@endlang - % Polyglossia language envs are \<lang>[] - \ifcsstring{blx@thelangenv}{langname} - {\csname end\abx@field@langid\endcsname} - {\csname end\blx@thelangenv\endcsname}% - \endgroup}% - \iftoggle{blx@autolangbib} - {\let\blx@endlangbib\blx@endlang} - {}% - \iftoggle{blx@autolangcite} - {\let\blx@endlangcite\blx@endlang} - {}% - \ifcsstring{blx@thelangenv}{langname} - {\ifdef\abx@field@langidopts - {\csname\abx@field@langid\expandafter\endcsname\expandafter[\abx@field@langidopts]} - {\csname\abx@field@langid\endcsname}} - {\csname\blx@thelangenv\expandafter\endcsname\expandafter{\abx@field@langid}}% - % These lines are equal to \blx@maplang - \blx@resetpunct - \csuse{abx@extras@\abx@field@langid}% - \csuse{abx@strings@\abx@field@langid}}} - {}}} - {}% - % polyglossia needs this - it doesn't get the - % strings automatically set for some reason - \def\blx@langstrings{% - \csuse{abx@extras@\languagename}% - \csuse{abx@strings@\languagename}}% - \def\blx@imc@mainlang{% - \select@language{\bbl@main@language}% - % These lines are equal to \blx@maplang - \blx@resetpunct - \csuse{abx@extras@\bbl@main@language}% - \csuse{abx@strings@\bbl@main@language}}% - \blx@langsetup\bbl@main@language} - {\blx@err@patch{'polyglossia' package}% - \blx@mknoautolang}% - \catcode`\_=8} -\endgroup - -\def\blx@mknoautolang{% - \blx@lbxinput{\blx@languagename} - {} - {\blx@err@nolang{\blx@languagename}}} - -\blx@regimcs{\mainlang} - -\newrobustcmd*{\DeclareRedundantLanguages}[2]{% - \begingroup - \ifblank{#2} - {\def\do##1{% - \global\csundef{blx@rlm@##1}% - \global\csundef{blx@rlm@lang##1}}} - {\def\do##1{% - \csxdef{blx@rlm@##1}{#2}% - \csxdef{blx@rlm@lang##1}{#2}}}% - \docsvlist{#1}% - \endgroup} - -\def\blx@clearlang{% - \iftoggle{blx@clearlang} - {\iflistundef{language} - {} - {\ifnumgreater{\value{language}}{1} - {} - {\expandafter\blx@clearlang@i\abx@list@language}}} - {}} - -\def\blx@clearlang@i#1{% - \ifcsdef{blx@rlm@#1} - {\expandafter\expandafter\expandafter\forcsvlist - \expandafter\expandafter\expandafter\blx@clearlang@ii - \expandafter\expandafter\expandafter{% - \csname blx@rlm@#1\endcsname}} - {}} - -\def\blx@clearlang@ii#1{% - \ifdefstring\languagename{#1} - {\clearlist{language}} - {}} - -%% Biber equivalents to bibtex data interface - -\def\abx@dotypes{\dolistcsloop{blx@biber@datamodel@entrytypes}} - -% fields which can be used as labels - we auto-create some macros for these -\def\abx@dolabelfields{% - \dolistcsloop{blx@biber@datamodel@labelfields}} - -\def\abx@donames{% - \dolistcsloop{blx@biber@datamodel@names}% -} - -\def\abx@dolists{% - \dolistcsloop{blx@biber@datamodel@lists}% - \do{pageref}% -} - -\def\abx@dofields{\dolistcsloop{blx@biber@datamodel@fields}} - -% Used to pass regexps to .bcf -\def\regexp#1{\expandafter\zap@space\detokenize{#1} \@empty} - -% Have to do this otherwise the '~'s in the .bcf strings are not expanded -% This is done for the .bcf later but since we have to do all the -% data model things much earlier, have to set this here and reset on finishing -\let\blx@tsave~ -\let~\space -% Data model and supporting macros must be loaded early -\blx@inputonce{blx-dm.def}{biblatex default data model}{}{}{}{} -\let~\blx@tsave - -% We need to now load any style data model -% Order of precedence is: -% <datamodel option>.dbx -% <style option>.dbx -% <citestyle option>.dbx and <bibstyle option>.dbx -% This has to be done before the real options processing so we need to -% pick out just these four options to look at. You can't do this with keyval, -% you have to use kvoptions. So, pick out these four, pass through all -% others and delete datamodel option as we don't care about it when we come -% to really set options below -\SetupKeyvalOptions{ - family=blx@opt@eldt, - prefix=blx@opt@eldt@} -\DeclareStringOption{datamodel} -\DeclareStringOption{style} -\DeclareStringOption{citestyle} -\DeclareStringOption{bibstyle} -\DeclareDefaultOption{} -\ProcessLocalKeyvalOptions{blx@opt@eldt} -\ifx\blx@opt@eldt@datamodel\@empty - \ifx\blx@opt@eldt@style\@empty - \ifx\blx@opt@eldt@citestyle\@empty - \else - \blx@inputonce{\blx@opt@eldt@citestyle.dbx}{biblatex citestyle data model}{}{}{}{} - \fi - \ifx\blx@opt@eldt@bibstyle\@empty - \else - \blx@inputonce{\blx@opt@eldt@bibstyle.dbx}{biblatex bibstyle data model}{}{}{}{} - \fi - \else - \blx@inputonce{\blx@opt@eldt@style.dbx}{biblatex style data model}{}{}{}{} - \fi -\else - \blx@inputonce{\blx@opt@eldt@datamodel.dbx}{biblatex style data model}{}{}{}{} -\fi -\DisableKeyvalOption[action=undef,local]{blx@opt@eldt}{datamodel} - -% Override with user-defined data model if there is one -\blx@inputonce{biblatex-dm.cfg}{biblatex custom data model}{}{}{}{} - -% Initialise option datatypes lists -\global\let\blx@bcf@options@scope@global\@empty -\global\let\blx@bcf@options@scope@type\@empty -\global\let\blx@bcf@options@scope@entry\@empty -\global\let\blx@bcf@options@scope@namelist\@empty -\global\let\blx@bcf@options@scope@name\@empty -\global\let\blx@globalopts@datatypes\@empty -\global\let\blx@typeopts@datatypes\@empty -\global\let\blx@entryopts@datatypes\@empty -\global\let\blx@namelistopts@datatypes\@empty -\global\let\blx@nameopts@datatypes\@empty -\def\do#1{% - \global\cslet{blx@globalopts@#1}\@empty - \global\cslet{blx@typeopts@#1}\@empty - \global\cslet{blx@entryopts@#1}\@empty - \global\cslet{blx@namelistopts@#1}\@empty - \global\cslet{blx@nameopts@#1}\@empty} -\expandafter\expandafter\expandafter\docsvlist\expandafter\expandafter\expandafter{\csname blx@datamodel@constant@optiondatatypes\endcsname} - -% Helper for collecting options and datatypes -% {<datatype>}{<scope>}{<name>} -\def\blx@collectopts#1#2#3{% - \ifinlistcs{#1}{#2@datatypes} - {} - {\listcsgadd{#2@datatypes}{#1}}% - \ifinlistcs{#3}{#2@#1} - {} - {\listcsgadd{#2@#1}{#3}}} - -% useprefix namelist/name scope -\blx@collectopts{boolean}{blx@namelistopts}{useprefix}% for passing to bcf -\blx@collectopts{boolean}{blx@nameopts}{useprefix}% for passing to the .bcf - -% sortnamekeyscheme namelist/name scope -\blx@collectopts{string}{blx@namelistopts}{sortnamekeyscheme}% for passing to bcf -\blx@collectopts{string}{blx@nameopts}{sortnamekeyscheme}% for passing to the .bcf - -% Misc globalopts -\blx@collectopts{xml}{blx@globalopts}{datamodel}% for passing to the .bcf -\blx@collectopts{string}{blx@globalopts}{controlversion}% for passing to the .bcf - -\newcommand*{\labelalphaothers}{+} -\newcommand*{\sortalphaothers}{\labelalphaothers} -\blx@collectopts{string}{blx@globalopts}{alphaothers}% for passing to the .bcf -\blx@collectopts{string}{blx@typeopts}{alphaothers}% for passing to the .bcf -\blx@collectopts{string}{blx@globalopts}{sortalphaothers}% for passing to the .bcf -\blx@collectopts{string}{blx@typeopts}{sortalphaothers}% for passing to the .bcf - -% The Declare*Option macros are for options which need to be visible -% to biblatex. For options which only biber needs to see, they can be -% passed to the .bcf directly using \blx@collectopts -% [<datatype>]{<key>}[<value>]{<code>} -\newrobustcmd*{\DeclareBibliographyOption}[2][]{% - \ifblank{#1} - {\def\blx@tempa{boolean}} - {\ifcsundef{blx@globalopts@#1} - {\blx@warn@badoptdt{#1}% - \def\blx@tempa{boolean}} - {\def\blx@tempa{#1}}}% - \expandafter\blx@collectopts\expandafter{\blx@tempa}{blx@globalopts}{#2}% - \@ifnextchar[%] - {\blx@defbibopt{#2}} - {\blx@defbibopt{#2}[]}} - -\long\def\blx@defbibopt#1[#2]#3{% - \ifcsundef{KV@blx@opt@ldt@#1} - {\ifcsundef{KV@blx@opt@pre@#1} - {\ifblank{#2} - {\define@key{blx@opt@pre}{#1}{#3}} - {\define@key{blx@opt@pre}{#1}[#2]{#3}}} - {\blx@err@optdef{#1}}} - {\blx@err@optdef{#1}}} - -% [<datatype>]{<key>}[<value>]{<code>} -\newrobustcmd*{\DeclareTypeOption}[2][]{% - \ifblank{#1} - {\def\blx@tempa{boolean}} - {\ifcsundef{blx@typeopts@#1} - {\blx@warn@badoptdt{#1}% - \def\blx@tempa{boolean}} - {\def\blx@tempa{#1}}}% - \expandafter\blx@collectopts\expandafter{\blx@tempa}{blx@typeopts}{#2}% - \@ifnextchar[%] - {\blx@deftypeopt{#2}} - {\blx@deftypeopt{#2}[]}} - -\long\def\blx@deftypeopt#1[#2]#3{% - \ifcsundef{KV@blx@opt@typ@#1} - {\ifblank{#2} - {\define@key{blx@opt@typ}{#1}{#3}} - {\define@key{blx@opt@typ}{#1}[#2]{#3}}} - {\blx@err@optdef{#1}}} - -% [<datatype>]{<key>}[<value>]{<code>} -\newrobustcmd*{\DeclareEntryOption}[2][]{% - \ifblank{#1} - {\def\blx@tempa{boolean}} - {\ifcsundef{blx@entryopts@#1} - {\blx@warn@badoptdt{#1}% - \def\blx@tempa{boolean}} - {\def\blx@tempa{#1}}}% - \expandafter\blx@collectopts\expandafter{\blx@tempa}{blx@entryopts}{#2}% - \@ifnextchar[%] - {\blx@defentryopt{#2}} - {\blx@defentryopt{#2}[]}} - - \long\def\blx@defentryopt#1[#2]#3{% - \ifcsundef{KV@blx@opt@ent@#1} - {\ifblank{#2} - {\define@key{blx@opt@ent}{#1}{#3}} - {\define@key{blx@opt@ent}{#1}[#2]{#3}}} - {\blx@err@optdef{#1}}} - -% These are internal fields which are not part of the data model but -% which need to be dealt with along with data model fields in places -\def\abx@dointernalfields{% - \do{childentrykey}% - \do{clonesourcekey}% - \do{datelabelsource}% - \do{entrykey}% - \do{entryset}% - \do{entrysetcount}% - \do{entrytype}% - \do{extraalpha}% - \do{extratitle}% - \do{extratitleyear}% - \do{extrayear}% - \do{fullhash}% - \do{labelalpha}% - \do{labelnumber}% - \do{labeltitleyear}% - \do{labeldate}% - \do{localnumber}% - \do{namehash}% - \do{prefixnumber}% - \do{sortinit}% - \do{sortinithash}} - -\def\abx@dobooleans{% - \do{singletitle}} - -% Name toggles like \ifauthor etc. need to be dynamically created for all -% name datatypes in the data model and we have to do this here after the -% datamodel is available. Need to be careful about expansions here as these -% go into hooks to be executed later - -% Define name toggles -\def\do#1{\newtoggle{blx@use#1}\toggletrue{blx@use#1}} -\dolistcsloop{blx@biber@datamodel@names} - -% Define name toggle checking macros -\let\blx@nametoggles\@empty -\def\do#1{\gappto\blx@nametoggles{\expandafter\def\csname ifuse#1\endcsname{\iftoggle{blx@use#1}}}} -\dolistcsloop{blx@biber@datamodel@names} -\eappto\blx@blxinit{\expandafter\expandonce\noexpand\blx@nametoggles} - -% Define ifthen interface name toggle checking macros -\let\blx@nametogglesit\@empty -\def\do#1{\gappto\blx@nametogglesit{\expandafter\def\csname ifuse#1\endcsname{\blx@TE{\iftoggle{blx@use#1}}}}} -\dolistcsloop{blx@biber@datamodel@names} -\expandafter\def\expandafter\blx@nametogglesite\expandafter{\expandonce\blx@nametogglesit} -\appto\blx@blxinit{\appto\blx@TE@hook{\blx@nametogglesite}} - -% Define \ifuse<name> options scope for biber -\def\do#1{\blx@collectopts{boolean}{blx@globalopts}{use#1}% - \blx@collectopts{boolean}{blx@typeopts}{use#1}% - \blx@collectopts{boolean}{blx@entryopts}{use#1}} -\dolistcsloop{blx@biber@datamodel@names} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\def\do#1{% - \newcounter{#1}% - \newcounter{saved#1}% - \appto\abx@dobooleans{\do{more#1}}} - -\abx@donames -\abx@dornames -\abx@dolists -%\abx@dorlists -\def\do#1{\newtoggle{abx@bool@#1}} -\abx@dobooleans - -\def\do#1{\expandafter\newlength\expandafter{\csname #1width\endcsname}} -\abx@dolabelfields - -\protected\def\blx@resetdata{% - \let\blx@saved@do\do - \let\do\blx@imc@clearname - \abx@donames - \let\do\blx@imc@clearlist - \abx@dolists - \let\do\blx@imc@clearfield - \abx@dofields - \do{options}\do{labelyear}\do{labelmonth}\do{labelday}\do{datelabelsource}% - \abx@dointernalfields - \def\do##1{\togglefalse{abx@bool@##1}}% - \abx@dobooleans - \let\do\blx@saved@do - \c@citecounter\z@ - \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 - \let\do\blx@savename - \abx@donames - \let\do\blx@savelist - \abx@dolists - \let\do\blx@savefield - \abx@dofields - \do{options}\do{labelyear}\do{labelmonth}\do{labelday}\do{datelabelsource}% - \abx@dointernalfields - \let\do\blx@savebool - \abx@dobooleans - \c@savedcitecounter\c@citecounter - \let\do\blx@saved@do} - -\protected\def\blx@savename#1{% - \csletcs{etb@tgl@abx@bool@moresaved#1}{etb@tgl@abx@bool@more#1}% - \csletcs{abx@name@saved#1}{abx@name@#1}% - \csname c@saved#1\endcsname\csname c@#1\endcsname} - -\protected\def\blx@savelist#1{% - \csletcs{etb@tgl@abx@bool@moresaved#1}{etb@tgl@abx@bool@more#1}% - \csletcs{abx@list@saved#1}{abx@list@#1}% - \csname c@saved#1\endcsname\csname c@#1\endcsname} - -\protected\def\blx@savefield#1{% - \csletcs{abx@field@saved#1}{abx@field@#1}} - -\protected\def\blx@savebool#1{% - \csletcs{abx@bool@saved#1}{abx@bool@#1}} - -% {<code>} -\protected\long\def\blx@bbl@preamble#1{% - \gappto\abx@preamble{#1}} - -% {<message>} -\protected\def\blx@bbl@warn#1{% - \begingroup - \def\item{\MessageBreak-\space}% - \def\break{\MessageBreak\space\space}% - \edef\blx@tempa{% - Biber reported the following issues% - \ifdef\abx@field@entrykey - {\MessageBreak with '\abx@field@entrykey'} - {}% - :#1}% - \blx@warning@noline{\blx@tempa}% - \endgroup} - -% {<field>}{<code>} -\newrobustcmd{\DeclareFieldInputHandler}[2]{% - \ifblank{#2} - {\csundef{blx@fih@#1}} - {\long\csdef{blx@fih@#1}##1{#2}}} -\@onlypreamble\DeclareFieldInputHandler - -% {<list>}{<code>} -\newrobustcmd*{\DeclareListInputHandler}[2]{% - \ifblank{#2} - {\csundef{blx@lih@#1}} - {\csdef{blx@lih@#1}##1{#2}}} -\@onlypreamble\DeclareListInputHandler - -% {<name>}{<code>} -\newrobustcmd*{\DeclareNameInputHandler}[2]{% - \ifblank{#2} - {\csundef{blx@nih@#1}} - {\csdef{blx@nih@#1}##1{#2}}} -\@onlypreamble\DeclareNameInputHandler - -% {<entrykey>}{<refsection>}{<field>}{<sort context>}{<value>} -\long\def\blx@bbl@addentryfield#1#2#3#4#5{% - \csxappto{blx@data@#2@#4@#1}{% - \def\expandafter\noexpand\csname abx@field@#3\endcsname{#5}}} - -% {<rangefield>}{<value>} -\protected\def\blx@bbl@rangedef#1#2{% - \csxappto\blx@bbl@data{% - \def\expandafter\noexpand\csname abx@range@#1\endcsname{#2}}} - -% {<field>}{<value>} -\long\def\blx@bbl@addfield#1#2{% - \csxappto\blx@bbl@data{% - \def\expandafter\noexpand\csname abx@field@#1\endcsname{#2}}} - -\protected\long\def\blx@bbl@fielddef#1#2{% - \def\NewValue{#2}% - \ifcsdef{blx@fih@#1} - {\csname blx@fih@#1\endcsname{#2}% - \ifdefvoid\NewValue} - {\@secondoftwo} - {} - {\blx@bbl@addfield{#1}{\expandonce\NewValue}}} - -\protected\long\def\blx@bbl@fieldedef#1#2{% - \edef\NewValue{#2}% - \ifcsdef{blx@fih@#1} - {\csname blx@fih@#1\expandafter - \endcsname\expandafter{\NewValue}% - \ifdefvoid\NewValue} - {\@secondoftwo} - {} - {\blx@bbl@addfield{#1}{\NewValue}}} - -\protected\long\def\blx@bbl@stringdef#1#2{% - \begingroup - \edef\blx@tempa{\endgroup - \blx@bbl@fielddef{#1}{\detokenize{#2}}}% - \blx@tempa} - -% Verbatim lists -% {<list>}{<listcount>} -\protected\def\blx@bbl@verbldef#1#2{% - \begingroup - \let\lverb\blx@bbl@verbladd - \def\blx@tempa{#1}% - \def\blx@tempb{#2}% - \let\blx@tempc\@empty - \let\NewValue\@empty} - -\protected\def\blx@bbl@verblend{% - \expandafter\blx@bbl@listdef\expandafter{\expandafter\blx@tempa\expandafter}\expandafter{\expandafter\blx@tempb\expandafter}\expandafter{\blx@tempc}% - \endgroup} - -\protected\def\blx@bbl@verbladd{% - \begingroup - \let\do\@makeother - \dospecials - \catcode\endlinechar=12\relax - \blx@bbl@verbladd@i} - -% Verbatim fields -% {<field>} -\protected\def\blx@bbl@verbdef#1{% - \begingroup - \let\verb\blx@bbl@verbadd - \def\blx@tempa{#1}% - \let\NewValue\@empty} - -\protected\def\blx@bbl@verbend{% - \ifcsdef{blx@fih@\blx@tempa} - {\csname blx@fih@\blx@tempa\expandafter - \endcsname\expandafter{\NewValue}% - \ifdefvoid\NewValue} - {\@secondoftwo} - {} - {\blx@bbl@addfield{\blx@tempa}{\NewValue}}% - \endgroup} - -\protected\def\blx@bbl@verbadd{% - \begingroup - \let\do\@makeother - \dospecials - \catcode\endlinechar=12\relax - \blx@bbl@verbadd@i} - -\begingroup -\catcode`\<=12 -\catcode`\>=12 -\uccode`\<=`\ % -\uccode`\>=\endlinechar -\uppercase{\gdef\blx@bbl@verbadd@i<#1>}{% - \endgroup - \edef\NewValue{\NewValue\detokenize{#1}}} -\uppercase{\gdef\blx@bbl@verbladd@i<#1>}{% - \endgroup - \eappto\blx@tempc{{\detokenize{#1}}}}% -\endgroup - -% {<counter>}{<value>} -\protected\long\def\blx@bbl@cntdef#1#2{% - \csxappto\blx@bbl@data{% - \csname c@#1\endcsname#2\relax}} - -% {<boolean>} -\protected\def\blx@bbl@booltrue#1{% - \csgappto\blx@bbl@data{% - \toggletrue{abx@bool@#1}}} - -\protected\def\blx@bbl@boolfalse#1{% - \csgappto\blx@bbl@data{% - \togglefalse{abx@bool@#1}}} - -% {<list>}{<itemcount>}{<value>} -\protected\def\blx@bbl@listdef#1#2#3{% - \def\NewCount{#2}% - \def\NewValue{#3}% - \ifcsdef{blx@lih@#1} - {\csname blx@lih@#1\endcsname{#3}% - \ifdefvoid\NewValue} - {\@secondoftwo} - {} - {\csxappto\blx@bbl@data{% - \csname c@#1\endcsname\NewCount\relax - \def\expandafter\noexpand\csname abx@list@#1\endcsname - {\expandonce\NewValue}}}} - -% {<name>}{<itemcount>}{<nameoptions>}{<value>} -\protected\def\blx@bbl@namedef#1#2#3#4{% - \def\NewCount{#2}% - \def\NewOption{#3}% - \def\NewValue{#4}% - \ifcsdef{blx@nih@#1} - {\csname blx@nih@#1\endcsname{#4}% - \ifdefvoid\NewValue} - {\@secondoftwo} - {} - {\csxappto\blx@bbl@data{% - \csname c@#1\endcsname\NewCount\relax - \def\expandafter\noexpand\csname abx@name@#1\endcsname - {{\expandonce\NewOption}{\expandonce\NewValue}}}}} - -% blx@setp@<rs>@<sp> = map of set parent <sp> in a refsection <rs> to csv -% of set children -% blx@seti@<rs>@<sc> = position of set child <sc> in entry set in -% refsection <rs> -% blx@setc@<rs>@<sc> = map of set child <sc> in refsection <rs> to set parent - -% {<entrykey>,...} -\protected\def\blx@bbl@set#1{% - \blx@bbl@fieldedef{entryset}{\detokenize{#1}}% - \csxdef{blx@setp@\the\c@refsection @\abx@field@entrykey}{\detokenize{#1}}% - \begingroup - \blx@tempcnta\z@ - \expandafter\forcsvlist - \expandafter\blx@bbl@set@i - \expandafter{\detokenize{#1}}% - \endgroup} - -\def\blx@bbl@set@i#1{% - \advance\blx@tempcnta\@ne - \csxdef{blx@seti@\the\c@refsection @#1}{\the\blx@tempcnta}} - -% {<entrykey>} -\protected\def\blx@bbl@inset#1{% - \toggletrue{blx@setonly}% - \blx@bbl@fieldedef{entryset}{\detokenize{#1}}% - \csxdef{blx@setc@\the\c@refsection @\abx@field@entrykey}{\detokenize{#1}}} - -% {<keyword>,...} -\protected\def\blx@bbl@keyw#1{% - \iftoggle{blx@skipbib} - {} - {\forcsvlist{\blx@addkeyword{\abx@field@entrykey}}{#1}% - \blx@bbl@fielddef{keywords}{#1}}} - -\def\blx@addkeyword#1#2{% - \listcsxadd{blx@keyw@\the\c@refsection @\detokenize{#2}}{#1}} - -% {<options>} -\protected\long\def\blx@bbl@options#1{% - \begingroup - \let\blx@tempa\@empty - \forcsvlist\blx@bbl@options@i{#1}% - \edef\blx@tempa{% - \endgroup - \ifx\blx@tempa\@empty - \else - \def\noexpand\abx@field@options{\expandonce\blx@tempa}% - \fi}% - \blx@tempa} - -\long\def\blx@bbl@options@i#1{\blx@bbl@options@ii#1==&} - -\long\def\blx@bbl@options@ii#1=#2=#3&{% - \ifcsundef{KV@blx@opt@ent@#1} - {\blx@warning@noline{% - Ignoring undefined option '#1'\MessageBreak - at entry '\abx@field@entrykey'}} - {\eappto\blx@tempa{% - \ifx\blx@tempa\@empty\else,\fi - \unexpanded{#1}\ifblank{#2}{}{=\unexpanded{#2}}}}} - -\def\blx@ifdata#1{% - \ifcsdef{blx@data@\the\c@refsection @\blx@refcontext@context @#1}} -\let\blx@imc@ifentryinbib\blx@ifdata - -\def\blx@getdata#1{% - \csuse{blx@data@\the\c@refsection @\blx@refcontext@context @#1}% - % Here we resolve label* bib fields to their real fields. Doing this here - % dynamically means that we can vary the field chosen depending on the refcontext. - % biber used to resolve these and materialise them in the .bbl but this - % means a static resolution which is independent of the document context. - \def\do##1{% - \ifcsdef{abx@field@##1source} - {\expandafter\def\csname abx@field@##1\endcsname{\csuse{abx@field@\csuse{abx@field@##1source}}}}% - {}}% - \dolistloop{\abx@rfields}% - % Just in case we ever have non-name lists to instantiate - % \def\do##1{% - % \ifcsdef{abx@field@##1source} - % {\csletcs{c@##1}{c@\csuse{abx@field@##1source}}% - % \csletcs{abx@list@##1}{abx@list@\csuse{abx@field@##1source}}} - % {}}% - % \dolistloop{\abx@rlists}% - \def\do##1{% - \ifcsdef{abx@field@##1source} - {\csletcs{c@##1}{c@\csuse{abx@field@##1source}}% - \csletcs{abx@name@##1}{abx@name@\csuse{abx@field@##1source}}} - {}}% - \dolistloop{\abx@rnames}% - \blx@setcitecounter} - -\def\blx@getdata@cite#1{% - \ifcsdef{blx@setc@\the\c@refsection @#1} - {\expandafter\expandafter\expandafter\blx@getdata - \expandafter\expandafter\expandafter{% - \csname blx@setc@\the\c@refsection @#1\endcsname}% - \blx@ifdata{#1} - {\def\abx@field@childentrykey{#1}% - \begingroup - \blx@getdata{#1}% - \edef\blx@tempa{\endgroup - \def\noexpand\abx@field@childentrytype{\abx@field@entrytype}}% - \blx@tempa} - {}} - {\blx@getdata{#1}}% - \ifcsdef{blx@seti@\the\c@refsection @#1} - {\letcs\abx@field@entrysetcount{blx@seti@\the\c@refsection @#1}} - {}} - -\def\blx@execute{% - \blx@imc@thefield{execute}} - -\def\blx@setoptions@entry{% - \blx@imc@iffieldundef{options} - {} - {\begingroup - \edef\blx@tempa{\endgroup - \noexpand\setkeys{blx@opt@ent}{\abx@field@options}}% - \blx@tempa - \blx@checkoptions@entry}} - -\def\blx@setoptions@type#1{% - \ifcsdef{blx@opts@type@#1} - {\begingroup - \edef\blx@tempa{\endgroup - \noexpand\setkeys{blx@opt@typ}{\csuse{blx@opts@type@#1}}}% - \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} - {\letcs\abx@field@entrysetcount{% - blx@seti@\the\c@refsection @\abx@field@entrykey}} - {}} - {}} - -% {<section>} -\def\blx@bbl@refsection#1{% - \begingroup - \c@refsection#1\relax} - -\def\blx@bbl@endrefsection{% - \iftoggle{blx@addset} - {\blx@addset - \global\togglefalse{blx@addset}} - {}% - \endgroup} - -% {<entrykey>} -\protected\def\blx@bbl@missing#1{% - \listcsxadd{blx@miss@\the\c@refsection}{\detokenize{#1}}% - \blx@warning@noline{% - The following entry could not be found\MessageBreak - in the database% - \ifnumgreater\c@refsection\z@ - { (refsection \the\c@refsection)} - {}:\MessageBreak - \detokenize{#1}\MessageBreak - Please verify the spelling and rerun\MessageBreak - LaTeX afterwards}} - -% We create an alias resolving macro and also a list of aliases -% which we need to add to the .bcf. We need to resolve the aliases -% for internal use but we always want the aliases themselves in the .bcf -% so that biber can correctly use and resolve them too. -\protected\def\blx@bbl@keyalias#1#2{% - \csgdef{blx@keyalias@\the\c@refsection @#1}{\detokenize{#2}}% - \listcsgadd{blx@keyaliases@\the\c@refsection}{#1}} - -% blx@slist@list@<section>@<scheme> - a list of list items in a scheme in a -% section (for tracking bibliography lists, -% obeys skipbiblist) -% blx@slist@entry@<section>@<scheme> - a list of normal entries in a scheme in a -% section (for tracking bibliographies, -% obeys skipbib) -% blx@slist@centry@<section>@<scheme> - a list of normal entries in a scheme in a -% section (for tracking citations, -% obeys skipbib). Same as @entry@ but -% with added set children - -% {<entrykey>}{<entrytype>}{<options>} -\protected\def\blx@bbl@entry#1#2#3{% - \begingroup - \edef\abx@field@entrykey{\detokenize{#1}}% - \blx@setoptions@type{#2}% - \blx@bbl@options{#3}% - \blx@setoptions@entry - \edef\blx@bbl@data{blx@data@\the\c@refsection @\blx@slist@name @\abx@field@entrykey}% - \csuse\blx@bbl@data - \blx@bbl@addfield{entrykey}{\abx@field@entrykey}% - \blx@bbl@addfield{entrytype}{#2}% - \blx@imc@iffieldundef{options} - {} - {\blx@bbl@fieldedef{options}{\expandonce\abx@field@options}}} - -\protected\def\blx@bbl@endentry{% - \csuse\blx@bbl@data - \ifcsundef{blx@pref@\the\c@refsection @\abx@field@entrykey} - {} - {\blx@addpageref{\abx@field@entrykey}}% - \nottoggle{blx@setonly} - {} - {\global\toggletrue{blx@addset}% - \toggletrue{blx@skipbib}% - \toggletrue{blx@skipbiblist}% - \toggletrue{blx@skiplab}}% - \nottoggle{blx@skipbib} - {\expandafter\ifstrequal\expandafter{\blx@slist@type}{entry} - {\listcsxadd{blx@slist@entry@\the\c@refsection @\blx@slist@name}{\abx@field@entrykey}% - \listcsxadd{blx@slist@centry@\the\c@refsection @\blx@slist@name}{\abx@field@entrykey}% - \listcsxadd{blx@type@\the\c@refsection @\abx@field@entrytype}{\abx@field@entrykey}% - \ifdef\abx@field@entrysubtype - {\listcsxadd{blx@subt@\the\c@refsection @\abx@field@entrysubtype}{\abx@field@entrykey}} - {}} - {}}% - {}% - \nottoggle{blx@skipbiblist} - {\expandafter\ifstrequal\expandafter{\blx@slist@type}{list} - {\blx@bbl@labelfields - \listcsxadd{blx@slist@\blx@slist@type @\the\c@refsection @\blx@slist@name}{\abx@field@entrykey}} - {}}% - {}% - \nottoggle{blx@skiplab} - {\iftoggle{blx@labelnumber} - {\blx@bbl@labelnumber} - {}% - \iftoggle{blx@labelalpha} - {\blx@bbl@labelalpha} - {}% - \iftoggle{blx@labeltitle} - {\blx@bbl@labeltitle} - {}% - \iftoggle{blx@labeltitleyear} - {\blx@bbl@labeltitleyear} - {}% - \iftoggle{blx@labeldate} - {\blx@bbl@labeldate} - {}% - \blx@bbl@prefixnumber} - {}% - \blx@bbl@titles - \blx@bbl@hooks - \endgroup} - -% This, at the end of the .bbl, puts any set parent children into the -% current context sort list of citations (a separate list *@centry@* to the -% bibliography *@entry@* which doesn't want the children adding if they weren't -% cited) as this is needed for the subentry citing -% when sortcites is enabled as for sortcites, the current context sorting list -% is used and the parent set of a subentry is not necessarily -% available in the current context sortlist. -\def\blx@addset{% - \begingroup - \letcs\blx@tempa{blx@slist@centry@\the\c@refsection @\blx@refcontext@context}% - \global\cslet{blx@slist@centry@\the\c@refsection @\blx@refcontext@context}\@empty - \forlistloop\blx@addset@i\blx@tempa - \endgroup} - -\def\blx@addset@i#1{% - \listcsgadd{blx@slist@centry@\the\c@refsection @\blx@refcontext@context}{#1}% - \ifcsdef{blx@setp@\the\c@refsection @#1} - {\expandafter\expandafter\expandafter\forcsvlist - \expandafter\expandafter\expandafter\blx@addset@ii - \expandafter\expandafter\expandafter{% - \csname blx@setp@\the\c@refsection @#1\endcsname}} - {}} - -\def\blx@addset@ii#1{% - \listcsgadd{blx@slist@centry@\the\c@refsection @\blx@refcontext@context}{#1}} - -\def\blx@bbl@labelfields{% - \def\do##1{% - \ifcsundef{abx@field@##1} - {} - {\blx@setlabwidth{\csname ##1width\endcsname}{% - \csuse{abx@ffd@*@##1width}{\csname abx@field@##1\endcsname}}}}% - \abx@dolabelfields} - -\def\blx@bbl@labelnumber{% - % Used at endentry, when reading .bbl - % only do this for the global sorting list otherwise we increment - % the labelnumbers for each sortlist - \ifdefempty\abx@field@localnumber - {}% only if omitnumbers=true - {\ifcsundef{abx@ffd@\blx@imc@thefield{entrytype}@labelnumberwidth} - {\letcs{\@lnw@labelnumberwidth}{abx@ffd@*@labelnumberwidth}} - {\letcs{\@lnw@labelnumberwidth}{abx@ffd@\blx@imc@thefield{entrytype}@labelnumberwidth}}% - \ifcsundef{abx@ffd@\blx@imc@thefield{entrytype}@prefixnumber} - {\letcs{\@lnw@prefixnumber}{abx@ffd@*@prefixnumber}} - {\letcs{\@lnw@prefixnumber}{abx@ffd@\blx@imc@thefield{entrytype}@prefixnumber}}% - \ifcsundef{abx@ffd@\blx@imc@thefield{entrytype}@labelnumber} - {\letcs{\@lnw@labelnumber}{abx@ffd@*@labelnumber}} - {\letcs{\@lnw@labelnumber}{abx@ffd@\blx@imc@thefield{entrytype}@labelnumber}}% - \ifundef\abx@field@shorthand - {\iftoggle{blx@defernumbers} - % only if defernumbers=true, we have to define localnumber to - % something to stop labelnumberwidth def complaining on first - % post-backend run since there will be nothing in the .aux yet - % for defernums localnumbers. On the second post-backend run, - % it will have a value correct for generating labelnumberwidth - % We also have to define a dummy value for labelnumber here for - % first post-backend runs otherwise references to labelnumber - % in cite styles like numeric-comp will die. - {\ifundef\abx@field@localnumber - {\numdef\abx@field@localnumber{0}% - \blx@bbl@fielddef{labelnumber}{0}} - {}} - {\csnumgdef{blx@labelnumber@\the\c@refsection @\blx@slist@name}{% - \csuse{blx@labelnumber@\the\c@refsection @\blx@slist@name}+1}% - \edef\abx@field@localnumber{% - \csuse{blx@labelnumber@\the\c@refsection @\blx@slist@name}}% - \blx@bbl@fieldedef{labelnumber}{\abx@field@localnumber}}% - \iftoggle{blx@skipbib} - {} - {\blx@setlabwidth{\labelnumberwidth}{% - \csuse{@lnw@labelnumberwidth}{% - \ifdef\abx@field@prefixnumber - {\csuse{@lnw@prefixnumber}{\abx@field@prefixnumber}} - {}% - \csuse{@lnw@labelnumber}{\abx@field@localnumber}}}}} - {\csgappto\blx@bbl@data{\let\abx@field@labelnumber\abx@field@shorthand}% - \iftoggle{blx@skipbib} - {} - {\blx@setlabwidth{\labelnumberwidth}{% - \csuse{@lnw@labelnumberwidth}{\abx@field@shorthand}}}}}} - -\def\blx@bbl@prefixnumber{% - \ifdef\abx@field@prefixnumber - {\blx@bbl@fieldedef{prefixnumber}{\abx@field@prefixnumber}} - {}} - -\def\blx@bbl@labelalpha{% - \ifundef\abx@field@labelalpha - {} - {\ifundef\abx@field@extraalpha - {} - {\ifnum\abx@field@extraalpha>\c@maxextraalpha - \global\c@maxextraalpha\abx@field@extraalpha\relax - \fi}% - \iftoggle{blx@skipbib} - {} - {\blx@setlabwidth{\labelalphawidth}{% - \csuse{abx@ffd@*@labelalphawidth}{% - \ifdef\abx@field@prefixnumber - {\csuse{abx@ffd@*@prefixnumber}{\abx@field@prefixnumber}} - {}% - \csuse{abx@ffd@*@labelalpha}{\abx@field@labelalpha}% - \ifundef\abx@field@extraalpha - {} - {\csuse{abx@ffd@*@extraalpha}{\abx@field@extraalpha}}}}}}} - -\def\blx@bbl@labeltitle{% - \ifundef\abx@field@extratitle - {} - {\ifnum\abx@field@extratitle>\c@maxextratitle - \global\c@maxextratitle\abx@field@extratitle\relax - \fi}} - -\def\blx@bbl@labeltitleyear{% - \ifundef\abx@field@extratitleyear - {} - {\ifnum\abx@field@extratitleyear>\c@maxextratitleyear - \global\c@maxextratitleyear\abx@field@extratitleyear\relax - \fi}} - -\def\blx@bbl@labeldate{% - \ifundef\abx@field@extrayear - {} - {\ifnum\abx@field@extrayear>\c@maxextrayear - \global\c@maxextrayear\abx@field@extrayear\relax - \fi}} - -\def\blx@bbl@titles{% - \ifundef\abx@field@indextitle - {\csgappto\blx@bbl@data{% - \let\abx@field@indextitle\abx@field@title}} - {}% - \ifundef\abx@field@indexsorttitle - {\csgappto\blx@bbl@data{% - \let\abx@field@indexsorttitle\abx@field@indextitle}} - {}} - -\def\blx@bbl@hooks{% - \ifcsundef{blx@hook@bblitem@*} - {\ifcsundef{blx@hook@bblitem@\abx@field@entrytype} - {} - {\csuse\blx@bbl@data - \csuse{blx@hook@bblitem@\abx@field@entrytype}}} - {\csuse\blx@bbl@data - \csuse{blx@hook@bblitem@*}% - \csuse{blx@hook@bblitem@\abx@field@entrytype}}} - -\newrobustcmd*{\AtDataInput}[1][*]{\csgappto{blx@hook@bblitem@#1}} -\@onlypreamble\AtDataInput - -\def\blx@setlabwidth#1#2{% - \begingroup - \settowidth{\@tempdima}{\bibfont#2}% - \ifnum\@tempdima>#1% - \global#1\@tempdima - \fi - \endgroup} - -\def\blx@bblstart{% - \let\preamble\blx@bbl@preamble - \let\warn\blx@bbl@thewarn - \let\refsection\blx@bbl@refsection - \let\endrefsection\blx@bbl@endrefsection - \let\entry\blx@bbl@entry - \let\endentry\blx@bbl@endentry - \let\missing\blx@bbl@missing - \let\keyalias\blx@bbl@keyalias - \let\sortlist\blx@bbl@slist - \let\endsortlist\blx@bbl@endslist - \let\set\blx@bbl@set - \let\inset\blx@bbl@inset - \let\keyw\blx@bbl@keyw - \let\name\blx@bbl@namedef - \let\list\blx@bbl@listdef - \let\field\blx@bbl@fielddef - \let\range\blx@bbl@rangedef - \let\strng\blx@bbl@stringdef - \let\cnt\blx@bbl@cntdef - \let\true\blx@bbl@booltrue - \let\false\blx@bbl@boolfalse - \let\verb\blx@bbl@verbdef - \let\endverb\blx@bbl@verbend - \let\lverb\blx@bbl@verbldef - \let\endlverb\blx@bbl@verblend} - -\def\blx@bblend{% -} - -% {<entrykey>} -% Get the saved information on which citations were mentioned last run -\protected\def\abx@aux@cite#1{% - \listxadd{\blx@lastcites}{\detokenize{#1}}} - -% {<sortschemename>} -% Get the saved information on which sorting schemes were mentioned last run -\protected\def\abx@aux@sortscheme#1{% - \listgadd{\blx@lastsortschemes}{#1}} - -% {<sortnamekeyschemename>} -% Get the saved information on which sorting name key schemes were mentioned last run -\protected\def\abx@aux@sortnamekeyscheme#1{% - \listgadd{\blx@lastsortnamekeyschemes}{#1}} - -% {<sortschemename>} -% Get the saved information on which shorthand sorting schemes were mentioned last run -\protected\def\abx@aux@biblist#1{% - \listgadd{\blx@lastbiblists}{#1}} - -% Here we mustn't change the checksum if we used localnumbers from the -% .aux file as this means that deferred numbering is -% complete. Otherwise we get in an endless rerun loop because the -% checksum due to number changes is always different. -\AtEndDocument{% - \def\abx@aux@number#1#2#3#4{% - \ifblank{#4} - {} - {\nottoggle{blx@localnumber} - {\blx@addchecksum{#1}{#4}} - {}}}} - -\AtEndDocument{% - % Here we run some tests to decide if we need to issue re-run - % messages in certain circumstances. In general, if we add/remove - % any citations or add/remove any sorting schemes, we need to re-run - % biber. Also, if we have to re-run biber, we need to defer writing - % the defernumbers .aux information because it will not yet be correct. - - % Test to see if we *removed* any citations since last run - % (adding citations is dealt with naturally in \blx@citation@entry) - % If so, give a rerun biber message. This also sets the - % rerun biber toggle so defernums doesn't consume the localnumbers - % in the .aux but instead, re-writes them, which is what we need. - \begingroup - \def\do#1{\ifinlist{#1}{\blx@cites}{}{\blx@logreq@active{}}\relax}% - \dolistloop\blx@lastcites - % Special case - if we are using sortscheme "none" anywhere, then changes - % in citation order matter and we need to re-run biber. So a special test - % to see if the cites from last run are identical in order. We have - % already tested for more or less cites between runs by now, we are - % testing here for exactly the same cites by treating the cite and - % lastcite lists as strings and comparing them. This doesn't apply - % to biblist sortschemes as nobody wants to sort biblists with - % "none", since it makes no sense - \ifinlist{none}{\blx@sortschemes} - {\ifdefstrequal{\blx@cites}{\blx@lastcites} - {} - {\blx@logreq@active{}}} - {}% - % Test if we removed any mention of a sorting name key scheme since last run. - % If we did, we need to re-run biber - \def\do#1{\ifinlist{#1}{\blx@sortnamekeyschemes}{}{\blx@logreq@active{}}\relax}% - \dolistloop\blx@lastsortnamekeyschemes - % Test if we added any mention of a sorting name key scheme since last run - % If we did, we need to re-run biber - \def\do#1{\ifinlist{#1}{\blx@lastsortnamekeyschemes}{}{\blx@logreq@active{}}\relax}% - \dolistloop\blx@sortnamekeyschemes - % 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 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 if we removed any mention of a biblist since last run. - % If we did, we need to re-run biber - \def\do#1{\ifinlist{#1}{\blx@biblists}{}{\blx@logreq@active{}}\relax}% - \dolistloop\blx@lastbiblists - % Test to see if we added any mention of a biblist since last run. - % If we did, we need to re-run biber - \def\do#1{\ifinlist{#1}{\blx@lastbiblists}{}{\blx@logreq@active{}}\relax}% - \dolistloop\blx@biblists - % If we have to run biber or latex again and we are using defernumbers, - % don't write the localnumber information to the .aux file yet as we will - % potentially have to regenerate sorting order first in biber - \iftoggle{blx@defernumbers} - {\iftoggle{blx@runbiber} - {} - {\def\do#1{\blx@auxwrite\@mainaux{}{#1}} - \dolistloop\blx@localnumaux}} - {}% - \endgroup} - -% {<instcount>}{<entrykey>}{<refsection>}{<sort context>}{<labelnumber>} -\protected\def\blx@aux@number#1#2#3#4#5{% - \blx@bbl@addentryfield{\detokenize{#2}}{#3}{localnumber}{#4}{#5}% - \blx@bbl@addentryfield{\detokenize{#2}}{#3}{labelnumber}{#4}{#5}% - \global\toggletrue{blx@localnumber}% - \ifblank{#5} - {} - {\csgdef{blx@labelnumber@#3@#4}{#5}}} - -% Called as part of bib output for an entry -% Only used when defernumbers=true -\def\blx@addlabelnumber{% - \begingroup - \nottoggle{blx@skiplab} - {\iftoggle{blx@labelnumber} - {\ifundef\abx@field@shorthand - % Need to know if we set any localnumber from .aux file, not - % just current item. Otherwise, we may just write new - % localnumbers but not existing ones - % Also, don't want to regenerate localnumber for any key in a - % refsection which we've already seen because this has the nasty - % side-effect of incrementing the localnum counter - {\ifboolexpr { not togl {blx@localnumber} - and - test {\ifcsundef{blx@defer@\the\c@refsection @\abx@field@entrykey}} } - {\iftoggle{blx@omitnumbers} - {\let\abx@field@localnumber\@empty} - {\csnumgdef{blx@labelnumber@\the\c@refsection @\blx@refcontext@context}{% - \csuse{blx@labelnumber@\the\c@refsection @\blx@refcontext@context}+1}% - \edef\abx@field@localnumber{% - \csuse{blx@labelnumber@\the\c@refsection @\blx@refcontext@context}}% - \blx@bbl@addentryfield{\abx@field@entrykey}{\the\c@refsection}% - {localnumber}{\blx@refcontext@context}{\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. - \ifcsundef{blx@defer@\the\c@refsection @\abx@field@entrykey} - {\listxadd\blx@localnumaux{% - \string\abx@aux@number% - {\the\c@instcount}% - {\abx@field@entrykey}% - {\the\c@refsection}% - {\blx@refcontext@context}% - {\abx@field@localnumber}}% - % record that we have already generated and output localnum - % for this key in this refsection - \csgdef{blx@defer@\the\c@refsection @\abx@field@entrykey}{}} - {}} - {}}% - {}} - {}% - \endgroup} - -\def\blx@addprefixnumber{% - \nottoggle{blx@skiplab} - {\ifdef\blx@prefixnumbers - {\ifundef\abx@field@shorthand - {\edef\abx@field@prefixnumber{\expandonce\blx@prefixnumbers}% - \ifundef\abx@field@prefixnumber - {\blx@bbl@addentryfield{\abx@field@entrykey}{\the\c@refsection}% - {prefixnumber}{\blx@refcontext@context}{\expandonce\abx@field@prefixnumber}} - {}% - \blx@auxwrite\@mainaux{}{% - \string\blx@aux@numprefix{\abx@field@entrykey}% - {\the\c@refsection}{\blx@refcontext@context}{\expandonce\abx@field@prefixnumber}}} - {}} - {}} - {}} - -% {<entrykey>}{<refsection>}{<sorting context}{<numberprefix>} -\protected\def\blx@aux@numprefix#1#2#3#4{% - \blx@bbl@addentryfield{\detokenize{#1}}{#2}{prefixnumber}{#3}{#4}} - -% {<sortlistname>} -\def\blx@bbl@slist[#1]#2{% - \begingroup - \def\blx@slist@type{#1}% - \def\blx@slist@name{#2}} - - % This macro (\key) will only be called in sortlists of type "list" -% \def\key##1{\listcsxadd{blx@slists@\the\c@refsection @#1}{\detokenize{##1}}}} - -\def\blx@bbl@endslist{% - \csnumgdef{blx@labelnumber@\the\c@refsection @\blx@slist@name}{0}% - \endgroup} - -\def\blx@addpageref#1{% - \begingroup - \blx@tempcnta\z@ - \let\blx@tempa\@empty - \def\do##1{% - \appto\blx@tempa{{##1}}% - \advance\blx@tempcnta\@ne}% - \dolistcsloop{blx@pref@\the\c@refsection @#1}% - \edef\blx@tempa{\endgroup\noexpand\blx@bbl@listdef - {pageref}{\the\blx@tempcnta}{\blx@tempa}}% - \blx@tempa} - -%% Data input - -\def\blx@bblinput{% - \begingroup - \blx@info@noline{Trying to load bibliographic data..}% - \blx@blxinit - \blx@bblfile@biber - \endgroup} - -\def\blx@bblfile@biber{% - \blx@secinit - \begingroup - \blx@bblstart - \blx@ifsigned{\jobname}{bbl} - {\InputIfFileExists{\jobname.bbl} - {\blx@info@noline{... file '\jobname.bbl' found}} - {\blx@info@noline{... file '\jobname.bbl' not found}% - \typeout{No file \jobname.bbl.}}} - {}% - \blx@bblend - \endgroup - % global sorting as this is called at BeginDocument - \csnumgdef{blx@labelnumber@\the\c@refsection @\blx@sorting}{0}} - -%% Bibliography - -% {<name>}{<start code>}[<end code>]{<item code>} -\newrobustcmd*{\defbibenvironment}[4]{% - \long\csdef{blx@env@#1}{#2}% - \long\csdef{blx@endenv@#1}{#3}% - \long\csdef{blx@item@#1}{#4}} - -\defbibenvironment{bibliography} - {\list{}{% - \leftmargin\bibhang - \itemindent-\leftmargin - \itemsep\bibitemsep - \parsep\bibparsep}} - {\endlist} - {\item} - -\def\do#1{% - \defbibenvironment{#1} - {\list{\thefield{#1}}{% - \labelwidth\csname #1width\endcsname - \labelsep\biblabelsep - \leftmargin\labelwidth - \advance\leftmargin\labelsep - \itemsep\bibitemsep - \parsep\bibparsep - \def\makelabel####1{####1\hss}}} - {\endlist} - {\item}} -\abx@dolabelfields - -% {<name>}[<default>]{<code>} -\newrobustcmd*{\defbibheading}[1]{% - \@ifnextchar[%] - {\blx@defbibheading{blx@head@#1}} - {\blx@defbibheading{blx@head@#1}[\bibname]}} - -\def\blx@defbibheading#1[#2]{% - \csundef{#1}% - \expandafter\newcommand\csname#1\endcsname[1][#2]} - -% {<name>}{<text>} -\newrobustcmd*{\defbibnote}[1]{% - \long\csdef{blx@note@#1}} - -% {<name>}{<code>} -\newrobustcmd*{\defbibfilter}[2]{% - \begingroup - \def\blx@flt@error{\csname blx@flt@errortrue\endcsname}% - \let\not\blx@flt@not \let\NOT\not - \let\and\blx@flt@and \let\AND\and - \let\or\blx@flt@or \let\OR\or - \letcs\({blx@flt@(} \letcs\){blx@flt@)}% - \def\section##1{\blx@flt@error}% - \def\segment##1{segment=##1}% - \def\type##1{type=##1}% - \def\subtype##1{subtype=##1}% - \def\keyword##1{keyword={##1}}% - \def\category##1{category={##1}}% - \edef\blx@tempa{\noexpand\blx@defbibfilter{#2}}% - \ifdef\blx@flt@errortrue - {\blx@err@filter} - {\let\the\relax - \let\blx@flt@item\relax - \edef\blx@tempa{\blx@tempa}% - \ifdef\blx@flt@errortrue - {\blx@err@filter} - {\csxdef{blx@filter@#1}{\blx@tempa}}}% - \endgroup} - -\def\blx@defbibfilter#1{% - \blx@defbibfilter@i#1 &} -\def\blx@defbibfilter@i#1 #2&{% - \blx@defbibfilter@ii#1==&% - \ifblank{#2}{}{\blx@defbibfilter@i#2 &}} -\def\blx@defbibfilter@ii#1=#2=#3&{% - \ifblank{#2} - {\ifblank{#1} - {} - {\ifcsdef{blx@flt@#1} - {\csname blx@flt@#1\endcsname} - {\blx@flt@error}}} - {\ifcsdef{blx@flt@#1} - {\csname blx@flt@#1\endcsname{\detokenize{#2}}} - {\blx@flt@error}}} - -\def\blx@flt@and{ and } -\def\blx@flt@or{ or } -\def\blx@flt@not{ not } -\csdef{blx@flt@(}{ ( } -\csdef{blx@flt@)}{ ) } -\def\blx@flt@segment#1{% - test {\xifinlistcs\blx@flt@item{blx@segm@\the\c@refsection @#1}}} -\def\blx@flt@type#1{% - test {\xifinlistcs\blx@flt@item{blx@type@\the\c@refsection @#1}}} -\def\blx@flt@subtype#1{% - test {\xifinlistcs\blx@flt@item{blx@subt@\the\c@refsection @#1}}} -\def\blx@flt@keyword#1{% - test {\xifinlistcs\blx@flt@item{blx@keyw@\the\c@refsection @#1}}} -\def\blx@flt@category#1{% - test {\xifinlistcs\blx@flt@item{blx@catg@#1}}} - -% {<name>}{<code>} -\newrobustcmd*{\defbibcheck}[2]{% - \csdef{blx@bibcheck@#1}{% - \togglefalse{blx@skipentry}% - \def\skipentry{\toggletrue{blx@skipentry}}% - #2\undef\skipentry}} - -% options -% We need a 2-pass structure for options in \printbibliography and -% \printbiblist because the section has to be set before any -% other options and this partly determines which list to use for later filtering -\define@key{blx@bib1}{segment}{} -\define@key{blx@bib1}{type}{} -\define@key{blx@bib1}{nottype}{} -\define@key{blx@bib1}{subtype}{} -\define@key{blx@bib1}{notsubtype}{} -\define@key{blx@bib1}{keyword}{} -\define@key{blx@bib1}{notkeyword}{} -\define@key{blx@bib1}{category}{} -\define@key{blx@bib1}{notcategory}{} -\define@key{blx@bib1}{filter}{} -\define@key{blx@bib1}{check}{} -\define@key{blx@bib1}{heading}{} -\define@key{blx@bib1}{env}{} -\define@key{blx@bib1}{title}{} -\define@key{blx@bib1}{prenote}{} -\define@key{blx@bib1}{postnote}{} -\define@key{blx@bib1}{resetnumbers}[]{} -\define@key{blx@bib1}{omitnumbers}[]{} -\define@key{blx@bib1}{prefixnumbers}{} - -\define@key{blx@bib2}{section}{} -\define@key{blx@bib2}{sorting}{} - -\define@key{blx@biblist1}{segment}{} -\define@key{blx@biblist1}{type}{} -\define@key{blx@biblist1}{nottype}{} -\define@key{blx@biblist1}{subtype}{} -\define@key{blx@biblist1}{notsubtype}{} -\define@key{blx@biblist1}{keyword}{} -\define@key{blx@biblist1}{notkeyword}{} -\define@key{blx@biblist1}{category}{} -\define@key{blx@biblist1}{notcategory}{} -\define@key{blx@biblist1}{filter}{} -\define@key{blx@biblist1}{check}{} -\define@key{blx@biblist1}{heading}{} -\define@key{blx@biblist1}{env}{} -\define@key{blx@biblist1}{title}{} -\define@key{blx@biblist1}{prenote}{} -\define@key{blx@biblist1}{postnote}{} - -\define@key{blx@biblist2}{section}{} -\define@key{blx@biblist2}{sorting}{} - -\define@key{blx@bib1}{sorting}{% - \blx@warning@noline{% - sorting option to \string\printbibliography\space is no longer supported, use 'sorting' option to \string\newrefcontext}} - -\define@key{blx@bib1}{section}{% - \ifcsundef{blx@sections@#1} - {\blx@err@nosec{#1}} - {\c@refsection#1\relax - \def\blx@tempe{#1}}} - -\define@key{blx@biblist1}{section}{% - \ifcsundef{blx@sections@#1} - {\blx@err@nosec{#1}} - {\c@refsection#1\relax - \def\blx@tempe{#1}}} - -\define@key{blx@biblist1}{sorting}{% - \blx@warning@noline{% - sorting option to \string\printbiblist\space is no longer supported, use 'sorting' option to \string\newrefcontext}} - -\define@key{blx@bbg}{section}{% - \ifcsundef{blx@sections@#1} - {\blx@err@nosec{#1}} - {\c@refsection#1\relax}} - -\define@key{blx@bbc}{section}{% - \ifcsundef{blx@sections@#1} - {\blx@err@nosec{#1}} - {\c@refsection#1\relax}} - -\define@key{blx@bib2}{segment}{\blx@key@segment{#1}} -\define@key{blx@biblist2}{segment}{\blx@key@segment{#1}} - -\def\blx@key@segment#1{% - \ifcsundef{blx@segm@\the\c@refsection @#1} - {\blx@error - {Segment '#1' not found in section '\the\c@refsection'} - {The reference segment '#1' could not be found in section '\the\c@refsection'}} - {\c@refsegment#1\relax - \blx@printbibchecks - \blx@filter\blx@tempa{blx@segm@\the\c@refsection @#1}}} - -\define@key{blx@bib2}{type}{\blx@key@type{#1}} -\define@key{blx@biblist2}{type}{\blx@key@type{#1}} - -\def\blx@key@type#1{% - \ifcsundef{blx@type@\the\c@refsection @#1} - {\blx@warning{Type '#1' not found}% - \let\blx@tempa\@empty} - {\blx@printbibchecks - \iftoggle{blx@tempb} - {\togglefalse{blx@tempb}% - \blx@filter\blx@tempa{blx@type@\the\c@refsection @#1}} - {\let\blx@tempa\@empty - \blx@error - {'type' used multiple times} - {When passing multiple filter options, each entry\MessageBreak - must satisfy all conditions (AND conjunction),\MessageBreak - hence some options may not be used twice.\MessageBreak - Use 'filter' and '\string\defbibfilter' with OR conjunctions}}}} - -\define@key{blx@bib2}{nottype}{\blx@key@nottype{#1}} -\define@key{blx@biblist2}{nottype}{\blx@key@nottype{#1}} - -\def\blx@key@nottype#1{% - \ifcsundef{blx@type@\the\c@refsection @#1} - {} - {\blx@printbibchecks - \blx@notfilter\blx@tempa{blx@type@\the\c@refsection @#1}}} - -\define@key{blx@bib2}{subtype}{\blx@key@subtype{#1}} -\define@key{blx@biblist2}{subtype}{\blx@key@subtype{#1}} - -\def\blx@key@subtype#1{% - \ifcsundef{blx@subt@\the\c@refsection @#1} - {\blx@warning{Subtype '#1' not found}% - \let\blx@tempa\@empty} - {\blx@printbibchecks - \iftoggle{blx@tempb} - {\togglefalse{blx@tempb}% - \blx@filter\blx@tempa{blx@subt@\the\c@refsection @#1}} - {\let\blx@tempa\@empty - \blx@error - {'subtype' used multiple times} - {When passing multiple filter options, each entry\MessageBreak - must satisfy all conditions (AND conjunction),\MessageBreak - hence some options may not be used twice.\MessageBreak - Use 'filter' and '\string\defbibfilter' with OR conjunctions}}}} - -\define@key{blx@bib2}{notsubtype}{\blx@key@notsubtype{#1}} -\define@key{blx@biblist2}{notsubtype}{\blx@key@notsubtype{#1}} - -\def\blx@key@notsubtype#1{% - \ifcsundef{blx@subt@\the\c@refsection @#1} - {} - {\blx@printbibchecks - \blx@notfilter\blx@tempa{blx@subt@\the\c@refsection @#1}}} - -\define@key{blx@bib2}{keyword}{\blx@key@keyword{#1}} -\define@key{blx@biblist2}{keyword}{\blx@key@keyword{#1}} - -\def\blx@key@keyword#1{% - \ifcsundef{blx@keyw@\the\c@refsection @\detokenize{#1}} - {\blx@warning{Keyword '\detokenize{#1}' not found}% - \let\blx@tempa\@empty} - {\blx@printbibchecks - \blx@filter\blx@tempa{blx@keyw@\the\c@refsection @\detokenize{#1}}}} - -\define@key{blx@bib2}{notkeyword}{\blx@key@notkeyword{#1}} -\define@key{blx@biblist2}{notkeyword}{\blx@key@notkeyword{#1}} - -\def\blx@key@notkeyword#1{% - \ifcsundef{blx@keyw@\the\c@refsection @\detokenize{#1}} - {} - {\blx@printbibchecks - \blx@notfilter\blx@tempa{blx@keyw@\the\c@refsection @\detokenize{#1}}}} - -\define@key{blx@bib2}{category}{\blx@key@category{#1}} -\define@key{blx@biblist2}{category}{\blx@key@category{#1}} - -\def\blx@key@category#1{% - \ifcsundef{blx@catg@\detokenize{#1}} - {\blx@warning{Category '\detokenize{#1}' not found}% - \let\blx@tempa\@empty} - {\blx@printbibchecks - \blx@filter\blx@tempa{blx@catg@\detokenize{#1}}}} - -\define@key{blx@bib2}{notcategory}{\blx@key@notcategory{#1}} -\define@key{blx@biblist2}{notcategory}{\blx@key@notcategory{#1}} - -\def\blx@key@notcategory#1{% - \ifcsundef{blx@catg@#1} - {} - {\blx@printbibchecks - \blx@notfilter\blx@tempa{blx@catg@#1}}} - -\define@key{blx@bib2}{filter}{\blx@key@filter{#1}} -\define@key{blx@biblist2}{filter}{\blx@key@filter{#1}} - -\def\blx@key@filter#1{% - \ifcsdef{blx@filter@#1} - {\blx@printbibchecks - \blx@bibfilter\blx@tempa{blx@filter@#1}} - {\let\blx@tempa\@empty - \blx@error - {Filter '#1' not found} - {The filter '#1' could not be found.\MessageBreak - Use \string\defbibfilter\space to define it}}} - -\define@key{blx@bib2}{check}{\blx@key@bibcheck{#1}} -\define@key{blx@biblist2}{check}{\blx@key@bibcheck{#1}} - -\def\blx@key@bibcheck#1{% - \ifcsdef{blx@bibcheck@#1} - {\letcs\blx@bibcheck{blx@bibcheck@#1}} - {\let\blx@tempa\@empty - \blx@error - {Check '#1' not found} - {The check '#1' could not be found.\MessageBreak - Use \string\defbibcheck\space to define it}}} - -\define@key{blx@bhd}{heading}{\blx@key@heading{#1}} -\define@key{blx@bib2}{heading}{\blx@key@heading{#1}} -\define@key{blx@biblist2}{heading}{\blx@key@heading{#1}} -\define@key{blx@bbs}{heading}{\blx@key@heading{#1}} -\define@key{blx@bbg}{heading}{\blx@key@heading{#1}} - -\def\blx@key@heading#1{% - \ifcsundef{blx@head@#1} - {\blx@error - {Heading '#1' not found} - {The heading '#1' could not be found.\MessageBreak - Use \string\defbibheading\space to define it}} - {\def\blx@theheading{#1}}} - -\define@key{blx@bib2}{env}{\blx@key@env{#1}} -\define@key{blx@biblist2}{env}{\blx@key@env{#1}} -\define@key{blx@bbs}{env}{\blx@key@env{#1}} -\define@key{blx@bbg}{env}{\blx@key@env{#1}} -\define@key{blx@bbc}{env}{\blx@key@env{#1}} - -\def\blx@key@env#1{% - \ifcsundef{blx@env@#1} - {\blx@error - {Environment '#1' not found} - {The environment '#1' could not be found.\MessageBreak - Use \string\defbibenvironment\space to define it}} - {\def\blx@theenv{#1}}} - -\define@key{blx@bhd}{title}{\def\blx@thetitle{#1}} -\define@key{blx@bib2}{title}{\def\blx@thetitle{#1}} -\define@key{blx@biblist2}{title}{\def\blx@thetitle{#1}} - -\define@key{blx@bib2}{prenote}{\blx@key@prenote{#1}} -\define@key{blx@biblist2}{prenote}{\blx@key@prenote{#1}} -\define@key{blx@bbs}{prenote}{\blx@key@prenote{#1}} -\define@key{blx@bbg}{prenote}{\blx@key@prenote{#1}} -\define@key{blx@bbc}{prenote}{\blx@key@prenote{#1}} -\def\blx@key@prenote#1{% - \ifcsundef{blx@note@#1} - {\blx@error - {Note '#1' not found} - {The note '#1' could not be found.\MessageBreak - Use \string\defbibnote\space to define it}} - {\def\blx@theprenote{#1}}} - -\define@key{blx@bib2}{postnote}{\blx@key@postnote{#1}} -\define@key{blx@biblist2}{postnote}{\blx@key@postnote{#1}} -\define@key{blx@bbs}{postnote}{\blx@key@postnote{#1}} -\define@key{blx@bbg}{postnote}{\blx@key@postnote{#1}} -\define@key{blx@bbc}{postnote}{\blx@key@postnote{#1}} - -\def\blx@key@postnote#1{% - \ifcsundef{blx@note@#1} - {\blx@error - {Note '#1' not found} - {The note '#1' could not be found.\MessageBreak - Use \string\defbibnote\space to define it}} - {\def\blx@thepostnote{#1}}} - -\define@key{blx@bib2}{resetnumbers}[true]{% - \iftoggle{blx@defernumbers} - {\ifstrequal{#1}{true} - {\csnumdef{blx@labelnumber@\the\c@refsection @\blx@refcontext@context}{0}} - {\ifstrequal{#1}{false} - {} - {\csnumdef{blx@labelnumber@\the\c@refsection @\blx@refcontext@context}{#1-1}}}} - {\blx@warning{% - Option 'resetnumbers' requires 'defernumbers=true'.\MessageBreak - Ignoring 'resetnumbers=true'}}} - -\define@key{blx@bib2}{omitnumbers}[true]{% - \ifstrequal{#1}{true} - {\iftoggle{blx@defernumbers} - {\toggletrue{blx@omitnumbers}} - {\blx@warning{% - Option 'omitnumbers' requires 'defernumbers=true'.\MessageBreak - Ignoring 'omitnumbers=true'}}} - {}} - -\define@key{blx@bib2}{prefixnumbers}{% - \def\blx@prefixnumbers{#1}% - \iftoggle{blx@defernumbers} - {\csnumdef{blx@labelnumber@\the\c@refsection @\blx@refcontext@context}{0}} - {\iftoggle{blx@labelnumber} - {\blx@warning{% - Option 'prefixnumbers' requires global\MessageBreak - 'defernumbers=true'}} - {}}} - -% [<options>] -\newrobustcmd*{\printbibheading}{% - \begingroup - \edef\on@line{\on@line}% - \@ifnextchar[%] - {\blx@printbibheading} - {\blx@printbibheading[]}} - -\def\blx@printbibheading[#1]{% - \def\blx@theheading{bibliography}% - \let\blx@thetitle\@empty - \blx@safe@actives - \setkeys{blx@bhd}{#1}% - \blx@rest@actives - \blx@langstrings - \blx@bibheading\blx@theheading\blx@thetitle - \endgroup} - -% [<options>] -\newrobustcmd*{\printbibliography}{% - \begingroup - \edef\on@line{\on@line}% - \@ifnextchar[%] - {\blx@printbibliography} - {\blx@printbibliography[]}} - -\def\blx@printbibliography[#1]{% - \toggletrue{blx@tempa}% - \toggletrue{blx@tempb}% - \def\blx@theheading{bibliography}% - \def\blx@theenv{bibliography}% - \let\blx@theprenote\@empty - \let\blx@thepostnote\@empty - \let\blx@thetitle\@empty - % defaults - \let\blx@tempa\@empty% before there is a .bbl, this must not be undef - \edef\blx@tempd{% - \blx@xml@sorting{% - \ifcsdef{blx@sortdef@locale@\blx@refcontext@sorting} - { locale="\csuse{blx@sortdef@locale@\blx@refcontext@sorting}"} - {}}{% - \csuse{blx@biber@sorting@\blx@refcontext@sorting}}}% default to context - \edef\blx@tempe{\the\c@refsection}% default refsection is current - \blx@safe@actives - % Add the sortscheme to the list of sortschemes - % so we can compare on next run - \xifinlist{\blx@refcontext@sorting}{\blx@sortschemes} - {} - {\listxadd\blx@sortschemes{\blx@refcontext@sorting}% - \blx@auxwrite\@mainaux{}{\string\abx@aux@sortscheme{\blx@refcontext@sorting}}}% - \edef\blx@tempd{% - \blx@xml@sorting{% - \ifcsdef{blx@sortdef@locale@\blx@refcontext@sorting} - { locale="\csuse{blx@sortdef@locale@\blx@refcontext@sorting}"} - {}}{% - \csuse{blx@biber@sorting@\blx@refcontext@sorting}}}% - \setkeys{blx@bib1}{#1}% Set section only, if present ... - \blx@rest@actives - \ifcsvoid{blx@slist@entry@\blx@tempe @\blx@refcontext@context} - {} - {\letcs\blx@tempa{blx@slist@entry@\blx@tempe @\blx@refcontext@context}}% - \blx@safe@actives - % Must reset omitnumbers as it's a global macro and if we don't, any - % \printbibliography following one with this set will inherit any - % previous "true" value - \togglefalse{blx@omitnumbers}% - \setkeys{blx@bib2}{#1}% ... now we have correct \blx@tempa, set rest of options - \blx@rest@actives - \csxappto{blx@biber@slists}{% - \blx@xml@slist{\blx@refcontext@context}{entry}{\blx@tempe}{\blx@refcontext@sorting}{\blx@refcontext@sortingnamekey}{\blx@tempd}{}}% - \ifdefvoid\blx@tempa - {\blx@warn@bibempty\endgroup} - {\blx@bibliography\blx@tempa}} - -% [<options>] -\newrobustcmd*{\bibbysection}{% - \begingroup - \ifnum\blx@maxsection=\z@ - \blx@warning{No reference sections found}% - \fi - \edef\on@line{\on@line}% - \@ifnextchar[%] - {\blx@bibbysection} - {\blx@bibbysection[]}} - -\def\blx@bibbysection[#1]{% - \def\blx@theheading{bibliography}% - \def\blx@theenv{bibliography}% - \let\blx@theprenote\@empty - \let\blx@thepostnote\@empty - \let\blx@thetitle\@empty - \c@refsection\z@ - \blx@safe@actives - \setkeys{blx@bbs}{#1}% - \blx@rest@actives - \togglefalse{blx@tempa}% - \blx@refsections} - -\def\blx@refsections{% - \ifcsvoid{blx@slist@entry@\the\c@refsection @\blx@refcontext@context} - {} - {\toggletrue{blx@tempa}% - \begingroup - \expandafter\blx@bibliography\csname blx@slist@entry@\the\c@refsection @\blx@refcontext@context\endcsname}% - \ifnum\c@refsection<\blx@maxsection - \advance\c@refsection\@ne - \expandafter\blx@refsections - \else - \iftoggle{blx@tempa}{}{\blx@warn@bibempty}% - \endgroup - \fi} - -% [<options>] -\newrobustcmd*{\bibbysegment}{% - \begingroup - \edef\on@line{\on@line}% - \ifnum\csname blx@maxsegment@\the\c@refsection\endcsname=\z@ - \blx@warning{No reference segments found}% - \fi - \@ifnextchar[%] - {\blx@bibbysegment} - {\blx@bibbysegment[]}} - -\def\blx@bibbysegment[#1]{% - \def\blx@theheading{bibliography}% - \def\blx@theenv{bibliography}% - \let\blx@theprenote\@empty - \let\blx@thepostnote\@empty - \let\blx@thetitle\@empty - \c@refsegment\@ne - \blx@safe@actives - \setkeys{blx@bbg}{#1}% - \blx@rest@actives - \togglefalse{blx@tempa}% - \blx@refsegments} - -\def\blx@refsegments{% - \ifcsvoid{blx@segm@\the\c@refsection @\the\c@refsegment} - {} - {\toggletrue{blx@tempa}% - \begingroup - \let\blx@tempa\@empty - \ifcsvoid{blx@slist@entry@\the\c@refsection @\blx@refcontext@context} - {} - {\letcs\blx@tempa{blx@slist@entry@\the\c@refsection @\blx@refcontext@context}}% - \blx@filter\blx@tempa{blx@segm@\the\c@refsection @\the\c@refsegment}% - \blx@bibliography\blx@tempa}% - \ifnum\c@refsegment<\csname blx@maxsegment@\the\c@refsection\endcsname - \advance\c@refsegment\@ne - \expandafter\blx@refsegments - \else - \iftoggle{blx@tempa}{}{\blx@warn@bibempty}% - \endgroup - \fi} - -% [<options>] -\newrobustcmd*{\bibbycategory}{% - \begingroup - \edef\on@line{\on@line}% - \ifx\blx@categories\@empty - \blx@warning{No categories found}% - \fi - \@ifnextchar[%] - {\blx@bibbycategory} - {\blx@bibbycategory[]}} - -\def\blx@bibbycategory[#1]{% - \def\blx@theheading{bibliography}% - \def\blx@theenv{bibliography}% - \let\blx@theprenote\@empty - \let\blx@thepostnote\@empty - \let\blx@thetitle\@empty - \c@refsection\z@ - \blx@safe@actives - \setkeys{blx@bbc}{#1}% - \blx@rest@actives - \togglefalse{blx@tempa}% - \forlistloop\blx@bibcategory\blx@categories - \blx@endbibcategory} - -\def\blx@bibcategory#1{% - \ifcsvoid{blx@catg@#1} - {} - {\toggletrue{blx@tempa}% - \begingroup - \blx@key@heading{#1}% - \let\blx@tempa\@empty - \ifcsvoid{blx@slist@entry@\the\c@refsection @\blx@refcontext@context} - {} - {\letcs\blx@tempa{blx@slist@entry@\the\c@refsection @\blx@refcontext@context}}% - \blx@filter\blx@tempa{blx@catg@#1}% - \blx@bibliography\blx@tempa}}% - -\def\blx@endbibcategory{% - \iftoggle{blx@tempa}{}{\blx@warn@bibempty}% - \endgroup} - -% {<entrykey>,...} -\def\blx@bibliography{% - \blx@langstrings - \blx@bibheading\blx@theheading\blx@thetitle - \blx@bibnote\blx@theprenote - \begingroup - \blx@bibinit - \let\@noitemerr\@empty - \let\blx@noitem\blx@warn@bibempty - \ifnum\bibinitsep=\z@ - \let\blx@initsep\relax - \fi - \ifnum\bibnamesep=\z@ - \let\blx@namesep\relax - \fi - \csuse{blx@env@\blx@theenv}% - \csuse{blx@hook@bibinit}% - \csuse{blx@hook@bibinit@next}% - \let\blx@do\blx@bibitem - \let\blx@done\blx@endbibliography - \blx@listloop} - -\def\blx@endbibliography{% - \csuse{blx@endenv@\blx@theenv}% - \blx@noitem - \endgroup - \blx@bibnote\blx@thepostnote - \endgroup} - -\def\blx@bibheading#1#2{% - \begingroup - \edef\blx@tempa{\endgroup - \noexpand\blx@bibheading@i{\expandonce#1}{\expandonce#2}}% - \blx@tempa} - -\def\blx@bibheading@i#1#2{% - \let\newrefsection\relax - \let\newrefsegment\relax - \ifblank{#2} - {\csuse{blx@head@#1}} - {\csuse{blx@head@#1}[#2]}% - \let\newrefsection\blx@newrefsection - \let\newrefsegment\blx@newrefsegment} - -\def\blx@bibnote#1{% - \ifdefempty#1 - {} - {\begingroup - \let\newrefsection\relax - \let\newrefsegment\relax - \noindent - \csuse{blx@note@#1}\par\nobreak - \endgroup}} - -\def\blx@bibinit{% - \iftoggle{blx@citation} - {} - {\toggletrue{blx@bibliography}}% - \blx@blxinit - \blx@resetdata - \csuse{blx@hook@bbxinit}% - \bibsetup\bibfont - \blx@setsfcodes - \csuse{blx@bibsetup}} - -% {<entrykey>} -% output a bib item, this is why \blx@thelabelnumber is here so that -% labelnumber is deferred if defernumbers=true -\def\blx@bibitem#1{% - \blx@ifdata{#1} - {\begingroup - \blx@getdata{#1}% - \blx@bibcheck - \iftoggle{blx@skipentry}{}{% - \global\let\blx@noitem\@empty - \blx@setoptions@type\abx@field@entrytype - \blx@setoptions@entry - \blx@thelabelnumber - \blx@addprefixnumber - \addtocounter{instcount}\@ne - \csuse{blx@item@\blx@theenv}\relax - \blx@initsep - \blx@namesep - \csuse{blx@hook@bibitem}% - \blx@execute - \blx@initunit - \blx@anchor - \blx@beglangbib - \bibsentence - \blx@pagetracker - \blx@driver\abx@field@entrytype - \blx@postpunct - \blx@endlangbib}% - \endgroup} - {}} - -\let\blx@bibcheck\relax - -\def\blx@initsep{% - \blx@imc@iffieldundef{sortinithash} - {} - {\ifnum\c@instcount>\@ne - \blx@imc@iffieldequals{sortinithash}\blx@previnithash - {} - {\addvspace{\bibinitsep}}% - \fi - \global\let\blx@previnithash\abx@field@sortinithash}} - -\def\blx@namesep{% - \ifnum\c@instcount>\@ne - \blx@imc@iffieldequals{fullhash}\blx@prevhash - {} - {\addvspace{\bibnamesep}}% - \fi - \global\let\blx@prevhash\abx@field@fullhash} - -\newrobustcmd*{\AtBeginBibliography}{\gappto\blx@hook@bibinit} -\newrobustcmd*{\AtEveryBibitem}{\gappto\blx@hook@bibitem} -\@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}} - {}% - \gappto\blx@hook@bibinit@next} - -% page tracker -\def\blx@pagetracker@context{% - \blx@leavevmode - \ifbool{@filesw} - {\ifbool{pagetracker} - {\protected@write\@mainaux{}{% - \iftoggle{blx@footnote} - {\string\abx@aux@fnpage} - {\string\abx@aux@page}% - {\the\c@instcount}{\noexpand\the\c@page}}} - {}} - {}} - -% {<instcount>}{<page>} -\protected\def\blx@aux@page#1#2{% - \csgdef{blx@page@#1}{#2}% - \blx@addpagesum{#1}{#2}} -\protected\def\blx@aux@spread#1#2{% - \ifodd#2\relax - \csxdef{blx@page@#1}{\number\numexpr#2-1}% - \else - \csgdef{blx@page@#1}{#2}% - \fi - \blx@addpagesum{#1}{#2}} - -\protected\def\blx@aux@fnpage#1#2{% - \csgdef{blx@fnpage@#1}{#2}% - \blx@addpagesum{#1}{#2}} -\protected\def\blx@aux@fnspread#1#2{% - \ifodd#2\relax - \csxdef{blx@fnpage@#1}{\number\numexpr#2-1}% - \else - \csgdef{blx@fnpage@#1}{#2}% - \fi - \blx@addpagesum{#1}{#2}} - -\AtEndDocument{% - \def\abx@aux@page#1#2{\blx@addpagesum{#1}{#2}}% - \def\abx@aux@fnpage#1#2{\blx@addpagesum{#1}{#2}}} - -% hyperref interface -\appto\blx@mkhyperref{% - \let\blx@anchors\@empty - \ifundef\hyper@natanchorstart - {\protected\def\blx@anchor{% - \xifinlist{\the\c@refsection @\abx@field@entrykey}{\blx@anchors} - {} - {\listxadd\blx@anchors{\the\c@refsection @\abx@field@entrykey}% - \hypertarget{cite.\the\c@refsection @\abx@field@entrykey}{}}}} - {\protected\def\blx@anchor{% - \xifinlist{\the\c@refsection @\abx@field@entrykey}{\blx@anchors} - {} - {\listxadd\blx@anchors{\the\c@refsection @\abx@field@entrykey}% - \hyper@natanchorstart{\the\c@refsection @\abx@field@entrykey}% - \hyper@natanchorend}}}} - -\appto\blx@mknohyperref{\let\blx@anchor\relax} - -% Legacy alias for \printshorthands -\def\printshorthands{% - \@ifnextchar[%] - {\blx@printshorthands} - {\blx@printshorthands[]}} - -\def\blx@printshorthands[#1]{\printbiblist[#1]{shorthand}} - -% Custom bibliography list -% [<otions>]{biblistname} -\newrobustcmd*{\printbiblist}[2][]{% - \begingroup - \edef\on@line{\on@line}% - \toggletrue{blx@tempa}% - \toggletrue{blx@tempb}% - \def\blx@theheading{biblist}% default to biblist heading - \def\blx@theenv{#2}% default to list name - \def\blx@thebiblist{#2}% - \let\blx@theprenote\@empty - \let\blx@thepostnote\@empty - \let\blx@thetitle\@empty - % defaults - \let\blx@tempa\@empty% before there is a .bbl, this must not be undef - % default sorting scheme and scheme name for list is same name as list - % name, then current context if not found - \edef\blx@tempc{% - \ifcsdef{blx@biber@sorting@#2} - {#2} - {\blx@refcontext@sorting}}% - % locally define this since we want to fetch data from the slist named - % after the list we are printing rather than the data in refcontext list - \edef\blx@refcontext@context{\blx@tempc/\blx@refcontext@sortingnamekey}% - \edef\blx@tempd{% - \blx@xml@sorting - {\ifcsdef{blx@sortdef@locale@#2} - { locale="\csuse{blx@sortdef@locale@#2}"} - {}} - {\csuse{blx@biber@sorting@\blx@tempc}}}% - \let\blx@printbibchecks\relax - \edef\blx@tempe{\the\c@refsection}% default refsection is current - \blx@safe@actives - \blx@printbibchecks - % Add the sortscheme to the list of sortschemes for this biblist - % so we can compare on next run - \xifinlist{\blx@tempc}{\blx@biblists} - {} - {\listxadd\blx@biblists{\blx@tempc}% - \blx@auxwrite\@mainaux{}{\string\abx@aux@biblist{\blx@tempc}}}% - \edef\blx@tempd{% - \blx@xml@sorting{% - \ifcsdef{blx@sortdef@locale@\blx@tempc} - { locale="\csuse{blx@sortdef@locale@\blx@tempc}"} - {}}{% - \csuse{blx@biber@sorting@\blx@tempc}}}% - \setkeys{blx@biblist1}{#1}% Set section only, if present ... - \blx@rest@actives - \ifcsvoid{blx@slist@list@\blx@tempe @\blx@refcontext@context} - {} - {\letcs\blx@tempa{blx@slist@list@\blx@tempe @\blx@refcontext@context}}% - \blx@safe@actives - \setkeys{blx@biblist2}{#1}% ... now we have correct \blx@tempa, set rest of options - \ifundef\blx@bibcheck - {\ifcsdef{blx@bibcheck@#2} - {\letcs\blx@bibcheck{blx@bibcheck@#2}} - {}} - {}% - \blx@rest@actives - \csxappto{blx@biber@slists}{% - \blx@xml@slist{\blx@refcontext@context}{list}{\blx@tempe}{\blx@tempc}{\blx@refcontext@sortingnamekey}{\blx@tempd}{\csuse{blx@biber@biblistfilters@#2}}}% - \ifdefvoid\blx@tempa - {\blx@warn@biblistempty{#2}\endgroup} - {\blx@biblist\blx@tempa}} - -\def\blx@printbibchecks{% - \togglefalse{blx@tempa}% - \iftoggle{blx@defernumbers} - {\global\let\blx@printbibchecks\relax} - {\iftoggle{blx@labelnumber} - {\blx@warning@noline{Setting 'defernumbers=true' recommended}} - {\global\let\blx@printbibchecks\relax}}} - -% {<entrykey>,...} -\def\blx@biblist{% - \if@twocolumn - \@restonecoltrue\onecolumn - \else - \@restonecolfalse - \fi - \blx@langstrings - \blx@bibheading\blx@theheading\blx@thetitle - \blx@bibnote\blx@theprenote - \begingroup - \blx@bibinit - \let\@noitemerr\@empty - \def\blx@noitem{\blx@warn@biblistempty{\blx@thebiblist}}% - \csuse{blx@env@\blx@theenv}% - \csuse{blx@hook@biblistinit@\blx@thebiblist}% - \let\blx@do\blx@biblistitem - \let\blx@done\blx@endbiblist - \blx@listloop} - -\def\blx@endbiblist{% - \csuse{blx@endenv@\blx@theenv}% - \blx@noitem - \endgroup - \blx@bibnote\blx@thepostnote - \endgroup - \if@restonecol\twocolumn\fi} - -% Legacy aliases -\def\AtBeginShorthands{\AtBeginBiblist{shorthand}} -\def\AtEveryLositem{\AtEveryBiblistitem{shorthand}} -\@onlypreamble\AtBeginShorthands -\@onlypreamble\AtEveryLositem - -% {<biblistname>} -\newrobustcmd*{\AtBeginBiblist}[1]{\csgappto{blx@hook@biblistinit@#1}} -\newrobustcmd*{\AtEveryBiblistitem}[1]{\csgappto{blx@hook@biblistitem@#1}} -\@onlypreamble\AtBeginBiblist -\@onlypreamble\AtEveryBiblistitem - -% {<entrykey>} -\def\blx@biblistitem#1{% - \blx@ifdata{#1} - {\begingroup - \blx@getdata{#1}% - \blx@bibcheck - \iftoggle{blx@skipentry}{}{% - \global\let\blx@noitem\@empty - \blx@setoptions@type\abx@field@entrytype - \blx@setoptions@entry - \addtocounter{instcount}\@ne - \csuse{blx@item@\blx@theenv}\relax - \csuse{blx@hook@biblistitem@\blx@thebiblist}% - \blx@execute - \blx@initunit - \blx@beglangbib - \bibsentence - \blx@pagetracker - \blx@driver{\blx@thebiblist}% - \blx@postpunct - \blx@endlangbib}% - \endgroup} - {}} - -% Just a default in case .bbx doesn't define it. standard.bbx defines -% it to print a complete entry, like the bibliography. -\DeclareBibliographyDriver{shorthand}{% - \iffieldundef{shorttitle} - {\printfield{title}} - {\printfield{shorttitle}}} - -% Reference contexts -\def\newrefcontext{% - \endrefcontext - \refcontext} - -\def\refcontext[#1]{% - \iftoggle{blx@refcontext} - {\blx@err@nestenv{refcontext}% - \endrefcontext} - {\toggletrue{blx@refcontext}% - \setkeys{blx@refcontext}{#1}% - \xdef\blx@refcontext@context{\blx@refcontext@sorting/\blx@refcontext@sortingnamekey}% - \ifcsundef{blx@biber@sorting@\blx@refcontext@sorting} - {\blx@err@invopt{sorting=\blx@refcontext@sorting}{}} - {}}} - -% Reset to global sorting etc. when we leave a ref context (since they can't be nested) -\protected\def\endrefcontext{% - \togglefalse{blx@refcontext}% - \xdef\blx@refcontext@sorting{\blx@sorting}% - \gdef\blx@refcontext@sortingnamekey{global}% - \xdef\blx@refcontext@context{\blx@refcontext@sorting/\blx@refcontext@sortingnamekey}} - -\define@key{blx@refcontext}{sorting}{\gdef\blx@refcontext@sorting{#1}} -\define@key{blx@refcontext}{sortingnamekeyscheme}{\gdef\blx@refcontext@sortingnamekey{#1}} - -% [refcontext keys]{<keyword1>,<keyword2>,...} -\def\assignrefcontextkeyws[#1]#2{% - \edef\blx@tempa{\blx@sorting}% - \def\blx@tempb{global}% - \setkeys{blx@assignrefcontext}{#1}% - \def\do##1{% - \listxadd\blx@assignedrefcontextkeywlist{##1}% - \csxdef{blx@assignedrefcontextkeyws@\the\c@refsection @##1}{\blx@tempa/\blx@tempb}} - \docsvlist{#2}} - -% [refcontext keys]{<category1>,<category2>,...} -\def\assignrefcontextcats[#1]#2{% - \edef\blx@tempa{\blx@sorting}% - \def\blx@tempb{global}% - \setkeys{blx@assignrefcontext}{#1}% - \def\do##1{% - \listxadd\blx@assignedrefcontextcatlist{##1}% - \csxdef{blx@assignedrefcontextcats@\the\c@refsection @##1}{\blx@tempa/\blx@tempb}} - \docsvlist{#2}} - -% [refcontext keys]{<entrykey1>,<entrykey2>,...} -\def\assignrefcontextentries[#1]#2{% - \edef\blx@tempa{\blx@sorting}% - \def\blx@tempb{global}% - \setkeys{blx@assignrefcontext}{#1}% - \def\do##1{% - \csxdef{blx@assignedrefcontextkeys@\the\c@refsection @##1}{\blx@tempa/\blx@tempb}}% - \docsvlist{#2}} - -\define@key{blx@assignrefcontext}{sorting}{\def\blx@tempa{#1}} -\define@key{blx@assignrefcontext}{sortingnamekeyscheme}{\def\blx@tempb{#1}} - -% Reference sections -\newrobustcmd*{\newrefsection}{% - \ifnum\c@refsection>\z@ - \endrefsection - \fi - \refsection} -\let\blx@newrefsection\newrefsection - -\newrobustcmd*{\refsection}{% - \begingroup - \edef\on@line{\on@line}% - \ifnum\c@refsection>\z@ - \blx@err@nestenv{refsection}% - \blx@endrefsection - \fi - \ifnum\c@refsegment>\z@ - \blx@err@nestenv{refsection}% - \blx@endrefsegment - \fi - \@ifnextchar[%] - {\blx@refsection} - {\blx@refsection[]}} - -\def\blx@refsection{% - \begingroup - \blx@hook@fileverb - \blx@refsection@i} - -\def\blx@refsection@i[#1]{% - \endgroup - \global\advance\blx@maxsection\@ne - \global\c@refsection\blx@maxsection - \expandafter\newcount\csname blx@maxsegment@\the\c@refsection\endcsname - \expandafter\newcount\csname blx@sectionciteorder@\the\c@refsection\endcsname - \blx@inf@refsec - \blx@secinit - \if@filesw - \blx@auxwrite\@mainaux{}{% - \string\abx@aux@refsection{\the\c@refsection}{\the\c@page}}% - \ifblank{#1} - {} - {\let\blx@bibfiles\@empty - % 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'}% - \label{refsection:\the\c@refsection}% - \endgroup} - -\def\blx@refsection@addfile#1{% - \ifcsdef{blx@res@labl@#1} - {\blx@refsection@addfile@i{\csuse{blx@res@labl@#1}}} - {\blx@refsection@addfile@i{#1}}} - -\def\blx@refsection@addfile@i#1{% - \ifcsdef{blx@res@loca@#1} - {\listeadd\blx@bibfiles{#1}} - {\listeadd\blx@bibfiles{\blx@stripbib{#1}\detokenize{.bib}}}} - -\def\blx@refsection@biber{% - \blx@regbibfiles\jobname\blx@bibfiles - \begingroup - \let\blx@tempa\@empty - \blx@bibdata\blx@tempa\blx@bibfiles - \blx@auxwrite\blx@bcfout - {\let\do\blx@datasource} - {\blx@xml@endsection\blx@nl - \blx@xml@comment{SECTION \the\c@refsection}% - \blx@xml@bibdata{\the\c@refsection}{\blx@tempa}% - \blx@xml@section{\the\c@refsection}}% - \endgroup} - -\protected\def\endrefsection{% - \blx@endrefsection - \blx@inf@refsec} - -\def\blx@endrefsection{% - \blx@endrefsegment - \blx@endrefsection@biber - \global\c@refsection\z@} - -\def\blx@endrefsection@biber{% - % make sure we always output aliases to the .bcf otherwise after their - % first resolution by biber, they will be invisible to subsequent biber - % runs since biblatex will resolve the \keyalias{} macro to the main - % entry key, biber won't put \keyalias{}in the .bbl on subsequent runs - % and biblatex will report a missing citekey - \def\do##1{% - % Make sure this counter exists. Sometimes it might not when using, e.g: - % refsection=chapter and \includeonly to put in the chapters or when - % inserting citations into table of contents - \ifcsname blx@sectionciteorder@\the\c@refsection\endcsname\else - \expandafter\newcount\csname blx@sectionciteorder@\the\c@refsection\endcsname - \fi - \global\advance\csname blx@sectionciteorder@\the\c@refsection\endcsname\@ne - \blx@auxwrite\blx@bcfout{}{\blx@xml@citekey{##1}{\expandafter\the\csname blx@sectionciteorder@\the\c@refsection\endcsname}}}% - \dolistcsloop{blx@keyaliases@\the\c@refsection}% - \ifnum\c@refsection>\z@ - \blx@auxwrite\blx@bcfout{}{% - \blx@xml@endsection\blx@nl - \blx@xml@comment{SECTION 0 (cont.)}% - \blx@xml@section{0}}% - \fi} - -\AtEndDocument{% - \endrefcontext - \blx@endrefsection - \def\abx@aux@refsection#1#2{\blx@addchecksum{#1}{#2}}} - -\protected\def\abx@aux@refsection#1#2{% - \ifnum#1>\blx@maxsection - \global\blx@maxsection#1\relax - \fi - \blx@addchecksum{#1}{#2}} - -% Reference segments - -\newrobustcmd*{\newrefsegment}{% - \ifnum\c@refsegment>\z@ - \blx@endrefsegment - \fi - \refsegment} -\let\blx@newrefsegment\newrefsegment - -\newrobustcmd*{\refsegment}{% - \ifnum\c@refsegment>\z@ - \blx@err@nestenv{refsegment}% - \blx@endrefsegment - \fi - \global\advance\csname blx@maxsegment@\the\c@refsection\endcsname\@ne - \global\c@refsegment\csname blx@maxsegment@\the\c@refsection\endcsname - \blx@inf@refseg - \blx@info{Setting label 'refsegment:\the\c@refsection\the\c@refsegment'}% - \label{refsegment:\the\c@refsection\the\c@refsegment}% - \ifcsundef{blx@segm@\the\c@refsection @\the\c@refsegment} - {\global\cslet{blx@segm@\the\c@refsection @\the\c@refsegment}\@empty} - {}} - -\protected\def\endrefsegment{% - \blx@endrefsegment - \blx@inf@refseg} - -\def\blx@endrefsegment{% - \global\c@refsegment\z@} - -% Reference section/segment auto-reset -% we are prepending to the commands so that the resets happen before -% the part title is typeset otherwise \cites in there could be "ibid" -% which makes no sense -\def\blx@refpatch@part#1{% - \ifundef\part - {\blx@err@nodocdiv{part}} - {\toggletrue{blx@tempa}% - \def\do##1{% - \pretocmd##1{#1} - {\togglefalse{blx@tempa}\listbreak} - {}}% - \docsvlist{% - \H@old@part,% hyperref - \NR@part,% nameref - \@part}% latex/koma-script/memoir - \iftoggle{blx@tempa} - {\blx@err@patch{\string\@part}} - {}% - \let\do\noexpand}} - -\def\blx@refpatch@chapter#1{% - \ifundef\chapter - {\blx@err@nodocdiv{chapter}} - {\pretocmd\@makechapterhead{#1} - {} - {\blx@err@patch{\string\@makechapterhead}}}} - -\def\blx@refpatch@sect#1{% - \ifcsundef{#1} - {\blx@err@nodocdiv{#1}\@gobbletwo} - {\blx@refpatch@sect@i}} - -\edef\blx@refpatch@sect@i#1#2{% - \def\noexpand\do##1{% - \pretocmd##1% - {\noexpand\blx@refpatch@sect@ii{#1}{#2}{\string#2}} - {\togglefalse{blx@tempa}\noexpand\listbreak} - {}}% - \noexpand\blx@refpatch@sect@iii} - -\def\blx@refpatch@sect@ii#1#2#3{% - \ifnumequal{#2}{#3}{#1}{}} - -\def\blx@refpatch@sect@iii{% - \toggletrue{blx@tempa}% - \docsvlist{% order does matter: - \H@old@sectm@m,% memoir+hyperref (what a mess...) - \M@sect,% memoir - \H@old@sect,% hyperref - \NR@sect,% nameref - \scr@sect,% koma-script 3.x - \@sect}% latex - \iftoggle{blx@tempa} - {\blx@err@patch{\string\@sect}} - {}% - \let\do\noexpand} - -% Bibliography categories - -\let\blx@categories\@empty - -% {<category>} -\newrobustcmd*{\DeclareBibliographyCategory}[1]{% - \ifcsundef{blx@catg@#1} - {\global\cslet{blx@catg@#1}\@empty - \listgadd\blx@categories{#1}} - {\blx@error - {Category '#1' already declared} - {The bibliography category '#1'\MessageBreak - has already been declared}}} -\@onlypreamble\DeclareBibliographyCategory - -% {<category>}{<entrykey>,...} -\newrobustcmd*{\addtocategory}[2]{% - \ifcsundef{blx@catg@#1} - {\blx@error - {Category '#1' not declared} - {Use \string\DeclareBibliographyCategory\space to declare}} - {\AfterPreamble{% - \blx@xsanitizeafter{\forcsvlist{\blx@addtocategory{#1}}}{#2}}}} - -% {<category>}{<entrykey>,...} -\def\blx@addtocategory#1#2{% - % If we are adding a set member to a category, make sure we also add the - % set parent if it is cited. If it is cited, we should be using the set - % parent in the category, not the set child member. blx@setc@... will - % only exist if the set parent is also cited as it is only defined when a - % member contains \inset which only happens when the set parent is cited. - \ifcsdef{blx@setc@\the\c@refsection @#2} - {\blx@auxwrite\@mainaux{}{\string\abx@aux@category{#1}{\csuse{blx@setc@\the\c@refsection @#2}}}% - \abx@aux@category{#1}{\csuse{blx@setc@\the\c@refsection @#2}}} - {}% - \blx@auxwrite\@mainaux{}{\string\abx@aux@category{#1}{#2}}% - \abx@aux@category{#1}{#2}} - -% {<category>}{<entrykey>,...} -\protected\def\abx@aux@category#1#2{% - \xifinlistcs{\detokenize{#2}}{blx@catg@#1} - {} - {\listcsxadd{blx@catg@#1}{\detokenize{#2}}}} - -\AtEndDocument{\let\abx@aux@category\@gobbletwo} - -% [<options>]{<resource>,...} -\renewrobustcmd*{\bibliography}[1]{% - \begingroup - \def\blx@tempa{file}% - \def\blx@tempb{bibtex}% - \def\blx@tempc{local}% - \blx@xsanitizeafter{\forcsvlist\blx@addbib@legacy}{#1}% - \endgroup} -\@onlypreamble\bibliography - -\def\blx@addbib@legacy#1{% - \begingroup - \edef\blx@tempa{\endgroup - \noexpand\blx@addbib@resource{\blx@stripbib{#1}\detokenize{.bib}}}% - \blx@tempa} - -\def\blx@stripbib#1{% - \expandafter\blx@stripbib@i\detokenize{#1.bib}&} -\edef\blx@stripbib@i{% - \def\noexpand\blx@stripbib@i##1\detokenize{.bib}##2&} -\blx@stripbib@i{#1} - -% [<options>]{<resource>,...} -\newrobustcmd*{\addbibresource}{% - \blx@addbib\blx@addbib@resource} -\@onlypreamble\addbibresource - -\newrobustcmd*{\addglobalbib}{% - \blx@addbib\blx@addbib@global} -\@onlypreamble\addglobalbib - -\newrobustcmd*{\addsectionbib}{% - \blx@addbib\blx@addbib@register} -\@onlypreamble\addsectionbib - -\def\blx@addbib#1{% - \@ifnextchar[%] - {\blx@addbib@i{#1}} - {\blx@addbib@i{#1}[]}} - -\def\blx@addbib@i#1[#2]{% - \begingroup - \blx@hook@fileverb - \blx@addbib@ii{#1}{#2}} - -\def\blx@addbib@ii#1#2#3{% - \endgroup - \begingroup - \def\blx@tempa{file}% - \def\blx@tempb{bibtex}% - \def\blx@tempc{local}% - \undef\blx@tempd - \setkeys{blx@addbib}{#2}% - \blx@xsanitizeafter{#1}{#3}% - \endgroup} - -\def\blx@hook@fileverb{% - \let\do\@makeother - \dospecials - \catcode`\\=\z@ - \catcode`\{=\@ne - \catcode`\}=\tw@} - -\define@key{blx@addbib}{type}{\def\blx@tempa{#1}} -\define@key{blx@addbib}{datatype}{\def\blx@tempb{#1}} -\define@key{blx@addbib}{location}{\def\blx@tempc{#1}} -\define@key{blx@addbib}{label}{\edef\blx@tempd{\detokenize{#1}}} - -% \blx@res@type@<resource> resource -> type -% \blx@res@data@<resource> resource -> datatype -% \blx@res@loca@<resource> resource -> datatype -% \blx@res@labl@<resource> label -> resource - -\def\blx@addbib@register#1{% - \csxdef{blx@res@type@#1}{\blx@tempa}% - \csxdef{blx@res@data@#1}{\blx@tempb}% - \csxdef{blx@res@loca@#1}{\blx@tempc}% - \ifdef\blx@tempd - {\csxdef{blx@res@labl@\blx@tempd}{#1}} - {}} - -\def\blx@addbib@resource#1{% - \blx@addbib@register{#1}% - \listgadd\blx@bibfiles{#1}% - \blx@regbibfile\jobname{#1}} - -\def\blx@addbib@global#1{% - \blx@addbib@resource{#1}% - \listgadd\blx@bibfiles@global{#1}} - -\let\blx@bibfiles\@empty -\let\blx@bibfiles@global\@empty - -\def\blx@bibdata#1#2{% - \forlistloop{\blx@bibdata@i{#1}}#2} -\def\blx@bibdata@i#1#2{% - \blx@xmlsanitizeafter{\blx@bibdata@ii{#1}{#2}}{#2}} -\def\blx@bibdata@ii#1#2#3{% - \eappto#1{% - \blx@xml@datasource - {\ifcsdef{blx@res@type@#2} - {\csuse{blx@res@type@#2}} - {file}} - {\ifcsdef{blx@res@data@#2} - {\csuse{blx@res@data@#2}} - {bibtex}} - {#3}}} - -%% Citations - -\newrobustcmd*{\AtEveryCite}{\gappto\blx@hook@cite} -\newrobustcmd*{\AtEveryCitekey}{\gappto\blx@hook@citekey} -\newrobustcmd*{\AtEveryMultiCite}{\gappto\blx@hook@mcite} -\@onlypreamble\AtEveryCite -\@onlypreamble\AtEveryCitekey -\@onlypreamble\AtEveryMultiCite - -\newrobustcmd*{\AtEachCitekey}{% - \iftoggle{blx@citation}{\appto\blx@hook@citekey}{\@gobble}} - -\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 - {\gdef\blx@hook@cite@next{\global\undef\blx@hook@cite@next}} - {}% - \gappto\blx@hook@cite@next} - -\newrobustcmd*{\AtNextCitekey}{% - \ifundef\blx@hook@citekey@next - {\gdef\blx@hook@citekey@next{\global\undef\blx@hook@citekey@next}} - {}% - \gappto\blx@hook@citekey@next} - -\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'}{}{}{} - {\blx@error - {Style '#1' not found} - {The citation style '#1' could not be found}}} -\@onlypreamble\RequireCitationStyle - -% {<code>} - -\newrobustcmd*{\InitializeCitationStyle}{\appto\blx@hook@cbxinit} -\@onlypreamble\InitializeCitationStyle - -% {<code>} - -\newrobustcmd*{\OnManualCitation}{\appto\blx@hook@mancite} -\@onlypreamble\OnManualCitation - -\newrobustcmd*{\mancite}{% - \csuse{blx@hook@mancite}% - \blx@ibidreset - \blx@idemreset - \blx@opcitreset - \blx@loccitreset} - -% {<entrykey>}{<message>} -% Just a wrapper to suppress citation tracking in toc/lof etc. -\def\blx@citation#1#2{% - \ifbool{citerequest} - {\blx@citation@entry{#1}{#2}} - {}} - -\def\blx@citation@entry#1#2{% - \blx@bibreq{#1}% - \ifinlist{#1}{\blx@cites} - {} - {\listgadd{\blx@cites}{#1}% - \blx@auxwrite\@mainaux{}{\string\abx@aux@cite{#1}}}% - \ifinlistcs{#1}{blx@segm@\the\c@refsection @\the\c@refsegment} - {} - {\listcsgadd{blx@segm@\the\c@refsection @\the\c@refsegment}{#1}}% - \blx@ifdata{#1} - {} - {\ifcsdef{blx@miss@\the\c@refsection} - {\ifinlistcs{#1}{blx@miss@\the\c@refsection} - {} - {\blx@logreq@active{#2{#1}}}} - {\blx@logreq@active{#2{#1}}}}} - -\def\blx@citation@set#1#2{% - \blx@citation@entry{#1}{#2}% - \begingroup - \def\do##1{\blx@citation@entry{##1}\blx@msg@cundef}% - \expandafter\expandafter\expandafter\docsvlist - \expandafter\expandafter\expandafter{% - \csname blx@setp@\the\c@refsection @#1\endcsname}% - \endgroup} - -\def\blx@citation@inset#1#2{% - \blx@citation@entry{#1}{#2}% - \expandafter\expandafter\expandafter\blx@citation@inset@i - \expandafter\expandafter\expandafter{% - \csname blx@setc@\the\c@refsection @#1\endcsname}\blx@msg@cundef} - -\def\blx@citation@inset@i#1{% - \ifcsdef{blx@setp@\the\c@refsection @#1} - {\blx@citation@set{#1}} - {\blx@citation@entry{#1}}} - -\def\blx@citation@all{% - \ifbool{citerequest} - {\blx@bibreq{*}% - \global\csletcs - {blx@segm@\the\c@refsection @\the\c@refsegment} - {blx@slist@entry@\the\c@refsection @\blx@refcontext@context}% - \ifcsvoid{blx@slist@entry@\the\c@refsection @\blx@refcontext@context} - {\blx@logreq@active{}} - {}} - {}} - -\protected\def\blx@bibreq#1{% - \begingroup - \blx@xmlsanitizeafter{\def\blx@tempa}{#1}% - % citeall is always order "0" - this makes no real difference as biber - % ignores all other citekeys in the section if citeall is present - \ifstrequal{*}{#1} - {\blx@auxwrite\blx@bcfout{}{\blx@xml@citekey{\blx@tempa}{0}}} - {\blx@auxwrite\blx@bcfout{}{\blx@xml@citekey{\blx@tempa}{\expandafter\the\csname blx@sectionciteorder@\the\c@refsection\endcsname}}}% - \endgroup} - -% {<set>}{<key1,key2,key3>} - -\newrobustcmd*{\defbibentryset}[2]{% - \@bsphack - \begingroup - \blx@xsanitizeafter{\def\blx@tempa}{#1}% - \let\blx@tempb\@empty - \let\blx@tempc\@empty - \blx@xsanitizeafter{\forcsvlist\blx@defentryset@add}{#2}% - \ifcsdef{blx@set@\the\c@refsection @\blx@tempa} - {\expandafter\ifdefequal - \csname blx@set@\the\c@refsection @\blx@tempa\endcsname - \blx@tempb - {} - {\blx@error - {Conflicting definitions of '\blx@tempa'} - {The entry set '\blx@tempa' been defined before.\MessageBreak - old: \blx@tempa\space = % - \csuse{blx@set@\the\c@refsection @\blx@tempa}\MessageBreak - new: \blx@tempa\space = \blx@tempb\MessageBreak - I'm ignoring the new definition}}} - {\global\cslet{blx@set@\the\c@refsection @\blx@tempa}\blx@tempb - \edef\blx@tempa{% - \AfterPreamble{\blx@setreq{\blx@tempa}{\blx@tempb}}}% - \blx@tempa}% - \endgroup - \@esphack} - -\def\blx@defentryset@add#1{% - \edef\blx@tempb{\blx@tempb\blx@tempc#1}% - \def\blx@tempc{,}} - -\protected\def\blx@setreq#1#2{% - \begingroup - \blx@xmlsanitizeafter{\def\blx@tempa}{#1}% - \blx@xmlsanitizeafter{\def\blx@tempb}{#2}% - \blx@auxwrite\blx@bcfout{}{\blx@xml@citeset{\blx@tempa}{\blx@tempb}}% - \endgroup} - -% {<entrykey>,...} -\protected\def\blx@citeloop#1{% - \begingroup - % Make sure this counter exists. Sometimes it might not when using, e.g: - % refsection=chapter and \includeonly to put in the chapters or when - % inserting citations into table of contents - \ifcsname blx@sectionciteorder@\the\c@refsection\endcsname\else - \expandafter\newcount\csname blx@sectionciteorder@\the\c@refsection\endcsname - \fi - \global\advance\csname blx@sectionciteorder@\the\c@refsection\endcsname\@ne - \blx@tempcnta\z@ - \blx@tempcntb\z@ - \let\blx@tempa\@empty - \forcsvlist\blx@citeadd{#1}% - \blx@thenotecheck - \ifnum\blx@tempcnta>\z@ - \ifnum\blx@tempcntb>\z@ - \multicitedelim - \fi - \fi - \letcs\blx@tempb{blx@slist@centry@\the\c@refsection @\blx@refcontext@context}% - \blx@thecitesort - \edef\blx@tempa{\endgroup - \c@citecount\z@ - \c@citetotal\the\blx@tempcnta\relax - \unexpanded{\forlistloop\blx@citeprint}{\blx@tempb}}% - \blx@tempa} - -\def\blx@notecheck{% - \ifnum\blx@tempcnta>\@ne - \blx@warning{% - Package option 'sortcites' enabled.\MessageBreak - Verify postnote placement}% - \fi} - -\def\blx@citesort{% - \ifnum\blx@tempcnta>\@ne - \blx@filtercitesort\blx@tempb{blx@tempa}% - \else - \blx@citenosort - \fi} - -\def\blx@citenosort{% - \let\blx@tempb\blx@tempa} - -% {<entrykey>} -\def\blx@citeadd#1{% - \ifcsdef{blx@keyalias@\the\c@refsection @#1} - {\edef\blx@realkey{\csuse{blx@keyalias@\the\c@refsection @#1}}} - {\def\blx@realkey{#1}}% - \expandafter\blx@citation\expandafter{\blx@realkey}\blx@msg@cundefon - \expandafter\blx@ifdata\expandafter{\blx@realkey} - {\advance\blx@tempcnta\@ne - \listeadd\blx@tempa{\blx@realkey}} - {\ifnum\blx@tempcntb>\z@\multicitedelim\fi - \expandafter\abx@missing\expandafter{\blx@realkey}% - \advance\blx@tempcntb\@ne}} - -% set refcontext for one citation key from auto-assign \assignrefcontext* -% macros, if any -% <entrykey> -\def\blx@getrefcontext#1{% - \let\blx@refcontext@context@saved\blx@refcontext@context - \ifdef\blx@assignedrefcontextkeywlist - {\def\do##1{% - \blx@imc@ifentrykeyword{#1}{##1} - {\letcs\blx@refcontext@context{blx@assignedrefcontextkeyws@\the\c@refsection @##1}} - {}}% - \dolistloop\blx@assignedrefcontextkeywlist} - {}% - \ifdef\blx@assignedrefcontextcatlist - {\def\do##1{% - \blx@imc@ifentrycategory{#1}{##1} - {\letcs\blx@refcontext@context{blx@assignedrefcontextcats@\the\c@refsection @##1}} - {}}% - \dolistloop\blx@assignedrefcontextcatlist} - {}% - \ifcsdef{blx@assignedrefcontextkeys@\the\c@refsection @#1} - {\letcs\blx@refcontext@context{blx@assignedrefcontextkeys@\the\c@refsection @#1}} - {}} - -% {<entrykey>} -\protected\def\blx@citeprint#1{% - \blx@getrefcontext{#1}% - \advance\c@citecount\@ne - \addtocounter{instcount}\@ne - \ifnum\c@citecount=\@ne - \blx@getdata@cite{#1}% - \blx@precode - \ifnum\c@citetotal>\@ne - \blx@resetdata - \fi - \else - \blx@dlimcode - \fi - \begingroup - \ifnum\c@citetotal>\@ne - \blx@getdata@cite{#1}% - \fi - \blx@entrysetcount - \blx@setoptions@type\abx@field@entrytype - \blx@setoptions@entry - \blx@backref{#1}% - \blx@pagetracker - \csuse{blx@hook@citekey}% - \csuse{blx@hook@citekey@next}% - \blx@beglangcite - \blx@execute - \blx@loopcode - \blx@citecounter - \blx@citetracker - \blx@ibidtracker - \blx@idemtracker - \blx@opcittracker - \blx@loccittracker - \ifnum\c@citecount=\c@citetotal - \def\blx@thecheckpunct{\blx@err@nestcite\@gobble}% - \blx@postcode - \fi - \blx@endlangcite - \endgroup - \let\blx@refcontext@context\blx@refcontext@context@saved} - -% cite counter - -\def\blx@citecounter@global{% - \ifbool{@filesw} - {\ifbool{citetracker} - {\immediate\write\@mainaux{% - \string\abx@aux@count - {\the\c@refsection}{\abx@field@entrykey}}} - {}} - {}} - -\def\blx@citecounter@context{% - \ifbool{@filesw} - {\ifbool{citetracker} - {\immediate\write\@mainaux{% - \iftoggle{blx@footnote} - {\string\abx@aux@fncount} - {\string\abx@aux@count}% - {\the\c@refsection}{\abx@field@entrykey}}} - {}} - {}} - -% {<refsection>}{<entrykey>} - -\protected\def\blx@aux@count#1#2{% - \csnumgdef{blx@count@#1@\detokenize{#2}}{\csuse{blx@count@#1@\detokenize{#2}}+1}} -\protected\def\blx@aux@fncount#1#2{% - \csnumgdef{blx@fncount@#1@\detokenize{#2}}{\csuse{blx@fncount@#1@\detokenize{#2}}+1}} - -\let\abx@aux@count\@gobbletwo -\let\abx@aux@fncount\@gobbletwo - -\AtEndDocument{% - \let\abx@aux@count\@gobbletwo - \let\abx@aux@fncount\@gobbletwo} - -\protected\def\blx@setcitecounter@global{% - \c@citecounter0% - \csuse{blx@count@\the\c@refsection @\abx@field@entrykey}% - \relax} - -\protected\def\blx@setcitecounter@context{% - \c@citecounter0% - \iftoggle{blx@footnote} - {\csuse{blx@fncount@\the\c@refsection @\abx@field@entrykey}} - {\csuse{blx@count@\the\c@refsection @\abx@field@entrykey}}% - \relax} - -% cite tracker - -\def\blx@citetracker@global{% - \ifbool{citetracker} - {\xifinlistcs\abx@field@entrykey{blx@bsee@\the\c@refsection} - {} - {\listcsxadd{blx@bsee@\the\c@refsection}\abx@field@entrykey}} - {}} - -\def\blx@citetracker@context{% - \ifbool{citetracker} - {\iftoggle{blx@footnote} - {\xifinlistcs\abx@field@entrykey{blx@fsee@\the\c@refsection} - {} - {\listcsxadd{blx@fsee@\the\c@refsection}\abx@field@entrykey}} - {\xifinlistcs{\abx@field@entrykey}{blx@bsee@\the\c@refsection} - {} - {\listcsxadd{blx@bsee@\the\c@refsection}\abx@field@entrykey}}} - {}} - -\protected\appto\abx@savetrackers{% - \global\csletcs{blx@saved@bsee@\the\c@refsection}{blx@bsee@\the\c@refsection}% - \global\csletcs{blx@saved@fsee@\the\c@refsection}{blx@fsee@\the\c@refsection}} - -\protected\appto\abx@resttrackers{% - \global\csletcs{blx@bsee@\the\c@refsection}{blx@saved@bsee@\the\c@refsection}% - \global\csletcs{blx@fsee@\the\c@refsection}{blx@saved@fsee@\the\c@refsection}} - -\protected\appto\abx@cleartrackers{% - \global\cslet{blx@saved@bsee@\the\c@refsection}\@empty - \global\cslet{blx@saved@fsee@\the\c@refsection}\@empty} - -% ibidem tracker - -\def\blx@ibidtracker@global{% - \ifbool{citetracker} - {\global\let\blx@lastkey@text\abx@field@entrykey} - {}} - -\def\blx@ibidtracker@context{% - \ifbool{citetracker} - {\iftoggle{blx@footnote} - {\global\let\blx@lastkey@foot\abx@field@entrykey} - {\global\let\blx@lastkey@text\abx@field@entrykey}} - {}} - -\def\blx@ibidtracker@strict{% - \blx@ifcitesingle - {\blx@ibidtracker@global} - {\blx@ibidreset@global}}% - -\def\blx@ibidtracker@constrict{% - \blx@ifcitesingle - {\blx@mpfnsave - \blx@ibidtracker@context} - {\blx@ibidreset@context}}% - -\def\blx@ibidreset@force{% - \global\undef\blx@lastkey@text - \global\undef\blx@lastkey@foot - \blx@mpfnreset} - -\def\blx@ibidreset@global{% - \global\undef\blx@lastkey@text} - -\def\blx@ibidreset@context{% - \iftoggle{blx@footnote} - {\blx@mpfnreset - \global\undef\blx@lastkey@foot} - {\global\undef\blx@lastkey@text}} - -\protected\appto\abx@savetrackers{% - \global\let\blx@saved@lastkey@text\blx@lastkey@text - \global\let\blx@saved@lastkey@foot\blx@lastkey@foot} - -\protected\appto\abx@resttrackers{% - \global\let\blx@lastkey@text\blx@saved@lastkey@text - \global\let\blx@lastkey@foot\blx@saved@lastkey@foot} - -\protected\appto\abx@cleartrackers{% - \global\undef\blx@saved@lastkey@text - \global\undef\blx@saved@lastkey@foot} - -% idem tracker - -\def\blx@idemtracker@global{% - \ifbool{citetracker} - {\global\let\blx@lasthash@text\abx@field@fullhash} - {}} - -\def\blx@idemtracker@context{% - \ifbool{citetracker} - {\iftoggle{blx@footnote} - {\global\let\blx@lasthash@foot\abx@field@fullhash} - {\global\let\blx@lasthash@text\abx@field@fullhash}} - {}} - -\let\blx@idemtracker@strict\blx@idemtracker@global - -\def\blx@idemtracker@constrict{% - \blx@mpfnsave - \blx@idemtracker@context} - -\def\blx@idemreset@force{% - \global\undef\blx@lasthash@text - \global\undef\blx@lasthash@foot - \blx@mpfnreset} - -\def\blx@idemreset@global{% - \global\undef\blx@lasthash@text} - -\def\blx@idemreset@context{% - \iftoggle{blx@footnote} - {\blx@mpfnreset - \global\undef\blx@lasthash@foot} - {\global\undef\blx@lasthash@text}} - -\protected\appto\abx@savetrackers{% - \global\let\blx@saved@lasthash@text\blx@lasthash@text - \global\let\blx@saved@lasthash@text\blx@lasthash@text} - -\protected\appto\abx@resttrackers{% - \global\let\blx@lasthash@text\blx@saved@lasthash@text - \global\let\blx@lasthash@text\blx@saved@lasthash@text} - -\protected\appto\abx@cleartrackers{% - \global\undef\blx@saved@lasthash@text - \global\undef\blx@saved@lasthash@foot} - -% opcit tracker - -\def\blx@opcittracker@global{% - \ifbool{citetracker} - {\blx@opcit@tracker{text}} - {}} - -\def\blx@opcittracker@context{% - \ifbool{citetracker} - {\iftoggle{blx@footnote} - {\blx@opcit@tracker{foot}} - {\blx@opcit@tracker{text}}} - {}} - -\def\blx@opcittracker@strict{% - \blx@ifcitesingle - {\blx@opcittracker@global} - {\blx@opcitreset@global}}% - -\def\blx@opcittracker@constrict{% - \blx@ifcitesingle - {\blx@mpfnsave - \blx@opcittracker@context} - {\blx@opcitreset@context}}% - -\def\blx@opcit@tracker#1{% - \blx@imc@iffieldundef{namehash} - {} - {\global\cslet{blx@lastkey@#1@\abx@field@namehash}\abx@field@entrykey - \xifinlistcs\abx@field@namehash{blx@trackhash@#1} - {} - {\listcsxadd{blx@trackhash@#1}\abx@field@namehash}}} - -\def\blx@opcit@reset#1{% - \begingroup - \def\do##1{\global\csundef{blx@lastkey@#1@##1}}% - \dolistcsloop{blx@trackhash@#1}% - \global\cslet{blx@trackhash@#1}\@empty - \endgroup} - -\def\blx@opcitreset@force{% - \blx@opcit@reset{text}% - \blx@opcit@reset{foot}% - \blx@mpfnreset} - -\def\blx@opcitreset@global{% - \blx@opcit@reset{text}} - -\def\blx@opcitreset@context{% - \iftoggle{blx@footnote} - {\blx@opcit@reset{foot}% - \blx@mpfnreset} - {\blx@opcit@reset{text}}} - -\let\blx@trackhash@text\@empty -\let\blx@trackhash@foot\@empty - -\protected\appto\abx@savetrackers{% - \begingroup - \def\do#1{\global\csletcs{blx@saved@lastkey@text@#1}{blx@lastkey@text@#1}}% - \dolistloop\blx@trackhash@text - \global\let\blx@saved@trackhash@text\blx@trackhash@text - \def\do#1{\global\csletcs{blx@saved@lastkey@foot@#1}{blx@lastkey@foot@#1}}% - \dolistloop\blx@trackhash@foot - \global\let\blx@saved@trackhash@foot\blx@trackhash@foot - \endgroup} - -\protected\appto\abx@resttrackers{% - \begingroup - \blx@opcit@reset{text}% - \global\let\blx@trackhash@text\blx@saved@trackhash@text - \def\do#1{\global\csletcs{blx@lastkey@text@#1}{blx@saved@lastkey@text@#1}}% - \dolistloop\blx@trackhash@text - \blx@opcit@reset{foot}% - \global\let\blx@trackhash@foot\blx@saved@trackhash@foot - \def\do#1{\global\csletcs{blx@lastkey@foot@#1}{blx@saved@lastkey@foot@#1}}% - \dolistloop\blx@trackhash@foot - \endgroup} - -\protected\appto\abx@cleartrackers{% - \begingroup - \def\do#1{\global\csundef{blx@saved@lastkey@text@#1}}% - \dolistloop\blx@saved@trackhash@text - \global\undef\blx@saved@trackhash@text - \def\do#1{\global\csundef{blx@saved@lastkey@foot@#1}}% - \dolistloop\blx@saved@trackhash@foot - \global\undef\blx@saved@trackhash@foot - \endgroup} - -% loccit tracker - -\def\blx@loccittracker@global{% - \ifbool{citetracker} - {\blx@loccit@tracker{text}} - {}} - -\def\blx@loccittracker@context{% - \ifbool{citetracker} - {\iftoggle{blx@footnote} - {\blx@loccit@tracker{foot}} - {\blx@loccit@tracker{text}}} - {}} - -\def\blx@loccittracker@strict{% - \ifbool{citetracker} - {\blx@loccit@stricttracker{text}} - {}} - -\def\blx@loccittracker@constrict{% - \ifbool{citetracker} - {\iftoggle{blx@footnote} - {\blx@mpfnsave - \blx@loccit@stricttracker{foot}} - {\blx@loccit@stricttracker{text}}} - {}} - -\def\blx@loccit@tracker#1{% - \global\csundef{blx@lastnote@#1@\abx@field@entrykey}% - \blx@imc@iffieldundef{postnote} - {} - {\global\cslet{blx@lastnote@#1@\abx@field@entrykey}\abx@field@postnote - \xifinlistcs\abx@field@entrykey{blx@trackkeys@#1} - {} - {\listcsxadd{blx@trackkeys@#1}\abx@field@entrykey}}} - -\def\blx@loccit@stricttracker#1{% - \global\csundef{blx@lastnote@#1@\abx@field@entrykey}% - \blx@imc@iffieldundef{postnote} - {} - {\blx@ifcitesingle - {\expandafter\blx@imc@ifpages - \expandafter{\abx@field@postnote} - {\global\cslet{blx@lastnote@#1@\abx@field@entrykey}\abx@field@postnote - \xifinlistcs\abx@field@entrykey{blx@trackkeys@#1} - {} - {\listcsxadd{blx@trackkeys@#1}\abx@field@entrykey}} - {}} - {}}} - -\def\blx@loccit@reset#1{% - \begingroup - \def\do##1{\global\csundef{blx@lastnote@#1@##1}}% - \dolistcsloop{blx@trackkeys@#1}% - \global\cslet{blx@trackkeys@#1}\@empty - \endgroup} - -\def\blx@loccitreset@force{% - \blx@loccit@reset{text}% - \blx@loccit@reset{foot}% - \blx@mpfnreset} - -\def\blx@loccitreset@global{% - \blx@loccit@reset{text}} - -\def\blx@loccitreset@context{% - \iftoggle{blx@footnote} - {\blx@loccit@reset{foot}% - \blx@mpfnreset} - {\blx@loccit@reset{text}}} - -\let\blx@trackkeys@text\@empty -\let\blx@trackkeys@foot\@empty - -\protected\appto\abx@savetrackers{% - \begingroup - \def\do#1{\global\csletcs{blx@saved@lastnote@text@#1}{blx@lastnote@text@#1}}% - \dolistloop\blx@trackkeys@text - \global\let\blx@saved@trackkeys@text\blx@trackkeys@text - \def\do#1{\global\csletcs{blx@saved@lastnote@foot@#1}{blx@lastnote@foot@#1}}% - \dolistloop\blx@trackkeys@foot - \global\let\blx@saved@trackkeys@foot\blx@trackkeys@foot - \endgroup} - -\protected\appto\abx@resttrackers{% - \begingroup - \blx@loccit@reset{text}% - \global\let\blx@trackkeys@text\blx@saved@trackkeys@text - \def\do#1{\global\csletcs{blx@lastnote@text@#1}{blx@saved@lastnote@text@#1}}% - \dolistloop\blx@trackkeys@text - \blx@loccit@reset{foot}% - \global\let\blx@trackkeys@foot\blx@saved@trackkeys@foot - \def\do#1{\global\csletcs{blx@lastnote@foot@#1}{blx@saved@lastnote@foot@#1}}% - \dolistloop\blx@trackkeys@foot - \endgroup} - -\protected\appto\abx@cleartrackers{% - \begingroup - \def\do#1{\global\csundef{blx@saved@lastnote@text@#1}}% - \dolistloop\blx@saved@trackkeys@text - \global\undef\blx@saved@trackkeys@text - \def\do#1{\global\csundef{blx@saved@lastnote@foot@#1}}% - \dolistloop\blx@saved@trackkeys@foot - \global\undef\blx@saved@trackkeys@foot - \endgroup} - -\def\blx@addbackref#1{% - \ifcsdef{blx@setp@\the\c@refsection @#1} - {\ifcase\blx@backrefsetstyle - \blx@addbackref@i{#1}% - \or - \blx@addbackref@ii{setp}{#1}% - \or - \blx@addbackref@i{#1}% - \or - \blx@addbackref@i{#1}% - \or - \blx@addbackref@i{#1}% - \blx@addbackref@ii{setp}{#1}% - \or - \blx@addbackref@i{#1}% - \blx@addbackref@ii{setp}{#1}% - \fi} - {\ifcsdef{blx@setc@\the\c@refsection @#1} - {\ifcase\blx@backrefsetstyle - \blx@addbackref@ii{setc}{#1}% - \or - \blx@addbackref@i{#1}% - \or - \blx@addbackref@i{#1}% - \or - \blx@addbackref@i{#1}% - \blx@addbackref@ii{setc}{#1}% - \or - \blx@addbackref@i{#1}% - \or - \blx@addbackref@i{#1}% - \blx@addbackref@ii{setc}{#1}% - \fi} - {\blx@addbackref@i{#1}}}} - -\def\blx@addbackref@i#1{% - \ifbacktracker - \blx@leavevmode - \if@filesw - \protected@write\@mainaux{}{\string\abx@aux@backref - {\the\c@instcount}{#1}{\the\c@refsection}% - {\thepage}{\noexpand\the\c@page}}% - \fi - \fi} - -\def\blx@addbackref@ii#1#2{% - \expandafter\expandafter\expandafter\forcsvlist - \expandafter\expandafter\expandafter\blx@addbackref@i - \expandafter\expandafter\expandafter{% - \csname blx@#1@\the\c@refsection @#2\endcsname}} - -% {<instcount>}{<entrykey>}{<refsection>}{<page>}{<page int>} -\protected\def\blx@aux@backref#1#2#3#4#5{% - \ifcsundef{blx@pref@#3@\detokenize{#2}} - {\global\cslet{blx@pref@#3@\detokenize{#2}}\@empty - \expandafter\blx@onlypreamble\csname blx@pref@#3@\detokenize{#2}\endcsname} - {}% - \ifinlistcs{#4}{blx@pref@#3@\detokenize{#2}} - {} - {\listcsgadd{blx@pref@#3@\detokenize{#2}}{#4}}% - \blx@addpagesum{#1}{#5}} - -\AtEndDocument{% - \def\abx@aux@backref#1#2#3#4#5{\blx@addpagesum{#1}{#5}}} - -% {<true>}{<false>} -\def\blx@ifcitesingle{% - \ifnum\c@citetotal=\@ne - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi} - -% hyperref interface - -\appto\blx@mkhyperref{% - \protected\def\blx@imc@bibhyperref{% - \@ifnextchar[%] - {\blx@bibhyperref} - {\blx@bibhyperref[\abx@field@entrykey]}}% - \ifundef\hyper@natanchorstart - {\long\def\blx@bibhyperref[#1]#2{% - \blx@sfsave\hyperlink{cite.\the\c@refsection @#1}{\blx@sfrest - #2% - \blx@sfsave}\blx@sfrest}% - \protected\long\def\blx@imc@bibhyperlink#1#2{% - \blx@sfsave\hyperlink{cite.\the\c@refsection:#1}{\blx@sfrest - #2% - \blx@sfsave}\blx@sfrest}% - \protected\long\def\blx@imc@bibhypertarget#1#2{% - \blx@sfsave\hypertarget{cite.\the\c@refsection:#1}{\blx@sfrest - #2% - \blx@sfsave}\blx@sfrest}}% - {\long\def\blx@bibhyperref[#1]#2{% - \blx@sfsave\hyper@natlinkstart{\the\c@refsection @#1}\blx@sfrest - #2% - \blx@sfsave\hyper@natlinkend\blx@sfrest}% - \protected\long\def\blx@imc@bibhyperlink#1#2{% - \blx@sfsave\hyper@natlinkstart{\the\c@refsection:#1}\blx@sfrest - #2% - \blx@sfsave\hyper@natlinkend\blx@sfrest}% - \protected\long\def\blx@imc@bibhypertarget#1#2{% - \blx@sfsave\hyper@natanchorstart{\the\c@refsection:#1}\blx@sfrest - #2% - \blx@sfsave\hyper@natanchorend\blx@sfrest}} - \let\blx@imc@ifhyperref\@firstoftwo - \def\blx@sf{\spacefactor}% - \def\blx@sfsave{% - \blx@leavevmode - \numgdef\blx@sf{\spacefactor}}% - \def\blx@sfrest{% - \ifhmode\spacefactor\blx@sf\relax\fi - \gdef\blx@sf{\spacefactor}}} - -\appto\blx@mknohyperref{% - \protected\def\blx@imc@bibhyperref{\@ifnextchar[\blx@nohyperref\@firstofone}% - \def\blx@nohyperref[#1]#2{#2}% - \let\blx@imc@bibhyperlink\@secondoftwo - \let\blx@imc@bibhypertarget\@secondoftwo - \let\blx@imc@ifhyperref\@secondoftwo} - -\blx@regimcs{% - \bibhyperref \bibhyperlink \bibhypertarget \ifhyperref} - -% {<entrykey>,...} -\protected\def\nocite#{\blx@nocite} - -\def\blx@nocite#1{% - \@bsphack - \AfterPreamble{% - \iftoggle{blx@bibliography} - {} - {\ifstrequal{*}{#1} - {\blx@citation@all} - {\blx@xsanitizeafter{\forcsvlist\blx@nocite@do}{#1}}}}% - \@esphack} - -\def\blx@nocite@do#1{% - % Make sure this counter exists. Sometimes it might not when using, e.g: - % refsection=chapter and \includeonly to put in the chapters or when - % inserting citations into table of contents - \ifcsname blx@sectionciteorder@\the\c@refsection\endcsname\else - \expandafter\newcount\csname blx@sectionciteorder@\the\c@refsection\endcsname - \fi - \global\advance\csname blx@sectionciteorder@\the\c@refsection\endcsname\@ne - \blx@citation{#1}\blx@msg@cundef} - -% {<macro>}[<arg1>][<arg2>]{<arg3>} -% => <macro>{<arg1>}{<arg2>}{<arg3>} -\protected\def\blx@citeargs#1{% - \@ifnextchar[%] - {\blx@citeargs@i{#1}} - {\blx@citeargs@iii{#1{}{}}}} -\long\def\blx@citeargs@i#1[#2]{% - \@ifnextchar[%] - {\blx@citeargs@ii{#1{#2}}} - {\blx@citeargs@iii{#1{}{#2}}}} -\long\def\blx@citeargs@ii#1[#2]{% - \blx@citeargs@iii{#1{#2}}} -\long\def\blx@citeargs@iii#1#2{% - \blx@xsanitizeafter{#1}{#2}} - -% {<macro>}(<arg1>)(<arg2>) -% => <macro>{<arg1>}{<arg2>} -\protected\def\blx@multiargs#1{% - \@ifnextchar(%) - {\blx@multiargs@i{#1}} - {#1{}{}}} -\long\def\blx@multiargs@i#1(#2){% - \@ifnextchar(%) - {\blx@multiargs@ii{#1{#2}}} - {#1{}{#2}}} -\long\def\blx@multiargs@ii#1(#2){#1{#2}} - -% {<macro>}[<arg1>][<arg2>]{<arg3>}<punct> -% => <macro>{<arg1>}{<arg2>}{<arg3>}{<punctcmd>} -\protected\def\blx@citepunct#1{% - \blx@citeargs{\blx@citepunct@i{#1}}} -\long\def\blx@citepunct@i#1#2#3#4{% - \blx@thecheckpunct{#1{#2}{#3}{#4}}} - -% {<csname>}[<arg1>][<arg2>]{arg3}[arg4]{arg5}<punct> -% => <macro>{<arg1>}{<arg2>}{<arg3>}{<arg4>}{arg5}{<punctcmd>} -\protected\def\blx@citexpunct#1{% - \blx@citeargs{\blx@citexpunct@i{#1}}} -\long\def\blx@citexpunct@i#1#2#3#4{% - \@ifnextchar[%] - {\blx@citexpunct@ii{#1}{{#2}{#3}{#4}}} - {\blx@citexpunct@ii{#1}{{#2}{#3}{#4}}[#1]}} -\long\def\blx@citexpunct@ii#1#2[#3]#4{% - \blx@thecheckpunct{\blxcitecmd{#1}#2{#3}{#4}}} - -% {<code>}<punct> => <code>{<punctcmd>} -\long\def\blx@checkpunct#1{% - \begingroup - \def\blx@tempa{\endgroup#1}% - \futurelet\blx@tempb\blx@checkpunct@i} -\def\blx@checkpunct@i{% - \expandafter\blx@checkpunct@ii\blx@autopunct&} -\def\blx@checkpunct@ii#1{% - \ifx#1&% - \expandafter\blx@checkpunct@iii - \fi - \ifx#1\blx@tempb - \expandafter\blx@checkpunct@iv - \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{% - \gdef\abx@field@postpunct{#3}% - \edef\blx@tempa{% - \expandonce\blx@tempa{% - \ifcsdef{blx@pm@\detokenize{#3}} - {\csname blx@imc@add\csname blx@pm@\detokenize{#3}\endcsname - \endcsname} - {\noexpand#3}}}% - \blx@tempa} - -\long\def\blx@nocheckpunct#1{#1{}} - -\protected\def\blx@citeinit{% - \iftoggle{blx@bibliography} - {} - {\toggletrue{blx@citation}}% - \blx@blxinit - \blx@langstrings - \citesetup - \blx@setsfcodes - \blx@postpunct@agroup - \blx@resetdata - \blx@leavevmode - \csuse{blx@hook@cite}% - \csuse{blx@hook@cite@next}% - \let\blx@citeinit\blx@resetdata} - -\protected\def\blx@citecmdinit{% - \blx@leavevmode@cite - \iftoggle{blx@bibliography} - {} - {\blx@initunit}} - -% *{<command>}[<wrapper>]{<precode>}{<loopcode>}{<delimcode>}{<postcode>} -\newrobustcmd*{\DeclareCiteCommand}{% - \@ifstar{\blx@defcitecmd*}{\blx@defcitecmd{}}} - -\def\blx@defcitecmd#1#2{% - \begingroup - \escapechar\m@ne - \edef\blx@tempa{\endgroup - \noexpand\blx@defcitecmd@i{#1}{\string#2}}% - \blx@tempa} - -\def\blx@defcitecmd@i#1#2{% - \blx@checkcitecmd{#2}{#1}% - \protected\csdef{#2}{% - \blx@citecmdinit - \@ifstar - {\blx@citepunct{\blxcitecmd{#2*}}} - {\blx@citepunct{\blxcitecmd{#2}}}}% - \@ifnextchar[%] - {\blx@defcitecmd@iii{#2#1}} - {\blx@defcitecmd@ii{#2#1}}} - -\long\def\blx@defcitecmd@ii#1{% - \protected\csedef{blx@cite@#1}{\blxciteicmd{#1}}% - \blx@defcitecmd@iv{#1}} - -\long\def\blx@defcitecmd@iii#1[#2]{% - \protected\long\csedef{blx@cite@#1}##1##2##3##4{% - \begingroup - \blx@citeinit - \unexpanded{#2}{\blxciteicmd{#1}{##1}{##2}{##3}{}}% - ##4\endgroup}% - \blx@defcitecmd@iv{#1}} - -\long\def\blx@defcitecmd@iv#1#2#3#4#5{% - \protected\long\csdef{blx@citei@#1}##1##2##3##4{% - \ifblank{##1} - {} - {\def\abx@field@prenote{##1}}% - \ifblank{##2} - {\let\blx@thenotecheck\relax} - {\def\abx@field@postnote{##2}}% - \def\blx@precode{#2}% - \def\blx@loopcode{#3}% - \def\blx@dlimcode{#4}% - \def\blx@postcode{#5##4}% - \blx@citeloop{##3}% - \endgroup}} - -% {<type>}{<name>}{*} -\def\blx@checkcitecmd#1#2{% - \ifblank{#2} - {\ifcsdef{blx@cite@#1} - {\blx@info{Redefining '\@backslashchar#1'}} - {\ifcsundef{#1} - {} - {\blx@warning@noline{Redefining '\@backslashchar#1'}}}% - \ifcsdef{blx@cite@#1*} - {} - {\csedef{blx@cite@#1*}{% - \expandafter\noexpand\csname blx@cite@#1\endcsname}% - \csedef{blx@citei@#1*}{% - \expandafter\noexpand\csname blx@citei@#1\endcsname}}} - {\ifcsdef{blx@cite@#1} - {} - {\csdef{blx@cite@#1}{\blx@err@citecmd{#1}}% - \csdef{blx@citei@#1}{\blx@err@citecmd{#1}}}}} - -% {<name>}{prenote}{postnote}{citekey}{punct} -\newrobustcmd*{\blxcitecmd}[1]{% - \ifcsundef{blx@cite@#1} - {\blx@err@citecmd{#1}} - {\csuse{blx@cite@#1}}} - -\newrobustcmd*{\blxciteicmd}[1]{% - \begingroup - \blx@citeinit - \ifcsundef{blx@citei@#1} - {\blx@err@citecmd{#1}} - {\csuse{blx@citei@#1}}} - -% {<multicitecount>}{<name>}{prenote}{postnote}{citekey}{punct} -\protected\def\blxmciteicmd#1{% - \c@multicitecount#1\relax - \blxciteicmd} - -% {<multicitetotal>}{<multiprenote>}{<multipostnote>} -\protected\def\blxmcites#1#2#3{% - \begingroup - \blx@citeinit - \c@multicitecount\z@ - \c@multicitetotal#1\relax - \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}}% - \ifblank{#3}% - {} - {\def\abx@field@multipostnote{#3}}% - \usebibmacro{multiprenote}} - -\protected\def\blxendmcites{% - \usebibmacro{multipostnote}% - \endgroup} - -% {<command>}[<wrapper>]{<cite>}{<delimiter>} -\newrobustcmd{\DeclareMultiCiteCommand}[1]{% - \ifundef#1% - {} - {\blx@info{Redefining '\string#1'}}% - \@ifnextchar[%] - {\blx@defmcitecmd{#1}} - {\blx@defmcitecmd{#1}[\@firstofone]}} - -\def\blx@defmcitecmd#1[#2]#3#4{% - \begingroup - \escapechar\m@ne - \edef\blx@tempa{\endgroup - \protected\def\noexpand#1{% - \blx@citecmdinit - \noexpand\@ifstar - {\expandafter\noexpand - \csname blx@mcite@\string#1\endcsname*% - \expandafter\noexpand - \csname blx@mcitei@\string#1\endcsname} - {\expandafter\noexpand - \csname blx@mcite@\string#1\endcsname{}% - \expandafter\noexpand - \csname blx@mcitei@\string#1\endcsname}}% - \protected\csdef{blx@mcite@\string#1}####1####2{% - \begingroup - \blx@citeinit - \noexpand\blx@multicite - ####2% - {\unexpanded{#2}}% - {\string#3####1}% - {\unexpanded{#4}}}% - \protected\long\csdef{blx@mcitei@\string#1}}% - \blx@tempa##1##2##3{##1{##2}##3\endgroup}} - -% {<command>}{<wrapper>}{<citecmd>}{<delimiter>} => -% <init><command>{<wrapper>}{<cites>}{<punct>} -\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}% - \def\blx@tempd{#4}% - \c@multicitetotal\z@ - \blx@multiargs\blx@multicite@i} - -\def\blx@multicite@i#1#2{% - \ifblank{#1}% - {\let\abx@field@multiprenote\@empty}% - {\def\abx@field@multiprenote{#1}}% - \ifblank{#2}% - {\let\abx@field@multipostnote\@empty}% - {\def\abx@field@multipostnote{#2}}% - \let\blx@tempe\@empty - \let\blx@tempf\@empty - \togglefalse{blx@tempa}% - \blx@multiparse} - -\def\blx@multicite@add#1#2#3{% - \togglefalse{blx@tempa}% - \advance\c@multicitetotal\@ne - \eappto\blx@tempe{% - \expandonce\blx@tempf - \blxmciteicmd{\the\c@multicitetotal}% - {\expandonce\blx@tempc}\unexpanded{{#1}{#2}{#3}}{}}% - \let\blx@tempf\blx@tempd - \blx@multiparse} - -\def\blx@multicite@end#1{% - \edef\blx@tempa{\endgroup - \expandonce\blx@tempa - {\expandonce\blx@tempb}% - {\blxmcites - {\the\c@multicitetotal}% - {\expandonce\abx@field@multiprenote}% - {\expandonce\abx@field@multipostnote}% - \expandonce\blx@tempe - \blxendmcites}% - {#1}% - \iftoggle{blx@tempa}{\relax\space}{}}% - \blx@tempa} - -\def\blx@multiparse{% - \futurelet\@let@token\blx@multiparse@i} - -\def\blx@multiparse@i{% - \ifx\@let@token\relax - \blx@multiparse@ii{\blx@multicite@end{}}% - \fi - \ifx\@let@token[%] - \blx@multiparse@ii{\blx@citeargs\blx@multicite@add}% - \fi - \ifx\@let@token\bgroup - \blx@multiparse@ii{\blx@citeargs\blx@multicite@add}% - \fi - \ifx\@let@token\@sptoken - \blx@multiparse@ii\blx@multiparse@iii - \fi - \iftrue - \iftoggle{blx@tempa} - {\blx@multiparse@ii{\blx@multicite@end{}}} - {\blx@multiparse@ii{\blx@thecheckpunct\blx@multicite@end}}% - \fi - &} - -\def\blx@multiparse@ii#1#2&{\fi#1} -\csdef{blx@multiparse@iii} {\toggletrue{blx@tempa}\blx@multiparse} - -% {<name>}[l|i|r]{<cite>}{<multicite>} -\newrobustcmd*{\DeclareAutoCiteCommand}[1]{% - \ifcsundef{blx@acite@#1} - {} - {\blx@info{Redefining autocite command '#1'}}% - \@ifnextchar[%] - {\blx@defautocmd@i{#1}} - {\blx@defautocmd@i{#1}[r]}} - -\def\blx@defautocmd@i#1[#2]#3#4{% - \begingroup - \escapechar\m@ne - \edef\blx@tempa{\endgroup - \noexpand\blx@defautocmd@ii{#1}{#2}% - {\string#3}{\string#4}}% - \blx@tempa} - -\def\blx@defautocmd@ii#1#2#3#4{% - \protected\csedef{blx@acite@#1}{% - \blx@citecmdinit - \noexpand\@ifstar - {\blx@citepunct{\expandafter\noexpand - \csname blx@acitei@#1\endcsname*}} - {\blx@citepunct{\expandafter\noexpand - \csname blx@acitei@#1\endcsname{}}}}% - \protected\csedef{blx@acitei@#1}##1##2##3##4##5{% - \begingroup - \blx@citeinit - \if l#2\noexpand\unspace##5\fi - \if f#2\noexpand\iftoggle{blx@footnote}{}{\unspace##5}\fi - \blxcitecmd{#3##1}{##2}{##3}{##4}{}% - \if r#2##5\fi - \if f#2\noexpand\iftoggle{blx@footnote}{##5}{}\fi - \endgroup}% - \protected\csedef{blx@macite@#1}{% - \blx@citecmdinit - \noexpand\@ifstar - {\expandafter\noexpand - \csname blx@mcite@#4\endcsname*% - \expandafter\noexpand - \csname blx@macitei@#1\endcsname} - {\expandafter\noexpand - \csname blx@mcite@#4\endcsname{}% - \expandafter\noexpand - \csname blx@macitei@#1\endcsname}}% - \protected\csedef{blx@macitei@#1}##1##2##3{% - \if l#2\noexpand\unspace##3\fi - \if f#2\noexpand\iftoggle{blx@footnote}{}{\unspace##3}\fi - ##1{##2}% - \if r#2##3\fi - \if f#2\noexpand\iftoggle{blx@footnote}{##3}{}\fi - \endgroup}} - -% {<characters>} -\newrobustcmd*{\DeclareAutoPunctuation}[1]{% - \ifblank{#1} - {\let\blx@thecheckpunct\blx@nocheckpunct} - {\let\blx@thecheckpunct\blx@checkpunct - \def\blx@autopunct{#1}}} - -\AfterEndPreamble{% babel - \begingroup - \makeatletter - \endlinechar\m@ne - \scantokens\expandafter{% - \expandafter\gdef - \expandafter\blx@autopunct - \expandafter{\blx@autopunct}}% - \endgroup} - -% [<prenote>][<postnote>]{<entrykey>,...}[<format>]{<namelist>}<punct> -\newrobustcmd*{\citename}{\blx@citexpunct{citename}} -\long\csdef{blx@cite@citename}#1#2#3#4#5#6{% - \begingroup - \blx@citecmdinit - \blx@citeinit - \ifblank{#1} - {} - {\def\abx@field@prenote{#1}}% - \ifblank{#2} - {\let\blx@thenotecheck\relax} - {\def\abx@field@postnote{#2}}% - \def\blx@precode{\usebibmacro{prenote}}% - \def\blx@loopcode{% - \ifnameundef{#5} - {\blx@warning@entry{'#5' undefined or not a name list}% - \abx@missing{#5}} - {\printnames[#4]{#5}}}% - \def\blx@dlimcode{\multicitedelim}% - \ifblank{#2} - {\def\blx@postcode{#6}} - {\def\blx@postcode{\usebibmacro{postnote}#6}}% - \boolfalse{citetracker}% - \boolfalse{pagetracker}% - \blx@citeloop{#3}% - \endgroup} - -% [<prenote>][<postnote>]{<entrykey>,...}[<format>]{<list>}<punct> -\newrobustcmd*{\citelist}{\blx@citexpunct{citelist}} -\long\csdef{blx@cite@citelist}#1#2#3#4#5#6{% - \begingroup - \blx@citecmdinit - \blx@citeinit - \ifblank{#1} - {} - {\def\abx@field@prenote{#1}}% - \ifblank{#2} - {\let\blx@thenotecheck\relax} - {\def\abx@field@postnote{#2}}% - \def\blx@precode{\usebibmacro{prenote}}% - \def\blx@loopcode{% - \iflistundef{#5} - {\blx@warning@entry{'#5' undefined or not a literal list}% - \abx@missing{#5}} - {\printlist[#4]{#5}}}% - \def\blx@dlimcode{\multicitedelim}% - \ifblank{#2} - {\def\blx@postcode{#6}} - {\def\blx@postcode{\usebibmacro{postnote}#6}}% - \boolfalse{citetracker}% - \boolfalse{pagetracker}% - \blx@citeloop{#3}% - \endgroup} - -% [<prenote>][<postnote>]{<entrykey>,...}[<format>]{<field>}<punct> - -\newrobustcmd*{\citefield}{\blx@citexpunct{citefield}} -\long\csdef{blx@cite@citefield}#1#2#3#4#5#6{% - \begingroup - \blx@citecmdinit - \blx@citeinit - \ifblank{#1} - {} - {\def\abx@field@prenote{#1}}% - \ifblank{#2} - {\let\blx@thenotecheck\relax} - {\def\abx@field@postnote{#2}}% - \def\blx@precode{\usebibmacro{prenote}}% - \def\blx@loopcode{% - \iffieldundef{#5} - {\blx@warning@entry{'#5' undefined or not a field}% - \abx@missing{#5}} - {\printfield[#4]{#5}}}% - \def\blx@dlimcode{\multicitedelim}% - \ifblank{#2} - {\def\blx@postcode{#6}} - {\def\blx@postcode{\usebibmacro{postnote}#6}}% - \boolfalse{citetracker}% - \boolfalse{pagetracker}% - \blx@citeloop{#3}% - \endgroup} - -\renewrobustcmd*{\cite}{\blx@err@citecmd\cite} -\let\blx@cite@cite\relax -\newrobustcmd*{\parencite}{\blx@warn@citecmd\parencite\cite} -\let\blx@cite@parencite\relax -\newrobustcmd*{\footcite}{\blx@warn@citecmd\footcite\cite} -\let\blx@cite@footcite\relax -\newrobustcmd*{\footcitetext}{\blx@warn@citecmd\footcitetext\cite} -\let\blx@cite@footcitetext\relax -\newrobustcmd*{\smartcite}{\blx@warn@citecmd\smartcite\cite} -\let\blx@cite@smartcite\relax -\newrobustcmd*{\textcite}{\blx@warn@citecmd\textcite\cite} -\let\blx@cite@textcite\relax -\newrobustcmd*{\supercite}{\blx@warn@citecmd\supercite\cite} -\let\blx@cite@supercite\relax - -%% ifthen interface - -\def\blx@TE#1#2{% - \TE@throw - \unexpanded{% - \iftrue\@nameuse{fi}% - #1{\@nameuse{iftrue}}{\@nameuse{iffalse}}}#2} - -\def\blx@xTE#1#2{% - \TE@throw - \unexpanded{\iftrue\@nameuse{fi}}% - #1\unexpanded{{\@nameuse{iftrue}}{\@nameuse{iffalse}}}#2} - -\let\blx@TE@hook\@empty - -\appto\blx@blxinit{% - \appto\blx@TE@hook{% - \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}% - \def\ifloccit{\blx@TE\blx@imc@ifloccit}% - \def\ifsamepage{\blx@TE\blx@imc@ifsamepage}% - \def\iffirstonpage{\blx@TE\blx@imc@iffirstonpage}% - \def\ifcurrentfield#1{\blx@TE{\blx@imc@ifcurrentfield{#1}}}% - \def\ifcurrentlist#1{\blx@TE{\blx@imc@ifcurrentlist{#1}}}% - \def\ifcurrentname#1{\blx@TE{\blx@imc@ifcurrentname{#1}}}% - \def\ifentrytype#1{\blx@TE{\blx@imc@ifentrytype{#1}}}% - \def\iffieldequalcs#1#2{\blx@TE{\blx@imc@iffieldequalcs{#1}{#2}}}% - \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}}}% - \def\ifnamesequal#1#2{\blx@TE{\blx@imc@ifnamesequal{#1}{#2}}}% - \def\ifnameundef#1{\blx@TE{\blx@imc@ifnameundef{#1}}}% - \def\ifcategory#1{\blx@TE{\blx@imc@ifcategory{#1}}}% - \def\ifkeyword#1{\blx@TE{\blx@imc@ifkeyword{#1}}}% - \def\ifentrycategory#1#2{\blx@TE{\blx@imc@ifentrycategory{#1}{#2}}}% - \def\ifentrykeyword#1#2{\blx@TE{\blx@imc@ifentrykeyword{#1}{#2}}}% - \def\ifcapital{\blx@TE\blx@imc@ifcapital}% - \def\ifinteger#1{\blx@TE{\blx@imc@ifinteger{#1}}}% - \def\iffieldint#1{\blx@TE{\blx@imc@iffieldint{#1}}}% - \def\ifnumeral#1{\blx@TE{\blx@imc@ifnumeral{#1}}}% - \def\ifnumerals#1{\blx@TE{\blx@imc@ifnumerals{#1}}}% - \def\ifpages#1{\blx@TE{\blx@imc@ifpages{#1}}}% - \def\iffieldnum#1{\blx@TE{\blx@imc@iffieldnum{#1}}}% - \def\iffieldnums#1{\blx@TE{\blx@imc@iffieldnums{#1}}}% - \def\iffieldpages#1{\blx@TE{\blx@imc@iffieldpages{#1}}}% - \def\ifbibstring#1{\blx@TE{\blx@imc@ifbibstring{#1}}}% - \def\iffieldbibstring#1{\blx@TE{\blx@imc@iffieldbibstring{#1}}}% - \def\ifnatbibmode{\blx@TE{\iftoggle{blx@natbib}}}% - \def\ifcitation{\blx@TE{\iftoggle{blx@citation}}}% - \def\ifbibliography{\blx@TE{\iftoggle{blx@bibliography}}}% - \def\ifciteindex{\blx@TE{\iftoggle{blx@citeindex}}}% - \def\ifbibindex{\blx@TE{\iftoggle{blx@bibindex}}}% - \def\iffootnote{\blx@TE{\iftoggle{blx@footnote}}}% - \def\ifuseprefix{\blx@TE{\iftoggle{blx@useprefix}}}% - \def\ifterseinits{\blx@TE{\iftoggle{blx@terseinits}}}% - \def\iffirstinits{\blx@TE{\iftoggle{blx@giveninits}}}% legacy name for \ifgiveninits - \def\ifgiveninits{\blx@TE{\iftoggle{blx@giveninits}}}% - \def\ifsingletitle{\blx@TE{\iftoggle{abx@bool@singletitle}}}% - \def\ifandothers#1{\blx@TE{\iftoggle{abx@bool@more#1}}}}} - -% {<listmacro>}{<filtercsname>} => matches in <listmacro> - -\protected\def\blx@bibfilter#1#2{% - \begingroup - \edef\blx@do##1{% - \def\noexpand\blx@flt@item{##1}% - \ifboolexpr{\csexpandonce{#2}}% - {\listadd\noexpand\blx@tempa{##1}}% - {}}% - \let\blx@done\relax - \edef\blx@tempa{% - \let\noexpand\blx@tempa\noexpand\@empty - \blx@listloop{#1}}% - \blx@tempa - \edef\blx@tempa{\endgroup - \def\noexpand#1{\blx@tempa}}% - \blx@tempa} - -%% Auxiliary macros - -\newrobustcmd*{\mkbibquote}{\enquote} -\protected\def\blx@imc@mkbibquote{% - \blx@ifuspunct\blx@usquote\enquote} - -\def\blx@usquote{% - \ifnum\@quotelevel>\z@ - \expandafter\blx@usiquote - \else - \expandafter\blx@usoquote - \fi} - -\long\def\blx@usoquote#1{% - \begingroup - \initoquote - \textooquote#1% - \futurelet\@let@token\blx@usoquote@i} - -\def\blx@usoquote@i{% - \blx@usqcheck - {\ifx\blx@postpunct\@empty\else\blx@dopostpunct\fi - \textcoquote\endgroup} - {\blx@setpostpunct\textcoquote\endgroup}} - -\long\def\blx@usiquote#1{% - \begingroup - \initiquote - \textoiquote#1% - \futurelet\@let@token\blx@usiquote@i} - -\def\blx@usiquote@i{% - \blx@usqcheck - {\textciquote\endgroup} - {\blx@setpostpunct\textciquote\endgroup}} - -\long\def\blx@usqcheck#1#2{% - \def\blx@tempa{#1}% - \def\blx@tempb{#2}% - \ifx\@let@token\space - \blx@usqcheck@i\blx@tempa - \fi - \ifx\@let@token\@sptoken - \blx@usqcheck@i\blx@tempa - \fi - \if\noexpand\@let@token\relax - \expandafter\blx@usqcheck@iv - \fi - \expandafter\blx@usqcheck@ii\blx@quotepunct\relax&} - -\long\def\blx@usqcheck@i#1#2&{\fi#1} - -\long\def\blx@usqcheck@ii#1{% - \if\noexpand#1\relax - \blx@usqcheck@i\blx@tempa - \fi - \if\noexpand#1\noexpand\@let@token - \blx@usqcheck@i{\blx@usqcheck@iii\blx@tempa}% - \fi - \blx@usqcheck@ii -} - -\long\def\blx@usqcheck@iii#1#2{#2#1} - -\long\def\blx@usqcheck@iv#1{% - \begingroup - \escapechar=-1 % - \edef\blx@tempa{\expandafter\@gobble\string#2}% - \expandafter\endgroup - \ifx\blx@tempa\@empty - \else - \blx@usqcheck@i\blx@tempb - \fi - #1% -} - -\newrobustcmd*{\mkbibemph}{\emph} -\protected\long\def\blx@imc@mkbibemph#1{% - \emph{#1}\blx@imc@setpunctfont\emph} - -\newrobustcmd*{\mkbibbold}{\textbf} -\protected\long\def\blx@imc@mkbibbold#1{% - \textbf{#1}\blx@imc@setpunctfont\textbf} - -\newrobustcmd*{\mkbibitalic}{\textit} -\protected\long\def\blx@imc@mkbibitalic#1{% - \textit{#1}\blx@imc@setpunctfont\textit} - -\blx@regimcs{\mkbibquote \mkbibemph \mkbibbold \mkbibitalic} - -\newcommand*{\bibleftparen}{\blx@postpunct(} -\newcommand*{\bibrightparen}{\blx@postpunct)\midsentence} -\newcommand*{\bibleftbracket}{\blx@postpunct[} -\newcommand*{\bibrightbracket}{\blx@postpunct]\midsentence} - -\def\blx@parenlevel{% - \iftoggle{blx@footnote} - {\blx@parenlevel@foot} - {\blx@parenlevel@text}} - -\newrobustcmd*{\blx@bibopenparen}{% - \blx@opencheck\bibopenparen - \blx@postpunct - \ifnum\blx@parenlevel=\z@ - \global\blx@parenlevel\@ne - \global\c@parenlevel\@ne - \expandafter\bibleftparen - \else - \expandafter\blx@openparen - \fi} - -\newrobustcmd*{\blx@bibopenbracket}{% - \blx@opencheck\bibopenbracket - \blx@postpunct - \ifnum\blx@parenlevel=\z@ - \global\blx@parenlevel1002 - \global\c@parenlevel\@ne - \expandafter\bibleftbracket - \else - \expandafter\blx@openparen - \fi} - -\newrobustcmd*{\blx@bibcloseparen}{% - \blx@closecheck\bibcloseparen - \blx@postpunct\blx@closeparen} - -\newrobustcmd*{\blx@bibclosebracket}{% - \blx@closecheck\bibclosebracket - \blx@postpunct\blx@closeparen} - -\def\blx@openparen{% - \ifodd\blx@parenlevel - \global\advance\blx@parenlevel\@ne - \global\advance\c@parenlevel\@ne - \expandafter\bibleftbracket - \else - \global\advance\blx@parenlevel\@ne - \global\advance\c@parenlevel\@ne - \expandafter\bibleftparen - \fi} - -\def\blx@closeparen{% - \ifodd\blx@parenlevel - \blx@closeparen@i - \expandafter\bibrightparen - \else - \blx@closeparen@i - \expandafter\bibrightbracket - \fi} - -\def\blx@closeparen@i{% - \ifnum\blx@parenlevel=1002 - \global\blx@parenlevel\z@ - \global\c@parenlevel\z@ - \else - \global\advance\blx@parenlevel\m@ne - \global\advance\c@parenlevel\m@ne - \fi} - -\def\blx@opencheck#1{% - \ifnum\numexpr\blx@parenlevel+\@ne - \ifnum\blx@parenlevel>\@m -1001\fi - >\c@maxparens - \blx@err@nestparen{\string#1}% - \blx@errormark - \fi} - -\def\blx@closecheck#1{% - \ifnum\numexpr\blx@parenlevel - \ifnum\blx@parenlevel>\@m -1001\fi - >\c@maxparens - \blx@err@nestparen{\string#1}% - \blx@errormark - \fi - \ifnum\blx@parenlevel<\@ne - \blx@err@matchparen{Unmatched \string#1}% - \blx@errormark - \fi} - -\protected\def\blx@errormark{% - \rule[0.25ex]{1.25ex}{1.25ex}} - -\AtEndDocument{% - \unless\ifnum\blx@parenlevel@text=\z@ - \blx@err@matchparen{% - Unbalanced parentheses or brackets in the document body}% - \fi - \unless\ifnum\blx@parenlevel@foot=\z@ - \blx@err@matchparen{% - Unbalanced parentheses or brackets in a foot or endnote}% - \fi} - -\newrobustcmd{\mkbibparens}[1]{% - \begingroup - \blx@blxinit - \blx@setsfcodes - \bibopenparen#1\bibcloseparen - \endgroup} - -\newrobustcmd{\mkbibbrackets}[1]{% - \begingroup - \blx@blxinit - \blx@setsfcodes - \bibopenbracket#1\bibclosebracket - \endgroup} - -\newrobustcmd*{\parentext}{\mkbibparens} -\newrobustcmd*{\brackettext}{\mkbibbrackets} - -\newrobustcmd{\mkbibsuperscript}[1]{% - \unspace\allowhyphens\textsuperscript{% - \begingroup - \protected\long\def\mkbibsuperscript##1{% - \blx@warning{Nested superscript}% - \mkbibbrackets{##1}}% - #1\endgroup}} - -\newrobustcmd{\mkbibfootnote}{\blx@mkbibfootnote{}} -\newrobustcmd{\mkbibfootnotetext}{\blx@mkbibfootnote{text}} -\newrobustcmd{\blx@mkbibfootnote}[2]{% - \iftoggle{blx@footnote} - {\blx@warning{Nested notes}% - \addspace\mkbibparens{#2}} - {\unspace - \ifnum\blx@notetype=\tw@ - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi - {\csuse{blx@theendnote#1}{\protecting{\blxmkbibnote{end}{#2}}}} - {\csuse{footnote#1}{\protecting{\blxmkbibnote{foot}{#2}}}}}} - -\newrobustcmd{\mkbibendnote}{\blx@mkbibendnote{}} -\newrobustcmd{\mkbibendnotetext}{\blx@mkbibendnote{text}} -\newrobustcmd{\blx@mkbibendnote}[2]{% - \iftoggle{blx@footnote} - {\blx@warning{Nested notes}% - \addspace\mkbibparens{#2}} - {\unspace - \ifnum\blx@notetype=\@ne - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi - {\csuse{footnote#1}{\protecting{\blxmkbibnote{foot}{#2}}}} - {\csuse{blx@theendnote#1}{\protecting{\blxmkbibnote{end}{#2}}}}}} - -\newrobustcmd{\blxmkbibnote}[2]{% - \begingroup - \blx@blxinit - \blx@setsfcodes - \blx@postpunct@agroup - \toggletrue{blx@footnote}% - \csuse{bib#1notewrapper}{#2}% - \endgroup} - -\newcommand{\bibfootnotewrapper}[1]{% - \bibsentence#1\addperiod} - -\newcommand{\bibendnotewrapper}[1]{% - \bibsentence#1\addperiod} - -\AtEndPreamble{% - \def\blx@theendnote{\blx@err@endnote\footnote}% - \def\blx@theendnotetext{\blx@err@endnote\footnotetext}% - \ifdef\endnote - {\def\blx@theendnote{\endnote}% - \ifdef\endnotetext - {\def\blx@theendnotetext{\endnotetext}} - {}} - {\ifdef\pagenote - {\def\blx@theendnote{\pagenote}% - \ifdef\pagenotetext - {\def\blx@theendnotetext{\pagenotetext}} - {}} - {}}} - -\newrobustcmd*{\mknumalph}[1]{% - \begingroup - \blx@tempcnta=#1\relax - \ifnum\blx@tempcnta>702 % - \else - \ifnum\blx@tempcnta>26 % - \advance\blx@tempcnta\m@ne - \divide\blx@tempcnta26\relax - \blx@numalph\blx@tempcnta - \multiply\blx@tempcnta26\relax - \blx@tempcnta=\numexpr#1-\blx@tempcnta\relax - \fi - \fi - \blx@numalph\blx@tempcnta - \endgroup} -\def\blx@numalph#1{% - \ifcase#1\relax\blx@warning@entry{Value out of range}\number#1\or - a\or b\or c\or d\or e\or f\or g\or h\or i\or j\or k\or l\or m\or - 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} - -% {<macro>}[<pre>]{<vol>}[<post>] => <macro>{<pre>}{{<vol>}{<post>}} - -\newrobustcmd*{\volcitecmd}{% - \AtNextCite{\DeclareFieldAlias{postnote}{volcitenote}}% - \begingroup\let\blx@citeargs\blx@volciteargs} - -\protected\def\blx@volciteargs#1{% - \endgroup - \@ifnextchar[%] - {\blx@volciteargs@i{#1}} - {\blx@volciteargs@i{#1}[]}} - -\long\def\blx@volciteargs@i#1[#2]#3{% - \@ifnextchar[%] - {\blx@volciteargs@ii{#1}{#2}{#3}} - {\blx@citeargs@iii{#1{#2}{{#3}{}}}}} - -\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 - -\begingroup -\let~\space -\@makeother\< -\@makeother\> -\@makeother\. -\@makeother\: -\@makeother\? -\@makeother\" -\@makeother\- -\@makeother\= -\@makeother\/ -\xdef\blx@xml@file{% - \blx@sig@bcf\blx@nl - \blx@ver@bcf\blx@nl} -\xdef\blx@xml@endfile{% - </bcf:controlfile>} -\xdef\blx@xml@comment#1{% - ~~<!-- #1 -->\blx@nl} -\xdef\blx@xml@options#1#2#3{% - ~~<bcf:options% - \noexpand\ifblank{#1}{}{ component="#1"}% - \noexpand\ifblank{#2}{}{ type="#2"}% - >\blx@nl - #3% - ~~</bcf:options>\blx@nl} -\xdef\blx@xml@option#1#2{% - ~~~~<bcf:option type="#1">\blx@nl - #2% - ~~~~</bcf:option>\blx@nl} -\xdef\blx@xml@ordered#1#2#3{% - ~~~~~~<bcf:value order="#1"#2% - >#3</bcf:value>\blx@nl} - -\xdef\blx@xml@sourcemap#1{% - ~~<bcf:sourcemap>\blx@nl - #1% - ~~</bcf:sourcemap>\blx@nl} -\xdef\blx@xml@sourcemap@maps#1#2{% - ~~~~<bcf:maps#1>\blx@nl - #2% - ~~~~</bcf:maps>\blx@nl} -\xdef\blx@xml@sourcemap@map#1#2{% - ~~~~~~<bcf:map#1>\blx@nl - #2% - ~~~~~~</bcf:map>\blx@nl} -\xdef\blx@xml@sourcemap@perdatasource#1{% - ~~~~~~~~<bcf:per\string_datasource>#1</bcf:per\string_datasource>\blx@nl} -\xdef\blx@xml@sourcemap@pertype#1{% - ~~~~~~~~<bcf:per\string_type>#1</bcf:per\string_type>\blx@nl} -\xdef\blx@xml@sourcemap@pernottype#1{% - ~~~~~~~~<bcf:per\string_nottype>#1</bcf:per\string_nottype>\blx@nl} -\xdef\blx@xml@sourcemap@step#1{% - ~~~~~~~~<bcf:map\string_step#1/>\blx@nl} - -\xdef\blx@xml@labelalphatemplate#1#2{% - ~~<bcf:labelalphatemplate type="#1">\blx@nl - #2% - ~~</bcf:labelalphatemplate>\blx@nl} -\xdef\blx@xml@labelalpha@element#1#2{% - ~~~~<bcf:labelelement order="#1">\blx@nl - #2% - ~~~~</bcf:labelelement>\blx@nl} -\xdef\blx@xml@labelalpha@part#1#2{% - ~~~~~~<bcf:labelpart#1>#2</bcf:labelpart>\blx@nl} - -\xdef\blx@xml@inheritance#1{% - ~~<bcf:inheritance>\blx@nl - #1% - ~~</bcf:inheritance>\blx@nl} -\xdef\blx@xml@inherit@defaults#1#2{% - ~~~~<bcf:defaults#1>\blx@nl - #2% - ~~~~</bcf:defaults>\blx@nl} -\xdef\blx@xml@inherit@data#1{% - ~~~~<bcf:inherit>\blx@nl - #1% - ~~~~</bcf:inherit>\blx@nl} -\xdef\blx@xml@inherit@type#1#2#3{% - ~~~~~~<bcf:type\string_pair source="#1" target="#2"#3/>\blx@nl} -\xdef\blx@xml@inherit@field#1#2#3{% - ~~~~~~<bcf:field source="#1" target="#2"#3/>\blx@nl} -\xdef\blx@xml@inherit@block#1{% - ~~~~~~<bcf:field source="#1" skip="true"/>\blx@nl} - -\xdef\blx@xml@nosorts#1{% - ~~<bcf:nosorts>\blx@nl - #1% - ~~</bcf:nosorts>\blx@nl} -\xdef\blx@xml@nosort#1#2{% - ~~~~<bcf:nosort field="#1" value="#2"/>\blx@nl} - -\xdef\blx@xml@noinits#1{% - ~~<bcf:noinits>\blx@nl - #1% - ~~</bcf:noinits>\blx@nl} -\xdef\blx@xml@noinit#1{% - ~~~~<bcf:noinit value="#1"/>\blx@nl} - -\xdef\blx@xml@nolabels#1{% - ~~<bcf:nolabels>\blx@nl - #1% - ~~</bcf:nolabels>\blx@nl} -\xdef\blx@xml@nolabel#1{% - ~~~~<bcf:nolabel value="#1"/>\blx@nl} - -\xdef\blx@xml@nolabelwidthcounts#1{% - ~~<bcf:nolabelwidthcounts>\blx@nl - #1% - ~~</bcf:nolabelwidthcounts>\blx@nl} -\xdef\blx@xml@nolabelwidthcount#1{% - ~~~~<bcf:nolabelwidthcount value="#1"/>\blx@nl} - -\xdef\blx@xml@sortingnamekey#1#2{% - ~~<bcf:sortingnamekey keyscheme="#1">\blx@nl% - #2% - ~~</bcf:sortingnamekey>\blx@nl} - -\xdef\blx@xml@sortingnamekeykeypart#1#2{% - ~~~~<bcf:keypart#1>\blx@nl - #2% - ~~~~</bcf:keypart>\blx@nl} - -\xdef\blx@xml@sortingnamekeynamepart#1#2#3{% - ~~~~~~<bcf:part type="namepart"#1#2>#3</bcf:part>\blx@nl} - -\xdef\blx@xml@sortingnamekeyliteral#1#2{% - ~~~~~~<bcf:part type="literal"#1>#2</bcf:part>\blx@nl} - -\xdef\blx@xml@sorting#1#2{% - ~~<bcf:sorting#1>\blx@nl% - #2% - ~~</bcf:sorting>\blx@nl} -\xdef\blx@xml@presort#1#2{% - ~~~~<bcf:presort\noexpand\ifblank{#1}{}{ type="#1"}>% - #2</bcf:presort>\blx@nl} - -\xdef\blx@xml@sortexclude#1#2{% - ~~~~<bcf:sortexclusion\noexpand\ifblank{#1}{}{ type="#1"}>\blx@nl - #2% - ~~~~</bcf:sortexclusion>\blx@nl} -\xdef\blx@xml@exclude#1{% - ~~~~~~<bcf:exclusion>#1</bcf:exclusion>\blx@nl} -\xdef\blx@xml@sort#1#2{% - ~~~~<bcf:sort #1>\blx@nl - #2% - ~~~~</bcf:sort>\blx@nl} -\xdef\blx@xml@sortitem#1#2{% - ~~~~~~<bcf:sortitem #1>#2</bcf:sortitem>\blx@nl} -\xdef\blx@xml@section#1{% - ~~<bcf:section number="#1">} -\xdef\blx@xml@endsection{% - ~~</bcf:section>} - -\xdef\blx@xml@slist#1#2#3#4#5#6#7{% - ~~<bcf:sortlist section="#3" name="#1" type="#2" sortscheme="#4" sortnamekeyscheme="#5">\blx@nl - #7% - #6% - ~~</bcf:sortlist>\blx@nl} -\xdef\blx@xml@slistfilterorbegin{% - ~~~~<bcf:filteror>\blx@nl} -\xdef\blx@xml@slistfilterorend{% - ~~~~</bcf:filteror>\blx@nl} -\xdef\blx@xml@slistfilter#1#2{% - ~~~~<bcf:filter type="#1">#2</bcf:filter>\blx@nl} - -\xdef\blx@xml@bibdata#1#2{% - ~~<bcf:bibdata section="#1">\blx@nl - #2% - ~~</bcf:bibdata>\blx@nl} -\xdef\blx@xml@datasource#1#2#3{% - ~~~~<bcf:datasource type="#1" datatype="#2">#3</bcf:datasource>\blx@nl} -\xdef\blx@xml@citekey#1#2{% - ~~~~<bcf:citekey order="#2">#1</bcf:citekey>} -\xdef\blx@xml@citeset#1#2{% - ~~~~<bcf:citekey type="set" members="#2">#1</bcf:citekey>} -\xdef\blx@xml@svalue#1#2{% - \blx@xml@option{singlevalued}{% - ~~~~~~<bcf:key>#1</bcf:key>\blx@nl - ~~~~~~<bcf:value>#2</bcf:value>\blx@nl}} -\xdef\blx@xml@mvalue#1#2{% - \blx@xml@option{multivalued}{% - ~~~~~~<bcf:key>#1</bcf:key>\blx@nl - #2}} -\xdef\blx@xml@toggle#1{% - \blx@xml@svalue{#1}{\noexpand\iftoggle{blx@#1}{1}{0}}} -\xdef\blx@xml@options@scope#1#2{% - ~~<bcf:optionscope type="#1">\blx@nl - #2% - ~~</bcf:optionscope>\blx@nl} -\xdef\blx@xml@option@scope#1#2{% - ~~~~<bcf:option datatype="#1">#2</bcf:option>\blx@nl} -\endgroup - -\def\blx@bcf@options@global{% - \blx@xml@comment{GLOBAL}% - \blx@xml@options{biblatex}{global}{% - \blx@xml@svalue{alphaothers}{\labelalphaothers}% - \blx@xml@toggle{labelalpha}% - \blx@xml@mvalue{labelnamespec}{\blx@bcf@labelnamespec}% - \blx@xml@toggle{labeltitle}% - \blx@xml@mvalue{labeltitlespec}{\blx@bcf@labeltitlespec}% - \blx@xml@toggle{labeltitleyear}% - \blx@xml@toggle{labeldate}% - \blx@xml@mvalue{labeldatespec}{\blx@bcf@labeldatespec}% - \blx@xml@svalue{maxalphanames}{\blx@maxalphanames}% - \blx@xml@svalue{maxbibnames}{\blx@maxbibnames}% - \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{mincitenames}{\blx@mincitenames}% - \blx@xml@svalue{minitems}{\blx@minitems}% - \blx@xml@toggle{singletitle}% - \blx@xml@svalue{sortalphaothers}{\sortalphaothers}% - \blx@xml@svalue{sortlocale}{\blx@sortlocale}% - \blx@xml@svalue{sortscheme}{\blx@sorting}% - \blx@xml@svalue{uniquelist}{\blx@uniquelist}% - \blx@xml@svalue{uniquename}{\blx@uniquename}% - \blx@xml@toggle{useprefix}% - \blx@xml@nametoggles - }% -} - -\def\blx@bcf@options@type#1{% - \blx@xml@comment{#1}% - \blx@xml@options{biblatex}{#1}{% - \blx@xml@toggle{labelalpha}% - \blx@xml@mvalue{labelnamespec}{% - \ifcsdef{blx@bcf@labelnamespec@#1} - {\csuse{blx@bcf@labelnamespec@#1}} - {\blx@bcf@labelnamespec}}% - \blx@xml@toggle{labeltitle}% - \blx@xml@mvalue{labeltitlespec}{% - \ifcsdef{blx@bcf@labeltitlespec@#1} - {\csuse{blx@bcf@labeltitlespec@#1}} - {\blx@bcf@labeltitlespec}}% - \blx@xml@toggle{labeltitleyear}% - \blx@xml@toggle{labeldate}% - \blx@xml@mvalue{labeldatespec}{% - \ifcsdef{blx@bcf@labeldatespec@#1} - {\csuse{blx@bcf@labeldatespec@#1}} - {\blx@bcf@labeldatespec}}% - \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}% - \blx@xml@toggle{skipbiblist}% - \blx@xml@svalue{uniquelist}{\blx@uniquelist}% - \blx@xml@svalue{uniquename}{\blx@uniquename}% - \blx@xml@toggle{useprefix}% - \blx@xml@nametoggles - }% -} - -\def\blx@ctrlwrite@biber{% - \begingroup - \blx@safe@actives - \let\protect\string - % options - \edef\labelalphaothers{\labelalphaothers}% - \edef\sortalphaothers{\sortalphaothers}% - \blx@xmlsanitizeafter{\def\labelalphaothers}{\labelalphaothers}% - \blx@xmlsanitizeafter{\def\sortalphaothers}{\sortalphaothers}% - % Expand the global use* name toggles - \let\blx@xml@nametoggles\@empty - \def\do##1{\eappto\blx@xml@nametoggles{\blx@xml@toggle{use##1}}}% - \dolistcsloop{blx@biber@datamodel@names} - \edef\blx@tempa{% - \blx@xml@file - \blx@xml@comment{BIBER OPTIONS}% - \blx@xml@options{biber}{global}{% - \blx@xml@svalue{output_encoding}{\blx@texencoding}% - \blx@xml@svalue{input_encoding}{\blx@bibencoding}% - \blx@xml@toggle{debug}% - \blx@xml@svalue{mincrossrefs}{\blx@mincrossrefs}% - \blx@xml@toggle{sortcase}% - \blx@xml@toggle{sortgiveninits}% - \blx@xml@toggle{sortupper}% - }% - \blx@xml@comment{BIBLATEX OPTIONS}% - \blx@bcf@options@global - }% - \ifdef\blx@opts@type - {\def\do##1{% - \begingroup - \blx@setoptions@type{##1}% - % Expand the type use* name toggles - \let\blx@xml@nametoggles\@empty - \def\do####1{\eappto\blx@xml@nametoggles{\blx@xml@toggle{use####1}}}% - \dolistcsloop{blx@biber@datamodel@names} - \begingroup - \let\protect\relax - \blx@checkoptions@type - \endgroup - \xappto\blx@tempa{\blx@bcf@options@type{##1}}% - \endgroup}% - \dolistloop\blx@opts@type} - {}% - % options scope - % GLOBAL - \def\do##1{% - \begingroup - \def\do####1{\xappto\blx@bcf@options@scope@global{\blx@xml@option@scope{##1}{####1}}}% - \dolistcsloop{blx@globalopts@##1}% - \endgroup}% - \dolistloop\blx@globalopts@datatypes - % ENTRYTYPE - \def\do##1{% - \begingroup - \def\do####1{\xappto\blx@bcf@options@scope@type{\blx@xml@option@scope{##1}{####1}}}% - \dolistcsloop{blx@typeopts@##1}% - \endgroup}% - \dolistloop\blx@typeopts@datatypes - % ENTRY - \def\do##1{% - \begingroup - \def\do####1{\xappto\blx@bcf@options@scope@entry{\blx@xml@option@scope{##1}{####1}}}% - \dolistcsloop{blx@entryopts@##1}% - \endgroup}% - \dolistloop\blx@entryopts@datatypes - % NAMELIST - \def\do##1{% - \begingroup - \def\do####1{\xappto\blx@bcf@options@scope@namelist{\blx@xml@option@scope{##1}{####1}}}% - \dolistcsloop{blx@namelistopts@##1}% - \endgroup}% - \dolistloop\blx@entryopts@datatypes - % NAME - \def\do##1{% - \begingroup - \def\do####1{\xappto\blx@bcf@options@scope@name{\blx@xml@option@scope{##1}{####1}}}% - \dolistcsloop{blx@nameopts@##1}% - \endgroup}% - \dolistloop\blx@entryopts@datatypes - - \eappto\blx@tempa{% - \blx@xml@comment{BIBLATEX OPTION SCOPE}% - \blx@xml@options@scope{GLOBAL}{\blx@bcf@options@scope@global}% - \blx@xml@options@scope{ENTRYTYPE}{\blx@bcf@options@scope@type}% - \blx@xml@options@scope{ENTRY}{\blx@bcf@options@scope@entry}% - \blx@xml@options@scope{NAMELIST}{\blx@bcf@options@scope@namelist}% - \blx@xml@options@scope{NAME}{\blx@bcf@options@scope@name}} - % sourcemap - \ifbool{sourcemap} - {\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}} - {}}}} - {}% - % labelalpha template - \eappto\blx@tempa{% - \blx@xml@comment{LABELALPHA TEMPLATE}}% - \def\do##1{% - \eappto\blx@tempa{% - \blx@xml@labelalphatemplate{##1}{% - \csuse{blx@biber@labelalphatemplate@##1}}% - }% - }% - \dolistloop\blx@biber@latem@type - % data inheritance - \eappto\blx@tempa{% - \blx@xml@comment{INHERITANCE}% - \blx@xml@inheritance{% - \csuse{blx@biber@inherit@default}% - \csuse{blx@biber@inherit@data}% - }% - }% - % noinit - \ifcsdef{blx@biber@noinit} - {\eappto\blx@tempa{% - \blx@xml@comment{NOINIT}% - \blx@xml@noinits{% - \csuse{blx@biber@noinit}% - }% - }} - {}% - % nolabel - \ifcsdef{blx@biber@nolabel} - {\eappto\blx@tempa{% - \blx@xml@comment{NOLABEL}% - \blx@xml@nolabels{% - \csuse{blx@biber@nolabel}% - }% - }} - {}% - % nolabel - \ifcsdef{blx@biber@nolabelwidthcount} - {\eappto\blx@tempa{% - \blx@xml@comment{NOLABELWIDTHCOUNT}% - \blx@xml@nolabelwidthcounts{% - \csuse{blx@biber@nolabelwidthcount}% - }% - }} - {}% - % nosort - \ifcsdef{blx@biber@nosort} - {\eappto\blx@tempa{% - \blx@xml@comment{NOSORT}% - \blx@xml@nosorts{% - \csuse{blx@biber@nosort}% - }% - }} - {}% - % sortingnamekey - \eappto\blx@tempa{\blx@xml@comment{SORTING NAME KEY}}% - \def\do##1{% - \eappto\blx@tempa{% - \blx@xml@sortingnamekey{##1}{% - \csuse{blx@biber@sortingnamekey@##1}}}}% - \dolistloop\blx@biber@sortingnamekeyspecs - % sorting - \def\do##1{% - \eappto\blx@bcf@presort{\csuse{blx@bcf@presort@##1}}% - \eappto\blx@bcf@exclude{\csuse{blx@bcf@exclude@##1}}}% - \dolistcsloop{blx@biber@datamodel@entrytypes}% - \eappto\blx@tempa{% - \blx@xml@comment{SORTING}% - \blx@xml@sorting{}{% - \blx@bcf@presort - \blx@bcf@exclude - \csuse{blx@biber@sorting@\blx@sorting}% - }% - }% - % datamodel - \eappto\blx@tempa{% - \blx@xml@comment{DATA MODEL}% - \blx@xml@datamodel{% - \blx@xml@datamodel@constants{% - \blx@bcf@datamodel@constants - }% - \blx@xml@datamodel@entrytypes{% - \blx@bcf@datamodel@entrytypes - }% - \blx@xml@datamodel@fields{% - \blx@bcf@datamodel@fields - }% - \blx@bcf@datamodel@entryfields - \blx@bcf@datamodel@constraints - }% - }% - % files - \let\blx@tempb\@empty - \blx@bibdata\blx@tempb\blx@bibfiles - \eappto\blx@tempa{% - \blx@xml@comment{CITATION DATA}% - \blx@xml@comment{SECTION 0}% - \blx@xml@bibdata{0}{\blx@tempb}% - \blx@xml@section{0}% - }% - \immediate\openout\blx@bcfout\jobname.bcf\relax - \blx@auxwrite\blx@bcfout{}{\blx@tempa}% - \global\undef\blx@tempa - \endgroup - \AfterEndDocument{% - \blx@auxwrite\blx@bcfout{}{% - \blx@xml@endsection\blx@nl - \csuse{blx@biber@slists}% - \blx@xml@endfile}% - \immediate\closeout\blx@bcfout}} - -%% Customisation - -% nolabel -\newrobustcmd*{\DeclareNolabel}[1]{% - \begingroup - \let\nolabel\blx@nolabel - \let\blx@tempa\@empty - #1% - \global\cslet{blx@biber@nolabel}\blx@tempa - \endgroup} -\@onlypreamble\DeclareNolabel - -\newcommand*{\blx@nolabel}[1]{% - \eappto\blx@tempa{% - \blx@xml@nolabel{#1}}} - -% nolabelwidthcount -\newrobustcmd*{\DeclareNolabelwidthcount}[1]{% - \begingroup - \let\nolabel\blx@nolabelwidthcount - \let\blx@tempa\@empty - #1% - \global\cslet{blx@biber@nolabelwidthcount}\blx@tempa - \endgroup} -\@onlypreamble\DeclareNolabelwidthcount - -\newcommand*{\blx@nolabelwidthcount}[1]{% - \eappto\blx@tempa{% - \blx@xml@nolabelwidthcount{#1}}} - -% nosort -\newrobustcmd*{\DeclareNosort}[1]{% - \begingroup - \let\nosort\blx@nosort - \let\blx@tempa\@empty - #1% - \global\cslet{blx@biber@nosort}\blx@tempa - \endgroup} -\@onlypreamble\DeclareNosort - -\newcommand*{\blx@nosort}[2]{% - \eappto\blx@tempa{% - \blx@xml@nosort{#1}{#2}}} - -% noinit -\newrobustcmd*{\DeclareNoinit}[1]{% - \begingroup - \let\noinit\blx@noinit - \let\blx@tempa\@empty - #1% - \global\cslet{blx@biber@noinit}\blx@tempa - \endgroup} -\@onlypreamble\DeclareNoinit - -\newcommand*{\blx@noinit}[1]{% - \eappto\blx@tempa{% - \blx@xml@noinit{#1}}} - -% sourcemap -\newrobustcmd*{\DeclareSourcemap}[1]{% - \booltrue{sourcemap}% - \begingroup - \let\maps\blx@usersourcemap@maps - \let\blx@tempa\@empty - #1% - \csxdef{blx@biber@sourcemap@user}{\blx@tempa}% - \endgroup} -\@onlypreamble\DeclareSourcemap - -\newrobustcmd*{\DeclareStyleSourcemap}[1]{% - \booltrue{sourcemap}% - \begingroup - \let\maps\blx@stylesourcemap@maps - \let\blx@tempa\@empty - #1% - \csxdef{blx@biber@sourcemap@style}{\blx@tempa}% - \endgroup} - -\@onlypreamble\DeclareStyleSourcemap - -\newrobustcmd*{\DeclareDriverSourcemap}[2][]{% - \booltrue{sourcemap}% - \begingroup - \let\blx@tempa\@empty - \let\blx@tempb\@empty - \let\blx@tempc\@empty - \let\blx@tempd\@empty - \let\map\blx@sourcemap@map - #2% - \ifblank{#1} - {\setkeys{blx@sourcemap@maps}{datatype=bibtex, level=driver}} - {\setkeys{blx@sourcemap@maps}{#1, level=driver}}% - \eappto\blx@tempa{% - \blx@xml@sourcemap@maps{\blx@tempb}{\blx@tempc}}% - \csxdef{blx@biber@sourcemap@defaults@\blx@tempd}{\blx@tempa}% - \endgroup} -\@onlypreamble\DeclareDriverSourcemap - -\newcommand*{\blx@usersourcemap@maps}[2][]{% - \let\blx@tempb\@empty - \let\blx@tempc\@empty - \let\map\blx@sourcemap@map - \ifblank{#1} - {\setkeys{blx@sourcemap@maps}{datatype=bibtex, level=user}} - {\setkeys{blx@sourcemap@maps}{#1, level=user}}% - #2% - \eappto\blx@tempa{% - \blx@xml@sourcemap@maps{\blx@tempb}{\blx@tempc}}} - -\newcommand*{\blx@stylesourcemap@maps}[2][]{% - \let\blx@tempb\@empty - \let\blx@tempc\@empty - \let\map\blx@sourcemap@map - \ifblank{#1} - {\setkeys{blx@sourcemap@maps}{datatype=bibtex, level=style}} - {\setkeys{blx@sourcemap@maps}{#1, level=style}}% - #2% - \eappto\blx@tempa{% - \blx@xml@sourcemap@maps{\blx@tempb}{\blx@tempc}}} - -\define@key{blx@sourcemap@maps}{datatype}{% characters - \eappto\blx@tempb{ datatype="#1"}% - \eappto\blx@tempd{#1}} -\define@key{blx@sourcemap@maps}{overwrite}[true]{% true|false - \ifstrequal{#1}{true} - {\appto\blx@tempb{ map\string_overwrite="1"}} - {}} -\define@key{blx@sourcemap@maps}{level}{% user|style|driver - \appto\blx@tempb{ level="#1"}} - -\newcommand*{\blx@sourcemap@map}[2][]{% - \let\blx@tempm\@empty - \let\blx@tempe\@empty - \let\perdatasource\blx@sourcemap@perdatasource - \let\pertype\blx@sourcemap@pertype - \let\pernottype\blx@sourcemap@pernottype - \let\step\blx@sourcemap@step - \ifblank{#1} - {} - {\setkeys{blx@sourcemap@map}{#1}}% - #2% - \eappto\blx@tempc{% - \blx@xml@sourcemap@map{\blx@tempm}{\blx@tempe}}} - -\define@key{blx@sourcemap@map}{overwrite}[true]{% true|false - \ifstrequal{#1}{true} - {\appto\blx@tempm{ map\string_overwrite="1"}} - {}} -\define@key{blx@sourcemap@map}{foreach}{% characters - \eappto\blx@tempm{ map\string_foreach="#1"}} - -\newcommand*{\blx@sourcemap@perdatasource}[1]{% - \eappto\blx@tempe{% - \blx@xml@sourcemap@perdatasource{#1}}} - -\newcommand*{\blx@sourcemap@pertype}[1]{% - \eappto\blx@tempe{% - \blx@xml@sourcemap@pertype{#1}}} - -\newcommand*{\blx@sourcemap@pernottype}[1]{% - \eappto\blx@tempe{% - \blx@xml@sourcemap@pernottype{#1}}} - -\newcommand*{\blx@sourcemap@step}[1][2]{% - \let\blx@tempf\@empty - \setkeys{blx@sourcemap@step}{#1}% - \eappto\blx@tempe{% - \blx@xml@sourcemap@step{\blx@tempf}}} - -\define@key{blx@sourcemap@step}{typesource}{% characters - \eappto\blx@tempf{ map\string_type\string_source="#1"}} -\define@key{blx@sourcemap@step}{typetarget}{% characters - \eappto\blx@tempf{ map\string_type\string_target="#1"}} -\define@key{blx@sourcemap@step}{final}[true]{% true|false - \ifstrequal{#1}{true} - {\appto\blx@tempf{ map\string_final="1"}} - {}} -\define@key{blx@sourcemap@step}{fieldsource}{% characters - \eappto\blx@tempf{ map\string_field\string_source="#1"}} -\define@key{blx@sourcemap@step}{fieldtarget}{% characters - \eappto\blx@tempf{ map\string_field\string_target="#1"}} -\define@key{blx@sourcemap@step}{fieldset}{% characters - \eappto\blx@tempf{ map\string_field\string_set="#1"}} -% We are sanitising the XML here as it's the value of an attribute which -% might contain quotes or ampersands (URLs, for example) -\define@key{blx@sourcemap@step}{fieldvalue}{% characters - \blx@xmlsanitizeafter{\def\blx@temps}{#1}% - \eappto\blx@tempf{ map\string_field\string_value="\blx@temps"}} -\define@key{blx@sourcemap@step}{append}[true]{% true|false - \ifstrequal{#1}{true} - {\appto\blx@tempf{ map\string_append="1"}} - {}} -\define@key{blx@sourcemap@step}{null}[true]{% true|false - \ifstrequal{#1}{true} - {\appto\blx@tempf{ map\string_null="1"}} - {}} -\define@key{blx@sourcemap@step}{entrynull}[true]{% true|false - \ifstrequal{#1}{true} - {\appto\blx@tempf{ map\string_entry\string_null="1"}} - {}} -\define@key{blx@sourcemap@step}{entrynew}{% characters - \appto\blx@tempf{ map\string_entry\string_new="#1"}} -\define@key{blx@sourcemap@step}{entrynewtype}{% characters - \appto\blx@tempf{ map\string_entry\string_newtype="#1"}} -\define@key{blx@sourcemap@step}{entrytarget}{% characters - \appto\blx@tempf{ map\string_entrytarget="#1"}} -\define@key{blx@sourcemap@step}{entryclone}{% characters - \appto\blx@tempf{ map\string_entry\string_clone="#1"}} -\define@key{blx@sourcemap@step}{origfield}[true]{% true|false - \ifstrequal{#1}{true} - {\appto\blx@tempf{ map\string_origfield="1"}} - {}} -\define@key{blx@sourcemap@step}{origfieldval}[true]{% true|false - \ifstrequal{#1}{true} - {\appto\blx@tempf{ map\string_origfieldval="1"}} - {}} -\define@key{blx@sourcemap@step}{origentrytype}[true]{% true|false - \ifstrequal{#1}{true} - {\appto\blx@tempf{ map\string_origentrytype="1"}} - {}} -\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"}} - -%%% - -\newrobustcmd*{\DeclareLabelalphaTemplate}[2][]{% - \ifblank{#1} - {\blx@biber@latem{#2}{global}} - {\forcsvlist{\blx@biber@latem{#2}}{#1}}} -\@onlypreamble\DeclareLabelalphaTemplate -\blx@collectopts{xml}{blx@globalopts}{labelalphatemplate}% for passing to the .bcf -\blx@collectopts{xml}{blx@typeopts}{labelalphatemplate}% for passing to the .bcf - -\def\blx@biber@latem#1#2{% - \begingroup - \let\labelelement\blx@latem@element - \let\field\blx@latem@field - \let\literal\blx@latem@literal - \blx@tempcnta\z@ - \let\blx@tempa\@empty - #1% - \ifdef\blx@biber@latem@type - {\ifinlist{#2}{\blx@biber@latem@type} - {\global\cslet{blx@biber@labelalphatemplate@#2}\blx@tempa} - {\listgadd\blx@biber@latem@type{#2}% - \global\cslet{blx@biber@labelalphatemplate@#2}\blx@tempa}}% - {\listgadd\blx@biber@latem@type{#2}% - \global\cslet{blx@biber@labelalphatemplate@#2}\blx@tempa}% - \endgroup} - -\newcommand*{\blx@latem@element}[1]{% - \advance\blx@tempcnta\@ne - \let\blx@tempb\@empty - #1% - \eappto\blx@tempa{% - \blx@xml@labelalpha@element{\the\blx@tempcnta}{\blx@tempb}}} - -\newcommand*{\blx@latem@literal}[1]{% - \blx@xmlsanitizeafter{\def\blx@temps}{#1}% - \eappto\blx@tempb{% - \blx@xml@labelalpha@part{}{\expandafter\regexp\expandafter{\blx@temps}}}} - -\newcommand*{\blx@latem@field}[2][]{% - \let\blx@tempc\@empty - \ifblank{#1} - {} - {\setkeys{blx@latem@field}{#1}}% - \eappto\blx@tempb{% - \blx@xml@labelalpha@part{\blx@tempc}{#2}}} - -\define@key{blx@latem@field}{uppercase}[true]{% true|false - \ifstrequal{#1}{true} - {\appto\blx@tempc{ uppercase="1"}} - {}} -\define@key{blx@latem@field}{lowercase}[true]{% true|false - \ifstrequal{#1}{true} - {\appto\blx@tempc{ lowercase="1"}} - {}} -\define@key{blx@latem@field}{final}[true]{% true|false - \ifstrequal{#1}{true} - {\appto\blx@tempc{ final="1"}} - {}} -\define@key{blx@latem@field}{strwidth}{% integer - \eappto\blx@tempc{ substring\string_width="#1"}} -\define@key{blx@latem@field}{pstrwidth}{% integer - \eappto\blx@tempc{ substring\string_pwidth="#1"}} -\define@key{blx@latem@field}{varwidth}[true]{% "v" - \ifstrequal{#1}{true} - {\appto\blx@tempc{ substring\string_width="v"}} - {}} -\define@key{blx@latem@field}{varwidthnorm}[true]{% "vf" - \ifstrequal{#1}{true} - {\appto\blx@tempc{ substring\string_width="vf"}} - {}} -\define@key{blx@latem@field}{varwidthlist}[true]{% "l" - \ifstrequal{#1}{true} - {\appto\blx@tempc{ substring\string_width="l"}} - {}} -\define@key{blx@latem@field}{strfixedcount}{% - \eappto\blx@tempc{ substring\string_fixed\string_threshold="#1"}} -\define@key{blx@latem@field}{strwidthmax}{% - \eappto\blx@tempc{ substring\string_width\string_max="#1"}} -\define@key{blx@latem@field}{strside}{% left|right - \ifstrequal{#1}{right} - {\eappto\blx@tempc{ substring\string_side="right"}} - {\eappto\blx@tempc{ substring\string_side="left"}}} -\define@key{blx@latem@field}{compound}[true]{% true|false - \ifstrequal{#1}{true} - {\appto\blx@tempc{ substring\string_compound="1"}} - {}} -\define@key{blx@latem@field}{pcompound}[true]{% true|false - \ifstrequal{#1}{true} - {\appto\blx@tempc{ substring\string_pcompound="1"}} - {}} -\define@key{blx@latem@field}{ifnames}{% - \eappto\blx@tempc{ ifnamecount="#1"}} -\define@key{blx@latem@field}{names}{% - \eappto\blx@tempc{ namerange="#1"}} -\define@key{blx@latem@field}{noalphaothers}[true]{% - \eappto\blx@tempc{ noalphaothers="1"}} -\define@key{blx@latem@field}{padchar}{% - \blx@xmlsanitizeafter{\def\blx@temps}{#1}% - \eappto\blx@tempc{ pad\string_char="\expandafter\regexp\expandafter{\blx@temps}"}} -\define@key{blx@latem@field}{padside}{% left|right - \ifstrequal{#1}{left} - {\eappto\blx@tempc{ pad\string_side="left"}} - {\eappto\blx@tempc{ pad\string_side="right"}}} - -% [<exceptions>]{<options>} - -\newrobustcmd*{\DefaultInheritance}[2][]{% - \begingroup - \ifblank{#2} - {} - {\setkeys{blx@inherit@default}{#2}}% - \edef\blx@tempa{\space - inherit\string_all="\iftoggle{blx@inherit@all}{true}{false}"\space - override\string_target="\iftoggle{blx@inherit@override}{true}{false}"}% - \let\blx@tempb\@empty - \let\except\blx@inherit@except - #1% - \xdef\blx@biber@inherit@default{% - \blx@xml@inherit@defaults{\blx@tempa}{\blx@tempb}}% - \endgroup} -\@onlypreamble\DefaultInheritance - -\newtoggle{blx@inherit@all} -\newtoggle{blx@inherit@override} - -\define@key{blx@inherit@default}{all}[true]{% true|false - \settoggle{blx@inherit@all}{#1}} -\define@key{blx@inherit@default}{override}[true]{% true|false - \settoggle{blx@inherit@override}{#1}} - -% {<source>}{<target>}{<options>} - -\newcommand*{\blx@inherit@except}[3]{% - \let\blx@tempc\@empty - \ifblank{#3} - {} - {\setkeys{blx@inherit@except}{#3}}% - \eappto\blx@tempb{% - \blx@xml@inherit@type{#1}{#2}{\blx@tempc}}} - -\define@key{blx@inherit@except}{all}[true]{% true|false - \eappto\blx@tempc{ inherit\string_all="#1"}} -\define@key{blx@inherit@except}{override}[true]{% true|false - \eappto\blx@tempc{ override\string_target="#1"}} - -% {<type,type,...>}{<type,type,...>}{<spec>} -\newrobustcmd*{\DeclareDataInheritance}[3]{% - \begingroup - \let\blx@tempa\@empty - \forcsvlist{\blx@inherit@i{#2}}{#1}% - \let\blx@tempb\@empty - \let\inherit\blx@inherit@field - \let\noinherit\blx@inherit@block - #3% - \xappto\blx@biber@inherit@data{% - \blx@xml@inherit@data{% - \blx@tempa - \blx@tempb}}% - \endgroup} -\@onlypreamble\DeclareDataInheritance - -\def\blx@inherit@i#1#2{% - \forcsvlist{\blx@inherit@ii{#2}}{#1}} - -\def\blx@inherit@ii#1#2{% - \eappto\blx@tempa{\blx@xml@inherit@type{#1}{#2}{}}} - -\blx@collectopts{xml}{blx@globalopts}{inheritance}% for passing to the .bcf - -% [<options>]{<source>}{<target>} -\newcommand*{\blx@inherit@field}[3][]{% - \let\blx@tempc\@empty - \ifblank{#1} - {} - {\setkeys{blx@inherit@field}{#1}}% - \eappto\blx@tempb{% - \blx@xml@inherit@field{#2}{#3}{\blx@tempc}}} - -\newcommand*{\blx@inherit@block}[1]{% - \eappto\blx@tempb{\blx@xml@inherit@block{#1}}} - -\define@key{blx@inherit@field}{override}[true]{% true|false - \ifstrequal{#1}{true} - {\edef\blx@tempc{ override\string_target="true"}} - {\edef\blx@tempc{ override\string_target="false"}}} - -\newrobustcmd*{\ResetDataInheritance}{% - \global\csundef{blx@biber@inherit@data}} -\@onlypreamble\ResetDataInheritance - -% {<name>}{<spec>} -\newrobustcmd*{\DeclareBiblistFilter}[2]{% - \begingroup - \let\filteror\blx@biblistfilteror - \let\filter\blx@biblistfilter - \let\blx@tempa\@empty - #2% - \global\cslet{blx@biber@biblistfilters@#1}\blx@tempa - \endgroup} -\@onlypreamble\DeclareBiblistFilter - -\newcommand*{\blx@biblistfilteror}[1]{% - \eappto\blx@tempa{\blx@xml@slistfilterorbegin}% - #1% - \eappto\blx@tempa{\blx@xml@slistfilterorend}} - -\newcommand*{\blx@biblistfilter}[1][2]{% - \let\blx@tempc\@empty - \let\blx@tempd\@empty - \setkeys{blx@biblistfilter@filter}{#1}% - \eappto\blx@tempa{% - \blx@xml@slistfilter{\blx@tempc}{\blx@tempd}}} - -\define@key{blx@biblistfilter@filter}{type}{% - \def\blx@tempc{#1}} -\define@key{blx@biblistfilter@filter}{filter}{% - \def\blx@tempd{#1}} - -% Predefine filters for label fields -\def\do#1{\DeclareBiblistFilter{#1}{\filter[type=field,filter=#1]}} -\abx@dolabelfields - -% [<specname>]{<spec>} -\newrobustcmd*{\DeclareSortingNamekeyScheme}[2][]{% - \begingroup - \ifblank{#1} - {\def\blx@biber@snkname{global}}% default - {\def\blx@biber@snkname{#1}}% - \let\namepart\blx@sortnk@namepart - \let\keypart\blx@sortnk@keypart - \let\literal\blx@sortnk@literal - \let\blx@tempa\@empty - \blx@tempcnta\z@ - #2% - \global\cslet{blx@biber@sortingnamekey@\blx@biber@snkname}\blx@tempa - \xifinlist{\blx@biber@snkname}{\blx@biber@sortingnamekeyspecs} - {} - {\listxadd\blx@biber@sortingnamekeyspecs{\blx@biber@snkname}}% - % Add the sortnamekeyscheme to the list of sortnamekeyschemes - % so we can compare on next run - \xifinlist{\blx@biber@snkname}{\blx@sortnamekeyschemes} - {} - {\listxadd\blx@sortnamekeyschemes{\blx@biber@snkname}}% - \endgroup} -\@onlypreamble\DeclareSortingNamekeyScheme -\blx@collectopts{xml}{blx@globalopts}{sortingnamekey}% for passing to the .bcf -\DeclareEntryOption[string]{sortnamekeyscheme}{% - \def\blx@refcontext@sortingnamekey{#1}} - -% User-mode macro for checking sorting name key scheme -\def\ifsortnamekeyscheme#1{% - \expandafter\ifstrequal\expandafter{\blx@refcontext@sortingnamekey}{#1}} - -\newcommand*{\blx@sortnk@keypart}[1]{% - \advance\blx@tempcnta\@ne - \blx@tempcntb\z@ - \edef\blx@tempd{ order="\the\blx@tempcnta"}% - \let\blx@tempb\@empty - #1% - \eappto\blx@tempa{% - \blx@xml@sortingnamekeykeypart{\blx@tempd}{\blx@tempb}}} - -\newcommand*{\blx@sortnk@literal}[1]{% - \advance\blx@tempcntb\@ne - \edef\blx@tempe{ order="\the\blx@tempcntb"}% - \let\blx@tempc\@empty - \eappto\blx@tempb{% - \blx@xml@sortingnamekeyliteral{\blx@tempe}{#1}}} - -\newcommand*{\blx@sortnk@namepart}[2][]{% - \advance\blx@tempcntb\@ne - \edef\blx@tempe{ order="\the\blx@tempcntb"}% - \let\blx@tempc\@empty - \ifblank{#1} - {} - {\setkeys{blx@sortnk@namepart}{#1}}% - \eappto\blx@tempb{% - \blx@xml@sortingnamekeynamepart{\blx@tempe}{\blx@tempc}{#2}}} - -\define@key{blx@sortnk@namepart}{use}[true]{% use* option for namepart true|false - \ifstrequal{#1}{true} - {\appto\blx@tempc{ use="1"}} - {\appto\blx@tempc{ use="0"}}} - -% {<name>}{<spec>} -\newrobustcmd*{\DeclareSortingScheme}[3][]{% - \ifblank{#1} - {} - {\setkeys{blx@sortdef@sorting}{#1}% - \csxdef{blx@sortdef@locale@#2}{\blx@templ}}% - \begingroup - \let\sort\blx@sortdef@sort - \let\name\blx@sortdef@field% legacy pre-biblatex 2.0 compat - \let\list\blx@sortdef@field% legacy pre-biblatex 2.0 compat - \let\field\blx@sortdef@field - \let\literal\blx@sortdef@literal - \def\citeorder{\blx@sortdef@field{citeorder}}% - \blx@tempcnta\z@ - \let\blx@tempa\@empty - #3% - \global\cslet{blx@biber@sorting@#2}\blx@tempa - \endgroup} -\@onlypreamble\DeclareSortingScheme -\blx@collectopts{xml}{blx@globalopts}{sortscheme}% for passing to the .bcf - -\define@key{blx@sortdef@sorting}{locale}{% locale name - \def\blx@templ{#1}} - -\newcommand*{\blx@sortdef@sort}[2][]{% - \advance\blx@tempcnta\@ne - \blx@tempcntb\z@ - \let\blx@tempb\@empty - \edef\blx@tempc{order="\the\blx@tempcnta"}% - \ifblank{#1} - {} - {\setkeys{blx@sortdef@sort}{#1}}% - \let\do\@firstofone - #2% - \eappto\blx@tempa{% - \blx@xml@sort{\blx@tempc}{\blx@tempb}}} - -\define@key{blx@sortdef@sort}{locale}{% locale name - \eappto\blx@tempc{ locale="#1"}} -\define@key{blx@sortdef@sort}{direction}{% ascending|descending - \ifstrequal{#1}{ascending} - {\eappto\blx@tempc{ sort\string_direction="ascending"}} - {\eappto\blx@tempc{ sort\string_direction="descending"}}} -\define@key{blx@sortdef@sort}{final}[true]{% true|false - \ifstrequal{#1}{true} - {\appto\blx@tempc{ final="1"}} - {}} -\define@key{blx@sortdef@sort}{sortcase}[true]{% true|false - \ifstrequal{#1}{true} - {\appto\blx@tempc{ sortcase="1"}} - {\appto\blx@tempc{ sortcase="0"}}} -\define@key{blx@sortdef@sort}{sortupper}[true]{% true|false - \ifstrequal{#1}{true} - {\appto\blx@tempc{ sortupper="1"}} - {\appto\blx@tempc{ sortupper="0"}}} - -\newcommand*{\blx@sortdef@field}[2][]{% - \advance\blx@tempcntb\@ne - \edef\blx@tempd{order="\the\blx@tempcntb"}% - \ifblank{#1} - {} - {\setkeys{blx@sortdef@field}{#1}}% - \eappto\blx@tempb{% - \blx@xml@sortitem{\blx@tempd}{#2}}} - -\define@key{blx@sortdef@field}{padside}{% left|right - \ifstrequal{#1}{right} - {\eappto\blx@tempd{ pad\string_side="right"}} - {\eappto\blx@tempd{ pad\string_side="left"}}} -\define@key{blx@sortdef@field}{padwidth}{% integer - \eappto\blx@tempd{ pad\string_width="#1"}} -\define@key{blx@sortdef@field}{padchar}{% character - \blx@xmlsanitizeafter{\def\blx@tempe}{#1}% - \eappto\blx@tempd{ pad\string_char="\blx@tempe"}} -\define@key{blx@sortdef@field}{strside}{% left|right - \ifstrequal{#1}{right} - {\eappto\blx@tempd{ substring\string_side="right"}} - {\eappto\blx@tempd{ substring\string_side="left"}}} -\define@key{blx@sortdef@field}{strwidth}{% integer - \eappto\blx@tempd{ substring\string_width="#1"}} - -\def\blx@sortdef@literal#1{% - \advance\blx@tempcntb\@ne - \blx@xmlsanitizeafter{\def\blx@tempe}{#1}% - \eappto\blx@tempb{% - \blx@xml@sortitem{order="\the\blx@tempcntb"}{\blx@tempe}}} - -% [<type,type,...>]{<string>} - -\newrobustcmd*{\DeclarePresort}[2][]{% - \begingroup - \blx@xmlsanitizeafter{\def\blx@tempa}{#2}% - \ifblank{#1} - {\xdef\blx@bcf@presort{\blx@xml@presort{}{\blx@tempa}}} - {\notblank{#2} - {\forcsvlist{\blx@defpresort\blx@tempa}{#1}} - {\forcsvlist\blx@undefpresort{#1}}}% - \endgroup} -\@onlypreamble\DeclarePresort -\blx@collectopts{string}{blx@globalopts}{presort}% for passing to the .bcf -\blx@collectopts{string}{blx@typeopts}{presort}% for passing to the .bcf -\blx@collectopts{string}{blx@entryopts}{presort}% for passing to the .bcf - -\def\blx@defpresort#1#2{% - \csxdef{blx@bcf@presort@#2}{\blx@xml@presort{#2}{#1}}} -\def\blx@undefpresort#1{% - \global\csundef{blx@bcf@presort@#1}} - -\newrobustcmd*{\DeclareSortExclusion}[2]{% - \forcsvlist{\blx@sortexlude{#2}}{#1}} -\blx@collectopts{xml}{blx@typeopts}{sortexclusion}% for passing to the .bcf - -\def\blx@sortexlude#1#2{% - \begingroup - \ifblank{#1} - {\global\csundef{blx@bcf@exclude@#2}} - {\let\blx@tempa\@empty - \forcsvlist\blx@sortexlude@i{#1}% - \csxdef{blx@bcf@exclude@#2}{% - \blx@xml@sortexclude{#2}{\blx@tempa}}} - \endgroup} - -\def\blx@sortexlude@i#1{% - \appto\blx@tempa{\blx@xml@exclude{#1}}} - -% [<type,type,...>]{<field,field,...>} - -\newrobustcmd*{\DeclareLabelname}[2][]{% - \begingroup - \let\blx@tempa\@empty - \def\blx@tempb{labelnamespec}% - \let\field\blx@ordered@field - \ifblank{#1} - {\global\cslet{blx@bcf@labelnamespec}\@empty} - {\def\blx@tempa{#1}% - \def\do##1{\global\cslet{blx@bcf@labelnamespec@##1}\@empty}% - \expandafter\docsvlist\expandafter{#1}}% - #2% - \endgroup} -\@onlypreamble\DeclareLabelname -\blx@collectopts{xml}{blx@globalopts}{labelnamespec}% for passing to the .bcf -\blx@collectopts{xml}{blx@typeopts}{labelnamespec}% for passing to the .bcf - -\newrobustcmd*{\DeclareLabeltitle}[2][]{% - \begingroup - \let\blx@tempa\@empty - \def\blx@tempb{labeltitlespec}% - \let\field\blx@ordered@field - \ifblank{#1} - {\global\cslet{blx@bcf@labeltitlespec}\@empty} - {\def\blx@tempa{#1}% - \def\do##1{\global\cslet{blx@bcf@labeltitlespec@##1}\@empty}% - \expandafter\docsvlist\expandafter{#1}}% - #2% - \endgroup} -\@onlypreamble\DeclareLabeltitle -\blx@collectopts{xml}{blx@globalopts}{labeltitlespec}% for passing to the .bcf -\blx@collectopts{xml}{blx@typeopts}{labeltitlespec}% for passing to the .bcf - -\newrobustcmd*{\DeclareLabelyear}[2][]{% - \blx@warning@noline{% - 'DeclareLabelyear' is deprecated, please use 'DeclareLabeldate'}} - -\newrobustcmd*{\DeclareLabeldate}[2][]{% - \begingroup - \let\blx@tempa\@empty - \def\blx@tempb{labeldatespec}% - \let\field\blx@orderedld@field - \let\literal\blx@orderedld@literal - \ifblank{#1} - {\global\cslet{blx@bcf@labeldatespec}\@empty} - {\def\blx@tempa{#1}% - \def\do##1{\global\cslet{blx@bcf@labeldatespec@##1}\@empty}% - \expandafter\docsvlist\expandafter{#1}}% - #2% - \endgroup} -\@onlypreamble\DeclareLabeldate -\blx@collectopts{xml}{blx@globalopts}{labeldatespec}% for passing to the .bcf -\blx@collectopts{xml}{blx@typeopts}{labeldatespec}% for passing to the .bcf - -\newcommand*{\blx@ordered@field}[2][]{% - \let\blx@tempc\@empty - \ifblank{#1} - {} - {\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}}}% - \expandafter\docsvlist\expandafter{\blx@tempa}}} - -\newcommand*{\blx@orderedld@field}[2][]{% - \let\blx@tempc\@empty - \ifblank{#1} - {} - {\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}{ type="field"\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}}}% - \expandafter\docsvlist\expandafter{\blx@tempa}}} - -%% Package options - -% [<entrytype,entrytype,...>]{<options>} - -\newrobustcmd*{\ExecuteBibliographyOptions}[2][]{% - \ifblank{#1} - {\setkeys{blx@opt@pre}{#2}} - {\forcsvlist{\blx@typeoptions{#2}}{#1}}} -\@onlypreamble\ExecuteBibliographyOptions - -\def\blx@typeoptions#1#2{% - \blx@addtypeopt{#2}% - \csappto{blx@opts@type@#2}{#1,}} - -\def\blx@addtypeopt#1{% - \notblank{#1} - {\ifdef\blx@opts@type - {\ifinlist{#1}{\blx@opts@type} - {} - {\listgadd\blx@opts@type{#1}}} - {\listgadd\blx@opts@type{#1}}} - {}} - -% load-time only - -% Have to have a dummy for this as it's set much earlier but is passed -% through to here where we just ignore it -\define@key{blx@opt@ldt}{datamodel}{} - -\define@key{blx@opt@ldt}{style}{% - \def\blx@cbxfile{#1}% - \def\blx@bbxfile{#1}} - -\define@key{blx@opt@ldt}{bibstyle}{% - \def\blx@bbxfile{#1}} - -\define@key{blx@opt@ldt}{citestyle}{% - \def\blx@cbxfile{#1}} - -\define@key{blx@opt@ldt}{natbib}[true]{% - \settoggle{blx@natbib}{#1}} - -\define@key{blx@opt@ldt}{mcite}[true]{% - \settoggle{blx@mcite}{#1}} - -% load-time and preamble - -\DeclareBibliographyOption[string]{backend}{ - \blx@error - {'backend' is load-time only option} - {The 'backend' option is load-time only and cannot - be\MessageBreak set after package loading}} - -\DeclareBibliographyOption[boolean]{debug}[true]{% - \settoggle{blx@debug}{#1}} - -\DeclareBibliographyOption[boolean]{loadfiles}[true]{% - \settoggle{blx@loadfiles}{#1}} - -\DeclareBibliographyOption[integer]{mincrossrefs}{% - \ifnum#1<\z@ - \def\blx@mincrossrefs{1}% - \def\blx@minxrefs{1}% - \else - \def\blx@mincrossrefs{#1}% - \def\blx@minxrefs{#1}% - \fi} -\def\blx@minxrefs{2} - -\DeclareBibliographyOption[string]{texencoding}{% - \ifstrequal{#1}{auto} - {\undef\blx@texencoding} - {\def\blx@texencoding{#1}}} - -\DeclareBibliographyOption[string]{bibencoding}{% - \ifcsdef{blx@bibenc@#1} - {\letcs\blx@bibencoding{blx@bibenc@#1}} - {\def\blx@bibencoding{#1}}} - -\def\abx@mapbibenc#1#2{\csdef{blx@bibenc@#1}{#2}} -\abx@mapbibenc{inputenc}{auto} -\abx@mapbibenc{x-ascii}{ascii} - -\def\abx@mapinpenc#1#2{\csdef{blx@inpenc@#1}{#2}} -\abx@mapinpenc{utf8x}{utf8} -\abx@mapinpenc{lutf8}{utf8} -\abx@mapinpenc{x-ascii}{ascii} - -\DeclareBibliographyOption[boolean]{safeinputenc}[true]{% - \settoggle{blx@safeinputenc}{#1}} -\newtoggle{blx@safeinputenc} - -\DeclareBibliographyOption[string]{sorting}{% - \def\blx@sorting{#1}% - \def\blx@refcontext@sorting{#1}} - -\AtEndPreamble{% - \ifcsdef{blx@biber@sorting@\blx@sorting} - {} - {\blx@err@invopt{sorting=\blx@sorting}{}% - \def\blx@sorting{nty}% - \def\blx@refcontext@sorting{nty}}% - \listxadd\blx@sortschemes{\blx@sorting}% - \def\blx@refcontext@sortingnamekey{global}% - \xdef\blx@refcontext@context{\blx@refcontext@sorting/\blx@refcontext@sortingnamekey}} - -\DeclareBibliographyOption[boolean]{sortcase}[true]{% - \settoggle{blx@sortcase}{#1}} - -\DeclareBibliographyOption[boolean]{sortupper}[true]{% - \settoggle{blx@sortupper}{#1}} - -\DeclareBibliographyOption[string]{sortlos}{% - \blx@warning@noline{% - sortlos option is deprecated, use 'sorting' option to \string\printbiblist}} - -\DeclareBibliographyOption[integer]{maxnames}{% - \numdef\blx@maxcitenames{#1}% - \numdef\blx@maxbibnames{#1}} -\DeclareBibliographyOption[integer]{minnames}{% - \numdef\blx@mincitenames{#1}% - \numdef\blx@minbibnames{#1}} -\DeclareTypeOption[integer]{maxnames}{% - \numdef\blx@maxcitenames@type{#1}% - \numdef\blx@maxbibnames@type{#1}% - \c@maxnames#1\relax} -\DeclareTypeOption[integer]{minnames}{% - \numdef\blx@mincitenames@type{#1}% - \numdef\blx@minbibnames@type{#1}% - \c@minnames#1\relax} -\DeclareEntryOption[integer]{maxnames}{% - \c@maxnames#1\relax} -\DeclareEntryOption[integer]{minnames}{% - \c@minnames#1\relax} - -\DeclareBibliographyOption[integer]{maxbibnames}{% - \numdef\blx@maxbibnames{#1}} -\DeclareBibliographyOption[integer]{minbibnames}{% - \numdef\blx@minbibnames{#1}} -\DeclareTypeOption[integer]{maxbibnames}{% - \numdef\blx@maxbibnames@type{#1}% - \iftoggle{blx@bibliography} - {\c@maxnames#1\relax} - {}} -\DeclareTypeOption[integer]{minbibnames}{% - \numdef\blx@minbibnames@type{#1}% - \iftoggle{blx@bibliography} - {\c@minnames#1\relax} - {}} -\DeclareEntryOption[integer]{maxbibnames}{% - \iftoggle{blx@bibliography} - {\c@maxnames#1\relax} - {}} -\DeclareEntryOption[integer]{minbibnames}{% - \iftoggle{blx@bibliography} - {\c@minnames#1\relax} - {}} - -\DeclareBibliographyOption[integer]{maxcitenames}{% - \numdef\blx@maxcitenames{#1}} -\DeclareBibliographyOption[integer]{mincitenames}{% - \numdef\blx@mincitenames{#1}} -\DeclareTypeOption[integer]{maxcitenames}{% - \numdef\blx@maxcitenames@type{#1}% - \iftoggle{blx@bibliography} - {} - {\c@maxnames#1\relax}} -\DeclareTypeOption[integer]{mincitenames}{% - \numdef\blx@mincitenames@type{#1}% - \iftoggle{blx@bibliography} - {} - {\c@minnames#1\relax}} -\DeclareEntryOption[integer]{maxcitenames}{% - \iftoggle{blx@bibliography} - {} - {\c@maxnames#1\relax}} -\DeclareEntryOption[integer]{mincitenames}{% - \iftoggle{blx@bibliography} - {} - {\c@minnames#1\relax}} - -\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[integer]{maxitems}{% - \numdef\blx@maxitems{#1}} -\DeclareBibliographyOption[integer]{minitems}{% - \numdef\blx@minitems{#1}} -\DeclareTypeOption[integer]{maxitems}{% - \numdef\blx@maxitems@type{#1}% - \c@maxitems#1\relax} -\DeclareTypeOption[integer]{minitems}{% - \numdef\blx@minitems@type{#1}% - \c@minitems#1\relax} -\DeclareEntryOption[integer]{maxitems}{% - \c@maxitems#1\relax} -\DeclareEntryOption[integer]{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[integer]{maxalphanames}{% - \numdef\blx@maxalphanames{#1}} -\DeclareBibliographyOption[integer]{minalphanames}{% - \numdef\blx@minalphanames{#1}} -\DeclareTypeOption[integer]{maxalphanames}{% - \numdef\blx@maxalphanames{#1}} -\DeclareTypeOption[integer]{minalphanames}{% - \numdef\blx@minalphanames{#1}} -\DeclareEntryOption[integer]{maxalphanames}{% - \numdef\blx@maxalphanames{#1}} -\DeclareEntryOption[integer]{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[boolean]{terseinits}[true]{% - \ifstrequal{#1}{true} - {\toggletrue{blx@terseinits} - \renewrobustcmd*{\bibinitperiod}{} - \renewrobustcmd*{\bibinitdelim}{} - \renewrobustcmd*{\bibinithyphendelim}{}} - {\togglefalse{blx@terseinits} - \renewrobustcmd*{\bibinitperiod}{\adddot} - \renewrobustcmd*{\bibinitdelim}{\addnbspace} - \renewrobustcmd*{\bibinithyphendelim}{\adddot\mbox{-}}}} - -% Legacy for giveninits -\DeclareBibliographyOption[boolean]{firstinits}[true]{% - \blx@warning@noline{% - 'firstinits' option is deprecated, use 'giveninits' instead}% - \settoggle{blx@giveninits}{#1}} - -% Legacy for sortgiveninits -\DeclareBibliographyOption[boolean]{sortfirstinits}[true]{% - \blx@warning@noline{% - 'sortfirstinits' option is deprecated, use 'sortgiveninits' instead}% - \settoggle{blx@sortgiveninits}{#1}} - -\DeclareBibliographyOption[boolean]{giveninits}[true]{% - \settoggle{blx@giveninits}{#1}} - -\DeclareBibliographyOption[boolean]{sortgiveninits}[true]{% - \settoggle{blx@sortgiveninits}{#1}} - -\DeclareBibliographyOption[boolean]{abbreviate}[true]{% - \ifstrequal{#1}{true} - {\def\abx@str{abx@sstr}} - {\def\abx@str{abx@lstr}}} - -\DeclareBibliographyOption[boolean]{dateabbrev}[true]{% - \ifstrequal{#1}{true} - {\let\abx@bibmonth\blx@imc@bibsstring} - {\let\abx@bibmonth\blx@imc@biblstring}} - -\DeclareBibliographyOption[string]{sortlocale}{% - \edef\blx@sortlocale{\detokenize{#1}}} - -\DeclareBibliographyOption[string]{language}{% - \togglefalse{blx@autolangbib}% - \togglefalse{blx@autolangcite}% - \ifboolexpr{ - test {\ifstrequal{#1}{auto}} - or - test {\ifstrequal{#1}{autobib}} - or - test {\ifstrequal{#1}{autocite}} - } - {\def\blx@languagename{english}% - \ifstrequal{#1}{auto} - {\toggletrue{blx@autolangbib}% - \toggletrue{blx@autolangcite}} - {}% - \ifstrequal{#1}{autobib} - {\toggletrue{blx@autolangbib}} - {}% - \ifstrequal{#1}{autocite} - {\toggletrue{blx@autolangcite}} - {}} - {\IfFileExists{#1.lbx} - {\togglefalse{blx@autolangbib}% - \togglefalse{blx@autolangcite}% - \edef\blx@languagename{#1}} - {\blx@error - {Language '#1' not supported} - {Failed to find a matching '#1.lbx' file}}}} - -\DeclareBibliographyOption[boolean]{clearlang}[true]{% - \settoggle{blx@clearlang}{#1}} - -\DeclareBibliographyOption[string]{babel}{% - \blx@warning@noline{% - 'babel' option is deprecated, use 'autolang' instead}% - \blx@autolang@i{#1}} - -\DeclareBibliographyOption[string]{autolang}{% - \blx@autolang@i{#1}} - -\def\blx@autolang@i#1{% - \ifcsdef{blx@opt@autolang@#1} - {\csuse{blx@opt@autolang@#1}} - {\blx@err@invopt{autolang=#1}{}}} - -\def\blx@opt@autolang@none{% - \undef\blx@thelangenv - \let\blx@hook@initlang\@empty - \let\blx@hook@endlang\@empty} -\def\blx@opt@autolang@hyphen{% - \def\blx@thelangenv{hyphenrules}% - \let\blx@hook@initlang\@empty - \let\blx@hook@endlang\@empty} -\csdef{blx@opt@autolang@other*}{% - \def\blx@thelangenv{otherlanguage*}% - \def\blx@hook@initlang{\@quotereset\@ne}% - \def\blx@hook@endlang{\blx@postpunct}} -\def\blx@opt@autolang@other{% - \def\blx@thelangenv{otherlanguage}% - \def\blx@hook@initlang{\@quotereset\@ne}% - \def\blx@hook@endlang{\blx@postpunct}} -\def\blx@opt@autolang@langname{% - \@ifpackageloaded{polyglossia} - {\def\blx@thelangenv{langname}} - {\def\blx@thelangenv{otherlanguage}}% - \def\blx@hook@initlang{\@quotereset\@ne}% - \def\blx@hook@endlang{\blx@postpunct}} - -\DeclareBibliographyOption[boolean]{indexing}[true]{% - \blx@opt@index{#1}} -\DeclareTypeOption[boolean]{indexing}[true]{% - \blx@opt@index{#1}} -\DeclareEntryOption[boolean]{indexing}[true]{% - \blx@opt@index{#1}} -\def\blx@opt@index#1{% - \ifcsdef{blx@opt@index@#1} - {\csuse{blx@opt@index@#1}} - {\blx@err@invopt{indexing=#1}{}}} -\def\blx@opt@index@true{% - \toggletrue{blx@citeindex}% - \toggletrue{blx@bibindex}} -\def\blx@opt@index@false{% - \togglefalse{blx@citeindex}% - \togglefalse{blx@bibindex}} -\def\blx@opt@index@cite{% - \toggletrue{blx@citeindex}% - \togglefalse{blx@bibindex}} -\def\blx@opt@index@bib{% - \togglefalse{blx@citeindex}% - \toggletrue{blx@bibindex}} - -\DeclareBibliographyOption[boolean]{sortcites}[true]{% - \ifstrequal{#1}{true} - {\let\blx@thecitesort\blx@citesort - \let\blx@thenotecheck\blx@notecheck} - {\let\blx@thecitesort\blx@citenosort - \let\blx@thenotecheck\relax}} - -\DeclareBibliographyOption[boolean]{hyperref}[true]{% - \ifcsdef{blx@opt@hyperref@#1} - {\letcs\blx@hyperref{blx@opt@hyperref@#1}} - {\blx@err@invopt{hyperref=#1}{}}} -\def\blx@opt@hyperref@false{0} -\def\blx@opt@hyperref@true{1} -\def\blx@opt@hyperref@auto{2} - -\DeclareBibliographyOption[boolean]{backref}[true]{% - \ifstrequal{#1}{true} - {\let\blx@backref\blx@addbackref - \let\abx@aux@backref\blx@aux@backref - \booltrue{backtracker}} - {\let\blx@backref\@gobble - \let\abx@aux@backref\@gobblefive - \boolfalse{backtracker}}} - -\DeclareBibliographyOption[string]{backrefsetstyle}{% - \ifcsdef{blx@opt@backrefsetstyle@#1} - {\letcs\blx@backrefsetstyle{blx@opt@backrefsetstyle@#1}} - {\blx@err@invopt{backrefsetstyle=#1}{}}} -\def\blx@opt@backrefsetstyle@setonly{0} -\def\blx@opt@backrefsetstyle@memonly{1} -\def\blx@opt@backrefsetstyle@setormem{2} -\def\blx@opt@backrefsetstyle@setandmem{3} -\def\blx@opt@backrefsetstyle@memandset{4} -\def\blx@opt@backrefsetstyle@setplusmem{5} - -\appto\blx@mkhyperref{% - \ifHy@plainpages - \blx@warning@noline{% - hyperref package option 'plainpages' enabled.\MessageBreak - This may cause problems with hyperlinked back\MessageBreak - references. 'plainpages=false' is recommended}% - \fi - \ifHy@pageanchor\else - \blx@warning@noline{% - hyperref package option 'pageanchor' disabled.\MessageBreak - This will cause problems with hyperlinked back\MessageBreak - references. 'pageanchor=true' is required}% - \fi} - -\DeclareBibliographyOption[string]{block}{% - \ifcsdef{blx@opt@block@#1} - {\csuse{blx@opt@block@#1}} - {\blx@err@invopt{block=#1}{}}} -\def\blx@opt@block@none{% - \let\blx@bibsetup\@empty - \let\newblockpunct\@empty} -\def\blx@opt@block@par{% - \let\blx@bibsetup\@empty - \def\newblockpunct{\par}} -\def\blx@opt@block@nbpar{% - \def\blx@bibsetup{\interlinepenalty\@M}% - \def\newblockpunct{\par\nobreak}} -\def\blx@opt@block@space{% - \let\blx@bibsetup\@empty - \def\newblockpunct{% - \unspace\space - \hskip 0.11em - \@plus 0.33em - \@minus 0.07em}} -\def\blx@opt@block@ragged{% - \let\blx@bibsetup\raggedright - \def\newblockpunct{% - \unspace\penalty-9\relax\space}} - -\DeclareBibliographyOption[boolean]{pagetracker}[true]{% - \ifcsdef{blx@opt@pagetracker@#1} - {\csuse{blx@opt@pagetracker@#1}} - {\blx@err@invopt{pagetracker=#1}{}}} -\def\blx@opt@pagetracker@true{% - \if@twoside - \blx@opt@pagetracker@spread - \else - \blx@opt@pagetracker@page - \fi} -\def\blx@opt@pagetracker@false{% - \let\blx@pagetracker\relax - \let\abx@aux@page\@gobbletwo - \let\abx@aux@fnpage\@gobbletwo - \boolfalse{pagetracker}} -\def\blx@opt@pagetracker@page{% - \let\blx@pagetracker\blx@pagetracker@context - \let\abx@aux@page\blx@aux@page - \let\abx@aux@fnpage\blx@aux@fnpage - \booltrue{pagetracker}} -\def\blx@opt@pagetracker@spread{% - \if@twoside - \let\blx@pagetracker\blx@pagetracker@context - \let\abx@aux@page\blx@aux@spread - \let\abx@aux@fnpage\blx@aux@fnspread - \booltrue{pagetracker}% - \else - \blx@warning@noline{% - LaTeX not in twoside mode\MessageBreak - Falling back to 'pagetracker=page'}% - \blx@opt@pagetracker@page - \fi} - -\DeclareBibliographyOption[boolean]{citecounter}[true]{% - \ifcsdef{blx@opt@citecounter@#1} - {\csuse{blx@opt@citecounter@#1}} - {\blx@err@invopt{citecounter=#1}{}}} -\def\blx@opt@citecounter@true{% - \let\blx@setcitecounter\blx@setcitecounter@global - \let\blx@citecounter\blx@citecounter@global - \let\abx@aux@count\blx@aux@count - \let\abx@aux@fncount\blx@aux@fncount - \booltrue{citetracker}} -\def\blx@opt@citecounter@context{% - \let\blx@setcitecounter\blx@setcitecounter@context - \let\blx@citecounter\blx@citecounter@context - \let\abx@aux@count\blx@aux@count - \let\abx@aux@fncount\blx@aux@fncount - \booltrue{citetracker}} -\def\blx@opt@citecounter@false{% - \let\blx@setcitecounter\relax - \let\blx@citecounter\relax - \let\abx@aux@count\@gobbletwo - \let\abx@aux@fncount\@gobbletwo} - -\DeclareBibliographyOption[boolean]{citetracker}[true]{% - \ifcsdef{blx@opt@citetracker@#1} - {\csuse{blx@opt@citetracker@#1}} - {\blx@err@invopt{citetracker=#1}{}}} -\def\blx@opt@citetracker@true{% - \let\blx@imc@ifciteseen\blx@ifciteseen@global - \let\blx@imc@ifentryseen\blx@ifentryseen@global - \let\blx@citetracker\blx@citetracker@global - \booltrue{citetracker}} -\def\blx@opt@citetracker@false{% - \let\blx@imc@ifciteseen\@secondoftwo - \protected\long\def\blx@imc@ifentryseen##1##2##3{##3}% - \let\blx@citetracker\relax} -\def\blx@opt@citetracker@context{% - \let\blx@imc@ifciteseen\blx@ifciteseen@context - \let\blx@imc@ifentryseen\blx@ifentryseen@context - \let\blx@citetracker\blx@citetracker@context - \booltrue{citetracker}} -\def\blx@opt@citetracker@strict{% - \let\blx@imc@ifciteseen\blx@ifciteseen@global - \let\blx@imc@ifentryseen\blx@ifentryseen@global - \def\blx@citetracker{% - \blx@ifcitesingle{\blx@citetracker@global}{}}% - \booltrue{citetracker}} -\def\blx@opt@citetracker@constrict{% - \let\blx@imc@ifciteseen\blx@ifciteseen@context - \let\blx@imc@ifentryseen\blx@ifentryseen@context - \def\blx@citetracker{% - \blx@ifcitesingle{\blx@citetracker@context}{}}% - \booltrue{citetracker}} - -\DeclareBibliographyOption[boolean]{ibidtracker}[true]{% - \ifcsdef{blx@opt@ibidtracker@#1} - {\csuse{blx@opt@ibidtracker@#1}} - {\blx@err@invopt{ibidtracker=#1}{}}} -\def\blx@opt@ibidtracker@true{% - \let\blx@imc@ifciteibid\blx@ifciteibid@global - \let\blx@ibidtracker\blx@ibidtracker@global - \let\blx@ibidreset\blx@ibidreset@global - \booltrue{citetracker}} -\def\blx@opt@ibidtracker@false{% - \let\blx@imc@ifciteibid\@secondoftwo - \let\blx@ibidtracker\relax - \let\blx@ibidreset\relax} -\def\blx@opt@ibidtracker@context{% - \let\blx@imc@ifciteibid\blx@ifciteibid@context - \let\blx@ibidtracker\blx@ibidtracker@context - \let\blx@ibidreset\blx@ibidreset@context - \booltrue{citetracker}} -\def\blx@opt@ibidtracker@strict{% - \let\blx@imc@ifciteibid\blx@ifciteibid@strict - \let\blx@ibidtracker\blx@ibidtracker@strict - \let\blx@ibidreset\blx@ibidreset@global - \booltrue{citetracker}} -\def\blx@opt@ibidtracker@constrict{% - \let\blx@imc@ifciteibid\blx@ifciteibid@constrict - \let\blx@ibidtracker\blx@ibidtracker@constrict - \let\blx@ibidreset\blx@ibidreset@context - \booltrue{citetracker}} - -\DeclareBibliographyOption[boolean]{idemtracker}[true]{% - \ifcsdef{blx@opt@idemtracker@#1} - {\csuse{blx@opt@idemtracker@#1}} - {\blx@err@invopt{idemtracker=#1}{}}} -\def\blx@opt@idemtracker@true{% - \let\blx@imc@ifciteidem\blx@ifciteidem@global - \let\blx@idemtracker\blx@idemtracker@global - \let\blx@idemreset\blx@idemreset@global - \booltrue{citetracker}} -\def\blx@opt@idemtracker@false{% - \let\blx@imc@ifciteidem\@secondoftwo - \let\blx@idemtracker\relax - \let\blx@idemreset\relax} -\def\blx@opt@idemtracker@context{% - \let\blx@imc@ifciteidem\blx@ifciteidem@context - \let\blx@idemtracker\blx@idemtracker@context - \let\blx@idemreset\blx@idemreset@context - \booltrue{citetracker}} -\def\blx@opt@idemtracker@strict{% - \let\blx@imc@ifciteidem\blx@ifciteidem@strict - \let\blx@idemtracker\blx@idemtracker@strict - \let\blx@idemreset\blx@idemreset@global - \booltrue{citetracker}} -\def\blx@opt@idemtracker@constrict{% - \let\blx@imc@ifciteidem\blx@ifciteidem@constrict - \let\blx@idemtracker\blx@idemtracker@constrict - \let\blx@idemreset\blx@idemreset@context - \booltrue{citetracker}} - -\DeclareBibliographyOption[boolean]{opcittracker}[true]{% - \ifcsdef{blx@opt@opcittracker@#1} - {\csuse{blx@opt@opcittracker@#1}} - {\blx@err@invopt{opcittracker=#1}{}}} -\def\blx@opt@opcittracker@true{% - \let\blx@imc@ifopcit\blx@ifopcit@global - \let\blx@opcittracker\blx@opcittracker@global - \let\blx@opcitreset\blx@opcitreset@global - \booltrue{citetracker}} -\def\blx@opt@opcittracker@false{% - \let\blx@imc@ifopcit\@secondoftwo - \let\blx@opcittracker\relax - \let\blx@opcitreset\relax} -\def\blx@opt@opcittracker@context{% - \let\blx@imc@ifopcit\blx@ifopcit@context - \let\blx@opcittracker\blx@opcittracker@context - \let\blx@opcitreset\blx@opcitreset@context - \booltrue{citetracker}} -\def\blx@opt@opcittracker@strict{% - \let\blx@imc@ifopcit\blx@ifopcit@strict - \let\blx@opcittracker\blx@opcittracker@strict - \let\blx@opcitreset\blx@opcitreset@global - \booltrue{citetracker}} -\def\blx@opt@opcittracker@constrict{% - \let\blx@imc@ifopcit\blx@ifopcit@constrict - \let\blx@opcittracker\blx@opcittracker@constrict - \let\blx@opcitreset\blx@opcitreset@context - \booltrue{citetracker}} - -\DeclareBibliographyOption[boolean]{loccittracker}[true]{% - \ifcsdef{blx@opt@loccittracker@#1} - {\csuse{blx@opt@loccittracker@#1}} - {\blx@err@invopt{loccittracker=#1}{}}} -\def\blx@opt@loccittracker@true{% - \let\blx@imc@ifloccit\blx@ifloccit@global - \let\blx@loccittracker\blx@loccittracker@global - \let\blx@loccitreset\blx@loccitreset@global - \booltrue{citetracker}} -\def\blx@opt@loccittracker@false{% - \let\blx@imc@ifloccit\@secondoftwo - \let\blx@loccittracker\relax - \let\blx@loccitreset\relax} -\def\blx@opt@loccittracker@context{% - \let\blx@imc@ifloccit\blx@ifloccit@context - \let\blx@loccittracker\blx@loccittracker@context - \let\blx@loccitreset\blx@loccitreset@context - \booltrue{citetracker}} -\def\blx@opt@loccittracker@strict{% - \let\blx@imc@ifloccit\blx@ifloccit@strict - \let\blx@loccittracker\blx@loccittracker@strict - \let\blx@loccitreset\blx@loccitreset@global - \booltrue{citetracker}} -\def\blx@opt@loccittracker@constrict{% - \let\blx@imc@ifloccit\blx@ifloccit@constrict - \let\blx@loccittracker\blx@loccittracker@constrict - \let\blx@loccitreset\blx@loccitreset@context - \booltrue{citetracker}} - -\DeclareBibliographyOption[boolean]{parentracker}[true]{% - \ifstrequal{#1}{true} - {\let\bibopenparen\blx@bibopenparen - \let\bibcloseparen\blx@bibcloseparen - \let\bibopenbracket\blx@bibopenbracket - \let\bibclosebracket\blx@bibclosebracket} - {\protected\def\bibopenparen{\bibleftparen}% - \protected\def\bibcloseparen{\bibrightparen}% - \protected\def\bibopenbracket{\bibleftbracket}% - \protected\def\bibclosebracket{\bibrightbracket}}} - -\DeclareBibliographyOption[integer]{maxparens}{% - \ifnumless{#1}{1} - {\blx@err@invopt{maxparens=#1}{}} - {\setcounter{maxparens}{#1}}} - -\DeclareBibliographyOption[string]{date}{% - \ifcsdef{mkbibrange#1} - {\protected\def\blx@imc@printdate{\csuse{mkbibrange#1}{}}% - \protected\def\blx@imc@printdateextra{\csuse{mkbibrange#1extra}{}}} - {\blx@err@invopt{date=#1}{}}} - -\DeclareBibliographyOption[string]{datelabel}{% - \ifcsdef{mkbibrange#1} - {\protected\def\blx@imc@printdatelabel{% - \blx@imc@iffieldundef{year} - {\csuse{mkbibrange#1}{label}} - {\csuse{mkbibrange#1}{}}}% - \protected\def\blx@imc@printdateextralabel{% - \blx@imc@iffieldundef{year} - {\csuse{mkbibrange#1extra}{label}} - {\csuse{mkbibrange#1extra}{}}}} - {\blx@err@invopt{datelabel=#1}{}}} - -\DeclareBibliographyOption[string]{urldate}{% - \ifcsdef{mkbibrange#1} - {\protected\def\blx@imc@printurldate{\csuse{mkbibrange#1}{url}}} - {\blx@err@invopt{urldate=#1}{}}} - -\DeclareBibliographyOption[string]{eventdate}{% - \ifcsdef{mkbibrange#1} - {\protected\def\blx@imc@printeventdate{\csuse{mkbibrange#1}{event}}} - {\blx@err@invopt{eventdate=#1}{}}} - -\DeclareBibliographyOption[string]{origdate}{% - \ifcsdef{mkbibrange#1} - {\protected\def\blx@imc@printorigdate{\csuse{mkbibrange#1}{orig}}} - {\blx@err@invopt{origdate=#1}{}}} - -\DeclareBibliographyOption[string]{alldates}{% - \ExecuteBibliographyOptions{% - date=#1,datelabel=#1,urldate=#1,eventdate=#1,origdate=#1}} - -\DeclareBibliographyOption[boolean]{datezeros}[true]{% - \ifstrequal{#1}{true} - {\let\blx@imc@mkdatezeros\@firstofone} - {\let\blx@imc@mkdatezeros\blx@imc@stripzeros}} - -\DeclareBibliographyOption[string]{autocite}{% - \ifcsundef{blx@acite@#1} - {\blx@error - {Autocite command '#1' undefined} - {The autocite command '#1' has not been defined by - the\MessageBreak selected citation style}} - {\letcs\autocite{blx@acite@#1}% - \letcs\autocites{blx@macite@#1}}} - -\DeclareBibliographyOption[string]{notetype}{% - \ifcsdef{blx@opt@notetype@#1} - {\blx@notetype\csuse{blx@opt@notetype@#1}} - {\blx@err@invopt{notetype=#1}{}}} -\cslet{blx@opt@notetype@foot+end}\z@ -\let\blx@opt@notetype@footonly\@ne -\let\blx@opt@notetype@endonly\tw@ - -\DeclareBibliographyOption[boolean]{autopunct}[true]{% - \ifstrequal{#1}{true} - {\DeclareAutoPunctuation{.,;:!?}} - {\DeclareAutoPunctuation{}}} - -\DeclareBibliographyOption[boolean]{punctfont}[true]{% - \ifstrequal{#1}{true} - {\let\blx@ifpuncthook\@firstoftwo} - {\let\blx@ifpuncthook\@secondoftwo}} - -\DeclareBibliographyOption[boolean]{labelnumber}[true]{% - \settoggle{blx@labelnumber}{#1}% - \iftoggle{blx@labelnumber} - {} - {\setkeys{blx@opt@pre}{defernumbers=false}}} -\DeclareTypeOption[boolean]{labelnumber}[true]{% - \settoggle{blx@labelnumber}{#1}} - -\DeclareBibliographyOption[boolean]{labelalpha}[true]{% - \settoggle{blx@labelalpha}{#1}} -\DeclareTypeOption[boolean]{labelalpha}[true]{% - \settoggle{blx@labelalpha}{#1}} - -\DeclareBibliographyOption[boolean]{labeltitle}[true]{% - \settoggle{blx@labeltitle}{#1}} -\DeclareTypeOption[boolean]{labeltitle}[true]{% - \settoggle{blx@labeltitle}{#1}} - -\DeclareBibliographyOption[boolean]{labeltitleyear}[true]{% - \settoggle{blx@labeltitleyear}{#1}} -\DeclareTypeOption[boolean]{labeltitleyear}[true]{% - \settoggle{blx@labeltitleyear}{#1}} - -\DeclareBibliographyOption[boolean]{labeldate}[true]{% - \settoggle{blx@labeldate}{#1}} -\DeclareTypeOption[boolean]{labeldate}[true]{% - \settoggle{blx@labeldate}{#1}} - -\DeclareBibliographyOption[boolean]{labelyear}[true]{% - \blx@warning@noline{% - 'labelyear' option is deprecated, use 'labeldate' instead}% - \settoggle{blx@labeldate}{#1}} -\DeclareTypeOption[boolean]{labelyear}[true]{% - \blx@warning@noline{% - 'labelyear' option is deprecated, use 'labeldate' instead}% - \settoggle{blx@labeldate}{#1}} - -\DeclareBibliographyOption[boolean]{uniquelist}[true]{% - \ifcsdef{blx@opt@uniquelist@#1} - {\letcs\blx@uniquelist{blx@opt@uniquelist@#1}} - {\blx@err@invopt{uniquelist=#1}{}}} -\DeclareTypeOption[boolean]{uniquelist}[true]{% - \ifcsdef{blx@opt@uniquelist@#1} - {\letcs\blx@uniquelist{blx@opt@uniquelist@#1}} - {\blx@err@invopt{uniquelist=#1}{}}} -\DeclareEntryOption[boolean]{uniquelist}[true]{% - \ifcsdef{blx@opt@uniquelist@#1} - {\letcs\blx@uniquelist{blx@opt@uniquelist@#1}} - {\blx@err@invopt{uniquelist=#1}{}}} -\def\blx@opt@uniquelist@false{0} -\def\blx@opt@uniquelist@true{1} -\def\blx@opt@uniquelist@minyear{2} - -\DeclareBibliographyOption[boolean]{uniquename}[true]{% - \ifcsdef{blx@opt@uniquename@#1} - {\letcs\blx@uniquename{blx@opt@uniquename@#1}} - {\blx@err@invopt{uniquename=#1}{}}} -\DeclareTypeOption[boolean]{uniquename}[true]{% - \ifcsdef{blx@opt@uniquename@#1} - {\letcs\blx@uniquename{blx@opt@uniquename@#1}} - {\blx@err@invopt{uniquename=#1}{}}} -\DeclareEntryOption[boolean]{uniquename}[true]{% - \ifcsdef{blx@opt@uniquename@#1} - {\letcs\blx@uniquename{blx@opt@uniquename@#1}} - {\blx@err@invopt{uniquename=#1}{}}} -\def\blx@opt@uniquename@false{0} -\def\blx@opt@uniquename@init{1} -\def\blx@opt@uniquename@true{2} -\def\blx@opt@uniquename@full{2} -\def\blx@opt@uniquename@allinit{3} -\def\blx@opt@uniquename@allfull{4} -\def\blx@opt@uniquename@mininit{5} -\def\blx@opt@uniquename@minfull{6} - -\DeclareBibliographyOption[boolean]{singletitle}[true]{% - \settoggle{blx@singletitle}{#1}} -\DeclareTypeOption[boolean]{singletitle}[true]{% - \settoggle{blx@singletitle}{#1}} - -\DeclareBibliographyOption[boolean]{defernumbers}[true]{% - \settoggle{blx@defernumbers}{#1}% - \iftoggle{blx@defernumbers} - {\setkeys{blx@opt@pre}{labelnumber}% - \let\blx@thelabelnumber\blx@addlabelnumber - \let\abx@aux@number\blx@aux@number} - {\let\blx@thelabelnumber\relax - \let\abx@aux@number\@gobblefive}} - -\DeclareBibliographyOption[string]{refsection}{% - \ifcsdef{blx@opt@refsection@#1} - {\letcs\blx@refsecreset@level{blx@opt@refsection@#1}} - {\blx@err@invopt{refsection=#1}{}}} -\def\blx@opt@refsection@none{0} -\def\blx@opt@refsection@part{1} -\def\blx@opt@refsection@chapter{2} -\def\blx@opt@refsection@section{3} -\def\blx@opt@refsection@subsection{4} - -\AtEndPreamble{% - \ifcase\blx@refsecreset@level - \or % 1 - \blx@refpatch@part\newrefsection - \or % 2 - \blx@refpatch@chapter\newrefsection - \or % 3 - \blx@refpatch@sect{section}{\newrefsection}{1}% - \or % 4 - \blx@refpatch@sect{subsection}{\newrefsection}{2}% - \fi} - -\DeclareBibliographyOption[string]{refsegment}{% - \ifcsdef{blx@opt@refsegment@#1} - {\letcs\blx@refsegreset@level{blx@opt@refsegment@#1}} - {\blx@err@invopt{refsegment=#1}{}}} -\def\blx@opt@refsegment@none{0} -\def\blx@opt@refsegment@part{1} -\def\blx@opt@refsegment@chapter{2} -\def\blx@opt@refsegment@section{3} -\def\blx@opt@refsegment@subsection{4} - -\AtEndPreamble{% - \ifnumgreater\blx@refsegreset@level\z@ - {\ifnumgreater\blx@refsegreset@level\blx@refsecreset@level - {} - {\blx@err@confopt - {refsegment/refsection} - {The 'refsegment' option must point to a - lower-level\MessageBreak document division - than 'refsection'}% - \def\blx@refsegreset@level{0}}} - {}% - \ifcase\blx@refsegreset@level - \or % 1 - \blx@refpatch@part\newrefsegment - \or % 2 - \blx@refpatch@chapter\newrefsegment - \or % 3 - \blx@refpatch@sect{section}{\newrefsegment}{1}% - \or % 4 - \blx@refpatch@sect{subsection}{\newrefsegment}{2}% - \fi} - -\DeclareBibliographyOption[string]{citereset}{% - \ifcsdef{blx@opt@citereset@#1} - {\letcs\blx@citereset@level{blx@opt@citereset@#1}} - {\blx@err@invopt{citereset=#1}{}}} -\def\blx@opt@citereset@none{0} -\def\blx@opt@citereset@part{1} -\def\blx@opt@citereset@chapter{2} -\def\blx@opt@citereset@section{3} -\def\blx@opt@citereset@subsection{4} - -\AtEndPreamble{% - \ifcase\blx@citereset@level - \or % 1 - \blx@refpatch@part{\citereset\blx@inf@creset}% - \or % 2 - \blx@refpatch@chapter{\citereset\blx@inf@creset}% - \or % 3 - \blx@refpatch@sect{section}{\citereset\blx@inf@creset}{1}% - \or % 4 - \blx@refpatch@sect{subsection}{\citereset\blx@inf@creset}{2}% - \fi} - -\DeclareBibliographyOption[boolean]{bibwarn}[true]{% - \ifstrequal{#1}{true} - {\let\blx@bbl@thewarn\blx@bbl@warn} - {\let\blx@bbl@thewarn\@gobble}} - -% Name field options -\def\do#1{% - \DeclareBibliographyOption[boolean]{use#1}[true]{% - \settoggle{blx@use#1}{##1}} - \DeclareTypeOption[boolean]{use#1}[true]{% - \settoggle{blx@use#1}{##1}} - \DeclareEntryOption[boolean]{use#1}[true]{% - \settoggle{blx@use#1}{##1}}} -\dolistcsloop{blx@biber@datamodel@names} - -% Entry options -\DeclareBibliographyOption[boolean]{useprefix}[true]{% - \settoggle{blx@useprefix}{#1}} -\DeclareTypeOption[boolean]{useprefix}[true]{% - \settoggle{blx@useprefix}{#1}} -\DeclareEntryOption[boolean]{useprefix}[true]{% - \settoggle{blx@useprefix}{#1}} - -\DeclareTypeOption[boolean]{skipbib}[true]{% - \settoggle{blx@skipbib}{#1}} -\DeclareEntryOption[boolean]{skipbib}[true]{% - \settoggle{blx@skipbib}{#1}} - -\DeclareTypeOption[boolean]{skiplos}{% - \blx@warning@noline{% - skiplos option is deprecated, use 'skipbiblist' instead}% - \settoggle{blx@skipbiblist}{#1}} -\DeclareEntryOption[boolean]{skiplos}{% - \blx@warning@noline{% - skiplos option is deprecated, use 'skipbiblist' instead}% - \settoggle{blx@skipbiblist}{#1}} - -\DeclareTypeOption[boolean]{skipbiblist}[true]{% - \settoggle{blx@skipbiblist}{#1}} -\DeclareEntryOption[boolean]{skipbiblist}[true]{% - \settoggle{blx@skipbiblist}{#1}} - -\DeclareTypeOption[boolean]{skiplab}[true]{% - \settoggle{blx@skiplab}{#1}} -\DeclareEntryOption[boolean]{skiplab}[true]{% - \settoggle{blx@skiplab}{#1}} - -\DeclareTypeOption[boolean]{dataonly}[true]{% - \settoggle{blx@skipbib}{#1}% - \settoggle{blx@skipbiblist}{#1}% - \settoggle{blx@skiplab}{#1}} -\DeclareEntryOption[boolean]{dataonly}[true]{% - \settoggle{blx@skipbib}{#1}% - \settoggle{blx@skipbiblist}{#1}% - \settoggle{blx@skiplab}{#1}} - -% Option processor/scheduler -\DeclareOption*{% - \begingroup - \def\blx@tempa#1=#2&{#1}% - \edef\blx@tempa{% - \expandafter\blx@tempa\CurrentOption=&}% - \ifcsundef{KV@blx@opt@ldt@\blx@tempa} - {\endgroup - \eappto\blx@theoptions{\CurrentOption,}} - {\edef\blx@tempa{\endgroup - \noexpand\setkeys{blx@opt@ldt}{\CurrentOption}}% - \blx@tempa}} - -\def\blx@processoptions{% - \ifundef\blx@theoptions - {} - {\begingroup - \edef\blx@tempa{\endgroup - \noexpand\setkeys{blx@opt@pre}{\blx@theoptions}}% - \blx@tempa}} - -%% Initial setup - -% Set defaults - -\setkeys{blx@opt@ldt}{style=numeric} -\setkeys{blx@opt@pre}{% - sorting=nty,sortlocale=auto,sortcase,sortupper,sortcites=false, - maxnames=3,minnames=1,maxalphanames=3,minalphanames=1, - maxitems=3,minitems=1,mincrossrefs=2,useauthor=true,useeditor=true, - usetranslator=false,indexing=false,abbreviate=true,dateabbrev=true, - backref=false,backrefsetstyle=setonly,pagetracker=false,ibidtracker=false, - idemtracker=false,opcittracker=false,loccittracker=false,citetracker=false, - citecounter=false,block=none,language=autobib,clearlang=true,autolang=none, - date=comp,datelabel=year,origdate=comp,eventdate=comp,urldate=short, - autopunct=true,punctfont=false,defernumbers=false, - refsection=none,refsegment=none,citereset=none,hyperref=auto, - parentracker,maxparens=3,bibencoding=auto,bibwarn} - -% Load compatibility code - -\blx@inputonce{blx-compat.def}{compatibility code}{}{}{}{} - -% Restore catcodes - -\blx@catcodes -\undef\blx@catcodes - -% Process load-time options - -\ProcessOptions* - -% Load citation and bibliography styles, configuration file - -\blx@inputonce{biblatex_.def}{generic definitions}{}{}{}{} -\iftoggle{blx@natbib} - {\blx@inputonce{blx-natbib.def}{natbib compatibility}{}{}{}{}} - {} -\iftoggle{blx@mcite} - {\blx@inputonce{blx-mcite.def}{mcite-like commands}{}{}{}{}} - {} -\RequireBibliographyStyle{\blx@bbxfile} -\RequireCitationStyle{\blx@cbxfile} -\blx@secinit -\citereset -\blx@inputonce{biblatex.cfg}{configuration file}{}{}{}{} - -% Process preamble options - -\blx@processoptions - -% Deferred setup at end of preamble - -\AtEndPreamble{% - \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@giveninits} - {\ifnumequal\blx@uniquename\blx@opt@uniquename@full - {\blx@warn@conflopt{% - 'giveninits' conflicts with 'uniquename=full'.\MessageBreak - Setting 'uniquename=init'}% - \setkeys{blx@opt@pre}{uniquename=init}} - {}% - \ifnumequal\blx@uniquename\blx@opt@uniquename@allfull - {\blx@warn@conflopt{% - 'giveninits' conflicts with 'uniquename=allfull'.\MessageBreak - Setting 'uniquename=allinit}% - \setkeys{blx@opt@pre}{uniquename=allinit}} - {}% - \ifnumequal\blx@uniquename\blx@opt@uniquename@minfull - {\blx@warn@conflopt{% - 'giveninits' conflicts with 'uniquename=minfull'.\MessageBreak - Setting 'uniquename=mininit}% - \setkeys{blx@opt@pre}{uniquename=mininit}} - {}} - {}% - \nottoggle{blx@labeldate} - {\ifnumequal\blx@uniquelist\blx@opt@uniquelist@minyear - {\blx@warn@conflopt{% - 'uniquelist=minyear' requires 'labeldate'.\MessageBreak - Setting 'uniquelist=true'}% - \setkeys{blx@opt@pre}{uniquelist}} - {}} - {}} - -\def\blx@checkencoding{% - \ifdef\blx@texencoding - {\blx@info@noline{% - Input encoding '\blx@texencoding' specified}} - {\ifundef\inputencodingname - {\ifundef\XeTeXrevision - {\ifundef\luatexversion - {\def\blx@texencoding{ascii}% - \blx@info@noline{% - No input encoding detected.\MessageBreak - Assuming '\blx@texencoding'}} - {\def\blx@texencoding{utf8}% - \blx@info@noline{% - LuaTeX detected.\MessageBreak - Assuming input encoding '\blx@texencoding'}}} - {\def\blx@texencoding{utf8}% - \blx@info@noline{% - XeTeX detected.\MessageBreak - Assuming input encoding '\blx@texencoding'}}} - {\ifcsdef{blx@inpenc@\inputencodingname} - {\letcs\blx@texencoding{blx@inpenc@\inputencodingname}} - {\let\blx@texencoding\inputencodingname}% - \blx@info@noline{% - Input encoding '\blx@texencoding' detected}}}% - \ifdef\blx@bibencoding - {\ifdefstring\blx@bibencoding{ascii} - {\blx@info@noline{% - Data encoding '\blx@bibencoding' specified.\MessageBreak - No need to reencode data}} - {\ifdefstring\blx@bibencoding{auto} - {\let\blx@bibencoding\blx@texencoding - \blx@info@noline{% - Automatic encoding selection.\MessageBreak - Assuming data encoding '\blx@bibencoding'}} - {\ifdefstrequal\blx@bibencoding\blx@texencoding - {\blx@info@noline{% - Data encoding '\blx@bibencoding' specified.\MessageBreak - No need to reencode data}} - {\blx@info@noline{% - Data encoding '\blx@bibencoding' specified.\MessageBreak - Backend will reencode on the fly}}}}} - {\def\blx@bibencoding{ascii}% - \blx@info@noline{% - Data encoding not specified.\MessageBreak - Assuming '\blx@bibencoding'}}% - \ifboolexpr{% - togl {blx@safeinputenc} - and ( test {\@ifpackageloaded{inputenc}} - or - test {\@ifpackageloaded{inputenx}} ) - } - {\def\blx@texencoding{ascii}% - \blx@info@noline{% - Input encoding '\blx@texencoding' forced by\MessageBreak - 'safeinputenc' option}} - {}% -} - - -% Deferred last minute setup - -\AtBeginDocument{% - \blx@auxwrite\@mainaux{}{\string\abx@aux@sortscheme{\blx@sorting}}% - \def\do#1{% - \blx@auxwrite\@mainaux{}{\string\abx@aux@sortnamekeyscheme{#1}}} - \dolistloop\blx@sortnamekeyschemes - \blx@checkencoding - \if@filesw - \blx@ctrlwrite@biber - \blx@bblinput - \blx@maxsection\z@ - \fi - \csuse{abx@preamble}% - \blx@inf@refsec - \blx@inf@refseg} - -\AtEndOfPackage{% - % Data model macros are forbidden after package load is finished - \def\blx@warn@dm#1{\blx@warning@noline{Data model macro '#1' cannot be used in preamble}} - \def\ResetDatamodelEntrytypes{\blx@warn@dm{ResetDatamodelEntrytypes}} - \def\ResetDatamodelFields{\blx@warn@dm{ResetDatamodelFields}} - \def\ResetDatamodelEntryfields{\blx@warn@dm{ResetDatamodelEntryfields}} - \def\ResetDatamodelConstraints{\blx@warn@dm{ResetDatamodelConstraints}} - \renewcommand*{\DeclareDatamodelEntrytypes}[2][]{\blx@warn@dm{DeclareDatamodelEntrytypes}} - \renewcommand*{\DeclareDatamodelFields}[2][]{\blx@warn@dm{DeclareDatamodelFields}} - \renewcommand*{\DeclareDatamodelEntryfields}[2][]{\blx@warn@dm{DeclareDatamodelEntryfields}} - \renewcommand*{\DeclareDatamodelConstraints}[2][]{\blx@warn@dm{DeclareDatamodelConstraints}} - \renewcommand*{\DeclareDatamodelConstant}[3][]{\blx@warn@dm{DeclareDatamodelConstant}} - \AtBeginDocument{% - \let\do\undef - \blx@dopreamblecmds - \let\do\noexpand}} - -\endinput diff --git a/Master/texmf-dist/tex/latex/biblatex/biblatex_legacy.def b/Master/texmf-dist/tex/latex/biblatex/biblatex_legacy.def deleted file mode 100644 index 602e84205f1..00000000000 --- a/Master/texmf-dist/tex/latex/biblatex/biblatex_legacy.def +++ /dev/null @@ -1,2262 +0,0 @@ -% -*- mode: LaTeX -*- -\ProvidesFile{biblatex_legacy.def} - -% ------------------------------------------------------------------ -% FORMATTING COMMANDS -% ------------------------------------------------------------------ - -% Generic formatting commands and hooks -% ------------------------------------------------------------------ - -% Used in citations, bibliography and bibliography lists - -\newcommand*{\mkbibnamegiven}[1]{#1} -\newcommand*{\mkbibnamefirst}[1]{#1}% legacy alias -\newcommand*{\mkbibnamefamily}[1]{#1} -\newcommand*{\mkbibnamelast}[1]{#1}% legacy alias -\newcommand*{\mkbibnameprefix}[1]{#1} -\newcommand*{\mkbibnameaffix}[1]{#1} -\newcommand*{\bibellipsis}{[\textellipsis\unkern]\midsentence} - -% Delimiters used in citations, bibliography and bibliography lists - -\newcommand*{\multinamedelim}{\addcomma\space} -\newcommand*{\finalnamedelim}{% - \ifnumgreater{\value{liststop}}{2}{\finalandcomma}{}% - \addspace\bibstring{and}\space} -\newcommand*{\revsdnamedelim}{} -\newcommand*{\andothersdelim}{\addspace} - -\newcommand*{\multilistdelim}{\addcomma\space} -\newcommand*{\finallistdelim}{% - \ifnumgreater{\value{liststop}}{2}{\finalandcomma}{}% - \addspace\bibstring{and}\space} -\newcommand*{\andmoredelim}{\addspace} - -% Used in citations - -\newcommand*{\multicitedelim}{\addsemicolon\space} -\newcommand*{\compcitedelim}{\addcomma\space} -\newcommand*{\supercitedelim}{\addcomma} -\newcommand*{\prenotedelim}{\addspace} -\newcommand*{\postnotedelim}{\addcomma\space} -\newcommand*{\extpostnotedelim}{\addspace} -\newcommand*{\nametitledelim}{\addcomma\space} -\newcommand*{\nameyeardelim}{\addspace} -\newcommand*{\nonameyeardelim}{\addspace} -\newcommand*{\volcitedelim}{\addcomma\space} -\newcommand*{\textcitedelim}{% - \iffinalcitedelim - {\ifnumgreater{\value{textcitetotal}}{2} - {\iftextcitepunct{\finalandsemicolon}{\finalandcomma}}{}% - \addspace\bibstring{and}} - {\iftextcitepunct{\addsemicolon}{\addcomma}}% - \space} - -% This is a provisional definition for \iffinalcitedelim{<true>}{<false>}, a -% test that should expand <true> if the next non-compact citation delimiter -% is the last one in the citation list printed by \textcite or \textcites. -\newcommand*{\iffinalcitedelim}{\@secondoftwo} - -% Expand <true> if the citation labels in the citation list printed by \textcite -% or \textcites contains the serial comma \finalandcomma -\newcommand*{\iftextcitepunct}{% - \ifboolexpr{ not test {\ifdefempty{\finalandsemicolon}} - and test {\ifnumgreater{\value{textcitemaxnames}}{2}} }} - -% Counters for the number of citation labels separated by non-compact delimiters -% in the citation list printed by \textcite or \textcites. Counter values should -% be managed by the citation style. -\newcounter{textcitecount} -\newcounter{textcitetotal} -\setcounter{textcitecount}{0} -\setcounter{textcitetotal}{0} - -% Counters for the maximum number of names among citation labels in the citation -% list printed by \textcite or \textcites. Counter value should be managed by -% the citation style. -\newcounter{textcitemaxnames} -\setcounter{textcitemaxnames}{0} - -% Used in the bibliography and bibliography lists - -\newcommand*{\newunitpunct}{\addperiod\space} -\newcommand*{\entrysetpunct}{\addsemicolon\space} -\newcommand*{\finentrypunct}{\addperiod} -\newcommand*{\labelnamepunct}{\newunitpunct} -\newcommand*{\subtitlepunct}{\newunitpunct} -\newcommand*{\intitlepunct}{\addcolon\space} -\newcommand*{\bibpagespunct}{\addcomma\space} -\newcommand*{\bibpagerefpunct}{\addspace} -\newcommand*{\revsdnamepunct}{\addcomma} -\newcommand*{\bibnamedash}{% - \ifdimless{\leftmargin}{0.75em} - {\mbox{\textemdash\space}} - {\makebox[\leftmargin][l]{% - \ifdimless{\leftmargin}{1.25em} - {\textendash} - {\textemdash}}}} -\newcommand*{\relatedpunct}{\addspace} -\newcommand*{\relateddelim}{\adddot\par\nobreak} -\newcommand{\mkrelatedstring}{\mainlang} - -% Used for indexing - -\newcommand*{\bibindexnamedelima}{ } -\newcommand*{\bibindexnamedelimb}{ } -\newcommand*{\bibindexnamedelimc}{ } -\newcommand*{\bibindexnamedelimd}{ } -\newcommand*{\bibindexnamedelimi}{ } -\newcommand*{\bibindexinitperiod}{.} -\newcommand*{\bibindexinitdelim}{ } -\newcommand*{\bibindexinithyphendelim}{.-} - -% \bibsetup is a generic hook controlling the (low-level) layout of -% the bibliography and bibliography lists. The default -% definition should work fine in most cases. - -\newcommand*{\bibsetup}{% - \interlinepenalty=5000\relax - \widowpenalty=10000\relax - \clubpenalty=10000\relax - \raggedbottom - \frenchspacing - \biburlsetup} - -% The penalties above are not specific to biblatex. These are -% low-level TeX features. \interlinepenalty is the penalty assigned -% to page breaks within a paragraph (i.e., in this case, a -% bibliography entry); \clubpenalty is an additional penalty -% assigned to page breaks after the first line of a paragraph; -% \widowpenalty is an additional penalty assigned to page breaks -% before the last line of a paragraph. Note that the value 10000 -% means 'infinite' as far as TeX is concerned. Setting a penalty to -% 10000 will unconditionally suppress the respective breakpoint. -% -% The net effect of the above settings is as follows. Breaking a -% bibliography entry across pages is discouraged, but not suppressed -% altogether. If a bibliography entry spans less than four lines, -% TeX will always keep it on one page. If it spans four or more -% lines, it may be broken across pages, provided that there are at -% least two lines on the page before and after the break. -% -% These penalties should normally be used in conjunction with -% \raggedbottom. If you don't like that and remove \raggedbottom -% from the definition of \bibsetup, make sure to provide some -% stretchability between bibliography entries by setting \bibitemsep -% to a suitable value, e.g.: -% -% \setlength{\bibitemsep}{0.5\baselineskip plus 0.5\baselineskip} -% -% Using \frenchspacing in the bibliography is recommended. If you -% want more visual separation, try the package option 'block=space'. -% This will yield better results than \nonfrenchspacing. - -% \citesetup is a generic hook for citations. - -\newcommand*{\citesetup}{% - \biburlsetup} - -% Local setup for \url; see comments in url.sty for details. - -\newcounter{biburlnumpenalty} -\newcounter{biburlucpenalty} -\newcounter{biburllcpenalty} - -\newcommand*{\biburlsetup}{% - \Urlmuskip=0mu plus 3mu\relax - \mathchardef\UrlBigBreakPenalty=100\relax - \mathchardef\UrlBreakPenalty=200\relax - \def\UrlBigBreaks{\do\:\do\-}% - \def\UrlBreaks{% - \do\.\do\@\do\/\do\\\do\!\do\_\do\|\do\;\do\>\do\]\do\)\do\}% - \do\,\do\?\do\'\do\+\do\=\do\#\do\$\do\&\do\*\do\^\do\"}% - \ifnumgreater{\value{biburlnumpenalty}}{0} - {\def\do##1{\appto\UrlSpecials{\do##1{\mathchar`##1 \penalty\value{biburlnumpenalty}}}}% - \do\1\do\2\do\3\do\4\do\5\do\6\do\7\do\8\do\9\do\0} - {}% - \ifnumgreater{\value{biburlucpenalty}}{0} - {\def\do##1{\appto\UrlSpecials{\do##1{\mathchar`##1 \penalty\value{biburlucpenalty}}}}% - \do\A\do\B\do\C\do\D\do\E\do\F\do\G\do\H\do\I\do\J - \do\K\do\L\do\M\do\N\do\O\do\P\do\Q\do\R\do\S\do\T - \do\U\do\V\do\W\do\X\do\Y\do\Z} - {}% - \ifnumgreater{\value{biburllcpenalty}}{0} - {\def\do##1{\appto\UrlSpecials{\do##1{\mathchar`##1 \penalty\value{biburllcpenalty}}}}% - \do\a\do\b\do\c\do\d\do\e\do\f\do\g\do\h\do\i\do\j - \do\k\do\l\do\m\do\n\do\o\do\p\do\q\do\r\do\s\do\t - \do\u\do\v\do\w\do\x\do\y\do\z} - {}% - \let\do=\noexpand} - -% The above code allows linebreaks before numbers and letters. -% This is often the only way to break DOIs. It also allows breaks -% after hyphens and adjusts \Urlmuskip to add some stretchability -% to URLs. - -% The default font of the bibliography and the bibliography lists. -% We simply reset the current font to the global defaults. - -\newcommand*{\bibfont}{\normalfont\normalsize} - -% Some length registers which may be used to fine-tune the -% (high-level) layout of the bibliography. - -% Default \bibhang to 1em if \parindent is 0 for some reason -\setlength{\bibhang}{\ifnumequal{\parindent}{0}{1em}{\parindent}} -\setlength{\biblabelsep}{2\labelsep} -\setlength{\bibitemsep}{\itemsep} -\setlength{\bibnamesep}{0pt} -\setlength{\bibinitsep}{0pt} -\setlength{\bibparsep}{0pt} - -% Miscellaneous facilities -% ------------------------------------------------------------------ - -% The counter 'abbrvpenalty' holds the penalty used in short or -% abbreviated bibliography strings. For example, a linebreak in -% expressions such as "et al." or "ed. by" is unfortunate, but should -% still be possible to prevent overfull boxes. We use TeX's -% \hyphenpenalty (normally 50) as the default value. The idea is -% making TeX treat the whole expression as if it were a single, -% hyphenatable word as far as line-breaking is concerned. If you -% dislike such linebreaks, use a higher value. If you do not mind -% them at all, set this counter to zero. If you want to suppress them -% unconditionally, set it to 10000. -\defcounter{abbrvpenalty}{\hyphenpenalty} - -% The counter 'highnamepenalty' also holds a penalty affecting the -% line-breaking of names. This penalty is inserted between smaller -% chunks of a name, for example between the first and the middle -% name. The default value is \hyphenpenalty. If you dislike such -% linebreaks, use a higher value. If you do not mind them at all, -% set this counter to zero. If you prefer the traditional BibTeX -% behavior, set it to 10000. -\defcounter{highnamepenalty}{\hyphenpenalty} - -% The counter 'lownamepenalty' holds a penalty which affects the -% line-breaking of names. This penalty is inserted between larger -% chunks of a name, for example between the chunk consisting of all -% first names and the last name. The default value is half the -% \hyphenpenalty. If you dislike such linebreaks, use a higher -% value. If you do not mind them at all, set this counter to zero. -\defcounter{lownamepenalty}{\hyphenpenalty/2} - -% Note that default values assigned to the above counters are -% deliberately very low to prevent overfull boxes. This implies that -% you will hardly notice any effect on line-breaking if the text is -% set justified. If you set these counters to 10000 to suppress the -% respective breakpoints, you will notice their effect but you may -% also be confronted with overfull boxes. Keep in mind that -% line-breaking in the bibliography is often more difficult than in -% the body text and that you can not resort to rephrasing a -% sentence. In some cases it may be preferable to set the entire -% bibliography \raggedright (by modifying \bibsetup) to prevent -% suboptimal linebreaks. In this case, even the very low default -% penalties will make a visible difference. - -% File name prefixes for external abstracts and annotations -\newcommand*{\bibabstractprefix}{bibabstract-} -\newcommand*{\bibannotationprefix}{bibannotation-} - -% Print acronyms in small caps if possible -\newcommand*{\mkbibacro}[1]{% - \ifcsundef{\f@encoding/\f@family/\f@series/sc} - {#1} - {\textsc{\MakeLowercase{#1}}}} - -% ------------------------------------------------------------------ -% ADDITIONAL PACKAGE OPTIONS -% ------------------------------------------------------------------ - -% Style of compressed page ranges in back references - -\DeclareBibliographyOption[string]{backrefstyle}{% - \ifcsdef{abx@opt@pagerefstyle@#1} - {\letcs\abx@pagerefstyle{abx@opt@pagerefstyle@#1}} - {\PackageError{biblatex} - {Option 'backrefstyle=#1' invalid} - {The option you have supplied is invalid.\MessageBreak - See the biblatex manual for valid option keys - and possible values}}} -\newcommand*{\abx@pagerefstyle}{1} -\csdef{abx@opt@pagerefstyle@none}{-1} -\csdef{abx@opt@pagerefstyle@two}{0} -\csdef{abx@opt@pagerefstyle@three}{1} -\csdef{abx@opt@pagerefstyle@two+}{2} -\csdef{abx@opt@pagerefstyle@three+}{3} -\csdef{abx@opt@pagerefstyle@all+}{4} - -% arXiv path/format selector -% -% abs = abstract page -% ps = PostScript version -% pdf = PDF version -% format = format selector - -\DeclareBibliographyOption[string]{arxiv}{\def\abx@arxivpath{#1}} -\newcommand*{\abx@arxivpath}{abs} - -% ------------------------------------------------------------------ -% FIELD FORMATS (#1 is the value of the field) -% ------------------------------------------------------------------ - -% The fallback used by \printfield - -\DeclareFieldFormat{default}{#1} - -% The default used by \citefield - -\DeclareFieldFormat{citefield}{#1} - -% Used in citations - -\DeclareFieldFormat{citetitle}{\mkbibemph{#1}} -\DeclareFieldFormat - [article,inbook,incollection,inproceedings,patent,thesis,unpublished] - {citetitle}{\mkbibquote{#1\isdot}} -\DeclareFieldFormat - [suppbook,suppcollection,suppperiodical] - {citetitle}{#1} -% labelyear can be a localisation string to allow for "no date" etc. -\DeclareFieldFormat{labelyear}{% = the '1995' part in 'Jones 1995a' - \ifbibstring{#1}{\bibstring{#1}}{\stripzeros{#1}}} -\DeclareFieldFormat{extrayear}{% = the 'a' in 'Jones 1995a' - \iffieldnums{labelyear} - {\mknumalph{#1}} - {\mkbibparens{\mknumalph{#1}}}} -\DeclareFieldFormat{labelalpha}{#1}% = the 'Jon95' part of 'Jon95a' -\DeclareFieldFormat{extraalpha}{\mknumalph{#1}}% = the 'a' in 'Jon95a' -\DeclareFieldFormat{shorthand}{#1\isdot} -\DeclareFieldFormat{shorthandintro}{% - \ifcapital{\MakeCapital{#1}}{#1}\isdot} -% citation commands -\DeclareFieldFormat{prenote}{#1\isdot} -\DeclareFieldFormat{postnote}{\mkpageprefix[pagination]{#1}} -\DeclareFieldFormat{volcitevolume}{\bibstring{volume}\ppspace#1} -\DeclareFieldFormat{volcitepages}{\mkpageprefix[pagination]{#1}} -\DeclareFieldFormat{volcitenote}{\mkvolcitenote#1} -\newrobustcmd*{\mkvolcitenote}[2]{% - \printtext[volcitevolume]{#1}% - \ifblank{#2}{}{\volcitedelim\printtext[volcitepages]{#2}}} - -% multicite commands -\DeclareFieldFormat{multiprenote}{#1\isdot} -\DeclareFieldFormat{multipostnote}{\mkpageprefix[pagination]{#1}} - -% Used by \citeurl - -\DeclareFieldFormat{citeurl}{\url{#1}} - -% Used in the bibliography and bibliography lists - -\DeclareFieldFormat{doi}{% - \mkbibacro{DOI}\addcolon\space - \ifhyperref - {\href{http://dx.doi.org/#1}{\nolinkurl{#1}}} - {\nolinkurl{#1}}} -\DeclareFieldFormat{edition}{% - \ifinteger{#1} - {\mkbibordedition{#1}~\bibstring{edition}} - {#1\isdot}} -\DeclareFieldFormat{eprint}{% - \iffieldundef{eprinttype} - {eprint} - {\thefield{eprinttype}}% - \addcolon\space - \ifhyperref - {\url{#1}} - {\nolinkurl{#1}}% - \iffieldundef{eprintclass} - {} - {\addspace\mkbibparens{\thefield{eprintclass}}}} -\DeclareFieldFormat{eprint:hdl}{% - HDL\addcolon\space - \ifhyperref - {\href{http://hdl.handle.net/#1}{\nolinkurl{#1}}} - {\nolinkurl{#1}}} -\DeclareFieldAlias{eprint:HDL}{eprint:hdl} -\DeclareFieldFormat{eprint:arxiv}{% - arXiv\addcolon\space - \ifhyperref - {\href{http://arxiv.org/\abx@arxivpath/#1}{% - \nolinkurl{#1}% - \iffieldundef{eprintclass} - {} - {\addspace\texttt{\mkbibbrackets{\thefield{eprintclass}}}}}} - {\nolinkurl{#1} - \iffieldundef{eprintclass} - {} - {\addspace\texttt{\mkbibbrackets{\thefield{eprintclass}}}}}} -\DeclareFieldAlias{eprint:arXiv}{eprint:arxiv} -\DeclareFieldFormat{eprint:jstor}{% - JSTOR\addcolon\space - \ifhyperref - {\href{http://www.jstor.org/stable/#1}{\nolinkurl{#1}}} - {\nolinkurl{#1}}} -\DeclareFieldAlias{eprint:JSTOR}{eprint:jstor} -\DeclareFieldFormat{eprint:pubmed}{% - PMID\addcolon\space - \ifhyperref - {\href{http://www.ncbi.nlm.nih.gov/pubmed/#1}{\nolinkurl{#1}}} - {\nolinkurl{#1}}} -\DeclareFieldAlias{eprint:PubMed}{eprint:pubmed} -\DeclareFieldFormat{eprint:googlebooks}{% - Google Books\addcolon\space - \ifhyperref - {\href{http://books.google.com/books?id=#1}{\nolinkurl{#1}}} - {\nolinkurl{#1}}} -\DeclareFieldAlias{eprint:Google Books}{eprint:googlebooks} -\DeclareFieldFormat{file}{\url{#1}} -\DeclareFieldFormat{isbn}{\mkbibacro{ISBN}\addcolon\space #1} -\DeclareFieldFormat{isrn}{\mkbibacro{ISRN}\addcolon\space #1} -\DeclareFieldFormat{issn}{\mkbibacro{ISSN}\addcolon\space #1} -\DeclareFieldFormat{journaltitle}{\mkbibemph{#1}} -\DeclareFieldFormat{issuetitle}{\mkbibemph{#1}} -\DeclareFieldFormat{maintitle}{\mkbibemph{#1}} -\DeclareFieldFormat{booktitle}{\mkbibemph{#1}} -\DeclareFieldFormat{chapter}{\bibstring{chapter}~#1} -\DeclareFieldFormat{month}{\mkbibmonth{#1}} -\DeclareFieldFormat{note}{#1\isdot} -\DeclareFieldFormat{number}{#1}% number in a series -\DeclareFieldFormat[article,periodical]{number}{#1}% number of a journal -\DeclareFieldFormat{pages}{\mkpageprefix[bookpagination]{#1}} -\DeclareFieldFormat{pagetotal}{\mkpagetotal[bookpagination]{#1}} -\DeclareFieldFormat{part}{.#1}% physical part of a logical volume -\DeclareFieldFormat{series}{#1}% publication series -\DeclareFieldFormat[article,periodical]{series}{% series of a journal - \ifinteger{#1} - {\mkbibordseries{#1}~\bibstring{jourser}} - {\ifbibstring{#1}{\bibstring{#1}}{#1}}} -\DeclareFieldFormat{pubstate}{\ifbibstring{#1}{\bibstring{#1}}{#1}} -\DeclareFieldFormat{title}{\mkbibemph{#1}} -\DeclareFieldFormat - [article,inbook,incollection,inproceedings,patent,thesis,unpublished] - {title}{\mkbibquote{#1\isdot}} -\DeclareFieldFormat - [suppbook,suppcollection,suppperiodical] - {title}{#1} -\DeclareFieldFormat{type}{\ifbibstring{#1}{\bibstring{#1}}{#1}} -\DeclareFieldFormat{url}{\mkbibacro{URL}\addcolon\space\url{#1}} -\DeclareFieldFormat{urldate}{\mkbibparens{\bibstring{urlseen}\space#1}} -\DeclareFieldFormat{version}{\bibstring{version}~#1} -\DeclareFieldFormat{volume}{\bibstring{volume}~#1}% volume of a book -\DeclareFieldFormat[article,periodical]{volume}{#1}% volume of a journal -\DeclareFieldFormat{volumes}{#1~\bibstring{volumes}} -\DeclareFieldFormat{related}{#1} -\DeclareFieldFormat{related:multivolume}{\par\nobreak#1} -\DeclareFieldFormat{related:origpubin}{\mkbibparens{#1}} -\DeclareFieldFormat{related:origpubas}{\mkbibparens{#1}} -\DeclareFieldFormat{relatedstring:default}{#1\printunit{\relatedpunct}} -\DeclareFieldFormat{relatedstring:reprintfrom}{#1\addspace} - -% Generic formats for \printtext and \printfield - -\DeclareFieldFormat{emph}{\mkbibemph{#1}} -\DeclareFieldFormat{bold}{\textbf{#1}} -\DeclareFieldFormat{smallcaps}{\textsc{#1}} -\DeclareFieldFormat{parens}{\mkbibparens{#1}} -\DeclareFieldFormat{brackets}{\mkbibbrackets{#1}} -\DeclareFieldFormat{bibhyperref}{\bibhyperref{#1}} -\DeclareFieldFormat{bibhyperlink}{\bibhyperlink{\thefield{entrykey}}{#1}} -\DeclareFieldFormat{bibhypertarget}{\bibhypertarget{\thefield{entrykey}}{#1}} -\DeclareFieldFormat{titlecase}{#1} -\DeclareFieldFormat{noformat}{#1} - -% ------------------------------------------------------------------ -% LITERAL LIST FORMATS (#1 is the current item) -% ------------------------------------------------------------------ - -% Formatting directives for literal lists -% ------------------------------------------------------------------ - -% The fallback used by \printlist - -\DeclareListFormat{default}{% - \usebibmacro{list:delim}{#1}% - #1\isdot - \usebibmacro{list:andothers}} - -% The default used by \citelist - -\DeclareListAlias{citelist}{default} - -% Used in the bibliography - -\DeclareListFormat{publisher}{% - \usebibmacro{list:delim}{#1}% - #1\isdot - \usebibmacro{list:andothers}} - -\DeclareListFormat{language}{% - \usebibmacro{list:delim}{% - \ifbibstring{#1} - {\bibxstring{#1}} - {\ifbibstring{lang#1} - {\bibxstring{lang#1}} - {#1}}}% - \ifbibstring{#1} - {\bibstring{#1}} - {\ifbibstring{lang#1} - {\bibstring{lang#1}} - {#1}}% - \usebibmacro{list:andothers}} - -\DeclareListFormat{location}{% - \usebibmacro{list:delim}{#1}% - #1\isdot - \usebibmacro{list:andothers}} - -\DeclareListFormat[patent]{location}{% - \usebibmacro{list:plain}% - \ifbibstring{#1}{\bibstring{#1}}{#1\isdot}% - \usebibmacro{list:andothers}} - -\DeclareListFormat{pageref}{% - \ifnumless{\abx@pagerefstyle}{0} - {\usebibmacro{list:plain}% - \ifhyperref - {\hyperlink{page.#1}{#1}} - {#1}} - {\ifnumequal{\value{listcount}}{1} - {\usebibmacro{pageref:init}} - {}% - \usebibmacro{pageref:comp}{#1}% - \ifnumequal{\value{listcount}}{\value{liststop}} - {\usebibmacro{pageref:dump}} - {}}} - -\DeclareListAlias{origlocation}{location} -\DeclareListAlias{origpublisher}{publisher} -\DeclareListAlias{institution}{default} -\DeclareListAlias{organization}{default} - -% Auxiliary macros for list formatting directives -% ------------------------------------------------------------------ - -\newbibmacro*{list:delim}[1]{% - \ifnumgreater{\value{listcount}}{\value{liststart}} - {\ifboolexpr{ - test {\ifnumless{\value{listcount}}{\value{liststop}}} - or - test \ifmoreitems - } - {\multilistdelim} - {\lbx@finallistdelim{#1}}} - {}} - -\newbibmacro*{list:plain}{% - \ifnumgreater{\value{listcount}}{\value{liststart}} - {\multilistdelim} - {}} - -\newbibmacro*{list:andothers}{% - \ifboolexpr{ - test {\ifnumequal{\value{listcount}}{\value{liststop}}} - and - test \ifmoreitems - } - {\ifnumgreater{\value{liststop}}{1} - {\finalandcomma} - {}% - \andmoredelim\bibstring{andmore}} - {}} - -\newbibmacro*{pageref:init}{% - \let\abx@range@hold=\empty - \def\abx@range@diff{0}% - \def\abx@range@prev{-1}% - \def\abx@range@this{0}% - \def\abx@range@last{-1}} - -\newbibmacro*{pageref:comp}[1]{% - \numdef\abx@range@prev{\abx@range@prev+1}% - \ifinteger{#1} - {\def\abx@range@num{#1}% - \def\abx@range@this{1}% - \ifnumequal{\abx@range@this}{\abx@range@last} - {} - {\def\abx@range@prev{-1}}} - {\ifrmnum{#1} - {\numdef\abx@range@num{\rmntonum{#1}}% - \def\abx@range@this{2}% - \ifnumequal{\abx@range@this}{\abx@range@last} - {} - {\def\abx@range@prev{-1}}} - {\undef\abx@range@num - \def\abx@range@this{0}% - \def\abx@range@prev{-1}}}% - \ifdef\abx@range@num - {\ifnumequal{\abx@range@num}{\abx@range@prev} - {\def\abx@range@hold{#1}% - \numdef\abx@range@diff{\abx@range@diff+1}} - {\usebibmacro{pageref:dump}% - \ifnumgreater{\abx@range@last}{-1} - {\multilistdelim} - {}% - \ifhyperref - {\hyperlink{page.#1}{#1}} - {#1}}% - \edef\abx@range@prev{\abx@range@num}} - {\usebibmacro{pageref:dump}% - \ifnumgreater{\abx@range@last}{-1} - {\multilistdelim} - {}% - \ifhyperref - {\hyperlink{page.#1}{#1}} - {#1}% - \def\abx@range@prev{-1}}% - \edef\abx@range@last{\abx@range@this}} - -\newbibmacro*{pageref:dump}{% - \ifnumgreater{\abx@range@diff}{0} - {\ifcase\abx@pagerefstyle\relax % two - \bibrangedash - \ifhyperref - {\hyperlink{page.\abx@range@hold}{\abx@range@hold}} - {\abx@range@hold}% - \or % three - \ifnumless{\abx@range@diff}{2} - {\multilistdelim} - {\bibrangedash}% - \ifhyperref - {\hyperlink{page.\abx@range@hold}{\abx@range@hold}} - {\abx@range@hold}% - \or % two+ - \ifnumless{\abx@range@diff}{2} - {\sqspace - \ifhyperref - {\hyperlink{page.\abx@range@hold}{\bibstring{sequens}}} - {\bibstring{sequens}}} - {\bibrangedash - \ifhyperref - {\hyperlink{page.\abx@range@hold}{\abx@range@hold}} - {\abx@range@hold}}% - \or % three+ - \ifnumless{\abx@range@diff}{2} - {\sqspace - \ifhyperref - {\hyperlink{page.\abx@range@hold}{\bibstring{sequens}}} - {\bibstring{sequens}}} - {\ifnumless{\abx@range@diff}{3} - {\sqspace - \ifhyperref - {\hyperlink{page.\abx@range@hold}{\bibstring{sequentes}}} - {\bibstring{sequentes}}} - {\bibrangedash - \ifhyperref - {\hyperlink{page.\abx@range@hold}{\abx@range@hold}} - {\abx@range@hold}}}% - \else % all+ - \ifnumless{\abx@range@diff}{2} - {\sqspace - \ifhyperref - {\hyperlink{page.\abx@range@hold}{\bibstring{sequens}}} - {\bibstring{sequens}}} - {\sqspace - \ifhyperref - {\hyperlink{page.\abx@range@hold}{\bibstring{sequentes}}} - {\bibstring{sequentes}}}% - \fi - \def\abx@range@diff{0}} - {}} - -% ------------------------------------------------------------------ -% NAME LIST FORMATS -% ------------------------------------------------------------------ - -% Arguments passed to formatting directives for name lists: -% -% #1 = family name(s) -% #2 = family name(s) (initials) -% #3 = given name(s) -% #4 = given name(s) (initials) -% #5 = detachable name prefix -% #6 = detachable name prefix (initials) -% #7 = detachable name suffix -% #8 = detachable name suffix (initials) - -% Formatting directives for name lists -% ------------------------------------------------------------------ - -\DeclareNameAlias{first-last}{given-family}% legacy alias -\DeclareNameFormat{given-family}{% - \ifgiveninits - {\usebibmacro{name:given-family}{#1}{#4}{#5}{#7}} - {\usebibmacro{name:given-family}{#1}{#3}{#5}{#7}}% - \usebibmacro{name:andothers}} - -\DeclareNameAlias{last-first}{family-given}% legacy alias -\DeclareNameFormat{family-given}{% - \ifgiveninits - {\usebibmacro{name:family-given}{#1}{#4}{#5}{#7}} - {\usebibmacro{name:family-given}{#1}{#3}{#5}{#7}}% - \usebibmacro{name:andothers}} - -\DeclareNameAlias{last-first/first-last}{family-given/given-family}% legacy alias -\DeclareNameFormat{family-given/given-family}{% - \ifnumequal{\value{listcount}}{1} - {\ifgiveninits - {\usebibmacro{name:family-given}{#1}{#4}{#5}{#7}} - {\usebibmacro{name:family-given}{#1}{#3}{#5}{#7}}% - \ifblank{#3#5} - {} - {\usebibmacro{name:revsdelim}}} - {\ifgiveninits - {\usebibmacro{name:given-family}{#1}{#4}{#5}{#7}} - {\usebibmacro{name:given-family}{#1}{#3}{#5}{#7}}}% - \usebibmacro{name:andothers}} - -\DeclareNameFormat{initsonly}{% - \usebibmacro{name:given-family}{#2}{#4}{#6}{#8}% - \usebibmacro{name:andothers}} - -% Fallback used by \printnames - -\DeclareNameAlias{default}{given-family} - -% Default used by \citename - -\DeclareNameAlias{citename}{default} - -% Used in some citations - -\DeclareNameFormat{labelname}{% - \ifcase\value{uniquename}% - \usebibmacro{name:family}{#1}{#3}{#5}{#7}% - \or - \ifuseprefix - {\usebibmacro{name:given-family}{#1}{#4}{#5}{#8}} - {\usebibmacro{name:given-family}{#1}{#4}{#6}{#8}}% - \or - \usebibmacro{name:given-family}{#1}{#3}{#5}{#7}% - \fi - \usebibmacro{name:andothers}} - -% Used in the bibliography - -\DeclareNameAlias{sortname}{family-given/given-family} - -\DeclareNameAlias{author}{default} -\DeclareNameAlias{bookauthor}{author} -\DeclareNameAlias{editor}{default} -\DeclareNameAlias{editora}{editor} -\DeclareNameAlias{editorb}{editor} -\DeclareNameAlias{editorc}{editor} -\DeclareNameAlias{translator}{default} - -\DeclareNameAlias{byauthor}{default} -\DeclareNameAlias{bybookauthor}{byauthor} -\DeclareNameAlias{byeditor}{default} -\DeclareNameAlias{byeditora}{byeditor} -\DeclareNameAlias{byeditorb}{byeditor} -\DeclareNameAlias{byeditorc}{byeditor} -\DeclareNameAlias{bytranslator}{default} - -\DeclareNameAlias{withcommentator}{default} -\DeclareNameAlias{withannotator}{default} -\DeclareNameAlias{withintroduction}{default} -\DeclareNameAlias{withforeword}{default} -\DeclareNameAlias{withafterword}{default} - -\DeclareFieldFormat{authortype}{#1} -\DeclareFieldFormat{editortype}{#1} - -% Auxiliary macros for name formatting directives -% ------------------------------------------------------------------ - -\newbibmacro*{name:family}[4]{% - \ifuseprefix - {\usebibmacro{name:delim}{#3#1}% - \usebibmacro{name:hook}{#3#1}% - \ifblank{#3} - {} - {\ifcapital - {\mkbibnameprefix{\MakeCapital{#3}}\isdot} - {\mkbibnameprefix{#3}\isdot}% - \ifprefchar{}{\bibnamedelimc}}} - {\usebibmacro{name:delim}{#1}% - \usebibmacro{name:hook}{#1}}% - \mkbibnamefamily{#1}\isdot}% -\newbibmacro*{name:last}[4]{% legacy alias - \blx@warning@noline{% - 'name:last' is deprecated, please use 'name:family'}% - \usebibmacro{name:family}{#1}{#2}{#3}{#4}} - -\newbibmacro*{name:given-family}[4]{% - \usebibmacro{name:delim}{#2#3#1}% - \usebibmacro{name:hook}{#2#3#1}% - \ifblank{#2}{}{\mkbibnamegiven{#2}\isdot\bibnamedelimd}% - \ifblank{#3}{}{% - \mkbibnameprefix{#3}\isdot - \ifprefchar - {} - {\ifuseprefix{\bibnamedelimc}{\bibnamedelimd}}}% - \mkbibnamefamily{#1}\isdot - \ifblank{#4}{}{\bibnamedelimd\mkbibnameaffix{#4}\isdot}} -\newbibmacro*{name:first-last}[4]{% legacy alias - \blx@warning@noline{% - 'name:first-last' is deprecated, please use 'name:given-family'}% - \usebibmacro{name:given-family}{#1}{#2}{#3}{#4}} - -\newbibmacro*{name:family-given}[4]{% - \ifuseprefix - {\usebibmacro{name:delim}{#3#1}% - \usebibmacro{name:hook}{#3#1}% - \ifblank{#3}{}{% - \ifcapital - {\mkbibnameprefix{\MakeCapital{#3}}\isdot} - {\mkbibnameprefix{#3}\isdot}% - \ifprefchar{}{\bibnamedelimc}}% - \mkbibnamefamily{#1}\isdot - \ifblank{#4}{}{\bibnamedelimd\mkbibnameaffix{#4}\isdot}% - \ifblank{#2}{}{\revsdnamepunct\bibnamedelimd\mkbibnamegiven{#2}\isdot}} - {\usebibmacro{name:delim}{#1}% - \usebibmacro{name:hook}{#1}% - \mkbibnamefamily{#1}\isdot - \ifblank{#4}{}{\bibnamedelimd\mkbibnameaffix{#4}\isdot}% - \ifblank{#2#3}{}{\revsdnamepunct}% - \ifblank{#2}{}{\bibnamedelimd\mkbibnamegiven{#2}\isdot}% - \ifblank{#3}{}{\bibnamedelimd\mkbibnameprefix{#3}\isdot}}} -\newbibmacro*{name:last-first}[4]{% legacy alias - \blx@warning@noline{% - 'name:last-first' is deprecated, please use 'name:family-given'}% - \usebibmacro{name:family-given}{#1}{#2}{#3}{#4}} - -\newbibmacro*{name:hook}[1]{% - \ifnumequal{\value{listcount}}{1} - {\lbx@initnamehook{#1}} - {}} - -\newbibmacro*{name:delim}[1]{% - \ifnumgreater{\value{listcount}}{\value{liststart}} - {\ifboolexpr{ - test {\ifnumless{\value{listcount}}{\value{liststop}}} - or - test \ifmorenames - } - {\multinamedelim} - {\lbx@finalnamedelim{#1}}} - {}} - -\newbibmacro*{name:revsdelim}{% - \ifboolexpr{ - ( - test {\ifnumequal{\value{liststop}}{1}} - and - test \ifmorenames - ) - or - test {\ifnumequal{\value{liststop}}{2}} - } - {\revsdnamedelim} - {}} - -\newbibmacro*{name:andothers}{% - \ifboolexpr{ - test {\ifnumequal{\value{listcount}}{\value{liststop}}} - and - test \ifmorenames - } - {\ifnumgreater{\value{liststop}}{1} - {\finalandcomma} - {}% - \andothersdelim\bibstring{andothers}} - {}} - -% ------------------------------------------------------------------ -% INDEX FORMATS FOR FIELDS (#1 is the value of the field) -% ------------------------------------------------------------------ - -% There is no need to test if a field to be indexed is empty because -% \indexfield performs this test implicitly. - -% The fallback used by \indexfield - -\DeclareIndexFieldFormat{default}{\index{#1}} - -% Used in the bibliography and in citations - -\DeclareIndexFieldFormat{indextitle}{% - \usebibmacro{index:title}{\index}{#1}} - -\newbibmacro*{index:title}[2]{% - \usebibmacro{index:field}{#1}{\thefield{indexsorttitle}}{\emph{#2}}} - -\newbibmacro*{index:field}[3]{% - \usebibmacro{index:entry}{#1}{\mkbibindexfield{#2}{#3}}} - -% Auxiliary macros for field indexing directives -% ------------------------------------------------------------------ - -\newbibmacro*{index:entry}[2]{% - \begingroup - \protected@edef\theindexentry{\unexpanded{#1}{#2}}% - \theindexentry - \endgroup} - -\newcommand*{\mkbibindexfield}[2]{\mkbibindexentry{#1}{\unexpanded{#2}}} -\newcommand*{\mkbibindexentry}[2]{#1\actualoperator#2} - -% ------------------------------------------------------------------ -% INDEX FORMATS FOR LITERAL LISTS (#1 is the current item) -% ------------------------------------------------------------------ - -% The fallback used by \indexlist - -\DeclareIndexListFormat{default}{\index{#1}} - -% ------------------------------------------------------------------ -% INDEX FORMATS FOR NAME LISTS -% ------------------------------------------------------------------ - -% Argments passed to indexing directives for name lists: -% -% #1 = family name(s) -% #2 = family name(s) (initials) -% #3 = given name(s) -% #4 = given name(s) (initials) -% #5 = detachable name prefix -% #6 = detachable name prefix (initials) -% #7 = detachable name suffix -% #8 = detachable name suffix (initials) - -% Indexing directives for name lists -% ------------------------------------------------------------------ - -% The fallback used by \indexnames - -\DeclareIndexNameFormat{default}{% - \usebibmacro{index:name}{\index}{#1}{#3}{#5}{#7}} - -% Used in citations - -\DeclareIndexNameAlias{labelname}{default} - -% Used in the bibliography - -\DeclareIndexNameAlias{author}{default} -\DeclareIndexNameAlias{editor}{default} -\DeclareIndexNameAlias{bookauthor}{default} - -% Auxiliary macros for name indexing directives -% ------------------------------------------------------------------ - -% When generating an index entry, we need to test which parts of a -% name are actually available to prevent spurious punctuation and -% spaces. Since those parts which are not available yield an empty -% argument, we can use the \ifblank test from etoolbox.sty to analyze -% the name. -% -% Note that the standard LaTeX \index command simply writes its -% argument to the .idx file without preventing expansion. This means -% that all \ifblank tests are expanded on the way and will not end -% up in the index. The index package, however, prevents expansion. -% This would lead to \ifblank ending up in the .idx file. To avoid -% that, we preprocess the index entry inside an \edef. We use -% \unexpanded to protect the \index command and the actual data from -% expansion. This definition will work with both index.sty and the -% standard indexing facilities. -% -% We also use \ifuseprefix to ensure that the name prefix is handled -% properly. \actualoperator is the so-called actual operator, as -% defined by the 'actual' specifier in the .ist file. The makeindex -% program will use the part preceeding the \actualoperator -% delimiter for sorting. The part after the delimiter is used as the -% index is printed. Note that this is not specific to biblatex, see -% the makeindex documentation for details. - -\newcommand*{\actualoperator}{@} -\newcommand*{\subentryoperator}{!} - -\newbibmacro*{index:name}[5]{% - \usebibmacro{index:entry}{#1}{\mkbibindexname{#2}{#3}{#4}{#5}}} - -% {<family name>}{<given name>}{<given initials>}{<family name prefix>} - -\newcommand*{\mkbibindexname}[4]{% - \ifuseprefix - {\ifblank{#3}{}{#3 }% - \@firstofone #1% remove spurious braces - \ifblank{#4}{}{ #4}% - \ifblank{#2}{}{, #2}% - \actualoperator - \ifblank{#3}{}{\MakeCapital{#3} }% - #1% - \ifblank{#4}{}{ #4}% - \ifblank{#2}{}{, #2}} - {\@firstofone #1% remove spurious braces - \ifblank{#4}{}{ #4}% - \ifblank{#2#3}{}{,}% - \ifblank{#2}{}{ #2}% - \ifblank{#3}{}{ #3}}} - -% {<control sequence>}{<control sequence>} - -\newcommand*{\mkbibindexsubentry}[2]{% - \ifblank{#1}{}{\subentryoperator#1\actualoperator#2}} - -% Additional macros with subentries - -\newbibmacro*{index:name:field}[6]{% - \usebibmacro{index:name:subentry}{#1}{#2}{#3}{#4}{#5} - {\thefield{#6}}{\csfield{#6}}} - -\newbibmacro*{index:name:title}[5]{% - \usebibmacro{index:name:subentry}{#1}{#2}{#3}{#4}{#5} - {\thefield{indexsorttitle}}{\emph{\csfield{indextitle}}}} - -\newbibmacro*{index:name:subentry}[7]{% - \usebibmacro{index:entry}{#1}{% - \mkbibindexname{#2}{#3}{#4}{#5}\mkbibindexsubentry{#6}{#7}}} - -% ------------------------------------------------------------------ -% MACROS FOR LBX FILES -% ------------------------------------------------------------------ - -\newcommand*{\lbx@initnamehook}[1]{} -\newcommand*{\lbx@inittitlehook}[1]{} -\newcommand*{\lbx@finalnamedelim}[1]{\finalnamedelim} -\newcommand*{\lbx@finallistdelim}[1]{\finallistdelim} - -\newcommand*{\lbx@lfromlang}{% - \iffieldundef{origlanguage} - {\unspace} - {\biblstring{from\thefield{origlanguage}}}} - -\newcommand*{\lbx@sfromlang}{% - \iffieldundef{origlanguage} - {\unspace} - {\bibsstring{from\thefield{origlanguage}}}} - -% ------------------------------------------------------------------ -% MISCELLANEOUS -% ------------------------------------------------------------------ - -% ordinals - -\newcommand*{\mkbibordedition}{\mkbibordinal} -\newcommand*{\mkbibordseries}{\mkbibordinal} - -% american - -\newrobustcmd*{\uspunctuation}{% - \DeclareQuotePunctuation{.,}% - \DeclarePunctuationPairs{comma}{*}} -\newrobustcmd*{\stdpunctuation}{% - \DeclareQuotePunctuation{}% - \DeclarePunctuationPairs{comma}{*!?}} - -% catalan and french - -\newtoggle{smartof} -\newrobustcmd*{\smartof}{\global\toggletrue{smartof}} -\newrobustcmd*{\forceD}[1]{#1} -\newrobustcmd*{\forceDE}[1]{#1} - -\AtBeginDocument{% - \@ifpackageloaded{babel} - {\ifdef\AutoSpaceBeforeFDP - {\newrobustcmd*{\EnsureAutoSpaceBeforeFDP}{% - \iflanguage{french} - {\AutoSpaceBeforeFDP} - {}}% - \appto\bibsetup{\EnsureAutoSpaceBeforeFDP}% - \appto\citesetup{\EnsureAutoSpaceBeforeFDP}} - {}} - {}} - -% spanish - -\newcounter{smartand} -\defcounter{smartand}{1} -\newrobustcmd*{\forceY}[1]{#1} -\newrobustcmd*{\forceE}[1]{#1} - -% ------------------------------------------------------------------ -% PREDEFINED HEADINGS -% ------------------------------------------------------------------ - -\newcommand*{\abx@classtype}{0} -\@ifclassloaded{article} - {} - {\@ifclassloaded{book} - {\def\abx@classtype{1}} - {\@ifclassloaded{report} - {\def\abx@classtype{1}} - {\@ifclassloaded{scrartcl} - {\def\abx@classtype{2}} - {\@ifclassloaded{scrbook} - {\def\abx@classtype{3}} - {\@ifclassloaded{scrreprt} - {\def\abx@classtype{3}} - {\@ifclassloaded{memoir} - {\ifbool{artopt} - {\def\abx@classtype{4}} - {\def\abx@classtype{5}}} - {\ifundef\chapter - {} - {\def\abx@classtype{1}}}}}}}}} - -\defbibheading{none}{} - -\ifcase\abx@classtype\relax % article - \defbibheading{bibliography}[\refname]{% - \section*{#1}% - \markboth{\MakeUppercase{#1}}{\MakeUppercase{#1}}} - \defbibheading{biblist}[\biblistname]{% - \section*{#1}% - \markboth{\MakeUppercase{#1}}{\MakeUppercase{#1}}} - \defbibheading{bibintoc}[\refname]{% - \section*{#1}% - \addcontentsline{toc}{section}{#1}% - \markboth{\MakeUppercase{#1}}{\MakeUppercase{#1}}} - \defbibheading{biblistintoc}[\biblistname]{% - \section*{#1}% - \addcontentsline{toc}{section}{#1}% - \markboth{\MakeUppercase{#1}}{\MakeUppercase{#1}}} - \defbibheading{bibnumbered}[\refname]{% - \section{#1}% - \if@twoside\markright{\MakeUppercase{#1}}\fi} - \defbibheading{biblistnumbered}[\biblistname]{% - \section{#1}% - \if@twoside\markright{\MakeUppercase{#1}}\fi} - \defbibheading{subbibliography}[\refname]{% - \subsection*{#1}} - \defbibheading{subbibintoc}[\refname]{% - \subsection*{#1}% - \addcontentsline{toc}{subsection}{#1}} - \defbibheading{subbibnumbered}[\refname]{% - \subsection{#1}} - -\or % book/report - \defbibheading{bibliography}[\bibname]{% - \chapter*{#1}% - \markboth{\MakeUppercase{#1}}{\MakeUppercase{#1}}} - \defbibheading{biblist}[\biblistname]{% - \chapter*{#1}% - \markboth{\MakeUppercase{#1}}{\MakeUppercase{#1}}} - \defbibheading{bibintoc}[\bibname]{% - \chapter*{#1}% - \addcontentsline{toc}{chapter}{#1}% - \markboth{\MakeUppercase{#1}}{\MakeUppercase{#1}}} - \defbibheading{biblistintoc}[\biblistname]{% - \chapter*{#1}% - \addcontentsline{toc}{chapter}{#1}% - \markboth{\MakeUppercase{#1}}{\MakeUppercase{#1}}} - \defbibheading{bibnumbered}[\bibname]{% - \chapter{#1}% - \if@twoside\markright{\MakeUppercase{#1}}\fi} - \defbibheading{biblistnumbered}[\biblistname]{% - \chapter{#1}% - \if@twoside\markright{\MakeUppercase{#1}}\fi} - \defbibheading{subbibliography}[\refname]{% - \section*{#1}% - \if@twoside\markright{\MakeUppercase{#1}}\fi} - \defbibheading{subbibintoc}[\refname]{% - \section*{#1}% - \addcontentsline{toc}{section}{#1}% - \if@twoside\markright{\MakeUppercase{#1}}\fi} - \defbibheading{subbibnumbered}[\refname]{% - \section{#1}} - -\or % scrartcl - \defbibheading{bibliography}[\refname]{% - \ifkomabibtotocnumbered - {\section{#1}} - {\ifkomabibtotoc - {\addsec{#1}} - {\section*{#1}}% - \markboth{#1}{#1}}} - \defbibheading{biblist}[\biblistname]{% - \ifkomabibtotocnumbered - {\section{#1}} - {\ifkomabibtotoc - {\addsec{#1}} - {\section*{#1}}% - \markboth{#1}{#1}}} - \defbibheading{bibintoc}[\refname]{% - \addsec{#1}% - \markboth{#1}{#1}} - \defbibheading{biblistintoc}[\biblistname]{% - \addsec{#1}% - \markboth{#1}{#1}} - \defbibheading{bibnumbered}[\refname]{% - \section{#1}% - \markboth{\sectionmarkformat#1}{\sectionmarkformat#1}} - \defbibheading{biblistnumbered}[\biblistname]{% - \section{#1}% - \markboth{\sectionmarkformat#1}{\sectionmarkformat#1}} - \defbibheading{subbibliography}[\refname]{% - \subsection*{#1}} - \defbibheading{subbibintoc}[\refname]{% - \subsection*{#1}% - \addcontentsline{toc}{subsection}{#1}} - \defbibheading{subbibnumbered}[\refname]{% - \subsection{#1}} - -\or % scrbook/scrreprt - \defbibheading{bibliography}[\bibname]{% - \ifkomabibtotocnumbered - {\chapter{#1}} - {\ifkomabibtotoc - {\addchap{#1}} - {\chapter*{#1}}% - \markboth{#1}{#1}}} - \defbibheading{biblist}[\biblistname]{% - \ifkomabibtotocnumbered - {\chapter{#1}} - {\ifkomabibtotoc - {\addchap{#1}} - {\chapter*{#1}}% - \markboth{#1}{#1}}} - \defbibheading{bibintoc}[\bibname]{% - \addchap{#1}% - \markboth{#1}{#1}} - \defbibheading{biblistintoc}[\biblistname]{% - \addchap{#1}% - \markboth{#1}{#1}} - \defbibheading{bibnumbered}[\bibname]{% - \chapter{#1}% - \markboth{\chaptermarkformat#1}{\chaptermarkformat#1}} - \defbibheading{biblistnumbered}[\biblistname]{% - \chapter{#1}% - \markboth{\chaptermarkformat#1}{\chaptermarkformat#1}} - \defbibheading{subbibliography}[\refname]{% - \section*{#1}% - \if@twoside\markright{#1}\fi} - \defbibheading{subbibintoc}[\refname]{% - \addsec{#1}% - \markboth{#1}{#1}} - \defbibheading{subbibnumbered}[\refname]{% - \section{#1}} - -\or % memoir (article) - \ifdef\memUChead{}{\let\memUChead\MakeUppercase} - \defbibheading{bibliography}[\refname]{% - \chapter*{#1}% - \ifmemoirbibintoc - {\phantomsection - \addcontentsline{toc}{chapter}{#1}} - {}% - \markboth{\memUChead{#1}}{\memUChead{#1}}} - \defbibheading{biblist}[\biblistname]{% - \chapter*{#1}% - \ifmemoirbibintoc - {\phantomsection - \addcontentsline{toc}{chapter}{#1}} - {}% - \markboth{\memUChead{#1}}{\memUChead{#1}}} - \defbibheading{bibintoc}[\refname]{% - \chapter*{#1}% - \phantomsection - \addcontentsline{toc}{chapter}{#1}% - \markboth{\memUChead{#1}}{\memUChead{#1}}} - \defbibheading{biblistintoc}[\biblistname]{% - \chapter*{#1}% - \phantomsection - \addcontentsline{toc}{chapter}{#1}% - \markboth{\memUChead{#1}}{\memUChead{#1}}} - \defbibheading{bibnumbered}[\refname]{% - \chapter{#1}} - \defbibheading{biblistnumbered}[\biblistname]{% - \chapter{#1}} - \defbibheading{subbibliography}[\refname]{% - \section*{#1}% - \ifmemoirbibintoc - {\phantomsection - \addcontentsline{toc}{section}{#1}} - {}% - \if@twoside\markright{\memUChead{#1}}\fi} - \defbibheading{subbibintoc}[\refname]{% - \section*{#1}% - \phantomsection - \addcontentsline{toc}{section}{#1}% - \if@twoside\markright{\memUChead{#1}}\fi} - \defbibheading{subbibnumbered}[\refname]{% - \section{#1}} - -\or % memoir (book) - \ifdef\memUChead{}{\let\memUChead\MakeUppercase} - \defbibheading{bibliography}[\bibname]{% - \chapter*{#1}% - \ifmemoirbibintoc - {\phantomsection - \addcontentsline{toc}{chapter}{#1}} - {}% - \markboth{\memUChead{#1}}{\memUChead{#1}}} - \defbibheading{biblist}[\biblistname]{% - \chapter*{#1}% - \ifmemoirbibintoc - {\phantomsection - \addcontentsline{toc}{chapter}{#1}} - {}% - \markboth{\memUChead{#1}}{\memUChead{#1}}} - \defbibheading{bibintoc}[\bibname]{% - \chapter*{#1}% - \phantomsection - \addcontentsline{toc}{chapter}{#1}% - \markboth{\memUChead{#1}}{\memUChead{#1}}} - \defbibheading{biblistintoc}[\biblistname]{% - \chapter*{#1}% - \phantomsection - \addcontentsline{toc}{chapter}{#1}% - \markboth{\memUChead{#1}}{\memUChead{#1}}} - \defbibheading{bibnumbered}[\bibname]{% - \chapter{#1}% - \if@twoside\markright{\memUChead{#1}}\fi} - \defbibheading{biblistnumbered}[\biblistname]{% - \chapter{#1}% - \if@twoside\markright{\memUChead{#1}}\fi} - \defbibheading{subbibliography}[\refname]{% - \section*{#1}% - \ifmemoirbibintoc - {\phantomsection - \addcontentsline{toc}{section}{#1}} - {}% - \if@twoside\markright{\memUChead{#1}}\fi} - \defbibheading{subbibintoc}[\refname]{% - \section*{#1}% - \phantomsection - \addcontentsline{toc}{section}{#1}% - \if@twoside\markright{\memUChead{#1}}\fi} - \defbibheading{subbibnumbered}[\refname]{% - \section{#1}} - -\fi - -% ------------------------------------------------------------------ -% GENERIC CITATION COMMANDS -% ------------------------------------------------------------------ - -\DeclareCiteCommand{\fullcite} - {\usebibmacro{prenote}} - {\usedriver - {\DeclareNameAlias{sortname}{default}} - {\thefield{entrytype}}} - {\multicitedelim} - {\usebibmacro{postnote}} - -\DeclareCiteCommand{\footfullcite}[\mkbibfootnote] - {\usebibmacro{prenote}} - {\usedriver - {\DeclareNameAlias{sortname}{default}} - {\thefield{entrytype}}} - {\multicitedelim} - {\usebibmacro{postnote}} - -\DeclareCiteCommand{\citeauthor} - {\boolfalse{citetracker}% - \boolfalse{pagetracker}% - \usebibmacro{prenote}} - {\ifciteindex - {\indexnames{labelname}} - {}% - \printnames{labelname}} - {\multicitedelim} - {\usebibmacro{postnote}} - -\DeclareCiteCommand*{\citeauthor} - {\boolfalse{citetracker}% - \boolfalse{pagetracker}% - \usebibmacro{prenote}} - {\ifciteindex - {\indexnames{labelname}} - {}% - \printnames[][1-1]{labelname}} - {\multicitedelim} - {\usebibmacro{postnote}} - -\DeclareCiteCommand{\citetitle} - {\boolfalse{citetracker}% - \boolfalse{pagetracker}% - \usebibmacro{prenote}} - {\ifciteindex - {\indexfield{indextitle}} - {}% - \printfield[citetitle]{labeltitle}} - {\multicitedelim} - {\usebibmacro{postnote}} - -\DeclareCiteCommand*{\citetitle} - {\boolfalse{citetracker}% - \boolfalse{pagetracker}% - \usebibmacro{prenote}} - {\ifciteindex - {\indexfield{indextitle}} - {}% - \printfield[citetitle]{title}} - {\multicitedelim} - {\usebibmacro{postnote}} - -\DeclareCiteCommand{\citeyear} - {\boolfalse{citetracker}% - \boolfalse{pagetracker}% - \usebibmacro{prenote}} - {\printfield{year}} - {\multicitedelim} - {\usebibmacro{postnote}} - -\DeclareCiteCommand*{\citeyear} - {\boolfalse{citetracker}% - \boolfalse{pagetracker}% - \usebibmacro{prenote}} - {\printfield{year}\printfield{extrayear}} - {\multicitedelim} - {\usebibmacro{postnote}} - -\DeclareCiteCommand{\citedate} - {\boolfalse{citetracker}% - \boolfalse{pagetracker}% - \usebibmacro{prenote}} - {\printdate} - {\multicitedelim} - {\usebibmacro{postnote}} - -\DeclareCiteCommand*{\citedate} - {\boolfalse{citetracker}% - \boolfalse{pagetracker}% - \usebibmacro{prenote}} - {\printdateextra} - {\multicitedelim} - {\usebibmacro{postnote}} - -\DeclareCiteCommand{\citeurl} - {\boolfalse{citetracker}% - \boolfalse{pagetracker}% - \usebibmacro{prenote}} - {\printfield[citeurl]{url}} - {\multicitedelim} - {\usebibmacro{postnote}} - -\DeclareCiteCommand{\notecite} - {\printfield{prenote}% - \setunit*{\prenotedelim}} - {\nocite{\thefield{entrykey}}} - {} - {\printfield{postnote}} - -\DeclareCiteCommand{\pnotecite}[\mkbibparens] - {\printfield{prenote}% - \setunit*{\prenotedelim}} - {\nocite{\thefield{entrykey}}} - {} - {\printfield{postnote}} - -\DeclareCiteCommand{\fnotecite}[\mkbibfootnote] - {\printfield{prenote}% - \setunit*{\prenotedelim}} - {\nocite{\thefield{entrykey}}} - {} - {\printfield{postnote}} - -\newrobustcmd*{\volcite}{\volcitecmd\cite} -\newrobustcmd*{\pvolcite}{\volcitecmd\parencite} -\newrobustcmd*{\fvolcite}{\volcitecmd\footcite} -\newrobustcmd*{\ftvolcite}{\volcitecmd\footcitetext} -\newrobustcmd*{\svolcite}{\volcitecmd\smartcite} -\newrobustcmd*{\tvolcite}{\volcitecmd\textcite} -\newrobustcmd*{\avolcite}{\volcitecmd\autocite} - -\newrobustcmd*{\volcites}{\multivolcitecmd\cites} -\newrobustcmd*{\pvolcites}{\multivolcitecmd\parencites} -\newrobustcmd*{\fvolcites}{\multivolcitecmd\footcites} -\newrobustcmd*{\ftvolcites}{\multivolcitecmd\footcitetexts} -\newrobustcmd*{\svolcites}{\multivolcitecmd\smartcites} -\newrobustcmd*{\tvolcites}{\multivolcitecmd\textcites} -\newrobustcmd*{\avolcites}{\multivolcitecmd\autocites} - -\newrobustcmd*{\Cite}{\bibsentence\cite} -\newrobustcmd*{\Parencite}{\bibsentence\parencite} -\newrobustcmd*{\Footcite}{\footcite} -\newrobustcmd*{\Footcitetext}{\footcitetext} -\newrobustcmd*{\Smartcite}{\bibsentence\smartcite} -\newrobustcmd*{\Textcite}{\bibsentence\textcite} -\newrobustcmd*{\Citeauthor}{% - \@ifstar{\bibsentence\citeauthor*}{\bibsentence\citeauthor}} -\newrobustcmd*{\Citetitle}{\bibsentence\citetitle} - -\newrobustcmd*{\Volcite}{\volcitecmd\Cite} -\newrobustcmd*{\Pvolcite}{\volcitecmd\Parencite} -\newrobustcmd*{\Fvolcite}{\volcitecmd\Footcite} -\newrobustcmd*{\Ftvolcite}{\volcitecmd\Footcitetext} -\newrobustcmd*{\Svolcite}{\volcitecmd\Smartcite} -\newrobustcmd*{\Tvolcite}{\volcitecmd\Textcite} -\newrobustcmd*{\Avolcite}{\volcitecmd\Autocite} - -\newrobustcmd*{\Volcites}{\multivolcitecmd\Cites} -\newrobustcmd*{\Pvolcites}{\multivolcitecmd\Parencites} -\newrobustcmd*{\Fvolcites}{\multivolcitecmd\Footcites} -\newrobustcmd*{\Ftvolcites}{\multivolcitecmd\Footcitetext} -\newrobustcmd*{\Svolcites}{\multivolcitecmd\Smartcites} -\newrobustcmd*{\Tvolcites}{\multivolcitecmd\Textcites} -\newrobustcmd*{\Avolcites}{\multivolcitecmd\Autocites} - -\newrobustcmd*{\Notecite}{\bibsentence\notecite} -\newrobustcmd*{\Pnotecite}{\bibsentence\pnotecite} -\newrobustcmd*{\Fnotecite}{\fnotecite} - -\DeclareMultiCiteCommand{\cites}{\cite}{\multicitedelim} -\DeclareMultiCiteCommand{\parencites}[\mkbibparens]{\parencite}{\multicitedelim} -\DeclareMultiCiteCommand{\footcites}[\mkbibfootnote]{\footcite}{\multicitedelim} -\DeclareMultiCiteCommand{\footcitetexts}[\mkbibfootnotetext] - {\footcitetext}{\multicitedelim} -\DeclareMultiCiteCommand{\smartcites}[\iffootnote\mkbibparens\mkbibfootnote] - {\smartcite}{\multicitedelim} -\DeclareMultiCiteCommand{\supercites}[\mkbibsuperscript] - {\supercite}{\supercitedelim} -\DeclareMultiCiteCommand{\textcites}{\textcite}{\multicitedelim} - -\newrobustcmd*{\Cites}{\bibsentence\cites} -\newrobustcmd*{\Parencites}{\bibsentence\parencites} -\newrobustcmd*{\Footcites}{\footcites} -\newrobustcmd*{\Footcitetexts}{\footcitetexts} -\newrobustcmd*{\Smartcites}{\bibsentence\smartcites} -\newrobustcmd*{\Textcites}{\bibsentence\textcites} - -\DeclareAutoCiteCommand{plain}{\cite}{\cites} -\DeclareAutoCiteCommand{inline}{\parencite}{\parencites} -%\DeclareAutoCiteCommand{footnote}[l]{\footcite}{\footcites} -\DeclareAutoCiteCommand{footnote}[f]{\smartcite}{\smartcites} -\DeclareAutoCiteCommand{superscript}[l]{\supercite}{\supercites} - -\newrobustcmd*{\Autocite}{\bibsentence\autocite} -\newrobustcmd*{\Autocites}{\bibsentence\autocites} - -% ------------------------------------------------------------------ -% GENERIC CITATION MACROS -% ------------------------------------------------------------------ - -\newbibmacro*{citeindex}{% - \ifciteindex - {\indexnames{labelname}% - \indexfield{indextitle}} - {}} - -\newbibmacro*{shorthandintro}{% - \iffieldundef{shorthandintro} - {\iffieldundef{shorthand} - {} - {\setunit{\addspace}% - \printtext[parens]{% - \bibstring{citedas}\space - \printfield{shorthand}}}} - {\setunit{\addspace}% - \printtext[parens]{\printfield{shorthandintro}}}} - -% citation commands - -\newbibmacro*{prenote}{% - \iffieldundef{prenote} - {} - {\printfield{prenote}% - \setunit{\prenotedelim}}} - -\newbibmacro*{postnote}{% - \iffieldundef{postnote} - {} - {\setunit{\postnotedelim}% - \printfield{postnote}}} - -% multicite commands - -\newbibmacro*{multiprenote}{% - \iffieldundef{multiprenote} - {} - {\printfield{multiprenote}% - \prenotedelim}} - -\newbibmacro*{multipostnote}{% - \iffieldundef{multipostnote} - {} - {\postnotedelim - \printfield{multipostnote}}} - -% ------------------------------------------------------------------ -% GENERIC BIBLIOGRAPHY MACROS -% ------------------------------------------------------------------ - -\newbibmacro*{bibindex}{% - \ifbibindex - {\indexnames{labelname}% - \indexfield{indextitle}} - {}} - -\newbibmacro*{author/editor}{% - \ifboolexpr{ - test \ifuseauthor - and - not test {\ifnameundef{author}} - } - {\usebibmacro{author}} - {\usebibmacro{editor}}} - -\newbibmacro*{author/editor+others}{% - \ifboolexpr{ - test \ifuseauthor - and - not test {\ifnameundef{author}} - } - {\usebibmacro{author}} - {\usebibmacro{editor+others}}} - -\newbibmacro*{author/translator}{% - \ifboolexpr{ - test \ifuseauthor - and - not test {\ifnameundef{author}} - } - {\usebibmacro{author}} - {\usebibmacro{translator}}} - -\newbibmacro*{author/translator+others}{% - \ifboolexpr{ - test \ifuseauthor - and - not test {\ifnameundef{author}} - } - {\usebibmacro{author}} - {\usebibmacro{translator+others}}} - -\newbibmacro*{author/editor/translator}{% - \ifboolexpr{ - test \ifuseauthor - and - not test {\ifnameundef{author}} - } - {\usebibmacro{author}} - {\ifboolexpr{ - test \ifuseeditor - and - not test {\ifnameundef{editor}} - } - {\usebibmacro{editor}} - {\usebibmacro{translator}}}} - -\newbibmacro*{author/editor+others/translator+others}{% - \ifboolexpr{ - test \ifuseauthor - and - not test {\ifnameundef{author}} - } - {\usebibmacro{author}} - {\ifboolexpr{ - test \ifuseeditor - and - not test {\ifnameundef{editor}} - } - {\usebibmacro{editor+others}} - {\usebibmacro{translator+others}}}} - -\newbibmacro*{author}{% - \ifboolexpr{ - test \ifuseauthor - and - not test {\ifnameundef{author}} - } - {\printnames{author}% - \iffieldundef{authortype} - {} - {\setunit{\addcomma\space}% - \usebibmacro{authorstrg}}} - {}} - -\newbibmacro*{editor}{% - \ifboolexpr{ - test \ifuseeditor - and - not test {\ifnameundef{editor}} - } - {\printnames{editor}% - \setunit{\addcomma\space}% - \usebibmacro{editorstrg}% - \clearname{editor}} - {}} - -\newbibmacro*{editor+others}{% - \ifboolexpr{ - test \ifuseeditor - and - not test {\ifnameundef{editor}} - } - {\printnames{editor}% - \setunit{\addcomma\space}% - \usebibmacro{editor+othersstrg}% - \clearname{editor}} - {}} - -\newbibmacro*{translator}{% - \ifboolexpr{ - test \ifusetranslator - and - not test {\ifnameundef{translator}} - } - {\printnames{translator}% - \setunit{\addcomma\space}% - \usebibmacro{translatorstrg}% - \clearname{translator}} - {}} - -\newbibmacro*{translator+others}{% - \ifboolexpr{ - test \ifusetranslator - and - not test {\ifnameundef{translator}} - } - {\printnames{translator}% - \setunit{\addcomma\space}% - \usebibmacro{translator+othersstrg}% - \clearname{translator}} - {}} - -\newbibmacro*{authorstrg}{% - \iffieldundef{authortype} - {} - {\printtext[authortype]{% - \ifbibxstring{\thefield{authortype}} - {\ifboolexpr{ - test {\ifnumgreater{\value{author}}{1}} - or - test {\ifandothers{author}} - } - {\bibstring{\thefield{authortype}s}} - {\bibstring{\thefield{authortype}}}} - {\thefield{authortype}}}}} - -\newbibmacro*{editorstrg}{% - \printtext[editortype]{% - \iffieldundef{editortype} - {\ifboolexpr{ - test {\ifnumgreater{\value{editor}}{1}} - or - test {\ifandothers{editor}} - } - {\bibstring{editors}} - {\bibstring{editor}}} - {\ifbibxstring{\thefield{editortype}} - {\ifboolexpr{ - test {\ifnumgreater{\value{editor}}{1}} - or - test {\ifandothers{editor}} - } - {\bibstring{\thefield{editortype}s}} - {\bibstring{\thefield{editortype}}}} - {\thefield{editortype}}}}} - -\newbibmacro*{editor+othersstrg}{% - \iffieldundef{editortype} - {\ifboolexpr{ - test {\ifnumgreater{\value{editor}}{1}} - or - test {\ifandothers{editor}} - } - {\def\abx@tempa{editors}} - {\def\abx@tempa{editor}}} - {\ifboolexpr{ - test {\ifnumgreater{\value{editor}}{1}} - or - test {\ifandothers{editor}} - } - {\edef\abx@tempa{\thefield{editortype}s}} - {\edef\abx@tempa{\thefield{editortype}}}}% - \let\abx@tempb=\empty - \ifnamesequal{editor}{translator} - {\appto\abx@tempa{tr}% - \appto\abx@tempb{\clearname{translator}}} - {}% - \ifnamesequal{editor}{commentator} - {\appto\abx@tempa{co}% - \appto\abx@tempb{\clearname{commentator}}} - {\ifnamesequal{editor}{annotator} - {\appto\abx@tempa{an}% - \appto\abx@tempb{\clearname{annotator}}} - {}}% - \ifnamesequal{editor}{introduction} - {\appto\abx@tempa{in}% - \appto\abx@tempb{\clearname{introduction}}} - {\ifnamesequal{editor}{foreword} - {\appto\abx@tempa{fo}% - \appto\abx@tempb{\clearname{foreword}}} - {\ifnamesequal{editor}{afterword} - {\appto\abx@tempa{af}% - \appto\abx@tempb{\clearname{afterword}}} - {}}}% - \ifbibxstring{\abx@tempa} - {\printtext[editortype]{\bibstring{\abx@tempa}}\abx@tempb} - {\usebibmacro{editorstrg}}} - -\newbibmacro*{translatorstrg}{% - \ifboolexpr{ - test {\ifnumgreater{\value{translator}}{1}} - or - test {\ifandothers{translator}} - } - {\bibstring{translators}} - {\bibstring{translator}}} - -\newbibmacro*{translator+othersstrg}{% - \ifboolexpr{ - test {\ifnumgreater{\value{translator}}{1}} - or - test {\ifandothers{translator}} - } - {\def\abx@tempa{translators}} - {\def\abx@tempa{translator}}% - \ifnamesequal{translator}{commentator} - {\appto\abx@tempa{co}% - \clearname{commentator}} - {\ifnamesequal{translator}{annotator} - {\appto\abx@tempa{an}% - \clearname{annotator}} - {}}% - \ifnamesequal{translator}{introduction} - {\appto\abx@tempa{in}% - \clearname{introduction}} - {\ifnamesequal{translator}{foreword} - {\appto\abx@tempa{fo}% - \clearname{foreword}} - {\ifnamesequal{translator}{afterword} - {\appto\abx@tempa{af}% - \clearname{afterword}} - {}}}% - \bibstring{\abx@tempa}} - -\newbibmacro*{byauthor}{% - \ifboolexpr{ - test \ifuseauthor - or - test {\ifnameundef{author}} - } - {} - {\usebibmacro{bytypestrg}{author}{author}% - \setunit{\addspace}% - \printnames[byauthor]{author}}} - -\newbibmacro*{bybookauthor}{% - \ifnamesequal{author}{bookauthor} - {} - {\printnames{bookauthor}}} - -\newbibmacro*{byeditor}{% - \ifnameundef{editor} - {} - {\usebibmacro{bytypestrg}{editor}{editor}% - \setunit{\addspace}% - \printnames[byeditor]{editor}% - \newunit}% - \usebibmacro{byeditorx}} - -\newbibmacro*{byeditorx}{% - \ifnameundef{editora} - {} - {\usebibmacro{bytypestrg}{editora}{editor}% - \setunit{\addspace}% - \printnames[byeditora]{editora}% - \newunit}% - \ifnameundef{editorb} - {} - {\usebibmacro{bytypestrg}{editorb}{editor}% - \setunit{\addspace}% - \printnames[byeditorb]{editorb}% - \newunit}% - \ifnameundef{editorc} - {} - {\usebibmacro{bytypestrg}{editorc}{editor}% - \setunit{\addspace}% - \printnames[byeditorc]{editorc}% - \newunit}} - -\newbibmacro*{bytranslator}{% - \ifnameundef{translator} - {} - {\bibstring{bytranslator}% - \setunit{\addspace}% - \printnames[bytranslator]{translator}}} - -\newbibmacro*{byholder}{% - \printnames{holder}} - -\newbibmacro*{byeditor+others}{% - \ifnameundef{editor} - {} - {\usebibmacro{byeditor+othersstrg}% - \setunit{\addspace}% - \printnames[byeditor]{editor}% - \clearname{editor}% - \newunit}% - \usebibmacro{byeditorx}% - \usebibmacro{bytranslator+others}} - -\newbibmacro*{bytranslator+others}{% - \ifnameundef{translator} - {} - {\usebibmacro{bytranslator+othersstrg}% - \setunit{\addspace}% - \printnames[bytranslator]{translator}% - \clearname{translator}% - \newunit}% - \usebibmacro{withothers}} - -\newbibmacro*{bytypestrg}[2]{% - \iffieldundef{#1type} - {\bibstring{by#2}} - {\ifbibxstring{by\thefield{#1type}} - {\bibstring{by\thefield{#1type}}} - {\printtext{\thefield{#1type}}}}} - -\newbibmacro*{byeditor+othersstrg}{% - \iffieldundef{editortype} - {\def\abx@tempa{byeditor}} - {\edef\abx@tempa{by\thefield{editortype}}}% - \let\abx@tempb=\empty - \ifnamesequal{editor}{translator} - {\appto\abx@tempa{tr}% - \appto\abx@tempb{\clearname{translator}}} - {}% - \ifnamesequal{editor}{commentator} - {\appto\abx@tempa{co}% - \appto\abx@tempb{\clearname{commentator}}} - {\ifnamesequal{editor}{annotator} - {\appto\abx@tempa{an}% - \appto\abx@tempb{\clearname{annotator}}} - {}}% - \ifnamesequal{editor}{introduction} - {\appto\abx@tempa{in}% - \appto\abx@tempb{\clearname{introduction}}} - {\ifnamesequal{editor}{foreword} - {\appto\abx@tempa{fo}% - \appto\abx@tempb{\clearname{foreword}}} - {\ifnamesequal{editor}{afterword} - {\appto\abx@tempa{af}% - \appto\abx@tempb{\clearname{afterword}}} - {}}}% - \ifbibxstring{\abx@tempa} - {\printtext{\bibstring{\abx@tempa}}\abx@tempb} - {\usebibmacro{bytypestrg}{editor}{editor}}} - -\newbibmacro*{bytranslator+othersstrg}{% - \def\abx@tempa{bytranslator}% - \ifnamesequal{translator}{commentator} - {\appto\abx@tempa{co}% - \clearname{commentator}} - {\ifnamesequal{translator}{annotator} - {\appto\abx@tempa{an}% - \clearname{annotator}} - {}}% - \ifnamesequal{translator}{introduction} - {\appto\abx@tempa{in}% - \clearname{introduction}} - {\ifnamesequal{translator}{foreword} - {\appto\abx@tempa{fo}% - \clearname{foreword}} - {\ifnamesequal{translator}{afterword} - {\appto\abx@tempa{af}% - \clearname{afterword}} - {}}}% - \bibstring{\abx@tempa}} - -\newbibmacro*{withcommentator}{% - \ifnameundef{commentator} - {} - {\bibstring{withcommentator}% - \setunit{\addspace}% - \printnames[withcommentator]{commentator}}} - -\newbibmacro*{withannotator}{% - \ifnameundef{annotator} - {} - {\bibstring{withannotator}% - \setunit{\addspace}% - \printnames[withannotator]{annotator}}} - -\newbibmacro*{withintroduction}{% - \ifnameundef{introduction} - {} - {\bibstring{withintroduction}% - \setunit{\addspace}% - \printnames[withintroduction]{introduction}}} - -\newbibmacro*{withforeword}{% - \ifnameundef{foreword} - {} - {\bibstring{withforeword}% - \setunit{\addspace}% - \printnames[withforeword]{foreword}}} - -\newbibmacro*{withafterword}{% - \ifnameundef{afterword} - {} - {\bibstring{withafterword}% - \setunit{\addspace}% - \printnames[withafterword]{afterword}}} - -\newbibmacro*{withothers}{% - \usebibmacro{withcommentator}% - \clearname{commentator}% - \newunit - \usebibmacro{withannotator}% - \clearname{annotator}% - \newunit - \usebibmacro{withintroduction}% - \clearname{introduction}% - \newunit - \usebibmacro{withforeword}% - \clearname{foreword}% - \newunit - \usebibmacro{withafterword}% - \clearname{afterword}} - -\newbibmacro*{title}{% - \ifboolexpr{ - test {\iffieldundef{title}} - and - test {\iffieldundef{subtitle}} - } - {} - {\printtext[title]{% - \printfield[titlecase]{title}% - \setunit{\subtitlepunct}% - \printfield[titlecase]{subtitle}}% - \newunit}% - \printfield{titleaddon}} - -\newbibmacro*{booktitle}{% - \ifboolexpr{ - test {\iffieldundef{booktitle}} - and - test {\iffieldundef{booksubtitle}} - } - {} - {\printtext[booktitle]{% - \printfield[titlecase]{booktitle}% - \setunit{\subtitlepunct}% - \printfield[titlecase]{booksubtitle}}% - \newunit}% - \printfield{booktitleaddon}} - -\newbibmacro*{maintitle}{% - \ifboolexpr{ - test {\iffieldundef{maintitle}} - and - test {\iffieldundef{mainsubtitle}} - } - {} - {\printtext[maintitle]{% - \printfield[titlecase]{maintitle}% - \setunit{\subtitlepunct}% - \printfield[titlecase]{mainsubtitle}}% - \newunit}% - \printfield{maintitleaddon}} - -\newbibmacro*{journal}{% - \iffieldundef{journaltitle} - {} - {\printtext[journaltitle]{% - \printfield[titlecase]{journaltitle}% - \setunit{\subtitlepunct}% - \printfield[titlecase]{journalsubtitle}}}} - -\newbibmacro*{periodical}{% - \iffieldundef{title} - {} - {\printtext[title]{% - \printfield[titlecase]{title}% - \setunit{\subtitlepunct}% - \printfield[titlecase]{subtitle}}}} - -\newbibmacro*{issue}{% - \iffieldundef{issuetitle} - {} - {\printtext[issuetitle]{% - \printfield[titlecase]{issuetitle}% - \setunit{\subtitlepunct}% - \printfield[titlecase]{issuesubtitle}}}} - -\newbibmacro*{in:}{% - \printtext{% - \bibstring{in}\intitlepunct}} - -\newbibmacro*{date}{\printdate} - -\newbibmacro*{url+urldate}{% - \usebibmacro{url}% - \iffieldundef{urlyear} - {} - {\setunit*{\addspace}% - \usebibmacro{urldate}}} - -\newbibmacro*{url}{\printfield{url}} -\newbibmacro*{urldate}{\printurldate} - -\newbibmacro*{pageref}{% - \iflistundef{pageref} - {} - {\printtext[parens]{% - \ifnumgreater{\value{pageref}}{1} - {\bibstring{backrefpages}\ppspace} - {\bibstring{backrefpage}\ppspace}% - \printlist[pageref][-\value{listtotal}]{pageref}}}} - -\newbibmacro*{setpageref}{% - \iflistundef{pageref} - {} - {\printtext{% - \ifnumgreater{\value{pageref}}{1} - {\bibstring{backrefpages}\ppspace} - {\bibstring{backrefpage}\ppspace}% - \printlist[pageref][-\value{listtotal}]{pageref}}}} - -\newbibmacro*{eprint}{% - \iffieldundef{eprinttype} - {\printfield{eprint}} - {\printfield[eprint:\strfield{eprinttype}]{eprint}}} - -\newbibmacro*{annotation}{% - \iffieldundef{annotation} - {\printfile[annotation]{\bibannotationprefix\thefield{entrykey}.tex}} - {\printfield{annotation}}} - -\newbibmacro*{abstract}{% - \iffieldundef{abstract} - {\printfile[abstract]{\bibabstractprefix\thefield{entrykey}.tex}} - {\printfield{abstract}}} - -\newbibmacro*{related:default}[1]{% - \entrydata*{#1}{% - \usedriver - {\ifnameundef{savedauthor} - {\ifnameundef{savededitor} - {} - {\ifnamesequal{editor}{savededitor} - {\clearname{editor}} - {}}} - {\ifnamesequal{author}{savedauthor} - {\clearname{author}} - {}}% - \renewbibmacro*{related:init}{}% - \DeclareNameAlias{sortname}{default}% - \ifbibmacroundef{date+extrayear} - {} - {\renewbibmacro*{date+extrayear}{}% - \renewbibmacro*{date}{\printdate}}% - \renewbibmacro*{pageref}{}} - {\thefield{entrytype}}}} - -\newbibmacro*{related:bytranslator}[1]{% - \entrydata{#1}{% - \renewbibmacro*{name:hook}[1]{% - \ifnumequal{\value{listcount}}{1} - {\begingroup - \mkrelatedstring% - \lbx@initnamehook{#1}% - \endgroup} - {}}% - \printnames[bytranslator]{translator}% - \setunit*{\addspace\bibstring[\mkrelatedstring]{astitle}\space}% - \usebibmacro{title}% - \setunit{\addspace}% - \printtext[parens]{% - \printlist{location}% - \iflistundef{publisher} - {\setunit*{\addcomma\space}} - {\setunit*{\addcolon\space}}% - \printlist{publisher}% - \setunit*{\addcomma\space}% - \printdate}}} - -\newbibmacro*{related:multivolume}[1]{% - \entrydata*{#1}{% - \printtext{% - \printfield{volume}% - \printfield{part}}% - \setunit*{\addcolon\space}% - \usebibmacro{title}% - \ifboolexpr{ - test {\ifnamesequal{author}{savedauthor}} - or - test {\ifnameundef{author}} - } - {} - {\usebibmacro{bytypestrg}{author}{author}% - \setunit{\addspace}% - \printnames[byauthor]{author} - \newunit\newblock}% - \ifboolexpr{ - test {\ifnamesequal{editor}{savededitor}} - or - test {\ifnameundef{editor}} - } - {} - {\usebibmacro{byeditor+others}% - \newunit\newblock}% - \printdate}} - -\newbibmacro*{related:origpubin}[1]{% - \entrydata*{#1}{% - \printfield{year}% - \ifboolexpr{ - test {\iflistsequal{publisher}{savedpublisher}} - or - test {\iflistundef{publisher}} - } - {} - {\setunit{\addspace\bibstring[\mkrelatedstring]{bypublisher}\space}% - \printlist{publisher}% - \setunit{\addcomma\space}% - \iflistsequal{location}{savedlocation} - {} - {\printlist{location}}}}} - -\newbibmacro*{related:origpubas}[1]{% - \entrydata*{#1}{% - \usebibmacro{title}% - \ifboolexpr{ - test {\iflistsequal{publisher}{savedpublisher}} - or - test {\iflistundef{publisher}} - } - {} - {\setunit{\addspace\bibstring[\mkrelatedstring]{bypublisher}\space}% - \printlist{publisher}% - \setunit{\addcomma\space}% - \iflistsequal{location}{savedlocation} - {} - {\printlist{location}}}}} - -\DeclareFieldFormat{title:hook}{% - \begingroup - \mkrelatedstring% - \lbx@inittitlehook{#1}% - \endgroup - \mkbibemph{#1}} - -\newbibmacro*{related:reprintfrom}[1]{% - \entrydata*{#1}{% - \iffieldundef{journaltitle} - {\iffieldundef{maintitle} - {\printfield[title:hook]{booktitle}} - {\printfield[title:hook]{maintitle}}% - \newunit\newblock - \usebibmacro{byeditor+others}% - \newunit\newblock - \printfield{edition}% - \newunit - \iffieldundef{volume} - {} - {\printfield{volume}% - \printfield{part}} - \newunit\newblock - \usebibmacro{series+number}% - \newunit\newblock - \printfield{note}% - \newunit\newblock - \usebibmacro{publisher+location+date}% - \newunit\newblock - \usebibmacro{chapter+pages}} - {\printfield[title:hook]{journaltitle}% - \newunit\newblock - \usebibmacro{byeditor+others}% - \newunit\newblock - \usebibmacro{note+pages}}}} - -\endinput diff --git a/Master/texmf-dist/tex/latex/biblatex/biblatex_legacy.sty b/Master/texmf-dist/tex/latex/biblatex/biblatex_legacy.sty deleted file mode 100644 index 11c339aef93..00000000000 --- a/Master/texmf-dist/tex/latex/biblatex/biblatex_legacy.sty +++ /dev/null @@ -1,10608 +0,0 @@ -% $Id: biblatex.sty,v 1.7 2011/11/13 19:09:07 lehman stable $ - -% Copyright (c) 2006-2011 Philipp Lehman. -% 2012-2016 Philip Kime, Audrey Boruvka, Joseph Wright -% Permission is granted to copy, distribute and/or modify this -% software under the terms of the LaTeX Project Public License -% (LPPL), version 1.3. -% -% The LPPL maintenance status of this software is -% 'author-maintained'. -% -% This software is provided 'as is', without warranty of any kind, -% either expressed or implied, including, but not limited to, the -% implied warranties of merchantability and fitness for a -% particular purpose. - -\NeedsTeXFormat{LaTeX2e}[2005/12/01] -\ProvidesPackage{biblatex_legacy} -[\abx@date\space v\abx@version\space programmable bibliographies (bibtex) (PK/JW/AB)] - -%% Dependencies - -\RequirePackage{etoolbox} -\RequirePackage{keyval} -\RequirePackage{logreq} -\RequirePackage{ifthen} -\RequirePackage{url} - -\@ifpackagelater{etoolbox}{2010/11/29} - {} - {\PackageError{biblatex} - {Outdated 'etoolbox' package} - {Upgrade to etoolbox v2.1 (2010/11/29) or later.\MessageBreak - I found: '\csuse{ver@etoolbox.sty}'.\MessageBreak - This is a fatal error. I'm aborting now.}% - \endinput} - -%% Category codes - -\def\blx@docatcodes{% - \do\=\do\<\do\>\do\-\do\"\do\'\do\`\do\.% - \do\,\do\;\do\:\do\!\do\?\do\/} -\def\do#1{\catcode\number`#1=\the\catcode`#1\relax} -\edef\blx@catcodes{\blx@docatcodes\do\^\do\~\do\&\do\|} -\let\do\noexpand - -\def\blx@saneccodes{% - \catcode`\~=\active - \let\do\@makeother - \blx@docatcodes - \let\do\noexpand} - -\blx@saneccodes -\catcode`\&=3 -\catcode`\|=3 -\catcode`\^=7 -\def\blx@nl{^^J} - -%% Compatibility - -\AtEndPreamble{% - \def\do#1{% - \@ifpackageloaded{#1} - {\blx@error - {Incompatible package '#1'} - {The '#1' package and biblatex are incompatible}} - {}}% - \docsvlist{% - amsrefs,apacite,babelbib,backref,bibtopic,bibunits,chapterbib, - cite,citeref,drftcite,footbib,inlinebib,jurabib,mcite,mciteplus, - mlbib,multibbl,multibib,natbib,opcit,overcite,splitbib,ucs}% - \def\blx@langstrings{}% - % Set up sortlocale defaults - \ifdefstring\blx@sortlocale{auto} - {\ifdef\bbl@main@language% babel or polyglossia is loaded - {\edef\blx@sortlocale{\bbl@main@language}} - {\def\blx@sortlocale{english}}} - {}% - \@ifpackageloaded{polyglossia} - {\ifboolexpr{ - not test {\iftoggle{blx@autolangbib}} - and - not test {\iftoggle{blx@autolangcite}}} - {\blx@mknoautolang} - {\blx@mkautolangpoly}} - {\@ifpackageloaded{babel} - {\ifboolexpr{ - not test {\iftoggle{blx@autolangbib}} - and - not test {\iftoggle{blx@autolangcite}}} - {\blx@mknoautolang} - {\blx@mkautolangbabel}} - {\blx@mknoautolang}}% - % These already have defaults set to basically do nothing - % so if the toggles are true, we need to define again since - % mkautolang* redefines \blx@beglang - % In turn, \blx@beglang defines \blx@endlang and so \blx@beglangcite and - % \blx@endlangcite need redefining inside \blx@beglang after \blx@endlang - % has been defined. - \iftoggle{blx@autolangbib} - {\let\blx@beglangbib\blx@beglang} - {}% - \iftoggle{blx@autolangcite} - {\let\blx@beglangcite\blx@beglang} - {}% - \csuse{abx@extras@\blx@languagename}% - \csuse{abx@strings@\blx@languagename}% - \undef\blx@mkautolangbabel - \undef\blx@mkautolangpoly - \undef\blx@mknoautolang - \ifnum\blx@hyperref=\z@ - \blx@mknohyperref - \else - \@ifpackageloaded{hyperref} - {\blx@mkhyperref} - {\ifnum\blx@hyperref=\@ne - \blx@warning@noline{% - Missing 'hyperref' package.\MessageBreak - Setting hyperref=false}% - \fi - \blx@mknohyperref}% - \fi - \providecommand*{\nolinkurl}{\url}% - \undef\blx@mkhyperref - \undef\blx@mknohyperref - \ifundef\TE@hook - {\let\TE@hook\@empty - \toggletrue{blx@tempa}% - \def\do#1{% - \patchcmd#1% - {\let\isundefined\TE@undef} - {\let\isundefined\TE@undef\TE@hook} - {\togglefalse{blx@tempa}\listbreak} - {}}% - \docsvlist{% - \ifthenelse,% ifthen - \org@ifthenelse,% babel - \HyOrg@ifthenelse,% hyperref - \NROrg@ifthenelse}% nameref - \iftoggle{blx@tempa} - {\blx@err@patch{'ifthen' package}} - {}} - {}% - \appto\TE@hook{\blx@TE@hook}% - \toggletrue{blx@tempa}% - \def\do#1{% - \patchcmd#1% - {\color@begingroup} - {\color@begingroup\toggletrue{blx@footnote}} - {\togglefalse{blx@tempa}\listbreak} - {}}% - \docsvlist{% - \@footnotetext,% latex - \H@@footnotetext,% hyperref - \V@@footnotetext,% fancyvrb - \scr@saved@footnotetext,% koma-script 3.x - \l@dold@footnotetext,% ledmac - \l@doldold@footnotetext,% ledmac - \@fntORI}% frenchle - \iftoggle{blx@tempa}% ams classes - {\patchcmd\@footnotetext - {\@makefntext} - {\toggletrue{blx@footnote}\@makefntext} - {\togglefalse{blx@tempa}} - {}} - {}% - \@ifclassloaded{memoir} - {\def\do#1{% - \patchcmd#1% - {\color@begingroup} - {\color@begingroup\toggletrue{blx@footnote}} - {} - {}}% - \docsvlist{% - \m@mold@footnotetext,% - \@plainfootnotetext,% - \@twocolfootnotetext,% - \@threecolfootnotetext,% - \@parafootnotetext}% - \def\do#1{% - \patchcmd#1% - {\color@begingroup\@makefntext} - {\color@begingroup\toggletrue{blx@footnote}\@makefntext} - {} - {}}% - \docsvlist{% - \@footnotetext,% patch twice - \H@@footnotetext,% patch twice - \@plainfootnotetext}} - {}% - \iftoggle{blx@tempa} - {\blx@warning@noline{% - Patching footnotes failed.\MessageBreak - Footnote detection will not work}} - {}% - \@ifpackageloaded{endnotes} - {\patchcmd\theendnotes - {\enoteformat} - {\toggletrue{blx@footnote}\enoteformat} - {} - {\blx@err@patch{'endnotes' package}}} - {}% - \@ifpackageloaded{bigfoot} - {\apptocmd\@makefnstartbox - {\toggletrue{blx@footnote}} - {} - {\blx@err@patch{'bigfoot' package}}} - {}% - \@ifpackageloaded{showkeys} - {\ifdef\SK@ - {\AtEveryBibitem{\SK@\SK@@label{\thefield{entrykey}}}% - \AtEveryLositem{\SK@\SK@@label{\thefield{entrykey}}}% - \ifundef\SK@cite % = 'notcite' disabled - {\AtEveryCitekey{\SK@\SK@@ref{\thefield{entrykey}}}} - {}} - {}} - {}% - \apptocmd\@floatboxreset - {\boolfalse{citetracker}% - \boolfalse{pagetracker}} - {} - {\blx@err@patch{floats}}% - \ifdef\TX@endtabularx % tabularx/memoir - {\pretocmd\TX@endtabularx - {\addtocounter{tabx@nest}{1}}% track nestes tabularx environments - {} - {\blx@err@patch{'tabularx'}}% - % no need to conditionalise on top-level tabx as the search/replace - % will only match once anyway - \patchcmd\TX@endtabularx - {\edef\TX@ckpt{\cl@@ckpt}} - {\edef\TX@ckpt{\cl@@ckpt\abx@resttrackers}% - \abx@savetrackers} - {} - {\blx@err@patch{'tabularx'}}% - \apptocmd\TX@endtabularx - {\ifnum\value{tabx@nest}=1% only clear trackers for top-level tabularx - \abx@cleartrackers - \fi - \addtocounter{tabx@nest}{-1}} - {} - {\blx@err@patch{'tabularx'}}} - {}% - \@ifpackageloaded{csquotes} - {\@ifpackagelater{csquotes}{2009/05/30} - {} - {\blx@error - {Outdated 'csquotes' package} - {Upgrade to csquotes v4.4 (2009/05/30) or later.\MessageBreak - I found: '\csuse{ver@csquotes.sty}'}}% - \BlockquoteDisable{\let\blx@thecheckpunct\@gobble}% - \@ifpackagelater{csquotes}{2009/08/27} - {\appto\@blockquote@prehook{\abx@savetrackers}% - \appto\@blockquote@posthook{\abx@resttrackers\abx@cleartrackers}} - {}% - \@ifpackagelater{csquotes}{2010/06/09} - {} - {\newcommand*{\@quotereset}{}\newcount\@quotereset}} - {\@ifpackageloaded{babel} - {\blx@warning@noline{% - 'babel/polyglossia' detected but 'csquotes' missing.\MessageBreak - Loading 'csquotes' recommended}} - {}% - \newcommand*{\@quotelevel}{}% - \newcount\@quotelevel - \newcommand*{\@quotereset}{}% - \newcount\@quotereset - \newcommand*{\@setquotesfcodes}{}% - \let\@setquotesfcodes\relax - \newrobustcmd*{\initoquote}{\@quotelevel\@ne}% - \newrobustcmd*{\initiquote}{\@quotelevel\tw@}% - \newrobustcmd*{\textooquote}{``}% - \newrobustcmd*{\textcoquote}{''}% - \newrobustcmd*{\textoiquote}{`\relax}% block ligs - \newrobustcmd*{\textciquote}{'\relax}% block ligs - \newrobustcmd*{\enquote}{\@ifstar\blx@enquote@ii\blx@enquote}% - \def\blx@enquote{% - \ifnum\@quotelevel>\z@ - \expandafter\blx@enquote@ii - \else - \expandafter\blx@enquote@i - \fi}% - \long\def\blx@enquote@i#1{% - \begingroup\initoquote - \textooquote#1\textcoquote - \endgroup}% - \long\def\blx@enquote@ii#1{% - \begingroup\initiquote - \textoiquote#1\textciquote - \endgroup}% - \appto\blx@setsfcodes{% - \sfcode`\`=\z@ - \sfcode`\'=\z@}}% - \let\do\noexpand} - -\begingroup -\@makeother\# -% \relax: gobble newline -> titletoc.sty -\AtEndPreamble{% - \addtocontents{toc}{% - \boolfalse{citerequest}% - \boolfalse{citetracker}% - \boolfalse{pagetracker}% - \boolfalse{backtracker}\relax}% - \addtocontents{lof}{% - \boolfalse{citerequest}% - \boolfalse{citetracker}% - \boolfalse{pagetracker}% - \boolfalse{backtracker}\relax}% - \addtocontents{lot}{% - \boolfalse{citerequest}% - \boolfalse{citetracker}% - \boolfalse{pagetracker}% - \boolfalse{backtracker}\relax}% - \patchcmd\addtocontents - {\string\@writefile} - {\string\@writefile{#1}{\defcounter{refsection}{\the\c@refsection}\relax}% - \string\@writefile} - {} - {\blx@err@patch{\string\addtocontents}}} -\endgroup - -% trick hyperref into believing we're natbib -\let\NAT@parse\@empty -% trick showkeys into believing we're havard -\let\HAR@checkdef\@empty - -%% Allocation - -\providecommand{\@gobblefive}[5]{} - -% Counter to track nested tabularx environemnts so we don't -% try to patch the commands more than once below as this undefs some -% macros and an error is thrown -\newcounter{tabx@nest} -\setcounter{tabx@nest}{0} - -\newcounter{listtotal} -\def\thelisttotal{\the\c@listtotal} -\newcounter{listcount} -\def\thelistcount{\the\c@listcount} -\newcounter{liststart} -\def\theliststart{\the\c@liststart} -\newcounter{liststop} -\def\theliststop{\the\c@liststop} -\newcounter{citecount} -\def\thecitecount{\the\c@citecount} -\newcounter{citetotal} -\def\thecitetotal{\the\c@citetotal} -\newcounter{multicitecount} -\def\themulticitecount{\the\c@multicitecount} -\newcounter{multicitetotal} -\def\themulticitetotal{\the\c@multicitetotal} -\newcounter{instcount} -\def\theinstcount{\the\c@instcount} -\newcounter{maxnames} -\def\themaxnames{\the\c@maxnames} -\newcounter{minnames} -\def\theminnames{\the\c@minnames} -\newcounter{maxitems} -\def\themaxitems{\the\c@maxitems} -\newcounter{minitems} -\def\theminitems{\the\c@minitems} -\newcounter{citecounter} -\def\thecitecount{\the\c@citecounter} -\newcounter{savedcitecounter} -\def\thecitecount{\the\c@savedcitecounter} -\newcounter{uniquelist} -\def\theuniquelist{\the\c@uniquelist} -\newcounter{uniquename} -\def\theuniquename{\the\c@uniquename} -\newcounter{refsection} -\def\therefsection{\the\c@refsection} -\newcounter{refsegment} -\def\therefsegment{\the\c@refsegment} -\newcounter{maxextrayear} -\def\themaxextrayear{\the\c@maxextrayear} -\newcounter{maxextraalpha} -\def\themaxextraalpha{\the\c@maxextraalpha} -\newcounter{abbrvpenalty} -\def\theabbrvpenalty{\the\c@abbrvpenalty} -\newcounter{highnamepenalty} -\def\thehighnamepenalty{\the\c@highnamepenalty} -\newcounter{lownamepenalty} -\def\thelownamepenalty{\the\c@lownamepenalty} -\newcounter{maxparens} -\def\themaxparens{\the\c@maxparens} -\newcounter{parenlevel} -\def\theparenlevel{\the\c@parenlevel} - -\newcount\blx@tempcnta -\newcount\blx@tempcntb -\newcount\blx@tempcntc -\newcount\blx@maxsection -\newcount\blx@maxsegment -\newcount\blx@notetype -\newcount\blx@parenlevel@text -\newcount\blx@parenlevel@foot - -\def\blx@backend{0} -\def\blx@uniquename{0} -\def\blx@uniquelist{0} -\def\blx@maxbibnames{0} -\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} -\newlength{\shorthandwidth} -\newlength{\biblabelsep} -\ifdef\bibitemsep % memoir - {} - {\newlength{\bibitemsep}} -\newlength{\bibnamesep} -\newlength{\bibinitsep} -\newlength{\bibparsep} -\newlength{\bibhang} - -\newbool{citetracker} -\newbool{pagetracker} -\newbool{backtracker} -\newbool{citerequest} -\booltrue{citerequest} - -\newtoggle{blx@tempa} -\newtoggle{blx@tempb} -\newtoggle{blx@runltx} -\newtoggle{blx@runbtx} -\newtoggle{blx@block} -\newtoggle{blx@unit} -\newtoggle{blx@skipentry} -\newtoggle{blx@insert} -\newtoggle{blx@lastins} -\newtoggle{blx@keepunit} -\newtoggle{blx@debug} -\newtoggle{blx@sortcase} -\newtoggle{blx@sortupper} -\newtoggle{blx@autolangbib} -\newtoggle{blx@autolangcite} -\newtoggle{blx@clearlang} -\newtoggle{blx@defernumbers} -\newtoggle{blx@omitnumbers} -\newtoggle{blx@footnote} -\newtoggle{blx@labelalpha} -\newtoggle{blx@labelnumber} -\newtoggle{blx@labeldate} -\newtoggle{blx@natbib} -\newtoggle{blx@mcite} -\newtoggle{blx@loadfiles} -\newtoggle{blx@singletitle} -\newtoggle{blx@terseinits} -\newtoggle{blx@giveninits} -\newtoggle{blx@useauthor} -\newtoggle{blx@useeditor} -\newtoggle{blx@usetranslator} -\newtoggle{blx@useprefix} -\newtoggle{blx@addset} -\newtoggle{blx@setonly} -\newtoggle{blx@dataonly} -\newtoggle{blx@skipbib} -\newtoggle{blx@skipbiblist} -\newtoggle{blx@skiplab} -\newtoggle{blx@citation} -\newtoggle{blx@bibliography} -\newtoggle{blx@reencode} -\newtoggle{blx@citeindex} -\newtoggle{blx@bibindex} - -\newread\blx@auxin -\newwrite\blx@auxout - -\def\blx@onlypreamble#1{% - \gappto\blx@dopreamblecmds{\do#1}} - -\def\blx@dopreamblecmds{% - \do\blx@dopreamblecmds - \do\blx@onlypreamble} - -%% Initialization - -\def\blx@blxinit{% - \let\blx@blxinit\relax - \blx@initunit} - -\edef\blx@auxfile@bibtex{\jobname} -\let\blx@auxout@bibtex\@mainaux -\newcommand*{\labelalphaothers}{+} -\newcommand*{\sortalphaothers}{\labelalphaothers} -\newcommand*{\blxauxsuffix}{-blx} - -\begingroup -\def\blx@tempa#1"#2{% - #1\ifx#2\@empty\else - \expandafter\blx@tempa - \fi#2} -\edef\blx@ctrlfile@bibtex{% - \noexpand\blx@tempa - \expandafter\blx@tempa\jobname"\@empty - \space\noexpand\@empty} -\def\blx@tempa#1 #2{% - #1\ifx#2\@empty\else - \string_\expandafter\blx@tempa - \fi#2} -\xdef\blx@ctrlfile@bibtex{\blx@ctrlfile@bibtex} -\endgroup - -\def\blx@secinit{% - \ifcsundef{blx@sort@\the\c@refsection} - {\global\cslet{blx@sort@\the\c@refsection}\@empty} - {}% - \ifcsundef{blx@sbib@\the\c@refsection} - {\global\cslet{blx@sbib@\the\c@refsection}\@empty} - {}% - \ifcsundef{blx@bsee@\the\c@refsection} - {\global\cslet{blx@bsee@\the\c@refsection}\@empty} - {}% - \ifcsundef{blx@fsee@\the\c@refsection} - {\global\cslet{blx@fsee@\the\c@refsection}\@empty} - {}% - \ifcsundef{blx@losh@\the\c@refsection} - {\global\cslet{blx@losh@\the\c@refsection}\@empty} - {}% - \blx@ibidreset@force - \blx@idemreset@force - \blx@opcitreset@force - \blx@loccitreset@force - \ifcsundef{blx@segm@\the\c@refsection @\the\c@refsegment} - {\global\cslet{blx@segm@\the\c@refsection @\the\c@refsegment}\@empty} - {}} - -%% Auxiliary commands - -\protected\def\blx@safe@actives{% - \let\blx@if@safe@actives\if@safe@actives - \let\if@safe@actives\iftrue} - -\protected\def\blx@rest@actives{% - \let\if@safe@actives\blx@if@safe@actives} - -\protected\def\blx@regimc#1{% - \xappto\blx@blxinit{% - \let\noexpand#1\expandafter\noexpand\csname - blx@imc@\expandafter\@gobble\string#1\endcsname}} - -\protected\def\blx@regimcs#1{\blx@regimcs@i#1&} -\def\blx@regimcs@i#1{% - \ifx#1&\else - \blx@regimc#1% - \expandafter\blx@regimcs@i - \fi} - -% {<field>} => \do{<item1>}\do{<item2>}... - -\def\blx@imc@docsvfield#1{% - \blx@imc@iffieldundef{#1} - {} - {\expandafter\expandafter\expandafter\docsvlist - \expandafter\expandafter\expandafter{% - \csname abx@field@#1\endcsname}}} - -% {<handler>}{<field>} => <handler>{<item1>}<handler>{<item2>}... - -\def\blx@imc@forcsvfield#1#2{% - \blx@imc@iffieldundef{#2} - {} - {\expandafter\expandafter\expandafter\blx@imc@forcsvfield@i - \expandafter\expandafter\expandafter{% - \csname abx@field@#2\endcsname}{#1}}} - -\def\blx@imc@forcsvfield@i#1#2{\forcsvlist{#2}{#1}} - -\blx@regimcs{\docsvfield \forcsvfield} - -% {<list>|<listmacro>} - -\protected\long\def\blx@listloop#1{% - \expandafter\blx@listloop@i#1|&} -\long\def\blx@listloop@i#1|{% - \ifblank{#1} - {\blx@break} - {\blx@do{#1}\blx@listloop@i}} - -\long\def\blx@break#1&{% - \blx@done - \undef\blx@do - \undef\blx@done} - -% {<listmacro>}{<listcsname>} => matches in <listmacro> - -\protected\def\blx@filter#1#2{% - \def\do##1{% - \ifinlistcs{##1}{#2} - {\listadd#1{##1}} - {}}% - \blx@runfilter#1} - -% {<listmacro>}{<listcsname>} => matches in <listmacro> -% Slightly odd use of filtering to do citation sorting. -% Same as blx@filter but it keeps \tempcnta in step with the -% resulting number of things in the filtered list. This is -% because \tempcnta is used to set citetotal - this use -% of filtering for cite sorting has the side-effect of stripping -% duplicated like \cite{foo,foo} but we need then to keep citetotal -% in sync. - -\protected\def\blx@filtercitesort#1#2{% - \blx@tempcnta\z@ - \def\do##1{% - \ifinlistcs{##1}{#2} - {\listadd#1{##1}% - \advance\blx@tempcnta\@ne} - {}}% - \blx@runfilter#1} - -% {<listmacro>}{<listcsname>} => neg. matches in <listmacro> - -\protected\def\blx@notfilter#1#2{% - \def\do##1{% - \ifinlistcs{##1}{#2} - {} - {\listadd#1{##1}}}% - \blx@runfilter#1} - -\def\blx@runfilter#1{% - \begingroup\edef#1{\endgroup - \unexpanded{\let#1\@empty\dolistloop}{#1}}% - #1\let\do\noexpand} - -% {<code>}{<string>} => <code>{<string>} - -\protected\def\blx@xsanitizeafter#1#2{% - \begingroup - \abx@hook@xsanitize - \def\blx@tempa{\endgroup#1}% - \edef\blx@tempb{#2}% - \expandafter\blx@tempa - \expandafter{\detokenize\expandafter{\blx@tempb}}} - -\def\abx@hook@xsanitize{% - \blx@safe@actives - \let\protect\string} - -% {<code>}{<string>} => <code>{<string>} - -\begingroup -\catcode`\<=\active -\catcode`\>=\active -\catcode`\&=\active -\catcode`\"=\active -\catcode`\'=\active -\protected\gdef\blx@xmlsanitizeafter#1#2{% - \begingroup - \abx@hook@xsanitize - \def\blx@tempa{\endgroup#1}% - \edef\blx@tempb{#2}% - \let\do\@makeother - \dospecials - \catcode`\<=\active - \catcode`\>=\active - \catcode`\&=\active - \catcode`\"=\active - \catcode`\'=\active - \edef<{\string<\string;}% - \edef>{\string>\string;}% - \edef&{\string&\string;}% - \edef"{\string"\string;}% - \edef'{\string&apos\string;}% - \endlinechar\m@ne - \everyeof{\noexpand}% - \edef\blx@tempb{\scantokens\expandafter{\blx@tempb}}% - \expandafter\blx@tempa - \expandafter{\detokenize\expandafter{\blx@tempb}}} -\endgroup - -% {<file>}{<message>}{<preload>}{<postload>}{<success>}{<failure>} - -\protected\long\def\blx@inputonce#1#2#3#4#5#6{% - \ifcsundef{blx@file@#1} - {\blx@info@noline{Trying to load #2..}% - \IfFileExists{#1} - {\blx@info@noline{... file '#1' found}% - \listxadd\blx@list@req@stat{#1}% - #3\@@input\@filef@und#4#5} - {\blx@info@noline{... file '#1' not found}#6}% - \global\csdef{blx@file@#1}{}% - \@addtofilelist{#1}} - {#5}} - -% {<write>}{<precode>}{<string>} - -\protected\def\blx@auxwrite#1#2#3{% - \if@filesw - \begingroup - \blx@safe@actives - \let\protect\string - #2% - \immediate\write#1{#3}% - \endgroup - \fi} - -\def\blx@auxinit@bibtex#1{% - \blx@auxwrite\blx@auxout@bibtex - {\def\do##1{,\blx@stripbib{##1}}} - {\ifx\blx@auxout@bibtex\@mainaux - \else - \blx@msg@aux - \fi - \string\bibstyle{biblatex}\blx@nl - \string\bibdata{% - \blx@ctrlfile@bibtex\blxauxsuffix - \ifx#1\@empty - \else - \dolistloop#1% - \fi}\blx@nl - \string\citation{biblatex-control}}} - -% {<file>}{<signature>}{<true>}{<false>} - -\def\blx@ifsigned#1#2{% - \begingroup - \let\blx@tempa\@firstoftwo - \edef\blx@tempb{\csuse{blx@sig@#2}}% - \edef\blx@tempb{\detokenize\expandafter{\blx@tempb}}% - \openin\blx@auxin #1.#2\relax - \ifeof\blx@auxin - \else - \endlinechar\m@ne - \readline\blx@auxin to \blx@tempc - \ifeof\blx@auxin - \else - \ifx\blx@tempb\blx@tempc - \readline\blx@auxin to \blx@tempc - \edef\blx@tempb{\csuse{blx@ver@#2}}% - \edef\blx@tempb{\detokenize\expandafter{\blx@tempb}}% - \ifx\blx@tempb\blx@tempc - \else - \blx@warning@noline{% - File '#1.#2' created by wrong version} - \fi - \else - \blx@error - {File '#1.#2' not created by biblatex} - {This file was apparently not created by biblatex. - Rename it or\MessageBreak move it to a location were - TeX will not find it. If this error\MessageBreak - persists, consider redefining \string\blxauxsuffix.% - See the biblatex\MessageBreak manual for details}% - \let\blx@tempa\@secondoftwo - \fi - \fi - \fi - \closein\blx@auxin - \expandafter\endgroup\blx@tempa} - -\def\blx@sig@bib{@Comment{$ biblatex control file $}} -\edef\blx@ver@bib{@Comment{$ biblatex version \blx@bblversion\space $}} -\edef\blx@sig@aux{\@percentchar\space $ biblatex auxiliary file $} -\edef\blx@ver@aux{\@percentchar\space$ biblatex version \blx@bblversion\space $} -\let\blx@sig@bbl\blx@sig@aux -\let\blx@ver@bbl\blx@ver@aux -\edef\blx@sig@bcf{\detokenize{<?xml version="1.0" encoding="UTF-8"?>}} -\edef\blx@ver@bcf{% - \detokenize{<bcf:controlfile version="}\blx@bblversion - \detokenize{" xmlns:bcf="https://sourceforge.net/projects/biblatex">}} - -\edef\blx@msg@aux{% - \blx@sig@aux\blx@nl - \blx@ver@aux\blx@nl - \@percentchar\space Do not modify this file!\blx@nl - \@percentchar\blx@nl - \@percentchar\space This is an auxiliary file - used by the 'biblatex' package.\blx@nl - \@percentchar\space This file may safely be deleted. - It will be recreated as\blx@nl - \@percentchar\space required.\blx@nl - \@percentchar\blx@nl\string\relax\blx@nl} -\edef\blx@msg@bib{% - \blx@sig@bib\blx@nl - \blx@ver@bib\blx@nl - Do not modify this file!\blx@nl\blx@nl - This is an auxiliary file used - by the 'biblatex' package.\blx@nl - This file may safely be deleted. - It will be recreated as\blx@nl - required.\blx@nl\blx@nl} - -% {<true>}{<false>} - -\newrobustcmd*{\lbx@ifutfinput}{\ifboolexpr{% - test {\ifdefstring\inputencodingname{utf8}} - or - test {\ifdefstring\inputencodingname{utf8x}} - or - test {\ifdefstring\inputencodingname{lutf8}} - or - ( test {\ifundef\inputencodingname} - and - ( not test {\ifundef\XeTeXrevision} - or - not test {\ifundef\luatexversion} - ) - ) -}} - -%% User feedback - -\protected\def\blx@error#1#2{% - \begingroup - \blx@safe@actives - \PackageError{biblatex}{#1}{#2.}% - \endgroup} - -\protected\def\blx@warning@noline#1{% - \begingroup - \blx@safe@actives - \PackageWarningNoLine{biblatex}{#1}% - \endgroup} -\let\blx@warning\blx@warning@noline -\AtEndOfPackage{ - \protected\def\blx@warning#1{% - \begingroup - \blx@safe@actives - \PackageWarning{biblatex}{#1}% - \endgroup}} - -\protected\def\blx@warning@entry#1{% - \ifdef\abx@field@entrykey - {\blx@warning{#1\MessageBreak at entry '\abx@field@entrykey'}} - {\blx@warning{#1}}} - -\protected\def\blx@info@noline#1{% - \begingroup - \blx@safe@actives - \PackageInfo{biblatex}{#1\@gobble}% - \endgroup} -\let\blx@info\blx@info@noline -\AtEndOfPackage{ - \protected\def\blx@info#1{% - \begingroup - \blx@safe@actives - \PackageInfo{biblatex}{#1}% - \endgroup}} - -\let\blx@noline\@gobble -\AtEndOfPackage{\let\blx@noline\@empty} -\def\blx@imc@BibliographyWarning{\blx@warning@entry} -\blx@regimc\BibliographyWarning - -\protected\def\abx@missing#1{% - \mbox{\reset@font\bfseries#1}} - -\def\blx@err@patch#1{% - \blx@error - {Patching #1 failed} - {This is an internal issue typically caused by a - conflict\MessageBreak between biblatex and some - other package. Modifying\MessageBreak the package - loading order may fix the problem}} - -\def\blx@err@nolang#1{% - \blx@error - {Language '#1' not found} - {The localization module for '#1' could not be found}} - -\def\blx@err@invarg#1#2{% - \blx@error - {Argument '#1' invalid} - {\ifblank{#2} - {The argument you have supplied is invalid.\MessageBreak - See the biblatex manual for details} - {#2}}} - -\def\blx@err@invopt#1#2{% - \blx@error - {Option '#1' invalid} - {\ifblank{#2} - {The option you have supplied is invalid.\MessageBreak - See the biblatex manual for valid option keys and - possible values} - {#2}}} - -\def\blx@err@confopt#1#2{% - \blx@error - {Conflicting options\ifblank{#1}{}{ (#1)}} - {\ifblank{#2} - {The option you have supplied conflicts with another one.\MessageBreak - See the biblatex manual for valid option keys and possible values} - {#2}}} - -\def\blx@err@optdef#1{% - \blx@error - {Conflicting options} - {The option '#1' is already defined}} - -\def\blx@err@nodocdiv#1{% - \blx@error - {\@backslashchar#1 not provided by class} - {The document class does not seems to support #1s}} - -\def\blx@err@nosec#1{% - \blx@error - {Section '#1' not found} - {The reference section '#1' could not be found}} - -\def\blx@err@secfirst{% - \blx@error - {'section' not first filter} - {When passing multiple filter options, - the 'section' filter must be given first}} - -\protected\def\blx@err@nestcite{% - \blx@error - {Nested citation command} - {Citation commands may not be nested}} - -\def\blx@err@nestenv#1{% - \blx@error - {Nested '#1' environment} - {This environment may not be nested}} - -\protected\def\blx@err@citecmd#1{% - \begingroup - \escapechar\m@ne - \blx@error - {Command '\@backslashchar\string#1' undefined} - {The citation command '\@backslashchar\string#1' - has not been defined\MessageBreak by the - selected citation style}% - \endgroup} - -\def\blx@err@endnote#1{% - \blx@error - {Missing or incomplete endnote support} - {There does not seem to be endnote support available\MessageBreak - or the available support is incomplete.\MessageBreak - If you continue, I will fall back to '\string#1'}% - #1} - -\def\blx@err@matchparen#1{% - \blx@error - {Unbalanced parentheses or brackets} - {\iftoggle{blx@footnote}{#1 in foot or endnote}{#1}.\MessageBreak - This error is triggered if \string\bibopenparen\space and - \string\bibcloseparen\MessageBreak or - \string\bibopenbracket\space and \string\bibclosebracket\space - are unbalanced\MessageBreak or mismatched}} - -\def\blx@err@nestparen#1{% - \blx@error - {Too deeply nested parentheses or brackets} - {#1 nested too deeply% - \iftoggle{blx@footnote}{\space in foot or endnote}{}.\MessageBreak - This error may also be triggered if \string\mkbibparens\MessageBreak - or \string\mkbibbrackets\space are nested too deeply}} - -\def\blx@err@filter{% - \blx@error - {Invalid filter expression} - {The filter expression you have supplied is invalid.\MessageBreak - See the biblatex manual for details}} - -\def\blx@warn@nohyph#1{% - \blx@warning{No hyphenation patterns for '#1'}} - -\protected\def\blx@warn@citecmd#1#2{% - \blx@warning{% - '\string#1' not defined by citation style.\MessageBreak - Falling back to '\string#2'}% - #2} - -\protected\def\blx@warn@nostring#1{% - \blx@warning@entry{Bibliography string '#1' undefined}% - \abx@missing{#1}} - -\def\blx@warn@conflopt#1{% - \blx@warning{Conflicting options.\MessageBreak#1}} - -\def\blx@warn@depropt#1{% - \blx@warning{Deprecated option.\MessageBreak Ignoring '#1'}} - -\def\blx@warn@bibempty{% - \@latex@warning{Empty bibliography}} - -\def\blx@warn@losempty{% - \@latex@warning{Empty list of shorthands}} - -\def\blx@inf@refsec{% - \blx@info{Reference section=\the\c@refsection}}% - -\def\blx@inf@refseg{% - \ifnum\c@refsection=\z@ - \blx@info{Reference segment=\the\c@refsegment}% - \else - \blx@info{% - Reference section/segment=% - \the\c@refsection/\the\c@refsegment}% - \fi} - -\def\blx@inf@creset{% - \blx@info{Resetting trackers}}% - -\def\blx@msg@cundef#1{% - Citation '#1' undefined} -\def\blx@msg@cundefon#1{% - Citation '#1' on page \the\c@page\space undefined} - -\newrobustcmd*{\RequireBiber}[1][2]{% - \ifnumgreater{#1}\blx@reqbiber - {\numgdef\blx@reqbiber{#1}} - {}% - \blx@checkbackend{style}} -\@onlypreamble\RequireBiber -\let\blx@reqbiber\z@ - -\def\blx@checkbackend#1{% - \ifblx@load@version@legacy - {\ifcase\blx@reqbiber - \or - \blx@info@noline{% - backend=biber recommended by #1}% - \or - \blx@warning@noline{% - backend=biber required by #1.\MessageBreak - Some features may not work properly}% - \else - \blx@error - {backend=biber required by #1} - {The selected style or one of the .bib files - requires backend=biber.\MessageBreak It will - not work at all with any other backend}% - \fi} - {}} - -% \blx@list@active active aux files (basename) -% [internal list] -% \blx@list@inactive inactive aux files (basename) -% [internal list] -% \blx@list@bibfiles@<auxfile> aux file -> bib file mapping (refsections) -% aux file (basename) -> bib files (full) -% [internal list] - -\let\blx@list@active\@empty -\let\blx@list@inactive\@empty -\listeadd\blx@list@inactive{\jobname} - -\protected\def\blx@regbibfiles#1#2{% - \forlistloop{\blx@regbibfile{#1}}{#2}} - -\def\blx@regbibfile#1#2{% - \ifcsundef{blx@res@loca@#2} - {\blx@regbibfile@i{#1}{#2}} - {\ifcsstring{blx@res@loca@#2}{local} - {\blx@regbibfile@i{#1}{#2}} - {}}} - -\def\blx@regbibfile@i#1#2{% - \ifinlistcs{#2}{blx@list@bibfiles@#1} - {} - {\listcsxadd{blx@list@bibfiles@#1}{#2}}} - -\def\blx@check@logreq{% - \begingroup - \ltxrequest{biblatex}{{\iftoggle{blx@runltx}{1}{0}}}{% - \provides[type=dynamic]{ - \def\do##1{\file{##1.aux}} - \dolistloop\blx@list@inactive - \file{\blx@ctrlfile@bibtex\blxauxsuffix.bib} - } - \requires[type=dynamic]{ - \def\do##1{\file{##1.bbl}} - \dolistloop\blx@list@inactive - } - \ifdef\blx@list@req@edit - {\requires[type=editable]{ - \forlistloop\file\blx@list@req@edit - }} - {} - \ifdef\blx@list@req@stat - {\requires[type=static]{ - \forlistloop\file\blx@list@req@stat - }} - {} - }% - \def\do##1{% - \ifinlist{##1}{\blx@list@active} - {\blx@logreq@bibtex{1}{##1}} - {\blx@logreq@bibtex{0}{##1}}}% - \dolistloop\blx@list@inactive - \endgroup} - -\def\blx@logreq@bibtex#1#2{% - \logrequest[package=biblatex,priority=5,active=#1]{% - \generic{bibtex} - \cmdline{% - \ifcase\blx@backend - \binary{bibtex} - \option{-min-crossrefs \blx@mincrossrefs} - \or - \binary{bibtex8} - \option{--wolfgang} - \option{--min\string_crossrefs \blx@mincrossrefs} - \ifdef\blx@csfencoding - {\option{--csfile \blx@csfencoding.csf}} - {}% - \or - \binary{bibtexu} - \option{--wolfgang} - \option{--min\string_crossrefs \blx@mincrossrefs} - \fi - \infile{#2} - } - \input{ - \file{#2.aux} - } - \output{ - \file{#2.bbl} - } - \provides[type=dynamic]{ - \file{#2.bbl} - } - \requires[type=dynamic]{ - \file{#2.aux} - \file{\blx@ctrlfile@bibtex\blxauxsuffix.bib} - } - \requires[type=editable]{ - \ifcsdef{blx@list@bibfiles@#2} - {\def\do{\file} - \dolistcsloop{blx@list@bibfiles@#2}} - {} - } - \requires[type=static]{ - \file{biblatex.bst} - \ifnum\blx@backend=\blx@backend@bibtexe - \ifdef\blx@csfencoding - {\file{\blx@csfencoding.csf}} - {}% - \fi - } - }% -} - -\def\blx@logreq@active#1{% - \xifinlist{\blx@auxfile@bibtex}{\blx@list@active} - {} - {\listxadd\blx@list@active{\blx@auxfile@bibtex}}% - \ifblank{#1} - {} - {\@latex@warning{#1}}% - \blx@rerun@latex - \blx@rerun@bibtex} - -\def\blx@logreq@inactive{% - \xifinlist{\blx@auxfile@bibtex}{\blx@list@inactive} - {} - {\listxadd\blx@list@inactive{\blx@auxfile@bibtex}}} - -\def\blx@rerun@latex{% - \G@refundefinedtrue - \global\toggletrue{blx@runltx}% - \global\let\blx@rerun@latex\relax} - -\def\blx@rerun@bibtex{% - \global\toggletrue{blx@runbtx}% - \global\let\blx@rerun@bibtex\relax} - -\let\blx@checksum@old\@empty -\let\blx@checksum@new\@empty -\let\blx@pagesum@old\@empty -\let\blx@pagesum@new\@empty - -\def\blx@checksum#1#2#3{% - \begingroup - \blx@tempcnta\the\numexpr0#2*0#3\relax - \blx@tempcntb\blx@tempcnta - \divide\blx@tempcntb10 - \multiply\blx@tempcntb10 - \advance\blx@tempcnta-\blx@tempcntb - \xdef#1{#1\the\blx@tempcnta}% - \endgroup} - -\def\blx@addchecksum{\blx@checksum\blx@checksum@old} -\def\blx@addpagesum{\blx@checksum\blx@pagesum@old} -\AtEndDocument{% - \def\blx@addchecksum{\blx@checksum\blx@checksum@new}% - \def\blx@addpagesum{\blx@checksum\blx@pagesum@new}} - -\protected\def\blx@check@rerun{% - \begingroup - \blx@tempcnta\z@ - \iftoggle{blx@runltx} - {\blx@tempcnta\@ne} - {\ifx\blx@checksum@old\blx@checksum@new - \ifx\blx@pagesum@old\blx@pagesum@new - \else - \blx@tempcnta\@ne - \fi - \else - \blx@tempcnta\@ne - \fi}% - \iftoggle{blx@runbtx} - {\advance\blx@tempcnta\tw@} - {}% - \ifcase\blx@tempcnta - \or - \blx@rerun@latex - \blx@warning@noline{% - Please rerun LaTeX% - \ifx\blx@pagesum@old\blx@pagesum@new\else - .\MessageBreak Page breaks have changed% - \fi}% - \else - \blx@rerun@latex - \blx@warn@auxlist - \fi - \endgroup} - -\def\blx@warn@auxlist{% - \begingroup - \edef\blx@tempa{Please (re)run BibTeX on the file(s):}% - \def\do##1{\appto\blx@tempa{\MessageBreak##1}}% - \dolistloop\blx@list@active - \blx@warning@noline{% - \blx@tempa\MessageBreak - and rerun LaTeX afterwards}% - \endgroup} - -\AfterEndDocument{% - \blx@check@rerun - \blx@check@logreq} - -%% Punctuation and capitalization - -% 1001 apostrophe (\printnames only) -% 1002 abbreviation period (dot) -% 1003/1250 comma -% 1004/1500 semicolon -% 1005/2000 colon -% 1006/3000 period -% 1007/3001 exclamation mark -% 1008/3002 question mark -% 1009 suppress punctuation -% 1010 new paragaph - -\mathchardef\blx@sf@prefixchar=1001 -\mathchardef\blx@sf@dot=1002 -\mathchardef\blx@sf@comma=1003 -\mathchardef\blx@sf@semicolon=1004 -\mathchardef\blx@sf@colon=1005 -\mathchardef\blx@sf@period=1006 -\mathchardef\blx@sf@exclam=1007 -\mathchardef\blx@sf@question=1008 -\mathchardef\blx@sf@nopunct=1009 -\mathchardef\blx@sf@par=1010 -\mathchardef\blx@sf@threshold@low=1002 -\mathchardef\blx@sf@threshold@high=1009 - -\csdef{blx@sf@1250}{\the\blx@sf@comma} -\csdef{blx@sf@1500}{\the\blx@sf@semicolon} -\csdef{blx@sf@2000}{\the\blx@sf@colon} -\csdef{blx@sf@3000}{\the\blx@sf@period} -\csdef{blx@sf@3001}{\the\blx@sf@exclam} -\csdef{blx@sf@3002}{\the\blx@sf@question} - -\csdef{blx@pm@,}{comma} -\csdef{blx@pm@;}{semicolon} -\csdef{blx@pm@:}{colon} -\csdef{blx@pm@.}{period} -\csdef{blx@pm@!}{exclam} -\csdef{blx@pm@?}{question} - -\def\blx@setsfcodes{% - \let\blx@setsfcodes\relax - \let\frenchspacing\blx@setfrcodes - \let\nonfrenchspacing\blx@setencodes - \ifnum\sfcode`\.>2000 - \blx@setencodes - \else - \blx@setfrcodes - \fi - \@setquotesfcodes - \sfcode`\(=\z@ - \sfcode`\)=\z@ - \sfcode`\[=\z@ - \sfcode`\]=\z@ - \sfcode`\<=\z@ - \sfcode`\>=\z@} - -\def\blx@setfrcodes{% - \ifnum\sfcode`\A=\@m - \else - \blx@setazcodes - \fi - \sfcode`\,=\blx@sf@comma - \sfcode`\;=\blx@sf@semicolon - \sfcode`\:=\blx@sf@colon - \sfcode`\.=\blx@sf@period - \sfcode`\!=\blx@sf@exclam - \sfcode`\?=\blx@sf@question -} - -\def\blx@setencodes{% - \sfcode`\,=1250 - \sfcode`\;=1500 - \sfcode`\:=2000 - \sfcode`\.=3000 - \sfcode`\!=3001 - \sfcode`\?=3002 -} - -% Defining characters that count as prefices in names like d'Argent -% Code from moewe -\let\blx@prefchars\@empty - -\def\blx@defprefchars@loop#1{% - \ifx#1\relax - \else - \listadd{\blx@prefchars}{#1}% - \expandafter\blx@defprefchars@loop - \fi} - -\def\blx@defprefchars#1{% - \expandafter\blx@defprefchars@loop\detokenize{#1}\relax} - -\newrobustcmd*{\DeclarePrefChars}{% - \@ifstar - {\blx@defprefchars} - {\let\blx@prefchars\@empty - \blx@defprefchars}} -\DeclarePrefChars{'} - -\protected\def\blx@imc@ifprefchar{% - \ifhmode - \begingroup - \ifnum\spacefactor=\blx@sf@prefixchar - \endgroup - \expandafter\expandafter - \expandafter\@firstoftwo - \else - \endgroup - \expandafter\expandafter - \expandafter\@secondoftwo - \fi - \else - \expandafter\@secondoftwo - \fi} - -\blx@regimcs{\ifprefchar} - -\def\blx@namecodes{% - \ifnum\sfcode`\A=\@m - \else - \blx@setazcodes - \fi - \def\do##1{\sfcode`##1=\blx@sf@prefixchar}% - \dolistloop\blx@prefchars -} - -\begingroup -\let\blx@setazcodes\@empty -\def\blx@tempa{% - \xdef\blx@setazcodes{% - \blx@setazcodes - \sfcode\the\blx@tempcnta=\@m} - \ifnum\blx@tempcnta<\blx@tempcntb - \advance\blx@tempcnta\@ne - \expandafter\blx@tempa - \fi} -\blx@tempcnta`\A -\blx@tempcntb`\Z -\blx@tempa -\ifnum\inputlineno=\m@ne\else - \blx@tempcnta"80 - \blx@tempcntb"9C - \blx@tempa - \blx@tempcnta"C0 - \blx@tempcntb"DF - \blx@tempa -\fi -\endgroup - -\def\blx@spacefactor{% - \ifhmode - \ifcsundef{blx@sf@\the\spacefactor} - {\the\spacefactor} - {\csname blx@sf@\the\spacefactor\endcsname}% - \else - \the\blx@sf@par - \fi} - -\protected\def\blx@leavevmode{% - \ifhmode - \else - \leavevmode\spacefactor\blx@sf@par - \fi} - -\protected\def\blx@leavevmode@cite{% - \ifhmode - \ifnum\spacefactor=\blx@sf@par - \else - \spacefactor\@m - \fi - \else - \leavevmode - \fi} - -\protected\def\blx@imc@setpunctfont#1{% - \blx@ifpuncthook - {\gdef\abx@puncthook{% - \ifdim\lastkern>\z@\unkern\fi - \blx@imc@resetpunctfont#1}} - {}} -\protected\def\blx@imc@resetpunctfont{% - \blx@ifpuncthook - {\global\let\abx@puncthook\@firstofone} - {}} - -\protected\def\blx@setpostpunct#1{% - \blx@ifuspunct - {\global\let\blx@postpunct\blx@dopostpunct - \ifdef\blx@thepostpunct - {\gappto\blx@thepostpunct{#1}} - {\gdef\blx@thepostpunct{#1}}} - {}} - -\def\blx@dopostpunct{% - \blx@thepostpunct - \global\let\blx@postpunct\@empty - \global\undef\blx@thepostpunct} - -\protected\def\blx@postpunct@agroup{% - \aftergroup\blx@postpunct - \let\blx@postpunct@agroup\@empty} - -% {<characters>} - -\newrobustcmd*{\DeclareCapitalPunctuation}[1]{% - \cslet{blx@cap@\the\blx@sf@par}\@empty - \csundef{blx@cap@\the\blx@sf@comma}% - \csundef{blx@cap@\the\blx@sf@semicolon}% - \csundef{blx@cap@\the\blx@sf@colon}% - \csundef{blx@cap@\the\blx@sf@period}% - \csundef{blx@cap@\the\blx@sf@exclam}% - \csundef{blx@cap@\the\blx@sf@question}% - \ifblank{#1} - {} - {\expandafter\blx@defcapstring\detokenize{#1}\relax}} - -\def\blx@defcapstring#1{% - \ifx#1\relax - \else - \begingroup - \blx@setfrcodes - \ifcsdef{blx@pm@#1} - {\expandafter\endgroup - \expandafter\let - \csname blx@cap@\the\sfcode`#1\endcsname\@empty} - {\blx@warning{Ignoring invalid punctuation mark '#1'}% - \endgroup}% - \expandafter\blx@defcapstring - \fi} - -% {<characters>} - -\newrobustcmd*{\DeclareQuotePunctuation}[1]{% - \csdef{blx@qp@comma}{\blx@postpunct}% - \csdef{blx@qp@semicolon}{\blx@postpunct}% - \csdef{blx@qp@colon}{\blx@postpunct}% - \csdef{blx@qp@period}{\blx@postpunct}% - \csdef{blx@qp@exclam}{\blx@postpunct}% - \csdef{blx@qp@question}{\blx@postpunct}% - \cslet{blx@pq@comma}\@empty - \cslet{blx@pq@semicolon}\@empty - \cslet{blx@pq@colon}\@empty - \cslet{blx@pq@period}\@empty - \cslet{blx@pq@exclam}\@empty - \cslet{blx@pq@question}\@empty - \let\blx@quotepunct\@empty - \ifblank{#1} - {\let\blx@ifuspunct\@secondoftwo} - {\let\blx@ifuspunct\@firstoftwo - \expandafter\blx@defquotepunct\detokenize{#1}&}} - -\def\blx@defquotepunct#1{% - \ifx\relax - \else - \ifcsdef{blx@pm@#1} - {\appto\blx@quotepunct{#1}% - \cslet{blx@qp@\csuse{blx@pm@#1}}\@empty - \csdef{blx@pq@\csuse{blx@pm@#1}}{\blx@postpunct}} - {\blx@warning{Ignoring invalid punctuation mark '#1'}}% - \expandafter\blx@defquotepunct - \fi} - -% {<mark>}{<characters>} - -\newrobustcmd*{\DeclarePunctuationPairs}[2]{% - \ifcsdef{blx@sf@\detokenize{#1}} - {\ifnum\csname blx@sf@\detokenize{#1}\endcsname>\blx@sf@prefixchar - \ifnum\csname blx@sf@\detokenize{#1}\endcsname<\blx@sf@nopunct - \expandafter\blx@defpunctpairs - \expandafter{\the\csname blx@sf@\detokenize{#1}\endcsname}{#2}% - \else - \blx@err@invarg{\detokenize{#1}{}}% - \fi - \else - \blx@err@invarg{\detokenize{#1}{}}% - \fi} - {\blx@err@invarg{\detokenize{#1}{}}}} - -\def\blx@defpunctpairs#1#2{% - \blx@undefpair{#1}{\the\blx@sf@dot}% - \blx@undefpair{#1}{\the\blx@sf@comma}% - \blx@undefpair{#1}{\the\blx@sf@semicolon}% - \blx@undefpair{#1}{\the\blx@sf@colon}% - \blx@undefpair{#1}{\the\blx@sf@period}% - \blx@undefpair{#1}{\the\blx@sf@exclam}% - \blx@undefpair{#1}{\the\blx@sf@question}% - \ifblank{#2} - {} - {\begingroup - \def\blx@tempa{#1}% - \let\blx@tempb\@empty - \blx@setfrcodes - \sfcode`\*=\blx@sf@dot - \expandafter\blx@defpair\detokenize{#2}&% - \expandafter\endgroup\blx@tempb}} - -\def\blx@defpair#1{% - \ifx% - \else - \ifnum\the\sfcode`#1>\blx@sf@prefixchar - \ifnum\the\sfcode`#1<\blx@sf@nopunct - \eappto\blx@tempb{% - \cslet{blx@pp@\blx@tempa @\the\sfcode`#1}\noexpand\@empty}% - \else - \blx@err@invarg{#1}{}% - \fi - \else - \blx@err@invarg{#1}{}% - \fi - \expandafter\blx@defpair - \fi} - -\def\blx@undefpair#1#2{% - \ifcsdef{blx@pp@#1@#2} - {\csundef{blx@pp@#1@#2}} - {}} - -\protected\def\blx@resetpunct{% - \DeclareCapitalPunctuation{.!?}% - \DeclarePunctuationPairs{dot}{}% - \DeclarePunctuationPairs{comma}{*!?}% - \DeclarePunctuationPairs{semicolon}{*!?}% - \DeclarePunctuationPairs{colon}{*!?}% - \DeclarePunctuationPairs{period}{}% - \DeclarePunctuationPairs{exclam}{*}% - \DeclarePunctuationPairs{question}{*}% - \DeclareQuotePunctuation{}% - \def\abx@dot{\ifdim\lastkern>\z@\unkern\fi.\spacefactor\blx@sf@dot}% - \def\abx@comma{\ifdim\lastkern>\z@\unkern\fi\abx@puncthook{,}}% - \def\abx@semicolon{\abx@puncthook{;}}% - \def\abx@colon{\abx@puncthook{:}}% - \def\abx@period{\ifdim\lastkern>\z@\unkern\fi\abx@puncthook{.}}% - \def\abx@exclam{\abx@puncthook{!}}% - \def\abx@question{\abx@puncthook{?}}% - \global\let\abx@puncthook\@firstofone - \global\let\blx@postpunct\@empty} - -\blx@resetpunct - -% {<character>}{<true>}{<false>} - -\protected\def\blx@imc@ifpunctmark#1{% - \ifhmode - \begingroup - \sfcode`\*=\blx@sf@dot - \ifnum\sfcode`#1=\spacefactor - \endgroup - \expandafter\expandafter - \expandafter\@firstoftwo - \else - \endgroup - \expandafter\expandafter - \expandafter\@secondoftwo - \fi - \else - \expandafter\@secondoftwo - \fi} - -% {<true>}{<false>} - -\protected\def\blx@imc@ifterm{% - \ifhmode - \expandafter\blx@imc@ifcapital - \else - \expandafter\@secondoftwo - \fi} - -% {<true>}{<false>} - -\protected\def\blx@imc@ifcapital{% - \ifcsdef{blx@cap@\blx@spacefactor}} - -% {<true>}{<false>} - -\protected\def\blx@imc@ifpunct{% - \ifnum\blx@spacefactor>\blx@sf@threshold@low - \ifnum\blx@spacefactor<\blx@sf@threshold@high - \expandafter\expandafter - \expandafter\@firstoftwo - \else - \expandafter\expandafter - \expandafter\@secondoftwo - \fi - \else - \expandafter\@secondoftwo - \fi} - -% {<character>} - -\newrobustcmd*{\autocap}[1]{#1} - -\protected\def\blx@imc@autocap{% - \blx@imc@ifcapital\MakeUppercase\@firstofone} - -\protected\def\blx@imc@nopunct{% - \leavevmode\spacefactor\blx@sf@nopunct} - -\protected\def\blx@imc@isdot{% - \ifnum\blx@spacefactor=\blx@sf@period - \spacefactor\blx@sf@dot - \fi} - -\protected\def\blx@imc@adddot{% - \blx@addpunct{dot}% - \ifnum\blx@spacefactor=\blx@sf@period - \spacefactor\blx@sf@dot - \fi} - -\protected\def\blx@imc@addperiod{% - \blx@addpunct{period}% - \ifnum\blx@spacefactor=\blx@sf@dot - \spacefactor\blx@sf@period - \fi} - -\protected\def\blx@imc@addcomma{\blx@addpunct{comma}} -\protected\def\blx@imc@addsemicolon{\blx@addpunct{semicolon}} -\protected\def\blx@imc@addcolon{\blx@addpunct{colon}} -\protected\def\blx@imc@addexclam{\blx@addpunct{exclam}} -\protected\def\blx@imc@addquestion{\blx@addpunct{question}} - -\def\blx@addpunct#1{% - \unspace - \ifnum\blx@spacefactor<\blx@sf@threshold@low - \csuse{blx@qp@#1}\csuse{abx@#1}% - \else - \ifnum\blx@spacefactor>\blx@sf@threshold@high - \csuse{blx@qp@#1}\csuse{abx@#1}% - \else - \ifcsdef{blx@pp@\the\csname blx@sf@#1\endcsname @\blx@spacefactor} - {\csuse{blx@qp@#1}\csuse{abx@#1}} - {\csuse{blx@qp@#1}}% - \fi - \fi - \csuse{blx@pq@#1}} - -\providerobustcmd*{\unspace}{% - \ifbool{hmode} - {\ifdimgreater\lastskip\z@ - {\unskip\unspace} - {\ifnumgreater\lastpenalty\z@ - {\unpenalty\unspace} - {}}} - {}} - -\newrobustcmd*{\bibsentence}{% - \leavevmode\spacefactor\blx@sf@par - \ignorespaces} - -\newrobustcmd*{\midsentence}{% - \leavevmode - \@ifstar - {\ifnum\spacefactor=\blx@sf@dot - \else - \spacefactor\@m - \fi} - {\spacefactor\@m}} - -\newrobustcmd*{\addslash}{% - \unspace/\penalty\hyphenpenalty\hskip\z@skip} - -\newrobustcmd*{\addspace}{% - \unspace\blx@postpunct - \space\blx@imc@resetpunctfont} - -\newrobustcmd*{\addnbspace}{% - \unspace\blx@postpunct - \nobreak\space\blx@imc@resetpunctfont} - -\newrobustcmd*{\addthinspace}{% - \unspace\blx@postpunct - \hskip0.16667em\relax - \blx@imc@resetpunctfont} - -\newrobustcmd*{\addnbthinspace}{% - \unspace\blx@postpunct - \nobreak\hskip0.16667em\relax - \blx@imc@resetpunctfont} - -\newrobustcmd*{\addlowpenspace}{% - \unspace\blx@postpunct - \penalty\value{lownamepenalty}\space - \blx@imc@resetpunctfont} - -\newrobustcmd*{\addhighpenspace}{% - \unspace\blx@postpunct - \penalty\value{highnamepenalty}\space - \blx@imc@resetpunctfont} - -\newrobustcmd*{\addlpthinspace}{% - \unspace\blx@postpunct - \penalty\value{lownamepenalty}% - \hskip0.16667em\relax\blx@imc@resetpunctfont} - -\newrobustcmd*{\addhpthinspace}{% - \unspace\blx@postpunct - \penalty\value{highnamepenalty}% - \hskip0.16667em\relax\blx@imc@resetpunctfont} - -\newrobustcmd*{\addabbrvspace}{% - \unspace\blx@postpunct - \penalty\value{abbrvpenalty}% - \space\blx@imc@resetpunctfont} - -\newrobustcmd*{\addabthinspace}{% - \unspace\blx@postpunct - \penalty\value{abbrvpenalty}% - \hskip0.16667em\relax - \blx@imc@resetpunctfont} - -\newrobustcmd*{\adddotspace}{% - \unspace\adddot\blx@postpunct - \penalty\value{abbrvpenalty}% - \space\blx@imc@resetpunctfont} - -\providerobustcmd*{\noligature}{% - \penalty\@M\discretionary{-}{}{\kern0.03em}% - \nobreak\hskip\z@skip} - -\providerobustcmd*{\hyphen}{% - \nobreak-\nobreak\hskip\z@skip} - -\providerobustcmd*{\nbhyphen}{% - \nobreak\mbox{-}\nobreak\hskip\z@skip} - -\providerobustcmd*{\hyphenate}{% - \nobreak\-\nobreak\hskip\z@skip} - -\providerobustcmd*{\allowhyphens}{% - \nobreak\hskip\z@skip} - -\providerobustcmd*{\nohyphenation}{% - \lefthyphenmin\@m} - -\providerobustcmd*{\textnohyphenation}[1]{% - \bgroup\nohyphenation#1\egroup} - -\blx@regimcs{% - \setpunctfont \resetpunctfont \ifcapital \autocap \ifpunctmark - \ifpunct \ifterm \nopunct \isdot \adddot \addperiod \addcomma - \addsemicolon \addcolon \addexclam \addquestion} - -\appto\blx@blxinit{% - \appto\nocorrlist{\isdot\adddot\addperiod\addcomma}} - -%% Style definition - -% {<bibstyle>} - -\newrobustcmd*{\RequireBibliographyStyle}[1]{% - \blx@inputonce{#1.bbx}{bibliography style '#1'}{}{}{} - {\blx@error - {Style '#1' not found} - {The bibliography style '#1' could not be found}}} -\@onlypreamble\RequireBibliographyStyle - -% {<code>} - -\newrobustcmd*{\InitializeBibliographyStyle}{\appto\blx@hook@bbxinit} -\@onlypreamble\InitializeBibliographyStyle - -% {<entry type>}{<driverdef>} - -\newrobustcmd*{\DeclareBibliographyDriver}[1]{% - \long\csdef{blx@bbx@#1}} -\@onlypreamble\DeclareBibliographyDriver - -% {<entry type>} - -\def\blx@driver#1{% - \ifcsdef{blx@bbx@#1} - {\csuse{blx@bbx@#1}} - {\ifcsdef{blx@bbx@*} - {\blx@warning{% - No driver for entry type '#1'.\MessageBreak - Using fallback driver}% - \csuse{blx@bbx@*}} - {\blx@error - {No driver found} - {I can't find a driver for the entry type - '\abx@field@entrytype'\MessageBreak - and there is no fallback driver either}}}} - -% {<type>}{<true>}{<false>} - -\def\blx@imc@ifdriver#1{\ifcsdef{blx@bbx@#1}} - -% {<alias>}{<type>} - -\newrobustcmd*{\DeclareBibliographyAlias}[2]{% - \csedef{blx@bbx@#1}{% - \expandafter\noexpand\csname blx@bbx@#2\endcsname}} -\@onlypreamble\DeclareBibliographyAlias - -% Ignore first optional argument - only used in biblatex2.sty and biber -% {<key>}[<value>]{<code>} -\newrobustcmd*{\DeclareBibliographyOption}[2][]{% - \@ifnextchar[%] - {\blx@defbibopt{#2}} - {\blx@defbibopt{#2}[]}} - -\long\def\blx@defbibopt#1[#2]#3{% - \ifcsundef{KV@blx@opt@ldt@#1} - {\ifcsundef{KV@blx@opt@pre@#1} - {\ifblank{#2} - {\define@key{blx@opt@pre}{#1}{#3}} - {\define@key{blx@opt@pre}{#1}[#2]{#3}}} - {\blx@err@optdef{#1}}} - {\blx@err@optdef{#1}}} - -% Ignore first optional argument - only used in biblatex2.sty and biber -% {<key>}[<value>]{<code>} -\newrobustcmd*{\DeclareTypeOption}[2][]{% - \@ifnextchar[%] - {\blx@deftypeopt{#2}} - {\blx@deftypeopt{#2}[]}} - -\long\def\blx@deftypeopt#1[#2]#3{% - \ifcsundef{KV@blx@opt@typ@#1} - {\ifblank{#2} - {\define@key{blx@opt@typ}{#1}{#3}} - {\define@key{blx@opt@typ}{#1}[#2]{#3}}} - {\blx@err@optdef{#1}}} - -% Ignore first optional argument - only used in biblatex2.sty and biber -% {<key>}[<value>]{<code>} -\newrobustcmd*{\DeclareEntryOption}[2][]{% - \@ifnextchar[%] - {\blx@defentryopt{#2}} - {\blx@defentryopt{#2}[]}} - -\long\def\blx@defentryopt#1[#2]#3{% - \ifcsundef{KV@blx@opt@ent@#1} - {\ifblank{#2} - {\define@key{blx@opt@ent}{#1}{#3}} - {\define@key{blx@opt@ent}{#1}[#2]{#3}}} - {\blx@err@optdef{#1}}} - -%% Auxiliary commands - -\newrobustcmd*{\citereset}{% - \csuse{blx@hook@cbxinit}% - \@ifstar - {} - {\global\cslet{blx@bsee@\the\c@refsection}\@empty - \global\cslet{blx@fsee@\the\c@refsection}\@empty - \blx@ibidreset@force - \blx@idemreset@force - \blx@opcitreset@force - \blx@loccitreset@force}} - -\def\blx@save#1{% - \ifcsdef{blx@saved@#1} - {} - {\blx@safe@actives - \csletcs{blx@saved@#1}{#1}% - \blx@rest@actives}} - -\def\blx@restore#1{% - \ifcsdef{blx@saved@#1} - {\blx@safe@actives - \csletcs{#1}{blx@saved@#1}% - \csundef{blx@saved@#1}% - \blx@rest@actives} - {}} - -\newrobustcmd*{\savecommand}[1]{% - \ifcsdef{blx@saved@cmd@\detokenize{#1}} - {} - {\cslet{blx@saved@cmd@\detokenize{#1}}{#1}}} - -\newrobustcmd*{\restorecommand}[1]{% - \ifcsdef{blx@saved@cmd@\detokenize{#1}} - {\letcs{#1}{blx@saved@cmd@\detokenize{#1}}% - \csundef{blx@saved@cmd@\detokenize{#1}}} - {}} - -% {<name>} - -\newrobustcmd*{\savebibmacro}[1]{% - \blx@save{abx@macro@\detokenize{#1}}} - -\newrobustcmd*{\restorebibmacro}[1]{% - \blx@restore{abx@macro@\detokenize{#1}}} - -% {<name>}[<args>][<optarg>]{<definition>} - -\newrobustcmd*{\newbibmacro}{% - \@star@or@long\blx@newbibmacro} - -\def\blx@newbibmacro#1{% - \ifcsundef{abx@macro@\detokenize{#1}} - {\blx@defbibmacro\new@command{#1}} - {\blx@warning{% - Macro '\detokenize{#1}' already defined.\MessageBreak - Using \string\renewbibmacro} - \blx@defbibmacro\renew@command{#1}}} - -\newrobustcmd*{\renewbibmacro}{% - \@star@or@long\blx@renewbibmacro} - -\def\blx@renewbibmacro#1{% - \ifcsundef{abx@macro@\detokenize{#1}} - {\blx@warning{% - Macro '\detokenize{#1}' undefined.\MessageBreak - Using \string\newbibmacro} - \blx@defbibmacro\new@command{#1}} - {\blx@defbibmacro\renew@command{#1}}} - -\newrobustcmd*{\providebibmacro}{% - \@star@or@long{\blx@defbibmacro\provide@command}} - -\def\blx@defbibmacro#1#2{% - \expandafter#1\csname abx@macro@\detokenize{#2}\endcsname} - -% {<name>} - -\newrobustcmd*{\usebibmacro}{% - \@ifstar - {\blx@usebibmacro@i} - {\blx@usebibmacro}} - -\def\blx@usebibmacro#1{% - \blx@usebibmacro@i{\detokenize{#1}}} - -\def\blx@usebibmacro@i#1{% - \ifcsundef{abx@macro@#1} - {\blx@error - {Bibliography macro '#1' undefined} - {Use '\string\newbibmacro' to define this macro}} - {\csuse{abx@macro@#1}}} - -% {<name>}{<true>}{<false>} - -\def\blx@imc@ifbibmacroundef#1{% - \ifcsundef{abx@macro@#1}} - -% {<field>} - -\def\blx@imc@thefield#1{\csuse{abx@field@#1}} - -\def\blx@imc@strfield#1{% - \ifcsdef{abx@field@#1} - {\detokenize\expandafter\expandafter\expandafter - {\csname abx@field@#1\endcsname}} - {}} - -\def\blx@imc@csfield#1{\usefield{\unexpanded}{#1}} - -% {<command>}{<field>} - -\def\blx@imc@usefield#1#2{% - \expandafter\expandafter\expandafter#1% - \expandafter\expandafter\expandafter{\csname abx@field@#2\endcsname}} - -% {<plainlist>} - -\def\blx@imc@thelist#1{\csuse{abx@list@#1}} - -% {<namelist>} - -\def\blx@imc@thename#1{\csuse{abx@name@#1}} - -% {<field>} - -\protected\def\blx@imc@clearfield#1{% - \csundef{abx@field@#1}} - -% {<plainlist>} - -\protected\def\blx@imc@clearlist#1{% - \ifcsundef{abx@list@#1} - {} - {\togglefalse{abx@bool@more#1}% - \csundef{abx@list@#1}% - \csname c@#1\endcsname\z@}} - -% {<namelist>} - -\protected\def\blx@imc@clearname#1{% - \ifcsundef{abx@name@#1} - {} - {\togglefalse{abx@bool@more#1}% - \csundef{abx@name@#1}% - \csname c@#1\endcsname\z@}} - -% {<field>}{<macro>} - -\protected\def\blx@imc@restorefield#1{\cslet{abx@field@#1}} - -% {<plainlist>}{<macro>} - -\protected\def\blx@imc@restorelist#1{\cslet{abx@list@#1}} - -% {<namelist>}{<macro>} - -\protected\def\blx@imc@restorename#1{\cslet{abx@name@#1}} - -% {<field>}{<macro>} - -\protected\def\blx@imc@savefield{% - \@ifstar{\blx@savedata{field}}{\global\blx@savedata{field}}} -\def\blx@savedata#1#2#3{\letcs#3{abx@#1@#2}} - -% {<plainlist>}{<macro>} - -\protected\def\blx@imc@savelist{% - \@ifstar{\blx@savedata{list}}{\global\blx@savedata{list}}} - -% {<namelist>}{<macro>} - -\protected\def\blx@imc@savename{% - \@ifstar{\blx@savedata{name}}{\global\blx@savedata{name}}} - -% {<field>}{<csname>} - -\protected\def\blx@imc@savefieldcs{% - \@ifstar{\blx@savedatacs{field}}{\global\blx@savedatacs{field}}} -\def\blx@savedatacs#1#2#3{\csletcs{#3}{abx@#1@#2}} - -% {<plainlist>}{<csname>} - -\protected\def\blx@imc@savelistcs{% - \@ifstar{\blx@savedatacs{list}}{\global\blx@savedatacs{list}}} - -% {<namelist>}{<csname>} - -\protected\def\blx@imc@savenamecs{% - \@ifstar{\blx@savedatacs{name}}{\global\blx@savedatacs{name}}} - -% {<field>}{<true>}{<false>} - -\def\blx@imc@iffieldundef#1{% - \ifcsundef{abx@field@#1}} - -% {<plainlist>}{<true>}{<false>} - -\def\blx@imc@iflistundef#1{% - \ifcsundef{abx@list@#1}} - -% {<namelist>}{<true>}{<false>} - -\def\blx@imc@ifnameundef#1{% - \ifcsundef{abx@name@#1}} - -% {<field1>}{<field2>}{<true>}{<false>} - -\def\blx@imc@iffieldsequal#1#2{% - \ifcsequal{abx@field@#1}{abx@field@#2}} - -% {<plainlist1>}{<plainlist2>}{<true>}{<false>} - -\def\blx@imc@iflistsequal#1#2{% - \ifcsequal{abx@list@#1}{abx@list@#2}} - -% {<namelist1>}{<namelist2>}{<true>}{<false>} - -\def\blx@imc@ifnamesequal#1#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>} - -\def\blx@imc@iffieldequals#1#2{% - \blx@imc@iffieldundef{#1} - {\@secondoftwo} - {\ifundef#2% - {\@secondoftwo} - {\expandafter\ifx\csname abx@field@#1\endcsname#2% - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi}}} - -% {<plainlist>}{<macro>}{<true>}{<false>} - -\def\blx@imc@iflistequals#1#2{% - \blx@imc@iflistundef{#1} - {\@secondoftwo} - {\ifundef#2% - {\@secondoftwo} - {\expandafter\ifx\csname abx@list@#1\endcsname#2% - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi}}} - -% {<namelist>}{<macro>}{<true>}{<false>} - -\def\blx@imc@ifnameequals#1#2{% FIXME - \blx@imc@ifnameundef{#1} - {\@secondoftwo} - {\ifundef#2% - {\@secondoftwo} - {\expandafter\ifx\csname abx@name@#1\endcsname#2% - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi}}} - -% {<field>}{<csname>}{<true>}{<false>} - -\def\blx@imc@iffieldequalcs#1{% - \ifcsequal{abx@field@#1}} - -% {<plainlist>}{<csname>}{<true>}{<false>} - -\def\blx@imc@iflistequalcs#1{% - \ifcsequal{abx@list@#1}} - -% {<namelist>}{<csname>}{<true>}{<false>} - -\def\blx@imc@ifnameequalcs#1{% FIXME - \ifcsequal{abx@name@#1}} - -% {<field>}{<string>}{<true>}{<false>} - -\protected\long\def\blx@imc@iffieldequalstr#1#2{% - \blx@imc@iffieldundef{#1} - {\@secondoftwo} - {\expandafter\expandafter\expandafter\ifstrequal - \expandafter\expandafter\expandafter{% - \csname abx@field@#1\endcsname}{#2}}} - -% {<field>}{<true>}{<false>} - -\protected\def\blx@imc@iffieldxref#1{% - \blx@imc@iffieldundef{#1} - {\@secondoftwo} - {\blx@whichxref - {\blx@iffieldxref{#1}} - {\@secondoftwo}}} - -\def\blx@iffieldxref#1#2{% - \begingroup - \letcs\blx@tempa{abx@field@#2}% - \letcs\blx@tempb{abx@field@#1}% - \csundef{abx@field@#1}% - \blx@getdata{\blx@tempa}% - \blx@imc@iffieldequals{#1}\blx@tempb - {\aftergroup\@firstoftwo} - {\aftergroup\@secondoftwo}% - \endgroup} - -\def\blx@whichxref#1#2{% - \blx@imc@iffieldundef{crossref} - {\blx@imc@iffieldundef{xref} - {#2} - {#1{xref}}} - {#1{crossref}}} - -% {<plainlist>}{<true>}{<false>} - -\protected\def\blx@imc@iflistxref#1{% - \blx@imc@iflistundef{#1} - {\@secondoftwo} - {\blx@whichxref - {\blx@iflistxref{#1}} - {\@secondoftwo}}} - -\def\blx@iflistxref#1#2{% - \begingroup - \letcs\blx@tempa{abx@field@#2}% - \letcs\blx@tempb{abx@list@#1}% - \csundef{abx@list@#1}% - \blx@getdata{\blx@tempa}% - \blx@imc@iflistequals{#1}\blx@tempb - {\aftergroup\@firstoftwo} - {\aftergroup\@secondoftwo}% - \endgroup} - -% {<namelist>}{<true>}{<false>} - -\protected\def\blx@imc@ifnamexref#1{% - \blx@imc@ifnameundef{#1} - {\@secondoftwo} - {\blx@whichxref - {\blx@ifnamexref{#1}} - {\@secondoftwo}}} - -\def\blx@ifnamexref#1#2{% - \begingroup - \letcs\blx@tempa{abx@field@#2}% - \letcs\blx@tempb{abx@name@#1}% - \csundef{abx@name@#1}% - \blx@getdata{\blx@tempa}% - \blx@imc@ifnameequals{#1}\blx@tempb - {\aftergroup\@firstoftwo} - {\aftergroup\@secondoftwo}% - \endgroup} - -% {<string>}{<true>}{<false>} - -\protected\def\blx@imc@ifcurrentfield#1{% - \begingroup - \def\blx@tempa{#1}% - \ifx\currentfield\blx@tempa - \aftergroup\@firstoftwo - \else - \aftergroup\@secondoftwo - \fi - \endgroup} - -% {<string>}{<true>}{<false>} - -\protected\def\blx@imc@ifcurrentlist#1{% - \begingroup - \def\blx@tempa{#1}% - \ifx\currentlist\blx@tempa - \aftergroup\@firstoftwo - \else - \aftergroup\@secondoftwo - \fi - \endgroup} - -% {<string>}{<true>}{<false>} - -\protected\def\blx@imc@ifcurrentname#1{% - \begingroup - \def\blx@tempa{#1}% - \ifx\currentname\blx@tempa - \aftergroup\@firstoftwo - \else - \aftergroup\@secondoftwo - \fi - \endgroup} - -% {<string>}{<true>}{<false>} - -\protected\def\blx@imc@ifentrytype#1{% - \begingroup - \def\blx@tempa{#1}% - \ifx\abx@field@entrytype\blx@tempa - \aftergroup\@firstoftwo - \else - \aftergroup\@secondoftwo - \fi - \endgroup} - -% {<true>}{<false>} - -\def\blx@imc@ifmorenames{% - \ifundef\currentname - {\@secondoftwo} - {\iftoggle{abx@bool@more\currentname} - {\@firstoftwo} - {\ifnum\c@listtotal>\c@liststop - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi}}} - -% {<true>}{<false>} - -\def\blx@imc@ifmoreitems{% - \ifundef\currentlist - {\@secondoftwo} - {\iftoggle{abx@bool@more\currentlist} - {\@firstoftwo} - {\ifnum\c@listtotal>\c@liststop - \expandafter\@firstoftwo - \else - \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{% - \ifdef\abx@field@entrykey - {\blx@imc@ifentrycategory\abx@field@entrykey} - {\expandafter\@secondoftwo\@gobble}} - -% {<entrykey>}{<category>}{<true>}{<false>} - -\protected\def\blx@imc@ifentrycategory{% - \blx@xsanitizeafter\blx@imc@ifentrycategory@i} - -\def\blx@imc@ifentrycategory@i#1#2{% - \ifcsdef{blx@catg@\detokenize{#2}} - {\ifinlistcs{#1}{blx@catg@\detokenize{#2}}} - {\@secondoftwo}} - -% {<keyword>}{<true>}{<false>} - -\protected\def\blx@imc@ifkeyword{% - \ifdef\abx@field@entrykey - {\blx@imc@ifentrykeyword\abx@field@entrykey} - {\expandafter\@secondoftwo\@gobble}} - -% {<entrykey>}{<keyword>}{<true>}{<false>} - -\protected\def\blx@imc@ifentrykeyword{% - \blx@xsanitizeafter\blx@imc@ifentrykeyword@i} - -\def\blx@imc@ifentrykeyword@i#1#2{% - \ifcsdef{blx@keyw@\the\c@refsection @\detokenize{#2}} - {\ifinlistcs{#1}{blx@keyw@\the\c@refsection @\detokenize{#2}}} - {\@secondoftwo}} - -% {<true>}{<false>} - -\protected\def\blx@ifciteseen@global{% - \ifbool{citetracker} - {\ifdef\abx@field@entrykey - {\expandafter\blx@ifseen@global - \expandafter{\abx@field@entrykey}} - {\@secondoftwo}} - {\@secondoftwo}} - -\protected\def\blx@ifciteseen@context{% - \ifbool{citetracker} - {\ifdef\abx@field@entrykey - {\expandafter\blx@ifseen@context - \expandafter{\abx@field@entrykey}} - {\@secondoftwo}} - {\@secondoftwo}} - -% {<entrykey>}{<true>}{<false>} - -\protected\def\blx@ifentryseen@global{% - \blx@xsanitizeafter\blx@ifseen@global} - -\protected\def\blx@ifentryseen@context{% - \blx@xsanitizeafter\blx@ifseen@context} - -\def\blx@ifseen@global#1{% - \ifbool{citetracker} - {\ifinlistcs{#1}{blx@bsee@\the\c@refsection}} - {\@secondoftwo}} - -\def\blx@ifseen@context#1{% - \ifbool{citetracker} - {\iftoggle{blx@footnote} - {\ifinlistcs{#1}{blx@fsee@\the\c@refsection}} - {\ifinlistcs{#1}{blx@bsee@\the\c@refsection}}} - {\@secondoftwo}} - -% {<true>}{<false>} - -\def\blx@ifciteibid@global{% - \ifbool{citetracker} - {\blx@imc@iffieldequals{entrykey}\blx@lastkey@text} - {\@secondoftwo}} - -\def\blx@ifciteibid@context{% - \ifbool{citetracker} - {\iftoggle{blx@footnote} - {\blx@imc@iffieldequals{entrykey}\blx@lastkey@foot} - {\blx@imc@iffieldequals{entrykey}\blx@lastkey@text}} - {\@secondoftwo}} - -\def\blx@ifciteibid@strict{% - \ifbool{citetracker} - {\blx@ifcitesingle - {\blx@ifciteibid@global} - {\@secondoftwo}} - {\@secondoftwo}} - -\def\blx@ifciteibid@constrict{% - \ifbool{citetracker} - {\blx@ifcitesingle - {\iftoggle{blx@footnote} - {\blx@ifmpfncheck - {\blx@imc@iffieldequals{entrykey}\blx@lastkey@foot} - {\@secondoftwo}} - {\blx@imc@iffieldequals{entrykey}\blx@lastkey@text}} - {\@secondoftwo}} - {\@secondoftwo}} - -% {<true>}{<false>} - -\def\blx@ifciteidem@global{% - \ifbool{citetracker} - {\blx@imc@iffieldequals{fullhash}\blx@lasthash@text} - {\@secondoftwo}} - -\def\blx@ifciteidem@context{% - \ifbool{citetracker} - {\iftoggle{blx@footnote} - {\blx@imc@iffieldequals{fullhash}\blx@lasthash@foot} - {\blx@imc@iffieldequals{fullhash}\blx@lasthash@text}} - {\@secondoftwo}} - -\let\blx@ifciteidem@strict\blx@ifciteidem@global - -\def\blx@ifciteidem@constrict{% - \ifbool{citetracker} - {\iftoggle{blx@footnote} - {\blx@ifmpfncheck - {\blx@imc@iffieldequals{fullhash}\blx@lasthash@foot} - {\@secondoftwo}} - {\blx@imc@iffieldequals{fullhash}\blx@lasthash@text}} - {\@secondoftwo}} - -% {<true>}{<false>} - -\def\blx@ifopcit@global{% - \ifbool{citetracker} - {\blx@imc@iffieldundef{namehash} - {\@secondoftwo} - {\blx@imc@iffieldequalcs{entrykey}{blx@lastkey@text@\abx@field@namehash}}} - {\@secondoftwo}} - -\def\blx@ifopcit@context{% - \ifbool{citetracker} - {\blx@imc@iffieldundef{namehash} - {\@secondoftwo} - {\iftoggle{blx@footnote} - {\blx@imc@iffieldequalcs{entrykey}{blx@lastkey@foot@\abx@field@namehash}} - {\blx@imc@iffieldequalcs{entrykey}{blx@lastkey@text@\abx@field@namehash}}}} - {\@secondoftwo}} - -\def\blx@ifopcit@strict{% - \ifbool{citetracker} - {\blx@ifcitesingle - {\blx@ifopcit@global} - {\@secondoftwo}} - {\@secondoftwo}} - -\def\blx@ifopcit@constrict{% - \ifbool{citetracker} - {\blx@ifcitesingle - {\blx@imc@iffieldundef{namehash} - {\@secondoftwo} - {\iftoggle{blx@footnote} - {\blx@ifmpfncheck - {\blx@imc@iffieldequalcs{entrykey}{blx@lastkey@foot@\abx@field@namehash}} - {\@secondoftwo}} - {\blx@imc@iffieldequalcs{entrykey}{blx@lastkey@text@\abx@field@namehash}}}} - {\@secondoftwo}} - {\@secondoftwo}} - -% {<true>}{<false>} - -\def\blx@ifloccit@global{% - \ifbool{citetracker} - {\blx@loccit@check{text}} - {\@secondoftwo}} - -\def\blx@ifloccit@context{% - \ifbool{citetracker} - {\iftoggle{blx@footnote} - {\blx@loccit@check{foot}} - {\blx@loccit@check{text}}} - {\@secondoftwo}} - -\def\blx@ifloccit@strict{% - \ifbool{citetracker} - {\blx@ifcitesingle - {\blx@loccit@numcheck{text}} - {\@secondoftwo}} - {\@secondoftwo}} - -\def\blx@ifloccit@constrict{% - \ifbool{citetracker} - {\blx@ifcitesingle - {\iftoggle{blx@footnote} - {\blx@ifmpfncheck - {\blx@loccit@numcheck{foot}} - {\@secondoftwo}} - {\blx@loccit@numcheck{text}}} - {\@secondoftwo}} - {\@secondoftwo}} - -\def\blx@loccit@check#1{% - \blx@imc@iffieldundef{postnote} - {\@secondoftwo} - {\blx@imc@iffieldequalcs{postnote}{blx@lastnote@#1@\abx@field@entrykey}}} - -\def\blx@loccit@numcheck#1{% - \blx@imc@iffieldundef{postnote} - {\@secondoftwo} - {\expandafter\blx@imc@ifpages - \expandafter{\abx@field@postnote} - {\blx@imc@iffieldequalcs{postnote}{blx@lastnote@#1@\abx@field@entrykey}} - {\@secondoftwo}}} - -% {<true>}{<false>} - -\def\blx@ifmpfncheck{% - \ifnum\numexpr\value\@mpfn-\blx@lastmpfn<\tw@ - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi} - -\def\blx@mpfnsave{% - \xdef\blx@lastmpfn{\the\value\@mpfn}} - -\def\blx@mpfnreset{% - \global\let\blx@lastmpfn\z@} - -\blx@mpfnreset - -% {<true>}{<false>} - -\def\blx@imc@iffirstonpage{% - \ifbool{pagetracker} - {\iftoggle{blx@footnote} - {\blx@iffirstonpage{fnpage}} - {\blx@iffirstonpage{page}}} - {\@secondoftwo}} - -\def\blx@iffirstonpage#1{% - \ifcsundef{blx@#1@\number\c@instcount} - {\@secondoftwo} - {\expandafter\blx@iffirstonpage@i - \expandafter{\number\numexpr\c@instcount-1}{#1}}} - -\def\blx@iffirstonpage@i#1#2{% - \ifcsundef{blx@#2@#1} - {\ifnum#1>\@ne - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi - {\expandafter\blx@iffirstonpage@i - \expandafter{\number\numexpr#1-1}{#2}} - {\@firstoftwo}} - {\ifnum\csuse{blx@#2@\number\c@instcount}=% - \csuse{blx@#2@#1} % - \expandafter\@secondoftwo - \else - \expandafter\@firstoftwo - \fi}} - -% {<count1>}{<count2>}{<true>}{<false>} - -\def\blx@imc@ifsamepage#1#2{% - \ifbool{pagetracker} - {\ifcsundef{blx@page@\number\numexpr#1} - {\ifcsundef{blx@fnpage@\number\numexpr#1} - {\@secondoftwo} - {\blx@ifsamepage{#1}{#2}{fnpage}}} - {\blx@ifsamepage{#1}{#2}{page}}} - {\@secondoftwo}} - -\def\blx@ifsamepage#1#2#3{% - \ifcsundef{blx@page@\number\numexpr#2} - {\ifcsundef{blx@fnpage@\number\numexpr#2} - {\@secondoftwo} - {\blx@ifsamepage@i{#1}{#2}{#3}{fnpage}}} - {\blx@ifsamepage@i{#1}{#2}{#3}{page}}} - -\def\blx@ifsamepage@i#1#2#3#4{% - \ifnum\csuse{blx@#3@\number\numexpr#1}=% - \csuse{blx@#4@\number\numexpr#2} % - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi} - -% {<string>}{<true>}{<false>} - -\protected\long\def\blx@imc@ifinteger#1{% - \begingroup - \def\do##1{\uccode`##1=`\%}% - \do\0\do\1\do\2\do\3\do\4\do\5\do\6\do\7\do\8\do\9% - \makeatletter - \catcode`\%=9 - \endlinechar\m@ne - \uppercase{\scantokens{\def\blx@tempa{#1}}}% - \ifx\blx@tempa\@empty - \aftergroup\@firstoftwo - \else - \aftergroup\@secondoftwo - \fi - \endgroup} - -% {<field>}{<true>}{<false>} - -\protected\def\blx@imc@iffieldint#1{% - \blx@imc@iffieldundef{#1} - {\@secondoftwo} - {\expandafter\expandafter - \expandafter\ifinteger - \expandafter\expandafter - \expandafter{\csname abx@field@#1\endcsname}}} - -% {<string>}{<true>}{<false>} - -\protected\def\blx@imc@ifnumeral{% - \blx@ifnum\blx@hook@ifnum} - -\protected\def\blx@imc@ifnumerals{% - \blx@ifnum\blx@hook@ifnums} - -\protected\def\blx@imc@ifpages{% - \blx@ifnum\blx@hook@ifpages} - -\long\def\blx@ifnum#1#2{% - \begingroup - \let\protect\@unexpandable@protect - \uppercase{\edef\blx@tempa{#2}}% - \ifx\blx@tempa\@empty - \aftergroup\@secondoftwo - \else - \makeatletter - \catcode`\%=9 - \endlinechar\m@ne - \everyeof{\noexpand}#1% - \uppercase{\edef\blx@tempa{\scantokens{#2}}}% - \ifx\blx@tempa\@empty - \aftergroup\@firstoftwo - \else - \aftergroup\@secondoftwo - \fi - \fi - \endgroup} - -\def\blx@hook@ifnum{% - \def\do##1{\uccode`##1=`\%}% - \do\ \do\0\do\1\do\2\do\3\do\4\do\5\do\6\do\7\do\8\do\9% - \do\i\do\v\do\x\do\l\do\c\do\d\do\m - \do\I\do\V\do\X\do\L\do\C\do\D\do\M - \blx@donumchars - \let\RN\@firstofone - \let\Rn\@firstofone} - -\def\blx@hook@ifnums{% - \blx@hook@ifnum - \def\do##1{\uccode`##1=`\%}% - \blx@dorangechars - \def\do##1{\let##1\@empty}% - \blx@dorangecmds} - -\def\blx@hook@ifpages{% - \blx@hook@ifnum - \blx@hook@ifnums - \def\do##1{\let##1\@empty}% - \blx@dopagecmds} - -% {<field>}{<true>}{<false>} - -\protected\def\blx@imc@iffieldnum#1{% - \blx@imc@iffieldundef{#1} - {\@secondoftwo} - {\expandafter\expandafter - \expandafter\blx@imc@ifnumeral - \expandafter\expandafter - \expandafter{\csname abx@field@#1\endcsname}}} - -\protected\def\blx@imc@iffieldnums#1{% - \blx@imc@iffieldundef{#1} - {\@secondoftwo} - {\expandafter\expandafter - \expandafter\blx@imc@ifnumerals - \expandafter\expandafter - \expandafter{\csname abx@field@#1\endcsname}}} - -\protected\def\blx@imc@iffieldpages#1{% - \blx@imc@iffieldundef{#1} - {\@secondoftwo} - {\expandafter\expandafter - \expandafter\blx@imc@ifpages - \expandafter\expandafter - \expandafter{\csname abx@field@#1\endcsname}}} - -% {<chars>} - -\newrobustcmd*{\DeclareNumChars}{% - \@ifstar - {\blx@defnumchars} - {\global\let\blx@donumchars\@empty - \blx@defnumchars}} - -\def\blx@defnumchars#1{% - \ifblank{#1} - {} - {\expandafter\blx@defdochars - \expandafter\blx@donumchars - \detokenize{#1}\relax}} - -% {<chars>} - -\newrobustcmd*{\DeclareRangeChars}{% - \@ifstar - {\blx@defrangechars} - {\global\let\blx@dorangechars\@empty - \blx@defrangechars}} - -\def\blx@defrangechars#1{% - \ifblank{#1} - {} - {\expandafter\blx@defdochars - \expandafter\blx@dorangechars - \detokenize{#1}\relax}} - -\def\blx@defdochars#1#2{% - \ifx#2\relax - \else - \xdef#1{% - \expandonce#1\noexpand\do - \expandafter\noexpand\csname#2\endcsname}% - \expandafter\blx@defdochars - \expandafter#1% - \fi} - -% {<cstokens>} - -\newrobustcmd*{\DeclareRangeCommands}{% - \@ifstar - {\blx@defrangecmds} - {\global\let\blx@dorangecmds\@empty - \blx@defrangecmds}} - -\def\blx@defrangecmds#1{% - \ifblank{#1} - {} - {\blx@defrangecmds@i#1&}} - -\def\blx@defrangecmds@i#1{% - \ifx% - \else - \gappto\blx@dorangecmds{\do#1}% - \expandafter\blx@defrangecmds@i - \fi} - -% {<cstokens>} - -\newrobustcmd*{\DeclarePageCommands}{% - \@ifstar - {\blx@defpagecmds} - {\global\let\blx@dopagecmds\@empty - \blx@defpagecmds}} - -\def\blx@defpagecmds#1{% - \ifblank{#1} - {} - {\blx@defpagecmds@i#1&}} - -\def\blx@defpagecmds@i#1{% - \ifx% - \else - \gappto\blx@dopagecmds{\do#1}% - \expandafter\blx@defpagecmds@i - \fi} - -\DeclareNumChars{.} -\DeclareRangeChars{~,;-+/} -\DeclareRangeCommands{% - \ \,\space\nobreakspace\addspace\addnbspace - \addthinspace\addnbthinspace\addlowpenspace - \addhighpenspace\addlpthinspace\addhpthinspace - \adddotspace\addabbrvspace\&\psq\psqq - \bibrangedash\bibdatedash\textendash\textemdash} -\DeclarePageCommands{\pno\ppno} - -% *{<code>} - -\newrobustcmd*{\NumCheckSetup}{\appto\blx@hook@ifnum} -\newcommand*{\NumcheckSetup}{\NumCheckSetup} - -% [<pagination>][<postpro>]{<string>} - -\newrobustcmd*{\blx@imc@mkpageprefix}[1][pagination]{% - \begingroup - \def\blx@tempa{\blx@mkpageprefix{page}}% - \iffieldundef{#1} - {} - {\iffieldequalstr{#1}{none} - {\def\blx@tempa{\blx@mkpageprefix@i}} - {\iffieldbibstring{#1} - {\edef\blx@tempa{\blx@mkpageprefix{\thefield{#1}}}} - {\blx@warning@entry{% - Unknown pagination type '\strfield{#1}'}}}}% - \@ifnextchar[%] - {\blx@tempa} - {\blx@tempa[\@firstofone]}} - -\protected\long\def\blx@mkpageprefix#1[#2]#3{% - \ifnumeral{#3} - {\bibstring{#1}\ppspace} - {\ifnumerals{#3} - {\bibstring{#1s}\ppspace} - {\def\pno{\bibstring{#1}}% - \def\ppno{\bibstring{#1s}}}}% - \blx@mkpageprefix@i[#2]{#3}} - -\long\def\blx@mkpageprefix@i[#1]#2{#1{#2}\endgroup} - -% [<pagination>][<postpro>]{<string>} - -\newrobustcmd*{\blx@imc@mkpagetotal}[1][bookpagination]{% - \begingroup - \def\blx@tempa{\blx@mkpagetotal{page}}% - \iffieldundef{#1} - {} - {\iffieldequalstr{#1}{none} - {\def\blx@tempa{\blx@mkpagetotal@i}} - {\iffieldbibstring{#1} - {\edef\blx@tempa{\blx@mkpagetotal{\thefield{#1}}}} - {\blx@warning@entry{% - Unknown pagination type '\strfield{#1}'}}}}% - \@ifnextchar[%] - {\blx@tempa} - {\blx@tempa[\@firstofone]}} - -\protected\long\def\blx@mkpagetotal#1[#2]#3{% - \ifnumeral{#3} - {\setbox\@tempboxa=\hbox{% - \blx@tempcnta0#3\relax - \ifnum\blx@tempcnta=\@ne - \aftergroup\@firstoftwo - \else - \aftergroup\@secondoftwo - \fi}% - {#2{#3}\ppspace\bibstring{#1}} - {#2{#3}\ppspace\bibstring{#1s}}} - {\def\pno{\bibstring{#1}}% - \def\ppno{\bibstring{#1s}}% - #2{#3}}% - \endgroup} - -\long\def\blx@mkpagetotal@i[#1]#2{#1{#2}\endgroup} - -\newcounter{mincomprange} -\newcounter{maxcomprange} -\newcounter{mincompwidth} -\setcounter{mincomprange}{10} -\setcounter{maxcomprange}{100000} -\setcounter{mincompwidth}{1} -\def\abx@rangeproclimit{100000} - -% {<string>} -% This mustn't be robust as it's likely to be used mainly tests and so -% needs to be expandable -\newcommand*{\rangelen}[1]{% - \blx@rangelen@range#1\bibrangedash\bibrangedash&} - -\def\blx@rangelen@range#1\bibrangedash#2\bibrangedash#3&{% - \ifblank{#3} - {\blx@rangelen@hyphen#1--&} - {\ifblank{#2} - {0}% n\bibrangedash - {\ifblank{#1} - {0}% \bibrangedash n - {\blx@rangelen@check{#1}{#2}}}}} - -\def\blx@rangelen@hyphen#1-#2-#3&{% - \ifblank{#3} - {1}% n - {\ifblank{#2} - {\ifblank{#1} - {\let\blx@tempb\@empty} - {\def\blx@tempb{#1}}% - \blx@rangelen@hyphen@i#3&} - {\ifblank{#1} - {0}% -n - {\blx@rangelen@check{#1}{#2}}}}} - -\def\blx@rangelen@hyphen@i#1-#2&{% - \ifblank{#1#2} - {0}% n- - {\notblank{#1} - {\ifdefempty\blx@tempb - {0} - {\expandafter\blx@rangelen@check - \expandafter{\blx@tempb}{#1}}} - {\blx@rangelen@hyphen@i#2&}}} - -\def\blx@rangelen@check#1#2{% - \blx@imc@ifinteger{#1} - {\blx@imc@ifinteger{#2} - {\the\numexpr#2-#1\relax}% n-m - {0}} - {0}} - -% <*>[<postpro>]{<string>} - -\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@value{\appto\blx@tempa}% - \let\blx@range@out@delim\blx@range@out@value - \let\blx@range@split\blx@comprange@split - \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@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@value{#1\bibrangedash}} - {\ifblank{#1} - {\blx@range@out@value{\bibrangedash#2}} - {\blx@comprange@check{#1}{#2}}}}} - -\def\blx@comprange@hyphen#1-#2-#3&{% - \ifblank{#3} - {\blx@comprange@abort} - {\ifblank{#2} - {\ifblank{#1} - {\let\blx@tempb\@empty} - {\def\blx@tempb{#1}}% - \blx@comprange@hyphen@i#3&} - {\ifblank{#1} - {\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@value - \expandafter{\blx@tempb\bibrangedash}} - {\notblank{#1} - {\ifdefempty\blx@tempb - {\blx@range@out@value{\bibrangedash#1}} - {\expandafter\blx@comprange@check - \expandafter{\blx@tempb}{#1}}} - {\blx@comprange@hyphen@i#2&}}} - -\def\blx@comprange@check#1#2{% - \blx@imc@ifinteger{#1} - {\blx@imc@ifinteger{#2} - {\blx@comprange@comp{#1}{#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}% - \def\blx@tempc{#2}% - \let\blx@tempd\blx@tempc - \ifnum\c@maxcomprange<\abx@rangeproclimit\relax - \numdef\blx@tempe\abx@rangeproclimit - \else - \numdef\blx@tempe\c@maxcomprange - \fi - \blx@tempcntc=\blx@tempe\relax - \ifnum - \ifnum\c@mincompwidth<1\space1\fi - \ifnum\c@maxcomprange<10\space1\fi - \ifnum\c@mincomprange<\blx@tempb\space\else1\fi - \ifnum\blx@tempb<\numexpr\blx@tempcntc*10\relax\else1\fi - 0=\z@ - \expandafter\blx@comprange@comp@div - \else - \expandafter\blx@comprange@end - \fi} - -\def\blx@comprange@end{% - \numdef\blx@tempb\blx@tempb - \ifnum\blx@tempe>\c@maxcomprange\relax - \numdef\blx@tempc\blx@tempc - \else - \numdef\blx@tempc\blx@tempd - \fi - \edef\blx@tempb{\blx@range@out@value{\blx@tempb\noexpand\bibrangedash\blx@tempc}}% - \blx@tempb} - -\def\blx@comprange@comp@div{% - \unless\ifnum\blx@tempb<\blx@tempcntc - \blx@tempcnta\blx@tempb\relax - \blx@tempcntb\blx@tempc\relax - \divide\blx@tempcnta\blx@tempcntc - \divide\blx@tempcntb\blx@tempcntc - \ifnum\blx@tempcnta=\blx@tempcntb - \edef\blx@tempd{\expandafter\@gobble\blx@tempd}% - \numdef\blx@tempe\blx@tempcntc - \fi - \fi - \divide\blx@tempcntc10\relax - \ifnum - \ifnum\blx@tempcntc<10 1\fi - \ifnum\blx@tempcntc>\c@mincompwidth\else 1\fi - 0=\z@ - \expandafter\blx@comprange@comp@div - \else - \expandafter\blx@comprange@end - \fi} - -\def\blx@range@chunk#1{% - \blx@range@chunk@semcol#1;&} - -\def\blx@range@chunk@semcol#1;#2&{% - \notblank{#1} - {\blx@range@chunk@comma#1,&} - {}% - \notblank{#2} - {\notblank{#1}{\blx@range@out@delim{;\space}}{}% - \blx@range@chunk@semcol#2&} - {}} - -\def\blx@range@chunk@comma#1,#2&{% - \notblank{#1} - {\expandafter\blx@range@split - \expandafter{\@firstofone#1}} - {}% - \notblank{#2} - {\notblank{#1}{\blx@range@out@delim{,\space}}{}% - \blx@range@chunk@comma#2&} - {}} - -% <*>[<postpro>]{<string>} - -\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@value{\appto\blx@tempa}% - \let\blx@range@out@delim\blx@range@out@value - \let\blx@range@split\blx@firstpage@split - \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@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@value{\bibrangedash#2}} - {\blx@range@out@value{#1}}}} - -\def\blx@firstpage@hyphen#1-#2-#3&{% - \ifblank{#3} - {\blx@firstpage@abort} - {\ifblank{#1} - {\ifblank{#2} - {\blx@firstpage@hyphen@i#3&} - {\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@value{\bibrangedash#1}}} - -\newcommand*{\ppspace}{\addnbspace} -\newcommand*{\sqspace}{\addnbspace} - -\newrobustcmd*{\RN}[1]{% - \begingroup - \expandafter\RNfont - \expandafter{\romannumeral#1}% - \endgroup} -\newrobustcmd*{\Rn}[1]{% - \begingroup - \expandafter\Rnfont - \expandafter{\romannumeral#1}% - \endgroup} - -\newcommand*{\RNfont}{\uppercase} -\newcommand*{\Rnfont}{} - -% {<init>}{<entrytype>} - -\protected\def\blx@imc@usedriver#1#2{% - \begingroup - \let\finentry\blx@finentry@usedrv - \let\newblock\relax - \let\abx@macro@bibindex\@empty - \let\abx@macro@pageref\@empty - \csuse{blx@hook@bbxinit}#1% - \blx@beglangbib - \blx@driver{#2}% - \blx@endlangbib - \endgroup} - -% Punctuation - -\protected\def\blx@initunit{% - \global\togglefalse{blx@block}% - \global\togglefalse{blx@unit}% - \global\togglefalse{blx@insert}% - \global\togglefalse{blx@lastins}% - \global\togglefalse{blx@keepunit}% - \global\let\blx@unitpunct\newunitpunct - \blx@imc@resetpunctfont} - -\def\blx@begunit{% - \toggletrue{blx@tempa}% - \iftoggle{blx@insert} - {\iftoggle{blx@unit} - {\begingroup - \let\blx@begunit\@empty - \let\blx@endunit\@empty - \let\blx@endnounit\@empty - \blx@unitpunct\blx@postpunct - \endgroup - \global\togglefalse{blx@unit}% - \togglefalse{blx@tempa}} - {\blx@postpunct}% - \iftoggle{blx@block} - {\begingroup - \let\blx@begunit\@empty - \let\blx@endunit\@empty - \let\blx@endnounit\@empty - \newblockpunct - \endgroup - \global\togglefalse{blx@block}% - \togglefalse{blx@tempa}} - {}} - {}% - \blx@postpunct - \blx@imc@resetpunctfont - \iftoggle{blx@tempa} - {} - {\global\togglefalse{blx@insert}}% - \blx@leavevmode - \begingroup} - -\def\blx@endunit{% - \endgroup - \global\toggletrue{blx@insert}% - \global\toggletrue{blx@lastins}} - -\def\blx@nounit{% - \global\togglefalse{blx@lastins}} - -\def\blx@endnounit{% - \endgroup\blx@nounit} - -\protected\def\blx@imc@newblock{% - \global\toggletrue{blx@block}}% - -\protected\def\blx@imc@newunit{% - \iftoggle{blx@keepunit} - {} - {\global\let\blx@unitpunct\newunitpunct - \global\toggletrue{blx@unit}}} - -\protected\def\blx@imc@setunit{% - \@ifstar\blx@setunit@i\blx@setunit} - -\long\def\blx@setunit#1{% - \iftoggle{blx@keepunit} - {} - {\long\gdef\blx@unitpunct{#1}% - \global\toggletrue{blx@unit}}} - -\def\blx@setunit@i{% - \iftoggle{blx@lastins} - {\blx@setunit} - {\@gobble}} - -\protected\def\blx@imc@printunit{% - \@ifstar\blx@printunit@i\blx@printunit} - -\def\blx@printunit#1{% - \long\gdef\blx@unitpunct{#1\global\togglefalse{blx@keepunit}}% - \global\toggletrue{blx@keepunit}% - \global\toggletrue{blx@unit}} - -\def\blx@printunit@i{% - \iftoggle{blx@lastins} - {\blx@printunit} - {\@gobble}} - -\protected\def\blx@imc@finentry{% - \unspace\finentrypunct - \blx@postpunct - \blx@initunit} - -\protected\def\blx@finentry@usedrv{% - \blx@setunit\relax} - -\protected\def\blx@finentry@inset{% - \blx@setunit\entrysetpunct - \global\toggletrue{blx@block}} - -\blx@regimcs{% - \ifdriver \thefield \strfield \csfield \usefield \thelist \thename - \clearfield \clearlist \clearname \restorefield \restorelist \restorename - \ifcategory \ifentrycategory \ifkeyword \ifentrykeyword - \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 \iffirstcitekey \iflastcitekey - \ifnameequalcs \ifnameequals \ifnamesequal \ifnameundef \ifnamexref - \iffirstonpage \ifsamepage \savefield \savefieldcs \savelist - \savelistcs \savename \savenamecs \usedriver - \ifinteger \ifnumeral \ifnumerals \ifpages - \iffieldint \iffieldnum \iffieldnums \iffieldpages - \mkpageprefix \mkpagetotal \mkpagefirst - \newblock \newunit \setunit \printunit \finentry} - -\appto\blx@blxinit{% - \def\ifnatbibmode{\iftoggle{blx@natbib}}% - \def\ifcitation{\iftoggle{blx@citation}}% - \def\ifbibliography{\iftoggle{blx@bibliography}}% - \def\ifciteindex{\iftoggle{blx@citeindex}}% - \def\ifbibindex{\iftoggle{blx@bibindex}}% - \def\iffootnote{\iftoggle{blx@footnote}}% - \def\ifuseprefix{\iftoggle{blx@useprefix}}% - \def\ifuseauthor{\iftoggle{blx@useauthor}}% - \def\ifuseeditor{\iftoggle{blx@useeditor}}% - \def\ifusetranslator{\iftoggle{blx@usetranslator}}% - \def\ifterseinits{\iftoggle{blx@terseinits}}% - \def\iffirstinits{\iftoggle{blx@giveninits}}% legacy alias for \ifgiveninits - \def\ifgiveninits{\iftoggle{blx@giveninits}}% - \def\ifsingletitle{\iftoggle{abx@bool@singletitle}}% - \def\ifandothers#1{\iftoggle{abx@bool@more#1}}% - \protected\def\pno{\bibstring{page}}% - \protected\def\ppno{\bibstring{pages}}% - \let\nopp\relax - \protected\def\psq{\sqspace\bibstring{sequens}}% - \protected\def\psqq{\sqspace\bibstring{sequentes}}} - -% Make sure that commands which might pop up inside an \edef will be defined -% as something. If they are taken \AtBeginDocument then we assume that all will -% be well. If not, then provide a definition which will give an error outside -% of a citation context. -\AtBeginDocument{% - \protected\def\do#1{% - \ifdefined#1% - \else - \protected\def#1{\ERROR}% - \fi - }% - \docsvlist{\pno,\ppno,\nopp,\psq,\psqq}% -} - -%% Global formatting hooks - -% capitalization - -% {<text>} - -\newrobustcmd{\MakeCapital}[1]{% - \begingroup - \blx@mkcp@init - \protected@edef\blx@tempa{#1}% - \expandafter\blx@mkcp@parse\blx@tempa\@empty\blx@mkcp@end} - -\def\blx@mkcp@init{% - \def\blx@mkcp@iec{\noexpand\blx@mkcp@iec\noexpand}% - \def\blx@mkcp@bbl{\noexpand\blx@mkcp@bbl\noexpand}% - \def\blx@mkcp@sgl{\noexpand\blx@mkcp@sgl\noexpand}% - \def\blx@mkcp@dbl{\noexpand\blx@mkcp@dbl\noexpand}% - \def\do##1{\def##1{\blx@mkcp@sgl##1}}\abx@dosingleaccents - \def\do##1{\def##1{\blx@mkcp@dbl##1}}\abx@dodoubleaccents - \def\IeC##1{\blx@mkcp@iec\IeC{##1}}% - \def\@tabacckludge##1{% - \expandafter\blx@mkcp@sgl\csname\string##1\endcsname}} - -\begingroup -\catcode`\"=\active -\gappto\blx@mkcp@init{% - \ifnum\catcode`\"=\active - \def"#1{\blx@mkcp@bbl"\noexpand#1}% - \fi} -\endgroup - -\def\blx@mkcp@parse{% - \futurelet\@let@token\blx@mkcp@eval} - -\long\def\blx@mkcp@eval{% - \ifx\@let@token\blx@mkcp@iec - \expandafter\blx@mkcp@getiec - \fi - \ifx\@let@token\blx@mkcp@bbl - \expandafter\blx@mkcp@gettwo - \fi - \ifx\@let@token\blx@mkcp@sgl - \expandafter\blx@mkcp@gettwo - \fi - \ifx\@let@token\blx@mkcp@dbl - \expandafter\blx@mkcp@getthree - \fi - \blx@mkcp@case} - -\def\blx@mkcp@getiec#1\blx@mkcp@case#2#3#4{% - \blx@mkcp@case{#2#3{#4}}} - -\def\blx@mkcp@gettwo#1\blx@mkcp@case#2#3#4{% - \blx@mkcp@case{#2#3#4}} - -\def\blx@mkcp@getthree#1\blx@mkcp@case#2#3#4#5{% - \blx@mkcp@case{#2#3#4#5}} - -\long\def\blx@mkcp@case#1{% - \begingroup - \def\i{I}\def\j{J}% - \def\do##1##2{\let##1##2\do}% - \expandafter\do\@uclclist\relax{\relax\@gobble}% - \uppercase{\protected@edef\blx@tempa{\endgroup\blx@mkcp@end#1}}% - \blx@tempa} - -\protected\long\def\blx@mkcp@end#1\blx@mkcp@end{% - \let\blx@mkcp@iec\noexpand - \let\blx@mkcp@bbl\noexpand - \let\blx@mkcp@sgl\noexpand - \let\blx@mkcp@dbl\noexpand - \protected@edef\blx@tempa{\endgroup#1}% - \blx@tempa} - -\def\abx@dosingleaccents{% - \do\"\do\'\do\`\do\^\do\~\do\=\do\.% - \do\H\do\b\do\c\do\d\do\r\do\u\do\v} -\def\abx@dodoubleaccents{% - \do\t} - -% {<text>} - -\newrobustcmd*{\MakeSentenceCase}{% - \@ifstar\blx@mksc@i\blx@mksc@ii} - -\def\blx@mksc@i{% - \ifdef\abx@field@langid - {\xifinlist\abx@field@langid\blx@cmksc@lang - {\blx@mksc@ii} - {\@firstofone}} - {\blx@mksc@ii}} - -\long\def\blx@mksc@ii#1{% - \begingroup - \let\blx@tempa\@empty - \let\blx@tempb\@empty - \blx@mksc@init - \protected@edef\@tempa{#1}% - \expandafter\blx@mksc@parse\@tempa\blx@mksc@end} - -\def\blx@mksc@init{% - \blx@mkcp@init - \def\blx@mkcp@nil{\noexpand\blx@mkcp@nil\noexpand}% - \def\i{\blx@mkcp@nil\i}\def\j{\blx@mkcp@nil\j}% - \def\do##1{% - \ifx##1\relax - \else - \def##1{\blx@mkcp@nil##1}% - \expandafter\do - \fi}% - \expandafter\do\@uclclist\relax} - -\def\blx@mksc@parse{% - \futurelet\@let@token\blx@mksc@eval} - -\def\blx@mksc@eval{% - \ifx\@let@token\blx@mksc@end - \expandafter\blx@mksc@end - \fi - \ifx\@let@token\bgroup - \expandafter\blx@mksc@group - \fi - \ifx\@let@token\@sptoken - \expandafter\blx@mksc@space - \fi - \ifx\@let@token\blx@mkcp@nil - \expandafter\blx@mksc@getone - \fi - \ifx\@let@token\blx@mkcp@iec - \expandafter\blx@mksc@getiec - \fi - \ifx\@let@token\blx@mkcp@bbl - \expandafter\blx@mksc@gettwo - \fi - \ifx\@let@token\blx@mkcp@sgl - \expandafter\blx@mksc@gettwo - \fi - \ifx\@let@token\blx@mkcp@dbl - \expandafter\blx@mksc@getthree - \fi - \if\noexpand\@let@token\relax - \expandafter\blx@mksc@cs - \fi - \blx@mksc@other} - -\def\blx@mksc@end#1\blx@mksc@end{% - \blx@mksc@eject - \let\blx@mkcp@nil\noexpand - \let\blx@mkcp@iec\noexpand - \let\blx@mkcp@bbl\noexpand - \let\blx@mkcp@sgl\noexpand - \let\blx@mkcp@dbl\noexpand - \let\MakeUppercase\relax - \let\MakeLowercase\relax - \protected@edef\blx@tempa{\endgroup\blx@tempa}% - \blx@tempa} - -\long\def\blx@mksc@group#1\blx@mksc@other#2{% - \futurelet\@let@token\blx@mksc@ingroup#2&{#2}% - \blx@mksc@endhead - \blx@mksc@parse} - -\long\def\blx@mksc@ingroup#1{% - \if\noexpand\@let@token\relax - \blx@mksc@locase{{#2}}% - \else - \blx@mksc@nocase{{#2}}% - \fi} - -\def\blx@mksc@space{\def\blx@mksc@space##1\blx@mksc@other} -\csuse{blx@mksc@space} {% - \blx@mksc@anycase{ }% - \blx@mksc@endhead - \blx@mksc@parse} - -\long\def\blx@mksc@cs#1\blx@mksc@other#2{% - \ifcat\noexpand~\noexpand#2% - \blx@mksc@locase{#2}% - \else - \blx@mksc@nocase{#2}% - \fi - \blx@mksc@endhead - \blx@mksc@parse} - -\def\blx@mksc@getiec#1\blx@mksc@other#2#3#4{% - \blx@mksc@other{#2#3{#4}}} - -\def\blx@mksc@getone#1\blx@mksc@other#2#3{% - \blx@mksc@other{#2#3}} - -\def\blx@mksc@gettwo#1\blx@mksc@other#2#3#4{% - \blx@mksc@other{#2#3#4}} - -\def\blx@mksc@getthree#1\blx@mksc@other#2#3#4#5{% - \blx@mksc@other{#2#3#4#5}} - -\long\def\blx@mksc@other#1{% - \blx@mksc@locase{#1}% - \blx@mksc@endhead - \blx@mksc@parse} - -\def\blx@mksc@locase{% - \appto\blx@tempb} - -\def\blx@mksc@nocase{% - \blx@mksc@eject - \appto\blx@tempa} - -\def\blx@mksc@anycase{% - \ifx\blx@tempb\@empty - \expandafter\appto - \expandafter\blx@tempa - \else - \expandafter\appto - \expandafter\blx@tempb - \fi} - -\def\blx@mksc@eject{% - \ifx\blx@tempb\@empty - \else - \eappto\blx@tempa{\noexpand\MakeLowercase{\expandonce\blx@tempb}}% - \let\blx@tempb\@empty - \fi} - -\def\blx@mksc@endhead{% - \ifx\blx@tempb\@empty - \else - \eappto\blx@tempa{\noexpand\MakeCapital{\expandonce\blx@tempb}}% - \let\blx@tempb\@empty - \fi - \let\blx@mksc@endhead\relax} - -% {<language,language,...>} - -\newrobustcmd*{\DeclareCaseLangs}{% - \@ifstar - {\blx@defcaselangs} - {\global\let\blx@cmksc@lang\@empty - \blx@defcaselangs}} - -\def\blx@defcaselangs#1{% - \ifblank{#1} - {} - {\forcsvlist{\listgadd\blx@cmksc@lang}{#1}}} - -\DeclareCaseLangs{% - american,british,canadian, - english,USenglish,UKenglish, - australian,newzealand} - -%% Main formatting commands - -% [<entrytype>]{<name>}{<definiton>} - -\newrobustcmd*{\DeclareNameFormat}{% - \@ifstar - {\blx@defformat\blx@defnameformat{nfd}*} - {\blx@defformat\blx@defnameformat{nfd}{}}} -\newrobustcmd*{\DeclareIndexNameFormat}{% - \@ifstar - {\blx@defformat\blx@defnameformat{nid}*} - {\blx@defformat\blx@defnameformat{nid}{}}} - -\newrobustcmd*{\DeclareListFormat}{% - \@ifstar - {\blx@defformat\blx@defplainformat{lfd}*} - {\blx@defformat\blx@defplainformat{lfd}{}}} -\newrobustcmd*{\DeclareIndexListFormat}{% - \@ifstar - {\blx@defformat\blx@defplainformat{lid}*} - {\blx@defformat\blx@defplainformat{lid}{}}} - -\newrobustcmd*{\DeclareFieldFormat}{% - \@ifstar - {\blx@defformat\blx@defplainformat{ffd}*} - {\blx@defformat\blx@defplainformat{ffd}{}}} -\newrobustcmd*{\DeclareIndexFieldFormat}{% - \@ifstar - {\blx@defformat\blx@defplainformat{fid}*} - {\blx@defformat\blx@defplainformat{fid}{}}} - -% {<macro>}{<class>}{<*>} - -\def\blx@defformat#1#2#3{% - \@ifnextchar[%] - {\blx@defformat@i{#1}{#2}{#3}} - {\blx@defformat@i{#1}{#2}{#3}[*]}} - -% {<macro>}{<class>}{<*>}[<entrytype>]{<name>} - -\def\blx@defformat@i#1#2#3[#4]#5{% - \notblank{#3} - {\blx@resetformat{#2}{#5}} - {}% - \def\blx@defformat@a{#2}% - \def\blx@defformat@b{#4}% - \blx@xsanitizeafter{\def\blx@defformat@c}{#5}% - \afterassignment\blx@defformat@ii - #1} - -\def\blx@defformat@ii{% - \expandafter\forcsvlist - \expandafter\blx@defformat@iii - \expandafter{\blx@defformat@b}} - -\def\blx@defformat@iii#1{% - \cslet{abx@\blx@defformat@a @#1@\blx@defformat@c}\blx@defformat@d} - -\def\blx@defplainformat{% - \long\def\blx@defformat@d##1} - -\def\blx@defnameformat{% - \long\def\blx@defformat@d##1##2##3##4##5##6##7##8} - -\def\blx@resetformat#1#2{% - \let\blx@saved@do\do - \def\do##1{\blx@resetformat@i{#1}{#2}{##1}}% - \blx@safe@actives - \abx@dotypes - \blx@rest@actives - \let\do\blx@saved@do} - -\def\blx@resetformat@i#1#2#3{% - \ifcsdef{abx@#1@#3@#2} - {\csundef{abx@#1@#3@#2}} - {}} - -% {<name>}{<name>} - -\def\blx@letformat#1#2{% - \blx@safe@actives - \afterassignment\blx@rest@actives - \csletcs{#1}{#2}} - -% [aliastype]{aliasname}[formattype]{formatname} - -\def\blx@defalias#1{% - \@ifnextchar[%] - {\blx@defalias@i{#1}} - {\blx@defalias@i{#1}[*]}} -\def\blx@defalias@i#1[#2]#3{% - \@ifnextchar[%] - {\blx@defalias@ii{#1}{#2}{#3}} - {\blx@defalias@ii{#1}{#2}{#3}[*]}} -\def\blx@defalias@ii#1#2#3[#4]#5{% - \blx@safe@actives - \afterassignment\blx@rest@actives - \csedef{abx@#1@#2@#3}{% - \expandonce{\csname abx@#1@#4@#5\endcsname}}} - -% {<macro>}{<id>}{<name>}{<field>} - -\def\blx@getformat#1#2#3#4{% - \blx@safe@actives - \afterassignment\blx@rest@actives - \ifcsundef{abx@#2@\blx@imc@thefield{entrytype}@#3} - {\ifcsundef{abx@#2@*@#3} - {\ifcsundef{abx@#2@\blx@imc@thefield{entrytype}@#4} - {\ifcsundef{abx@#2@*@#4} - {\letcs#1{abx@#2@*@default}} - {\letcs#1{abx@#2@*@#4}}} - {\letcs#1{abx@#2@\blx@imc@thefield{entrytype}@#4}}} - {\letcs#1{abx@#2@*@#3}}} - {\letcs#1{abx@#2@\blx@imc@thefield{entrytype}@#3}}} - -% [<entrytype>]{<name>} - -\newrobustcmd*{\savefieldformat}[2][*]{\blx@save{abx@ffd@#1@#2}} -\newrobustcmd*{\savelistformat}[2][*]{\blx@save{abx@lfd@#1@#2}} -\newrobustcmd*{\savenameformat}[2][*]{\blx@save{abx@nfd@#1@#2}} - -\newrobustcmd*{\restorefieldformat}[2][*]{\blx@restore{abx@ffd@#1@#2}} -\newrobustcmd*{\restorelistformat}[2][*]{\blx@restore{abx@lfd@#1@#2}} -\newrobustcmd*{\restorenameformat}[2][*]{\blx@restore{abx@nfd@#1@#2}} - -% [<entrytype>]{<name>}{<true>}{<false>} - -\newrobustcmd*{\iffieldformatundef}[2][*]{\ifcsundef{abx@ffd@#1@#2}} -\newrobustcmd*{\iflistformatundef}[2][*]{\ifcsundef{abx@lfd@#1@#2}} -\newrobustcmd*{\ifnameformatundef}[2][*]{\ifcsundef{abx@nfd@#1@#2}} - -% [<entrytype>]{<alias>}[<entrytype>]{<name>} - -\newrobustcmd*{\DeclareNameAlias}{\blx@defalias{nfd}} -\newrobustcmd*{\DeclareIndexNameAlias}{\blx@defalias{nid}} - -\newrobustcmd*{\DeclareListAlias}{\blx@defalias{lfd}} -\newrobustcmd*{\DeclareIndexListAlias}{\blx@defalias{lid}} - -\newrobustcmd*{\DeclareFieldAlias}{\blx@defalias{ffd}} -\newrobustcmd*{\DeclareIndexFieldAlias}{\blx@defalias{fid}} - -% [<format>]{<text>} - -\newrobustcmd{\blx@imc@printtext}[2][]{% - \ifblank{#2} - {\blx@nounit} - {\ifblank{#1} - {\let\blx@theformat\@firstofone} - {\blx@getformat\blx@theformat{ffd}{#1}{}}% - \ifdefvoid\blx@theformat - {\blx@nounit} - {\blx@begunit - \blx@theformat{#2}% - \blx@endunit}}} - -% [<format>]{<field>} - -\newrobustcmd*{\blx@imc@printfield}[2][]{% - \blx@imc@iffieldundef{#2} - {\blx@nounit} - {\blx@getformat\blx@theformat{ffd}{#1}{#2}% - \ifdefvoid\blx@theformat - {\blx@nounit} - {\blx@begunit - \def\currentfield{#2}% - \expandafter\expandafter - \expandafter\blx@theformat - \expandafter\expandafter - \expandafter{\csname abx@field@#2\endcsname}% - \blx@endunit}}} - -% [<format>]{<field>} - -\newcommand*{\blx@imc@indexfield}[2][]{% - \blx@imc@iffieldundef{#2} - {} - {\blx@getformat\blx@theformat{fid}{#1}{#2}% - \ifdefvoid\blx@theformat - {} - {\begingroup - \def\currentfield{#2}% - \letcs\blx@tempa{abx@field@#2}% - \expandafter\blx@theformat\expandafter{\blx@tempa}% - \endgroup}}} - -% [<format>]{<file>} - -\newrobustcmd*{\blx@imc@printfile}[2][]{% - \iftoggle{blx@loadfiles} - {\IfFileExists{#2} - {\listxadd\blx@list@req@edit{#2}% - \blx@imc@printtext[#1]{\input{#2}\unspace}} - {\blx@nounit}} - {\blx@nounit}} - -% {<macro>}[<format>][<start>-<stop>] -% => <macro>{<format>}{<start>}{<stop>} - -\def\blx@listargs#1{% - \@ifnextchar[%] - {\blx@listargs@i{#1}} - {#1{}{}{}}} - -\def\blx@listargs@i#1[#2]{% - \@ifnextchar[%] - {\blx@listargs@ii{#1}{#2}} - {#1{#2}{}{}}} - -\def\blx@listargs@ii#1#2[#3]{% - \blx@listargs@iii{#1}{#2}#3&} - -\def\blx@listargs@iii#1#2#3-#4&{% - #1{#2}{#3}{#4}} - -% [<format>][<start>-<stop>]{<namelist>} - -\protected\def\blx@imc@printnames{% - \blx@listargs\blx@printnames} - -% {<format>}{<start>}{<stop>}{<namelist>} - -\def\blx@printnames#1#2#3#4{% - \blx@imc@ifnameundef{#4} - {\blx@nounit} - {\blx@getformat\blx@theformat{nfd}{#1}{#4}% - \ifdefvoid\blx@theformat - {\blx@nounit} - {\blx@begunit - \blx@namesetup{#2}{#3}{#4}% - \expandafter\blx@nameparser\blx@thedata{}&% - \blx@endunit}}} - -\def\blx@namesetup#1#2#3{% - \def\currentname{#3}% - \c@listcount\@ne - \c@listtotal\csname c@#3\endcsname - \blx@namesetup@i{#3}% - \ifblank{#1} - {\c@liststart\@ne} - {\ifnum#1<\@ne - \c@liststart\@ne - \else - \c@liststart#1\relax - \fi}% - \ifblank{#2} - {\c@liststop\c@listtotal - \ifnum\c@liststop>\c@maxnames - \c@liststop\c@minnames - \ifnum\c@uniquelist>\c@liststop - \c@liststop\c@uniquelist - \fi - \fi} - {\ifnum#2>\c@listtotal - \c@liststop\c@listtotal - \else - \ifnum#2<\@ne - \c@liststop\@ne - \else - \c@liststop#2\relax - \fi - \fi}% - \let~\bibnamedelima - \blx@namecodes} - -\def\blx@namesetup@i#1{% - \expandafter\expandafter - \expandafter\blx@namesetup@ii\csname abx@name@#1\endcsname} - -\def\blx@namesetup@ii#1#2{% - \c@uniquelist\z@ - \ifblank{#1} - {} - {\setkeys{blx@opt@name}{#1}}% - \def\blx@thedata{#2}} - -\define@key{blx@opt@name}{uniquelist}{\c@uniquelist#1\relax} -\define@key{blx@opt@name}{uniquename}{\c@uniquename#1\relax} -\define@key{blx@opt@name}{hash}{\edef\abx@field@hash{\detokenize{#1}}} - -\newrobustcmd*{\bibinitperiod}{\adddot} -\newrobustcmd*{\bibinitdelim}{\addnbspace} -\newrobustcmd*{\bibinithyphendelim}{.\mbox{-}} -\newrobustcmd*{\bibnamedelima}{\addhighpenspace} -\newrobustcmd*{\bibnamedelimb}{\addlowpenspace} -\newrobustcmd*{\bibnamedelimc}{\addhighpenspace} -\newrobustcmd*{\bibnamedelimd}{\addlowpenspace} -\newrobustcmd*{\bibnamedelimi}{\addnbspace} - -% [<format>][<start>-<stop>]{<namelist>} - -\protected\def\blx@imc@indexnames{% - \blx@listargs\blx@indexnames} - -% {<format>}{<start>}{<stop>}{<namelist>} - -\def\blx@indexnames#1#2#3#4{% - \blx@imc@ifnameundef{#4} - {} - {\blx@getformat\blx@theformat{nid}{#1}{#4}% - \ifdefvoid\blx@theformat - {} - {\begingroup - \blx@namesetup{#2}{#3}{#4}% - \blx@indexnamesetup - \expandafter\blx@nameparser\blx@thedata{}&% - \endgroup}}} - -\def\blx@indexnamesetup{% - \let\bibinitperiod\bibindexinitperiod - \let\bibinitdelim\bibindexinitdelim - \let\bibinithyphendelim\bibindexinithyphendelim - \let\bibnamedelima\bibindexnamedelima - \let\bibnamedelimb\bibindexnamedelimb - \let\bibnamedelimc\bibindexnamedelimc - \let\bibnamedelimd\bibindexnamedelimd - \let\bibnamedelimi\bibindexnamedelimi} - -% {<name1>}{<name2>}{...} - -\long\def\blx@nameparser#1{% - \ifblank{#1} - {\blx@namebreak} - {\ifnum\c@listcount<\c@liststart - \else - \blx@nameparser@i#1% - \fi - \advance\c@listcount\@ne - \ifnum\c@listcount>\c@liststop - \expandafter\blx@namebreak - \fi - \blx@nameparser}} - -\long\def\blx@nameparser@i#1{% - \ifblank{#1} - {} - {\setkeys{blx@opt@name}{#1}}% - \blx@theformat} - -\long\def\blx@namebreak#1&{} - -% [<format>][<start>-<stop>]{<plainlist>} - -\protected\def\blx@imc@printlist{% - \blx@listargs\blx@printlist} - -% {<format>}{<start>}{<stop>}{<plainlist>} - -\def\blx@printlist#1#2#3#4{% - \blx@imc@iflistundef{#4} - {\blx@nounit} - {\blx@getformat\blx@theformat{lfd}{#1}{#4}% - \ifdefvoid\blx@theformat - {\blx@nounit} - {\blx@begunit - \blx@listsetup{#2}{#3}{#4}% - \expandafter\blx@listparser\blx@thedata{}&% - \blx@endunit}}} - -\def\blx@listsetup#1#2#3{% - \def\currentlist{#3}% - \c@listcount\@ne - \expandafter\c@listtotal\csname c@#3\endcsname - \letcs\blx@thedata{abx@list@#3}% - \ifblank{#1} - {\c@liststart\@ne} - {\ifnum#1<\@ne - \c@liststart\@ne - \else - \c@liststart#1\relax - \fi}% - \ifblank{#2} - {\c@liststop\c@listtotal - \ifnum\c@listtotal>\c@maxitems - \c@liststop\c@minitems - \fi} - {\ifnum#2>\c@listtotal - \c@liststop\c@listtotal - \else - \ifnum#2<\@ne - \c@liststop\@ne - \else - \c@liststop#2\relax - \fi - \fi}} - -% [<format>][<start>-<stop>]{<plainlist>} - -\protected\def\blx@imc@indexlist{% - \blx@listargs\blx@indexlist} - -% {<format>}{<start>}{<stop>}{<plainlist>} - -\def\blx@indexlist#1#2#3#4{% - \blx@imc@iflistundef{#4} - {} - {\blx@getformat\blx@theformat{lid}{#1}{#4}% - \ifdefvoid\blx@theformat - {} - {\begingroup - \blx@listsetup{#2}{#3}{#4}% - \expandafter\blx@listparser\blx@thedata{}&% - \endgroup}}} - -% {<item1>}{<item2>}{...} - -\long\def\blx@listparser#1{% - \ifblank{#1} - {\blx@listbreak} - {\ifnum\c@listcount<\c@liststart - \else - \blx@theformat{#1}% - \fi - \advance\c@listcount\@ne - \ifnum\c@listcount>\c@liststop - \expandafter\blx@listbreak - \fi - \blx@listparser}} - -\long\def\blx@listbreak#1&{} - -% <*>{<key>}{<code>} - -\protected\def\blx@imc@entrydata{% - \@ifstar - {\blx@xsanitizeafter{\blx@imc@entrydata@i\blx@saveentry}} - {\blx@xsanitizeafter{\blx@imc@entrydata@i{}}}} - -\long\def\blx@imc@entrydata@i#1#2#3{% - \blx@ifdata{#2} - {\begingroup - #1% - \blx@resetdata - \blx@getdata{#2}% - \blx@entrysetcount - \blx@setoptions@type\abx@field@entrytype - \blx@setoptions@entry - \addtocounter{instcount}\@ne - \blx@execute - \blx@beglangbib#3\blx@endlangbib - \endgroup} - {}} - -\protected\def\blx@imc@entryset#1#2{% - \blx@imc@iffieldundef{entrykey} - {} - {\begingroup - \long\def\blx@entryset@precode{#1}% - \long\def\blx@entryset@postcode{#2}% - \let\finentry\blx@finentry@inset - \let\do\blx@entryset - \blx@imc@docsvfield{entryset}% - \endgroup}} - -\def\blx@entryset#1{% - \blx@ifdata{#1} - {\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}}% - \blx@entryset@postcode - \endgroup} - {}% - \let\do\blx@entryset@i} - -\def\blx@entryset@i#1{% - \blx@ifdata{#1} - {\begingroup - \blx@resetdata - \blx@getdata{#1}% - \blx@entrysetcount - \blx@setoptions@type\abx@field@entrytype - \blx@setoptions@entry - \addtocounter{instcount}\@ne - \blx@execute - \blx@beglangbib - \blx@begunit - \blx@entryset@precode - \blx@driver{\blx@imc@thefield{entrytype}} - \blx@entryset@postcode - \blx@endunit - \blx@endlangbib - \endgroup} - {\blx@nounit}} - -\blx@regimcs{% - \printtext \printfield \printlist \printnames \printfile - \indexfield \indexlist \indexnames \entrydata \entryset} - -%% Localization - -% [<wrapper>]{<string>} - -\newrobustcmd*{\blx@imc@bibstring}[2][\@firstofone]{% - \blx@bibstring{#1}{\abx@str}{#2}} - -\newrobustcmd*{\blx@imc@biblstring}[2][\@firstofone]{% - \blx@bibstring{#1}{abx@lstr}{#2}} - -\newrobustcmd*{\blx@imc@bibsstring}[2][\@firstofone]{% - \blx@bibstring{#1}{abx@sstr}{#2}} - -\protected\def\blx@bibstring#1#2#3{% - \blx@begunit - \blx@hyphenreset - \let\bibstring\blx@imc@bibxstring - \let\biblstring\blx@imc@bibxlstring - \let\bibsstring\blx@imc@bibxsstring - \lowercase{\edef\blx@tempa{#3}}% - \ifcsundef{#2@\blx@tempa} - {\blx@warn@nostring\blx@tempa - \blx@endnounit} - {\blx@imc@ifcapital - {#1{\MakeCapital{\csuse{#2@\blx@tempa}}}} - {#1{\csuse{#2@\blx@tempa}}}% - \blx@endunit}} - -% [<wrapper>]{<string>} - -\newrobustcmd*{\blx@imc@bibcpstring}[2][\@firstofone]{% - \blx@bibcpstring{#1}{\abx@str}{#2}} - -\newrobustcmd*{\blx@imc@bibcplstring}[2][\@firstofone]{% - \blx@bibcpstring{#1}{abx@lstr}{#2}} - -\newrobustcmd*{\blx@imc@bibcpsstring}[2][\@firstofone]{% - \blx@bibcpstring{#1}{abx@sstr}{#2}} - -\protected\def\blx@bibcpstring#1#2#3{% - \blx@begunit - \blx@hyphenreset - \let\bibstring\blx@imc@bibxstring - \let\biblstring\blx@imc@bibxlstring - \let\bibsstring\blx@imc@bibxsstring - \lowercase{\edef\blx@tempa{#3}}% - \ifcsundef{#2@\blx@tempa} - {\blx@warn@nostring\blx@tempa - \blx@endnounit} - {#1{\MakeCapital{\csuse{#2@\blx@tempa}}}% - \blx@endunit}} - -% [<wrapper>]{<string>} - -\newrobustcmd*{\blx@imc@biblcstring}[2][\@firstofone]{% - \blx@biblcstring{#1}{\abx@str}{#2}} - -\newrobustcmd*{\blx@imc@biblclstring}[2][\@firstofone]{% - \blx@biblcstring{#1}{abx@lstr}{#2}} - -\newrobustcmd*{\blx@imc@biblcsstring}[2][\@firstofone]{% - \blx@biblcstring{#1}{abx@sstr}{#2}} - -\protected\def\blx@biblcstring#1#2#3{% - \blx@begunit - \blx@hyphenreset - \let\bibstring\blx@imc@bibxstring - \let\biblstring\blx@imc@bibxlstring - \let\bibsstring\blx@imc@bibxsstring - \lowercase{\edef\blx@tempa{#3}}% - \ifcsundef{#2@\blx@tempa} - {\blx@warn@nostring\blx@tempa - \blx@endnounit} - {#1{\MakeLowercase{\csuse{#2@\blx@tempa}}}% - \blx@endunit}} - -% [<wrapper>]{<string>} - -\newrobustcmd*{\blx@imc@bibucstring}[2][\@firstofone]{% - \blx@bibucstring{#1}{\abx@str}{#2}} - -\newrobustcmd*{\blx@imc@bibuclstring}[2][\@firstofone]{% - \blx@bibucstring{#1}{abx@lstr}{#2}} - -\newrobustcmd*{\blx@imc@bibucsstring}[2][\@firstofone]{% - \blx@bibucstring{#1}{abx@sstr}{#2}} - -\protected\def\blx@bibucstring#1#2#3{% - \blx@begunit - \blx@hyphenreset - \let\bibstring\blx@imc@bibxstring - \let\biblstring\blx@imc@bibxlstring - \let\bibsstring\blx@imc@bibxsstring - \lowercase{\edef\blx@tempa{#3}}% - \ifcsundef{#2@\blx@tempa} - {\blx@warn@nostring\blx@tempa - \blx@endnounit} - {#1{\MakeUppercase{\csuse{#2@\blx@tempa}}}% - \blx@endunit}} - -% {<string>} - -\def\blx@imc@bibxstring#1{% - \blx@bibxstring{\abx@str}{#1}} - -\def\blx@imc@bibxlstring#1{% - \blx@bibxstring{abx@lstr}{#1}} - -\def\blx@imc@bibxsstring#1{% - \blx@bibxstring{abx@sstr}{#1}} - -\def\blx@bibxstring#1#2{% - \ifcsundef{#1@#2} - {\protect\blx@warn@nostring{#2}} - {\csuse{#1@#2}}} - -% {<string>}{<true>}{<false>} - -\def\blx@imc@ifbibstring#1{% - \ifcsundef{\abx@str @\detokenize{#1}} - {\@secondoftwo} - {\@firstoftwo}} - -\def\blx@imc@ifbibxstring#1{% - \blx@xsanitizeafter\ifcsundef{\abx@str @#1} - {\@secondoftwo} - {\@firstoftwo}} - -% {<field>}{<true>}{<false>} - -\def\blx@imc@iffieldbibstring#1{% - \blx@imc@iffieldundef{#1} - {\@secondoftwo} - {\ifcsundef{\abx@str @\detokenize\expandafter - \expandafter\expandafter{% - \csname abx@field@#1\endcsname}} - {\@secondoftwo} - {\@firstoftwo}}} - -\blx@regimcs{% - \bibstring \biblstring \bibsstring - \bibxstring \bibxlstring \bibxsstring - \bibcpstring \bibcplstring \bibcpsstring - \biblcstring \biblclstring \biblcsstring - \bibucstring \bibuclstring \bibucsstring - \ifbibstring \ifbibxstring \iffieldbibstring} - -\let\blx@hook@uc\relax -\let\blx@hook@lc\relax - -\AtEndPreamble{% - \toggletrue{blx@tempa}% - \toggletrue{blx@tempb}% - \expandafter\patchcmd\csname MakeUppercase \endcsname - {\protected@edef} - {\blx@hook@uc\protected@edef} - {\togglefalse{blx@tempa}} - {}% - \expandafter\patchcmd\csname MakeLowercase \endcsname - {\protected@edef} - {\blx@hook@lc\protected@edef} - {\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{% - \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{% - \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}% - \do{references}% - \do{shorthands}% - \do{editor}% - \do{editors}% - \do{compiler}% - \do{compilers}% - \do{redactor}% - \do{redactors}% - \do{reviser}% - \do{revisers}% - \do{founder}% - \do{founders}% - \do{continuator}% - \do{continuators}% - \do{collaborator}% - \do{collaborators}% - \do{translator}% - \do{translators}% - \do{commentator}% - \do{commentators}% - \do{annotator}% - \do{annotators}% - \do{commentary}% - \do{annotations}% - \do{introduction}% - \do{foreword}% - \do{afterword}% - \do{editortr}% - \do{editorstr}% - \do{editorco}% - \do{editorsco}% - \do{editoran}% - \do{editorsan}% - \do{editorin}% - \do{editorsin}% - \do{editorfo}% - \do{editorsfo}% - \do{editoraf}% - \do{editorsaf}% - \do{editortrco}% - \do{editorstrco}% - \do{editortran}% - \do{editorstran}% - \do{editortrin}% - \do{editorstrin}% - \do{editortrfo}% - \do{editorstrfo}% - \do{editortraf}% - \do{editorstraf}% - \do{editorcoin}% - \do{editorscoin}% - \do{editorcofo}% - \do{editorscofo}% - \do{editorcoaf}% - \do{editorscoaf}% - \do{editoranin}% - \do{editorsanin}% - \do{editoranfo}% - \do{editorsanfo}% - \do{editoranaf}% - \do{editorsanaf}% - \do{editortrcoin}% - \do{editorstrcoin}% - \do{editortrcofo}% - \do{editorstrcofo}% - \do{editortrcoaf}% - \do{editorstrcoaf}% - \do{editortranin}% - \do{editorstranin}% - \do{editortranfo}% - \do{editorstranfo}% - \do{editortranaf}% - \do{editorstranaf}% - \do{translatorco}% - \do{translatorsco}% - \do{translatoran}% - \do{translatorsan}% - \do{translatorin}% - \do{translatorsin}% - \do{translatorfo}% - \do{translatorsfo}% - \do{translatoraf}% - \do{translatorsaf}% - \do{translatorcoin}% - \do{translatorscoin}% - \do{translatorcofo}% - \do{translatorscofo}% - \do{translatorcoaf}% - \do{translatorscoaf}% - \do{translatoranin}% - \do{translatorsanin}% - \do{translatoranfo}% - \do{translatorsanfo}% - \do{translatoranaf}% - \do{translatorsanaf}% - \do{byauthor}% - \do{byeditor}% - \do{byeditor}% - \do{bycompiler}% - \do{byredactor}% - \do{byreviser}% - \do{byreviewer}% - \do{byfounder}% - \do{bycontinuator}% - \do{bycollaborator}% - \do{bytranslator}% - \do{bycommentator}% - \do{byannotator}% - \do{withcommentator}% - \do{withannotator}% - \do{withintroduction}% - \do{withforeword}% - \do{withafterword}% - \do{byeditortr}% - \do{byeditorco}% - \do{byeditoran}% - \do{byeditorin}% - \do{byeditorfo}% - \do{byeditoraf}% - \do{byeditortrco}% - \do{byeditortran}% - \do{byeditortrin}% - \do{byeditortrfo}% - \do{byeditortraf}% - \do{byeditorcoin}% - \do{byeditorcofo}% - \do{byeditorcoaf}% - \do{byeditoranin}% - \do{byeditoranfo}% - \do{byeditoranaf}% - \do{byeditortrcoin}% - \do{byeditortrcofo}% - \do{byeditortrcoaf}% - \do{byeditortranin}% - \do{byeditortranfo}% - \do{byeditortranaf}% - \do{bytranslatorco}% - \do{bytranslatoran}% - \do{bytranslatorin}% - \do{bytranslatorfo}% - \do{bytranslatoraf}% - \do{bytranslatorcoin}% - \do{bytranslatorcofo}% - \do{bytranslatorcoaf}% - \do{bytranslatoranin}% - \do{bytranslatoranfo}% - \do{bytranslatoranaf}% - \do{and}% - \do{andothers}% - \do{andmore}% - \do{volume}% - \do{volumes}% - \do{involumes}% - \do{part}% - \do{jourvol}% - \do{jourser}% - \do{newseries}% - \do{oldseries}% - \do{edition}% - \do{reprint}% - \do{reprintof}% - \do{reprintas}% - \do{reprintfrom}% - \do{reviewof}% - \do{translationof}% - \do{translationas}% - \do{translationfrom}% - \do{origpubas}% - \do{origpubin}% - \do{astitle}% - \do{bypublisher}% - \do{page}% - \do{pages}% - \do{column}% - \do{columns}% - \do{line}% - \do{lines}% - \do{nodate}% - \do{verse}% - \do{verses}% - \do{section}% - \do{sections}% - \do{paragraph}% - \do{paragraphs}% - \do{in}% - \do{inseries}% - \do{ofseries}% - \do{book}% - \do{issue}% - \do{number}% - \do{chapter}% - \do{mathesis}% - \do{phdthesis}% - \do{candthesis}% - \do{resreport}% - \do{techreport}% - \do{software}% - \do{datacd}% - \do{audiocd}% - \do{version}% - \do{url}% - \do{urlfrom}% - \do{urlseen}% - \do{file}% - \do{inpreparation}% - \do{submitted}% - \do{inpress}% - \do{prepublished}% - \do{forthcoming}% - \do{library}% - \do{abstract}% - \do{annotation}% - \do{citedas}% - \do{seenote}% - \do{quotedin}% - \do{opcit}% - \do{loccit}% - \do{ibidem}% - \do{idem}% - \do{idemsf}% - \do{idemsm}% - \do{idemsn}% - \do{idempf}% - \do{idempm}% - \do{idempn}% - \do{idempp}% - \do{confer}% - \do{sequens}% - \do{sequentes}% - \do{passim}% - \do{see}% - \do{seealso}% - \do{backrefpage}% - \do{backrefpages}% - \do{thiscite}% - \do{january}% - \do{february}% - \do{march}% - \do{april}% - \do{may}% - \do{june}% - \do{july}% - \do{august}% - \do{september}% - \do{october}% - \do{november}% - \do{december}% - \do{langamerican}% - \do{langbrazilian}% - \do{langcatalan}% - \do{langcroatian}% - \do{langczech}% - \do{langdanish}% - \do{langdutch}% - \do{langenglish}% - \do{langfinnish}% - \do{langfrench}% - \do{langgerman}% - \do{langgreek}% - \do{langitalian}% - \do{langjapanese}% - \do{langlatin}% - \do{langnorwegian}% - \do{langpolish}% - \do{langportuguese}% - \do{langrussian}% - \do{langslovene}% - \do{langspanish}% - \do{langswedish}% - \do{fromamerican}% - \do{frombrazilian}% - \do{fromcatalan}% - \do{fromcroatian}% - \do{fromczech}% - \do{fromdanish}% - \do{fromdutch}% - \do{fromenglish}% - \do{fromfinnish}% - \do{fromfrench}% - \do{fromgerman}% - \do{fromgreek}% - \do{fromitalian}% - \do{fromjapanese}% - \do{fromlatin}% - \do{fromnorwegian}% - \do{frompolish}% - \do{fromportuguese}% - \do{fromrussian}% - \do{fromslovene}% - \do{fromspanish}% - \do{fromswedish}% - \do{countryde}% - \do{countryep}% - \do{countryeu}% - \do{countryfr}% - \do{countryuk}% - \do{countryus}% - \do{patent}% - \do{patentde}% - \do{patenteu}% - \do{patentfr}% - \do{patentuk}% - \do{patentus}% - \do{patreq}% - \do{patreqde}% - \do{patreqeu}% - \do{patreqfr}% - \do{patrequk}% - \do{patrequs}% -} - -\newrobustcmd*{\NewBibliographyString}[1]{% - \forcsvlist\blx@newstring{#1}} - -\def\blx@newstring#1{% - \ifcsundef{KV@blx@lbx@#1} - {\gappto\abx@dostrings{\do{#1}}% - \csgdef{KV@blx@lbx@#1}##1{\blx@defstring{#1}{##1}}} - {}} - -% in *.cbx/bbx/tex: <key> = {<string>}, -% in *.lbx: <key> = {{<longstring>}{<abbrevstring>}}, - -\def\do#1{\define@key{blx@lbx}{#1}{\blx@defstring{#1}{##1}}} -\abx@dostrings - -% in *.cbx/bbx/tex: (implicit) -% in *.lbx: inherit = {<language>}, - -\define@key{blx@lbx}{inherit}{% - \blx@lbxinput{#1}{}{\blx@err@nolang{#1}}% - \csuse{abx@strings@#1}} - -\def\blx@cfg@defstring#1#2{% - \csdef{abx@lstr@#1}{#2}% - \csdef{abx@sstr@#1}{#2}} - -\def\blx@lbx@defstring#1#2{% - \blx@lbx@defstring@i{#1}#2} -\def\blx@lbx@defstring@i#1#2#3{% - \csdef{abx@lstr@#1}{#2}% - \csdef{abx@sstr@#1}{#3}} - -% {<language>} - -\def\blx@lbxcheck#1{% - \ifcsdef{blx@lng@#1} - {\expandafter\expandafter\expandafter\IfFileExists - \expandafter\expandafter\expandafter{% - \csname blx@lng@#1\endcsname.lbx} - {} - {\blx@err@nolang{#1}}} - {\IfFileExists{#1.lbx} - {} - {\blx@err@nolang{#1}}}} - -% {<language>}{<definitions>} - -\newrobustcmd*{\DefineBibliographyExtras}[2]{% - \blx@lbxcheck{#1}% - \csgappto{blx@hook@extras@#1}{% - \blx@defbibextras{#1}{#2}}} -\@onlypreamble\DefineBibliographyExtras - -\newrobustcmd*{\UndefineBibliographyExtras}[2]{% - \blx@lbxcheck{#1}% - \csgappto{blx@hook@noextras@#1}{% - \blx@undefbibextras{#1}{#2}}} -\@onlypreamble\UndefineBibliographyExtras - -\def\blx@defbibextras#1{\csgappto{abx@extras@#1}} -\def\blx@undefbibextras#1{\csgappto{abx@noextras@#1}} - -% {<language>}{<language>} - -\def\blx@letbibextras#1#2{% - \blx@lbxinput{#2}{}{\blx@err@nolang{#2}}% - \global\csletcs{abx@extras@#1}{abx@extras@#2} - \global\csletcs{abx@noextras@#1}{abx@noextras@#2}}% - -% {<language>}{<strings>} - -\newrobustcmd*{\DefineBibliographyStrings}[2]{% - \blx@lbxcheck{#1}% - \csgappto{blx@hook@strings@#1}{% - \begingroup - \let\blx@defstring\blx@cfg@defstring - \blx@defbibstrings{#1}{#2}% - \endgroup}} -\@onlypreamble\DefineBibliographyStrings - -\def\blx@defbibstrings#1#2{% - \def\do##1{\csundef{abx@lstr@##1}\csundef{abx@sstr@##1}}% - \abx@dostrings - \csuse{abx@strings@#1}% - \setkeys{blx@lbx}{#2}% - \let\do\blx@defbibstrings@i - \csxdef{abx@strings@#1}{\abx@dostrings}% - \csgappto{abx@strings@#1}{% - \ifcsdef{\abx@str @bibliography} - {\letcs\bibname{\abx@str @bibliography}} - {\let\bibname\@empty}% - \ifcsdef{\abx@str @references} - {\letcs\refname{\abx@str @references}} - {\let\refname\@empty}% - \ifcsdef{\abx@str @shorthands} - {\letcs\biblistname{\abx@str @shorthands}} - {\let\biblistname\@empty}}} - -\def\blx@defbibstrings@i#1{% - \ifcsdef{abx@lstr@#1} - {\def\expandafter\noexpand\csname abx@lstr@#1\endcsname{% - \csexpandonce{abx@lstr@#1}}} - {\undef\expandafter\noexpand\csname abx@lstr@#1\endcsname}% - \ifcsdef{abx@sstr@#1} - {\def\expandafter\noexpand\csname abx@sstr@#1\endcsname{% - \csexpandonce{abx@sstr@#1}}} - {\undef\expandafter\noexpand\csname abx@sstr@#1\endcsname}} - -% {<language>}{<language>} - -\def\blx@letbibstrings#1#2{% - \blx@lbxinput{#2}{}{\blx@err@nolang{#2}}% - \global\csletcs{abx@strings@#1}{abx@strings@#2}}% - -% {<language>}{<exceptions>} - -\newrobustcmd*{\DefineHyphenationExceptions}[2]{% - \ifcsundef{l@#1} - {\blx@warn@nohyph{#1}} - {}% - \csgappto{blx@hook@hyph@#1}{\blx@hyphexcept{#1}{#2}}} -\@onlypreamble\DefineHyphenationExceptions - -\def\blx@hyphexcept#1#2{% - \ifcsundef{l@#1} - {\blx@warn@nohyph{#1}} - {\begingroup - \language\csname l@#1\endcsname\relax - \hyphenation{#2}% - \endgroup}} - -% {<language>}{<mapping>} - -\newrobustcmd*{\DeclareLanguageMapping}[2]{% - \csgdef{blx@lng@#1}{#2}} -\@onlypreamble\DeclareLanguageMapping - -% {<language>}{<success>}{<failure>} - -\def\blx@lbxinput#1{% - \ifcsdef{blx@lng@#1} - {\expandafter\expandafter\expandafter\blx@lbxinput@i - \expandafter\expandafter\expandafter{% - \csname blx@lng@#1\endcsname}{#1}} - {\blx@lbxinput@ii{#1}{#1}{language '#1'}}} - -% {<mapping>}{<language>} - -\def\blx@lbxinput@i#1#2{% - \global\csundef{blx@lng@#2}% - \IfFileExists{#1.lbx} - {\blx@lbxinput@ii{#2}{#1}{language '#2' -> '#1'}} - {\blx@warning@noline{% - File '#1.lbx' not found!\MessageBreak - Ignoring mapping '#2' -> '#1'}% - \blx@lbxinput{#2}}} - -% {<language>}{<lbxfile>}{<message>} - -\def\blx@lbxinput@ii#1#2#3{% - \begingroup - \setbox\@tempboxa=\hbox\bgroup - \aftergroup\endgroup - \blx@inputonce{#2.lbx}{#3} - {\global\cslet{abx@strings@#1}\@empty - \global\cslet{abx@extras@#1}\@empty - \global\cslet{abx@noextras@#1}\@empty - \blx@maplang{#1}{#1}% - \def\InheritBibliographyStrings{% - \blx@letbibstrings{#1}}% - \def\DeclareBibliographyStrings####1{% - \begingroup - \let\blx@defstring\blx@lbx@defstring - \blx@defbibstrings{#1}{####1}% - \endgroup}% - \def\InheritBibliographyExtras{\blx@letbibextras{#1}}% - \def\DeclareBibliographyExtras{\blx@defbibextras{#1}}% - \def\UndeclareBibliographyExtras{\blx@undefbibextras{#1}}% - \def\DeclareHyphenationExceptions{\blx@hyphexcept{#1}}% - \begingroup - \blx@saneccodes - \makeatletter} - {\endgroup - \csuse{blx@hook@strings@#1}% - \csuse{blx@hook@strings@#2}% - \csuse{blx@hook@extras@#1}% - \csuse{blx@hook@extras@#2}% - \csuse{blx@hook@noextras@#1}% - \csuse{blx@hook@noextras@#2}% - \csuse{blx@hook@hyph@#1}% - \csuse{blx@hook@hyph@#2}} - {\aftergroup\@firstoftwo} - {\aftergroup\@secondoftwo}% - \egroup} - -% {<language>} - -\def\blx@langsetup#1{% - \blx@lbxinput{#1} - {\edef\blx@languagename{#1}} - {\blx@warning - {Language '#1' not supported.\MessageBreak - Using fallback language '\blx@languagename'}% - \blx@lbxinput{\blx@languagename} - {\blx@maplang{#1}{\blx@languagename}} - {\blx@err@nolang{\blx@languagename}}}} - -% auxiliary macros - -% {<field base name>} - -\newrobustcmd*{\mkbibrangeshort}{% - \mkbibrangefull{short}} - -\newrobustcmd*{\mkbibrangelong}{% - \mkbibrangefull{long}} - -\newrobustcmd*{\mkbibrangeterse}{% - \mkbibrangetrunc{short}} - -\newrobustcmd*{\mkbibrangecomp}{% - \mkbibrangetrunc{long}} - -\newrobustcmd*{\mkbibrangeshortextra}{% - \mkbibrangefullextra{short}} - -\newrobustcmd*{\mkbibrangelongextra}{% - \mkbibrangefullextra{long}} - -\newrobustcmd*{\mkbibrangeterseextra}{% - \mkbibrangetruncextra{short}} - -\newrobustcmd*{\mkbibrangecompextra}{% - \mkbibrangetruncextra{long}} - -% {<short|long>}{<basename>} - -\newrobustcmd*{\mkbibrangefull}[2]{% - \iffieldundef{#2year} - {} - {\printtext[#2date]{% - \csuse{mkbibdate#1}{#2year}{#2month}{#2day}% - \iffieldundef{#2endyear} - {} - {\iffieldequalstr{#2endyear}{} - {\mbox{\bibdatedash}} - {\bibdatedash - \csuse{mkbibdate#1}{#2endyear}{#2endmonth}{#2endday}}}}}} - -\newrobustcmd*{\mkbibrangetrunc}[2]{% - \iffieldundef{#2year} - {} - {\printtext[#2date]{% - \iffieldsequal{#2year}{#2endyear} - {\iffieldsequal{#2month}{#2endmonth} - {\csuse{mkbibdate#1}{}{}{#2day}} - {\csuse{mkbibdate#1}{}{#2month}{#2day}}} - {\csuse{mkbibdate#1}{#2year}{#2month}{#2day}}% - \iffieldundef{#2endyear} - {} - {\iffieldequalstr{#2endyear}{} - {\mbox{\bibdatedash}} - {\bibdatedash - \csuse{mkbibdate#1}{#2endyear}{#2endmonth}{#2endday}}}}}} - -\newrobustcmd*{\mkbibrangefullextra}[2]{% - \iffieldundef{#2year} - {} - {\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[#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}}}}}}} - -\newrobustcmd*{\mkbibrangeyear}[1]{% - \blx@imc@clearfield{#1month}% - \blx@imc@clearfield{#1day}% - \blx@imc@clearfield{#1endmonth}% - \blx@imc@clearfield{#1endday}% - \iffieldsequal{#1year}{#1endyear} - {\blx@imc@clearfield{#1endyear}} - {}% - \mkbibrangefull{short}{#1}} - -\newrobustcmd*{\mkbibrangeyearextra}[1]{% - \blx@imc@clearfield{#1month}% - \blx@imc@clearfield{#1day}% - \blx@imc@clearfield{#1endmonth}% - \blx@imc@clearfield{#1endday}% - \iffieldsequal{#1year}{#1endyear} - {\blx@imc@clearfield{#1endyear}} - {}% - \mkbibrangefullextra{short}{#1}} - -\expandafter\newrobustcmd -\expandafter*\csname mkbibrangeiso8601\endcsname[1]{% - \iffieldundef{#1year} - {} - {\printtext[#1date]{% - \blx@isodate{#1year}{#1month}{#1day}% - \iffieldundef{#1endyear} - {} - {\addslash\blx@isodate{#1endyear}{#1endmonth}{#1endday}}}}} - -\expandafter\newrobustcmd -\expandafter*\csname mkbibrangeiso8601extra\endcsname[1]{% - \iffieldundef{#1year} - {} - {\printtext[#1date]{% - \blx@isodate[extrayear]{#1year}{#1month}{#1day}% - \iffieldundef{#1endyear} - {} - {\addslash\blx@isodate{#1endyear}{#1endmonth}{#1endday}}}}} - -\newrobustcmd*{\blx@isodate}[4][]{% - \thefield{#2}\ifblank{#1}{}{\printfield{#1}}% - \iffieldundef{#3}{}{\mbox{-}\thefield{#3}}% - \iffieldundef{#4}{}{\mbox{-}\thefield{#4}}} - -\newrobustcmd*{\mkbibdatelong}[3]{} -\newrobustcmd*{\mkbibdateshort}[3]{} -\newrobustcmd*{\bibrangedash}{\textendash} -\newrobustcmd*{\bibdatedash}{\bibrangedash} -\newrobustcmd*{\finalandcomma}{} -\newrobustcmd*{\finalandsemicolon}{} -\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}% - \or\abx@bibmonth{january}% - \or\abx@bibmonth{february}% - \or\abx@bibmonth{march}% - \or\abx@bibmonth{april}% - \or\abx@bibmonth{may}% - \or\abx@bibmonth{june}% - \or\abx@bibmonth{july}% - \or\abx@bibmonth{august}% - \or\abx@bibmonth{september}% - \or\abx@bibmonth{october}% - \or\abx@bibmonth{november}% - \or\abx@bibmonth{december}% - \else - \blx@warning@entry{Month out of range}#1% - \fi} - -\protected\def\blx@imc@printdate{} -\protected\def\blx@imc@printdateextra{} -\protected\def\blx@imc@printdatelabel{} -\protected\def\blx@imc@printdateextralabel{} -\protected\def\blx@imc@printurldate{} -\protected\def\blx@imc@printeventdate{} -\protected\def\blx@imc@printorigdate{} - -\let\blx@imc@mkdatezeros\@firstofone -\protected\def\blx@imc@stripzeros#1{% - \begingroup - \setbox\@tempboxa=\hbox\bgroup - \aftergroup\endgroup - \abx@hook@xsanitize - \if0#1\relax - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi - {\@tempcnta#1\relax - \expandafter\egroup - \number\@tempcnta - \@tempcnta#1\relax} - {\egroup#1}} - -\blx@regimcs{% - \printdate \printdateextra \printdatelabel \printdateextralabel - \printurldate \printeventdate \printorigdate \stripzeros \mkdatezeros} - -% {<language>}{<strings>} - -\def\blx@maplang#1#2{% - \csxappto{extras#1}{% - \noexpand\blx@resetpunct - \expandafter\noexpand\csname abx@extras@#2\endcsname - \expandafter\noexpand\csname abx@strings@#2\endcsname}% - \csxappto{noextras#1}{% - \noexpand\blx@resetpunct - \expandafter\noexpand\csname abx@noextras@#2\endcsname}} - -%% babel/polyglossia interface -\def\blx@beglang{\blx@clearlang\begingroup} -\def\blx@endlang{\endgroup} -\let\blx@beglangbib\blx@beglang -\let\blx@endlangbib\blx@endlang -\let\blx@beglangcite\blx@beglang -\let\blx@endlangcite\blx@endlang -\let\blx@hook@endlang\@empty -\let\blx@hook@initlang\@empty -\let\blx@imc@mainlang\@empty -\def\blx@hyphenreset{% - \ifcsundef{l@\blx@languagename} - {} - {\language\csname l@\blx@languagename\endcsname\relax}% - \ifcsundef{\blx@languagename hyphenmins} - {\blx@sethyphenmins\tw@\thr@@} - {\expandafter\expandafter\expandafter\blx@sethyphenmins - \csname\blx@languagename hyphenmins\endcsname}} -\def\blx@sethyphenmins#1#2{% - \lefthyphenmin#1\relax - \righthyphenmin#2\relax} - -\begingroup -\@makeother\# -\gdef\blx@mkautolangbabel{% - \pretocmd\select@language{\blx@langsetup{#1}} - {\ifdef\blx@thelangenv - {\def\blx@beglang{% - \blx@clearlang - \begingroup - \blx@imc@iffieldundef{langid} - {} - {\ifcsundef{l@\abx@field@langid} - {\blx@warn@nohyph{\abx@field@langid}} - {\blx@hook@initlang - \def\blx@endlang{% - \blx@hook@endlang - \csname end\blx@thelangenv\endcsname - \endgroup}% - \iftoggle{blx@autolangbib} - {\let\blx@endlangbib\blx@endlang} - {}% - \iftoggle{blx@autolangcite} - {\let\blx@endlangcite\blx@endlang} - {}% - \csname\blx@thelangenv\expandafter\endcsname - \expandafter{\abx@field@langid}}}}} - {}% - \def\blx@langstrings{}% - \def\blx@imc@mainlang{\select@language{\bbl@main@language}}% - \blx@langsetup\bbl@main@language} - {\blx@err@patch{'babel' package}% - \blx@mknoautolang}} - -\gdef\blx@mkautolangpoly{% - \catcode`\_=11% polyglossia uses "_" as a letter - \pretocmd\select@language{\blx@langsetup{#1}} - {\ifdef\blx@thelangenv - {\def\blx@beglang{% - \blx@clearlang - \begingroup - \blx@imc@iffieldundef{langid} - {} - {\ifcsundef{l@\abx@field@langid} - {\blx@warn@nohyph{\abx@field@langid}} - {\blx@hook@initlang - \def\blx@endlang{% - \blx@hook@endlang - \csname end\blx@thelangenv\endcsname - \endgroup}% - \iftoggle{blx@autolangbib} - {\let\blx@endlangbib\blx@endlang} - {}% - \iftoggle{blx@autolangcite} - {\let\blx@endlangcite\blx@endlang} - {}% - \ifcsstring{blx@thelangenv}{langname} - {\ifdef\abx@field@langidopts - {\csname\abx@field@langid\expandafter\endcsname\expandafter[\abx@field@langidopts]} - {\csname\abx@field@langid\endcsname}} - {\csname\blx@thelangenv\expandafter\endcsname - \expandafter{\abx@field@langid}}% - % These lines are equal to \blx@maplang - \blx@resetpunct - \csuse{abx@extras@\abx@field@langid}% - \csuse{abx@strings@\abx@field@langid}}}}} - {}% - % polyglossia needs this - it doesn't get the - % strings by automatically set for some reason - \def\blx@langstrings{% - \csuse{abx@extras@\languagename}% - \csuse{abx@strings@\languagename}} - \def\blx@imc@mainlang{\select@language{\bbl@main@language}}% - \blx@langsetup\bbl@main@language} - {\blx@err@patch{'polyglossia' package}% - \blx@mknoautolang}% - \catcode`\_=8} -\endgroup - -\def\blx@mknoautolang{% - \blx@lbxinput{\blx@languagename} - {} - {\blx@err@nolang{\blx@languagename}}} - -\blx@regimcs{\mainlang} - -\newrobustcmd*{\DeclareRedundantLanguages}[2]{% - \begingroup - \ifblank{#2} - {\def\do##1{% - \global\csundef{blx@rlm@##1}% - \global\csundef{blx@rlm@lang##1}}} - {\def\do##1{% - \csxdef{blx@rlm@##1}{#2}% - \csxdef{blx@rlm@lang##1}{#2}}}% - \docsvlist{#1}% - \endgroup} - -\def\blx@clearlang{% - \iftoggle{blx@clearlang} - {\iflistundef{language} - {} - {\ifnumgreater{\value{language}}{1} - {} - {\expandafter\blx@clearlang@i\abx@list@language}}} - {}} - -\def\blx@clearlang@i#1{% - \ifcsdef{blx@rlm@#1} - {\expandafter\expandafter\expandafter\forcsvlist - \expandafter\expandafter\expandafter\blx@clearlang@ii - \expandafter\expandafter\expandafter{% - \csname blx@rlm@#1\endcsname}} - {}} - -\def\blx@clearlang@ii#1{% - \ifdefstring\languagename{#1} - {\clearlist{language}} - {}} - -%% Bibtex data interface - -\def\abx@dotypes{% - \do{set}% - \do{article}% - \do{book}% - \do{mvbook}% - \do{booklet}% - \do{collection}% - \do{mvcollection}% - \do{inbook}% - \do{bookinbook}% - \do{incollection}% - \do{inproceedings}% - \do{manual}% - \do{misc}% - \do{online}% - \do{patent}% - \do{periodical}% - \do{proceedings}% - \do{mvproceedings}% - \do{report}% - \do{suppbook}% - \do{suppcollection}% - \do{suppperiodical}% - \do{thesis}% - \do{unpublished}% - \do{artwork}% - \do{audio}% - \do{commentary}% - \do{image}% - \do{inreference}% - \do{jurisdiction}% - \do{legal}% - \do{legislation}% - \do{letter}% - \do{movie}% - \do{music}% - \do{performance}% - \do{reference}% - \do{mvreference}% - \do{review}% - \do{software}% - \do{standard}% - \do{video}% - \do{customa}% - \do{customb}% - \do{customc}% - \do{customd}% - \do{custome}% - \do{customf}% -} - -\def\abx@donames{% - \do{labelname}% - \do{author}% - \do{shortauthor}% - \do{editor}% - \do{editora}% - \do{editorb}% - \do{editorc}% - \do{shorteditor}% - \do{bookauthor}% - \do{translator}% - \do{annotator}% - \do{commentator}% - \do{introduction}% - \do{foreword}% - \do{afterword}% - \do{holder}% - \do{namea}% - \do{nameb}% - \do{namec}% -} - -\def\abx@dolists{% - \do{institution}% - \do{language}% - \do{location}% - \do{organization}% - \do{origlocation}% - \do{origpublisher}% - \do{pageref}% - \do{publisher}% - \do{lista}% - \do{listb}% - \do{listc}% - \do{listd}% - \do{liste}% - \do{listf}% -} - -\def\abx@dofields{% - \do{crossref}% - \do{xref}% - \do{entrykey}% - \do{childentrykey}% - \do{entrytype}% - \do{entrysubtype}% - \do{entryset}% - \do{entrysetcount}% - \do{related}% - \do{relatedtype}% - \do{relatedstring}% - \do{keywords}% - \do{authortype}% - \do{editortype}% - \do{editoratype}% - \do{editorbtype}% - \do{editorctype}% - \do{nameatype}% - \do{namebtype}% - \do{namectype}% - \do{addendum}% - \do{booktitle}% - \do{booksubtitle}% - \do{booktitleaddon}% - \do{chapter}% - \do{doi}% - \do{edition}% - \do{eid}% - \do{eprint}% - \do{eprinttype}% - \do{eprintclass}% - \do{file}% - \do{gender}% - \do{howpublished}% - \do{indextitle}% - \do{indexsorttitle}% - \do{isan}% - \do{isbn}% - \do{ismn}% - \do{isrn}% - \do{issn}% - \do{issue}% - \do{iswc}% - \do{issuetitle}% - \do{issuesubtitle}% - \do{journaltitle}% - \do{journalsubtitle}% - \do{label}% - \do{labelalpha}% - \do{langid}% - \do{extraalpha}% - \do{labelnumber}% - \do{labeltitle}% - \do{labeldate}% - \do{extrayear}% - \do{library}% - \do{localnumber}% - \do{prefixnumber}% - \do{mainsubtitle}% - \do{maintitle}% - \do{maintitleaddon}% - \do{nameaddon}% - \do{namehash}% - \do{fullhash}% - \do{note}% - \do{number}% - \do{day}% - \do{month}% - \do{year}% - \do{endday}% - \do{endmonth}% - \do{endyear}% - \do{origlanguage}% - \do{origtitle}% - \do{origday}% - \do{origmonth}% - \do{origyear}% - \do{origendday}% - \do{origendmonth}% - \do{origendyear}% - \do{reprinttitle}% - \do{pages}% - \do{pagetotal}% - \do{pagination}% - \do{bookpagination}% - \do{part}% - \do{pubstate}% - \do{series}% - \do{shorthand}% - \do{shorthandintro}% - \do{shortjournal}% - \do{shortseries}% - \do{shorttitle}% - \do{sortinit}% - \do{subtitle}% - \do{title}% - \do{titleaddon}% - \do{eventtitle}% - \do{eventday}% - \do{eventmonth}% - \do{eventyear}% - \do{eventendday}% - \do{eventendmonth}% - \do{eventendyear}% - \do{type}% - \do{url}% - \do{urlday}% - \do{urlmonth}% - \do{urlyear}% - \do{urlendday}% - \do{urlendmonth}% - \do{urlendyear}% - \do{venue}% - \do{version}% - \do{volume}% - \do{volumes}% - \do{abstract}% - \do{annotation}% - \do{usera}% - \do{userb}% - \do{userc}% - \do{userd}% - \do{usere}% - \do{userf}% - \do{verba}% - \do{verbb}% - \do{verbc}% -} - -\def\abx@dobooleans{% - \do{singletitle}% -} - -% Used in some styles but biber-only, here to prevent warnings. -\protected\long\def\abx@dointernalfields{}% -\protected\long\def\DeclareLabelalphaTemplate#1{}% - -\def\do#1{% - \newcounter{#1}% - \newcounter{saved#1}% - \csedef{the#1}{\noexpand\the\expandonce{\csname c@#1\endcsname}}% - \csedef{thesaved#1}{\noexpand\the\expandonce{\csname c@saved#1\endcsname}}% - \appto\abx@dobooleans{\do{more#1}}} -\abx@donames -\abx@dolists -\def\do#1{\newtoggle{abx@bool@#1}} -\abx@dobooleans - -\protected\def\blx@resetdata{% - \let\blx@saved@do\do - \let\do\blx@imc@clearname - \abx@donames - \let\do\blx@imc@clearlist - \abx@dolists - \let\do\blx@imc@clearfield - \abx@dofields\do{execute}\do{options}% - \def\do##1{\togglefalse{abx@bool@##1}}% - \abx@dobooleans - \let\do\blx@saved@do - \c@citecounter\z@ - \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 - \let\do\blx@savename - \abx@donames - \let\do\blx@savelist - \abx@dolists - \let\do\blx@savefield - \abx@dofields\do{execute}\do{options}% - \let\do\blx@savebool - \abx@dobooleans - \c@savedcitecounter\c@citecounter - \let\do\blx@saved@do} - -\protected\def\blx@savename#1{% - \csletcs{etb@tgl@abx@bool@moresaved#1}{etb@tgl@abx@bool@more#1}% - \csletcs{abx@name@saved#1}{abx@name@#1}% - \csname c@saved#1\endcsname\csname c@#1\endcsname} - -\protected\def\blx@savelist#1{% - \csletcs{etb@tgl@abx@bool@moresaved#1}{etb@tgl@abx@bool@more#1}% - \csletcs{abx@list@saved#1}{abx@list@#1}% - \csname c@saved#1\endcsname\csname c@#1\endcsname} - -\protected\def\blx@savefield#1{% - \csletcs{abx@field@saved#1}{abx@field@#1}} - -\protected\def\blx@savebool#1{% - \csletcs{abx@bool@saved#1}{abx@bool@#1}} - -% {<code>} - -\protected\long\def\blx@bbl@preamble#1{% - \gappto\abx@preamble{#1}} - -% {<message>} - -\protected\def\blx@bbl@warn#1{% - \begingroup - \def\item{\MessageBreak-\space}% - \def\break{\MessageBreak\space\space}% - \edef\blx@tempa{% - BibTeX reported the following issues% - \ifdef\abx@field@entrykey - {\MessageBreak with '\abx@field@entrykey'} - {}% - :#1}% - \blx@warning@noline{\blx@tempa}% - \endgroup} - -% {<field>}{<code>} - -\newrobustcmd{\DeclareFieldInputHandler}[2]{% - \ifblank{#2} - {\csundef{blx@fih@#1}} - {\long\csdef{blx@fih@#1}##1{#2}}} -\@onlypreamble\DeclareFieldInputHandler - -% {<list>}{<code>} - -\newrobustcmd*{\DeclareListInputHandler}[2]{% - \ifblank{#2} - {\csundef{blx@lih@#1}} - {\csdef{blx@lih@#1}##1{#2}}} -\@onlypreamble\DeclareListInputHandler - -% {<name>}{<code>} - -\newrobustcmd*{\DeclareNameInputHandler}[2]{% - \ifblank{#2} - {\csundef{blx@nih@#1}} - {\csdef{blx@nih@#1}##1{#2}}} -\@onlypreamble\DeclareNameInputHandler - -% {<entrykey>}{<refsection>}{<field>}{<value>} - -\long\def\blx@bbl@addentryfield#1#2#3#4{% - \csxappto{blx@data@#2@#1}{% - \def\expandafter\noexpand\csname abx@field@#3\endcsname{#4}}} - -% {<field>}{<value>} - -\long\def\blx@bbl@addfield#1#2{% - \csxappto\blx@bbl@data{% - \def\expandafter\noexpand\csname abx@field@#1\endcsname{#2}}} - -\protected\long\def\blx@bbl@fielddef#1#2{% - \def\NewValue{#2}% - \ifcsdef{blx@fih@#1} - {\csname blx@fih@#1\endcsname{#2}% - \ifdefvoid\NewValue} - {\@secondoftwo} - {} - {\blx@bbl@addfield{#1}{\expandonce\NewValue}}} - -\protected\long\def\blx@bbl@fieldedef#1#2{% - \edef\NewValue{#2}% - \ifcsdef{blx@fih@#1} - {\csname blx@fih@#1\expandafter - \endcsname\expandafter{\NewValue}% - \ifdefvoid\NewValue} - {\@secondoftwo} - {} - {\blx@bbl@addfield{#1}{\NewValue}}} - -\protected\long\def\blx@bbl@stringdef#1#2{% - \begingroup - \edef\blx@tempa{\endgroup - \blx@bbl@fielddef{#1}{\detokenize{#2}}}% - \blx@tempa} - -% {<field>} - -\protected\def\blx@bbl@verbdef#1{% - \begingroup - \let\verb\blx@bbl@verbadd - \def\blx@tempa{#1}% - \let\NewValue\@empty} - -\protected\def\blx@bbl@verbend{% - \ifcsdef{blx@fih@\blx@tempa} - {\csname blx@fih@\blx@tempa\expandafter - \endcsname\expandafter{\NewValue}% - \ifdefvoid\NewValue} - {\@secondoftwo} - {} - {\blx@bbl@addfield{\blx@tempa}{\NewValue}}% - \endgroup} - -\protected\def\blx@bbl@verbadd{% - \begingroup - \let\do\@makeother - \dospecials - \catcode\endlinechar=12\relax - \blx@bbl@verbadd@i} - -\begingroup -\catcode`\<=12 -\catcode`\>=12 -\uccode`\<=`\ % -\uccode`\>=\endlinechar -\uppercase{\gdef\blx@bbl@verbadd@i<#1>}{% - \endgroup - \edef\NewValue{\NewValue\detokenize{#1}}} -\endgroup - -% {<counter>}{<value>} - -\protected\long\def\blx@bbl@cntdef#1#2{% - \csxappto\blx@bbl@data{% - \csname c@#1\endcsname#2\relax}} - -% {<boolean>} - -\protected\def\blx@bbl@booltrue#1{% - \csgappto\blx@bbl@data{% - \toggletrue{abx@bool@#1}}} - -\protected\def\blx@bbl@boolfalse#1{% - \csgappto\blx@bbl@data{% - \togglefalse{abx@bool@#1}}} - -% {<list}{<itemcount>}{<value>} - -\protected\def\blx@bbl@listdef#1#2#3{% - \def\NewCount{#2}% - \def\NewValue{#3}% - \ifcsdef{blx@lih@#1} - {\csname blx@lih@#1\endcsname{#3}% - \ifdefvoid\NewValue} - {\@secondoftwo} - {} - {\csxappto\blx@bbl@data{% - \csname c@#1\endcsname\NewCount\relax - \def\expandafter\noexpand\csname abx@list@#1\endcsname - {\expandonce\NewValue}}}} - - -% {<name>}{<itemcount>}{<value>} - -\protected\def\blx@bbl@namedef#1#2#3#4{% - \def\NewCount{#2}% - \def\NewOption{#3}% - \def\NewValue{#4}% - \ifcsdef{blx@nih@#1} - {\csname blx@nih@#1\endcsname{#4}% - \ifdefvoid\NewValue} - {\@secondoftwo} - {} - {\csxappto\blx@bbl@data{% - \csname c@#1\endcsname\NewCount\relax - \def\expandafter\noexpand\csname abx@name@#1\endcsname - {{\expandonce\NewOption}{\expandonce\NewValue}}}}} - -% {<entrykey>,...} - -\protected\def\blx@bbl@set#1{% - \blx@bbl@fieldedef{entryset}{\detokenize{#1}}% - \csxdef{blx@setp@\the\c@refsection @\abx@field@entrykey}{\detokenize{#1}}% - \begingroup - \blx@tempcnta\z@ - \expandafter\forcsvlist - \expandafter\blx@bbl@set@i - \expandafter{\detokenize{#1}}% - \endgroup} - -\def\blx@bbl@set@i#1{% - \advance\blx@tempcnta\@ne - \csxdef{blx@seti@\the\c@refsection @#1}{\the\blx@tempcnta}} - -% {<entrykey>} -\protected\def\blx@bbl@inset#1{% - \toggletrue{blx@setonly}% - \blx@bbl@fieldedef{entryset}{\detokenize{#1}}% - \csxdef{blx@setc@\the\c@refsection @\abx@field@entrykey}{\detokenize{#1}}} - -% {<entrykey>} -\protected\def\blx@bbl@xref#1{% BibTeX only - \ifcsdef{blx@refp@\the\c@refsection @\detokenize{#1}} - {} - {\listcsxadd{blx@refs@\the\c@refsection}{\detokenize{#1}}}% - \listcsxadd{blx@refp@\the\c@refsection @\detokenize{#1}}{\abx@field@entrykey}% - \csxdef{blx@refc@\the\c@refsection @\abx@field@entrykey}{\detokenize{#1}}} - -\def\blx@addxref#1{% BibTeX only - \blx@ifdata{#1} - {\begingroup - \def\do##1{% - \csgappto{blx@data@\the\c@refsection @##1}{% - \def\abx@field@xref{#1}}}% - \dolistcsloop{blx@refp@\the\c@refsection @#1}% - \endgroup} - {}% - \global\csundef{blx@refp@\the\c@refsection @#1}} - -% {<keyword>,...} - -\protected\def\blx@bbl@keyw#1{% - \iftoggle{blx@skipbib} - {} - {\forcsvlist{\blx@addkeyword{\abx@field@entrykey}}{#1}% - \blx@bbl@fielddef{keywords}{#1}}} - -\def\blx@addkeyword#1#2{% - \listcsxadd{blx@keyw@\the\c@refsection @\detokenize{#2}}{#1}} - -% {<options>} - -\protected\long\def\blx@bbl@options#1{% - \begingroup - \let\blx@tempa\@empty - \forcsvlist\blx@bbl@options@i{#1}% - \edef\blx@tempa{% - \endgroup - \ifx\blx@tempa\@empty - \else - \def\noexpand\abx@field@options{\expandonce\blx@tempa}% - \fi}% - \blx@tempa} - -\long\def\blx@bbl@options@i#1{\blx@bbl@options@ii#1==&} - -\long\def\blx@bbl@options@ii#1=#2=#3&{% - \ifcsundef{KV@blx@opt@ent@#1} - {\blx@warning@noline{% - Ignoring undefined option '#1'\MessageBreak - at entry '\abx@field@entrykey'}} - {\eappto\blx@tempa{% - \ifx\blx@tempa\@empty\else,\fi - \unexpanded{#1}\ifblank{#2}{}{=\unexpanded{#2}}}}} - -% \blx@data@<section>@<entrykey> data hook -% key -> data -% \blx@miss@<section> missing entries (blacklist) -% section -> keys [internal list] -% \blx@sort@<section> all entries, sorted -% section -> keys [internal list] -% \blx@sbib@<section> all entries in bibliography, sorted -% section -> keys [internal list] -% \blx@bsee@<section> seen citations, document body -% section -> keys [internal list] -% \blx@fsee@<section> seen citations, footnotes -% section -> keys [internal list] -% \blx@type@<section>@<entrytype> type hash -% type -> keys [internal list] -% \blx@subt@<section>@<entrytype> subtype hash -% subtype -> keys [internal list] -% \blx@segm@<section>@<segment> segment hash -% segment -> keys [internal list] -% \blx@keyw@<section>@<keyword> keyword hash -% keyword -> keys [internal list] -% \blx@losh@<section> shorthand hash -% section -> keys [internal list] -% \blx@catg@<category> category hash, global -% category -> keys [internal list] -% \blx@set@<section>@<entrykey> parent -> child mapping (dynamic entry sets) -% key -> key,key,... [csv list] -% \blx@setp@<section>@<entrykey> parent -> child mapping (entry sets) -% key -> key,key,... [csv list] -% \blx@setc@<section>@<entrykey> child -> parent mapping (entry sets) -% key -> key -% \blx@seti@<section>@<entrykey> child -> index mapping (entry sets) -% key -> index -% \blx@pref@<section>@<entrykey> pageref hook, temporary -% key -> pages [internal list] -% \blx@refs@<section> xref hash, temporary -% section -> parents [internal list] -% (BibTeX only) -% \blx@refp@<section>@<entrykey> parent -> child mapping (xrefs), temporary -% key -> keys [internal list] -% (BibTeX only) -% \blx@refc@<section>@<entrykey> child -> parent mapping (xrefs) -% key -> key [internal list] -% (BibTeX only) - -\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}% - \blx@setcitecounter} - -\def\blx@getdata@cite#1{% - \ifcsdef{blx@setc@\the\c@refsection @#1} - {\expandafter\expandafter\expandafter\blx@getdata - \expandafter\expandafter\expandafter{% - \csname blx@setc@\the\c@refsection @#1\endcsname}% - \blx@ifdata{#1} - {\def\abx@field@childentrykey{#1}% - \begingroup - \blx@getdata{#1}% - \edef\blx@tempa{\endgroup - \def\noexpand\abx@field@childentrytype{\abx@field@entrytype}}% - \blx@tempa} - {}} - {\blx@getdata{#1}}% - \ifcsdef{blx@seti@\the\c@refsection @#1} - {\letcs\abx@field@entrysetcount{blx@seti@\the\c@refsection @#1}} - {}} - -\def\blx@execute{% - \blx@imc@thefield{execute}} - -\def\blx@setoptions@entry{% - \blx@imc@iffieldundef{options} - {} - {\begingroup - \edef\blx@tempa{\endgroup - \noexpand\setkeys{blx@opt@ent}{\abx@field@options}}% - \blx@tempa - \blx@checkoptions@entry}} - -\def\blx@setoptions@type#1{% - \ifcsdef{blx@opts@type@#1} - {\begingroup - \edef\blx@tempa{\endgroup - \noexpand\setkeys{blx@opt@typ}{\csuse{blx@opts@type@#1}}}% - \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} - {\letcs\abx@field@entrysetcount{% - blx@seti@\the\c@refsection @\abx@field@entrykey}} - {}} - {}} - -% {<section>} - -\def\blx@bbl@refsection#1{% - \begingroup - \c@refsection#1\relax} - -\def\blx@bbl@endrefsection{% - \endgroup - \csnumgdef{blx@labelnumber@\the\c@refsection}{0}% - \iftoggle{blx@reencode}{\blx@reencode}{}} - -% {<entrykey>} - -\protected\def\blx@bbl@missing#1{% - \listcsxadd{blx@miss@\the\c@refsection}{\detokenize{#1}}% - \blx@warning@noline{% - The following entry could not be found\MessageBreak - in the database% - \ifnumgreater\c@refsection\z@ - { (refsection \the\c@refsection)} - {}:\MessageBreak - \detokenize{#1}\MessageBreak - Please verify the spelling and rerun\MessageBreak - LaTeX afterwards}} - -% {<entrykey>}{<entrytype>}{<options>} - -\protected\def\blx@bbl@entry#1#2#3{% - \begingroup - \edef\abx@field@entrykey{\detokenize{#1}}% - \blx@setoptions@type{#2}% - \blx@bbl@options{#3}% - \blx@setoptions@entry - \edef\blx@bbl@data{blx@data@\the\c@refsection @\abx@field@entrykey}% - \csuse\blx@bbl@data - \cslet\blx@bbl@data\@empty - \blx@bbl@addfield{entrykey}{\abx@field@entrykey}% - \blx@bbl@addfield{entrytype}{#2}% - \blx@imc@iffieldundef{options} - {} - {\blx@bbl@fieldedef{options}{\expandonce\abx@field@options}}} - -\protected\def\blx@bbl@endentry{% - \csuse\blx@bbl@data - \ifcsundef{blx@pref@\the\c@refsection @\abx@field@entrykey} - {} - {\blx@addpageref{\abx@field@entrykey}}% - \nottoggle{blx@setonly} - {\listcsxadd{blx@sort@\the\c@refsection}{\abx@field@entrykey}} - {\global\toggletrue{blx@addset}% - \toggletrue{blx@skipbib}% - \toggletrue{blx@skipbiblist}% - \toggletrue{blx@skiplab}}% - \nottoggle{blx@skipbib} - {\listcsxadd{blx@sbib@\the\c@refsection}{\abx@field@entrykey}% - \listcsxadd{blx@type@\the\c@refsection @\abx@field@entrytype}{\abx@field@entrykey}% - \ifdef\abx@field@entrysubtype - {\listcsxadd{blx@subt@\the\c@refsection @\abx@field@entrysubtype}{\abx@field@entrykey}} - {}} - {}% - \nottoggle{blx@skipbiblist} - {\blx@bbl@shorthand} - {}% - \nottoggle{blx@skiplab} - {\iftoggle{blx@labelnumber} - {\blx@bbl@labelnumber} - {}% - \iftoggle{blx@labelalpha} - {\blx@bbl@labelalpha} - {}% - \iftoggle{blx@labeldate} - {\blx@bbl@labeldate} - {}% - \blx@bbl@prefixnumber} - {}% - \blx@bbl@labelname - \blx@bbl@titles - \blx@bbl@hooks - \endgroup} - -\def\blx@addset{% - \begingroup - \letcs\blx@tempa{blx@sort@\the\c@refsection}% - \global\cslet{blx@sort@\the\c@refsection}\@empty - \forlistloop\blx@addset@i\blx@tempa - \endgroup} - -\def\blx@addset@i#1{% - \listcsgadd{blx@sort@\the\c@refsection}{#1}% - \ifcsdef{blx@setp@\the\c@refsection @#1} - {\expandafter\expandafter\expandafter\forcsvlist - \expandafter\expandafter\expandafter\blx@addset@ii - \expandafter\expandafter\expandafter{% - \csname blx@setp@\the\c@refsection @#1\endcsname}} - {}} - -\def\blx@addset@ii#1{% - \listcsgadd{blx@sort@\the\c@refsection}{#1}} - -\def\blx@bbl@shorthand{% - \ifundef\abx@field@shorthand - {} - {\blx@setlabwidth{\shorthandwidth}{% - \csuse{abx@ffd@*@shorthandwidth}{\abx@field@shorthand}}}} - -\def\blx@bbl@labelnumber{% - \ifdefempty\abx@field@localnumber - {} - {\ifundef\abx@field@shorthand - {\ifdef\abx@field@localnumber - {} - {\csnumgdef{blx@labelnumber@\the\c@refsection}{% - \csuse{blx@labelnumber@\the\c@refsection}+1}% - \edef\abx@field@localnumber{% - \csuse{blx@labelnumber@\the\c@refsection}}}% - \blx@bbl@fieldedef{labelnumber}{\abx@field@localnumber}% - \iftoggle{blx@skipbib} - {} - {\blx@setlabwidth{\labelnumberwidth}{% - \csuse{abx@ffd@*@labelnumberwidth}{% - \ifdef\abx@field@prefixnumber - {\csuse{abx@ffd@*@prefixnumber}{\abx@field@prefixnumber}} - {}% - \abx@field@localnumber}}}} - {\csgappto\blx@bbl@data{% - \let\abx@field@labelnumber\abx@field@shorthand}% - \iftoggle{blx@skipbib} - {} - {\blx@setlabwidth{\labelnumberwidth}{% - \csuse{abx@ffd@*@labelnumberwidth}{\abx@field@shorthand}}}}}} - -\def\blx@bbl@prefixnumber{% - \ifdef\abx@field@prefixnumber - {\blx@bbl@fieldedef{prefixnumber}{\abx@field@prefixnumber}} - {}} - -\def\blx@bbl@labelalpha{% - \ifundef\abx@field@shorthand - {\ifundef\abx@field@labelalpha - {} - {\ifundef\abx@field@extraalpha - {} - {\ifnum\abx@field@extraalpha>\c@maxextraalpha - \global\c@maxextraalpha\abx@field@extraalpha\relax - \fi}% - \iftoggle{blx@skipbib} - {} - {\blx@setlabwidth{\labelalphawidth}{% - \csuse{abx@ffd@*@labelalphawidth}{% - \ifdef\abx@field@prefixnumber - {\csuse{abx@ffd@*@prefixnumber}{\abx@field@prefixnumber}} - {}% - \csuse{abx@ffd@*@labelalpha}{\abx@field@labelalpha}% - \ifundef\abx@field@extraalpha - {} - {\csuse{abx@ffd@*@extraalpha}{\abx@field@extraalpha}}}}}}} - {\csgappto\blx@bbl@data{% - \let\abx@field@labelalpha\abx@field@shorthand}% - \iftoggle{blx@skipbib} - {} - {\blx@setlabwidth{\labelalphawidth}{% - \csuse{abx@ffd@*@labelalphawidth}{\abx@field@shorthand}}}}} - -\def\blx@bbl@labeldate{% - \ifundef\abx@field@extrayear - {} - {\ifnum\abx@field@extrayear>\c@maxextrayear - \global\c@maxextrayear\abx@field@extrayear\relax - \fi}} - -\def\blx@bbl@labelname{% BibTeX only - \iftoggle{blx@useauthor} - {\ifundef\abx@name@shortauthor - {\ifundef\abx@name@author - {\blx@bbl@labelname@i} - {\csgappto\blx@bbl@data{% - \c@labelname\c@author - \let\abx@name@labelname\abx@name@author}% - \iftoggle{abx@bool@moreauthor} - {\csgappto\blx@bbl@data{% - \toggletrue{abx@bool@morelabelname}}} - {}}} - {\csgappto\blx@bbl@data{% - \c@labelname\c@shortauthor - \let\abx@name@labelname\abx@name@shortauthor}% - \iftoggle{abx@bool@moreshortauthor} - {\csgappto\blx@bbl@data{% - \toggletrue{abx@bool@morelabelname}}} - {}}} - {\blx@bbl@labelname@i}} - -\def\blx@bbl@labelname@i{% - \iftoggle{blx@useeditor} - {\ifundef\abx@name@shorteditor - {\ifundef\abx@name@editor - {\blx@bbl@labelname@ii} - {\csgappto\blx@bbl@data{% - \c@labelname\c@editor - \let\abx@name@labelname\abx@name@editor}% - \iftoggle{abx@bool@moreeditor} - {\csgappto\blx@bbl@data{% - \toggletrue{abx@bool@morelabelname}}} - {}}} - {\csgappto\blx@bbl@data{% - \c@labelname\c@shorteditor - \let\abx@name@labelname\abx@name@shorteditor}% - \iftoggle{abx@bool@moreshorteditor} - {\csgappto\blx@bbl@data{% - \toggletrue{abx@bool@morelabelname}}} - {}}} - {\blx@bbl@labelname@ii}} - -\def\blx@bbl@labelname@ii{% - \iftoggle{blx@usetranslator} - {\ifundef\abx@name@translator - {} - {\csgappto\blx@bbl@data{% - \c@labelname\c@translator - \let\abx@name@labelname\abx@name@translator}% - \iftoggle{abx@bool@moretranslator} - {\csgappto\blx@bbl@data{% - \toggletrue{abx@bool@morelabelname}}} - {}}} - {}} - -\def\blx@bbl@titles{% - \ifundef\abx@field@shorttitle - {\csgappto\blx@bbl@data{% - \let\abx@field@labeltitle\abx@field@title}} - {\csgappto\blx@bbl@data{% - \let\abx@field@labeltitle\abx@field@shorttitle}}% - \ifundef\abx@field@indextitle - {\csgappto\blx@bbl@data{% - \let\abx@field@indextitle\abx@field@title}} - {}% - \ifundef\abx@field@indexsorttitle - {\csgappto\blx@bbl@data{% - \let\abx@field@indexsorttitle\abx@field@indextitle}} - {}} - -\def\blx@bbl@hooks{% - \ifcsundef{blx@hook@bblitem@*} - {\ifcsundef{blx@hook@bblitem@\abx@field@entrytype} - {} - {\csuse\blx@bbl@data - \csuse{blx@hook@bblitem@\abx@field@entrytype}}} - {\csuse\blx@bbl@data - \csuse{blx@hook@bblitem@*}% - \csuse{blx@hook@bblitem@\abx@field@entrytype}}} - -\newrobustcmd*{\AtDataInput}[1][*]{\csgappto{blx@hook@bblitem@#1}} -\@onlypreamble\AtDataInput - -\def\blx@setlabwidth#1#2{% - \begingroup - \settowidth{\@tempdima}{\bibfont#2}% - \ifnum\@tempdima>#1% - \global#1\@tempdima - \fi - \endgroup} - -\def\blx@bblstart{% - \let\preamble\blx@bbl@preamble - \let\warn\blx@bbl@thewarn - \let\refsection\blx@bbl@refsection - \let\endrefsection\blx@bbl@endrefsection - \let\entry\blx@bbl@entry - \let\endentry\blx@bbl@endentry - \let\missing\blx@bbl@missing - \let\lossort\blx@bbl@lossort - \let\endlossort\blx@bbl@endlossort - \let\set\blx@bbl@set - \let\inset\blx@bbl@inset - \let\xref\blx@bbl@xref % BibTeX only - \let\keyw\blx@bbl@keyw - \let\name\blx@bbl@namedef - \let\list\blx@bbl@listdef - \let\field\blx@bbl@fielddef - \let\strng\blx@bbl@stringdef - \let\cnt\blx@bbl@cntdef - \let\true\blx@bbl@booltrue - \let\false\blx@bbl@boolfalse - \let\verb\blx@bbl@verbdef - \let\endverb\blx@bbl@verbend} - -\def\blx@bblend{% - \ifcsdef{blx@refs@\the\c@refsection}% BibTeX only - {\begingroup - \let\do\blx@addxref - \dolistcsloop{blx@refs@\the\c@refsection}% - \endgroup - \global\csundef{blx@refs@\the\c@refsection}} - {}% - \iftoggle{blx@addset} - {\blx@addset - \global\togglefalse{blx@addset}} - {}} - -% {<instcount>}{<entrykey>}{<refsection>}{<labelnumber>} - -\protected\def\blx@aux@number#1#2#3#4{% - \blx@bbl@addentryfield{\detokenize{#2}}{#3}{localnumber}{#4}% - \ifblank{#4} - {} - {\csgdef{blx@labelnumber@#3}{#4}% - \blx@addchecksum{#1}{#4}}} - -\AtEndDocument{% - \def\abx@aux@number#1#2#3#4{% - \ifblank{#4} - {} - {\blx@addchecksum{#1}{#4}}}} - -\def\blx@addlabelnumber{% - \begingroup - \nottoggle{blx@skiplab} - {\iftoggle{blx@labelnumber} - {\ifundef\abx@field@shorthand - {\ifundef\abx@field@localnumber - {\iftoggle{blx@omitnumbers} - {\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}}% - \blx@bbl@addentryfield{\abx@field@entrykey}{\the\c@refsection}% - {localnumber}{\abx@field@localnumber}}% - \blx@auxwrite\@mainaux{}{% - \string\abx@aux@number{\the\c@instcount}{\abx@field@entrykey}% - {\the\c@refsection}{\abx@field@localnumber}}} - {}} - {}}% - {}} - {}% - \endgroup} - -\def\blx@addprefixnumber{% - \nottoggle{blx@skiplab} - {\ifdef\blx@prefixnumbers - {\ifundef\abx@field@shorthand - {\edef\abx@field@prefixnumber{\expandonce\blx@prefixnumbers}% - \ifundef\abx@field@prefixnumber - {\blx@bbl@addentryfield{\abx@field@entrykey}{\the\c@refsection}% - {prefixnumber}{\expandonce\abx@field@prefixnumber}} - {}% - \blx@auxwrite\@mainaux{}{% - \string\blx@aux@numprefix{\abx@field@entrykey}% - {\the\c@refsection}{\expandonce\abx@field@prefixnumber}}} - {}} - {}} - {}} - -% {<entrykey>}{<refsection>}{<numberprefix>} - -\protected\def\blx@aux@numprefix#1#2#3{% - \blx@bbl@addentryfield{\detokenize{#1}}{#2}{prefixnumber}{#3}} - -\def\blx@bbl@lossort{% - \begingroup - \def\key##1{\listcsxadd{blx@losh@\the\c@refsection}{\detokenize{##1}}}} -\let\blx@bbl@endlossort\endgroup - -\def\blx@addpageref#1{% - \begingroup - \blx@tempcnta\z@ - \let\blx@tempa\@empty - \def\do##1{% - \appto\blx@tempa{{##1}}% - \advance\blx@tempcnta\@ne}% - \dolistcsloop{blx@pref@\the\c@refsection @#1}% - \edef\blx@tempa{\endgroup\noexpand\blx@bbl@listdef - {pageref}{\the\blx@tempcnta}{\blx@tempa}}% - \blx@tempa} - -%% Data input - -\def\blx@bblinput{% - \begingroup - \iftoggle{blx@reencode} - {\ifdef\inpenc@prehook - {\inpenc@prehook{}% - \inpenc@posthook{}} - {}% - \inputencoding\blx@bibencoding} - {}% - \blx@info@noline{Trying to load bibliographic data..}% - \blx@blxinit - \blx@bblfile@bibtex - \blx@bblsecs@bibtex - \endgroup - \iftoggle{blx@reencode} - {\ifdef\@enablequotes - {\@enablequotes} - {}} - {}} - -\def\blx@bblfile@biber{% - \blx@secinit - \begingroup - \blx@bblstart - \blx@ifsigned{\jobname}{bbl} - {\InputIfFileExists{\jobname.bbl} - {\blx@info@noline{... file '\jobname.bbl' found}} - {\blx@info@noline{... file '\jobname.bbl' not found}% - \typeout{No file \jobname.bbl.}}} - {}% - \blx@bblend - \endgroup - \csnumgdef{blx@labelnumber@\the\c@refsection}{0}} - -\def\blx@bblfile@bibtex{% - \blx@secinit - \begingroup - \blx@bblstart - \ifnum\c@refsection>\z@ - \edef\blx@auxfile@bibtex{\jobname\the\c@refsection\blxauxsuffix}% - \else - \edef\blx@auxfile@bibtex{\jobname}% - \fi - \blx@ifsigned{\blx@auxfile@bibtex}{bbl} - {\InputIfFileExists{\blx@auxfile@bibtex.bbl} - {\blx@info@noline{... file '\blx@auxfile@bibtex.bbl' found}} - {\blx@info@noline{... file '\blx@auxfile@bibtex.bbl' not found}% - \typeout{No file \blx@auxfile@bibtex.bbl.}}} - {}% - \blx@bblend - \endgroup - \csnumgdef{blx@labelnumber@\the\c@refsection}{0}% - \iftoggle{blx@reencode}{\blx@reencode}{}} - -\def\blx@bblsecs@bibtex{% - \advance\c@refsection\@ne - \ifnum\c@refsection>\blx@maxsection - \else - \blx@bblfile@bibtex - \expandafter\blx@bblsecs@bibtex - \fi} - -\def\blx@reencode{% - \begingroup - \abx@hook@reencode - \let\protect\@unexpandable@protect - \def\do##1{\cslet{abx@name@##1}\relax}% - \abx@donames - \def\do##1{\cslet{abx@list@##1}\relax}% - \abx@dolists - \def\do##1{\cslet{abx@field@##1}\relax}% - \abx@dofields\do{options}% - \long\def\abx@field@execute##1{% - \unexpanded{\abx@field@execute{##1}}}% - \csuse{abx@preamble}% - \def\do##1{% - \csxdef{blx@data@\the\c@refsection @##1}{% - \csuse{blx@data@\the\c@refsection @##1}}}% - \dolistcsloop{blx@sort@\the\c@refsection}% - \endgroup} - -\def\abx@hook@reencode{% - \ifdef\@enablequotes{\@enablequotes}{}% - \def\IeC##1{\unexpanded{\IeC{##1}}}% - \let~\relax -} - -%% Bibliography - -% {<name>}{<start code>}[<end code>]{<item code>} - -\newrobustcmd*{\defbibenvironment}[4]{% - \long\csdef{blx@env@#1}{#2}% - \long\csdef{blx@endenv@#1}{#3}% - \long\csdef{blx@item@#1}{#4}} - -\defbibenvironment{bibliography} - {\list{}{% - \leftmargin\bibhang - \itemindent-\leftmargin - \itemsep\bibitemsep - \parsep\bibparsep}} - {\endlist} - {\item} - -\defbibenvironment{shorthand} - {\list{\thefield{shorthand}}{% - \labelwidth\shorthandwidth - \labelsep\biblabelsep - \leftmargin\labelwidth - \advance\leftmargin\labelsep - \itemsep\bibitemsep - \parsep\bibparsep - \def\makelabel##1{##1\hss}}} - {\endlist} - {\item} - -% {<name>}[<default>]{<code>} - -\newrobustcmd*{\defbibheading}[1]{% - \@ifnextchar[%] - {\blx@defbibheading{blx@head@#1}} - {\blx@defbibheading{blx@head@#1}[\bibname]}} - -\def\blx@defbibheading#1[#2]{% - \csundef{#1}% - \expandafter\newcommand\csname#1\endcsname[1][#2]} - -% {<name>}{<text>} - -\newrobustcmd*{\defbibnote}[1]{% - \long\csdef{blx@note@#1}} - -% {<name>}{<code>} - -\newrobustcmd*{\defbibfilter}[2]{% - \begingroup - \def\blx@flt@error{\csname blx@flt@errortrue\endcsname}% - \let\not\blx@flt@not \let\NOT\not - \let\and\blx@flt@and \let\AND\and - \let\or\blx@flt@or \let\OR\or - \letcs\({blx@flt@(} \letcs\){blx@flt@)}% - \def\section##1{\blx@flt@error}% - \def\segment##1{segment=##1}% - \def\type##1{type=##1}% - \def\subtype##1{subtype=##1}% - \def\keyword##1{keyword={##1}}% - \def\category##1{category={##1}}% - \edef\blx@tempa{\noexpand\blx@defbibfilter{#2}}% - \ifdef\blx@flt@errortrue - {\blx@err@filter} - {\let\the\relax - \let\blx@flt@item\relax - \edef\blx@tempa{\blx@tempa}% - \ifdef\blx@flt@errortrue - {\blx@err@filter} - {\csxdef{blx@filter@#1}{\blx@tempa}}}% - \endgroup} - -\def\blx@defbibfilter#1{% - \blx@defbibfilter@i#1 &} -\def\blx@defbibfilter@i#1 #2&{% - \blx@defbibfilter@ii#1==&% - \ifblank{#2}{}{\blx@defbibfilter@i#2 &}} -\def\blx@defbibfilter@ii#1=#2=#3&{% - \ifblank{#2} - {\ifblank{#1} - {} - {\ifcsdef{blx@flt@#1} - {\csname blx@flt@#1\endcsname} - {\blx@flt@error}}} - {\ifcsdef{blx@flt@#1} - {\csname blx@flt@#1\endcsname{\detokenize{#2}}} - {\blx@flt@error}}} - -\def\blx@flt@and{ and } -\def\blx@flt@or{ or } -\def\blx@flt@not{ not } -\csdef{blx@flt@(}{ ( } -\csdef{blx@flt@)}{ ) } -\def\blx@flt@segment#1{% - test {\xifinlistcs\blx@flt@item{blx@segm@\the\c@refsection @#1}}} -\def\blx@flt@type#1{% - test {\xifinlistcs\blx@flt@item{blx@type@\the\c@refsection @#1}}} -\def\blx@flt@subtype#1{% - test {\xifinlistcs\blx@flt@item{blx@subt@\the\c@refsection @#1}}} -\def\blx@flt@keyword#1{% - test {\xifinlistcs\blx@flt@item{blx@keyw@\the\c@refsection @#1}}} -\def\blx@flt@category#1{% - test {\xifinlistcs\blx@flt@item{blx@catg@#1}}} - -% {<name>}{<code>} - -\newrobustcmd*{\defbibcheck}[2]{% - \csdef{blx@bibcheck@#1}{% - \togglefalse{blx@skipentry}% - \def\skipentry{\toggletrue{blx@skipentry}}% - #2\undef\skipentry}} - -% options - -\define@key{blx@bib}{section}{% - \ifcsundef{blx@sbib@#1} - {\blx@err@nosec{#1}} - {\c@refsection#1\relax - \iftoggle{blx@tempa} - {\letcs\blx@tempa{blx@sbib@\the\c@refsection}} - {\blx@err@secfirst}}} - -\define@key{blx@los}{section}{% - \ifcsundef{blx@sbib@#1} - {\blx@err@nosec{#1}} - {\c@refsection#1\relax - \iftoggle{blx@tempa} - {\letcs\blx@tempa{blx@losh@\the\c@refsection}} - {\blx@err@secfirst}}} - -\define@key{blx@bbg}{section}{% - \ifcsundef{blx@sbib@#1} - {\blx@err@nosec{#1}} - {\c@refsection#1\relax}} - -\define@key{blx@bbc}{section}{% - \ifcsundef{blx@sbib@#1} - {\blx@err@nosec{#1}} - {\c@refsection#1\relax}} - -\define@key{blx@bib}{segment}{\blx@key@segment{#1}} -\define@key{blx@los}{segment}{\blx@key@segment{#1}} - -\def\blx@key@segment#1{% - \ifcsundef{blx@segm@\the\c@refsection @#1} - {\blx@error - {Segment '#1' not found} - {The reference segment '#1' could not be found}} - {\c@refsegment#1\relax - \blx@printbibchecks - \blx@filter\blx@tempa{blx@segm@\the\c@refsection @#1}}} - -\define@key{blx@bib}{type}{\blx@key@type{#1}} -\define@key{blx@los}{type}{\blx@key@type{#1}} - -\def\blx@key@type#1{% - \ifcsundef{blx@type@\the\c@refsection @#1} - {\blx@warning{Type '#1' not found}% - \let\blx@tempa\@empty} - {\blx@printbibchecks - \iftoggle{blx@tempb} - {\togglefalse{blx@tempb}% - \blx@filter\blx@tempa{blx@type@\the\c@refsection @#1}} - {\let\blx@tempa\@empty - \blx@error - {'type' used multiple times} - {When passing multiple filter options, each entry\MessageBreak - must satisfy all conditions (AND conjunction),\MessageBreak - hence some options may not be used twice.\MessageBreak - Use 'filter' and '\string\defbibfilter' with OR conjunctions}}}} - -\define@key{blx@bib}{nottype}{\blx@key@nottype{#1}} -\define@key{blx@los}{nottype}{\blx@key@nottype{#1}} - -\def\blx@key@nottype#1{% - \ifcsundef{blx@type@\the\c@refsection @#1} - {} - {\blx@printbibchecks - \blx@notfilter\blx@tempa{blx@type@\the\c@refsection @#1}}} - -\define@key{blx@bib}{subtype}{\blx@key@subtype{#1}} -\define@key{blx@los}{subtype}{\blx@key@subtype{#1}} - -\def\blx@key@subtype#1{% - \ifcsundef{blx@subt@\the\c@refsection @#1} - {\blx@warning{Subtype '#1' not found}% - \let\blx@tempa\@empty} - {\blx@printbibchecks - \iftoggle{blx@tempb} - {\togglefalse{blx@tempb}% - \blx@filter\blx@tempa{blx@subt@\the\c@refsection @#1}} - {\let\blx@tempa\@empty - \blx@error - {'subtype' used multiple times} - {When passing multiple filter options, each entry\MessageBreak - must satisfy all conditions (AND conjunction),\MessageBreak - hence some options may not be used twice.\MessageBreak - Use 'filter' and '\string\defbibfilter' with OR conjunctions}}}} - -\define@key{blx@bib}{notsubtype}{\blx@key@notsubtype{#1}} -\define@key{blx@los}{notsubtype}{\blx@key@notsubtype{#1}} - -\def\blx@key@notsubtype#1{% - \ifcsundef{blx@subt@\the\c@refsection @#1} - {} - {\blx@printbibchecks - \blx@notfilter\blx@tempa{blx@subt@\the\c@refsection @#1}}} - -\define@key{blx@bib}{keyword}{\blx@key@keyword{#1}} -\define@key{blx@los}{keyword}{\blx@key@keyword{#1}} - -\def\blx@key@keyword#1{% - \ifcsundef{blx@keyw@\the\c@refsection @\detokenize{#1}} - {\blx@warning{Keyword '\detokenize{#1}' not found}% - \let\blx@tempa\@empty} - {\blx@printbibchecks - \blx@filter\blx@tempa{blx@keyw@\the\c@refsection @\detokenize{#1}}}} - -\define@key{blx@bib}{notkeyword}{\blx@key@notkeyword{#1}} -\define@key{blx@los}{notkeyword}{\blx@key@notkeyword{#1}} - -\def\blx@key@notkeyword#1{% - \ifcsundef{blx@keyw@\the\c@refsection @\detokenize{#1}} - {} - {\blx@printbibchecks - \blx@notfilter\blx@tempa{blx@keyw@\the\c@refsection @\detokenize{#1}}}} - -\define@key{blx@bib}{category}{\blx@key@category{#1}} -\define@key{blx@los}{category}{\blx@key@category{#1}} - -\def\blx@key@category#1{% - \ifcsundef{blx@catg@\detokenize{#1}} - {\blx@warning{Category '\detokenize{#1}' not found}% - \let\blx@tempa\@empty} - {\blx@printbibchecks - \blx@filter\blx@tempa{blx@catg@\detokenize{#1}}}} - -\define@key{blx@bib}{notcategory}{\blx@key@notcategory{#1}} -\define@key{blx@los}{notcategory}{\blx@key@notcategory{#1}} - -\def\blx@key@notcategory#1{% - \ifcsundef{blx@catg@#1} - {} - {\blx@printbibchecks - \blx@notfilter\blx@tempa{blx@catg@#1}}} - -\define@key{blx@bib}{filter}{\blx@key@filter{#1}} -\define@key{blx@los}{filter}{\blx@key@filter{#1}} - -\def\blx@key@filter#1{% - \ifcsdef{blx@filter@#1} - {\blx@printbibchecks - \blx@bibfilter\blx@tempa{blx@filter@#1}} - {\let\blx@tempa\@empty - \blx@error - {Filter '#1' not found} - {The filter '#1' could not be found.\MessageBreak - Use \string\defbibfilter\space to define it}}} - -\define@key{blx@bib}{check}{\blx@key@bibcheck{#1}} -\define@key{blx@los}{check}{\blx@key@bibcheck{#1}} - -\def\blx@key@bibcheck#1{% - \ifcsdef{blx@bibcheck@#1} - {\letcs\blx@bibcheck{blx@bibcheck@#1}} - {\let\blx@tempa\@empty - \blx@error - {Check '#1' not found} - {The check '#1' could not be found.\MessageBreak - Use \string\defbibcheck\space to define it}}} - -\define@key{blx@bhd}{heading}{\blx@key@heading{#1}} -\define@key{blx@bib}{heading}{\blx@key@heading{#1}} -\define@key{blx@los}{heading}{\blx@key@heading{#1}} -\define@key{blx@bbs}{heading}{\blx@key@heading{#1}} -\define@key{blx@bbg}{heading}{\blx@key@heading{#1}} - -\def\blx@key@heading#1{% - \ifcsundef{blx@head@#1} - {\blx@error - {Heading '#1' not found} - {The heading '#1' could not be found.\MessageBreak - Use \string\defbibheading\space to define it}} - {\def\blx@theheading{#1}}} - -\define@key{blx@bib}{env}{\blx@key@env{#1}} -\define@key{blx@los}{env}{\blx@key@env{#1}} -\define@key{blx@bbs}{env}{\blx@key@env{#1}} -\define@key{blx@bbg}{env}{\blx@key@env{#1}} -\define@key{blx@bbc}{env}{\blx@key@env{#1}} - -\def\blx@key@env#1{% - \ifcsundef{blx@env@#1} - {\blx@error - {Environment '#1' not found} - {The environment '#1' could not be found.\MessageBreak - Use \string\defbibenvironment\space to define it}} - {\def\blx@theenv{#1}}} - -\define@key{blx@bhd}{title}{\def\blx@thetitle{#1}} -\define@key{blx@bib}{title}{\def\blx@thetitle{#1}} -\define@key{blx@los}{title}{\def\blx@thetitle{#1}} - -\define@key{blx@bib}{prenote}{\blx@key@prenote{#1}} -\define@key{blx@los}{prenote}{\blx@key@prenote{#1}} -\define@key{blx@bbs}{prenote}{\blx@key@prenote{#1}} -\define@key{blx@bbg}{prenote}{\blx@key@prenote{#1}} -\define@key{blx@bbc}{prenote}{\blx@key@prenote{#1}} -\def\blx@key@prenote#1{% - \ifcsundef{blx@note@#1} - {\blx@error - {Note '#1' not found} - {The note '#1' could not be found.\MessageBreak - Use \string\defbibnote\space to define it}} - {\def\blx@theprenote{#1}}} - -\define@key{blx@bib}{postnote}{\blx@key@postnote{#1}} -\define@key{blx@los}{postnote}{\blx@key@postnote{#1}} -\define@key{blx@bbs}{postnote}{\blx@key@postnote{#1}} -\define@key{blx@bbg}{postnote}{\blx@key@postnote{#1}} -\define@key{blx@bbc}{postnote}{\blx@key@postnote{#1}} - -\def\blx@key@postnote#1{% - \ifcsundef{blx@note@#1} - {\blx@error - {Note '#1' not found} - {The note '#1' could not be found.\MessageBreak - Use \string\defbibnote\space to define it}} - {\def\blx@thepostnote{#1}}} - -\define@key{blx@bib}{resetnumbers}[true]{% - \ifstrequal{#1}{true} - {\iftoggle{blx@defernumbers} - {\csnumdef{blx@labelnumber@\the\c@refsection}{0}} - {\blx@warning{% - Option 'resetnumbers' requires 'defernumbers=true'.\MessageBreak - Ignoring 'resetnumbers=true'}}} - {}} - -\define@key{blx@bib}{omitnumbers}[true]{% - \ifstrequal{#1}{true} - {\iftoggle{blx@defernumbers} - {\toggletrue{blx@omitnumbers}} - {\blx@warning{% - Option 'omitnumbers' requires 'defernumbers=true'.\MessageBreak - Ignoring 'omitnumbers=true'}}} - {}} - -\define@key{blx@bib}{prefixnumbers}{% - \def\blx@prefixnumbers{#1}% - \iftoggle{blx@defernumbers} - {\csnumdef{blx@labelnumber@\the\c@refsection}{0}} - {\iftoggle{blx@labelnumber} - {\blx@warning{% - Option 'prefixnumbers' requires global\MessageBreak - 'defernumbers=true'}} - {}}} - -% [<options>] - -\newrobustcmd*{\printbibheading}{% - \begingroup - \edef\on@line{\on@line}% - \@ifnextchar[%] - {\blx@printbibheading} - {\blx@printbibheading[]}} - -\def\blx@printbibheading[#1]{% - \def\blx@theheading{bibliography}% - \let\blx@thetitle\@empty - \blx@safe@actives - \setkeys{blx@bhd}{#1}% - \blx@rest@actives - \blx@langstrings - \blx@bibheading\blx@theheading\blx@thetitle - \endgroup} - -% [<options>] - -\newrobustcmd*{\printbibliography}{% - \begingroup - \edef\on@line{\on@line}% - \@ifnextchar[%] - {\blx@printbibliography} - {\blx@printbibliography[]}} - -\def\blx@printbibliography[#1]{% - \toggletrue{blx@tempa}% - \toggletrue{blx@tempb}% - \letcs\blx@tempa{blx@sbib@\the\c@refsection}% - \def\blx@theheading{bibliography}% - \def\blx@theenv{bibliography}% - \let\blx@theprenote\@empty - \let\blx@thepostnote\@empty - \let\blx@thetitle\@empty - \blx@safe@actives - \setkeys{blx@bib}{#1}% - \blx@rest@actives - \ifdefvoid\blx@tempa - {\blx@warn@bibempty\endgroup} - {\blx@bibliography\blx@tempa}} - -% [<options>] - -\newrobustcmd*{\bibbysection}{% - \begingroup - \ifnum\blx@maxsection=\z@ - \blx@warning{No reference sections found}% - \fi - \edef\on@line{\on@line}% - \@ifnextchar[%] - {\blx@bibbysection} - {\blx@bibbysection[]}} - -\def\blx@bibbysection[#1]{% - \def\blx@theheading{bibliography}% - \def\blx@theenv{bibliography}% - \let\blx@theprenote\@empty - \let\blx@thepostnote\@empty - \let\blx@thetitle\@empty - \c@refsection\z@ - \blx@safe@actives - \setkeys{blx@bbs}{#1}% - \blx@rest@actives - \togglefalse{blx@tempa}% - \blx@refsections} - -\def\blx@refsections{% - \ifcsvoid{blx@sbib@\the\c@refsection} - {} - {\toggletrue{blx@tempa}% - \begingroup - \expandafter\blx@bibliography\csname blx@sbib@\the\c@refsection\endcsname}% - \ifnum\c@refsection<\blx@maxsection - \advance\c@refsection\@ne - \expandafter\blx@refsections - \else - \iftoggle{blx@tempa}{}{\blx@warn@bibempty}% - \endgroup - \fi} - -% [<options>] - -\newrobustcmd*{\bibbysegment}{% - \begingroup - \edef\on@line{\on@line}% - \ifnum\blx@maxsegment=\z@ - \blx@warning{No reference segments found}% - \fi - \@ifnextchar[%] - {\blx@bibbysegment} - {\blx@bibbysegment[]}} - -\def\blx@bibbysegment[#1]{% - \def\blx@theheading{bibliography}% - \def\blx@theenv{bibliography}% - \let\blx@theprenote\@empty - \let\blx@thepostnote\@empty - \let\blx@thetitle\@empty - \c@refsection\z@ - \c@refsegment\@ne - \blx@safe@actives - \setkeys{blx@bbg}{#1}% - \blx@rest@actives - \togglefalse{blx@tempa}% - \blx@refsegments} - -\def\blx@refsegments{% - \ifcsvoid{blx@segm@\the\c@refsection @\the\c@refsegment} - {} - {\toggletrue{blx@tempa}% - \begingroup - \letcs\blx@tempa{blx@sbib@\the\c@refsection}% - \blx@filter\blx@tempa{blx@segm@\the\c@refsection @\the\c@refsegment}% - \blx@bibliography\blx@tempa}% - \ifnum\c@refsegment<\blx@maxsegment - \advance\c@refsegment\@ne - \expandafter\blx@refsegments - \else - \iftoggle{blx@tempa}{}{\blx@warn@bibempty}% - \endgroup - \fi} - -% [<options>] - -\newrobustcmd*{\bibbycategory}{% - \begingroup - \edef\on@line{\on@line}% - \ifx\blx@categories\@empty - \blx@warning{No categories found}% - \fi - \@ifnextchar[%] - {\blx@bibbycategory} - {\blx@bibbycategory[]}} - -\def\blx@bibbycategory[#1]{% - \def\blx@theheading{bibliography}% - \def\blx@theenv{bibliography}% - \let\blx@theprenote\@empty - \let\blx@thepostnote\@empty - \let\blx@thetitle\@empty - \c@refsection\z@ - \blx@safe@actives - \setkeys{blx@bbc}{#1}% - \blx@rest@actives - \togglefalse{blx@tempa}% - \forlistloop\blx@bibcategory\blx@categories - \blx@endbibcategory} - -\def\blx@bibcategory#1{% - \ifcsvoid{blx@catg@#1} - {} - {\toggletrue{blx@tempa}% - \begingroup - \blx@key@heading{#1}% - \letcs\blx@tempa{blx@sbib@\the\c@refsection}% - \blx@filter\blx@tempa{blx@catg@#1}% - \blx@bibliography\blx@tempa}}% - -\def\blx@endbibcategory{% - \iftoggle{blx@tempa}{}{\blx@warn@bibempty}% - \endgroup} - -% {<entrykey>,...} - -\def\blx@bibliography{% - \blx@langstrings - \blx@bibheading\blx@theheading\blx@thetitle - \blx@bibnote\blx@theprenote - \begingroup - \blx@bibinit - \let\@noitemerr\@empty - \let\blx@noitem\blx@warn@bibempty - \ifnum\bibinitsep=\z@ - \let\blx@initsep\relax - \fi - \ifnum\bibnamesep=\z@ - \let\blx@namesep\relax - \fi - \csuse{blx@env@\blx@theenv}% - \csuse{blx@hook@bibinit}% - \csuse{blx@hook@bibinit@next}% - \let\blx@do\blx@bibitem - \let\blx@done\blx@endbibliography - \blx@listloop} - -\def\blx@endbibliography{% - \csuse{blx@endenv@\blx@theenv}% - \blx@noitem - \endgroup - \blx@bibnote\blx@thepostnote - \endgroup} - -\def\blx@bibheading#1#2{% - \begingroup - \edef\blx@tempa{\endgroup - \noexpand\blx@bibheading@i{\expandonce#1}{\expandonce#2}}% - \blx@tempa} - -\def\blx@bibheading@i#1#2{% - \let\newrefsection\relax - \let\newrefsegment\relax - \ifblank{#2} - {\csuse{blx@head@#1}} - {\csuse{blx@head@#1}[#2]}% - \let\newrefsection\blx@newrefsection - \let\newrefsegment\blx@newrefsegment} - -\def\blx@bibnote#1{% - \ifdefempty#1 - {} - {\begingroup - \let\newrefsection\relax - \let\newrefsegment\relax - \noindent - \csuse{blx@note@#1}\par\nobreak - \endgroup}} - -\def\blx@bibinit{% - \iftoggle{blx@citation} - {} - {\toggletrue{blx@bibliography}}% - \blx@blxinit - \blx@resetdata - \csuse{blx@hook@bbxinit}% - \bibsetup\bibfont - \blx@setsfcodes - \csuse{blx@bibsetup}} - -% {<entrykey>} - -\def\blx@bibitem#1{% - \blx@ifdata{#1} - {\begingroup - \blx@getdata{#1}% - \blx@bibcheck - \iftoggle{blx@skipentry}{}{% - \global\let\blx@noitem\@empty - \blx@setoptions@type\abx@field@entrytype - \blx@setoptions@entry - \blx@thelabelnumber - \blx@addprefixnumber - \addtocounter{instcount}\@ne - \csuse{blx@item@\blx@theenv}\relax - \blx@initsep - \blx@namesep - \csuse{blx@hook@bibitem}% - \blx@execute - \blx@initunit - \blx@anchor - \blx@beglangbib - \bibsentence - \blx@pagetracker - \blx@driver\abx@field@entrytype - \blx@postpunct - \blx@endlangbib}% - \endgroup} - {}} - -\let\blx@bibcheck\relax - -\def\blx@initsep{% - \blx@imc@iffieldundef{sortinit} - {} - {\ifnum\c@instcount>\@ne - \blx@imc@iffieldequals{sortinit}\blx@previnit - {} - {\addvspace{\bibinitsep}}% - \fi - \global\let\blx@previnit\abx@field@sortinit}} - -\def\blx@namesep{% - \ifnum\c@instcount>\@ne - \blx@imc@iffieldequals{fullhash}\blx@prevhash - {} - {\addvspace{\bibnamesep}}% - \fi - \global\let\blx@prevhash\abx@field@fullhash} - -\newrobustcmd*{\AtBeginBibliography}{\gappto\blx@hook@bibinit} -\newrobustcmd*{\AtEveryBibitem}{\gappto\blx@hook@bibitem} -\@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}} - {}% - \gappto\blx@hook@bibinit@next} - -% page tracker - -\def\blx@pagetracker@context{% - \blx@leavevmode - \ifbool{@filesw} - {\ifbool{pagetracker} - {\protected@write\@mainaux{}{% - \iftoggle{blx@footnote} - {\string\abx@aux@fnpage} - {\string\abx@aux@page}% - {\the\c@instcount}{\noexpand\the\c@page}}} - {}} - {}} - -% {<instcount>}{<page>} - -\protected\def\blx@aux@page#1#2{% - \csgdef{blx@page@#1}{#2}% - \blx@addpagesum{#1}{#2}} -\protected\def\blx@aux@spread#1#2{% - \ifodd#2\relax - \csxdef{blx@page@#1}{\number\numexpr#2-1}% - \else - \csgdef{blx@page@#1}{#2}% - \fi - \blx@addpagesum{#1}{#2}} - -\protected\def\blx@aux@fnpage#1#2{% - \csgdef{blx@fnpage@#1}{#2}% - \blx@addpagesum{#1}{#2}} -\protected\def\blx@aux@fnspread#1#2{% - \ifodd#2\relax - \csxdef{blx@fnpage@#1}{\number\numexpr#2-1}% - \else - \csgdef{blx@fnpage@#1}{#2}% - \fi - \blx@addpagesum{#1}{#2}} - -\AtEndDocument{% - \def\abx@aux@page#1#2{\blx@addpagesum{#1}{#2}}% - \def\abx@aux@fnpage#1#2{\blx@addpagesum{#1}{#2}}} - -% hyperref interface - -\appto\blx@mkhyperref{% - \let\blx@anchors\@empty - \ifundef\hyper@natanchorstart - {\protected\def\blx@anchor{% - \xifinlist{\the\c@refsection @\abx@field@entrykey}{\blx@anchors} - {} - {\listxadd\blx@anchors{\the\c@refsection @\abx@field@entrykey}% - \hypertarget{cite.\the\c@refsection @\abx@field@entrykey}{}}}} - {\protected\def\blx@anchor{% - \xifinlist{\the\c@refsection @\abx@field@entrykey}{\blx@anchors} - {} - {\listxadd\blx@anchors{\the\c@refsection @\abx@field@entrykey}% - \hyper@natanchorstart{\the\c@refsection @\abx@field@entrykey}% - \hyper@natanchorend}}}} - -\appto\blx@mknohyperref{\let\blx@anchor\relax} - -% List of shorthands - -\newrobustcmd*{\printshorthands}{% - \begingroup - \edef\on@line{\on@line}% - \@ifnextchar[%] - {\blx@printshorthands} - {\blx@printshorthands[]}} - -\def\blx@printshorthands[#1]{% - \toggletrue{blx@tempa}% - \toggletrue{blx@tempb}% - \letcs\blx@tempa{blx@losh@\the\c@refsection}% - \def\blx@theheading{biblist}% - \def\blx@theenv{shorthand}% - \let\blx@theprenote\@empty - \let\blx@thepostnote\@empty - \let\blx@thetitle\@empty - \let\blx@printbibchecks\relax - \blx@safe@actives - \setkeys{blx@los}{#1}% - \blx@rest@actives - \ifdefvoid\blx@tempa - {\blx@warn@losempty\endgroup} - {\blx@shorthands\blx@tempa}} - -\def\blx@printbibchecks{% - \togglefalse{blx@tempa}% - \iftoggle{blx@defernumbers} - {\global\let\blx@printbibchecks\relax} - {\iftoggle{blx@labelnumber} - {\blx@warning@noline{Setting 'defernumbers=true' recommended}} - {\global\let\blx@printbibchecks\relax}}} - -% {<entrykey>,...} - -\def\blx@shorthands{% - \if@twocolumn - \@restonecoltrue\onecolumn - \else - \@restonecolfalse - \fi - \blx@langstrings - \blx@bibheading\blx@theheading\blx@thetitle - \blx@bibnote\blx@theprenote - \begingroup - \blx@bibinit - \let\@noitemerr\@empty - \let\blx@noitem\blx@warn@losempty - \csuse{blx@env@\blx@theenv}% - \csuse{blx@hook@losinit}% - \let\blx@do\blx@lositem - \let\blx@done\blx@endshorthands - \blx@listloop} - -\def\blx@endshorthands{% - \csuse{blx@endenv@\blx@theenv}% - \blx@noitem - \endgroup - \blx@bibnote\blx@thepostnote - \endgroup - \if@restonecol\twocolumn\fi} - -\newrobustcmd*{\AtBeginShorthands}{\gappto\blx@hook@losinit} -\newrobustcmd*{\AtEveryLositem}{\gappto\blx@hook@lositem} -\@onlypreamble\AtBeginShorthands -\@onlypreamble\AtEveryLositem - -% {<entrykey>} - -\def\blx@lositem#1{% - \blx@ifdata{#1} - {\begingroup - \blx@getdata{#1}% - \blx@bibcheck - \iftoggle{blx@skipentry}{}{% - \global\let\blx@noitem\@empty - \blx@setoptions@type\abx@field@entrytype - \blx@setoptions@entry - \addtocounter{instcount}\@ne - \csuse{blx@item@\blx@theenv}\relax - \csuse{blx@hook@lositem}% - \blx@execute - \blx@initunit - \blx@beglangbib - \bibsentence - \blx@pagetracker - \blx@driver{shorthand}% - \blx@postpunct - \blx@endlangbib}% - \endgroup} - {}} - -\DeclareBibliographyDriver{shorthand}{% - \iffieldundef{shorttitle} - {\printfield{title}} - {\printfield{shorttitle}}} - -% Reference sections - -\newrobustcmd*{\newrefsection}{% - \ifnum\c@refsection>\z@ - \endrefsection - \fi - \refsection} -\let\blx@newrefsection\newrefsection - -\newrobustcmd*{\refsection}{% - \begingroup - \edef\on@line{\on@line}% - \ifnum\c@refsection>\z@ - \blx@err@nestenv{refsection}% - \blx@endrefsection - \fi - \ifnum\c@refsegment>\z@ - \blx@err@nestenv{refsection}% - \blx@endrefsegment - \fi - \@ifnextchar[%] - {\blx@refsection} - {\blx@refsection[]}} - -\def\blx@refsection{% - \begingroup - \blx@hook@fileverb - \blx@refsection@i} - -\def\blx@refsection@i[#1]{% - \endgroup - \global\advance\blx@maxsection\@ne - \global\c@refsection\blx@maxsection - \blx@inf@refsec - \blx@secinit - \if@filesw - \blx@auxwrite\@mainaux{}{% - \string\abx@aux@refsection{\the\c@refsection}{\the\c@page}}% - \ifblank{#1} - {} - {\let\blx@bibfiles\@empty - \blx@xsanitizeafter{\forcsvlist\blx@refsection@addfile}{#1}% - \forlistloop{\listadd\blx@bibfiles}\blx@bibfiles@global}% - \blx@refsection@bibtex - \fi - \blx@info{Setting label 'refsection:\the\c@refsection'}% - \label{refsection:\the\c@refsection}% - \endgroup} - -\def\blx@refsection@addfile#1{% - \ifcsdef{blx@res@labl@#1} - {\blx@refsection@addfile@i{\csuse{blx@res@labl@#1}}} - {\blx@refsection@addfile@i{#1}}} - -\def\blx@refsection@addfile@i#1{% - \ifcsdef{blx@res@loca@#1} - {\listeadd\blx@bibfiles{#1}} - {\listeadd\blx@bibfiles{\blx@stripbib{#1}\detokenize{.bib}}}} - -\def\blx@refsection@biber{% - \blx@regbibfiles\jobname\blx@bibfiles - \begingroup - \let\blx@tempa\@empty - \blx@bibdata\blx@tempa\blx@bibfiles - \blx@auxwrite\blx@auxout - {\let\do\blx@datasource} - {\blx@xml@endsection\blx@nl - \blx@xml@comment{section \the\c@refsection}% - \blx@xml@bibdata{\the\c@refsection}{\blx@tempa}% - \blx@xml@section{\the\c@refsection}}% - \endgroup} - -\def\blx@refsection@bibtex{% - \xdef\blx@auxfile@bibtex{\jobname\the\c@refsection\blxauxsuffix}% - \blx@regbibfiles\blx@auxfile@bibtex\blx@bibfiles - \blx@logreq@inactive - \blx@ifsigned{\blx@auxfile@bibtex}{aux} - {\immediate\openout\blx@auxout\blx@auxfile@bibtex.aux\relax - \global\let\blx@auxout@bibtex\blx@auxout - \blx@auxinit@bibtex\blx@bibfiles} - {}} - -\protected\def\endrefsection{% - \blx@endrefsection - \blx@inf@refsec} - -\def\blx@endrefsection{% - \blx@endrefsegment - \blx@endrefsection@bibtex - \global\c@refsection\z@} - -\def\blx@endrefsection@biber{% - \ifnum\c@refsection>\z@ - \blx@auxwrite\blx@auxout{}{% - \blx@xml@endsection\blx@nl - \blx@xml@comment{section 0 (cont.)}% - \blx@xml@section{0}}% - \fi} - -\def\blx@endrefsection@bibtex{% - \ifx\blx@auxout@bibtex\blx@auxout - \immediate\closeout\blx@auxout - \global\let\blx@auxout@bibtex\@mainaux - \xdef\blx@auxfile@bibtex{\jobname}% - \fi} - -\AtEndDocument{% - \blx@endrefsection - \def\abx@aux@refsection#1#2{\blx@addchecksum{#1}{#2}}} - -\protected\def\abx@aux@refsection#1#2{% - \ifnum#1>\blx@maxsection - \global\blx@maxsection#1\relax - \fi - \blx@addchecksum{#1}{#2}} - -% Reference segments - -\newrobustcmd*{\newrefsegment}{% - \ifnum\c@refsegment>\z@ - \blx@endrefsegment - \fi - \refsegment} -\let\blx@newrefsegment\newrefsegment - -\newrobustcmd*{\refsegment}{% - \ifnum\c@refsegment>\z@ - \blx@err@nestenv{refsegment}% - \blx@endrefsegment - \fi - \global\advance\blx@maxsegment\@ne - \global\c@refsegment\blx@maxsegment - \blx@inf@refseg - \blx@info{Setting label 'refsegment:\the\c@refsection\the\c@refsegment'}% - \label{refsegment:\the\c@refsection\the\c@refsegment}% - \ifcsundef{blx@segm@\the\c@refsection @\the\c@refsegment} - {\global\cslet{blx@segm@\the\c@refsection @\the\c@refsegment}\@empty} - {}} - -\protected\def\endrefsegment{% - \blx@endrefsegment - \blx@inf@refseg} - -\def\blx@endrefsegment{% - \global\c@refsegment\z@} - -% Reference section/segment auto-reset -% we are prepending to the commands so that the resets happen before -% the part title is typeset otherwise \cites in there could be "ibid" -% which makes no sense -\def\blx@refpatch@part#1{% - \ifundef\part - {\blx@err@nodocdiv{part}} - {\toggletrue{blx@tempa}% - \def\do##1{% - \pretocmd##1{#1} - {\togglefalse{blx@tempa}\listbreak} - {}}% - \docsvlist{% - \H@old@part,% hyperref - \NR@part,% nameref - \@part}% latex/koma-script/memoir - \iftoggle{blx@tempa} - {\blx@err@patch{\string\@part}} - {}% - \let\do\noexpand}} - -\def\blx@refpatch@chapter#1{% - \ifundef\chapter - {\blx@err@nodocdiv{chapter}} - {\pretocmd\@makechapterhead{#1} - {} - {\blx@err@patch{\string\@makechapterhead}}}} - -\def\blx@refpatch@sect#1{% - \ifcsundef{#1} - {\blx@err@nodocdiv{#1}\@gobbletwo} - {\blx@refpatch@sect@i}} - -\edef\blx@refpatch@sect@i#1#2{% - \def\noexpand\do##1{% - \pretocmd##1% - {\noexpand\blx@refpatch@sect@ii{#1}{#2}{\string#2}} - {\togglefalse{blx@tempa}\noexpand\listbreak} - {}}% - \noexpand\blx@refpatch@sect@iii} - -\def\blx@refpatch@sect@ii#1#2#3{% - \ifnumequal{#2}{#3}{#1}{}} - -\def\blx@refpatch@sect@iii{% - \toggletrue{blx@tempa}% - \docsvlist{% order does matter: - \H@old@sectm@m,% memoir+hyperref (what a mess...) - \M@sect,% memoir - \H@old@sect,% hyperref - \NR@sect,% nameref - \scr@sect,% koma-script 3.x - \@sect}% latex - \iftoggle{blx@tempa} - {\blx@err@patch{\string\@sect}} - {}% - \let\do\noexpand} - -% Bibliography categories - -\let\blx@categories\@empty - -% {<category>} - -\newrobustcmd*{\DeclareBibliographyCategory}[1]{% - \ifcsundef{blx@catg@#1} - {\global\cslet{blx@catg@#1}\@empty - \listgadd\blx@categories{#1}} - {\blx@error - {Category '#1' already declared} - {The bibliography category '#1'\MessageBreak - has already been declared}}} -\@onlypreamble\DeclareBibliographyCategory - -% {<category>}{<entrykey>,...} - -\newrobustcmd*{\addtocategory}[2]{% - \ifcsundef{blx@catg@#1} - {\blx@error - {Category '#1' not declared} - {Use \string\DeclareBibliographyCategory\space to declare}} - {\AfterPreamble{% - \blx@xsanitizeafter{\forcsvlist{\blx@addtocategory{#1}}}{#2}}}} - -% {<category>}{<entrykey>,...} - -\def\blx@addtocategory#1#2{% - \blx@auxwrite\@mainaux{}{\string\abx@aux@category{#1}{#2}}% - \abx@aux@category{#1}{#2}} - -% {<category>}{<entrykey>,...} - -\protected\def\abx@aux@category#1#2{% - \xifinlistcs{\detokenize{#2}}{blx@catg@#1} - {} - {\listcsxadd{blx@catg@#1}{\detokenize{#2}}}} - -\AtEndDocument{\let\abx@aux@category\@gobbletwo} - -% [<options>]{<resource>,...} - -\renewrobustcmd*{\bibliography}[1]{% - \begingroup - \def\blx@tempa{file}% - \def\blx@tempb{bibtex}% - \def\blx@tempc{local}% - \blx@xsanitizeafter{\forcsvlist\blx@addbib@legacy}{#1}% - \endgroup} -\@onlypreamble\bibliography - -\def\blx@addbib@legacy#1{% - \begingroup - \edef\blx@tempa{\endgroup - \noexpand\blx@addbib@resource{\blx@stripbib{#1}\detokenize{.bib}}}% - \blx@tempa} - -\def\blx@stripbib#1{% - \expandafter\blx@stripbib@i\detokenize{#1.bib}&} -\edef\blx@stripbib@i{% - \def\noexpand\blx@stripbib@i##1\detokenize{.bib}##2&} -\blx@stripbib@i{#1} - -% [<options>]{<resource>,...} - -\newrobustcmd*{\addbibresource}{% - \blx@addbib\blx@addbib@resource} -\@onlypreamble\addbibresource - -\newrobustcmd*{\addglobalbib}{% - \blx@addbib\blx@addbib@global} -\@onlypreamble\addglobalbib - -\newrobustcmd*{\addsectionbib}{% - \blx@addbib\blx@addbib@register} -\@onlypreamble\addsectionbib - -\def\blx@addbib#1{% - \@ifnextchar[%] - {\blx@addbib@i{#1}} - {\blx@addbib@i{#1}[]}} - -\def\blx@addbib@i#1[#2]{% - \begingroup - \blx@hook@fileverb - \blx@addbib@ii{#1}{#2}} - -\def\blx@addbib@ii#1#2#3{% - \endgroup - \begingroup - \def\blx@tempa{file}% - \def\blx@tempb{bibtex}% - \def\blx@tempc{local}% - \undef\blx@tempd - \setkeys{blx@addbib}{#2}% - \blx@xsanitizeafter{#1}{#3}% - \endgroup} - -\def\blx@hook@fileverb{% - \let\do\@makeother - \dospecials - \catcode`\\=\z@ - \catcode`\{=\@ne - \catcode`\}=\tw@} - -\define@key{blx@addbib}{type}{\def\blx@tempa{#1}} -\define@key{blx@addbib}{datatype}{\def\blx@tempb{#1}} -\define@key{blx@addbib}{location}{\def\blx@tempc{#1}} -\define@key{blx@addbib}{label}{\edef\blx@tempd{\detokenize{#1}}} - -% \blx@res@type@<resource> resource -> type -% \blx@res@data@<resource> resource -> datatype -% \blx@res@loca@<resource> resource -> datatype -% \blx@res@labl@<resource> label -> resource - -\def\blx@addbib@register#1{% - \csxdef{blx@res@type@#1}{\blx@tempa}% - \csxdef{blx@res@data@#1}{\blx@tempb}% - \csxdef{blx@res@loca@#1}{\blx@tempc}% - \ifdef\blx@tempd - {\csxdef{blx@res@labl@\blx@tempd}{#1}} - {}} - -\def\blx@addbib@resource#1{% - \blx@addbib@register{#1}% - \listgadd\blx@bibfiles{#1}% - \blx@regbibfile\jobname{#1}} - -\def\blx@addbib@global#1{% - \blx@addbib@resource{#1}% - \listgadd\blx@bibfiles@global{#1}} - -\let\blx@bibfiles\@empty -\let\blx@bibfiles@global\@empty - -\def\blx@bibdata#1#2{% - \forlistloop{\blx@bibdata@i{#1}}#2} -\def\blx@bibdata@i#1#2{% - \blx@xmlsanitizeafter{\blx@bibdata@ii{#1}{#2}}{#2}} -\def\blx@bibdata@ii#1#2#3{% - \eappto#1{% - \blx@xml@datasource - {\ifcsdef{blx@res@type@#2} - {\csuse{blx@res@type@#2}} - {file}} - {\ifcsdef{blx@res@data@#2} - {\csuse{blx@res@data@#2}} - {bibtex}} - {#3}}} - -%% Citations - -\newrobustcmd*{\AtEveryCite}{\gappto\blx@hook@cite} -\newrobustcmd*{\AtEveryCitekey}{\gappto\blx@hook@citekey} -\newrobustcmd*{\AtEveryMultiCite}{\gappto\blx@hook@mcite} -\@onlypreamble\AtEveryCite -\@onlypreamble\AtEveryCitekey -\@onlypreamble\AtEveryMultiCite - -\newrobustcmd*{\AtEachCitekey}{% - \iftoggle{blx@citation}{\appto\blx@hook@citekey}{\@gobble}} - -\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 - {\gdef\blx@hook@cite@next{\global\undef\blx@hook@cite@next}} - {}% - \gappto\blx@hook@cite@next} - -\newrobustcmd*{\AtNextCitekey}{% - \ifundef\blx@hook@citekey@next - {\gdef\blx@hook@citekey@next{\global\undef\blx@hook@citekey@next}} - {}% - \gappto\blx@hook@citekey@next} - -\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'}{}{}{} - {\blx@error - {Style '#1' not found} - {The citation style '#1' could not be found}}} -\@onlypreamble\RequireCitationStyle - -% {<code>} - -\newrobustcmd*{\InitializeCitationStyle}{\appto\blx@hook@cbxinit} -\@onlypreamble\InitializeCitationStyle - -% {<code>} - -\newrobustcmd*{\OnManualCitation}{\appto\blx@hook@mancite} -\@onlypreamble\OnManualCitation - -\newrobustcmd*{\mancite}{% - \csuse{blx@hook@mancite}% - \blx@ibidreset - \blx@idemreset - \blx@opcitreset - \blx@loccitreset} - -% {<entrykey>}{<message>} - -\def\blx@citation#1#2{% - \ifbool{citerequest} - {\ifcsdef{blx@setp@\the\c@refsection @#1} - {\blx@citation@set{#1}{#2}} - {\ifcsdef{blx@setc@\the\c@refsection @#1} - {\blx@citation@inset{#1}{#2}} - {\blx@citation@entry{#1}{#2}}}% - \ifcsdef{blx@refc@\the\c@refsection @#1}% BibTeX only - {\blx@citation@xref{#1}} - {}} - {}} - -\def\blx@citation@entry#1#2{% - \blx@bibreq{#1}% - \ifinlistcs{#1}{blx@segm@\the\c@refsection @\the\c@refsegment} - {} - {\listcsgadd{blx@segm@\the\c@refsection @\the\c@refsegment}{#1}}% - \blx@ifdata{#1} - {} - {\ifcsdef{blx@miss@\the\c@refsection} - {\ifinlistcs{#1}{blx@miss@\the\c@refsection} - {} - {\blx@logreq@active{#2{#1}}}} - {\blx@logreq@active{#2{#1}}}}} - -\def\blx@citation@set#1#2{% - \blx@citation@entry{#1}{#2}% - \begingroup - \def\do##1{\blx@citation@entry{##1}\blx@msg@cundef}% - \expandafter\expandafter\expandafter\docsvlist - \expandafter\expandafter\expandafter{% - \csname blx@setp@\the\c@refsection @#1\endcsname}% - \endgroup} - -\def\blx@citation@inset#1#2{% - \blx@citation@entry{#1}{#2}% - \expandafter\expandafter\expandafter\blx@citation@inset@i - \expandafter\expandafter\expandafter{% - \csname blx@setc@\the\c@refsection @#1\endcsname}\blx@msg@cundef} - -\def\blx@citation@inset@i#1{% - \ifcsdef{blx@setp@\the\c@refsection @#1} - {\blx@citation@set{#1}} - {\blx@citation@entry{#1}}} - -\def\blx@citation@xref#1{% BibTeX only - \begingroup - \edef\blx@tempa{blx@refp@\the\c@refsection @% - \csname blx@refc@\the\c@refsection @#1\endcsname}% - \ifcsdef\blx@tempa - {\ifinlistcs{#1}\blx@tempa - {} - {\listcsxadd\blx@tempa{#1}}% - \blx@tempcnta\z@ - \def\do##1{\advance\blx@tempcnta\@ne}% - \dolistcsloop\blx@tempa} - {\listcsxadd\blx@tempa{#1}% - \blx@tempcnta\@ne}% - \expandafter\endgroup\ifnum\blx@tempcnta<\blx@minxrefs\relax - \else - \expandafter\expandafter\expandafter\blx@citation@entry - \expandafter\expandafter\expandafter{% - \csname blx@refc@\the\c@refsection @#1\endcsname}\blx@msg@cundef - \fi} - -\def\blx@citation@all{% - \ifbool{citerequest} - {\blx@bibreq{*}% - \global\csletcs - {blx@segm@\the\c@refsection @\the\c@refsegment} - {blx@sbib@\the\c@refsection}% - \ifcsvoid{blx@sort@\the\c@refsection} - {\blx@logreq@active{}} - {}} - {}} - -\protected\def\blx@bibreq#1{% - \blx@auxwrite\blx@auxout@bibtex{}{\string\citation{#1}}} - -% {<set>}{<key1,key2,key3>} - -\newrobustcmd*{\defbibentryset}[2]{% - \@bsphack - \begingroup - \blx@xsanitizeafter{\def\blx@tempa}{#1}% - \let\blx@tempb\@empty - \let\blx@tempc\@empty - \blx@xsanitizeafter{\forcsvlist\blx@defentryset@add}{#2}% - \ifcsdef{blx@set@\the\c@refsection @\blx@tempa} - {\expandafter\ifdefequal - \csname blx@set@\the\c@refsection @\blx@tempa\endcsname - \blx@tempb - {} - {\blx@error - {Conflicting definitions of '\blx@tempa'} - {The entry set '\blx@tempa' been defined before.\MessageBreak - old: \blx@tempa\space = % - \csuse{blx@set@\the\c@refsection @\blx@tempa}\MessageBreak - new: \blx@tempa\space = \blx@tempb\MessageBreak - I'm ignoring the new definition}}} - {\global\cslet{blx@set@\the\c@refsection @\blx@tempa}\blx@tempb}% - \endgroup - \@esphack} - -\def\blx@defentryset@add#1{% - \edef\blx@tempb{\blx@tempb\blx@tempc#1}% - \def\blx@tempc{,}} - -% {<entrykey>,...} - -\protected\def\blx@citeloop#1{% - \begingroup - \blx@tempcnta\z@ - \blx@tempcntb\z@ - \let\blx@tempa\@empty - \forcsvlist\blx@citeadd{#1}% - \blx@thenotecheck - \ifnum\blx@tempcnta>\z@ - \ifnum\blx@tempcntb>\z@ - \multicitedelim - \fi - \fi - \letcs\blx@tempb{blx@sort@\the\c@refsection}% - \blx@thecitesort - \edef\blx@tempa{\endgroup - \c@citecount\z@ - \c@citetotal\the\blx@tempcnta\relax - \unexpanded{\forlistloop\blx@citeprint}{\blx@tempb}}% - \blx@tempa} - -\def\blx@notecheck{% - \ifnum\blx@tempcnta>\@ne - \blx@warning{% - Package option 'sortcites' enabled.\MessageBreak - Verify postnote placement}% - \fi} - -\def\blx@citesort{% - \ifnum\blx@tempcnta>\@ne - \blx@filtercitesort\blx@tempb{blx@tempa}% - \else - \blx@citenosort - \fi} - -\def\blx@citenosort{% - \let\blx@tempb\blx@tempa} - -% {<entrykey>} - -\def\blx@citeadd#1{% - \blx@citation{#1}\blx@msg@cundefon - \blx@ifdata{#1} - {\advance\blx@tempcnta\@ne - \listadd\blx@tempa{#1}} - {\ifnum\blx@tempcntb>\z@\multicitedelim\fi - \abx@missing{#1}% - \advance\blx@tempcntb\@ne}} - -% {<entrykey>} - -\protected\def\blx@citeprint#1{% - \advance\c@citecount\@ne - \addtocounter{instcount}\@ne - \ifnum\c@citecount=\@ne - \blx@getdata@cite{#1}% - \blx@precode - \ifnum\c@citetotal>\@ne - \blx@resetdata - \fi - \else - \blx@dlimcode - \fi - \begingroup - \ifnum\c@citetotal>\@ne - \blx@getdata@cite{#1}% - \fi - \blx@entrysetcount - \blx@setoptions@type\abx@field@entrytype - \blx@setoptions@entry - \blx@backref{#1}% - \blx@pagetracker - \csuse{blx@hook@citekey}% - \csuse{blx@hook@citekey@next}% - \blx@beglangcite - \blx@execute - \blx@loopcode - \blx@citecounter - \blx@citetracker - \blx@ibidtracker - \blx@idemtracker - \blx@opcittracker - \blx@loccittracker - \ifnum\c@citecount=\c@citetotal - \def\blx@thecheckpunct{\blx@err@nestcite\@gobble}% - \blx@postcode - \fi - \blx@endlangcite - \endgroup} - -% cite counter - -\def\blx@citecounter@global{% - \ifbool{@filesw} - {\ifbool{citetracker} - {\immediate\write\@mainaux{% - \string\abx@aux@count - {\the\c@refsection}{\abx@field@entrykey}}} - {}} - {}} - -\def\blx@citecounter@context{% - \ifbool{@filesw} - {\ifbool{citetracker} - {\immediate\write\@mainaux{% - \iftoggle{blx@footnote} - {\string\abx@aux@fncount} - {\string\abx@aux@count}% - {\the\c@refsection}{\abx@field@entrykey}}} - {}} - {}} - -% {<refsection>}{<entrykey>} - -\protected\def\blx@aux@count#1#2{% - \csnumgdef{blx@count@#1@\detokenize{#2}}{\csuse{blx@count@#1@\detokenize{#2}}+1}} -\protected\def\blx@aux@fncount#1#2{% - \csnumgdef{blx@fncount@#1@\detokenize{#2}}{\csuse{blx@fncount@#1@\detokenize{#2}}+1}} - -\let\abx@aux@count\@gobbletwo -\let\abx@aux@fncount\@gobbletwo - -\AtEndDocument{% - \let\abx@aux@count\@gobbletwo - \let\abx@aux@fncount\@gobbletwo} - -\protected\def\blx@setcitecounter@global{% - \c@citecounter0% - \csuse{blx@count@\the\c@refsection @\abx@field@entrykey}% - \relax} - -\protected\def\blx@setcitecounter@context{% - \c@citecounter0% - \iftoggle{blx@footnote} - {\csuse{blx@fncount@\the\c@refsection @\abx@field@entrykey}} - {\csuse{blx@count@\the\c@refsection @\abx@field@entrykey}}% - \relax} - -% cite tracker - -\def\blx@citetracker@global{% - \ifbool{citetracker} - {\xifinlistcs\abx@field@entrykey{blx@bsee@\the\c@refsection} - {} - {\listcsxadd{blx@bsee@\the\c@refsection}\abx@field@entrykey}} - {}} - -\def\blx@citetracker@context{% - \ifbool{citetracker} - {\iftoggle{blx@footnote} - {\xifinlistcs\abx@field@entrykey{blx@fsee@\the\c@refsection} - {} - {\listcsxadd{blx@fsee@\the\c@refsection}\abx@field@entrykey}} - {\xifinlistcs{\abx@field@entrykey}{blx@bsee@\the\c@refsection} - {} - {\listcsxadd{blx@bsee@\the\c@refsection}\abx@field@entrykey}}} - {}} - -\protected\appto\abx@savetrackers{% - \global\csletcs{blx@saved@bsee@\the\c@refsection}{blx@bsee@\the\c@refsection}% - \global\csletcs{blx@saved@fsee@\the\c@refsection}{blx@fsee@\the\c@refsection}} - -\protected\appto\abx@resttrackers{% - \global\csletcs{blx@bsee@\the\c@refsection}{blx@saved@bsee@\the\c@refsection}% - \global\csletcs{blx@fsee@\the\c@refsection}{blx@saved@fsee@\the\c@refsection}} - -\protected\appto\abx@cleartrackers{% - \global\cslet{blx@saved@bsee@\the\c@refsection}\@empty - \global\cslet{blx@saved@fsee@\the\c@refsection}\@empty} - -% ibidem tracker - -\def\blx@ibidtracker@global{% - \ifbool{citetracker} - {\global\let\blx@lastkey@text\abx@field@entrykey} - {}} - -\def\blx@ibidtracker@context{% - \ifbool{citetracker} - {\iftoggle{blx@footnote} - {\global\let\blx@lastkey@foot\abx@field@entrykey} - {\global\let\blx@lastkey@text\abx@field@entrykey}} - {}} - -\def\blx@ibidtracker@strict{% - \blx@ifcitesingle - {\blx@ibidtracker@global} - {\blx@ibidreset@global}}% - -\def\blx@ibidtracker@constrict{% - \blx@ifcitesingle - {\blx@mpfnsave - \blx@ibidtracker@context} - {\blx@ibidreset@context}}% - -\def\blx@ibidreset@force{% - \global\undef\blx@lastkey@text - \global\undef\blx@lastkey@foot - \blx@mpfnreset} - -\def\blx@ibidreset@global{% - \global\undef\blx@lastkey@text} - -\def\blx@ibidreset@context{% - \iftoggle{blx@footnote} - {\blx@mpfnreset - \global\undef\blx@lastkey@foot} - {\global\undef\blx@lastkey@text}} - -\protected\appto\abx@savetrackers{% - \global\let\blx@saved@lastkey@text\blx@lastkey@text - \global\let\blx@saved@lastkey@foot\blx@lastkey@foot} - -\protected\appto\abx@resttrackers{% - \global\let\blx@lastkey@text\blx@saved@lastkey@text - \global\let\blx@lastkey@foot\blx@saved@lastkey@foot} - -\protected\appto\abx@cleartrackers{% - \global\undef\blx@saved@lastkey@text - \global\undef\blx@saved@lastkey@foot} - -% idem tracker - -\def\blx@idemtracker@global{% - \ifbool{citetracker} - {\global\let\blx@lasthash@text\abx@field@fullhash} - {}} - -\def\blx@idemtracker@context{% - \ifbool{citetracker} - {\iftoggle{blx@footnote} - {\global\let\blx@lasthash@foot\abx@field@fullhash} - {\global\let\blx@lasthash@text\abx@field@fullhash}} - {}} - -\let\blx@idemtracker@strict\blx@idemtracker@global - -\def\blx@idemtracker@constrict{% - \blx@mpfnsave - \blx@idemtracker@context} - -\def\blx@idemreset@force{% - \global\undef\blx@lasthash@text - \global\undef\blx@lasthash@foot - \blx@mpfnreset} - -\def\blx@idemreset@global{% - \global\undef\blx@lasthash@text} - -\def\blx@idemreset@context{% - \iftoggle{blx@footnote} - {\blx@mpfnreset - \global\undef\blx@lasthash@foot} - {\global\undef\blx@lasthash@text}} - -\protected\appto\abx@savetrackers{% - \global\let\blx@saved@lasthash@text\blx@lasthash@text - \global\let\blx@saved@lasthash@text\blx@lasthash@text} - -\protected\appto\abx@resttrackers{% - \global\let\blx@lasthash@text\blx@saved@lasthash@text - \global\let\blx@lasthash@text\blx@saved@lasthash@text} - -\protected\appto\abx@cleartrackers{% - \global\undef\blx@saved@lasthash@text - \global\undef\blx@saved@lasthash@foot} - -% opcit tracker - -\def\blx@opcittracker@global{% - \ifbool{citetracker} - {\blx@opcit@tracker{text}} - {}} - -\def\blx@opcittracker@context{% - \ifbool{citetracker} - {\iftoggle{blx@footnote} - {\blx@opcit@tracker{foot}} - {\blx@opcit@tracker{text}}} - {}} - -\def\blx@opcittracker@strict{% - \blx@ifcitesingle - {\blx@opcittracker@global} - {\blx@opcitreset@global}}% - -\def\blx@opcittracker@constrict{% - \blx@ifcitesingle - {\blx@mpfnsave - \blx@opcittracker@context} - {\blx@opcitreset@context}}% - -\def\blx@opcit@tracker#1{% - \blx@imc@iffieldundef{namehash} - {} - {\global\cslet{blx@lastkey@#1@\abx@field@namehash}\abx@field@entrykey - \xifinlistcs\abx@field@namehash{blx@trackhash@#1} - {} - {\listcsxadd{blx@trackhash@#1}\abx@field@namehash}}} - -\def\blx@opcit@reset#1{% - \begingroup - \def\do##1{\global\csundef{blx@lastkey@#1@##1}}% - \dolistcsloop{blx@trackhash@#1}% - \global\cslet{blx@trackhash@#1}\@empty - \endgroup} - -\def\blx@opcitreset@force{% - \blx@opcit@reset{text}% - \blx@opcit@reset{foot}% - \blx@mpfnreset} - -\def\blx@opcitreset@global{% - \blx@opcit@reset{text}} - -\def\blx@opcitreset@context{% - \iftoggle{blx@footnote} - {\blx@opcit@reset{foot}% - \blx@mpfnreset} - {\blx@opcit@reset{text}}} - -\let\blx@trackhash@text\@empty -\let\blx@trackhash@foot\@empty - -\protected\appto\abx@savetrackers{% - \begingroup - \def\do#1{\global\csletcs{blx@saved@lastkey@text@#1}{blx@lastkey@text@#1}}% - \dolistloop\blx@trackhash@text - \global\let\blx@saved@trackhash@text\blx@trackhash@text - \def\do#1{\global\csletcs{blx@saved@lastkey@foot@#1}{blx@lastkey@foot@#1}}% - \dolistloop\blx@trackhash@foot - \global\let\blx@saved@trackhash@foot\blx@trackhash@foot - \endgroup} - -\protected\appto\abx@resttrackers{% - \begingroup - \blx@opcit@reset{text}% - \global\let\blx@trackhash@text\blx@saved@trackhash@text - \def\do#1{\global\csletcs{blx@lastkey@text@#1}{blx@saved@lastkey@text@#1}}% - \dolistloop\blx@trackhash@text - \blx@opcit@reset{foot}% - \global\let\blx@trackhash@foot\blx@saved@trackhash@foot - \def\do#1{\global\csletcs{blx@lastkey@foot@#1}{blx@saved@lastkey@foot@#1}}% - \dolistloop\blx@trackhash@foot - \endgroup} - -\protected\appto\abx@cleartrackers{% - \begingroup - \def\do#1{\global\csundef{blx@saved@lastkey@text@#1}}% - \dolistloop\blx@saved@trackhash@text - \global\undef\blx@saved@trackhash@text - \def\do#1{\global\csundef{blx@saved@lastkey@foot@#1}}% - \dolistloop\blx@saved@trackhash@foot - \global\undef\blx@saved@trackhash@foot - \endgroup} - -% loccit tracker - -\def\blx@loccittracker@global{% - \ifbool{citetracker} - {\blx@loccit@tracker{text}} - {}} - -\def\blx@loccittracker@context{% - \ifbool{citetracker} - {\iftoggle{blx@footnote} - {\blx@loccit@tracker{foot}} - {\blx@loccit@tracker{text}}} - {}} - -\def\blx@loccittracker@strict{% - \ifbool{citetracker} - {\blx@loccit@stricttracker{text}} - {}} - -\def\blx@loccittracker@constrict{% - \ifbool{citetracker} - {\iftoggle{blx@footnote} - {\blx@mpfnsave - \blx@loccit@stricttracker{foot}} - {\blx@loccit@stricttracker{text}}} - {}} - -\def\blx@loccit@tracker#1{% - \global\csundef{blx@lastnote@#1@\abx@field@entrykey}% - \blx@imc@iffieldundef{postnote} - {} - {\global\cslet{blx@lastnote@#1@\abx@field@entrykey}\abx@field@postnote - \xifinlistcs\abx@field@entrykey{blx@trackkeys@#1} - {} - {\listcsxadd{blx@trackkeys@#1}\abx@field@entrykey}}} - -\def\blx@loccit@stricttracker#1{% - \global\csundef{blx@lastnote@#1@\abx@field@entrykey}% - \blx@imc@iffieldundef{postnote} - {} - {\blx@ifcitesingle - {\expandafter\blx@imc@ifpages - \expandafter{\abx@field@postnote} - {\global\cslet{blx@lastnote@#1@\abx@field@entrykey}\abx@field@postnote - \xifinlistcs\abx@field@entrykey{blx@trackkeys@#1} - {} - {\listcsxadd{blx@trackkeys@#1}\abx@field@entrykey}} - {}} - {}}} - -\def\blx@loccit@reset#1{% - \begingroup - \def\do##1{\global\csundef{blx@lastnote@#1@##1}}% - \dolistcsloop{blx@trackkeys@#1}% - \global\cslet{blx@trackkeys@#1}\@empty - \endgroup} - -\def\blx@loccitreset@force{% - \blx@loccit@reset{text}% - \blx@loccit@reset{foot}% - \blx@mpfnreset} - -\def\blx@loccitreset@global{% - \blx@loccit@reset{text}} - -\def\blx@loccitreset@context{% - \iftoggle{blx@footnote} - {\blx@loccit@reset{foot}% - \blx@mpfnreset} - {\blx@loccit@reset{text}}} - -\let\blx@trackkeys@text\@empty -\let\blx@trackkeys@foot\@empty - -\protected\appto\abx@savetrackers{% - \begingroup - \def\do#1{\global\csletcs{blx@saved@lastnote@text@#1}{blx@lastnote@text@#1}}% - \dolistloop\blx@trackkeys@text - \global\let\blx@saved@trackkeys@text\blx@trackkeys@text - \def\do#1{\global\csletcs{blx@saved@lastnote@foot@#1}{blx@lastnote@foot@#1}}% - \dolistloop\blx@trackkeys@foot - \global\let\blx@saved@trackkeys@foot\blx@trackkeys@foot - \endgroup} - -\protected\appto\abx@resttrackers{% - \begingroup - \blx@loccit@reset{text}% - \global\let\blx@trackkeys@text\blx@saved@trackkeys@text - \def\do#1{\global\csletcs{blx@lastnote@text@#1}{blx@saved@lastnote@text@#1}}% - \dolistloop\blx@trackkeys@text - \blx@loccit@reset{foot}% - \global\let\blx@trackkeys@foot\blx@saved@trackkeys@foot - \def\do#1{\global\csletcs{blx@lastnote@foot@#1}{blx@saved@lastnote@foot@#1}}% - \dolistloop\blx@trackkeys@foot - \endgroup} - -\protected\appto\abx@cleartrackers{% - \begingroup - \def\do#1{\global\csundef{blx@saved@lastnote@text@#1}}% - \dolistloop\blx@saved@trackkeys@text - \global\undef\blx@saved@trackkeys@text - \def\do#1{\global\csundef{blx@saved@lastnote@foot@#1}}% - \dolistloop\blx@saved@trackkeys@foot - \global\undef\blx@saved@trackkeys@foot - \endgroup} - -\def\blx@addbackref#1{% - \ifcsdef{blx@setp@\the\c@refsection @#1} - {\ifcase\blx@backrefsetstyle - \blx@addbackref@i{#1}% - \or - \blx@addbackref@ii{setp}{#1}% - \or - \blx@addbackref@i{#1}% - \or - \blx@addbackref@i{#1}% - \or - \blx@addbackref@i{#1}% - \blx@addbackref@ii{setp}{#1}% - \or - \blx@addbackref@i{#1}% - \blx@addbackref@ii{setp}{#1}% - \fi} - {\ifcsdef{blx@setc@\the\c@refsection @#1} - {\ifcase\blx@backrefsetstyle - \blx@addbackref@ii{setc}{#1}% - \or - \blx@addbackref@i{#1}% - \or - \blx@addbackref@i{#1}% - \or - \blx@addbackref@i{#1}% - \blx@addbackref@ii{setc}{#1}% - \or - \blx@addbackref@i{#1}% - \or - \blx@addbackref@i{#1}% - \blx@addbackref@ii{setc}{#1}% - \fi} - {\blx@addbackref@i{#1}}}} - -\def\blx@addbackref@i#1{% - \ifbacktracker - \blx@leavevmode - \if@filesw - \protected@write\@mainaux{}{\string\abx@aux@backref - {\the\c@instcount}{#1}{\the\c@refsection}% - {\thepage}{\noexpand\the\c@page}}% - \fi - \fi} - -\def\blx@addbackref@ii#1#2{% - \expandafter\expandafter\expandafter\forcsvlist - \expandafter\expandafter\expandafter\blx@addbackref@i - \expandafter\expandafter\expandafter{% - \csname blx@#1@\the\c@refsection @#2\endcsname}} - -% {<instcount>}{<entrykey>}{<refsection>}{<page>}{<page int>} - -\protected\def\blx@aux@backref#1#2#3#4#5{% - \ifcsundef{blx@pref@#3@\detokenize{#2}} - {\global\cslet{blx@pref@#3@\detokenize{#2}}\@empty - \expandafter\blx@onlypreamble\csname blx@pref@#3@\detokenize{#2}\endcsname} - {}% - \ifinlistcs{#4}{blx@pref@#3@\detokenize{#2}} - {} - {\listcsgadd{blx@pref@#3@\detokenize{#2}}{#4}}% - \blx@addpagesum{#1}{#5}} - -\AtEndDocument{% - \def\abx@aux@backref#1#2#3#4#5{\blx@addpagesum{#1}{#5}}} - -% {<true>}{<false>} - -\def\blx@ifcitesingle{% - \ifnum\c@citetotal=\@ne - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi} - -% hyperref interface - -\appto\blx@mkhyperref{% - \protected\def\blx@imc@bibhyperref{% - \@ifnextchar[%] - {\blx@bibhyperref} - {\blx@bibhyperref[\abx@field@entrykey]}}% - \ifundef\hyper@natanchorstart - {\long\def\blx@bibhyperref[#1]#2{% - \blx@sfsave\hyperlink{cite.\the\c@refsection @#1}{\blx@sfrest - #2% - \blx@sfsave}\blx@sfrest}% - \protected\long\def\blx@imc@bibhyperlink#1#2{% - \blx@sfsave\hyperlink{cite.\the\c@refsection:#1}{\blx@sfrest - #2% - \blx@sfsave}\blx@sfrest}% - \protected\long\def\blx@imc@bibhypertarget#1#2{% - \blx@sfsave\hypertarget{cite.\the\c@refsection:#1}{\blx@sfrest - #2% - \blx@sfsave}\blx@sfrest}}% - {\long\def\blx@bibhyperref[#1]#2{% - \blx@sfsave\hyper@natlinkstart{\the\c@refsection @#1}\blx@sfrest - #2% - \blx@sfsave\hyper@natlinkend\blx@sfrest}% - \protected\long\def\blx@imc@bibhyperlink#1#2{% - \blx@sfsave\hyper@natlinkstart{\the\c@refsection:#1}\blx@sfrest - #2% - \blx@sfsave\hyper@natlinkend\blx@sfrest}% - \protected\long\def\blx@imc@bibhypertarget#1#2{% - \blx@sfsave\hyper@natanchorstart{\the\c@refsection:#1}\blx@sfrest - #2% - \blx@sfsave\hyper@natanchorend\blx@sfrest}} - \let\blx@imc@ifhyperref\@firstoftwo - \def\blx@sf{\spacefactor}% - \def\blx@sfsave{% - \blx@leavevmode - \numgdef\blx@sf{\spacefactor}}% - \def\blx@sfrest{% - \ifhmode\spacefactor\blx@sf\relax\fi - \gdef\blx@sf{\spacefactor}}} - -\appto\blx@mknohyperref{% - \protected\def\blx@imc@bibhyperref{\@ifnextchar[\blx@nohyperref\@firstofone}% - \def\blx@nohyperref[#1]#2{#2}% - \let\blx@imc@bibhyperlink\@secondoftwo - \let\blx@imc@bibhypertarget\@secondoftwo - \let\blx@imc@ifhyperref\@secondoftwo} - -\blx@regimcs{% - \bibhyperref \bibhyperlink \bibhypertarget \ifhyperref} - -% {<entrykey>,...} - -\protected\def\nocite#{\blx@nocite} - -\def\blx@nocite#1{% - \@bsphack - \AfterPreamble{% - \iftoggle{blx@bibliography} - {} - {\ifstrequal{*}{#1} - {\blx@citation@all} - {\blx@xsanitizeafter{\forcsvlist\blx@nocite@do}{#1}}}}% - \@esphack} - -\def\blx@nocite@do#1{\blx@citation{#1}\blx@msg@cundef} - -% {<macro>}[<arg1>][<arg2>]{<arg3>} -% => <macro>{<arg1>}{<arg2>}{<arg3>} - -\protected\def\blx@citeargs#1{% - \@ifnextchar[%] - {\blx@citeargs@i{#1}} - {\blx@citeargs@iii{#1{}{}}}} -\long\def\blx@citeargs@i#1[#2]{% - \@ifnextchar[%] - {\blx@citeargs@ii{#1{#2}}} - {\blx@citeargs@iii{#1{}{#2}}}} -\long\def\blx@citeargs@ii#1[#2]{% - \blx@citeargs@iii{#1{#2}}} -\long\def\blx@citeargs@iii#1#2{% - \blx@xsanitizeafter{#1}{#2}} - -% {<macro>}(<arg1>)(<arg2>) -% => <macro>{<arg1>}{<arg2>} - -\protected\def\blx@multiargs#1{% - \@ifnextchar(%) - {\blx@multiargs@i{#1}} - {#1{}{}}} -\long\def\blx@multiargs@i#1(#2){% - \@ifnextchar(%) - {\blx@multiargs@ii{#1{#2}}} - {#1{}{#2}}} -\long\def\blx@multiargs@ii#1(#2){#1{#2}} - -% {<macro>}[<arg1>][<arg2>]{<arg3>}<punct> -% => <macro>{<arg1>}{<arg2>}{<arg3>}{<punctcmd>} - -\protected\def\blx@citepunct#1{% - \blx@citeargs{\blx@citepunct@i{#1}}} -\long\def\blx@citepunct@i#1#2#3#4{% - \blx@thecheckpunct{#1{#2}{#3}{#4}}} - -% {<csname>}[<arg1>][<arg2>]{arg3}[arg4]{arg5}<punct> -% => <macro>{<arg1>}{<arg2>}{<arg3>}{<arg4>}{arg5}{<punctcmd>} - -\protected\def\blx@citexpunct#1{% - \blx@citeargs{\blx@citexpunct@i{#1}}} -\long\def\blx@citexpunct@i#1#2#3#4{% - \@ifnextchar[%] - {\blx@citexpunct@ii{#1}{{#2}{#3}{#4}}} - {\blx@citexpunct@ii{#1}{{#2}{#3}{#4}}[#1]}} -\long\def\blx@citexpunct@ii#1#2[#3]#4{% - \blx@thecheckpunct{\blxcitecmd{#1}#2{#3}{#4}}} - -% {<code>}<punct> => <code>{<punctcmd>} - -\long\def\blx@checkpunct#1{% - \begingroup - \def\blx@tempa{\endgroup#1}% - \futurelet\blx@tempb\blx@checkpunct@i} -\def\blx@checkpunct@i{% - \expandafter\blx@checkpunct@ii\blx@autopunct&} -\def\blx@checkpunct@ii#1{% - \ifx#1&% - \expandafter\blx@checkpunct@iii - \fi - \ifx#1\blx@tempb - \expandafter\blx@checkpunct@iv - \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{% - \gdef\abx@field@postpunct{#3}% - \edef\blx@tempa{% - \expandonce\blx@tempa{% - \ifcsdef{blx@pm@\detokenize{#3}} - {\csname blx@imc@add\csname blx@pm@\detokenize{#3}\endcsname - \endcsname} - {\noexpand#3}}}% - \blx@tempa} - -\long\def\blx@nocheckpunct#1{#1{}} - -\protected\def\blx@citeinit{% - \iftoggle{blx@bibliography} - {} - {\toggletrue{blx@citation}}% - \blx@blxinit - \citesetup - \blx@setsfcodes - \blx@postpunct@agroup - \blx@resetdata - \blx@leavevmode - \csuse{blx@hook@cite}% - \csuse{blx@hook@cite@next}% - \let\blx@citeinit\blx@resetdata} - -\protected\def\blx@citecmdinit{% - \blx@leavevmode@cite - \iftoggle{blx@bibliography} - {} - {\blx@initunit}} - -% *{<command>}[<wrapper>]{<precode>}{<loopcode>}{<delimcode>}{<postcode>} - -\newrobustcmd*{\DeclareCiteCommand}{% - \@ifstar{\blx@defcitecmd*}{\blx@defcitecmd{}}} - -\def\blx@defcitecmd#1#2{% - \begingroup - \escapechar\m@ne - \edef\blx@tempa{\endgroup - \noexpand\blx@defcitecmd@i{#1}{\string#2}}% - \blx@tempa} - -\def\blx@defcitecmd@i#1#2{% - \blx@checkcitecmd{#2}{#1}% - \protected\csdef{#2}{% - \blx@citecmdinit - \@ifstar - {\blx@citepunct{\blxcitecmd{#2*}}} - {\blx@citepunct{\blxcitecmd{#2}}}}% - \@ifnextchar[%] - {\blx@defcitecmd@iii{#2#1}} - {\blx@defcitecmd@ii{#2#1}}} - -\long\def\blx@defcitecmd@ii#1{% - \protected\csedef{blx@cite@#1}{\blxciteicmd{#1}}% - \blx@defcitecmd@iv{#1}} - -\long\def\blx@defcitecmd@iii#1[#2]{% - \protected\long\csedef{blx@cite@#1}##1##2##3##4{% - \begingroup - \blx@citeinit - \unexpanded{#2}{\blxciteicmd{#1}{##1}{##2}{##3}{}}% - ##4\endgroup}% - \blx@defcitecmd@iv{#1}} - -\long\def\blx@defcitecmd@iv#1#2#3#4#5{% - \protected\long\csdef{blx@citei@#1}##1##2##3##4{% - \ifblank{##1} - {} - {\def\abx@field@prenote{##1}}% - \ifblank{##2} - {\let\blx@thenotecheck\relax} - {\def\abx@field@postnote{##2}}% - \def\blx@precode{#2}% - \def\blx@loopcode{#3}% - \def\blx@dlimcode{#4}% - \def\blx@postcode{#5##4}% - \blx@citeloop{##3}% - \endgroup}} - -% {<type>}{<name>}{*} - -\def\blx@checkcitecmd#1#2{% - \ifblank{#2} - {\ifcsdef{blx@cite@#1} - {\blx@info{Redefining '\@backslashchar#1'}} - {\ifcsundef{#1} - {} - {\blx@warning@noline{Redefining '\@backslashchar#1'}}}% - \ifcsdef{blx@cite@#1*} - {} - {\csedef{blx@cite@#1*}{% - \expandafter\noexpand\csname blx@cite@#1\endcsname}% - \csedef{blx@citei@#1*}{% - \expandafter\noexpand\csname blx@citei@#1\endcsname}}} - {\ifcsdef{blx@cite@#1} - {} - {\csdef{blx@cite@#1}{\blx@err@citecmd{#1}}% - \csdef{blx@citei@#1}{\blx@err@citecmd{#1}}}}} - -% {<name>}{prenote}{postnote}{citekey}{punct} - -\newrobustcmd*{\blxcitecmd}[1]{% - \ifcsundef{blx@cite@#1} - {\blx@err@citecmd{#1}} - {\csuse{blx@cite@#1}}} - -\newrobustcmd*{\blxciteicmd}[1]{% - \begingroup - \blx@citeinit - \ifcsundef{blx@citei@#1} - {\blx@err@citecmd{#1}} - {\csuse{blx@citei@#1}}} - -% {<multicitecount>}{<name>}{prenote}{postnote}{citekey}{punct} - -\protected\def\blxmciteicmd#1{% - \c@multicitecount#1\relax - \blxciteicmd} - -% {<multicitetotal>}{<multiprenote>}{<multipostnote>} - -\protected\def\blxmcites#1#2#3{% - \begingroup - \blx@citeinit - \c@multicitecount\z@ - \c@multicitetotal#1\relax - \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}}% - \ifblank{#3}% - {} - {\def\abx@field@multipostnote{#3}}% - \usebibmacro{multiprenote}} - -\protected\def\blxendmcites{% - \usebibmacro{multipostnote}% - \endgroup} - -% {<command>}[<wrapper>]{<cite>}{<delimiter>} - -\newrobustcmd{\DeclareMultiCiteCommand}[1]{% - \ifundef#1% - {} - {\blx@info{Redefining '\string#1'}}% - \@ifnextchar[%] - {\blx@defmcitecmd{#1}} - {\blx@defmcitecmd{#1}[\@firstofone]}} - -\def\blx@defmcitecmd#1[#2]#3#4{% - \begingroup - \escapechar\m@ne - \edef\blx@tempa{\endgroup - \protected\def\noexpand#1{% - \blx@citecmdinit - \noexpand\@ifstar - {\expandafter\noexpand - \csname blx@mcite@\string#1\endcsname*% - \expandafter\noexpand - \csname blx@mcitei@\string#1\endcsname} - {\expandafter\noexpand - \csname blx@mcite@\string#1\endcsname{}% - \expandafter\noexpand - \csname blx@mcitei@\string#1\endcsname}}% - \protected\csdef{blx@mcite@\string#1}####1####2{% - \begingroup - \blx@citeinit - \noexpand\blx@multicite - ####2% - {\unexpanded{#2}}% - {\string#3####1}% - {\unexpanded{#4}}}% - \protected\long\csdef{blx@mcitei@\string#1}}% - \blx@tempa##1##2##3{##1{##2}##3\endgroup}} - -% {<command>}{<wrapper>}{<citecmd>}{<delimiter>} => -% <init><command>{<wrapper>}{<cites>}{<punct>} - -\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}% - \def\blx@tempd{#4}% - \c@multicitetotal\z@ - \blx@multiargs\blx@multicite@i} - -\def\blx@multicite@i#1#2{% - \ifblank{#1}% - {\let\abx@field@multiprenote\@empty}% - {\def\abx@field@multiprenote{#1}}% - \ifblank{#2}% - {\let\abx@field@multipostnote\@empty}% - {\def\abx@field@multipostnote{#2}}% - \let\blx@tempe\@empty - \let\blx@tempf\@empty - \togglefalse{blx@tempa}% - \blx@multiparse} - -\def\blx@multicite@add#1#2#3{% - \togglefalse{blx@tempa}% - \advance\c@multicitetotal\@ne - \eappto\blx@tempe{% - \expandonce\blx@tempf - \blxmciteicmd{\the\c@multicitetotal}% - {\expandonce\blx@tempc}\unexpanded{{#1}{#2}{#3}}{}}% - \let\blx@tempf\blx@tempd - \blx@multiparse} - -\def\blx@multicite@end#1{% - \edef\blx@tempa{\endgroup - \expandonce\blx@tempa - {\expandonce\blx@tempb}% - {\blxmcites - {\the\c@multicitetotal}% - {\expandonce\abx@field@multiprenote}% - {\expandonce\abx@field@multipostnote}% - \expandonce\blx@tempe - \blxendmcites}% - {#1}% - \iftoggle{blx@tempa}{\relax\space}{}}% - \blx@tempa} - -\def\blx@multiparse{% - \futurelet\@let@token\blx@multiparse@i} - -\def\blx@multiparse@i{% - \ifx\@let@token\relax - \blx@multiparse@ii{\blx@multicite@end{}}% - \fi - \ifx\@let@token[%] - \blx@multiparse@ii{\blx@citeargs\blx@multicite@add}% - \fi - \ifx\@let@token\bgroup - \blx@multiparse@ii{\blx@citeargs\blx@multicite@add}% - \fi - \ifx\@let@token\@sptoken - \blx@multiparse@ii\blx@multiparse@iii - \fi - \iftrue - \iftoggle{blx@tempa} - {\blx@multiparse@ii{\blx@multicite@end{}}} - {\blx@multiparse@ii{\blx@thecheckpunct\blx@multicite@end}}% - \fi - &} - -\def\blx@multiparse@ii#1#2&{\fi#1} -\csdef{blx@multiparse@iii} {\toggletrue{blx@tempa}\blx@multiparse} - -% {<name>}[l|i|r]{<cite>}{<multicite>} - -\newrobustcmd*{\DeclareAutoCiteCommand}[1]{% - \ifcsundef{blx@acite@#1} - {} - {\blx@info{Redefining autocite command '#1'}}% - \@ifnextchar[%] - {\blx@defautocmd@i{#1}} - {\blx@defautocmd@i{#1}[r]}} - -\def\blx@defautocmd@i#1[#2]#3#4{% - \begingroup - \escapechar\m@ne - \edef\blx@tempa{\endgroup - \noexpand\blx@defautocmd@ii{#1}{#2}% - {\string#3}{\string#4}}% - \blx@tempa} - -\def\blx@defautocmd@ii#1#2#3#4{% - \protected\csedef{blx@acite@#1}{% - \blx@citecmdinit - \noexpand\@ifstar - {\blx@citepunct{\expandafter\noexpand - \csname blx@acitei@#1\endcsname*}} - {\blx@citepunct{\expandafter\noexpand - \csname blx@acitei@#1\endcsname{}}}}% - \protected\csedef{blx@acitei@#1}##1##2##3##4##5{% - \begingroup - \blx@citeinit - \if l#2\noexpand\unspace##5\fi - \if f#2\noexpand\iftoggle{blx@footnote}{}{\unspace##5}\fi - \blxcitecmd{#3##1}{##2}{##3}{##4}{}% - \if r#2##5\fi - \if f#2\noexpand\iftoggle{blx@footnote}{##5}{}\fi - \endgroup}% - \protected\csedef{blx@macite@#1}{% - \blx@citecmdinit - \noexpand\@ifstar - {\expandafter\noexpand - \csname blx@mcite@#4\endcsname*% - \expandafter\noexpand - \csname blx@macitei@#1\endcsname} - {\expandafter\noexpand - \csname blx@mcite@#4\endcsname{}% - \expandafter\noexpand - \csname blx@macitei@#1\endcsname}}% - \protected\csedef{blx@macitei@#1}##1##2##3{% - \if l#2\noexpand\unspace##3\fi - \if f#2\noexpand\iftoggle{blx@footnote}{}{\unspace##3}\fi - ##1{##2}% - \if r#2##3\fi - \if f#2\noexpand\iftoggle{blx@footnote}{##3}{}\fi - \endgroup}} - -% {<characters>} - -\newrobustcmd*{\DeclareAutoPunctuation}[1]{% - \ifblank{#1} - {\let\blx@thecheckpunct\blx@nocheckpunct} - {\let\blx@thecheckpunct\blx@checkpunct - \def\blx@autopunct{#1}}} - -\AfterEndPreamble{% babel - \begingroup - \makeatletter - \endlinechar\m@ne - \scantokens\expandafter{% - \expandafter\gdef - \expandafter\blx@autopunct - \expandafter{\blx@autopunct}}% - \endgroup} - -% [<prenote>][<postnote>]{<entrykey>,...}[<format>]{<namelist>}<punct> - -\newrobustcmd*{\citename}{\blx@citexpunct{citename}} -\long\csdef{blx@cite@citename}#1#2#3#4#5#6{% - \begingroup - \blx@citecmdinit - \blx@citeinit - \ifblank{#1} - {} - {\def\abx@field@prenote{#1}}% - \ifblank{#2} - {\let\blx@thenotecheck\relax} - {\def\abx@field@postnote{#2}}% - \def\blx@precode{\usebibmacro{prenote}}% - \def\blx@loopcode{% - \ifnameundef{#5} - {\blx@warning@entry{'#5' undefined or not a name list}% - \abx@missing{#5}} - {\printnames[#4]{#5}}}% - \def\blx@dlimcode{\multicitedelim}% - \ifblank{#2} - {\def\blx@postcode{#6}} - {\def\blx@postcode{\usebibmacro{postnote}#6}}% - \boolfalse{citetracker}% - \boolfalse{pagetracker}% - \blx@citeloop{#3}% - \endgroup} - -% [<prenote>][<postnote>]{<entrykey>,...}[<format>]{<list>}<punct> - -\newrobustcmd*{\citelist}{\blx@citexpunct{citelist}} -\long\csdef{blx@cite@citelist}#1#2#3#4#5#6{% - \begingroup - \blx@citecmdinit - \blx@citeinit - \ifblank{#1} - {} - {\def\abx@field@prenote{#1}}% - \ifblank{#2} - {\let\blx@thenotecheck\relax} - {\def\abx@field@postnote{#2}}% - \def\blx@precode{\usebibmacro{prenote}}% - \def\blx@loopcode{% - \iflistundef{#5} - {\blx@warning@entry{'#5' undefined or not a literal list}% - \abx@missing{#5}} - {\printlist[#4]{#5}}}% - \def\blx@dlimcode{\multicitedelim}% - \ifblank{#2} - {\def\blx@postcode{#6}} - {\def\blx@postcode{\usebibmacro{postnote}#6}}% - \boolfalse{citetracker}% - \boolfalse{pagetracker}% - \blx@citeloop{#3}% - \endgroup} - -% [<prenote>][<postnote>]{<entrykey>,...}[<format>]{<field>}<punct> - -\newrobustcmd*{\citefield}{\blx@citexpunct{citefield}} -\long\csdef{blx@cite@citefield}#1#2#3#4#5#6{% - \begingroup - \blx@citecmdinit - \blx@citeinit - \ifblank{#1} - {} - {\def\abx@field@prenote{#1}}% - \ifblank{#2} - {\let\blx@thenotecheck\relax} - {\def\abx@field@postnote{#2}}% - \def\blx@precode{\usebibmacro{prenote}}% - \def\blx@loopcode{% - \iffieldundef{#5} - {\blx@warning@entry{'#5' undefined or not a field}% - \abx@missing{#5}} - {\printfield[#4]{#5}}}% - \def\blx@dlimcode{\multicitedelim}% - \ifblank{#2} - {\def\blx@postcode{#6}} - {\def\blx@postcode{\usebibmacro{postnote}#6}}% - \boolfalse{citetracker}% - \boolfalse{pagetracker}% - \blx@citeloop{#3}% - \endgroup} - -\renewrobustcmd*{\cite}{\blx@err@citecmd\cite} -\let\blx@cite@cite\relax -\newrobustcmd*{\parencite}{\blx@warn@citecmd\parencite\cite} -\let\blx@cite@parencite\relax -\newrobustcmd*{\footcite}{\blx@warn@citecmd\footcite\cite} -\let\blx@cite@footcite\relax -\newrobustcmd*{\footcitetext}{\blx@warn@citecmd\footcitetext\cite} -\let\blx@cite@footcitetext\relax -\newrobustcmd*{\smartcite}{\blx@warn@citecmd\smartcite\cite} -\let\blx@cite@smartcite\relax -\newrobustcmd*{\textcite}{\blx@warn@citecmd\textcite\cite} -\let\blx@cite@textcite\relax -\newrobustcmd*{\supercite}{\blx@warn@citecmd\supercite\cite} -\let\blx@cite@supercite\relax - -%% ifthen interface - -\def\blx@TE#1#2{% - \TE@throw - \unexpanded{% - \iftrue\@nameuse{fi}% - #1{\@nameuse{iftrue}}{\@nameuse{iffalse}}}#2} - -\def\blx@xTE#1#2{% - \TE@throw - \unexpanded{\iftrue\@nameuse{fi}}% - #1\unexpanded{{\@nameuse{iftrue}}{\@nameuse{iffalse}}}#2} - -\let\blx@TE@hook\@empty - -\appto\blx@blxinit{% - \appto\blx@TE@hook{% - \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}% - \def\ifloccit{\blx@TE\blx@imc@ifloccit}% - \def\ifsamepage{\blx@TE\blx@imc@ifsamepage}% - \def\iffirstonpage{\blx@TE\blx@imc@iffirstonpage}% - \def\ifcurrentfield#1{\blx@TE{\blx@imc@ifcurrentfield{#1}}}% - \def\ifcurrentlist#1{\blx@TE{\blx@imc@ifcurrentlist{#1}}}% - \def\ifcurrentname#1{\blx@TE{\blx@imc@ifcurrentname{#1}}}% - \def\ifentrytype#1{\blx@TE{\blx@imc@ifentrytype{#1}}}% - \def\iffieldequalcs#1#2{\blx@TE{\blx@imc@iffieldequalcs{#1}{#2}}}% - \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}}}% - \def\ifnamesequal#1#2{\blx@TE{\blx@imc@ifnamesequal{#1}{#2}}}% - \def\ifnameundef#1{\blx@TE{\blx@imc@ifnameundef{#1}}}% - \def\ifcategory#1{\blx@TE{\blx@imc@ifcategory{#1}}}% - \def\ifkeyword#1{\blx@TE{\blx@imc@ifkeyword{#1}}}% - \def\ifentrycategory#1#2{\blx@TE{\blx@imc@ifentrycategory{#1}{#2}}}% - \def\ifentrykeyword#1#2{\blx@TE{\blx@imc@ifentrykeyword{#1}{#2}}}% - \def\ifcapital{\blx@TE\blx@imc@ifcapital}% - \def\ifinteger#1{\blx@TE{\blx@imc@ifinteger{#1}}}% - \def\iffieldint#1{\blx@TE{\blx@imc@iffieldint{#1}}}% - \def\ifnumeral#1{\blx@TE{\blx@imc@ifnumeral{#1}}}% - \def\ifnumerals#1{\blx@TE{\blx@imc@ifnumerals{#1}}}% - \def\ifpages#1{\blx@TE{\blx@imc@ifpages{#1}}}% - \def\iffieldnum#1{\blx@TE{\blx@imc@iffieldnum{#1}}}% - \def\iffieldnums#1{\blx@TE{\blx@imc@iffieldnums{#1}}}% - \def\iffieldpages#1{\blx@TE{\blx@imc@iffieldpages{#1}}}% - \def\ifbibstring#1{\blx@TE{\blx@imc@ifbibstring{#1}}}% - \def\iffieldbibstring#1{\blx@TE{\blx@imc@iffieldbibstring{#1}}}% - \def\ifnatbibmode{\blx@TE{\iftoggle{blx@natbib}}}% - \def\ifcitation{\blx@TE{\iftoggle{blx@citation}}}% - \def\ifbibliography{\blx@TE{\iftoggle{blx@bibliography}}}% - \def\ifciteindex{\blx@TE{\iftoggle{blx@citeindex}}}% - \def\ifbibindex{\blx@TE{\iftoggle{blx@bibindex}}}% - \def\iffootnote{\blx@TE{\iftoggle{blx@footnote}}}% - \def\ifuseprefix{\blx@TE{\iftoggle{blx@useprefix}}}% - \def\ifuseauthor{\blx@TE{\iftoggle{blx@useauthor}}}% - \def\ifuseeditor{\blx@TE{\iftoggle{blx@useeditor}}}% - \def\ifusetranslator{\blx@TE{\iftoggle{blx@usetranslator}}}% - \def\ifterseinits{\blx@TE{\iftoggle{blx@terseinits}}}% - \def\iffirstinits{\blx@TE{\iftoggle{blx@giveninits}}}% legacy alias for \ifgiveninits - \def\ifgiveninits{\blx@TE{\iftoggle{blx@giveninits}}}% - \def\ifsingletitle{\blx@TE{\iftoggle{abx@bool@singletitle}}}% - \def\ifandothers#1{\blx@TE{\iftoggle{abx@bool@more#1}}}}} - -% {<listmacro>}{<filtercsname>} => matches in <listmacro> - -\protected\def\blx@bibfilter#1#2{% - \begingroup - \edef\blx@do##1{% - \def\noexpand\blx@flt@item{##1}% - \ifboolexpr{\csexpandonce{#2}}% - {\listadd\noexpand\blx@tempa{##1}}% - {}}% - \let\blx@done\relax - \edef\blx@tempa{% - \let\noexpand\blx@tempa\noexpand\@empty - \blx@listloop{#1}}% - \blx@tempa - \edef\blx@tempa{\endgroup - \def\noexpand#1{\blx@tempa}}% - \blx@tempa} - -%% Auxiliary macros - -\newrobustcmd*{\mkbibquote}{\enquote} -\protected\def\blx@imc@mkbibquote{% - \blx@ifuspunct\blx@usquote\enquote} - -\def\blx@usquote{% - \ifnum\@quotelevel>\z@ - \expandafter\blx@usiquote - \else - \expandafter\blx@usoquote - \fi} - -\long\def\blx@usoquote#1{% - \begingroup - \initoquote - \textooquote#1% - \futurelet\@let@token\blx@usoquote@i} - -\def\blx@usoquote@i{% - \blx@usqcheck - {\ifx\blx@postpunct\@empty\else\blx@dopostpunct\fi - \textcoquote\endgroup} - {\blx@setpostpunct\textcoquote\endgroup}} - -\long\def\blx@usiquote#1{% - \begingroup - \initiquote - \textoiquote#1% - \futurelet\@let@token\blx@usiquote@i} - -\def\blx@usiquote@i{% - \blx@usqcheck - {\textciquote\endgroup} - {\blx@setpostpunct\textciquote\endgroup}} - -\long\def\blx@usqcheck#1#2{% - \def\blx@tempa{#1}% - \def\blx@tempb{#2}% - \ifx\@let@token\space - \blx@usqcheck@i\blx@tempa - \fi - \ifx\@let@token\@sptoken - \blx@usqcheck@i\blx@tempa - \fi - \if\noexpand\@let@token\relax - \expandafter\blx@usqcheck@iv - \fi - \expandafter\blx@usqcheck@ii\blx@quotepunct\relax&} - -\long\def\blx@usqcheck@i#1#2&{\fi#1} - -\long\def\blx@usqcheck@ii#1{% - \if\noexpand#1\relax - \blx@usqcheck@i\blx@tempa - \fi - \if\noexpand#1\noexpand\@let@token - \blx@usqcheck@i{\blx@usqcheck@iii\blx@tempa}% - \fi - \blx@usqcheck@ii -} - -\long\def\blx@usqcheck@iii#1#2{#2#1} - -\long\def\blx@usqcheck@iv#1{% - \begingroup - \escapechar=-1 % - \edef\blx@tempa{\expandafter\@gobble\string#2}% - \expandafter\endgroup - \ifx\blx@tempa\@empty - \else - \blx@usqcheck@i\blx@tempb - \fi - #1% -} - -\def\blx@usqcheck@iii#1#2{#2#1} - -\newrobustcmd*{\mkbibemph}{\emph} -\protected\long\def\blx@imc@mkbibemph#1{% - \emph{#1}\blx@imc@setpunctfont\emph} - -\newrobustcmd*{\mkbibbold}{\textbf} -\protected\long\def\blx@imc@mkbibbold#1{% - \textbf{#1}\blx@imc@setpunctfont\textbf} - -\newrobustcmd*{\mkbibitalic}{\textit} -\protected\long\def\blx@imc@mkbibitalic#1{% - \textit{#1}\blx@imc@setpunctfont\textit} - -\blx@regimcs{\mkbibquote \mkbibemph \mkbibbold \mkbibitalic} - -\newcommand*{\bibleftparen}{\blx@postpunct(} -\newcommand*{\bibrightparen}{\blx@postpunct)\midsentence} -\newcommand*{\bibleftbracket}{\blx@postpunct[} -\newcommand*{\bibrightbracket}{\blx@postpunct]\midsentence} - -\def\blx@parenlevel{% - \iftoggle{blx@footnote} - {\blx@parenlevel@foot} - {\blx@parenlevel@text}} - -\newrobustcmd*{\blx@bibopenparen}{% - \blx@opencheck\bibopenparen - \blx@postpunct - \ifnum\blx@parenlevel=\z@ - \global\blx@parenlevel\@ne - \global\c@parenlevel\@ne - \expandafter\bibleftparen - \else - \expandafter\blx@openparen - \fi} - -\newrobustcmd*{\blx@bibopenbracket}{% - \blx@opencheck\bibopenbracket - \blx@postpunct - \ifnum\blx@parenlevel=\z@ - \global\blx@parenlevel1002 - \global\c@parenlevel\@ne - \expandafter\bibleftbracket - \else - \expandafter\blx@openparen - \fi} - -\newrobustcmd*{\blx@bibcloseparen}{% - \blx@closecheck\bibcloseparen - \blx@postpunct\blx@closeparen} - -\newrobustcmd*{\blx@bibclosebracket}{% - \blx@closecheck\bibclosebracket - \blx@postpunct\blx@closeparen} - -\def\blx@openparen{% - \ifodd\blx@parenlevel - \global\advance\blx@parenlevel\@ne - \global\advance\c@parenlevel\@ne - \expandafter\bibleftbracket - \else - \global\advance\blx@parenlevel\@ne - \global\advance\c@parenlevel\@ne - \expandafter\bibleftparen - \fi} - -\def\blx@closeparen{% - \ifodd\blx@parenlevel - \blx@closeparen@i - \expandafter\bibrightparen - \else - \blx@closeparen@i - \expandafter\bibrightbracket - \fi} - -\def\blx@closeparen@i{% - \ifnum\blx@parenlevel=1002 - \global\blx@parenlevel\z@ - \global\c@parenlevel\z@ - \else - \global\advance\blx@parenlevel\m@ne - \global\advance\c@parenlevel\m@ne - \fi} - -\def\blx@opencheck#1{% - \ifnum\numexpr\blx@parenlevel+\@ne - \ifnum\blx@parenlevel>\@m -1001\fi - >\c@maxparens - \blx@err@nestparen{\string#1}% - \blx@errormark - \fi} - -\def\blx@closecheck#1{% - \ifnum\numexpr\blx@parenlevel - \ifnum\blx@parenlevel>\@m -1001\fi - >\c@maxparens - \blx@err@nestparen{\string#1}% - \blx@errormark - \fi - \ifnum\blx@parenlevel<\@ne - \blx@err@matchparen{Unmatched \string#1}% - \blx@errormark - \fi} - -\protected\def\blx@errormark{% - \rule[0.25ex]{1.25ex}{1.25ex}} - -\AtEndDocument{% - \unless\ifnum\blx@parenlevel@text=\z@ - \blx@err@matchparen{% - Unbalanced parentheses or brackets in the document body}% - \fi - \unless\ifnum\blx@parenlevel@foot=\z@ - \blx@err@matchparen{% - Unbalanced parentheses or brackets in a foot or endnote}% - \fi} - -\newrobustcmd{\mkbibparens}[1]{% - \begingroup - \blx@blxinit - \blx@setsfcodes - \bibopenparen#1\bibcloseparen - \endgroup} - -\newrobustcmd{\mkbibbrackets}[1]{% - \begingroup - \blx@blxinit - \blx@setsfcodes - \bibopenbracket#1\bibclosebracket - \endgroup} - -\newrobustcmd*{\parentext}{\mkbibparens} -\newrobustcmd*{\brackettext}{\mkbibbrackets} - -\newrobustcmd{\mkbibsuperscript}[1]{% - \unspace\allowhyphens\textsuperscript{% - \begingroup - \protected\long\def\mkbibsuperscript##1{% - \blx@warning{Nested superscript}% - \mkbibbrackets{##1}}% - #1\endgroup}} - -\newrobustcmd{\mkbibfootnote}{\blx@mkbibfootnote{}} -\newrobustcmd{\mkbibfootnotetext}{\blx@mkbibfootnote{text}} -\newrobustcmd{\blx@mkbibfootnote}[2]{% - \iftoggle{blx@footnote} - {\blx@warning{Nested notes}% - \addspace\mkbibparens{#2}} - {\unspace - \ifnum\blx@notetype=\tw@ - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi - {\csuse{blx@theendnote#1}{\protecting{\blxmkbibnote{end}{#2}}}} - {\csuse{footnote#1}{\protecting{\blxmkbibnote{foot}{#2}}}}}} - -\newrobustcmd{\mkbibendnote}{\blx@mkbibendnote{}} -\newrobustcmd{\mkbibendnotetext}{\blx@mkbibendnote{text}} -\newrobustcmd{\blx@mkbibendnote}[2]{% - \iftoggle{blx@footnote} - {\blx@warning{Nested notes}% - \addspace\mkbibparens{#2}} - {\unspace - \ifnum\blx@notetype=\@ne - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi - {\csuse{footnote#1}{\protecting{\blxmkbibnote{foot}{#2}}}} - {\csuse{blx@theendnote#1}{\protecting{\blxmkbibnote{end}{#2}}}}}} - -\newrobustcmd{\blxmkbibnote}[2]{% - \begingroup - \blx@blxinit - \blx@setsfcodes - \blx@postpunct@agroup - \toggletrue{blx@footnote}% - \csuse{bib#1notewrapper}{#2}% - \endgroup} - -\newcommand{\bibfootnotewrapper}[1]{% - \bibsentence#1\addperiod} - -\newcommand{\bibendnotewrapper}[1]{% - \bibsentence#1\addperiod} - -\AtEndPreamble{% - \def\blx@theendnote{\blx@err@endnote\footnote}% - \def\blx@theendnotetext{\blx@err@endnote\footnotetext}% - \ifdef\endnote - {\def\blx@theendnote{\endnote}% - \ifdef\endnotetext - {\def\blx@theendnotetext{\endnotetext}} - {}} - {\ifdef\pagenote - {\def\blx@theendnote{\pagenote}% - \ifdef\pagenotetext - {\def\blx@theendnotetext{\pagenotetext}} - {}} - {}}} - -\newrobustcmd*{\mknumalph}[1]{% - \begingroup - \blx@tempcnta=#1\relax - \ifnum\blx@tempcnta>702 % - \else - \ifnum\blx@tempcnta>26 % - \advance\blx@tempcnta\m@ne - \divide\blx@tempcnta26\relax - \blx@numalph\blx@tempcnta - \multiply\blx@tempcnta26\relax - \blx@tempcnta=\numexpr#1-\blx@tempcnta\relax - \fi - \fi - \blx@numalph\blx@tempcnta - \endgroup} -\def\blx@numalph#1{% - \ifcase#1\relax\blx@warning@entry{Value out of range}\number#1\or - a\or b\or c\or d\or e\or f\or g\or h\or i\or j\or k\or l\or m\or - 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} - -% {<macro>}[<pre>]{<vol>}[<post>] => <macro>{<pre>}{{<vol>}{<post>}} - -\newrobustcmd*{\volcitecmd}{% - \AtNextCite{\DeclareFieldAlias{postnote}{volcitenote}}% - \begingroup\let\blx@citeargs\blx@volciteargs} - -\protected\def\blx@volciteargs#1{% - \endgroup - \@ifnextchar[%] - {\blx@volciteargs@i{#1}} - {\blx@volciteargs@i{#1}[]}} - -\long\def\blx@volciteargs@i#1[#2]#3{% - \@ifnextchar[%] - {\blx@volciteargs@ii{#1}{#2}{#3}} - {\blx@citeargs@iii{#1{#2}{{#3}{}}}}} - -\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 - -\begingroup -\let~\space -\@makeother\< -\@makeother\> -\@makeother\. -\@makeother\: -\@makeother\? -\@makeother\" -\@makeother\- -\@makeother\= -\@makeother\/ -\xdef\blx@xml@file{% - \blx@sig@bcf\blx@nl - \blx@ver@bcf\blx@nl} -\xdef\blx@xml@endfile{% - \blx@nl</bcf:controlfile>} -\xdef\blx@xml@comment#1{% - ~~<!-- #1 -->\blx@nl} -\xdef\blx@xml@options#1#2#3{% - ~~<bcf:options% - \noexpand\ifblank{#1}{}{ component="#1"}% - \noexpand\ifblank{#2}{}{ type="#2"}% - >\blx@nl - #3% - ~~</bcf:options>\blx@nl} -\xdef\blx@xml@option#1#2{% - ~~~~<bcf:option type="#1">\blx@nl - #2% - ~~~~</bcf:option>\blx@nl} -\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% - ~~</bcf:inheritance>\blx@nl} -\xdef\blx@xml@inherit@defaults#1#2{% - ~~~~<bcf:defaults#1>\blx@nl - #2% - ~~~~</bcf:defaults>\blx@nl} -\xdef\blx@xml@inherit@data#1{% - ~~~~<bcf:inherit>\blx@nl - #1% - ~~~~</bcf:inherit>\blx@nl} -\xdef\blx@xml@inherit@type#1#2#3{% - ~~~~~~<bcf:type\string_pair source="#1" target="#2"#3/>\blx@nl} -\xdef\blx@xml@inherit@field#1#2#3{% - ~~~~~~<bcf:field source="#1" target="#2"#3/>\blx@nl} -\xdef\blx@xml@inherit@block#1{% - ~~~~~~<bcf:field source="#1" skip="true"/>\blx@nl} - -\xdef\blx@xml@sorting#1{% - ~~<bcf:sorting>\blx@nl - #1% - ~~</bcf:sorting>\blx@nl} -\xdef\blx@xml@presort#1#2{% - ~~~~<bcf:presort\noexpand\ifblank{#1}{}{ type="#1"}>% - #2</bcf:presort>\blx@nl} - -\xdef\blx@xml@sortexclude#1#2{% - ~~~~<bcf:sortexclusion\noexpand\ifblank{#1}{}{ type="#1"}>\blx@nl - #2% - ~~~~</bcf:sortexclusion>\blx@nl} -\xdef\blx@xml@exclude#1{% - ~~~~~~<bcf:exclusion>#1</bcf:exclusion>\blx@nl} -\xdef\blx@xml@sort#1#2{% - ~~~~<bcf:sort #1>\blx@nl - #2% - ~~~~</bcf:sort>\blx@nl} -\xdef\blx@xml@sortitem#1#2{% - ~~~~~~<bcf:sortitem #1>#2</bcf:sortitem>\blx@nl} -\xdef\blx@xml@section#1{% - ~~<bcf:section number="#1">} -\xdef\blx@xml@endsection{% - ~~</bcf:section>} -\xdef\blx@xml@bibdata#1#2{% - ~~<bcf:bibdata section="#1">\blx@nl - #2% - ~~</bcf:bibdata>\blx@nl} -\xdef\blx@xml@datasource#1#2#3{% - ~~~~<bcf:datasource type="#1" datatype="#2">#3</bcf:datasource>\blx@nl} -\xdef\blx@xml@citekey#1{% - ~~~~<bcf:citekey>#1</bcf:citekey>} -\xdef\blx@xml@citeset#1#2{% - ~~~~<bcf:citekey type="set" members="#2">#1</bcf:citekey>} -\xdef\blx@xml@svalue#1#2{% - \blx@xml@option{singlevalued}{% - ~~~~~~<bcf:key>#1</bcf:key>\blx@nl - ~~~~~~<bcf:value>#2</bcf:value>\blx@nl}} -\xdef\blx@xml@mvalue#1#2{% - \blx@xml@option{multivalued}{% - ~~~~~~<bcf:key>#1</bcf:key>\blx@nl - #2}} -\xdef\blx@xml@toggle#1{% - \blx@xml@svalue{#1}{\noexpand\iftoggle{blx@#1}{1}{0}}} -\endgroup - -\def\blx@bcf@options@global{% - \blx@xml@comment{global}% - \blx@xml@options{biblatex}{global}{% - \blx@xml@svalue{alphaothers}{\labelalphaothers}% - \blx@xml@toggle{labelalpha}% - \blx@xml@mvalue{labelnamespec}{\blx@bcf@labelnamespec}% - \blx@xml@toggle{labeldate}% - \blx@xml@mvalue{labeldatespec}{\blx@bcf@labeldatespec}% - \blx@xml@svalue{maxalphanames}{\blx@maxalphanames}% - \blx@xml@svalue{maxbibnames}{\blx@maxbibnames}% - \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{mincitenames}{\blx@mincitenames}% - \blx@xml@svalue{minitems}{\blx@minitems}% - \blx@xml@toggle{singletitle}% - \blx@xml@svalue{sortalphaothers}{\sortalphaothers}% - \blx@xml@svalue{sortlos}{\blx@sortlos}% - \blx@xml@svalue{uniquelist}{\blx@uniquelist}% - \blx@xml@svalue{uniquename}{\blx@uniquename}% - \blx@xml@toggle{useauthor}% - \blx@xml@toggle{useeditor}% - \blx@xml@toggle{useprefix}% - \blx@xml@toggle{usetranslator}% - }% -} - -\def\blx@bcf@options@type#1{% - \blx@xml@comment{#1}% - \blx@xml@options{biblatex}{#1}{% - \blx@xml@toggle{labelalpha}% - \blx@xml@mvalue{labelnamespec}{% - \ifcsdef{blx@bcf@labelnamespec@#1} - {\csuse{blx@bcf@labelnamespec@#1}} - {\blx@bcf@labelnamespec}}% - \blx@xml@toggle{labeldate}% - \blx@xml@mvalue{labeldatespec}{% - \ifcsdef{blx@bcf@labeldatespec@#1} - {\csuse{blx@bcf@labeldatespec@#1}} - {\blx@bcf@labeldatespec}}% - \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}% - \blx@xml@toggle{skiplos}% - \blx@xml@svalue{uniquelist}{\blx@uniquelist}% - \blx@xml@svalue{uniquename}{\blx@uniquename}% - \blx@xml@toggle{useauthor}% - \blx@xml@toggle{useeditor}% - \blx@xml@toggle{useprefix}% - \blx@xml@toggle{usetranslator}% - }% -} - -\edef\blx@ctrl@bibtex{% - \blx@msg@bib - @Control\string{biblatex-control,\blx@nl - \space\space options = \string{% - \blx@bblversion:% - \noexpand\iftoggle{blx@debug}{1}{0}:% - \noexpand\ifnum\noexpand\blx@backend>\noexpand\blx@backend@bibtex - 1:% - \noexpand\else - 0:% - \noexpand\fi - \noexpand\iftoggle{blx@sortcase}{1}{0}:% - \noexpand\iftoggle{blx@terseinits}{1}{0}:% - \noexpand\iftoggle{blx@useprefix}{1}{0}:% - \noexpand\iftoggle{blx@useauthor}{1}{0}:% - \noexpand\iftoggle{blx@useeditor}{1}{0}:% - \noexpand\iftoggle{blx@usetranslator}{1}{0}:% - \noexpand\iftoggle{blx@labelalpha}{1}{0}:% - \noexpand\iftoggle{blx@labeldate}{1}{0}:% - \noexpand\iftoggle{blx@singletitle}{1}{0}:% - \noexpand\csuse{blx@bibtex@sorting@\noexpand\blx@sorting}:% - \noexpand\blx@sortlos:% - \noexpand\blx@maxcitenames:% - \noexpand\blx@mincitenames:% - \noexpand\blx@maxline:% - \noexpand\detokenize\noexpand\expandafter{\noexpand\labelalphaothers}% - \string},\blx@nl - \string}% -} - -\def\blx@ctrlwrite@bibtex{% - \immediate\openout\blx@auxout\blx@ctrlfile@bibtex\blxauxsuffix.bib\relax - \blx@auxwrite\blx@auxout{}{\blx@ctrl@bibtex}% - \immediate\closeout\blx@auxout} - -\def\blx@ctrlwrite@biber{% - \begingroup - \blx@safe@actives - \let\protect\string - % options - \edef\labelalphaothers{\labelalphaothers}% - \edef\sortalphaothers{\sortalphaothers}% - \blx@xmlsanitizeafter{\def\labelalphaothers}{\labelalphaothers}% - \blx@xmlsanitizeafter{\def\sortalphaothers}{\sortalphaothers}% - \edef\blx@tempa{% - \blx@xml@file - \blx@xml@comment{BIBER OPTIONS}% - \blx@xml@options{biber}{global}{% - \blx@xml@svalue{bblencoding}{\blx@texencoding}% - \blx@xml@svalue{bibencoding}{\blx@bibencoding}% - \blx@xml@toggle{debug}% - \blx@xml@svalue{mincrossrefs}{\blx@mincrossrefs}% - \blx@xml@toggle{sortcase}% - \ifdef\blx@sortlocale - {\blx@xml@svalue{sortlocale}{\blx@sortlocale}} - {}% - \blx@xml@toggle{sortupper}% - }% - \blx@xml@comment{BIBLATEX OPTIONS}% - \blx@bcf@options@global - }% - \ifdef\blx@opts@type - {\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}% - \blx@xml@inheritance{% - \csuse{blx@biber@inherit@default}% - \csuse{blx@biber@inherit@data}% - }% - }% - % sorting - \def\do##1{% - \eappto\blx@bcf@presort{\csuse{blx@bcf@presort@##1}}% - \eappto\blx@bcf@exclude{\csuse{blx@bcf@exclude@##1}}}% - \abx@dotypes - \eappto\blx@tempa{% - \blx@xml@comment{SORTING}% - \blx@xml@sorting{% - \blx@bcf@presort - \blx@bcf@exclude - \csuse{blx@biber@sorting@\blx@sorting}% - }% - }% - % files - \let\blx@tempb\@empty - \blx@bibdata\blx@tempb\blx@bibfiles - \eappto\blx@tempa{% - \blx@xml@comment{CITATION DATA}% - \blx@xml@comment{section 0}% - \blx@xml@bibdata{0}{\blx@tempb}% - \blx@xml@section{0}% - }% - \immediate\openout\blx@auxout\jobname.bcf\relax - \blx@auxwrite\blx@auxout{}{\blx@tempa}% - \global\undef\blx@tempa - \endgroup - \AfterEndDocument{% - \blx@auxwrite\blx@auxout{}{% - \blx@xml@endsection - \blx@xml@endfile}% - \immediate\closeout\blx@auxout}} - -%% Package options - -% [<entrytype,entrytype,...>]{<options>} - -\newrobustcmd*{\ExecuteBibliographyOptions}[2][]{% - \ifblank{#1} - {\setkeys{blx@opt@pre}{#2}} - {\forcsvlist{\blx@typeoptions{#2}}{#1}}} -\@onlypreamble\ExecuteBibliographyOptions - -\def\blx@typeoptions#1#2{% - \blx@addtypeopt{#2}% - \csappto{blx@opts@type@#2}{#1}} - -\def\blx@addtypeopt#1{% - \notblank{#1} - {\ifdef\blx@opts@type - {\ifinlist{#1}{\blx@opts@type} - {} - {\listadd\blx@opts@type{#1}}} - {\listadd\blx@opts@type{#1}}} - {}} - -% load-time only - -\define@key{blx@opt@ldt}{style}{% - \def\blx@cbxfile{#1}% - \def\blx@bbxfile{#1}} - -\define@key{blx@opt@ldt}{bibstyle}{% - \def\blx@bbxfile{#1}} - -\define@key{blx@opt@ldt}{citestyle}{% - \def\blx@cbxfile{#1}} - -\define@key{blx@opt@ldt}{natbib}[true]{% - \settoggle{blx@natbib}{#1}} - -\define@key{blx@opt@ldt}{mcite}[true]{% - \settoggle{blx@mcite}{#1}} - -% load-time and preamble - -\DeclareBibliographyOption{debug}[true]{% - \settoggle{blx@debug}{#1}} - -\DeclareBibliographyOption{backend}{% - \ifcsdef{blx@backend@#1} - {\letcs\blx@backend{blx@backend@#1}} - {\blx@err@invopt{backend=#1}{}}} -\chardef\blx@backend@bibtex=0 -\chardef\blx@backend@bibtexe=1 -\chardef\blx@backend@bibtexu=2 -\cslet{blx@backend@bibtex8}\blx@backend@bibtexe - -\DeclareBibliographyOption{loadfiles}[true]{% - \settoggle{blx@loadfiles}{#1}} - -\DeclareBibliographyOption{mincrossrefs}{% - \ifnum#1<\z@ - \def\blx@mincrossrefs{1}% - \def\blx@minxrefs{1}% - \else - \def\blx@mincrossrefs{#1}% - \def\blx@minxrefs{#1}% - \fi} -\def\blx@minxrefs{2} - -\DeclareBibliographyOption{texencoding}{% - \ifstrequal{#1}{auto} - {\undef\blx@texencoding} - {\def\blx@texencoding{#1}}} - -\DeclareBibliographyOption{bibencoding}{% - \ifcsdef{blx@bibenc@#1} - {\letcs\blx@bibencoding{blx@bibenc@#1}} - {\def\blx@bibencoding{#1}}} - -\def\abx@mapbibenc#1#2{\csdef{blx@bibenc@#1}{#2}} -\abx@mapbibenc{inputenc}{auto} -\abx@mapbibenc{x-ascii}{ascii} - -\def\abx@mapinpenc#1#2{\csdef{blx@inpenc@#1}{#2}} -\abx@mapinpenc{utf8x}{utf8} -\abx@mapinpenc{lutf8}{utf8} -\abx@mapinpenc{x-ascii}{ascii} - -\DeclareBibliographyOption{safeinputenc}[true]{% - \settoggle{blx@safeinputenc}{#1}} -\newtoggle{blx@safeinputenc} - -\DeclareBibliographyOption{sorting}{% - \def\blx@sorting{#1}} -\def\blx@bibtex@sorting@none{0} -\def\blx@bibtex@sorting@nty{1} -\def\blx@bibtex@sorting@nyt{2} -\def\blx@bibtex@sorting@nyvt{3} -\def\blx@bibtex@sorting@anyt{12} -\def\blx@bibtex@sorting@anyvt{13} -\def\blx@bibtex@sorting@ynt{21} -\def\blx@bibtex@sorting@ydnt{22} -\def\blx@bibtex@sorting@debug{99} - -\AtEndPreamble{% - \ifcsdef{blx@bibtex@sorting@\blx@sorting} - {} - {\blx@err@invopt{sorting=\blx@sorting}{}% - \def\blx@sorting{nty}}} - -\DeclareBibliographyOption{sortcase}[true]{% - \settoggle{blx@sortcase}{#1}} - -\DeclareBibliographyOption{sortupper}[true]{% - \settoggle{blx@sortupper}{#1}} - -\DeclareBibliographyOption{sortlocale}{% - \ifblank{#1} - {\undef\blx@sortlocale} - {\edef\blx@sortlocale{\detokenize{#1}}}} - -\DeclareBibliographyOption{sortlos}{% - \ifcsdef{blx@opt@sortlos@#1} - {\letcs\blx@sortlos{blx@opt@sortlos@#1}} - {\blx@err@invopt{sortlos=#1}{}}} -\def\blx@opt@sortlos@bib{0} -\def\blx@opt@sortlos@los{1} - -\DeclareBibliographyOption{maxnames}{% - \numdef\blx@maxcitenames{#1}% - \numdef\blx@maxbibnames{#1}} -\DeclareBibliographyOption{minnames}{% - \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}{% - \numdef\blx@maxbibnames{#1}} -\DeclareBibliographyOption{minbibnames}{% - \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}{% - \numdef\blx@maxcitenames{#1}} -\DeclareBibliographyOption{mincitenames}{% - \numdef\blx@mincitenames{#1}} -\DeclareTypeOption{maxcitenames}{% - \numdef\blx@maxcitenames@type{#1}% - \iftoggle{blx@bibliography} - {} - {\c@maxnames#1\relax}} -\DeclareTypeOption{mincitenames}{% - \numdef\blx@mincitenames@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}} - -\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}{% - \numdef\blx@maxitems{#1}} -\DeclareBibliographyOption{minitems}{% - \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{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 - \ifnum#1>79 - \def\blx@maxline{79}% - \else - \def\blx@maxline{#1}% - \fi - \fi} - -\DeclareBibliographyOption{terseinits}[true]{% - \ifstrequal{#1}{true} - {\toggletrue{blx@terseinits} - \renewrobustcmd*{\bibinitperiod}{} - \renewrobustcmd*{\bibinitdelim}{} - \renewrobustcmd*{\bibinithyphendelim}{}} - {\togglefalse{blx@terseinits} - \renewrobustcmd*{\bibinitperiod}{\adddot} - \renewrobustcmd*{\bibinitdelim}{\addnbspace} - \renewrobustcmd*{\bibinithyphendelim}{\adddot\mbox{-}}}} - -% Legacy for giveninits -\DeclareBibliographyOption{firstinits}[true]{% - \blx@warning@noline{% - 'firstinits' option is deprecated, use 'giveninits' instead}% - \settoggle{blx@giveninits}{#1}} - -\DeclareBibliographyOption{giveninits}[true]{% - \settoggle{blx@giveninits}{#1}} - -\DeclareBibliographyOption{abbreviate}[true]{% - \ifstrequal{#1}{true} - {\def\abx@str{abx@sstr}} - {\def\abx@str{abx@lstr}}} - -\DeclareBibliographyOption{dateabbrev}[true]{% - \ifstrequal{#1}{true} - {\let\abx@bibmonth\blx@imc@bibsstring} - {\let\abx@bibmonth\blx@imc@biblstring}} - -\DeclareBibliographyOption{language}{% - \togglefalse{blx@autolangbib}% - \togglefalse{blx@autolangcite}% - \ifboolexpr{ - test {\ifstrequal{#1}{auto}} - or - test {\ifstrequal{#1}{autobib}} - or - test {\ifstrequal{#1}{autocite}} - } - {\def\blx@languagename{english}% - \ifstrequal{#1}{auto} - {\toggletrue{blx@autolangbib}% - \toggletrue{blx@autolangcite}} - {}% - \ifstrequal{#1}{autobib} - {\toggletrue{blx@autolangbib}} - {}% - \ifstrequal{#1}{autocite} - {\toggletrue{blx@autolangcite}} - {}} - {\IfFileExists{#1.lbx} - {\togglefalse{blx@autolangbib}% - \togglefalse{blx@autolangcite}% - \edef\blx@languagename{#1}} - {\blx@error - {Language '#1' not supported} - {Failed to find a matching '#1.lbx' file}}}} - -\DeclareBibliographyOption{clearlang}[true]{% - \settoggle{blx@clearlang}{#1}} - -\DeclareBibliographyOption{babel}{% - \blx@warning@noline{% - 'babel' option is deprecated, use 'autolang' instead}% - \blx@autolang@i{#1}} - -\DeclareBibliographyOption{autolang}{% - \blx@autolang@i{#1}} - -\def\blx@autolang@i#1{% - \ifcsdef{blx@opt@autolang@#1} - {\csuse{blx@opt@autolang@#1}} - {\blx@err@invopt{autolang=#1}{}}} - -\def\blx@opt@autolang@none{% - \undef\blx@thelangenv - \let\blx@hook@initlang\@empty - \let\blx@hook@endlang\@empty} -\def\blx@opt@autolang@hyphen{% - \def\blx@thelangenv{hyphenrules}% - \let\blx@hook@initlang\@empty - \let\blx@hook@endlang\@empty} -\csdef{blx@opt@autolang@other*}{% - \def\blx@thelangenv{otherlanguage*}% - \def\blx@hook@initlang{\@quotereset\@ne}% - \def\blx@hook@endlang{\blx@postpunct}} -\def\blx@opt@autolang@other{% - \def\blx@thelangenv{otherlanguage}% - \def\blx@hook@initlang{\@quotereset\@ne}% - \def\blx@hook@endlang{\blx@postpunct}} - -\DeclareBibliographyOption{indexing}[true]{% - \blx@opt@index{#1}} -\DeclareTypeOption{indexing}[true]{% - \blx@opt@index{#1}} -\DeclareEntryOption{indexing}[true]{% - \blx@opt@index{#1}} -\def\blx@opt@index#1{% - \ifcsdef{blx@opt@index@#1} - {\csuse{blx@opt@index@#1}} - {\blx@err@invopt{indexing=#1}{}}} -\def\blx@opt@index@true{% - \toggletrue{blx@citeindex}% - \toggletrue{blx@bibindex}} -\def\blx@opt@index@false{% - \togglefalse{blx@citeindex}% - \togglefalse{blx@bibindex}} -\def\blx@opt@index@cite{% - \toggletrue{blx@citeindex}% - \togglefalse{blx@bibindex}} -\def\blx@opt@index@bib{% - \togglefalse{blx@citeindex}% - \toggletrue{blx@bibindex}} - -\DeclareBibliographyOption{sortcites}[true]{% - \ifstrequal{#1}{true} - {\let\blx@thecitesort\blx@citesort - \let\blx@thenotecheck\blx@notecheck} - {\let\blx@thecitesort\blx@citenosort - \let\blx@thenotecheck\relax}} - -\DeclareBibliographyOption{hyperref}[true]{% - \ifcsdef{blx@opt@hyperref@#1} - {\letcs\blx@hyperref{blx@opt@hyperref@#1}} - {\blx@err@invopt{hyperref=#1}{}}} -\def\blx@opt@hyperref@false{0} -\def\blx@opt@hyperref@true{1} -\def\blx@opt@hyperref@auto{2} - -\DeclareBibliographyOption{backref}[true]{% - \ifstrequal{#1}{true} - {\let\blx@backref\blx@addbackref - \let\abx@aux@backref\blx@aux@backref - \booltrue{backtracker}} - {\let\blx@backref\@gobble - \let\abx@aux@backref\@gobblefive - \boolfalse{backtracker}}} - -\DeclareBibliographyOption{backrefsetstyle}{% - \ifcsdef{blx@opt@backrefsetstyle@#1} - {\letcs\blx@backrefsetstyle{blx@opt@backrefsetstyle@#1}} - {\blx@err@invopt{backrefsetstyle=#1}{}}} -\def\blx@opt@backrefsetstyle@setonly{0} -\def\blx@opt@backrefsetstyle@memonly{1} -\def\blx@opt@backrefsetstyle@setormem{2} -\def\blx@opt@backrefsetstyle@setandmem{3} -\def\blx@opt@backrefsetstyle@memandset{4} -\def\blx@opt@backrefsetstyle@setplusmem{5} - -\appto\blx@mkhyperref{% - \ifHy@plainpages - \blx@warning@noline{% - hyperref package option 'plainpages' enabled.\MessageBreak - This may cause problems with hyperlinked back\MessageBreak - references. 'plainpages=false' is recommended}% - \fi - \ifHy@pageanchor\else - \blx@warning@noline{% - hyperref package option 'pageanchor' disabled.\MessageBreak - This will cause problems with hyperlinked back\MessageBreak - references. 'pageanchor=true' is required}% - \fi} - -\DeclareBibliographyOption{block}{% - \ifcsdef{blx@opt@block@#1} - {\csuse{blx@opt@block@#1}} - {\blx@err@invopt{block=#1}{}}} -\def\blx@opt@block@none{% - \let\blx@bibsetup\@empty - \let\newblockpunct\@empty} -\def\blx@opt@block@par{% - \let\blx@bibsetup\@empty - \def\newblockpunct{\par}} -\def\blx@opt@block@nbpar{% - \def\blx@bibsetup{\interlinepenalty\@M}% - \def\newblockpunct{\par\nobreak}} -\def\blx@opt@block@space{% - \let\blx@bibsetup\@empty - \def\newblockpunct{% - \unspace\space - \hskip 0.11em - \@plus 0.33em - \@minus 0.07em}} -\def\blx@opt@block@ragged{% - \let\blx@bibsetup\raggedright - \def\newblockpunct{% - \unspace\penalty-9\relax\space}} - -\DeclareBibliographyOption{pagetracker}[true]{% - \ifcsdef{blx@opt@pagetracker@#1} - {\csuse{blx@opt@pagetracker@#1}} - {\blx@err@invopt{pagetracker=#1}{}}} -\def\blx@opt@pagetracker@true{% - \if@twoside - \blx@opt@pagetracker@spread - \else - \blx@opt@pagetracker@page - \fi} -\def\blx@opt@pagetracker@false{% - \let\blx@pagetracker\relax - \let\abx@aux@page\@gobbletwo - \let\abx@aux@fnpage\@gobbletwo - \boolfalse{pagetracker}} -\def\blx@opt@pagetracker@page{% - \let\blx@pagetracker\blx@pagetracker@context - \let\abx@aux@page\blx@aux@page - \let\abx@aux@fnpage\blx@aux@fnpage - \booltrue{pagetracker}} -\def\blx@opt@pagetracker@spread{% - \if@twoside - \let\blx@pagetracker\blx@pagetracker@context - \let\abx@aux@page\blx@aux@spread - \let\abx@aux@fnpage\blx@aux@fnspread - \booltrue{pagetracker}% - \else - \blx@warning@noline{% - LaTeX not in twoside mode\MessageBreak - Falling back to 'pagetracker=page'}% - \blx@opt@pagetracker@page - \fi} - -\DeclareBibliographyOption{citecounter}[true]{% - \ifcsdef{blx@opt@citecounter@#1} - {\csuse{blx@opt@citecounter@#1}} - {\blx@err@invopt{citecounter=#1}{}}} -\def\blx@opt@citecounter@true{% - \let\blx@setcitecounter\blx@setcitecounter@global - \let\blx@citecounter\blx@citecounter@global - \let\abx@aux@count\blx@aux@count - \let\abx@aux@fncount\blx@aux@fncount - \booltrue{citetracker}} -\def\blx@opt@citecounter@context{% - \let\blx@setcitecounter\blx@setcitecounter@context - \let\blx@citecounter\blx@citecounter@context - \let\abx@aux@count\blx@aux@count - \let\abx@aux@fncount\blx@aux@fncount - \booltrue{citetracker}} -\def\blx@opt@citecounter@false{% - \let\blx@setcitecounter\relax - \let\blx@citecounter\relax - \let\abx@aux@count\@gobbletwo - \let\abx@aux@fncount\@gobbletwo} - -\DeclareBibliographyOption{citetracker}[true]{% - \ifcsdef{blx@opt@citetracker@#1} - {\csuse{blx@opt@citetracker@#1}} - {\blx@err@invopt{citetracker=#1}{}}} -\def\blx@opt@citetracker@true{% - \let\blx@imc@ifciteseen\blx@ifciteseen@global - \let\blx@imc@ifentryseen\blx@ifentryseen@global - \let\blx@citetracker\blx@citetracker@global - \booltrue{citetracker}} -\def\blx@opt@citetracker@false{% - \let\blx@imc@ifciteseen\@secondoftwo - \protected\long\def\blx@imc@ifentryseen##1##2##3{##3}% - \let\blx@citetracker\relax} -\def\blx@opt@citetracker@context{% - \let\blx@imc@ifciteseen\blx@ifciteseen@context - \let\blx@imc@ifentryseen\blx@ifentryseen@context - \let\blx@citetracker\blx@citetracker@context - \booltrue{citetracker}} -\def\blx@opt@citetracker@strict{% - \let\blx@imc@ifciteseen\blx@ifciteseen@global - \let\blx@imc@ifentryseen\blx@ifentryseen@global - \def\blx@citetracker{% - \blx@ifcitesingle{\blx@citetracker@global}{}}% - \booltrue{citetracker}} -\def\blx@opt@citetracker@constrict{% - \let\blx@imc@ifciteseen\blx@ifciteseen@context - \let\blx@imc@ifentryseen\blx@ifentryseen@context - \def\blx@citetracker{% - \blx@ifcitesingle{\blx@citetracker@context}{}}% - \booltrue{citetracker}} - -\DeclareBibliographyOption{ibidtracker}[true]{% - \ifcsdef{blx@opt@ibidtracker@#1} - {\csuse{blx@opt@ibidtracker@#1}} - {\blx@err@invopt{ibidtracker=#1}{}}} -\def\blx@opt@ibidtracker@true{% - \let\blx@imc@ifciteibid\blx@ifciteibid@global - \let\blx@ibidtracker\blx@ibidtracker@global - \let\blx@ibidreset\blx@ibidreset@global - \booltrue{citetracker}} -\def\blx@opt@ibidtracker@false{% - \let\blx@imc@ifciteibid\@secondoftwo - \let\blx@ibidtracker\relax - \let\blx@ibidreset\relax} -\def\blx@opt@ibidtracker@context{% - \let\blx@imc@ifciteibid\blx@ifciteibid@context - \let\blx@ibidtracker\blx@ibidtracker@context - \let\blx@ibidreset\blx@ibidreset@context - \booltrue{citetracker}} -\def\blx@opt@ibidtracker@strict{% - \let\blx@imc@ifciteibid\blx@ifciteibid@strict - \let\blx@ibidtracker\blx@ibidtracker@strict - \let\blx@ibidreset\blx@ibidreset@global - \booltrue{citetracker}} -\def\blx@opt@ibidtracker@constrict{% - \let\blx@imc@ifciteibid\blx@ifciteibid@constrict - \let\blx@ibidtracker\blx@ibidtracker@constrict - \let\blx@ibidreset\blx@ibidreset@context - \booltrue{citetracker}} - -\DeclareBibliographyOption{idemtracker}[true]{% - \ifcsdef{blx@opt@idemtracker@#1} - {\csuse{blx@opt@idemtracker@#1}} - {\blx@err@invopt{idemtracker=#1}{}}} -\def\blx@opt@idemtracker@true{% - \let\blx@imc@ifciteidem\blx@ifciteidem@global - \let\blx@idemtracker\blx@idemtracker@global - \let\blx@idemreset\blx@idemreset@global - \booltrue{citetracker}} -\def\blx@opt@idemtracker@false{% - \let\blx@imc@ifciteidem\@secondoftwo - \let\blx@idemtracker\relax - \let\blx@idemreset\relax} -\def\blx@opt@idemtracker@context{% - \let\blx@imc@ifciteidem\blx@ifciteidem@context - \let\blx@idemtracker\blx@idemtracker@context - \let\blx@idemreset\blx@idemreset@context - \booltrue{citetracker}} -\def\blx@opt@idemtracker@strict{% - \let\blx@imc@ifciteidem\blx@ifciteidem@strict - \let\blx@idemtracker\blx@idemtracker@strict - \let\blx@idemreset\blx@idemreset@global - \booltrue{citetracker}} -\def\blx@opt@idemtracker@constrict{% - \let\blx@imc@ifciteidem\blx@ifciteidem@constrict - \let\blx@idemtracker\blx@idemtracker@constrict - \let\blx@idemreset\blx@idemreset@context - \booltrue{citetracker}} - -\DeclareBibliographyOption{opcittracker}[true]{% - \ifcsdef{blx@opt@opcittracker@#1} - {\csuse{blx@opt@opcittracker@#1}} - {\blx@err@invopt{opcittracker=#1}{}}} -\def\blx@opt@opcittracker@true{% - \let\blx@imc@ifopcit\blx@ifopcit@global - \let\blx@opcittracker\blx@opcittracker@global - \let\blx@opcitreset\blx@opcitreset@global - \booltrue{citetracker}} -\def\blx@opt@opcittracker@false{% - \let\blx@imc@ifopcit\@secondoftwo - \let\blx@opcittracker\relax - \let\blx@opcitreset\relax} -\def\blx@opt@opcittracker@context{% - \let\blx@imc@ifopcit\blx@ifopcit@context - \let\blx@opcittracker\blx@opcittracker@context - \let\blx@opcitreset\blx@opcitreset@context - \booltrue{citetracker}} -\def\blx@opt@opcittracker@strict{% - \let\blx@imc@ifopcit\blx@ifopcit@strict - \let\blx@opcittracker\blx@opcittracker@strict - \let\blx@opcitreset\blx@opcitreset@global - \booltrue{citetracker}} -\def\blx@opt@opcittracker@constrict{% - \let\blx@imc@ifopcit\blx@ifopcit@constrict - \let\blx@opcittracker\blx@opcittracker@constrict - \let\blx@opcitreset\blx@opcitreset@context - \booltrue{citetracker}} - -\DeclareBibliographyOption{loccittracker}[true]{% - \ifcsdef{blx@opt@loccittracker@#1} - {\csuse{blx@opt@loccittracker@#1}} - {\blx@err@invopt{loccittracker=#1}{}}} -\def\blx@opt@loccittracker@true{% - \let\blx@imc@ifloccit\blx@ifloccit@global - \let\blx@loccittracker\blx@loccittracker@global - \let\blx@loccitreset\blx@loccitreset@global - \booltrue{citetracker}} -\def\blx@opt@loccittracker@false{% - \let\blx@imc@ifloccit\@secondoftwo - \let\blx@loccittracker\relax - \let\blx@loccitreset\relax} -\def\blx@opt@loccittracker@context{% - \let\blx@imc@ifloccit\blx@ifloccit@context - \let\blx@loccittracker\blx@loccittracker@context - \let\blx@loccitreset\blx@loccitreset@context - \booltrue{citetracker}} -\def\blx@opt@loccittracker@strict{% - \let\blx@imc@ifloccit\blx@ifloccit@strict - \let\blx@loccittracker\blx@loccittracker@strict - \let\blx@loccitreset\blx@loccitreset@global - \booltrue{citetracker}} -\def\blx@opt@loccittracker@constrict{% - \let\blx@imc@ifloccit\blx@ifloccit@constrict - \let\blx@loccittracker\blx@loccittracker@constrict - \let\blx@loccitreset\blx@loccitreset@context - \booltrue{citetracker}} - -\DeclareBibliographyOption{parentracker}[true]{% - \ifstrequal{#1}{true} - {\let\bibopenparen\blx@bibopenparen - \let\bibcloseparen\blx@bibcloseparen - \let\bibopenbracket\blx@bibopenbracket - \let\bibclosebracket\blx@bibclosebracket} - {\protected\def\bibopenparen{\bibleftparen}% - \protected\def\bibcloseparen{\bibrightparen}% - \protected\def\bibopenbracket{\bibleftbracket}% - \protected\def\bibclosebracket{\bibrightbracket}}} - -\DeclareBibliographyOption{maxparens}{% - \ifnumless{#1}{1} - {\blx@err@invopt{maxparens=#1}{}} - {\setcounter{maxparens}{#1}}} - -\DeclareBibliographyOption{date}{% - \ifcsdef{mkbibrange#1} - {\protected\def\blx@imc@printdate{\csuse{mkbibrange#1}{}}% - \protected\def\blx@imc@printdateextra{\csuse{mkbibrange#1extra}{}}} - {\blx@err@invopt{date=#1}{}}} - -\DeclareBibliographyOption{datelabel}{% - \ifcsdef{mkbibrange#1} - {\protected\def\blx@imc@printdatelabel{% - \blx@imc@iffieldundef{year} - {\csuse{mkbibrange#1}{label}} - {\csuse{mkbibrange#1}{}}}% - \protected\def\blx@imc@printdateextralabel{% - \blx@imc@iffieldundef{year} - {\csuse{mkbibrange#1extra}{label}} - {\csuse{mkbibrange#1extra}{}}}} - {\blx@err@invopt{datelabel=#1}{}}} - -\DeclareBibliographyOption{urldate}{% - \ifcsdef{mkbibrange#1} - {\protected\def\blx@imc@printurldate{\csuse{mkbibrange#1}{url}}} - {\blx@err@invopt{urldate=#1}{}}} - -\DeclareBibliographyOption{eventdate}{% - \ifcsdef{mkbibrange#1} - {\protected\def\blx@imc@printeventdate{\csuse{mkbibrange#1}{event}}} - {\blx@err@invopt{eventdate=#1}{}}} - -\DeclareBibliographyOption{origdate}{% - \ifcsdef{mkbibrange#1} - {\protected\def\blx@imc@printorigdate{\csuse{mkbibrange#1}{orig}}} - {\blx@err@invopt{origdate=#1}{}}} - -\DeclareBibliographyOption{alldates}{% - \ExecuteBibliographyOptions{date=#1,urldate=#1,eventdate=#1,origdate=#1}} - -\DeclareBibliographyOption{datezeros}[true]{% - \ifstrequal{#1}{true} - {\let\blx@imc@mkdatezeros\@firstofone} - {\let\blx@imc@mkdatezeros\blx@imc@stripzeros}} - -\DeclareBibliographyOption{autocite}{% - \ifcsundef{blx@acite@#1} - {\blx@error - {Autocite command '#1' undefined} - {The autocite command '#1' has not been defined by - the\MessageBreak selected citation style}} - {\letcs\autocite{blx@acite@#1}% - \letcs\autocites{blx@macite@#1}}} - -\DeclareBibliographyOption{notetype}{% - \ifcsdef{blx@opt@notetype@#1} - {\blx@notetype\csuse{blx@opt@notetype@#1}} - {\blx@err@invopt{notetype=#1}{}}} -\cslet{blx@opt@notetype@foot+end}\z@ -\let\blx@opt@notetype@footonly\@ne -\let\blx@opt@notetype@endonly\tw@ - -\DeclareBibliographyOption{autopunct}[true]{% - \ifstrequal{#1}{true} - {\DeclareAutoPunctuation{.,;:!?}} - {\DeclareAutoPunctuation{}}} - -\DeclareBibliographyOption{punctfont}[true]{% - \ifstrequal{#1}{true} - {\let\blx@ifpuncthook\@firstoftwo} - {\let\blx@ifpuncthook\@secondoftwo}} - -\DeclareBibliographyOption{labelnumber}[true]{% - \settoggle{blx@labelnumber}{#1}% - \iftoggle{blx@labelnumber} - {} - {\setkeys{blx@opt@pre}{defernumbers=false}}} -\DeclareTypeOption{labelnumber}[true]{% - \settoggle{blx@labelnumber}{#1}} - -\DeclareBibliographyOption{labelalpha}[true]{% - \settoggle{blx@labelalpha}{#1}} -\DeclareTypeOption{labelalpha}[true]{% - \settoggle{blx@labelalpha}{#1}} - -\DeclareBibliographyOption{labeldate}[true]{% - \settoggle{blx@labeldate}{#1}} -\DeclareTypeOption{labeldate}[true]{% - \settoggle{blx@labeldate}{#1}} - -\DeclareBibliographyOption{labelyear}[true]{% - \blx@warning@noline{% - 'labelyear' option is deprecated, use 'labeldate' instead}% - \settoggle{blx@labeldate}{#1}} -\DeclareTypeOption{labelyear}[true]{% - \blx@warning@noline{% - 'labelyear' option is deprecated, use 'labeldate' instead}% - \settoggle{blx@labeldate}{#1}} - -\DeclareBibliographyOption{uniquelist}[true]{% - \ifcsdef{blx@opt@uniquelist@#1} - {\letcs\blx@uniquelist{blx@opt@uniquelist@#1}} - {\blx@err@invopt{uniquelist=#1}{}}} -\DeclareTypeOption{uniquelist}[true]{% - \ifcsdef{blx@opt@uniquelist@#1} - {\letcs\blx@uniquelist{blx@opt@uniquelist@#1}} - {\blx@err@invopt{uniquelist=#1}{}}} -\def\blx@opt@uniquelist@false{0} -\def\blx@opt@uniquelist@true{1} -\def\blx@opt@uniquelist@minyear{2} - -\DeclareBibliographyOption{uniquename}[true]{% - \ifcsdef{blx@opt@uniquename@#1} - {\letcs\blx@uniquename{blx@opt@uniquename@#1}} - {\blx@err@invopt{uniquename=#1}{}}} -\DeclareTypeOption{uniquename}[true]{% - \ifcsdef{blx@opt@uniquename@#1} - {\letcs\blx@uniquename{blx@opt@uniquename@#1}} - {\blx@err@invopt{uniquename=#1}{}}} -\def\blx@opt@uniquename@false{0} -\def\blx@opt@uniquename@init{1} -\def\blx@opt@uniquename@true{2} -\def\blx@opt@uniquename@full{2} -\def\blx@opt@uniquename@allinit{3} -\def\blx@opt@uniquename@allfull{4} -\def\blx@opt@uniquename@mininit{5} -\def\blx@opt@uniquename@minfull{6} - -\DeclareBibliographyOption{singletitle}[true]{% - \settoggle{blx@singletitle}{#1}} -\DeclareTypeOption{singletitle}[true]{% - \settoggle{blx@singletitle}{#1}} - -\DeclareBibliographyOption{defernumbers}[true]{% - \settoggle{blx@defernumbers}{#1}% - \iftoggle{blx@defernumbers} - {\setkeys{blx@opt@pre}{labelnumber}% - \let\blx@thelabelnumber\blx@addlabelnumber - \let\abx@aux@number\blx@aux@number} - {\let\blx@thelabelnumber\relax - \let\abx@aux@number\@gobblefour}} - -\DeclareBibliographyOption{refsection}{% - \ifcsdef{blx@opt@refsection@#1} - {\letcs\blx@refsecreset@level{blx@opt@refsection@#1}} - {\blx@err@invopt{refsection=#1}{}}} -\def\blx@opt@refsection@none{0} -\def\blx@opt@refsection@part{1} -\def\blx@opt@refsection@chapter{2} -\def\blx@opt@refsection@section{3} -\def\blx@opt@refsection@subsection{4} - -\AtEndPreamble{% - \ifcase\blx@refsecreset@level - \or % 1 - \blx@refpatch@part\newrefsection - \or % 2 - \blx@refpatch@chapter\newrefsection - \or % 3 - \blx@refpatch@sect{section}{\newrefsection}{1}% - \or % 4 - \blx@refpatch@sect{subsection}{\newrefsection}{2}% - \fi} - -\DeclareBibliographyOption{refsegment}{% - \ifcsdef{blx@opt@refsegment@#1} - {\letcs\blx@refsegreset@level{blx@opt@refsegment@#1}} - {\blx@err@invopt{refsegment=#1}{}}} -\def\blx@opt@refsegment@none{0} -\def\blx@opt@refsegment@part{1} -\def\blx@opt@refsegment@chapter{2} -\def\blx@opt@refsegment@section{3} -\def\blx@opt@refsegment@subsection{4} - -\AtEndPreamble{% - \ifnumgreater\blx@refsegreset@level\z@ - {\ifnumgreater\blx@refsegreset@level\blx@refsecreset@level - {} - {\blx@err@confopt - {refsegment/refsection} - {The 'refsegment' option must point to a - lower-level\MessageBreak document division - than 'refsection'}% - \def\blx@refsegreset@level{0}}} - {}% - \ifcase\blx@refsegreset@level - \or % 1 - \blx@refpatch@part\newrefsegment - \or % 2 - \blx@refpatch@chapter\newrefsegment - \or % 3 - \blx@refpatch@sect{section}{\newrefsegment}{1}% - \or % 4 - \blx@refpatch@sect{subsection}{\newrefsegment}{2}% - \fi} - -\DeclareBibliographyOption{citereset}{% - \ifcsdef{blx@opt@citereset@#1} - {\letcs\blx@citereset@level{blx@opt@citereset@#1}} - {\blx@err@invopt{citereset=#1}{}}} -\def\blx@opt@citereset@none{0} -\def\blx@opt@citereset@part{1} -\def\blx@opt@citereset@chapter{2} -\def\blx@opt@citereset@section{3} -\def\blx@opt@citereset@subsection{4} - -\AtEndPreamble{% - \ifcase\blx@citereset@level - \or % 1 - \blx@refpatch@part{\citereset\blx@inf@creset}% - \or % 2 - \blx@refpatch@chapter{\citereset\blx@inf@creset}% - \or % 3 - \blx@refpatch@sect{section}{\citereset\blx@inf@creset}{1}% - \or % 4 - \blx@refpatch@sect{subsection}{\citereset\blx@inf@creset}{2}% - \fi} - -\DeclareBibliographyOption{bibwarn}[true]{% - \ifstrequal{#1}{true} - {\let\blx@bbl@thewarn\blx@bbl@warn} - {\let\blx@bbl@thewarn\@gobble}} - -% Entry options - -\DeclareBibliographyOption{useprefix}[true]{% - \settoggle{blx@useprefix}{#1}} -\DeclareTypeOption{useprefix}[true]{% - \settoggle{blx@useprefix}{#1}} -\DeclareEntryOption{useprefix}[true]{% - \settoggle{blx@useprefix}{#1}} - -\DeclareBibliographyOption{useauthor}[true]{% - \settoggle{blx@useauthor}{#1}} -\DeclareTypeOption{useauthor}[true]{% - \settoggle{blx@useauthor}{#1}} -\DeclareEntryOption{useauthor}[true]{% - \settoggle{blx@useauthor}{#1}} - -\DeclareBibliographyOption{useeditor}[true]{% - \settoggle{blx@useeditor}{#1}} -\DeclareTypeOption{useeditor}[true]{% - \settoggle{blx@useeditor}{#1}} -\DeclareEntryOption{useeditor}[true]{% - \settoggle{blx@useeditor}{#1}} - -\DeclareBibliographyOption{usetranslator}[true]{% - \settoggle{blx@usetranslator}{#1}} -\DeclareTypeOption{usetranslator}[true]{% - \settoggle{blx@usetranslator}{#1}} -\DeclareEntryOption{usetranslator}[true]{% - \settoggle{blx@usetranslator}{#1}} - -\DeclareTypeOption{skipbib}[true]{% - \settoggle{blx@skipbib}{#1}} -\DeclareEntryOption{skipbib}[true]{% - \settoggle{blx@skipbib}{#1}} - -\DeclareTypeOption{skiplos}[true]{% - \settoggle{blx@skipbiblist}{#1}} -\DeclareEntryOption{skiplos}[true]{% - \settoggle{blx@skipbiblist}{#1}} - -\DeclareTypeOption{skipbiblist}{% - \blx@warning@noline{% - skipbiblist option is Biber only, use 'skiplos' instead}% - \settoggle{blx@skipbiblist}{#1}} -\DeclareEntryOption{skipbiblist}{% - \blx@warning@noline{% - skipbiblist option is Biber only, use 'skiplos' instead}% - \settoggle{blx@skipbiblist}{#1}} - -\DeclareTypeOption{skiplab}[true]{% - \settoggle{blx@skiplab}{#1}} -\DeclareEntryOption{skiplab}[true]{% - \settoggle{blx@skiplab}{#1}} - -\DeclareTypeOption{dataonly}[true]{% - \settoggle{blx@skipbib}{#1}% - \settoggle{blx@skipbiblist}{#1}% - \settoggle{blx@skiplab}{#1}} -\DeclareEntryOption{dataonly}[true]{% - \settoggle{blx@skipbib}{#1}% - \settoggle{blx@skipbiblist}{#1}% - \settoggle{blx@skiplab}{#1}} - -% Option processor/scheduler - -\DeclareOption*{% - \begingroup - \def\blx@tempa#1=#2&{#1}% - \edef\blx@tempa{% - \expandafter\blx@tempa\CurrentOption=&}% - \ifcsundef{KV@blx@opt@ldt@\blx@tempa} - {\endgroup - \eappto\blx@theoptions{\CurrentOption,}} - {\edef\blx@tempa{\endgroup - \noexpand\setkeys{blx@opt@ldt}{\CurrentOption}}% - \blx@tempa}} - -\def\blx@processoptions{% - \ifundef\blx@theoptions - {} - {\begingroup - \edef\blx@tempa{\endgroup - \noexpand\setkeys{blx@opt@pre}{\blx@theoptions}}% - \blx@tempa}} - -%% Initial setup - -% Set defaults - -\setkeys{blx@opt@ldt}{style=numeric} -\setkeys{blx@opt@pre}{% - sorting=nty,sortlos=los,sortcase,sortupper,sortcites=false, - maxnames=3,minnames=1,maxalphanames=3,minalphanames=1, - maxitems=3,minitems=1,mincrossrefs=2,useauthor=true,useeditor=true, - usetranslator=false,indexing=false,abbreviate=true,dateabbrev=true, - backref=false,backrefsetstyle=setonly,pagetracker=false,ibidtracker=false, - idemtracker=false,opcittracker=false,loccittracker=false,citetracker=false, - citecounter=false,block=none,language=autobib,clearlang=true,autolang=none, - date=comp,datelabel=year,origdate=comp,eventdate=comp,urldate=short, - autopunct=true,punctfont=false,defernumbers=false, - refsection=none,refsegment=none,citereset=none,hyperref=auto, - parentracker,maxparens=3,maxline=79,bibencoding=auto,bibwarn} - -% Load compatibility code - -\blx@inputonce{blx-compat.def}{compatibility code}{}{}{}{} - -% Restore catcodes - -\blx@catcodes -\undef\blx@catcodes - -% Process load-time options - -\ProcessOptions* - -% Load citation and bibliography styles, configuration file - -\blx@inputonce{biblatex_legacy.def}{generic definitions}{}{}{}{} -\iftoggle{blx@natbib} - {\blx@inputonce{blx-natbib.def}{natbib compatibility}{}{}{}{}} - {} -\iftoggle{blx@mcite} - {\blx@inputonce{blx-mcite.def}{mcite-like commands}{}{}{}{}} - {} -\RequireBibliographyStyle{\blx@bbxfile} -\RequireCitationStyle{\blx@cbxfile} -\blx@secinit -\citereset -\blx@inputonce{biblatex.cfg}{configuration file}{}{}{}{} - -% Process preamble options - -\blx@processoptions - -% Deferred setup at end of preamble - -\AtEndPreamble{% - \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@giveninits} - {\ifnumequal\blx@uniquename\blx@opt@uniquename@full - {\blx@warn@conflopt{% - 'giveninits' conflicts with 'uniquename=full'.\MessageBreak - Setting 'uniquename=init'}% - \setkeys{blx@opt@pre}{uniquename=init}} - {}% - \ifnumequal\blx@uniquename\blx@opt@uniquename@allfull - {\blx@warn@conflopt{% - 'giveninits' conflicts with 'uniquename=allfull'.\MessageBreak - Setting 'uniquename=allinit}% - \setkeys{blx@opt@pre}{uniquename=allinit}} - {}% - \ifnumequal\blx@uniquename\blx@opt@uniquename@minfull - {\blx@warn@conflopt{% - 'giveninits' conflicts with 'uniquename=minfull'.\MessageBreak - Setting 'uniquename=mininit}% - \setkeys{blx@opt@pre}{uniquename=mininit}} - {}} - {}% - \nottoggle{blx@labeldate} - {\ifnumequal\blx@uniquelist\blx@opt@uniquelist@minyear - {\blx@warn@conflopt{% - 'uniquelist=minyear' requires 'labeldate'.\MessageBreak - Setting 'uniquelist=true'}% - \setkeys{blx@opt@pre}{uniquelist}} - {}} - {}} - -\def\blx@checkencoding{% - \ifdef\blx@texencoding - {\blx@info@noline{% - Input encoding '\blx@texencoding' specified}} - {\ifundef\inputencodingname - {\ifundef\XeTeXrevision - {\ifundef\luatexversion - {\def\blx@texencoding{ascii}% - \blx@info@noline{% - No input encoding detected.\MessageBreak - Assuming '\blx@texencoding'}} - {\def\blx@texencoding{utf8}% - \blx@info@noline{% - LuaTeX detected.\MessageBreak - Assuming input encoding '\blx@texencoding'}}} - {\def\blx@texencoding{utf8}% - \blx@info@noline{% - XeTeX detected.\MessageBreak - Assuming input encoding '\blx@texencoding'}}} - {\ifcsdef{blx@inpenc@\inputencodingname} - {\letcs\blx@texencoding{blx@inpenc@\inputencodingname}} - {\let\blx@texencoding\inputencodingname}% - \blx@info@noline{% - Input encoding '\blx@texencoding' detected}}}% - \ifdef\blx@bibencoding - {\ifdefstring\blx@bibencoding{ascii} - {\blx@info@noline{% - Data encoding '\blx@bibencoding' specified.\MessageBreak - No need to reencode data}% - \togglefalse{blx@reencode}} - {\ifdefstring\blx@bibencoding{auto} - {\let\blx@bibencoding\blx@texencoding - \blx@info@noline{% - Automatic encoding selection.\MessageBreak - Assuming data encoding '\blx@bibencoding'} - \togglefalse{blx@reencode}} - {\ifdefstrequal\blx@bibencoding\blx@texencoding - {\blx@info@noline{% - Data encoding '\blx@bibencoding' specified.\MessageBreak - No need to reencode data}% - \togglefalse{blx@reencode}} - {\blx@info@noline{% - Data encoding '\blx@bibencoding' specified.\MessageBreak - Reencoding not supported by backend.\MessageBreak - Falling back to reencoding with inputenc}% - \@ifpackageloaded{inputenc} - {\toggletrue{blx@reencode}} - {\@ifpackageloaded{inputenx} - {\toggletrue{blx@reencode}} - {\blx@warning@noline{% - On-the-fly data reencoding not supported by\MessageBreak - this setup. Load the 'inputenc/inputenx'\MessageBreak - package or use backend=biber. 'luainputenc'\MessageBreak - is not supported (use backend=biber instead)}% - \togglefalse{blx@reencode}}}}}}} - {\def\blx@bibencoding{ascii}% - \blx@info@noline{% - Data encoding not specified.\MessageBreak - Assuming '\blx@bibencoding'}% - \togglefalse{blx@reencode}}% - \ifdefstring\blx@bibencoding{ascii} - {} - {\ifdefstring\blx@bibencoding{utf8} - {\ifnumless\blx@backend\blx@backend@bibtexu - {\blx@warning@noline{% - Data encoding is '\blx@bibencoding'.\MessageBreak - Use backend=biber}} - {}} - {\ifnumodd\blx@backend - {\ifnumequal\blx@backend\blx@backend@bibtexe - {\let\blx@csfencoding\blx@bibencoding} - {}} - {\blx@warning@noline{% - Data encoding is '\blx@bibencoding'.\MessageBreak - Use backend=bibtex8 or backend=biber}}}}% -} - -% Deferred last minute setup - -\AtBeginDocument{% - \blx@checkencoding - \if@filesw - \blx@auxinit@bibtex\blx@bibfiles - \blx@ifsigned{\blx@ctrlfile@bibtex\blxauxsuffix}{bib} - {\blx@ctrlwrite@bibtex} - {}% - \ifnumless\blx@reqbiber\thr@@ - {\blx@bblinput} - {}% - \blx@maxsection\z@ - \fi - \let\blx@reqbiber\z@ - \csuse{abx@preamble}% - \blx@checkbackend{.bib file}% - \blx@inf@refsec - \blx@inf@refseg} - -\AtEndOfPackage{% - \AtBeginDocument{% - \let\do\undef - \blx@dopreamblecmds - \let\do\noexpand}} - -\endinput diff --git a/Master/texmf-dist/tex/latex/biblatex/blx-bibtex.def b/Master/texmf-dist/tex/latex/biblatex/blx-bibtex.def new file mode 100644 index 00000000000..fdc1363b419 --- /dev/null +++ b/Master/texmf-dist/tex/latex/biblatex/blx-bibtex.def @@ -0,0 +1,428 @@ +\ProvidesFile{blx-bibtex.def} +[\abx@cptid] + +\blx@warning@noline{% + Using fall-back BibTeX(8) backend:\MessageBreak + functionality may be reduced/unavailable% +} + +% Initialisation of backend-related switches, variables, etc. +\newtoggle{blx@runbtx} + +% No interface provided for this but can be set 'in emergency' by user +\def\blx@maxline{79} + +% Rename write stream so use is clear +\let\blx@write\blx@bcfout + +% Data file initialisation +\edef\blx@auxfile{\jobname} +\let\blx@aux\@mainaux +\newcommand*{\blxauxsuffix}{-blx} + +\begingroup +\def\blx@tempa#1"#2{% + #1\ifx#2\@empty\else + \expandafter\blx@tempa + \fi#2} +\edef\blx@ctrlfile{% + \noexpand\blx@tempa + \expandafter\blx@tempa\jobname"\@empty + \space\noexpand\@empty} +\def\blx@tempa#1 #2{% + #1\ifx#2\@empty\else + \string_\expandafter\blx@tempa + \fi#2} +\xdef\blx@ctrlfile{\blx@ctrlfile} +\endgroup + +\def\blx@auxinit#1{% + \blx@auxwrite\blx@aux + {\def\do##1{,\blx@stripbib{##1}}} + {\ifx\blx@aux\@mainaux + \else + \blx@msg@aux + \fi + \string\bibstyle{biblatex}\blx@nl + \string\bibdata{% + \blx@ctrlfile\blxauxsuffix + \ifx#1\@empty + \else + \dolistloop#1% + \fi}\blx@nl + \string\citation{biblatex-control}}} + +\def\blx@sig@bib{@Comment{$ biblatex control file $}} +\edef\blx@ver@bib{@Comment{$ biblatex version \blx@bblversion\space $}} + +\let\blx@sig@aux\blx@sig@bbl +\let\blx@ver@aux\blx@ver@bbl + +\edef\blx@msg@aux{% + \blx@sig@aux\blx@nl + \blx@ver@aux\blx@nl + \@percentchar\space Do not modify this file!\blx@nl + \@percentchar\blx@nl + \@percentchar\space This is an auxiliary file + used by the 'biblatex' package.\blx@nl + \@percentchar\space This file may safely be deleted. + It will be recreated as\blx@nl + \@percentchar\space required.\blx@nl + \@percentchar\blx@nl\string\relax\blx@nl} +\edef\blx@msg@bib{% + \blx@sig@bib\blx@nl + \blx@ver@bib\blx@nl + Do not modify this file!\blx@nl\blx@nl + This is an auxiliary file used + by the 'biblatex' package.\blx@nl + This file may safely be deleted. + It will be recreated as\blx@nl + required.\blx@nl\blx@nl} + +% User feedback + +\renewrobustcmd*{\RequireBiber}[1][2]{% + \ifnumgreater{#1}\blx@reqbiber + {\numgdef\blx@reqbiber{#1}} + {}% + \blx@checkbackend{style}} +\@onlypreamble\RequireBiber +\let\blx@reqbiber\z@ + +\def\blx@checkbackend#1{% + \ifnum\blx@reqbiber>2 % + \blx@error + {Biber backend is required by #1} + {The selected style or one of the .bib files + requires Biber.\MessageBreak It will + not work at all with BibTeX.}% + \fi} + +\def\blx@check@logreq{% + \begingroup + \ltxrequest{biblatex}{{\iftoggle{blx@runltx}{1}{0}}}{% + \provides[type=dynamic]{ + \def\do##1{\file{##1.aux}} + \dolistloop\blx@list@inactive + \file{\blx@ctrlfile\blxauxsuffix.bib} + } + \requires[type=dynamic]{ + \def\do##1{\file{##1.bbl}} + \dolistloop\blx@list@inactive + } + \ifdef\blx@list@req@edit + {\requires[type=editable]{ + \forlistloop\file\blx@list@req@edit + }} + {} + \ifdef\blx@list@req@stat + {\requires[type=static]{ + \forlistloop\file\blx@list@req@stat + }} + {} + }% + \def\do##1{% + \ifinlist{##1}{\blx@list@active} + {\blx@logreq@bibtex{1}{##1}} + {\blx@logreq@bibtex{0}{##1}}}% + \dolistloop\blx@list@inactive + \endgroup} + +\def\blx@logreq@bibtex#1#2{% + \logrequest[package=biblatex,priority=5,active=#1]{% + \generic{bibtex} + \cmdline{% + \iftoggle{blx@bibtex8} + {\binary{bibtex8} + \option{--wolfgang} + \option{--min\string_crossrefs \blx@mincrossrefs}} + {\binary{bibtex} + \option{-min-crossrefs \blx@mincrossrefs}}% + \infile{#2} + } + \input{ + \file{#2.aux} + } + \output{ + \file{#2.bbl} + } + \provides[type=dynamic]{ + \file{#2.bbl} + } + \requires[type=dynamic]{ + \file{#2.aux} + \file{\blx@ctrlfile\blxauxsuffix.bib} + } + \requires[type=editable]{ + \ifcsdef{blx@list@bibfiles@#2} + {\def\do{\file} + \dolistcsloop{blx@list@bibfiles@#2}} + {} + } + \requires[type=static]{ + \file{biblatex.bst}} + }% +} + +\def\blx@logreq@active#1{% + \xifinlist{\blx@auxfile}{\blx@list@active} + {} + {\listxadd\blx@list@active{\blx@auxfile}}% + \ifblank{#1} + {} + {\@latex@warning{#1}}% + \blx@rerun@latex + \blx@rerun@bibtex} + +\def\blx@logreq@inactive{% + \xifinlist{\blx@auxfile}{\blx@list@inactive} + {} + {\listxadd\blx@list@inactive{\blx@auxfile}}} + +\def\blx@rerun@bibtex{% + \global\toggletrue{blx@runbtx}% + \global\let\blx@rerun@bibtex\relax} + +% Only the toggle name changes here +\patchcmd{\blx@check@rerun}{blx@runbiber}{blx@runbtx}{}{} + +\def\blx@warn@auxlist{% + \begingroup + \edef\blx@tempa{Please (re)run BibTeX on the file(s):}% + \def\do##1{\appto\blx@tempa{\MessageBreak##1}}% + \dolistloop\blx@list@active + \blx@warning@noline{% + \blx@tempa\MessageBreak + and rerun LaTeX afterwards}% + \endgroup} + +\protected\def\blx@bibreq#1{% + \blx@auxwrite\blx@aux{}{\string\citation{#1}}} + +% {<string>} +% This mustn't be robust as it's likely to be used mainly tests and so +% needs to be expandable +\renewcommand*\rangelen[1]{% + \ifblank{#1} + {0}% + {% + \expandafter\blx@rangelen@range\romannumeral-`\q% + #1\bibrangedash\bibrangedash&% + }% + } + +\def\blx@rangelen@range#1\bibrangedash#2\bibrangedash#3&{% + \ifblank{#3} + {\blx@rangelen@hyphen#1--&} + {\blx@rangelen@check{#1}{#2}}% +} +\def\blx@rangelen@hyphen#1-#2-#3&{% + \ifblank{#3} + {1}% No range at all: assume one page + {\blx@rangelen@check{#1}{#2}}% +} +\def\blx@rangelen@check#1#2{% + \expandafter\blx@rangelen@check@aux + \number\numexpr + \blx@rangelen@check@int{#2} + - + \blx@rangelen@check@int{#1} + + 1 + \relax + &\stop +} +\def\blx@rangelen@check@aux#1\stop{% + \ifblank{#2} + {#1} + {-1}% +} +\def\blx@rangelen@check@int#1{% + \ifblank{#1} + {0&} + {% + \if\number\numexpr0#1-0#1\relax0 + #1 + \else + 0& + \fi + }% +} + +% Alter message text +\patchcmd{\blx@bbl@warn}{Biber}{BibTeX}{}{} + +%% Data input + +\patchcmd{\blx@bblinput}{\blx@bblfile}{\blx@bblfile\blx@bblsecs}{}{} + +\def\blx@bblfile{% + \blx@secinit + \begingroup + \blx@bblstart + \ifnum\c@refsection>\z@ + \edef\blx@auxfile{\jobname\the\c@refsection\blxauxsuffix}% + \else + \edef\blx@auxfile{\jobname}% + \fi + \blx@ifsigned{\blx@auxfile}{bbl} + {\InputIfFileExists{\blx@auxfile.bbl} + {\blx@info@noline{... file '\blx@auxfile.bbl' found}% + \global\toggletrue{blx@bbldone}} + {\blx@info@noline{... file '\blx@auxfile.bbl' not found}% + \typeout{No file \blx@auxfile.bbl.}% + \global\togglefalse{blx@bbldone}}} + {}% + \blx@bblend + \endgroup + \csnumgdef{blx@labelnumber@\the\c@refsection}{0}} + +\def\blx@bblsecs{% + \advance\c@refsection\@ne + \ifnum\c@refsection>\blx@maxsection + \else + \blx@bblfile + \expandafter\blx@bblsecs + \fi} + +\def\blx@refsection@ii{% + \xdef\blx@auxfile{\jobname\the\c@refsection\blxauxsuffix}% + \blx@regbibfiles\blx@auxfile\blx@bibfiles + \blx@logreq@inactive + \blx@ifsigned{\blx@auxfile}{aux} + {\immediate\openout\blx@write\blx@auxfile.aux\relax + \global\let\blx@aux\blx@write + \blx@auxinit\blx@bibfiles} + {}} + +\def\blx@endrefsection{% + \blx@endrefsegment + \ifx\blx@aux\blx@write + \immediate\closeout\blx@write + \global\let\blx@aux\@mainaux + \xdef\blx@auxfile{\jobname}% + \fi + \global\c@refsection\z@} + +% xref support + +% {<entrykey>} +\protected\def\blx@bbl@xref#1{% + \ifcsdef{blx@refp@\the\c@refsection @\detokenize{#1}} + {} + {\listcsxadd{blx@refs@\the\c@refsection}{\detokenize{#1}}}% + \listcsxadd{blx@refp@\the\c@refsection @\detokenize{#1}}{\abx@field@entrykey}% + \csxdef{blx@refc@\the\c@refsection @\abx@field@entrykey}{\detokenize{#1}}} + +\def\blx@addxref#1{% + \blx@ifdata{#1} + {\begingroup + \def\do##1{% + \csgappto{blx@data@\the\c@refsection @##1}{% + \def\abx@field@xref{#1}}}% + \dolistcsloop{blx@refp@\the\c@refsection @#1}% + \endgroup} + {}% + \global\csundef{blx@refp@\the\c@refsection @#1}} + +\def\blx@bblend{% + \ifcsdef{blx@refs@\the\c@refsection}% + {\begingroup + \let\do\blx@addxref + \dolistcsloop{blx@refs@\the\c@refsection}% + \endgroup + \global\csundef{blx@refs@\the\c@refsection}} + {}% + \iftoggle{blx@addset} + {\blx@addset + \global\togglefalse{blx@addset}} + {}} + +\def\blx@citation#1#2{% + \ifbool{citerequest} + {\ifcsdef{blx@setp@\the\c@refsection @#1} + {\blx@citation@set{#1}{#2}} + {\ifcsdef{blx@setc@\the\c@refsection @#1} + {\blx@citation@inset{#1}{#2}} + {\blx@citation@entry{#1}{#2}}}% + \ifcsdef{blx@refc@\the\c@refsection @#1}% + {\blx@citation@xref{#1}} + {}} + {}} + +\def\blx@citation@xref#1{% + \begingroup + \edef\blx@tempa{blx@refp@\the\c@refsection @% + \csname blx@refc@\the\c@refsection @#1\endcsname}% + \ifcsdef\blx@tempa + {\ifinlistcs{#1}\blx@tempa + {} + {\listcsxadd\blx@tempa{#1}}% + \blx@tempcnta\z@ + \def\do##1{\advance\blx@tempcnta\@ne}% + \dolistcsloop\blx@tempa} + {\listcsxadd\blx@tempa{#1}% + \blx@tempcnta\@ne}% + \expandafter\endgroup\ifnum\blx@tempcnta<\blx@minxrefs\relax + \else + \expandafter\expandafter\expandafter\blx@citation@entry + \expandafter\expandafter\expandafter{% + \csname blx@refc@\the\c@refsection @#1\endcsname}\blx@msg@cundef + \fi} + +% Control file + +\edef\blx@ctrl{% + \blx@msg@bib + @Control\string{biblatex-control,\blx@nl + \space\space options = \string{% + \blx@bblversion:% + \noexpand\iftoggle{blx@debug}{1}{0}:% + \noexpand\iftoggle{blx@bibtex8}{1}{0}:% + \noexpand\iftoggle{blx@sortcase}{1}{0}:% + \noexpand\iftoggle{blx@useprefix}{1}{0}:% + \noexpand\iftoggle{blx@useauthor}{1}{0}:% + \noexpand\iftoggle{blx@useeditor}{1}{0}:% + \noexpand\iftoggle{blx@usetranslator}{1}{0}:% + \noexpand\iftoggle{blx@labelalpha}{1}{0}:% + \noexpand\iftoggle{blx@labeldate}{1}{0}:% + \noexpand\iftoggle{blx@singletitle}{1}{0}:% + \noexpand\csuse{blx@sorting@\noexpand\blx@sorting}:% + \noexpand\blx@maxcitenames:% + \noexpand\blx@mincitenames:% + \noexpand\blx@maxline:% + \noexpand\detokenize\noexpand\expandafter{\noexpand\labelalphaothers}:% + \noexpand\detokenize\noexpand\expandafter{\noexpand\blx@sorting}% + \string},\blx@nl + \string}% +} + +\def\blx@ctrlwrite{% + \immediate\openout\blx@write\blx@ctrlfile\blxauxsuffix.bib\relax + \blx@auxwrite\blx@write{}{\blx@ctrl}% + \immediate\closeout\blx@write} + +% Translate sorting schemes to BibTeX form + +\def\blx@sorting@none{0} +\def\blx@sorting@nty{1} +\def\blx@sorting@nyt{2} +\def\blx@sorting@nyvt{3} +\def\blx@sorting@anyt{12} +\def\blx@sorting@anyvt{13} +\def\blx@sorting@ynt{21} +\def\blx@sorting@ydnt{22} +\def\blx@sorting@debug{99} + +% Disable some interfaces + +\renewrobustcmd*{\DeclareSortingScheme}[3][]{} + +\def\blx@checkencoding{} + +\AtBeginDocument{% + \blx@checkencoding + \if@filesw + \blx@auxinit\blx@bibfiles + \fi} + +\endinput diff --git a/Master/texmf-dist/tex/latex/biblatex/blx-dm.def b/Master/texmf-dist/tex/latex/biblatex/blx-dm.def index d5e65b6fbdb..4312836dd97 100644 --- a/Master/texmf-dist/tex/latex/biblatex/blx-dm.def +++ b/Master/texmf-dist/tex/latex/biblatex/blx-dm.def @@ -65,32 +65,32 @@ \xdef\blx@xml@datamodel@constraintfieldsub#1{% ~~~~~~~~~~<bcf:field>#1</bcf:field>\blx@nl} - % Data model specification macros \newrobustcmd*{\ResetDatamodelEntrytypes}{% - \global\cslet{blx@bcf@datamodel@entrytypes}\@empty - \global\cslet{blx@biber@datamodel@entrytypes}\@empty} + \global\let\blx@bcf@datamodel@entrytypes\@empty + \global\let\blx@datamodel@entrytypes\@empty} \newrobustcmd*{\ResetDatamodelFields}{% - \global\cslet{blx@biber@datamodel@labelfields}\@empty - \global\cslet{blx@bcf@datamodel@fields}\@empty - \global\cslet{blx@biber@datamodel@fields}\@empty - \global\cslet{blx@biber@datamodel@names}\@empty - \global\cslet{blx@biber@datamodel@lists}\@empty} + \global\let\blx@datamodel@labelfields\@empty + \global\let\blx@bcf@datamodel@fields\@empty + \global\let\blx@datamodel@fields\@empty + \global\let\blx@datamodel@names\@empty + \global\let\blx@datamodel@dates\@empty + \global\let\blx@datamodel@lists\@empty} \newrobustcmd*{\ResetDatamodelEntryfields}{% - \global\cslet{blx@bcf@datamodel@entryfields}\@empty} + \global\let\blx@bcf@datamodel@entryfields\@empty} \newrobustcmd*{\ResetDatamodelConstraints}{% - \global\cslet{blx@bcf@datamodel@constraints}\@empty} + \global\letblx@bcf@datamodel@constraints\@empty} \newrobustcmd*{\DeclareDatamodelEntrytypes}[2][]{% \begingroup \let\blx@tempa\@empty \def\do##1{% - \ifinlistcs{##1}{blx@biber@datamodel@entrytypes} + \ifinlistcs{##1}{blx@datamodel@entrytypes} {} - {\listcsgadd{blx@biber@datamodel@entrytypes}{##1}}% + {\listcsgadd{blx@datamodel@entrytypes}{##1}}% \xappto\blx@bcf@datamodel@entrytypes{% \blx@xml@datamodel@entrytype{\blx@tempa}{##1}}}% \ifblank{#1} @@ -106,7 +106,7 @@ \newrobustcmd*{\DeclareDatamodelFields}[2][]{% \begingroup - \let\blx@dm@type\@empty + \let\blx@dm@fieldtype\@empty \let\blx@dm@datatype\@empty \let\blx@dm@format\@empty \boolfalse{dmskipout}% @@ -114,25 +114,47 @@ \let\blx@tempa\@empty \setkeys{blx@datamodel@field}{#1}% \def\do##1{% + % Generic lists of field/datatypes for testing bib fields + \ifinlistcs{##1}{blx@datamodelfields@fieldtypes@\blx@dm@fieldtype} + {} + {\listcsgadd{blx@datamodelfields@fieldtypes@\blx@dm@fieldtype}{##1}}% + \ifinlistcs{##1}{blx@datamodelfields@datatypes@\blx@dm@datatype} + {} + {\listcsgadd{blx@datamodelfields@datatypes@\blx@dm@datatype}{##1}}% + \ifinlistcs{##1}{blx@datamodelfields@types@\blx@dm@fieldtype @\blx@dm@datatype} + {} + {\listcsgadd{blx@datamodelfields@types@\blx@dm@fieldtype @\blx@dm@datatype}{##1}}% + + % Processed convenience lists of various datamodel fields + + % add to list of dates. These are skipout in the default datamodel but + % we want to auto-create some internals/options for all date fields in + % biblatex + \ifboolexpr{% + test {\ifcsstring{blx@dm@datatype}{date}} + and + not test {\ifinlistcs{##1}{blx@datamodel@dates}}} + {\listcsgadd{blx@datamodel@dates}{##1}} + {}% \ifboolexpr{% add to list of label fields not bool {dmskipout} and bool {dmlabelfield} and - not test {\ifinlistcs{##1}{blx@biber@datamodel@labelfields}}} - {\listcsgadd{blx@biber@datamodel@labelfields}{##1}} + not test {\ifinlistcs{##1}{blx@datamodel@labelfields}}} + {\listcsgadd{blx@datamodel@labelfields}{##1}} {}% \ifboolexpr{% add to list of names if it is a name which appears in .bbl not bool {dmskipout} and test {\ifcsstring{blx@dm@datatype}{name}} and - not test {\ifinlistcs{##1}{blx@biber@datamodel@names}}} - {\listcsgadd{blx@biber@datamodel@names}{##1}} + not test {\ifinlistcs{##1}{blx@datamodel@names}}} + {\listcsgadd{blx@datamodel@names}{##1}} {}% \ifboolexpr{% add to list of lists if it is a list which appears in .bbl not bool {dmskipout} - test {\ifcsstring{blx@dm@type}{list}} + test {\ifcsstring{blx@dm@fieldtype}{list}} and ( test {\ifcsstring{blx@dm@datatype}{literal}} or @@ -143,50 +165,85 @@ test {\ifcsstring{blx@dm@datatype}{verbatim}} ) and - not test {\ifinlistcs{##1}{blx@biber@datamodel@lists}}} - {\listcsgadd{blx@biber@datamodel@lists}{##1}} + not test {\ifinlistcs{##1}{blx@datamodel@lists}}} + {\listcsgadd{blx@datamodel@lists}{##1}} {}% \ifboolexpr{% add to list of fields unless certain type/datatype etc. bool {dmskipout} or test {\ifcsstring{blx@dm@datatype}{name}} or - ( test {\ifcsstring{blx@dm@type}{list}} + ( test {\ifcsstring{blx@dm@fieldtype}{list}} and test {\ifcsstring{blx@dm@datatype}{literal}} ) or - ( test {\ifcsstring{blx@dm@type}{list}} + ( test {\ifcsstring{blx@dm@fieldtype}{list}} and test {\ifcsstring{blx@dm@datatype}{key}} ) or - ( test {\ifcsstring{blx@dm@type}{list}} + ( test {\ifcsstring{blx@dm@fieldtype}{list}} and test {\ifcsstring{blx@dm@datatype}{uri}} ) or - ( test {\ifcsstring{blx@dm@type}{list}} + ( test {\ifcsstring{blx@dm@fieldtype}{list}} and test {\ifcsstring{blx@dm@datatype}{verbatim}} ) or - ( test {\ifcsstring{blx@dm@type}{field}} + ( test {\ifcsstring{blx@dm@fieldtype}{field}} and test {\ifcsstring{blx@dm@datatype}{code}} ) or - test {\ifinlistcs{##1}{blx@biber@datamodel@fields}}} + test {\ifinlistcs{##1}{blx@datamodel@fields}}} {} - {\listcsgadd{blx@biber@datamodel@fields}{##1}}% + {\listcsgadd{blx@datamodel@fields}{##1}}% \xappto\blx@bcf@datamodel@fields{% - \blx@xml@datamodel@field{\blx@tempa}{##1}}}% - \docsvlist{#2} - \endgroup} + \blx@xml@datamodel@field{\blx@tempa}{##1}}% + + + % Dateparts are special - auto-create for all date fields + \ifcsstring{blx@dm@datatype}{date} + {\begingroup + \let\blx@tempa\@empty% reset setkeys buffer due to manual calls below + % add to list of dates. These are skipout in the default datamodel but + % we want to auto-create some internals/options for all date fields in + % biblatex + \ifinlistcs{##1}{blx@datamodel@dates} + {} + {\listcsgadd{blx@datamodel@dates}{##1}}% + \ifinlistcs{##1}{blx@datamodel@fields} + {} + {\listcsgadd{blx@datamodel@fields}{##1}}% + \StrCut{##1}{date}\blx@datetype\blx@tempnull + % *endyear + \xifinlistcs{\blx@datetype endyear}{blx@datamodel@fields} + {} + {\listcsxadd{blx@datamodel@fields}{\blx@datetype endyear}}% + \setkeys{blx@datamodel@field}{type=field,datatype=datepart,nullok}% + \xappto\blx@bcf@datamodel@fields{% + \blx@xml@datamodel@field{\blx@tempa}{\blx@datetype endyear}}% + % *year, *month, *day, *endmonth, *endday + \def\do####1{% + \let\blx@tempa\@empty% reset setkeys buffer due to loop calls + \xifinlistcs{\blx@datetype ####1}{blx@datamodel@fields} + {} + {\listcsxadd{blx@datamodel@fields}{\blx@datetype ####1}}% + \setkeys{blx@datamodel@field}{type=field,datatype=datepart}% + \xappto\blx@bcf@datamodel@fields{% + \blx@xml@datamodel@field{\blx@tempa}{\blx@datetype ####1}}}% + \docsvlist{year,month,day,endmonth,endday}% + \endgroup} + {}}% + \docsvlist{#2} + \endgroup} \define@key{blx@datamodel@field}{type}{% characters \eappto\blx@tempa{ fieldtype="#1"}% - \def\blx@dm@type{#1}} + \def\blx@dm@fieldtype{#1}} \define@key{blx@datamodel@field}{datatype}{% characters \eappto\blx@tempa{ datatype="#1"}% \def\blx@dm@datatype{#1}} @@ -354,6 +411,7 @@ music, mvcollection, mvreference, + mvproceedings, mvbook, online, patent, @@ -374,28 +432,6 @@ \DeclareDatamodelEntrytypes[skipout]{xdata} -\DeclareDatamodelFields[type=field, datatype=datepart]{ - month, - year, - day, - endday, - endmonth, - eventday, - eventendday, - eventendmonth, - eventmonth, - eventyear, - origday, - origendday, - origendmonth, - origmonth, - origyear, - urlday, - urlendday, - urlendmonth, - urlmonth, - urlyear} - \DeclareDatamodelFields[type=field, datatype=literal]{ abstract, addendum, @@ -464,12 +500,6 @@ shortseries, shorttitle} -\DeclareDatamodelFields[type=field, datatype=datepart, nullok]{ - urlendyear, - endyear, - eventendyear, - origendyear} - \DeclareDatamodelFields[type=field, datatype=literal, skipout]{ sorttitle, sortshorthand, @@ -653,6 +683,7 @@ editora, editorb, editorc, + editortype, editoratype, editorbtype, editorctype, @@ -707,6 +738,7 @@ editora, editorb, editorc, + editortype, editoratype, editorbtype, editorctype, @@ -762,6 +794,7 @@ editora, editorb, editorc, + editortype, editoratype, editorbtype, editorctype, @@ -817,6 +850,7 @@ editora, editorb, editorc, + editortype, editoratype, editorbtype, editorctype, @@ -855,6 +889,7 @@ \DeclareDatamodelEntryfields[booklet]{ author, editor, + editortype, title, day, endday, @@ -905,6 +940,7 @@ editora, editorb, editorc, + editortype, editoratype, editorbtype, editorctype, @@ -960,6 +996,7 @@ editora, editorb, editorc, + editortype, editoratype, editorbtype, editorctype, @@ -1012,6 +1049,7 @@ editora, editorb, editorc, + editortype, editoratype, editorbtype, editorctype, @@ -1061,6 +1099,7 @@ doi, edition, editor, + editortype, eprint, eprintclass, eprinttype, @@ -1103,6 +1142,7 @@ author, doi, editor, + editortype, eprint, eprintclass, eprinttype, @@ -1130,6 +1170,7 @@ addendum, author, editor, + editortype, language, month, note, @@ -1191,6 +1232,7 @@ editora, editorb, editorc, + editortype, editoratype, editorbtype, editorctype, @@ -1218,6 +1260,7 @@ \DeclareDatamodelEntryfields[mvproceedings]{ editor, + editortype, title, day, endday, @@ -1262,6 +1305,7 @@ \DeclareDatamodelEntryfields[proceedings]{ editor, + editortype, title, day, endday, @@ -1314,6 +1358,7 @@ \DeclareDatamodelEntryfields[inproceedings]{ author, editor, + editortype, title, booktitle, day, diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/alphabetic-verb.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/alphabetic-verb.cbx index be019d10e5f..26625b06fb7 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/alphabetic-verb.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/alphabetic-verb.cbx @@ -7,7 +7,7 @@ \newbibmacro*{cite}{% \printtext[bibhyperref]{% - \printfield{prefixnumber}% + \printfield{labelprefix}% \printfield{labelalpha}% \printfield{extraalpha}}} @@ -15,7 +15,7 @@ \ifnameundef{labelname} {\printfield[citetitle]{labeltitle}} {\printnames{labelname}}% - \addspace\bibopenbracket + \printdelim{namelabeldelim}\bibopenbracket \ifnumequal{\value{citecount}}{1} {\usebibmacro{prenote}} {}% diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/alphabetic.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/alphabetic.cbx index d232ebfebc8..1e114d1bb81 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/alphabetic.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/alphabetic.cbx @@ -10,7 +10,7 @@ \newbibmacro*{cite}{% \printtext[bibhyperref]{% - \printfield{prefixnumber}% + \printfield{labelprefix}% \printfield{labelalpha}% \printfield{extraalpha}}} @@ -22,7 +22,7 @@ {\printnames{labelname}}% \setunit{% \global\booltrue{cbx:parens}% - \addspace\bibopenbracket}% + \printdelim{namelabeldelim}\bibopenbracket}% \stepcounter{textcitecount}% \savefield{namehash}{\cbx@lasthash}}% \ifnumequal{\value{citecount}}{1} diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-comp.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-comp.cbx index d5e5183de32..bbc4229864f 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-comp.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-comp.cbx @@ -28,7 +28,7 @@ {\ifnameundef{labelname} {} {\printnames{labelname}% - \setunit{\nametitledelim}}% + \setunit{\printdelim{nametitledelim}}}% \savefield{namehash}{\cbx@lasthash}}% \usebibmacro{cite:title}} {\usebibmacro{cite:shorthand}% @@ -49,7 +49,7 @@ {\printnames{labelname}% \setunit{% \global\booltrue{cbx:parens}% - \nametitledelim\bibopenparen}}% + \printdelim{nametitledelim}\bibopenparen}}% \stepcounter{textcitecount}% \savefield{namehash}{\cbx@lasthash}}% \ifnumequal{\value{citecount}}{1} diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-ibid.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-ibid.cbx index 2f7c68df495..3b6618314b9 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-ibid.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-ibid.cbx @@ -23,7 +23,7 @@ {\ifnameundef{labelname} {} {\printnames{labelname}% - \setunit{\nametitledelim}}% + \setunit{\printdelim{nametitledelim}}}% \usebibmacro{cite:title}}}% {\usebibmacro{cite:shorthand}}} @@ -42,7 +42,7 @@ {\printnames{labelname}% \setunit{% \global\booltrue{cbx:parens}% - \nametitledelim\bibopenparen}}% + \printdelim{nametitledelim}\bibopenparen}}% \ifnumequal{\value{citecount}}{1} {\usebibmacro{prenote}} {}% diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-icomp.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-icomp.cbx index 9d248a215eb..f8f2f7e5371 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-icomp.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-icomp.cbx @@ -39,7 +39,7 @@ {\ifnameundef{labelname} {} {\printnames{labelname}% - \setunit{\nametitledelim}}% + \setunit{\printdelim{nametitledelim}}}% \savefield{namehash}{\cbx@lasthash}}% \usebibmacro{cite:title}}}% {\usebibmacro{cite:shorthand}% @@ -62,7 +62,7 @@ {\printnames{labelname}% \setunit{% \global\booltrue{cbx:parens}% - \nametitledelim\bibopenparen}}% + \printdelim{nametitledelim}\bibopenparen}}% \stepcounter{textcitecount}% \savefield{namehash}{\cbx@lasthash}}% \ifnumequal{\value{citecount}}{1} diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-tcomp.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-tcomp.cbx index c0e8a1fe57c..85cce7eedcd 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-tcomp.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-tcomp.cbx @@ -17,7 +17,7 @@ {\ifsingletitle {\printtext[bibhyperref]{\printnames{labelname}}} {\printnames{labelname}% - \setunit{\nametitledelim}% + \setunit{\printdelim{nametitledelim}}% \usebibmacro{cite:title}}}% \savefield{namehash}{\cbx@lasthash}}} {\usebibmacro{cite:shorthand}% @@ -53,7 +53,7 @@ {\printnames{labelname} \setunit{% \global\booltrue{cbx:parens}% - \nametitledelim\bibopenparen}% + \printdelim{nametitledelim}\bibopenparen}% \ifnumequal{\value{citecount}}{1} {\usebibmacro{prenote}} {}% diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-terse.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-terse.cbx index a0f7fef85ac..d83c432fd56 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-terse.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-terse.cbx @@ -11,7 +11,7 @@ {\ifsingletitle {\printtext[bibhyperref]{\printnames{labelname}}} {\printnames{labelname}% - \setunit{\nametitledelim}% + \setunit{\printdelim{nametitledelim}}% \usebibmacro{cite:title}}}}% {\usebibmacro{cite:shorthand}}} @@ -29,7 +29,7 @@ {\printnames{labelname}% \setunit{% \global\booltrue{cbx:parens}% - \nametitledelim\bibopenparen}% + \printdelim{nametitledelim}\bibopenparen}% \ifnumequal{\value{citecount}}{1} {\usebibmacro{prenote}} {}% diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-ticomp.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-ticomp.cbx index e485f4fadd9..54f10d6baaf 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-ticomp.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-ticomp.cbx @@ -19,7 +19,7 @@ {\ifsingletitle {\printtext[bibhyperref]{\printnames{labelname}}} {\printnames{labelname}% - \setunit{\nametitledelim}% + \setunit{\printdelim{nametitledelim}}% \usebibmacro{cite:title}}}% \savefield{namehash}{\cbx@lasthash}}}} {\usebibmacro{cite:shorthand}% @@ -61,7 +61,7 @@ {\printnames{labelname} \setunit{% \global\booltrue{cbx:parens}% - \nametitledelim\bibopenparen}% + \printdelim{nametitledelim}\bibopenparen}% \ifnumequal{\value{citecount}}{1} {\usebibmacro{prenote}} {}% diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle.cbx index aff0a63a496..8d52c873f3a 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle.cbx @@ -12,7 +12,7 @@ {\ifnameundef{labelname} {} {\printnames{labelname}% - \setunit{\nametitledelim}}% + \setunit{\printdelim{nametitledelim}}}% \usebibmacro{cite:title}}% {\usebibmacro{cite:shorthand}}} @@ -27,7 +27,7 @@ {\printnames{labelname}% \setunit{% \global\booltrue{cbx:parens}% - \nametitledelim\bibopenparen}}% + \printdelim{nametitledelim}\bibopenparen}}% \ifnumequal{\value{citecount}}{1} {\usebibmacro{prenote}} {}% diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/authoryear-comp.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/authoryear-comp.cbx index 966e516fafa..a7774c5faa0 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/authoryear-comp.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/authoryear-comp.cbx @@ -27,7 +27,7 @@ \iffieldundef{shorthand} {\ifthenelse{\ifnameundef{labelname}\OR\iffieldundef{labelyear}} {\usebibmacro{cite:label}% - \setunit{\nonameyeardelim}% + \setunit{\printdelim{nonameyeardelim}}% \usebibmacro{cite:labelyear+extrayear}% \usebibmacro{cite:reinit}} {\iffieldequals{namehash}{\cbx@lasthash} @@ -39,7 +39,7 @@ \usebibmacro{cite:labelyear+extrayear}% \savefield{labelyear}{\cbx@lastyear}}} {\printnames{labelname}% - \setunit{\nameyeardelim}% + \setunit{\printdelim{nameyeardelim}}% \usebibmacro{cite:labelyear+extrayear}% \savefield{namehash}{\cbx@lasthash}% \savefield{labelyear}{\cbx@lastyear}}}} @@ -85,7 +85,7 @@ {\usebibmacro{cite:label}% \setunit{% \global\booltrue{cbx:parens}% - \nonameyeardelim\bibopenparen}% + \printdelim{nonameyeardelim}\bibopenparen}% \ifnumequal{\value{citecount}}{1} {\usebibmacro{prenote}} {}% @@ -94,7 +94,7 @@ {\printnames{labelname}% \setunit{% \global\booltrue{cbx:parens}% - \nameyeardelim\bibopenparen}% + \printdelim{nameyeardelim}\bibopenparen}% \ifnumequal{\value{citecount}}{1} {\usebibmacro{prenote}} {}% diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/authoryear-ibid.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/authoryear-ibid.cbx index bf8cc731263..96ffba35fba 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/authoryear-ibid.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/authoryear-ibid.cbx @@ -22,9 +22,9 @@ {\usebibmacro{cite:ibid}} {\ifthenelse{\ifnameundef{labelname}\OR\iffieldundef{labelyear}} {\usebibmacro{cite:label}% - \setunit{\nonameyeardelim}} + \setunit{\printdelim{nonameyeardelim}}} {\printnames{labelname}% - \setunit{\nameyeardelim}}% + \setunit{\printdelim{nameyeardelim}}}% \usebibmacro{cite:labelyear+extrayear}}} {\usebibmacro{cite:shorthand}}} @@ -45,7 +45,7 @@ {\usebibmacro{cite:label}% \setunit{% \global\booltrue{cbx:parens}% - \nonameyeardelim\bibopenparen}% + \printdelim{nonameyeardelim}\bibopenparen}% \ifnumequal{\value{citecount}}{1} {\usebibmacro{prenote}} {}% @@ -54,7 +54,7 @@ {\printnames{labelname}% \setunit{% \global\booltrue{cbx:parens}% - \nameyeardelim\bibopenparen}% + \printdelim{nameyeardelim}\bibopenparen}% \ifnumequal{\value{citecount}}{1} {\usebibmacro{prenote}} {}% diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/authoryear-icomp.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/authoryear-icomp.cbx index d662299bcb0..6481a00ae92 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/authoryear-icomp.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/authoryear-icomp.cbx @@ -37,7 +37,7 @@ {\usebibmacro{cite:ibid}} {\ifthenelse{\ifnameundef{labelname}\OR\iffieldundef{labelyear}} {\usebibmacro{cite:label}% - \setunit{\nonameyeardelim}% + \setunit{\printdelim{nonameyeardelim}}% \usebibmacro{cite:labelyear+extrayear}% \usebibmacro{cite:reinit}} {\iffieldequals{namehash}{\cbx@lasthash} @@ -49,7 +49,7 @@ \usebibmacro{cite:labelyear+extrayear}% \savefield{labelyear}{\cbx@lastyear}}} {\printnames{labelname}% - \setunit{\nameyeardelim}% + \setunit{\printdelim{nameyeardelim}}% \usebibmacro{cite:labelyear+extrayear}% \savefield{namehash}{\cbx@lasthash}% \savefield{labelyear}{\cbx@lastyear}}}}} @@ -97,7 +97,7 @@ {\usebibmacro{cite:label}% \setunit{% \global\booltrue{cbx:parens}% - \nonameyeardelim\bibopenparen}% + \printdelim{nonameyeardelim}\bibopenparen}% \ifnumequal{\value{citecount}}{1} {\usebibmacro{prenote}} {}% @@ -108,7 +108,7 @@ {\printnames{labelname}% \setunit{% \global\booltrue{cbx:parens}% - \nameyeardelim\bibopenparen}% + \printdelim{nameyeardelim}\bibopenparen}% \ifnumequal{\value{citecount}}{1} {\usebibmacro{prenote}} {}% diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/authoryear.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/authoryear.cbx index c36c9729b8a..949a35be915 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/authoryear.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/authoryear.cbx @@ -11,9 +11,9 @@ \iffieldundef{shorthand} {\ifthenelse{\ifnameundef{labelname}\OR\iffieldundef{labelyear}} {\usebibmacro{cite:label}% - \setunit{\nonameyeardelim}} + \setunit{\printdelim{nonameyeardelim}}} {\printnames{labelname}% - \setunit{\nameyeardelim}}% + \setunit{\printdelim{nameyeardelim}}}% \usebibmacro{cite:labelyear+extrayear}} {\usebibmacro{cite:shorthand}}} @@ -30,7 +30,7 @@ {\usebibmacro{cite:label}% \setunit{% \global\booltrue{cbx:parens}% - \nonameyeardelim\bibopenparen}% + \printdelim{nonameyeardelim}\bibopenparen}% \ifnumequal{\value{citecount}}{1} {\usebibmacro{prenote}} {}% @@ -39,7 +39,7 @@ {\printnames{labelname}% \setunit{% \global\booltrue{cbx:parens}% - \nameyeardelim\bibopenparen}% + \printdelim{nameyeardelim}\bibopenparen}% \ifnumequal{\value{citecount}}{1} {\usebibmacro{prenote}} {}% diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/numeric-comp.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/numeric-comp.cbx index d1ecbd63e9c..0f8942fa118 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/numeric-comp.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/numeric-comp.cbx @@ -35,9 +35,9 @@ \newbibmacro*{cite:comp:comp}{% \ifboolexpr{ - ( test {\iffieldundef{prefixnumber}} and test {\ifundef\cbx@lastprefix} ) + ( test {\iffieldundef{labelprefix}} and test {\ifundef\cbx@lastprefix} ) or - test {\iffieldequals{prefixnumber}{\cbx@lastprefix}} + test {\iffieldequals{labelprefix}{\cbx@lastprefix}} } {\ifnumequal{\thefield{labelnumber}}{\value{cbx@tempcntb}} {\savefield{entrykey}{\cbx@lastkey}% @@ -50,11 +50,11 @@ {\multicitedelim} {}% \printtext[bibhyperref]{% - \printfield{prefixnumber}% + \printfield{labelprefix}% \printfield{labelnumber}}}}} {\usebibmacro{cite:comp:end}}% \setcounter{cbx@tempcntb}{\thefield{labelnumber}}% - \savefield{prefixnumber}{\cbx@lastprefix}} + \savefield{labelprefix}{\cbx@lastprefix}} \newbibmacro*{cite:comp:end}{% \usebibmacro{cite:dump}% @@ -62,7 +62,7 @@ {\multicitedelim} {}% \printtext[bibhyperref]{% - \printfield{prefixnumber}% + \printfield{labelprefix}% \printfield{labelnumber}}} \newbibmacro*{cite:comp:inset}{% @@ -71,7 +71,7 @@ {\multicitedelim} {}% \printtext[bibhyperref]{% - \printfield{prefixnumber}% + \printfield{labelprefix}% \printfield{labelnumber}% \printfield{entrysetcount}}% \setcounter{cbx@tempcntb}{-1}} @@ -91,7 +91,7 @@ {\multicitedelim}% \bibhyperref[\cbx@lastkey]{% \ifdef\cbx@lastprefix - {\printtext[prefixnumber]{\cbx@lastprefix}} + {\printtext[labelprefix]{\cbx@lastprefix}} {}% \printtext[labelnumber]{\cbx@lastnumber}}} {}% @@ -113,7 +113,7 @@ {\printfield[citetitle]{labeltitle}} {\printnames{labelname}}% \global\booltrue{cbx:parens}% - \addspace\bibopenbracket% + \printdelim{namelabeldelim}\bibopenbracket% \ifnumequal{\value{citecount}}{1} {\usebibmacro{prenote}} {}% diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/numeric-verb.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/numeric-verb.cbx index 065f2ad2c7c..e64e19e810f 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/numeric-verb.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/numeric-verb.cbx @@ -12,7 +12,7 @@ \newbibmacro*{cite}{% \printtext[bibhyperref]{% - \printfield{prefixnumber}% + \printfield{labelprefix}% \printfield{labelnumber}% \ifbool{bbx:subentry} {\printfield{entrysetcount}} @@ -22,7 +22,7 @@ \ifnameundef{labelname} {\printfield[citetitle]{labeltitle}} {\printnames{labelname}}% - \addspace\bibopenbracket + \printdelim{namelabeldelim}\bibopenbracket \ifnumequal{\value{citecount}}{1} {\usebibmacro{prenote}} {}% diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/numeric.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/numeric.cbx index 67af09ca407..5c6fa4b1009 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/numeric.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/numeric.cbx @@ -14,7 +14,7 @@ \newbibmacro*{cite}{% \printtext[bibhyperref]{% - \printfield{prefixnumber}% + \printfield{labelprefix}% \printfield{labelnumber}% \ifbool{bbx:subentry} {\printfield{entrysetcount}} @@ -28,7 +28,7 @@ {\printnames{labelname}}% \setunit{% \global\booltrue{cbx:parens}% - \addspace\bibopenbracket}% + \printdelim{namelabeldelim}\bibopenbracket}% \stepcounter{textcitecount}% \savefield{namehash}{\cbx@lasthash}}% \ifnumequal{\value{citecount}}{1} diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-ibid.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-ibid.cbx index 846a0f75f38..d4a45642373 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-ibid.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-ibid.cbx @@ -119,7 +119,7 @@ \newbibmacro*{cite:short}{% \printnames{labelname}% - \setunit*{\nametitledelim}% + \setunit*{\printdelim{nametitledelim}}% \printtext[bibhyperlink]{% \printfield[citetitle]{labeltitle}}} diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-inote.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-inote.cbx index df81985a88b..d4fc145459d 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-inote.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-inote.cbx @@ -120,7 +120,7 @@ \newbibmacro*{cite:short}{% \printnames{labelname}% - \setunit*{\nametitledelim}% + \setunit*{\printdelim{nametitledelim}}% \printtext[bibhyperlink]{% \printfield[citetitle]{labeltitle}}} @@ -168,7 +168,7 @@ {\printnames{labelname}}% \ifsingletitle {} - {\setunit*{\nametitledelim}% + {\setunit*{\printdelim{nametitledelim}}% \printfield[title]{labeltitle}}% \setunit*{\addcomma\space}% \printtext{% diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-note.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-note.cbx index b22c4da3cb9..de06094186f 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-note.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-note.cbx @@ -111,7 +111,7 @@ \newbibmacro*{cite:short}{% \printnames{labelname}% - \setunit*{\nametitledelim}% + \setunit*{\printdelim{nametitledelim}}% \printtext[bibhyperlink]{% \printfield[citetitle]{labeltitle}}} @@ -145,7 +145,7 @@ {\printnames{labelname}}% \ifsingletitle {} - {\setunit*{\nametitledelim}% + {\setunit*{\printdelim{nametitledelim}}% \printfield[title]{labeltitle}}% \setunit*{\addcomma\space}% \printtext{% diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-trad1.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-trad1.cbx index b1729fe0d91..fe450f85e38 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-trad1.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-trad1.cbx @@ -134,11 +134,11 @@ \newbibmacro*{cite:name}{% \printnames{labelname}% - \setunit*{\nametitledelim}} + \setunit*{\printdelim{nametitledelim}}} \newbibmacro*{cite:idem}{% \bibstring[\mkibid]{idem\thefield{gender}}% - \setunit{\nametitledelim}} + \setunit{\printdelim{nametitledelim}}} \newbibmacro*{cite:title}{% \printtext[bibhyperlink]{% diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-trad2.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-trad2.cbx index 6cdd7b1cde3..acf463877aa 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-trad2.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-trad2.cbx @@ -135,16 +135,16 @@ \newbibmacro*{cite:name}{% \printnames{labelname}% - \setunit*{\nametitledelim}} + \setunit*{\printdelim{nametitledelim}}} \newbibmacro*{cite:idem}{% \bibstring[\mkibid]{idem\thefield{gender}}% - \setunit{\nametitledelim}} + \setunit{\printdelim{nametitledelim}}} \newbibmacro*{cite:title}{% \printtext[bibhyperlink]{% \printfield[citetitle]{labeltitle}% - \setunit{\nametitledelim}% + \setunit{\printdelim{nametitledelim}}% \bibstring[\mkibid]{opcit}}} \newbibmacro*{cite:ibid}{% diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-trad3.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-trad3.cbx index 5ef371196da..54e2b3aecfa 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-trad3.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-trad3.cbx @@ -115,13 +115,13 @@ \newbibmacro*{cite:short}{% \printnames{labelname}% - \setunit*{\nametitledelim}% + \setunit*{\printdelim{nametitledelim}}% \printtext[bibhyperlink]{% \printfield[citetitle]{labeltitle}}} \newbibmacro*{cite:opcit}{% \printnames{labelname}% - \setunit*{\nametitledelim}% + \setunit*{\printdelim{nametitledelim}}% \printtext[bibhyperlink]{% \bibstring[\mkibid]{opcit}}} diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/verbose.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/verbose.cbx index f373895c82a..e798dec1839 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/verbose.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/verbose.cbx @@ -100,7 +100,7 @@ \newbibmacro*{cite:short}{% \printnames{labelname}% - \setunit*{\nametitledelim}% + \setunit*{\printdelim{nametitledelim}}% \printtext[bibhyperlink]{% \printfield[citetitle]{labeltitle}}} diff --git a/Master/texmf-dist/tex/latex/biblatex/lbx/catalan.lbx b/Master/texmf-dist/tex/latex/biblatex/lbx/catalan.lbx index dc87d06d0f1..9b116925185 100644 --- a/Master/texmf-dist/tex/latex/biblatex/lbx/catalan.lbx +++ b/Master/texmf-dist/tex/latex/biblatex/lbx/catalan.lbx @@ -77,175 +77,175 @@ references = {{Refer\`encies}{Refer\`encies}}, shorthands = {{Llista d'abreviatures}{Abreviatures}}, editor = {{editor}{ed\adddot}}, - editors = {{editors}{eds\adddot}}, + editors = {{editors}{ed\adddot}}, compiler = {{compilador}{comp\adddot}},% Revisar - compilers = {{compiladors}{comps\adddot}},% Revisar + compilers = {{compiladors}{comp\adddot}},% Revisar redactor = {{redactor}{red\adddot}}, - redactors = {{redactors}{reds\adddot}}, + redactors = {{redactors}{red\adddot}}, reviser = {{revisor}{rev\adddot}}, - revisers = {{revisors}{revs\adddot}}, + revisers = {{revisors}{rev\adddot}}, founder = {{fundador}{fund\adddot}}, - founders = {{fundadors}{funds\adddot}}, + founders = {{fundadors}{fund\adddot}}, continuator = {{continuador}{cont\adddot}}, - continuators = {{continuadors}{conts\adddot}}, + continuators = {{continuadors}{cont\adddot}}, collaborator = {{co\l.laborador}{co\l.l\adddot}},% \l* -> catalan.ldf (babel) - collaborators = {{co\l.laboradors}{co\l.ls\adddot}}, + collaborators = {{co\l.laboradors}{co\l.l\adddot}}, translator = {{traductor}{trad\adddot}}, - translators = {{traductors}{trads\adddot}}, + translators = {{traductors}{trad\adddot}}, commentator = {{comentarista}{com\adddot}}, - commentators = {{comentaristes}{coms\adddot}}, + commentators = {{comentaristes}{com\adddot}}, annotator = {{anotador}{anot\adddot}}, - annotators = {{anotadors}{anots\adddot}}, + annotators = {{anotadors}{anot\adddot}}, commentary = {{comentari}{com\adddot}}, annotations = {{notes}{n\adddot}}, introduction = {{introducci\'o}{intr\adddot}}, foreword = {{pr\`oleg}{pr\`ol\adddot}}, afterword = {{ep{\'\i}leg}{ep\adddot}}, editortr = {{editor i traductor}{ed\adddotspace i trad\adddot}}, - editorstr = {{editors i traductors}{eds\adddotspace i trads\adddot}}, + editorstr = {{editors i traductors}{ed\adddotspace i trad\adddot}}, editorco = {{editor i comentarista}{ed\adddotspace i com\adddot}}, - editorsco = {{editors i comentaristes}{eds\adddotspace i coms\adddot}}, + editorsco = {{editors i comentaristes}{ed\adddotspace i com\adddot}}, editoran = {{editor i anotador}{ed\adddotspace i anot\adddot}}, - editorsan = {{editors i anotadors}{eds\adddotspace i anots\adddot}}, + editorsan = {{editors i anotadors}{ed\adddotspace i anot\adddot}}, editorin = {{editor i autor de la introducci\'o} {ed\adddotspace i aut\adddotspace de la intr\adddot}}, editorsin = {{editors i autors de la introducci\'o} - {eds\adddotspace i auts\adddotspace de la intr\adddot}}, + {ed\adddotspace i aut\adddotspace de la intr\adddot}}, editorfo = {{editor i autor del pr\`oleg} {ed\adddotspace i aut\adddotspace del pr\`ol\adddot}}, editorsfo = {{editors i autors del pr\`oleg} - {eds\adddotspace i auts\adddotspace del pr\`ol\adddot}}, + {ed\adddotspace i aut\adddotspace del pr\`ol\adddot}}, editoraf = {{editor i autor de l'ep{\'\i}leg} % {ed\adddotspace i aut\adddotspace de l'ep\adddot}}, editorsaf = {{editors i autors de l'ep{\'\i}leg} % - {eds\adddotspace i auts\adddotspace de l'ep\adddot}}, + {ed\adddotspace i aut\adddotspace de l'ep\adddot}}, editortrco = {{editor, traductor i comentarista} {ed.,\addabbrvspace trad\adddotspace i com\adddot}}, editorstrco = {{editors, traductors i comentaristes} - {eds.,\addabbrvspace trads\adddotspace i coms\adddot}}, + {ed.,\addabbrvspace trad\adddotspace i com\adddot}}, editortran = {{editor, traductor i anotador} {ed.,\addabbrvspace trad\adddotspace i anot\adddot}}, editorstran = {{editors, traductors i anotadors} - {eds.,\addabbrvspace trads\adddotspace i anots\adddot}}, + {ed.,\addabbrvspace trad\adddotspace i anot\adddot}}, editortrin = {{editor, traductor i autor de la introducci\'o} {ed.,\addabbrvspace trad\adddotspace i aut\adddotspace de la intr\adddot}}, editorstrin = {{editors, traductors i autors de la introducci\'o} - {eds.,\addabbrvspace trads\adddotspace i auts\adddotspace de la intr\adddot}}, + {ed.,\addabbrvspace trad\adddotspace i aut\adddotspace de la intr\adddot}}, editortrfo = {{editor, traductor i autor del pr\`oleg} {ed.,\addabbrvspace trad\adddotspace i aut\adddotspace del pr\`ol\adddot}}, editorstrfo = {{editors, traductors i autors del pr\`oleg} - {eds.,\addabbrvspace trads\adddotspace i auts\adddotspace del pr\`ol\adddot}}, + {ed.,\addabbrvspace trad\adddotspace i aut\adddotspace del pr\`ol\adddot}}, editortraf = {{editor, traductor i autor de l'ep{\'\i}leg} {ed.,\addabbrvspace trad\adddotspace i aut\adddotspace de l'ep\adddot}}, editorstraf = {{editors, traductors i autors de l'ep{\'\i}leg} - {eds.,\addabbrvspace trads\adddotspace i auts\adddotspace de l'ep\adddot}}, + {ed.,\addabbrvspace trad\adddotspace i aut\adddotspace de l'ep\adddot}}, editorcoin = {{editor, comentarista i autor de la introducci\'o} {ed.,\addabbrvspace com\adddotspace i aut\adddotspace de la intr\adddot}}, editorscoin = {{editors, comentaristes i autors de la introducci\'o} - {eds.,\addabbrvspace coms\adddotspace i auts\adddotspace de la intr\adddot}}, + {ed.,\addabbrvspace com\adddotspace i aut\adddotspace de la intr\adddot}}, editorcofo = {{editor, comentarista i autor del pr\`oleg} {ed.,\addabbrvspace com\adddotspace i aut\adddotspace del pr\`ol\adddot}}, editorscofo = {{editors, comentaristes i autors del pr\`oleg} - {eds.,\addabbrvspace coms\adddotspace i auts\adddotspace del pr\`ol\adddot}}, + {ed.,\addabbrvspace com\adddotspace i aut\adddotspace del pr\`ol\adddot}}, editorcoaf = {{editor, comentarista i autor de l'ep{\'\i}leg} {ed.,\addabbrvspace com\adddotspace i aut\adddotspace de l'ep\adddot}}, editorscoaf = {{editors, comentaristes i autors de l'ep{\'\i}leg} - {eds.,\addabbrvspace coms\adddotspace i auts\adddotspace de l'ep\adddot}}, + {ed.,\addabbrvspace com\adddotspace i aut\adddotspace de l'ep\adddot}}, editoranin = {{editor, anotador i autor de la introducci\'o} {ed.,\addabbrvspace anot\adddotspace i aut\adddotspace de la intr\adddot}}, editorsanin = {{editors, anotadors i autors de la introducci\'o} - {eds.,\addabbrvspace anots\adddotspace i auts\adddotspace de la intr\adddot}}, + {ed.,\addabbrvspace anot\adddotspace i aut\adddotspace de la intr\adddot}}, editoranfo = {{editor, anotador i autor del pr\`oleg} {ed.,\addabbrvspace anot\adddotspace i aut\adddotspace del pr\`ol\adddot}}, editorsanfo = {{editors, anotadors i autors del pr\`oleg} - {eds.,\addabbrvspace anots\adddotspace i auts\adddotspace del pr\`ol\adddot}}, + {ed.,\addabbrvspace anot\adddotspace i aut\adddotspace del pr\`ol\adddot}}, editoranaf = {{editor, anotador i autor de l'ep{\'\i}leg} {ed.,\addabbrvspace anot\adddotspace i aut\adddotspace de l'ep\adddot}}, editorsanaf = {{editors, anotadors i autors de l'ep{\'\i}leg} - {eds.,\addabbrvspace anots\adddotspace i auts\adddotspace de l'ep\adddot}}, + {ed.,\addabbrvspace anot\adddotspace i aut\adddotspace de l'ep\adddot}}, editortrcoin = {{editor, traductor, comentarista i autor de la introducci\'o} {ed.,\addabbrvspace trad.,\addabbrvspace com\adddotspace i aut\adddotspace de la intr\adddot}}, editorstrcoin = {{editors, traductors, comentaristes i autors de la introducci\'o} - {eds.,\addabbrvspace trads.,\addabbrvspace coms\adddotspace i aut\adddotspace de la intr\adddot}}, + {ed.,\addabbrvspace trad.,\addabbrvspace com\adddotspace i aut\adddotspace de la intr\adddot}}, editortrcofo = {{editor, traductor, comentarista i autor del pr\`oleg} {ed.,\addabbrvspace trad.,\addabbrvspace com\adddotspace i aut\adddotspace del pr\`ol\adddot }}, editorstrcofo = {{editors, traductors, comentaristes i autors del pr\`oleg} - {eds.,\addabbrvspace trads.,\addabbrvspace coms\adddotspace i auts\adddotspace del pr\`ol\adddot }}, + {ed.,\addabbrvspace trad.,\addabbrvspace com\adddotspace i aut\adddotspace del pr\`ol\adddot }}, editortrcoaf = {{editor, traductor, comentarista i autor de l'ep{\'\i}leg} {ed.,\addabbrvspace trad.,\addabbrvspace com\adddotspace i aut\adddotspace de l'ep\adddot}}, editorstrcoaf = {{editors, traductors, comentaristes i autors de l'ep{\'\i}leg} - {eds.,\addabbrvspace trads.,\addabbrvspace coms\adddotspace i auts\adddotspace de l'ep\adddot}}, + {ed.,\addabbrvspace trad.,\addabbrvspace com\adddotspace i aut\adddotspace de l'ep\adddot}}, editortranin = {{editor, traductor, anotador i autor de la introducci\'o} {ed.,\addabbrvspace trad.,\addabbrvspace anot\adddotspace i aut\adddotspace de la intr\adddot}}, editorstranin = {{editors, traductors, anotadors i autors de la introducci\'o} - {eds.,\addabbrvspace trads.,\addabbrvspace anots\adddotspace i auts\adddotspace de la intr\adddot}}, + {ed.,\addabbrvspace trad.,\addabbrvspace anot\adddotspace i aut\adddotspace de la intr\adddot}}, editortranfo = {{editor, traductor, anotador i autor del pr\`oleg} {ed.,\addabbrvspace trad.,\addabbrvspace anot\adddotspace i aut\adddotspace de pr\`ol\adddot}}, editorstranfo = {{editors, traductors, anotadors i autors del pr\`oleg} - {eds.,\addabbrvspace trads.,\addabbrvspace anots\adddotspace i auts\adddotspace de pr\`ol\adddot}}, + {ed.,\addabbrvspace trad.,\addabbrvspace anot\adddotspace i aut\adddotspace de pr\`ol\adddot}}, editortranaf = {{editor, traductor, anotador i autor de l'ep{\'\i}leg} {ed.,\addabbrvspace trad.,\addabbrvspace anot\adddotspace i aut\adddotspace de l'ep\adddot}}, editorstranaf = {{editors, traductors, anotadors i autors de l'ep{\'\i}leg} - {eds.,\addabbrvspace trads.,\addabbrvspace anots\adddotspace i auts\adddotspace de l'ep\adddot}}, + {ed.,\addabbrvspace trad.,\addabbrvspace anot\adddotspace i aut\adddotspace de l'ep\adddot}}, translatorco = {{traductor i comentarista} {trad\adddotspace i com\adddot}}, translatorsco = {{traductors i comentaristes} - {trads\adddotspace i coms\adddot}}, + {trad\adddotspace i com\adddot}}, translatoran = {{traductor i anotador} {trad\adddotspace i anot\adddot}}, translatorsan = {{traductors i anotadors} - {trads\adddotspace i anots\adddot}}, + {trad\adddotspace i anot\adddot}}, translatorin = {{traductor i autor de la introducci\'o} {trad\adddotspace i aut\adddotspace de la intr\adddot}}, translatorsin = {{traductors i autors de la introducci\'o} - {trads\adddotspace i auts\adddotspace de la intr\adddot}}, + {trad\adddotspace i aut\adddotspace de la intr\adddot}}, translatorfo = {{traductor i autor del pr\`oleg} {trad\adddotspace i aut\adddotspace del pr\`ol\adddot}}, translatorsfo = {{traductors i autors del pr\`oleg} - {trads\adddotspace i auts\adddotspace del pr\`ol\adddot}}, + {trad\adddotspace i aut\adddotspace del pr\`ol\adddot}}, translatoraf = {{traductor i autor de l'ep{\'\i}leg} {trad\adddotspace i aut\adddotspace de l'ep\adddot}}, translatorsaf = {{traductors i autors de l'ep{\'\i}leg} - {trads\adddotspace i auts\adddotspace de l'ep\adddot}}, + {trad\adddotspace i aut\adddotspace de l'ep\adddot}}, translatorcoin = {{traductor, comentarista i autor de la introducci\'o} {trad.,\addabbrvspace com\adddotspace i aut\adddotspace de la intr\adddotspace}}, translatorscoin = {{traductors, comentaristes i autors de la introducci\'o} - {trads.,\addabbrvspace coms\adddotspace i auts\adddotspace de la intr\adddotspace}}, + {trad.,\addabbrvspace com\adddotspace i aut\adddotspace de la intr\adddotspace}}, translatorcofo = {{traductor, comentarista i autor del pr\`oleg} {trad.,\addabbrvspace com\adddotspace i aut\adddotspace del pr\`ol\adddot}}, translatorscofo = {{traductors, comentaristes i autors del pr\`oleg} - {trads.,\addabbrvspace coms\adddotspace i auts\adddotspace del pr\`ol\adddot}}, + {trad.,\addabbrvspace com\adddotspace i aut\adddotspace del pr\`ol\adddot}}, translatorcoaf = {{traductor, comentarista i autor de l'ep{\'\i}leg} {trad.,\addabbrvspace com\adddotspace i aut\adddotspace de l'ep\adddot}}, translatorscoaf = {{traductors, comentaristes i autors de l'ep{\'\i}leg} - {trads.,\addabbrvspace coms\adddotspace i auts\adddotspace de l'ep\adddot}}, + {trad.,\addabbrvspace com\adddotspace i aut\adddotspace de l'ep\adddot}}, translatoranin = {{traductor, anotador i autor de la introducci\'o} {trad.,\addabbrvspace anot\adddotspace i aut\adddotspace de la intr\adddot}}, translatorsanin = {{traductors, anotadors i autors de la introducci\'o} - {trads.,\addabbrvspace anots\adddotspace i auts\adddotspace de la intr\adddot}}, + {trad.,\addabbrvspace anot\adddotspace i aut\adddotspace de la intr\adddot}}, translatoranfo = {{traductor, anotador i autor del pr\`oleg} {trad.,\addabbrvspace anot\adddotspace i aut\adddotspace del pr\`ol\adddot}}, translatorsanfo = {{traductors, anotadors i autors del pr\`oleg} - {trads.,\addabbrvspace anots\adddotspace i auts\adddotspace del pr\`ol\adddot}}, + {trad.,\addabbrvspace anot\adddotspace i aut\adddotspace del pr\`ol\adddot}}, translatoranaf = {{traductor, anotador i autor de l'ep{\'\i}leg} {trad.,\addabbrvspace anot\adddotspace i aut\adddotspace de l'ep\adddot}}, translatorsanaf = {{traductors, anotadors i autors de l'ep{\'\i}leg} - {trads.,\addabbrvspace anots\adddotspace i auts\adddotspace de l'ep\adddot}}, + {trad.,\addabbrvspace anot\adddotspace i aut\adddotspace de l'ep\adddot}}, byauthor = {{per}{per}}, byeditor = {{edici\'o a cura \smartof}{ed\adddotspace\smartof}}, bycompiler = {{compilaci\'o a cura \smartof}{comp\adddotspace\smartof}}, byredactor = {{redacci\'o a cura \smartof}{red\adddotspace\smartof}}, byreviser = {{revisi\'o a cura \smartof}{rev\adddotspace\smartof}}, - byreviewer = {{revisi\'o a cura \smartof}{rev\adddotspace\smartof}}, + byreviewer = {{ressenya a cura \smartof}{ress\adddotspace\smartof}}, byfounder = {{fundat per}{fund\adddotspace per}}, bycontinuator = {{continuat per}{cont\adddotspace per}}, bycollaborator = {{amb la co\l.laboraci\'o \smartof}{amb la co\l.l\adddotspace\smartof}}, bytranslator = {{traducci\'o \lbx@fromlang\ a cura \smartof}{trad\adddotspace\lbx@fromlang\ \smartof}}, bycommentator = {{comentaris a cura \smartof}{com\adddotspace\smartof}}, - byannotator = {{notes a cura \smartof}{notes \smartof}}, + byannotator = {{notes a cura \smartof}{n\adddotspace\smartof}}, withcommentator = {{amb comentaris a cura \smartof}{amb com\adddotspace\smartof}}, - withannotator = {{amb notes a cura \smartof}{amb notes \smartof}}, - withintroduction = {{amb una introducci\'o a cura \smartof}{amb una intr\adddotspace\smartof}}, + withannotator = {{amb notes a cura \smartof}{amb n\adddotspace\smartof}}, + withintroduction = {{amb la introducci\'o a cura \smartof}{amb la intr\adddotspace\smartof}}, withforeword = {{amb el pr\`oleg a cura \smartof}{amb el pr\`ol\adddotspace\smartof}}, withafterword = {{amb l'ep{\'\i}leg a cura \smartof}{amb l'ep\adddotspace\smartof}}, byeditortr = {{edici\'o i traducci\'o \lbx@fromlang\ a cura \smartof}% @@ -253,7 +253,7 @@ byeditorco = {{edici\'o i comentaris a cura \smartof}% {ed\adddotspace i com\adddotspace\smartof}}, byeditoran = {{edici\'o i notes a cura \smartof}% - {ed\adddotspace i not\adddotspace\smartof}}, + {ed\adddotspace i n\adddotspace\smartof}}, byeditorin = {{edici\'o i introducci\'o a cura \smartof}% {ed\adddotspace i intr\adddotspace\smartof}}, byeditorfo = {{edici\'o i pr\`oleg a cura \smartof}% @@ -263,9 +263,9 @@ byeditortrco = {{edici\'o, traducci\'o \lbx@fromlang\ i comentaris a cura \smartof}% {ed.,\addabbrvspace trad\adddotspace\lbx@fromlang\ i com\adddotspace\smartof}}, byeditortran = {{edici\'o, traducci\'o \lbx@fromlang\ i notes a cura \smartof}% - {ed.,\addabbrvspace trad\adddotspace\lbx@fromlang\ i not\adddotspace\smartof}}, + {ed.,\addabbrvspace trad\adddotspace\lbx@fromlang\ i n\adddotspace\smartof}}, byeditortrin = {{edici\'o, traducci\'o \lbx@fromlang\ i introducci\'o a cura \smartof}% - {ed,,\addabbrvspace trad\adddotspace\lbx@fromlang\ i intr\adddotspace\smartof}}, + {ed.,\addabbrvspace trad\adddotspace\lbx@fromlang\ i intr\adddotspace\smartof}}, byeditortrfo = {{edici\'o, traducci\'o \lbx@fromlang\ i pr\`oleg a cura \smartof}% {ed.,\addabbrvspace trad\adddotspace\lbx@fromlang\ i pr\`ol\adddotspace\smartof}}, byeditortraf = {{edici\'o, traducci\'o \lbx@fromlang\ i ep{\'\i}leg a cura \smartof}% @@ -277,11 +277,11 @@ byeditorcoaf = {{edici\'o, comentaris i ep{\'\i}leg a cura \smartof}% {ed.,\addabbrvspace com\adddotspace i ep\adddotspace\smartof}}, byeditoranin = {{edici\'o, notes i introducci\'o a cura \smartof}% - {ed.,\addabbrvspace not\adddotspace i introd\adddotspace\smartof}}, + {ed.,\addabbrvspace n\adddotspace i intr\adddotspace\smartof}}, byeditoranfo = {{edici\'o, notes i pr\`oleg a cura \smartof}% - {ed.,\addabbrvspace not\adddotspace {\'\i} pr\'ol\adddotspace\smartof}}, + {ed.,\addabbrvspace n\adddotspace i pr\`ol\adddotspace\smartof}}, byeditoranaf = {{edici\'o, notes i ep{\'\i}leg a cura \smartof}% - {ed.,\addabbrvspace not\adddotspace i ep\adddotspace\smartof}}, + {ed.,\addabbrvspace n\adddotspace i ep\adddotspace\smartof}}, byeditortrcoin = {{edici\'o, traducci\'o \lbx@fromlang, comentaris i introducci\'o a cura \smartof}% {ed.,\addabbrvspace trad\adddotspace \lbx@fromlang, com\adddotspace i intr\adddotspace\smartof}}, byeditortrcofo = {{edici\'o, traducci\'o \lbx@fromlang, comentaris i pr\`oleg a cura \smartof}% @@ -289,15 +289,15 @@ byeditortrcoaf = {{edici\'o, traducci\'o \lbx@fromlang, comentaris i ep{\'\i}leg a cura \smartof}% {ed.,\addabbrvspace trad\adddot\ \lbx@fromlang, com\adddot\ i ep\adddot\ \smartof}}, byeditortranin = {{edici\'o, traducci\'o \lbx@fromlang, notes i introducci\'o a cura \smartof}% - {ed.,\addabbrvspace trad\adddot\ \lbx@fromlang, not\adddot\ i intr\adddot\ \smartof}}, + {ed.,\addabbrvspace trad\adddot\ \lbx@fromlang, n\adddot\ i intr\adddot\ \smartof}}, byeditortranfo = {{edici\'o, traducci\'o \lbx@fromlang, notes i pr\`oleg a cura \smartof}% - {ed.,\addabbrvspace trad\adddot\ \lbx@fromlang, not\adddot\ i pr\`ol\adddot\ \smartof}}, + {ed.,\addabbrvspace trad\adddot\ \lbx@fromlang, n\adddot\ i pr\`ol\adddot\ \smartof}}, byeditortranaf = {{edici\'o, traducci\'o \lbx@fromlang, notes i ep{\'\i}leg a cura \smartof}% - {ed.,\addabbrvspace trad\adddot\ \lbx@fromlang, not\adddot\ i ep\adddot\ \smartof}}, + {ed.,\addabbrvspace trad\adddot\ \lbx@fromlang, n\adddot\ i ep\adddot\ \smartof}}, bytranslatorco = {{traducci\'o \lbx@fromlang\ i comentaris a cura \smartof}% {trad\adddot\ \lbx@fromlang\ i com\adddot\ \smartof}}, bytranslatoran = {{traducci\'o \lbx@fromlang\ i notes a cura \smartof}% - {trad\adddot\ \lbx@fromlang\ i not\adddot\ \smartof}}, + {trad\adddot\ \lbx@fromlang\ i n\adddot\ \smartof}}, bytranslatorin = {{traducci\'o \lbx@fromlang\ i introducci\'o a cura \smartof}% {trad\adddot\ \lbx@fromlang\ i intr\adddot\ \smartof}}, bytranslatorfo = {{traducci\'o \lbx@fromlang\ i pr\`oleg a cura \smartof}% @@ -305,39 +305,39 @@ bytranslatoraf = {{traducci\'o \lbx@fromlang\ i ep{\'\i}leg a cura \smartof}% {trad\adddot\ \lbx@fromlang\ i ep\adddot\ \smartof}}, bytranslatorcoin = {{traducci\'o \lbx@fromlang, comentaris i introducci\'o a cura \smartof}% - {trad\adddot\ \lbx@fromlang, com\adddot\ i introd\adddot\ \smartof}}, + {trad\adddot\ \lbx@fromlang, com\adddot\ i intr\adddot\ \smartof}}, bytranslatorcofo = {{traducci\'o \lbx@fromlang, comentaris i pr\`oleg a cura \smartof}% {trad\adddot\ \lbx@fromlang, com\adddot\ i pr\`ol\adddot\ \smartof}}, bytranslatorcoaf = {{traducci\'o \lbx@fromlang, comentaris i ep{\'\i}leg a cura \smartof}% {trad\adddot\ \lbx@fromlang, com\adddot\ i ep\adddot\ \smartof}}, bytranslatoranin = {{traducci\'o \lbx@fromlang, notes i introducci\'o a cura \smartof}% - {trad\adddot\ \lbx@fromlang, not\adddot\ i introd\adddot\ \smartof}}, + {trad\adddot\ \lbx@fromlang, n\adddot\ i intr\adddot\ \smartof}}, bytranslatoranfo = {{traducci\'o \lbx@fromlang, notes i pr\`oleg a cura \smartof}% - {trad\adddot\ \lbx@fromlang, not\adddot\ i pr\`ol\adddot\ \smartof}}, + {trad\adddot\ \lbx@fromlang, n\adddot\ i pr\`ol\adddot\ \smartof}}, bytranslatoranaf = {{traducci\'o \lbx@fromlang, notes i ep{\'\i}leg a cura \smartof}% - {trad\adddot\ \lbx@fromlang, not\adddot\ i ep\adddot\ \smartof}}, + {trad\adddot\ \lbx@fromlang, n\adddot\ i ep\adddot\ \smartof}}, and = {{i}{i}}, andothers = {{et al\adddot}{et al\adddot}}, andmore = {{i m\'es}{i m\'es}}, volume = {{volum}{vol\adddot}}, - volumes = {{volums}{vols\adddot}}, + volumes = {{volums}{vol\adddot}}, involumes = {{en}{en}}, jourvol = {{volum}{vol\adddot}}, jourser = {{s\`erie}{s\`er\adddot}}, - book = {{llibre}{ll\adddot}}, + book = {{llibre}{llib\adddot}}, part = {{part}{part}}, issue = {{n\'umero}{n\'um\adddot}}, - newseries = {{s\`erie nova}{s\`er\adddotspace nova}}, - oldseries = {{s\`erie antiga}{s\`er\adddotspace ant\adddot}}, + newseries = {{s\`erie nova}{s\`erie nova}}, + oldseries = {{s\`erie antiga}{s\`erie ant\adddot}}, edition = {{edici\'o}{ed\adddot}}, reprint = {{reimpressi\'o}{reimpr\adddot}}, - reprintof = {{reimpressi\'o del}{reimpr\adddotspace del}}, + reprintof = {{reimpressi\'o \smartof}{reimpr\adddotspace\smartof}}, reprintas = {{reimpr\`es com}{reimpr\adddotspace com}}, reprintfrom = {{reimpr\`es \smartof}{reimpr\adddotspace\smartof}}, - reviewof = {{revisi\'o del}{rev\adddotspace del}}, - translationof = {{traducci\'o del}{trad\adddotspace del}}, + reviewof = {{ressenya \smartof}{ress\adddotspace\smartof}}, + translationof = {{traducci\'o \smartof}{trad\adddotspace\smartof}}, translationas = {{tradu{\"\i}t com}{trad\adddotspace com}}, - translationfrom = {{tradu{\"\i}t del}{trad\adddotspace del}}, + translationfrom = {{tradu{\"\i}t del}{trad\adddotspace del}}, % Unsure of 'del' origpubas = {{publicat originalment com}{pub\adddotspace orig\adddotspace com}}, origpubin = {{publicat originalment el}{pub\adddotspace orig\adddotspace el}}, astitle = {{com}{com}}, @@ -347,8 +347,8 @@ column = {{columna}{col\adddot}}, columns = {{columnes}{cols\adddot}}, line = {{l{\'\i}nia}{l{\'\i}n\adddot}}, - lines = {{l{\'\i}nies}{l{\'\i}ns\adddot}}, - nodate = {{sine data}{s\adddot d\adddot}}, + lines = {{l{\'\i}nies}{l{\'\i}n\adddot}}, + nodate = {{sine data}{s\adddotspace d\adddot}}, verse = {{vers}{v\adddot}}, verses = {{versos}{v\adddot}}, section = {{apartat}{\S}}, @@ -368,17 +368,17 @@ software = {{programari}{prog\adddot}}, datacd = {{CD de dades}{CD de dades}}, audiocd = {{CD d'\`audio}{CD d'\`audio}}, - version = {{versi\'o}{ver\adddot}}, + version = {{versi\'o}{vers\adddot}}, url = {{adre\c{c}a}{adr\adddot}}, urlfrom = {{disponible a}{disp\adddotspace a}}, urlseen = {{consultat}{cons\adddotspace}}, inpreparation = {{en preparaci\'o}{en prep\adddot}}, inpress = {{a impremta}{a impr\adddot}},% Per revisar prepublished = {{pre-publicat}{pre-publicat}}, - submitted = {{enviat}{env\adddot}},% Per revisar - forthcoming = {{disponible en breu}{disp\adddotspace en breu}}, + submitted = {{enviat a publicar}{env\adddotspace a pub\adddot}}, + forthcoming = {{acceptat per a publicar}{acc\adddotspace per a pub\adddot}}, citedas = {{d'ara endavant citat com}{d'ara end\adddotspace cit\adddotspace com}}, - thiscite = {{aquesta citaci\'o}{a\adddotspace cit\adddot}}, + thiscite = {{aquesta citaci\'o}{aqu\adddotspace cit\adddot}}, seenote = {{vegeu la nota}{v\adddotspace la n\adddot}}, quotedin = {{citat a}{cit\adddotspace a}}, idem = {{{\'\i}dem}{{\'\i}d\adddot}}, @@ -401,57 +401,57 @@ backrefpage = {{vegeu la p\`agina}{v\adddotspace la p\`ag\adddot}}, backrefpages = {{vegeu les p\`agines}{v\adddotspace les p\`ag\adddot}}, january = {{gener}{gen\adddot}}, - february = {{febrer}{feb\adddot}}, - march = {{mar\c{c}}{mar\adddot}}, + february = {{febrer}{febr\adddot}}, + march = {{mar\c{c}}{mar\c{c}}}, april = {{abril}{abr\adddot}}, - may = {{maig}{mai\adddot}}, - june = {{juny}{jun\adddot}}, + may = {{maig}{maig}}, + june = {{juny}{juny}}, july = {{juliol}{jul\adddot}}, - august = {{agost}{ago\adddot}}, + august = {{agost}{ag\adddot}}, september = {{setembre}{set\adddot}}, october = {{octubre}{oct\adddot}}, november = {{novembre}{nov\adddot}}, december = {{desembre}{des\adddot}}, langamerican = {{angl\`es americ\`a}{ang\adddotspace amer\adddot}}, langbrazilian = {{portugu\`es brasiler}{port\adddotspace bras\adddot}}, - langcatalan = {{catal\`a}{catal\`a}}, + langcatalan = {{catal\`a}{cat\adddot}}, langczech = {{txec}{txec}}, langcroatian = {{croat}{croat}}, langdanish = {{dan\`es}{dan\adddot}}, - langdutch = {{neerland\`es}{neerland\`es}}, + langdutch = {{neerland\`es}{neerl\adddot}}, langenglish = {{angl\`es}{ang\adddot}}, - langfinnish = {{fin\`es}{fin\`es}}, - langfrench = {{franc\`es}{fran\adddot}}, - langgerman = {{alemany}{alem\adddot}}, + langfinnish = {{fin\`es}{fin\adddot}}, + langfrench = {{franc\`es}{fr\adddot}}, + langgerman = {{alemany}{al\adddot}}, langgreek = {{grec}{grec}}, - langitalian = {{itali\`a}{ital\adddot}}, - langlatin = {{llat{\'\i}}{llat{\'\i}}}, - langnorwegian = {{noruec}{noruec}}, -% langpolish = {{}{}},% FIXME: missing + langitalian = {{itali\`a}{it\adddot}}, + langlatin = {{llat{\'\i}}{ll\adddot}}, + langnorwegian = {{noruec}{nor\adddot}}, + langpolish = {{polon\`es}{pol\adddot}}, langportuguese = {{portugu\`es}{port\adddot}}, langrussian = {{rus}{rus}}, -% langslovene = {{}{}},% FIXME: missing + langslovene = {{eslov\`e}{esl\adddot}}, langspanish = {{castell\`a}{cast\adddot}}, langswedish = {{suec}{suec}}, fromamerican = {{de l'angl\`es americ\`a}{de l'ang\adddotspace amer\adddot}}, - frombrazilian = {{del portugu\`es brasiler}{del port\adddot bras\adddot}}, - fromcatalan = {{del catal\`a}{del catal\`a}}, + frombrazilian = {{del portugu\`es brasiler}{del port\adddotspace bras\adddot}}, + fromcatalan = {{del catal\`a}{del cat\adddot}}, fromcroatian = {{del croat}{del croat}}, fromczech = {{del txec}{del txec}}, - fromdanish = {{del dan\`es}{del dan\`es}}, + fromdanish = {{del dan\`es}{del dan\adddot}}, fromdutch = {{del neerland\`es}{del neerl\adddot}}, fromenglish = {{de l'angl\`es}{de l'ang\adddot}}, - fromfinnish = {{del fin\`es}{del fin\`es}}, - fromfrench = {{del franc\`es}{del fran\adddot}}, - fromgerman = {{de l'alemany}{de l'alem\adddot}}, + fromfinnish = {{del fin\`es}{del fin\adddot}}, + fromfrench = {{del franc\`es}{del fr\adddot}}, + fromgerman = {{de l'alemany}{de l'al\adddot}}, fromgreek = {{del grec}{del grec}}, - fromitalian = {{de l'itali\`a}{de l'ital\adddot}}, - fromlatin = {{del llat{\'\i}}{del llat{\'\i}}}, - fromnorwegian = {{del noruec}{del noruec}}, -% frompolish = {{}{}},% FIXME: missing + fromitalian = {{de l'itali\`a}{de l'it\adddot}}, + fromlatin = {{del llat{\'\i}}{del ll\adddot}}, + fromnorwegian = {{del noruec}{del nor\adddot}}, + frompolish = {{del polon\`es}{del pol\adddot}}, fromportuguese = {{del portugu\`es}{del port\adddot}}, fromrussian = {{del rus}{del rus}}, -% fromslovene = {{}{}},% FIXME: missing + fromslovene = {{de l'eslov\`e}{de l'esl\adddot}}, fromspanish = {{del castell\`a}{del cast\adddot}}, fromswedish = {{del suec}{del suec}}, countryde = {{Alemanya}{DE}}, @@ -461,15 +461,15 @@ countryuk = {{Regne Unit}{GB}}, countryus = {{Estats Units d'Am\`erica}{US}}, patent = {{patent}{pat\adddot}}, - patentde = {{patent alemana}{pat\adddot\ alem\adddot}}, + patentde = {{patent alemana}{pat\adddot\ al\adddot}}, patenteu = {{patent europea}{pat\adddot\ eur\adddot}}, - patentfr = {{patent francesa}{pat\adddot\ fran\adddot}}, + patentfr = {{patent francesa}{pat\adddot\ fr\adddot}}, patentuk = {{patent brit\`anica}{pat\adddot\ brit\adddot\adddot}}, patentus = {{patent estatunidenca}{pat\adddot\ EUA}}, patreq = {{so\l.licitud de patent}{so\l.l\adddotspace de pat\adddot}}, - patreqde = {{so\l.licitud de patent alemana}{so\l.l\adddotspace de pat\adddot\ alem\adddot}}, + patreqde = {{so\l.licitud de patent alemana}{so\l.l\adddotspace de pat\adddot\ al\adddot}}, patreqeu = {{so\l.licitud de patent europea}{so\l.l\adddotspace de pat\adddot\ eur\adddot}}, - patreqfr = {{so\l.licitud de patent francesa}{so\l.l\adddotspace de pat\adddot\ fran\adddot}}, + patreqfr = {{so\l.licitud de patent francesa}{so\l.l\adddotspace de pat\adddot\ fr\adddot}}, patrequk = {{so\l.licitud de patent brit\`anica}{so\l.l\adddotspace de pat\adddot\ brit\adddot}}, patrequs = {{so\l.licitud de patent estatunidenca}{so\l.l\adddotspace de pat\adddot\ EUA}}, file = {{fitxer}{fitx\adddot}}, diff --git a/Master/texmf-dist/tex/latex/biblatex/lbx/dutch.lbx b/Master/texmf-dist/tex/latex/biblatex/lbx/dutch.lbx index 0dee39d8496..2f0b63da8a3 100644 --- a/Master/texmf-dist/tex/latex/biblatex/lbx/dutch.lbx +++ b/Master/texmf-dist/tex/latex/biblatex/lbx/dutch.lbx @@ -361,7 +361,7 @@ and = {{en}{en}}, andothers = {{en andere}{e\adddot a\adddot}}, andmore = {{en andere}{e\adddot a\adddot}}, - url = {{addres}{addres}}, + url = {{adres}{adres}}, urlfrom = {{beschikbaar op}{beschikbaar op}}, urlseen = {{bezocht op}{bezocht op}}, file = {{bestand}{bestand}}, diff --git a/Master/texmf-dist/tex/latex/biblatex/lbx/slovak.lbx b/Master/texmf-dist/tex/latex/biblatex/lbx/slovak.lbx new file mode 100644 index 00000000000..f317b608aeb --- /dev/null +++ b/Master/texmf-dist/tex/latex/biblatex/lbx/slovak.lbx @@ -0,0 +1,661 @@ +\ProvidesFile{slovak.lbx} +[\abx@lbxid] + +\DeclareBibliographyExtras{% + \DeclareCapitalPunctuation{.!?}% + \protected\def\bibrangedash{% + \textendash\penalty\hyphenpenalty}% breakable dash + \protected\def\bibdatedash{% + \textendash\penalty\hyphenpenalty}% breakable dash + \let\finalandcomma=\empty + \let\finalandsemicolon=\empty + \protected\def\mkbibordinal#1{\stripzeros{#1}\adddot}% + \protected\def\mkbibmascord{\mkbibordinal}% + \protected\def\mkbibfemord{\mkbibordinal}% + \protected\def\mkbibneutord{\mkbibordinal}% + \protected\def\mkbibdatelong#1#2#3{% + \iffieldundef{#3} + {} + {\mkbibordinal{\thefield{#3}}% + \iffieldundef{#2}{}{\thinspace}}% + \iffieldundef{#2} + {} + {\mkbibmonth{\thefield{#2}}% + \iffieldundef{#1}{}{\space}}% + \iffieldbibstring{#1}{\bibstring{\thefield{#1}}}{\stripzeros{\thefield{#1}}}}% + \protected\def\mkbibdateshort#1#2#3{% + \iffieldundef{#3} + {} + {\mkdatezeros{\thefield{#3}}\adddot + \iffieldundef{#2}{}{\thinspace}}% + \iffieldundef{#2} + {} + {\mkdatezeros{\thefield{#2}}% + \iffieldundef{#1} + {} + {\iffieldundef{#3}{/}{\adddot\thinspace}}}% + \iffieldbibstring{#1}{\bibstring{\thefield{#1}}}{\mkdatezeros{\thefield{#1}}}}% +} + +\DeclareBibliographyStrings{% + bibliography = {{Zoznam bibliografick\'{y}ch odkazov}% + {Bibliografia}}, + references = {{Cit\'{a}cie}% % ISO 690 -- section 2.15 + {Cit\'{a}cie}}, + shorthands = {{Zoznam skratiek}% + {Skratky}}, + editor = {{editor}% + {ed\adddot}}, + editors = {{editori}% + {ed\adddot}}, + compiler = {{zostavovate\v{l}}% % ISO 690 -- section 5.1 -- c) + {zost\adddot}}, + compilers = {{zostavovatelia}% + {zost\adddot}}, + redactor = {{redaktor}% + {red\adddot}}, + redactors = {{redaktori}% + {red\adddot}}, + reviser = {{korektor}% + {kor\adddot}}, + revisers = {{korektori}% + {kor\adddot}}, + founder = {{zakladate\v{l}}% + {zakl\adddot}}, + founders = {{zakladatelia}% + {zakl\adddot}}, + continuator = {{pokra\v{c}ovate\v{l}}% + {pokr\adddot}}, + continuators = {{pokra\v{c}ovatelia}% + {pokr\adddot}}, + collaborator = {{spolupracovn\'{i}k}% + {spoluprac\adddot}}, + collaborators = {{spolupracovn\'{i}ci}% + {spoluprac\adddot}}, + translator = {{prekladate\v{l}}% + {prekl\adddot}}, + translators = {{prekladatelia}% + {prekl\adddot}}, + commentator = {{koment\'{a}tor}% + {kom\adddot}}, + commentators = {{koment\'{a}tori}% + {kom\adddot}}, + annotator = {{anot\'{a}tor}% + {anot\adddot}}, + annotators = {{anot\'{a}tori}% + {anot\adddot}}, + commentary = {{koment\'{a}r}% + {kom\adddot}}, + annotations = {{anot\'{a}cia}% + {anot\adddot}}, + introduction = {{\'{u}vod}% + {\'{u}v\adddot}}, + foreword = {{predhovor}% + {predh\adddot}}, + afterword = {{doslov}% + {dosl\adddot}}, + editortr = {{editor a prekladate\v{l}}% + {ed\adddotspace a prekl\adddot}}, + editorstr = {{editori a prekladatelia}% + {ed\adddotspace a prekl\adddot}}, + editorco = {{editor a koment\'{a}tor}% + {ed\adddotspace a kom\adddot}}, + editorsco = {{editori a koment\'{a}tori}% + {ed\adddotspace a kom\adddot}}, + editoran = {{editor a anot\'{a}tor}% + {ed\adddotspace a anot\adddot}}, + editorsan = {{editori a anot\'{a}tori}% + {ed\adddotspace a anot\adddot}}, + editorin = {{editor a \'{u}vod}% + {ed\adddotspace a \'{u}v\adddot}}, + editorsin = {{editori a \'{u}vod}% + {ed\adddotspace a \'{u}v\adddot}}, + editorfo = {{editor a predhovor}% + {ed\adddotspace a predh\adddot}}, + editorsfo = {{editori a predhovor}% + {ed\adddotspace a predh\adddot}}, + editoraf = {{editor a doslov}% + {ed\adddotspace a dosl\adddot}}, + editorsaf = {{editori a doslov}% + {ed\adddotspace a dosl\adddot}}, + editortrco = {{editor, prekladate\v{l}\ a koment\'{a}tor}% + {ed.,\addabbrvspace prekl\adddot\ a kom\adddot}}, + editorstrco = {{editori, prekladatelia\ a koment\'{a}tori}% + {ed.,\addabbrvspace prekl\adddot\ a kom\adddot}}, + editortran = {{editor, prekladate\v{l}\ a anot\'{a}tor}% + {ed.,\addabbrvspace prekl\adddot\ a anot\adddot}}, + editorstran = {{editori, prekladatelia\ a anot\'{a}tori}% + {ed.,\addabbrvspace prekl\adddot\ a anot\adddot}}, + editortrin = {{editor, prekladate\v{l}\ a \'{u}vod}% + {ed.,\addabbrvspace prekl\adddot\ a \'{u}v\adddot}}, + editorstrin = {{editori, prekladatelia\ a \'{u}vod}% + {ed.,\addabbrvspace prekl\adddot\ a \'{u}v\adddot}}, + editortrfo = {{editor, prekladate\v{l}\ a predhovor}% + {ed.,\addabbrvspace prekl\adddot\ a predh\adddot}}, + editorstrfo = {{editori, prekladatelia\ a predhovor}% + {ed.,\addabbrvspace prekl\adddot\ a predh\adddot}}, + editortraf = {{editor, prekladate\v{l}\ a doslov}% + {ed.,\addabbrvspace prekl\adddot\ a dosl\adddot}}, + editorstraf = {{editori, prekladatelia\ a doslov}% + {ed.,\addabbrvspace prekl\adddot\ a dosl\adddot}}, + editorcoin = {{editor, koment\'{a}tor\ a \'{u}vod}% + {ed.,\addabbrvspace kom\adddot\ a \'{u}v\adddot}}, + editorscoin = {{editori, koment\'{a}tori\ a \'{u}vod}% + {ed.,\addabbrvspace kom\adddot\ a \'{u}v\adddot}}, + editorcofo = {{editor, koment\'{a}tor\ a predhovor}% + {ed.,\addabbrvspace kom\adddot\ a predh\adddot}}, + editorscofo = {{editori, koment\'{a}tori\ a predhovor}% + {ed.,\addabbrvspace kom\adddot\ a predh\adddot}}, + editorcoaf = {{editor, koment\'{a}tor\ a doslov}% + {ed.,\addabbrvspace kom\adddot\ a dosl\adddot}}, + editorscoaf = {{editori, koment\'{a}tori\ a doslov}% + {ed.,\addabbrvspace kom\adddot\ a dosl\adddot}}, + editoranin = {{editor, anot\'{a}tor\ a \'{u}vod}% + {ed.,\addabbrvspace anot\adddot\ a \'{u}v\adddot}}, + editorsanin = {{editori, anot\'{a}tori\ a \'{u}vod}% + {ed.,\addabbrvspace anot\adddot\ a \'{u}v\adddot}}, + editoranfo = {{editor, anot\'{a}tor\ a predhovor}% + {ed.,\addabbrvspace anot\adddot\ a predh\adddot}}, + editorsanfo = {{editori, anot\'{a}tori\ a predhovor}% + {ed.,\addabbrvspace anot\adddot\ a predh\adddot}}, + editoranaf = {{editor, anot\'{a}tor\ a doslov}% + {ed.,\addabbrvspace anot\adddot\ a dosl\adddot}}, + editorsanaf = {{editori, anot\'{a}tori\ a doslov}% + {ed.,\addabbrvspace anot\adddot\ a dosl\adddot}}, + editortrcoin = {{editor, prekladate\v{l}, koment\'{a}tor\ a \'{u}vod}% + {ed.,\addabbrvspace prekl., kom\adddot\ a \'{u}v\adddot}}, + editorstrcoin = {{editori, prekladatelia, koment\'{a}tori\ a \'{u}vod}% + {ed.,\addabbrvspace prekl., kom\adddot\ a \'{u}v\adddot}}, + editortrcofo = {{editor, prekladate\v{l}, koment\'{a}tor\ a predhovor}% + {ed.,\addabbrvspace prekl., kom\adddot\ a predh\adddot}}, + editorstrcofo = {{editori, prekladatelia, koment\'{a}tori\ a predhovor}% + {ed.,\addabbrvspace prekl., kom\adddot\ a predh\adddot}}, + editortrcoaf = {{editor, prekladate\v{l}, koment\'{a}tor\ a doslov}% + {ed.,\addabbrvspace prekl., kom\adddot\ a dosl\adddot}}, + editorstrcoaf = {{editori, prekladatelia, koment\'{a}tori\ a doslov}% + {ed.,\addabbrvspace prekl., kom\adddot\ a dosl\adddot}}, + editortranin = {{editor, prekladate\v{l}, anot\'{a}tor\ a \'{u}vod}% + {ed.,\addabbrvspace prekl., anot\adddot\ a \'{u}v\adddot}}, + editorstranin = {{editori, prekladatelia, anot\'{a}tori\ a \'{u}vod}% + {ed.,\addabbrvspace prekl., anot\adddot\ a \'{u}v\adddot}}, + editortranfo = {{editor, prekladate\v{l}, anot\'{a}tor\ a predhovor}% + {ed.,\addabbrvspace prekl., anot\adddot\ a predh\adddot}}, + editorstranfo = {{editori, prekladatelia, anot\'{a}tori\ a predhovor}% + {ed.,\addabbrvspace prekl., anot\adddot\ a predh\adddot}}, + editortranaf = {{editor, prekladate\v{l}, anot\'{a}tor\ a doslov}% + {ed.,\addabbrvspace prekl., anot\adddot\ a dosl\adddot}}, + editorstranaf = {{editori, prekladatelia, anot\'{a}tori\ a doslov}% + {ed.,\addabbrvspace prekl., anot\adddot\ a dosl\adddot}}, + translatorco = {{prekladate\v{l} a koment\'{a}tor}% + {prekl\adddot\ a kom\adddot}}, + translatorsco = {{prekladatelia a koment\'{a}tori}% + {prekl\adddot\ a kom\adddot}}, + translatoran = {{prekladate\v{l} a anot\'{a}tor}% + {prekl\adddot\ a anot\adddot}}, + translatorsan = {{prekladatelia a anot\'{a}tori}% + {prekl\adddot\ a anot\adddot}}, + translatorin = {{prekladate\v{l} a \'{u}vod}% + {prekl\adddot\ a \'{u}v\adddot}}, + translatorsin = {{prekladatelia a \'{u}vod}% + {prekl\adddot\ a \'{u}v\adddot}}, + translatorfo = {{prekladate\v{l} a predhovor}% + {prekl\adddot\ a predh\adddot}}, + translatorsfo = {{prekladatelia a predhovor}% + {prekl\adddot\ a predh\adddot}}, + translatoraf = {{prekladate\v{l} a doslov}% + {prekl\adddot\ a dosl\adddot}}, + translatorsaf = {{prekladatelia a doslov}% + {prekl\adddot\ a dosl\adddot}}, + translatorcoin = {{prekladate\v{l}, koment\'{a}tor\ a \'{u}vod}% + {prekl., kom\adddot\ a \'{u}v\adddot}}, + translatorscoin = {{prekladatelia, koment\'{a}tori\ a \'{u}vod}% + {prekl., kom\adddot\ a \'{u}v\adddot}}, + translatorcofo = {{prekladate\v{l}, koment\'{a}tor\ a predhovor}% + {prekl., kom\adddot\ a predh\adddot}}, + translatorscofo = {{prekladatelia, koment\'{a}tori\ a predhovor}% + {prekl., kom\adddot\ a predh\adddot}}, + translatorcoaf = {{prekladate\v{l}, koment\'{a}tor\ a doslov}% + {prekl., kom\adddot\ a dosl\adddot}}, + translatorscoaf = {{prekladatelia, koment\'{a}tori\ a doslov}% + {prekl., kom\adddot\ a dosl\adddot}}, + translatoranin = {{prekladate\v{l}, anot\'{a}tor\ a \'{u}vod}% + {prekl., anot\adddot\ a \'{u}v\adddot}}, + translatorsanin = {{prekladatelia, anot\'{a}tori\ a \'{u}vod}% + {prekl., anot\adddot\ a \'{u}v\adddot}}, + translatoranfo = {{prekladate\v{l}, anot\'{a}tor\ a predhovor}% + {prekl., anot\adddot\ a predh\adddot}}, + translatorsanfo = {{prekladatelia, anot\'{a}tori\ a predhovor}% + {prekl., anot\adddot\ a predh\adddot}}, + translatoranaf = {{prekladate\v{l}, anot\'{a}tor\ a doslov}% + {prekl., anot\adddot\ a dosl\adddot}}, + translatorsanaf = {{prekladatelia, anot\'{a}tori\ a doslov}% + {prekl., anot\adddot\ a dosl\adddot}}, + byauthor = {{}% + {}}, + byeditor = {{editovan\'{e}}% + {ed\adddot}}, + bycompiler = {{zostaven\'{e}}% + {zost\adddot}}, + byredactor = {{redigovan\'{e}}% + {red\adddot}}, + byfounder = {{zalo\v{z}en\'{e}}% + {zal\adddot}}, + bycontinuator = {{pokra\v{c}ovan\'{e}}% + {pokr\adddot}}, + bycollaborator = {{v\addnbspace spolupr\'{a}ci s}% + {v\addnbspace spol\adddotspace s}}, + bytranslator = {{prelo\v{z}en\'{e} \lbx@lfromlang}% + {prel\adddot\ \lbx@sfromlang}}, + bycommentator = {{komentovan\'{e}}% + {kom\adddot}}, + byannotator = {{anotovan\'{e}}% + {anot\adddot}}, + withcommentator = {{s\addnbspace koment\'{a}rom od}% + {s\addnbspace kom\adddotspace od}}, + withannotator = {{s\addnbspace anot\'{a}ciami od}% + {s\addnbspace anot\adddot\ od}}, + withintroduction = {{s\addnbspace \'{u}vodom od}% + {s\addnbspace \'{u}v\adddot\ od}}, + withforeword = {{s\addnbspace predhovorom od}% + {s\addnbspace predh\adddot\ od}}, + withafterword = {{s\addnbspace doslovom od}% + {s\addnbspace dosl\adddot\ od}}, + byeditortr = {{editovan\'{e} a prelo\v{z}en\'{e} \lbx@lfromlang\ }% + {ed\adddotspace a prel\adddot\ \lbx@sfromlang\ }}, + byeditorco = {{editovan\'{e} a komentovan\'{e}}% + {ed\adddotspace a kom\adddot\ }}, + byeditoran = {{editovan\'{e} a anotovan\'{e}}% + {ed\adddotspace a anot\adddot\ }}, + byeditorin = {{editovan\'{e}, s\addnbspace \'{u}vodom}% + {ed.,\addabbrvspace s\addnbspace \'{u}v\addot}}, + byeditorfo = {{editovan\'{e}, s\addnbspace predhovorom}% + {ed.,\addabbrvspace s\addnbspace predh.,}}, + byeditoraf = {{editovan\'{e}, s\addnbspace doslovom}% + {ed.,\addabbrvspace s\addnbspace dosl.,}}, + byeditortrco = {{editovan\'{e}, prelo\v{z}en\'{e} \lbx@lfromlang\ a komentovan\'{e}}% + {ed.,\addabbrvspace prel\adddot\ \lbx@sfromlang\ a kom\adddot\ }}, + byeditortran = {{editovan\'{e}, prelo\v{z}en\'{e} \lbx@lfromlang\ a anotovan\'{e}}% + {ed.,\addabbrvspace prel\adddot\ \lbx@sfromlang\ a anot\adddot\ }}, + byeditortrin = {{editovan\'{e} a prelo\v{z}en\'{e} \lbx@lfromlang, s\addnbspace \'{u}vodom}% + {ed\adddotspace a prel\adddot\ \lbx@sfromlang, s\addnbspace \'{u}v\addot}}, + byeditortrfo = {{editovan\'{e} a prelo\v{z}en\'{e} \lbx@lfromlang, s\addnbspace predhovorom}% + {ed\adddotspace a prel\adddot\ \lbx@sfromlang, s\addnbspace predh\adddot}}, + byeditortraf = {{editovan\'{e} a prelo\v{z}en\'{e} \lbx@lfromlang, s\addnbspace doslovom}% + {ed\adddotspace a prekl\adddot\ \lbx@sfromlang, s\addnbspace dosl\adddot}}, + byeditorcoin = {{editovan\'{e} a komentovan\'{e}, s\addnbspace \'{u}vodom}% + {ed\adddotspace a kom., s\addnbspace \'{u}v\addot}}, + byeditorcofo = {{editovan\'{e} a komentovan\'{e}, s\addnbspace predhovorom}% + {ed\adddotspace a kom., s\addnbspace predh\adddot}}, + byeditorcoaf = {{editovan\'{e} a komentovan\'{e}, s\addnbspace doslovom}% + {ed\adddotspace a kom., s\addnbspace dosl\adddot}}, + byeditoranin = {{editovan\'{e} a anotovan\'{e}, s\addnbspace \'{u}vodom}% + {ed\adddotspace a anot., s\addnbspace \'{u}v\addot}}, + byeditoranfo = {{editovan\'{e} a anotovan\'{e}, s\addnbspace predhovorom}% + {ed\adddotspace a anot., s\addnbspace predh\adddot}}, + byeditoranaf = {{editovan\'{e} a anotovan\'{e}, s\addnbspace doslovom}% + {ed\adddotspace a anot., s\addnbspace dosl\adddot}}, + byeditortrcoin = {{editovan\'{e}, prelo\v{z}en\'{e} \lbx@lfromlang\ a komentovan\'{e}, s\addnbspace \'{u}vodom}% + {ed.,\addabbrvspace prel\adddot\ \lbx@sfromlang\ a kom., s\addnbspace \'{u}v\addot}}, + byeditortrcofo = {{editovan\'{e}, prelo\v{z}en\'{e} \lbx@lfromlang\ a komentovan\'{e}, s\addnbspace predhovorom}% + {ed.,\addabbrvspace prel\adddot\ \lbx@sfromlang\ a kom., s\addnbspace predh\adddot}}, + byeditortrcoaf = {{editovan\'{e}, prelo\v{z}en\'{e} \lbx@lfromlang\ a komentovan\'{e}, s\addnbspace doslovom}% + {ed.,\addabbrvspace prel\adddot\ \lbx@sfromlang\ a kom., s\addnbspace dosl\adddot}}, + byeditortranin = {{editovan\'{e}, prelo\v{z}en\'{e} \lbx@lfromlang\ a anotovan\'{e}, s\addnbspace \'{u}vodom}% + {ed.,\addabbrvspace prel\adddot\ \lbx@sfromlang\ a anot\adddot, s\addnbspace \'{u}v\addot}}, + byeditortranfo = {{editovan\'{e}, prelo\v{z}en\'{e} \lbx@lfromlang\ a anotovan\'{e}, s\addnbspace predhovorom}% + {ed.,\addabbrvspace prel\adddot\ \lbx@sfromlang\ a anot\adddot, s\addnbspace predh\adddot}}, + byeditortranaf = {{editovan\'{e}, prelo\v{z}en\'{e} \lbx@lfromlang\ a anotovan\'{e}, s\addnbspace doslovom}% + {ed.,\addabbrvspace prel\adddot\ \lbx@sfromlang\ a anot\adddot, s\addnbspace dosl\adddot}}, + bytranslatorco = {{prelo\v{z}en\'{e} \lbx@lfromlang\ a komentovan\'{e}}% + {prel\adddot\ \lbx@sfromlang\ a kom\adddot}}, + bytranslatoran = {{prelo\v{z}en\'{e} \lbx@lfromlang\ a anotovan\'{e}}% + {prel\adddot\ \lbx@sfromlang\ a anot\adddot}}, + bytranslatorin = {{prelo\v{z}en\'{e} \lbx@lfromlang, s\addnbspace \'{u}vodom}% + {prel\adddot\ \lbx@sfromlang, s\addnbspace \'{u}v\addot}}, + bytranslatorfo = {{prelo\v{z}en\'{e} \lbx@lfromlang, s\addnbspace predhovorom}% + {prel\adddot\ \lbx@sfromlang, s\addnbspace predh\adddot}}, + bytranslatoraf = {{prelo\v{z}en\'{e} \lbx@lfromlang, s\addnbspace doslovom}% + {prel\adddot\ \lbx@sfromlang, s\addnbspace dosl\adddot}}, + bytranslatorcoin = {{prelo\v{z}en\'{e} \lbx@lfromlang\ a komentovan\'{e}, s\addnbspace \'{u}vodom}% + {prel\adddot\ \lbx@sfromlang\ a kom., s\addnbspace \'{u}v\addot}}, + bytranslatorcofo = {{prelo\v{z}en\'{e} \lbx@lfromlang\ a komentovan\'{e}, s\addnbspace predhovorom}% + {prel\adddot\ \lbx@sfromlang\ a kom., s\addnbspace predh\adddot}}, + bytranslatorcoaf = {{prelo\v{z}en\'{e} \lbx@lfromlang\ a komentovan\'{e}, s\addnbspace doslovom}% + {prel\adddot\ \lbx@sfromlang\ a kom., s\addnbspace dosl\adddot}}, + bytranslatoranin = {{prelo\v{z}en\'{e} \lbx@lfromlang\ a anotovan\'{e}, s\addnbspace \'{u}vodom}% + {prel\adddot\ \lbx@sfromlang\ a anot., s\addnbspace \'{u}v\addot}}, + bytranslatoranfo = {{prelo\v{z}en\'{e} \lbx@lfromlang\ a anotovan\'{e}, s\addnbspace predhovorom}% + {prel\adddot\ \lbx@sfromlang\ a anot., s\addnbspace predh\adddot}}, + bytranslatoranaf = {{prelo\v{z}en\'{e} \lbx@lfromlang\ a anotovan\'{e}, s\addnbspace doslovom}% + {prel\adddot\ \lbx@sfromlang\ a anot., s\addnbspace dosl\adddot}}, + and = {{a}% + {a}}, + andothers = {{et\addabbrvspace al\adddot}% %et\addabbrvspace alii + {et\addabbrvspace al\adddot}}, + andmore = {{et\addabbrvspace al\adddot}% %et\addabbrvspace alii + {et\addabbrvspace al\adddot}}, + volume = {{zv\"{a}zok}% + {zv\adddot}}, + volumes = {{zv\"{a}zky}% + {zv\adddot}}, + involumes = {{in}% + {in}}, + jourvol = {{ro\v{c}n\'{i}k}% + {ro\v{c}\adddot}}, + jourser = {{ed\'{i}cia}% % ISO 690 -- section 2.17 + {ed\adddot}}, + book = {{kniha}% + {kniha}}, + part = {{\v{c}as\v{t}}% + {\v{c}as\v{t}}}, + issue = {{\v{c}\'{i}slo}% + {\v{c}\'{i}slo}}, + newseries = {{nov\'{a} ed\'{i}cia}% % ISO 690 -- section 2.17 + {n\adddotspace ed\adddot}}, + oldseries = {{star\'{a} ed\'{i}cia}% % ISO 690 -- section 2.17 + {st\adddotspace ed\addot}}, + edition = {{vydanie}% + {vyd\adddot}}, + reprint = {{dotla\v{c}}% + {dotl\adddot}}, + reprintof = {{dotla\v{c}}% + {dotl\adddot}}, + reprintas = {{dotla\v{c}en\'{e} ako}% + {dotl\adddotspace ako}}, + reprintfrom = {{dotla\v{c}en\'{e} z}% + {dotl\adddotspace z}}, + reviewof = {{hodnotenie}% + {hodn\adddot}}, + translationof = {{preklad}% + {prekl\adddot}}, + translationas = {{prelo\v{z}en\'{e} ako}% + {prel\adddotspace ako}}, + translationfrom = {{prelo\v{z}en\'{e} z}% + {prel\adddotspace z}}, + origpubas = {{p\^{o}vodne vydan\'{e} ako}% + {p\^{o}v\adddotspace vyd\adddotspace ako}}, + origpubin = {{p\^{o}vodne vydan\'{e} v\addnbspace roku}% + {p\^{o}v\adddotspace vyd\adddotspace v\addnbspace r\adddot}}, + astitle = {{ako}% + {ako}}, + bypublisher = {{}% + {}}, + page = {{strana}% + {s\adddot}}, + pages = {{strany}% + {s\adddot}}, + column = {{st\'{l}pec}% + {st\'{l}p\adddot}}, + columns = {{st\'{l}pce}% + {st\'{l}p\adddot}}, + line = {{riadok}% + {r\adddot}}, + lines = {{riadky}% + {r\adddot}}, + nodate = {{nedatovan\'{e}}% % ISO 690 -- section 9.3.4 + {b\adddotspace r\adddot}}, % bez roku + verse = {{ver\v{s}}% + {v\adddot}}, + verses = {{ver\v{s}e}% + {v\adddot}}, + section = {{paragraf}% + {\S}}, + sections = {{paragrafy}% + {\S\S}}, + paragraph = {{odsek}% + {ods\adddot}}, + paragraphs = {{odseky}% + {ods\adddot}}, + in = {{in}% + {in}}, + inseries = {{v}% + {v}}, + ofseries = {{z}% + {z}}, + number = {{\v{c}\'{i}slo}% + {\v{c}\adddot}}, + chapter = {{kapitola}% + {kap\adddot}}, + mathesis = {{diplomov\'{a} pr\'{a}ca}% + {dipl\adddotspace pr\adddot}}, + phdthesis = {{dizerta\v{c}n\'{a} pr\'{a}ca}% + {diz\adddotspace pr\adddot}}, + candthesis = {{kandid\'{a}tska pr\'{a}ca}% + {kand\adddotspace pr\adddot}}, + resreport = {{v\'{y}skumn\'{a} spr\'{a}va}% + {v\'{y}sk\adddot\ spr\adddot}}, + techreport = {{technick\'{a} spr\'{a}va}% + {tech\adddotspace spr\adddot}}, + software = {{po\v{c}\'{i}ta\v{c}ov\'{y} softv\'{e}r}% + {soft\adddot}}, + datacd = {{CD-ROM}% + {CD-ROM}}, + audiocd = {{audio CD}% + {audio CD}}, + version = {{verzia}% + {ver\adddot}}, + url = {{url}% + {url}}, + urlfrom = {{dostupn\'{e} z}% % ISO 690 -- section 15.2.6 + {dostupn\'{e} z}}, + urlseen = {{citovane\'{e}}% + {cit\adddot}}, + inpreparation = {{v\addnbspace pr\'{i}prave}% + {v\addnbspace pr\'{i}prave}}, + submitted = {{predlo\v{z}en\'{e}}% + {predl\adddot}}, + forthcoming = {{prijat\'{e}}% + {prij\adddot}}, + inpress = {{v\addnbspace tla\v{c}i}% + {v\addnbspace tla\v{c}i}}, + prepublished = {{pred publikovan\'{i}m}% + {pred publ\adddot}}, + citedas = {{\v{d}alej citovan\'{e} ako}% + {\v{d}alej cit\adddotspace ako}}, + thiscite = {{obzvl\'{a}\v{s}\v{t}}% + {obzvl\adddot}}, + seenote = {{vi\v{d} pozn\'{a}mka}% + {vi\v{d} pozn\adddot}}, + quotedin = {{citovan\'{e} v}% + {cit\adddotspace v}}, + idem = {{idem}% + {idem}}, + idemsm = {{idem}% + {idem}}, + idemsf = {{eadem}% + {eadem}}, + idemsn = {{idem}% + {idem}}, + idempm = {{eidem}% + {eidem}}, + idempf = {{eaedem}% + {eaedem}}, + idempn = {{eadem}% + {eadem}}, + idempp = {{eidem}% + {eidem}}, + ibidem = {{ibidem}% + {ibid\adddot}}, + opcit = {{op\adddotspace cit\adddot}% + {op\adddotspace cit\adddot}}, + loccit = {{loc\adddotspace cit\adddot}% + {loc\adddotspace cit\adddot}}, + confer = {{cf\adddot}% + {cf\adddot}}, + sequens = {{sq\adddot}% + {sq\adddot}}, + sequentes = {{sqq\adddot}% + {sqq\adddot}}, + passim = {{passim}% + {pass\adddot}}, + see = {{vi\v{d}}% + {vi\v{d}}}, + seealso = {{vi\v{d} tie\v{z}}% + {vi\v{d} tie\v{z}}}, + backrefpage = {{citovan\'{e} na strane}% + {cit\adddotspace na s\adddot}}, + backrefpages = {{citovan\'{e} na stran\'{a}ch}% + {cit\adddotspace na str\adddot}}, + january = {{janu\'{a}r}% + {jan\adddot}}, + february = {{febru\'{a}r}% + {feb\adddot}}, + march = {{marec}% + {mar\adddot}}, + april = {{apr\'{i}l}% + {apr\adddot}}, + may = {{m\'{a}j}% + {m\'{a}j}}, + june = {{j\'{u}n}% + {j\'{u}n}}, + july = {{j\'{u}l}% + {j\'{u}l}}, + august = {{august}% + {aug\adddot}}, + september = {{september}% + {sept\adddot}}, + october = {{okt\'{o}ber}% + {okt\adddot}}, + november = {{november}% + {nov\adddot}}, + december = {{december}% + {dec\adddot}}, + langamerican = {{americk\'{a} angli\v{c}tina}% + {am\adddot angl\adddot}}, + langbrazilian = {{braz\'{i}lska portugal\v{c}ina}% + {braz\adddot portugal\adddot}}, + langcatalan = {{katal\'{a}n\v{c}ina}% + {katal\adddot}}, + langcroatian = {{chorv\'{a}t\v{c}ina}% + {chorv\adddot}}, + langczech = {{\v{c}e\v{s}tina}% + {\v{c}e\v{s}tina}}, + langdanish = {{d\'{a}n\v{c}ina}% + {d\'{a}n\adddot}}, + langdutch = {{holand\v{c}ina}% + {hol\adddot}}, + langenglish = {{angli\v{c}tina}% + {angl\adddot}}, + langfinnish = {{f\'{i}n\v{c}ina}% + {f\'{i}n\adddot}}, + langfrench = {{franc\'{u}z\v{s}tina}% + {franc\adddot}}, + langgerman = {{nem\v{c}ina}% + {nem\adddot}}, + langgreek = {{gr\'{e}\v{c}tina}% + {gr\'{e}\v{c}tina}}, + langitalian = {{talian\v{c}ina}% + {tal\adddot}}, + langjapanese = {{japon\v{c}ina}% + {jap\adddot}}, + langlatin = {{latin\v{c}ina}% + {lat\adddot}}, + langnorwegian = {{n\'{o}r\v{c}ina}% + {n\'{o}r\adddot}}, + langpolish = {{po\v{l}\v{s}tina}% + {po\v{l}\adddot}}, + langportuguese = {{portugal\v{c}ina}% + {portugal\adddot}}, + langrussian = {{ru\v{s}tina}% + {ru\v{s}tina}}, + langslovak = {{sloven\v{c}ina}% + {sloven\v{c}ina}}, + langslovene = {{slovin\v{c}ina}% + {slovin\v{c}ina}}, + langspanish = {{\v{s}paniel\v{c}ina}% + {\v{s}pan\adddot}}, + langswedish = {{\v{s}v\'{e}d\v{c}ina}% + {\v{s}v\'{e}d\adddot}}, + fromamerican = {{z\addnbspace americkej angli\v{c}tiny}% + {z\addnbspace amer\adddot angl\adddot}}, + frombrazilian = {{z\addnbspace braz\'{i}lskej portugal\v{c}iny}% + {z\addnbspace braz\adddotspace portugal\adddot}}, + fromcatalan = {{z\addnbspace katal\'{a}n\v{c}iny}% + {z\addnbspace katal\adddot}}, + fromcroatian = {{z\addnbspace chorvat\v{c}iny}% + {z\addnbspace chorv\adddot}}, + fromczech = {{z\addnbspace \v{c}e\v{s}tiny}% + {z\addnbspace \v{c}e\v{s}tiny}}, + fromdanish = {{z\addnbspace d\'{a}n\v{c}iny}% + {z\addnbspace d\'{a}n\adddot}}, + fromdutch = {{z\addnbspace holand\v{c}iny}% + {z\addnbspace hol\adddot}}, + fromenglish = {{z\addnbspace angli\v{c}tiny}% + {z\addnbspace angl\adddot}}, + fromfinnish = {{z\addnbspace f\'{i}n\v{c}iny}% + {z\addnbspace f\'{i}n\adddot}}, + fromfrench = {{z\addnbspace franc\'{u}z\v{s}tiny}% + {z\addnbspace franc\adddot}}, + fromgerman = {{z\addnbspace nem\v{c}iny}% + {z\addnbspace nem\adddot}}, + fromgreek = {{z\addnbspace gr\'{e}\v{c}tiny}% + {z\addnbspace gr\'{e}\v{c}tiny}}, + fromitalian = {{z\addnbspace talian\v{c}iny}% + {z\addnbspace tal\adddot}}, + fromjapanese = {{z\addnbspace japon\v{c}iny}% + {z\addnbspace jap\adddot}}, + fromlatin = {{z\addnbspace latin\v{c}iny}% + {z\addnbspace lat\adddot}}, + fromnorwegian = {{z\addnbspace n\'{o}r\v{c}iny}% + {z\addnbspace n\'{o}r\adddot}}, + frompolish = {{z\addnbspace po\v{l}\v{s}tiny}% + {z\addnbspace po\v{l}\adddot}}, + fromportuguese = {{z\addnbspace portugal\v{c}iny}% + {z\addnbspace portugal\adddot}}, + fromrussian = {{z\addnbspace ru\v{s}tiny}% + {z\addnbspace ru\v{s}tiny}}, + fromslovak = {{zo sloven\v{c}iny}% + {zo sloven\v{c}iny}}, + fromslovene = {{zo slovin\v{c}iny}% + {zo slovin\v{c}iny}}, + fromspanish = {{zo \v{s}paniel\v{c}iny}% + {zo \v{s}pan\adddot}}, + fromswedish = {{zo \v{s}v\'{e}d\v{c}iny}% + {zo \v{s}v\'{e}d\adddot}}, + countryde = {{Nemecko}% + {DE}}, + countryeu = {{Eur\'{o}pska \'{u}nia}% + {EU}}, + countryep = {{Eur\'{o}pska \'{u}nia}% + {EP}}, + countryfr = {{Franc\'{u}zsko}% + {FR}}, + countryuk = {{Ve\v{l}k\'{a} Brit\'{a}nia}% + {GB}}, + countryus = {{Spojen\'{e} \v{S}t\'{a}ty Americk\'{e}}% + {US}}, + patent = {{patent}% + {pat\adddot}}, + patentde = {{nemeck\'{y} patent}% + {nem\adddot\ pat\adddot}}, + patenteu = {{eur\'{o}psky patent}% + {eur\adddot\ pat\adddot}}, + patentfr = {{franc\'{u}zsky patent}% + {franc\adddot\ pat\adddot}}, + patentuk = {{britsk\'{y} patent}% + {britsk\'{y} pat\adddot}}, + patentus = {{americk\'{y} patent}% + {US\adddotspace pat\adddot}}, + patreq = {{patentov\'{a} \v{z}iados\v{t}}% + {pat\adddot\ \v{z}iad\adddot}}, + patreqde = {{nemeck\'{a} patentov\'{a} \v{z}iados\v{t}}% + {nem\adddot\ pat\adddot\ \v{z}iad\adddot}}, + patreqeu = {{eur\'{o}pska patentov\'{a} \v{z}iados\v{t}}% + {eur\adddot\ pat\adddot\ \v{z}iad\adddot}}, + patreqfr = {{franc\'{u}zska patentov\'{a} \v{z}iados\v{t}}% + {franc\adddot\ pat\adddot\ \v{z}iad\adddot}}, + patrequk = {{britsk\'{a} patentov\'{a} \v{z}iados\v{t}}% + {brit\adddot\ pat\adddot\ \v{z}iad\adddot}}, + patrequs = {{US\adddotspace patentov\'{a} \v{z}iados\v{t}}% + {US\adddotspace pat\adddot\ \v{z}iad\adddot}}, + file = {{s\'{u}bor}% + {s\'{u}b\adddot}}, + library = {{kni\v{z}nica}% + {kni\v{z}nica}}, + abstract = {{abstrakt}% + {abst\adddot}}, + annotation = {{anot\'{a}cia}% + {anot\adddot}}, +} + +\endinput diff --git a/Master/texmf-dist/tex/latex/biblatex/lbx/spanish.lbx b/Master/texmf-dist/tex/latex/biblatex/lbx/spanish.lbx index 600160692a5..8bfd3b828f2 100644 --- a/Master/texmf-dist/tex/latex/biblatex/lbx/spanish.lbx +++ b/Master/texmf-dist/tex/latex/biblatex/lbx/spanish.lbx @@ -426,7 +426,7 @@ \begingroup \def\forceY##1{\relax}% \def\forceE##1{i\relax}% - \def\do##1{\let##1\@empty}% + \def\do##1{\let##1\@firstofone}% \abx@dosingleaccents \abx@dodoubleaccents \def\'{'}\def\i{i}\def\j{j}% @@ -444,7 +444,7 @@ \let~\@empty \fi \let\protect\noexpand - \lowercase{\edef\lbx@tempa{#1}}% + \edef\lbx@tempa{#1}% \expandafter\futurelet \expandafter\lbx@tempa \expandafter\lbx@es@smartand@ii @@ -455,17 +455,23 @@ \def\lbx@tempa##1{\futurelet\lbx@tempa\lbx@es@smartand@ii##1}% \else\ifcat\noexpand~\noexpand\lbx@tempa \def\lbx@tempa##1{\futurelet\lbx@tempa\lbx@es@smartand@ii}% - \else\if h\noexpand\lbx@tempa + \else\ifnum 0% + \if h\noexpand\lbx@tempa 1\fi + \if H\noexpand\lbx@tempa 1\fi + >0 % \def\lbx@tempa##1{\futurelet\lbx@tempa\lbx@es@smartand@ii}% - \else\if i\noexpand\lbx@tempa - \def\lbx@tempa##1{\futurelet\lbx@tempa\lbx@es@smartand@iii}% - \else\if y\noexpand\lbx@tempa + \else\ifnum 0% + \if i\noexpand\lbx@tempa 1\fi + \if y\noexpand\lbx@tempa 1\fi + \if I\noexpand\lbx@tempa 1\fi + \if Y\noexpand\lbx@tempa 1\fi + >0 % \def\lbx@tempa##1{\futurelet\lbx@tempa\lbx@es@smartand@iii}% \else\if '\noexpand\lbx@tempa \def\lbx@tempa##1{\futurelet\lbx@tempa\lbx@es@smartand@iv}% \else - \let\lbx@tempa\lbx@es@smartand@y - \fi\fi\fi\fi\fi\fi + \let\lbx@tempa\lbx@es@smartand@y + \fi\fi\fi\fi\fi \lbx@tempa} \gdef\lbx@es@smartand@iii{% @@ -475,19 +481,22 @@ \let\lbx@tempa\lbx@es@smartand@e \else\if '\noexpand\lbx@tempa \def\lbx@tempa##1{\futurelet\lbx@tempa\lbx@es@smartand@iii}% - \else\if a\noexpand\lbx@tempa - \let\lbx@tempa\lbx@es@smartand@y - \else\if e\noexpand\lbx@tempa - \let\lbx@tempa\lbx@es@smartand@y - \else\if i\noexpand\lbx@tempa - \let\lbx@tempa\lbx@es@smartand@y - \else\if o\noexpand\lbx@tempa - \let\lbx@tempa\lbx@es@smartand@y - \else\if u\noexpand\lbx@tempa + \else\ifnum 0% + \if a\noexpand\lbx@tempa 1\fi + \if e\noexpand\lbx@tempa 1\fi + \if i\noexpand\lbx@tempa 1\fi + \if o\noexpand\lbx@tempa 1\fi + \if u\noexpand\lbx@tempa 1\fi + \if A\noexpand\lbx@tempa 1\fi + \if E\noexpand\lbx@tempa 1\fi + \if I\noexpand\lbx@tempa 1\fi + \if O\noexpand\lbx@tempa 1\fi + \if U\noexpand\lbx@tempa 1\fi + >0 % \let\lbx@tempa\lbx@es@smartand@y \else \let\lbx@tempa\lbx@es@smartand@e - \fi\fi\fi\fi\fi\fi\fi\fi + \fi\fi\fi\fi \lbx@tempa} \gdef\lbx@es@smartand@iv{% |