From 75d35a09f72ec23912d8aa1b40dcbf674a91c398 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sat, 3 Nov 2018 21:11:01 +0000 Subject: biblatex (3nov18) git-svn-id: svn://tug.org/texlive/trunk@49069 c570f23f-e606-0410-a88d-b1316a301751 --- .../bib/biblatex/biblatex/biblatex-examples.bib | 58 +- Master/texmf-dist/bibtex/bst/biblatex/biblatex.bst | 179 +- Master/texmf-dist/doc/latex/biblatex/CHANGES.md | 122 ++ Master/texmf-dist/doc/latex/biblatex/biblatex.pdf | Bin 1435488 -> 1466892 bytes Master/texmf-dist/doc/latex/biblatex/biblatex.tex | 765 +++++--- .../biblatex/examples/01-introduction-biber.pdf | Bin 167963 -> 167963 bytes .../biblatex/examples/01-introduction-bibtex.pdf | Bin 167963 -> 167963 bytes .../biblatex/examples/02-annotations-biber.pdf | Bin 208610 -> 208502 bytes .../biblatex/examples/02-annotations-bibtex.pdf | Bin 210545 -> 210444 bytes .../examples/03-localization-keys-biber.pdf | Bin 245568 -> 245377 bytes .../examples/03-localization-keys-bibtex.pdf | Bin 246119 -> 245963 bytes .../biblatex/examples/03-localization-keys.tex | 8 + .../biblatex/examples/04-delimiters-biber.pdf | Bin 80153 -> 80153 bytes .../biblatex/examples/04-delimiters-bibtex.pdf | Bin 80153 -> 80153 bytes .../examples/10-references-per-section-biber.pdf | Bin 81709 -> 81709 bytes .../examples/10-references-per-section-bibtex.pdf | Bin 81709 -> 81709 bytes .../examples/11-references-by-section-biber.pdf | Bin 98397 -> 98397 bytes .../examples/11-references-by-section-bibtex.pdf | Bin 98397 -> 98397 bytes .../examples/12-references-by-segment-biber.pdf | Bin 98443 -> 98443 bytes .../examples/12-references-by-segment-bibtex.pdf | Bin 98443 -> 98443 bytes .../examples/13-references-by-keyword-biber.pdf | Bin 175135 -> 175135 bytes .../examples/13-references-by-keyword-bibtex.pdf | Bin 175135 -> 175135 bytes .../examples/14-references-by-category-biber.pdf | Bin 174641 -> 174641 bytes .../examples/14-references-by-category-bibtex.pdf | Bin 174641 -> 174641 bytes .../examples/15-references-by-type-biber.pdf | Bin 119275 -> 119278 bytes .../examples/15-references-by-type-bibtex.pdf | Bin 119275 -> 119278 bytes .../examples/16-numeric-prefixed-1-biber.pdf | Bin 157017 -> 157680 bytes .../examples/16-numeric-prefixed-1-bibtex.pdf | Bin 157863 -> 157880 bytes .../examples/17-numeric-prefixed-2-biber.pdf | Bin 157015 -> 157661 bytes .../examples/17-numeric-prefixed-2-bibtex.pdf | Bin 157852 -> 157881 bytes .../biblatex/examples/18-numeric-hybrid-biber.pdf | Bin 112922 -> 112922 bytes .../biblatex/examples/18-numeric-hybrid-bibtex.pdf | Bin 112922 -> 112922 bytes .../examples/19-alphabetic-prefixed-biber.pdf | Bin 158191 -> 158312 bytes .../examples/19-alphabetic-prefixed-bibtex.pdf | Bin 158584 -> 158551 bytes .../biblatex/examples/20-indexing-single-biber.pdf | Bin 170452 -> 170447 bytes .../examples/20-indexing-single-bibtex.pdf | Bin 171175 -> 171178 bytes .../examples/21-indexing-multiple-biber.pdf | Bin 171695 -> 171711 bytes .../examples/21-indexing-multiple-bibtex.pdf | Bin 172418 -> 172432 bytes .../examples/22-indexing-subentry-biber.pdf | Bin 88902 -> 88909 bytes .../examples/22-indexing-subentry-bibtex.pdf | Bin 88902 -> 88909 bytes .../biblatex/examples/30-style-numeric-biber.pdf | Bin 177237 -> 177237 bytes .../biblatex/examples/30-style-numeric-bibtex.pdf | Bin 178172 -> 178095 bytes .../examples/31-style-numeric-comp-biber.pdf | Bin 179216 -> 179216 bytes .../examples/31-style-numeric-comp-bibtex.pdf | Bin 180461 -> 180387 bytes .../examples/32-style-numeric-verb-biber.pdf | Bin 181612 -> 181612 bytes .../examples/32-style-numeric-verb-bibtex.pdf | Bin 182603 -> 182526 bytes .../examples/40-style-alphabetic-biber.pdf | Bin 200070 -> 200038 bytes .../examples/40-style-alphabetic-bibtex.pdf | Bin 200730 -> 200720 bytes .../examples/41-style-alphabetic-verb-biber.pdf | Bin 111954 -> 111954 bytes .../examples/41-style-alphabetic-verb-bibtex.pdf | Bin 111954 -> 111954 bytes .../42-style-alphabetic-template-biber.pdf | Bin 101006 -> 101009 bytes .../42-style-alphabetic-template-bibtex.pdf | Bin 101006 -> 101009 bytes .../examples/50-style-authoryear-biber.pdf | Bin 280084 -> 280081 bytes .../examples/50-style-authoryear-bibtex.pdf | Bin 278966 -> 278971 bytes .../examples/51-style-authoryear-ibid-biber.pdf | Bin 213648 -> 213648 bytes .../examples/51-style-authoryear-ibid-bibtex.pdf | Bin 213648 -> 213648 bytes .../examples/52-style-authoryear-comp-biber.pdf | Bin 147309 -> 147309 bytes .../examples/52-style-authoryear-comp-bibtex.pdf | Bin 147309 -> 147309 bytes .../examples/53-style-authoryear-icomp-biber.pdf | Bin 225926 -> 225926 bytes .../examples/53-style-authoryear-icomp-bibtex.pdf | Bin 225926 -> 225926 bytes .../examples/60-style-authortitle-biber.pdf | Bin 277773 -> 277786 bytes .../examples/60-style-authortitle-bibtex.pdf | Bin 276657 -> 276667 bytes .../examples/61-style-authortitle-ibid-biber.pdf | Bin 203062 -> 203062 bytes .../examples/61-style-authortitle-ibid-bibtex.pdf | Bin 203062 -> 203062 bytes .../examples/62-style-authortitle-comp-biber.pdf | Bin 126056 -> 126056 bytes .../examples/62-style-authortitle-comp-bibtex.pdf | Bin 126056 -> 126056 bytes .../examples/63-style-authortitle-icomp-biber.pdf | Bin 222711 -> 222711 bytes .../examples/63-style-authortitle-icomp-bibtex.pdf | Bin 222711 -> 222711 bytes .../examples/64-style-authortitle-terse-biber.pdf | Bin 195329 -> 195329 bytes .../examples/64-style-authortitle-terse-bibtex.pdf | Bin 195329 -> 195329 bytes .../examples/65-style-authortitle-tcomp-biber.pdf | Bin 143184 -> 143184 bytes .../examples/65-style-authortitle-tcomp-bibtex.pdf | Bin 143184 -> 143184 bytes .../examples/66-style-authortitle-ticomp-biber.pdf | Bin 147782 -> 147782 bytes .../66-style-authortitle-ticomp-bibtex.pdf | Bin 147782 -> 147782 bytes .../biblatex/examples/70-style-verbose-biber.pdf | Bin 268072 -> 268072 bytes .../biblatex/examples/70-style-verbose-bibtex.pdf | Bin 266552 -> 266552 bytes .../examples/71-style-verbose-ibid-biber.pdf | Bin 272079 -> 272079 bytes .../examples/71-style-verbose-ibid-bibtex.pdf | Bin 270661 -> 270661 bytes .../examples/72-style-verbose-note-biber.pdf | Bin 270386 -> 270386 bytes .../examples/72-style-verbose-note-bibtex.pdf | Bin 268933 -> 268933 bytes .../examples/73-style-verbose-inote-biber.pdf | Bin 274179 -> 274179 bytes .../examples/73-style-verbose-inote-bibtex.pdf | Bin 272798 -> 272798 bytes .../examples/74-style-verbose-trad1-biber.pdf | Bin 328754 -> 328754 bytes .../examples/74-style-verbose-trad1-bibtex.pdf | Bin 327368 -> 327368 bytes .../examples/75-style-verbose-trad2-biber.pdf | Bin 273584 -> 273584 bytes .../examples/75-style-verbose-trad2-bibtex.pdf | Bin 272202 -> 272202 bytes .../examples/76-style-verbose-trad3-biber.pdf | Bin 270809 -> 270809 bytes .../examples/76-style-verbose-trad3-bibtex.pdf | Bin 269428 -> 269428 bytes .../biblatex/examples/80-style-reading-biber.pdf | Bin 244291 -> 244291 bytes .../biblatex/examples/80-style-reading-bibtex.pdf | Bin 244291 -> 244291 bytes .../biblatex/examples/81-style-draft-biber.pdf | Bin 149728 -> 149733 bytes .../biblatex/examples/81-style-draft-bibtex.pdf | Bin 149728 -> 149733 bytes .../biblatex/examples/82-style-debug-biber.pdf | Bin 149686 -> 149686 bytes .../biblatex/examples/82-style-debug-bibtex.pdf | Bin 148852 -> 148852 bytes .../biblatex/examples/90-related-entries-biber.pdf | Bin 31077 -> 31096 bytes .../biblatex/examples/91-sorting-schemes-biber.pdf | Bin 21549 -> 21556 bytes .../examples/92-bibliographylists-biber.pdf | Bin 61595 -> 61634 bytes .../latex/biblatex/examples/93-nameparts-biber.pdf | Bin 37874 -> 37877 bytes .../doc/latex/biblatex/examples/93-nameparts.tex | 2 +- .../biblatex/examples/94-labelprefix-biber.pdf | Bin 23852 -> 23855 bytes .../doc/latex/biblatex/examples/94-labelprefix.tex | 31 +- .../biblatex/examples/95-customlists-biber.pdf | Bin 12143 -> 12144 bytes .../doc/latex/biblatex/examples/96-dates-biber.pdf | Bin 25108 -> 25112 bytes .../biblatex/examples/97-annotations-biber.pdf | Bin 0 -> 16371 bytes .../doc/latex/biblatex/examples/97-annotations.bib | 12 + .../doc/latex/biblatex/examples/97-annotations.tex | 53 + .../latex/biblatex/examples/biblatex-examples.bib | 58 +- .../tex/latex/biblatex/bbx/authortitle.bbx | 4 + .../tex/latex/biblatex/bbx/authoryear.bbx | 60 +- Master/texmf-dist/tex/latex/biblatex/biblatex.def | 26 +- Master/texmf-dist/tex/latex/biblatex/biblatex.sty | 1903 +++++++++++++++----- .../texmf-dist/tex/latex/biblatex/blx-bibtex.def | 27 +- Master/texmf-dist/tex/latex/biblatex/blx-dm.def | 10 +- .../texmf-dist/tex/latex/biblatex/blx-natbib.def | 10 +- .../tex/latex/biblatex/lbx/brazilian.lbx | 4 +- .../texmf-dist/tex/latex/biblatex/lbx/british.lbx | 2 +- .../tex/latex/biblatex/lbx/bulgarian.lbx | 10 +- .../texmf-dist/tex/latex/biblatex/lbx/catalan.lbx | 242 +-- .../texmf-dist/tex/latex/biblatex/lbx/croatian.lbx | 4 +- Master/texmf-dist/tex/latex/biblatex/lbx/czech.lbx | 4 +- .../texmf-dist/tex/latex/biblatex/lbx/danish.lbx | 624 ++++--- Master/texmf-dist/tex/latex/biblatex/lbx/dutch.lbx | 4 +- .../texmf-dist/tex/latex/biblatex/lbx/english.lbx | 60 +- .../texmf-dist/tex/latex/biblatex/lbx/estonian.lbx | 808 ++++----- .../texmf-dist/tex/latex/biblatex/lbx/finnish.lbx | 90 +- .../texmf-dist/tex/latex/biblatex/lbx/french.lbx | 8 +- .../texmf-dist/tex/latex/biblatex/lbx/galician.lbx | 8 +- .../texmf-dist/tex/latex/biblatex/lbx/german.lbx | 6 +- Master/texmf-dist/tex/latex/biblatex/lbx/greek.lbx | 4 +- .../tex/latex/biblatex/lbx/hungarian.lbx | 7 + .../tex/latex/biblatex/lbx/icelandic.lbx | 4 +- .../texmf-dist/tex/latex/biblatex/lbx/italian.lbx | 4 +- .../texmf-dist/tex/latex/biblatex/lbx/latvian.lbx | 24 +- .../texmf-dist/tex/latex/biblatex/lbx/magyar.lbx | 721 ++++++++ Master/texmf-dist/tex/latex/biblatex/lbx/norsk.lbx | 4 +- .../texmf-dist/tex/latex/biblatex/lbx/nynorsk.lbx | 1 + .../texmf-dist/tex/latex/biblatex/lbx/polish.lbx | 4 +- .../tex/latex/biblatex/lbx/portuguese.lbx | 4 +- .../texmf-dist/tex/latex/biblatex/lbx/russian.lbx | 4 +- .../texmf-dist/tex/latex/biblatex/lbx/slovak.lbx | 4 +- .../texmf-dist/tex/latex/biblatex/lbx/slovene.lbx | 6 +- .../texmf-dist/tex/latex/biblatex/lbx/spanish.lbx | 316 ++-- .../texmf-dist/tex/latex/biblatex/lbx/swedish.lbx | 4 +- .../tex/latex/biblatex/lbx/ukrainian.lbx | 4 +- 144 files changed, 4233 insertions(+), 2084 deletions(-) create mode 100644 Master/texmf-dist/doc/latex/biblatex/examples/97-annotations-biber.pdf create mode 100644 Master/texmf-dist/doc/latex/biblatex/examples/97-annotations.bib create mode 100644 Master/texmf-dist/doc/latex/biblatex/examples/97-annotations.tex create mode 100644 Master/texmf-dist/tex/latex/biblatex/lbx/hungarian.lbx create mode 100644 Master/texmf-dist/tex/latex/biblatex/lbx/magyar.lbx diff --git a/Master/texmf-dist/bibtex/bib/biblatex/biblatex/biblatex-examples.bib b/Master/texmf-dist/bibtex/bib/biblatex/biblatex/biblatex-examples.bib index 36ac849dd2f..6730a9ded77 100644 --- a/Master/texmf-dist/bibtex/bib/biblatex/biblatex/biblatex-examples.bib +++ b/Master/texmf-dist/bibtex/bib/biblatex/biblatex/biblatex-examples.bib @@ -417,7 +417,7 @@ \texttt{editor} as well as a \texttt{series} field}, } -@book{aristotle:rhetoric, +@mvbook{aristotle:rhetoric, author = {Aristotle}, title = {The Rhetoric of {Aristotle} with a commentary by the late {Edward Meredith Cope}}, @@ -666,7 +666,7 @@ fields}, } -@book{knuth:ct, +@mvbook{knuth:ct, author = {Knuth, Donald E.}, title = {Computers \& Typesetting}, date = {1984/1986}, @@ -675,16 +675,15 @@ location = {Reading, Mass.}, langid = {english}, langidopts = {variant=american}, - sortyear = {1984-0}, sorttitle = {Computers & Typesetting}, indexsorttitle= {Computers & Typesetting}, - annotation = {A five-volume book cited as a whole. This is a \texttt{book} + annotation = {A five-volume book cited as a whole. This is a \texttt{mvbook} entry, note the \texttt{volumes} field}, } @book{knuth:ct:a, author = {Knuth, Donald E.}, - title = {The {\TeX} book}, + title = {The {\TeX book}}, date = 1984, maintitle = {Computers \& Typesetting}, volume = {A}, @@ -692,13 +691,12 @@ location = {Reading, Mass.}, langid = {english}, langidopts = {variant=american}, - sortyear = {1984-1}, sorttitle = {Computers & Typesetting A}, indexsorttitle= {The TeXbook}, indextitle = {\protect\TeX book, The}, shorttitle = {\TeX book}, annotation = {The first volume of a five-volume book. Note the - \texttt{sorttitle} and \texttt{sortyear} fields. We want this + \texttt{sorttitle} field. We want this volume to be listed after the entry referring to the entire five-volume set. Also note the \texttt{indextitle} and \texttt{indexsorttitle} fields. Indexing packages that don't @@ -708,7 +706,7 @@ @book{knuth:ct:b, author = {Knuth, Donald E.}, - title = {\TeX: The Program}, + title = {{\TeX}: The Program}, date = 1986, maintitle = {Computers \& Typesetting}, volume = {B}, @@ -716,12 +714,11 @@ location = {Reading, Mass.}, langid = {english}, langidopts = {variant=american}, - sortyear = {1986-1}, sorttitle = {Computers & Typesetting B}, indexsorttitle= {TeX: The Program}, shorttitle = {\TeX}, annotation = {The second volume of a five-volume book. Note the - \texttt{sorttitle} and \texttt{sortyear} fields. Also note the + \texttt{sorttitle} field. Also note the \texttt{indexsorttitle} field}, } @@ -735,18 +732,17 @@ location = {Reading, Mass.}, langid = {english}, langidopts = {variant=american}, - sortyear = {1986-2}, sorttitle = {Computers & Typesetting C}, indextitle = {METAFONTbook, The}, shorttitle = {METAFONTbook}, annotation = {The third volume of a five-volume book. Note the - \texttt{sorttitle} and \texttt{sortyear} fields as well as the + \texttt{sorttitle} field as well as the \texttt{indextitle} field}, } @book{knuth:ct:d, author = {Knuth, Donald E.}, - title = {METAFONT: The Program}, + title = {{METAFONT}: The Program}, date = 1986, maintitle = {Computers \& Typesetting}, volume = {D}, @@ -754,11 +750,10 @@ location = {Reading, Mass.}, langid = {english}, langidopts = {variant=american}, - sortyear = {1986-3}, sorttitle = {Computers & Typesetting D}, shorttitle = {METAFONT}, annotation = {The fourth volume of a five-volume book. Note the - \texttt{sorttitle} and \texttt{sortyear} fields}, + \texttt{sorttitle} field}, } @book{knuth:ct:e, @@ -771,13 +766,12 @@ location = {Reading, Mass.}, langid = {english}, langidopts = {variant=american}, - sortyear = {1986-4}, sorttitle = {Computers & Typesetting E}, annotation = {The fifth volume of a five-volume book. Note the - \texttt{sorttitle} and \texttt{sortyear} fields}, + \texttt{sorttitle} field}, } -@book{knuth:ct:related, +@mvbook{knuth:ct:related, author = {Knuth, Donald E.}, title = {Computers \& Typesetting}, date = {1984/1986}, @@ -786,7 +780,6 @@ location = {Reading, Mass.}, langid = {english}, langidopts = {variant=american}, - sortyear = {1984-0}, sorttitle = {Computers & Typesetting}, indexsorttitle= {Computers & Typesetting}, related = {knuth:ct:a,knuth:ct:b,knuth:ct:c,knuth:ct:d,knuth:ct:e}, @@ -909,7 +902,7 @@ \texttt{relatedtype} fields}, } -@book{nietzsche:ksa, +@mvbook{nietzsche:ksa, author = {Nietzsche, Friedrich}, title = {S{\"a}mtliche Werke}, date = 1988, @@ -919,16 +912,15 @@ publisher = dtv # { and Walter de Gruyter}, location = {M{\"u}nchen and Berlin and New York}, langid = {german}, - sortyear = {1988-0}, sorttitle = {Werke-00-000}, indexsorttitle= {Samtliche Werke}, subtitle = {Kritische Studienausgabe}, annotation = {The critical edition of Nietzsche's works. This is a - \texttt{book} entry referring to a 15-volume work as a + \texttt{mvbook} entry referring to a 15-volume work as a whole. Note the \texttt{volumes} field and the format of the \texttt{publisher} and \texttt{location} fields in the database file. Also note the \texttt{sorttitle} and - \texttt{sortyear} fields which are used to fine-tune the + field which is used to fine-tune the sorting order of the bibliography. We want this item listed first in the bibliography}, } @@ -946,7 +938,6 @@ publisher = dtv # { and Walter de Gruyter}, location = {M{\"u}nchen and Berlin and New York}, langid = {german}, - sortyear = {1988-1}, sorttitle = {Werke-01-000}, indexsorttitle= {Samtliche Werke I}, bookauthor = {Nietzsche, Friedrich}, @@ -955,8 +946,8 @@ annotation = {A single volume from the critical edition of Nietzsche's works. This \texttt{book} entry explicitly refers to the first volume only. Note the \texttt{title} and \texttt{maintitle} - fields. Also note the \texttt{sorttitle} and \texttt{sortyear} - fields. We want this entry to be listed after the entry + fields. Also note the \texttt{sorttitle} + field. We want this entry to be listed after the entry referring to the entire edition}, } @@ -1061,7 +1052,7 @@ the \texttt{related} and \texttt{relatedtype} fields}, } -@book{vazques-de-parga, +@mvbook{vazques-de-parga, author = {V{\'a}zques{ de }Parga, Luis and Lacarra, Jos{\'e} Mar{\'i}a and Ur{\'i}a R{\'i}u, Juan}, title = {Las Peregrinaciones a Santiago de Compostela}, @@ -1074,7 +1065,7 @@ sorttitle = {Peregrinaciones a Santiago de Compostela}, indextitle = {Peregrinaciones a Santiago de Compostela, Las}, shorttitle = {Peregrinaciones}, - annotation = {A multivolume book cited as a whole. This is a \texttt{book} + annotation = {A multivolume book cited as a whole. This is a \texttt{mvbook} entry with \texttt{volumes}, \texttt{note}, \texttt{sorttitle}, and \texttt{indextitle} fields}, } @@ -1108,7 +1099,7 @@ \texttt{indextitle} fields}, } -@collection{britannica, +@mvcollection{britannica, editor = {Preece, Warren E.}, title = {The {New Encyclop{\ae}dia Britannica}}, date = 2003, @@ -1123,7 +1114,7 @@ sorttitle = {Encyclop{\ae}dia Britannica}, indextitle = {{Encyclop{\ae}dia Britannica}, The {New}}, shorttitle = {{Encyclop{\ae}dia Britannica}}, - annotation = {This is a \texttt{collection} entry for an encyclopedia. Note + annotation = {This is a \texttt{mvcollection} entry for an encyclopedia. Note the \texttt{useeditor} option in the \texttt{options} field as well as the \texttt{sorttitle} field. We want this entry to be cited and alphabetized by title even though there is an @@ -1159,7 +1150,7 @@ pages = {1-23}, } -@collection{jaffe, +@mvcollection{jaffe, editor = {Jaff{\'e}, Philipp}, title = {Regesta Pontificum Romanorum ab condita ecclesia ad annum post Christum natum \textsc{mcxcviii}}, @@ -1173,7 +1164,7 @@ editoratype = {redactor}, indextitle = {Regesta Pontificum Romanorum}, shorttitle = {Regesta Pontificum Romanorum}, - annotation = {A \texttt{collection} entry with \texttt{edition} and + annotation = {A \texttt{mvcollection} entry with \texttt{edition} and \texttt{volumes} fields. Note the \texttt{editora} and \texttt{editoratype} fields}, } @@ -1252,7 +1243,6 @@ location = {M{\"u}nchen and Berlin and New York}, pages = {243-334}, langid = {german}, - sortyear = {1988-2}, sorttitle = {Werke-01-243}, indexsorttitle= {Vom Nutzen und Nachtheil der Historie fur das Leben}, indextitle = {Vom Nutzen und Nachtheil der Historie f{\"u}r das Leben}, @@ -1261,7 +1251,7 @@ This \texttt{inbook} entry explicitly refers to an essay found in the first volume. Note the \texttt{title}, \texttt{booktitle}, and \texttt{maintitle} fields. Also note - the \texttt{sorttitle} and \texttt{sortyear} fields. We want + the \texttt{sorttitle} field. We want this entry to be listed after the entry referring to the entire first volume}, } diff --git a/Master/texmf-dist/bibtex/bst/biblatex/biblatex.bst b/Master/texmf-dist/bibtex/bst/biblatex/biblatex.bst index a14e23a8f95..1d52835c94d 100644 --- a/Master/texmf-dist/bibtex/bst/biblatex/biblatex.bst +++ b/Master/texmf-dist/bibtex/bst/biblatex/biblatex.bst @@ -158,24 +158,29 @@ ENTRY { verbb verbc } - { skipbib skiplos skiplab useauthor useeditor usetranslator useprefix singletitle } - { entryoptions labelhash namehash fullhash dateyear dateendyear extradate labelalpha extraalpha - sortinit label.name label.year sortkey.nosort sortkey.name sortkey.year - sortkey.title sortkey.alpha sort.year sort.alph warningmsg } + { skipbib skiplos skiplab + useauthor useeditor usetranslator useprefix + singletitle } + { entryoptions labelhash namehash fullhash + dateyear dateendyear extradate labelalpha extraalpha label.name label.year + sortinit 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.maxnames ctrl.minnames ctrl.useauthor ctrl.useeditor ctrl.usetranslator + ctrl.maxnames ctrl.minnames ctrl.maxalphanames ctrl.minalphanames + ctrl.useauthor ctrl.useeditor ctrl.usetranslator ctrl.useprefix ctrl.labelalpha ctrl.singletitle - ctrl.labeldate citecount + ctrl.labeldate citecount tempctra tempctrb tempctrc resvctra resvctrb resvctrc last.extra.num } -STRINGS { ctrl.alphaothers ctrl.sortstr +STRINGS { ctrl.alphaothers ctrl.sortalphaothers ctrl.sortstr templist tempstrga tempstrgb resvstrga resvstrgb resvstrgc last.name last.hash last.year last.extra } FUNCTION {initialize} { - "$Revision: 3.8 $" + "$Revision: 3.11 $" #12 entry.max$ substring$ #-3 entry.max$ substring$ "Biblatex version: " swap$ * top$ @@ -190,8 +195,11 @@ FUNCTION {initialize} { #0 'ctrl.useprefix := #1 'ctrl.minnames := #99 'ctrl.maxnames := + #1 'ctrl.minalphanames := + #3 'ctrl.maxalphanames := #79 'ctrl.maxline := "+" 'ctrl.alphaothers := + " " 'ctrl.sortalphaothers := "nty" 'ctrl.sortstr := } @@ -255,8 +263,8 @@ FUNCTION {ctrl:skiplab} { } FUNCTION {ctrl:labelalpha} { - ctrl.labelalpha ctrl:skiplab not and - shorthand empty$ + ctrl.labelalpha + ctrl:skiplab not and } @@ -474,7 +482,7 @@ FUNCTION {push:labelname:editor} { if$ } { "shorteditor" } - if$ + if$ } { push:labelname:translator } if$ @@ -596,7 +604,7 @@ FUNCTION {push:labelname} { if$ } { "shortauthor" } - if$ + if$ } { push:labelname:editor } if$ @@ -610,7 +618,7 @@ FUNCTION {check:sortname} { } FUNCTION {warning} { - "\item " swap$ * + "\item " swap$ * warningmsg empty$ 'skip$ { warningmsg " " * swap$ * } @@ -679,14 +687,16 @@ FUNCTION {format:name:part} { } FUNCTION {format:name:initials} { + ".-" "\bibinithyphendelim " str:replace ".~" "\bibinitperiod\bibinitdelim " str:replace + ". " "\bibinitperiod\bibinitdelim " str:replace "." "\bibinitperiod" str:replace } FUNCTION {is.number} { #1 { #0 > } - { duplicate$ #1 #1 substring$ chr.to.int$ + { duplicate$ #1 #1 substring$ chr.to.int$ duplicate$ #47 > swap$ #58 < and @@ -873,7 +883,7 @@ FUNCTION {split.date} { split.date:date tempctra 'skip$ - { pop$ pop$ pop$ pop$ pop$ pop$ "" "" "" "" "" "" + { pop$ pop$ pop$ pop$ pop$ pop$ "" "" "" "" "" "" templist warning:invalid } if$ @@ -906,7 +916,7 @@ FUNCTION {sortkey:name:format} { { templist tempctra "{vv}" format.name$ duplicate$ empty$ { pop$ "" } - { "u" change.case$ "t" change.case$ + { "u" change.case$ "t" change.case$ delimiter.3 * } if$ templist tempctra @@ -1122,7 +1132,7 @@ FUNCTION {output:write:year} { 'skip$ if$ swap$ "\field" swap$ wrap:braces * - swap$ wrap:braces * output:indent:field + swap$ wrap:braces * output:indent:field } if$ } @@ -1201,7 +1211,8 @@ FUNCTION {output:write:verb} { { 'tempstrga := "\verb" swap$ wrap:braces * output:indent:field { tempstrga empty$ not } - { "\verb " tempstrga #1 ctrl.maxline #10 - substring$ * output:indent:field + { "\verb " tempstrga #1 ctrl.maxline #10 - substring$ * + output:indent:field tempstrga ctrl.maxline #9 - global.max$ substring$ 'tempstrga := } while$ @@ -1315,7 +1326,7 @@ FUNCTION {output:write:name} { output:write:name:prefix output:write:name:last output:write:name:suffix - output:write:name:first + output:write:name:first "}}%" output:indent:subfield tempctra #1 + 'tempctra := tempctrb #1 - 'tempctrb := @@ -1346,28 +1357,28 @@ FUNCTION {output:write:list} { #0 'tempctrc := { templist purify tempctrb global.max$ substring$ num.names$ #0 > } { templist tempctrb #1 substring$ "{" = - { tempctrc #1 + 'tempctrc := - tempctrb #1 + 'tempctrb := } - { templist tempctrb #1 substring$ "}" = - { tempctrc #1 - 'tempctrc := - tempctrb #1 + 'tempctrb := } - { templist tempctrb #5 substring$ - duplicate$ " AND " = - swap$ " and " = - or - tempctrc #1 < - and - { templist tempctra tempctrb tempctra - substring$ - wrap:braces "%" * output:indent:subfield - tempctrb #5 + duplicate$ - 'tempctra := - 'tempctrb := - } - { tempctrb #1 + 'tempctrb := } - if$ - } + { tempctrc #1 + 'tempctrc := + tempctrb #1 + 'tempctrb := } + { templist tempctrb #1 substring$ "}" = + { tempctrc #1 - 'tempctrc := + tempctrb #1 + 'tempctrb := } + { templist tempctrb #5 substring$ + duplicate$ " AND " = + swap$ " and " = + or + tempctrc #1 < + and + { templist tempctra tempctrb tempctra - substring$ + wrap:braces "%" * output:indent:subfield + tempctrb #5 + duplicate$ + 'tempctra := + 'tempctrb := + } + { tempctrb #1 + 'tempctrb := } + if$ + } if$ - } + } if$ } while$ @@ -1388,7 +1399,7 @@ FUNCTION {output:specials} { { "\set" } { "\inset" } if$ - entryset wrap:braces * output:indent:field + entryset wrap:braces * output:indent:field } if$ xref empty$ @@ -1661,7 +1672,7 @@ FUNCTION {output:compat.1} { if$ } if$ - output:write:field + output:write:field "location" location duplicate$ empty$ { pop$ address } @@ -1887,14 +1898,16 @@ FUNCTION {input:control:options} { % This version corresponds to the .bbl version, *not* the biblatex version! FUNCTION {input:control:version} { input:control:parse - "$Revision: 2.9 $" + "$Revision: 3.0 $" #12 entry.max$ substring$ #-3 entry.max$ substring$ 'tempstrga := duplicate$ tempstrga = { pop$ } - { "Version mismatch: biblatex.bst=" tempstrga * - ", biblatex.sty=" * swap$ * warning$ + { "bbl version mismatch: biblatex.bst has " tempstrga * + ", but biblatex.sty has " * swap$ * warning$ + " The bbl version need not be the same as the biblatex version." + top$ pop$ "" } if$ } @@ -1918,8 +1931,11 @@ FUNCTION {input:control} { input:control:options 'ctrl.sorting := input:control:options 'ctrl.maxnames := input:control:options 'ctrl.minnames := + input:control:options 'ctrl.maxalphanames := + input:control:options 'ctrl.minalphanames := input:control:options 'ctrl.maxline := input:control:parse 'ctrl.alphaothers := + input:control:parse 'ctrl.sortalphaothers := 'ctrl.sortstr := } if$ @@ -1952,10 +1968,10 @@ FUNCTION {input:options:known} { { tempstrgb input:options:add #1 } { duplicate$ "true" = - { pop$ "" tempstrgb input:options:add + { pop$ "" tempstrgb input:options:add #1 } { duplicate$ tempstrgb input:options:add - bol.to.int + bol.to.int } if$ } @@ -1978,11 +1994,11 @@ FUNCTION {input:options:parse} { { input:options:known 'skiplos := } { tempstrgb "skiplab" = { input:options:known 'skiplab := } - { tempstrgb "dataonly" = - { input:options:known + { tempstrgb "dataonly" = + { input:options:known duplicate$ 'skipbib := - duplicate$ 'skiplos := - 'skiplab := + duplicate$ 'skiplos := + 'skiplab := } { tempstrgb input:options:add } if$ @@ -2072,8 +2088,8 @@ FUNCTION {input:iterate} { ctrl:set entryset empty$ or 'skip$ { #1 'skipbib := - #1 'skiplos := - #1 'skiplab := + #1 'skiplos := + #1 'skiplab := } if$ "date" date split.date @@ -2122,7 +2138,7 @@ FUNCTION {makelabel:name:format} { { templist tempctra "{vv}" format.name$ duplicate$ empty$ { pop$ "" } - { "u" change.case$ "t" change.case$ + { "u" change.case$ "t" change.case$ delimiter.3 * } if$ } @@ -2168,8 +2184,8 @@ FUNCTION {makelabel:alpha:format} { { templist num.names$ #1 - 'tempctrb := } { templist num.names$ 'tempctrb := } if$ - tempctrb ctrl.maxnames > - { ctrl.minnames 'tempctrb := } + tempctrb ctrl.maxalphanames > + { ctrl.minalphanames 'tempctrb := } 'skip$ if$ tempctrb #1 > @@ -2197,7 +2213,7 @@ FUNCTION {makelabel:alpha:format} { if$ } if$ - templist num.names$ ctrl.maxnames > + templist num.names$ ctrl.maxalphanames > templist andothers or { ctrl.alphaothers * } @@ -2273,33 +2289,36 @@ FUNCTION {makelabel:hash:format:full} { FUNCTION {makelabel:ctrl:alpha} { ctrl:labelalpha - { label empty$ - { push:cite purify #1 #3 substring$ - "u" change.case$ "t" change.case$ } - { label makelabel:alpha:year * } - if$ - } { shorthand empty$ - { "" } + { label empty$ + { push:cite purify #1 #3 substring$ + "u" change.case$ "t" change.case$ } + { label makelabel:alpha:year * } + if$ + } { shorthand } if$ } + { "" } if$ } FUNCTION {makelabel:ctrl:alpha:format} { ctrl:labelalpha - { label empty$ - { makelabel:alpha:format } - { pop$ label } + { shorthand empty$ + { label empty$ + { makelabel:alpha:format } + { pop$ label } + if$ + makelabel:alpha:year * + } + { pop$ + shorthand + } if$ - makelabel:alpha:year * } { pop$ - ctrl.labelalpha not shorthand empty$ or - { "" } - { shorthand } - if$ + "" } if$ } @@ -2353,7 +2372,8 @@ FUNCTION {labelsort:main} { FUNCTION {labelsort:alph} { ctrl:labelalpha - { labelalpha normalize delimiter.1 * + { labelalpha ctrl.alphaothers ctrl.sortalphaothers str:replace + purify delimiter.1 * push:presort * delimiter.1 * sortkey empty$ { ctrl.sorting #10 > @@ -2620,8 +2640,13 @@ FUNCTION {labelsort:alph:reverse} { labelalpha empty$ 'skip$ { extraalpha empty$ - { labelalpha normalize 'sortkey.alpha := } - { labelalpha normalize extraalpha #4 pad.number * 'sortkey.alpha := } + { labelalpha ctrl.alphaothers ctrl.sortalphaothers str:replace + purify + 'sortkey.alpha := } + { labelalpha ctrl.alphaothers ctrl.sortalphaothers str:replace + purify + extraalpha #4 pad.number * + 'sortkey.alpha := } if$ } if$ @@ -2705,7 +2730,7 @@ SORT % This version corresponds to the .bbl version, *not* the biblatex version! FUNCTION {output:main:begin} { "% $ biblatex auxiliary file $" write$ newline$ - "% $ biblatex bbl format version " "$Revision: 2.9 $" + "% $ biblatex bbl format version " "$Revision: 3.0 $" #12 entry.max$ substring$ #-3 entry.max$ substring$ * " $" * write$ newline$ "% Do not modify the above lines!" write$ newline$ "%" write$ newline$ @@ -2723,7 +2748,7 @@ FUNCTION {output:main:begin} { " {}" write$ newline$ "\endgroup" write$ newline$ newline$ - "\datalist[entry]{" ctrl.sortstr * "/global//global/global}" * write$ + "\datalist[entry]{" ctrl.sortstr * "/global//global/global}" * write$ } FUNCTION {output:main:preamble} { diff --git a/Master/texmf-dist/doc/latex/biblatex/CHANGES.md b/Master/texmf-dist/doc/latex/biblatex/CHANGES.md index 6bc039b0134..ed0c8706740 100644 --- a/Master/texmf-dist/doc/latex/biblatex/CHANGES.md +++ b/Master/texmf-dist/doc/latex/biblatex/CHANGES.md @@ -1,3 +1,125 @@ +# RELEASE NOTES FOR VERSION 3.12 +- **INCOMPATIBLE CHANGE** The syntax for defining data annotations in the + BibLaTeXML data source format has changed to accommodate named + annotations. Annotations are no longer attributes but are fully-fledged + elements. It is not expected that this will impact any current users. +- **INCOMPATIBLE CHANGE** The field/fieldset argument to the `\translit` + command is now mandatory to allow for a new optional argument which + restricts transliteration to entries with particular `langid` fields. +- The field `sortyear` is an integer field now and not a literal. This is + because the `sortX` fields should be the same datatype as the `X` field + as sorting depends on this. This fixes an issue where years were not + sorted properly as integers. `sortyear` was sometimes used to tune date + sorting as in "1984-1", "1984-2" etc. for multi-volume collections with + the same year. However, this is really an abuse of the sorting template + system since this should be done by having a semantically more granular + sorting item to differentiate below the year level (typically, `volume` + does this for multi-volume works and this is already part of all default + sorting templates). The example .bib that comes with biblatex has been + changed to remove such `sortyear` abuses and the sorting is not impacted + as they examples using this already have either `volume` or `sorttitle` + which made this abuse of `sortyear` unnecessary anyway. +- The field `number` is a literal field now and not an integer. This allows for + a wider range of possible input such as "S1", "Suppl. 1", "1-3". + If you want to sort by `number` and only have integers in there, you should + consider using a custom data model to turn `number` back into an integer type + field, since sorting integers as literals has performance implications and + might lead to undesired sorting such as "1", "10", "2". +- **INCOMPATIBLE CHANGE** Removed the 'semi-hidden' option `noerroretextools`. + If you want to load `noerroretextools` now, you need to define the macro + `\blx@noerroretextools` instead. This can for example be done with + ``` + \usepackage{etoolbox} + \cslet{blx@noerroretextools}\empty + \usepackage{biblatex} + ``` + or + ``` + \makeatletter + \let\blx@noerroretextools\@empty + \makeatother + \usepackage{biblatex} + ``` + You still need to make sure that all macros used by `biblatex` are restored + to their `etoolbox` definitions before loading `biblatex`. +- New macro `\abx@missing@entry` to style missing entrykeys in citations. +- Added field format deprecation macros `\DeprecateFieldFormatWithReplacement` + and friends. +- Add `\ifdateyearsequal` to check if two dates have the same year and era + date part. Since `year`s are always non-negative integers and the 'sign' is + stored as the `era`, you should use `\ifdateyearsequal` instead of a simple + `\iffieldequals{#1year}{#2year}` to compare years. The latter can lead to + undesired results if the years have opposite signs, but are otherwise the + same. +- New values `part+`, `chapter+`, `section+` and `subsection+` for 'section'- + valued options `refsection`, `refsegment` and `citereset`. These options + are then executed at not only the specified level of sectioning, but also + all higher levels. +- Add second optional argument to `\DeclareDelimAlias*`. +- Allow keywords for dataonly/skipped entries as well. +- Added `maxcitecounter`. +- Deprecate `\labelnamepunct` in favour of the context-sensitive + `nametitledelim`. + For compatibility reasons `\labelnamepunct` still pops up in the code here + and there, but `nametitledelim` should be preferred now. +- The `xstring` package is not loaded by default any more. + Style developers whose styles make use of that package should load it + explicitly. +- `authoryear.bbx` now has a macro `bbx:ifmergeddate` that can be used to + check whether the date has been printed at the beginning of an entry + and can thus be suppressed later in the `date` and `issue+date` macros. + The macro works like a test and expands to the `` branch if the date + has been merged and can be suppressed, it expands to `` if the date + has not been merged. In practice `\printdate` should then be issued + if and only if the test yields false. + + This change means that the definition of the `date` macro can be the same for + all mergedate settings and that only `bbx:ifmergeddate` is redefined for + each different value. No backwards compatibility issues are expected, + but style authors are encouraged to test the changes and see if the new + macro could be useful for their styles. +- For a long time `biblatex` has defined `\enquote` if `csquotes` was not + loaded. This behaviour was not documented, the official command intended + for quotation marks was always `\mkbibquote`. Because `biblatex` should not + (re)define user-level commands that are not primarily associated with + citations or the bibliography, from this release on `\enquote` is not defined + any more, instead the internal command `\blx@enquote` is defined and used. + The same holds for `\initoquote`, `\initiquote`, `\textooquote`, + `\textcoquote`, `\textoiquote`, `\textciquote`. + `biblatex` still defines the internal commands `\@quotelevel`, `\@quotereset` + and `\@setquotesfcodes` if `csquotes` is not loaded. + + Users are encouraged to use `csquotes` for proper quotation marks, but can + get back the old behaviour with + ``` + \makeatletter + \providerobustcmd*{\enquote}{\blx@enquote} + \makeatother + ``` + or + ``` + \newrobustcmd*{\enquote}{\mkbibquote} + ``` +- Add new list wrapper and name wrapper formats (`\DeclareListWrapperFormat`, + `\DeclareNameWrapperFormat`) to style a (name) lists in its entirety. + This is useful because name and lists formats normally style only one + particular item of the list. The wrapper format can be used to easily format + the entire list in italics, for example. +- `\DeclareCitePunctuationPosition` can be used to configure the punctuation + position for citation commands similar to the optional `position` argument + of `\DeclareAutoCiteCommand`. +- If the `\pdfmdfivesum` primitive is available (via `pdftexcmds`' + `\pdf@mdfivesum`) the `labelprefix` value is hashed for internal use, making + it safer for construction of macro names and the like. If you don't like + that you can turn off the behaviour by redefining `\blx@mdfivesum`. The + fallback in case `\pdf@mdfivesum` is unavailable is + ``` + \let\blx@mdfivesum\@firstofone + ``` + + As before the labelprefix value is fully expanded before use. If its contents + are unexpandable you need to avoid expansion with `\detokenize`. + # RELEASE NOTES FOR VERSION 3.11 - `\printbiblist` now supports `driver` and `biblistfilter` options to change the defaults set by the biblistname. diff --git a/Master/texmf-dist/doc/latex/biblatex/biblatex.pdf b/Master/texmf-dist/doc/latex/biblatex/biblatex.pdf index 16808149878..a10f2e00ef5 100644 Binary files a/Master/texmf-dist/doc/latex/biblatex/biblatex.pdf and b/Master/texmf-dist/doc/latex/biblatex/biblatex.pdf differ diff --git a/Master/texmf-dist/doc/latex/biblatex/biblatex.tex b/Master/texmf-dist/doc/latex/biblatex/biblatex.tex index 8d01c37d4ec..4ad37d7f3e3 100644 --- a/Master/texmf-dist/doc/latex/biblatex/biblatex.tex +++ b/Master/texmf-dist/doc/latex/biblatex/biblatex.tex @@ -60,7 +60,7 @@ url={\biblatexhome}, author={Philipp Lehman \\(with Philip Kime, Moritz Wemheuer, Audrey Boruvka and Joseph Wright)}, email={}, - revision={3.11}, + revision={3.12}, date={\today}} \hypersetup{% @@ -183,13 +183,14 @@ Kaloyan Ganev (Bulgarian); Sebastià Vila-Marta (Catalan); Ivo Pletikosić (Croatian); Michal Hoftich (Czech); -Jonas Nyrup (Danish); +Christian Mondrup, Jonas Nyrup (Danish); Johannes Wilm (Danish\slash Norwegian); Alexander van Loon, Pieter Belmans, Hendrik Maryns (Dutch); -Benson Muite (Estonian); +Kristian Kankainen, Benson Muite (Estonian); Hannu Väisänen, Janne Kujanpää (Finnish); Denis Bitouzé (French); Apostolos Syropoulos, Prokopis (Greek); +Márton Marczell, Bence Ferdinandy (Hungarian); Baldur Kristinsson (Icelandic); Enrico Gregorio, Andrea Marchitelli (Italian); Rihards Skuja (Latvian); @@ -198,7 +199,7 @@ Anastasia Kandulina, Yuriy Chernyshov (Polish); José Carlos Santos (Portuguese); Oleg Domanov (Russian); Martin Vrábel, Dávid Lupták (Slovak); -Tea Tušar and Bogdan Filipič (Slovene); +Tea Tušar, Bogdan Filipič (Slovene); Ignacio Fernández Galván (Spanish); Per Starbäck, Carl-Gustav Werner, Filip Åsblom (Swedish); Sergiy M. Ponomarenko (Ukrainian). @@ -230,8 +231,8 @@ This \latex package, which is also loaded automatically, is used for internal op \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://ctan.org/pkg/logreq/} -\item[xstring] -This \latex package, which is also loaded automatically, provides advanced string processing macros. It is available from \acr{CTAN}.\fnurl{http://ctan.org/pkg/xstring/} +\item[pdftexcmds] +This \latex package, which is loaded automatically, implements \pdftex primitives for \luatex, it also offers a unified interface for these primitives across engines. It is available from \acr{CTAN}.\fnurl{http://ctan.org/pkg/pdftexcmds/} \end{marglist} @@ -335,9 +336,9 @@ The \sty{ucs} package provides support for \utf encoded input. Either use \sty{i The \sty{etextools} package provides enhancements to list macros defined by \sty{etoolbox} and a few other tools for command definitions. The package redefines list handling macros in a way incompatible with \biblatex. -If you must load the \sty{etextools} package at all costs, use the load-time option \opt{noerroretextools}. -With \kvopt{noerroretextools}{true} no error will be issued if \sty{etextools} is loaded, that message is degraded to a warning instead. -In that case you need to make sure that \cmd{forlistloop} has its original \sty{etoolbox} definition when \biblatex\ is loaded. +If you must load the \sty{etextools} package at all costs, define the control sequence \cs{blx@noerroretextools} before you load \biblatex. +If \cs{blx@noerroretextools} is defined, no error will be issued if \sty{etextools} is loaded, the message is degraded to a warning instead. +In that case you need to make sure that all redefined macros used by \biblatex\ (currently only \cmd{forlistloop}) have their original \sty{etoolbox} definitions when \biblatex\ is loaded. \end{marglist} @@ -347,7 +348,7 @@ In that case you need to make sure that \cmd{forlistloop} has its original \sty{ \biber\ versions are closely coupled with \biblatex\ versions. 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 +\biblatex\ version which is incompatible. \Tabref{tab:int:pre:bibercompat} shows a compatibility matrix for the recent versions. \begin{table} @@ -492,28 +493,28 @@ Technical or other documentation, not necessarily in printed form. The \bibfield A fallback type for entries which do not fit into any other category. Use the field \bibfield{howpublished} to supply publishing information in free format, if applicable. The field \bibfield{type} may be useful as well. \bibfield{author}, \bibfield{editor}, and \bibfield{year} are omissible in terms of \secref{bib:use:key}. \reqitem{author/editor, title, year/date} -\optitem{subtitle, titleaddon, language, howpublished, type, version, note, organization, location, date, month, year, addendum, pubstate, doi, eprint, eprintclass, eprinttype, url, urldate} +\optitem{subtitle, titleaddon, language, howpublished, type, version, note, organization, location, month, addendum, pubstate, doi, eprint, eprintclass, eprinttype, url, urldate} \typeitem{online} An online resource. \bibfield{author}, \bibfield{editor}, and \bibfield{year} are omissible in terms of \secref{bib:use:key}. This entry type is intended for sources such as web sites which are intrinsically online resources. Note that all entry types support the \bibfield{url} field. For example, when adding an article from an online journal, it may be preferable to use the \bibtype{article} type and its \bibfield{url} field. \reqitem{author/editor, title, year/date, url} -\optitem{subtitle, titleaddon, language, version, note, organization, date, month, year, addendum, pubstate, urldate} +\optitem{subtitle, titleaddon, language, version, note, organization, month, addendum, pubstate, doi, eprint, eprintclass, eprinttype, urldate} \typeitem{patent} A patent or patent request. The number or record token is given in the \bibfield{number} field. Use the \bibfield{type} field to specify the type and the \bibfield{location} field to indicate the scope of the patent, if different from the scope implied by the \bibfield{type}. Note that the \bibfield{location} field is treated as a key list with this entry type, see \secref{bib:fld:typ} for details. \reqitem{author, title, number, year/date} -\optitem{holder, subtitle, titleaddon, type, version, location, note, date, month, year, addendum, pubstate, doi, eprint, eprintclass, eprinttype, url, urldate} +\optitem{holder, subtitle, titleaddon, type, version, location, note, month, addendum, pubstate, doi, eprint, eprintclass, eprinttype, url, urldate} \typeitem{periodical} An complete issue of a periodical, such as a special issue of a journal. The title of the periodical is given in the \bibfield{title} field. If the issue has its own title in addition to the main title of the periodical, it goes in the \bibfield{issuetitle} field. The \bibfield{editor} is omissible in terms of \secref{bib:use:key}. \reqitem{editor, title, year/date} -\optitem{editora, editorb, editorc, subtitle, issuetitle, issuesubtitle, language, series, volume, number, issue, date, month, year, note, issn, addendum, pubstate, doi, eprint, eprintclass, eprinttype, url, urldate} +\optitem{editora, editorb, editorc, subtitle, issuetitle, issuesubtitle, language, series, volume, number, issue, month, note, issn, addendum, pubstate, doi, eprint, eprintclass, eprinttype, url, urldate} \typeitem{suppperiodical} @@ -575,7 +576,7 @@ A thesis written for an educational institution to satisfy the requirements for A work with an author and a title which has not been formally published, such as a manuscript or the script of a talk. Use the fields \bibfield{howpublished} and \bibfield{note} to supply additional information in free format, if applicable. \reqitem{author, title, year/date} -\optitem{subtitle, titleaddon, type, eventtitle, eventtitleaddon, eventdate, venue, language, howpublished, note, location, isbn, date, month, year, addendum, pubstate, url, urldate} +\optitem{subtitle, titleaddon, type, eventtitle, eventtitleaddon, eventdate, venue, language, howpublished, note, location, isbn, month, addendum, pubstate, url, urldate} \typeitem{xdata} @@ -583,7 +584,7 @@ This entry type is special. \bibtype{xdata} entries hold data which may be inher \typeitem{custom[a--f]} -Custom types for special bibliography styles. Not used by the standard styles. +Custom types for special bibliography styles. The standard styles defined no bibliography drivers for these types. \end{typelist} @@ -610,10 +611,10 @@ An alias for \bibtype{online}, provided for \sty{jurabib} compatibility. \end{typelist} -\subsubsection{Unsupported Types} +\subsubsection{Non-standard Types} \label{bib:typ:ctm} -The types in this section are similar to the custom types \bibtype{custom[a--f]}, \ie the standard bibliography styles provide no support for these types. When using the standard styles, they will be treated as \bibtype{misc} entries. +The types in this section are similar to the custom types \bibtype{custom[a--f]}, \ie the standard bibliography styles provide no bibliography drivers for these types. When using the standard styles, they will therefore generally be treated as \bibtype{misc} entries---exceptions to this rule are noted in the descriptions below. The types are known to the default data model and will be happily accepted by \biber. \begin{typelist} @@ -729,7 +730,7 @@ The supported list of name parts is defined as a constant list in the default da \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 integers which may be converted to ordinals or strings as they are printed. A typical example is the \bibfield{extradate} or \bibfield{volume} field. Such fields are sorted as integers. \biber makes a (quite serious) effort to map non-arabic representations (roman numerals for example) to integers for sorting purposes. +\item[Integer fields] hold integers which may be converted to ordinals or strings as they are printed. A typical example is the \bibfield{extradate} or \bibfield{volume} field. Such fields are sorted as integers. \biber makes a (quite serious) effort to map non-arabic representations (roman numerals for example) to integers for sorting purposes. See the \opt{noroman} option which can be used to suppress roman numeral parsing. This can help in cases where there is an ambiguity between parsing as roman numerals or alphanumeric (e.g. ), see \secref{use:opt:pre:int}. \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 of datatype \bibfield{date} in the datamodel, datepart fields are automatically created with the following names: \bibfield{$<$datetype$>$year}, \bibfield{$<$datetype$>$endyear}, \bibfield{$<$datetype$>$month}, \bibfield{$<$datetype$>$endmonth}, \bibfield{$<$datetype$>$day}, \bibfield{$<$datetype$>$endday}, \bibfield{$<$datetype$>$hour}, \bibfield{$<$datetype$>$endhour}, \bibfield{$<$datetype$>$minute}, \bibfield{$<$datetype$>$endminute}, \bibfield{$<$datetype$>$second}, \bibfield{$<$datetype$>$endsecond}, \bibfield{$<$datetype$>$timezone}, \bibfield{$<$datetype$>$endtimezone}. $<$datetype$>$ is the string preceding for any datamodel field of \kvopt{datatype}{date}. For example, in the default datamodel, , , and the empty string <> for the date field \bibfield{date}. @@ -901,7 +902,7 @@ The author(s) of a foreword to the work. If the author of the foreword is identi \listitem{holder}{name} -The holder(s) of a \bibtype{patent}, if different from the \bibfield{author}. Not that corporate holders need to be wrapped in an additional set of braces, see \secref{bib:use:inc} for details. This list may also be useful for the custom types listed in \secref{bib:typ:ctm}. +The holder(s) of a \bibtype{patent}, if different from the \bibfield{author}. Note that corporate holders need to be wrapped in an additional set of braces, see \secref{bib:use:inc} for details. This list may also be useful for the custom types listed in \secref{bib:typ:ctm}. \fielditem{howpublished}{literal} @@ -941,7 +942,7 @@ The International Standard Serial Number of a periodical. \fielditem{issue}{literal} -The issue of a journal. This field is intended for journals whose individual issues are identified by a designation such as or rather than the month or a number. Since the placement of \bibfield{issue} is similar to \bibfield{month} and \bibfield{number}, this field may also be useful with double issues and other special cases. See also \bibfield{month}, \bibfield{number}, and \secref{bib:use:iss}. +The issue of a journal. This field is intended for journals whose individual issues are identified by a designation such as or rather than the month or a number. The placement of \bibfield{issue} is similar to \bibfield{month} and \bibfield{number}, integer ranges and short designators are better written to the \bibfield{number} field. See also \bibfield{month}, \bibfield{number}, and \secref{bib:use:iss}. \fielditem{issuesubtitle}{literal} @@ -1005,9 +1006,9 @@ An addon to be printed immediately after the author name in the bibliography. No Miscellaneous bibliographic data which does not fit into any other field. The \bibfield{note} field may be used to record bibliographic data in a free format. Publication facts such as «Reprint of the edition London 1831» are typical candidates for the \bibfield{note} field. See also \bibfield{addendum}. -\fielditem{number}{integer} +\fielditem{number}{literal} -The number of a journal or the volume\slash number of a book in a \bibfield{series}. See also \bibfield{issue} as well as \secref{bib:use:ser, bib:use:iss}. With \bibtype{patent} entries, this is the number or record token of a patent or patent request. It is expected to be an integer, not necessarily in arabic numerals since \biber will automatically from roman numerals or arabic letter to integers internally for sorting purposes. +The number of a journal or the volume\slash number of a book in a \bibfield{series}. See also \bibfield{issue} as well as \secref{bib:use:ser, bib:use:iss}. With \bibtype{patent} entries, this is the number or record token of a patent or patent request. Normally this field will be an integer or an integer range, but in certain cases it may also contain «S1», «Suppl.\ 1», in these cases the output should be scrutinised carefully. \listitem{organization}{literal} @@ -1131,11 +1132,11 @@ The revision number of a piece of software, a manual, etc. \fielditem{volume}{integer} -The volume of a multi"=volume book or a periodical. It is expected to be an integer, not necessarily in arabic numerals since \biber will automatically from roman numerals or arabic letter to integers internally for sorting purposes. See also \bibfield{part}. +The volume of a multi"=volume book or a periodical. It is expected to be an integer, not necessarily in arabic numerals since \biber will automatically from roman numerals or arabic letter to integers internally for sorting purposes. See also \bibfield{part}. See the \opt{noroman} option which can be used to suppress roman numeral parsing. This can help in cases where there is an ambiguity between parsing as roman numerals or alphanumeric (e.g. ), see \secref{use:opt:pre:int}. \fielditem{volumes}{integer} -The total number of volumes of a multi"=volume work. Depending on the entry type, this field refers to \bibfield{title} or \bibfield{maintitle}. It is expected to be an integer, not necessarily in arabic numerals since \biber will automatically from roman numerals or arabic letter to integers internally for sorting purposes. +The total number of volumes of a multi"=volume work. Depending on the entry type, this field refers to \bibfield{title} or \bibfield{maintitle}. It is expected to be an integer, not necessarily in arabic numerals since \biber will automatically from roman numerals or arabic letter to integers internally for sorting purposes. See the \opt{noroman} option which can be used to suppress roman numeral parsing. This can help in cases where there is an ambiguity between parsing as roman numerals or alphanumeric (e.g. ), see \secref{use:opt:pre:int}. \fielditem{year}{literal} @@ -1198,6 +1199,7 @@ German (new) & Germany & \opt{ngerman} \\ & Austria & \opt{naustrian} \\ & Switzerland & \opt{nswissgerman} \\ Greek & Greece & \opt{greek} \\ +Hungarian & Hungary & \opt{magyar}, \opt{hungarian} \\ Icelandic & Iceland & \opt{icelandic} \\ Italian & Italy & \opt{italian} \\ Latvian & Latvia & \opt{latvian} \\ @@ -1302,9 +1304,9 @@ Similar to \bibfield{sortkey} but used in the list of shorthands. If present, \b A field used to modify the sorting order of the bibliography. If present, this field is used instead of the \bibfield{title} field when sorting the bibliography. The \bibfield{sorttitle} field may come in handy if you have an entry with a title like «An Introduction to\dots» and want that alphabetized under rather than . In this case, you could put «Introduction to\dots» in the \bibfield{sorttitle} field. 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{sortyear}{literal} +\fielditem{sortyear}{integer} -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}. Note that this is not an integer but rather a literal field as sometimes things like «1984-1» are used to modify temporal sorting. +A field used to modify the sorting order of the bibliography. In the default sorting templates, if this field is present, it 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} @@ -1362,7 +1364,7 @@ An alias for \bibfield{annotation}, provided for \sty{jurabib} compatibility. Se \fielditem{archiveprefix}{literal} -An alias for \bibfield{eprinttype}, provided for arXiv compatibility. See \secref{bib:fld:dat,use:use:epr}. +An alias for \bibfield{eprinttype}, provided for arXiv compatibility. See \secref{bib:fld:dat,use:use:epr}. \fielditem{journal}{literal} @@ -1378,7 +1380,7 @@ An alias for \bibfield{file}, provided for JabRef compatibility. See \secref{bib \fielditem{primaryclass}{literal} -An alias for \bibfield{eprintclass}, provided for arXiv compatibility. See \secref{bib:fld:dat,use:use:epr}. +An alias for \bibfield{eprintclass}, provided for arXiv compatibility. See \secref{bib:fld:dat,use:use:epr}. \listitem{school}{literal} @@ -1589,7 +1591,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 localisation 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} @@ -1822,7 +1824,7 @@ 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. 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 (or the datasource specific override for this, see \secref{use:bib:res}) 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} @@ -1861,7 +1863,7 @@ Since \kvopt{bibencoding}{auto} is the default setting, the option is omissible. \usepackage[bibencoding=latin1]{biblatex} \end{ltxexample} -The same scenario with \xetex or \luatex in native \utf mode: +The same scenario with \latex release 2018-04-01 or above, \xetex or \luatex in native \utf mode: \begin{ltxexample} \usepackage[bibencoding=latin1]{biblatex} @@ -2043,11 +2045,11 @@ Whether or not to sort set members according to the active reference context sor \intitem[3]{maxnames} -A threshold affecting all lists of names (\bibfield{author}, \bibfield{editor}, etc.). If a list exceeds this threshold, \ie if it holds more than \prm{integer} names, it is automatically truncated according to the setting of the \opt{minnames} option. \opt{maxnames} is the master option which sets both \opt{maxbibnames} and \opt{maxcitenames}. +A threshold affecting all lists of names (\bibfield{author}, \bibfield{editor}, etc.). If a list exceeds this threshold, \ie if it holds more than \prm{integer} names, it is automatically truncated according to the setting of the \opt{minnames} option. \opt{maxnames} is the master option which sets \opt{maxbibnames}, \opt{maxcitenames} and \opt{maxsortnames}. Note that the \opt{uniquelist} feature can locally override \opt{maxnames}, see the documentation of the \opt{uniquelist} option in \secref{use:opt:pre:int} and \secref{aut:cav:amb}. \intitem[1]{minnames} -A limit affecting all lists of names (\bibfield{author}, \bibfield{editor}, etc.). If a list holds more than \prm{maxnames} names, it is automatically truncated to \prm{minnames} names. The \prm{minnames} value must be smaller than or equal to \prm{maxnames}. \opt{minnames} is the master option which sets both \opt{minbibnames} and \opt{mincitenames}. +A limit affecting all lists of names (\bibfield{author}, \bibfield{editor}, etc.). If a list holds more than \prm{maxnames} names, it is automatically truncated to \prm{minnames} names. The \prm{minnames} value must be smaller than or equal to \prm{maxnames}. \opt{minnames} is the master option which sets both \opt{minbibnames} and \opt{mincitenames}. Like \opt{maxnames} the value of \opt{minnames} can be overridden by \opt{uniquelist}. \intitem[\prm{maxnames}]{maxbibnames} @@ -2061,10 +2063,19 @@ Similar to \opt{minnames} but affects only the bibliography. Similar to \opt{maxnames} but affects only the citations in the document body. + \intitem[\prm{minnames}]{mincitenames} Similar to \opt{minnames} but affects only the citations in the document body. +\intitem[\prm{maxbibnames}]{maxsortnames} + +Similar to \opt{maxnames} but affects only the names visible to sorting. Since this defaults to \prm{maxbibnames}, you should set this after \opt{maxbibnames} if \opt{maxbibnames} is explicitly set. + +\intitem[\prm{minbibnames}]{minsortnames} + +Similar to \opt{minnames} but affects only the names visible to sorting. Since this defaults to \prm{minbibnames}, you should set this after \opt{minbibnames} if \opt{minbibnames} is explicitly set. + \intitem[3]{maxitems} Similar to \opt{maxnames}, but affecting all literal lists (\bibfield{publisher}, \bibfield{location}, etc.). @@ -2083,7 +2094,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 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}. +This option controls multilingual support. By default \biblatex automatically picks up the active surrounding language from the \sty{babel}/\sty{polyglossia} package (and fall back to English if \sty{babel}/\sty{polyglossia} is not available). \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}. 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. \boolitem[true]{clearlang} @@ -2091,15 +2102,15 @@ If this option is enabled, \biblatex will automatically clear the \bibfield{lang \optitem[none]{autolang}{\opt{none}, \opt{hyphen}, \opt{other}, \opt{other*}, \opt{langname}} -This option controls which \sty{babel} language environment\footnote{\sty{polyglossia} understands the \sty{babel} language environments too and so this option controls both the \sty{babel} and \sty{polyglossia} language environments.} is used if the \sty{babel}/\sty{polyglossia} package is loaded and a bibliography entry includes a \bibfield{langid} field (see \secref{bib:fld:spc}). Note that \biblatex automatically adjusts to the main document language if \sty{babel}/\sty{polyglossia} is loaded. In multilingual documents, it will also continually adjust to the current language as far as citations and the default language of the bibliography is concerned. The effect of language adjustment depends on the language environment selected by this option. The possible choices are: +This option controls which \sty{babel} language environment\footnote{\sty{polyglossia} understands the \sty{babel} language environments too and so this option controls both the \sty{babel} and \sty{polyglossia} language environments.} is used if the \sty{babel}/\sty{polyglossia} package is loaded and a bibliography entry includes a \bibfield{langid} field (see \secref{bib:fld:spc}). Note that regardless of the selected value \biblatex automatically adjusts to the main document language if \sty{babel}/\sty{polyglossia} is loaded. In multilingual documents, it will also continually adjust to the current language as far as citations and the default language of the bibliography is concerned. The effect of additional language adjustment, which can negate the effect of picking up the surrounding language, depends on the language environment selected by this option. The possible choices are: \begin{valuelist} \item[none] -Disable this feature, \ie do not use any language environment at all. +Do not use any additional enclosing language environment at all. This means that citations and the bibliography are set in the currently active language---this need not be the main language. \item[hyphen] -Enclose the entry in a \env{hyphenrules} environment. This will load hyphenation patterns for the language specified in the \bibfield{langid} field of the entry, if available. +Enclose the entry in a \env{hyphenrules} environment. This will load hyphenation patterns for the language specified in the \bibfield{langid} field of the entry, if available. Localisation strings and extra language definitions are not changed and taken from the surrounding language environment. \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 and . The extra definitions include localisations of the date format, of ordinals, and similar things. @@ -2213,7 +2224,7 @@ This feature requires support by the selected citation style. All standard style This option controls whether external files requested by way of the \cmd{printfile} command are loaded. See also \secref{use:use:prf} and \cmd{printfile} in \secref{aut:bib:dat}. Note that this feature is disabled by default for performance reasons. -\optitem[none]{refsection}{\opt{none}, \opt{part}, \opt{chapter}, \opt{section}, \opt{subsection}} +\optitem[none]{refsection}{\opt{none}, \opt{part}, \opt{chapter}, \opt{chapter+}, \opt{section}, \opt{section+}, \opt{subsection}, \opt{subsection+}} This option automatically starts a new reference section at a document division such as a chapter or a section. This is equivalent to the \cmd{newrefsection} command, see \secref{use:bib:sec} for details. The following choice of document divisions is available: @@ -2221,17 +2232,20 @@ This option automatically starts a new reference section at a document division \item[none] Disable this feature. \item[part] Start a reference section at every \cmd{part} command. \item[chapter] Start a reference section at every \cmd{chapter} command. +\item[chapter+] Start a reference section at every \cmd{chapter} and every higher level of sectioning, i.e. \cmd{part}. \item[section] Start a reference section at every \cmd{section} command. +\item[section+] Start a reference section at every \cmd{section} and every higher level of sectioning, i.e. \cmd{part} and \cmd{chapter} (if available). \item[subsection] Start a reference section at every \cmd{subsection} command. +\item[subsection+] Start a reference section at every \cmd{subsection} and every higher level of sectioning, i.e. \cmd{part}, \cmd{chapter} (if available) and \cmd{section}. \end{valuelist} % The starred versions of these commands will not start a new reference section. -\optitem[none]{refsegment}{\opt{none}, \opt{part}, \opt{chapter}, \opt{section}, \opt{subsection}} +\optitem[none]{refsegment}{\opt{none}, \opt{part}, \opt{chapter}, \opt{chapter+}, \opt{section}, \opt{section+}, \opt{subsection}, \opt{subsection+}} Similar to the \opt{refsection} option but starts a new reference segment. This is equivalent to the \cmd{newrefsegment} command, see \secref{use:bib:seg} for details. When using both options, note that you can only apply this option to a lower"=level document division than the one \opt{refsection} is applied to and that nested reference segments will be local to the enclosing reference section. -\optitem[none]{citereset}{\opt{none}, \opt{part}, \opt{chapter}, \opt{section}, \opt{subsection}} +\optitem[none]{citereset}{\opt{none}, \opt{part}, \opt{chapter}, \opt{chapter+}, \opt{section}, \opt{section+}, \opt{subsection}, \opt{subsection+}} This option automatically executes the \cmd{citereset} command from \secref{use:cit:msc} at a document division such as a chapter or a section. The following choice of document divisions is available: @@ -2418,7 +2432,7 @@ Specifies the encoding of the \file{tex} file. This option affects the data tran \begin{valuelist} -\item[auto] Try to auto-detect the input encoding. If the \sty{inputenc}\slash \sty{inputenx}\slash \sty{luainputenc} package is available, \biblatex will get the main encoding from that package. If not, it assumes \utf encoding if \xetex or \luatex has been detected, and Ascii otherwise. +\item[auto] Try to auto-detect the input encoding. If the \sty{inputenc}\slash \sty{inputenx}\slash \sty{luainputenc} package is available, \biblatex will get the main encoding from that package. If not, it assumes \utf encoding if a \latex format using at least the April 2018 version of the kernel, \xetex or \luatex has been detected, and Ascii otherwise. \item[\prm{encoding}] Specifies the \prm{encoding} explicitly. This is for odd cases in which auto-detection fails or you want to force a certain encoding for some reason. @@ -2428,7 +2442,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. This option corresponds to \biber's \opt{--input-encoding} option. The following choices are available: +Specifies the default encoding of the \file{bib} files. This can be overridden on a per-datasource basis using the \opt{bibencoding} option to \cmd{addbibresource}, see \secref{use:bib:res}. This option corresponds to \biber's \opt{--input-encoding} option. The following choices are available: \begin{valuelist} @@ -2617,6 +2631,12 @@ 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]{noroman} + +Whether or not to try to parse roman numerals encountered in integer fields for sorting purposes. Since \biber also tries to parse alphanumeric values when sorting integer fields, this roman numeral parsing can be a problem when, for example, is encountered as this could be a roman numeral or a simple alphanumeric string which would have a different integer value depending on how it was parsed. It is likely that this is most useful on a per-entry basis for entries that have, for example, a \bibfield{volume} field with values such as , , , which should not be parsed as roman numerals since this would give incorrect integer values for and . + +This option is also settable on a per-type and per-entry basis. + \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. @@ -2627,7 +2647,7 @@ Whether or not to provide the special field \bibfield{extratitleyear}, see \secr \boolitem[false]{labeldateparts} -Whether or not to provide the special fields \bibfield{labelyear}, \bibfield{labelmonth}, \bibfield{labelday}, \bibfield{labelendyear}, \bibfield{labelendmonth}, \bibfield{labelendday}, \bibfield{labelhour}, \bibfield{labelendhour}, \bibfield{labelminute}, \bibfield{labelendminute}, \bibfield{labelsecond}, \bibfield{labelendsecond}, \bibfield{labelseason}, \bibfield{labelendseason}, \bibfield{labeltimezone}, \bibfield{labelendtimeone} and \bibfield{extradate}, see \secref{aut:bbx:fld} for details. +Whether or not to provide the special fields \bibfield{labelyear}, \bibfield{labelmonth}, \bibfield{labelday}, \bibfield{labelendyear}, \bibfield{labelendmonth}, \bibfield{labelendday}, \bibfield{labelhour}, \bibfield{labelendhour}, \bibfield{labelminute}, \bibfield{labelendminute}, \bibfield{labelsecond}, \bibfield{labelendsecond}, \bibfield{labelseason}, \bibfield{labelendseason}, \bibfield{labeltimezone}, \bibfield{labelendtimeone} and \bibfield{extradate}, see \secref{aut:bbx:fld} for details. 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. \begin{table} @@ -2690,7 +2710,7 @@ Whether or not to update the \cnt{uniquename} counter, see \secref{aut:aux:tst} \item[minfull] A variant of \texttt{full} which only disambiguates names in identical lists of base nameparts (by default, lists of family names). \end{valuelist} % -Note that the \opt{uniquename} option will also affect \opt{uniquelist}, the \cmd{ifsingletitle} test, and the \bibfield{extradate} field. See \secref{aut:cav:amb} for further details and practical examples. +Note that the \opt{uniquename} option will also affect \opt{uniquelist}, the \cmd{ifsingletitle} test, and the \bibfield{extradate} and \bibfield{extraname} fields. See \secref{aut:cav:amb} for further details and practical examples. \optitem[false]{uniquelist}{\opt{true}, \opt{false}, \opt{minyear}} @@ -2702,7 +2722,7 @@ Whether or not to update the \cnt{uniquelist} counter, see \secref{aut:aux:tst} \item[minyear] Disambiguate the \bibfield{labelname} list only if the truncated list is identical to another one with the same \bibfield{labelyear}. This mode of operation is useful for author-year styles and requires \kvopt{labeldateparts}{true}. \end{valuelist} % -Note that the \opt{uniquelist} option will also affect the \cmd{ifsingletitle} test and the \bibfield{extradate} field. See \secref{aut:cav:amb} for further details and practical examples. +Note that the \opt{uniquelist} option will also affect the \cmd{ifsingletitle} test and the \bibfield{extradate} and \bibfield{extraname} fields. See \secref{aut:cav:amb} for further details and practical examples. \end{optionlist} @@ -2717,25 +2737,26 @@ Note that the \opt{uniquelist} option will also affect the \cmd{ifsingletitle} t \multicolumn{1}{@{}H}{Enabled counter} & \multicolumn{1}{@{}H}{Counter tracks} \\ \cmidrule(r){1-1}\cmidrule(r){2-2}\cmidrule(r){3-3}\cmidrule{4-4} -labelalpha & labelalpha & extraalpha & label\\ -labeldateparts & labelyear & extradate & labelname+\\ - & labelmonth & & labelyear\\ - & labelday & & \\ - & labelendyear & & \\ - & labelendmonth & & \\ - & labelendday & & \\ - & labelhour & & \\ - & labelminute & & \\ - & labelsecond & & \\ - & labelendhour & & \\ - & labelendminute & & \\ - & labelendsecond & & \\ - & labelseason & & \\ - & labelendseason & & \\ - & labeltimezone & & \\ - & labelendtimezone & & \\ -labeltitle & {\rmfamily ---} & extratitle & labelname+labeltitle\\ -labeltitleyear & {\rmfamily ---} & extratitleyear & labeltitle+labelyear\\ +labelalpha & labelalpha & extraalpha & label\\ +labeldateparts & labelyear & extradate & labelname+\\ + & labelmonth & & labelyear\\ + & labelday & & \\ + & labelendyear & & \\ + & labelendmonth & & \\ + & labelendday & & \\ + & labelhour & & \\ + & labelminute & & \\ + & labelsecond & & \\ + & labelendhour & & \\ + & labelendminute & & \\ + & labelendsecond & & \\ + & labelseason & & \\ + & labelendseason & & \\ + & labeltimezone & & \\ + & labelendtimezone & & \\ +labeltitle & {\rmfamily ---} & extratitle & labelname+labeltitle\\ +labeltitleyear & {\rmfamily ---} & extratitleyear & labeltitle+labelyear\\ +{\rmfamily ---} & {\rmfamily ---} & extraname & labelname\\ \bottomrule \end{tabularx} \caption{Disambiguation counters} @@ -2781,8 +2802,8 @@ With the standard styles, the \bibfield{translator} is printed after the title b \boolitem[true]{use$<$name$>$} -As per \opt{useauthor}, \opt{useeditor} and \opt{usetranslator}, all name lists defined in the data model have an option controlling their behaviour in sorting and labelling automatically -defined. Global, per-type and per-entry options called $>are automatically created. +As per \opt{useauthor}, \opt{useeditor} and \opt{usetranslator}, all name lists defined in the data model have an option controlling their behaviour in sorting and labelling automatically +defined. Global, per-type and per-entry options called $>are automatically created. \boolitem[false]{useprefix} @@ -3113,7 +3134,7 @@ Ideally, there should be no formatting information in a bibliography data file, % 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. +In order to address these issues, \biblatex has a general data annotation facility which allows you to attach any number of 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: @@ -3125,48 +3146,34 @@ There are three «scopes» for data annotations, in order of increasing specific % 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] - - - - - First1 - Last1 - - - First2 - Last2 - - - First3 - Last3 - - - - +\begin{lstlisting}[style=bibtex]{} +@MISC{ann1, + AUTHOR = {Last1, First1 and Last2, First2 and Last3, First3}, + AUTHOR+an = {1:family=student;2=corresponding}, + TITLE = {The Title}, + TITLE+an:default = {=titleannotation}, + TITLE+an:french = {="Le titre"}, + TITLE+an:german = {="Der Titel"}, +} \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: +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. Multiple annotations can be provided for the same field since all annotations are named. After the annotation marker is the optional named annotation marker \footnote{See \biber's \opt{--named-annotation-marker} option.} and an optional annotation name. The annotation name is if not specified and so in the above example the following two are equivalent: \begin{lstlisting}[style=bibtex]{} -@MISC{ann1, - AUTHOR = {Last1, First1 and Last2, First2 and Last3, First3}, - AUTHOR+an = {1:family=student;2=corresponding}, -} +TITLE+an = {=titleannotation}, +TITLE+an:default = {=titleannotation}, \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: +The format of annotation fields in \bibtex data sources is is as follows: \begin{lstlisting} ::= [ ";" ] ::= [ [ ":" ] ] "=" ::= [ "," ] - ::= (string) + ::= ["] (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: +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 or a string enclosed in double-quotes (a annotation, see below). To annotate 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 further examples: \begin{lstlisting}[style=bibtex]{} AUTHOR = {Last1, First1 and Last2, First2 and Last3, First3}, @@ -3178,27 +3185,70 @@ 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: +Attaching annotations to data is similar in \biblatexml data sources. Using the example above, we would have: + +\begin{lstlisting}[language=xml] + + + + + First1 + Last1 + + + First2 + Last2 + + + First3 + Last3 + + + student + corresponding + + +\end{lstlisting} +% +To access the annotation information when formatting bibliography data, macros are provided, corresponding to the three annotation scopes: \begin{ltxsyntax} -\cmditem{iffieldannotation}[field]{annotation}{true}{false} +\cmditem{iffieldannotation}[field][annotationname]{annotation}{true}{false} + +Executes \prm{true} if the data field \prm{field} has an annotation \prm{annotation} for the annotation called \prm{annotationname} and false otherwise. If \prm{annotatationname} is not given, then the annotation named is assumed (this is the name given to annotations defined without an explicit name). If \prm{field} is not given, the current data field as indicated by \cmd{currentfield}, \cmd{currentlist} or \cmd{currentname} (see \secref{aut:bib:fmt}) is assumed. Of course, this is only possible if these commands are defined, that is, inside formatting directives. + +\cmditem{ifitemannotation}[field][annotationname][item]{annotation}{true}{false} + +Executes \prm{true} if the item \prm{item} in the data field \prm{field} has an annotation \prm{annotation} and false otherwise. If \prm{annotatationname} is not given, then the annotation named is assumed (this is the name given to annotations defined without an explicit name). The optional argument \prm{field} can be inferred if not provided as with \cmd{iffieldannotation}. If \prm{item} is not given, the number of the item currently being processed as given by \cnt{listcount} is used. + +\cmditem{ifpartannotation}[field][annotationname][item]{part}{annotation}{true}{false} + +Executes \prm{true} if the part named \prm{part} in item \prm{item} in the data field \prm{field} has an annotation \prm{annotation} and false otherwise. If \prm{annotatationname} is not given, then the annotation named is assumed (this is the name given to annotations defined without an explicit name). The two optional arguments \prm{field} and \prm{item} can be inferred as in \cmd{ifitemannotation}. The parameter \prm{part} can never be inferred and is therefore a mandatory argument. + +Date fields are special and handled in a context where \cmd{currentfield} is not accessible. Thus there is a fourth command to test annotations for dates. + +\cmditem{ifdateannotation}[annotationname]{datetype}{annotation}{true}{false} + +Executes \prm{true} if the date field \prm{datetype} has an annotation \prm{annotation} and false otherwise. If \prm{annotatationname} is not given, then the annotation named is assumed (this is the name given to annotations defined without an explicit name). The \prm{datetype} argument is mandatory, because it cannot be inferred in most contexts where \cmd{ifdateannotation} will be used. + +\cmditem{hasfieldannotation}[field][annotationname]{true}{false} -Executes \prm{true} if the data field \prm{field} has an annotation \prm{annotation} and false otherwise. If \prm{field} is not given, the current data field as indicated by \cmd{currentfield}, \cmd{currentlist} or \cmd{currentname} (see \secref{aut:bib:fmt}) is assumed. Of course, this is only possible if these commands are defined, that is, inside formatting directives. +Executes \prm{true} if the data field \prm{field} has a literal annotation \prm{annotationname} defined and false otherwise. If \prm{annotatationname} is not given, then the annotation named is assumed (this is the name given to annotations defined without an explicit name). If \prm{field} is not given, the current data field as indicated by \cmd{currentfield}, \cmd{currentlist} or \cmd{currentname} (see \secref{aut:bib:fmt}) is assumed. Of course, this is only possible if these commands are defined, that is, inside formatting directives. -\cmditem{ifitemannotation}[field][item]{annotation}{true}{false} +\cmditem{hasitemannotation}[field][annotationname][item]{true}{false} -Executes \prm{true} if the item \prm{item} in the data field \prm{field} has an annotation \prm{annotation} and false otherwise. The optional argument \prm{field} can be inferred if not provided as with \cmd{iffieldannotation}. If \prm{item} is not given, the number of the item currently being processed as given by \cnt{listcount} is used. +Executes \prm{true} if the item \prm{item} in the data field \prm{field} has a literal annotation \prm{annotationname} defined and false otherwise. If \prm{annotatationname} is not given, then the annotation named is assumed (this is the name given to annotations defined without an explicit name). The optional argument \prm{field} can be inferred if not provided as with \cmd{iffieldannotation}. If \prm{item} is not given, the number of the item currently being processed as given by \cnt{listcount} is used. -\cmditem{ifpartannotation}[field][item]{part}{annotation}{true}{false} +\cmditem{haspartannotation}[field][annotationname][item]{part}{true}{false} -Executes \prm{true} if the part named \prm{part} in item \prm{item} in the data field \prm{field} has an annotation \prm{annotation} and false otherwise. The two optional arguments \prm{field} and \prm{item} can be inferred as in \cmd{ifitemannotation}. The parameter \prm{part} can never be inferred and is therefore a mandatory argument. +Executes \prm{true} if the part named \prm{part} in the item \prm{item} in the data field \prm{field} has a literal annotation \prm{annotationname} defined and false otherwise. If \prm{annotatationname} is not given, then the annotation named is assumed (this is the name given to annotations defined without an explicit name). The two optional arguments \prm{field} and \prm{item} can be inferred as in \cmd{ifitemannotation}. The parameter \prm{part} can never be inferred and is therefore a mandatory argument. -Date fields are special and handled in a context where \cmd{currentfield} is not accessible. Thus there is a fourth command to access annotations for dates. +Date fields are special and handled in a context where \cmd{currentfield} is not accessible. Thus there is a fourth command to test the existence of annotations for dates. -\cmditem{ifdateannotation}{datetype}{annotation}{true}{false} +\cmditem{hasdateannotation}[annotationname]{datetype}{true}{false} -Executes \prm{true} if the date field \prm{datetype} has an annotation \prm{annotation} and false otherwise. The \prm{datetype} argument is mandatory, because it can not be inferred in most contexts where \cmd{ifdateannotation} will be used. +Executes \prm{true} if the date field \prm{datetype} has any annotation \prm{annotationname} defined and false otherwise. If \prm{annotatationname} is not given, then the annotation named is assumed (this is the name given to annotations defined without an explicit name). The \prm{datetype} argument is mandatory, because it cannot be inferred in most contexts where \cmd{ifdateannotation} will be used. \end{ltxsyntax} % @@ -3224,6 +3274,59 @@ To put the given and family names of name list items annotated as «correspondin {#1}} \end{lstlisting} +\subsubsection{Literal Annotations} + +If the annotation is a string enclosed in double-quotes, the annotation is a annotation. In this case the annotation can be retrieved and used as a string rather than as meta-information used to determine formatting. This is useful in order to be able to attached specific annotations to data which are to be printed as-is. For example: + +\begin{lstlisting}[style=bibtex]{} +AUTHOR = {{American Educational Research Association} and {American Psychological Association} + and {National Council on Measurement in Education}}, +AUTHOR+an = {1:family="AERA"; 2:family="APA"; 3:family="NCME"} +} +\end{lstlisting} +% +Such annotations are not keys whose presence can be tested for but are rather literal information attached to the data. The values are retrieved by the following macros + +\begin{ltxsyntax} + +\cmditem{getfieldannotation}[field][annotationname] + +Retrieves any literal annotation for the field \prm{field}. If \prm{annotatationname} is not given, then the annotation named is assumed (this is the name given to annotations defined without an explicit name). If \prm{field} is not given, the current data field as indicated by \cmd{currentfield}, \cmd{currentlist} or \cmd{currentname} (see \secref{aut:bib:fmt}) is assumed. Of course, this is only possible if these commands are defined, that is, inside formatting directives. + +\cmditem{getitemannotation}[field][annotationname][item] + +Retrieves any literal annotation for the item \prm{item} in the field \prm{field}. If \prm{annotatationname} is not given, then the annotation named is assumed (this is the name given to annotations defined without an explicit name). The optional argument \prm{field} can be inferred if not provided as with \cmd{getfieldannotation}. If \prm{item} is not given, the number of the item currently being processed as given by \cnt{listcount} is used. + +\cmditem{getpartannotation}[field][annotationname][item]{part} + +Retrieves any literal annotation for the part \prm{part}. If \prm{annotatationname} is not given, then the annotation named is assumed (this is the name given to annotations defined without an explicit name). The two optional arguments \prm{field} and \prm{item} can be inferred as in \cmd{getitemannotation}. The parameter \prm{part} can never be inferred and is therefore a mandatory argument. + +Date fields are special and handled in a context where \cmd{currentfield} is not accessible. Thus there is a fourth command to access literal annotations for dates. + +\cmditem{getdateannotation}[annotationname]{datetype} + +Retrieve a literal annotation for the datefield \prm{datetype}. If \prm{annotatationname} is not given, then the annotation named is assumed (this is the name given to annotations defined without an explicit name). The \prm{datetype} argument is mandatory, because it cannot be inferred in most contexts where \cmd{getdateannotation} will be used. + +\end{ltxsyntax} +% +So, for example, given the bibliography entry above, we could put the following in the preamble: + +\begin{ltxexample}[style=latex] +\renewcommand*{\mkbibnamefamily}[1]{% + #1\space\mkbibparens{\getpartannotation{family}}} +\end{ltxexample} +% +In order to get something like this in the bibliography when formatting names: + +\begin{lstlisting}[style=bibtex]{} + American Educational Research Association (AERA) and + American Psychological Association (APA), and + National Council on Measurement in Education (NCME) +} +\end{lstlisting} +% +Naturally there are semantically more elegant ways of dealing with corporate authors without using the namepart (see \secref{aut:bbx:drv}) but this example demonstrates clearly a use for literal annotations. + \subsection{Bibliography Commands} \label{use:bib} @@ -3247,9 +3350,13 @@ Since the \prm{resource} string is read in a verbatim-like mode, it may contain \begin{optionlist*} +\valitem{bibencoding}{bibencoding} + +This option can be used to override the global \opt{bibencoding} option for a particular \prm{resource}. + \valitem{label}{identifier} -Assigns a label to a resource. The \prm{identifier} may be used in place of the full resource name in the optional argument of \env{refsection} (see \secref{use:bib:sec}). +Assigns a label to a resource. The \prm{identifier} may be used in place of the full resource name in the optional argument of \env{refsection} (see \secref{use:bib:sec}). The label is a \emph{unique} identifier for the \prm{resource}, so each label should only be used once. \valitem[local]{location}{location} @@ -3543,7 +3650,7 @@ Bibliography categories allow you to split the bibliography into multiple parts \cmditem{DeclareBibliographyCategory}{category} -Declares a new \prm{category}, to be used in conjunction with \cmd{addtocategory} and the +Declares a new \prm{category}, to be used in conjunction with \cmd{addtocategory} and the \opt{category} and \opt{notcategory} filters of \cmd{printbibliography}. This command is used in the document preamble. \cmditem{addtocategory}{category}{key} @@ -3813,7 +3920,7 @@ This example also shows the declaration and use of a named reference context. As \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. +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} @@ -3825,7 +3932,7 @@ Declares a named reference context with name \prm{name}. The \prm{key=value} opt \valitem{sorting}{name} -Specify a sorting template defined previously with \cmd{DeclareSortingTemplate}. This template is used to determine which data to retrieve and/or print for an entry in the commands inside the context. +Specify a sorting template defined previously with \cmd{DeclareSortingTemplate}. This template is used to determine which data to retrieve and/or print for an entry in the commands inside the context. \valitem{sortingnamekeytemplatename}{name} @@ -3845,7 +3952,7 @@ A convenience meta-option which sets \opt{sortingnamekeytemplate}, \opt{uniquena \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 (unless overridden by a user-specified value for \opt{resetnumbers}). 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. +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 (unless overridden by a user-specified value for \opt{resetnumbers}). 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. Note that the \prm{string} is fully expanded, which means that you can use context-dependent macros like \cmd{thechapter}, but not unexpandable commands such as \cmd{dag}. If you need to pass unexpandable code to \prm{string}, protect it from expansion with \cmd{detokenize}. See \secref{aut:bbx:fld:lab} for details. \end{optionlist*} % @@ -4573,8 +4680,8 @@ This command should be used with \cmd{bibnamedelimd} as a reversed-name separato \csitem{bibnamedash} The dash to be used as a replacement for recurrent authors or editors in the bibliography. The default is an or an dash, depending on the indentation of the list of references. -\csitem{labelnamepunct} -The separator printed after the name used for alphabetizing in the bibliography (\bibfield{author} or \bibfield{editor}, if the \bibfield{author} field is undefined). With the default styles, this separator replaces \cmd{newunitpunct} at this location. The default definition is \cmd{newunitpunct}, \ie it is not handled differently from regular unit punctuation. See also \cmd{nametitledelim} \secref{use:fmt:csd}. +\csitem{labelnamepunct}\DeprecatedMark +A separator to be printed after the name used for alphabetizing in the bibliography (\bibfield{author} or \bibfield{editor}, if the \bibfield{author} field is undefined) instead of \cmd{newunitpunct}. The default is \cmd{newunitpunct}, \ie it is not handled differently from regular unit punctuation but permits convenient reconfiguration. This punctuation command is deprecated and has been superseded by the context-sensitive \cmd{nametitledelim} (see \secref{use:fmt:csd}). For backwards compatibility reasons, however, \cmd{nametitledelim} still defaults to \cmd{labelnamepunct} in the \texttt{bib} and \texttt{biblist} contexts. Style authors may want to consider replacing \cmd{labelnampunct} with \texttt{\textbackslash printdelim\{nametitledelim\}} and users may want to prefer modifying the context-sensitive \texttt{nametitledelim} with \cmd{DeclareDelimFormat} over redefining \cmd{labelnamepunct}. \csitem{subtitlepunct} The separator printed between the fields \bibfield{title} and \bibfield{subtitle}, \bibfield{booktitle} and \bibfield{booksubtitle}, as well as \bibfield{maintitle} and \bibfield{mainsubtitle}. With the default styles, this separator replaces \cmd{newunitpunct} at this location. The default definition is \cmd{newunitpunct}, \ie it is not handled differently from regular unit punctuation. @@ -4665,16 +4772,16 @@ Prints date era information when the global option \opt{dateera} is set to , separated by interword spaces. See also \cmd{finalandcomma} and \cmd{finalandsemicolon} in \secref{use:fmt:lng}. \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. +The delimiter printed between the author\slash editor and the title by author-title and some verbose citation styles and in the bibliography. In author-year bibliography styles this delimiter is placed after the author\slash editor and year and before the title. The default definition inside bibliographies is the now deprecated \cmd{labelnamepunct} and is a comma plus an interword space otherwise. \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. +The delimiter printed between the author\slash editor and the year by author-year citation and bibliography styles. The default definition is an interword space. \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. +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 and bibliography 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{authortypedelim}\CSdelimMark The delimiter printed between the author and the \texttt{authortype}. @@ -4767,10 +4874,22 @@ The delimiters described in \secref{use:fmt:fmt} are globally defined. That is, 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{DeclareDelimAlias}{alias}{delim} -\cmditem*{DeclareDelimAlias}*[context, \dots]{alias}{delim} +\cmditem*{DeclareDelimAlias}*[alias context, \dots]{alias}[delim context]{delim} -Declares \prm{alias} to be an alias for the delimiter \prm{delim}. The assigment is valid for all existing contexts of \prm{alias}. -The starred version assigns the alias for the given \opt{contexts} only---if the optional argument is empty, assigment is for the global/empty context. +Declares \prm{alias} to be an alias for the delimiter \prm{delim}. The assigment is performed for all existing contexts of the target \prm{delim}. +The starred version assigns the alias for specific contexts only. The first optional argument \prm{alias context} holds a list of contexts for which the assignment is going to be performed. If it is empty or missing the global/empty context is assumed. The second optional argument \prm{delim context} specifies the context of the target delimiter. This argument may not be a list, it can only hold one context. If it is missing the \prm{alias context} is assumed (if \prm{alias context} is a list, the assignment is performed separately for each list item), if it is empty the global context is used. + +\begin{ltxexample}[style=latex] +\DeclareDelimAlias*[bib,biblist]{finalnamedelim}[]{multinamedelim} +\end{ltxexample} +% +Defines the \opt{bib} and \opt{biblist} contexts of \cmd{finalnamedelim} as aliases of \cmd{multinamedelim} in global context. +On the other hand +\begin{ltxexample}[style=latex] +\DeclareDelimAlias*[bib,biblist]{finalnamedelim}{multinamedelim} +\end{ltxexample} +% +defines \cmd{finalnamedelim} in the context \opt{bib} to be an alias of \cmd{multinamedelim} in the \opt{bib} context and defines \cmd{finalnamedelim} in \opt{biblist} context to be an alias of \cmd{multinamedelim} in \opt{biblist}. \cmditem{printdelim}[context]{name} @@ -4801,7 +4920,7 @@ example: \begin{ltxexample}[style=latex] \DeclareDelimcontextAlias{cbx@textcite}{textcite} \end{ltxexample} -% +% This (which is a default setting), makes sure that when inside the \cmd{cbx@textcite} citation command, the context is in fact \opt{textcite} as expected. @@ -4812,7 +4931,7 @@ as expected. \begin{description} \item[none] At begin document -\item[bib] Inside a bibliography begun with \cmd{printbibliography} or inside a \cmd{usedriver} +\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[] Inside a citation command \cmd{citecommand} defined with \cmd{DeclareCiteCommand} \end{description} @@ -4821,10 +4940,11 @@ For example, the defaults for \cmd{nametitledelim} are: \begin{ltxexample}[style=latex] \DeclareDelimFormat{nametitledelim}{\addcomma\space} +\DeclareDelimFormat[bib,biblist]{nametitledelim}{\labelnamepunct} \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 +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, and in a bibliography (list) in which it takes the value of \cmd{labelnamepunct} for compatibility reasons. If desired, a context can be forced with the optional argument to \cmd{printdelim}, so \begin{ltxexample}[style=latex] \printdelim[textcite]{nametitledelim} @@ -5031,7 +5151,7 @@ Similar to \cmd{nohyphenation} but restricted to the \prm{text} argument. \cmditem{mknumalph}{integer} -Takes an integer in the range 1--702 as its argument and converts it to a string as follows: 1=a, \textellipsis, 26=z, 27=aa, \textellipsis, 702=zz. This is intended for use in formatting directives for the \bibfield{extradate} and \bibfield{extraalpha} fields. +Takes an integer in the range 1--702 as its argument and converts it to a string as follows: 1=a, \textellipsis, 26=z, 27=aa, \textellipsis, 702=zz. This is intended for use in formatting directives for the \bibfield{extradate}, \bibfield{extraname} and \bibfield{extraalpha} fields. \cmditem{mkbibacro}{text} @@ -5069,7 +5189,7 @@ The facilities discussed in this section are specific to certain localisation mo \subsubsection{Bulgarian} \label{use:loc:bul} -Like the Greek localisation module, the Bulgarian module also requires \utf support. It will not work with any other encoding. +Like the Greek localisation module, the Bulgarian module also requires \utf support. It will not work with any other encoding. \subsubsection{American} \label{use:loc:us} @@ -5122,7 +5242,13 @@ The Greek localisation module requires \utf support. It will not work with any o \subsubsection{Russian} \label{use:loc:rus} -Like the Greek localisation 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. + +\subsubsection{Hungarian} +\label{use:loc:hun} + +The Hungarian localisation module needs to redefine certain field formats to obtain the grammatically correct word order. This means that these field formats are overwritten whenever the Hungarian localisation is active, no matter whether they were defined in the preamble or by a custom style. So please be aware that using the Hungarian localisation module may cause the bibliography output to deviate from the format dictated by the loaded style and preamble definitions. Changes to this behaviour need to be made using \cmd{DefineBibliographyExtras}. In particular \cmd{mkpageprefix} is redefined to output the page number as a prefix following Hungarian convention, and all formats of fields involving pages were modified so that page ranges are printed as ordinal ranges. The Hungarian localisation module will print a warning to remind you of these changes whenever it is loaded in a document. The warning tells you how to silence it. + \subsection{Usage Notes} \label{use:use} @@ -5733,7 +5859,7 @@ This will not from a group, but otherwise works as usual. As far as \biblatex is 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 +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. @@ -5741,7 +5867,7 @@ 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 +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. @@ -5833,8 +5959,8 @@ The \biblatex package supports citations in any arbitrary format, hence citation {}{{0}{}{book}{1994}{}{}{}{}{Reading, Mass.\bpubaddr{}Addison-Wesley% \bibbdsep{} 1994}}{{The LaTeX Companion}{}{}{2}{}{}{}{}{}}{\bibnf {Goossens}{Michel}{M.}{}{}\Bibbfsasep\bibnf{Mittelbach}{Frank}{F.}% - {}{}\Bibbstasep\bibnf{Samarin}{Alexander}{A.}{}{}}{\bibtfont{The - LaTeX Companion}.\ \apyformat{Reading, Mass.\bpubaddr{} + {}{}\Bibbstasep\bibnf{Samarin}{Alexander}{A.}{}{}}{\bibtfont{The + LaTeX Companion}.\ \apyformat{Reading, Mass.\bpubaddr{} Addison-Wesley\bibbdsep{} 1994}}} \end{ltxexample} % @@ -5857,7 +5983,7 @@ 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 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{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}: 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. @@ -5956,7 +6082,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. +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. If omitted, it defaults to . For example, with a definition like the following: \begin{ltxexample} @@ -6080,7 +6206,7 @@ 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. +Formatting directives for names are similar to those for literal lists. Names depend on the datamodel constant which has the default definition: @@ -6109,21 +6235,26 @@ Inside name formats, the nameparts constant declaration makes available two or t Note these per-namepart uniqueness macros are essentially an override of the \opt{uniquename} value (see \secref{aut:aux:tst}) for the name as a whole. Styles can choose to use either the less granular \opt{uniquename} value or the more detailed per-namepart values. Usually the general \opt{uniquename} value is enough for ordinary Western names but the more granular information per-namepart is provided to allow sophisticated name uniqueness processing for more complex name schemata. -The name formatting directive is executed once for each name in the name list. Here is an example: +The name formatting directive is executed once for each name in the name list. Here is a simplified example---the standard name formats are more intricate: \begin{ltxexample} \DeclareNameFormat{author}{% \ifthenelse{\value{listcount}=1} {\namepartfamily% - \ifblank{\namepartgiven}{}{\addcomma\space\namepartgiven}} - {\ifblank{\namepartgiven}{}{\namepartgiven\space}% + \ifdefvoid{\namepartgiven}{}{\addcomma\space\namepartgiven}} + {\ifdefvoid{\namepartgiven}{}{\namepartgiven\space}% \namepartfamily}% \ifthenelse{\value{listcount}<\value{liststop}} {\addcomma\space} {}} \end{ltxexample} % -The above directive reverses the name of the first author («Family, Given») and prints the remaining names in their regular sequence («Given Family»). Note that the only component which is guaranteed to be available is the family name, hence we have to check which parts of the name are actually present. If a certain name part is not available, the corresponding macro will be empty. As with directives for literal lists, the separator to be inserted between the individual items in the name list is also handled by the formatting directive, hence we have to check whether we are in the middle of the list or at the end when inserting it. This is what the second \cmd{ifthenelse} test does. +The above directive reverses the name of the first author («Family, Given») and prints the remaining names in their regular sequence («Given Family»). Note that the only component which is guaranteed to be available is the family name, hence we have to check which parts of the name are actually present. If a certain name part is not available, the corresponding macro will be empty. As with directives for literal lists, the separator to be inserted between the individual items in the name list is also handled by the formatting directive, hence we have to check whether we are in the middle of the list or at the end when inserting it. This is what the second \cmd{ifthenelse} test does. See also \secref{aut:bib:fmt}. + +A similar output that also respects the \cmd{multinamedelim} and \cmd{finalnamedelim} commands as well as the and name parts can be achieved with +\begin{ltxexample} +\DeclareNameAlias{author}{family-given/given-family} +\end{ltxexample} \subsubsection{Special Fields} \label{aut:bbx:fld} @@ -6158,7 +6289,7 @@ but would additionally have the field \bibfield{dateunspecified} set to citation scheme usually requires a letter to be appended to the 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. This field may be customized. See \secref{aut:ctm:fld} for details. +\fielditem{extraname}{integer} + +Holds a count of the number of bibliography entries within a refsection which derive from the same \bibfield{labelname} list. This counter takes account of \opt{uniquename} settings (see \secref{use:opt:pre:int}). While not used by any standard styles, this field is useful in styles which wish to number bibliography entries on a per-\bibfield{labelname} basis. This field will only exist if there is a \bibfield{labelname}. The \bibfield{extraname} counter is related to, but conceptually different from \cmd{ifsingletitle} (see \secref{use:opt:pre:int} and \secref{aut:aux:tst}). + \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}. @@ -6845,9 +6980,23 @@ This command provides definitions for the \cmd{autocite} and \cmd{autocites} com A definition provided in the document preamble can be subsequently adopted with the following: (see \secref{use:cfg:opt}). \begin{ltxexample} -\ExecuteBibliographyOptions{autocite=<>} +\ExecuteBibliographyOptions{autocite=<>} \end{ltxexample} +\cmditem{DeclareCitePunctuationPosition}{command}{position} + +Set up the cite command \prm{command} to move punctuation marks after the citation like \cmd{autocite}. The \prm{position} argument can take the values \opt{r}, \opt{l}, \opt{f}, \opt{c}, \opt{o} and \opt{d}. +If an unknown \prm{position} identifier is used, it defaults to \opt{o}. +\begin{valuelist} +\item[r] The punctuation mark is not moved and remains to the right of the citation. +\item[l] The punctuation mark is moved to the left of the citation and thus appears before it. +\item[f] Like \opt{r} in footnotes and like \opt{l} otherwise. +\item[c] Pass the punctuation on to the internal implementation of the citation commands. It will then be executed within the \prm{wrapper} command if given. +\item[o] Retain the default set-up of \opt{c} for citation defined commands without \prm{wrapper} command and \opt{l} for citation commands defined with a \prm{wrapper} command. +\item[d] Drop the explicit punctuation mark. It will only be available as the field \bibfield{postpunct}. +\end{valuelist} +% +This command can not be used for \cmd{autocite}, to configure \cmd{autocite} use the optional \prm{position} argument for \cmd{DeclareAutoCiteCommand}. \end{ltxsyntax} \subsubsection{Special Fields} @@ -6896,7 +7045,7 @@ This section introduces the main data interface of the \biblatex package. These \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 +deprecation warning is 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 @@ -7020,12 +7169,12 @@ Generally, you would want to use \cmd{DeclareSourcemap} (see \secref{aut:ctm:map \cmditem{DeclareListInputHandler}{list}{code} -As \cmd{DeclareFieldInputHandler} but for lists. Within the \prm{code}, the macro \cmd{NewValue} +As \cmd{DeclareFieldInputHandler} but for lists. Within the \prm{code}, the macro \cmd{NewValue} contains the value of the list and \cmd{NewCount} contains the number of items in the list. \cmditem{DeclareNameInputHandler}{name}{code} -As \cmd{DeclareFieldInputHandler} but for names. Within the \prm{code}, the macro \cmd{NewValue} +As \cmd{DeclareFieldInputHandler} but for names. Within the \prm{code}, the macro \cmd{NewValue} contains the value of the name, \cmd{NewCount} contains the number of individual names in the name and \cmd{NewOption} contains any per-name options passed in the \file{.bbl}. \end{ltxsyntax} @@ -7075,6 +7224,16 @@ The value of the datamodel constant (see \secref{aut:bbx:drv}) creat % 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. \emph{Do not put any whitespace between the arguments to this macro as the definitions are quite complex and you will get unexpected results}. +\cmditem{DeclareListWrapperFormat}[entrytype, \dots]{format}{code} +\cmditem*{DeclareListWrapperFormat}*{format}{code} + +Defines the list wrapper format \prm{format}. This formatting directive is arbitrary \prm{code} to be executed once for the entire list processed by \cmd{printlist}. The name of the literal list currently being processed is available to the \prm{code} as \cmd{currentlist}. 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 starred variant of this command is similar to the regular version, except that all type-specific formats are cleared. + +\cmditem{DeclareNameWrapperFormat}[entrytype, \dots]{format}{code} +\cmditem*{DeclareNameWrapperFormat}*{format}{code} + +Defines the list wrapper format \prm{format}. This formatting directive is arbitrary \prm{code} to be executed once for the entire name list processed by \cmd{printnames}. The name of the literal list currently being processed is available to the \prm{code} as \cmd{currentname}. 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 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} @@ -7090,6 +7249,17 @@ Defines the literal list format \prm{format}. This formatting directive is arbit 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{indexnames}. The name of the name list currently being processed is available to the \prm{code} as \cmd{currentname}. 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 parts of the name will be passed to the \prm{code} as separate arguments. This command is very similar to \cmd{DeclareNameFormat} except that the data handled by the \prm{code} is not intended to be printed but written to the index. Note that \cmd{indexnames} will execute the \prm{code} as is, \ie the \prm{code} must include \cmd{index} or a similar command. The starred variant of this command is similar to the regular version, except that all type-specific formats are cleared. +\cmditem{DeclareIndexListWrapperFormat}[entrytype, \dots]{format}{code} +\cmditem*{DeclareIndexListWrapperFormat}*{format}{code} + +Similar to \cmd{DeclareIndexListFormat} but for the list format used for indices. + + +\cmditem{DeclareIndexNameWrapperFormat}[entrytype, \dots]{format}{code} +\cmditem*{DeclareIndexNameWrapperFormat}*{format}{code} + +Similar to \cmd{DeclareIndexNameFormat} but for the name list format used for indices. + \cmditem{DeclareFieldAlias}[entry type]{alias}[format entry type]{format} Declares \prm{alias} to be an alias for the field format \prm{format}. If an \prm{entrytype} is specified, the alias is specific to that type. The \prm{format entry type} is the entry type of the backend format. This is only required when declaring an alias for a type"=specific formatting directive. @@ -7102,6 +7272,14 @@ Declares \prm{alias} to be an alias for the literal list format \prm{format}. If Declares \prm{alias} to be an alias for the name list format \prm{format}. If an \prm{entrytype} is specified, the alias is specific to that type. The \prm{format entry type} is the entry type of the backend format. This is only required when declaring an alias for a type"=specific formatting directive. +\cmditem{DeclareListWrapperAlias}[entry type]{alias}[format entry type]{format} + +Declares \prm{alias} to be an alias for the outer list format \prm{format}. If an \prm{entrytype} is specified, the alias is specific to that type. The \prm{format entry type} is the entry type of the backend format. This is only required when declaring an alias for a type"=specific formatting directive. + +\cmditem{DeclareNameWrapperAlias}[entry type]{alias}[format entry type]{format} + +Declares \prm{alias} to be an alias for the outer name list format \prm{format}. If an \prm{entrytype} is specified, the alias is specific to that type. The \prm{format entry type} is the entry type of the backend format. This is only required when declaring an alias for a type"=specific formatting directive. + \cmditem{DeclareIndexFieldAlias}[entry type]{alias}[format entry type]{format} Declares \prm{alias} to be an alias for the field format \prm{format}. If an \prm{entrytype} is specified, the alias is specific to that type. The \prm{format entry type} is the entry type of the backend format. This is only required when declaring an alias for a type"=specific formatting directive. @@ -7114,6 +7292,54 @@ Declares \prm{alias} to be an alias for the literal list format \prm{format}. If Declares \prm{alias} to be an alias for the name list format \prm{format}. If an \prm{entrytype} is specified, the alias is specific to that type. The \prm{format entry type} is the entry type of the backend format. This is only required when declaring an alias for a type"=specific formatting directive. +\cmditem{DeclareIndexListWrapperAlias}[entrytype, \dots]{format}{code} + +Similar to \cmd{DeclareIndexListFormat} but for the list format used for indices. + +\cmditem{DeclareIndexNameWrapperAlias}[entrytype, \dots]{format}{code} + +Similar to \cmd{DeclareIndexNameFormat} but for the name list format used for indices. + +\cmditem{DeprecateFieldFormatWithReplacement}[entry type]{alias}[format entry type]{format} + +Declares \prm{alias} to be an alias for the name list format \prm{format} and issue a deprecation warning. If an \prm{entrytype} is specified, the alias is specific to that type. The \prm{format entry type} is the entry type of the backend format. This is only required when declaring an alias for a type"=specific formatting directive. + +\cmditem{DeprecateListFormatWithReplacement}[entry type]{alias}[format entry type]{format} + +Similar to \cmd{DeprecateFieldFormatWithReplacement} but for list formats. + +\cmditem{DeprecateNameFormatWithReplacement}[entry type]{alias}[format entry type]{format} + +Similar to \cmd{DeprecateFieldFormatWithReplacement} but for name formats. + +\cmditem{DeprecateListWrapperFormatWithReplacement}[entry type]{alias}[format entry type]{format} + +Similar to \cmd{DeprecateFieldFormatWithReplacement} but for outer list formats. + +\cmditem{DeprecateNameWrapperFormatWithReplacement}[entry type]{alias}[format entry type]{format} + +Similar to \cmd{DeprecateFieldFormatWithReplacement} but for outer name formats. + +\cmditem{DeprecateIndexFieldFormatWithReplacement}[entry type]{alias}[format entry type]{format} + +Similar to \cmd{DeprecateFieldFormatWithReplacement} but for index field formats. + +\cmditem{DeprecateIndexListFormatWithReplacement}[entry type]{alias}[format entry type]{format} + +Similar to \cmd{DeprecateFieldFormatWithReplacement} but for index list formats. + +\cmditem{DeprecateIndexNameFormatWithReplacement}[entry type]{alias}[format entry type]{format} + +Similar to \cmd{DeprecateFieldFormatWithReplacement} but for index name formats. + +\cmditem{DeprecateIndexListWrapperFormatWithReplacement}[entry type]{alias}[format entry type]{format} + +Similar to \cmd{DeprecateFieldFormatWithReplacement} but for index list formats. + +\cmditem{DeprecateIndexNameWrapperFormatWithReplacement}[entry type]{alias}[format entry type]{format} + +Similar to \cmd{DeprecateFieldFormatWithReplacement} but for index name formats. + \end{ltxsyntax} \subsection{Customization} @@ -7149,7 +7375,7 @@ It is useful to be able to define named sets of datasource field names for use i \cmditem{DeclareDatafieldSet}{name}{specification} -Declare a set of datasource fields with name \prm{name}. +Declare a set of datasource fields with name \prm{name}. \begin{optionlist*} @@ -7263,7 +7489,7 @@ As the same option on the parent \cmd{maps} element. This option allows an overr Loop over all \cmd{step}s in this \cmd{map}, setting the special variable |$MAPLOOP| %$ 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: +may also be used in 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{ @@ -7306,7 +7532,9 @@ A mapping step. Each step is applied sequentially to every relevant entry where \valitem{notfield}{entryfield} \valitem{fieldtarget}{entryfield} \valitem{match}{regexp} +\valitem{matchi}{regexp} \valitem{notmatch}{regexp} +\valitem{notmatchi}{regexp} \valitem{replace}{regexp} \valitem{fieldset}{entryfield} \valitem{fieldvalue}{string} @@ -7329,10 +7557,10 @@ For all boolean \cmd{step} options, the short form \opt{option} is equivalent to \begin{itemize} \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}. In \texttt{entrynewkey}, you may use standard Perl regular expression + entry is only in-scope during the processing of the current entry and can be referenced by + \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 +\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 fields in them. @@ -7345,10 +7573,10 @@ For all boolean \cmd{step} options, the short form \opt{option} is equivalent to 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 - \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 + \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 @@ -7356,10 +7584,12 @@ For all boolean \cmd{step} options, the short form \opt{option} is equivalent to \item Change the \texttt{fieldsource} \prm{entryfield} to \texttt{fieldtarget}, if defined. If \texttt{final} is \texttt{true} then if there is no \texttt{fieldsource} \prm{entryfield} in the entry, processing of the parent \cmd{map} immediately terminates. -\item If \texttt{notfield} is used then only apply the step if the \prm{entryfield} does not exist. +\item If \texttt{notfield} is true only if the \prm{entryfield} does not + exist. Usually used with \texttt{final} so that if an entry does contain + \prm{entryfield}, the map terminates. \item If \texttt{match} is defined but \texttt{replace} is not, only apply the step if the \texttt{fieldsource} \prm{entryfield} matches the - \texttt{match} regular expression (logic is reversed if you use \texttt{notmatch} instead)\footnote{Regular expressions are full Perl 5.16 regular expressions. This means you may need to deal with special characters, see examples.}. You may use capture parenthesis as usual and refer to these (\$1\ldots\$9) in later \texttt{fieldvalue} specifications. This allows you to pull out parts of some fields and put these parts in other fields. + \texttt{match} regular expression (logic is reversed if you use \texttt{notmatch} and case-insensitive if you use the versions ending in )\footnote{Regular expressions are full Perl 5.16 regular expressions. This means you may need to deal with special characters, see examples.}. You may use capture parenthesis as usual and refer to these (\$1\ldots\$9) in later \texttt{fieldvalue} specifications. This allows you to pull out parts of some fields and put these parts in other fields. \item Perform a regular expression match and replace on the value of the \texttt{fieldsource} \prm{entryfield} if \texttt{match} and \texttt{replace} are defined. \item If \texttt{fieldset} is defined, then its value is \prm{entryfield} which will be set to a value specified by further options. If @@ -7387,6 +7617,8 @@ pseudo-field \bibfield{entrykey} for \texttt{fieldsource} which is the citation key of the entry. With \biblatexml\ the \bibfield{entrykey} is a normal attribute and can be reference like any other attribute. Naturally, this cannot be changed (used as \texttt{fieldset}, \texttt{fieldtarget} or changed using \texttt{replace}). +Macros used in \cmd{step} are expanded. Unexpandable contents should be protected with \cmd{detokenize}, regular expressions can be escaped using the dedicated \cmd{regexp} command (see the examples below). + \begin{ltxsyntax} \cmditem{DeclareStyleSourcemap}{specification} @@ -7447,8 +7679,8 @@ Copy the \bibfield{title} field to the \bibfield{note} field unless the } \end{ltxexample} % -Any \bibfield{chat} entrytypes would become \bibfield{customa} entrytypes and -would automatically have a \bibfield{type} field set to +Any \bibfield{chat} entrytypes would become \bibfield{customa} entrytypes and +would automatically have a \bibfield{type} field set to unless the \bibfield{type} field already exists in the entry (because \texttt{overwrite} is false by default). This mapping applies only to entries of type \bibtype{chat} since the first step has \texttt{final} set and so if the @@ -7896,7 +8128,7 @@ Specifies how many of the \cmd{constraintfield}'s inside the \cmd{consequent} ha \cmditem{constraintfield}{field} -For constraints of \prm{type} , the constraint applies to this \prm{field}. For constraints of \prm{type} , the entry must contain this \prm{field}. +For constraints of \prm{type} , the constraint applies to this \prm{field}. For constraints of \prm{type} , the entry must contain this \prm{field}. The data model declaration macros may be used multiple times as they append to the previous definitions. In order to replace, change or remove existing definitions (such as the default model which is loaded with \biblatex), you should reset (clear) the current definition and then set what you want using the following macros. Typically, these macros will be the first things in any \file{biblatex-dm.cfg} file: @@ -8210,7 +8442,7 @@ With a restriction to two characters for the name components of the label elemen } } \end{ltxexample} -% +% This would be the result (note that the individual family name label parts are no longer unambiguous): \begin{lstlisting}{} @@ -8377,7 +8609,7 @@ Defines the sorting template \prm{name}. The \prm{name} is the identifier passed \choitem{locale}{\prm{locale}} -The locale for the sorting template which then overrides the global sorting locale in the \opt{sortlocale} option discussed in \secref{use:opt:pre:gen}. +The locale for the sorting template which then overrides the global sorting locale in the \opt{sortlocale} option discussed in \secref{use:opt:pre:gen}. \end{optionlist*} @@ -8419,7 +8651,7 @@ The \cmd{field} element adds a \prm{field} to the sorting specification. If the \choitem[left]{padside}{left, right} -Pads a field on the \texttt{left} or \texttt{right} side using \opt{padchar} so that its width is \opt{padwidth}. If no padding option is set, no padding is done at all. If any padding option is specified, then padding is performed and the missing options are assigned built-in default values. If padding and substring matching are both specified, the substring match is performed first. +Pads a field on the \texttt{left} or \texttt{right} side using \opt{padchar} so that its width is \opt{padwidth}. If no padding option is set, no padding is done at all. If any padding option is specified, then padding is performed and the missing options are assigned built-in default values. If padding and substring matching are both specified, the substring match is performed first. \intitem[4]{padwidth} @@ -8672,14 +8904,14 @@ Specifies a string to be used to automatically populate the \bibfield{presort} f \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 +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 locale which expects the Devanāgarī script. Another common case is transliteration of Russian Cyrillic into Latin as defined by the ALA-LC standard. Such requirement 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} +\cmditem{translit}[langids]{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. +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 should be <*> to apply transliteration to all fields. The valid \prm{from} and \prm{to} values are given in table \ref{tab:translit}. The optional \prm{langids} parameter is a comma-separated list of \bibfield{langid} fields and the transliteration will apply only to bibliography entries containing one of the \bibfield{langid}s in the list. 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: +An example of transliterating titles so that they sort correctly in Sanskrit. This example assumes that entries that should have their title fields transliterated have a \bibfield{langid} field set to . \begin{ltxexample} \DeclareDatafieldSet{settitles}{ @@ -8693,7 +8925,7 @@ An example of transliterating titles so that they sort correctly in Sanskrit: } \DeclareSortTranslit{ - \translit[settitles]{iast}{devanagari} + \translit[sanskrit]{settitles}{iast}{devanagari} } \end{ltxexample} @@ -8719,7 +8951,7 @@ russian & bgn/pcgn-standard & BGN/PCGN:1947 (Standard Variant), Cyrillic to Lati \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. +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. \begin{ltxsyntax} \cmditem{DeclareBiblistFilter}{name}{specification} @@ -8757,7 +8989,7 @@ Fields in the datamodel which are marked as