diff options
Diffstat (limited to 'Master/texmf-dist')
105 files changed, 28577 insertions, 13598 deletions
diff --git a/Master/texmf-dist/bibtex/bib/biblatex/biblatex-examples.bib b/Master/texmf-dist/bibtex/bib/biblatex/biblatex-examples.bib deleted file mode 100644 index cdacbc0a36c..00000000000 --- a/Master/texmf-dist/bibtex/bib/biblatex/biblatex-examples.bib +++ /dev/null @@ -1,1294 +0,0 @@ -@PREAMBLE{ "\RequireBiber[2]" } -@STRING{anch-ie = {Angew.~Chem. Int.~Ed.} } -@STRING{cup = {Cambridge University Press} } -@STRING{dtv = {Deutscher Taschenbuch-Verlag} } -@STRING{hup = {Harvard University Press} } -@STRING{jams = {J.~Amer. Math. Soc.} } -@STRING{jchph = {J.~Chem. Phys.} } -@STRING{jomch = {J.~Organomet. Chem.} } -@STRING{pup = {Princeton University Press} } - -@InCollection{westfahl:space, - crossref = {westfahl:frontier}, - hyphenation = {american}, - author = {Westfahl, Gary}, - indextitle = {True Frontier, The}, - title = {The True Frontier}, - subtitle = {Confronting and Avoiding the Realities of Space in American Science Fiction - Films}, - pages = {55--65}, - annotation = {A cross-referenced article from a \texttt{collection}. This is an - \texttt{incollection} entry with a \texttt{crossref} field. Note the - \texttt{subtitle} and \texttt{indextitle} fields} -} - -@Set{set, - entryset = {herrmann,aksin,yoon}, - annotation = {A \texttt{set} with three members} -} - -@Set{stdmodel, - entryset = {glashow,weinberg,salam}, - annotation = {A \texttt{set} with three members discussing the standard model of - particle physics} -} - -@Article{aksin, - author = {Aks{\i}n, {\"O}zge and T{\"u}rkmen, Hayati and Artok, Levent and - {\k{C}}etinkaya, Bekir and Ni, Chaoying and B{\"u}y{\"u}kg{\"u}ng{\"o}r, Orhan - and {\"O}zkal, Erhan}, - indextitle = {Effect of immobilization on catalytic characteristics}, - title = {Effect of immobilization on catalytic characteristics of saturated - Pd-N-heterocyclic carbenes in Mizoroki-Heck reactions}, - journaltitle = jomch, - volume = {691}, - number = {13}, - date = {2006}, - pages = {3027--3036} -} - -@Article{angenendt, - hyphenation = {german}, - author = {Angenendt, Arnold}, - indextitle = {In Honore Salvatoris}, - title = {In Honore Salvatoris~-- Vom Sinn und Unsinn der Patrozinienkunde}, - shorttitle = {In Honore Salvatoris}, - journaltitle = {Revue d'Histoire Eccl{\'e}siastique}, - volume = {97}, - date = {2002}, - pages = {431--456, 791--823}, - annotation = {A German article in a French journal. Apart from that, a typical - \texttt{article} entry. Note the \texttt{indextitle} field} -} - -@Article{baez/article, - hyphenation = {american}, - author = {Baez, John C. and Lauda, Aaron D.}, - title = {Higher-Dimensional Algebra V: 2-Groups}, - journaltitle = {Theory and Applications of Categories}, - volume = {12}, - version = {3}, - date = {2004}, - pages = {423--491}, - eprinttype = {arxiv}, - eprint = {math/0307200v3}, - annotation = {An \texttt{article} with \texttt{eprint} and \texttt{eprinttype} fields. Note - that the arXiv reference is transformed into a clickable link if - \texttt{hyperref} support has been enabled. Compare \texttt{baez\slash online}, - which is the same item given as an \texttt{online} entry} -} - -@Article{bertram, - hyphenation = {american}, - author = {Bertram, Aaron and Wentworth, Richard}, - title = {Gromov invariants for holomorphic maps on Riemann surfaces}, - shorttitle = {Gromov invariants}, - journaltitle = jams, - volume = {9}, - number = {2}, - date = {1996}, - pages = {529--571}, - annotation = {An \texttt{article} entry with a \texttt{volume} and a \texttt{number} field} -} - -@Article{gillies, - hyphenation = {british}, - author = {Gillies, Alexander}, - title = {Herder and the Preparation of Goethe's Idea of World Literature}, - journaltitle = {Publications of the English Goethe Society}, - volume = {9}, - series = {newseries}, - date = {1933}, - pages = {46--67}, - annotation = {An \texttt{article} entry with a \texttt{series} and a \texttt{volume} field. - Note that format of the \texttt{series} field in the database file} -} - -@Article{glashow, - author = {Glashow, Sheldon}, - title = {Partial Symmetries of Weak Interactions}, - journaltitle = {Nucl.~Phys.}, - volume = {22}, - date = {1961}, - pages = {579--588} -} - -@Article{herrmann, - author = {Herrmann, Wolfgang A. and {\"O}fele, Karl and Schneider, Sabine K. and - Herdtweck, Eberhardt and Hoffmann, Stephan D.}, - indextitle = {Carbocyclic carbene as an efficient catalyst, A}, - title = {A carbocyclic carbene as an efficient catalyst ligand for C--C coupling - reactions}, - journaltitle = anch-ie, - volume = {45}, - number = {23}, - date = {2006}, - pages = {3859--3862} -} - -@Article{kastenholz, - hyphenation = {american}, - author = {Kastenholz, M. A. and H{\"u}nenberger, Philippe H.}, - indextitle = {Computation of ionic solvation free energies}, - title = {Computation of methodology\hyphen independent ionic solvation free energies - from molecular simulations}, - subtitle = {I. The electrostatic potential in molecular liquids}, - journaltitle = jchph, - volume = {124}, - eid = {124106}, - date = {2006}, - doi = {10.1063/1.2172593}, - annotation = {An \texttt{article} entry with an \texttt{eid} and a \texttt{doi} field. Note - that the \textsc{doi} is transformed into a clickable link if \texttt{hyperref} - support has been enabled}, - abstract = {The computation of ionic solvation free energies from atomistic simulations is - a surprisingly difficult problem that has found no satisfactory solution for - more than 15 years. The reason is that the charging free energies evaluated from - such simulations are affected by very large errors. One of these is related to - the choice of a specific convention for summing up the contributions of solvent - charges to the electrostatic potential in the ionic cavity, namely, on the basis - of point charges within entire solvent molecules (M scheme) or on the basis of - individual point charges (P scheme). The use of an inappropriate convention may - lead to a charge-independent offset in the calculated potential, which depends - on the details of the summation scheme, on the quadrupole-moment trace of the - solvent molecule, and on the approximate form used to represent electrostatic - interactions in the system. However, whether the M or P scheme (if any) - represents the appropriate convention is still a matter of on-going debate. The - goal of the present article is to settle this long-standing controversy by - carefully analyzing (both analytically and numerically) the properties of the - electrostatic potential in molecular liquids (and inside cavities within - them).} -} - -@Article{murray, - hyphenation = {american}, - author = {Hostetler, Michael J. and Wingate, Julia E. and Zhong, Chuan-Jian and Harris, - Jay E. and Vachet, Richard W. and Clark, Michael R. and Londono, J. David and - Green, Stephen J. and Stokes, Jennifer J. and Wignall, George D. and Glish, Gary - L. and Porter, Marc D. and Evans, Neal D. and Murray, Royce W.}, - indextitle = {Alkanethiolate gold cluster molecules}, - title = {Alkanethiolate gold cluster molecules with core diameters from 1.5 to 5.2~nm}, - subtitle = {Core and monolayer properties as a function of core size}, - shorttitle = {Alkanethiolate gold cluster molecules}, - journaltitle = {Langmuir}, - volume = {14}, - number = {1}, - date = {1998}, - pages = {17--30}, - annotation = {An \texttt{article} entry with \arabic{author} authors. By default, long author - and editor lists are automatically truncated. This is configurable} -} - -@Article{reese, - hyphenation = {american}, - author = {Reese, Trevor R.}, - title = {Georgia in Anglo-Spanish Diplomacy, 1736-1739}, - journaltitle = {William and Mary Quarterly}, - volume = {15}, - series = {3}, - date = {1958}, - pages = {168--190}, - annotation = {An \texttt{article} entry with a \texttt{series} and a \texttt{volume} field. - Note the format of the series. If the value of the \texttt{series} field is an - integer, this number is printed as an ordinal and the string \enquote*{series} - is appended automatically} -} - -@Article{shore, - author = {Shore, Bradd}, - title = {Twice-Born, Once Conceived}, - subtitle = {Meaning Construction and Cultural Cognition}, - journaltitle = {American Anthropologist}, - volume = {93}, - series = {newseries}, - number = {1}, - date = {1991-03}, - pages = {9--27}, - annotation = {An \texttt{article} entry with \texttt{series}, \texttt{volume}, and - \texttt{number} fields. Note the format of the \texttt{series} which is a - localization key} -} - -@Article{sigfridsson, - hyphenation = {american}, - author = {Sigfridsson, Emma and Ryde, Ulf}, - indextitle = {Methods for deriving atomic charges}, - title = {Comparison of methods for deriving atomic charges from the electrostatic - potential and moments}, - journaltitle = {Journal of Computational Chemistry}, - volume = {19}, - number = {4}, - date = {1998}, - doi = {10.1002/(SICI)1096-987X(199803)19:4<377::AID-JCC1>3.0.CO;2-P}, - pages = {377--395}, - annotation = {An \texttt{article} entry with \texttt{volume}, \texttt{number}, and - \texttt{doi} fields. Note that the \textsc{doi} is transformed into a clickable - link if \texttt{hyperref} support has been enabled}, - abstract = { Four methods for deriving partial atomic charges from the quantum chemical - electrostatic potential (CHELP, CHELPG, Merz-Kollman, and RESP) have been - compared and critically evaluated. It is shown that charges strongly depend on - how and where the potential points are selected. Two alternative methods are - suggested to avoid the arbitrariness in the point-selection schemes and van der - Waals exclusion radii: CHELP-BOW, which also estimates the charges from the - electrostatic potential, but with potential points that are Boltzmann-weighted - after their occurrence in actual simulations using the energy function of the - program in which the charges will be used, and CHELMO, which estimates the - charges directly from the electrostatic multipole moments. Different criteria - for the quality of the charges are discussed.} -} - -@Article{spiegelberg, - hyphenation = {german}, - sorttitle = {Intention und Intentionalitat in der Scholastik, bei Brentano und Husserl}, - indexsorttitle = {Intention und Intentionalitat in der Scholastik, bei Brentano und Husserl}, - author = {Spiegelberg, Herbert}, - title = {\mkbibquote{Intention} und \mkbibquote{Intentionalit{\"a}t} in der Scholastik, - bei Brentano und Husserl}, - shorttitle = {Intention und Intentionalit{\"a}t}, - journaltitle = {Studia Philosophica}, - volume = {29}, - date = {1969}, - pages = {189--216}, - annotation = {An \texttt{article} entry. Note the \texttt{sorttitle} and - \texttt{indexsorttitle} fields and the markup of the quotes in the database file} -} - -@Article{springer, - hyphenation = {british}, - author = {Springer, Otto}, - title = {Mediaeval Pilgrim Routes from Scandinavia to Rome}, - shorttitle = {Mediaeval Pilgrim Routes}, - journaltitle = {Mediaeval Studies}, - volume = {12}, - date = {1950}, - pages = {92--122}, - annotation = {A plain \texttt{article} entry} -} - -@Article{weinberg, - author = {Weinberg, Steven}, - title = {A Model of Leptons}, - journaltitle = {Phys.~Rev.~Lett.}, - volume = {19}, - date = {1967}, - pages = {1264--1266} -} - -@Article{yoon, - author = {Yoon, Myeong S. and Ryu, Dowook and Kim, Jeongryul and Ahn, Kyo Han}, - indextitle = {Palladium pincer complexes}, - title = {Palladium pincer complexes with reduced bond angle strain: efficient catalysts - for the Heck reaction}, - journaltitle = {Organometallics}, - volume = {25}, - number = {10}, - date = {2006}, - pages = {2409--2411} -} - -@Book{aristotle:anima, - keywords = {primary}, - hyphenation = {british}, - author = {Aristotle}, - editor = {Hicks, Robert Drew}, - title = {De Anima}, - publisher = cup, - location = {Cambridge}, - date = {1907}, - annotation = {A \texttt{book} entry with an \texttt{author} and an \texttt{editor}} -} - -@Book{aristotle:physics, - keywords = {primary}, - hyphenation = {american}, - author = {Aristotle}, - translator = {Wicksteed, P. H. and Cornford, F. M.}, - title = {Physics}, - shorttitle = {Physics}, - publisher = {G. P. Putnam}, - location = {New York}, - date = {1929}, - annotation = {A \texttt{book} entry with a \texttt{translator} field} -} - -@Book{aristotle:poetics, - keywords = {primary}, - hyphenation = {british}, - author = {Aristotle}, - editor = {Lucas, D. W.}, - title = {Poetics}, - shorttitle = {Poetics}, - series = {Clarendon Aristotle}, - publisher = {Clarendon Press}, - location = {Oxford}, - date = {1968}, - annotation = {A \texttt{book} entry with an \texttt{author} and an \texttt{editor} as well as - a \texttt{series} field} -} - -@Book{aristotle:rhetoric, - keywords = {primary}, - hyphenation = {british}, - sorttitle = {Rhetoric of Aristotle}, - author = {Aristotle}, - editor = {Cope, Edward Meredith}, - commentator = {Cope, Edward Meredith}, - indextitle = {Rhetoric of Aristotle, The}, - title = {The Rhetoric of Aristotle with a commentary by the late Edward Meredith Cope}, - shorttitle = {Rhetoric}, - volumes = {3}, - publisher = cup, - date = {1877}, - annotation = {A commented edition. Note the concatenation of the \texttt{editor} and - \texttt{commentator} fields as well as the \texttt{volumes}, \texttt{sorttitle}, - and \texttt{indextitle} fields} -} - -@Book{augustine, - hyphenation = {american}, - author = {Augustine, Robert L.}, - title = {Heterogeneous catalysis for the synthetic chemist}, - shorttitle = {Heterogeneous catalysis}, - publisher = {Marcel Dekker}, - location = {New York}, - date = {1995}, - annotation = {A plain \texttt{book} entry} -} - -@Book{averroes/bland, - keywords = {primary}, - hyphenation = {american}, - author = {Averroes}, - editor = {Bland, Kalman P.}, - translator = {Bland, Kalman P.}, - indextitle = {Epistle on the Possibility of Conjunction, The}, - title = {The Epistle on the Possibility of Conjunction with the Active Intellect by Ibn - Rushd with the Commentary of Moses Narboni}, - shorttitle = {Possibility of Conjunction}, - series = {Moreshet: Studies in Jewish History, Literature and Thought}, - number = {7}, - publisher = {Jewish Theological Seminary of America}, - location = {New York}, - date = {1982}, - annotation = {A \texttt{book} entry with a \texttt{series} and a \texttt{number}. Note the - concatenation of the \texttt{editor} and \texttt{translator} fields as well as - the \texttt{indextitle} field} -} - -@Book{averroes/hannes, - keywords = {primary}, - hyphenation = {german}, - sorttitle = {Uber die Moglichkeit der Conjunktion}, - indexsorttitle = {Uber die Moglichkeit der Conjunktion}, - author = {Averroes}, - editor = {Hannes, Ludwig}, - translator = {Hannes, Ludwig}, - annotator = {Hannes, Ludwig}, - indextitle = {{\"U}ber die M{\"o}glichkeit der Conjunktion}, - title = {Des Averro{\"e}s Abhandlung: \mkbibquote{{\"U}ber die M{\"o}glichkeit der - Conjunktion} oder \mkbibquote{{\"U}ber den materiellen Intellekt}}, - shorttitle = {{\"U}ber die M{\"o}glichkeit der Conjunktion}, - publisher = {C.~A. Kaemmerer}, - location = {Halle an der Saale}, - date = {1892}, - annotation = {An annotated edition. Note the concatenation of the \texttt{editor}, - \texttt{translator}, and \texttt{annotator} fields. Also note the - \texttt{shorttitle}, \texttt{indextitle}, \texttt{sorttitle}, and - \texttt{indexsorttitle} fields} -} - -@Book{averroes/hercz, - keywords = {primary}, - hyphenation = {german}, - indexsorttitle = {Drei Abhandlungen uber die Conjunction}, - author = {Averroes}, - editor = {Hercz, J.}, - translator = {Hercz, J.}, - indextitle = {Drei Abhandlungen {\"u}ber die Conjunction}, - title = {Drei Abhandlungen {\"u}ber die Conjunction des separaten Intellects mit dem - Menschen}, - subtitle = {Von Averroes (Vater und Sohn), aus dem Arabischen {\"u}bersetzt von Samuel Ibn - Tibbon}, - shorttitle = {Drei Abhandlungen}, - publisher = {S.~Hermann}, - location = {Berlin}, - date = {1869}, - annotation = {A \texttt{book} entry. Note the concatenation of the \texttt{editor} and - \texttt{translator} fields as well as the \texttt{indextitle} and - \texttt{indexsorttitle} fields} -} - -@Book{cicero, - hyphenation = {german}, - author = {Cicero, Marcus Tullius}, - editor = {Blank-Sangmeister, Ursula}, - translator = {Blank-Sangmeister, Ursula}, - afterword = {Thraede, Klaus}, - indextitle = {De natura deorum}, - title = {De natura deorum. {\"U}ber das Wesen der G{\"o}tter}, - shorttitle = {De natura deorum}, - language = {langlatin and langgerman}, - publisher = {Reclam}, - location = {Stuttgart}, - date = {1995}, - annotation = {A bilingual edition of Cicero's \emph{De natura deorum}, with a German - translation. Note the format of the \texttt{language} field in the database - file, the concatenation of the \texttt{editor} and \texttt{translator} fields, - and the \texttt{afterword} field} -} - -@Book{coleridge, - hyphenation = {british}, - author = {Coleridge, Samuel Taylor}, - editor = {Coburn, Kathleen and Engell, James and Bate, W. Jackson}, - indextitle = {Biographia literaria}, - title = {Biographia literaria, or Biographical sketches of my literary life and - opinions}, - shorttitle = {Biographia literaria}, - maintitle = {The collected works of Samuel Taylor Coleridge}, - part = {2}, - volume = {7}, - series = {Bollingen Series}, - number = {75}, - publisher = {Routledge and Kegan Paul}, - location = {London}, - date = {1983}, - annotation = {One (partial) volume of a multivolume book. This is a \texttt{book} entry with - a \texttt{volume} and a \texttt{part} field which explicitly refers to the - second (physical) part of the seventh (logical) volume. Also note the - \texttt{series} and \texttt{number} fields} -} - -@Book{companion, - hyphenation = {american}, - sorttitle = {LaTeX Companion}, - author = {Goossens, Michel and Mittelbach, Frank and Samarin, Alexander}, - indextitle = {LaTeX Companion, The}, - title = {The LaTeX Companion}, - shorttitle = {LaTeX Companion}, - edition = {1}, - publisher = {Addison-Wesley}, - location = {Reading, Mass.}, - date = {1994}, - pagetotal = {528}, - annotation = {A book with three authors. Note the formatting of the author list. By default, - only the first name is reversed in the bibliography} -} - -@Book{cotton, - hyphenation = {british}, - author = {Cotton, Frank Albert and Wilkinson, Geoffrey and Murillio, Carlos A. and - Bochmann, Manfred}, - title = {Advanced inorganic chemistry}, - edition = {6}, - publisher = {Wiley}, - location = {Chichester}, - date = {1999}, - annotation = {A \texttt{book} entry with \arabic{author} authors and an \texttt{edition} - field. By default, long \texttt{author} and \texttt{editor} lists are - automatically truncated. This is configurable} -} - -@Book{gerhardt, - hyphenation = {american}, - sorttitle = {Federal Appointments Process}, - author = {Gerhardt, Michael J.}, - indextitle = {Federal Appointments Process, The}, - title = {The Federal Appointments Process}, - subtitle = {A Constitutional and Historical Analysis}, - shorttitle = {Federal Appointments Process}, - publisher = {Duke University Press}, - location = {Durham and London}, - date = {2000}, - annotation = {This is a \texttt{book} entry. Note the format of the \texttt{location} field - as well as the \texttt{sorttitle} and \texttt{indextitle} fields} -} - -@Book{gonzalez, - hyphenation = {american}, - sorttitle = {Ghost of John Wayne and Other Stories}, - author = {Gonzalez, Ray}, - indextitle = {Ghost of John Wayne and Other Stories, The}, - title = {The Ghost of John Wayne and Other Stories}, - shorttitle = {Ghost of John Wayne}, - publisher = {The University of Arizona Press}, - location = {Tucson}, - date = {2001}, - isbn = {0-816-52066-6}, - annotation = {A collection of short stories. This is a \texttt{book} entry. Note the - \texttt{sorttitle} and \texttt{indextitle} fields in the database file. There's - also an \texttt{isbn} field} -} - -@Book{hammond, - hyphenation = {british}, - sorttitle = {Basics of crystallography and diffraction}, - author = {Hammond, Christopher}, - indextitle = {Basics of crystallography and diffraction, The}, - title = {The basics of crystallography and diffraction}, - shorttitle = {Crystallography and diffraction}, - publisher = {International Union of Crystallography and Oxford University Press}, - location = {Oxford}, - date = {1997}, - annotation = {A \texttt{book} entry. Note the \texttt{sorttitle} and \texttt{indextitle} - fields as well as the format of the \texttt{publisher} field} -} - -@Book{iliad, - hyphenation = {german}, - sorttitle = {Ilias}, - author = {Homer}, - translator = {Schadewaldt, Wolfgang}, - introduction = {Latacz, Joachim}, - indextitle = {Ilias, Die}, - title = {Die Ilias}, - shorttitle = {Ilias}, - edition = {3}, - publisher = {Artemis \& Winkler}, - location = {D{\"u}sseldorf and Z{\"u}rich}, - date = {2004}, - annotation = {A German translation of the \emph{Iliad}. Note the \texttt{translator} and - \texttt{introduction} fields and the format of the \texttt{location} field in - the database file. Also note the \texttt{sorttitle} and \texttt{indextitle} fields} -} - -@Book{knuth:ct, - hyphenation = {american}, - sortyear = {1984-0}, - sorttitle = {Computers & Typesetting}, - indexsorttitle = {Computers & Typesetting}, - author = {Knuth, Donald E.}, - title = {Computers \& Typesetting}, - volumes = {5}, - publisher = {Addison-Wesley}, - location = {Reading, Mass.}, - date = {1984/1986}, - annotation = {A five-volume book cited as a whole. This is a \texttt{book} entry, note the - \texttt{volumes} field} -} - -@Book{knuth:ct:a, - hyphenation = {american}, - sortyear = {1984-1}, - sorttitle = {Computers & Typesetting A}, - indexsorttitle = {The TeXbook}, - author = {Knuth, Donald E.}, - indextitle = {\TeX book, The}, - title = {The \TeX book}, - shorttitle = {\TeX book}, - maintitle = {Computers \& Typesetting}, - volume = {A}, - publisher = {Addison-Wesley}, - location = {Reading, Mass.}, - date = {1984}, - annotation = {The first volume of a five-volume book. Note the \texttt{sorttitle} and - \texttt{sortyear} fields. 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} -} - -@Book{knuth:ct:b, - hyphenation = {american}, - sortyear = {1986-1}, - sorttitle = {Computers & Typesetting B}, - indexsorttitle = {TeX: The Program}, - author = {Knuth, Donald E.}, - title = {\TeX: The Program}, - shorttitle = {\TeX}, - maintitle = {Computers \& Typesetting}, - volume = {B}, - publisher = {Addison-Wesley}, - location = {Reading, Mass.}, - date = {1986}, - annotation = {The second volume of a five-volume book. Note the \texttt{sorttitle} and - \texttt{sortyear} fields. Also note the \texttt{indexsorttitle} field} -} - -@Book{knuth:ct:c, - hyphenation = {american}, - sortyear = {1986-2}, - sorttitle = {Computers & Typesetting C}, - author = {Knuth, Donald E.}, - indextitle = {METAFONTbook, The}, - title = {The METAFONTbook}, - shorttitle = {METAFONTbook}, - maintitle = {Computers \& Typesetting}, - volume = {C}, - publisher = {Addison-Wesley}, - location = {Reading, Mass.}, - date = {1986}, - annotation = {The third volume of a five-volume book. Note the \texttt{sorttitle} and - \texttt{sortyear} fields as well as the \texttt{indextitle} field} -} - -@Book{knuth:ct:d, - hyphenation = {american}, - sortyear = {1986-3}, - sorttitle = {Computers & Typesetting D}, - author = {Knuth, Donald E.}, - title = {METAFONT: The Program}, - shorttitle = {METAFONT}, - maintitle = {Computers \& Typesetting}, - volume = {D}, - publisher = {Addison-Wesley}, - location = {Reading, Mass.}, - date = {1986}, - annotation = {The fourth volume of a five-volume book. Note the \texttt{sorttitle} and - \texttt{sortyear} fields} -} - -@Book{knuth:ct:e, - hyphenation = {american}, - sortyear = {1986-4}, - sorttitle = {Computers & Typesetting E}, - author = {Knuth, Donald E.}, - title = {Computer Modern Typefaces}, - maintitle = {Computers \& Typesetting}, - volume = {E}, - publisher = {Addison-Wesley}, - location = {Reading, Mass.}, - date = {1986}, - annotation = {The fifth volume of a five-volume book. Note the \texttt{sorttitle} and - \texttt{sortyear} fields} -} - -@Book{malinowski, - hyphenation = {british}, - author = {Malinowski, Bronis{\l}aw}, - title = {Argonauts of the Western Pacific}, - subtitle = {An account of native enterprise and adventure in the Archipelagoes of - Melanesian New Guinea}, - shorttitle = {Argonauts}, - edition = {8}, - publisher = {Routledge and Kegan Paul}, - location = {London}, - date = {1972}, - annotation = {This is a \texttt{book} entry. Note the format of the \texttt{publisher} and - \texttt{edition} fields as well as the \texttt{subtitle} field} -} - -@Book{maron, - hyphenation = {american}, - author = {Maron, Monika}, - translator = {Brigitte Goldstein}, - title = {Animal Triste}, - shorttitle = {Animal Triste}, - publisher = {University of Nebraska Press}, - location = {Lincoln}, - date = {2000}, - origlanguage = {german}, - annotation = {An English translation of a German novel with a French title. In other words: a - \texttt{book} entry with a \texttt{translator} field. Note the - \texttt{origlanguage} field which is concatenated with the \texttt{translator}} -} - -@Book{massa, - hyphenation = {british}, - author = {Werner Massa}, - title = {Crystal structure determination}, - edition = {2}, - publisher = {Spinger}, - location = {Berlin}, - date = {2004}, - annotation = {A \texttt{book} entry with an \texttt{edition} field} -} - -@Book{nietzsche:ksa, - hyphenation = {german}, - sortyear = {1988-00-000}, - sorttitle = {Werke-00-000}, - indexsorttitle = {Samtliche Werke}, - author = {Nietzsche, Friedrich}, - editor = {Colli, Giorgio and Montinari, Mazzino}, - title = {S{\"a}mtliche Werke}, - subtitle = {Kritische Studienausgabe}, - volumes = {15}, - edition = {2}, - publisher = dtv # { and Walter de Gruyter}, - location = {M{\"u}nchen and Berlin and New York}, - date = {1988}, - annotation = {The critical edition of Nietzsche's works. This is a \texttt{book} 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 sorting order of the bibliography. We want this - item listed first in the bibliography} -} - -@Book{nietzsche:ksa1, - hyphenation = {german}, - sortyear = {1988-01-000}, - sorttitle = {Werke-01-000}, - indexsorttitle = {Samtliche Werke I}, - author = {Nietzsche, Friedrich}, - bookauthor = {Nietzsche, Friedrich}, - editor = {Colli, Giorgio and Montinari, Mazzino}, - indextitle = {S{\"a}mtliche Werke I}, - title = {Die Geburt der Trag{\"o}die. Unzeitgem{\"a}{\ss}e Betrachtungen I--IV. - Nachgelassene Schriften 1870--1973}, - shorttitle = {S{\"a}mtliche Werke I}, - maintitle = {S{\"a}mtliche Werke}, - mainsubtitle = {Kritische Studienausgabe}, - volume = {1}, - edition = {2}, - publisher = dtv # { and Walter de Gruyter}, - location = {M{\"u}nchen and Berlin and New York}, - date = {1988}, - 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 - referring to the entire edition} -} - -@Book{nussbaum, - keywords = {secondary}, - hyphenation = {american}, - sorttitle = {Aristotle's De Motu Animalium}, - indexsorttitle = {Aristotle's De Motu Animalium}, - author = {Nussbaum, Martha}, - title = {Aristotle's \mkbibquote{De Motu Animalium}}, - publisher = pup, - location = {Princeton}, - date = {1978}, - annotation = {A \texttt{book} entry. Note the \texttt{sorttitle} and \texttt{indexsorttitle} - fields and the markup of the quotes in the database file} -} - -@Book{piccato, - hyphenation = {american}, - author = {Piccato, Pablo}, - title = {City of Suspects}, - subtitle = {Crime in Mexico City, 1900--1931}, - shorttitle = {City of Suspects}, - publisher = {Duke University Press}, - location = {Durham and London}, - date = {2001}, - annotation = {This is a \texttt{book} entry. Note the format of the \texttt{location} field - in the database file} -} - -@Book{vangennep, - options = {useprefix}, - hyphenation = {french}, - sorttitle = {Rites de passage}, - author = {van Gennep, Arnold}, - indextitle = {Rites de passage, Les}, - title = {Les rites de passage}, - shorttitle = {Rites de passage}, - publisher = {Nourry}, - location = {Paris}, - date = {1909}, - annotation = {A \texttt{book} entry. Note the format of the printed name and compare the - \texttt{useprefix} option in the \texttt{options} field as well as - \texttt{brandt} and \texttt{geer}} -} - -@Book{vazques-de-parga, - hyphenation = {spanish}, - sorttitle = {Peregrinaciones a Santiago de Compostela}, - author = {V{\'a}zques{ de }Parga, Luis and Lacarra, Jos{\'e} Mar{\'i}a and Ur{\'i}a - R{\'i}u, Juan}, - indextitle = {Peregrinaciones a Santiago de Compostela, Las}, - title = {Las Peregrinaciones a Santiago de Compostela}, - shorttitle = {Peregrinaciones}, - volumes = {3}, - publisher = {Iberdrola}, - location = {Pamplona}, - date = {1993}, - note = {Ed. facs. de la realizada en 1948--49}, - annotation = {A multivolume book cited as a whole. This is a \texttt{book} entry with - \texttt{volumes}, \texttt{note}, \texttt{sorttitle}, and \texttt{indextitle} fields} -} - -@Book{worman, - hyphenation = {american}, - sorttitle = {Cast of Character}, - author = {Worman, Nancy}, - indextitle = {Cast of Character, The}, - title = {The Cast of Character}, - subtitle = {Style in Greek Literature}, - shorttitle = {Cast of Character}, - publisher = {University of Texas Press}, - location = {Austin}, - date = {2002}, - annotation = {A \texttt{book} entry. Note the \texttt{sorttitle} and \texttt{indextitle} - fields} -} - -@Collection{britannica, - options = {useeditor=false}, - label = {EB}, - hyphenation = {british}, - sorttitle = {Encyclop{\ae}dia Britannica}, - editor = {Preece, Warren E.}, - indextitle = {Encyclop{\ae}dia Britannica, The New}, - title = {The New Encyclop{\ae}dia Britannica}, - shorttitle = {Encyclop{\ae}dia Britannica}, - volumes = {32}, - edition = {15}, - publisher = {Encyclop{\ae}dia Britannica}, - location = {Chicago, Ill.}, - date = {2003}, - annotation = {This is a \texttt{collection} 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 editor. In addition to that, we want the title to - be alphabetized under \enquote*{E} rather than \enquote*{T}. Also note the - \texttt{label} field which is provided for author-year citation styles} -} - -@Collection{gaonkar, - hyphenation = {american}, - editor = {Gaonkar, Dilip Parameshwar}, - title = {Alternative Modernities}, - publisher = {Duke University Press}, - location = {Durham and London}, - date = {2001}, - isbn = {0-822-32714-7}, - annotation = {This is a \texttt{collection} entry. Note the format of the \texttt{location} - field in the database file as well as the \texttt{isbn} field} -} - -@Collection{jaffe, - editor = {Jaff{\'e}, Philipp}, - editora = {Loewenfeld, Samuel and Kaltenbrunner, Ferdinand and Ewald, Paul}, - editoratype = {redactor}, - indextitle = {Regesta Pontificum Romanorum}, - title = {Regesta Pontificum Romanorum ab condita ecclesia ad annum post Christum natum - \textsc{mcxcviii}}, - shorttitle = {Regesta Pontificum Romanorum}, - volumes = {2}, - edition = {2}, - location = {Leipzig}, - date = {1885/1888}, - annotation = {A \texttt{collection} entry with \texttt{edition} and \texttt{volumes} fields. - Note the \texttt{editora} and \texttt{editoratype} fields} -} - -@Collection{westfahl:frontier, - hyphenation = {american}, - editor = {Westfahl, Gary}, - title = {Space and Beyond}, - subtitle = {The Frontier Theme in Science Fiction}, - booktitle = {Space and Beyond}, - booksubtitle = {The Frontier Theme in Science Fiction}, - publisher = {Greenwood}, - location = {Westport, Conn. and London}, - date = {2000}, - annotation = {This is a \texttt{collection} entry. Note the format of the \texttt{location} - field as well as the \texttt{subtitle} and \texttt{booksubtitle} fields} -} - -@InBook{kant:kpv, - shorthand = {KpV}, - hyphenation = {german}, - author = {Kant, Immanuel}, - bookauthor = {Kant, Immanuel}, - title = {Kritik der praktischen Vernunft}, - shorttitle = {Kritik der praktischen Vernunft}, - booktitle = {Kritik der praktischen Vernunft. Kritik der Urtheilskraft}, - maintitle = {Kants Werke. Akademie Textausgabe}, - volume = {5}, - publisher = {Walter de Gruyter}, - location = {Berlin}, - date = {1968}, - pages = {1--163}, - annotation = {An edition of Kant's \emph{Collected Works}, volume five. This is an - \texttt{inbook} entry which explicitly refers to the \emph{Critique of Practical - Reason} only, not to the entire fifth volume. Note the \texttt{author} and - \texttt{bookauthor} fields in the database file. By default, the - \texttt{bookauthor} is omitted if the values of the \texttt{author} and - \texttt{bookauthor} fields are identical} -} - -@InBook{kant:ku, - shorthand = {KU}, - hyphenation = {german}, - author = {Kant, Immanuel}, - bookauthor = {Kant, Immanuel}, - title = {Kritik der Urtheilskraft}, - booktitle = {Kritik der praktischen Vernunft. Kritik der Urtheilskraft}, - maintitle = {Kants Werke. Akademie Textausgabe}, - volume = {5}, - publisher = {Walter de Gruyter}, - location = {Berlin}, - date = {1968}, - pages = {165--485}, - annotation = {An edition of Kant's \emph{Collected Works}, volume five. This is an - \texttt{inbook} entry which explicitly refers to the \emph{Critique of Judgment} - only, not to the entire fifth volume} -} - -@InBook{nietzsche:historie, - hyphenation = {german}, - sortyear = {1988-01-243}, - sorttitle = {Werke-01-243}, - indexsorttitle = {Vom Nutzen und Nachtheil der Historie fur das Leben}, - author = {Nietzsche, Friedrich}, - bookauthor = {Nietzsche, Friedrich}, - editor = {Colli, Giorgio and Montinari, Mazzino}, - indextitle = {Vom Nutzen und Nachtheil der Historie f{\"u}r das Leben}, - title = {Unzeitgem{\"a}sse Betrachtungen. Zweites St{\"u}ck}, - subtitle = {Vom Nutzen und Nachtheil der Historie f{\"u}r das Leben}, - shorttitle = {Vom Nutzen und Nachtheil der Historie}, - booktitle = {Die Geburt der Trag{\"o}die. Unzeitgem{\"a}{\ss}e Betrachtungen I--IV. - Nachgelassene Schriften 1870--1973}, - maintitle = {S{\"a}mtliche Werke}, - mainsubtitle = {Kritische Studienausgabe}, - volume = {1}, - publisher = dtv # { and Walter de Gruyter}, - location = {M{\"u}nchen and Berlin and New York}, - date = {1988}, - pages = {243--334}, - annotation = {A single essay from the critical edition of Nietzsche's works. 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 this entry to - be listed after the entry referring to the entire first volume} -} - -@InCollection{brandt, - options = {useprefix=false}, - hyphenation = {german}, - indexsorttitle = {Nordischen Lander von der Mitte des 11. Jahrhunderts bis 1448}, - author = {von Brandt, Ahasver and Erich Hoffmann}, - editor = {Ferdinand Seibt}, - indextitle = {Nordischen L{\"a}nder von der Mitte des 11.~Jahrhunderts bis 1448, Die}, - title = {Die nordischen L{\"a}nder von der Mitte des 11.~Jahrhunderts bis 1448}, - shorttitle = {Die nordischen L{\"a}nder}, - booktitle = {Europa im Hoch- und Sp{\"a}tmittelalter}, - series = {Handbuch der europ{\"a}ischen Geschichte}, - number = {2}, - publisher = {Klett-Cotta}, - location = {Stuttgart}, - date = {1987}, - pages = {884--917}, - annotation = {An \texttt{incollection} entry with a \texttt{series} and a \texttt{number}. - Note the format of the printed name and compare the \texttt{useprefix} option in - the \texttt{options} field as well as \texttt{vangennep}. Also note the - \texttt{indextitle, and \texttt{indexsorttitle} fields}} -} - -@InCollection{hyman, - keywords = {secondary}, - hyphenation = {american}, - author = {Arthur Hyman}, - editor = {O'Meara, Dominic J.}, - indextitle = {Aristotle's Theory of the Intellect}, - title = {Aristotle's Theory of the Intellect and its Interpretation by Averroes}, - shorttitle = {Aristotle's Theory of the Intellect}, - booktitle = {Studies in Aristotle}, - series = {Studies in Philosophy and the History of Philosophy}, - number = {9}, - publisher = {The Catholic University of America Press}, - location = {Washington, D.C.}, - date = {1981}, - pages = {161--191}, - annotation = {An \texttt{incollection} entry with a \texttt{series} and \texttt{number} field} -} - -@InCollection{pines, - keywords = {secondary}, - hyphenation = {american}, - author = {Pines, Shlomo}, - editor = {Twersky, Isadore}, - indextitle = {Limitations of Human Knowledge According to Al-Farabi, ibn Bajja, and - Maimonides, The}, - title = {The Limitations of Human Knowledge According to Al-Farabi, ibn Bajja, and - Maimonides}, - shorttitle = {Limitations of Human Knowledge}, - booktitle = {Studies in Medieval Jewish History and Literature}, - publisher = hup, - location = {Cambridge, Mass.}, - date = {1979}, - pages = {82--109}, - annotation = {A typical \texttt{incollection} entry. Note the \texttt{indextitle} field} -} - -@InProceedings{moraux, - keywords = {secondary}, - hyphenation = {french}, - indexsorttitle = {De Anima dans la tradition grecque}, - author = {Moraux, Paul}, - editor = {Lloyd, G. E. R. and Owen, G. E. L.}, - indextitle = {\emph{De Anima} dans la tradition gr{\`e}cque, Le}, - title = {Le \emph{De Anima} dans la tradition gr{\`e}cque}, - subtitle = {Quelques aspects de l'interpretation du trait{\'e}, de Theophraste {\`a} - Themistius}, - shorttitle = {\emph{De Anima} dans la tradition gr{\`e}cque}, - booktitle = {Aristotle on Mind and the Senses}, - booktitleaddon = {Proceedings of the Seventh Symposium Aristotelicum}, - eventdate = {1975}, - publisher = cup, - location = {Cambridge}, - date = {1979}, - pages = {281--324}, - annotation = {This is a typical \texttt{inproceedings} entry. Note the \texttt{booksubtitle}, - \texttt{shorttitle}, \texttt{indextitle}, and \texttt{indexsorttitle} fields. - Also note the \texttt{eventdate} field.} -} - -@InProceedings{salam, - author = {Salam, Abdus}, - editor = {Svartholm, Nils}, - title = {Weak and Electromagnetic Interactions}, - booktitle = {Elementary particle theory}, - booksubtitle = {Relativistic groups and analyticity}, - booktitleaddon = {Proceedings of the Eighth Nobel Symposium}, - eventdate = {1968-05-19/1968-05-25}, - venue = {Aspen{\"a}sgarden, Lerum}, - publisher = {Almquist \& Wiksell}, - location = {Stockholm}, - date = {1968}, - pages = {367--377} -} - -@Manual{cms, - label = {CMS}, - hyphenation = {american}, - sorttitle = {Chicago Manual of Style}, - indextitle = {Chicago Manual of Style, The}, - title = {The Chicago Manual of Style}, - subtitle = {The Essential Guide for Writers, Editors, and Publishers}, - shorttitle = {Chicago Manual of Style}, - edition = {15}, - publisher = {University of Chicago Press}, - location = {Chicago, Ill.}, - date = {2003}, - isbn = {0-226-10403-6}, - annotation = {This is a \texttt{manual} entry without an \texttt{author} or \texttt{editor}. - Note the \texttt{label} field in the database file which is provided for - author-year citation styles. Also note the \texttt{sorttitle} and - \texttt{indextitle} fields. By default, all entries without an \texttt{author} - or \texttt{editor} are alphabetized by \texttt{title} but we want this entry to - be alphabetized under \enquote*{C} rather than \enquote*{T}. There's also an - \texttt{isbn} field} -} - -@Online{baez/online, - hyphenation = {american}, - author = {Baez, John C. and Lauda, Aaron D.}, - title = {Higher-Dimensional Algebra V: 2-Groups}, - version = {3}, - date = {2004-10-27}, - eprinttype = {arxiv}, - eprint = {math/0307200v3}, - annotation = {An \texttt{online} reference from arXiv. Note the \texttt{eprint} and - \texttt{eprinttype} fields. Compare \texttt{baez\slash article} which is the - same item given as an \texttt{article} entry with eprint information} -} - -@Online{ctan, - label = {CTAN}, - hyphenation = {american}, - title = {CTAN}, - subtitle = {The Comprehensive TeX Archive Network}, - date = {2006}, - url = {http://www.ctan.org}, - urldate = {2006-10-01}, - annotation = {This is an \texttt{online} entry. The \textsc{url}, which is given in the - \texttt{url} field, is transformed into a clickable link if \texttt{hyperref} - support has been enabled. Note the format of the \texttt{urldate} field - (\texttt{yyyy-mm-dd}) in the database file. Also note the \texttt{label} field - which may be used as a fallback by citation styles which need an \texttt{author} - and\slash or a \texttt{year}} -} - -@Online{itzhaki, - hyphenation = {american}, - author = {Itzhaki, Nissan}, - title = {Some remarks on 't Hooft's S-matrix for black holes}, - version = {1}, - date = {1996-03-11}, - eprinttype = {arxiv}, - eprint = {hep-th/9603067}, - annotation = {An \texttt{online} reference from arXiv. Note the \texttt{eprint} and - \texttt{eprinttype} fields. Also note that the arXiv reference is transformed - into a clickable link if \texttt{hyperref} support has been enabled}, - abstract = {We discuss the limitations of 't Hooft's proposal for the black hole S-matrix. - We find that the validity of the S-matrix implies violation of the - semi-classical approximation at scales large compared to the Planck scale. We - also show that the effect of the centrifugal barrier on the S-matrix is crucial - even for large transverse distances.} -} - -@Online{markey, - hyphenation = {american}, - sorttitle = {Tame the Beast}, - author = {Markey, Nicolas}, - title = {Tame the BeaST}, - subtitle = {The B to X of BibTeX}, - version = {1.3}, - date = {2005-10-16}, - url = {http://tug.ctan.org/tex-archive/info/bibtex/tamethebeast/ttb_en.pdf}, - urldate = {2006-10-01}, - annotation = {An \texttt{online} entry for a tutorial. Note the format of the \texttt{date} - field (\texttt{yyyy-mm-dd}) in the database file.} -} - -@Online{wassenberg, - hyphenation = {american}, - author = {Wassenberg, Jan and Sanders, Peter}, - title = {Faster Radix Sort via Virtual Memory and Write-Combining}, - version = {1}, - date = {2010-08-17}, - eprinttype = {arxiv}, - eprintclass = {cs.DS}, - eprint = {1008.2849v1}, - annotation = {A recent \texttt{online} reference from arXiv using the new (April 2007 onward) - identifier format. Note the \texttt{eprint}, \texttt{eprinttype}, and - \texttt{eprintclass} fields. Also note that the arXiv reference is transformed - into a clickable link if \texttt{hyperref} support has been enabled}, - abstract = {Sorting algorithms are the deciding factor for the performance of common - operations such as removal of duplicates or database sort-merge joins. This work - focuses on 32-bit integer keys, optionally paired with a 32-bit value. We - present a fast radix sorting algorithm that builds upon a - microarchitecture-aware variant of counting sort} -} - -@Patent{almendro, - hyphenation = {german}, - author = {Almendro, Jos{\'e} L. and Mart{\'i}n, Jacinto and S{\'a}nchez, Alberto and - Nozal, Fernando}, - title = {Elektromagnetisches Signalhorn}, - number = {EU-29702195U}, - location = {countryfr and countryuk and countryde}, - date = {1998}, - annotation = {This is a \texttt{patent} entry with a \texttt{location} field. The number is - given in the \texttt{number} field. Note the format of the \texttt{location} - field in the database file. Compare \texttt{laufenberg}, \texttt{sorace}, and - \texttt{kowalik}} -} - -@Patent{kowalik, - hyphenation = {french}, - author = {Kowalik, F. and Isard, M.}, - indextitle = {Estimateur d'un d{\'e}faut de fonctionnement}, - title = {Estimateur d'un d{\'e}faut de fonctionnement d'un modulateur en quadrature et - {\'e}tage de modulation l'utilisant}, - type = {patreqfr}, - number = {9500261}, - date = {1995-01-11}, - annotation = {This is a \texttt{patent} entry for a French patent request with a full date. - The number is given in the \texttt{number} field. Note the format of the - \texttt{type} and \texttt{date} fields in the database file. Compare - \texttt{almendro}, \texttt{laufenberg}, and \texttt{sorace}} -} - -@Patent{laufenberg, - hyphenation = {german}, - author = {Laufenberg, Xaver and Eynius, Dominique and Suelzle, Helmut and Usbeck, Stephan - and Spaeth, Matthias and Neuser-Hoffmann, Miriam and Myrzik, Christian and - Schmid, Manfred and Nietfeld, Franz and Thiel, Alexander and Braun, Harald and - Ebner, Norbert}, - holder = {{Robert Bosch GmbH} and {Daimler Chrysler AG} and {Bayerische Motoren Werke - AG}}, - title = {Elektrische Einrichtung und Betriebsverfahren}, - type = {patenteu}, - number = {1700367}, - date = {2006-09-13}, - annotation = {This is a \texttt{patent} entry with a \texttt{holder} field. Note the format - of the \texttt{type} and \texttt{location} fields in the database file. Compare - \texttt{almendro}, \texttt{sorace}, and \texttt{kowalik}}, - abstract = {The invention relates to an electric device comprising a generator, in - particular for use in the vehicle electric system of a motor vehicle and a - controller for controlling the generator voltage. The device is equipped with a - control zone, in which the voltage is controlled and zones, in which the torque - is controlled. The invention also relates to methods for operating a device of - this type.}, - file = {http://v3.espacenet.com/textdoc?IDX=EP1700367} -} - -@Patent{sorace, - hyphenation = {american}, - author = {Sorace, Ronald E. and Reinhardt, Victor S. and Vaughn, Steven A.}, - holder = {{Hughes Aircraft Company}}, - title = {High-Speed Digital-to-RF Converter}, - type = {patentus}, - number = {5668842}, - date = {1997-09-16}, - annotation = {This is a \texttt{patent} entry with a \texttt{holder} field. Note the format - of the \texttt{type} and \texttt{date} fields in the database file. Compare - \texttt{almendro}, \texttt{laufenberg}, and \texttt{kowalik}} -} - -@Report{chiu, - hyphenation = {american}, - sorttitle = {Hybrid Hierarchical Model of a Multiple Virtual Storage (MVS) Operating - System}, - author = {Chiu, Willy W. and Chow, We Min}, - indextitle = {Hybrid Hierarchical Model, A}, - title = {A Hybrid Hierarchical Model of a Multiple Virtual Storage (MVS) Operating - System}, - institution = {IBM}, - type = {resreport}, - number = {RC-6947}, - date = {1978}, - annotation = {This is a \texttt{report} entry for a research report. Note the format of the - \texttt{type} field in the database file which uses a localization key. The - number of the report is given in the \texttt{number} field. Also note the - \texttt{sorttitle} and \texttt{indextitle} fields} -} - -@Report{padhye, - hyphenation = {american}, - sorttitle = {A Stochastic Model of TCP Reno Congestion Avoidance and Control}, - author = {Padhye, Jitendra and Firoiu, Victor and Towsley, Don}, - indextitle = {Stochastic Model of TCP Reno Congestion Avoidance and Control, A}, - title = {A Stochastic Model of TCP Reno Congestion Avoidance and Control}, - institution = {University of Massachusetts}, - type = {techreport}, - number = {99-02}, - location = {Amherst, Mass.}, - date = {1999}, - annotation = {This is a \texttt{report} entry for a technical report. Note the format of the - \texttt{type} field in the database file which uses a localization key. The - number of the report is given in the \texttt{number} field. Also note the - \texttt{sorttitle} and \texttt{indextitle} fields}, - abstract = {The steady state performance of a bulk transfer TCP flow (i.e. a flow with a - large amount of data to send, such as FTP transfers) may be characterized by - three quantities. The first is the send rate, which is the amount of data sent - by the sender in unit time. The second is the throughput, which is the amount of - data received by the receiver in unit time. Note that the throughput will always - be less than or equal to the send rate due to losses. Finally, the number of - non-duplicate packets received by the receiver in unit time gives us the goodput - of the connection. The goodput is always less than or equal to the throughput, - since the receiver may receive two copies of the same packet due to - retransmissions by the sender. In a previous paper, we presented a simple model - for predicting the steady state send rate of a bulk transfer TCP flow as a - function of loss rate and round trip time. In this paper, we extend that work in - two ways. First, we analyze the performance of bulk transfer TCP flows using - more precise, stochastic analysis. Second, we build upon the previous analysis - to provide both an approximate formula as well as a more accurate stochastic - model for the steady state throughput of a bulk transfer TCP flow.}, - file = {ftp://gaia.cs.umass.edu/pub/Padhey99-markov.ps} -} - -@Thesis{geer, - options = {useprefix=false}, - hyphenation = {british}, - author = {de Geer, Ingrid}, - title = {Earl, Saint, Bishop, Skald~-- and Music}, - subtitle = {The Orkney Earldom of the Twelfth Century. A Musicological Study}, - institution = {Uppsala Universitet}, - type = {phdthesis}, - location = {Uppsala}, - date = {1985}, - annotation = {This is a typical \texttt{thesis} entry for a PhD thesis. Note the - \texttt{type} field in the database file which uses a localization key. Also - note the format of the printed name and compare the \texttt{useprefix} option in - the \texttt{options} field as well as \texttt{vangennep}} -} - -@Thesis{loh, - hyphenation = {american}, - author = {Loh, Nin C.}, - title = {High-Resolution Micromachined Interferometric Accelerometer}, - institution = {Massachusetts Institute of Technology}, - type = {mathesis}, - location = {Cambridge, Mass.}, - date = {1992}, - annotation = {This is a typical \texttt{thesis} entry for an MA thesis. Note the - \texttt{type} field in the database file which uses a localization key} -} diff --git a/Master/texmf-dist/bibtex/bst/biblatex/biblatex.bst b/Master/texmf-dist/bibtex/bst/biblatex/biblatex.bst index 6c5cf435679..ed1a98d21cf 100644 --- a/Master/texmf-dist/bibtex/bst/biblatex/biblatex.bst +++ b/Master/texmf-dist/bibtex/bst/biblatex/biblatex.bst @@ -1,5 +1,3 @@ -% $Id: biblatex.bst,v 1.7 2011/11/13 19:09:07 lehman stable $ - % Copyright (c) 2006-2011 Philipp Lehman. % % Permission is granted to copy, distribute and/or modify this @@ -175,7 +173,7 @@ STRINGS { ctrl.alphaothers templist tempstrga tempstrgb resvstrga last.name last.hash last.year last.extra } FUNCTION {initialize} { - "$Revision: 1.7 $" + "$Revision: 2.0 $" #12 entry.max$ substring$ #-3 entry.max$ substring$ "Biblatex version: " swap$ * top$ @@ -1762,7 +1760,7 @@ FUNCTION {input:control:options} { FUNCTION {input:control:version} { input:control:parse - "$Revision: 1.7 $" + "$Revision: 2.0 $" #12 entry.max$ substring$ #-3 entry.max$ substring$ 'tempstrga := @@ -2585,7 +2583,7 @@ SORT FUNCTION {output:main:begin} { "% $ biblatex auxiliary file $" write$ newline$ - "% $ biblatex version " "$Revision: 1.7 $" + "% $ biblatex version " "$Revision: 2.0 $" #12 entry.max$ substring$ #-3 entry.max$ substring$ * " $" * write$ newline$ "% Do not modify the above lines!" write$ newline$ "%" write$ newline$ diff --git a/Master/texmf-dist/doc/latex/biblatex/README b/Master/texmf-dist/doc/latex/biblatex/README index b85f5e9b525..09e2ccfdad0 100644 --- a/Master/texmf-dist/doc/latex/biblatex/README +++ b/Master/texmf-dist/doc/latex/biblatex/README @@ -1,18 +1,18 @@ -$Id: README,v 1.7 2011/11/13 19:09:07 lehman stable $ - ABOUT The biblatex package is a complete reimplementation of the -bibliographic facilities provided by LaTeX in conjunction with -BibTeX. It redesigns the way in which LaTeX interacts with BibTeX at -a fairly fundamental level. With biblatex, BibTeX is only used to -sort the bibliography and to generate labels. Instead of being +bibliographic facilities provided by LaTeX. A custom backend "Biber" +by default is used which processed the BibTeX format data files and +them performs all sorting, label generation (and a great deal +more). Legacy BibTeX is also supported as a backend, albeit with a +reduced feature set. Biblatex does not use the backend to format the +bibliography information as with traditional BibTeX: instead of being implemented in BibTeX's style files, the formatting of the bibliography is entirely controlled by TeX macros. Good working -knowledge in LaTeX should be sufficient to design new bibliography -and citation styles. There is no need to learn BibTeX's postfix -stack language. Just like the bibliography styles, all citation -commands may be freely (re)defined. +knowledge in LaTeX should be sufficient to design new bibliography and +citation styles. There is no need to learn BibTeX's postfix stack +language. Just like the bibliography styles, all citation commands may +be freely (re)defined. Apart from the features unique to biblatex, the package also incorporates core features of the following packages: babelbib, @@ -22,36 +22,28 @@ parallels to the amsrefs package. The biblatex package supports split bibliographies, multiple bibliographies within one document, and separate lists of bibliographic shorthands. Bibliographies may be subdivided into parts (by chapter, by section, etc.) and/or -segmented by topics (by type, by keyword, etc.). The package is -fully localized and can interface with the babel package. +segmented by topics (by type, by keyword, etc.). With biber as the +backend, features such as customisable sorting, multiple bibliographies +with different sorting, customisable labels, dynamic data modification +are available. The package is fully localized and can interface with +the babel package. LICENSE -Copyright (c) 2006-2011 Philipp Lehman. Permission is granted to -copy, distribute and/or modify this software under the terms of the -LaTeX Project Public License (LPPL), version 1.3. This package is -author-maintained. This software is provided 'as is', without -warranty of any kind, either expressed or implied, including, but -not limited to, the implied warranties of merchantability and -fitness for a particular purpose. +Copyright (c) 2006-2012 Philipp Lehman, 2012-present Philip Lehman, Joseph Wright, +Audrey Boruvka, Philip Kime). Permission is granted to copy, +distribute and/or modify this software under the terms of the LaTeX +Project Public License (LPPL), version 1.3. This software is provided +'as is', without warranty of any kind, either expressed or implied, +including, but not limited to, the implied warranties of +merchantability and fitness for a particular purpose. FEEDBACK -Please use the biblatex project page on SourceForge to report bugs +Please use the biblatex project page on github to report bugs or submit feature requests: - http://sourceforge.net/projects/biblatex/ - -There are two trackers on this page, 'Bugs' for bug reports and -'Features' for feature requests: - - http://sourceforge.net/tracker2/?group_id=244752 - -Select a tracker, then click on "Add new" to submit your report or -request. If you do not want to report a bug or request a feature but -are simply in need of assistance, you might want to consider posting -your question on the comp.text.tex newsgroup. I can not provide any -end-user support by email or via the project page. + http://github.com/plk/biblatex REQUIREMENTS @@ -71,7 +63,7 @@ Strongly recommended: - babel - csquotes 4.4 or later -Biber is available from CTAN or: +Biber is available from CTAN, via TeXLive or from http://sourceforge.net/projects/biblatex-biber/ diff --git a/Master/texmf-dist/doc/latex/biblatex/RELEASE b/Master/texmf-dist/doc/latex/biblatex/RELEASE index 1b0989fa9ed..edf961626e5 100644 --- a/Master/texmf-dist/doc/latex/biblatex/RELEASE +++ b/Master/texmf-dist/doc/latex/biblatex/RELEASE @@ -1,4 +1,127 @@ -$Id: RELEASE,v 1.7 2011/11/13 19:09:07 lehman stable $ +RELEASE NOTES FOR VERSION 2.0 + +* Biber is now the default backend. Biblatex 2.0 requires biber + 1.0. It will not work with any earlier release of biber due to + .bcf format changes required to support the new list-local sorting + feature. + +* Biblatex with bibtex as the backend is now frozen at version 1.7. When + using biblatex with the option "backend=bibtex" (which must be + specified now, the default is backend=biber if no option is specified), + biblatex 1.7 will be automatically used. Apart from important bug fixes, + no more development will be done on the 1.7 branch which means that + users must switch to backend=biber (or don't specify the backend at all) + to get version 2.0 and future new features. All major new 2.0 features + require biber anyway so this is no real change for bibtex users. + +* New options to enable counters which track different combinations of + information. Here is a summary which contains all tracking options, + including the new ones (row marked with with a star, table is also in + the PDF documentation): + + Enabled Enabled Tracked + Option field counter information + -------------- ---------- -------------- ------------------- + labelalpha labelalpha extraalpha label + labelyear labelyear extrayear labelname+labelyear + *labeltitle --- extratitle labelname+labeltitle + *labeltitleyear --- extratitleyear labeltitle+labelyear + + The naming of the options and counters is a little unintuitive because + the original ones were named before requests for the new ones were made. + The "Tracked information" column makes clear which information is tracked + by the counters. The new counters will appear in the .bbl inside an entry + and can be used just like "extraalpha" and "extrayear". The new options + controlling the new counters are false by default and are not used by the + standard styles. + +* The biblatex data model is now customisable using the \DeclareDatamodel* + macros. This allows the use of new entrytypes and fields, as long as the + style supports them. + +* Controlling initials generation + + A biblatex macro interface (\DeclareNoinit) is now available to declare + regular expressions to strip from names before generating initials for + them. This mirrors the Biber config file functionality on a per-document + basis. A common use, for example, might be to strip certain prefices + from names so that they do not end up as initials. + +* Fine tuning sorting strings + + A biblatex macro interface (\DeclareNosort) is now available to declare + regular expressions to strip from fields or types of fields for sorting + purposes. This mirrors the Biber config file functionality on a per-document + basis. A common use, for example, might be to strip "The " from titles for + sorting purposes. + +* Sorting option for bibliography/shorthand lists + + \printbibliography and \printshorthands now have a "sorting" option so + you can choose a sorting scheme for each bibliography/shorthand list + instead of using the global sorting scheme. This means that you can + issue \printbibliography or \printshorthands as many times as you need + to, anywhere in the document and have the resulting list sorted in the + way required. + +* Dynamic datasource modification + + A biblatex macro interface (\DeclareSourcemap) is now available to + allow users to dynamically modify data as it is read by Biber. This + can be used to do many things like remove unwanted fields, + regularise field contents, add new fields etc. all without write + access to the datasource. The biblatex manual has a large section + on this feature, with many examples. This feature is identical in + functionality to Biber's "sourcemap" option but having a macro + interface allows it to be used on a per-document basis. The default + mappings for datasource drivers are definable too, using + \DeclareDefaultSourcemap + +* Customisable labels + + A new macro interface is implemented (\DeclareLabelalphaTemplate) + which allows customisation of the label used in alphanumeric + styles. The previous static labels are now implemented in terms of + the new interface. The biblatex manual has a section on this + feature with examples. One edge-case has changed with the new + definition of the previous default label generation behaviour: a + name with a prefix will now include 3 characters after the prefix + instead of 2 ("van Rompel" will be "vRom" instead of "vRo"). The + previous behaviour was anomolous anyway. There are options to + auto-disambiguate labels in several ways. + +* Related entries + + A general method to support "related entries" is implemented. This + allows a localisable, flexible way to deal with relationships between + entries like "reprint of", "translation of", "reprinted in" etc. + + Three new entry fields are available to support this - "related", + "relatedtype" and "relatedstring". Biber will automatically create + "dataonly" clones of the related entries so that their data can be + accessed in styles without having to cite them. Related entries may + also be cited themselves which does not interfere in any way with this + mechanism. The standard styles have been updated to support the new + fields. New punctuation macros are available to format the new fields + in the bibliography ("relatedpunct", "relateddelim", "related"). + +* Citation key aliases + + It is now possible to include a new field "ids" in an entry which + is a comma-separated list of citation key aliases. The entry can be + cited by any of the aliases, which helps when you updated your + entry keys but don't want to change old documents. + +* Option to sort names only using initials + + The new option "sortfirstinits" allows users to specify that name + sorting only uses initials instead of the full name. Previously, + even if "firstinits" was true, sorting used full names. + +* New citation commands + + Starred variants of \citeyear and \citedate are now available which + include the extrayear information. RELEASE NOTES FOR VERSION 1.7 diff --git a/Master/texmf-dist/doc/latex/biblatex/biblatex.pdf b/Master/texmf-dist/doc/latex/biblatex/biblatex.pdf Binary files differindex e4e25bc9383..faf1c40c0c5 100644 --- a/Master/texmf-dist/doc/latex/biblatex/biblatex.pdf +++ b/Master/texmf-dist/doc/latex/biblatex/biblatex.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/biblatex.tex b/Master/texmf-dist/doc/latex/biblatex/biblatex.tex index 7969dd0631d..6516124f689 100644 --- a/Master/texmf-dist/doc/latex/biblatex/biblatex.tex +++ b/Master/texmf-dist/doc/latex/biblatex/biblatex.tex @@ -1,4 +1,3 @@ -% $Id: biblatex.tex,v 1.7 2011/11/13 19:09:07 lehman stable $ \documentclass{ltxdockit}[2011/03/25] \usepackage{btxdockit} \usepackage[latin9]{inputenc} @@ -9,12 +8,29 @@ \usepackage{booktabs} \usepackage{shortvrb} \usepackage{pifont} +\usepackage{libertine} +\usepackage[scaled=0.8]{beramono} +\usepackage{microtype} +\lstset{basicstyle=\ttfamily,keepspaces=true} +\KOMAoptions{numbers=noenddot} +\addtokomafont{paragraph}{\spotcolor} +\addtokomafont{section}{\spotcolor} +\addtokomafont{subsection}{\spotcolor} +\addtokomafont{subsubsection}{\spotcolor} +\addtokomafont{descriptionlabel}{\spotcolor} +\pretocmd{\cmd}{\sloppy}{}{} +\pretocmd{\bibfield}{\sloppy}{}{} +\pretocmd{\bibtype}{\sloppy}{}{} +\makeatletter +\patchcmd{\paragraph} + {3.25ex \@plus1ex \@minus.2ex}{-3.25ex\@plus -1ex \@minus -.2ex}{}{} +\patchcmd{\paragraph}{-1em}{1.5ex \@plus .2ex}{}{} +\makeatother + \MakeAutoQuote{}{} \MakeAutoQuote*{<}{>} \MakeShortVerb{\|} -\rcsid{$Id: biblatex.tex,v 1.7 2011/11/13 19:09:07 lehman stable $} - \newcommand*{\biber}{Biber\xspace} \newcommand*{\biblatex}{Biblatex\xspace} \newcommand*{\biblatexhome}{http://sourceforge.net/projects/biblatex/} @@ -24,15 +40,15 @@ title={The \sty{biblatex} Package}, subtitle={Programmable Bibliographies and Citations}, url={\biblatexhome}, - author={Philipp Lehman}, - email={plehman@gmx.net}, - revision={\rcsrevision}, - date={\rcstoday}} + author={Philipp Lehman (with Audrey Boruvka, Philip Kime and Joseph Wright)}, + email={}, + revision={2.0}, + date={07/2012}} \hypersetup{% pdftitle={The \biblatex Package}, pdfsubject={Programmable Bibliographies and Citations}, - pdfauthor={Philipp Lehman}, + pdfauthor={Philipp Lehman, Philip Kime}, pdfkeywords={tex, latex, bibtex, bibliography, references, citation}} % tables @@ -122,16 +138,16 @@ For a quick start guide, browse \secref{int:abt, bib:typ, bib:fld, bib:use, use: \subsection[About]{About \sty{biblatex}} \label{int:abt} -This package provides advanced bibliographic facilities for use with \latex in conjunction with \bibtex. The package is a complete reimplementation of the bibliographic facilities provided by \latex. It redesigns the way in which \latex interacts with \bibtex at a fairly fundamental level. With \sty{biblatex}, \bibtex is only used to sort the bibliography and to generate labels. Instead of being implemented in \file{bst} files, the formatting of the bibliography is entirely controlled by \latex macros, hence the name \sty{biblatex}. Good working knowledge in \latex should be sufficient to design new bibliography and citation styles. There is no need to learn \bibtex's postfix stack language. This package also supports subdivided bibliographies, multiple bibliographies within one document, and separate lists of bibliographic shorthands. Bibliographies may be subdivided into parts and\slash or segmented by topics. Just like the bibliography styles, all citation commands may be freely defined. The package is completely localized and can interface with the \sty{babel} package. Please refer to \tabref{bib:fld:tab1} for a list of languages currently supported by this package. +This package provides advanced bibliographic facilities for use with \latex in conjunction with \bibtex. The package is a complete reimplementation of the bibliographic facilities provided by \latex. A custom backend \biber by default is used which processed the \bibtex format data files and them performs all sorting, label generation (and a great deal more). Legacy \bibtex is also supported as a backend, albeit with a reduced feature set. Biblatex does not use the backend to format the bibliography information as with traditional \bibtex: instead of being implemented in \bibtex style files, the formatting of the bibliography is entirely controlled by TeX macros. Good working knowledge in \latex should be sufficient to design new bibliography and citation styles. There is no need to learn \bibtex's postfix stack language. This package also supports subdivided bibliographies, multiple bibliographies within one document, and separate lists of bibliographic shorthands. Bibliographies may be subdivided into parts and\slash or segmented by topics. Just like the bibliography styles, all citation commands may be freely defined. With \biber as the backend, features such as customisable sorting, multiple bibliographies with different sorting, customisable labels, dynamic data modification are available. The package is completely localized and can interface with the \sty{babel} package. Please refer to \tabref{bib:fld:tab1} for a list of languages currently supported by this package. \subsection{License} -Copyright \textcopyright\ 2006--2011 Philipp Lehman. Permission is granted to copy, distribute and\slash or modify this software under the terms of the \lppl, version 1.3.\fnurl{http://www.ctan.org/tex-archive/macros/latex/base/lppl.txt} This package is author"=maintained. +Copyright \textcopyright\ 2006--2012 Philipp Lehman. Permission is granted to copy, distribute and\slash or modify this software under the terms of the \lppl, version 1.3.\fnurl{http://www.ctan.org/tex-archive/macros/latex/base/lppl.txt}. \subsection{Feedback} \label{int:feb} -Please use the \sty{biblatex} project page on SourceForge to report bugs and submit feature requests.\fnurl{http://sourceforge.net/projects/biblatex/} There are two trackers on this page: \texttt{Bugs} for bug reports and \texttt{Features} for feature requests.\fnurl{http://sourceforge.net/tracker2/?group_id=244752} Select a tracker, then click on <Add new> to submit your report or request. I may consider implementing a new feature if the request is reasonable, seems to be relevant to a considerable number of users, and complies with the architecture and philosophy of \sty{biblatex}. Before making a feature request, please ensure that you have thoroughly studied this manual. If you do not want to report a bug or request a feature but are simply in need of assistance, you might want to consider posting your question on the \texttt{comp.text.tex} newsgroup. I can not provide end-user support by email or via the project page. +Please use the \sty{biblatex} project page on GitHub to report bugs and submit feature requests.\fnurl{http://github.com/plk/biblatex} Before making a feature request, please ensure that you have thoroughly studied this manual. If you do not want to report a bug or request a feature but are simply in need of assistance, you might want to consider posting your question on the \texttt{comp.text.tex} newsgroup or \tex-\latex Stack Exchange.\fnurl{http://tex.stackexchange.com/questions/tagged/biblatex} \subsection{Acknowledgments} @@ -149,7 +165,8 @@ Mateus Arajo (Brazilian), Andrea Marchitelli (Italian), Jos Carlos Santos (Portuguese), Oleg Domanov (Russian), -Pieter Belmans (Dutch). +Pieter Belmans (Dutch), +Baldur Kristinsson (Icelandic). \subsection{Prerequisites} \label{int:pre} @@ -166,11 +183,11 @@ The resources listed in this section are strictly required for \sty{biblatex} to \item[\etex] The \sty{biblatex} package requires \etex. \tex distributions have been shipping \etex binaries for quite some time, the popular distributions use them by default these days. The \sty{biblatex} package checks if it is running under \etex. Simply try compiling your documents as you usually do, the chances are that it just works. If you get an error message, try compiling the document with \bin{elatex} instead of \bin{latex} or \bin{pdfelatex} instead of \bin{pdflatex}, respectively. -\item[\bibtex] -By default, the \sty{biblatex} package uses \bibtex as a database backend. While a legacy \bibtex binary is sufficient to run \sty{biblatex}, using \bin{bibtex8} is recommended. If your \tex distribution does not ship with \bin{bibtex8}, you can get it from \acr{CTAN}.\fnurl{http://www.ctan.org/tex-archive/biblio/bibtex/8-bit/} +\item[\biber] +\biber is the default backend of \sty{biblatex}. You only need one backend, either \bibtex or \biber. \biber comes with TeXLive and is also available from SourceForge.\fnurl{http://biblatex-biber.sourceforge.net/} -\item[Biber] -Biber is the next"=generation backend of \sty{biblatex}. You only need one backend, either \bibtex or Biber. Biber is available from SourceForge.\fnurl{http://biblatex-biber.sourceforge.net/} +\item[\bibtex] +The \sty{biblatex} package can use legacy \bibtex as a data backend. While a legacy \bibtex binary is sufficient to run \sty{biblatex}, using \bin{bibtex8} is recommended. If your \tex distribution does not ship with \bin{bibtex8}, you can get it from \acr{CTAN}.\fnurl{http://www.ctan.org/tex-archive/biblio/bibtex/8-bit/} \item[etoolbox] This \latex package, which is loaded automatically, provides generic programming facilities required by \sty{biblatex}. It is available from \acr{CTAN}.\fnurl{http://www.ctan.org/tex-archive/macros/latex/contrib/etoolbox/} @@ -285,17 +302,19 @@ The \sty{ucs} package provides support for \utf encoded input. Either use \sty{i \section{Database Guide} \label{bib} -This part of the manual documents the \bibtex interface of this package. Note that you can not use \sty{biblatex} in conjunction with arbitrary \file{bst} files because the package depends on a special \bibtex interface. +It is important to distinguish between \bibtex the program and \bibtex the file format. \sty{biblatex} can be used with or without \bibtex the program since its default backend \biber uses fully supports the \bibtex file format (\file{bib}) and users should be able to move to \sty{biblatex} will little or no changes to their \bibtex data files when using \biber as a backend. If using \bibtex as the data backend, note that you cannot use arbitrary \file{bst} files because the package depends on a special \bibtex interface. When using \bibtex as a backend, \sty{biblatex} uses its own special \file{bst} file only. The entry guide below is backend agnostic unless otherwise stated. + +This section describes the default data model defined in the \file{blx-dm.def} file which is part of \path{biblatex}. The data model is defined using the macros documented in \secref{aut:ctm:dm}. It is possible to redefine the data model which both \sty{biblatex} and \biber use so that datasources can contain new entrytypes and fields (which of course will need style support). The data model specfication also allows for constraints to be defined so that data sources can be validated against the data model (using \biber's \path{--validate_datamodel} option). Users who want to customise the data model need to look at the \file{blx-dm.def} file and to read \secref{aut:ctm:dm}. \subsection{Entry Types} \label{bib:typ} -This section gives an overview of the entry types supported by \sty{biblatex} along with the fields supported by each type. +This section gives an overview of the entry types supported by the default \sty{biblatex} data model along with the fields supported by each type. \subsubsection{Regular Types} \label{bib:typ:blx} -The lists below indicate the fields supported by each entry type. Note that the mapping of fields to an entry type is ultimately at the discretion of the bibliography style. The lists below therefore serve two purposes. They indicate the fields supported by the standard styles which ship with this package and they also serve as a model for custom styles. Note that the <required> fields are not strictly required in all cases, see \secref{bib:use:key} for details. The fields marked as <optional> are optional in a technical sense. Bibliographical formatting rules usually require more than just the <required> fields. The standard styles will generally not perform any formal validity checks, but custom styles may do so. Generic fields like \bibfield{abstract} and \bibfield{annotation} or \bibfield{label} and \bibfield{shorthand} are not included in the lists below because they are independent of the entry type. The special fields discussed in \secref{bib:fld:spc}, which are also independent of the entry type, are not included in the lists either. +The lists below indicate the fields supported by each entry type. Note that the mapping of fields to an entry type is ultimately at the discretion of the bibliography style. The lists below therefore serve two purposes. They indicate the fields supported by the standard styles which ship with this package and they also serve as a model for custom styles. Note that the <required> fields are not strictly required in all cases, see \secref{bib:use:key} for details. The fields marked as <optional> are optional in a technical sense. Bibliographical formatting rules usually require more than just the <required> fields. The default data model defined a few constraints for the format of date fields, ISBNs and some special fields like \bibfield{gender} but the constraints are only used if validating against the data model with \biber's \path{--validate_datamodel} option. Generic fields like \bibfield{abstract} and \bibfield{annotation} or \bibfield{label} and \bibfield{shorthand} are not included in the lists below because they are independent of the entry type. The special fields discussed in \secref{bib:fld:spc}, which are also independent of the entry type, are not included in the lists either. See the default data model specification in the file \file{blx-dm.def} which comes with \sty{biblatex} for a complete specification. \begin{typelist} @@ -477,7 +496,7 @@ Custom types for special bibliography styles. Not used by the standard styles. \subsubsection{Type Aliases} \label{bib:typ:als} -The entry types listed in this section are provided for backwards compatibility with traditional \bibtex styles. These aliases are resolved by \bibtex as the data is exported. Bibliography styles will see the entry type the alias points to, not the alias name. All unknown entry types are generally exported as \bibtype{misc}. +The entry types listed in this section are provided for backwards compatibility with traditional \bibtex styles. These aliases are resolved by the backend as the data is processed. Bibliography styles will see the entry type the alias points to, not the alias name. All unknown entry types are generally exported as \bibtype{misc}. \begin{typelist} @@ -573,12 +592,12 @@ Audiovisual recordings, typically on \acr{DVD}, \acr{VHS} casette, or similar me \subsection{Entry Fields} \label{bib:fld} -This section gives an overview of the fields supported by \sty{biblatex}. See \secref{bib:fld:typ} for an introduction to the data types supported by this package and \secref{bib:fld:dat, bib:fld:spc} for the actual field listings. +This section gives an overview of the fields supported by the \sty{biblatex} default data model. See \secref{bib:fld:typ} for an introduction to the data types used by the data model specification and \secref{bib:fld:dat, bib:fld:spc} for the actual field listings. \subsubsection{Data Types} \label{bib:fld:typ} -In \file{bib} files all bibliographic data is specified in fields. Some of those fields, for example \bibfield{author} and \bibfield{editor}, may contain a list of items. This list structure is implemented by \bibtex via the keyword <|and|>, which is used to separate the individual items in the list. The \sty{biblatex} package implements three distinct data types to handle bibliographic data: name lists, literal lists, and fields. There are also several list and field subtypes. This section gives an overview of the data types supported by this package. See \secref{bib:fld:dat, bib:fld:spc} for information about the mapping of \bibtex's fields to \sty{biblatex}'s data types. +In datasources such as a \file{bib} file, all bibliographic data is specified in fields. Some of those fields, for example \bibfield{author} and \bibfield{editor}, may contain a list of items. This list structure is implemented by the \bibtex file format via the keyword <|and|>, which is used to separate the individual items in the list. The \sty{biblatex} package implements three distinct data types to handle bibliographic data: name lists, literal lists, and fields. There are also several list and field subtypes. This section gives an overview of the data types supported by this package. See \secref{bib:fld:dat, bib:fld:spc} for information about the mapping of the \bibtex file format fields to \sty{biblatex}'s data types. \begin{description} @@ -603,7 +622,7 @@ In \file{bib} files all bibliographic data is specified in fields. Some of those \item[Literal fields] are printed as is. Typical examples of literal fields are \bibfield{title} and \bibfield{note}. -\item[Range fields] are literal fields with one special feature: all dashes are normalized and replaced by the command \cmd{bibrangedash}. Any number of consecutive dashes will only yield a single range dash. A typical example of a range field is the \bibfield{pages} field. +\item[Range fields] are literal fields with one special feature: all dashes are normalized and replaced by the command \cmd{bibrangedash}. Any number of consecutive dashes will only yield a single range dash. A typical example of a range field is the \bibfield{pages} field. See also the \BiberOnlyMark\cmd{bibrangessep} command which can be used to customise the separator between multiple ranges. \item[Integer fields] hold unformatted integers which may be converted to ordinals or strings as they are printed. A typical example is the \bibfield{month} field. @@ -611,19 +630,21 @@ In \file{bib} files all bibliographic data is specified in fields. Some of those \item[Verbatim fields] are processed in verbatim mode and may contain special characters. Typical examples of verbatim fields are \bibfield{url} and \bibfield{doi}. -\item[Key fields] may hold printable data or localization keys. A test is performed to determine whether the value of the field is a known localization key (the localization keys defined by default are listed in \secref{aut:lng:key}). If so, the localized string is printed. If not, the value is printed as is. A typical example is the \bibfield{type} field. +\item[Comma"=separated value fields] A comma"=separated list of literal values. Examples are the \bibfield{keywords} and \bibfield{options} fields. + +\item[Pattern fields] A literal field which must match a particular pattern. An example is the \bibfield{gender} field from \secref{bib:fld:spc}. -\item[Special fields] are fields which require a special format not mentioned above. The field description will include details on the required format in this case. Typical examples are the fields \bibfield{hyphenation}, \bibfield{keywords}, and \bibfield{gender} from \secref{bib:fld:spc}. +\item[Key fields] May hold printable data or localization keys. A test is performed to determine whether the value of the field is a known localization key (the localization keys defined by default are listed in \secref{aut:lng:key}). If so, the localized string is printed. If not, the value is printed as is. A typical example is the \bibfield{type} field. + +\item[Code fields] Holds \tex code. \end{description} \end{description} -The data type of a field will usually not change, regardless of the type of entry it is used in. However, there are a few special cases. The field descriptions in \secref{bib:fld:dat} include the details or pointers to the relevant sections in this manual in such cases. For example, the \bibfield{location} field, which is a literal list by default, is treated as a key list when used in \bibtype{patent} entries. The \bibfield{series} field, which is a literal field by default, is handled in a special way when used in \bibtype{article} entries, see \secref{bib:use:ser} for details. - \subsubsection{Data Fields} \label{bib:fld:dat} -The fields listed in this section are the regular ones holding printable data. The name on the left is the name of the field, as used by both \bibtex and \sty{biblatex}. The \sty{biblatex} data type is given to the right of the name. See \secref{bib:fld:typ} for explanation of the various data types. +The fields listed in this section are the regular ones holding printable data in the default data model. The name on the left is the default data model name of the field as used by \sty{biblatex} and its backend. The \sty{biblatex} data type is given to the right of the name. See \secref{bib:fld:typ} for explanation of the various data types. \begin{fieldlist} @@ -731,6 +752,10 @@ Similar to \bibfield{editortype} but referring to the \bibfield{editorc} field. The electronic identifier of an \bibtype{article}. +\fielditem{entrysubtype}{literal} + +This field, which is not used by the standard styles, may be used to specify a subtype of an entry type. This may be useful for bibliography styles which support a finer"=grained set of entry types. + \fielditem{eprint}{verbatim} The electronic identifier of an online publication. This is roughly comparable to a \acr{doi} but specific to a certain archive, repository, service, or system. See \secref{use:use:epr} for details. Also see \bibfield{eprinttype} and \bibfield{eprintclass}. @@ -837,7 +862,7 @@ This field may be useful to record information such as a library name and a call \listitem{location}{literal} -The place(s) of publication, \ie the location of the \bibfield{publisher} or \bibfield{institution}, depending on the entry type. Traditional \bibtex uses the field name \bibfield{address}, which is supported as an alias. See also \secref{bib:fld:als, bib:use:and}. With \bibtype{patent} entries, this list indicates the scope of a patent and is treated as a key list. This list may also be useful for the custom types listed in \secref{bib:typ:ctm}. +The place(s) of publication, \ie the location of the \bibfield{publisher} or \bibfield{institution}, depending on the entry type. Traditional \bibtex uses the field name \bibfield{address}, which is supported as an alias. See also \secref{bib:fld:als, bib:use:and}. With \bibtype{patent} entries, this list indicates the scope of a patent. This list may also be useful for the custom types listed in \secref{bib:typ:ctm}. \fielditem{mainsubtitle}{literal} @@ -917,7 +942,7 @@ The publication state of the work, \eg\ <in press>. See \secref{aut:lng:key:pst} \fielditem{reprinttitle}{literal} -The title of a reprint of the work. Not used by the standard styles. +\BibTeXOnlyMark The title of a reprint of the work. Not used by the standard styles. \fielditem{series}{literal} @@ -1004,7 +1029,7 @@ The year of publication. See also \bibfield{date} and \secref{bib:use:dat}. \subsubsection{Special Fields} \label{bib:fld:spc} -The fields listed in this section do not hold printable data but serve a different purpose. They apply to all entry types. +The fields listed in this section do not hold printable data but serve a different purpose. They apply to all entry types in the default data model. \begin{fieldlist} @@ -1014,17 +1039,13 @@ This field holds an entry key for the cross"=referencing feature. Child entries \fielditem{entryset}{comma"=separated values} -This field is specific to entry sets. See \secref{use:use:set} for details. - -\fielditem{entrysubtype}{identifier} - -This field, which is not used by the standard styles, may be used to specify a subtype of an entry type. This may be useful for bibliography styles which support a finer"=grained set of entry types. +This field is specific to entry sets. See \secref{use:use:set} for details. This field is consumed by the backend processing and does not appear in the \path{.bbl}. \fielditem{execute}{code} A special field which holds arbitrary \tex code to be executed whenever the data of the respective entry is accessed. This may be useful to handle special cases. Conceptually, this field is comparable to the hooks \cmd{AtEveryBibitem}, \cmd{AtEveryLositem}, and \cmd{AtEveryCitekey} from \secref{aut:fmt:hok}, except that it is definable on a per"=entry basis in the \file{bib} file. Any code in this field is executed automatically immediately after these hooks. -\fielditem{gender}{\opt{sf}, \opt{sm}, \opt{sn}, \opt{pf}, \opt{pm}, \opt{pn}, \opt{pp}} +\fielditem{gender}{Pattern matching one of: \opt{sf}, \opt{sm}, \opt{sn}, \opt{pf}, \opt{pm}, \opt{pn}, \opt{pp}} The gender of the author or the gender of the editor, if there is no author. The following identifiers are supported: \opt{sf} (feminine singular, a single female name), \opt{sm} (masculine singular, a single male name), \opt{sn} (neuter singular, a single neuter name), \opt{pf} (feminine plural, a list of female names), \opt{pm} (masculine plural, a list of male names), \opt{pn} (neuter plural, a list of neuter names), \opt{pp} (plural, a mixed gender list of names). This information is only required by special bibliography and citation styles and only in certain languages. For example, a citation style may replace recurrent author names with a term such as <idem>. If the Latin word is used, as is custom in English and French, there is no need to specify the gender. In German publications, however, such key terms are usually given in German and in this case they are gender"=sensitive. @@ -1065,6 +1086,10 @@ Swedish & Sweden & \opt{swedish} \\ The language of the bibliography entry. The identifier must be a language name known to the \sty{babel} package. This information may be used to switch hyphenation patterns and localize strings in the bibliography. Note that the language names are case sensitive. The languages currently supported by this package are given in \tabref{bib:fld:tab1}. Note that \sty{babel} treats the identifier \opt{english} as an alias for \opt{british} or \opt{american}, depending on the babel version. The \sty{biblatex} package always treats it as an alias for \opt{american}. It is preferable to use the language identifiers \opt{american} and \opt{british} to avoid any possible confusion. Compare \bibfield{language} in \secref{bib:fld:dat}. +\fielditem{ids}{comma"=separated list of entrykeys\BiberOnlyMark} + +Citation key aliases for the main citation key. An entry may be cited by any of its aliases and \sty{biblatex} will treat the citation as if it had used the primary citation key. This is to aid users who change their citation keys but have legacy documents which use older keys for the same entry. This field is consumed by the backend processing and does not appear in the \path{.bbl}. + \fielditem{indexsorttitle}{literal} The title used when sorting the index. In contrast to \bibfield{indextitle}, this field is used for sorting only. The printed title in the index is the \bibfield{indextitle} or the \bibfield{title} field. This field may be useful if the title contains special characters or commands which interfere with the sorting of the index. Consider this example: @@ -1087,31 +1112,45 @@ A comma"=separated list of entry options in \keyval notation. This field is used \fielditem{presort}{string} -A special field used to modify the sorting order of the bibliography. This field is the first item the sorting routine considers when sorting the bibliography, hence it may be used to arrange the entries in groups. This may be useful when creating subdivided bibliographies with the bibliography filters. This field is only used internally during sorting. Please refer to \secref{use:srt} for further details. Also see \secref{aut:ctm:srt}. +A special field used to modify the sorting order of the bibliography. This field is the first item the sorting routine considers when sorting the bibliography, hence it may be used to arrange the entries in groups. This may be useful when creating subdivided bibliographies with the bibliography filters. Please refer to \secref{use:srt} for further details. Also see \secref{aut:ctm:srt}. This field is consumed by the backend processing and does not appear in the \path{.bbl}. + +\fielditem{related}{comma"=separated values} -\fielditem{sortkey}{literal} +Citation keys of other entries which have a relationship to this entry. The relationship is specified by the \bibfield{relatedtype} field. Please refer to \secref{use:rel} for further details. -A field used to modify the sorting order of the bibliography. Think of this field as the master sort key. If present, \sty{biblatex} uses this field during sorting and ignores everything else, except for the \bibfield{presort} field. This field is only used internally during sorting. Please refer to \secref{use:srt} for further details. +\fielditem{relatedtype}{identifier\BiberOnlyMark} + +An identifier which specified the type of relationship for the keys listed in the \bibfield{related} field. The identifier is a localized bibliography string printed +before the data from the related entry list. It is also used to identify type-specific +formatting directives and bibliography macros for the related entries. Please refer to \secref{use:rel} for further details. + +\fielditem{relatedstring}{literal\BiberOnlyMark} + +A field used to override the bibliography string specified by \bibfield{relatedtype}. Please refer to \secref{use:rel} for further details. + +\fielditem{sortkey}{literal\BiberOnlyMark} + +A field used to modify the sorting order of the bibliography. Think of this field as the master sort key. If present, \sty{biblatex} uses this field during sorting and ignores everything else, except for the \bibfield{presort} 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}. \listitem{sortname}{name} -A name or a list of names used to modify the sorting order of the bibliography. If present, this list is used instead of \bibfield{author} or \bibfield{editor} when sorting the bibliography. It is only used internally during sorting. Please refer to \secref{use:srt} for further details. +A name or a list of names used to modify the sorting order of the bibliography. If present, this list is used instead of \bibfield{author} or \bibfield{editor} when sorting the bibliography. Please refer to \secref{use:srt} for further details. This field is consumed by the backend processing and does not appear in the \path{.bbl}. \fielditem{sortshorthand}{literal\BiberOnlyMark} -Similar to \bibfield{sortkey} but used in the list of shorthands. If present, \sty{biblatex} uses this field instead of \bibfield{shorthand} when sorting the list of shorthands. This is useful if the \bibfield{shorthand} field holds shorthands with formatting commands such as \cmd{emph} or \cmd{textbf}. This field is only used internally during sorting. +Similar to \bibfield{sortkey} but used in the list of shorthands. If present, \sty{biblatex} uses this field instead of \bibfield{shorthand} when sorting the list of shorthands. This is useful if the \bibfield{shorthand} field holds shorthands with formatting commands such as \cmd{emph} or \cmd{textbf}. This field is consumed by the backend processing and does not appear in the \path{.bbl}. \fielditem{sorttitle}{literal} -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. It is only used internally during sorting. 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 <I> rather than <A>. In this case, you could put Introduction to\dots in the \bibfield{sorttitle} field. Please refer to \secref{use:srt} for further details. +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 <I> rather than <A>. 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} -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. It is only used internally during sorting. Please refer to \secref{use:srt} for further details. +A field used to modify the sorting order of the bibliography. If present, this field is used instead of the \bibfield{year} field when sorting the bibliography. Please refer to \secref{use:srt} for further details. This field is consumed by the backend processing and does not appear in the \path{.bbl}. -\fielditem{xdata}{comma-separated list of entry keys\BiberOnlyMark} +\fielditem{xdata}{comma-separated list of entrykeys\BiberOnlyMark} -This field inherits data from one or more \bibtype{xdata} entries. Conceptually, the \bibfield{xdata} field is related to \bibfield{crossref} and \bibfield{xref}: \bibfield{crossref} establishes a logical parent/child relation and inherits data; \bibfield{xref} establishes as logical parent/child relation without inheriting data; \bibfield{xdata} inherits data without establishing a relation. The value of the \bibfield{xdata} may be a single entry key or a comma"=separated list of keys. See \secref{use:use:xdat} for further details. +This field inherits data from one or more \bibtype{xdata} entries. Conceptually, the \bibfield{xdata} field is related to \bibfield{crossref} and \bibfield{xref}: \bibfield{crossref} establishes a logical parent/child relation and inherits data; \bibfield{xref} establishes as logical parent/child relation without inheriting data; \bibfield{xdata} inherits data without establishing a relation. The value of the \bibfield{xdata} may be a single entry key or a comma"=separated list of keys. See \secref{use:use:xdat} for further details. This field is consumed by the backend processing and does not appear in the \path{.bbl}. \fielditem{xref}{entry key} @@ -1225,7 +1264,7 @@ Note that traditional \bibtex styles support a \bibfield{key} field which is use \subsubsection{Corporate Authors and Editors} \label{bib:use:inc} -Corporate authors and editors are given in the \bibfield{author} or \bibfield{editor} field, respectively. Note that they must be wrapped in an extra pair of curly braces to prevent \bibtex from treating them as personal names which are to be dissected into their components. Use the \bibfield{shortauthor} field if you want to give an abbreviated form of the name or an acronym for use in citations. +Corporate authors and editors are given in the \bibfield{author} or \bibfield{editor} field, respectively. Note that they must be wrapped in an extra pair of curly braces to prevent data parsing from treating them as personal names which are to be dissected into their components. Use the \bibfield{shortauthor} field if you want to give an abbreviated form of the name or an acronym for use in citations. \begin{lstlisting}[style=bibtex]{} author = {<<{National Aeronautics and Space Administration}>>}, @@ -1496,7 +1535,7 @@ This section provides some additional hints concerning the data interface of thi \paragraph{The \bibfield{crossref} field (\bibtex)} \label{bib:cav:ref:btx} -The \bibfield{crossref} field is a convenient way to establish a parent\slash child relation between two associated entries. Unfortunately, \bibtex uses symmetric field mapping which reduces the usefulness of the \bibfield{crossref} field significantly. The are two issues with symmetric field mapping, as seen in the following example: +The \bibfield{crossref} field is a convenient way to establish a parent\slash child relation between two associated entries. Unfortunately, the \bibtex program uses symmetric field mapping which reduces the usefulness of the \bibfield{crossref} field significantly. The are two issues with symmetric field mapping, as seen in the following example: \begin{lstlisting}[style=bibtex]{} @Book{book, @@ -1520,10 +1559,10 @@ The \bibfield{crossref} field is a convenient way to establish a parent\slash ch % As \bibtex is not capable of mapping the \bibfield{title} field of the parent to the \bibfield{booktitle} field of the child, the title of the book needs to be given twice. The style then needs to ignore the \bibfield{booktitle} of the parent since it is only required to work around this fundamental limitation of \bibtex. The problem with the \bibfield{subtitle} field is the inverse of that. Since the \bibfield{subtitle} of the parent would become the \bibfield{subtitle}, rather than in the \bibfield{booksubtitle}, of the child, we need to add an empty \bibfield{subtitle} field to the child entry to prevent inheritance of this field. Of course we also need to duplicate the subtitle in the parent entry to ensure that it is available as \bibfield{booksubtitle} in the child entry. In short, using \bibtex's \bibfield{crossref} field tends to bloat database files and corrupt the data model. -\paragraph{The \bibfield{crossref} field (Biber)} +\paragraph{The \bibfield{crossref} field (\biber)} \label{bib:cav:ref:bbr} -With Biber, the limitations of \bibtex's \bibfield{crossref} field belong to the past. Biber features a highly customizable cross-referencing mechanism with flexible data inheritance rules. Duplicating certain fields in the parent entry or adding empty fields to the child entry is no longer required. Entries are specified in a natural way: +With \biber, the limitations of \bibtex's \bibfield{crossref} field belong to the past. \biber features a highly customizable cross-referencing mechanism with flexible data inheritance rules. Duplicating certain fields in the parent entry or adding empty fields to the child entry is no longer required. Entries are specified in a natural way: \begin{lstlisting}[style=bibtex]{} @Book{book, @@ -1555,7 +1594,7 @@ date = {1995}, pages = {5--25}, \end{lstlisting} % -See \apxref{apx:ref} for a list of mapping rules set up by default. Note that all of this is customizable. See \secref{aut:ctm:ref} on how to configure Biber's cross"=referencing mechanism. See also \secref{bib:fld:spc}. +See \apxref{apx:ref} for a list of mapping rules set up by default. Note that all of this is customizable. See \secref{aut:ctm:ref} on how to configure \biber's cross"=referencing mechanism. See also \secref{bib:fld:spc}. \paragraph{The \bibfield{xref} field} \label{bib:cav:ref:ref} @@ -1575,7 +1614,7 @@ Warning--I'm ignoring Jones1995's extra "volume" field --line 423 of file huge.bib \end{lstlisting} % -These warning messages could indeed indicate that the entry \texttt{Jones1995} is faulty because it includes two \bibfield{year} and two \bibfield{volume} fields. If that is not the case and the \file{bib} file is fairly large, this is most likely a capacity issue. What makes these warnings so confusing is that they are not tied to a specific entry. If you remove the allegedly faulty entry, a different one will trigger similar warnings. This is one reason why switching to \file{bibtex8} or Biber is advisable. +These warning messages could indeed indicate that the entry \texttt{Jones1995} is faulty because it includes two \bibfield{year} and two \bibfield{volume} fields. If that is not the case and the \file{bib} file is fairly large, this is most likely a capacity issue. What makes these warnings so confusing is that they are not tied to a specific entry. If you remove the allegedly faulty entry, a different one will trigger similar warnings. This is one reason why switching to \file{bibtex8} or \biber is advisable. \paragraph{\file{bibtex8}} \file{bibtex8} is a venerable tool as well and will also run out of memory with its default capacity. Switching from traditional \bibtex to \file{bibtex8} is still an improvement because the capacity of the latter may be increased at run"=time via command"=line switches and it also prints unambiguous error messages, for example: @@ -1625,8 +1664,8 @@ bibtex8 --wolfgang --mcites 30000 --mentints 30000 --mentstrs 40000 % When taking a closer look at \tabref{bib:cav:tab2}, you will notice that there are two parameters which can not be modified directly, |hash_prime| and |hash_size|. Increasing these values is only possible with the high"=level switches. That is why the above command includes the |--wolfgang| switch in addition to the low"=level switches. This situation is very unfortunate because the hash size effectively sets a cap on some other parameters. For example, |max_strings| can not be greater than |hash_size|. If you hit this cap, all you can do is recompile \file{bibtex8} with a larger capacity. Also note that the |wiz_fn_space| parameter is not related to the \file{bib} file but to the memory requirements of the \file{bst} file. \file{biblatex.bst} needs a value of about 6000. The value 10000 implicitly used by the |--wolfgang| switch is fine. -\paragraph{Biber} -Biber eliminates all of the above limitations. +\paragraph{\biber} +\biber eliminates all of the above limitations. \subsubsection{Sorting and Encoding Issues} \label{bib:cav:enc} @@ -1670,39 +1709,39 @@ sortname = {Ba<<sszz>>mann, Paul}, % Not only \bibtex, \latex needs to know about the encoding as well. See \secref{bib:cav:enc:enc} on how to specify encodings. -\paragraph{Biber} -Biber handles Ascii, 8-bit encodings such as Latin\,1, and \utf. It features true Unicode support and is capable of reencoding the \file{bib} data on the fly in a robust way. For sorting, Biber uses a Perl implementation of the Unicode Collation Algorithm (\acr{UCA}), as outlined in Unicode Technical Standard \#10.\fnurl{http://unicode.org/reports/tr10/} Collation tailoring based on the Unicode Common Locale Data Repository (\acr{CLDR}) is in the process of being added.\fnurl{http://cldr.unicode.org/} The bottom line is that Biber will deliver sorting results far superior to both \bibtex and \file{bibtex8} in many cases. If you are interested in the technical details, section 1.8 of Unicode Technical Standard \#10 will provide you with a very concise summary of why the inadequateness of traditional \bibtex and even \bin{bibtex8} is of a very general nature and not limited to the lack of \utf support.\fnurl{http://unicode.org/reports/tr10/#Common_Misperceptions} +\paragraph{\biber} +\biber handles Ascii, 8-bit encodings such as Latin\,1, and \utf. It features true Unicode support and is capable of reencoding the \file{bib} data on the fly in a robust way. For sorting, \biber uses a Perl implementation of the Unicode Collation Algorithm (\acr{UCA}), as outlined in Unicode Technical Standard \#10.\fnurl{http://unicode.org/reports/tr10/} Collation tailoring based on the Unicode Common Locale Data Repository (\acr{CLDR}) is also supported.\fnurl{http://cldr.unicode.org/} The bottom line is that \biber will deliver sorting results far superior to both \bibtex and \file{bibtex8} in many cases. If you are interested in the technical details, section 1.8 of Unicode Technical Standard \#10 will provide you with a very concise summary of why the inadequateness of traditional \bibtex and even \bin{bibtex8} is of a very general nature and not limited to the lack of \utf support.\fnurl{http://unicode.org/reports/tr10/#Common_Misperceptions} -Supporting Unicode implies much more than handling \utf input. Unicode is a complex standard covering more than its most well-known parts, the Unicode character encoding and transport encodings such as \utf. It also standardizes aspects such as string collation, which is required for language-sensitive sorting. For example, by using the Unicode Collation Algorithm, Biber can handle the character <> mentioned as an example in \secref{bib:cav:enc:bt8} without any manual intervention. All you need to do to get localized sorting is specify the locale: +Supporting Unicode implies much more than handling \utf input. Unicode is a complex standard covering more than its most well-known parts, the Unicode character encoding and transport encodings such as \utf. It also standardizes aspects such as string collation, which is required for language-sensitive sorting. For example, by using the Unicode Collation Algorithm, \biber can handle the character <> mentioned as an example in \secref{bib:cav:enc:bt8} without any manual intervention. All you need to do to get localized sorting is specify the locale: \begin{lstlisting}[style=latex]{} \usepackage[backend=biber,sortlocale=de]{biblatex} \end{lstlisting} % If the language of the document corresponds to the main locale of the operating system, \opt{sortlocale} is -omissible as Biber will detect the locale settings of the environment automatically. Note that this will also work with 8-bit encodings such as Latin\,9, \ie you can take advantage of Unicode-based sorting even though you are not using \utf input. See \secref{bib:cav:enc:enc} on how to specify input and data encodings properly. +omissible as \biber will detect the locale settings of the environment automatically. Note that this will also work with 8-bit encodings such as Latin\,9, \ie you can take advantage of Unicode-based sorting even though you are not using \utf input. See \secref{bib:cav:enc:enc} on how to specify input and data 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 \sty{biblatex} can do for you and what may require manual intervention. The package takes care of the \latex side, \ie it ensures that the data imported from the \file{bbl} file is interpreted correctly, provided that the \opt{bibencoding} package option is set properly. Depending on the backend, the \bibtex side may demand attention, too. When using \bin{bibtex8}, you need to supply \bin{bibtex8} with a matching \file{csf} file as it needs to know about the encoding of the \file{bib} file to be able to alphabetize the entries correctly. Unfortunately, there is no way for \sty{biblatex} to pass this information to \bin{bibtex8} automatically. The only way is setting its |--csfile| option on the command line when running \bin{bibtex8}. When using Biber, all of this is handled automatically and no further steps, apart from setting the \opt{bibencoding} option in certain cases, are required. Here are a few typical usage scenarios along with the relevant lines from the document preamble: +When using a non-Ascii encoding in the \file{bib} file, it is important to understand what \sty{biblatex} can do for you and what may require manual intervention. The package takes care of the \latex side, \ie it ensures that the data imported from the \file{bbl} file is interpreted correctly, provided that the \opt{bibencoding} package option is set properly. Depending on the backend, the \bibtex side may demand attention, too. When using \bin{bibtex8}, you need to supply \bin{bibtex8} with a matching \file{csf} file as it needs to know about the encoding of the \file{bib} file to be able to alphabetize the entries correctly. Unfortunately, there is no way for \sty{biblatex} to pass this information to \bin{bibtex8} automatically. The only way is setting its |--csfile| option on the command line when running \bin{bibtex8}. When using \biber, all of this is handled automatically and no further steps, apart from setting the \opt{bibencoding} option in certain cases, are required. Here are a few typical usage scenarios along with the relevant lines from the document preamble: \begin{itemize} \setlength{\itemsep}{0pt} -\item Ascii notation in both the \file{tex} and the \file{bib} file with \pdftex or traditional \tex (this will work with \bibtex, \file{bibtex8}, and Biber): +\item Ascii notation in both the \file{tex} and the \file{bib} file with \pdftex or traditional \tex (this will work with \bibtex, \file{bibtex8}, and \biber): \begin{lstlisting}[style=latex]{} \usepackage{biblatex} \end{lstlisting} -\item Latin\,1 encoding (\acr{ISO}-8859-1) in the \file{tex} file, Ascii notation in the \file{bib} file with \pdftex or traditional \tex (\bibtex, \file{bibtex8}, Biber): +\item Latin\,1 encoding (\acr{ISO}-8859-1) in the \file{tex} file, Ascii notation in the \file{bib} file with \pdftex or traditional \tex (\bibtex, \file{bibtex8}, \biber): \begin{lstlisting}[style=latex]{} \usepackage[latin1]{inputenc} \usepackage[bibencoding=ascii]{biblatex} \end{lstlisting} -\item Latin\,9 encoding (\acr{ISO}-8859-15) in both the \file{tex} and the \file{bib} file with \pdftex or traditional \tex (\file{bibtex8}, Biber): +\item Latin\,9 encoding (\acr{ISO}-8859-15) in both the \file{tex} and the \file{bib} file with \pdftex or traditional \tex (\file{bibtex8}, \biber): \begin{lstlisting}[style=latex]{} \usepackage[latin9]{inputenc} @@ -1716,7 +1755,7 @@ Since \kvopt{bibencoding}{auto} is the default setting, the option is omissible. \usepackage{biblatex} \end{lstlisting} -\item \utf encoding in the \file{tex} file, Latin\,1 (\acr{ISO}-8859-1) in the \file{bib} file with \pdftex or traditional \tex (\file{bibtex8}, Biber): +\item \utf encoding in the \file{tex} file, Latin\,1 (\acr{ISO}-8859-1) in the \file{bib} file with \pdftex or traditional \tex (\file{bibtex8}, \biber): \begin{lstlisting}[style=latex]{} \usepackage[utf8]{inputenc} @@ -1729,7 +1768,7 @@ The same scenario with \xetex or \luatex in native \utf mode: \usepackage[bibencoding=latin1]{biblatex} \end{lstlisting} -\item Using \utf encoding in both the \file{tex} and the \file{bib} file is not possible with traditional \bibtex or \bin{bibtex8} since neither of them is capable of handling \utf. Unless you switch to Biber, you need to use an 8-bit encoding such as Latin\,1 (see above) or resort to Ascii notation in this case: +\item Using \utf encoding in both the \file{tex} and the \file{bib} file is not possible with traditional \bibtex or \bin{bibtex8} since neither of them is capable of handling \utf. Unless you switch to \biber, you need to use an 8-bit encoding such as Latin\,1 (see above) or resort to Ascii notation in this case: \begin{lstlisting}[style=latex]{} \usepackage[utf8]{inputenc} @@ -1744,7 +1783,7 @@ The same scenario with \xetex or \luatex in native \utf mode: \end{itemize} -Biber can handle Ascii notation, 8-bit encodings such as Latin\,1, and \utf. It is also capable of reencoding the \file{bib} data on the fly (replacing the limited macro-level reencoding feature of \sty{biblatex}). This will happen automatically if required, provided that you specify the encoding of the \file{bib} files properly. In addition to the scenarios discussed above, Biber can also handle the following cases: +\biber can handle Ascii notation, 8-bit encodings such as Latin\,1, and \utf. It is also capable of reencoding the \file{bib} data on the fly (replacing the limited macro-level reencoding feature of \sty{biblatex}). This will happen automatically if required, provided that you specify the encoding of the \file{bib} files properly. In addition to the scenarios discussed above, \biber can also handle the following cases: \begin{itemize} @@ -1777,7 +1816,7 @@ The same scenario with \xetex or \luatex in native \utf mode: \end{itemize} -Some workarounds may be required when using traditional \tex or \pdftex with \utf encoding because \sty{inputenc}'s \file{utf8} module does not cover all of Unicode. Roughly speaking, it only covers the Western European Unicode range. When loading \sty{inputenc} with the \file{utf8} option, \sty{biblatex} will normally instruct Biber to reencode the \file{bib} data to \utf. This may lead to \sty{inputenc} errors if some of the characters in the \file{bib} file are outside the limited Unicode range supported by \sty{inputenc}. +Some workarounds may be required when using traditional \tex or \pdftex with \utf encoding because \sty{inputenc}'s \file{utf8} module does not cover all of Unicode. Roughly speaking, it only covers the Western European Unicode range. When loading \sty{inputenc} with the \file{utf8} option, \sty{biblatex} will normally instruct \biber to reencode the \file{bib} data to \utf. This may lead to \sty{inputenc} errors if some of the characters in the \file{bib} file are outside the limited Unicode range supported by \sty{inputenc}. \begin{itemize} @@ -1788,7 +1827,7 @@ Some workarounds may be required when using traditional \tex or \pdftex with \ut \usepackage[safeinputenc]{biblatex} \end{lstlisting} % -If this option is enabled, \sty{biblatex} will ignore \sty{inputenc}'s \opt{utf8} option and use Ascii. Biber will then try to convert the \file{bib} data to Ascii notation. For example, it will convert \texttt{\k{S}} to |\k{S}|. This option is similar to setting \kvopt{texencoding}{ascii} but will only take effect in this specific scenario (\sty{inputenc}\slash \sty{inputenx} with \utf). This workaround takes advantage of the fact that both Unicode and the \utf transport encoding are backwards compatible with Ascii. +If this option is enabled, \sty{biblatex} will ignore \sty{inputenc}'s \opt{utf8} option and use Ascii. \biber will then try to convert the \file{bib} data to Ascii notation. For example, it will convert \texttt{\k{S}} to |\k{S}|. This option is similar to setting \kvopt{texencoding}{ascii} but will only take effect in this specific scenario (\sty{inputenc}\slash \sty{inputenx} with \utf). This workaround takes advantage of the fact that both Unicode and the \utf transport encoding are backwards compatible with Ascii. \end{itemize} @@ -1871,17 +1910,17 @@ Using any of the <alphabetic> sorting schemes only makes sense in conjunction wi \boolitem[true]{sortcase} -Whether or not to sort the bibliography and the list of shorthands case"=sensitively. Note that case"=sensitive sorting is only supported by the \bin{bibtex8} and Biber backends. Sorting is always case"=insensitive with legacy \bibtex. See the \opt{backend} option for details. +Whether or not to sort the bibliography and the list of shorthands case"=sensitively. Note that case"=sensitive sorting is only supported by the \bin{bibtex8} and \biber backends. Sorting is always case"=insensitive with legacy \bibtex. See the \opt{backend} option for details. \boolitem[true]{sortupper}[\BiberOnly] -This option corresponds to Biber's |--sortupper| command-line option. It has no effect with any other backend. If enabled, the bibliography is sorted in <uppercase before lowercase> order. Disabling this option means <lowercase before uppercase> order. +This option corresponds to \biber's |--sortupper| command-line option. It has no effect with any other backend. If enabled, the bibliography is sorted in <uppercase before lowercase> order. Disabling this option means <lowercase before uppercase> order. \optitem{sortlocale}{\prm{locale}}[\BiberOnly] -This option corresponds to Biber's |--sortlocale| command-line option. It has no effect with any other backend. If set, it specifies the locale to be used for sorting. While \sty{biblatex} provides no default value for this option, Biber will inherit the locale settings from the environment if no locale has been specified explicitly. +This option corresponds to \biber's |--sortlocale| command-line option. It has no effect with any other backend. If set, it specifies the locale to be used for sorting. While \sty{biblatex} provides no default value for this option, \biber will inherit the locale settings from the environment if no locale has been specified explicitly. -\optitem[los]{sortlos}{\opt{bib}, \opt{los}} +\optitem[los]{sortlos}{\opt{bib}, \opt{los}}[\BibTeXOnly] The sorting order of the list of shorthands. The following choices are available: @@ -1890,9 +1929,15 @@ The sorting order of the list of shorthands. The following choices are available \item[los] Sort by shorthand. \end{valuelist} +The sorting order of shorthands with \biber is more flexible and is set with the \opt{sorting} option to the \cmd{printshorthands} command. + +\boolitem[true]{related} + +Whether or not to use information from related entries or not. See \secref{use:rel}. + \boolitem[false]{sortcites} -Whether or not to sort citations if multiple entry keys are passed to a citation command. If this option is enabled, citations are sorted according to the sorting order of the bibliography. This feature works with all citation styles. +Whether or not to sort citations if multiple entry keys are passed to a citation command. If this option is enabled, citations are sorted according to the global sorting order of the bibliography. This feature works with all citation styles. \intitem[3]{maxnames} @@ -2202,27 +2247,27 @@ Path selector for arXiv links. If hyperlink support is enabled, this option cont See \secref{use:use:epr} for details on support for arXiv and electronic publishing information. -\optitem[bibtex]{backend}{\opt{bibtex}, \opt{bibtex8}, \opt{bibtexu}, \opt{biber}} +\optitem[biber]{backend}{\opt{bibtex}, \opt{bibtex8}, \opt{bibtexu}, \opt{biber}} Specifies the database backend. The following backends are supported: \begin{valuelist} +\item[biber] \biber, the default backend of \sty{biblatex}, supports Ascii, 8-bit encodings, \utf, on-the-fly reencoding, locale"=specific sorting, and many other features. Locale"=specific sorting, case"=sensitive sorting, and upper\slash lowercase precedence are controlled by the options \opt{sortlocale}, \opt{sortcase}, and \opt{sortupper}, respectively. + \item[bibtex] Legacy \bibtex. Traditional \bibtex supports Ascii encoding only. Sorting is always case"=insensitive. \item[bibtex8] \bin{bibtex8}, the 8-bit implementation of \bibtex, supports Ascii and 8-bit encodings such as Latin~1. Depending on the \file{csf} file, case"=sensitive sorting may be supported. -\item[bibtexu] \bin{bibtexu} is a Unicode-enabled implementation of \bibtex which supports \utf. Note that \bin{bibtexu} is not actively supported by \sty{biblatex} and has not been tested as backend in any way. Biber is the recommended backend. - -\item[biber] Biber, the next"=generation backend of \sty{biblatex}, supports Ascii, 8-bit encodings, \utf, on-the-fly reencoding, locale"=specific sorting, and many other features. Locale"=specific sorting, case"=sensitive sorting, and upper\slash lowercase precedence are controlled by the options \opt{sortlocale}, \opt{sortcase}, and \opt{sortupper}, respectively. +\item[bibtexu] \bin{bibtexu} is a Unicode-enabled implementation of \bibtex which supports \utf. Note that \bin{bibtexu} is not actively supported by \sty{biblatex} and has not been tested as backend in any way. \biber is the recommended backend. \end{valuelist} -This option will typically be set permanently in the configuration file, see \secref{use:cfg} for details. Also see \secref{bib:cav:enc} for further instructions concerning the encoding of \file{bib} files. +See \secref{bib:cav:enc} for further instructions concerning the encoding of \file{bib} files. This option is only available at load-time as internally, the code chooses completely different paths depending on the backend. This means that you can't set the backend with, for example, \cmd{ExecuteBibliographyOptions} in the preamble. \optitem[auto]{texencoding}{\opt{auto}, \prm{encoding}} -Specifies the encoding of the \file{tex} file. This option affects the data transfered from the backend to \sty{biblatex}. When using Biber, this corresponds to Biber's |--bblencoding| option. The following choices are available: +Specifies the encoding of the \file{tex} file. This option affects the data transfered from the backend to \sty{biblatex}. When using \biber, this corresponds to \biber's |--bblencoding| option. The following choices are available: \begin{valuelist} @@ -2236,7 +2281,7 @@ Note that setting \kvopt{texencoding}{\prm{encoding}} will also affect the \opt{ \optitem[auto]{bibencoding}{\opt{auto}, \prm{encoding}} -Specifies the encoding of the \file{bib} files. When using Biber, this corresponds to Biber's |--bibencoding| option. The following choices are available: +Specifies the encoding of the \file{bib} files. When using \biber, this corresponds to \biber's |--bibencoding| option. The following choices are available: \begin{valuelist} @@ -2250,7 +2295,7 @@ By default, \sty{biblatex} assumes that the \file{tex} file and the \file{bib} f \boolitem[false]{safeinputenc}[\BiberOnly] -If this option is enabled, \sty{biblatex} will automatically force \kvopt{texencoding}{ascii} if the \sty{inputenc}\slash \sty{inputenx} package has been loaded and the input encoding is \utf, \ie it will ignore any macro-based \utf support and use Ascii only. Biber will then try to convert any non-Ascii data in the \file{bib} file to Ascii. For example, it will convert \texttt{\d{S}} to |\d{S}|. See \secref{bib:cav:enc:enc} for an explanation of why you may want to enable this option. +If this option is enabled, \sty{biblatex} will automatically force \kvopt{texencoding}{ascii} if the \sty{inputenc}\slash \sty{inputenx} package has been loaded and the input encoding is \utf, \ie it will ignore any macro-based \utf support and use Ascii only. \biber will then try to convert any non-Ascii data in the \file{bib} file to Ascii. For example, it will convert \texttt{\d{S}} to |\d{S}|. See \secref{bib:cav:enc:enc} for an explanation of why you may want to enable this option. \boolitem[true]{bibwarn} @@ -2258,7 +2303,7 @@ By default, \sty{biblatex} will report warnings issued by the backend concerning \intitem[2]{mincrossrefs} -Sets the minimum number of cross references to \prm{integer} when requesting a \bibtex run.\footnote{If an entry which is cross-referenced by other entries in the \file{bib} file hits this threshold, it is included in the bibliography even if it has not been cited explicitly. This is a standard feature of \bibtex and not specific to \sty{biblatex}. See the description of the \bibfield{crossref} field in \secref{bib:fld:spc} for further information.} Note that this package option merely affects the format of certain requests written to the transcript file. It will not have any effect if the editor or compiler script launching \bibtex does not include dedicated \sty{biblatex} support or if \bibtex is manually launched from the command"=line.\footnote{As of this writing, no \latex editors or compiler scripts with dedicated \sty{biblatex} support are known, but this will hopefully change in the future.} See \secref{bib:cav:ide} for details. This option also affects the handling of the \bibfield{xref} field. See the field description in \secref{bib:fld:spc} as well as \secref{bib:cav:ref} for details. +Sets the minimum number of cross references to \prm{integer} when requesting a backend run.\footnote{If an entry which is cross-referenced by other entries in the \file{bib} file hits this threshold, it is included in the bibliography even if it has not been cited explicitly. This is a standard feature of the \bibtex (also \biber) and not specific to \sty{biblatex}. See the description of the \bibfield{crossref} field in \secref{bib:fld:spc} for further information.} Note that when using the \bibtex backend, this package option merely affects the format of certain requests written to the transcript file. It will not have any effect if the editor or compiler script launching \bibtex does not include dedicated \sty{biblatex} support or if \bibtex is manually launched from the command"=line.\footnote{As of this writing, no \latex editors or compiler scripts with dedicated \sty{biblatex} support are known, but this will hopefully change in the future.} See \secref{bib:cav:ide} for details. This option also affects the handling of the \bibfield{xref} field. See the field description in \secref{bib:fld:spc} as well as \secref{bib:cav:ref} for details. \end{optionlist} @@ -2399,14 +2444,18 @@ The maximum permitted nesting level of parentheses and brackets. If parentheses When enabled, all first and middle names will be rendered as initials. The option will affect the \cmd{iffirstinits} test from \secref{aut:aux:tst}. +\boolitem[false]{sortfirstinits} + +When enabled, sorting names will only use their initials. \BiberOnlyMark This is separate from \opt{firstinits} in case users want to show only inits but sort on full names, for example. + \boolitem[false]{terseinits} -This option controls the format of initials generated by \sty{biblatex}. If enabled, initals are rendered using a terse format without dots and spaces. For example, the initials of Donald Ervin Knuth would be rendered as <D.~E.> by default, and as <DE> if this option is enabled. \BiberOnlyMark With Biber, the option works by redefining some macros which control the format of initials. See \secref{use:cav:nam} for details. +This option controls the format of initials generated by \sty{biblatex}. If enabled, initals are rendered using a terse format without dots and spaces. For example, the initials of Donald Ervin Knuth would be rendered as <D.~E.> by default, and as <DE> if this option is enabled. \BiberOnlyMark With \biber, the option works by redefining some macros which control the format of initials. See \secref{use:cav:nam} for details. \boolitem[false]{labelalpha} Whether or not to provide the special fields \bibfield{labelalpha} and \bibfield{extraalpha}, see \secref{aut:bbx:fld} for details. -\BiberOnlyMark With Biber, this option is also settable on a per-type basis. See also \opt{maxalphanames} and \opt{minalphanames}. +\BiberOnlyMark With \biber, this option is also settable on a per-type basis. See also \opt{maxalphanames} and \opt{minalphanames}. Table \ref{use:opt:tab2} summarises the various \opt{extra*} disambiguation counters and what they track. \intitem[3]{maxalphanames}[\BiberOnly] @@ -2421,15 +2470,23 @@ Similar to the \opt{minnames} option but customizes the format of the \bibfield{ Whether or not to provide the special field \bibfield{labelnumber}, see \secref{aut:bbx:fld} for details. This option is also settable on a per-type basis. +\boolitem[false]{labeltitle}[\BiberOnly] + +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:tab2} summarises the various \opt{extra*} disambiguation counters and what they track. + +\boolitem[false]{labeltitleyear}[\BiberOnly] + +Whether or not to provide the special field \bibfield{extratitleyear}, see \secref{aut:bbx:fld} for details. Note that the special field \bibfield{labeltitle} is always provided and this option controls rather whether \bibfield{labeltitle} is used to generate \bibfield{extratitleyear} information. This option is also settable on a per-type basis. Table \ref{use:opt:tab2} summarises the various \opt{extra*} disambiguation counters and what they track. + \boolitem[false]{labelyear} -Whether or not to provide the special fields \bibfield{labelyear} and \bibfield{extrayear}, see \secref{aut:bbx:fld} for details. -\BiberOnlyMark With Biber, this option is also settable on a per-type basis. +Whether or not to provide the special fields \bibfield{labelyear} and \bibfield{extrayear}, see \secref{aut:bbx:fld} for details. +\BiberOnlyMark With \biber, this option is also settable on a per-type basis. Table \ref{use:opt:tab2} summarises the various \opt{extra*} disambiguation counters and what they track. \boolitem[false]{singletitle} Whether or not to provide the data required by the \cmd{ifsingletitle} test, see \secref{aut:aux:tst} for details. -\BiberOnlyMark With Biber, this option is also settable on a per-type basis. +\BiberOnlyMark With \biber, this option is also settable on a per-type basis. \optitem[false]{uniquename}{\opt{true}, \opt{false}, \opt{init}, \opt{full}, \opt{allinit}, \opt{allfull}, \opt{mininit}, \opt{minfull}}[\BiberOnly] @@ -2463,6 +2520,26 @@ Note that the \opt{uniquelist} option will also affect the \cmd{ifsingletitle} t \end{optionlist} +\begin{table} +\ttfamily +\tablesetup +\begin{tabularx}{\textwidth}{@{}p{100pt}@{}p{100pt}@{}p{100pt}@{}p{100pt}@{}} +\toprule +\multicolumn{1}{@{}H}{Option} & +\multicolumn{1}{@{}H}{Enabled field} & +\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\\ +labelyear & labelyear & extrayear & labelname+labelyear\\ +labeltitle & --- & extratitle & labelname+labeltitle\\ +labeltitleyear & --- & extratitleyear & labeltitle+labelyear\\ +\bottomrule +\end{tabularx} +\caption{Disambiguation counters} +\label{use:opt:tab2} +\end{table} + \subsubsection{Entry Options} \label{use:opt:bib} @@ -2478,17 +2555,17 @@ The following options are settable on a per"=entry basis in the \bibfield{option \boolitem[true]{useauthor} Whether the \bibfield{author} is used in labels and considered during sorting. This may be useful if an entry includes an \bibfield{author} field but is usually not cited by author for some reason. Setting \kvopt{useauthor}{false} does not mean that the \bibfield{author} is ignored completely. It means that the \bibfield{author} is not used in labels and ignored during sorting. The entry will then be alphabetized by \bibfield{editor} or \bibfield{title}. With the standard styles, the \bibfield{author} is printed after the title in this case. See also \secref{use:srt}. -\BiberOnlyMark With Biber, this option is also settable on a per-type basis. +\BiberOnlyMark With \biber, this option is also settable on a per-type basis. \boolitem[true]{useeditor} Whether the \bibfield{editor} replaces a missing \bibfield{author} in labels and during sorting. This may be useful if an entry includes an \bibfield{editor} field but is usually not cited by editor. Setting \kvopt{useeditor}{false} does not mean that the \bibfield{editor} is ignored completely. It means that the \bibfield{editor} does not replace a missing \bibfield{author} in labels and during sorting. The entry will then be alphabetized by \bibfield{title}. With the standard styles, the \bibfield{editor} is printed after the title in this case. See also \secref{use:srt}. -\BiberOnlyMark With Biber, this option is also settable on a per-type basis. +\BiberOnlyMark With \biber, this option is also settable on a per-type basis. \boolitem[false]{usetranslator} Whether the \bibfield{translator} replaces a missing \bibfield{author}\slash \bibfield{editor} in labels and during sorting. Setting \kvopt{usetranslator}{true} does not mean that the \bibfield{translator} overrides the \bibfield{author}\slash \bibfield{editor}. It means that the \bibfield{translator} is considered as a fallback if the \bibfield{author}\slash \bibfield{editor} is missing or if \opt{useauthor} and \opt{useeditor} are set to \texttt{false}. In other words, in order to cite a book by translator rather than by author, you need to set the following options: -\BiberOnlyMark With Biber, this option is also settable on a per-type basis. +\BiberOnlyMark With \biber, this option is also settable on a per-type basis. \begin{lstlisting}[style=bibtex]{} @Book{..., @@ -2503,7 +2580,7 @@ With the standard styles, the \bibfield{translator} is printed after the title b \boolitem[false]{useprefix} Whether the name prefix (von, van, of, da, de, della, etc.) is considered when printing the last name in citations. This also affects the sorting and formatting of the bibliography as well as the generation of certain types of labels. If this option is enabled, \sty{biblatex} always precedes the last name with the prefix. For example, Ludwig van Beethoven would be cited as Beethoven and alphabetized as Beethoven, Ludwig van by default. If this option is enabled, he is cited as van Beethoven and alphabetized as Van Beethoven, Ludwig instead. -\BiberOnlyMark With Biber, this option is also settable on a per-type basis. +\BiberOnlyMark With \biber, this option is also settable on a per-type basis. \optitem{indexing}{\opt{true}, \opt{false}, \opt{cite}, \opt{bib}} @@ -2521,22 +2598,22 @@ The following options are only settable on a per"=entry basis in the \bibfield{o \boolitem[false]{skipbib} If this option is enabled, the entry is excluded from the bibliography but it may still be cited. -\BiberOnlyMark With Biber, this option is also settable on a per-type basis. +\BiberOnlyMark With \biber, this option is also settable on a per-type basis. \boolitem[false]{skiplos} If this option is enabled, the entry is excluded from the list of shorthands. It is still included in the bibliography and it may also be cited by shorthand. -\BiberOnlyMark With Biber, this option is also settable on a per-type basis. +\BiberOnlyMark With \biber, this option is also settable on a per-type basis. \boolitem[false]{skiplab} If this option is enabled, \sty{biblatex} will not assign any labels to the entry. It is not required for normal operation. Use it with care. If enabled, \sty{biblatex} can not guarantee unique citations for the respective entry and citations styles which require labels may fail to create valid citations for the entry. -\BiberOnlyMark With Biber, this option is also settable on a per-type basis. +\BiberOnlyMark With \biber, this option is also settable on a per-type basis. \boolitem[false]{dataonly} Setting this option is equivalent to \opt{skipbib}, \opt{skiplos}, and \opt{skiplab}. It is not required for normal operation. Use it with care. -\BiberOnlyMark With Biber, this option is also settable on a per-type basis. +\BiberOnlyMark With \biber, this option is also settable on a per-type basis. \end{optionlist} @@ -2710,6 +2787,77 @@ This style prints all bibliographic data in tabular format. It is intended for d \end{marglist} +\subsection{Related Entries} +\label{use:rel} + +Almost all bibliography styles require authors to specify certain types of relationship between entries such as Reprint of, Reprinted in etc. It is impossible to provide data fields to cover all of these relationships and so \sty{biblatex} provides a general mechanism for this using the entry fields \bibfield{related}, \bibfield{relatedtype} and \bibfield{relatedstring}. A related entry does not need to be cited and does not appear in the bibliography itself (unless of course it is also cited itseld independently). The \bibfield{relatedtype} field should specify a localization string which will be printed before the information from the related entries is printed, for example Orig. Pub. as. The \bibfield{relatedstring} field can be used to override the string determined via \bibfield{relatedtype}. Some examples: + +\begin{lstlisting}[style=bibtex]{} +@Book{key1, + ... + related = {key2}, + relatedtype = {reprintof}, + ... +} + +@Book{key2, + ... +} +\end{lstlisting} +% +Here we specify that entry \texttt{key1} is a reprint of entry \texttt{key2}. In the bibliography driver for \texttt{Book} entries, when \cmd{usebibmacro\{related\}} is called for entry \texttt{key1}: + +\begin{itemize} +\item If the localization string \texttt{reprintof} is defined, it is printed, then +\item If the \texttt{related:reprintof} macro is defined, it is used to format the information contained in entry \texttt{key2}, otherwise the \texttt{related:default} macro is used +\item If the \texttt{related:reprintof} format is defined, it is used to format both the localization string and data. If this format is not defined, then the \texttt{related} format is used instead. +\end{itemize} +% +It is also supported to have cascading and/or circular relations: + +\begin{lstlisting}[style=bibtex]{} +@Book{key1, + ... + related = {key2}, + relatedtype = {reprintof}, + ... +} + +@Book{key2, + ... + related = {key3}, + relatedtype = {translationof}, + ... +} + +@Book{key3, + ... + related = {key2}, + relatedtype = {translatedas}, + ... +} +\end{lstlisting} +% +Multiple relations to the same entry are also possible: +\begin{lstlisting}[style=bibtex]{} +@MVBook{key1, + ... + related = {key2,key3}, + relatedtype = {multivolume}, + ... +} + +@Book{key2, + ... +} + +@Book{key3, + ... +} +\end{lstlisting} +% +Note the the order of the keys in lists of multiple related entries is important. The data from multiple related entries is printed in the order of the keys listed in this field. See \secref{aut:ctm:rel} for a more details on the mechanisms behind this feature. You can turn this feature off using the package option \opt{related} from \secref{use:opt:pre:gen}. + \subsection{Sorting Options} \label{use:srt} @@ -2719,7 +2867,7 @@ The first item considered in the sorting process is always the \bibfield{presort The chronological sorting schemes presented in \apxref{apx:srt:chr} also make use of the \bibfield{presort} and \bibfield{sortkey} fields, if defined. The next item considered is the \bibfield{sortyear} or the \bibfield{year} field, depending on availability. The \opt{ynt} scheme extracts the first four Arabic figures from the field. If both fields are undefined, the string \texttt{9999} is used as a fallback value. This means that all entries without a year will be moved to the end of the list. The \opt{ydnt} scheme is similar in concept but sorts the year in descending order. As with the \opt{ynt} scheme, the string \texttt{9999} is used as a fallback value. The remaining items are similar to the alphabetic sorting schemes discussed above. Note that the \opt{ydnt} sorting scheme will only sort the date in descending order. All other items are sorted in ascending order as usual. -Using special fields such as \bibfield{sortkey}, \bibfield{sortname}, or \bibfield{sorttitle} is usually not required. The \sty{biblatex} package is quite capable of working out the desired sorting order by using the data found in the regular fields of an entry. You will only need them if you want to manually modify the sorting order of the bibliography or if any data required for sorting is missing. Please refer to the field descriptions in \secref{bib:fld:spc} for details on possible uses of the special fields. Also note that using \file{bibtex8} or Biber instead of legacy \file{bibtex} is strongly recommended. +Using special fields such as \bibfield{sortkey}, \bibfield{sortname}, or \bibfield{sorttitle} is usually not required. The \sty{biblatex} package is quite capable of working out the desired sorting order by using the data found in the regular fields of an entry. You will only need them if you want to manually modify the sorting order of the bibliography or if any data required for sorting is missing. Please refer to the field descriptions in \secref{bib:fld:spc} for details on possible uses of the special fields. Also note that using \biber instead of legacy \bibtex is strongly recommended. \subsection{Bibliography Commands} \label{use:bib} @@ -2750,7 +2898,7 @@ Assigns a label to a resource. The \prm{identifier} may be used in place of the \valitem[local]{location}{location} -The location of the resource. The \prm{location} may be either \texttt{local} for local resources or \texttt{remote} for \acr{URL}s. Remote resources require Biber. The protocols \acr{HTTP} and \acr{FTP} are supported. The remote \acr{URL} must be a fully qualified path to a \file{bib} file or a \acr{URL} which returns a \file{bib} file. +The location of the resource. The \prm{location} may be either \texttt{local} for local resources or \texttt{remote} for \acr{URL}s. Remote resources require \biber. The protocols \acr{HTTP} and \acr{FTP} are supported. The remote \acr{URL} must be a fully qualified path to a \file{bib} file or a \acr{URL} which returns a \file{bib} file. \valitem[file]{type}{type} @@ -2766,9 +2914,9 @@ The data type (format) of the resource. The following formats are currently supp \item[ris]\BiberOnlyMark Research Information Systems (\acr{RIS}) format.\fnurl{http://en.wikipedia.org/wiki/RIS_(file_format)} Note that an \texttt{ID} tag is required in all \acr{RIS} records. The \texttt{ID} value corresponds to the entry key. Support for this format is experimental. -\item[zoterordfxml]\BiberOnlyMark Zotero \acr{RDF}/\acr{XML} format. Support for this format is experimental. Refer to the Biber manual for details. +\item[zoterordfxml]\BiberOnlyMark Zotero \acr{RDF}/\acr{XML} format. Support for this format is experimental. Refer to the \biber manual for details. -\item[endnotexml]\BiberOnlyMark EndNote \acr{XML} format. Support for this format is experimental. Refer to the Biber manual for details. +\item[endnotexml]\BiberOnlyMark EndNote \acr{XML} format. Support for this format is experimental. Refer to the \biber manual for details. \end{valuelist} @@ -2817,13 +2965,17 @@ The prenote is an arbitrary piece of text to be printed after the heading but be The postnote is an arbitrary piece of text to be printed after the list of references. This option selects the postnote \prm{name}, as defined with \cmd{defbibnote}. By default, no postnote is printed. The note is printed in the standard text font. It is not affected by \cmd{bibsetup} and \cmd{bibfont} but it may contain its own font declarations. See \secref{use:bib:nts} for details. -\intitem[0]{section} +\intitem[current section]{section} -Print only entries cited in reference section \prm{integer}. The reference sections are numbered starting at~1. All citations given outside a \env{refsection} environment are assigned to section~0. See \secref{use:bib:sec} for details and \secref{use:use:mlt} for usage examples. When giving a chain of multiple filters, the \texttt{section} filter must always be given first. +Print only entries cited in reference section \prm{integer}. The reference sections are numbered starting at~1. All citations given outside a \env{refsection} environment are assigned to section~0. See \secref{use:bib:sec} for details and \secref{use:use:mlt} for usage examples. \intitem[0]{segment} -Print only entries cited in reference segment \prm{integer}. The reference segments are numbered starting at~1. All citations given outside a \env{refsegment} environment are assigned to segment~0. See \secref{use:bib:seg} for details and \secref{use:use:mlt} for usage examples. +Print only entries cited in reference segment \prm{integer}. The reference segments are numbered starting at~1. All citations given outside a \env{refsegment} environment are assigned to segment~0. See \secref{use:bib:seg} for details and \secref{use:use:mlt} for usage examples. Remember that segments within a section are numbered local to the section so the segment you request will be the nth segment in the requested (or currently active enclosing) section. + +\valitem{sorting}{name}[\BiberOnly] + +Sort the bibliography according to a built-in or user specified sorting scheme defined with \cmd{DeclareSortingScheme}. If omitted, the global sorting scheme specified with package \opt{sorting} option is used. This option facilitates multiple bibliography lists within a refsection, each of which can be sorted differently. \valitem{type}{entrytype} @@ -2883,15 +3035,15 @@ This option applies to numerical citation\slash bibliography styles only and req \cmditem{bibbysection}[key=value, \dots] -This command automatically loops over all reference sections. This is equivalent to giving one \cmd{printbibliography} command for every section but has the additional benefit of automatically skipping sections without references. Note that \cmd{bibbysection} starts looking for references in section \texttt{1}. It will ignore references given outside of \env{refsection} environments since they are assigned to section~0. See \secref{use:use:mlt} for usage examples. The options are a subset of those supported by \cmd{printbibliography}. Valid options are \opt{env}, \opt{heading}, \opt{prenote}, \opt{postnote}. +This command automatically loops over all reference sections. This is equivalent to giving one \cmd{printbibliography} command for every section but has the additional benefit of automatically skipping sections without references. Note that \cmd{bibbysection} starts looking for references in section \texttt{1}. It will ignore references given outside of \env{refsection} environments since they are assigned to section~0. See \secref{use:use:mlt} for usage examples. The options are a subset of those supported by \cmd{printbibliography}. Valid options are \opt{env}, \opt{heading}, \opt{prenote}, \opt{postnote}. The global sorting scheme specified with package \opt{sorting} option is used for all sections. \cmditem{bibbysegment}[key=value, \dots] -This command automatically loops over all reference segments. This is equivalent to giving one \cmd{printbibliography} command for every segment but has the additional benefit of automatically skipping segments without references. Note that \cmd{bibbysegment} starts looking for references in segment \texttt{1}. It will ignore references given outside of \env{refsegment} environments since they are assigned to segment~0. See \secref{use:use:mlt} for usage examples. The options are a subset of those supported by \cmd{printbibliography}. Valid options are \opt{env}, \opt{heading}, \opt{prenote}, \opt{postnote}. +This command automatically loops over all reference segments. This is equivalent to giving one \cmd{printbibliography} command for every segment in the current \env{refsection} but has the additional benefit of automatically skipping segments without references. Note that \cmd{bibbysegment} starts looking for references in segment \texttt{1}. It will ignore references given outside of \env{refsegment} environments since they are assigned to segment~0. See \secref{use:use:mlt} for usage examples. The options are a subset of those supported by \cmd{printbibliography}. Valid options are \opt{env}, \opt{heading}, \opt{prenote}, \opt{postnote}. The global sorting scheme specified with package \opt{sorting} option is used for all segments. \cmditem{bibbycategory}[key=value, \dots] -This command loops over all bibliography categories. This is equivalent to giving one \cmd{printbibliography} command for every category but has the additional benefit of automatically skipping empty categories. The categories are processed in the order in which they were declared. See \secref{use:use:mlt} for usage examples. The options are a subset of those supported by \cmd{printbibliography}. Valid options are \opt{env}, \opt{prenote}, \opt{postnote}, \opt{section}. Note that \opt{heading} is not available with this command. The name of the current category is automatically used as the heading name. This is equivalent to passing \texttt{heading=\prm{category}} to \cmd{printbibliography} and implies that there must be a matching heading definition for every category. +This command loops over all bibliography categories. This is equivalent to giving one \cmd{printbibliography} command for every category but has the additional benefit of automatically skipping empty categories. The categories are processed in the order in which they were declared. See \secref{use:use:mlt} for usage examples. The options are a subset of those supported by \cmd{printbibliography}. Valid options are \opt{env}, \opt{prenote}, \opt{postnote}, \opt{section}. Note that \opt{heading} is not available with this command. The name of the current category is automatically used as the heading name. This is equivalent to passing \texttt{heading=\prm{category}} to \cmd{printbibliography} and implies that there must be a matching heading definition for every category. The global sorting scheme specified with package \opt{sorting} option is used for all categories. \cmditem{printbibheading}[key=value, \dots] @@ -2910,6 +3062,8 @@ If any entry includes a \bibfield{shorthand} field, \sty{biblatex} automatically This command prints the list of shorthands. It takes one optional argument, which is a list of options given in \keyval notation. Valid options are all options supported by \cmd{printbibliography} (\secref{use:bib:bib}) except \opt{prefixnumbers}, \opt{resetnumbers}, and \opt{omitnumbers}. If there are any \env{refsection} environments in the document, the list of shorthands will be local to these environments; see \secref{use:bib:sec} for details. By default, this command uses the heading \texttt{shorthands}. See \secref{use:bib:hdg} for details. +The \opt{sorting} option differs from \cmd{printbibliography} in that if omitted, the default is to sort by shorthand. + \end{ltxsyntax} \subsubsection{Bibliography Sections} @@ -2938,7 +3092,7 @@ The \env{refsegment} environment is used in the document body to mark a referenc \envitem{refsegment} -The difference between a \env{refsection} and a \env{refsegment} environment is that the former creates labels which are local to the environment whereas the latter provides a target for the \opt{segment} filter of \cmd{printbibliography} without affecting the labels. They will be unique across the entire document. \env{refsegment} environments may not be nested, but you may use them in conjunction with \env{refsection} to subdivide a reference section into segments. In this case, the segments are local to the enclosing \env{refsection} environment. Use the \env{refsegment} option of \cmd{printbibliography} to select a segment when printing the bibliography. The reference segments are numbered starting at~\texttt{1} and the number of the current segment will be written to the transcript file. All citations given outside a \env{refsegment} environment are assigned to segment~0. In contrast to the \env{refsection} environment, the current segment is not selected automatically if \cmd{printbibliography} is used within a \env{refsegment} environment. +The difference between a \env{refsection} and a \env{refsegment} environment is that the former creates labels which are local to the environment whereas the latter provides a target for the \opt{segment} filter of \cmd{printbibliography} without affecting the labels. They will be unique across the entire document. \env{refsegment} environments may not be nested, but you may use them in conjunction with \env{refsection} to subdivide a reference section into segments. In this case, the segments are local to the enclosing \env{refsection} environment. Use the \env{refsegment} option of \cmd{printbibliography} to select a segment when printing the bibliography. Within a section, the reference segments are numbered starting at~\texttt{1} and the number of the current segment will be written to the transcript file. All citations given outside a \env{refsegment} environment are assigned to segment~0. In contrast to the \env{refsection} environment, the current segment is not selected automatically if \cmd{printbibliography} is used within a \env{refsegment} environment. \csitem{newrefsegment} @@ -3145,7 +3299,7 @@ In addition to the \bibtype{set} entry type, \sty{biblatex} also supports dynami \cmditem{defbibentryset}{key}{key1,key2,key3, \dots}|\BiberOnlyMark| -The \prm{key} is the entry key of the set, which is used like any other entry key when referring to the set. The \prm{key} must be unique and it must not conflict with any other entry key. The second argument is a comma"=separated list of the entry keys which make up the set. \cmd{defbibentryset} implies the equivalent of a \cmd{nocite} command, \ie all sets which are declared are also added to the bibliography. When declaring the same set more than once, only the first invocation of \cmd{defbibentryset} will define the set. Subsequent definitions of the same \prm{key} are ignored and work like \cmd{nocite}\prm{key}. Dynamic entry sets defined in the document body are local to the enclosing \env{refsection} environment, if any. Otherwise, they are assigned to reference section~0. Those defined in the preamble are assigned to reference section~0. Note that dynamic entry sets require Biber. They will not work with any other backend. See \secref{use:use:set} for further details. +The \prm{key} is the entry key of the set, which is used like any other entry key when referring to the set. The \prm{key} must be unique and it must not conflict with any other entry key. The second argument is a comma"=separated list of the entry keys which make up the set. \cmd{defbibentryset} implies the equivalent of a \cmd{nocite} command, \ie all sets which are declared are also added to the bibliography. When declaring the same set more than once, only the first invocation of \cmd{defbibentryset} will define the set. Subsequent definitions of the same \prm{key} are ignored and work like \cmd{nocite}\prm{key}. Dynamic entry sets defined in the document body are local to the enclosing \env{refsection} environment, if any. Otherwise, they are assigned to reference section~0. Those defined in the preamble are assigned to reference section~0. Note that dynamic entry sets require \biber. They will not work with any other backend. See \secref{use:use:set} for further details. \end{ltxsyntax} @@ -3325,12 +3479,14 @@ These commands print the authors. Strictly speaking, it prints the \bibfield{lab This command prints the title. It will use the abridged title in the \bibfield{shorttitle} field, if available. Otherwise it falls back to the full title found in the \bibfield{title} field. The starred variant always prints the full title. \cmditem{citeyear}[prenote][postnote]{key} +\cmditem*{citeyear*}[prenote][postnote]{key} -This command prints the year (\bibfield{year} field or year component of \bibfield{date}). +This command prints the year (\bibfield{year} field or year component of \bibfield{date}). The starred variant includes the \bibfield{extrayear} information, if any. \cmditem{citedate}[prenote][postnote]{key} +\cmditem*{citedate*}[prenote][postnote]{key} -This command prints the full date (\bibfield{date} or \bibfield{year}). +This command prints the full date (\bibfield{date} or \bibfield{year}). The starred variant includes the \bibfield{extrayear} information, if any. \cmditem{citeurl}[prenote][postnote]{key} @@ -3839,6 +3995,28 @@ Similar to \cmd{mkbibnamelast}, but intended for the name prefix. Similar to \cmd{mkbibnamelast}, but intended for the name affix. +\csitem{relatedpunct} + +The separator between the \bibfield{relatedtype} bibliography localization string and the data from the first related entry. Here is an example with \cmd{relatedpunct} set to a dash: + +\begin{lstlisting}[style=latex]{} +A. Smith. Title. 2000, (Orig. pub. as<<->>Origtitle) +\end{lstlisting} + +\csitem{relateddelim} + +The separator between the data of multiple related entries. The default definition is an optional dot plus linebreak. Here is an example where volumes A-E are related entries of the 5 volume main work: + +\begin{lstlisting}[style=latex]{} +Donald E. Knuth. Computers & Typesetting. 5 vols. Reading, Mass.: Addison- +Wesley, 1984-1986. +Vol. A: The TEXbook. 1984. +Vol. B: TEX: The Program. 1986. +Vol. C: The METAFONTbook. By. 1986. +Vol. D: METAFONT: The Program. 1986. +Vol. E: Computer Modern Typefaces. 1986. +\end{lstlisting} + \end{ltxsyntax} \subsubsection{Language-specific Commands} @@ -3852,6 +4030,10 @@ The commands in this section are language specific. When redefining them, you ne The language specific dash to be used for ranges of numbers. +\csitem{bibrangessep}\BiberOnlyMark + +The language specific separator to be used between multiple ranges. + \csitem{bibdatedash} The language specific dash to be used for date ranges. @@ -4063,7 +4245,7 @@ Similar to \cmd{forceE} but enforces <y>. \subsubsection{Greek} \label{use:loc:grk} -The Greek localization module requires \utf support. It will not work with any other encoding. Generally speaking, the \sty{biblatex} package is compatible with the \sty{inputenc} package and with \xelatex. The \sty{ucs} package will not work. Since \sty{inputenc}'s standard \file{utf8} module is missing glyph mappings for Greek, this leaves Greek users with \xelatex. Note that you may need to load additional packages which set up Greek fonts. As a rule of thumb, a setup which works for regular Greek documents should also work with \sty{biblatex}. However, there is one fundamental limitation. As of this writing, \sty{biblatex} has no support for switching scripts. Greek titles in the bibliography should work fine, provided that you use Biber as a backend, but English and other titles in the bibliography may be rendered in Greek letters. If you need multi-script bibliographies, using \xelatex is the only sensible choice. +The Greek localization module requires \utf support. It will not work with any other encoding. Generally speaking, the \sty{biblatex} package is compatible with the \sty{inputenc} package and with \xelatex. The \sty{ucs} package will not work. Since \sty{inputenc}'s standard \file{utf8} module is missing glyph mappings for Greek, this leaves Greek users with \xelatex. Note that you may need to load additional packages which set up Greek fonts. As a rule of thumb, a setup which works for regular Greek documents should also work with \sty{biblatex}. However, there is one fundamental limitation. As of this writing, \sty{biblatex} has no support for switching scripts. Greek titles in the bibliography should work fine, provided that you use \biber as a backend, but English and other titles in the bibliography may be rendered in Greek letters. If you need multi-script bibliographies, using \xelatex is the only sensible choice. \subsubsection{Russian} \label{use:loc:rus} @@ -4093,21 +4275,39 @@ Using the \sty{biblatex} package is slightly different from using traditional \b % With traditional \bibtex, the \cmd{bibliography} command serves two purposes. It marks the location of the bibliography and it also specifies the \file{bib} file(s). The file extension is omitted. With \sty{biblatex}, resources are specified in the preamble with \cmd{addbibresource} using the full name with \file{.bib} suffix. The bibliography is printed using the \cmd{printbibliography} command which may be used multiple times (see \secref{use:bib} for details). The document body may contain any number of citation commands (\secref{use:cit}). Processing this example file requires that a certain procedure be followed. Suppose our example file is called \path{example.tex} and our bibliographic data is in \path{bibfile.bib}. The procedure, then, is as follows: +\paragraph{\biber} + \begin{enumerate} -\item Run \bin{latex} on \path{example.tex}. If the file contains any citations, \sty{biblatex} will request the respective data from \bibtex by writing commands to the auxiliary file \path{example.aux}. +\item Run \bin{latex} on \path{example.tex}. If the file contains any citations, \sty{biblatex} will request the respective data from \biber by writing commands to the auxiliary file \path{example.bcf}. +\item Run \bin{biber} on \path{example.bcf}. \biber will retrieve the data from \path{bibfile.bib} and write it to the auxiliary file \path{example.bbl} in a format which can be processed by \sty{biblatex}. +\item Run \bin{latex} on \path{example.tex}. \sty{biblatex} will read the data from \path{example.bbl} and print all citations as well as the bibliography. -\item Run \bin{bibtex} on \path{example.aux}. \bibtex will retrieve the data from \path{bibfile.bib} and write it to the auxiliary file \path{example.bbl} in a format which can be processed by \sty{biblatex}. +\end{enumerate} + +\paragraph{\bibtex} + +\begin{enumerate} +\item Run \bin{latex} on \path{example.tex}. If the file contains any citations, \sty{biblatex} will request the respective data from \bibtex by writing commands to the auxiliary file \path{example.aux}. +\item Run \bin{bibtex} on \path{example.aux}. \bibtex will retrieve the data from \path{bibfile.bib} and write it to the auxiliary file \path{example.bbl} in a format which can be processed by \sty{biblatex}. \item Run \bin{latex} on \path{example.tex}. \sty{biblatex} will read the data from \path{example.bbl} and print all citations as well as the bibliography. \end{enumerate} -Whenever a reference to a work which has not been cited before is added, this procedure must be repeated. This is also the case if the last reference to a work which has been cited before is removed because some citation labels may change in this case. In contrast to traditional \bibtex, there is normally no need to run \bin{latex} twice after running \bin{bibtex} as far as the handling of bibliographic data is concerned.\footnote{That is, unless the \opt{defernumbers} package option is enabled. This option requires two \latex runs after the data has been exported to the \file{bbl} file by \bibtex.} Note that this only applies to the most basic case. Using the \bibfield{xref} field or the \bibfield{entryset} field may require an additional \latex/\bibtex/\latex cycle. Some other facilities provided by \sty{biblatex} may also require an additional \bin{latex} run to get certain references and the page tracking right. In this case, the usual warning messages such as There were undefined references and Label(s) may have changed. Rerun to get cross-references right will be printed. When using Biber as a backend, the workflow is essentially the same. +Whenever a reference to a work which has not been cited before is added, this procedure must be repeated. This is also the case if the last reference to a work which has been cited before is removed because some citation labels may change in this case. In contrast to traditional \bibtex, there is normally no need to run \bin{latex} twice after running the backend as far as the handling of bibliographic data is concerned.\footnote{That is, unless the \opt{defernumbers} package option is enabled. This option requires two \latex runs after the data has been exported to the \file{bbl} file by \bibtex.} + +\BibTeXOnlyMark Note that when using \bibtex as the backend this only applies to the most basic case. Using the \bibfield{xref} field or the \bibfield{entryset} field may require an additional \latex/\bibtex/\latex cycle. Some other facilities provided by \sty{biblatex} may also require an additional \bin{latex} run to get certain references and the page tracking right. In this case, the usual warning messages such as There were undefined references and Label(s) may have changed. Rerun to get cross-references right will be printed. \subsubsection{Auxiliary Files} \label{use:use:aux} +\paragraph{\biber} + +The \sty{biblatex} package uses one auxilliary \file{bcf} file only. Even if there are citation commands in a file included via \cmd{include}, you only need to run \biber on the main \file{bcf} file. All information \biber needs is in the \file{bcf} file, including information about all refsections if using mutiple \env{refsection} environments (see \secref{use:use:mlt}). + +\paragraph{\bibtex} + By default, the \sty{biblatex} package uses the main \file{aux} file only. Even if there are citation commands in a file included via \cmd{include}, which has its own \file{aux} file, you only need to run \bibtex on the main \file{aux} file. If you are using \env{refsection} environments in a document (see \secref{use:use:mlt}) \sty{biblatex} will create one additional \file{aux} file for every \env{refsection} environment. In this case, you also need to run \bin{bibtex} on each additional \file{aux} file. The name of the additional \file{aux} files is the base name of the main input file with the string \file{-blx} and a running number appended at the end. The \sty{biblatex} package issues a warning listing the files which require an additional \bibtex run. With the basic example presented in \secref{use:use:int}, it would issue the following warning: \begin{lstlisting}[style=plain] @@ -4126,14 +4326,16 @@ Package biblatex Warning: Please (re)run BibTeX on the file(s): (biblatex) and rerun LaTeX afterwards. \end{lstlisting} % -Apart from these \file{aux} files, \sty{biblatex} uses an additional \file{bib} file with the same suffix to pass certain control parameters to \bibtex. In the example above, this file would be named \path{example-blx.bib}. In the event of a file name conflict, you can change the suffix by redefining the macro \cmd{blxauxsuffix} in the document preamble. When using Biber, \sty{biblatex} writes a control file named \path{example.bcf} and ignores \cmd{blxauxsuffix}. There is also no auxiliary \file{bib} file in this case. +Apart from these \file{aux} files, \sty{biblatex} uses an additional \file{bib} file with the same suffix to pass certain control parameters to \bibtex. In the example above, this file would be named \path{example-blx.bib}. In the event of a file name conflict, you can change the suffix by redefining the macro \cmd{blxauxsuffix} in the document preamble. When using \biber, \sty{biblatex} writes a control file named \path{example.bcf} and ignores \cmd{blxauxsuffix}. There is also no auxiliary \file{bib} file in this case. Note that \sty{biblatex} will not overwrite any files it did not create. All auxiliary files created automatically by this package start with a special signature line. Before overwriting a file (excluding the main \file{aux} file, which is managed by \latex), \sty{biblatex} inspects the first line of the file to make sure that there is no file name conflict. If the file in question is missing the signature line, \sty{biblatex} will immediately issue an error message and abort before opening the output stream. In this case you should delete any spurious files accidentally left in the working directory. If the error persists, there may be a file name conflict with a file found in one of the \tex installation trees. Since the installation trees usually do not contain any \file{aux} files and the string \file{-blx} is fairly exotic in the name of a \file{bib} file, this is rather unlikely but theoretically possible. If you find out that this is indeed the case, you should redefine \cmd{blxauxsuffix} permanently in the \sty{biblatex} configuration file, \path{biblatex.cfg.} \subsubsection{Multiple Bibliographies} \label{use:use:mlt} -In a collection of articles by different authors, such as a conference proceedings volume for example, it is very common to have one bibliography for each article rather than a global one for the entire book. In the example below, each article would be presented as a separate \cmd{chapter} with its own bibliography. Note that \sty{biblatex} creates one additional \file{aux} file for every \env{refsection} environment. These files have to be processed by \bibtex as well, see \secref{use:use:aux} for details. +In a collection of articles by different authors, such as a conference proceedings volume for example, it is very common to have one bibliography for each article rather than a global one for the entire book. In the example below, each article would be presented as a separate \cmd{chapter} with its own bibliography. + +\BibTeXOnlyMark Note that with the \bibtex backend, \sty{biblatex} creates one additional \file{aux} file for every \env{refsection} environment. These files have to be processed by \bibtex as well, see \secref{use:use:aux} for details. \begin{ltxexample} \documentclass{...} @@ -4191,7 +4393,7 @@ Since giving one \cmd{printbibliography} command for each part of a subdivided b <<\bibbysection[heading=subbibliography]>> \end{lstlisting} % -When using a format with one cumulative bibliography subdivided by chapter (or any other document division) it may be more appropriate to use \env{refsegment} rather than \env{refsection} environments. The difference is that the \env{refsection} environment generates labels local to the environment while \env{refsegment} does not affect the generation of labels, hence they will be unique across the entire document. Note that \env{refsegment} environments do not require additional \file{aux} files. The next example could also be given in \secref{use:use:div} because, visually, it creates one global bibliography subdivided into multiple segments. +When using a format with one cumulative bibliography subdivided by chapter (or any other document division) it may be more appropriate to use \env{refsegment} rather than \env{refsection} environments. The difference is that the \env{refsection} environment generates labels local to the environment while \env{refsegment} does not affect the generation of labels, hence they will be unique across the entire document. Note that when using \bibtex as the backend, \env{refsegment} environments do not require additional \file{aux} files. The next example could also be given in \secref{use:use:div} because, visually, it creates one global bibliography subdivided into multiple segments. \begin{ltxexample} \documentclass{...} @@ -4221,7 +4423,7 @@ The use of \env{refsegment} is similar to \env{refsection} and there is also a c <<\bibbysegment[heading=subbibliography]>> \end{lstlisting} % -This is equivalent to giving one \cmd{printbibliography} command for every segment. +This is equivalent to giving one \cmd{printbibliography} command for every segment in the current \env{refsection}. \subsubsection{Subdivided Bibliographies} \label{use:use:div} @@ -4343,7 +4545,7 @@ An entry set is a group of entries which are cited as a single reference and lis \paragraph{Static entry sets} -\BiberOnlyMark Static entry sets are defined in the \file{bib} file like any other entry. When using Biber as the backend, defining an entry set is as simple as adding an entry of type \bibtype{set}. The entry has an \bibfield{entryset} field defining the members of the set as a comma"=separated list of entry keys: +\BiberOnlyMark Static entry sets are defined in the \file{bib} file like any other entry. When using \biber as the backend, defining an entry set is as simple as adding an entry of type \bibtype{set}. The entry has an \bibfield{entryset} field defining the members of the set as a comma"=separated list of entry keys: \begin{lstlisting}[style=bibtex]{} <<@Set>>{<<set1>>, @@ -4353,7 +4555,7 @@ An entry set is a group of entries which are cited as a single reference and lis % Entries may be part of a set in one document\slash refsection and stand-alone references in another one, depending on the presence of the \bibtype{set} entry. If the \bibtype{set} entry is cited, the set members are grouped automatically. If not, they will work like any regular entry. -When using \bibtex, which has no native support for entry sets, setting up entry sets involves more work. \bibtex requires \bibfield{entryset} and \bibfield{crossref} fields to be used in a special way. The members of the set are given in the \bibfield{entryset} field of the \bibtype{set} entry. The \bibtype{set} entry also requires a \bibfield{crossref} field which points to the first key in the \bibfield{entryset} field. In addition to that, all members of the set require \bibfield{entryset} fields which are reverse pointers to the entry key of the \bibtype{set} head entry: +When using \bibtex as the backend, which has no native support for entry sets, setting up entry sets involves more work. \bibtex requires \bibfield{entryset} and \bibfield{crossref} fields to be used in a special way. The members of the set are given in the \bibfield{entryset} field of the \bibtype{set} entry. The \bibtype{set} entry also requires a \bibfield{crossref} field which points to the first key in the \bibfield{entryset} field. In addition to that, all members of the set require \bibfield{entryset} fields which are reverse pointers to the entry key of the \bibtype{set} head entry: \begin{lstlisting}[style=bibtex]{} @Set{set1, @@ -4390,7 +4592,7 @@ Dynamic entry sets are set up and work much like static ones. The main differenc \defbibentryset{set1}{key1,key2,key3} \end{lstlisting} % -Dynamic entry sets in the document body are local to the enclosing \env{refsection} environment, if any. Otherwise, they are assigned to reference section~0. Those defined in the preamble are assigned to reference section~0. Note that dynamic entry sets require Biber. They will not work with any other backend. +Dynamic entry sets in the document body are local to the enclosing \env{refsection} environment, if any. Otherwise, they are assigned to reference section~0. Those defined in the preamble are assigned to reference section~0. Note that dynamic entry sets require \biber. They will not work with any other backend. \subsubsection[Data Containers]{Data Containers\BiberOnlyMark} \label{use:use:xdat} @@ -4638,7 +4840,7 @@ The \prm{postnote} argument is handled as a field and the formatting of this fie \subsubsection{Name Parts and Name Spacing} \label{use:cav:nam} -The \sty{biblatex} package gives users and style authors very fine"=grained control of name spacing and the line"=breaking behavior of names, especially when they are using Biber as the backend. The commands discussed in the following are documented in \secref{use:fmt:fmt,aut:fmt:fmt}. This section is meant to give an overview of how they are put together. A note on terminology: a name \emph{part} is a basic part of the name, for example the first or the last name. Each part of a name may be a single name or it may be composed of multiple names. For example, the name part \enquote*{first name} may be composed of a first and a middle name. The latter are referred to as name \emph{elements} in this section. Let's consider a simple name first: \enquote{John Edward Doe}. This name is composed of the following parts: +The \sty{biblatex} package gives users and style authors very fine"=grained control of name spacing and the line"=breaking behavior of names, especially when they are using \biber as the backend. The commands discussed in the following are documented in \secref{use:fmt:fmt,aut:fmt:fmt}. This section is meant to give an overview of how they are put together. A note on terminology: a name \emph{part} is a basic part of the name, for example the first or the last name. Each part of a name may be a single name or it may be composed of multiple names. For example, the name part \enquote*{first name} may be composed of a first and a middle name. The latter are referred to as name \emph{elements} in this section. Let's consider a simple name first: \enquote{John Edward Doe}. This name is composed of the following parts: \begin{nameparts} First & John Edward \\ @@ -4733,7 +4935,7 @@ This part of the manual documents the author interface of the \sty{biblatex} pac \subsection{Overview} \label{aut:int} -Before we get to the commands and facilities provided by \sty{biblatex}, we will have a look at some of its fundamental concepts. The \sty{biblatex} package interacts with \bibtex in a way that is somewhat different from the traditional way of doing things. Most notably, the \file{bbl} file is used differently and there is only one \file{bst} file which implements a structured data interface rather than exporting printable data. With \latex's standard bibliographic facilities, a document includes any number of citation commands in the document body plus \cmd{bibliographystyle} and \cmd{bibliography}, usually towards the end of the document. The location of the former is arbitrary, the latter marks the spot where the list of references is to be printed: +Before we get to the commands and facilities provided by \sty{biblatex}, we will have a look at some of its fundamental concepts. The \sty{biblatex} package uses auxilliary files in a specia way. Most notably, the \file{bbl} file is used differently and when using \bibtex as the backend, there is only one \file{bst} file which implements a structured data interface rather than exporting printable data. With \latex's standard bibliographic facilities, a document includes any number of citation commands in the document body plus \cmd{bibliographystyle} and \cmd{bibliography}, usually towards the end of the document. The location of the former is arbitrary, the latter marks the spot where the list of references is to be printed: \begin{ltxexample} \documentclass{...} @@ -4824,11 +5026,11 @@ In order to streamline the whole procedure, \sty{biblatex} essentially employs t \begin{enumerate} -\item Run \bin{latex}: The first step is similar to the traditional procedure described above: \cmd{bibstyle} and \cmd{bibdata} commands are written to the \file{aux} file, along with \cmd{citation} commands for all citations. We then wait for \bibtex to supply the required data. Since \sty{biblatex} uses a special \file{bst} file which implements its data interface on the \bibtex end, the \cmd{bibstyle} command is always |\bibstyle{biblatex}|. +\item Run \bin{latex}: The first step is similar to the traditional procedure described above: \cmd{bibstyle} and \cmd{bibdata} commands are written to the \file{aux} file (\bibtex backend) or \file{bcf} file (\biber backend), along with \cmd{citation} commands for all citations. We then wait for the backend to supply the required data. With \bibtex as a backend, since \sty{biblatex} uses a special \file{bst} file which implements its data interface on the \bibtex end, the \cmd{bibstyle} command is always |\bibstyle{biblatex}|. -\item Run \bin{bibtex}: \bibtex supplies those entries from the \file{bib} file which were requested by the \cmd{citation} commands in the \file{aux} file. However, it does not write a printable bibliography to the \file{bbl} file, but rather a structured representation of the bibliographic data. Just like an \file{aux} file, this \file{bbl} file does not print anything when read in. It merely puts data in memory. +\item Run \bin{biber} or \bin{bibtex}: The backend supplies those entries from the \file{bib} file which were requested by the \cmd{citation} commands in the auxilliary file. However, it does not write a printable bibliography to the \file{bbl} file, but rather a structured representation of the bibliographic data. Just like an \file{aux} file, this \file{bbl} file does not print anything when read in. It merely puts data in memory. -\item Run \bin{latex}: Starting with the second run, the \file{bbl} file is processed right at the beginning of the document body, just like an \file{aux} file. From this point on, all bibliographic data is available in memory so that all citations can be printed right away.\footnote{If the \opt{defernumbers} package option is enabled \sty{biblatex} uses an alogrithm similar to the traditional procedure to generate numeric lables. In this case, the numbers are assigned as the bibliography is printed and then cycled through the \file{aux} file. It will take an additional \latex run for them to be picked up in citations.} The citation commands have access to the complete bibliographic data, not only to a predefined label. The bibliography is generated from memory using the same data and may be filtered or split as required. +\item Run \bin{latex}: Starting with the second run, the \file{bbl} file is processed right at the beginning of the document body, just like an \file{aux} file. From this point on, all bibliographic data is available in memory so that all citations can be printed right away.\footnote{If the \opt{defernumbers} package option is enabled \sty{biblatex} uses an alogrithm similar to the traditional procedure to generate numeric lables. In this case, the numbers are assigned as the bibliography is printed and then cycled through the backend auzilliary file. It will take an additional \latex run for them to be picked up in citations.} The citation commands have access to the complete bibliographic data, not only to a predefined label. The bibliography is generated from memory using the same data and may be filtered or split as required. \end{enumerate} @@ -4844,14 +5046,19 @@ Let's consider the sample entry given above once more: } \end{lstlisting} % -With \sty{biblatex}, this entry is essentially exported in the following format: +With \sty{biblatex} and the \biber backend, this entry is essentially exported in the following format: \begin{lstlisting}[style=latex]{} \entry{companion}{book}{} - \name{author}{3}{% - {{Goossens}{G.}{Michel}{M.}{}{}{}{}}% - {{Mittelbach}{M.}{Frank}{F.}{}{}{}{}}% - {{Samarin}{S.}{Alexander}{A.}{}{}{}{}}% + \labelname{author}{3}{}{% + {{uniquename=0,hash=...}{Goossens}{G.}{Michel}{M.}{}{}{}{}}% + {{uniquename=0,hash=...}{Mittelbach}{M.}{Frank}{F.}{}{}{}{}}% + {{uniquename=0,hash=...}{Samarin}{S.}{Alexander}{A.}{}{}{}{}}% + } + \name{author}{3}{}{% + {{uniquename=0,hash=...}{Goossens}{G.}{Michel}{M.}{}{}{}{}}% + {{uniquename=0,hash=...}{Mittelbach}{M.}{Frank}{F.}{}{}{}{}}% + {{uniquename=0,hash=...}{Samarin}{S.}{Alexander}{A.}{}{}{}{}}% } \list{publisher}{1}{% {Addison-Wesley}% @@ -4988,7 +5195,7 @@ The list of shorthands is handled in a similar way. \cmd{printshorthands} uses t \subsubsection{Bibliography Drivers} \label{aut:bbx:drv} -Before we go over the commands which form the data interface of the \sty{biblatex} package, it may be instructive to have a look at the structure of a bibliography driver. Note that the example given below is greatly simplified, but still functional. For the sake of readability, we omit several fields which may be part of a \bibtype{book} entry and also simplify the handling of those which are considered. The main point is to give you an idea of how a driver is structured. For information about the mapping of \bibtex's fields to \sty{biblatex}'s data types, see \secref{bib:fld}. +Before we go over the commands which form the data interface of the \sty{biblatex} package, it may be instructive to have a look at the structure of a bibliography driver. Note that the example given below is greatly simplified, but still functional. For the sake of readability, we omit several fields which may be part of a \bibtype{book} entry and also simplify the handling of those which are considered. The main point is to give you an idea of how a driver is structured. For information about the mapping of the \bibtex file format fields to \sty{biblatex}'s data types, see \secref{bib:fld}. \begin{lstlisting}[style=latex]{} \DeclareBibliographyDriver{book}{% @@ -5048,7 +5255,7 @@ The following lists and fields are used by \sty{biblatex} to pass data to biblio \fielditem{entrykey}{string} -The entry key of an item in the \file{bib} file. This is the string used by \sty{biblatex} and \bibtex to identify an entry in the \file{bib} file. +The entry key of an item in the \file{bib} file. This is the string used by \sty{biblatex} and the backend to identify an entry in the \file{bib} file. \fielditem{childentrykey}{string} @@ -5095,16 +5302,16 @@ This field holds the initial letter of the string used during sorting. This is u \fielditem{labelalpha}{literal} -A label similar to the labels generated by the \path{alpha.bst} style of traditional \bibtex. This label consists of initials drawn from the \bibfield{labelname} list plus the last two digits of the publication year. The \bibfield{label} field may be used to override its non"=numeric portion. If the \bibfield{label} field is defined, \sty{biblatex} will use its value and append the last two digits of the publication year when generating \bibfield{labelalpha}. The \bibfield{shorthand} field may be used to override the entire label. If defined, \bibfield{labelalpha} is the \bibfield{shorthand} rather than an automatically generated label. A complete <alphabetic> label consists of the fields \bibfield{labelalpha} plus \bibfield{extraalpha}. Note that the \bibfield{labelalpha} and \bibfield{extraalpha} fields need to be requested with the package option \opt{labelalpha} (\secref{use:opt:pre:int}). See also \bibfield{extraalpha} as well as \cmd{labelalphaothers} in \secref{use:fmt:fmt}. +When using \bibtex as the backend, a label similar to the labels generated by the \path{alpha.bst} style of traditional \bibtex. This default label consists of initials drawn from the \bibfield{labelname} list plus the last two digits of the publication year. The \bibfield{label} field may be used to override its non"=numeric portion. If the \bibfield{label} field is defined, \sty{biblatex} will use its value and append the last two digits of the publication year when generating \bibfield{labelalpha}. The \bibfield{shorthand} field may be used to override the entire label. If defined, \bibfield{labelalpha} is the \bibfield{shorthand} rather than an automatically generated label. \BiberOnlyMark With \biber, users can specify a template used to construct the alphabetic label (see \secref{aut:ctm:lab}) and the default template mirrors the format mentioned for bibtex above. A complete <alphabetic> label consists of the fields \bibfield{labelalpha} plus \bibfield{extraalpha}. Note that the \bibfield{labelalpha} and \bibfield{extraalpha} fields need to be requested with the package option \opt{labelalpha} (\secref{use:opt:pre:int}). See also \bibfield{extraalpha} as well as \cmd{labelalphaothers} in \secref{use:fmt:fmt}. \fielditem{extraalpha}{integer} -The <alphabetic> citation scheme usually requires a letter to be appended to the label if the bibliography contains two or more works by the same author which were all published in the same year. In this case, the \bibfield{extraalpha} field holds an integer which may be converted to a letter with \cmd{mknumalph} or formatted in some other way. This field is similar to the role of \bibfield{extrayear} in the author"=year scheme. A complete <alphabetic> label consists of the fields \bibfield{labelalpha} plus \bibfield{extraalpha}. Note that the \bibfield{labelalpha} and \bibfield{extraalpha} fields need to be requested with the package option \opt{labelalpha}, see \secref{use:opt:pre:int} for details. See also \bibfield{labelalpha} as well as \cmd{labelalphaothers} in \secref{use:fmt:fmt}. +The <alphabetic> citation scheme usually requires a letter to be appended to the label if the bibliography contains two or more works by the same author which were all published in the same year. In this case, the \bibfield{extraalpha} field holds an integer which may be converted to a letter with \cmd{mknumalph} or formatted in some other way. This field is similar to the role of \bibfield{extrayear} in the author"=year scheme. A complete <alphabetic> label consists of the fields \bibfield{labelalpha} plus \bibfield{extraalpha}. Note that the \bibfield{labelalpha} and \bibfield{extraalpha} fields need to be requested with the package option \opt{labelalpha}, see \secref{use:opt:pre:int} for details. See also \bibfield{labelalpha} as well as \cmd{labelalphaothers} in \secref{use:fmt:fmt}. Table \ref{use:opt:tab2} summarises the various \opt{extra*} disambiguation counters and what they track. \listitem{labelname}{name} The name to be printed in citations. This list is a copy of either the \bibfield{shortauthor}, the \bibfield{author}, the \bibfield{shorteditor}, the \bibfield{editor}, or the \bibfield{translator} list, which are normally checked for in this order. If no authors and editors are available, this list is undefined. Note that this list is also responsive to the \opt{useauthor}, \opt{useeditor}, and \opt{usetranslator} options, see \secref{use:opt:bib}. Citation styles should use this list when printing the name in a citation. This list is provided for convenience only and does not carry any additional meaning. -\BiberOnlyMark With Biber, this field may be customized. See \secref{aut:ctm:fld} for details. +\BiberOnlyMark With \biber, this field may be customized. See \secref{aut:ctm:fld} for details. \fielditem{labelnumber}{literal} @@ -5116,16 +5323,24 @@ If the \opt{prefixnumbers} option of \cmd{printbibliography} has been set in ord \fielditem{labeltitle}{literal} -The title to be printed in citations. If a short title is available, \bibfield{labeltitle} is a copy of the \bibfield{shorttitle} field, otherwise \sty{biblatex} falls back to the \bibfield{title} field. Citation styles printing short titles may simply make use of this field instead of checking whether a \bibfield{shorttitle} field is available every time they print a title. This field is provided for convenience only and does not carry any additional meaning. +The printable title of a work. In some circumstances, a style might need to choose a title from a list of a possible title fields. For example, citation styles printing short titles may want to print the \bibfield{shorttitle} field if it exists but otherwise print the \bibfield{title} field. \BiberOnlyMark The list of fields to be considered when constructing \bibfield{labeltitle} may be customized. See \secref{aut:ctm:fld} for details. Note that the \bibfield{extratitle} field needs to be requested with the package option \opt{labeltitle}, see \secref{use:opt:pre:int} for details. See also \bibfield{extratitle}. Note also that the \bibfield{extratitleyear} field needs to be requested with the package option \opt{labeltitleyear}. See also \bibfield{extratitleyear}. + +\fielditem{extratitle}{integer} + +It is sometimes useful, for example in author"=title citation schemes, to be able to disambiguate works with the same title. For works by the same \bibfield{labelname} with the same \bibfield{labeltitle}, the \bibfield{extratitle} field holds an integer which may be converted to a letter with \cmd{mknumalph} or formatted in some other way (or it can be merely used as a flag to say that some other field such as a date should be used in conjunction with the \bibfield{labeltitle} field). This field is undefined if there is only one work with the same \bibfield{labeltitle} by the same \bibfield{labelname} in the bibliography. Note that the \bibfield{extratitle} field needs to be requested with the package option \opt{labeltitle}, see \secref{use:opt:pre:int} for details. See also \bibfield{labeltitle}. Table \ref{use:opt:tab2} summarises the various \opt{extra*} disambiguation counters and what they track. + +\fielditem{extratitleyear}{integer} + +It is sometimes useful, for example in author"=title citation schemes, to be able to disambiguate works with the same title in the same year but with no author. For works with the same \bibfield{labeltitle} and with the same \bibfield{labelyear}, the \bibfield{extratitleyear} field holds an integer which may be converted to a letter with \cmd{mknumalph} or formatted in some other way (or it can be merely used as a flag to say that some other field such as a publisher should be used in conjunction with the \bibfield{labelyear} field). This field is undefined if there is only one work with the same \bibfield{labeltitle} and \bibfield{labelyear} in the bibliography. Note that the \bibfield{extratitleyear} field needs to be requested with the package option \opt{labeltitleyear}, see \secref{use:opt:pre:int} for details. See also \bibfield{labeltitleyear}. Table \ref{use:opt:tab2} summarises the various \opt{extra*} disambiguation counters and what they track. \fielditem{labelyear}{literal} The publication year, as specified in the \bibfield{date} or the \bibfield{year} field, for use in author-year labels. A complete author-year label consists of the fields \bibfield{labelyear} plus \bibfield{extrayear}. Note that the \bibfield{labelyear} and \bibfield{extrayear} fields need to be requested with the package option \opt{labelyear}, see \secref{use:opt:pre:int} for details. See also \bibfield{extrayear}. -\BiberOnlyMark With Biber, this field may be customized. See \secref{aut:ctm:fld} for details. +\BiberOnlyMark With \biber, this field may be customized. See \secref{aut:ctm:fld} for details. \fielditem{extrayear}{integer} -The author"=year citation scheme usually requires a letter to be appended to the year if the bibliography contains two or more works by the same author which were all published in the same year. In this case, the \bibfield{extrayear} field holds an integer which may be converted to a letter with \cmd{mknumalph} or formatted in some other way. This field is undefined if there is only one work by the author in the bibliography or if all works by the author have different publication years. A complete author-year label consists of the fields \bibfield{labelyear} plus \bibfield{extrayear}. Note that the \bibfield{labelyear} and \bibfield{extrayear} fields need to be requested with the package option \opt{labelyear}, see \secref{use:opt:pre:int} for details. See also \bibfield{labelyear}. +The author"=year citation scheme usually requires a letter to be appended to the year if the bibliography contains two or more works by the same author which were all published in the same year. In this case, the \bibfield{extrayear} field holds an integer which may be converted to a letter with \cmd{mknumalph} or formatted in some other way. This field is undefined if there is only one work by the author in the bibliography or if all works by the author have different publication years. A complete author-year label consists of the fields \bibfield{labelyear} plus \bibfield{extrayear}. Note that the \bibfield{labelyear} and \bibfield{extrayear} fields need to be requested with the package option \opt{labelyear}, see \secref{use:opt:pre:int} for details. See also \bibfield{labelyear}. Table \ref{use:opt:tab2} summarises the various \opt{extra*} disambiguation counters and what they track. \end{fieldlist} @@ -5503,10 +5718,10 @@ Defines the name list format \prm{format}. This formatting directive is arbitrar \item[\#2] The last names, given as initials. \item[\#3] The first names. This argument also includes all middle names. \item[\#4] The first names, given as initials. -\item[\#5] The name prefixes, for example von, van, of, da, de, del, della, etc. Note that name prefixes are referred to as the <von part> of the name in the \bibtex documentation. +\item[\#5] The name prefixes, for example von, van, of, da, de, del, della, etc. Note that name prefixes are referred to as the <von part> of the name in the \bibtex file format documentation. \item[\#6] The name prefixes, given as initials. \item[\#7] The name affixes, for example <junior>, <senior>, <der Jngere>, <der ltere>, etc. -Note that name affixes are referred to as the <junior part> of the name in the \bibtex documentation. +Note that name affixes are referred to as the <junior part> of the name in the \bibtex file format documentation. \item[\#8] The name affixes, given as initials. \end{argumentlist} % @@ -5556,10 +5771,794 @@ Declares \prm{alias} to be an alias for the name list format \prm{format}. If an \subsection{Customization} \label{aut:ctm} +\subsubsection{Related Entries} +\label{aut:ctm:rel} +The related entries feature comprises the following components: +\begin{itemize} +\item Special fields in an entry to set up and describe relationships +\item Optionally, localization strings to prefix the related data +\item Macros to extract and print the related data +\item Formats to format the localization string and related data +\end{itemize} +% +The special fields are \bibfield{related}, \bibfield{relatedtype} and \bibfield{relatedstring}: +\begin{keymarglist} +\item[related] A comma"=separated list of keys of entries which are related to this entry in some way. Note the the order of the keys is important. The data from multiple related entries is printed in the order of the keys listed in this field. +\item[relatedtype] The type of relationship. This serves three purposes. If the value of this field resolves to a localization string identifier, then the resulting localized string is printed before the data from the related entries. Secondly, if there is a macro called \texttt{related:\prm{relatedtype}}, this is used to format the data from the related entries. If no such macro exists, then the macro \texttt{related:default} is used. Lastly, if there is a format named \texttt{related:\prm{relatedtype}}, then it is used to format both the localized string and related entry data. If there is no related type specific format, the \texttt{related} format is used. +\item[relatedstring] If an entry contains this field, then if value of the field resolves to a localization string identifier, the localization key value specified is printed before data from the related entries. If the field does not specify a localization key, its value is printed literally. If both \bibfield{relatedtype} and \bibfield{relatedstring} are present in an entry, \bibfield{relatedstring} is used for the pre-data string (but \bibfield{relatedtype} is still used to determine the macro and format to use when printing the data). +\end{keymarglist} + +The related entry feature is enabled by default by the package option \opt{related} from \secref{use:opt:pre:gen}. The related information entry data from the related entries is included via a \cmd{usebibmacro\{related\}} call. Standard styles call this macro towards the end of each driver. Style authors should ensure the existence of (or take note of existing) localization strings which are useful as values for the \bibfield{relatedtype} field, such as \texttt{translationof} or perhaps \texttt{translatedas}. They can then define macros and/or formats with the name \texttt{related:\prm{relatedtype}} which will be used to format the data. The file \path{biblatex.def} contains macros and formats for some common relation types which can be used as templates. In particular, the \cmd{entrydata*} command is essential in such macros in order to make the data of the related entries available. Examples of entries using this feature can be found in the \sty{biblatex} distribution examples file \path{biblatex-examples.bib}. There are some specific formatting macros for this feature which control delimiters and separators in related entry information, see \secref{aut:fmt:fmt}. + +\subsubsection{Dynamic Modification of Data} +\label{aut:ctm:map} + +Bibliographic data sources which are automatically generated or which you have no control over can be a problem if you need to edit them in some way. For this reason, \biber has ability to modify data as it is read so that you can apply modifications to the source data stream without actually changing it. The modification can be defined in \biber's config file (see \biber docs), or via \sty{biblatex} macros in which case you can apply the modification only for specific documents. + +\begin{ltxsyntax} + +\cmditem{DeclareSourcemap}{specification}|\BiberOnlyMark| + +Defines source data modification (mapping) rules which can be used to perform any combination of the following tasks: + +\begin{itemize} +\item Map data source entrytypes to different entrytypes +\item Map datasource fields to different fields +\item Add new fields to an entry +\item Remove fields from an entry +\item Modify the contents of a field using standard Perl regular expression + match and replace +\item Restrict any of the above operations to entries coming from + particular datasources which you defined in \cmd{addresource} macros +\item Restrict any of the above operations to entries only of a certain + entrytype +\end{itemize} + +The \prm{specification} is an undelimited list of \cmd{maps} directives which specify containers for mappings rules applying to a particular data source type (\ref{use:bib:res}). Spaces, tabs, and line endings may be used freely to visually arrange the \prm{specification}. Blank lines are not permissible. This command may only be used in the preamble. + +\cmditem{maps}{elements} + +Contains an ordered set of \cmd{map} elements each of which is a logically related set of mapping steps to apply to the data source. + +\begin{optionlist*} + +\choitem{datatype}{bibtex, biblatexml, ris, zoterordfxml, endnotexml} + +Data source type which the contained \cmd{map} directives apply to (\ref{use:bib:res}). + +\boolitem[false]{overwrite} + +Specify whether a mapping rule is allowed to overwrite already existing data in an entry. If this option is not specified, the default is \texttt{false}. The short form \opt{overwrite} is equivalent to \kvopt{overwrite}{true}. + +\end{optionlist*} + +\cmditem{map}{restrictions,steps} + +A container for an ordered set of map \cmd{step}s, optionally restricted to particular entrytypes or data sources. This is a grouping element to allow a set of mapping steps to apply only to specific entrytypes or data sources. Mapping steps must always be contained within a \cmd{map} element. + +\begin{optionlist*} + +\boolitem{overwrite} + +As the same option on the parent \cmd{maps} element. This option allows an override on a per-map group basis. If this option is not specified, the default is the parent \cmd{maps} element option value. The short form \opt{overwrite} is equivalent to \kvopt{overwrite}{true}. + +\end{optionlist*} + +\cmditem{perdatasource}{datasource} + +Restricts all \cmd{step}s in this \cmd{map} element to entries from the named \prm{datasource}. The \prm{datasource} name should be exactly as given in a \cmd{addresource} macro defining a data source for the document. Multiple \cmd{perdatasource} restrictions are allowed within a \cmd{map} element. + +\cmditem{pertype}{entrytype} + +Restricts all \cmd{step}s in this \cmd{map} element to entries of the named \prm{entrytype}. Multiple \cmd{pertype} restrictions are allowed within a \cmd{map} element. + +\cmditem{step} + +A mapping step. Each step is applied sequentially to every relevant entry where <relevant> means those entries which correspond to the data source type, entrytype and data source name restrictions mentioned above. Each step is applied to the entry as it appears after the application of all previous steps. The mapping performed by the step is determined by the following options: + +\begin{optionlist*} + +\valitem{typesource}{entrytype} +\valitem{typetarget}{entrytype} +\valitem{fieldsource}{entryfield} +\valitem{fieldtarget}{entryfield} +\valitem{match}{regexp} +\valitem{replace}{regexp} +\valitem{fieldset}{entryfield} +\valitem{fieldvalue}{string} +\boolitem[false]{final} +\boolitem[false]{null} +\boolitem[false]{origfield} +\boolitem[false]{origfieldval} +\boolitem[false]{origentrytype} +% +For all boolean \cmd{step} options, the short form \opt{option} is equivalent to \kvopt{option}{true}. The following rules for a mapping step apply: + +\renewcommand{\labelitemii}{$\circ$} + +\begin{itemize} +\item Change the \texttt{typesource} \prm{entrytype} to the + \texttt{typetarget} \prm{entrytype}, if defined. If + \texttt{final} is \texttt{true} then if the \prm{entrytype} of the entry is not \texttt{typesource}, processing of the parent \cmd{map} immediately terminates. +\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{match} is defined but + \texttt{replace} is not, only apply the step if the \texttt{fieldsource} \prm{entryfield} matches the + \texttt{match} regular expression\footnote{Regular expressions are full Perl 5.14 regular expressions. This means you may need to deal with special characters, see examples.} +\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 one and only one of the following other options is then mandatory: + \begin{itemize} + \item\ \texttt{fieldvalue} --- The \texttt{fieldset} \prm{entryfield} is set to the \texttt{fieldvalue} \prm{string} + \item\ \texttt{null} --- The \texttt{fieldset} \prm{entryfield} is ignored, as if it did not exist in the datasource + \item\ \texttt{origentrytype} --- The \texttt{fieldset} \prm{entryfield} is set to the most recently mentioned \texttt{typesource} \prm{entrytype} name + \item\ \texttt{origfield} --- The \texttt{fieldset} \prm{entryfield} is set to the most recently mentioned \texttt{fieldsource} \prm{entryfield} name + \item\ \texttt{origfieldval} --- The \texttt{fieldset} \prm{entryfield} is set to the most recently mentioned \texttt{fieldsource} value + \end{itemize} +\end{itemize} + +\end{optionlist*} + +\end{ltxsyntax} + +\begin{ltxsyntax} + +\cmditem{DeclareDefaultSourcemap}[datatype=driver]{specification}|\BiberOnlyMark| + +This command sets the driver default source mappings for the specified \prm{driver}. Such mappings are conceptually separate from user mappings defined with \cmd{DeclareSourcemap} and consist of mappings which are part of the driver setup. Users should not normally need to change these. User mappings defined with \cmd{DeclareSourcemap} are applied before the driver defaults. These defaults are described in Appendix \ref{apx:maps}. The \prm{specification} is identical to that for \cmd{DeclareSourcemap} but without the \cmd{maps} elements: the \prm{specification} is just a list of \cmd{map} elements since each \cmd{DeclareDefaultSourcemap} only applies to one datatype driver. See the default definitions in Appendix \ref{apx:maps} for examples. + +\end{ltxsyntax} + +Here are some data source mapping examples: + +\begin{lstlisting}[style=latex]{} +\DeclareSourcemap{ + \maps[datatype=bibtex]{ + \map{ + \perdatasource{<<example1.bib>>} + \perdatasource{<<example2.bib>>} + \step[fieldset=<<keywords>>, fieldvalue={<<keyw1, keyw2>>}] + } + } +} +\end{lstlisting} +% +This would add a \bibfield{keywords} field with value <keyw1, keyw2> +to all entries which are found in either the +\texttt{examples1.bib} or \texttt{examples2.bib} files. +% +\begin{lstlisting}[style=latex]{} +\DeclareSourcemap{ + \maps[datatype=bibtex]{ + \map{ + \step[fieldsource=<<title>>] + \step[fieldset=<<note>>, origfieldval] + } + } +} +\end{lstlisting} +% +Copy the \bibfield{title} field to the \bibfield{note} field unless the +\bibfield{note} field already exists. +% +\begin{lstlisting}[style=latex]{} +\DeclareSourcemap{ + \maps[datatype=bibtex]{ + \map{ + \step[typesource=<<chat>>, typetarget=<<customa>>, final] + \step[fieldset=<<type>>, origentrytype] + } + } +} +\end{lstlisting} +% +Any \bibfield{chat} entrytypes would become \bibfield{customa} entrytypes and +would automatically have a \bibfield{type} field set to +<chat> 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 +\texttt{typesource} does not match the entry entrytype, processing of this +\cmd{map} immediately terminates. +% +\begin{lstlisting}[style=latex]{} +\DeclareSourcemap{ + \maps[datatype=bibtex]{ + \map{ + \perdatasource{<<examples.bib>>} + \pertype{<<article>>} + \pertype{<<book>>} + \step[fieldset=<<abstract>>, null] + \step[fieldset=<<note>>, fieldvalue={<<Auto-created this field>>}] + } + } +} +\end{lstlisting} +% +Any entries of entrytype \bibtype{article} or \bibtype{book} from the +\texttt{examples.bib} datasource would have their \bibfield{abstract} +fields removed and a \bibfield{note} field added with value <Auto-created this field>. +% +\begin{lstlisting}[style=latex]{} +\DeclareSourcemap{ + \maps[datatype=bibtex]{ + \map{ + \step[fieldset=<<abstract>>, null] + \step[fieldsource=<<conductor>>, fieldtarget=<<namea>>] + \step[fieldsource=<<gps>>, fieldtarget=<<usera>>] + } + } +} +\end{lstlisting} +% +This removes \bibfield{abstract} fields from any entry, changes +\bibfield{conductor} fields to \bibfield{namea} fields and changes \bibfield{gps} +fields to \bibfield{usera} fields. +% +\begin{lstlisting}[style=latex]{} +\DeclareSourcemap{ + \maps[datatype=bibtex]{ + \map{ + \step[fieldsource=<<pubmedid>>, fieldtarget=<<eprint>>, final] + \step[fieldset=<<eprinttype>>, origfield] + \step[fieldset=<<userd>>, fieldvalue={<<Some string of things>>}] + } + } +} +\end{lstlisting} +% +Applies only to entries with \bibfield{pubmed} fields and maps +\bibfield{pubmedid} fields to \bibfield{eprint} fields, sets the \bibfield{eprinttype} +field to <pubmedid> and also sets the \bibfield{userd} field to the string +<Some string of things>. +% +\begin{lstlisting}[style=latex]{} +\DeclareSourcemap{ + \maps[datatype=bibtex]{ + \map{ + \step[fieldsource=<<series>>, + match=\regexp{<<\A\d*(.+)>>}, + replace=\regexp{<<\L$1}>>] + } + } +} +\end{lstlisting} +%$<- to stop emacs highlighting breaking +Here, the contents of the \bibfield{series} field have leading numbers stripped and the remainder of the contents lowercased. Since regular expressions usually contain all sort of special characters, it is best to enclose them in the provided \cmd{regexp} macro as shown---this will pass the expression through to \biber correctly. +% +\begin{lstlisting}[style=latex]{} +\DeclareSourcemap{ + \maps[datatype=bibtex]{ + \map{ + \step[fieldsource=<<maintitle>>, + match=\regexp{<<Collected\s+Works.+Freud>>}, + final] + \step[fieldset=<<keywords>>, fieldvalue=<<freud>>] + } + } +} +\end{lstlisting} +%$<- to stop emacs highlighting breaking +Here, if for an entry, the \bibfield{maintitle} field matches a particular regular expression, we set a special keyword so we can, for example, make a references section just for certain items. +% +\begin{lstlisting}[style=latex]{} +\DeclareSourcemap{ + \maps[datatype=bibtex]{ + \map{ + \step[fieldsource=<<lista>>, match=\regexp{<<regexp>>}, final] + \step[fieldset=<<lista>>, null] + } + } +} +\end{lstlisting} +% +If an entry has a \bibfield{lista} field which matches regular expression <regexp>, then it is removed. +% +\begin{lstlisting}[style=latex]{} +\DeclareSourcemap{ + \maps[datatype=bibtex]{ + \map{ + \step[fieldsource=<<author>>, + match={<<Smith, Bill>>}, + replace={<<Smith, William>>}] + \step[fieldsource=<<author>>, + match={<<Jones, Baz>>}, + replace={<<Jones, Barry>>}] + } + } +} +\end{lstlisting} +% +Here, we use multiple match/replace for the same field to regularise some inconstant name variants. Bear in mind that \cmd{step} processing within a \opt{map} element is sequential and so the changes from a previous \cmd{step}s are already committed. Note that we don't need the \cmd{regexp} macro to protect the regular expressions in this example as they contain no characters which need special escaping. Please note that due to the difficulty of protecting regular expressions in \LaTeX, there should be no literal spaces in the argument to \cmd{regexp}. Please use escape code equivalents if spaces are needed. For example, this example, if using \cmd{regexp}, should be: +% +\begin{lstlisting}[style=latex]{} +\DeclareSourcemap{ + \maps[datatype=bibtex]{ + \map{ + \step[fieldsource=<<author>>, + match=\regexp{<<Smith,\s+Bill>>}, + replace=\regexp{<<Smith,\x20William>>}] + \step[fieldsource=<<author>>, + match=\regexp{<<Jones,\s+Baz>>}, + replace=\regexp{<<Jones,\x20Barry>>}] + } + } +} +\end{lstlisting} +% +Here, we have used the hexadecimal escape sequence <|\x20|> in place of literal spaces in the replacement strings. +% +\begin{lstlisting}[style=latex]{} +\DeclareSourcemap{ + \maps[datatype=bibtex]{ + \map[overwrite]{ + \step[fieldsource=<<author>>, match={<<Doe,>>}, final] + \step[fieldset=<<shortauthor>>, origfieldval] + \step[fieldset=<<sortname>>, origfieldval] + \step[fieldsource=<<shortauthor>>, + match=\regexp{<<Doe,\s*(?:\.|ohn)(?:[-]*)(?:P\.|Paul)*>>}, + replace={<<Doe, John Paul>>}] + \step[fieldsource=<<sortname>>, + match=\regexp{<<Doe,\s*(?:\.|ohn)(?:[-]*)(?:P\.|Paul)*>>}, + replace={<<Doe, John Paul>>}] + } + } +} +\end{lstlisting} +% +Only applies to entries with an \bibfield{author} field matching <Doe,>. First the \bibfield{author} field is copied to both the \bibfield{shortauthor} and \bibfield{sortname} fields, overwriting them if they already exist. Then, these two new fields are modified to canonicalise a particular name, which presumably has some variants in the data source. + +\subsubsection{Data Model Specification} +\label{aut:ctm:dm} + +The data model which \sty{biblatex} uses consists of four main elements: + +\begin{itemize} +\item Specification of valid Entrytypes +\item Specification of valid Fields along with their type, datatype and any special flags +\item Specification of which Fields are valid in which Entrytypes +\item Specification of constraints which can be used to validate data against the data model +\end{itemize} + +The default data model is defined in the core \sty{biblatex} file \file{blx-dm.def} using the macros described in this section. The default data model is described in detail in \secref{bib}. The data model is used internally by \sty{biblatex} and also by the backends. The data model for the \bibtex backend is hard-coded and cannot be changed. Changing the data model is only supported for the \biber backend. In practice, changing the data model means that you can define the entrytypes and fields for your datasources and validate your data against the data model. Naturally, this is not much use unless your style supports any new entrytypes or fields and it raises issues of portability between styles (although this can be mitigated by using the dynamic data modification functionality described in \secref{aut:ctm:map}). + +Validation against the data model means that after mapping your data sources into the data model, \biber (using its \path{--validate_datamodel} option) can check: + +\begin{itemize} +\item Whether all entrytypes are valid entrytypes +\item Whether all fields are valid fields for their entrytype +\item Whether the fields obey various constraints on their format which you specify +\end{itemize} +% +Redefining the data model can be done in several places. Style authors can create a \file{.dbx} file which contains the data model macros required and this will be loaded automatically when using the \sty{biblatex} package \opt{style} option by looking for a file named afer the style with a \file{.dbx} (just like the \file{.cbx} and \file{.bbx} files for a style). Alternatively, the name of the data model file can be different from the style name by specifying the name (without \file{.dbx} extension) to the package \opt{datamodel} option. After loading the style data model file, \sty{biblatex} then loads, if present, a users \file{biblatex-dm.cfg} which should be put somewhere \sty{biblatex} can find it, just like the main configuration file \sty{biblatex.cfg}. To summarise, the data model is determined by adding to the data model from each of these locations, in order:\\ + +\noindent\file{blx-dm.def}$\rightarrow$\\ +\hspace*{1em}\file{<datamodel option>.dbx} $\rightarrow$\\ +\hspace*{2em}\file{<style option>.dbx} $\rightarrow$\\ +\hspace*{3em}\file{biblatex-dm.cfg}\\ + +\noindent The data model is defined using the following macros: + +\begin{ltxsyntax} + +\cmditem{DeclareDatamodelEntrytypes}{entrytypes}|\BiberOnlyMark| + +Declares the comma"=separated list of \prm{entrytypes} to be valid entrytypes in the data model. This command may only be used in a data model configuration file. + +\cmditem{DeclareDatamodelFields}[options]{fields}|\BiberOnlyMark| + +Declares the comma"=separated list of \prm{fields} to be valid fields in the data model with associated comma"=separated \prm{options}. This command may only be used in a data model configuration file. Valid \prm{options} are: + +\begin{optionlist*} + +\valitem{type}{field type} + +Set the type of the field as described in \secref{bib:fld:typ}. Is typically <field> or <list>. + +\valitem{datatype}{field datatype} + +Set the datatype of the field as described in \secref{bib:fld:typ}. For example, <name> or <literal>. + +\boolitem[false]{nullok} + +The field is allowed to be defined but empty. + +\boolitem[false]{skipout} + +The field is not output to the \file{.bbl} and is therefore not present during \sty{biblatex} style processing. + +\end{optionlist*} + +\cmditem{DeclareDatamodelEntryfields}[entrytypes]{fields}|\BiberOnlyMark| + +Declares that the comma"=separated list of \prm{fields} is valid for the comma"=separated list of \prm{entrytypes}. If \prm{entrytypes} is not given, the fields are valid for all entrytypes. This command may only be used in a data model configuration file. + +\cmditem{DeclareDatamodelConstraints}[entrytypes]{specification}|\BiberOnlyMark| + +If a comma"=separated list of \prm{entrytypes} is given, the constraints apply only to those entrytypes. The \prm{specification} is an undelimited list of \cmd{constraint} directives which specify a constraint. Spaces, tabs, and line endings may be used freely to visually arrange the \prm{specification}. Blank lines are not permissible. This command may only be used in a data model configuration file. + +\cmditem{constraint}[type=constrainttype]{elements} + +Specifies a constraint of type \prm{constrainttype}. Valid constraint types are: + +\begin{optionlist*} + +\choitem{type}{data, mandatory, conditional} + +Constraints of type <data> put restrictions on the value of a field. Constraints of type <mandatory> specify which fields or combinations of fields an entrytype should have. Constraints of type <conditional> allow more sophisticated conditional and quantified field constraints. + +\choitem{datatype}{integer, isbn, issn, ismn, date, pattern} + +For constraints of type \prm{data}, constrain field values to be the given datatype. + +\valitem{rangemin}{num} + +For constraints of \prm{type} <data> and \prm{datatype} <integer>, constrain field values to be at least \prm{num}. + +\valitem{rangemax}{num} + +For constraints of \prm{type} <data> and \prm{datatype} <integer>, constrain field values to be at most \prm{num}. + +\valitem{pattern}{patt} + +For constraints of \prm{type} <data> and \prm{datatype} <pattern>, constrain field values to match regular expression pattern \prm{patt}. It is best to wrap any regular expression in the macro \cmd{regexp}, see \secref{aut:ctm:map}. + +\end{optionlist*} + +A \cmd{constraint} macro may contain any of the following: + +\cmditem{constraintfieldsor}{fields} + +For constraints of \prm{type} <mandatory>, specifies that an entry must contain a boolean OR of the \cmd{constraintfield}s. + +\cmditem{constraintfieldsxor}{fields} + +For constraints of \prm{type} <mandatory>, specifies that an entry must contain a boolean XOR of the \cmd{constraintfield}s. + +\cmditem{antecedent}[quantifier=quantspec]{fields} + +For constraints of \prm{type} <conditional>, specifies a quantified set of \cmd{constraintfield}s which must be satisfied before the \cmd{consequent} of the constraint is checked. \prm{quantspec} should have one of the following values: + +\begin{optionlist*} + +\choitem{quantifier}{all, one, none} + +Specifies how many of the \cmd{constrainfield}'s inside the \cmd{antecedent} have to be present to satisfy the antecedent of the conditional constraint. + +\end{optionlist*} + +\cmditem{consequent}[quantifier=quantspec]{fields} + +For constraints of \prm{type} <conditional>, specifies a quantified set of \cmd{constraintfield}s which must be satisfied if the preceding \cmd{antecedent} of the constraint was satisfied. \prm{quantspec} should have one of the following values: + +\begin{optionlist*} + +\choitem{quantifier}{all, one, none} + +Specifies how many of the \cmd{constrainfield}'s inside the \cmd{consequent} have to be present to satisfy the consequent of the conditional constraint. + +\end{optionlist*} + +\cmditem{constraintfield}{field} + +For constraints of \prm{type} <data>, the constraint applies to this \prm{field}. For constraints of \prm{type} <mandatory>, 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 \sty{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: + +\cmditem{ResetDatamodelEntrytypes} + +Clear all data model entrytype information. + +\cmditem{ResetDatamodelFields} + +Clear all data model field information. + +\cmditem{ResetDatamodelEntryfields} + +Clear all data model fields for entrytypes information. + +\cmditem{ResetDatamodelConstraints} + +Clear all data model fields Constraints information. + +\end{ltxsyntax} + +Here is an example of a simple data model. Refer to the core \sty{biblatex} file \file{blx-dm.def} for the default data model specification. + +\begin{lstlisting}[style=latex]{} +\ResetDatamodelEntrytypes +\ResetDatamodelFields +\ResetDatamodelEntryfields +\ResetDatamodelConstraints + +\DeclareDatamodelEntrytypes{<<entrytype1, entrytype2>>} + +\DeclareDatamodelFields[type=field, datatype=literal]{<<field1,field2,field3,field4>>} + +\DeclareDatamodelEntryfields{<<field1>>} +\DeclareDatamodelEntryfields[entrytype1]{<<field2,field3>>} +\DeclareDatamodelEntryfields[entrytype2]{<<field2,field3,field4>>} + +\DeclareDatamodelConstraints[<<entrytype1>>]{ + \constraint[type=data, datatype=integer, rangemin=3, rangemax=10]{ + \constraintfield{<<field1>>} + } + \constraint[type=mandatory]{ + \constraintfield{<<field1>>} + \constraintfieldsxor{ + \constraintfield{<<field2>>} + \constraintfield{<<field3>>} + } + } +} +\DeclareDatamodelConstraints{ + \constraint[type=conditional]{ + \antecedent[quantifier=none]{ + \constraintfield{<<field2>>} + } + \consequent[quantifier=all]{ + \constraintfield{<<field3>>} + \constraintfield{<<field4>>} + } + } +} +\end{lstlisting} +% +This model specifies: + +\begin{itemize} +\item Clear the default data model completely +\item Two valid entry types \bibtype{entrytype1} and \bibtype{entrytype2} +\item Four valid literal field fields +\item \bibfield{field1} is valid for all entrytypes +\item \bibfield{field2} and \bibfield{field3} are valid for \bibfield{entrytype1} +\item \bibfield{field2}, \bibfield{field3} and \bibfield{field4} are valid for \bibtype{entrytype2} +\item For \bibtype{entrytype1}: + \begin{itemize} + \item \bibfield{field1} must be an integer between 3 and 10 + \item \bibfield{field1} must be present + \item One and only one of \bibfield{field2} or \bibfield{field3} must be present + \end{itemize} +\item For any entrytype, if \bibfield{field2} is not present, \bibfield{field3} and \bibfield{field4} must be present +\end{itemize} + +\subsubsection{Labels} +\label{aut:ctm:lab} + +Alphabetic styles use a label to identify bibliography entries. This label is constructed from components of the entry using a template which describes how to build the label. The template can be customised on a global or per-type basis. Label customisation requires \biber and will not work with any other backend. + +\begin{ltxsyntax} + +\cmditem{DeclareLabelalphaTemplate}[entrytype, \dots]{specification}|\BiberOnlyMark| + +Defines the alphabetic label template for the given entrytypes. If no entrytypes are specified in the first argument, then the global label template is defined. The \prm{specification} is an undelimited list of \cmd{labelelement} directives which specify the elements used to build the label. Spaces, tabs, and line endings may be used freely to visually arrange the \prm{specification}. Blank lines are not permissible. This command may only be used in the preamble. + +\cmditem{labelelement}{elements} + +Specifies the elements used to build the label. The \prm{elements} are an undelimited list of \cmd{field} or \cmd{literal} commands which are evaluated in the order in which they are given. The first \cmd{field} or \cmd{literal} which expands to a non-empty string is used as the \cmd{labelelement} expansion and the next \cmd{labelelement}, if any, is then processed. + +\cmditem{field}[options]{field} + +If \prm{field} is non-empty, use it as the current label \cmd{labelelement}, subject to the options below. Useful values for \prm{field} are typically the name list type fields, date fields, and title fields. You may also use the `citekey' pseudo-field to specify the citation key as part of the label. Name list fields are treated specially and the options which take substrings of the \prm{field} to use in the \cmd{labelelement} are applied to the lastname of every name in a name list (see below). + +\begin{optionlist*} + +\boolitem[false]{final} + +This option marks a \cmd{field} directive as the final one in the \prm{specification}. If the \prm{field} is non-empty, then this field is used for the label and the remainder of the \prm{specification} will be ignored. The short form \opt{final} is equivalent to \kvopt{final}{true}. + +\boolitem[false]{lowercase} + +Forces the label part derived from the field to lowercase. By default, the case is taken from the field source and not modified. + +\intitem[1]{strwidth} + +The number of characters of the \prm{field} to use. For name list fields, if \kvopt{useprefix}{true}, the first character of the name prefix is prepended to the substring. + +\choitem[left]{strside}{left, right} + +The side of the string from which to take the \texttt{strwidth} number of characters. + +\boolitem[false]{uppercase} + +Forces the label part derived from the field to uppercase. By default, the case is taken from the field source and not modified. + +\boolitem[false]{varwidth} + +Use a variable width, left-side substring of characters from the \prm{field} (each lastname in name list fields). The length of the string is determined by the minimum length needed to disambiguate the substring from all other \prm{field} elements in the same position in the label. For name list fields, this means that each name substring is disambigated from all other name substrings which occur in the sme position in the name list (see examples below). This option overrides \texttt{strwidth} if both are used. The short form \opt{varwidth} is equivalent to \kvopt{varwidth}{true}. For name list fields, if \kvopt{useprefix}{true}, the first character of the name prefix is prepended to the substring. + +\boolitem[false]{varwidthnorm} + +As \texttt{varwidth} but will force the disambiguated substrings for the \prm{field} to be the same length as the longest disambiguated substring. This can be used to regularise the format of the labels if desired. This option overrides \texttt{strwidth} if both are used. The short form \opt{varwidthnorm} is equivalent to \kvopt{varwidthnorm}{true}. + +\boolitem[false]{varwidthlist} + +Alternative method of automatic label disambiguation where the field as a whole is disambiguated from all other fields in the same label position. For non-name list fields, this is equivalent to \texttt{varwidth}. For name list fields, names in a name list are not disambiguated from other names in the same position in their name lists but instead the entire name list is disambiguated as a whole from other name lists (see examples below). This option overrides \texttt{strwidth} if both are used. The short form \opt{varwidthlist} is equivalent to \kvopt{varwidthlist}{true}. For name list fields, if \kvopt{useprefix}{true}, the first character of the name prefix is prepended to the substring. + +\intitem{strwidthmax} + +When using \texttt{varwidth}, this option sets a limit (in number of characters) on the length of variable width substrings. This option can be used to regularise the label. + +\intitem[1]{strfixedcount} + +When using \texttt{varwidthnorm}, there must be at least \texttt{strfixedcount} disambiguated substrings with the same, maximal length to trigger the forcing of all disambiguated substrings to this same maximal length. + +\boolitem[false]{compound} + +For static (non-varwidth) disambiguation, treat lastname name components separated by whitespace or hyphens (compound last names) as separate names for label generation. This means that when forming a label out of, for example the surname <Ballam Forsyth> with a 1 character, left-side substring, this name would give <BF> with \kvopt{compound}{true} and <B> with \kvopt{compound}{false}. The short form \opt{compound} is equivalent to \kvopt{compound}{true}. + +\intitem{ifnames} + +Only use this \cmd{field} specification if it is a name list field with \texttt{ifnames} names in it. This allows a \cmd{labelelement} to be conditionalised on name length (see below). + +\intitem{names} + +By default, for name list fields, the number of names considered when building the label obeys the \cnt{maxalphanames}\slash \cnt{minalphanames} truncation. This option can be used to override this with an explicit upper limit of how many names to consider. This is useful if you have some very long name lists which might result in a very long label. + +\end{optionlist*} + +\cmditem{literal}{characters} + +Insert the literal \prm{characters} into the label at this point. + +\end{ltxsyntax} + +Note that the template for labels can be defined per-type and you should be aware of this when using the automatically disambiguated label functionality. Disambiguation is not per-type as this might lead to ambiguity due to different label formats for different types being isolated from each others disambiguation process. Normally, you will want to use very different label formats for different types to make the type obvious by the label. + +Here are some examples. The default global \sty{biblatex} alphabetic label template is defined below. Firstly, \bibfield{shorthand} has \kvopt{final}{true} and so if there is a \bibfield{shorthand} field, it is used as the label and nothing more of the template is considered. Next, the \bibfield{label} field is used as the first label element if it exists. Otherwise, if there is only one name (\kvopt{ifnames}{1}) in the \bibfield{labelname} list, then three characters from the left side of the lastname in the \bibfield{labelname} are used as the first label element. If the \bibfield{labelname} has more than one name in it, one character from the left side of each lastname is used as the first label element. The second label element consists of 2 characters from the right side of the \bibfield{year} field. + +\begin{lstlisting}[style=latex]{} +\DeclareLabelalphaTemplate{ + \labelelement{ + \field[final]{<<shorthand>>} + \field{<<label>>} + \field[strwidth=3,strside=left,ifnames=1]{<<labelname>>} + \field[strwidth=1,strside=left]{<<labelname>>} + } + \labelelement{ + \field[strwidth=2,strside=right]{<<year>>} + } +} +\end{lstlisting} +% +To get an idea of how the label automatic disambiguation works, consider the following author lists: + +\begin{lstlisting}{} +Agassi, Chang, Laver (2000) +Agassi, Connors, Lendl (2001) +Agassi, Courier, Laver (2002) +Borg, Connors, Edberg (2003) +Borg, Connors, Emerson (2004) +\end{lstlisting} +% +Assuming a template declaration such as: + +\begin{lstlisting}[style=latex]{} +\DeclareLabelalphaTemplate{ + \labelelement{ + \field[varwidth]{<<labelname>>} + } +} +\end{lstlisting} +% +Then the labels would be: + +\begin{lstlisting}{} +Agassi, Chang, Laver [AChLa] +Agassi, Connors, Lendl [AConLe] +Agassi, Courier, Laver [ACouLa] +Borg, Connors, Edberg [BConEd] +Borg, Connors, Emerson [BConEm] +\end{lstlisting} +% +With normalised variable width labels defined: + +\begin{lstlisting}[style=latex]{} +\DeclareLabelalphaTemplate{ + \labelelement{ + \field[varwidthnorm]{<<labelname>>} + } +} +\end{lstlisting} +% +You would get the following as the substrings of names in each position are extended to the length of the longest substring in that same position: + +\begin{lstlisting}{} +Agassi, Chang, Laver [AChaLa] +Agassi, Connors, Lendl [AConLe] +Agassi, Courier, Laver [ACouLa] +Borg, Connors, Edberg [BConEd] +Borg, Connors, Emerson [BConEm] +\end{lstlisting} +% +With a restriction to two characters for the name components of the label element defined like this: + +\begin{lstlisting}[style=latex]{} +\DeclareLabelalphaTemplate{ + \labelelement{ + \field[varwidthnorm,strwidthmax=2]{<<labelname>>} + } +} +\end{lstlisting} +% +This would be the result (note that the individual lastname label parts are no longer unambiguous): + +\begin{lstlisting}{} +Agassi, Chang, Laver [AChLa] +Agassi, Connors, Lendl [ACoLe] +Agassi, Courier, Laver [ACoLa] +Borg, Connors, Edberg [BCoEd] +Borg, Connors, Emerson [BCoEm] +\end{lstlisting} +% +Alternatively, you could choose to disambiguate the name lists as a whole with: + +\begin{lstlisting}[style=latex]{} +\DeclareLabelalphaTemplate{ + \labelelement{ + \field[varwidthlist]{<<labelname>>} + } +} +\end{lstlisting} +% +Which would result in: + +\begin{lstlisting}{} +Agassi, Chang, Laver [AChL] +Agassi, Connors, Lendl [ACoL] +Agassi, Courier, Laver [ACL] +Borg, Connors, Edberg [BCEd] +Borg, Connors, Emerson [BCE] +\end{lstlisting} +% +Perhaps you only want to consider at most two names for label generation but disambiguate at the whole name list level: +\begin{lstlisting}[style=latex]{} +\DeclareLabelalphaTemplate{ + \labelelement{ + \field[varwidthlist,names=2]{<<labelname>>} + } +} +\end{lstlisting} +% +Which would result in: +\begin{lstlisting}{} +Agassi, Chang, Laver [ACh+] +Agassi, Connors, Lendl [ACo+] +Agassi, Courier, Laver [AC+] +Borg, Connors, Edberg [BC+a] +Borg, Connors, Emerson [BC+b] +\end{lstlisting} +% +In this last example, you can see \cmd{labelalphaothers} has been appended to show that there are more names. The last two labels now require disambiguating with \cmd{extraalpha} as there is no way of disambiguating this label name list with only two names. + +Finally, here is an example using multiple label elements: + +\begin{lstlisting}[style=latex]{} +\DeclareLabelalphaTemplate{ + \labelelement{ + \field[varwidthlist]{<<labelname>>} + } + \labelelement{ + \literal{-} + } + \labelelement{ + \field[strwidth=3,strside=right]{<<labelyear>>} + } +} +\end{lstlisting} +% +Which would result in: +\begin{lstlisting}{} +Agassi, Chang, Laver [AChL-000] +Agassi, Connors, Lendl [AConL-001] +Agassi, Courier, Laver [ACouL-002] +Borg, Connors, Edberg [BCEd-003] +Borg, Connors, Emerson [BCEm-004] +\end{lstlisting} + \subsubsection{Sorting} \label{aut:ctm:srt} -In addition to the predefined sorting schemes discussed in \secref{use:srt}, it is possible to define new ones or modify the default definitions. The sorting process may be customized further by excluding certain fields from sorting on a per-type basis and by automatically populating the \bibfield{presort} field on a per-type basis. Note that custom sorting schemes require Biber. They will not work with any other backend. +In addition to the predefined sorting schemes discussed in \secref{use:srt}, it is possible to define new ones or modify the default definitions. The sorting process may be customized further by excluding certain fields from sorting on a per-type basis and by automatically populating the \bibfield{presort} field on a per-type basis. Note that custom sorting schemes require \biber. They will not work with any other backend. \begin{ltxsyntax} @@ -5569,7 +6568,7 @@ Defines the sorting scheme \prm{name}. The \prm{name} is the identifier passed t \cmditem{sort}{elements} -Specifies the elements considered in the sorting process. The \prm{elements} are an undelimited list of \cmd{name}, \cmd{list}, \cmd{field}, \cmd{literal}, and \cmd{citeorder} commands which are evalutated in the order in which they are given. If an element is defined, it is added to the sort key and the sorting routine skips to the next \cmd{sort} directive. If it is undefined, the next element is evaluated. Since literal strings are always defined, any \cmd{literal} commands should be the sole or the last element in a \cmd{sort} directive. The \cmd{sort} command supports the following optional arguments: +Specifies the elements considered in the sorting process. The \prm{elements} are an undelimited list of \cmd{name}, \cmd{list}, \cmd{field}, \cmd{literal}, and \cmd{citeorder} commands which are evaluated in the order in which they are given. If an element is defined, it is added to the sort key and the sorting routine skips to the next \cmd{sort} directive. If it is undefined, the next element is evaluated. Since literal strings are always defined, any \cmd{literal} commands should be the sole or the last element in a \cmd{sort} directive. The \cmd{sort} command supports the following optional arguments: \begin{optionlist*} @@ -5591,14 +6590,6 @@ Whether or not to sort in <uppercase before lowercase> (\texttt{true}) or <lower \end{optionlist*} -\cmditem{name}{name list} - -The \cmd{name} element adds a \prm{name list} to the sorting specification. If the \prm{name list} is undefined, the element is skipped. - -\cmditem{list}{literal list} - -The \cmd{list} element adds a \prm{literal list} to the sorting specification. If the \prm{literal list} is undefined, the element is skipped. - \cmditem{field}[key=value, \dots]{field} The \cmd{field} element adds a \prm{field} to the sorting specification. If the \prm{field} is undefined, the element is skipped. The \cmd{field} command supports the following optional arguments: @@ -5610,7 +6601,7 @@ The \cmd{field} element adds a \prm{field} to the sorting specification. If the 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. Padding is particularly useful with numeric fields. For example, the command \begin{lstlisting}[style=latex]{} -\field[padside=left,padwidth=2,padchar=0]{volume} +\field[padside=left,padwidth=2,padchar=0]{<<volume>>} \end{lstlisting} % will pad the \bibfield{volume} field with leading zeros to a width of two characters. This way, volumes are sorted by numeric value (\texttt{01\slash 02\slash 11\slash 12}) rather than in alphabetic order (\texttt{1\slash 11\slash 12\slash 2}). @@ -5639,24 +6630,41 @@ The \cmd{literal} element adds a literal \prm{string} to the sorting specificati \csitem{citeorder} -The \cmd{citeorder} element has a special meaning. It indicates that the entries should be kept in the order in which they were cited. It is usually the only element in the \prm{specification}: +The \cmd{citeorder} element has a special meaning. It requests a sort based on the lexical order of the actual citations. For entries cited within the same citation command like: + +\begin{lstlisting}[style=latex]{} +\cite{one,two} +\end{lstlisting} +% +there is a distinction between the lexical order and the semantic order. Here one and two have the same semantic order but a unique lexical order. The semantic order only matters if you specify further sorting to disambiguate entries with the same semantic order. For example, this is the definition of the \opt{none} sorting scheme): \begin{lstlisting}[style=latex]{} \DeclareSortingScheme{none}{ \sort{\citeorder} } \end{lstlisting} +% +This sorts the bibliography purely lexically by the order of the keys in the citation commands. In the example above, it sorts one before two. However, suppose that you consider one and two to have the same order (semantic order) since they are cited at the same time and want to further sort these by year. Suppose two has an earlier \bibfield{year} than one: + +\begin{lstlisting}[style=latex]{} +\DeclareSortingScheme{noneyear}{ + \sort{\citeorder} + \sort{<<year>>} +} +\end{lstlisting} +% +This sorts two before one, even though lexically, one would sort before two. This is possible because the semantic order can be disambiguated by the further sorting on year. With the standard \opt{none} sorting scheme, the lexical order and semantic order are identical because there is nothing further to disambiguate them. This means that you can use \cmd{citeorder} just like any other sorting specification element, choosing how to further sort entries cited at the same time (in the same citation command). \end{ltxsyntax} -Here are some examples. In the first example, we define a simple name\slash title\slash year scheme. The name element may be either the \bibfield{author}, the \bibfield{editor}, or the \bibfield{translator}. Given this specification, the sorting routine will use the first element which is available and continue with the \bibfield{title}. Note that the options \opt{useauthor}, \opt{useeditor}, and \opt{usetranslator} are considered automatically in the sorting process: +Here are some examples of sorting schemes. In the first example, we define a simple name\slash title\slash year scheme. The name element may be either the \bibfield{author}, the \bibfield{editor}, or the \bibfield{translator}. Given this specification, the sorting routine will use the first element which is available and continue with the \bibfield{title}. Note that the options \opt{useauthor}, \opt{useeditor}, and \opt{usetranslator} are considered automatically in the sorting process: \begin{lstlisting}[style=latex]{} \DeclareSortingScheme{sample}{ \sort{ - \name{<<author>>} - \name{<<editor>>} - \name{<<translator>>} + \field{<<author>>} + \field{<<editor>>} + \field{<<translator>>} } \sort{ \field{<<title>>} @@ -5674,24 +6682,24 @@ In the next example, we define the same scheme in a more elaborate way, consider \sort{ \field{<<presort>>} } - \sort[<<final>>]{ + \sort[final]{ \field{<<sortkey>>} } \sort{ - \name{<<sortname>>} - \name{author} - \name{editor} - \name{translator} - \field{sorttitle} - \field{title} + \field{<<sortname>>} + \field{<<author>>} + \field{<<editor>>} + \field{<<translator>>} + \field{<<sorttitle>>} + \field{<<title>>} } \sort{ \field{<<sorttitle>>} - \field{title} + \field{<<title>>} } \sort{ \field{<<sortyear>>} - \field{year} + \field{<<year>>} } } \end{lstlisting} @@ -5704,14 +6712,126 @@ Specifies fields to be excluded from sorting on a per-type basis. The \prm{entry \cmditem{DeclarePresort}[entrytype, \dots]{string}|\BiberOnlyMark| -Specifies are string to be used to automatically populate the \bibfield{presort} field of entries without a \bibfield{presort} field. The \bibfield{presort} may be defined globally or on a per-type basis. If the optional \prm{entrytype} argument is given, the \prm{string} applies to the respective entry type. If not, it serves as the global default value. Specifying an \prm{entrytype} in conjunction with a blank \prm{string} will clear the type-specific setting. The \prm{entrytype} argument may be a comma"=separated list of values. This command may only be used in the preamble. +Specifies a string to be used to automatically populate the \bibfield{presort} field of entries without a \bibfield{presort} field. The \bibfield{presort} may be defined globally or on a per-type basis. If the optional \prm{entrytype} argument is given, the \prm{string} applies to the respective entry type. If not, it serves as the global default value. Specifying an \prm{entrytype} in conjunction with a blank \prm{string} will clear the type-specific setting. The \prm{entrytype} argument may be a comma"=separated list of values. This command may only be used in the preamble. \end{ltxsyntax} +\subsubsection{Controlling Name Initials Generation} +\label{aut:ctm:noinit} + +Generating initials for name parts from a given name involves some difficulties when you have names with prefixes, diacritics, hyphens etc. Often, you want to ignore things like prefixes when generating initials so that the initials for al-Hasan is just H instead of a-H. This is tricky when you also have names like Ho-Pun where you want the initials to be H-P, for example. + +\begin{ltxsyntax} + +\cmditem{DeclareNoinit}{specification}|\BiberOnlyMark| + +Defines regular expressions to strip from names before generating initials. The \prm{specification} is an undelimited list of \cmd{noinit} directives which specify the regular expressions to remove from the name. Spaces, tabs and line endings may be used freely to visually arrange the \prm{specification}. Blank lines are not permissible. This command may only be used in the preamble. + +\cmditem{noinit}{regexp} + +Any number of \cmd{noinit} commands can be given each of which specifies to remove the \prm{regexp} from the copy of the name which the initials generation system sees. Since regular expressions usually contain special characters, it is best to enclose them in the provided \cmd{regexp} macro as shown---this will pass the expression through to \biber correctly. + +\end{ltxsyntax} + +If there is no \cmd{DeclareNoinit} specification, \biber will default to: + +\begin{lstlisting}[style=latex]{} +\DeclareNoinit{ + % strip lowercase prefixes like 'al-' when generating initials from names + \noinit{\regexp{<<\b\p{Ll}{2}\p{Pd}>>}} + % strip diacritics when generating initials from names + \noinit{\regexp{<<[\x{2bf}\x{2018}]>>}} +} +\end{lstlisting} +% +This \biber default strips diacritics and lowercase prefixes from names before generating initials. + +\subsubsection{Fine Tuning Sorting} +\label{aut:ctm:nosort} + +It can be useful to fine tune sorting so that it ignores certain parts of particular fields. + +\begin{ltxsyntax} + +\cmditem{DeclareNosort}{specification}|\BiberOnlyMark| + +Defines regular expressions to strip from particular fields or types of fields when sorting. The \prm{specification} is an undelimited list of \cmd{nosort} directives which specify the regular expressions to remove from particular fields or type of field. Spaces, tabs and line endings may be used freely to visually arrange the \prm{specification}. Blank lines are not permissible. This command may only be used in the preamble. + +\cmditem{nosort}{field or field type}{regexp} + +Any number of \cmd{nosort} commands can be given each of which specifies to remove the \prm{regexp} from the \prm{field} or \prm{field type}. A \prm{field type} is simple a convenience grouping of semantically similar fields from which you might want to remove a regexp. Table \ref{aut:nosort} shows the available field types. Since regular expressions usually contain special characters, it is best to enclose them in the provided \cmd{regexp} macro as shown---this will pass the expression through to \biber correctly. + +\end{ltxsyntax} + +If there is no \cmd{DeclareNosort} specification, \biber will default to: + +\begin{lstlisting}[style=latex]{} +\DeclareNosort{ + % strip prefixes like 'al-' when sorting names + \nosort{type_names}{\regexp{<<\A\p{L}{2}\p{Pd}>>}} + % strip diacritics when sorting names + \nosort{type_names}{\regexp{<<[\x{2bf}\x{2018}]>>}} +} +\end{lstlisting} +% +This \biber default strips diacritics and prefixes from names when sorting. Suppose you wanted to ignore The at the beginning of a \bibfield{title} field when sorting: + +\begin{lstlisting}[style=latex]{} +\DeclareNosort{ + \nosort{<<title>>}{\regexp{<<\AThe\s+>>}} +} +\end{lstlisting} +% +Or if you wanted to ignore The at the beginning of any title field: + +\begin{lstlisting}[style=latex]{} +\DeclareNosort{ + \nosort{<<type_title>>}{\regexp{<<\AThe\s+>>}} +} +\end{lstlisting} + +\begin{table}[h] +\tablesetup +\begin{tabular}{@{}V{0.5\textwidth}@{}V{0.5\textwidth}@{}} +\toprule +\multicolumn{1}{@{}H}{Field Type} & +\multicolumn{1}{@{}H}{Fields} \\ +\cmidrule(r){1-1}\cmidrule{2-2} +|type_name| & |author| \\ + & |afterword| \\ + & |annotator| \\ + & |bookauthor| \\ + & |commentator| \\ + & |editor| \\ + & |editora| \\ + & |editorb| \\ + & |editorc| \\ + & |foreword| \\ + & |holder| \\ + & |introduction| \\ + & |namea| \\ + & |nameb| \\ + & |namec| \\ + & |shortauthor| \\ + & |shorteditor| \\ + & |translator| \\ +|type_title| & |booktitle| \\ + & |eventtitle| \\ + & |issuetitle| \\ + & |journaltitle| \\ + & |maintitle| \\ + & |origtitle| \\ + & |title| \\ +\bottomrule +\end{tabular} +\caption{Field types for \cmd{nosort}} +\label{aut:nosort} +\end{table} + \subsubsection{Special Fields} \label{aut:ctm:fld} -Some of the automatically generated fields from \secref{aut:bbx:fld:lab} may be customized. Note that this requires Biber. +Some of the automatically generated fields from \secref{aut:bbx:fld:lab} may be customized. Note that this requires \biber. \begin{ltxsyntax} @@ -5735,12 +6855,22 @@ Defines the date components to consider when generating the \bibfield{labelyear} % The \bibfield{labelyear} field may be customized globally or on a per-type basis. If the optional \prm{entrytype} argument is given, the specification applies to the respective entry type. If not, it is applied globally. The \prm{entrytype} argument may be a comma"=separated list of values. This command may only be used in the preamble. See also \secref{aut:bbx:fld:dat}. +\cmditem{DeclareLabeltitle}[entrytype, \dots]{specification}|\BiberOnlyMark| + +Defines the fields to consider when generating the \bibfield{labeltitle} field (see \secref{aut:bbx:fld:lab}). The \prm{specification} is a comma"=separated list of fields. The fields are checked in the order listed and the first field which is available will be used as \bibfield{labeltitle}. This is the default definition: + +\begin{lstlisting}[style=latex]{} +\DeclareLabeltitle{shorttitle,title} +\end{lstlisting} +% +The \bibfield{labeltitle} field may be customized globally or on a per-type basis. If the optional \prm{entrytype} argument is given, the specification applies to the respective entry type. If not, it is applied globally. The \prm{entrytype} argument may be a comma"=separated list of values. This command may only be used in the preamble. + \end{ltxsyntax} \subsubsection{Data Inheritance (\bibfield{crossref})} \label{aut:ctm:ref} -Biber features a highly customizable cross-referencing mechanism with flexible data inheritance rules. This sections deals with the configuration interface. See \apxref{apx:ref} for the default configuration. Note that customized data inheritance requires Biber. It will not work with any other backend. A note on terminology: the \emph{child} or \emph{target} is the entry with the \bibfield{crossref} field, the \emph{parent} or \emph{source} is the entry the \bibfield{crossref} field points to. The child inherits data from the parent. +\biber features a highly customizable cross-referencing mechanism with flexible data inheritance rules. This sections deals with the configuration interface. See \apxref{apx:ref} for the default configuration. Note that customized data inheritance requires \biber. It will not work with any other backend. A note on terminology: the \emph{child} or \emph{target} is the entry with the \bibfield{crossref} field, the \emph{parent} or \emph{source} is the entry the \bibfield{crossref} field points to. The child inherits data from the parent. \begin{ltxsyntax} @@ -5788,7 +6918,7 @@ This example shows how to configure the default inheritance behavior. The above \begin{lstlisting}[style=latex]{} \DefaultInheritance[ - <<\except>>{<<*>>}{<<online>>}{<<all=false>>} + \except{<<*>>}{<<online>>}{<<all=false>>} ]{all=true,override=false} \end{lstlisting} % @@ -5796,9 +6926,9 @@ This example is similar to the one above but adds one exception: entries of type \begin{lstlisting}[style=latex]{} \DeclareDataInheritance{<<collection>>}{<<incollection>>}{ - <<\inherit>>{<<title>>}{<<booktitle>>} - \inherit{subtitle}{booksubtitle} - \inherit{titleaddon}{booktitleaddon} + \inherit{<<title>>}{<<booktitle>>} + \inherit{<<subtitle>>}{<<booksubtitle>>} + \inherit{<<titleaddon>>}{<<booktitleaddon>>} } \end{lstlisting} % @@ -5815,7 +6945,7 @@ This rule is an example of one-to-many mapping: it maps the \bibfield{author} fi \begin{lstlisting}[style=latex]{} \DeclareDataInheritance{<<*>>}{<<inbook,incollection>>}{ - <<\noinherit>>{<<introduction>>} + \noinherit{<<introduction>>} } \end{lstlisting} % @@ -5824,7 +6954,7 @@ This rule prevents inheritance of the \bibfield{introduction} field. It applies \begin{lstlisting}[style=latex]{} \DeclareDataInheritance{<<*>>}{<<*>>}{ - \noinherit{abstract} + \noinherit{<<abstract>>} } \end{lstlisting} % @@ -5835,7 +6965,7 @@ This rule, which applies to all entries, regardless of the source and target ent \ResetDataInheritance \end{lstlisting} % -This example demonstrates how to emulate \bibtex's cross"=referencing mechanism. It enables inheritance by default, disables overwriting, and clears all other inheritance rules and mappings. +This example demonstrates how to emulate traditional \bibtex's cross"=referencing mechanism. It enables inheritance by default, disables overwriting, and clears all other inheritance rules and mappings. \subsection{Auxiliary Commands} \label{aut:aux} @@ -6022,7 +7152,7 @@ Expands to \prm{true} if the \opt{usetranslator} option is enabled (either globa \cmditem{ifsingletitle}{true}{false} -Expands to \prm{true} if there is only one work by the author\slash editor in the bibliography, and to \prm{false} otherwise. Note that this feature needs to be enabled explicitly with the package option \opt{singletitle}. +Expands to \prm{true} if there is only one work by the \opt{labelname} name in the bibliography, and to \prm{false} otherwise. If there is no \opt{labelname} name at all for the entry, then this expands to \prm{true} if there is only one work with the \opt{labeltitle} title in the bibliography and \prm{false} otherwise. If neither \opt{labelname} nor \opt{labeltitle} are set for an entry, this will always expand to \prm{false}. Note that this feature needs to be enabled explicitly with the package option \opt{singletitle}. \cmditem{ifandothers}{list}{true}{false} @@ -6407,7 +7537,7 @@ The optional argument \bibfield{bookpagination} is omissible in this case. \cmditem{mkcomprange}[postpro]{text} \cmditem*{mkcomprange*}[postpro]{text} -This command, which is intended for use in field formatting directives, will parse its \prm{text} argument for page ranges and compress them. For example, 125--129 may be formatted as 125--9. You may configure the behavior of \cmd{mkcomprange} by adjusting the \latex counters \cnt{mincomprange}, \cnt{maxcomprange}, and \cnt{mincompwidth}, as illustrated in \tabref{aut:aux:tab1}. The default settings are \texttt{10}, \texttt{100000}, and \texttt{1}, respectively. This means that the command tries to compress as much as possible by default. Use \cmd{setcounter} to adjust the parameters. The scanner recognizes \cmd{bibrangedash} and hyphens as range dashes. It will normalize the dash by replacing any number of consecutive hyphens with \cmd{bibrangedash}. Lists of ranges delimited with commas and/or semicolons are also supported. If you want to hide a character from the list/range scanner for some reason, wrap the character or the entire string in curly braces. The optional \prm{postpro} argument specifies a macro to be used for post-processing the \prm{text}. This is important if you want to combine \cmd{mkcomprange} with other formatting macros which also need to parse their \prm{text} argument, such as \cmd{mkpageprefix}. Simply nesting these commands will not work as expected. Use the \prm{postpro} argument to set up the processing chain as follows: +This command, which is intended for use in field formatting directives, will parse its \prm{text} argument for page ranges and compress them. For example, 125--129 may be formatted as 125--9. You may configure the behavior of \cmd{mkcomprange} by adjusting the \latex counters \cnt{mincomprange}, \cnt{maxcomprange}, and \cnt{mincompwidth}, as illustrated in \tabref{aut:aux:tab1}. The default settings are \texttt{10}, \texttt{100000}, and \texttt{1}, respectively. This means that the command tries to compress as much as possible by default. Use \cmd{setcounter} to adjust the parameters. The scanner recognizes \cmd{bibrangedash} and hyphens as range dashes. It will normalize the dash by replacing any number of consecutive hyphens with \cmd{bibrangedash}. Lists of ranges delimited with \cmd{bibrangessep} (\biber\footnote{\biber will always convert commas/semicolon multi-range separators into \cmd{bibrangessep} so that it can be controlled in the style.}) or commas/semicolons (BibTeX) are also supported. If you want to hide a character from the list/range scanner for some reason, wrap the character or the entire string in curly braces. The optional \prm{postpro} argument specifies a macro to be used for post-processing the \prm{text}. This is important if you want to combine \cmd{mkcomprange} with other formatting macros which also need to parse their \prm{text} argument, such as \cmd{mkpageprefix}. Simply nesting these commands will not work as expected. Use the \prm{postpro} argument to set up the processing chain as follows: \begin{lstlisting}[style=latex]{} \DeclareFieldFormat{postnote}{\mkcomprange[<<{>>\mkpageprefix[pagination]<<}>>]{#1}} @@ -6430,7 +7560,7 @@ p. 5, pp. 123-9, pp. 423-39 \cmditem{mkfirstpage}[postpro]{text} \cmditem*{mkfirstpage*}[postpro]{text} -This command, which is intended for use in field formatting directives, will parse its \prm{text} argument for page ranges and print the start page of the range only. The scanner recognizes \cmd{bibrangedash} and hyphens as range dashes. Lists of ranges delimited with commas and/or semicolons are also supported. If you want to hide a character from the list/range scanner for some reason, wrap the character or the entire string in curly braces. The optional \prm{postpro} argument specifies a macro to be used for post-processing the \prm{text}. See \cmd{mkcomprange} on how to use this argument. The starred version of this command differs from the regular one in the way the \prm{postpro} argument is applied to a list of values. For example: +This command, which is intended for use in field formatting directives, will parse its \prm{text} argument for page ranges and print the start page of the range only. The scanner recognizes \cmd{bibrangedash} and hyphens as range dashes. Lists of ranges delimited with \cmd{bibrangessep} (\biber\footnote{\biber will always convert commas/semicolon multi-range separators into \cmd{bibrangessep} so that it can be controlled in the style.}) or commas/semicolons (BibTeX) are also supported. If you want to hide a character from the list/range scanner for some reason, wrap the character or the entire string in curly braces. The optional \prm{postpro} argument specifies a macro to be used for post-processing the \prm{text}. See \cmd{mkcomprange} on how to use this argument. The starred version of this command differs from the regular one in the way the \prm{postpro} argument is applied to a list of values. For example: \begin{lstlisting}[style=latex]{} \mkfirstpage[\mkpageprefix]{5, 123-129, 423-439} @@ -6510,7 +7640,7 @@ This command is similar to \cmd{PackageWarning} but prints the entry key of the \cmditem{RequireBiber}[severity] -This command is intended for use in \file{cbx}\slash\file{bbx} files and in the \texttt{@preamble} of \file{bib} files. It checks the selected backend and warns if it is not Biber. The optional \prm{severity} argument is an integer specifying the severity. The value 1 triggers an informational message stating that Biber is recommended; 2 triggers a warning stating that Biber is required and the style\slash\file{bib} file may not work properly; 3 triggers an error stating that Biber is strictly required and the style\slash\file{bib} file will not work at all with any other backend. If \cmd{RequireBiber} is used multiple times, the highest \prm{severity} takes precedence. \file{cbx}\slash\file{bbx} files on the one hand and the \texttt{@preamble} snippets of all \file{bib} files on the other are tracked seperately. If the optional \prm{severity} argument is omitted, the default severity is 2 (warning). +This command is intended for use in \file{cbx}\slash\file{bbx} files and in the \texttt{@preamble} of \file{bib} files. It checks the selected backend and warns if it is not \biber. The optional \prm{severity} argument is an integer specifying the severity. The value 1 triggers an informational message stating that \biber is recommended; 2 triggers a warning stating that \biber is required and the style\slash\file{bib} file may not work properly; 3 triggers an error stating that \biber is strictly required and the style\slash\file{bib} file will not work at all with any other backend. If \cmd{RequireBiber} is used multiple times, the highest \prm{severity} takes precedence. \file{cbx}\slash\file{bbx} files on the one hand and the \texttt{@preamble} snippets of all \file{bib} files on the other are tracked separately. If the optional \prm{severity} argument is omitted, the default severity is 2 (warning). \boolitem{pagetracker} @@ -6941,7 +8071,7 @@ This command maps a \sty{babel} language identifier to an \file{lbx} file. The \ \cmditem{NewBibliographyString}{key} -This command, which may be used in the preamble (including \file{cbx} and \file{bbx} files) as well as in \file{lbx} files, declares new localization strings, \ie it initializes a new \prm{key} to be used in the \prm{definitions} of \cmd{DefineBibliographyStrings}. The \prm{key} argument may also be a comma"=separated list of key names. The keys listed in \secref{aut:lng:key} are defined by default. +This command, which may be used in the preamble (including \file{cbx} and \file{bbx} files) as well as in \file{lbx} files, declares new localization strings, \ie it initializes a new \prm{key} to be used in the \prm{definitions} of \cmd{DefineBibliographyStrings} or \cmd{DeclareBibliographyStrings}. The \prm{key} argument may also be a comma"=separated list of key names. When used in an \file{lbx}, the \prm{key} is initialized only for the language specified by the name of the \file{lbx} file. The keys listed in \secref{aut:lng:key} are defined by default. \end{ltxsyntax} @@ -7121,6 +8251,7 @@ The following keys refer to roles which are expressed as an action (<edited by>, \item[bycontinuator] The expression <continued by \prm{name}>. \item[byredactor] The expression <redacted by \prm{name}>. \item[byreviser] The expression <revised by \prm{name}>. +\item[byreviewer] The expression <reviewed by \prm{name}>. \item[bycollaborator] An expression like <in collaboration with \prm{name}> or <in cooperation with \prm{name}>. \item[bytranslator] The expression <translated by \prm{name}> or <translated from \prm{language}by \prm{name}>. \item[bycommentator] The expression <commented by \prm{name}>. @@ -7242,6 +8373,7 @@ Roles which are related to supplementary material may also be expressed as objec \begin{keymarglist} \item[volume] The term <volume>, referring to a book. \item[volumes] The plural form of \texttt{volume}. +\item[involumes] The term <in>, as used in expressions like <in \prm{number of volumes} volumes>. \item[jourvol] The term <volume>, referring to a journal. \item[jourser] The term <series>, referring to a journal. \item[book] The term <book>, referring to a document division. @@ -7259,6 +8391,15 @@ Roles which are related to supplementary material may also be expressed as objec \item[reprint] The term <reprint>. \item[reprintof] The expression <reprint of \prm{title}>. \item[reprintas] The expression <reprinted as \prm{title}>. +\item[reprintfrom] The expression <reprinted from \prm{title}>. +\item[translationof] The expression <translation of \prm{title}>. +\item[translationas] The expression <translated as \prm{title}>. +\item[translationfrom] The expression <translated from [the] \prm{language}>. +\item[reviewof] The expression <review of \prm{title}>. +\item[origpubas] The expression <originally published as \prm{title}>. +\item[origpubin] The expression <originally published in \prm{year}>. +\item[astitle] The term <as>, as used in expressions like <published by \prm{publisher} as \prm{title}>. +\item[bypublisher] The term <by>, as used in expressions like <published by \prm{publisher}>. \end{keymarglist} \paragraph{Publication State} @@ -7297,6 +8438,7 @@ The following keys are typically used in the \bibfield{type} field of \bibtype{t \begin{keymarglist} \item[mathesis] An expression equivalent to the term <Master's thesis>. \item[phdthesis] The term <PhD thesis>, <PhD dissertation>, <doctoral thesis>, etc. +\item[candthesis] An expression equivalent to the term <Candidate thesis>. Used for <Candidate> degrees that have no clear equivalent to the Master's or doctoral level. \item[techreport] The term <technical report>. \item[resreport] The term <research report>. \item[software] The term <computer software>. @@ -7633,6 +8775,14 @@ Similar to \cmd{mkbibnamelast}, but intended for the name prefix. Similar to \cmd{mkbibnamelast}, but intended for the name affix. +\csitem{relatedpunct} + +The separator between the relatedtype bibliography localization string and the data from the first related entry. + +\csitem{relateddelim} + +The separator between the data of multiple related entries. The default definition is a linebreak. + \end{ltxsyntax} \subsubsection{Language-specific Commands} @@ -8690,10 +9840,356 @@ In order to minimize the risk of name clashes, \latex packages typically prefix \section*{Appendix} \addcontentsline{toc}{section}{Appendix} -\section{Default \bibfield{crossref} Setup} +\section{Default Driver Source Mappings} +\label{apx:maps} + +These are the driver default source mappings. For drivers other than \opt{bibtex} and \opt{ris}, they are highly experimental and subject to change (because the driver datatype itself is unstable or not well suited to bibliographic data). + +\subsection{\opt{bibtex}} +The \opt{bibtex} driver is of course the most comprehensive and mature of the \biblatex/\biber supported data formats. These source mapping defaults are how the aliases from sections \ref{bib:typ:als} and \ref{bib:fld:als} are implemented. + +\begin{lstlisting}[style=latex]{} +\DeclareDefaultSourcemap[datatype=bibtex]{ + \map{ + \step[typesource=conference, typetarget=inproceedings] + \step[typesource=electronic, typetarget=online] + \step[typesource=www, typetarget=online] + } + \map{ + \step[typesource=mastersthesis, typetarget=thesis, final] + \step[fieldset=type, fieldvalue=mathesis] + } + \map{ + \step[typesource=phdthesis, typetarget=thesis, final] + \step[fieldset=type, fieldvalue=phdthesis] + } + \map{ + \step[typesource=techreport, typetarget=report, final] + \step[fieldset=type, fieldvalue=techreport] + } + \map{ + \step[fieldsource=address, fieldtarget=location] + \step[fieldsource=school, fieldtarget=institution] + \step[fieldsource=annote, fieldtarget=annotation] + \step[fieldsource=archiveprefix, fieldtarget=eprinttype] + \step[fieldsource=journal, fieldtarget=journaltitle] + \step[fieldsource=primaryclass, fieldtarget=eprintclass] + \step[fieldsource=key, fieldtarget=sortkey] + \step[fieldsource=pdf, fieldtarget=file] + } +} +\end{lstlisting} + +\subsection{\opt{endnotexml}} + +The \opt{endnotexml} driver for \biber uses the following mappings. This format is quite messy and not well suited to robust typsetting of bibliographic data. It is presented largely as an example of \biber's modular datasource abilities and also of how to map foreign data models into the \biblatex data model. Mappings from such messy and relatively simple data models are inevitably fragile and are of limited use. + +\begin{lstlisting}[style=latex]{} +\DeclareDefaultSourcemap[datatype=endnotexml]{ + \map{ + \step[typesource={Aggregated Database}, typetarget=misc] + \step[typesource={Ancient Text}, typetarget=misc] + \step[typesource=Artwork, typetarget=artwork] + \step[typesource={Audiovisual Material}, typetarget=misc] + \step[typesource=Bill, typetarget=jurisdiction] + \step[typesource=Blog, typetarget=online] + \step[typesource=Book, typetarget=book] + \step[typesource={Book Section}, typetarget=inbook] + \step[typesource=Case, typetarget=jurisdiction] + \step[typesource=Catalog, typetarget=misc] + \step[typesource={Chart or Table}, typetarget=misc] + \step[typesource={Classical Work}, typetarget=misc] + \step[typesource={Computer Program}, typetarget=software] + \step[typesource={Conference Paper}, typetarget=inproceedings] + \step[typesource={Conference Proceedings}, typetarget=proceedings] + \step[typesource=Dictionary, typetarget=inreference] + \step[typesource={Edited Book}, typetarget=collection] + \step[typesource={Electronic Article}, typetarget=article] + \step[typesource={Electronic Book}, typetarget=book] + \step[typesource={Encyclopedia}, typetarget=reference] + \step[typesource=Equation, typetarget=misc] + \step[typesource=Figure, typetarget=misc] + \step[typesource={Film or Broadcast}, typetarget=movie] + \step[typesource={Government Document}, typetarget=report] + \step[typesource=Grant, typetarget=misc] + \step[typesource=Hearing, typetarget=jurisdiction] + \step[typesource={Journal Article}, typetarget=article] + \step[typesource={Legal Rule or Regulation}, typetarget=legislation] + \step[typesource={Magazine Article}, typetarget=article] + \step[typesource=Manuscript, typetarget=unpublished] + \step[typesource=Map, typetarget=misc] + \step[typesource={Newspaper Article}, typetarget=article] + \step[typesource={Online Database}, typetarget=online] + \step[typesource={Online Multimedia}, typetarget=online] + \step[typesource=Pamphlet, typetarget=booklet] + \step[typesource=Patent, typetarget=patent] + \step[typesource={Personal Communication}, typetarget=letter] + \step[typesource=Report, typetarget=report] + \step[typesource=Serial, typetarget=periodical] + \step[typesource=Standard, typetarget=standard] + \step[typesource=Statute, typetarget=legislation] + \step[typesource=Thesis, typetarget=thesis] + \step[typesource={Unpublished Work}, typetarget=unpublished] + \step[typesource={Web Page}, typetarget=online] + } + \map{ + \step[fieldsource={electronic-resource-num}, fieldtarget=eprint] + \step[fieldsource={alt-title}, fieldtarget=shorttitle] + \step[fieldsource={meeting-place}, fieldtarget=venue] + \step[fieldsource={pub-location}, fieldtarget=location] + \step[fieldsource={orig-pub}, fieldtarget=origpublisher] + \step[fieldsource={authors}, fieldtarget=author] + \step[fieldsource={secondary-authors}, fieldtarget=editor] + \step[fieldsource={tertiary-authors}, fieldtarget=commentator] + \step[fieldsource={subsidiary-authors}, fieldtarget=translator] + \step[fieldsource={year}, fieldtarget=date] + \step[fieldsource={pub-dates}, fieldtarget=date] + \step[fieldsource={num-vols}, fieldtarget=volumes] + \step[fieldsource={call-num}, fieldtarget=library] + \step[fieldsource={notes}, fieldtarget=note] + \step[fieldsource={secondary-title}, fieldtarget=subtitle] + \step[fieldsource={work-type}, fieldtarget=type] + } + \map{ + \pertype{Edited Book} + \step[fieldsource=contributors/authors, fieldtarget=contributors/editor] + } + \map{ + \pertype{Electronic Article} + \pertype{Journal Article} + \pertype{Magazine Article} + \pertype{Newspaper Article} + \step[fieldsource=isbn, fieldtarget=issn] + } + \map{ + \pertype{Patent} + \pertype{Report} + \pertype{Government Document} + \pertype{Legal Rule or Regulation} + \step[fieldsource=isbn, fieldtarget=number] + } + \map{ + \pertype{Blog} + \pertype{Online Database} + \pertype{Online Multimedia} + \pertype{Web Page} + \step[fieldsource={titles/secondary-title}, fieldtarget={titles/title}] + } + \map{ + \pertype{Book Section} + \step[fieldsource={titles/secondary-title}, fieldtarget={titles/booktitle}] + } + \map{ + \pertype{Book} + \pertype{Electronic Book} + \pertype{Manuscript} + \pertype{Unpublished Work} + \step[fieldsource={titles/secondary-title}, fieldtarget={titles/series}] + } + \map{ + \pertype{Conference Paper} + \pertype{Conference Proceedings} + \step[fieldsource={titles/secondary-title}, fieldtarget={titles/eventtitle}] + } + \map{ + \pertype{Electronic Article} + \pertype{Journal Article} + \pertype{Magazine Article} + \pertype{Newspaper Article} + \step[fieldsource={titles/secondary-title}, fieldtarget={titles/journaltitle}] + } + \map{ + \pertype{Book Section} + \step[fieldsource={titles/tertiary-title}, fieldtarget={titles/booktitle}] + } + \map{ + \pertype{Conference Proceedings} + \pertype{periodical} + \step[fieldsource={titles/tertiary-title}, fieldtarget={titles/series}] + } +} +\end{lstlisting} + +\subsection{\opt{ris}} + +The \opt{ris} driver reflects the fact that \opt{ris} itself is a very simple and stable format. It is in fact so simple, it's hardly of any use for most \biblatex users. Again, here more as a proof of concept example. + +\begin{lstlisting}[style=latex]{} +\DeclareDefaultSourcemap[datatype=ris]{ + \map{ + \step[typesource=ART, typetarget=artwork] + \step[typesource=BILL, typetarget=jurisdiction] + \step[typesource=BOOK, typetarget=book] + \step[typesource=CHAP, typetarget=inbook] + \step[typesource=COMP, typetarget=software] + \step[typesource=CONF, typetarget=proceedings] + \step[typesource=GEN, typetarget=misc] + \step[typesource=JFULL, typetarget=article] + \step[typesource=JOUR, typetarget=article] + \step[typesource=MGZN, typetarget=misc] + \step[typesource=MPCT, typetarget=movie] + \step[typesource=NEWS, typetarget=misc] + \step[typesource=PAMP, typetarget=misc] + \step[typesource=PAT, typetarget=patent] + \step[typesource=PCOMM, typetarget=misc] + \step[typesource=RPRT, typetarget=report] + \step[typesource=SER, typetarget=misc] + \step[typesource=SLIDE, typetarget=misc] + \step[typesource=SOUND, typetarget=audio] + \step[typesource=STAT, typetarget=legal] + \step[typesource=THES, typetarget=thesis] + \step[typesource=UNBILL, typetarget=jurisdiction] + \step[typesource=UNPB, typetarget=unpublished] + } + \map{ + \step[fieldsource=Y1, fieldtarget=date] + \step[fieldsource=PY, fieldtarget=date] + \step[fieldsource=Y2, fieldtarget=eventdate] + \step[fieldsource=A1, fieldtarget=author] + \step[fieldsource=AU, fieldtarget=author] + \step[fieldsource=A2, fieldtarget=editor] + \step[fieldsource=A3, fieldtarget=editor] + \step[fieldsource=ED, fieldtarget=editor] + \step[fieldsource=SPEP, fieldtarget=pages] + \step[fieldsource=N1, fieldtarget=note] + \step[fieldsource=N2, fieldtarget=abstract] + \step[fieldsource=AB, fieldtarget=abstract] + \step[fieldsource=JO, fieldtarget=journaltitle] + \step[fieldsource=JF, fieldtarget=journaltitle] + \step[fieldsource=JA, fieldtarget=shortjournal] + \step[fieldsource=VL, fieldtarget=volume] + \step[fieldsource=IS, fieldtarget=issue] + \step[fieldsource=CP, fieldtarget=issue] + \step[fieldsource=CY, fieldtarget=location] + \step[fieldsource=SN, fieldtarget=isbn] + \step[fieldsource=PB, fieldtarget=publisher] + \step[fieldsource=KW, fieldtarget=keywords] + \step[fieldsource=TI, fieldtarget=title] + \step[fieldsource=U1, fieldtarget=usera] + \step[fieldsource=U2, fieldtarget=userb] + \step[fieldsource=U3, fieldtarget=userc] + \step[fieldsource=U4, fieldtarget=userd] + \step[fieldsource=U5, fieldtarget=usere] + \step[fieldsource=UR, fieldtarget=url] + \step[fieldsource=L1, fieldtarget=file] + } +} +\end{lstlisting} + +\subsection{\opt{zoterordfxml}} + +The \opt{zoterordfxml} driver reads the Zotero\footnote{\url{www.zotero.org}} XML representation of its RDF format. From the \biblatex point of view, it suffers from a lack of the notion of a citation key and so is of limited use. The format may include a citation key in the future at which point the \biber driver and these default mappings will be updated. As with \opt{endnotexml}, the format is somewhat messy with, in particular, a very limited way of dealing with related entries which makes the driver setup rather ugly. As can be seen below, it is possible to map into a field prefixed with BIBERCUSTOM which is not a real field in the data model but can be detected in the \biber driver itself and used to process a source field which does not map naturally to any \biblatex data model field as it needs special treatment. This is messy but is due largely due to messy source data models. + +\begin{lstlisting}[style=latex]{} +\DeclareDefaultSourcemap[datatype=zoterordfxml]{ + \map{ + \step[typesource=conferencePaper, typetarget=inproceedings] + \step[typesource=bookSection, typetarget=inbook] + \step[typesource=journalArticle, typetarget=article] + \step[typesource=magazineArticle, typetarget=article] + \step[typesource=newspaperArticle, typetarget=article] + \step[typesource=encyclopediaArticle, typetarget=inreference] + \step[typesource=manuscript, typetarget=unpublished] + \step[typesource=document, typetarget=misc] + \step[typesource=dictionaryEntry, typetarget=inreference] + \step[typesource=interview, typetarget=misc] + \step[typesource=film, typetarget=movie] + \step[typesource=webpage, typetarget=online] + \step[typesource=note, typetarget=misc] + \step[typesource=attachment, typetarget=misc] + \step[typesource=bill, typetarget=legislation] + \step[typesource=case, typetarget=jurisdiction] + \step[typesource=hearing, typetarget=jurisdiction] + \step[typesource=statute, typetarget=legislation] + \step[typesource=email, typetarget=letter] + \step[typesource=map, typetarget=image] + \step[typesource=blogPost, typetarget=online] + \step[typesource=instantMessage, typetarget=letter] + \step[typesource=forumPost, typetarget=online] + \step[typesource=audioRecording, typetarget=audio] + \step[typesource=presentation, typetarget=inproceedings] + \step[typesource=videoRecording, typetarget=video] + \step[typesource=tvBroadcast, typetarget=misc] + \step[typesource=radioBroadcast, typetarget=misc] + \step[typesource=podcast, typetarget=online] + \step[typesource=computerProgram, typetarget=software] + } + \map{ + \step[fieldsource=bib:contributors, fieldtarget=author] + \step[fieldsource=bib:authors, fieldtarget=author] + \step[fieldsource=z:interviewers, fieldtarget=author] + \step[fieldsource=z:directors, fieldtarget=author] + \step[fieldsource=z:scriptwriters, fieldtarget=author] + \step[fieldsource=z:bookAuthor, fieldtarget=author] + \step[fieldsource=z:inventors, fieldtarget=author] + \step[fieldsource=z:recipients, fieldtarget=author] + \step[fieldsource=z:counsels, fieldtarget=author] + \step[fieldsource=z:artists, fieldtarget=author] + \step[fieldsource=z:podcasters, fieldtarget=author] + \step[fieldsource=z:presenters, fieldtarget=author] + \step[fieldsource=z:commenters, fieldtarget=author] + \step[fieldsource=z:programers, fieldtarget=author] + \step[fieldsource=z:composers, fieldtarget=author] + \step[fieldsource=z:producers, fieldtarget=author] + \step[fieldsource=z:performers, fieldtarget=author] + \step[fieldsource=bib:editors, fieldtarget=editor] + \step[fieldsource=z:translators, fieldtarget=translator] + \step[fieldsource=z:seriesEditors, fieldtarget=editor] + \step[fieldsource=dc:date, fieldtarget=date] + \step[fieldsource=bib:pages, fieldtarget=pages] + \step[fieldsource=dc:title, fieldtarget=title] + \step[fieldsource=z:proceedingsTitle, fieldtarget=title] + \step[fieldsource=z:encyclopediaTitle, fieldtarget=title] + \step[fieldsource=z:dictionaryTitle, fieldtarget=title] + \step[fieldsource=z:websiteTitle, fieldtarget=title] + \step[fieldsource=z:forumTitle, fieldtarget=title] + \step[fieldsource=z:blogTitle, fieldtarget=title] + \step[fieldsource=z:nameOfAct, fieldtarget=title] + \step[fieldsource=z:caseName, fieldtarget=title] + \step[fieldsource=z:meetingName, fieldtarget=eventtitle] + \step[fieldsource=prism:volume, fieldtarget=volume] + \step[fieldsource=numberOfVolumes, fieldtarget=volumes] + \step[fieldsource=z:numPages, fieldtarget=pagetotal] + \step[fieldsource=prism:edition, fieldtarget=edition] + \step[fieldsource=dc:description, fieldtarget=note] + \step[fieldsource=dc:alternative, fieldtarget=shortjournal] + \step[fieldsource=dcterms:abstract, fieldtarget=abstract] + \step[fieldsource=dc:type, fieldtarget=type] + \step[fieldsource=z:shortTitle, fieldtarget=shorttitle] + \step[fieldsource=z:bookTitle, fieldtarget=booktitle] + \step[fieldsource=prism:number, fieldtarget=number] + \step[fieldsource=z:patentNumber, fieldtarget=number] + \step[fieldsource=z:codeNumber, fieldtarget=number] + \step[fieldsource=z:reportNumber, fieldtarget=number] + \step[fieldsource=z:billNumber, fieldtarget=number] + \step[fieldsource=z:documentNumber, fieldtarget=number] + \step[fieldsource=z:publicLawNumber, fieldtarget=number] + \step[fieldsource=z:applicationNumber, fieldtarget=number] + \step[fieldsource=z:episodeNumber, fieldtarget=number] + \step[fieldsource=dc:coverage, fieldtarget=location] + \step[fieldsource=z:university, fieldtarget=institution] + \step[fieldsource=z:language, fieldtarget=language] + \step[fieldsource=z:version, fieldtarget=version] + \step[fieldsource=z:libraryCatalog, fieldtarget=library] + \step[fieldsource=dcterms:isPartOf, fieldtarget=BIBERCUSTOMpartof] + \step[fieldsource=dc:identifier, fieldtarget=BIBERCUSTOMidentifier] + \step[fieldsource=dc:publisher, fieldtarget=BIBERCUSTOMpublisher] + \step[fieldsource=dc:presentedAt, fieldtarget=BIBERCUSTOMpresentedat] + \step[fieldsource=dc:subject, fieldtarget=BIBERCUSTOMsubject] + \step[fieldsource={dcterms:BIBERCUSTOMpartof/bib:Journal}, + fieldtarget={dcterms:BIBERCUSTOMpartof/periodical}] + \step[fieldsource={dcterms:BIBERCUSTOMpartof/bib:Book}, + fieldtarget={dcterms:BIBERCUSTOMpartof/book}] + \step[fieldsource={dcterms:BIBERCUSTOMpartof/bib:ConferenceProceedings}, + fieldtarget={dcterms:BIBERCUSTOMpartof/proceedings}] + } +} +\end{lstlisting} + +\section{Default Inheritance Setup} \label{apx:ref} -The following table shows the Biber cross-referencing rules defined by default. +The following table shows the \biber cross-referencing rules defined by default. Please refer to \secref{bib:cav:ref, aut:ctm:ref} for explanation. \begingroup @@ -8725,8 +10221,8 @@ Please refer to \secref{bib:cav:ref, aut:ctm:ref} for explanation. options\par presort\par related\par - relatedstring\par relatedtype\par + relatedstring\par shorthand\par shorthandintro\par sortkey & @@ -8930,7 +10426,7 @@ arxiv &\+&\+&\_&\_\\ autocite &\+&\+&\_&\_\\ autopunct &\+&\+&\_&\_\\ babel &\+&\+&\_&\_\\ -backend &\+&\+&\_&\_\\ +backend &\+&\_&\_&\_\\ backref &\+&\+&\_&\_\\ backrefsetstyle &\+&\+&\_&\_\\ backrefstyle &\+&\+&\_&\_\\ @@ -8943,6 +10439,7 @@ citereset &\+&\+&\_&\_\\ citestyle &\+&\_&\_&\_\\ citetracker &\+&\+&\_&\_\\ clearlang &\+&\+&\_&\_\\ +datamodel &\+&\_&\_&\_\\ dataonly &\_&\_&\+&\+\\ date &\+&\+&\_&\_\\ dateabbrev &\+&\+&\_&\_\\ @@ -8959,6 +10456,8 @@ indexing &\+&\+&\+&\+\\ isbn &\+&\+&\_&\_\\ % style labelalpha &\+&\+&\+&\_\\ labelnumber &\+&\+&\+&\_\\ +labeltitle &\+&\+&\+&\_\\ +labeltitleyear &\+&\+&\+&\_\\ labelyear &\+&\+&\+&\_\\ language &\+&\+&\_&\_\\ loadfiles &\+&\+&\_&\_\\ @@ -8993,6 +10492,7 @@ skiplab &\_&\_&\+&\+\\ skiplos &\_&\_&\+&\+\\ sortcase &\+&\+&\_&\_\\ sortcites &\+&\+&\_&\_\\ +sortfirstinits &\+&\+&\_&\_\\ sorting &\+&\+&\_&\_\\ sortlocale &\+&\+&\_&\_\\ sortlos &\+&\+&\_&\_\\ @@ -9018,6 +10518,27 @@ This revision history is a list of changes relevant to users of this package. Ch \begin{changelog} +\begin{release}{2.0}{2012-07-01} +\item Misc bug fixes +\item Generalised \opt{singletitle} test a little\see{aut:aux:tst}\BiberOnlyMark +\item Added new special field \bibfield{extratitleyear}\see{aut:bbx:fld}\BiberOnlyMark +\item Customisable data model\see{aut:ctm:dm}\BiberOnlyMark +\item Added \cmd{DeclareDefaultSourcemap}\see{aut:ctm:map}\BiberOnlyMark +\item Added \opt{labeltitle} option\see{use:opt:pre:int}\BiberOnlyMark +\item Added new special field \bibfield{extratitle}\see{aut:bbx:fld}\BiberOnlyMark +\item Made special field \bibfield{labeltitle} customisable\see{aut:bbx:fld}\BiberOnlyMark +\item Removed field \bibfield{reprinttitle}\see{use:rel}\BiberOnlyMark +\item Added related entry feature\see{use:rel}\BiberOnlyMark +\item Added \cmd{DeclareNoinit}\see{aut:ctm:noinit}\BiberOnlyMark +\item Added \cmd{DeclareNosort}\see{aut:ctm:nosort}\BiberOnlyMark +\item Added \opt{sorting} option for \cmd{printbibliography} and \cmd{printshorthands}\see{use:bib:bib}\BiberOnlyMark +\item Added \texttt{ids} field for citekey aliasing\see{bib:fld}\BiberOnlyMark +\item Added \opt{sortfirstinits} option\see{use:opt:pre:int}\BiberOnlyMark +\item Added data stream modification feature\see{aut:ctm:map}\BiberOnlyMark +\item Added customisable labels feature\see{aut:ctm:lab}\BiberOnlyMark +\item Added \cmd{citeyear*} and \cmd{citedate*}\see{use:cit:txt} +\end{release} + \begin{release}{1.7}{2011-11-13} \item Added \texttt{xdata} containers\see{use:use:xdat}\BiberOnlyMark \item Added special entry type \bibfield{xdata}\see{bib:typ:blx}\BiberOnlyMark @@ -10387,3 +11908,8 @@ This revision history is a list of changes relevant to users of this package. Ch \end{changelog} \end{document} +%%% Local Variables: +%%% TeX-command-default: "PDFLaTeX" +%%% eval: (auto-fill-mode -1) +%%% eval: (visual-line-mode) +%%% End: diff --git a/Master/texmf-dist/doc/latex/biblatex/bibtex/bib/biblatex-examples.bib b/Master/texmf-dist/doc/latex/biblatex/bibtex/bib/biblatex-examples.bib new file mode 100644 index 00000000000..b979e19006e --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex/bibtex/bib/biblatex-examples.bib @@ -0,0 +1,1434 @@ +@PREAMBLE{ "\RequireBiber[2]" } +@string{anch-ie = {Angew.~Chem. Int.~Ed.} } +@string{cup = {Cambridge University Press} } +@string{dtv = {Deutscher Taschenbuch-Verlag} } +@string{hup = {Harvard University Press} } +@string{jams = {J.~Amer. Math. Soc.} } +@string{jchph = {J.~Chem. Phys.} } +@string{jomch = {J.~Organomet. Chem.} } +@string{pup = {Princeton University Press} } + +@incollection{westfahl:space, + crossref = {westfahl:frontier}, + hyphenation = {american}, + author = {Westfahl, Gary}, + indextitle = {True Frontier, The}, + title = {The True Frontier}, + subtitle = {Confronting and Avoiding the Realities of Space in American + Science Fiction Films}, + pages = {55--65}, + annotation = {A cross-referenced article from a \texttt{collection}. This is + an \texttt{incollection} entry with a \texttt{crossref} field. Note the + \texttt{subtitle} and \texttt{indextitle} fields} +} +@set{set, + entryset = {herrmann,aksin,yoon}, + annotation = {A \texttt{set} with three members} +} +@set{stdmodel, + entryset = {glashow,weinberg,salam}, + annotation = {A \texttt{set} with three members discussing the standard + model of particle physics} +} +@article{aksin, + author = {Aks{\i}n, {\"O}zge and T{\"u}rkmen, Hayati and Artok, Levent + and {\k{C}}etinkaya, Bekir and Ni, Chaoying + and B{\"u}y{\"u}kg{\"u}ng{\"o}r, Orhan and {\"O}zkal, Erhan}, + indextitle = {Effect of immobilization on catalytic characteristics}, + title = {Effect of immobilization on catalytic characteristics of saturated + Pd-N-heterocyclic carbenes in Mizoroki-Heck reactions}, + journaltitle = jomch, + volume = {691}, + number = {13}, + date = {2006}, + pages = {3027--3036} +} +@article{angenendt, + hyphenation = {german}, + author = {Angenendt, Arnold}, + indextitle = {In Honore Salvatoris}, + title = {In Honore Salvatoris~-- Vom Sinn und Unsinn der Patrozinienkunde}, + shorttitle = {In Honore Salvatoris}, + journaltitle = {Revue d'Histoire Eccl{\'e}siastique}, + volume = {97}, + date = {2002}, + pages = {431--456, 791--823}, + annotation = {A German article in a French journal. Apart from that, a + typical \texttt{article} entry. Note the \texttt{indextitle} field} +} +@article{baez/article, + hyphenation = {american}, + author = {Baez, John C. and Lauda, Aaron D.}, + title = {Higher-Dimensional Algebra V: 2-Groups}, + journaltitle = {Theory and Applications of Categories}, + volume = {12}, + version = {3}, + date = {2004}, + pages = {423--491}, + eprinttype = {arxiv}, + eprint = {math/0307200v3}, + annotation = {An \texttt{article} with \texttt{eprint} and + \texttt{eprinttype} fields. Note that the arXiv reference is transformed + into a clickable link if \texttt{hyperref} support has been enabled. + Compare \texttt{baez\slash online}, which is the same item given as an + \texttt{online} entry} +} +@article{bertram, + hyphenation = {american}, + author = {Bertram, Aaron and Wentworth, Richard}, + title = {Gromov invariants for holomorphic maps on Riemann surfaces}, + shorttitle = {Gromov invariants}, + journaltitle = jams, + volume = {9}, + number = {2}, + date = {1996}, + pages = {529--571}, + annotation = {An \texttt{article} entry with a \texttt{volume} and a + \texttt{number} field} +} +@article{doody, + title = {Hemingway's Style and Jake's Narration}, + author = {Doody, Terrence}, + related = {matuz:doody}, + relatedstring = {\autocap{e}xcerpt in}, + journal = {The Journal of Narrative Technique}, + volume = {4}, + number = {3}, + pages = {212--225}, + year = {1974}, + annotation = {An \texttt{article} entry cited as an excerpt from a + \texttt{collection} entry. Note the format of the \texttt{related} + and \texttt{relatedstring} fields} +} +@collection{matuz:doody, + title = {Contemporary Literary Criticism}, + editor = {Matuz, Roger}, + volume = {61}, + location = {Detroit}, + publisher = {Gale}, + pages = {204--208}, + year = {1990}, + annotation = {A \texttt{collection} entry providing the excerpt information + for the \texttt{doody} entry. Note the format of the \texttt{pages} field} +} +@article{gillies, + hyphenation = {british}, + author = {Gillies, Alexander}, + title = {Herder and the Preparation of Goethe's Idea of World Literature}, + journaltitle = {Publications of the English Goethe Society}, + volume = {9}, + series = {newseries}, + date = {1933}, + pages = {46--67}, + annotation = {An \texttt{article} entry with a \texttt{series} and a + \texttt{volume} field. Note that format of the \texttt{series} field in + the database file} +} +@article{glashow, + author = {Glashow, Sheldon}, + title = {Partial Symmetries of Weak Interactions}, + journaltitle = {Nucl.~Phys.}, + volume = {22}, + date = {1961}, + pages = {579--588} +} +@article{herrmann, + author = {Herrmann, Wolfgang A. and {\"O}fele, Karl and Schneider, Sabine K. + and Herdtweck, Eberhardt and Hoffmann, Stephan D.}, + indextitle = {Carbocyclic carbene as an efficient catalyst, A}, + title = {A carbocyclic carbene as an efficient catalyst ligand for C--C + coupling reactions}, + journaltitle = anch-ie, + volume = {45}, + number = {23}, + date = {2006}, + pages = {3859--3862} +} +@article{kastenholz, + hyphenation = {american}, + author = {Kastenholz, M. A. and H{\"u}nenberger, Philippe H.}, + indextitle = {Computation of ionic solvation free energies}, + title = {Computation of methodology\hyphen independent ionic solvation free + energies from molecular simulations}, + subtitle = {I. The electrostatic potential in molecular liquids}, + journaltitle = jchph, + volume = {124}, + eid = {124106}, + date = {2006}, + doi = {10.1063/1.2172593}, + annotation = {An \texttt{article} entry with an \texttt{eid} and a + \texttt{doi} field. Note that the \textsc{doi} is transformed into a + clickable link if \texttt{hyperref} support has been enabled}, + abstract = {The computation of ionic solvation free energies from atomistic + simulations is a surprisingly difficult problem that has found no + satisfactory solution for more than 15 years. The reason is that the + charging free energies evaluated from such simulations are affected by + very large errors. One of these is related to the choice of a specific + convention for summing up the contributions of solvent charges to the + electrostatic potential in the ionic cavity, namely, on the basis of point + charges within entire solvent molecules (M scheme) or on the basis of + individual point charges (P scheme). The use of an inappropriate + convention may lead to a charge-independent offset in the calculated + potential, which depends on the details of the summation scheme, on the + quadrupole-moment trace of the solvent molecule, and on the approximate + form used to represent electrostatic interactions in the system. However, + whether the M or P scheme (if any) represents the appropriate convention + is still a matter of on-going debate. The goal of the present article is + to settle this long-standing controversy by carefully analyzing (both + analytically and numerically) the properties of the electrostatic + potential in molecular liquids (and inside cavities within them).} +} +@article{murray, + hyphenation = {american}, + author = {Hostetler, Michael J. and Wingate, Julia E. and Zhong, Chuan-Jian + and Harris, Jay E. and Vachet, Richard W. and Clark, Michael R. + and Londono, J. David and Green, Stephen J. and Stokes, Jennifer J. + and Wignall, George D. and Glish, Gary L. and Porter, Marc D. + and Evans, Neal D. and Murray, Royce W.}, + indextitle = {Alkanethiolate gold cluster molecules}, + title = {Alkanethiolate gold cluster molecules with core diameters from 1.5 + to 5.2~nm}, + subtitle = {Core and monolayer properties as a function of core size}, + shorttitle = {Alkanethiolate gold cluster molecules}, + journaltitle = {Langmuir}, + volume = {14}, + number = {1}, + date = {1998}, + pages = {17--30}, + annotation = {An \texttt{article} entry with \arabic{author} authors. By + default, long author and editor lists are automatically truncated. This is + configurable} +} +@article{reese, + hyphenation = {american}, + author = {Reese, Trevor R.}, + title = {Georgia in Anglo-Spanish Diplomacy, 1736-1739}, + journaltitle = {William and Mary Quarterly}, + volume = {15}, + series = {3}, + date = {1958}, + pages = {168--190}, + annotation = {An \texttt{article} entry with a \texttt{series} and a + \texttt{volume} field. Note the format of the series. If the value of the + \texttt{series} field is an integer, this number is printed as an ordinal + and the string \enquote*{series} is appended automatically} +} +@article{sarfraz, + author = {M. Sarfraz and M. F. A. Razzak}, + title = {Technical section: {An} algorithm for automatic capturing of the + font outlines}, + journal = {Computers and Graphics}, + volume = {26}, + number = {5}, + pages = {795--804}, + year = {2002}, + issn = {0097-8493}, + annotation = {An \texttt{article} entry with an \texttt{issn} field} +} +@article{shore, + author = {Shore, Bradd}, + title = {Twice-Born, Once Conceived}, + subtitle = {Meaning Construction and Cultural Cognition}, + journaltitle = {American Anthropologist}, + volume = {93}, + series = {newseries}, + number = {1}, + date = {1991-03}, + pages = {9--27}, + annotation = {An \texttt{article} entry with \texttt{series}, + \texttt{volume}, and \texttt{number} fields. Note the format of the + \texttt{series} which is a localization key} +} +@article{sigfridsson, + hyphenation = {american}, + author = {Sigfridsson, Emma and Ryde, Ulf}, + indextitle = {Methods for deriving atomic charges}, + title = {Comparison of methods for deriving atomic charges from the + electrostatic potential and moments}, + journaltitle = {Journal of Computational Chemistry}, + volume = {19}, + number = {4}, + date = {1998}, + doi = {10.1002/(SICI)1096-987X(199803)19:4<377::AID-JCC1>3.0.CO;2-P}, + pages = {377--395}, + annotation = {An \texttt{article} entry with \texttt{volume}, + \texttt{number}, and \texttt{doi} fields. Note that the \textsc{doi} is + transformed into a clickable link if \texttt{hyperref} support has been + enabled}, + abstract = {Four methods for deriving partial atomic charges from the + quantum chemical electrostatic potential (CHELP, CHELPG, Merz-Kollman, and + RESP) have been compared and critically evaluated. It is shown that + charges strongly depend on how and where the potential points are + selected. Two alternative methods are suggested to avoid the + arbitrariness in the point-selection schemes and van der Waals exclusion + radii: CHELP-BOW, which also estimates the charges from the electrostatic + potential, but with potential points that are Boltzmann-weighted after + their occurrence in actual simulations using the energy function of the + program in which the charges will be used, and CHELMO, which estimates + the charges directly from the electrostatic multipole moments. Different + criteria for the quality of the charges are discussed.} +} +@article{spiegelberg, + hyphenation = {german}, + sorttitle = {Intention und Intentionalitat in der Scholastik, bei Brentano + und Husserl}, + indexsorttitle = {Intention und Intentionalitat in der Scholastik, bei + Brentano und Husserl}, + author = {Spiegelberg, Herbert}, + title = {\mkbibquote{Intention} und \mkbibquote{Intentionalit{\"a}t} in der + Scholastik, bei Brentano und Husserl}, + shorttitle = {Intention und Intentionalit{\"a}t}, + journaltitle = {Studia Philosophica}, + volume = {29}, + date = {1969}, + pages = {189--216}, + annotation = {An \texttt{article} entry. Note the \texttt{sorttitle} and + \texttt{indexsorttitle} fields and the markup of the quotes in the + database file} +} +@article{springer, + hyphenation = {british}, + author = {Springer, Otto}, + title = {Mediaeval Pilgrim Routes from Scandinavia to Rome}, + shorttitle = {Mediaeval Pilgrim Routes}, + journaltitle = {Mediaeval Studies}, + volume = {12}, + date = {1950}, + pages = {92--122}, + annotation = {A plain \texttt{article} entry} +} +@article{weinberg, + author = {Weinberg, Steven}, + title = {A Model of Leptons}, + journaltitle = {Phys.~Rev.~Lett.}, + volume = {19}, + date = {1967}, + pages = {1264--1266} +} +@article{yoon, + author = {Yoon, Myeong S. and Ryu, Dowook and Kim, Jeongryul + and Ahn, Kyo Han}, + indextitle = {Palladium pincer complexes}, + title = {Palladium pincer complexes with reduced bond angle strain: + efficient catalysts for the Heck reaction}, + journaltitle = {Organometallics}, + volume = {25}, + number = {10}, + date = {2006}, + pages = {2409--2411} +} +@book{aristotle:anima, + keywords = {primary}, + hyphenation = {british}, + author = {Aristotle}, + editor = {Hicks, Robert Drew}, + title = {De Anima}, + publisher = cup, + location = {Cambridge}, + date = {1907}, + annotation = {A \texttt{book} entry with an \texttt{author} and an + \texttt{editor}} +} +@book{aristotle:physics, + keywords = {primary}, + hyphenation = {american}, + author = {Aristotle}, + translator = {Wicksteed, P. H. and Cornford, F. M.}, + title = {Physics}, + shorttitle = {Physics}, + publisher = {G. P. Putnam}, + location = {New York}, + date = {1929}, + annotation = {A \texttt{book} entry with a \texttt{translator} field} +} +@book{aristotle:poetics, + keywords = {primary}, + hyphenation = {british}, + author = {Aristotle}, + editor = {Lucas, D. W.}, + title = {Poetics}, + shorttitle = {Poetics}, + series = {Clarendon Aristotle}, + publisher = {Clarendon Press}, + location = {Oxford}, + date = {1968}, + annotation = {A \texttt{book} entry with an \texttt{author} and an + \texttt{editor} as well as a \texttt{series} field} +} +@book{aristotle:rhetoric, + keywords = {primary}, + hyphenation = {british}, + sorttitle = {Rhetoric of Aristotle}, + author = {Aristotle}, + editor = {Cope, Edward Meredith}, + commentator = {Cope, Edward Meredith}, + indextitle = {Rhetoric of Aristotle, The}, + title = {The Rhetoric of Aristotle with a commentary by the late Edward + Meredith Cope}, + shorttitle = {Rhetoric}, + volumes = {3}, + publisher = cup, + date = {1877}, + annotation = {A commented edition. Note the concatenation of the + \texttt{editor} and \texttt{commentator} fields as well as the + \texttt{volumes}, \texttt{sorttitle}, and \texttt{indextitle} fields} +} +@book{augustine, + hyphenation = {american}, + author = {Augustine, Robert L.}, + title = {Heterogeneous catalysis for the synthetic chemist}, + shorttitle = {Heterogeneous catalysis}, + publisher = {Marcel Dekker}, + location = {New York}, + date = {1995}, + annotation = {A plain \texttt{book} entry} +} +@book{averroes/bland, + keywords = {primary}, + hyphenation = {american}, + author = {Averroes}, + editor = {Bland, Kalman P.}, + translator = {Bland, Kalman P.}, + indextitle = {Epistle on the Possibility of Conjunction, The}, + title = {The Epistle on the Possibility of Conjunction with the Active + Intellect by Ibn Rushd with the Commentary of Moses Narboni}, + shorttitle = {Possibility of Conjunction}, + series = {Moreshet: Studies in Jewish History, Literature and Thought}, + number = {7}, + publisher = {Jewish Theological Seminary of America}, + location = {New York}, + date = {1982}, + annotation = {A \texttt{book} entry with a \texttt{series} and a + \texttt{number}. Note the concatenation of the \texttt{editor} and + \texttt{translator} fields as well as the \texttt{indextitle} field} +} +@book{averroes/hannes, + keywords = {primary}, + hyphenation = {german}, + sorttitle = {Uber die Moglichkeit der Conjunktion}, + indexsorttitle = {Uber die Moglichkeit der Conjunktion}, + author = {Averroes}, + editor = {Hannes, Ludwig}, + translator = {Hannes, Ludwig}, + annotator = {Hannes, Ludwig}, + indextitle = {{\"U}ber die M{\"o}glichkeit der Conjunktion}, + title = {Des Averro{\"e}s Abhandlung: \mkbibquote{{\"U}ber die + M{\"o}glichkeit der Conjunktion} oder \mkbibquote{{\"U}ber den + materiellen Intellekt}}, + shorttitle = {{\"U}ber die M{\"o}glichkeit der Conjunktion}, + publisher = {C.~A. Kaemmerer}, + location = {Halle an der Saale}, + date = {1892}, + annotation = {An annotated edition. Note the concatenation of the + \texttt{editor}, \texttt{translator}, and \texttt{annotator} fields. Also + note the \texttt{shorttitle}, \texttt{indextitle}, \texttt{sorttitle}, + and \texttt{indexsorttitle} fields} +} +@book{averroes/hercz, + keywords = {primary}, + hyphenation = {german}, + indexsorttitle = {Drei Abhandlungen uber die Conjunction}, + author = {Averroes}, + editor = {Hercz, J.}, + translator = {Hercz, J.}, + indextitle = {Drei Abhandlungen {\"u}ber die Conjunction}, + title = {Drei Abhandlungen {\"u}ber die Conjunction des separaten Intellects + mit dem Menschen}, + subtitle = {Von Averroes (Vater und Sohn), aus dem Arabischen {\"u}bersetzt + von Samuel Ibn Tibbon}, + shorttitle = {Drei Abhandlungen}, + publisher = {S.~Hermann}, + location = {Berlin}, + date = {1869}, + annotation = {A \texttt{book} entry. Note the concatenation of the + \texttt{editor} and \texttt{translator} fields as well as the + \texttt{indextitle} and \texttt{indexsorttitle} fields} +} +@book{cicero, + hyphenation = {german}, + author = {Cicero, Marcus Tullius}, + editor = {Blank-Sangmeister, Ursula}, + translator = {Blank-Sangmeister, Ursula}, + afterword = {Thraede, Klaus}, + indextitle = {De natura deorum}, + title = {De natura deorum. {\"U}ber das Wesen der G{\"o}tter}, + shorttitle = {De natura deorum}, + language = {langlatin and langgerman}, + publisher = {Reclam}, + location = {Stuttgart}, + date = {1995}, + annotation = {A bilingual edition of Cicero's \emph{De natura deorum}, with + a German translation. Note the format of the \texttt{language} field in + the database file, the concatenation of the \texttt{editor} and + \texttt{translator} fields, and the \texttt{afterword} field} +} +@book{coleridge, + hyphenation = {british}, + author = {Coleridge, Samuel Taylor}, + editor = {Coburn, Kathleen and Engell, James and Bate, W. Jackson}, + indextitle = {Biographia literaria}, + title = {Biographia literaria, or Biographical sketches of my literary life + and opinions}, + shorttitle = {Biographia literaria}, + maintitle = {The collected works of Samuel Taylor Coleridge}, + part = {2}, + volume = {7}, + series = {Bollingen Series}, + number = {75}, + publisher = {Routledge and Kegan Paul}, + location = {London}, + date = {1983}, + annotation = {One (partial) volume of a multivolume book. This is a + \texttt{book} entry with a \texttt{volume} and a \texttt{part} field + which explicitly refers to the second (physical) part of the seventh + (logical) volume. Also note the \texttt{series} and \texttt{number} + fields} +} +@book{companion, + hyphenation = {american}, + sorttitle = {LaTeX Companion}, + author = {Goossens, Michel and Mittelbach, Frank and Samarin, Alexander}, + indextitle = {LaTeX Companion, The}, + title = {The LaTeX Companion}, + shorttitle = {LaTeX Companion}, + edition = {1}, + publisher = {Addison-Wesley}, + location = {Reading, Mass.}, + date = {1994}, + pagetotal = {528}, + annotation = {A book with three authors. Note the formatting of the author + list. By default, only the first name is reversed in the bibliography} +} +@book{cotton, + hyphenation = {british}, + author = {Cotton, Frank Albert and Wilkinson, Geoffrey + and Murillio, Carlos A. and Bochmann, Manfred}, + title = {Advanced inorganic chemistry}, + edition = {6}, + publisher = {Wiley}, + location = {Chichester}, + date = {1999}, + annotation = {A \texttt{book} entry with \arabic{author} authors and an + \texttt{edition} field. By default, long \texttt{author} and + \texttt{editor} lists are automatically truncated. This is configurable} +} +@book{gerhardt, + hyphenation = {american}, + sorttitle = {Federal Appointments Process}, + author = {Gerhardt, Michael J.}, + indextitle = {Federal Appointments Process, The}, + title = {The Federal Appointments Process}, + subtitle = {A Constitutional and Historical Analysis}, + shorttitle = {Federal Appointments Process}, + publisher = {Duke University Press}, + location = {Durham and London}, + date = {2000}, + annotation = {This is a \texttt{book} entry. Note the format of the + \texttt{location} field as well as the \texttt{sorttitle} and + \texttt{indextitle} fields} +} +@book{gonzalez, + hyphenation = {american}, + sorttitle = {Ghost of John Wayne and Other Stories}, + author = {Gonzalez, Ray}, + indextitle = {Ghost of John Wayne and Other Stories, The}, + title = {The Ghost of John Wayne and Other Stories}, + shorttitle = {Ghost of John Wayne}, + publisher = {The University of Arizona Press}, + location = {Tucson}, + date = {2001}, + isbn = {0-816-52066-6}, + annotation = {A collection of short stories. This is a \texttt{book} entry. + Note the \texttt{sorttitle} and \texttt{indextitle} fields in the + database file. There's also an \texttt{isbn} field} +} +@book{hammond, + hyphenation = {british}, + sorttitle = {Basics of crystallography and diffraction}, + author = {Hammond, Christopher}, + indextitle = {Basics of crystallography and diffraction, The}, + title = {The basics of crystallography and diffraction}, + shorttitle = {Crystallography and diffraction}, + publisher = {International Union of Crystallography and Oxford University + Press}, + location = {Oxford}, + date = {1997}, + annotation = {A \texttt{book} entry. Note the \texttt{sorttitle} and + \texttt{indextitle} fields as well as the format of the + \texttt{publisher} field} +} +@book{iliad, + hyphenation = {german}, + sorttitle = {Ilias}, + author = {Homer}, + translator = {Schadewaldt, Wolfgang}, + introduction = {Latacz, Joachim}, + indextitle = {Ilias, Die}, + title = {Die Ilias}, + shorttitle = {Ilias}, + edition = {3}, + publisher = {Artemis \& Winkler}, + location = {D{\"u}sseldorf and Z{\"u}rich}, + date = {2004}, + annotation = {A German translation of the \emph{Iliad}. Note the + \texttt{translator} and \texttt{introduction} fields and the format of + the \texttt{location} field in the database file. Also note the + \texttt{sorttitle} and \texttt{indextitle} fields} +} +@book{knuth:ct, + hyphenation = {american}, + sortyear = {1984-0}, + sorttitle = {Computers & Typesetting}, + indexsorttitle = {Computers & Typesetting}, + author = {Knuth, Donald E.}, + title = {Computers \& Typesetting}, + volumes = {5}, + publisher = {Addison-Wesley}, + location = {Reading, Mass.}, + date = {1984/1986}, + annotation = {A five-volume book cited as a whole. This is a \texttt{book} + entry, note the \texttt{volumes} field} +} +@book{knuth:ct:a, + hyphenation = {american}, + sortyear = {1984-1}, + sorttitle = {Computers & Typesetting A}, + indexsorttitle = {The TeXbook}, + author = {Knuth, Donald E.}, + indextitle = {\TeX book, The}, + title = {The \TeX book}, + shorttitle = {\TeX book}, + maintitle = {Computers \& Typesetting}, + volume = {A}, + publisher = {Addison-Wesley}, + location = {Reading, Mass.}, + date = {1984}, + annotation = {The first volume of a five-volume book. Note the + \texttt{sorttitle} and \texttt{sortyear} fields. 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} +} +@book{knuth:ct:b, + hyphenation = {american}, + sortyear = {1986-1}, + sorttitle = {Computers & Typesetting B}, + indexsorttitle = {TeX: The Program}, + author = {Knuth, Donald E.}, + title = {\TeX: The Program}, + shorttitle = {\TeX}, + maintitle = {Computers \& Typesetting}, + volume = {B}, + publisher = {Addison-Wesley}, + location = {Reading, Mass.}, + date = {1986}, + annotation = {The second volume of a five-volume book. Note the + \texttt{sorttitle} and \texttt{sortyear} fields. Also note the + \texttt{indexsorttitle} field} +} +@book{knuth:ct:c, + hyphenation = {american}, + sortyear = {1986-2}, + sorttitle = {Computers & Typesetting C}, + indextitle = {METAFONTbook, The}, + title = {The METAFONTbook}, + shorttitle = {METAFONTbook}, + maintitle = {Computers \& Typesetting}, + volume = {C}, + publisher = {Addison-Wesley}, + location = {Reading, Mass.}, + date = {1986}, + annotation = {The third volume of a five-volume book. Note the + \texttt{sorttitle} and \texttt{sortyear} fields as well as the + \texttt{indextitle} field} +} +@book{knuth:ct:d, + hyphenation = {american}, + sortyear = {1986-3}, + sorttitle = {Computers & Typesetting D}, + author = {Knuth, Donald E.}, + title = {METAFONT: The Program}, + shorttitle = {METAFONT}, + maintitle = {Computers \& Typesetting}, + volume = {D}, + publisher = {Addison-Wesley}, + location = {Reading, Mass.}, + date = {1986}, + annotation = {The fourth volume of a five-volume book. Note the + \texttt{sorttitle} and \texttt{sortyear} fields} +} +@book{knuth:ct:e, + hyphenation = {american}, + sortyear = {1986-4}, + sorttitle = {Computers & Typesetting E}, + author = {Knuth, Donald E.}, + title = {Computer Modern Typefaces}, + maintitle = {Computers \& Typesetting}, + volume = {E}, + publisher = {Addison-Wesley}, + location = {Reading, Mass.}, + date = {1986}, + annotation = {The fifth volume of a five-volume book. Note the + \texttt{sorttitle} and \texttt{sortyear} fields} +} +@book{knuth:ct:related, + hyphenation = {american}, + sortyear = {1984-0}, + sorttitle = {Computers & Typesetting}, + indexsorttitle = {Computers & Typesetting}, + author = {Knuth, Donald E.}, + title = {Computers \& Typesetting}, + volumes = {5}, + related = {knuth:ct:a,knuth:ct:b,knuth:ct:c,knuth:ct:d,knuth:ct:e}, + relatedtype = {multivolume}, + publisher = {Addison-Wesley}, + location = {Reading, Mass.}, + date = {1984/1986}, + annotation = {A five-volume book cited as a whole and related to its + individual volumes. Note the \texttt{related} and \texttt{relatedtype} + fields} +} +@book{kullback, + title = {Information Theory and Statistics}, + author = {Kullback, Solomon}, + year = {1959}, + publisher = {John Wiley \& Sons}, + location = {New York} +} +@book{kullback:reprint, + title = {Information Theory and Statistics}, + author = {Kullback, Solomon}, + year = {1997}, + origyear = {1959}, + publisher = {Dover Publications}, + origpublisher = {John Wiley \& Sons}, + location = {New York}, + annotation = {A reprint of the \texttt{kullback} entry. Note the format of + \texttt{origyear} and \texttt{origpublisher}. These fields are not used by + the standard bibliography styles} +} +@book{kullback:related, + title = {Information Theory and Statistics}, + author = {Kullback, Solomon}, + year = {1997}, + publisher = {Dover Publications}, + location = {New York}, + related = {kullback}, + relatedtype = {origpubin}, + annotation = {A reprint of the \texttt{kullback} entry. Note the format of + the \texttt{related} and \texttt{relatedtype} fields} +} +@book{malinowski, + hyphenation = {british}, + author = {Malinowski, Bronis{\l}aw}, + title = {Argonauts of the Western Pacific}, + subtitle = {An account of native enterprise and adventure in the + Archipelagoes of Melanesian New Guinea}, + shorttitle = {Argonauts}, + edition = {8}, + publisher = {Routledge and Kegan Paul}, + location = {London}, + date = {1972}, + annotation = {This is a \texttt{book} entry. Note the format of the + \texttt{publisher} and \texttt{edition} fields as well as the + \texttt{subtitle} field} +} +@book{maron, + hyphenation = {american}, + author = {Maron, Monika}, + translator = {Brigitte Goldstein}, + title = {Animal Triste}, + shorttitle = {Animal Triste}, + publisher = {University of Nebraska Press}, + location = {Lincoln}, + date = {2000}, + origlanguage = {german}, + annotation = {An English translation of a German novel with a French title. + In other words: a \texttt{book} entry with a \texttt{translator} field. + Note the \texttt{origlanguage} field which is concatenated with the + \texttt{translator}} +} +@book{massa, + hyphenation = {british}, + author = {Werner Massa}, + title = {Crystal structure determination}, + edition = {2}, + publisher = {Spinger}, + location = {Berlin}, + date = {2004}, + annotation = {A \texttt{book} entry with an \texttt{edition} field} +} +@book{nietzsche:ksa, + hyphenation = {german}, + sortyear = {1988-00-000}, + sorttitle = {Werke-00-000}, + indexsorttitle = {Samtliche Werke}, + author = {Nietzsche, Friedrich}, + editor = {Colli, Giorgio and Montinari, Mazzino}, + title = {S{\"a}mtliche Werke}, + subtitle = {Kritische Studienausgabe}, + volumes = {15}, + edition = {2}, + publisher = dtv # { and Walter de Gruyter}, + location = {M{\"u}nchen and Berlin and New York}, + date = {1988}, + annotation = {The critical edition of Nietzsche's works. This is a + \texttt{book} 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 sorting order of the bibliography. We want this item listed + first in the bibliography} +} +@book{nietzsche:ksa1, + hyphenation = {german}, + sortyear = {1988-01-000}, + sorttitle = {Werke-01-000}, + indexsorttitle = {Samtliche Werke I}, + author = {Nietzsche, Friedrich}, + bookauthor = {Nietzsche, Friedrich}, + editor = {Colli, Giorgio and Montinari, Mazzino}, + indextitle = {S{\"a}mtliche Werke I}, + title = {Die Geburt der Trag{\"o}die. Unzeitgem{\"a}{\ss}e Betrachtungen + I--IV. Nachgelassene Schriften 1870--1973}, + shorttitle = {S{\"a}mtliche Werke I}, + maintitle = {S{\"a}mtliche Werke}, + mainsubtitle = {Kritische Studienausgabe}, + volume = {1}, + edition = {2}, + publisher = dtv # { and Walter de Gruyter}, + location = {M{\"u}nchen and Berlin and New York}, + date = {1988}, + 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 referring to the entire edition} +} +@book{nussbaum, + keywords = {secondary}, + hyphenation = {american}, + sorttitle = {Aristotle's De Motu Animalium}, + indexsorttitle = {Aristotle's De Motu Animalium}, + author = {Nussbaum, Martha}, + title = {Aristotle's \mkbibquote{De Motu Animalium}}, + publisher = pup, + location = {Princeton}, + date = {1978}, + annotation = {A \texttt{book} entry. Note the \texttt{sorttitle} and + \texttt{indexsorttitle} fields and the markup of the quotes in the + database file} +} +@book{piccato, + hyphenation = {american}, + author = {Piccato, Pablo}, + title = {City of Suspects}, + subtitle = {Crime in Mexico City, 1900--1931}, + shorttitle = {City of Suspects}, + publisher = {Duke University Press}, + location = {Durham and London}, + date = {2001}, + annotation = {This is a \texttt{book} entry. Note the format of the + \texttt{location} field in the database file} +} +@book{vangennep, + options = {useprefix}, + hyphenation = {french}, + sorttitle = {Rites de passage}, + author = {van Gennep, Arnold}, + indextitle = {Rites de passage, Les}, + title = {Les rites de passage}, + shorttitle = {Rites de passage}, + publisher = {Nourry}, + location = {Paris}, + date = {1909}, + annotation = {A \texttt{book} entry. Note the format of the printed name and + compare the \texttt{useprefix} option in the \texttt{options} field as + well as \texttt{brandt} and \texttt{geer}} +} +@book{vangennep:trans, + options = {useprefix}, + author = {van Gennep, Arnold}, + translator = {Vizedom, Monika B. and Caffee, Gabrielle L.}, + title = {The Rites of Passage}, + indextitle = {Rites of Passage, The}, + sorttitle = {Rites of Passage}, + shorttitle = {Rites of Passage}, + language = {english}, + origlanguage = {french}, + year = {1960}, + publisher = {University of Chicago Press}, + annotation = {A translation of the \texttt{vangennep} entry. Note the + \texttt{translator} and \texttt{origlanguage} fields. Compare with the + \texttt{vangennep:related} entry.} +} +@book{vangennep:related, + options = {useprefix}, + hyphenation = {french}, + author = {van Gennep, Arnold}, + related = {vizedom:related}, + relatedtype = {bytranslator}, + sorttitle = {Rites de passage}, + indextitle = {Rites de passage, Les}, + title = {Les rites de passage}, + shorttitle = {Rites de passage}, + publisher = {Nourry}, + location = {Paris}, + date = {1909}, + annotation = {A variant of the \texttt{vangennep} entry related to its + translation. Note the format of the \texttt{related} and + \texttt{relatedtype} fields} +} +@book{vizedom:related, + options = {usetranslator}, + translator = {Vizedom, Monika B. and Caffee, Gabrielle L.}, + related = {vangennep}, + relatedtype = {translationof}, + title = {The Rites of Passage}, + indextitle = {Rites of Passage, The}, + sorttitle = {Rites of Passage}, + shorttitle = {Rites of Passage}, + language = {english}, + year = {1960}, + publisher = {University of Chicago Press}, + annotation = {A translated work from \texttt{vangennep}. Note the format of + the \texttt{related} and \texttt{relatedtype} fields} +} +@book{vazques-de-parga, + hyphenation = {spanish}, + sorttitle = {Peregrinaciones a Santiago de Compostela}, + author = {V{\'a}zques{ de }Parga, Luis and Lacarra, Jos{\'e} Mar{\'i}a + and Ur{\'i}a R{\'i}u, Juan}, + indextitle = {Peregrinaciones a Santiago de Compostela, Las}, + title = {Las Peregrinaciones a Santiago de Compostela}, + shorttitle = {Peregrinaciones}, + volumes = {3}, + publisher = {Iberdrola}, + location = {Pamplona}, + date = {1993}, + note = {Ed. facs. de la realizada en 1948--49}, + annotation = {A multivolume book cited as a whole. This is a \texttt{book} + entry with \texttt{volumes}, \texttt{note}, \texttt{sorttitle}, and + \texttt{indextitle} fields} +} +@book{wilde, + title = {The Importance of Being Earnest: A Trivial Comedy for Serious + People}, + author = {Wilde, Oscar}, + series = {English and American drama of the Nineteenth Century}, + year = {1899}, + eprint ={4HIWAAAAYAAJ}, + eprinttype = {googlebooks}, + publisher = {Leonard Smithers and Company}, + annotation = {A \texttt{book} with \texttt{eprint} and \texttt{eprinttype} + fields.} +} +@book{worman, + hyphenation = {american}, + sorttitle = {Cast of Character}, + author = {Worman, Nancy}, + indextitle = {Cast of Character, The}, + title = {The Cast of Character}, + subtitle = {Style in Greek Literature}, + shorttitle = {Cast of Character}, + publisher = {University of Texas Press}, + location = {Austin}, + date = {2002}, + annotation = {A \texttt{book} entry. Note the \texttt{sorttitle} and + \texttt{indextitle} fields} +} +@collection{britannica, + options = {useeditor=false}, + label = {EB}, + hyphenation = {british}, + sorttitle = {Encyclop{\ae}dia Britannica}, + editor = {Preece, Warren E.}, + indextitle = {Encyclop{\ae}dia Britannica, The New}, + title = {The New Encyclop{\ae}dia Britannica}, + shorttitle = {Encyclop{\ae}dia Britannica}, + volumes = {32}, + edition = {15}, + publisher = {Encyclop{\ae}dia Britannica}, + location = {Chicago, Ill.}, + date = {2003}, + annotation = {This is a \texttt{collection} 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 editor. In addition to that, we want the + title to be alphabetized under \enquote*{E} rather than \enquote*{T}. Also + note the \texttt{label} field which is provided for author-year citation + styles} +} +@collection{gaonkar, + hyphenation = {american}, + editor = {Gaonkar, Dilip Parameshwar}, + title = {Alternative Modernities}, + publisher = {Duke University Press}, + location = {Durham and London}, + date = {2001}, + isbn = {0-822-32714-7}, + annotation = {This is a \texttt{collection} entry. Note the format of the + \texttt{location} field in the database file as well as the \texttt{isbn} + field} +} +@incollection{gaonkar:in, + author = {Gaonkar, Dilip Parameshwar}, + title = {On Alternative Modernities}, + pages = {1--23}, + editor = {Gaonkar, Dilip Parameshwar}, + booktitle = {Alternative Modernities}, + publisher = {Duke University Press}, + location = {Durham and London}, + date = {2001}, + isbn = {0-822-32714-7} +} +@collection{jaffe, + editor = {Jaff{\'e}, Philipp}, + editora = {Loewenfeld, Samuel and Kaltenbrunner, Ferdinand and Ewald, Paul}, + editoratype = {redactor}, + indextitle = {Regesta Pontificum Romanorum}, + title = {Regesta Pontificum Romanorum ab condita ecclesia ad annum post + Christum natum \textsc{mcxcviii}}, + shorttitle = {Regesta Pontificum Romanorum}, + volumes = {2}, + edition = {2}, + location = {Leipzig}, + date = {1885/1888}, + annotation = {A \texttt{collection} entry with \texttt{edition} and + \texttt{volumes} fields. Note the \texttt{editora} and + \texttt{editoratype} fields} +} +@collection{westfahl:frontier, + hyphenation = {american}, + editor = {Westfahl, Gary}, + title = {Space and Beyond}, + subtitle = {The Frontier Theme in Science Fiction}, + booktitle = {Space and Beyond}, + booksubtitle = {The Frontier Theme in Science Fiction}, + publisher = {Greenwood}, + location = {Westport, Conn. and London}, + date = {2000}, + annotation = {This is a \texttt{collection} entry. Note the format of the + \texttt{location} field as well as the \texttt{subtitle} and + \texttt{booksubtitle} fields} +} +@inbook{kant:kpv, + shorthand = {KpV}, + hyphenation = {german}, + author = {Kant, Immanuel}, + bookauthor = {Kant, Immanuel}, + title = {Kritik der praktischen Vernunft}, + shorttitle = {Kritik der praktischen Vernunft}, + booktitle = {Kritik der praktischen Vernunft. Kritik der Urtheilskraft}, + maintitle = {Kants Werke. Akademie Textausgabe}, + volume = {5}, + publisher = {Walter de Gruyter}, + location = {Berlin}, + date = {1968}, + pages = {1--163}, + annotation = {An edition of Kant's \emph{Collected Works}, volume five. This + is an \texttt{inbook} entry which explicitly refers to the \emph{Critique + of Practical Reason} only, not to the entire fifth volume. Note the + \texttt{author} and \texttt{bookauthor} fields in the database file. By + default, the \texttt{bookauthor} is omitted if the values of the + \texttt{author} and \texttt{bookauthor} fields are identical} +} +@inbook{kant:ku, + shorthand = {KU}, + hyphenation = {german}, + author = {Kant, Immanuel}, + bookauthor = {Kant, Immanuel}, + title = {Kritik der Urtheilskraft}, + booktitle = {Kritik der praktischen Vernunft. Kritik der Urtheilskraft}, + maintitle = {Kants Werke. Akademie Textausgabe}, + volume = {5}, + publisher = {Walter de Gruyter}, + location = {Berlin}, + date = {1968}, + pages = {165--485}, + annotation = {An edition of Kant's \emph{Collected Works}, volume five. This + is an \texttt{inbook} entry which explicitly refers to the \emph{Critique + of Judgment} only, not to the entire fifth volume} +} +@inbook{nietzsche:historie, + hyphenation = {german}, + sortyear = {1988-01-243}, + sorttitle = {Werke-01-243}, + indexsorttitle = {Vom Nutzen und Nachtheil der Historie fur das Leben}, + author = {Nietzsche, Friedrich}, + bookauthor = {Nietzsche, Friedrich}, + editor = {Colli, Giorgio and Montinari, Mazzino}, + indextitle = {Vom Nutzen und Nachtheil der Historie f{\"u}r das Leben}, + title = {Unzeitgem{\"a}sse Betrachtungen. Zweites St{\"u}ck}, + subtitle = {Vom Nutzen und Nachtheil der Historie f{\"u}r das Leben}, + shorttitle = {Vom Nutzen und Nachtheil der Historie}, + booktitle = {Die Geburt der Trag{\"o}die. Unzeitgem{\"a}{\ss}e Betrachtungen + I--IV. Nachgelassene Schriften 1870--1973}, + maintitle = {S{\"a}mtliche Werke}, + mainsubtitle = {Kritische Studienausgabe}, + volume = {1}, + publisher = dtv # { and Walter de Gruyter}, + location = {M{\"u}nchen and Berlin and New York}, + date = {1988}, + pages = {243--334}, + annotation = {A single essay from the critical edition of Nietzsche's works. + 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 this entry to be listed after the entry + referring to the entire first volume} +} +@incollection{brandt, + options = {useprefix=false}, + hyphenation = {german}, + indexsorttitle = {Nordischen Lander von der Mitte des 11. Jahrhunderts bis + 1448}, + author = {von Brandt, Ahasver and Erich Hoffmann}, + editor = {Ferdinand Seibt}, + indextitle = {Nordischen L{\"a}nder von der Mitte des 11.~Jahrhunderts bis + 1448, Die}, + title = {Die nordischen L{\"a}nder von der Mitte des 11.~Jahrhunderts bis + 1448}, + shorttitle = {Die nordischen L{\"a}nder}, + booktitle = {Europa im Hoch- und Sp{\"a}tmittelalter}, + series = {Handbuch der europ{\"a}ischen Geschichte}, + number = {2}, + publisher = {Klett-Cotta}, + location = {Stuttgart}, + date = {1987}, + pages = {884--917}, + annotation = {An \texttt{incollection} entry with a \texttt{series} and a + \texttt{number}. Note the format of the printed name and compare the + \texttt{useprefix} option in the \texttt{options} field as well as + \texttt{vangennep}. Also note the \texttt{indextitle, and + \texttt{indexsorttitle} fields}} +} +@incollection{hyman, + keywords = {secondary}, + hyphenation = {american}, + author = {Arthur Hyman}, + editor = {O'Meara, Dominic J.}, + indextitle = {Aristotle's Theory of the Intellect}, + title = {Aristotle's Theory of the Intellect and its Interpretation by + Averroes}, + shorttitle = {Aristotle's Theory of the Intellect}, + booktitle = {Studies in Aristotle}, + series = {Studies in Philosophy and the History of Philosophy}, + number = {9}, + publisher = {The Catholic University of America Press}, + location = {Washington, D.C.}, + date = {1981}, + pages = {161--191}, + annotation = {An \texttt{incollection} entry with a \texttt{series} and + \texttt{number} field} +} +@incollection{pines, + keywords = {secondary}, + hyphenation = {american}, + author = {Pines, Shlomo}, + editor = {Twersky, Isadore}, + indextitle = {Limitations of Human Knowledge According to Al-Farabi, ibn + Bajja, and Maimonides, The}, + title = {The Limitations of Human Knowledge According to Al-Farabi, ibn + Bajja, and Maimonides}, + shorttitle = {Limitations of Human Knowledge}, + booktitle = {Studies in Medieval Jewish History and Literature}, + publisher = hup, + location = {Cambridge, Mass.}, + date = {1979}, + pages = {82--109}, + annotation = {A typical \texttt{incollection} entry. Note the + \texttt{indextitle} field} +} +@inproceedings{moraux, + keywords = {secondary}, + hyphenation = {french}, + indexsorttitle = {De Anima dans la tradition grecque}, + author = {Moraux, Paul}, + editor = {Lloyd, G. E. R. and Owen, G. E. L.}, + indextitle = {\emph{De Anima} dans la tradition gr{\`e}cque, Le}, + title = {Le \emph{De Anima} dans la tradition gr{\`e}cque}, + subtitle = {Quelques aspects de l'interpretation du trait{\'e}, de + Theophraste {\`a} Themistius}, + shorttitle = {\emph{De Anima} dans la tradition gr{\`e}cque}, + booktitle = {Aristotle on Mind and the Senses}, + booktitleaddon = {Proceedings of the Seventh Symposium Aristotelicum}, + eventdate = {1975}, + publisher = cup, + location = {Cambridge}, + date = {1979}, + pages = {281--324}, + annotation = {This is a typical \texttt{inproceedings} entry. Note the + \texttt{booksubtitle}, \texttt{shorttitle}, \texttt{indextitle}, and + \texttt{indexsorttitle} fields. Also note the \texttt{eventdate} field.} +} +@inproceedings{salam, + author = {Salam, Abdus}, + editor = {Svartholm, Nils}, + title = {Weak and Electromagnetic Interactions}, + booktitle = {Elementary particle theory}, + booksubtitle = {Relativistic groups and analyticity}, + booktitleaddon = {Proceedings of the Eighth Nobel Symposium}, + eventdate = {1968-05-19/1968-05-25}, + venue = {Aspen{\"a}sgarden, Lerum}, + publisher = {Almquist \& Wiksell}, + location = {Stockholm}, + date = {1968}, + pages = {367--377} +} +@manual{cms, + label = {CMS}, + hyphenation = {american}, + sorttitle = {Chicago Manual of Style}, + indextitle = {Chicago Manual of Style, The}, + title = {The Chicago Manual of Style}, + subtitle = {The Essential Guide for Writers, Editors, and Publishers}, + shorttitle = {Chicago Manual of Style}, + edition = {15}, + publisher = {University of Chicago Press}, + location = {Chicago, Ill.}, + date = {2003}, + isbn = {0-226-10403-6}, + annotation = {This is a \texttt{manual} entry without an \texttt{author} or + \texttt{editor}. Note the \texttt{label} field in the database file which + is provided for author-year citation styles. Also note the + \texttt{sorttitle} and \texttt{indextitle} fields. By default, all entries + without an \texttt{author} or \texttt{editor} are alphabetized by + \texttt{title} but we want this entry to be alphabetized under + \enquote*{C} rather than \enquote*{T}. There's also an \texttt{isbn} + field} +} +@online{baez/online, + hyphenation = {american}, + author = {Baez, John C. and Lauda, Aaron D.}, + title = {Higher-Dimensional Algebra V: 2-Groups}, + version = {3}, + date = {2004-10-27}, + eprinttype = {arxiv}, + eprint = {math/0307200v3}, + annotation = {An \texttt{online} reference from arXiv. Note the + \texttt{eprint} and \texttt{eprinttype} fields. Compare \texttt{baez\slash + article} which is the same item given as an \texttt{article} entry with + eprint information} +} +@online{ctan, + label = {CTAN}, + hyphenation = {american}, + title = {CTAN}, + subtitle = {The Comprehensive TeX Archive Network}, + date = {2006}, + url = {http://www.ctan.org}, + urldate = {2006-10-01}, + annotation = {This is an \texttt{online} entry. The \textsc{url}, which is + given in the \texttt{url} field, is transformed into a clickable link if + \texttt{hyperref} support has been enabled. Note the format of the + \texttt{urldate} field (\texttt{yyyy-mm-dd}) in the database file. Also + note the \texttt{label} field which may be used as a fallback by citation + styles which need an \texttt{author} and\slash or a \texttt{year}} +} +@online{itzhaki, + hyphenation = {american}, + author = {Itzhaki, Nissan}, + title = {Some remarks on 't Hooft's S-matrix for black holes}, + version = {1}, + date = {1996-03-11}, + eprinttype = {arxiv}, + eprint = {hep-th/9603067}, + annotation = {An \texttt{online} reference from arXiv. Note the + \texttt{eprint} and \texttt{eprinttype} fields. Also note that the arXiv + reference is transformed into a clickable link if \texttt{hyperref} + support has been enabled}, + abstract = {We discuss the limitations of 't Hooft's proposal for the black + hole S-matrix. We find that the validity of the S-matrix implies violation + of the semi-classical approximation at scales large compared to the Planck + scale. We also show that the effect of the centrifugal barrier on the + S-matrix is crucial even for large transverse distances.} +} +@online{markey, + hyphenation = {american}, + sorttitle = {Tame the Beast}, + author = {Markey, Nicolas}, + title = {Tame the BeaST}, + subtitle = {The B to X of BibTeX}, + version = {1.3}, + date = {2005-10-16}, + url = {http://tug.ctan.org/tex-archive/info/bibtex/tamethebeast/ttb_en.pdf}, + urldate = {2006-10-01}, + annotation = {An \texttt{online} entry for a tutorial. Note the format of + the \texttt{date} field (\texttt{yyyy-mm-dd}) in the database file.} +} +@online{wassenberg, + hyphenation = {american}, + author = {Wassenberg, Jan and Sanders, Peter}, + title = {Faster Radix Sort via Virtual Memory and Write-Combining}, + version = {1}, + date = {2010-08-17}, + eprinttype = {arxiv}, + eprintclass = {cs.DS}, + eprint = {1008.2849v1}, + annotation = {A recent \texttt{online} reference from arXiv using the new + (April 2007 onward) identifier format. Note the \texttt{eprint}, + \texttt{eprinttype}, and \texttt{eprintclass} fields. Also note that the + arXiv reference is transformed into a clickable link if \texttt{hyperref} + support has been enabled}, + abstract = {Sorting algorithms are the deciding factor for the performance + of common operations such as removal of duplicates or database sort-merge + joins. This work focuses on 32-bit integer keys, optionally paired with a + 32-bit value. We present a fast radix sorting algorithm that builds upon a + microarchitecture-aware variant of counting sort} +} +@patent{almendro, + hyphenation = {german}, + author = {Almendro, Jos{\'e} L. and Mart{\'i}n, Jacinto + and S{\'a}nchez, Alberto and Nozal, Fernando}, + title = {Elektromagnetisches Signalhorn}, + number = {EU-29702195U}, + location = {countryfr and countryuk and countryde}, + date = {1998}, + annotation = {This is a \texttt{patent} entry with a \texttt{location} + field. The number is given in the \texttt{number} field. Note the format + of the \texttt{location} field in the database file. Compare + \texttt{laufenberg}, \texttt{sorace}, and \texttt{kowalik}} +} +@patent{kowalik, + hyphenation = {french}, + author = {Kowalik, F. and Isard, M.}, + indextitle = {Estimateur d'un d{\'e}faut de fonctionnement}, + title = {Estimateur d'un d{\'e}faut de fonctionnement d'un modulateur en + quadrature et {\'e}tage de modulation l'utilisant}, + type = {patreqfr}, + number = {9500261}, + date = {1995-01-11}, + annotation = {This is a \texttt{patent} entry for a French patent request + with a full date. The number is given in the \texttt{number} field. Note + the format of the \texttt{type} and \texttt{date} fields in the database + file. Compare \texttt{almendro}, \texttt{laufenberg}, and \texttt{sorace}} +} +@patent{laufenberg, + hyphenation = {german}, + author = {Laufenberg, Xaver and Eynius, Dominique and Suelzle, Helmut + and Usbeck, Stephan and Spaeth, Matthias and Neuser-Hoffmann, Miriam + and Myrzik, Christian and Schmid, Manfred and Nietfeld, Franz + and Thiel, Alexander and Braun, Harald and Ebner, Norbert}, + holder = {{Robert Bosch GmbH} and {Daimler Chrysler AG} + and {Bayerische Motoren Werke AG}}, + title = {Elektrische Einrichtung und Betriebsverfahren}, + type = {patenteu}, + number = {1700367}, + date = {2006-09-13}, + annotation = {This is a \texttt{patent} entry with a \texttt{holder} field. + Note the format of the \texttt{type} and \texttt{location} fields in the + database file. Compare \texttt{almendro}, \texttt{sorace}, and + \texttt{kowalik}}, + abstract = {The invention relates to an electric device comprising a + generator, in particular for use in the vehicle electric system of a motor + vehicle and a controller for controlling the generator voltage. The device + is equipped with a control zone, in which the voltage is controlled and + zones, in which the torque is controlled. The invention also relates to + methods for operating a device of this type.}, + file = {http://v3.espacenet.com/textdoc?IDX=EP1700367} +} +@patent{sorace, + hyphenation = {american}, + author = {Sorace, Ronald E. and Reinhardt, Victor S. and Vaughn, Steven A.}, + holder = {{Hughes Aircraft Company}}, + title = {High-Speed Digital-to-RF Converter}, + type = {patentus}, + number = {5668842}, + date = {1997-09-16}, + annotation = {This is a \texttt{patent} entry with a \texttt{holder} field. + Note the format of the \texttt{type} and \texttt{date} fields in the + database file. Compare \texttt{almendro}, \texttt{laufenberg}, and + \texttt{kowalik}} +} +@periodical{jcg, + title = {Computers and Graphics}, + issuetitle = {Semantic {3D} Media and Content}, + volume = {35}, + number = {4}, + year = {2011}, + issn = {0097-8493}, + annotation = {This is a \texttt{periodical} entry with an \texttt{issn} + field.} +} +@report{chiu, + hyphenation = {american}, + sorttitle = {Hybrid Hierarchical Model of a Multiple Virtual Storage (MVS) + Operating System}, + author = {Chiu, Willy W. and Chow, We Min}, + indextitle = {Hybrid Hierarchical Model, A}, + title = {A Hybrid Hierarchical Model of a Multiple Virtual Storage (MVS) + Operating System}, + institution = {IBM}, + type = {resreport}, + number = {RC-6947}, + date = {1978}, + annotation = {This is a \texttt{report} entry for a research report. Note + the format of the \texttt{type} field in the database file which uses a + localization key. The number of the report is given in the \texttt{number} + field. Also note the \texttt{sorttitle} and \texttt{indextitle} fields} +} +@report{padhye, + hyphenation = {american}, + sorttitle = {A Stochastic Model of TCP Reno Congestion Avoidance and + Control}, + author = {Padhye, Jitendra and Firoiu, Victor and Towsley, Don}, + indextitle = {Stochastic Model of TCP Reno Congestion Avoidance and Control, + A}, + title = {A Stochastic Model of TCP Reno Congestion Avoidance and Control}, + institution = {University of Massachusetts}, + type = {techreport}, + number = {99-02}, + location = {Amherst, Mass.}, + date = {1999}, + annotation = {This is a \texttt{report} entry for a technical report. Note + the format of the \texttt{type} field in the database file which uses a + localization key. The number of the report is given in the \texttt{number} + field. Also note the \texttt{sorttitle} and \texttt{indextitle} fields}, + abstract = {The steady state performance of a bulk transfer TCP flow (i.e. a + flow with a large amount of data to send, such as FTP transfers) may be + characterized by three quantities. The first is the send rate, which is + the amount of data sent by the sender in unit time. The second is the + throughput, which is the amount of data received by the receiver in unit + time. Note that the throughput will always be less than or equal to the + send rate due to losses. Finally, the number of non-duplicate packets + received by the receiver in unit time gives us the goodput of the + connection. The goodput is always less than or equal to the throughput, + since the receiver may receive two copies of the same packet due to + retransmissions by the sender. In a previous paper, we presented a simple + model for predicting the steady state send rate of a bulk transfer TCP + flow as a function of loss rate and round trip time. In this paper, we + extend that work in two ways. First, we analyze the performance of bulk + transfer TCP flows using more precise, stochastic analysis. Second, we + build upon the previous analysis to provide both an approximate formula as + well as a more accurate stochastic model for the steady state throughput + of a bulk transfer TCP flow.}, + file = {ftp://gaia.cs.umass.edu/pub/Padhey99-markov.ps} +} +@thesis{geer, + options = {useprefix=false}, + hyphenation = {british}, + author = {de Geer, Ingrid}, + title = {Earl, Saint, Bishop, Skald~-- and Music}, + subtitle = {The Orkney Earldom of the Twelfth Century. A Musicological + Study}, + institution = {Uppsala Universitet}, + type = {phdthesis}, + location = {Uppsala}, + date = {1985}, + annotation = {This is a typical \texttt{thesis} entry for a PhD thesis. Note + the \texttt{type} field in the database file which uses a localization + key. Also note the format of the printed name and compare the + \texttt{useprefix} option in the \texttt{options} field as well as + \texttt{vangennep}} +} +@thesis{loh, + hyphenation = {american}, + author = {Loh, Nin C.}, + title = {High-Resolution Micromachined Interferometric Accelerometer}, + institution = {Massachusetts Institute of Technology}, + type = {mathesis}, + location = {Cambridge, Mass.}, + date = {1992}, + annotation = {This is a typical \texttt{thesis} entry for an MA thesis. Note + the \texttt{type} field in the database file which uses a localization + key}} diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/42-style-alphabetic-template.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/42-style-alphabetic-template.pdf Binary files differnew file mode 100644 index 00000000000..df59eed646b --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex/examples/42-style-alphabetic-template.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/42-style-alphabetic-template.tex b/Master/texmf-dist/doc/latex/biblatex/examples/42-style-alphabetic-template.tex new file mode 100644 index 00000000000..1c8bf652dad --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex/examples/42-style-alphabetic-template.tex @@ -0,0 +1,28 @@ +% +% This file presents the 'alphabetic' style with labels formatted with +% '\DeclareLabelalphaTemplate'. +% +\documentclass[a4paper]{article} +\usepackage[T1]{fontenc} +\usepackage[american]{babel} +\usepackage{csquotes} +\usepackage[backend=biber,style=alphabetic]{biblatex} +\usepackage{hyperref} +\addbibresource{biblatex-examples.bib} + +\DeclareLabelalphaTemplate{ + \labelelement{ + \field[final]{shorthand} + \field{label} + \field[strwidth=3,strside=left,ifnames=1]{labelname} + \field[strwidth=1,strside=left]{labelname} + } + \labelelement{ + \field[strwidth=2,strside=right]{year} + } +} + +\begin{document} +Filler text \parencite{wassenberg,cicero,companion,kant:kpv,kant:ku,cms,ctan}. +\printbibliography +\end{document} diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/90-related-entries.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/90-related-entries.pdf Binary files differnew file mode 100644 index 00000000000..95f306a306e --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex/examples/90-related-entries.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/90-related-entries.tex b/Master/texmf-dist/doc/latex/biblatex/examples/90-related-entries.tex new file mode 100644 index 00000000000..df15724ba2f --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex/examples/90-related-entries.tex @@ -0,0 +1,15 @@ +% +% This file presents related entries from biblatex-examples.bib +% +\documentclass[a4paper]{article} +\usepackage[T1]{fontenc} +\usepackage[american]{babel} +\usepackage{csquotes} +\usepackage[style=reading,backend=biber]{biblatex} +\usepackage{hyperref} +\addbibresource{biblatex-examples.bib} +\begin{document} +\nocite{knuth:ct:related,kullback:related} +\nocite{doody,vangennep:trans,vangennep:related,vizedom:related} +\printbibliography +\end{document} diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/91-sorting-schemes.pdf b/Master/texmf-dist/doc/latex/biblatex/examples/91-sorting-schemes.pdf Binary files differnew file mode 100644 index 00000000000..efa3341cae6 --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex/examples/91-sorting-schemes.pdf diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/91-sorting-schemes.tex b/Master/texmf-dist/doc/latex/biblatex/examples/91-sorting-schemes.tex new file mode 100644 index 00000000000..387be91216a --- /dev/null +++ b/Master/texmf-dist/doc/latex/biblatex/examples/91-sorting-schemes.tex @@ -0,0 +1,15 @@ +% +% This file presents the 'authoryear' style with different sorting schemes in +% citation lists and the bibliography. +% +\documentclass[a4paper]{article} +\usepackage[T1]{fontenc} +\usepackage[american]{babel} +\usepackage{csquotes} +\usepackage[backend=biber,style=authoryear,sortcites,sorting=ynt]{biblatex} +\usepackage{hyperref} +\addbibresource{biblatex-examples.bib} +\begin{document} +Filler text \parencite{wassenberg,cicero,companion,angenendt}. +\printbibliography[sorting=nyt] +\end{document} diff --git a/Master/texmf-dist/doc/latex/biblatex/examples/biblatex-examples.bib b/Master/texmf-dist/doc/latex/biblatex/examples/biblatex-examples.bib index cdacbc0a36c..b979e19006e 100644 --- a/Master/texmf-dist/doc/latex/biblatex/examples/biblatex-examples.bib +++ b/Master/texmf-dist/doc/latex/biblatex/examples/biblatex-examples.bib @@ -1,1294 +1,1434 @@ @PREAMBLE{ "\RequireBiber[2]" } -@STRING{anch-ie = {Angew.~Chem. Int.~Ed.} } -@STRING{cup = {Cambridge University Press} } -@STRING{dtv = {Deutscher Taschenbuch-Verlag} } -@STRING{hup = {Harvard University Press} } -@STRING{jams = {J.~Amer. Math. Soc.} } -@STRING{jchph = {J.~Chem. Phys.} } -@STRING{jomch = {J.~Organomet. Chem.} } -@STRING{pup = {Princeton University Press} } - -@InCollection{westfahl:space, - crossref = {westfahl:frontier}, - hyphenation = {american}, - author = {Westfahl, Gary}, - indextitle = {True Frontier, The}, - title = {The True Frontier}, - subtitle = {Confronting and Avoiding the Realities of Space in American Science Fiction - Films}, - pages = {55--65}, - annotation = {A cross-referenced article from a \texttt{collection}. This is an - \texttt{incollection} entry with a \texttt{crossref} field. Note the - \texttt{subtitle} and \texttt{indextitle} fields} -} - -@Set{set, - entryset = {herrmann,aksin,yoon}, - annotation = {A \texttt{set} with three members} -} - -@Set{stdmodel, - entryset = {glashow,weinberg,salam}, - annotation = {A \texttt{set} with three members discussing the standard model of - particle physics} -} - -@Article{aksin, - author = {Aks{\i}n, {\"O}zge and T{\"u}rkmen, Hayati and Artok, Levent and - {\k{C}}etinkaya, Bekir and Ni, Chaoying and B{\"u}y{\"u}kg{\"u}ng{\"o}r, Orhan - and {\"O}zkal, Erhan}, - indextitle = {Effect of immobilization on catalytic characteristics}, - title = {Effect of immobilization on catalytic characteristics of saturated - Pd-N-heterocyclic carbenes in Mizoroki-Heck reactions}, - journaltitle = jomch, - volume = {691}, - number = {13}, - date = {2006}, - pages = {3027--3036} -} - -@Article{angenendt, - hyphenation = {german}, - author = {Angenendt, Arnold}, - indextitle = {In Honore Salvatoris}, - title = {In Honore Salvatoris~-- Vom Sinn und Unsinn der Patrozinienkunde}, - shorttitle = {In Honore Salvatoris}, - journaltitle = {Revue d'Histoire Eccl{\'e}siastique}, - volume = {97}, - date = {2002}, - pages = {431--456, 791--823}, - annotation = {A German article in a French journal. Apart from that, a typical - \texttt{article} entry. Note the \texttt{indextitle} field} -} - -@Article{baez/article, - hyphenation = {american}, - author = {Baez, John C. and Lauda, Aaron D.}, - title = {Higher-Dimensional Algebra V: 2-Groups}, - journaltitle = {Theory and Applications of Categories}, - volume = {12}, - version = {3}, - date = {2004}, - pages = {423--491}, - eprinttype = {arxiv}, - eprint = {math/0307200v3}, - annotation = {An \texttt{article} with \texttt{eprint} and \texttt{eprinttype} fields. Note - that the arXiv reference is transformed into a clickable link if - \texttt{hyperref} support has been enabled. Compare \texttt{baez\slash online}, - which is the same item given as an \texttt{online} entry} -} - -@Article{bertram, - hyphenation = {american}, - author = {Bertram, Aaron and Wentworth, Richard}, - title = {Gromov invariants for holomorphic maps on Riemann surfaces}, - shorttitle = {Gromov invariants}, - journaltitle = jams, - volume = {9}, - number = {2}, - date = {1996}, - pages = {529--571}, - annotation = {An \texttt{article} entry with a \texttt{volume} and a \texttt{number} field} -} - -@Article{gillies, - hyphenation = {british}, - author = {Gillies, Alexander}, - title = {Herder and the Preparation of Goethe's Idea of World Literature}, - journaltitle = {Publications of the English Goethe Society}, - volume = {9}, - series = {newseries}, - date = {1933}, - pages = {46--67}, - annotation = {An \texttt{article} entry with a \texttt{series} and a \texttt{volume} field. - Note that format of the \texttt{series} field in the database file} -} - -@Article{glashow, - author = {Glashow, Sheldon}, - title = {Partial Symmetries of Weak Interactions}, - journaltitle = {Nucl.~Phys.}, - volume = {22}, - date = {1961}, - pages = {579--588} -} - -@Article{herrmann, - author = {Herrmann, Wolfgang A. and {\"O}fele, Karl and Schneider, Sabine K. and - Herdtweck, Eberhardt and Hoffmann, Stephan D.}, - indextitle = {Carbocyclic carbene as an efficient catalyst, A}, - title = {A carbocyclic carbene as an efficient catalyst ligand for C--C coupling - reactions}, - journaltitle = anch-ie, - volume = {45}, - number = {23}, - date = {2006}, - pages = {3859--3862} -} - -@Article{kastenholz, - hyphenation = {american}, - author = {Kastenholz, M. A. and H{\"u}nenberger, Philippe H.}, - indextitle = {Computation of ionic solvation free energies}, - title = {Computation of methodology\hyphen independent ionic solvation free energies - from molecular simulations}, - subtitle = {I. The electrostatic potential in molecular liquids}, - journaltitle = jchph, - volume = {124}, - eid = {124106}, - date = {2006}, - doi = {10.1063/1.2172593}, - annotation = {An \texttt{article} entry with an \texttt{eid} and a \texttt{doi} field. Note - that the \textsc{doi} is transformed into a clickable link if \texttt{hyperref} - support has been enabled}, - abstract = {The computation of ionic solvation free energies from atomistic simulations is - a surprisingly difficult problem that has found no satisfactory solution for - more than 15 years. The reason is that the charging free energies evaluated from - such simulations are affected by very large errors. One of these is related to - the choice of a specific convention for summing up the contributions of solvent - charges to the electrostatic potential in the ionic cavity, namely, on the basis - of point charges within entire solvent molecules (M scheme) or on the basis of - individual point charges (P scheme). The use of an inappropriate convention may - lead to a charge-independent offset in the calculated potential, which depends - on the details of the summation scheme, on the quadrupole-moment trace of the - solvent molecule, and on the approximate form used to represent electrostatic - interactions in the system. However, whether the M or P scheme (if any) - represents the appropriate convention is still a matter of on-going debate. The - goal of the present article is to settle this long-standing controversy by - carefully analyzing (both analytically and numerically) the properties of the - electrostatic potential in molecular liquids (and inside cavities within - them).} -} - -@Article{murray, - hyphenation = {american}, - author = {Hostetler, Michael J. and Wingate, Julia E. and Zhong, Chuan-Jian and Harris, - Jay E. and Vachet, Richard W. and Clark, Michael R. and Londono, J. David and - Green, Stephen J. and Stokes, Jennifer J. and Wignall, George D. and Glish, Gary - L. and Porter, Marc D. and Evans, Neal D. and Murray, Royce W.}, - indextitle = {Alkanethiolate gold cluster molecules}, - title = {Alkanethiolate gold cluster molecules with core diameters from 1.5 to 5.2~nm}, - subtitle = {Core and monolayer properties as a function of core size}, - shorttitle = {Alkanethiolate gold cluster molecules}, - journaltitle = {Langmuir}, - volume = {14}, - number = {1}, - date = {1998}, - pages = {17--30}, - annotation = {An \texttt{article} entry with \arabic{author} authors. By default, long author - and editor lists are automatically truncated. This is configurable} -} - -@Article{reese, - hyphenation = {american}, - author = {Reese, Trevor R.}, - title = {Georgia in Anglo-Spanish Diplomacy, 1736-1739}, - journaltitle = {William and Mary Quarterly}, - volume = {15}, - series = {3}, - date = {1958}, - pages = {168--190}, - annotation = {An \texttt{article} entry with a \texttt{series} and a \texttt{volume} field. - Note the format of the series. If the value of the \texttt{series} field is an - integer, this number is printed as an ordinal and the string \enquote*{series} - is appended automatically} -} - -@Article{shore, - author = {Shore, Bradd}, - title = {Twice-Born, Once Conceived}, - subtitle = {Meaning Construction and Cultural Cognition}, - journaltitle = {American Anthropologist}, - volume = {93}, - series = {newseries}, - number = {1}, - date = {1991-03}, - pages = {9--27}, - annotation = {An \texttt{article} entry with \texttt{series}, \texttt{volume}, and - \texttt{number} fields. Note the format of the \texttt{series} which is a - localization key} -} - -@Article{sigfridsson, - hyphenation = {american}, - author = {Sigfridsson, Emma and Ryde, Ulf}, - indextitle = {Methods for deriving atomic charges}, - title = {Comparison of methods for deriving atomic charges from the electrostatic - potential and moments}, - journaltitle = {Journal of Computational Chemistry}, - volume = {19}, - number = {4}, - date = {1998}, - doi = {10.1002/(SICI)1096-987X(199803)19:4<377::AID-JCC1>3.0.CO;2-P}, - pages = {377--395}, - annotation = {An \texttt{article} entry with \texttt{volume}, \texttt{number}, and - \texttt{doi} fields. Note that the \textsc{doi} is transformed into a clickable - link if \texttt{hyperref} support has been enabled}, - abstract = { Four methods for deriving partial atomic charges from the quantum chemical - electrostatic potential (CHELP, CHELPG, Merz-Kollman, and RESP) have been - compared and critically evaluated. It is shown that charges strongly depend on - how and where the potential points are selected. Two alternative methods are - suggested to avoid the arbitrariness in the point-selection schemes and van der - Waals exclusion radii: CHELP-BOW, which also estimates the charges from the - electrostatic potential, but with potential points that are Boltzmann-weighted - after their occurrence in actual simulations using the energy function of the - program in which the charges will be used, and CHELMO, which estimates the - charges directly from the electrostatic multipole moments. Different criteria - for the quality of the charges are discussed.} -} - -@Article{spiegelberg, - hyphenation = {german}, - sorttitle = {Intention und Intentionalitat in der Scholastik, bei Brentano und Husserl}, - indexsorttitle = {Intention und Intentionalitat in der Scholastik, bei Brentano und Husserl}, - author = {Spiegelberg, Herbert}, - title = {\mkbibquote{Intention} und \mkbibquote{Intentionalit{\"a}t} in der Scholastik, - bei Brentano und Husserl}, - shorttitle = {Intention und Intentionalit{\"a}t}, - journaltitle = {Studia Philosophica}, - volume = {29}, - date = {1969}, - pages = {189--216}, - annotation = {An \texttt{article} entry. Note the \texttt{sorttitle} and - \texttt{indexsorttitle} fields and the markup of the quotes in the database file} -} - -@Article{springer, - hyphenation = {british}, - author = {Springer, Otto}, - title = {Mediaeval Pilgrim Routes from Scandinavia to Rome}, - shorttitle = {Mediaeval Pilgrim Routes}, - journaltitle = {Mediaeval Studies}, - volume = {12}, - date = {1950}, - pages = {92--122}, - annotation = {A plain \texttt{article} entry} -} - -@Article{weinberg, - author = {Weinberg, Steven}, - title = {A Model of Leptons}, - journaltitle = {Phys.~Rev.~Lett.}, - volume = {19}, - date = {1967}, - pages = {1264--1266} -} - -@Article{yoon, - author = {Yoon, Myeong S. and Ryu, Dowook and Kim, Jeongryul and Ahn, Kyo Han}, - indextitle = {Palladium pincer complexes}, - title = {Palladium pincer complexes with reduced bond angle strain: efficient catalysts - for the Heck reaction}, - journaltitle = {Organometallics}, - volume = {25}, - number = {10}, - date = {2006}, - pages = {2409--2411} -} - -@Book{aristotle:anima, - keywords = {primary}, - hyphenation = {british}, - author = {Aristotle}, - editor = {Hicks, Robert Drew}, - title = {De Anima}, - publisher = cup, - location = {Cambridge}, - date = {1907}, - annotation = {A \texttt{book} entry with an \texttt{author} and an \texttt{editor}} -} - -@Book{aristotle:physics, - keywords = {primary}, - hyphenation = {american}, - author = {Aristotle}, - translator = {Wicksteed, P. H. and Cornford, F. M.}, - title = {Physics}, - shorttitle = {Physics}, - publisher = {G. P. Putnam}, - location = {New York}, - date = {1929}, - annotation = {A \texttt{book} entry with a \texttt{translator} field} -} - -@Book{aristotle:poetics, - keywords = {primary}, - hyphenation = {british}, - author = {Aristotle}, - editor = {Lucas, D. W.}, - title = {Poetics}, - shorttitle = {Poetics}, - series = {Clarendon Aristotle}, - publisher = {Clarendon Press}, - location = {Oxford}, - date = {1968}, - annotation = {A \texttt{book} entry with an \texttt{author} and an \texttt{editor} as well as - a \texttt{series} field} -} - -@Book{aristotle:rhetoric, - keywords = {primary}, - hyphenation = {british}, - sorttitle = {Rhetoric of Aristotle}, - author = {Aristotle}, - editor = {Cope, Edward Meredith}, - commentator = {Cope, Edward Meredith}, - indextitle = {Rhetoric of Aristotle, The}, - title = {The Rhetoric of Aristotle with a commentary by the late Edward Meredith Cope}, - shorttitle = {Rhetoric}, - volumes = {3}, - publisher = cup, - date = {1877}, - annotation = {A commented edition. Note the concatenation of the \texttt{editor} and - \texttt{commentator} fields as well as the \texttt{volumes}, \texttt{sorttitle}, - and \texttt{indextitle} fields} -} - -@Book{augustine, - hyphenation = {american}, - author = {Augustine, Robert L.}, - title = {Heterogeneous catalysis for the synthetic chemist}, - shorttitle = {Heterogeneous catalysis}, - publisher = {Marcel Dekker}, - location = {New York}, - date = {1995}, - annotation = {A plain \texttt{book} entry} -} - -@Book{averroes/bland, - keywords = {primary}, - hyphenation = {american}, - author = {Averroes}, - editor = {Bland, Kalman P.}, - translator = {Bland, Kalman P.}, - indextitle = {Epistle on the Possibility of Conjunction, The}, - title = {The Epistle on the Possibility of Conjunction with the Active Intellect by Ibn - Rushd with the Commentary of Moses Narboni}, - shorttitle = {Possibility of Conjunction}, - series = {Moreshet: Studies in Jewish History, Literature and Thought}, - number = {7}, - publisher = {Jewish Theological Seminary of America}, - location = {New York}, - date = {1982}, - annotation = {A \texttt{book} entry with a \texttt{series} and a \texttt{number}. Note the - concatenation of the \texttt{editor} and \texttt{translator} fields as well as - the \texttt{indextitle} field} -} - -@Book{averroes/hannes, - keywords = {primary}, - hyphenation = {german}, - sorttitle = {Uber die Moglichkeit der Conjunktion}, - indexsorttitle = {Uber die Moglichkeit der Conjunktion}, - author = {Averroes}, - editor = {Hannes, Ludwig}, - translator = {Hannes, Ludwig}, - annotator = {Hannes, Ludwig}, - indextitle = {{\"U}ber die M{\"o}glichkeit der Conjunktion}, - title = {Des Averro{\"e}s Abhandlung: \mkbibquote{{\"U}ber die M{\"o}glichkeit der - Conjunktion} oder \mkbibquote{{\"U}ber den materiellen Intellekt}}, - shorttitle = {{\"U}ber die M{\"o}glichkeit der Conjunktion}, - publisher = {C.~A. Kaemmerer}, - location = {Halle an der Saale}, - date = {1892}, - annotation = {An annotated edition. Note the concatenation of the \texttt{editor}, - \texttt{translator}, and \texttt{annotator} fields. Also note the - \texttt{shorttitle}, \texttt{indextitle}, \texttt{sorttitle}, and - \texttt{indexsorttitle} fields} -} - -@Book{averroes/hercz, - keywords = {primary}, - hyphenation = {german}, - indexsorttitle = {Drei Abhandlungen uber die Conjunction}, - author = {Averroes}, - editor = {Hercz, J.}, - translator = {Hercz, J.}, - indextitle = {Drei Abhandlungen {\"u}ber die Conjunction}, - title = {Drei Abhandlungen {\"u}ber die Conjunction des separaten Intellects mit dem - Menschen}, - subtitle = {Von Averroes (Vater und Sohn), aus dem Arabischen {\"u}bersetzt von Samuel Ibn - Tibbon}, - shorttitle = {Drei Abhandlungen}, - publisher = {S.~Hermann}, - location = {Berlin}, - date = {1869}, - annotation = {A \texttt{book} entry. Note the concatenation of the \texttt{editor} and - \texttt{translator} fields as well as the \texttt{indextitle} and - \texttt{indexsorttitle} fields} -} - -@Book{cicero, - hyphenation = {german}, - author = {Cicero, Marcus Tullius}, - editor = {Blank-Sangmeister, Ursula}, - translator = {Blank-Sangmeister, Ursula}, - afterword = {Thraede, Klaus}, - indextitle = {De natura deorum}, - title = {De natura deorum. {\"U}ber das Wesen der G{\"o}tter}, - shorttitle = {De natura deorum}, - language = {langlatin and langgerman}, - publisher = {Reclam}, - location = {Stuttgart}, - date = {1995}, - annotation = {A bilingual edition of Cicero's \emph{De natura deorum}, with a German - translation. Note the format of the \texttt{language} field in the database - file, the concatenation of the \texttt{editor} and \texttt{translator} fields, - and the \texttt{afterword} field} -} - -@Book{coleridge, - hyphenation = {british}, - author = {Coleridge, Samuel Taylor}, - editor = {Coburn, Kathleen and Engell, James and Bate, W. Jackson}, - indextitle = {Biographia literaria}, - title = {Biographia literaria, or Biographical sketches of my literary life and - opinions}, - shorttitle = {Biographia literaria}, - maintitle = {The collected works of Samuel Taylor Coleridge}, - part = {2}, - volume = {7}, - series = {Bollingen Series}, - number = {75}, - publisher = {Routledge and Kegan Paul}, - location = {London}, - date = {1983}, - annotation = {One (partial) volume of a multivolume book. This is a \texttt{book} entry with - a \texttt{volume} and a \texttt{part} field which explicitly refers to the - second (physical) part of the seventh (logical) volume. Also note the - \texttt{series} and \texttt{number} fields} -} - -@Book{companion, - hyphenation = {american}, - sorttitle = {LaTeX Companion}, - author = {Goossens, Michel and Mittelbach, Frank and Samarin, Alexander}, - indextitle = {LaTeX Companion, The}, - title = {The LaTeX Companion}, - shorttitle = {LaTeX Companion}, - edition = {1}, - publisher = {Addison-Wesley}, - location = {Reading, Mass.}, - date = {1994}, - pagetotal = {528}, - annotation = {A book with three authors. Note the formatting of the author list. By default, - only the first name is reversed in the bibliography} -} - -@Book{cotton, - hyphenation = {british}, - author = {Cotton, Frank Albert and Wilkinson, Geoffrey and Murillio, Carlos A. and - Bochmann, Manfred}, - title = {Advanced inorganic chemistry}, - edition = {6}, - publisher = {Wiley}, - location = {Chichester}, - date = {1999}, - annotation = {A \texttt{book} entry with \arabic{author} authors and an \texttt{edition} - field. By default, long \texttt{author} and \texttt{editor} lists are - automatically truncated. This is configurable} -} - -@Book{gerhardt, - hyphenation = {american}, - sorttitle = {Federal Appointments Process}, - author = {Gerhardt, Michael J.}, - indextitle = {Federal Appointments Process, The}, - title = {The Federal Appointments Process}, - subtitle = {A Constitutional and Historical Analysis}, - shorttitle = {Federal Appointments Process}, - publisher = {Duke University Press}, - location = {Durham and London}, - date = {2000}, - annotation = {This is a \texttt{book} entry. Note the format of the \texttt{location} field - as well as the \texttt{sorttitle} and \texttt{indextitle} fields} -} - -@Book{gonzalez, - hyphenation = {american}, - sorttitle = {Ghost of John Wayne and Other Stories}, - author = {Gonzalez, Ray}, - indextitle = {Ghost of John Wayne and Other Stories, The}, - title = {The Ghost of John Wayne and Other Stories}, - shorttitle = {Ghost of John Wayne}, - publisher = {The University of Arizona Press}, - location = {Tucson}, - date = {2001}, - isbn = {0-816-52066-6}, - annotation = {A collection of short stories. This is a \texttt{book} entry. Note the - \texttt{sorttitle} and \texttt{indextitle} fields in the database file. There's - also an \texttt{isbn} field} -} - -@Book{hammond, - hyphenation = {british}, - sorttitle = {Basics of crystallography and diffraction}, - author = {Hammond, Christopher}, - indextitle = {Basics of crystallography and diffraction, The}, - title = {The basics of crystallography and diffraction}, - shorttitle = {Crystallography and diffraction}, - publisher = {International Union of Crystallography and Oxford University Press}, - location = {Oxford}, - date = {1997}, - annotation = {A \texttt{book} entry. Note the \texttt{sorttitle} and \texttt{indextitle} - fields as well as the format of the \texttt{publisher} field} -} - -@Book{iliad, - hyphenation = {german}, - sorttitle = {Ilias}, - author = {Homer}, - translator = {Schadewaldt, Wolfgang}, - introduction = {Latacz, Joachim}, - indextitle = {Ilias, Die}, - title = {Die Ilias}, - shorttitle = {Ilias}, - edition = {3}, - publisher = {Artemis \& Winkler}, - location = {D{\"u}sseldorf and Z{\"u}rich}, - date = {2004}, - annotation = {A German translation of the \emph{Iliad}. Note the \texttt{translator} and - \texttt{introduction} fields and the format of the \texttt{location} field in - the database file. Also note the \texttt{sorttitle} and \texttt{indextitle} fields} -} - -@Book{knuth:ct, - hyphenation = {american}, - sortyear = {1984-0}, - sorttitle = {Computers & Typesetting}, - indexsorttitle = {Computers & Typesetting}, - author = {Knuth, Donald E.}, - title = {Computers \& Typesetting}, - volumes = {5}, - publisher = {Addison-Wesley}, - location = {Reading, Mass.}, - date = {1984/1986}, - annotation = {A five-volume book cited as a whole. This is a \texttt{book} entry, note the - \texttt{volumes} field} -} - -@Book{knuth:ct:a, - hyphenation = {american}, - sortyear = {1984-1}, - sorttitle = {Computers & Typesetting A}, - indexsorttitle = {The TeXbook}, - author = {Knuth, Donald E.}, - indextitle = {\TeX book, The}, - title = {The \TeX book}, - shorttitle = {\TeX book}, - maintitle = {Computers \& Typesetting}, - volume = {A}, - publisher = {Addison-Wesley}, - location = {Reading, Mass.}, - date = {1984}, - annotation = {The first volume of a five-volume book. Note the \texttt{sorttitle} and - \texttt{sortyear} fields. 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} -} - -@Book{knuth:ct:b, - hyphenation = {american}, - sortyear = {1986-1}, - sorttitle = {Computers & Typesetting B}, - indexsorttitle = {TeX: The Program}, - author = {Knuth, Donald E.}, - title = {\TeX: The Program}, - shorttitle = {\TeX}, - maintitle = {Computers \& Typesetting}, - volume = {B}, - publisher = {Addison-Wesley}, - location = {Reading, Mass.}, - date = {1986}, - annotation = {The second volume of a five-volume book. Note the \texttt{sorttitle} and - \texttt{sortyear} fields. Also note the \texttt{indexsorttitle} field} -} - -@Book{knuth:ct:c, - hyphenation = {american}, - sortyear = {1986-2}, - sorttitle = {Computers & Typesetting C}, - author = {Knuth, Donald E.}, - indextitle = {METAFONTbook, The}, - title = {The METAFONTbook}, - shorttitle = {METAFONTbook}, - maintitle = {Computers \& Typesetting}, - volume = {C}, - publisher = {Addison-Wesley}, - location = {Reading, Mass.}, - date = {1986}, - annotation = {The third volume of a five-volume book. Note the \texttt{sorttitle} and - \texttt{sortyear} fields as well as the \texttt{indextitle} field} -} - -@Book{knuth:ct:d, - hyphenation = {american}, - sortyear = {1986-3}, - sorttitle = {Computers & Typesetting D}, - author = {Knuth, Donald E.}, - title = {METAFONT: The Program}, - shorttitle = {METAFONT}, - maintitle = {Computers \& Typesetting}, - volume = {D}, - publisher = {Addison-Wesley}, - location = {Reading, Mass.}, - date = {1986}, - annotation = {The fourth volume of a five-volume book. Note the \texttt{sorttitle} and - \texttt{sortyear} fields} -} - -@Book{knuth:ct:e, - hyphenation = {american}, - sortyear = {1986-4}, - sorttitle = {Computers & Typesetting E}, - author = {Knuth, Donald E.}, - title = {Computer Modern Typefaces}, - maintitle = {Computers \& Typesetting}, - volume = {E}, - publisher = {Addison-Wesley}, - location = {Reading, Mass.}, - date = {1986}, - annotation = {The fifth volume of a five-volume book. Note the \texttt{sorttitle} and - \texttt{sortyear} fields} -} - -@Book{malinowski, - hyphenation = {british}, - author = {Malinowski, Bronis{\l}aw}, - title = {Argonauts of the Western Pacific}, - subtitle = {An account of native enterprise and adventure in the Archipelagoes of - Melanesian New Guinea}, - shorttitle = {Argonauts}, - edition = {8}, - publisher = {Routledge and Kegan Paul}, - location = {London}, - date = {1972}, - annotation = {This is a \texttt{book} entry. Note the format of the \texttt{publisher} and - \texttt{edition} fields as well as the \texttt{subtitle} field} -} - -@Book{maron, - hyphenation = {american}, - author = {Maron, Monika}, - translator = {Brigitte Goldstein}, - title = {Animal Triste}, - shorttitle = {Animal Triste}, - publisher = {University of Nebraska Press}, - location = {Lincoln}, - date = {2000}, - origlanguage = {german}, - annotation = {An English translation of a German novel with a French title. In other words: a - \texttt{book} entry with a \texttt{translator} field. Note the - \texttt{origlanguage} field which is concatenated with the \texttt{translator}} -} - -@Book{massa, - hyphenation = {british}, - author = {Werner Massa}, - title = {Crystal structure determination}, - edition = {2}, - publisher = {Spinger}, - location = {Berlin}, - date = {2004}, - annotation = {A \texttt{book} entry with an \texttt{edition} field} -} - -@Book{nietzsche:ksa, - hyphenation = {german}, - sortyear = {1988-00-000}, - sorttitle = {Werke-00-000}, - indexsorttitle = {Samtliche Werke}, - author = {Nietzsche, Friedrich}, - editor = {Colli, Giorgio and Montinari, Mazzino}, - title = {S{\"a}mtliche Werke}, - subtitle = {Kritische Studienausgabe}, - volumes = {15}, - edition = {2}, - publisher = dtv # { and Walter de Gruyter}, - location = {M{\"u}nchen and Berlin and New York}, - date = {1988}, - annotation = {The critical edition of Nietzsche's works. This is a \texttt{book} 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 sorting order of the bibliography. We want this - item listed first in the bibliography} -} - -@Book{nietzsche:ksa1, - hyphenation = {german}, - sortyear = {1988-01-000}, - sorttitle = {Werke-01-000}, - indexsorttitle = {Samtliche Werke I}, - author = {Nietzsche, Friedrich}, - bookauthor = {Nietzsche, Friedrich}, - editor = {Colli, Giorgio and Montinari, Mazzino}, - indextitle = {S{\"a}mtliche Werke I}, - title = {Die Geburt der Trag{\"o}die. Unzeitgem{\"a}{\ss}e Betrachtungen I--IV. - Nachgelassene Schriften 1870--1973}, - shorttitle = {S{\"a}mtliche Werke I}, - maintitle = {S{\"a}mtliche Werke}, - mainsubtitle = {Kritische Studienausgabe}, - volume = {1}, - edition = {2}, - publisher = dtv # { and Walter de Gruyter}, - location = {M{\"u}nchen and Berlin and New York}, - date = {1988}, - 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 - referring to the entire edition} -} - -@Book{nussbaum, - keywords = {secondary}, - hyphenation = {american}, - sorttitle = {Aristotle's De Motu Animalium}, - indexsorttitle = {Aristotle's De Motu Animalium}, - author = {Nussbaum, Martha}, - title = {Aristotle's \mkbibquote{De Motu Animalium}}, - publisher = pup, - location = {Princeton}, - date = {1978}, - annotation = {A \texttt{book} entry. Note the \texttt{sorttitle} and \texttt{indexsorttitle} - fields and the markup of the quotes in the database file} -} - -@Book{piccato, - hyphenation = {american}, - author = {Piccato, Pablo}, - title = {City of Suspects}, - subtitle = {Crime in Mexico City, 1900--1931}, - shorttitle = {City of Suspects}, - publisher = {Duke University Press}, - location = {Durham and London}, - date = {2001}, - annotation = {This is a \texttt{book} entry. Note the format of the \texttt{location} field - in the database file} -} - -@Book{vangennep, - options = {useprefix}, - hyphenation = {french}, - sorttitle = {Rites de passage}, - author = {van Gennep, Arnold}, - indextitle = {Rites de passage, Les}, - title = {Les rites de passage}, - shorttitle = {Rites de passage}, - publisher = {Nourry}, - location = {Paris}, - date = {1909}, - annotation = {A \texttt{book} entry. Note the format of the printed name and compare the - \texttt{useprefix} option in the \texttt{options} field as well as - \texttt{brandt} and \texttt{geer}} -} - -@Book{vazques-de-parga, - hyphenation = {spanish}, - sorttitle = {Peregrinaciones a Santiago de Compostela}, - author = {V{\'a}zques{ de }Parga, Luis and Lacarra, Jos{\'e} Mar{\'i}a and Ur{\'i}a - R{\'i}u, Juan}, - indextitle = {Peregrinaciones a Santiago de Compostela, Las}, - title = {Las Peregrinaciones a Santiago de Compostela}, - shorttitle = {Peregrinaciones}, - volumes = {3}, - publisher = {Iberdrola}, - location = {Pamplona}, - date = {1993}, - note = {Ed. facs. de la realizada en 1948--49}, - annotation = {A multivolume book cited as a whole. This is a \texttt{book} entry with - \texttt{volumes}, \texttt{note}, \texttt{sorttitle}, and \texttt{indextitle} fields} -} - -@Book{worman, - hyphenation = {american}, - sorttitle = {Cast of Character}, - author = {Worman, Nancy}, - indextitle = {Cast of Character, The}, - title = {The Cast of Character}, - subtitle = {Style in Greek Literature}, - shorttitle = {Cast of Character}, - publisher = {University of Texas Press}, - location = {Austin}, - date = {2002}, - annotation = {A \texttt{book} entry. Note the \texttt{sorttitle} and \texttt{indextitle} - fields} -} - -@Collection{britannica, - options = {useeditor=false}, - label = {EB}, - hyphenation = {british}, - sorttitle = {Encyclop{\ae}dia Britannica}, - editor = {Preece, Warren E.}, - indextitle = {Encyclop{\ae}dia Britannica, The New}, - title = {The New Encyclop{\ae}dia Britannica}, - shorttitle = {Encyclop{\ae}dia Britannica}, - volumes = {32}, - edition = {15}, - publisher = {Encyclop{\ae}dia Britannica}, - location = {Chicago, Ill.}, - date = {2003}, - annotation = {This is a \texttt{collection} 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 editor. In addition to that, we want the title to - be alphabetized under \enquote*{E} rather than \enquote*{T}. Also note the - \texttt{label} field which is provided for author-year citation styles} -} - -@Collection{gaonkar, - hyphenation = {american}, - editor = {Gaonkar, Dilip Parameshwar}, - title = {Alternative Modernities}, - publisher = {Duke University Press}, - location = {Durham and London}, - date = {2001}, - isbn = {0-822-32714-7}, - annotation = {This is a \texttt{collection} entry. Note the format of the \texttt{location} - field in the database file as well as the \texttt{isbn} field} -} - -@Collection{jaffe, - editor = {Jaff{\'e}, Philipp}, - editora = {Loewenfeld, Samuel and Kaltenbrunner, Ferdinand and Ewald, Paul}, - editoratype = {redactor}, - indextitle = {Regesta Pontificum Romanorum}, - title = {Regesta Pontificum Romanorum ab condita ecclesia ad annum post Christum natum - \textsc{mcxcviii}}, - shorttitle = {Regesta Pontificum Romanorum}, - volumes = {2}, - edition = {2}, - location = {Leipzig}, - date = {1885/1888}, - annotation = {A \texttt{collection} entry with \texttt{edition} and \texttt{volumes} fields. - Note the \texttt{editora} and \texttt{editoratype} fields} -} - -@Collection{westfahl:frontier, - hyphenation = {american}, - editor = {Westfahl, Gary}, - title = {Space and Beyond}, - subtitle = {The Frontier Theme in Science Fiction}, - booktitle = {Space and Beyond}, - booksubtitle = {The Frontier Theme in Science Fiction}, - publisher = {Greenwood}, - location = {Westport, Conn. and London}, - date = {2000}, - annotation = {This is a \texttt{collection} entry. Note the format of the \texttt{location} - field as well as the \texttt{subtitle} and \texttt{booksubtitle} fields} -} - -@InBook{kant:kpv, - shorthand = {KpV}, - hyphenation = {german}, - author = {Kant, Immanuel}, - bookauthor = {Kant, Immanuel}, - title = {Kritik der praktischen Vernunft}, - shorttitle = {Kritik der praktischen Vernunft}, - booktitle = {Kritik der praktischen Vernunft. Kritik der Urtheilskraft}, - maintitle = {Kants Werke. Akademie Textausgabe}, - volume = {5}, - publisher = {Walter de Gruyter}, - location = {Berlin}, - date = {1968}, - pages = {1--163}, - annotation = {An edition of Kant's \emph{Collected Works}, volume five. This is an - \texttt{inbook} entry which explicitly refers to the \emph{Critique of Practical - Reason} only, not to the entire fifth volume. Note the \texttt{author} and - \texttt{bookauthor} fields in the database file. By default, the - \texttt{bookauthor} is omitted if the values of the \texttt{author} and - \texttt{bookauthor} fields are identical} -} - -@InBook{kant:ku, - shorthand = {KU}, - hyphenation = {german}, - author = {Kant, Immanuel}, - bookauthor = {Kant, Immanuel}, - title = {Kritik der Urtheilskraft}, - booktitle = {Kritik der praktischen Vernunft. Kritik der Urtheilskraft}, - maintitle = {Kants Werke. Akademie Textausgabe}, - volume = {5}, - publisher = {Walter de Gruyter}, - location = {Berlin}, - date = {1968}, - pages = {165--485}, - annotation = {An edition of Kant's \emph{Collected Works}, volume five. This is an - \texttt{inbook} entry which explicitly refers to the \emph{Critique of Judgment} - only, not to the entire fifth volume} -} - -@InBook{nietzsche:historie, - hyphenation = {german}, - sortyear = {1988-01-243}, - sorttitle = {Werke-01-243}, - indexsorttitle = {Vom Nutzen und Nachtheil der Historie fur das Leben}, - author = {Nietzsche, Friedrich}, - bookauthor = {Nietzsche, Friedrich}, - editor = {Colli, Giorgio and Montinari, Mazzino}, - indextitle = {Vom Nutzen und Nachtheil der Historie f{\"u}r das Leben}, - title = {Unzeitgem{\"a}sse Betrachtungen. Zweites St{\"u}ck}, - subtitle = {Vom Nutzen und Nachtheil der Historie f{\"u}r das Leben}, - shorttitle = {Vom Nutzen und Nachtheil der Historie}, - booktitle = {Die Geburt der Trag{\"o}die. Unzeitgem{\"a}{\ss}e Betrachtungen I--IV. - Nachgelassene Schriften 1870--1973}, - maintitle = {S{\"a}mtliche Werke}, - mainsubtitle = {Kritische Studienausgabe}, - volume = {1}, - publisher = dtv # { and Walter de Gruyter}, - location = {M{\"u}nchen and Berlin and New York}, - date = {1988}, - pages = {243--334}, - annotation = {A single essay from the critical edition of Nietzsche's works. 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 this entry to - be listed after the entry referring to the entire first volume} -} - -@InCollection{brandt, - options = {useprefix=false}, - hyphenation = {german}, - indexsorttitle = {Nordischen Lander von der Mitte des 11. Jahrhunderts bis 1448}, - author = {von Brandt, Ahasver and Erich Hoffmann}, - editor = {Ferdinand Seibt}, - indextitle = {Nordischen L{\"a}nder von der Mitte des 11.~Jahrhunderts bis 1448, Die}, - title = {Die nordischen L{\"a}nder von der Mitte des 11.~Jahrhunderts bis 1448}, - shorttitle = {Die nordischen L{\"a}nder}, - booktitle = {Europa im Hoch- und Sp{\"a}tmittelalter}, - series = {Handbuch der europ{\"a}ischen Geschichte}, - number = {2}, - publisher = {Klett-Cotta}, - location = {Stuttgart}, - date = {1987}, - pages = {884--917}, - annotation = {An \texttt{incollection} entry with a \texttt{series} and a \texttt{number}. - Note the format of the printed name and compare the \texttt{useprefix} option in - the \texttt{options} field as well as \texttt{vangennep}. Also note the - \texttt{indextitle, and \texttt{indexsorttitle} fields}} -} - -@InCollection{hyman, - keywords = {secondary}, - hyphenation = {american}, - author = {Arthur Hyman}, - editor = {O'Meara, Dominic J.}, - indextitle = {Aristotle's Theory of the Intellect}, - title = {Aristotle's Theory of the Intellect and its Interpretation by Averroes}, - shorttitle = {Aristotle's Theory of the Intellect}, - booktitle = {Studies in Aristotle}, - series = {Studies in Philosophy and the History of Philosophy}, - number = {9}, - publisher = {The Catholic University of America Press}, - location = {Washington, D.C.}, - date = {1981}, - pages = {161--191}, - annotation = {An \texttt{incollection} entry with a \texttt{series} and \texttt{number} field} -} - -@InCollection{pines, - keywords = {secondary}, - hyphenation = {american}, - author = {Pines, Shlomo}, - editor = {Twersky, Isadore}, - indextitle = {Limitations of Human Knowledge According to Al-Farabi, ibn Bajja, and - Maimonides, The}, - title = {The Limitations of Human Knowledge According to Al-Farabi, ibn Bajja, and - Maimonides}, - shorttitle = {Limitations of Human Knowledge}, - booktitle = {Studies in Medieval Jewish History and Literature}, - publisher = hup, - location = {Cambridge, Mass.}, - date = {1979}, - pages = {82--109}, - annotation = {A typical \texttt{incollection} entry. Note the \texttt{indextitle} field} -} - -@InProceedings{moraux, - keywords = {secondary}, - hyphenation = {french}, - indexsorttitle = {De Anima dans la tradition grecque}, - author = {Moraux, Paul}, - editor = {Lloyd, G. E. R. and Owen, G. E. L.}, - indextitle = {\emph{De Anima} dans la tradition gr{\`e}cque, Le}, - title = {Le \emph{De Anima} dans la tradition gr{\`e}cque}, - subtitle = {Quelques aspects de l'interpretation du trait{\'e}, de Theophraste {\`a} - Themistius}, - shorttitle = {\emph{De Anima} dans la tradition gr{\`e}cque}, - booktitle = {Aristotle on Mind and the Senses}, - booktitleaddon = {Proceedings of the Seventh Symposium Aristotelicum}, - eventdate = {1975}, - publisher = cup, - location = {Cambridge}, - date = {1979}, - pages = {281--324}, - annotation = {This is a typical \texttt{inproceedings} entry. Note the \texttt{booksubtitle}, - \texttt{shorttitle}, \texttt{indextitle}, and \texttt{indexsorttitle} fields. - Also note the \texttt{eventdate} field.} -} - -@InProceedings{salam, - author = {Salam, Abdus}, - editor = {Svartholm, Nils}, - title = {Weak and Electromagnetic Interactions}, - booktitle = {Elementary particle theory}, - booksubtitle = {Relativistic groups and analyticity}, - booktitleaddon = {Proceedings of the Eighth Nobel Symposium}, - eventdate = {1968-05-19/1968-05-25}, - venue = {Aspen{\"a}sgarden, Lerum}, - publisher = {Almquist \& Wiksell}, - location = {Stockholm}, - date = {1968}, - pages = {367--377} -} - -@Manual{cms, - label = {CMS}, - hyphenation = {american}, - sorttitle = {Chicago Manual of Style}, - indextitle = {Chicago Manual of Style, The}, - title = {The Chicago Manual of Style}, - subtitle = {The Essential Guide for Writers, Editors, and Publishers}, - shorttitle = {Chicago Manual of Style}, - edition = {15}, - publisher = {University of Chicago Press}, - location = {Chicago, Ill.}, - date = {2003}, - isbn = {0-226-10403-6}, - annotation = {This is a \texttt{manual} entry without an \texttt{author} or \texttt{editor}. - Note the \texttt{label} field in the database file which is provided for - author-year citation styles. Also note the \texttt{sorttitle} and - \texttt{indextitle} fields. By default, all entries without an \texttt{author} - or \texttt{editor} are alphabetized by \texttt{title} but we want this entry to - be alphabetized under \enquote*{C} rather than \enquote*{T}. There's also an - \texttt{isbn} field} -} - -@Online{baez/online, - hyphenation = {american}, - author = {Baez, John C. and Lauda, Aaron D.}, - title = {Higher-Dimensional Algebra V: 2-Groups}, - version = {3}, - date = {2004-10-27}, - eprinttype = {arxiv}, - eprint = {math/0307200v3}, - annotation = {An \texttt{online} reference from arXiv. Note the \texttt{eprint} and - \texttt{eprinttype} fields. Compare \texttt{baez\slash article} which is the - same item given as an \texttt{article} entry with eprint information} -} - -@Online{ctan, - label = {CTAN}, - hyphenation = {american}, - title = {CTAN}, - subtitle = {The Comprehensive TeX Archive Network}, - date = {2006}, - url = {http://www.ctan.org}, - urldate = {2006-10-01}, - annotation = {This is an \texttt{online} entry. The \textsc{url}, which is given in the - \texttt{url} field, is transformed into a clickable link if \texttt{hyperref} - support has been enabled. Note the format of the \texttt{urldate} field - (\texttt{yyyy-mm-dd}) in the database file. Also note the \texttt{label} field - which may be used as a fallback by citation styles which need an \texttt{author} - and\slash or a \texttt{year}} -} - -@Online{itzhaki, - hyphenation = {american}, - author = {Itzhaki, Nissan}, - title = {Some remarks on 't Hooft's S-matrix for black holes}, - version = {1}, - date = {1996-03-11}, - eprinttype = {arxiv}, - eprint = {hep-th/9603067}, - annotation = {An \texttt{online} reference from arXiv. Note the \texttt{eprint} and - \texttt{eprinttype} fields. Also note that the arXiv reference is transformed - into a clickable link if \texttt{hyperref} support has been enabled}, - abstract = {We discuss the limitations of 't Hooft's proposal for the black hole S-matrix. - We find that the validity of the S-matrix implies violation of the - semi-classical approximation at scales large compared to the Planck scale. We - also show that the effect of the centrifugal barrier on the S-matrix is crucial - even for large transverse distances.} -} - -@Online{markey, - hyphenation = {american}, - sorttitle = {Tame the Beast}, - author = {Markey, Nicolas}, - title = {Tame the BeaST}, - subtitle = {The B to X of BibTeX}, - version = {1.3}, - date = {2005-10-16}, - url = {http://tug.ctan.org/tex-archive/info/bibtex/tamethebeast/ttb_en.pdf}, - urldate = {2006-10-01}, - annotation = {An \texttt{online} entry for a tutorial. Note the format of the \texttt{date} - field (\texttt{yyyy-mm-dd}) in the database file.} -} - -@Online{wassenberg, - hyphenation = {american}, - author = {Wassenberg, Jan and Sanders, Peter}, - title = {Faster Radix Sort via Virtual Memory and Write-Combining}, - version = {1}, - date = {2010-08-17}, - eprinttype = {arxiv}, - eprintclass = {cs.DS}, - eprint = {1008.2849v1}, - annotation = {A recent \texttt{online} reference from arXiv using the new (April 2007 onward) - identifier format. Note the \texttt{eprint}, \texttt{eprinttype}, and - \texttt{eprintclass} fields. Also note that the arXiv reference is transformed - into a clickable link if \texttt{hyperref} support has been enabled}, - abstract = {Sorting algorithms are the deciding factor for the performance of common - operations such as removal of duplicates or database sort-merge joins. This work - focuses on 32-bit integer keys, optionally paired with a 32-bit value. We - present a fast radix sorting algorithm that builds upon a - microarchitecture-aware variant of counting sort} -} - -@Patent{almendro, - hyphenation = {german}, - author = {Almendro, Jos{\'e} L. and Mart{\'i}n, Jacinto and S{\'a}nchez, Alberto and - Nozal, Fernando}, - title = {Elektromagnetisches Signalhorn}, - number = {EU-29702195U}, - location = {countryfr and countryuk and countryde}, - date = {1998}, - annotation = {This is a \texttt{patent} entry with a \texttt{location} field. The number is - given in the \texttt{number} field. Note the format of the \texttt{location} - field in the database file. Compare \texttt{laufenberg}, \texttt{sorace}, and - \texttt{kowalik}} -} - -@Patent{kowalik, - hyphenation = {french}, - author = {Kowalik, F. and Isard, M.}, - indextitle = {Estimateur d'un d{\'e}faut de fonctionnement}, - title = {Estimateur d'un d{\'e}faut de fonctionnement d'un modulateur en quadrature et - {\'e}tage de modulation l'utilisant}, - type = {patreqfr}, - number = {9500261}, - date = {1995-01-11}, - annotation = {This is a \texttt{patent} entry for a French patent request with a full date. - The number is given in the \texttt{number} field. Note the format of the - \texttt{type} and \texttt{date} fields in the database file. Compare - \texttt{almendro}, \texttt{laufenberg}, and \texttt{sorace}} -} - -@Patent{laufenberg, - hyphenation = {german}, - author = {Laufenberg, Xaver and Eynius, Dominique and Suelzle, Helmut and Usbeck, Stephan - and Spaeth, Matthias and Neuser-Hoffmann, Miriam and Myrzik, Christian and - Schmid, Manfred and Nietfeld, Franz and Thiel, Alexander and Braun, Harald and - Ebner, Norbert}, - holder = {{Robert Bosch GmbH} and {Daimler Chrysler AG} and {Bayerische Motoren Werke - AG}}, - title = {Elektrische Einrichtung und Betriebsverfahren}, - type = {patenteu}, - number = {1700367}, - date = {2006-09-13}, - annotation = {This is a \texttt{patent} entry with a \texttt{holder} field. Note the format - of the \texttt{type} and \texttt{location} fields in the database file. Compare - \texttt{almendro}, \texttt{sorace}, and \texttt{kowalik}}, - abstract = {The invention relates to an electric device comprising a generator, in - particular for use in the vehicle electric system of a motor vehicle and a - controller for controlling the generator voltage. The device is equipped with a - control zone, in which the voltage is controlled and zones, in which the torque - is controlled. The invention also relates to methods for operating a device of - this type.}, - file = {http://v3.espacenet.com/textdoc?IDX=EP1700367} -} - -@Patent{sorace, - hyphenation = {american}, - author = {Sorace, Ronald E. and Reinhardt, Victor S. and Vaughn, Steven A.}, - holder = {{Hughes Aircraft Company}}, - title = {High-Speed Digital-to-RF Converter}, - type = {patentus}, - number = {5668842}, - date = {1997-09-16}, - annotation = {This is a \texttt{patent} entry with a \texttt{holder} field. Note the format - of the \texttt{type} and \texttt{date} fields in the database file. Compare - \texttt{almendro}, \texttt{laufenberg}, and \texttt{kowalik}} -} - -@Report{chiu, - hyphenation = {american}, - sorttitle = {Hybrid Hierarchical Model of a Multiple Virtual Storage (MVS) Operating - System}, - author = {Chiu, Willy W. and Chow, We Min}, - indextitle = {Hybrid Hierarchical Model, A}, - title = {A Hybrid Hierarchical Model of a Multiple Virtual Storage (MVS) Operating - System}, - institution = {IBM}, - type = {resreport}, - number = {RC-6947}, - date = {1978}, - annotation = {This is a \texttt{report} entry for a research report. Note the format of the - \texttt{type} field in the database file which uses a localization key. The - number of the report is given in the \texttt{number} field. Also note the - \texttt{sorttitle} and \texttt{indextitle} fields} -} - -@Report{padhye, - hyphenation = {american}, - sorttitle = {A Stochastic Model of TCP Reno Congestion Avoidance and Control}, - author = {Padhye, Jitendra and Firoiu, Victor and Towsley, Don}, - indextitle = {Stochastic Model of TCP Reno Congestion Avoidance and Control, A}, - title = {A Stochastic Model of TCP Reno Congestion Avoidance and Control}, - institution = {University of Massachusetts}, - type = {techreport}, - number = {99-02}, - location = {Amherst, Mass.}, - date = {1999}, - annotation = {This is a \texttt{report} entry for a technical report. Note the format of the - \texttt{type} field in the database file which uses a localization key. The - number of the report is given in the \texttt{number} field. Also note the - \texttt{sorttitle} and \texttt{indextitle} fields}, - abstract = {The steady state performance of a bulk transfer TCP flow (i.e. a flow with a - large amount of data to send, such as FTP transfers) may be characterized by - three quantities. The first is the send rate, which is the amount of data sent - by the sender in unit time. The second is the throughput, which is the amount of - data received by the receiver in unit time. Note that the throughput will always - be less than or equal to the send rate due to losses. Finally, the number of - non-duplicate packets received by the receiver in unit time gives us the goodput - of the connection. The goodput is always less than or equal to the throughput, - since the receiver may receive two copies of the same packet due to - retransmissions by the sender. In a previous paper, we presented a simple model - for predicting the steady state send rate of a bulk transfer TCP flow as a - function of loss rate and round trip time. In this paper, we extend that work in - two ways. First, we analyze the performance of bulk transfer TCP flows using - more precise, stochastic analysis. Second, we build upon the previous analysis - to provide both an approximate formula as well as a more accurate stochastic - model for the steady state throughput of a bulk transfer TCP flow.}, - file = {ftp://gaia.cs.umass.edu/pub/Padhey99-markov.ps} -} - -@Thesis{geer, - options = {useprefix=false}, - hyphenation = {british}, - author = {de Geer, Ingrid}, - title = {Earl, Saint, Bishop, Skald~-- and Music}, - subtitle = {The Orkney Earldom of the Twelfth Century. A Musicological Study}, - institution = {Uppsala Universitet}, - type = {phdthesis}, - location = {Uppsala}, - date = {1985}, - annotation = {This is a typical \texttt{thesis} entry for a PhD thesis. Note the - \texttt{type} field in the database file which uses a localization key. Also - note the format of the printed name and compare the \texttt{useprefix} option in - the \texttt{options} field as well as \texttt{vangennep}} -} - -@Thesis{loh, - hyphenation = {american}, - author = {Loh, Nin C.}, - title = {High-Resolution Micromachined Interferometric Accelerometer}, - institution = {Massachusetts Institute of Technology}, - type = {mathesis}, - location = {Cambridge, Mass.}, - date = {1992}, - annotation = {This is a typical \texttt{thesis} entry for an MA thesis. Note the - \texttt{type} field in the database file which uses a localization key} -} +@string{anch-ie = {Angew.~Chem. Int.~Ed.} } +@string{cup = {Cambridge University Press} } +@string{dtv = {Deutscher Taschenbuch-Verlag} } +@string{hup = {Harvard University Press} } +@string{jams = {J.~Amer. Math. Soc.} } +@string{jchph = {J.~Chem. Phys.} } +@string{jomch = {J.~Organomet. Chem.} } +@string{pup = {Princeton University Press} } + +@incollection{westfahl:space, + crossref = {westfahl:frontier}, + hyphenation = {american}, + author = {Westfahl, Gary}, + indextitle = {True Frontier, The}, + title = {The True Frontier}, + subtitle = {Confronting and Avoiding the Realities of Space in American + Science Fiction Films}, + pages = {55--65}, + annotation = {A cross-referenced article from a \texttt{collection}. This is + an \texttt{incollection} entry with a \texttt{crossref} field. Note the + \texttt{subtitle} and \texttt{indextitle} fields} +} +@set{set, + entryset = {herrmann,aksin,yoon}, + annotation = {A \texttt{set} with three members} +} +@set{stdmodel, + entryset = {glashow,weinberg,salam}, + annotation = {A \texttt{set} with three members discussing the standard + model of particle physics} +} +@article{aksin, + author = {Aks{\i}n, {\"O}zge and T{\"u}rkmen, Hayati and Artok, Levent + and {\k{C}}etinkaya, Bekir and Ni, Chaoying + and B{\"u}y{\"u}kg{\"u}ng{\"o}r, Orhan and {\"O}zkal, Erhan}, + indextitle = {Effect of immobilization on catalytic characteristics}, + title = {Effect of immobilization on catalytic characteristics of saturated + Pd-N-heterocyclic carbenes in Mizoroki-Heck reactions}, + journaltitle = jomch, + volume = {691}, + number = {13}, + date = {2006}, + pages = {3027--3036} +} +@article{angenendt, + hyphenation = {german}, + author = {Angenendt, Arnold}, + indextitle = {In Honore Salvatoris}, + title = {In Honore Salvatoris~-- Vom Sinn und Unsinn der Patrozinienkunde}, + shorttitle = {In Honore Salvatoris}, + journaltitle = {Revue d'Histoire Eccl{\'e}siastique}, + volume = {97}, + date = {2002}, + pages = {431--456, 791--823}, + annotation = {A German article in a French journal. Apart from that, a + typical \texttt{article} entry. Note the \texttt{indextitle} field} +} +@article{baez/article, + hyphenation = {american}, + author = {Baez, John C. and Lauda, Aaron D.}, + title = {Higher-Dimensional Algebra V: 2-Groups}, + journaltitle = {Theory and Applications of Categories}, + volume = {12}, + version = {3}, + date = {2004}, + pages = {423--491}, + eprinttype = {arxiv}, + eprint = {math/0307200v3}, + annotation = {An \texttt{article} with \texttt{eprint} and + \texttt{eprinttype} fields. Note that the arXiv reference is transformed + into a clickable link if \texttt{hyperref} support has been enabled. + Compare \texttt{baez\slash online}, which is the same item given as an + \texttt{online} entry} +} +@article{bertram, + hyphenation = {american}, + author = {Bertram, Aaron and Wentworth, Richard}, + title = {Gromov invariants for holomorphic maps on Riemann surfaces}, + shorttitle = {Gromov invariants}, + journaltitle = jams, + volume = {9}, + number = {2}, + date = {1996}, + pages = {529--571}, + annotation = {An \texttt{article} entry with a \texttt{volume} and a + \texttt{number} field} +} +@article{doody, + title = {Hemingway's Style and Jake's Narration}, + author = {Doody, Terrence}, + related = {matuz:doody}, + relatedstring = {\autocap{e}xcerpt in}, + journal = {The Journal of Narrative Technique}, + volume = {4}, + number = {3}, + pages = {212--225}, + year = {1974}, + annotation = {An \texttt{article} entry cited as an excerpt from a + \texttt{collection} entry. Note the format of the \texttt{related} + and \texttt{relatedstring} fields} +} +@collection{matuz:doody, + title = {Contemporary Literary Criticism}, + editor = {Matuz, Roger}, + volume = {61}, + location = {Detroit}, + publisher = {Gale}, + pages = {204--208}, + year = {1990}, + annotation = {A \texttt{collection} entry providing the excerpt information + for the \texttt{doody} entry. Note the format of the \texttt{pages} field} +} +@article{gillies, + hyphenation = {british}, + author = {Gillies, Alexander}, + title = {Herder and the Preparation of Goethe's Idea of World Literature}, + journaltitle = {Publications of the English Goethe Society}, + volume = {9}, + series = {newseries}, + date = {1933}, + pages = {46--67}, + annotation = {An \texttt{article} entry with a \texttt{series} and a + \texttt{volume} field. Note that format of the \texttt{series} field in + the database file} +} +@article{glashow, + author = {Glashow, Sheldon}, + title = {Partial Symmetries of Weak Interactions}, + journaltitle = {Nucl.~Phys.}, + volume = {22}, + date = {1961}, + pages = {579--588} +} +@article{herrmann, + author = {Herrmann, Wolfgang A. and {\"O}fele, Karl and Schneider, Sabine K. + and Herdtweck, Eberhardt and Hoffmann, Stephan D.}, + indextitle = {Carbocyclic carbene as an efficient catalyst, A}, + title = {A carbocyclic carbene as an efficient catalyst ligand for C--C + coupling reactions}, + journaltitle = anch-ie, + volume = {45}, + number = {23}, + date = {2006}, + pages = {3859--3862} +} +@article{kastenholz, + hyphenation = {american}, + author = {Kastenholz, M. A. and H{\"u}nenberger, Philippe H.}, + indextitle = {Computation of ionic solvation free energies}, + title = {Computation of methodology\hyphen independent ionic solvation free + energies from molecular simulations}, + subtitle = {I. The electrostatic potential in molecular liquids}, + journaltitle = jchph, + volume = {124}, + eid = {124106}, + date = {2006}, + doi = {10.1063/1.2172593}, + annotation = {An \texttt{article} entry with an \texttt{eid} and a + \texttt{doi} field. Note that the \textsc{doi} is transformed into a + clickable link if \texttt{hyperref} support has been enabled}, + abstract = {The computation of ionic solvation free energies from atomistic + simulations is a surprisingly difficult problem that has found no + satisfactory solution for more than 15 years. The reason is that the + charging free energies evaluated from such simulations are affected by + very large errors. One of these is related to the choice of a specific + convention for summing up the contributions of solvent charges to the + electrostatic potential in the ionic cavity, namely, on the basis of point + charges within entire solvent molecules (M scheme) or on the basis of + individual point charges (P scheme). The use of an inappropriate + convention may lead to a charge-independent offset in the calculated + potential, which depends on the details of the summation scheme, on the + quadrupole-moment trace of the solvent molecule, and on the approximate + form used to represent electrostatic interactions in the system. However, + whether the M or P scheme (if any) represents the appropriate convention + is still a matter of on-going debate. The goal of the present article is + to settle this long-standing controversy by carefully analyzing (both + analytically and numerically) the properties of the electrostatic + potential in molecular liquids (and inside cavities within them).} +} +@article{murray, + hyphenation = {american}, + author = {Hostetler, Michael J. and Wingate, Julia E. and Zhong, Chuan-Jian + and Harris, Jay E. and Vachet, Richard W. and Clark, Michael R. + and Londono, J. David and Green, Stephen J. and Stokes, Jennifer J. + and Wignall, George D. and Glish, Gary L. and Porter, Marc D. + and Evans, Neal D. and Murray, Royce W.}, + indextitle = {Alkanethiolate gold cluster molecules}, + title = {Alkanethiolate gold cluster molecules with core diameters from 1.5 + to 5.2~nm}, + subtitle = {Core and monolayer properties as a function of core size}, + shorttitle = {Alkanethiolate gold cluster molecules}, + journaltitle = {Langmuir}, + volume = {14}, + number = {1}, + date = {1998}, + pages = {17--30}, + annotation = {An \texttt{article} entry with \arabic{author} authors. By + default, long author and editor lists are automatically truncated. This is + configurable} +} +@article{reese, + hyphenation = {american}, + author = {Reese, Trevor R.}, + title = {Georgia in Anglo-Spanish Diplomacy, 1736-1739}, + journaltitle = {William and Mary Quarterly}, + volume = {15}, + series = {3}, + date = {1958}, + pages = {168--190}, + annotation = {An \texttt{article} entry with a \texttt{series} and a + \texttt{volume} field. Note the format of the series. If the value of the + \texttt{series} field is an integer, this number is printed as an ordinal + and the string \enquote*{series} is appended automatically} +} +@article{sarfraz, + author = {M. Sarfraz and M. F. A. Razzak}, + title = {Technical section: {An} algorithm for automatic capturing of the + font outlines}, + journal = {Computers and Graphics}, + volume = {26}, + number = {5}, + pages = {795--804}, + year = {2002}, + issn = {0097-8493}, + annotation = {An \texttt{article} entry with an \texttt{issn} field} +} +@article{shore, + author = {Shore, Bradd}, + title = {Twice-Born, Once Conceived}, + subtitle = {Meaning Construction and Cultural Cognition}, + journaltitle = {American Anthropologist}, + volume = {93}, + series = {newseries}, + number = {1}, + date = {1991-03}, + pages = {9--27}, + annotation = {An \texttt{article} entry with \texttt{series}, + \texttt{volume}, and \texttt{number} fields. Note the format of the + \texttt{series} which is a localization key} +} +@article{sigfridsson, + hyphenation = {american}, + author = {Sigfridsson, Emma and Ryde, Ulf}, + indextitle = {Methods for deriving atomic charges}, + title = {Comparison of methods for deriving atomic charges from the + electrostatic potential and moments}, + journaltitle = {Journal of Computational Chemistry}, + volume = {19}, + number = {4}, + date = {1998}, + doi = {10.1002/(SICI)1096-987X(199803)19:4<377::AID-JCC1>3.0.CO;2-P}, + pages = {377--395}, + annotation = {An \texttt{article} entry with \texttt{volume}, + \texttt{number}, and \texttt{doi} fields. Note that the \textsc{doi} is + transformed into a clickable link if \texttt{hyperref} support has been + enabled}, + abstract = {Four methods for deriving partial atomic charges from the + quantum chemical electrostatic potential (CHELP, CHELPG, Merz-Kollman, and + RESP) have been compared and critically evaluated. It is shown that + charges strongly depend on how and where the potential points are + selected. Two alternative methods are suggested to avoid the + arbitrariness in the point-selection schemes and van der Waals exclusion + radii: CHELP-BOW, which also estimates the charges from the electrostatic + potential, but with potential points that are Boltzmann-weighted after + their occurrence in actual simulations using the energy function of the + program in which the charges will be used, and CHELMO, which estimates + the charges directly from the electrostatic multipole moments. Different + criteria for the quality of the charges are discussed.} +} +@article{spiegelberg, + hyphenation = {german}, + sorttitle = {Intention und Intentionalitat in der Scholastik, bei Brentano + und Husserl}, + indexsorttitle = {Intention und Intentionalitat in der Scholastik, bei + Brentano und Husserl}, + author = {Spiegelberg, Herbert}, + title = {\mkbibquote{Intention} und \mkbibquote{Intentionalit{\"a}t} in der + Scholastik, bei Brentano und Husserl}, + shorttitle = {Intention und Intentionalit{\"a}t}, + journaltitle = {Studia Philosophica}, + volume = {29}, + date = {1969}, + pages = {189--216}, + annotation = {An \texttt{article} entry. Note the \texttt{sorttitle} and + \texttt{indexsorttitle} fields and the markup of the quotes in the + database file} +} +@article{springer, + hyphenation = {british}, + author = {Springer, Otto}, + title = {Mediaeval Pilgrim Routes from Scandinavia to Rome}, + shorttitle = {Mediaeval Pilgrim Routes}, + journaltitle = {Mediaeval Studies}, + volume = {12}, + date = {1950}, + pages = {92--122}, + annotation = {A plain \texttt{article} entry} +} +@article{weinberg, + author = {Weinberg, Steven}, + title = {A Model of Leptons}, + journaltitle = {Phys.~Rev.~Lett.}, + volume = {19}, + date = {1967}, + pages = {1264--1266} +} +@article{yoon, + author = {Yoon, Myeong S. and Ryu, Dowook and Kim, Jeongryul + and Ahn, Kyo Han}, + indextitle = {Palladium pincer complexes}, + title = {Palladium pincer complexes with reduced bond angle strain: + efficient catalysts for the Heck reaction}, + journaltitle = {Organometallics}, + volume = {25}, + number = {10}, + date = {2006}, + pages = {2409--2411} +} +@book{aristotle:anima, + keywords = {primary}, + hyphenation = {british}, + author = {Aristotle}, + editor = {Hicks, Robert Drew}, + title = {De Anima}, + publisher = cup, + location = {Cambridge}, + date = {1907}, + annotation = {A \texttt{book} entry with an \texttt{author} and an + \texttt{editor}} +} +@book{aristotle:physics, + keywords = {primary}, + hyphenation = {american}, + author = {Aristotle}, + translator = {Wicksteed, P. H. and Cornford, F. M.}, + title = {Physics}, + shorttitle = {Physics}, + publisher = {G. P. Putnam}, + location = {New York}, + date = {1929}, + annotation = {A \texttt{book} entry with a \texttt{translator} field} +} +@book{aristotle:poetics, + keywords = {primary}, + hyphenation = {british}, + author = {Aristotle}, + editor = {Lucas, D. W.}, + title = {Poetics}, + shorttitle = {Poetics}, + series = {Clarendon Aristotle}, + publisher = {Clarendon Press}, + location = {Oxford}, + date = {1968}, + annotation = {A \texttt{book} entry with an \texttt{author} and an + \texttt{editor} as well as a \texttt{series} field} +} +@book{aristotle:rhetoric, + keywords = {primary}, + hyphenation = {british}, + sorttitle = {Rhetoric of Aristotle}, + author = {Aristotle}, + editor = {Cope, Edward Meredith}, + commentator = {Cope, Edward Meredith}, + indextitle = {Rhetoric of Aristotle, The}, + title = {The Rhetoric of Aristotle with a commentary by the late Edward + Meredith Cope}, + shorttitle = {Rhetoric}, + volumes = {3}, + publisher = cup, + date = {1877}, + annotation = {A commented edition. Note the concatenation of the + \texttt{editor} and \texttt{commentator} fields as well as the + \texttt{volumes}, \texttt{sorttitle}, and \texttt{indextitle} fields} +} +@book{augustine, + hyphenation = {american}, + author = {Augustine, Robert L.}, + title = {Heterogeneous catalysis for the synthetic chemist}, + shorttitle = {Heterogeneous catalysis}, + publisher = {Marcel Dekker}, + location = {New York}, + date = {1995}, + annotation = {A plain \texttt{book} entry} +} +@book{averroes/bland, + keywords = {primary}, + hyphenation = {american}, + author = {Averroes}, + editor = {Bland, Kalman P.}, + translator = {Bland, Kalman P.}, + indextitle = {Epistle on the Possibility of Conjunction, The}, + title = {The Epistle on the Possibility of Conjunction with the Active + Intellect by Ibn Rushd with the Commentary of Moses Narboni}, + shorttitle = {Possibility of Conjunction}, + series = {Moreshet: Studies in Jewish History, Literature and Thought}, + number = {7}, + publisher = {Jewish Theological Seminary of America}, + location = {New York}, + date = {1982}, + annotation = {A \texttt{book} entry with a \texttt{series} and a + \texttt{number}. Note the concatenation of the \texttt{editor} and + \texttt{translator} fields as well as the \texttt{indextitle} field} +} +@book{averroes/hannes, + keywords = {primary}, + hyphenation = {german}, + sorttitle = {Uber die Moglichkeit der Conjunktion}, + indexsorttitle = {Uber die Moglichkeit der Conjunktion}, + author = {Averroes}, + editor = {Hannes, Ludwig}, + translator = {Hannes, Ludwig}, + annotator = {Hannes, Ludwig}, + indextitle = {{\"U}ber die M{\"o}glichkeit der Conjunktion}, + title = {Des Averro{\"e}s Abhandlung: \mkbibquote{{\"U}ber die + M{\"o}glichkeit der Conjunktion} oder \mkbibquote{{\"U}ber den + materiellen Intellekt}}, + shorttitle = {{\"U}ber die M{\"o}glichkeit der Conjunktion}, + publisher = {C.~A. Kaemmerer}, + location = {Halle an der Saale}, + date = {1892}, + annotation = {An annotated edition. Note the concatenation of the + \texttt{editor}, \texttt{translator}, and \texttt{annotator} fields. Also + note the \texttt{shorttitle}, \texttt{indextitle}, \texttt{sorttitle}, + and \texttt{indexsorttitle} fields} +} +@book{averroes/hercz, + keywords = {primary}, + hyphenation = {german}, + indexsorttitle = {Drei Abhandlungen uber die Conjunction}, + author = {Averroes}, + editor = {Hercz, J.}, + translator = {Hercz, J.}, + indextitle = {Drei Abhandlungen {\"u}ber die Conjunction}, + title = {Drei Abhandlungen {\"u}ber die Conjunction des separaten Intellects + mit dem Menschen}, + subtitle = {Von Averroes (Vater und Sohn), aus dem Arabischen {\"u}bersetzt + von Samuel Ibn Tibbon}, + shorttitle = {Drei Abhandlungen}, + publisher = {S.~Hermann}, + location = {Berlin}, + date = {1869}, + annotation = {A \texttt{book} entry. Note the concatenation of the + \texttt{editor} and \texttt{translator} fields as well as the + \texttt{indextitle} and \texttt{indexsorttitle} fields} +} +@book{cicero, + hyphenation = {german}, + author = {Cicero, Marcus Tullius}, + editor = {Blank-Sangmeister, Ursula}, + translator = {Blank-Sangmeister, Ursula}, + afterword = {Thraede, Klaus}, + indextitle = {De natura deorum}, + title = {De natura deorum. {\"U}ber das Wesen der G{\"o}tter}, + shorttitle = {De natura deorum}, + language = {langlatin and langgerman}, + publisher = {Reclam}, + location = {Stuttgart}, + date = {1995}, + annotation = {A bilingual edition of Cicero's \emph{De natura deorum}, with + a German translation. Note the format of the \texttt{language} field in + the database file, the concatenation of the \texttt{editor} and + \texttt{translator} fields, and the \texttt{afterword} field} +} +@book{coleridge, + hyphenation = {british}, + author = {Coleridge, Samuel Taylor}, + editor = {Coburn, Kathleen and Engell, James and Bate, W. Jackson}, + indextitle = {Biographia literaria}, + title = {Biographia literaria, or Biographical sketches of my literary life + and opinions}, + shorttitle = {Biographia literaria}, + maintitle = {The collected works of Samuel Taylor Coleridge}, + part = {2}, + volume = {7}, + series = {Bollingen Series}, + number = {75}, + publisher = {Routledge and Kegan Paul}, + location = {London}, + date = {1983}, + annotation = {One (partial) volume of a multivolume book. This is a + \texttt{book} entry with a \texttt{volume} and a \texttt{part} field + which explicitly refers to the second (physical) part of the seventh + (logical) volume. Also note the \texttt{series} and \texttt{number} + fields} +} +@book{companion, + hyphenation = {american}, + sorttitle = {LaTeX Companion}, + author = {Goossens, Michel and Mittelbach, Frank and Samarin, Alexander}, + indextitle = {LaTeX Companion, The}, + title = {The LaTeX Companion}, + shorttitle = {LaTeX Companion}, + edition = {1}, + publisher = {Addison-Wesley}, + location = {Reading, Mass.}, + date = {1994}, + pagetotal = {528}, + annotation = {A book with three authors. Note the formatting of the author + list. By default, only the first name is reversed in the bibliography} +} +@book{cotton, + hyphenation = {british}, + author = {Cotton, Frank Albert and Wilkinson, Geoffrey + and Murillio, Carlos A. and Bochmann, Manfred}, + title = {Advanced inorganic chemistry}, + edition = {6}, + publisher = {Wiley}, + location = {Chichester}, + date = {1999}, + annotation = {A \texttt{book} entry with \arabic{author} authors and an + \texttt{edition} field. By default, long \texttt{author} and + \texttt{editor} lists are automatically truncated. This is configurable} +} +@book{gerhardt, + hyphenation = {american}, + sorttitle = {Federal Appointments Process}, + author = {Gerhardt, Michael J.}, + indextitle = {Federal Appointments Process, The}, + title = {The Federal Appointments Process}, + subtitle = {A Constitutional and Historical Analysis}, + shorttitle = {Federal Appointments Process}, + publisher = {Duke University Press}, + location = {Durham and London}, + date = {2000}, + annotation = {This is a \texttt{book} entry. Note the format of the + \texttt{location} field as well as the \texttt{sorttitle} and + \texttt{indextitle} fields} +} +@book{gonzalez, + hyphenation = {american}, + sorttitle = {Ghost of John Wayne and Other Stories}, + author = {Gonzalez, Ray}, + indextitle = {Ghost of John Wayne and Other Stories, The}, + title = {The Ghost of John Wayne and Other Stories}, + shorttitle = {Ghost of John Wayne}, + publisher = {The University of Arizona Press}, + location = {Tucson}, + date = {2001}, + isbn = {0-816-52066-6}, + annotation = {A collection of short stories. This is a \texttt{book} entry. + Note the \texttt{sorttitle} and \texttt{indextitle} fields in the + database file. There's also an \texttt{isbn} field} +} +@book{hammond, + hyphenation = {british}, + sorttitle = {Basics of crystallography and diffraction}, + author = {Hammond, Christopher}, + indextitle = {Basics of crystallography and diffraction, The}, + title = {The basics of crystallography and diffraction}, + shorttitle = {Crystallography and diffraction}, + publisher = {International Union of Crystallography and Oxford University + Press}, + location = {Oxford}, + date = {1997}, + annotation = {A \texttt{book} entry. Note the \texttt{sorttitle} and + \texttt{indextitle} fields as well as the format of the + \texttt{publisher} field} +} +@book{iliad, + hyphenation = {german}, + sorttitle = {Ilias}, + author = {Homer}, + translator = {Schadewaldt, Wolfgang}, + introduction = {Latacz, Joachim}, + indextitle = {Ilias, Die}, + title = {Die Ilias}, + shorttitle = {Ilias}, + edition = {3}, + publisher = {Artemis \& Winkler}, + location = {D{\"u}sseldorf and Z{\"u}rich}, + date = {2004}, + annotation = {A German translation of the \emph{Iliad}. Note the + \texttt{translator} and \texttt{introduction} fields and the format of + the \texttt{location} field in the database file. Also note the + \texttt{sorttitle} and \texttt{indextitle} fields} +} +@book{knuth:ct, + hyphenation = {american}, + sortyear = {1984-0}, + sorttitle = {Computers & Typesetting}, + indexsorttitle = {Computers & Typesetting}, + author = {Knuth, Donald E.}, + title = {Computers \& Typesetting}, + volumes = {5}, + publisher = {Addison-Wesley}, + location = {Reading, Mass.}, + date = {1984/1986}, + annotation = {A five-volume book cited as a whole. This is a \texttt{book} + entry, note the \texttt{volumes} field} +} +@book{knuth:ct:a, + hyphenation = {american}, + sortyear = {1984-1}, + sorttitle = {Computers & Typesetting A}, + indexsorttitle = {The TeXbook}, + author = {Knuth, Donald E.}, + indextitle = {\TeX book, The}, + title = {The \TeX book}, + shorttitle = {\TeX book}, + maintitle = {Computers \& Typesetting}, + volume = {A}, + publisher = {Addison-Wesley}, + location = {Reading, Mass.}, + date = {1984}, + annotation = {The first volume of a five-volume book. Note the + \texttt{sorttitle} and \texttt{sortyear} fields. 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} +} +@book{knuth:ct:b, + hyphenation = {american}, + sortyear = {1986-1}, + sorttitle = {Computers & Typesetting B}, + indexsorttitle = {TeX: The Program}, + author = {Knuth, Donald E.}, + title = {\TeX: The Program}, + shorttitle = {\TeX}, + maintitle = {Computers \& Typesetting}, + volume = {B}, + publisher = {Addison-Wesley}, + location = {Reading, Mass.}, + date = {1986}, + annotation = {The second volume of a five-volume book. Note the + \texttt{sorttitle} and \texttt{sortyear} fields. Also note the + \texttt{indexsorttitle} field} +} +@book{knuth:ct:c, + hyphenation = {american}, + sortyear = {1986-2}, + sorttitle = {Computers & Typesetting C}, + indextitle = {METAFONTbook, The}, + title = {The METAFONTbook}, + shorttitle = {METAFONTbook}, + maintitle = {Computers \& Typesetting}, + volume = {C}, + publisher = {Addison-Wesley}, + location = {Reading, Mass.}, + date = {1986}, + annotation = {The third volume of a five-volume book. Note the + \texttt{sorttitle} and \texttt{sortyear} fields as well as the + \texttt{indextitle} field} +} +@book{knuth:ct:d, + hyphenation = {american}, + sortyear = {1986-3}, + sorttitle = {Computers & Typesetting D}, + author = {Knuth, Donald E.}, + title = {METAFONT: The Program}, + shorttitle = {METAFONT}, + maintitle = {Computers \& Typesetting}, + volume = {D}, + publisher = {Addison-Wesley}, + location = {Reading, Mass.}, + date = {1986}, + annotation = {The fourth volume of a five-volume book. Note the + \texttt{sorttitle} and \texttt{sortyear} fields} +} +@book{knuth:ct:e, + hyphenation = {american}, + sortyear = {1986-4}, + sorttitle = {Computers & Typesetting E}, + author = {Knuth, Donald E.}, + title = {Computer Modern Typefaces}, + maintitle = {Computers \& Typesetting}, + volume = {E}, + publisher = {Addison-Wesley}, + location = {Reading, Mass.}, + date = {1986}, + annotation = {The fifth volume of a five-volume book. Note the + \texttt{sorttitle} and \texttt{sortyear} fields} +} +@book{knuth:ct:related, + hyphenation = {american}, + sortyear = {1984-0}, + sorttitle = {Computers & Typesetting}, + indexsorttitle = {Computers & Typesetting}, + author = {Knuth, Donald E.}, + title = {Computers \& Typesetting}, + volumes = {5}, + related = {knuth:ct:a,knuth:ct:b,knuth:ct:c,knuth:ct:d,knuth:ct:e}, + relatedtype = {multivolume}, + publisher = {Addison-Wesley}, + location = {Reading, Mass.}, + date = {1984/1986}, + annotation = {A five-volume book cited as a whole and related to its + individual volumes. Note the \texttt{related} and \texttt{relatedtype} + fields} +} +@book{kullback, + title = {Information Theory and Statistics}, + author = {Kullback, Solomon}, + year = {1959}, + publisher = {John Wiley \& Sons}, + location = {New York} +} +@book{kullback:reprint, + title = {Information Theory and Statistics}, + author = {Kullback, Solomon}, + year = {1997}, + origyear = {1959}, + publisher = {Dover Publications}, + origpublisher = {John Wiley \& Sons}, + location = {New York}, + annotation = {A reprint of the \texttt{kullback} entry. Note the format of + \texttt{origyear} and \texttt{origpublisher}. These fields are not used by + the standard bibliography styles} +} +@book{kullback:related, + title = {Information Theory and Statistics}, + author = {Kullback, Solomon}, + year = {1997}, + publisher = {Dover Publications}, + location = {New York}, + related = {kullback}, + relatedtype = {origpubin}, + annotation = {A reprint of the \texttt{kullback} entry. Note the format of + the \texttt{related} and \texttt{relatedtype} fields} +} +@book{malinowski, + hyphenation = {british}, + author = {Malinowski, Bronis{\l}aw}, + title = {Argonauts of the Western Pacific}, + subtitle = {An account of native enterprise and adventure in the + Archipelagoes of Melanesian New Guinea}, + shorttitle = {Argonauts}, + edition = {8}, + publisher = {Routledge and Kegan Paul}, + location = {London}, + date = {1972}, + annotation = {This is a \texttt{book} entry. Note the format of the + \texttt{publisher} and \texttt{edition} fields as well as the + \texttt{subtitle} field} +} +@book{maron, + hyphenation = {american}, + author = {Maron, Monika}, + translator = {Brigitte Goldstein}, + title = {Animal Triste}, + shorttitle = {Animal Triste}, + publisher = {University of Nebraska Press}, + location = {Lincoln}, + date = {2000}, + origlanguage = {german}, + annotation = {An English translation of a German novel with a French title. + In other words: a \texttt{book} entry with a \texttt{translator} field. + Note the \texttt{origlanguage} field which is concatenated with the + \texttt{translator}} +} +@book{massa, + hyphenation = {british}, + author = {Werner Massa}, + title = {Crystal structure determination}, + edition = {2}, + publisher = {Spinger}, + location = {Berlin}, + date = {2004}, + annotation = {A \texttt{book} entry with an \texttt{edition} field} +} +@book{nietzsche:ksa, + hyphenation = {german}, + sortyear = {1988-00-000}, + sorttitle = {Werke-00-000}, + indexsorttitle = {Samtliche Werke}, + author = {Nietzsche, Friedrich}, + editor = {Colli, Giorgio and Montinari, Mazzino}, + title = {S{\"a}mtliche Werke}, + subtitle = {Kritische Studienausgabe}, + volumes = {15}, + edition = {2}, + publisher = dtv # { and Walter de Gruyter}, + location = {M{\"u}nchen and Berlin and New York}, + date = {1988}, + annotation = {The critical edition of Nietzsche's works. This is a + \texttt{book} 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 sorting order of the bibliography. We want this item listed + first in the bibliography} +} +@book{nietzsche:ksa1, + hyphenation = {german}, + sortyear = {1988-01-000}, + sorttitle = {Werke-01-000}, + indexsorttitle = {Samtliche Werke I}, + author = {Nietzsche, Friedrich}, + bookauthor = {Nietzsche, Friedrich}, + editor = {Colli, Giorgio and Montinari, Mazzino}, + indextitle = {S{\"a}mtliche Werke I}, + title = {Die Geburt der Trag{\"o}die. Unzeitgem{\"a}{\ss}e Betrachtungen + I--IV. Nachgelassene Schriften 1870--1973}, + shorttitle = {S{\"a}mtliche Werke I}, + maintitle = {S{\"a}mtliche Werke}, + mainsubtitle = {Kritische Studienausgabe}, + volume = {1}, + edition = {2}, + publisher = dtv # { and Walter de Gruyter}, + location = {M{\"u}nchen and Berlin and New York}, + date = {1988}, + 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 referring to the entire edition} +} +@book{nussbaum, + keywords = {secondary}, + hyphenation = {american}, + sorttitle = {Aristotle's De Motu Animalium}, + indexsorttitle = {Aristotle's De Motu Animalium}, + author = {Nussbaum, Martha}, + title = {Aristotle's \mkbibquote{De Motu Animalium}}, + publisher = pup, + location = {Princeton}, + date = {1978}, + annotation = {A \texttt{book} entry. Note the \texttt{sorttitle} and + \texttt{indexsorttitle} fields and the markup of the quotes in the + database file} +} +@book{piccato, + hyphenation = {american}, + author = {Piccato, Pablo}, + title = {City of Suspects}, + subtitle = {Crime in Mexico City, 1900--1931}, + shorttitle = {City of Suspects}, + publisher = {Duke University Press}, + location = {Durham and London}, + date = {2001}, + annotation = {This is a \texttt{book} entry. Note the format of the + \texttt{location} field in the database file} +} +@book{vangennep, + options = {useprefix}, + hyphenation = {french}, + sorttitle = {Rites de passage}, + author = {van Gennep, Arnold}, + indextitle = {Rites de passage, Les}, + title = {Les rites de passage}, + shorttitle = {Rites de passage}, + publisher = {Nourry}, + location = {Paris}, + date = {1909}, + annotation = {A \texttt{book} entry. Note the format of the printed name and + compare the \texttt{useprefix} option in the \texttt{options} field as + well as \texttt{brandt} and \texttt{geer}} +} +@book{vangennep:trans, + options = {useprefix}, + author = {van Gennep, Arnold}, + translator = {Vizedom, Monika B. and Caffee, Gabrielle L.}, + title = {The Rites of Passage}, + indextitle = {Rites of Passage, The}, + sorttitle = {Rites of Passage}, + shorttitle = {Rites of Passage}, + language = {english}, + origlanguage = {french}, + year = {1960}, + publisher = {University of Chicago Press}, + annotation = {A translation of the \texttt{vangennep} entry. Note the + \texttt{translator} and \texttt{origlanguage} fields. Compare with the + \texttt{vangennep:related} entry.} +} +@book{vangennep:related, + options = {useprefix}, + hyphenation = {french}, + author = {van Gennep, Arnold}, + related = {vizedom:related}, + relatedtype = {bytranslator}, + sorttitle = {Rites de passage}, + indextitle = {Rites de passage, Les}, + title = {Les rites de passage}, + shorttitle = {Rites de passage}, + publisher = {Nourry}, + location = {Paris}, + date = {1909}, + annotation = {A variant of the \texttt{vangennep} entry related to its + translation. Note the format of the \texttt{related} and + \texttt{relatedtype} fields} +} +@book{vizedom:related, + options = {usetranslator}, + translator = {Vizedom, Monika B. and Caffee, Gabrielle L.}, + related = {vangennep}, + relatedtype = {translationof}, + title = {The Rites of Passage}, + indextitle = {Rites of Passage, The}, + sorttitle = {Rites of Passage}, + shorttitle = {Rites of Passage}, + language = {english}, + year = {1960}, + publisher = {University of Chicago Press}, + annotation = {A translated work from \texttt{vangennep}. Note the format of + the \texttt{related} and \texttt{relatedtype} fields} +} +@book{vazques-de-parga, + hyphenation = {spanish}, + sorttitle = {Peregrinaciones a Santiago de Compostela}, + author = {V{\'a}zques{ de }Parga, Luis and Lacarra, Jos{\'e} Mar{\'i}a + and Ur{\'i}a R{\'i}u, Juan}, + indextitle = {Peregrinaciones a Santiago de Compostela, Las}, + title = {Las Peregrinaciones a Santiago de Compostela}, + shorttitle = {Peregrinaciones}, + volumes = {3}, + publisher = {Iberdrola}, + location = {Pamplona}, + date = {1993}, + note = {Ed. facs. de la realizada en 1948--49}, + annotation = {A multivolume book cited as a whole. This is a \texttt{book} + entry with \texttt{volumes}, \texttt{note}, \texttt{sorttitle}, and + \texttt{indextitle} fields} +} +@book{wilde, + title = {The Importance of Being Earnest: A Trivial Comedy for Serious + People}, + author = {Wilde, Oscar}, + series = {English and American drama of the Nineteenth Century}, + year = {1899}, + eprint ={4HIWAAAAYAAJ}, + eprinttype = {googlebooks}, + publisher = {Leonard Smithers and Company}, + annotation = {A \texttt{book} with \texttt{eprint} and \texttt{eprinttype} + fields.} +} +@book{worman, + hyphenation = {american}, + sorttitle = {Cast of Character}, + author = {Worman, Nancy}, + indextitle = {Cast of Character, The}, + title = {The Cast of Character}, + subtitle = {Style in Greek Literature}, + shorttitle = {Cast of Character}, + publisher = {University of Texas Press}, + location = {Austin}, + date = {2002}, + annotation = {A \texttt{book} entry. Note the \texttt{sorttitle} and + \texttt{indextitle} fields} +} +@collection{britannica, + options = {useeditor=false}, + label = {EB}, + hyphenation = {british}, + sorttitle = {Encyclop{\ae}dia Britannica}, + editor = {Preece, Warren E.}, + indextitle = {Encyclop{\ae}dia Britannica, The New}, + title = {The New Encyclop{\ae}dia Britannica}, + shorttitle = {Encyclop{\ae}dia Britannica}, + volumes = {32}, + edition = {15}, + publisher = {Encyclop{\ae}dia Britannica}, + location = {Chicago, Ill.}, + date = {2003}, + annotation = {This is a \texttt{collection} 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 editor. In addition to that, we want the + title to be alphabetized under \enquote*{E} rather than \enquote*{T}. Also + note the \texttt{label} field which is provided for author-year citation + styles} +} +@collection{gaonkar, + hyphenation = {american}, + editor = {Gaonkar, Dilip Parameshwar}, + title = {Alternative Modernities}, + publisher = {Duke University Press}, + location = {Durham and London}, + date = {2001}, + isbn = {0-822-32714-7}, + annotation = {This is a \texttt{collection} entry. Note the format of the + \texttt{location} field in the database file as well as the \texttt{isbn} + field} +} +@incollection{gaonkar:in, + author = {Gaonkar, Dilip Parameshwar}, + title = {On Alternative Modernities}, + pages = {1--23}, + editor = {Gaonkar, Dilip Parameshwar}, + booktitle = {Alternative Modernities}, + publisher = {Duke University Press}, + location = {Durham and London}, + date = {2001}, + isbn = {0-822-32714-7} +} +@collection{jaffe, + editor = {Jaff{\'e}, Philipp}, + editora = {Loewenfeld, Samuel and Kaltenbrunner, Ferdinand and Ewald, Paul}, + editoratype = {redactor}, + indextitle = {Regesta Pontificum Romanorum}, + title = {Regesta Pontificum Romanorum ab condita ecclesia ad annum post + Christum natum \textsc{mcxcviii}}, + shorttitle = {Regesta Pontificum Romanorum}, + volumes = {2}, + edition = {2}, + location = {Leipzig}, + date = {1885/1888}, + annotation = {A \texttt{collection} entry with \texttt{edition} and + \texttt{volumes} fields. Note the \texttt{editora} and + \texttt{editoratype} fields} +} +@collection{westfahl:frontier, + hyphenation = {american}, + editor = {Westfahl, Gary}, + title = {Space and Beyond}, + subtitle = {The Frontier Theme in Science Fiction}, + booktitle = {Space and Beyond}, + booksubtitle = {The Frontier Theme in Science Fiction}, + publisher = {Greenwood}, + location = {Westport, Conn. and London}, + date = {2000}, + annotation = {This is a \texttt{collection} entry. Note the format of the + \texttt{location} field as well as the \texttt{subtitle} and + \texttt{booksubtitle} fields} +} +@inbook{kant:kpv, + shorthand = {KpV}, + hyphenation = {german}, + author = {Kant, Immanuel}, + bookauthor = {Kant, Immanuel}, + title = {Kritik der praktischen Vernunft}, + shorttitle = {Kritik der praktischen Vernunft}, + booktitle = {Kritik der praktischen Vernunft. Kritik der Urtheilskraft}, + maintitle = {Kants Werke. Akademie Textausgabe}, + volume = {5}, + publisher = {Walter de Gruyter}, + location = {Berlin}, + date = {1968}, + pages = {1--163}, + annotation = {An edition of Kant's \emph{Collected Works}, volume five. This + is an \texttt{inbook} entry which explicitly refers to the \emph{Critique + of Practical Reason} only, not to the entire fifth volume. Note the + \texttt{author} and \texttt{bookauthor} fields in the database file. By + default, the \texttt{bookauthor} is omitted if the values of the + \texttt{author} and \texttt{bookauthor} fields are identical} +} +@inbook{kant:ku, + shorthand = {KU}, + hyphenation = {german}, + author = {Kant, Immanuel}, + bookauthor = {Kant, Immanuel}, + title = {Kritik der Urtheilskraft}, + booktitle = {Kritik der praktischen Vernunft. Kritik der Urtheilskraft}, + maintitle = {Kants Werke. Akademie Textausgabe}, + volume = {5}, + publisher = {Walter de Gruyter}, + location = {Berlin}, + date = {1968}, + pages = {165--485}, + annotation = {An edition of Kant's \emph{Collected Works}, volume five. This + is an \texttt{inbook} entry which explicitly refers to the \emph{Critique + of Judgment} only, not to the entire fifth volume} +} +@inbook{nietzsche:historie, + hyphenation = {german}, + sortyear = {1988-01-243}, + sorttitle = {Werke-01-243}, + indexsorttitle = {Vom Nutzen und Nachtheil der Historie fur das Leben}, + author = {Nietzsche, Friedrich}, + bookauthor = {Nietzsche, Friedrich}, + editor = {Colli, Giorgio and Montinari, Mazzino}, + indextitle = {Vom Nutzen und Nachtheil der Historie f{\"u}r das Leben}, + title = {Unzeitgem{\"a}sse Betrachtungen. Zweites St{\"u}ck}, + subtitle = {Vom Nutzen und Nachtheil der Historie f{\"u}r das Leben}, + shorttitle = {Vom Nutzen und Nachtheil der Historie}, + booktitle = {Die Geburt der Trag{\"o}die. Unzeitgem{\"a}{\ss}e Betrachtungen + I--IV. Nachgelassene Schriften 1870--1973}, + maintitle = {S{\"a}mtliche Werke}, + mainsubtitle = {Kritische Studienausgabe}, + volume = {1}, + publisher = dtv # { and Walter de Gruyter}, + location = {M{\"u}nchen and Berlin and New York}, + date = {1988}, + pages = {243--334}, + annotation = {A single essay from the critical edition of Nietzsche's works. + 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 this entry to be listed after the entry + referring to the entire first volume} +} +@incollection{brandt, + options = {useprefix=false}, + hyphenation = {german}, + indexsorttitle = {Nordischen Lander von der Mitte des 11. Jahrhunderts bis + 1448}, + author = {von Brandt, Ahasver and Erich Hoffmann}, + editor = {Ferdinand Seibt}, + indextitle = {Nordischen L{\"a}nder von der Mitte des 11.~Jahrhunderts bis + 1448, Die}, + title = {Die nordischen L{\"a}nder von der Mitte des 11.~Jahrhunderts bis + 1448}, + shorttitle = {Die nordischen L{\"a}nder}, + booktitle = {Europa im Hoch- und Sp{\"a}tmittelalter}, + series = {Handbuch der europ{\"a}ischen Geschichte}, + number = {2}, + publisher = {Klett-Cotta}, + location = {Stuttgart}, + date = {1987}, + pages = {884--917}, + annotation = {An \texttt{incollection} entry with a \texttt{series} and a + \texttt{number}. Note the format of the printed name and compare the + \texttt{useprefix} option in the \texttt{options} field as well as + \texttt{vangennep}. Also note the \texttt{indextitle, and + \texttt{indexsorttitle} fields}} +} +@incollection{hyman, + keywords = {secondary}, + hyphenation = {american}, + author = {Arthur Hyman}, + editor = {O'Meara, Dominic J.}, + indextitle = {Aristotle's Theory of the Intellect}, + title = {Aristotle's Theory of the Intellect and its Interpretation by + Averroes}, + shorttitle = {Aristotle's Theory of the Intellect}, + booktitle = {Studies in Aristotle}, + series = {Studies in Philosophy and the History of Philosophy}, + number = {9}, + publisher = {The Catholic University of America Press}, + location = {Washington, D.C.}, + date = {1981}, + pages = {161--191}, + annotation = {An \texttt{incollection} entry with a \texttt{series} and + \texttt{number} field} +} +@incollection{pines, + keywords = {secondary}, + hyphenation = {american}, + author = {Pines, Shlomo}, + editor = {Twersky, Isadore}, + indextitle = {Limitations of Human Knowledge According to Al-Farabi, ibn + Bajja, and Maimonides, The}, + title = {The Limitations of Human Knowledge According to Al-Farabi, ibn + Bajja, and Maimonides}, + shorttitle = {Limitations of Human Knowledge}, + booktitle = {Studies in Medieval Jewish History and Literature}, + publisher = hup, + location = {Cambridge, Mass.}, + date = {1979}, + pages = {82--109}, + annotation = {A typical \texttt{incollection} entry. Note the + \texttt{indextitle} field} +} +@inproceedings{moraux, + keywords = {secondary}, + hyphenation = {french}, + indexsorttitle = {De Anima dans la tradition grecque}, + author = {Moraux, Paul}, + editor = {Lloyd, G. E. R. and Owen, G. E. L.}, + indextitle = {\emph{De Anima} dans la tradition gr{\`e}cque, Le}, + title = {Le \emph{De Anima} dans la tradition gr{\`e}cque}, + subtitle = {Quelques aspects de l'interpretation du trait{\'e}, de + Theophraste {\`a} Themistius}, + shorttitle = {\emph{De Anima} dans la tradition gr{\`e}cque}, + booktitle = {Aristotle on Mind and the Senses}, + booktitleaddon = {Proceedings of the Seventh Symposium Aristotelicum}, + eventdate = {1975}, + publisher = cup, + location = {Cambridge}, + date = {1979}, + pages = {281--324}, + annotation = {This is a typical \texttt{inproceedings} entry. Note the + \texttt{booksubtitle}, \texttt{shorttitle}, \texttt{indextitle}, and + \texttt{indexsorttitle} fields. Also note the \texttt{eventdate} field.} +} +@inproceedings{salam, + author = {Salam, Abdus}, + editor = {Svartholm, Nils}, + title = {Weak and Electromagnetic Interactions}, + booktitle = {Elementary particle theory}, + booksubtitle = {Relativistic groups and analyticity}, + booktitleaddon = {Proceedings of the Eighth Nobel Symposium}, + eventdate = {1968-05-19/1968-05-25}, + venue = {Aspen{\"a}sgarden, Lerum}, + publisher = {Almquist \& Wiksell}, + location = {Stockholm}, + date = {1968}, + pages = {367--377} +} +@manual{cms, + label = {CMS}, + hyphenation = {american}, + sorttitle = {Chicago Manual of Style}, + indextitle = {Chicago Manual of Style, The}, + title = {The Chicago Manual of Style}, + subtitle = {The Essential Guide for Writers, Editors, and Publishers}, + shorttitle = {Chicago Manual of Style}, + edition = {15}, + publisher = {University of Chicago Press}, + location = {Chicago, Ill.}, + date = {2003}, + isbn = {0-226-10403-6}, + annotation = {This is a \texttt{manual} entry without an \texttt{author} or + \texttt{editor}. Note the \texttt{label} field in the database file which + is provided for author-year citation styles. Also note the + \texttt{sorttitle} and \texttt{indextitle} fields. By default, all entries + without an \texttt{author} or \texttt{editor} are alphabetized by + \texttt{title} but we want this entry to be alphabetized under + \enquote*{C} rather than \enquote*{T}. There's also an \texttt{isbn} + field} +} +@online{baez/online, + hyphenation = {american}, + author = {Baez, John C. and Lauda, Aaron D.}, + title = {Higher-Dimensional Algebra V: 2-Groups}, + version = {3}, + date = {2004-10-27}, + eprinttype = {arxiv}, + eprint = {math/0307200v3}, + annotation = {An \texttt{online} reference from arXiv. Note the + \texttt{eprint} and \texttt{eprinttype} fields. Compare \texttt{baez\slash + article} which is the same item given as an \texttt{article} entry with + eprint information} +} +@online{ctan, + label = {CTAN}, + hyphenation = {american}, + title = {CTAN}, + subtitle = {The Comprehensive TeX Archive Network}, + date = {2006}, + url = {http://www.ctan.org}, + urldate = {2006-10-01}, + annotation = {This is an \texttt{online} entry. The \textsc{url}, which is + given in the \texttt{url} field, is transformed into a clickable link if + \texttt{hyperref} support has been enabled. Note the format of the + \texttt{urldate} field (\texttt{yyyy-mm-dd}) in the database file. Also + note the \texttt{label} field which may be used as a fallback by citation + styles which need an \texttt{author} and\slash or a \texttt{year}} +} +@online{itzhaki, + hyphenation = {american}, + author = {Itzhaki, Nissan}, + title = {Some remarks on 't Hooft's S-matrix for black holes}, + version = {1}, + date = {1996-03-11}, + eprinttype = {arxiv}, + eprint = {hep-th/9603067}, + annotation = {An \texttt{online} reference from arXiv. Note the + \texttt{eprint} and \texttt{eprinttype} fields. Also note that the arXiv + reference is transformed into a clickable link if \texttt{hyperref} + support has been enabled}, + abstract = {We discuss the limitations of 't Hooft's proposal for the black + hole S-matrix. We find that the validity of the S-matrix implies violation + of the semi-classical approximation at scales large compared to the Planck + scale. We also show that the effect of the centrifugal barrier on the + S-matrix is crucial even for large transverse distances.} +} +@online{markey, + hyphenation = {american}, + sorttitle = {Tame the Beast}, + author = {Markey, Nicolas}, + title = {Tame the BeaST}, + subtitle = {The B to X of BibTeX}, + version = {1.3}, + date = {2005-10-16}, + url = {http://tug.ctan.org/tex-archive/info/bibtex/tamethebeast/ttb_en.pdf}, + urldate = {2006-10-01}, + annotation = {An \texttt{online} entry for a tutorial. Note the format of + the \texttt{date} field (\texttt{yyyy-mm-dd}) in the database file.} +} +@online{wassenberg, + hyphenation = {american}, + author = {Wassenberg, Jan and Sanders, Peter}, + title = {Faster Radix Sort via Virtual Memory and Write-Combining}, + version = {1}, + date = {2010-08-17}, + eprinttype = {arxiv}, + eprintclass = {cs.DS}, + eprint = {1008.2849v1}, + annotation = {A recent \texttt{online} reference from arXiv using the new + (April 2007 onward) identifier format. Note the \texttt{eprint}, + \texttt{eprinttype}, and \texttt{eprintclass} fields. Also note that the + arXiv reference is transformed into a clickable link if \texttt{hyperref} + support has been enabled}, + abstract = {Sorting algorithms are the deciding factor for the performance + of common operations such as removal of duplicates or database sort-merge + joins. This work focuses on 32-bit integer keys, optionally paired with a + 32-bit value. We present a fast radix sorting algorithm that builds upon a + microarchitecture-aware variant of counting sort} +} +@patent{almendro, + hyphenation = {german}, + author = {Almendro, Jos{\'e} L. and Mart{\'i}n, Jacinto + and S{\'a}nchez, Alberto and Nozal, Fernando}, + title = {Elektromagnetisches Signalhorn}, + number = {EU-29702195U}, + location = {countryfr and countryuk and countryde}, + date = {1998}, + annotation = {This is a \texttt{patent} entry with a \texttt{location} + field. The number is given in the \texttt{number} field. Note the format + of the \texttt{location} field in the database file. Compare + \texttt{laufenberg}, \texttt{sorace}, and \texttt{kowalik}} +} +@patent{kowalik, + hyphenation = {french}, + author = {Kowalik, F. and Isard, M.}, + indextitle = {Estimateur d'un d{\'e}faut de fonctionnement}, + title = {Estimateur d'un d{\'e}faut de fonctionnement d'un modulateur en + quadrature et {\'e}tage de modulation l'utilisant}, + type = {patreqfr}, + number = {9500261}, + date = {1995-01-11}, + annotation = {This is a \texttt{patent} entry for a French patent request + with a full date. The number is given in the \texttt{number} field. Note + the format of the \texttt{type} and \texttt{date} fields in the database + file. Compare \texttt{almendro}, \texttt{laufenberg}, and \texttt{sorace}} +} +@patent{laufenberg, + hyphenation = {german}, + author = {Laufenberg, Xaver and Eynius, Dominique and Suelzle, Helmut + and Usbeck, Stephan and Spaeth, Matthias and Neuser-Hoffmann, Miriam + and Myrzik, Christian and Schmid, Manfred and Nietfeld, Franz + and Thiel, Alexander and Braun, Harald and Ebner, Norbert}, + holder = {{Robert Bosch GmbH} and {Daimler Chrysler AG} + and {Bayerische Motoren Werke AG}}, + title = {Elektrische Einrichtung und Betriebsverfahren}, + type = {patenteu}, + number = {1700367}, + date = {2006-09-13}, + annotation = {This is a \texttt{patent} entry with a \texttt{holder} field. + Note the format of the \texttt{type} and \texttt{location} fields in the + database file. Compare \texttt{almendro}, \texttt{sorace}, and + \texttt{kowalik}}, + abstract = {The invention relates to an electric device comprising a + generator, in particular for use in the vehicle electric system of a motor + vehicle and a controller for controlling the generator voltage. The device + is equipped with a control zone, in which the voltage is controlled and + zones, in which the torque is controlled. The invention also relates to + methods for operating a device of this type.}, + file = {http://v3.espacenet.com/textdoc?IDX=EP1700367} +} +@patent{sorace, + hyphenation = {american}, + author = {Sorace, Ronald E. and Reinhardt, Victor S. and Vaughn, Steven A.}, + holder = {{Hughes Aircraft Company}}, + title = {High-Speed Digital-to-RF Converter}, + type = {patentus}, + number = {5668842}, + date = {1997-09-16}, + annotation = {This is a \texttt{patent} entry with a \texttt{holder} field. + Note the format of the \texttt{type} and \texttt{date} fields in the + database file. Compare \texttt{almendro}, \texttt{laufenberg}, and + \texttt{kowalik}} +} +@periodical{jcg, + title = {Computers and Graphics}, + issuetitle = {Semantic {3D} Media and Content}, + volume = {35}, + number = {4}, + year = {2011}, + issn = {0097-8493}, + annotation = {This is a \texttt{periodical} entry with an \texttt{issn} + field.} +} +@report{chiu, + hyphenation = {american}, + sorttitle = {Hybrid Hierarchical Model of a Multiple Virtual Storage (MVS) + Operating System}, + author = {Chiu, Willy W. and Chow, We Min}, + indextitle = {Hybrid Hierarchical Model, A}, + title = {A Hybrid Hierarchical Model of a Multiple Virtual Storage (MVS) + Operating System}, + institution = {IBM}, + type = {resreport}, + number = {RC-6947}, + date = {1978}, + annotation = {This is a \texttt{report} entry for a research report. Note + the format of the \texttt{type} field in the database file which uses a + localization key. The number of the report is given in the \texttt{number} + field. Also note the \texttt{sorttitle} and \texttt{indextitle} fields} +} +@report{padhye, + hyphenation = {american}, + sorttitle = {A Stochastic Model of TCP Reno Congestion Avoidance and + Control}, + author = {Padhye, Jitendra and Firoiu, Victor and Towsley, Don}, + indextitle = {Stochastic Model of TCP Reno Congestion Avoidance and Control, + A}, + title = {A Stochastic Model of TCP Reno Congestion Avoidance and Control}, + institution = {University of Massachusetts}, + type = {techreport}, + number = {99-02}, + location = {Amherst, Mass.}, + date = {1999}, + annotation = {This is a \texttt{report} entry for a technical report. Note + the format of the \texttt{type} field in the database file which uses a + localization key. The number of the report is given in the \texttt{number} + field. Also note the \texttt{sorttitle} and \texttt{indextitle} fields}, + abstract = {The steady state performance of a bulk transfer TCP flow (i.e. a + flow with a large amount of data to send, such as FTP transfers) may be + characterized by three quantities. The first is the send rate, which is + the amount of data sent by the sender in unit time. The second is the + throughput, which is the amount of data received by the receiver in unit + time. Note that the throughput will always be less than or equal to the + send rate due to losses. Finally, the number of non-duplicate packets + received by the receiver in unit time gives us the goodput of the + connection. The goodput is always less than or equal to the throughput, + since the receiver may receive two copies of the same packet due to + retransmissions by the sender. In a previous paper, we presented a simple + model for predicting the steady state send rate of a bulk transfer TCP + flow as a function of loss rate and round trip time. In this paper, we + extend that work in two ways. First, we analyze the performance of bulk + transfer TCP flows using more precise, stochastic analysis. Second, we + build upon the previous analysis to provide both an approximate formula as + well as a more accurate stochastic model for the steady state throughput + of a bulk transfer TCP flow.}, + file = {ftp://gaia.cs.umass.edu/pub/Padhey99-markov.ps} +} +@thesis{geer, + options = {useprefix=false}, + hyphenation = {british}, + author = {de Geer, Ingrid}, + title = {Earl, Saint, Bishop, Skald~-- and Music}, + subtitle = {The Orkney Earldom of the Twelfth Century. A Musicological + Study}, + institution = {Uppsala Universitet}, + type = {phdthesis}, + location = {Uppsala}, + date = {1985}, + annotation = {This is a typical \texttt{thesis} entry for a PhD thesis. Note + the \texttt{type} field in the database file which uses a localization + key. Also note the format of the printed name and compare the + \texttt{useprefix} option in the \texttt{options} field as well as + \texttt{vangennep}} +} +@thesis{loh, + hyphenation = {american}, + author = {Loh, Nin C.}, + title = {High-Resolution Micromachined Interferometric Accelerometer}, + institution = {Massachusetts Institute of Technology}, + type = {mathesis}, + location = {Cambridge, Mass.}, + date = {1992}, + annotation = {This is a typical \texttt{thesis} entry for an MA thesis. Note + the \texttt{type} field in the database file which uses a localization + key}} diff --git a/Master/texmf-dist/tex/latex/biblatex/bbx/alphabetic-verb.bbx b/Master/texmf-dist/tex/latex/biblatex/bbx/alphabetic-verb.bbx index 5323b7b960e..d9b165af160 100644 --- a/Master/texmf-dist/tex/latex/biblatex/bbx/alphabetic-verb.bbx +++ b/Master/texmf-dist/tex/latex/biblatex/bbx/alphabetic-verb.bbx @@ -1,7 +1,5 @@ -% $Id: alphabetic-verb.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{alphabetic-verb.bbx} -[\abx@bbxid $Id: alphabetic-verb.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@bbxid] \RequireBibliographyStyle{alphabetic} diff --git a/Master/texmf-dist/tex/latex/biblatex/bbx/alphabetic.bbx b/Master/texmf-dist/tex/latex/biblatex/bbx/alphabetic.bbx index f3cf7e09d91..e8d45afd516 100644 --- a/Master/texmf-dist/tex/latex/biblatex/bbx/alphabetic.bbx +++ b/Master/texmf-dist/tex/latex/biblatex/bbx/alphabetic.bbx @@ -1,7 +1,5 @@ -% $Id: alphabetic.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{alphabetic.bbx} -[\abx@bbxid $Id: alphabetic.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@bbxid] \RequireBibliographyStyle{standard} \ExecuteBibliographyOptions{labelalpha,sorting=anyt} diff --git a/Master/texmf-dist/tex/latex/biblatex/bbx/authortitle-comp.bbx b/Master/texmf-dist/tex/latex/biblatex/bbx/authortitle-comp.bbx index c1362eb12dc..2db8da073c6 100644 --- a/Master/texmf-dist/tex/latex/biblatex/bbx/authortitle-comp.bbx +++ b/Master/texmf-dist/tex/latex/biblatex/bbx/authortitle-comp.bbx @@ -1,7 +1,5 @@ -% $Id: authortitle-comp.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{authortitle-comp.bbx} -[\abx@bbxid $Id: authortitle-comp.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@bbxid] \RequireBibliographyStyle{authortitle} diff --git a/Master/texmf-dist/tex/latex/biblatex/bbx/authortitle-ibid.bbx b/Master/texmf-dist/tex/latex/biblatex/bbx/authortitle-ibid.bbx index 3ee21efebe1..b614f26d24f 100644 --- a/Master/texmf-dist/tex/latex/biblatex/bbx/authortitle-ibid.bbx +++ b/Master/texmf-dist/tex/latex/biblatex/bbx/authortitle-ibid.bbx @@ -1,7 +1,5 @@ -% $Id: authortitle-ibid.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{authortitle-ibid.bbx} -[\abx@bbxid $Id: authortitle-ibid.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@bbxid] \RequireBibliographyStyle{authortitle} diff --git a/Master/texmf-dist/tex/latex/biblatex/bbx/authortitle-icomp.bbx b/Master/texmf-dist/tex/latex/biblatex/bbx/authortitle-icomp.bbx index 89174567403..881a873437d 100644 --- a/Master/texmf-dist/tex/latex/biblatex/bbx/authortitle-icomp.bbx +++ b/Master/texmf-dist/tex/latex/biblatex/bbx/authortitle-icomp.bbx @@ -1,7 +1,5 @@ -% $Id: authortitle-icomp.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{authortitle-icomp.bbx} -[\abx@bbxid $Id: authortitle-icomp.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@bbxid] \RequireBibliographyStyle{authortitle} diff --git a/Master/texmf-dist/tex/latex/biblatex/bbx/authortitle-tcomp.bbx b/Master/texmf-dist/tex/latex/biblatex/bbx/authortitle-tcomp.bbx index f1128ccc186..2d0015d816f 100644 --- a/Master/texmf-dist/tex/latex/biblatex/bbx/authortitle-tcomp.bbx +++ b/Master/texmf-dist/tex/latex/biblatex/bbx/authortitle-tcomp.bbx @@ -1,7 +1,5 @@ -% $Id: authortitle-tcomp.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{authortitle-tcomp.bbx} -[\abx@bbxid $Id: authortitle-tcomp.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@bbxid] \RequireBibliographyStyle{authortitle} diff --git a/Master/texmf-dist/tex/latex/biblatex/bbx/authortitle-terse.bbx b/Master/texmf-dist/tex/latex/biblatex/bbx/authortitle-terse.bbx index a0d578f774a..cb6b5791b57 100644 --- a/Master/texmf-dist/tex/latex/biblatex/bbx/authortitle-terse.bbx +++ b/Master/texmf-dist/tex/latex/biblatex/bbx/authortitle-terse.bbx @@ -1,7 +1,5 @@ -% $Id: authortitle-terse.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{authortitle-terse.bbx} -[\abx@bbxid $Id: authortitle-terse.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@bbxid] \RequireBibliographyStyle{authortitle} diff --git a/Master/texmf-dist/tex/latex/biblatex/bbx/authortitle-ticomp.bbx b/Master/texmf-dist/tex/latex/biblatex/bbx/authortitle-ticomp.bbx index 060c9cf0832..d466a83bdd0 100644 --- a/Master/texmf-dist/tex/latex/biblatex/bbx/authortitle-ticomp.bbx +++ b/Master/texmf-dist/tex/latex/biblatex/bbx/authortitle-ticomp.bbx @@ -1,7 +1,5 @@ -% $Id: authortitle-ticomp.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{authortitle-ticomp.bbx} -[\abx@bbxid $Id: authortitle-ticomp.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@bbxid] \RequireBibliographyStyle{authortitle} diff --git a/Master/texmf-dist/tex/latex/biblatex/bbx/authortitle.bbx b/Master/texmf-dist/tex/latex/biblatex/bbx/authortitle.bbx index ebeb7003907..6f67296b03f 100644 --- a/Master/texmf-dist/tex/latex/biblatex/bbx/authortitle.bbx +++ b/Master/texmf-dist/tex/latex/biblatex/bbx/authortitle.bbx @@ -1,7 +1,5 @@ -% $Id: authortitle.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{authortitle.bbx} -[\abx@bbxid $Id: authortitle.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@bbxid] \RequireBibliographyStyle{standard} \ExecuteBibliographyOptions{pagetracker} diff --git a/Master/texmf-dist/tex/latex/biblatex/bbx/authoryear-comp.bbx b/Master/texmf-dist/tex/latex/biblatex/bbx/authoryear-comp.bbx index ba75ca61d4e..46817d906c7 100644 --- a/Master/texmf-dist/tex/latex/biblatex/bbx/authoryear-comp.bbx +++ b/Master/texmf-dist/tex/latex/biblatex/bbx/authoryear-comp.bbx @@ -1,7 +1,5 @@ -% $Id: authoryear-comp.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{authoryear-comp.bbx} -[\abx@bbxid $Id: authoryear-comp.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@bbxid] \RequireBibliographyStyle{authoryear} diff --git a/Master/texmf-dist/tex/latex/biblatex/bbx/authoryear-ibid.bbx b/Master/texmf-dist/tex/latex/biblatex/bbx/authoryear-ibid.bbx index 6202f6d627a..252d31f006c 100644 --- a/Master/texmf-dist/tex/latex/biblatex/bbx/authoryear-ibid.bbx +++ b/Master/texmf-dist/tex/latex/biblatex/bbx/authoryear-ibid.bbx @@ -1,7 +1,5 @@ -% $Id: authoryear-ibid.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{authoryear-ibid.bbx} -[\abx@bbxid $Id: authoryear-ibid.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@bbxid] \RequireBibliographyStyle{authoryear} diff --git a/Master/texmf-dist/tex/latex/biblatex/bbx/authoryear-icomp.bbx b/Master/texmf-dist/tex/latex/biblatex/bbx/authoryear-icomp.bbx index 3fdb40e55c1..38068b6ae31 100644 --- a/Master/texmf-dist/tex/latex/biblatex/bbx/authoryear-icomp.bbx +++ b/Master/texmf-dist/tex/latex/biblatex/bbx/authoryear-icomp.bbx @@ -1,7 +1,5 @@ -% $Id: authoryear-icomp.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{authoryear-icomp.bbx} -[\abx@bbxid $Id: authoryear-icomp.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@bbxid] \RequireBibliographyStyle{authoryear} diff --git a/Master/texmf-dist/tex/latex/biblatex/bbx/authoryear.bbx b/Master/texmf-dist/tex/latex/biblatex/bbx/authoryear.bbx index 1085e5e9c48..feff034590c 100644 --- a/Master/texmf-dist/tex/latex/biblatex/bbx/authoryear.bbx +++ b/Master/texmf-dist/tex/latex/biblatex/bbx/authoryear.bbx @@ -1,7 +1,5 @@ -% $Id: authoryear.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{authoryear.bbx} -[\abx@bbxid $Id: authoryear.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@bbxid] \RequireBibliographyStyle{standard} diff --git a/Master/texmf-dist/tex/latex/biblatex/bbx/debug.bbx b/Master/texmf-dist/tex/latex/biblatex/bbx/debug.bbx index e4b2214ea76..fc90ed62f29 100644 --- a/Master/texmf-dist/tex/latex/biblatex/bbx/debug.bbx +++ b/Master/texmf-dist/tex/latex/biblatex/bbx/debug.bbx @@ -1,7 +1,5 @@ -% $Id: debug.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{debug.bbx} -[\abx@bbxid $Id: debug.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@bbxid] \ExecuteBibliographyOptions{sorting=debug} \DeclareFieldFormat{entrykey}{\ttfamily[#1]} diff --git a/Master/texmf-dist/tex/latex/biblatex/bbx/draft.bbx b/Master/texmf-dist/tex/latex/biblatex/bbx/draft.bbx index 67655a116f5..0a63b386f80 100644 --- a/Master/texmf-dist/tex/latex/biblatex/bbx/draft.bbx +++ b/Master/texmf-dist/tex/latex/biblatex/bbx/draft.bbx @@ -1,7 +1,5 @@ -% $Id: draft.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{draft.bbx} -[\abx@bbxid $Id: draft.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@bbxid] \RequireBibliographyStyle{standard} \ExecuteBibliographyOptions{sorting=debug} diff --git a/Master/texmf-dist/tex/latex/biblatex/bbx/numeric-comp.bbx b/Master/texmf-dist/tex/latex/biblatex/bbx/numeric-comp.bbx index 47ce22e2450..0a4be7f5807 100644 --- a/Master/texmf-dist/tex/latex/biblatex/bbx/numeric-comp.bbx +++ b/Master/texmf-dist/tex/latex/biblatex/bbx/numeric-comp.bbx @@ -1,7 +1,5 @@ -% $Id: numeric-comp.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{numeric-comp.bbx} -[\abx@bbxid $Id: numeric-comp.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@bbxid] \RequireBibliographyStyle{numeric} diff --git a/Master/texmf-dist/tex/latex/biblatex/bbx/numeric-verb.bbx b/Master/texmf-dist/tex/latex/biblatex/bbx/numeric-verb.bbx index 84e24a173be..f5788bf24cf 100644 --- a/Master/texmf-dist/tex/latex/biblatex/bbx/numeric-verb.bbx +++ b/Master/texmf-dist/tex/latex/biblatex/bbx/numeric-verb.bbx @@ -1,7 +1,5 @@ -% $Id: numeric-verb.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{numeric-verb.bbx} -[\abx@bbxid $Id: numeric-verb.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@bbxid] \RequireBibliographyStyle{numeric} diff --git a/Master/texmf-dist/tex/latex/biblatex/bbx/numeric.bbx b/Master/texmf-dist/tex/latex/biblatex/bbx/numeric.bbx index 55a5b95f9bf..5ae940ff95b 100644 --- a/Master/texmf-dist/tex/latex/biblatex/bbx/numeric.bbx +++ b/Master/texmf-dist/tex/latex/biblatex/bbx/numeric.bbx @@ -1,7 +1,5 @@ -% $Id: numeric.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{numeric.bbx} -[\abx@bbxid $Id: numeric.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@bbxid] \RequireBibliographyStyle{standard} \ExecuteBibliographyOptions{labelnumber} diff --git a/Master/texmf-dist/tex/latex/biblatex/bbx/reading.bbx b/Master/texmf-dist/tex/latex/biblatex/bbx/reading.bbx index 64b709d2a5d..f74a1d1d69a 100644 --- a/Master/texmf-dist/tex/latex/biblatex/bbx/reading.bbx +++ b/Master/texmf-dist/tex/latex/biblatex/bbx/reading.bbx @@ -1,7 +1,5 @@ -% $Id: reading.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{reading.bbx} -[\abx@bbxid $Id: reading.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@bbxid] \RequireBibliographyStyle{standard} diff --git a/Master/texmf-dist/tex/latex/biblatex/bbx/standard.bbx b/Master/texmf-dist/tex/latex/biblatex/bbx/standard.bbx index b9f79ba5e4e..d237fba1534 100644 --- a/Master/texmf-dist/tex/latex/biblatex/bbx/standard.bbx +++ b/Master/texmf-dist/tex/latex/biblatex/bbx/standard.bbx @@ -1,12 +1,11 @@ -% $Id: standard.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{standard.bbx} -[\abx@bbxid $Id: standard.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@bbxid] \newtoggle{bbx:isbn} \newtoggle{bbx:url} \newtoggle{bbx:doi} \newtoggle{bbx:eprint} +\newtoggle{bbx:related} \DeclareBibliographyOption{isbn}[true]{% \settoggle{bbx:isbn}{#1}} @@ -16,8 +15,10 @@ \settoggle{bbx:doi}{#1}} \DeclareBibliographyOption{eprint}[true]{% \settoggle{bbx:eprint}{#1}} +\DeclareBibliographyOption{related}[true]{% + \settoggle{bbx:related}{#1}} -\ExecuteBibliographyOptions{isbn,url,doi,eprint} +\ExecuteBibliographyOptions{isbn,url,doi,eprint,related} \newbibmacro*{begentry}{} \newbibmacro*{finentry}{\finentry} @@ -53,6 +54,8 @@ \usebibmacro{addendum+pubstate}% \setunit{\bibpagerefpunct}\newblock \usebibmacro{pageref}% + \newunit\newblock + \usebibmacro{related}% \usebibmacro{finentry}} \DeclareBibliographyDriver{book}{% @@ -96,6 +99,8 @@ \usebibmacro{addendum+pubstate}% \setunit{\bibpagerefpunct}\newblock \usebibmacro{pageref}% + \newunit\newblock + \usebibmacro{related}% \usebibmacro{finentry}} \DeclareBibliographyDriver{booklet}{% @@ -128,6 +133,8 @@ \usebibmacro{addendum+pubstate}% \setunit{\bibpagerefpunct}\newblock \usebibmacro{pageref}% + \newunit\newblock + \usebibmacro{related}% \usebibmacro{finentry}} \DeclareBibliographyDriver{collection}{% @@ -169,6 +176,8 @@ \usebibmacro{addendum+pubstate}% \setunit{\bibpagerefpunct}\newblock \usebibmacro{pageref}% + \newunit\newblock + \usebibmacro{related}% \usebibmacro{finentry}} \DeclareBibliographyDriver{inbook}{% @@ -215,6 +224,8 @@ \usebibmacro{addendum+pubstate}% \setunit{\bibpagerefpunct}\newblock \usebibmacro{pageref}% + \newunit\newblock + \usebibmacro{related}% \usebibmacro{finentry}} \DeclareBibliographyDriver{incollection}{% @@ -259,6 +270,8 @@ \usebibmacro{addendum+pubstate}% \setunit{\bibpagerefpunct}\newblock \usebibmacro{pageref}% + \newunit\newblock + \usebibmacro{related}% \usebibmacro{finentry}} \DeclareBibliographyDriver{inproceedings}{% @@ -305,6 +318,8 @@ \usebibmacro{addendum+pubstate}% \setunit{\bibpagerefpunct}\newblock \usebibmacro{pageref}% + \newunit\newblock + \usebibmacro{related}% \usebibmacro{finentry}} \DeclareBibliographyDriver{manual}{% @@ -347,6 +362,8 @@ \usebibmacro{addendum+pubstate}% \setunit{\bibpagerefpunct}\newblock \usebibmacro{pageref}% + \newunit\newblock + \usebibmacro{related}% \usebibmacro{finentry}} \DeclareBibliographyDriver{misc}{% @@ -377,6 +394,8 @@ \usebibmacro{addendum+pubstate}% \setunit{\bibpagerefpunct}\newblock \usebibmacro{pageref}% + \newunit\newblock + \usebibmacro{related}% \usebibmacro{finentry}} \DeclareBibliographyDriver{online}{% @@ -409,6 +428,8 @@ \usebibmacro{addendum+pubstate}% \setunit{\bibpagerefpunct}\newblock \usebibmacro{pageref}% + \newunit\newblock + \usebibmacro{related}% \usebibmacro{finentry}} \DeclareBibliographyDriver{patent}{% @@ -442,6 +463,8 @@ \usebibmacro{addendum+pubstate}% \setunit{\bibpagerefpunct}\newblock \usebibmacro{pageref}% + \newunit\newblock + \usebibmacro{related}% \usebibmacro{finentry}} \DeclareBibliographyDriver{periodical}{% @@ -466,6 +489,8 @@ \usebibmacro{addendum+pubstate}% \setunit{\bibpagerefpunct}\newblock \usebibmacro{pageref}% + \newunit\newblock + \usebibmacro{related}% \usebibmacro{finentry}} \DeclareBibliographyDriver{proceedings}{% @@ -509,6 +534,8 @@ \usebibmacro{addendum+pubstate}% \setunit{\bibpagerefpunct}\newblock \usebibmacro{pageref}% + \newunit\newblock + \usebibmacro{related}% \usebibmacro{finentry}} \DeclareBibliographyDriver{report}{% @@ -545,6 +572,8 @@ \usebibmacro{addendum+pubstate}% \setunit{\bibpagerefpunct}\newblock \usebibmacro{pageref}% + \newunit\newblock + \usebibmacro{related}% \usebibmacro{finentry}} \DeclareBibliographyDriver{thesis}{% @@ -577,6 +606,8 @@ \usebibmacro{addendum+pubstate}% \setunit{\bibpagerefpunct}\newblock \usebibmacro{pageref}% + \newunit\newblock + \usebibmacro{related}% \usebibmacro{finentry}} \DeclareBibliographyDriver{unpublished}{% @@ -603,6 +634,8 @@ \usebibmacro{addendum+pubstate}% \setunit{\bibpagerefpunct}\newblock \usebibmacro{pageref}% + \newunit\newblock + \usebibmacro{related}% \usebibmacro{finentry}} \DeclareBibliographyDriver{shorthands}{% @@ -797,4 +830,35 @@ \newunit\newblock \printfield{pubstate}} +\newcounter{bbx:relatedcount} + +\newbibmacro*{related}{% + \ifboolexpr{ + not test {\iftoggle{bbx:related}} + or + test {\iffieldundef{related}} + } + {} + {\setcounter{bbx:relatedcount}{0}% + \def\do{% + \stepcounter{bbx:relatedcount}% + \ifnumgreater{\value{bbx:relatedcount}}{1} + {\printtext{\relateddelim}} + {}}% + \ifcsundef{abx@macro@related:\strfield{relatedtype}} + {\appto{\do}{\csuse{abx@macro@related:default}}} + {\appto{\do}{\csuse{abx@macro@related:\strfield{relatedtype}}}}% + \ifcsundef{abx@ffd@*@related:\strfield{relatedtype}} + {\def\abx@tempa{related}} + {\def\abx@tempa{related:\strfield{relatedtype}}}% + \printtext[\abx@tempa]{% + \iffieldundef{relatedstring} + {\iffieldbibstring{relatedtype} + {\printtext{\bibstring{\thefield{relatedtype}}\relatedpunct}} + {}} + {\iffieldbibstring{relatedstring} + {\printtext{\bibstring{\thefield{relatedstring}}\relatedpunct}} + {\printtext{\printfield{relatedstring}\relatedpunct}}}% + \docsvfield{related}}}} + \endinput diff --git a/Master/texmf-dist/tex/latex/biblatex/bbx/verbose-ibid.bbx b/Master/texmf-dist/tex/latex/biblatex/bbx/verbose-ibid.bbx index e531cfc535e..ab2cf1a8710 100644 --- a/Master/texmf-dist/tex/latex/biblatex/bbx/verbose-ibid.bbx +++ b/Master/texmf-dist/tex/latex/biblatex/bbx/verbose-ibid.bbx @@ -1,7 +1,5 @@ -% $Id: verbose-ibid.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{verbose-ibid.bbx} -[\abx@bbxid $Id: verbose-ibid.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@bbxid] \RequireBibliographyStyle{authortitle} diff --git a/Master/texmf-dist/tex/latex/biblatex/bbx/verbose-inote.bbx b/Master/texmf-dist/tex/latex/biblatex/bbx/verbose-inote.bbx index 5d10cef58ae..32b6dcb8791 100644 --- a/Master/texmf-dist/tex/latex/biblatex/bbx/verbose-inote.bbx +++ b/Master/texmf-dist/tex/latex/biblatex/bbx/verbose-inote.bbx @@ -1,7 +1,5 @@ -% $Id: verbose-inote.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{verbose-inote.bbx} -[\abx@bbxid $Id: verbose-inote.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@bbxid] \RequireBibliographyStyle{authortitle} diff --git a/Master/texmf-dist/tex/latex/biblatex/bbx/verbose-note.bbx b/Master/texmf-dist/tex/latex/biblatex/bbx/verbose-note.bbx index e4096a346fc..6560305a663 100644 --- a/Master/texmf-dist/tex/latex/biblatex/bbx/verbose-note.bbx +++ b/Master/texmf-dist/tex/latex/biblatex/bbx/verbose-note.bbx @@ -1,7 +1,5 @@ -% $Id: verbose-note.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{verbose-note.bbx} -[\abx@bbxid $Id: verbose-note.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@bbxid] \RequireBibliographyStyle{authortitle} diff --git a/Master/texmf-dist/tex/latex/biblatex/bbx/verbose-trad1.bbx b/Master/texmf-dist/tex/latex/biblatex/bbx/verbose-trad1.bbx index 46ae4158311..f2f4f36f3ef 100644 --- a/Master/texmf-dist/tex/latex/biblatex/bbx/verbose-trad1.bbx +++ b/Master/texmf-dist/tex/latex/biblatex/bbx/verbose-trad1.bbx @@ -1,7 +1,5 @@ -% $Id: verbose-trad1.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{verbose-trad1.bbx} -[\abx@bbxid $Id: verbose-trad1.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@bbxid] \RequireBibliographyStyle{authortitle} diff --git a/Master/texmf-dist/tex/latex/biblatex/bbx/verbose-trad2.bbx b/Master/texmf-dist/tex/latex/biblatex/bbx/verbose-trad2.bbx index 610cca8966d..e177123c7ac 100644 --- a/Master/texmf-dist/tex/latex/biblatex/bbx/verbose-trad2.bbx +++ b/Master/texmf-dist/tex/latex/biblatex/bbx/verbose-trad2.bbx @@ -1,7 +1,5 @@ -% $Id: verbose-trad2.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{verbose-trad2.bbx} -[\abx@bbxid $Id: verbose-trad2.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@bbxid] \RequireBibliographyStyle{authortitle} diff --git a/Master/texmf-dist/tex/latex/biblatex/bbx/verbose-trad3.bbx b/Master/texmf-dist/tex/latex/biblatex/bbx/verbose-trad3.bbx index 8003bb379a7..e48de940745 100644 --- a/Master/texmf-dist/tex/latex/biblatex/bbx/verbose-trad3.bbx +++ b/Master/texmf-dist/tex/latex/biblatex/bbx/verbose-trad3.bbx @@ -1,7 +1,5 @@ -% $Id: verbose-trad3.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{verbose-trad3.bbx} -[\abx@bbxid $Id: verbose-trad3.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@bbxid] \RequireBibliographyStyle{authortitle} diff --git a/Master/texmf-dist/tex/latex/biblatex/bbx/verbose.bbx b/Master/texmf-dist/tex/latex/biblatex/bbx/verbose.bbx index 80d05549a7c..fdba2250cd2 100644 --- a/Master/texmf-dist/tex/latex/biblatex/bbx/verbose.bbx +++ b/Master/texmf-dist/tex/latex/biblatex/bbx/verbose.bbx @@ -1,7 +1,5 @@ -% $Id: verbose.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{verbose.bbx} -[\abx@bbxid $Id: verbose.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@bbxid] \RequireBibliographyStyle{authortitle} diff --git a/Master/texmf-dist/tex/latex/biblatex/biblatex.cfg b/Master/texmf-dist/tex/latex/biblatex/biblatex.cfg index f544b1af305..5c8cf286176 100644 --- a/Master/texmf-dist/tex/latex/biblatex/biblatex.cfg +++ b/Master/texmf-dist/tex/latex/biblatex/biblatex.cfg @@ -1,5 +1,3 @@ -% $Id: biblatex.cfg,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{biblatex.cfg} % Put your definitions here. diff --git a/Master/texmf-dist/tex/latex/biblatex/biblatex.def b/Master/texmf-dist/tex/latex/biblatex/biblatex.def index 89b815e8134..403ef2347f8 100644 --- a/Master/texmf-dist/tex/latex/biblatex/biblatex.def +++ b/Master/texmf-dist/tex/latex/biblatex/biblatex.def @@ -1,8 +1,5 @@ -% $Id: biblatex.def,v 1.7 2011/11/13 19:09:07 lehman stable $ - +% -*- mode: LaTeX -*- \ProvidesFile{biblatex.def} -[\abx@rcsid $Id: biblatex.def,v 1.7 2011/11/13 19:09:07 lehman stable $ - biblatex generic definitions] % ------------------------------------------------------------------ % FORMATTING COMMANDS @@ -62,6 +59,8 @@ \ifdimless{\leftmargin}{1.25em} {\textendash} {\textemdash}}}} +\newcommand*{\relatedpunct}{\space} +\newcommand*{\relateddelim}{\adddot\par\nobreak} % Used for indexing @@ -335,7 +334,7 @@ {\nolinkurl{#1}}} \DeclareFieldAlias{eprint:HDL}{eprint:hdl} \DeclareFieldFormat{eprint:arxiv}{% - arXiv\addcolon + arXiv\addcolon\space \ifhyperref {\href{http://arxiv.org/\abx@arxivpath/#1}{% \nolinkurl{#1}% @@ -399,6 +398,10 @@ \DeclareFieldFormat{volume}{\bibstring{volume}~#1}% volume of a book \DeclareFieldFormat[article,periodical]{volume}{#1}% volume of a journal \DeclareFieldFormat{volumes}{#1~\bibstring{volumes}} +\DeclareFieldFormat{related}{#1} +\DeclareFieldFormat{related:multivolume}{\par\nobreak#1} +\DeclareFieldFormat{related:origpubin}{\mkbibparens{#1}} +\DeclareFieldFormat{related:origpubas}{\mkbibparens{#1}} % Generic formats for \printtext and \printfield @@ -920,7 +923,324 @@ \endgroup} % ------------------------------------------------------------------ -% CUSTOMIZATION +% Driver sourcemaps +% ------------------------------------------------------------------ + +\DeclareDefaultSourcemap[datatype=bibtex]{ + \map{ + \step[typesource=conference, typetarget=inproceedings] + \step[typesource=electronic, typetarget=online] + \step[typesource=www, typetarget=online] + } + \map{ + \step[typesource=mastersthesis, typetarget=thesis, final] + \step[fieldset=type, fieldvalue=mathesis] + } + \map{ + \step[typesource=phdthesis, typetarget=thesis, final] + \step[fieldset=type, fieldvalue=phdthesis] + } + \map{ + \step[typesource=techreport, typetarget=report, final] + \step[fieldset=type, fieldvalue=techreport] + } + \map{ + \step[fieldsource=address, fieldtarget=location] + \step[fieldsource=school, fieldtarget=institution] + \step[fieldsource=annote, fieldtarget=annotation] + \step[fieldsource=archiveprefix, fieldtarget=eprinttype] + \step[fieldsource=journal, fieldtarget=journaltitle] + \step[fieldsource=primaryclass, fieldtarget=eprintclass] + \step[fieldsource=key, fieldtarget=sortkey] + \step[fieldsource=pdf, fieldtarget=file] + } +} + +\DeclareDefaultSourcemap[datatype=endnotexml]{ + \map{ + \step[typesource={Aggregated Database}, typetarget=misc] + \step[typesource={Ancient Text}, typetarget=misc] + \step[typesource=Artwork, typetarget=artwork] + \step[typesource={Audiovisual Material}, typetarget=misc] + \step[typesource=Bill, typetarget=jurisdiction] + \step[typesource=Blog, typetarget=online] + \step[typesource=Book, typetarget=book] + \step[typesource={Book Section}, typetarget=inbook] + \step[typesource=Case, typetarget=jurisdiction] + \step[typesource=Catalog, typetarget=misc] + \step[typesource={Chart or Table}, typetarget=misc] + \step[typesource={Classical Work}, typetarget=misc] + \step[typesource={Computer Program}, typetarget=software] + \step[typesource={Conference Paper}, typetarget=inproceedings] + \step[typesource={Conference Proceedings}, typetarget=proceedings] + \step[typesource=Dictionary, typetarget=inreference] + \step[typesource={Edited Book}, typetarget=collection] + \step[typesource={Electronic Article}, typetarget=article] + \step[typesource={Electronic Book}, typetarget=book] + \step[typesource={Encyclopedia}, typetarget=reference] + \step[typesource=Equation, typetarget=misc] + \step[typesource=Figure, typetarget=misc] + \step[typesource={Film or Broadcast}, typetarget=movie] + \step[typesource={Government Document}, typetarget=report] + \step[typesource=Grant, typetarget=misc] + \step[typesource=Hearing, typetarget=jurisdiction] + \step[typesource={Journal Article}, typetarget=article] + \step[typesource={Legal Rule or Regulation}, typetarget=legislation] + \step[typesource={Magazine Article}, typetarget=article] + \step[typesource=Manuscript, typetarget=unpublished] + \step[typesource=Map, typetarget=misc] + \step[typesource={Newspaper Article}, typetarget=article] + \step[typesource={Online Database}, typetarget=online] + \step[typesource={Online Multimedia}, typetarget=online] + \step[typesource=Pamphlet, typetarget=booklet] + \step[typesource=Patent, typetarget=patent] + \step[typesource={Personal Communication}, typetarget=letter] + \step[typesource=Report, typetarget=report] + \step[typesource=Serial, typetarget=periodical] + \step[typesource=Standard, typetarget=standard] + \step[typesource=Statute, typetarget=legislation] + \step[typesource=Thesis, typetarget=thesis] + \step[typesource={Unpublished Work}, typetarget=unpublished] + \step[typesource={Web Page}, typetarget=online] + } + \map{ + \step[fieldsource={electronic-resource-num}, fieldtarget=eprint] + \step[fieldsource={alt-title}, fieldtarget=shorttitle] + \step[fieldsource={meeting-place}, fieldtarget=venue] + \step[fieldsource={pub-location}, fieldtarget=location] + \step[fieldsource={orig-pub}, fieldtarget=origpublisher] + \step[fieldsource={authors}, fieldtarget=author] + \step[fieldsource={secondary-authors}, fieldtarget=editor] + \step[fieldsource={tertiary-authors}, fieldtarget=commentator] + \step[fieldsource={subsidiary-authors}, fieldtarget=translator] + \step[fieldsource={year}, fieldtarget=date] + \step[fieldsource={pub-dates}, fieldtarget=date] + \step[fieldsource={num-vols}, fieldtarget=volumes] + \step[fieldsource={call-num}, fieldtarget=library] + \step[fieldsource={notes}, fieldtarget=note] + \step[fieldsource={secondary-title}, fieldtarget=subtitle] + \step[fieldsource={work-type}, fieldtarget=type] + } + \map{ + \pertype{Edited Book} + \step[fieldsource=contributors/authors, fieldtarget=contributors/editor] + } + \map{ + \pertype{Electronic Article} + \pertype{Journal Article} + \pertype{Magazine Article} + \pertype{Newspaper Article} + \step[fieldsource=isbn, fieldtarget=issn] + } + \map{ + \pertype{Patent} + \pertype{Report} + \pertype{Government Document} + \pertype{Legal Rule or Regulation} + \step[fieldsource=isbn, fieldtarget=number] + } + \map{ + \pertype{Blog} + \pertype{Online Database} + \pertype{Online Multimedia} + \pertype{Web Page} + \step[fieldsource={titles/secondary-title}, fieldtarget={titles/title}] + } + \map{ + \pertype{Book Section} + \step[fieldsource={titles/secondary-title}, fieldtarget={titles/booktitle}] + } + \map{ + \pertype{Book} + \pertype{Electronic Book} + \pertype{Manuscript} + \pertype{Unpublished Work} + \step[fieldsource={titles/secondary-title}, fieldtarget={titles/series}] + } + \map{ + \pertype{Conference Paper} + \pertype{Conference Proceedings} + \step[fieldsource={titles/secondary-title}, fieldtarget={titles/eventtitle}] + } + \map{ + \pertype{Electronic Article} + \pertype{Journal Article} + \pertype{Magazine Article} + \pertype{Newspaper Article} + \step[fieldsource={titles/secondary-title}, fieldtarget={titles/journaltitle}] + } + \map{ + \pertype{Book Section} + \step[fieldsource={titles/tertiary-title}, fieldtarget={titles/booktitle}] + } + \map{ + \pertype{Conference Proceedings} + \pertype{periodical} + \step[fieldsource={titles/tertiary-title}, fieldtarget={titles/series}] + } +} +\DeclareDefaultSourcemap[datatype=ris]{ + \map{ + \step[typesource=ART, typetarget=artwork] + \step[typesource=BILL, typetarget=jurisdiction] + \step[typesource=BOOK, typetarget=book] + \step[typesource=CHAP, typetarget=inbook] + \step[typesource=COMP, typetarget=software] + \step[typesource=CONF, typetarget=proceedings] + \step[typesource=GEN, typetarget=misc] + \step[typesource=JFULL, typetarget=article] + \step[typesource=JOUR, typetarget=article] + \step[typesource=MGZN, typetarget=misc] + \step[typesource=MPCT, typetarget=movie] + \step[typesource=NEWS, typetarget=misc] + \step[typesource=PAMP, typetarget=misc] + \step[typesource=PAT, typetarget=patent] + \step[typesource=PCOMM, typetarget=misc] + \step[typesource=RPRT, typetarget=report] + \step[typesource=SER, typetarget=misc] + \step[typesource=SLIDE, typetarget=misc] + \step[typesource=SOUND, typetarget=audio] + \step[typesource=STAT, typetarget=legal] + \step[typesource=THES, typetarget=thesis] + \step[typesource=UNBILL, typetarget=jurisdiction] + \step[typesource=UNPB, typetarget=unpublished] + } + \map{ + \step[fieldsource=Y1, fieldtarget=date] + \step[fieldsource=PY, fieldtarget=date] + \step[fieldsource=Y2, fieldtarget=eventdate] + \step[fieldsource=A1, fieldtarget=author] + \step[fieldsource=AU, fieldtarget=author] + \step[fieldsource=A2, fieldtarget=editor] + \step[fieldsource=A3, fieldtarget=editor] + \step[fieldsource=ED, fieldtarget=editor] + \step[fieldsource=SPEP, fieldtarget=pages] + \step[fieldsource=N1, fieldtarget=note] + \step[fieldsource=N2, fieldtarget=abstract] + \step[fieldsource=AB, fieldtarget=abstract] + \step[fieldsource=JO, fieldtarget=journaltitle] + \step[fieldsource=JF, fieldtarget=journaltitle] + \step[fieldsource=JA, fieldtarget=shortjournal] + \step[fieldsource=VL, fieldtarget=volume] + \step[fieldsource=IS, fieldtarget=issue] + \step[fieldsource=CP, fieldtarget=issue] + \step[fieldsource=CY, fieldtarget=location] + \step[fieldsource=SN, fieldtarget=isbn] + \step[fieldsource=PB, fieldtarget=publisher] + \step[fieldsource=KW, fieldtarget=keywords] + \step[fieldsource=TI, fieldtarget=title] + \step[fieldsource=U1, fieldtarget=usera] + \step[fieldsource=U2, fieldtarget=userb] + \step[fieldsource=U3, fieldtarget=userc] + \step[fieldsource=U4, fieldtarget=userd] + \step[fieldsource=U5, fieldtarget=usere] + \step[fieldsource=UR, fieldtarget=url] + \step[fieldsource=L1, fieldtarget=file] + } +} +\DeclareDefaultSourcemap[datatype=zoterordfxml]{ + \map{ + \step[typesource=conferencePaper, typetarget=inproceedings] + \step[typesource=bookSection, typetarget=inbook] + \step[typesource=journalArticle, typetarget=article] + \step[typesource=magazineArticle, typetarget=article] + \step[typesource=newspaperArticle, typetarget=article] + \step[typesource=encyclopediaArticle, typetarget=inreference] + \step[typesource=manuscript, typetarget=unpublished] + \step[typesource=document, typetarget=misc] + \step[typesource=dictionaryEntry, typetarget=inreference] + \step[typesource=interview, typetarget=misc] + \step[typesource=film, typetarget=movie] + \step[typesource=webpage, typetarget=online] + \step[typesource=note, typetarget=misc] + \step[typesource=attachment, typetarget=misc] + \step[typesource=bill, typetarget=legislation] + \step[typesource=case, typetarget=jurisdiction] + \step[typesource=hearing, typetarget=jurisdiction] + \step[typesource=statute, typetarget=legislation] + \step[typesource=email, typetarget=letter] + \step[typesource=map, typetarget=image] + \step[typesource=blogPost, typetarget=online] + \step[typesource=instantMessage, typetarget=letter] + \step[typesource=forumPost, typetarget=online] + \step[typesource=audioRecording, typetarget=audio] + \step[typesource=presentation, typetarget=inproceedings] + \step[typesource=videoRecording, typetarget=video] + \step[typesource=tvBroadcast, typetarget=misc] + \step[typesource=radioBroadcast, typetarget=misc] + \step[typesource=podcast, typetarget=online] + \step[typesource=computerProgram, typetarget=software] + } + \map{ + \step[fieldsource=bib:contributors, fieldtarget=author] + \step[fieldsource=bib:authors, fieldtarget=author] + \step[fieldsource=z:interviewers, fieldtarget=author] + \step[fieldsource=z:directors, fieldtarget=author] + \step[fieldsource=z:scriptwriters, fieldtarget=author] + \step[fieldsource=z:bookAuthor, fieldtarget=author] + \step[fieldsource=z:inventors, fieldtarget=author] + \step[fieldsource=z:recipients, fieldtarget=author] + \step[fieldsource=z:counsels, fieldtarget=author] + \step[fieldsource=z:artists, fieldtarget=author] + \step[fieldsource=z:podcasters, fieldtarget=author] + \step[fieldsource=z:presenters, fieldtarget=author] + \step[fieldsource=z:commenters, fieldtarget=author] + \step[fieldsource=z:programers, fieldtarget=author] + \step[fieldsource=z:composers, fieldtarget=author] + \step[fieldsource=z:producers, fieldtarget=author] + \step[fieldsource=z:performers, fieldtarget=author] + \step[fieldsource=bib:editors, fieldtarget=editor] + \step[fieldsource=z:translators, fieldtarget=translator] + \step[fieldsource=z:seriesEditors, fieldtarget=editor] + \step[fieldsource=dc:date, fieldtarget=date] + \step[fieldsource=bib:pages, fieldtarget=pages] + \step[fieldsource=dc:title, fieldtarget=title] + \step[fieldsource=z:proceedingsTitle, fieldtarget=title] + \step[fieldsource=z:encyclopediaTitle, fieldtarget=title] + \step[fieldsource=z:dictionaryTitle, fieldtarget=title] + \step[fieldsource=z:websiteTitle, fieldtarget=title] + \step[fieldsource=z:forumTitle, fieldtarget=title] + \step[fieldsource=z:blogTitle, fieldtarget=title] + \step[fieldsource=z:nameOfAct, fieldtarget=title] + \step[fieldsource=z:caseName, fieldtarget=title] + \step[fieldsource=z:meetingName, fieldtarget=eventtitle] + \step[fieldsource=prism:volume, fieldtarget=volume] + \step[fieldsource=numberOfVolumes, fieldtarget=volumes] + \step[fieldsource=z:numPages, fieldtarget=pagetotal] + \step[fieldsource=prism:edition, fieldtarget=edition] + \step[fieldsource=dc:description, fieldtarget=note] + \step[fieldsource=dc:alternative, fieldtarget=shortjournal] + \step[fieldsource=dcterms:abstract, fieldtarget=abstract] + \step[fieldsource=dc:type, fieldtarget=type] + \step[fieldsource=z:shortTitle, fieldtarget=shorttitle] + \step[fieldsource=z:bookTitle, fieldtarget=booktitle] + \step[fieldsource=prism:number, fieldtarget=number] + \step[fieldsource=z:patentNumber, fieldtarget=number] + \step[fieldsource=z:codeNumber, fieldtarget=number] + \step[fieldsource=z:reportNumber, fieldtarget=number] + \step[fieldsource=z:billNumber, fieldtarget=number] + \step[fieldsource=z:documentNumber, fieldtarget=number] + \step[fieldsource=z:publicLawNumber, fieldtarget=number] + \step[fieldsource=z:applicationNumber, fieldtarget=number] + \step[fieldsource=z:episodeNumber, fieldtarget=number] + \step[fieldsource=dc:coverage, fieldtarget=location] + \step[fieldsource=z:university, fieldtarget=institution] + \step[fieldsource=z:language, fieldtarget=language] + \step[fieldsource=z:version, fieldtarget=version] + \step[fieldsource=z:libraryCatalog, fieldtarget=library] + \step[fieldsource=dcterms:isPartOf, fieldtarget=BIBERCUSTOMpartof] + \step[fieldsource=dc:identifier, fieldtarget=BIBERCUSTOMidentifier] + \step[fieldsource=dc:publisher, fieldtarget=BIBERCUSTOMpublisher] + \step[fieldsource=dc:presentedAt, fieldtarget=BIBERCUSTOMpresentedat] + \step[fieldsource=dc:subject, fieldtarget=BIBERCUSTOMsubject] + \step[fieldsource={dcterms:BIBERCUSTOMpartof/bib:Journal}, fieldtarget={dcterms:BIBERCUSTOMpartof/periodical}] + \step[fieldsource={dcterms:BIBERCUSTOMpartof/bib:Book}, fieldtarget={dcterms:BIBERCUSTOMpartof/book}] + \step[fieldsource={dcterms:BIBERCUSTOMpartof/bib:ConferenceProceedings}, fieldtarget={dcterms:BIBERCUSTOMpartof/proceedings}] + } +} + +% ------------------------------------------------------------------ +% META-FIELDS % ------------------------------------------------------------------ \DeclareLabelname{% @@ -936,12 +1256,41 @@ origyear, urlyear} +\DeclareLabeltitle{% + shorttitle, + title} + +% ------------------------------------------------------------------ +% LABELALPHA TEMPLATE +% ------------------------------------------------------------------ + +\DeclareLabelalphaTemplate{ + \labelelement{ + \field[final]{shorthand} + \field{label} + \field[strwidth=3,strside=left,ifnames=1]{labelname} + \field[strwidth=1,strside=left]{labelname} + } + \labelelement{ + \field[strwidth=2,strside=right]{year} + } +} + % ------------------------------------------------------------------ % SORTING % ------------------------------------------------------------------ \DeclarePresort{mm} +\DeclareSortingScheme{shorthand}{ + \sort[final]{ + \field{sortshorthand} + } + \sort{ + \field{shorthand} + } +} + \DeclareSortingScheme{none}{ \sort{\citeorder} } @@ -960,10 +1309,10 @@ \field{sortkey} } \sort{ - \name{sortname} - \name{author} - \name{editor} - \name{translator} + \field{sortname} + \field{author} + \field{editor} + \field{translator} \field{sorttitle} \field{title} } @@ -989,10 +1338,10 @@ \field{sortkey} } \sort{ - \name{sortname} - \name{author} - \name{editor} - \name{translator} + \field{sortname} + \field{author} + \field{editor} + \field{translator} \field{sorttitle} \field{title} } @@ -1018,10 +1367,10 @@ \field{sortkey} } \sort{ - \name{sortname} - \name{author} - \name{editor} - \name{translator} + \field{sortname} + \field{author} + \field{editor} + \field{translator} \field{sorttitle} \field{title} } @@ -1050,10 +1399,10 @@ \field{sortkey} } \sort{ - \name{sortname} - \name{author} - \name{editor} - \name{translator} + \field{sortname} + \field{author} + \field{editor} + \field{translator} \field{sorttitle} \field{title} } @@ -1082,10 +1431,10 @@ \field{sortkey} } \sort{ - \name{sortname} - \name{author} - \name{editor} - \name{translator} + \field{sortname} + \field{author} + \field{editor} + \field{translator} \field{sorttitle} \field{title} } @@ -1116,10 +1465,10 @@ \literal{9999} } \sort{ - \name{sortname} - \name{author} - \name{editor} - \name{translator} + \field{sortname} + \field{author} + \field{editor} + \field{translator} \field{sorttitle} \field{title} } @@ -1142,10 +1491,10 @@ \literal{9999} } \sort{ - \name{sortname} - \name{author} - \name{editor} - \name{translator} + \field{sortname} + \field{author} + \field{editor} + \field{translator} \field{sorttitle} \field{title} } @@ -1629,6 +1978,14 @@ {\multicitedelim} {\usebibmacro{postnote}} +\DeclareCiteCommand*{\citeyear} + {\boolfalse{citetracker}% + \boolfalse{pagetracker}% + \usebibmacro{prenote}} + {\printfield{year}\printfield{extrayear}} + {\multicitedelim} + {\usebibmacro{postnote}} + \DeclareCiteCommand{\citedate} {\boolfalse{citetracker}% \boolfalse{pagetracker}% @@ -1637,6 +1994,14 @@ {\multicitedelim} {\usebibmacro{postnote}} +\DeclareCiteCommand*{\citedate} + {\boolfalse{citetracker}% + \boolfalse{pagetracker}% + \usebibmacro{prenote}} + {\printdateextra} + {\multicitedelim} + {\usebibmacro{postnote}} + \DeclareCiteCommand{\citeurl} {\boolfalse{citetracker}% \boolfalse{pagetracker}% @@ -2250,7 +2615,7 @@ {\printtext[journaltitle]{% \printfield[titlecase]{journaltitle}% \setunit{\subtitlepunct}% - \printfield[titlecase]{journalsubtitle}}}} + \printfield{journalsubtitle}}}} \newbibmacro*{periodical}{% \iffieldundef{title} @@ -2258,7 +2623,7 @@ {\printtext[title]{% \printfield[titlecase]{title}% \setunit{\subtitlepunct}% - \printfield[titlecase]{subtitle}}}} + \printfield{subtitle}}}} \newbibmacro*{issue}{% \iffieldundef{issuetitle} @@ -2266,7 +2631,7 @@ {\printtext[issuetitle]{% \printfield[titlecase]{issuetitle}% \setunit{\subtitlepunct}% - \printfield[titlecase]{issuesubtitle}}}} + \printfield{issuesubtitle}}}} \newbibmacro*{in:}{% \printtext{% @@ -2314,4 +2679,103 @@ {\printfile[abstract]{\bibabstractprefix\thefield{entrykey}.tex}} {\printfield{abstract}}} +\newbibmacro*{related:default}[1]{% + \entrydata{#1}{% + \usebibmacro{title}% + \newunit + \ifentrytype{article} + {\usebibmacro{in:}% + \usebibmacro{journal+issuetitle}% + \newunit\newblock} + {}% + \ifboolexpr{ + test {\ifentrytype{inbook}} + or + test {\ifentrytype{incollection}} + or + test {\ifentrytype{inproceedings}} + } + {\usebibmacro{in:}% + \usebibmacro{maintitle+booktitle}% + \newunit\newblock + \usebibmacro{event+venue+date}% + \newunit\newblock} + {}% + \usebibmacro{byeditor+others}% + \newunit\newblock + \printlist{location}% + \iflistundef{publisher} + {\setunit*{\addcomma\space}} + {\setunit*{\addcolon\space}}% + \printlist{publisher}% + \setunit*{\addcomma\space}% + \printdate% + \setunit{\bibpagespunct}% + \printfield{pages}}} + +\newbibmacro*{related:bytranslator}[1]{% + \entrydata{#1}{% + \printnames[bytranslator]{translator}% + \setunit*{\addspace\bibstring{astitle}\space}% + \usebibmacro{title}% + \setunit{\addspace}% + \printtext[parens]{% + \printlist{location}% + \iflistundef{publisher} + {\setunit*{\addcomma\space}} + {\setunit*{\addcolon\space}}% + \printlist{publisher}% + \setunit*{\addcomma\space}% + \printdate}}} + +\newbibmacro*{related:multivolume}[1]{% + \entrydata*{#1}{% + \printfield{volume}% + \printfield{part}% + \setunit{\addcolon\space}% + \usebibmacro{title}% + \ifnamesequal{author}{savedauthor} + {} + {\usebibmacro{bytypestrg}{author}{author}% + \setunit{\addspace}% + \printnames[byauthor]{author} + \newunit\newblock}% + \ifnamesequal{editor}{savededitor} + {} + {\usebibmacro{byeditor+others}% + \newunit\newblock}% + \printdate}} + +\newbibmacro*{related:origpubin}[1]{% + \entrydata*{#1}{% + \printfield{year}% + \ifboolexpr{ + test {\iflistsequal{publisher}{savedpublisher}} + or + test {\iflistundef{publisher}} + } + {} + {\setunit{\addspace\bibstring{bypublisher}\space}% + \printlist{publisher}% + \setunit{\addcomma\space}% + \iflistsequal{location}{savedlocation} + {} + {\printlist{location}}}}} + +\newbibmacro*{related:origpubas}[1]{% + \entrydata*{#1}{% + \usebibmacro{title}% + \ifboolexpr{ + test {\iflistsequal{publisher}{savedpublisher}} + or + test {\iflistundef{publisher}} + } + {} + {\setunit{\addspace\bibstring{bypublisher}\space}% + \printlist{publisher}% + \setunit{\addcomma\space}% + \iflistsequal{location}{savedlocation} + {} + {\printlist{location}}}}} + \endinput diff --git a/Master/texmf-dist/tex/latex/biblatex/biblatex.sty b/Master/texmf-dist/tex/latex/biblatex/biblatex.sty index 6eeb7ae78e9..3ec4ad4da00 100644 --- a/Master/texmf-dist/tex/latex/biblatex/biblatex.sty +++ b/Master/texmf-dist/tex/latex/biblatex/biblatex.sty @@ -1,10465 +1,91 @@ -% $Id: biblatex.sty,v 1.7 2011/11/13 19:09:07 lehman stable $ - -% Copyright (c) 2006-2011 Philipp Lehman. -% -% Permission is granted to copy, distribute and/or modify this -% software under the terms of the LaTeX Project Public License -% (LPPL), version 1.3. -% -% The LPPL maintenance status of this software is -% 'author-maintained'. -% -% This software is provided 'as is', without warranty of any kind, -% either expressed or implied, including, but not limited to, the -% implied warranties of merchantability and fitness for a -% particular purpose. - -\def\abx@rcsid$#1: #2 #3 #4 #5${#4 v#3} -\def\abx@bbxid$#1: #2 #3 #4 #5${#4 v#3 biblatex bibliography style} -\def\abx@cbxid$#1: #2 #3 #4 #5${#4 v#3 biblatex citation style} -\def\abx@lbxid$#1: #2 #3 #4 #5${#4 v#3 biblatex localization} +%% +%% This is file `biblatex.sty'. +%% + +% Set up the version strings here, so they are the same for both branches +\def\abx@date{2012/07/01} +\def\abx@version{2.0} +\def\abx@bbxid{\abx@date\space v\abx@version\space biblatex bibliography style (PK/JW/AB)} +\def\abx@cbxid{\abx@date\space v\abx@version\space biblatex citation style (PK/JW/AB)} +\def\abx@lbxid{\abx@date\space v\abx@version\space biblatex localization (PK/JW/AB)} +\def\abx@cptid{\abx@date\space v\abx@version\space biblatex compatibility (PK/JW/AB)} +\def\blx@bblversion{\abx@version} \NeedsTeXFormat{LaTeX2e}[2005/12/01] \ProvidesPackage{biblatex} -[\abx@rcsid $Id: biblatex.sty,v 1.7 2011/11/13 19:09:07 lehman stable $ - programmable bibliographies] - -\def\blx@bblversion$#1: #2 ${#2} -\edef\blx@bblversion{\blx@bblversion$Revision: 1.7 $} - -%% Dependencies - -\RequirePackage{etoolbox} -\RequirePackage{keyval} -\RequirePackage{logreq} -\RequirePackage{ifthen} -\RequirePackage{url} - -\@ifpackagelater{etoolbox}{2010/11/29} - {} - {\PackageError{biblatex} - {Outdated 'etoolbox' package} - {Upgrade to etoolbox v2.1 (2010/11/29) or later.\MessageBreak - I found: '\csuse{ver@etoolbox.sty}'.\MessageBreak - This is a fatal error. I'm aborting now.}% - \endinput} - -%% Category codes - -\def\blx@docatcodes{% - \do\=\do\<\do\>\do\-\do\"\do\'\do\`\do\.% - \do\,\do\;\do\:\do\!\do\?\do\/} -\def\do#1{\catcode\number`#1=\the\catcode`#1\relax} -\edef\blx@catcodes{\blx@docatcodes\do\^\do\~\do\&\do\|} -\let\do\noexpand - -\def\blx@saneccodes{% - \catcode`\~=\active - \let\do\@makeother - \blx@docatcodes - \let\do\noexpand} - -\blx@saneccodes -\catcode`\&=3 -\catcode`\|=3 -\catcode`\^=7 -\def\blx@nl{^^J} - -%% Compatibility - -\AtEndPreamble{% - \def\do#1{% - \@ifpackageloaded{#1} - {\blx@error - {Incompatible package '#1'} - {The '#1' package and biblatex are incompatible}} - {}}% - \docsvlist{% - amsrefs,apacite,babelbib,backref,bibtopic,bibunits,chapterbib, - cite,citeref,drftcite,footbib,inlinebib,jurabib,mcite,mciteplus, - mlbib,multibbl,multibib,natbib,opcit,overcite,splitbib,ucs}% - \@ifpackageloaded{babel} - {\iftoggle{blx@autolang} - {\blx@mkbabel} - {\blx@mknobabel}} - {\blx@mknobabel}% - \csuse{abx@extras@\blx@languagename}% - \csuse{abx@strings@\blx@languagename}% - \undef\blx@mkbabel - \undef\blx@mknobabel - \ifnum\blx@hyperref=\z@ - \blx@mknohyperref - \else - \@ifpackageloaded{hyperref} - {\blx@mkhyperref} - {\ifnum\blx@hyperref=\@ne - \blx@warning@noline{% - Missing 'hyperref' package.\MessageBreak - Setting hyperref=false}% - \fi - \blx@mknohyperref}% - \fi - \providecommand*{\nolinkurl}{\url}% - \undef\blx@mkhyperref - \undef\blx@mknohyperref - \ifundef\TE@hook - {\let\TE@hook\@empty - \toggletrue{blx@tempa}% - \def\do#1{% - \patchcmd#1% - {\let\isundefined\TE@undef} - {\let\isundefined\TE@undef\TE@hook} - {\togglefalse{blx@tempa}\listbreak} - {}}% - \docsvlist{% - \ifthenelse,% ifthen - \org@ifthenelse,% babel - \HyOrg@ifthenelse,% hyperref - \NROrg@ifthenelse}% nameref - \iftoggle{blx@tempa} - {\blx@err@patch{'ifthen' package}} - {}} - {}% - \appto\TE@hook{\blx@TE@hook}% - \toggletrue{blx@tempa}% - \def\do#1{% - \patchcmd#1% - {\color@begingroup} - {\color@begingroup\toggletrue{blx@footnote}} - {\togglefalse{blx@tempa}\listbreak} - {}}% - \docsvlist{% - \@footnotetext,% latex - \H@@footnotetext,% hyperref - \V@@footnotetext,% fancyvrb - \scr@saved@footnotetext,% koma-script 3.x - \l@dold@footnotetext,% ledmac - \l@doldold@footnotetext,% ledmac - \@fntORI}% frenchle - \iftoggle{blx@tempa}% ams classes - {\patchcmd\@footnotetext - {\@makefntext} - {\toggletrue{blx@footnote}\@makefntext} - {\togglefalse{blx@tempa}} - {}} - {}% - \@ifclassloaded{memoir} - {\def\do#1{% - \patchcmd#1% - {\color@begingroup} - {\color@begingroup\toggletrue{blx@footnote}} - {} - {}}% - \docsvlist{% - \m@mold@footnotetext,% - \@plainfootnotetext,% - \@twocolfootnotetext,% - \@threecolfootnotetext,% - \@parafootnotetext}% - \def\do#1{% - \patchcmd#1% - {\color@begingroup\@makefntext} - {\color@begingroup\toggletrue{blx@footnote}\@makefntext} - {} - {}}% - \docsvlist{% - \@footnotetext,% patch twice - \@plainfootnotetext}} - {}% - \iftoggle{blx@tempa} - {\blx@warning@noline{% - Patching footnotes failed.\MessageBreak - Footnote detection will not work}} - {}% - \@ifpackageloaded{endnotes} - {\patchcmd\theendnotes - {\enoteformat} - {\toggletrue{blx@footnote}\enoteformat} - {} - {\blx@err@patch{'endnotes' package}}} - {}% - \@ifpackageloaded{bigfoot} - {\apptocmd\@makefnstartbox - {\toggletrue{blx@footnote}} - {} - {\blx@err@patch{'bigfoot' package}}} - {}% - \@ifpackageloaded{showkeys} - {\ifdef\SK@ - {\AtEveryBibitem{\SK@\SK@@label{\thefield{entrykey}}}% - \AtEveryLositem{\SK@\SK@@label{\thefield{entrykey}}}% - \ifundef\SK@cite % = 'notcite' disabled - {\AtEveryCitekey{\SK@\SK@@ref{\thefield{entrykey}}}} - {}} - {}} - {}% - \apptocmd\@floatboxreset - {\boolfalse{citetracker}% - \boolfalse{pagetracker}} - {} - {\blx@err@patch{floats}}% - \ifdef\TX@endtabularx % tabularx/memoir - {\patchcmd\TX@endtabularx - {\edef\TX@ckpt{\cl@@ckpt}} - {\edef\TX@ckpt{\cl@@ckpt\abx@resttrackers}% - \abx@savetrackers} - {} - {\blx@err@patch{'tabularx'}}% - \apptocmd\TX@endtabularx{\abx@cleartrackers} - {} - {\blx@err@patch{'tabularx'}}} - {}% - \@ifpackageloaded{csquotes} - {\@ifpackagelater{csquotes}{2009/05/30} - {} - {\blx@error - {Outdated 'csquotes' package} - {Upgrade to csquotes v4.4 (2009/05/30) or later.\MessageBreak - I found: '\csuse{ver@csquotes.sty}'}}% - \BlockquoteDisable{\let\blx@thecheckpunct\@gobble}% - \@ifpackagelater{csquotes}{2009/08/27} - {\appto\@blockquote@prehook{\abx@savetrackers}% - \appto\@blockquote@posthook{\abx@resttrackers\abx@cleartrackers}} - {}% - \@ifpackagelater{csquotes}{2010/06/09} - {} - {\newcommand*{\@quotereset}{}\newcount\@quotereset}} - {\@ifpackageloaded{babel} - {\blx@warning@noline{% - 'babel' detected but 'csquotes' missing.\MessageBreak - Loading 'csquotes' recommended}} - {}% - \newcommand*{\@quotelevel}{}% - \newcount\@quotelevel - \newcommand*{\@quotereset}{}% - \newcount\@quotereset - \newcommand*{\@setquotesfcodes}{}% - \let\@setquotesfcodes\relax - \newrobustcmd*{\initoquote}{\@quotelevel\@ne}% - \newrobustcmd*{\initiquote}{\@quotelevel\tw@}% - \newrobustcmd*{\textooquote}{``}% - \newrobustcmd*{\textcoquote}{''}% - \newrobustcmd*{\textoiquote}{`\relax}% block ligs - \newrobustcmd*{\textciquote}{'\relax}% block ligs - \newrobustcmd*{\enquote}{\@ifstar\blx@enquote@ii\blx@enquote}% - \def\blx@enquote{% - \ifnum\@quotelevel>\z@ - \expandafter\blx@enquote@ii - \else - \expandafter\blx@enquote@i - \fi}% - \long\def\blx@enquote@i#1{% - \begingroup\initoquote - \textooquote#1\textcoquote - \endgroup}% - \long\def\blx@enquote@ii#1{% - \begingroup\initiquote - \textoiquote#1\textciquote - \endgroup}% - \appto\blx@setsfcodes{% - \sfcode`\`=\z@ - \sfcode`\'=\z@}}% - \let\do\noexpand} - -\begingroup -\@makeother\# -% \relax: gobble newline -> titletoc.sty -\AtEndPreamble{% - \addtocontents{toc}{% - \boolfalse{citerequest}% - \boolfalse{citetracker}% - \boolfalse{pagetracker}% - \boolfalse{backtracker}\relax}% - \addtocontents{lof}{% - \boolfalse{citerequest}% - \boolfalse{citetracker}% - \boolfalse{pagetracker}% - \boolfalse{backtracker}\relax}% - \addtocontents{lot}{% - \boolfalse{citerequest}% - \boolfalse{citetracker}% - \boolfalse{pagetracker}% - \boolfalse{backtracker}\relax}% - \patchcmd\addtocontents - {\string\@writefile} - {\string\@writefile{#1}{\defcounter{refsection}{\the\c@refsection}\relax}% - \string\@writefile} - {} - {\blx@err@patch{\string\addtocontents}}} -\endgroup - -% trick hyperref into believing we're natbib -\let\NAT@parse\@empty -% trick showkeys into believing we're havard -\let\HAR@checkdef\@empty - -%% Allocation - -\providecommand{\@gobblefive}[5]{} - -\newcounter{listtotal} -\def\thelisttotal{\the\c@listtotal} -\newcounter{listcount} -\def\thelistcount{\the\c@listcount} -\newcounter{liststart} -\def\theliststart{\the\c@liststart} -\newcounter{liststop} -\def\theliststop{\the\c@liststop} -\newcounter{citecount} -\def\thecitecount{\the\c@citecount} -\newcounter{citetotal} -\def\thecitetotal{\the\c@citetotal} -\newcounter{multicitecount} -\def\themulticitecount{\the\c@multicitecount} -\newcounter{multicitetotal} -\def\themulticitetotal{\the\c@multicitetotal} -\newcounter{instcount} -\def\theinstcount{\the\c@instcount} -\newcounter{maxnames} -\def\themaxnames{\the\c@maxnames} -\newcounter{minnames} -\def\theminnames{\the\c@minnames} -\newcounter{maxitems} -\def\themaxitems{\the\c@maxitems} -\newcounter{minitems} -\def\theminitems{\the\c@minitems} -\newcounter{citecounter} -\def\thecitecount{\the\c@citecounter} -\newcounter{savedcitecounter} -\def\thecitecount{\the\c@savedcitecounter} -\newcounter{uniquelist} -\def\theuniquelist{\the\c@uniquelist} -\newcounter{uniquename} -\def\theuniquename{\the\c@uniquename} -\newcounter{refsection} -\def\therefsection{\the\c@refsection} -\newcounter{refsegment} -\def\therefsegment{\the\c@refsegment} -\newcounter{maxextrayear} -\def\themaxextrayear{\the\c@maxextrayear} -\newcounter{maxextraalpha} -\def\themaxextraalpha{\the\c@maxextraalpha} -\newcounter{abbrvpenalty} -\def\theabbrvpenalty{\the\c@abbrvpenalty} -\newcounter{highnamepenalty} -\def\thehighnamepenalty{\the\c@highnamepenalty} -\newcounter{lownamepenalty} -\def\thelownamepenalty{\the\c@lownamepenalty} -\newcounter{maxparens} -\def\themaxparens{\the\c@maxparens} -\newcounter{parenlevel} -\def\theparenlevel{\the\c@parenlevel} - -\newcount\blx@tempcnta -\newcount\blx@tempcntb -\newcount\blx@tempcntc -\newcount\blx@maxsection -\newcount\blx@maxsegment -\newcount\blx@notetype -\newcount\blx@parenlevel@text -\newcount\blx@parenlevel@foot - -\def\blx@backend{0} -\def\blx@uniquename{0} -\def\blx@uniquelist{0} -\def\blx@maxbibnames{0} -\def\blx@minbibnames{0} -\def\blx@maxcitenames{0} -\def\blx@mincitenames{0} -\def\blx@maxbibnames@type{\blx@maxbibnames} -\def\blx@minbibnames@type{\blx@minbibnames} -\def\blx@maxcitenames@type{\blx@maxcitenames} -\def\blx@mincitenames@type{\blx@mincitenames} -\def\blx@maxalphanames{0} -\def\blx@minalphanames{0} -\def\blx@maxitems{0} -\def\blx@minitems{0} -\def\blx@maxitems@type{\blx@maxitems} -\def\blx@minitems@type{\blx@minitems} - -\newlength{\labelnumberwidth} -\newlength{\labelalphawidth} -\newlength{\shorthandwidth} -\newlength{\biblabelsep} -\ifdef\bibitemsep % memoir - {} - {\newlength{\bibitemsep}} -\newlength{\bibnamesep} -\newlength{\bibinitsep} -\newlength{\bibparsep} -\newlength{\bibhang} - -\newbool{citetracker} -\newbool{pagetracker} -\newbool{backtracker} -\newbool{citerequest} -\booltrue{citerequest} - -\newtoggle{blx@tempa} -\newtoggle{blx@tempb} -\newtoggle{blx@runltx} -\newtoggle{blx@runbtx} -\newtoggle{blx@block} -\newtoggle{blx@unit} -\newtoggle{blx@skipentry} -\newtoggle{blx@insert} -\newtoggle{blx@lastins} -\newtoggle{blx@debug} -\newtoggle{blx@sortcase} -\newtoggle{blx@sortupper} -\newtoggle{blx@autolang} -\newtoggle{blx@clearlang} -\newtoggle{blx@defernumbers} -\newtoggle{blx@omitnumbers} -\newtoggle{blx@footnote} -\newtoggle{blx@labelalpha} -\newtoggle{blx@labelnumber} -\newtoggle{blx@labelyear} -\newtoggle{blx@natbib} -\newtoggle{blx@mcite} -\newtoggle{blx@loadfiles} -\newtoggle{blx@singletitle} -\newtoggle{blx@terseinits}% BibTeX only -\newtoggle{blx@firstinits} -\newtoggle{blx@useauthor} -\newtoggle{blx@useeditor} -\newtoggle{blx@usetranslator} -\newtoggle{blx@useprefix} -\newtoggle{blx@addset} -\newtoggle{blx@setonly} -\newtoggle{blx@dataonly} -\newtoggle{blx@skipbib} -\newtoggle{blx@skiplos} -\newtoggle{blx@skiplab} -\newtoggle{blx@citation} -\newtoggle{blx@bibliography} -\newtoggle{blx@reencode} -\newtoggle{blx@citeindex} -\newtoggle{blx@bibindex} - -\newread\blx@auxin -\newwrite\blx@auxout - -\def\blx@onlypreamble#1{% - \gappto\blx@dopreamblecmds{\do#1}} - -\def\blx@dopreamblecmds{% - \do\blx@dopreamblecmds - \do\blx@onlypreamble} - -%% Initialization - -\def\blx@blxinit{% - \let\blx@blxinit\relax - \blx@initunit} - -\edef\blx@auxfile@bibtex{\jobname} -\let\blx@auxout@bibtex\@mainaux -\newcommand*{\labelalphaothers}{+} -\newcommand*{\sortalphaothers}{\labelalphaothers} -\newcommand*{\blxauxsuffix}{-blx} - -\begingroup -\def\blx@tempa#1"#2{% - #1\ifx#2\@empty\else - \expandafter\blx@tempa - \fi#2} -\edef\blx@ctrlfile@bibtex{% - \noexpand\blx@tempa - \expandafter\blx@tempa\jobname"\@empty - \space\noexpand\@empty} -\def\blx@tempa#1 #2{% - #1\ifx#2\@empty\else - \string_\expandafter\blx@tempa - \fi#2} -\xdef\blx@ctrlfile@bibtex{\blx@ctrlfile@bibtex} -\endgroup - -\def\blx@secinit{% - \ifcsundef{blx@sort@\the\c@refsection} - {\global\cslet{blx@sort@\the\c@refsection}\@empty} - {}% - \ifcsundef{blx@sbib@\the\c@refsection} - {\global\cslet{blx@sbib@\the\c@refsection}\@empty} - {}% - \ifcsundef{blx@bsee@\the\c@refsection} - {\global\cslet{blx@bsee@\the\c@refsection}\@empty} - {}% - \ifcsundef{blx@fsee@\the\c@refsection} - {\global\cslet{blx@fsee@\the\c@refsection}\@empty} - {}% - \ifcsundef{blx@losh@\the\c@refsection} - {\global\cslet{blx@losh@\the\c@refsection}\@empty} - {}% - \blx@ibidreset@force - \blx@idemreset@force - \blx@opcitreset@force - \blx@loccitreset@force - \ifcsundef{blx@segm@\the\c@refsection @\the\c@refsegment} - {\global\cslet{blx@segm@\the\c@refsection @\the\c@refsegment}\@empty} - {}} - -%% Auxiliary commands - -\protected\def\blx@safe@actives{% - \let\blx@if@safe@actives\if@safe@actives - \let\if@safe@actives\iftrue} - -\protected\def\blx@rest@actives{% - \let\if@safe@actives\blx@if@safe@actives} - -\protected\def\blx@regimc#1{% - \xappto\blx@blxinit{% - \let\noexpand#1\expandafter\noexpand\csname - blx@imc@\expandafter\@gobble\string#1\endcsname}} - -\protected\def\blx@regimcs#1{\blx@regimcs@i#1&} -\def\blx@regimcs@i#1{% - \ifx#1&\else - \blx@regimc#1% - \expandafter\blx@regimcs@i - \fi} - -% {<field>} => \do{<item1>}\do{<item2>}... - -\def\blx@imc@docsvfield#1{% - \blx@imc@iffieldundef{#1} - {} - {\expandafter\expandafter\expandafter\docsvlist - \expandafter\expandafter\expandafter{% - \csname abx@field@#1\endcsname}}} - -% {<handler>}{<field>} => <handler>{<item1>}<handler>{<item2>}... - -\def\blx@imc@forcsvfield#1#2{% - \blx@imc@iffieldundef{#2} - {} - {\expandafter\expandafter\expandafter\blx@imc@forcsvfield@i - \expandafter\expandafter\expandafter{% - \csname abx@field@#2\endcsname}{#1}}} - -\def\blx@imc@forcsvfield@i#1#2{\forcsvlist{#2}{#1}} - -\blx@regimcs{\docsvfield \forcsvfield} - -% {<list>|<listmacro>} - -\protected\long\def\blx@listloop#1{% - \expandafter\blx@listloop@i#1|&} -\long\def\blx@listloop@i#1|{% - \ifblank{#1} - {\blx@break} - {\blx@do{#1}\blx@listloop@i}} - -\long\def\blx@break#1&{% - \blx@done - \undef\blx@do - \undef\blx@done} - -% {<listmacro>}{<listcsname>} => matches in <listmacro> - -\protected\def\blx@filter#1#2{% - \def\do##1{% - \ifinlistcs{##1}{#2} - {\listadd#1{##1}} - {}}% - \blx@runfilter#1} - -% {<listmacro>}{<listcsname>} => neg. matches in <listmacro> - -\protected\def\blx@notfilter#1#2{% - \def\do##1{% - \ifinlistcs{##1}{#2} - {} - {\listadd#1{##1}}}% - \blx@runfilter#1} - -\def\blx@runfilter#1{% - \begingroup\edef#1{\endgroup - \unexpanded{\let#1\@empty\dolistloop}{#1}}% - #1\let\do\noexpand} - -% {<code>}{<string>} => <code>{<string>} - -\protected\def\blx@xsanitizeafter#1#2{% - \begingroup - \abx@hook@xsanitize - \def\blx@tempa{\endgroup#1}% - \edef\blx@tempb{#2}% - \expandafter\blx@tempa - \expandafter{\detokenize\expandafter{\blx@tempb}}} - -\def\abx@hook@xsanitize{% - \blx@safe@actives - \let\protect\string} - -% {<code>}{<string>} => <code>{<string>} - -\begingroup -\catcode`\<=\active -\catcode`\>=\active -\catcode`\&=\active -\catcode`\"=\active -\catcode`\'=\active -\protected\gdef\blx@xmlsanitizeafter#1#2{% - \begingroup - \abx@hook@xsanitize - \def\blx@tempa{\endgroup#1}% - \edef\blx@tempb{#2}% - \let\do\@makeother - \dospecials - \catcode`\<=\active - \catcode`\>=\active - \catcode`\&=\active - \catcode`\"=\active - \catcode`\'=\active - \edef<{\string<\string;}% - \edef>{\string>\string;}% - \edef&{\string&\string;}% - \edef"{\string"\string;}% - \edef'{\string&apos\string;}% - \endlinechar\m@ne - \everyeof{\noexpand}% - \edef\blx@tempb{\scantokens\expandafter{\blx@tempb}}% - \expandafter\blx@tempa - \expandafter{\detokenize\expandafter{\blx@tempb}}} -\endgroup - -% {<file>}{<message>}{<preload>}{<postload>}{<success>}{<failure>} - -\protected\long\def\blx@inputonce#1#2#3#4#5#6{% - \ifcsundef{blx@file@#1} - {\blx@info@noline{Trying to load #2..}% - \IfFileExists{#1} - {\blx@info@noline{... file '#1' found}% - \listxadd\blx@list@req@stat{#1}% - #3\@@input\@filef@und#4#5} - {\blx@info@noline{... file '#1' not found}#6}% - \global\csdef{blx@file@#1}{}% - \@addtofilelist{#1}} - {#5}} - -% {<write>}{<precode>}{<string>} - -\protected\def\blx@auxwrite#1#2#3{% - \if@filesw - \begingroup - \blx@safe@actives - \let\protect\string - #2% - \immediate\write#1{#3}% - \endgroup - \fi} - -\def\blx@auxinit@bibtex#1{% - \blx@auxwrite\blx@auxout@bibtex - {\def\do##1{,\blx@stripbib{##1}}} - {\ifx\blx@auxout@bibtex\@mainaux - \else - \blx@msg@aux - \fi - \string\bibstyle{biblatex}\blx@nl - \string\bibdata{% - \blx@ctrlfile@bibtex\blxauxsuffix - \ifx#1\@empty - \else - \dolistloop#1% - \fi}\blx@nl - \string\citation{biblatex-control}}} - -% {<file>}{<signature>}{<true>}{<false>} - -\def\blx@ifsigned#1#2{% - \begingroup - \let\blx@tempa\@firstoftwo - \edef\blx@tempb{\csuse{blx@sig@#2}}% - \edef\blx@tempb{\detokenize\expandafter{\blx@tempb}}% - \openin\blx@auxin #1.#2\relax - \ifeof\blx@auxin - \else - \endlinechar\m@ne - \readline\blx@auxin to \blx@tempc - \ifeof\blx@auxin - \else - \ifx\blx@tempb\blx@tempc - \readline\blx@auxin to \blx@tempc - \edef\blx@tempb{\csuse{blx@ver@#2}}% - \edef\blx@tempb{\detokenize\expandafter{\blx@tempb}}% - \ifx\blx@tempb\blx@tempc - \else - \blx@warning@noline{% - File '#1.#2' created by wrong version} - \fi - \else - \blx@error - {File '#1.#2' not created by biblatex} - {This file was apparently not created by biblatex. - Rename it or\MessageBreak move it to a location were - TeX will not find it. If this error\MessageBreak - persists, consider redefining \string\blxauxsuffix.% - See the biblatex\MessageBreak manual for details}% - \let\blx@tempa\@secondoftwo - \fi - \fi - \fi - \closein\blx@auxin - \expandafter\endgroup\blx@tempa} - -\def\blx@sig@bib{@Comment{$ biblatex control file $}} -\edef\blx@ver@bib{@Comment{$ biblatex version \blx@bblversion\space $}} -\edef\blx@sig@aux{\@percentchar\space $ biblatex auxiliary file $} -\edef\blx@ver@aux{\@percentchar\space$ biblatex version \blx@bblversion\space $} -\let\blx@sig@bbl\blx@sig@aux -\let\blx@ver@bbl\blx@ver@aux -\edef\blx@sig@bcf{\detokenize{<?xml version="1.0" encoding="UTF-8"?>}} -\edef\blx@ver@bcf{% - \detokenize{<bcf:controlfile version="}\blx@bblversion - \detokenize{" xmlns:bcf="https://sourceforge.net/projects/biblatex">}} - -\edef\blx@msg@aux{% - \blx@sig@aux\blx@nl - \blx@ver@aux\blx@nl - \@percentchar\space Do not modify this file!\blx@nl - \@percentchar\blx@nl - \@percentchar\space This is an auxiliary file - used by the 'biblatex' package.\blx@nl - \@percentchar\space This file may safely be deleted. - It will be recreated as\blx@nl - \@percentchar\space required.\blx@nl - \@percentchar\blx@nl\string\relax\blx@nl} -\edef\blx@msg@bib{% - \blx@sig@bib\blx@nl - \blx@ver@bib\blx@nl - Do not modify this file!\blx@nl\blx@nl - This is an auxiliary file used - by the 'biblatex' package.\blx@nl - This file may safely be deleted. - It will be recreated as\blx@nl - required.\blx@nl\blx@nl} - -% {<true>}{<false>} - -\newrobustcmd*{\lbx@ifutfinput}{\ifboolexpr{% - test {\ifdefstring\inputencodingname{utf8}} - or - test {\ifdefstring\inputencodingname{utf8x}} - or - test {\ifdefstring\inputencodingname{lutf8}} - or - ( test {\ifundef\inputencodingname} - and - ( not test {\ifundef\XeTeXrevision} - or - not test {\ifundef\luatexversion} - ) - ) -}} - -%% User feedback - -\protected\def\blx@error#1#2{% - \begingroup - \blx@safe@actives - \PackageError{biblatex}{#1}{#2.}% - \endgroup} - -\protected\def\blx@warning#1{% - \begingroup - \blx@safe@actives - \PackageWarning{biblatex}{#1\blx@noline}% - \endgroup} -\protected\def\blx@warning@noline#1{% - \begingroup - \blx@safe@actives - \PackageWarning{biblatex}{#1\@gobble}% - \endgroup} -\protected\def\blx@warning@entry#1{% - \ifdef\abx@field@entrykey - {\blx@warning{#1\MessageBreak at entry '\abx@field@entrykey'}} - {\blx@warning{#1}}} - -\protected\def\blx@info#1{% - \begingroup - \blx@safe@actives - \PackageInfo{biblatex}{#1\blx@noline}% - \endgroup} -\def\blx@info@noline#1{% - \begingroup - \blx@safe@actives - \PackageInfo{biblatex}{#1\@gobble}% - \endgroup} - -\let\blx@noline\@gobble -\AtEndOfPackage{\let\blx@noline\@empty} -\def\blx@imc@BibliographyWarning{\blx@warning@entry} -\blx@regimc\BibliographyWarning - -\protected\def\abx@missing#1{% - \mbox{\reset@font\bfseries#1}} - -\def\blx@err@patch#1{% - \blx@error - {Patching #1 failed} - {This is an internal issue typically caused by a - conflict\MessageBreak between biblatex and some - other package. Modifying\MessageBreak the package - loading order may fix the problem}} - -\def\blx@err@nolang#1{% - \blx@error - {Language '#1' not found} - {The localization module for '#1' could not be found}} - -\def\blx@err@invarg#1#2{% - \blx@error - {Argument '#1' invalid} - {\ifblank{#2} - {The argument you have supplied is invalid.\MessageBreak - See the biblatex manual for details} - {#2}}} - -\def\blx@err@invopt#1#2{% - \blx@error - {Option '#1' invalid} - {\ifblank{#2} - {The option you have supplied is invalid.\MessageBreak - See the biblatex manual for valid option keys and - possible values} - {#2}}} - -\def\blx@err@confopt#1#2{% - \blx@error - {Conflicting options\ifblank{#1}{}{ (#1)}} - {\ifblank{#2} - {The option you have supplied conflicts with another one.\MessageBreak - See the biblatex manual for valid option keys and possible values} - {#2}}} - -\def\blx@err@optdef#1{% - \blx@error - {Conflicting options} - {The option '#1' is already defined}} - -\def\blx@err@nodocdiv#1{% - \blx@error - {\@backslashchar#1 not provided by class} - {The document class does not seems to support #1s}} - -\def\blx@err@nosec#1{% - \blx@error - {Section '#1' not found} - {The reference section '#1' could not be found}} - -\def\blx@err@secfirst{% - \blx@error - {'section' not first filter} - {When passing multiple filter options, - the 'section' filter must be given first}} - -\protected\def\blx@err@nestcite{% - \blx@error - {Nested citation command} - {Citation commands may not be nested}} - -\def\blx@err@nestenv#1{% - \blx@error - {Nested '#1' environment} - {This environment may not be nested}} - -\protected\def\blx@err@citecmd#1{% - \begingroup - \escapechar\m@ne - \blx@error - {Command '\@backslashchar\string#1' undefined} - {The citation command '\@backslashchar\string#1' - has not been defined\MessageBreak by the - selected citation style}% - \endgroup} - -\def\blx@err@endnote#1{% - \blx@error - {Missing or incomplete endnote support} - {There does not seem to be endnote support available\MessageBreak - or the available support is incomplete.\MessageBreak - If you continue, I will fall back to '\string#1'}% - #1} - -\def\blx@err@matchparen#1{% - \blx@error - {Unbalanced parentheses or brackets} - {\iftoggle{blx@footnote}{#1 in foot or endnote}{#1}.\MessageBreak - This error is triggered if \string\bibopenparen\space and - \string\bibcloseparen\MessageBreak or - \string\bibopenbracket\space and \string\bibclosebracket\space - are unbalanced\MessageBreak or mismatched}} - -\def\blx@err@nestparen#1{% - \blx@error - {Too deeply nested parentheses or brackets} - {#1 nested too deeply% - \iftoggle{blx@footnote}{\space in foot or endnote}{}.\MessageBreak - This error may also be triggered if \string\mkbibparens\MessageBreak - or \string\mkbibbrackets\space are nested too deeply}} - -\def\blx@err@filter{% - \blx@error - {Invalid filter expression} - {The filter expression you have supplied is invalid.\MessageBreak - See the biblatex manual for details}} - -\def\blx@warn@nohyph#1{% - \blx@warning{No hyphenation patterns for '#1'}} - -\protected\def\blx@warn@citecmd#1#2{% - \blx@warning{% - '\string#1' not defined by citation style.\MessageBreak - Falling back to '\string#2'}% - #2} - -\protected\def\blx@warn@nostring#1{% - \blx@warning@entry{Bibliography string '#1' undefined}% - \abx@missing{#1}} - -\def\blx@warn@conflopt#1{% - \blx@warning{Conflicting options.\MessageBreak#1}} - -\def\blx@warn@depropt#1{% - \blx@warning{Deprecated option.\MessageBreak Ignoring '#1'}} - -\def\blx@warn@bibempty{% - \@latex@warning{Empty bibliography}} - -\def\blx@warn@losempty{% - \@latex@warning{Empty list of shorthands}} - -\def\blx@inf@refsec{% - \blx@info{Reference section=\the\c@refsection}}% - -\def\blx@inf@refseg{% - \ifnum\c@refsection=\z@ - \blx@info{Reference segment=\the\c@refsegment}% - \else - \blx@info{% - Reference section/segment=% - \the\c@refsection/\the\c@refsegment}% - \fi} - -\def\blx@inf@creset{% - \blx@info{Resetting trackers}}% - -\def\blx@msg@cundef#1{% - Citation '#1' undefined} -\def\blx@msg@cundefon#1{% - Citation '#1' on page \the\c@page\space undefined} - -\newrobustcmd*{\RequireBiber}[1][2]{% - \ifnumgreater{#1}\blx@reqbiber - {\numgdef\blx@reqbiber{#1}} - {}} -\@onlypreamble\RequireBiber -\let\blx@reqbiber\z@ - -\def\blx@checkbackend#1{% - \ifnumequal\blx@backend\blx@backend@biber - {} - {\ifcase\blx@reqbiber - \or - \blx@info@noline{% - backend=biber recommended by #1}% - \or - \blx@warning@noline{% - backend=biber required by #1.\MessageBreak - Some features may not work properly}% - \else - \blx@error - {backend=biber required by #1} - {The selected style or one of the .bib files - requires backend=biber.\MessageBreak It will - not work at all with any other backend}% - \fi}} - -% \blx@list@active active aux files (basename) -% [internal list] -% \blx@list@inactive inactive aux files (basename) -% [internal list] -% \blx@list@bibfiles@<auxfile> aux file -> bib file mapping (refsections) -% aux file (basename) -> bib files (full) -% [internal list] - -\let\blx@list@active\@empty -\let\blx@list@inactive\@empty -\listeadd\blx@list@inactive{\jobname} - -\protected\def\blx@regbibfiles#1#2{% - \forlistloop{\blx@regbibfile{#1}}{#2}} - -\def\blx@regbibfile#1#2{% - \ifcsundef{blx@res@loca@#2} - {\blx@regbibfile@i{#1}{#2}} - {\ifcsstring{blx@res@loca@#2}{local} - {\blx@regbibfile@i{#1}{#2}} - {}}} - -\def\blx@regbibfile@i#1#2{% - \ifinlistcs{#2}{blx@list@bibfiles@#1} - {} - {\listcsxadd{blx@list@bibfiles@#1}{#2}}} - -\def\blx@check@logreq{% - \begingroup - \ifnum\blx@backend=\blx@backend@biber - \ltxrequest{biblatex}{{\iftoggle{blx@runltx}{1}{0}}}{% - \provides[type=dynamic]{ - \file{\jobname.bcf} - } - \requires[type=dynamic]{ - \file{\jobname.bbl} - } - \ifdef\blx@list@req@edit - {\requires[type=editable]{ - \forlistloop\file\blx@list@req@edit - }} - {} - \ifdef\blx@list@req@stat - {\requires[type=static]{ - \forlistloop\file\blx@list@req@stat - }} - {} - }% - \logrequest[package=biblatex,priority=5,active={{\iftoggle{blx@runbtx}{1}{0}}}]{% - \generic{biber} - \cmdline{ - \binary{biber} - \infile{\jobname} - } - \input{ - \file{\jobname.bcf} - } - \output{ - \file{\jobname.bbl} - } - \provides[type=dynamic]{ - \file{\jobname.bbl} - } - \requires[type=dynamic]{ - \file{\jobname.bcf} - } - \ifcsdef{blx@list@bibfiles@\jobname} - {\requires[type=editable]{ - \def\do{\file} - \dolistcsloop{blx@list@bibfiles@\jobname} - }} - {} - }% - \else - \ltxrequest{biblatex}{{\iftoggle{blx@runltx}{1}{0}}}{% - \provides[type=dynamic]{ - \def\do##1{\file{##1.aux}} - \dolistloop\blx@list@inactive - \file{\blx@ctrlfile@bibtex\blxauxsuffix.bib} - } - \requires[type=dynamic]{ - \def\do##1{\file{##1.bbl}} - \dolistloop\blx@list@inactive - } - \ifdef\blx@list@req@edit - {\requires[type=editable]{ - \forlistloop\file\blx@list@req@edit - }} - {} - \ifdef\blx@list@req@stat - {\requires[type=static]{ - \forlistloop\file\blx@list@req@stat - }} - {} - }% - \def\do##1{% - \ifinlist{##1}{\blx@list@active} - {\blx@logreq@bibtex{1}{##1}} - {\blx@logreq@bibtex{0}{##1}}}% - \dolistloop\blx@list@inactive - \fi - \endgroup} - -\def\blx@logreq@bibtex#1#2{% - \logrequest[package=biblatex,priority=5,active=#1]{% - \generic{bibtex} - \cmdline{% - \ifcase\blx@backend - \binary{bibtex} - \option{-min-crossrefs \blx@mincrossrefs} - \or - \binary{bibtex8} - \option{--wolfgang} - \option{--min\string_crossrefs \blx@mincrossrefs} - \ifdef\blx@csfencoding - {\option{--csfile \blx@csfencoding.csf}} - {}% - \or - \binary{bibtexu} - \option{--wolfgang} - \option{--min\string_crossrefs \blx@mincrossrefs} - \fi - \infile{#2} - } - \input{ - \file{#2.aux} - } - \output{ - \file{#2.bbl} - } - \provides[type=dynamic]{ - \file{#2.bbl} - } - \requires[type=dynamic]{ - \file{#2.aux} - \file{\blx@ctrlfile@bibtex\blxauxsuffix.bib} - } - \requires[type=editable]{ - \ifcsdef{blx@list@bibfiles@#2} - {\def\do{\file} - \dolistcsloop{blx@list@bibfiles@#2}} - {} - } - \requires[type=static]{ - \file{biblatex.bst} - \ifnum\blx@backend=\blx@backend@bibtexe - \ifdef\blx@csfencoding - {\file{\blx@csfencoding.csf}} - {}% - \fi - } - }% -} - -\def\blx@logreq@active#1{% - \ifnum\blx@backend=\blx@backend@biber - \else - \xifinlist{\blx@auxfile@bibtex}{\blx@list@active} - {} - {\listxadd\blx@list@active{\blx@auxfile@bibtex}}% - \fi - \ifblank{#1} - {} - {\@latex@warning{#1}}% - \blx@rerun@latex - \blx@rerun@bibtex} - -\def\blx@logreq@inactive{% - \ifnum\blx@backend=\blx@backend@biber - \else - \xifinlist{\blx@auxfile@bibtex}{\blx@list@inactive} - {} - {\listxadd\blx@list@inactive{\blx@auxfile@bibtex}}% - \fi} - -\def\blx@rerun@latex{% - \G@refundefinedtrue - \global\toggletrue{blx@runltx}% - \global\let\blx@rerun@latex\relax} - -\def\blx@rerun@bibtex{% - \global\toggletrue{blx@runbtx}% - \global\let\blx@rerun@bibtex\relax} - -\let\blx@checksum@old\@empty -\let\blx@checksum@new\@empty -\let\blx@pagesum@old\@empty -\let\blx@pagesum@new\@empty - -\def\blx@checksum#1#2#3{% - \begingroup - \blx@tempcnta\the\numexpr0#2*0#3\relax - \blx@tempcntb\blx@tempcnta - \divide\blx@tempcntb10 - \multiply\blx@tempcntb10 - \advance\blx@tempcnta-\blx@tempcntb - \xdef#1{#1\the\blx@tempcnta}% - \endgroup} - -\def\blx@addchecksum{\blx@checksum\blx@checksum@old} -\def\blx@addpagesum{\blx@checksum\blx@pagesum@old} -\AtEndDocument{% - \def\blx@addchecksum{\blx@checksum\blx@checksum@new}% - \def\blx@addpagesum{\blx@checksum\blx@pagesum@new}} - -\protected\def\blx@check@rerun{% - \begingroup - \blx@tempcnta\z@ - \iftoggle{blx@runltx} - {\blx@tempcnta\@ne} - {\ifx\blx@checksum@old\blx@checksum@new - \ifx\blx@pagesum@old\blx@pagesum@new - \else - \blx@tempcnta\@ne - \fi - \else - \blx@tempcnta\@ne - \fi}% - \iftoggle{blx@runbtx} - {\advance\blx@tempcnta\tw@} - {}% - \ifcase\blx@tempcnta - \or - \blx@rerun@latex - \blx@warning@noline{% - Please rerun LaTeX% - \ifx\blx@pagesum@old\blx@pagesum@new\else - .\MessageBreak Page breaks have changed% - \fi}% - \else - \blx@rerun@latex - \blx@warn@auxlist - \fi - \endgroup} - -\def\blx@warn@auxlist{% - \begingroup - \ifnum\blx@backend=\blx@backend@biber - \edef\blx@tempa{% - Please (re)run Biber on the file:\MessageBreak - \jobname}% - \else - \edef\blx@tempa{Please (re)run BibTeX on the file(s):}% - \def\do##1{\appto\blx@tempa{\MessageBreak##1}}% - \dolistloop\blx@list@active - \fi - \blx@warning@noline{% - \blx@tempa\MessageBreak - and rerun LaTeX afterwards}% - \endgroup} - -\AfterEndDocument{% - \blx@check@rerun - \blx@check@logreq} - -%% Punctuation and capitalization - -% 1001 apostrophe (\printnames only) -% 1002 abbreviation period (dot) -% 1003/1250 comma -% 1004/1500 semicolon -% 1005/2000 colon -% 1006/3000 period -% 1007/3001 exclamation mark -% 1008/3002 question mark -% 1009 suppress punctuation -% 1010 new paragaph - -\mathchardef\blx@sf@apo=1001 -\mathchardef\blx@sf@dot=1002 -\mathchardef\blx@sf@comma=1003 -\mathchardef\blx@sf@semicolon=1004 -\mathchardef\blx@sf@colon=1005 -\mathchardef\blx@sf@period=1006 -\mathchardef\blx@sf@exclam=1007 -\mathchardef\blx@sf@question=1008 -\mathchardef\blx@sf@nopunct=1009 -\mathchardef\blx@sf@par=1010 -\mathchardef\blx@sf@threshold@low=1002 -\mathchardef\blx@sf@threshold@high=1009 - -\csdef{blx@sf@1250}{\the\blx@sf@comma} -\csdef{blx@sf@1500}{\the\blx@sf@semicolon} -\csdef{blx@sf@2000}{\the\blx@sf@colon} -\csdef{blx@sf@3000}{\the\blx@sf@period} -\csdef{blx@sf@3001}{\the\blx@sf@exclam} -\csdef{blx@sf@3002}{\the\blx@sf@question} - -\csdef{blx@pm@,}{comma} -\csdef{blx@pm@;}{semicolon} -\csdef{blx@pm@:}{colon} -\csdef{blx@pm@.}{period} -\csdef{blx@pm@!}{exclam} -\csdef{blx@pm@?}{question} - -\def\blx@setsfcodes{% - \let\blx@setsfcodes\relax - \let\frenchspacing\blx@setfrcodes - \let\nonfrenchspacing\blx@setencodes - \ifnum\sfcode`\.>2000 - \blx@setencodes - \else - \blx@setfrcodes - \fi - \@setquotesfcodes - \sfcode`\(=\z@ - \sfcode`\)=\z@ - \sfcode`\[=\z@ - \sfcode`\]=\z@ - \sfcode`\<=\z@ - \sfcode`\>=\z@} - -\def\blx@setfrcodes{% - \ifnum\sfcode`\A=\@m - \else - \blx@setazcodes - \fi - \sfcode`\,=\blx@sf@comma - \sfcode`\;=\blx@sf@semicolon - \sfcode`\:=\blx@sf@colon - \sfcode`\.=\blx@sf@period - \sfcode`\!=\blx@sf@exclam - \sfcode`\?=\blx@sf@question -} - -\def\blx@setencodes{% - \sfcode`\,=1250 - \sfcode`\;=1500 - \sfcode`\:=2000 - \sfcode`\.=3000 - \sfcode`\!=3001 - \sfcode`\?=3002 -} - -\def\blx@namecodes{% - \ifnum\sfcode`\A=\@m - \else - \blx@setazcodes - \fi - \sfcode`\'=\blx@sf@apo -} - -\begingroup -\let\blx@setazcodes\@empty -\def\blx@tempa{% - \xdef\blx@setazcodes{% - \blx@setazcodes - \sfcode\the\blx@tempcnta=\@m} - \ifnum\blx@tempcnta<\blx@tempcntb - \advance\blx@tempcnta\@ne - \expandafter\blx@tempa - \fi} -\blx@tempcnta`\A -\blx@tempcntb`\Z -\blx@tempa -\ifnum\inputlineno=\m@ne\else - \blx@tempcnta"80 - \blx@tempcntb"9C - \blx@tempa - \blx@tempcnta"C0 - \blx@tempcntb"DF - \blx@tempa -\fi -\endgroup - -\def\blx@spacefactor{% - \ifhmode - \ifcsundef{blx@sf@\the\spacefactor} - {\the\spacefactor} - {\csname blx@sf@\the\spacefactor\endcsname}% - \else - \the\blx@sf@par - \fi} - -\protected\def\blx@leavevmode{% - \ifhmode - \else - \leavevmode\spacefactor\blx@sf@par - \fi} - -\protected\def\blx@leavevmode@cite{% - \ifhmode - \ifnum\spacefactor=\blx@sf@par - \else - \spacefactor\@m - \fi - \else - \leavevmode - \fi} - -\protected\def\blx@imc@setpunctfont#1{% - \blx@ifpuncthook - {\gdef\abx@puncthook{% - \ifdim\lastkern>\z@\unkern\fi - \blx@imc@resetpunctfont#1}} - {}} -\protected\def\blx@imc@resetpunctfont{% - \blx@ifpuncthook - {\global\let\abx@puncthook\@firstofone} - {}} - -\protected\def\blx@setpostpunct#1{% - \blx@ifuspunct - {\global\let\blx@postpunct\blx@dopostpunct - \ifdef\blx@thepostpunct - {\gappto\blx@thepostpunct{#1}} - {\gdef\blx@thepostpunct{#1}}} - {}} - -\def\blx@dopostpunct{% - \blx@thepostpunct - \global\let\blx@postpunct\@empty - \global\undef\blx@thepostpunct} - -\protected\def\blx@postpunct@agroup{% - \aftergroup\blx@postpunct - \let\blx@postpunct@agroup\@empty} - -% {<characters>} - -\newrobustcmd*{\DeclareCapitalPunctuation}[1]{% - \cslet{blx@cap@\the\blx@sf@par}\@empty - \csundef{blx@cap@\the\blx@sf@comma}% - \csundef{blx@cap@\the\blx@sf@semicolon}% - \csundef{blx@cap@\the\blx@sf@colon}% - \csundef{blx@cap@\the\blx@sf@period}% - \csundef{blx@cap@\the\blx@sf@exclam}% - \csundef{blx@cap@\the\blx@sf@question}% - \ifblank{#1} - {} - {\expandafter\blx@defcapstring\detokenize{#1}\relax}} - -\def\blx@defcapstring#1{% - \ifx#1\relax - \else - \begingroup - \blx@setfrcodes - \ifcsdef{blx@pm@#1} - {\expandafter\endgroup - \expandafter\let - \csname blx@cap@\the\sfcode`#1\endcsname\@empty} - {\blx@warning{Ignoring invalid punctuation mark '#1'}% - \endgroup}% - \expandafter\blx@defcapstring - \fi} - -% {<characters>} - -\newrobustcmd*{\DeclareQuotePunctuation}[1]{% - \csdef{blx@qp@comma}{\blx@postpunct}% - \csdef{blx@qp@semicolon}{\blx@postpunct}% - \csdef{blx@qp@colon}{\blx@postpunct}% - \csdef{blx@qp@period}{\blx@postpunct}% - \csdef{blx@qp@exclam}{\blx@postpunct}% - \csdef{blx@qp@question}{\blx@postpunct}% - \cslet{blx@pq@comma}\@empty - \cslet{blx@pq@semicolon}\@empty - \cslet{blx@pq@colon}\@empty - \cslet{blx@pq@period}\@empty - \cslet{blx@pq@exclam}\@empty - \cslet{blx@pq@question}\@empty - \let\blx@quotepunct\@empty - \ifblank{#1} - {\let\blx@ifuspunct\@secondoftwo} - {\let\blx@ifuspunct\@firstoftwo - \expandafter\blx@defquotepunct\detokenize{#1}&}} - -\def\blx@defquotepunct#1{% - \ifx\relax - \else - \ifcsdef{blx@pm@#1} - {\appto\blx@quotepunct{#1}% - \cslet{blx@qp@\csuse{blx@pm@#1}}\@empty - \csdef{blx@pq@\csuse{blx@pm@#1}}{\blx@postpunct}} - {\blx@warning{Ignoring invalid punctuation mark '#1'}}% - \expandafter\blx@defquotepunct - \fi} - -% {<mark>}{<characters>} - -\newrobustcmd*{\DeclarePunctuationPairs}[2]{% - \ifcsdef{blx@sf@\detokenize{#1}} - {\ifnum\csname blx@sf@\detokenize{#1}\endcsname>\blx@sf@apo - \ifnum\csname blx@sf@\detokenize{#1}\endcsname<\blx@sf@nopunct - \expandafter\blx@defpunctpairs - \expandafter{\the\csname blx@sf@\detokenize{#1}\endcsname}{#2}% - \else - \blx@err@invarg{\detokenize{#1}{}}% - \fi - \else - \blx@err@invarg{\detokenize{#1}{}}% - \fi} - {\blx@err@invarg{\detokenize{#1}{}}}} - -\def\blx@defpunctpairs#1#2{% - \blx@undefpair{#1}{\the\blx@sf@dot}% - \blx@undefpair{#1}{\the\blx@sf@comma}% - \blx@undefpair{#1}{\the\blx@sf@semicolon}% - \blx@undefpair{#1}{\the\blx@sf@colon}% - \blx@undefpair{#1}{\the\blx@sf@period}% - \blx@undefpair{#1}{\the\blx@sf@exclam}% - \blx@undefpair{#1}{\the\blx@sf@question}% - \ifblank{#2} - {} - {\begingroup - \def\blx@tempa{#1}% - \let\blx@tempb\@empty - \blx@setfrcodes - \sfcode`\*=\blx@sf@dot - \expandafter\blx@defpair\detokenize{#2}&% - \expandafter\endgroup\blx@tempb}} - -\def\blx@defpair#1{% - \ifx% - \else - \ifnum\the\sfcode`#1>\blx@sf@apo - \ifnum\the\sfcode`#1<\blx@sf@nopunct - \eappto\blx@tempb{% - \cslet{blx@pp@\blx@tempa @\the\sfcode`#1}\noexpand\@empty}% - \else - \blx@err@invarg{#1}{}% - \fi - \else - \blx@err@invarg{#1}{}% - \fi - \expandafter\blx@defpair - \fi} - -\def\blx@undefpair#1#2{% - \ifcsdef{blx@pp@#1@#2} - {\csundef{blx@pp@#1@#2}} - {}} - -\protected\def\blx@resetpunct{% - \DeclareCapitalPunctuation{.!?}% - \DeclarePunctuationPairs{dot}{}% - \DeclarePunctuationPairs{comma}{*!?}% - \DeclarePunctuationPairs{semicolon}{*!?}% - \DeclarePunctuationPairs{colon}{*!?}% - \DeclarePunctuationPairs{period}{}% - \DeclarePunctuationPairs{exclam}{*}% - \DeclarePunctuationPairs{question}{*}% - \DeclareQuotePunctuation{}% - \def\abx@dot{\ifdim\lastkern>\z@\unkern\fi.\spacefactor\blx@sf@dot}% - \def\abx@comma{\ifdim\lastkern>\z@\unkern\fi\abx@puncthook{,}}% - \def\abx@semicolon{\abx@puncthook{;}}% - \def\abx@colon{\abx@puncthook{:}}% - \def\abx@period{\ifdim\lastkern>\z@\unkern\fi\abx@puncthook{.}}% - \def\abx@exclam{\abx@puncthook{!}}% - \def\abx@question{\abx@puncthook{?}}% - \global\let\abx@puncthook\@firstofone - \global\let\blx@postpunct\@empty} - -\blx@resetpunct - -% {<character>}{<true>}{<false>} - -\protected\def\blx@imc@ifpunctmark#1{% - \ifhmode - \begingroup - \sfcode`\*=\blx@sf@dot - \ifnum\sfcode`#1=\spacefactor - \endgroup - \expandafter\expandafter - \expandafter\@firstoftwo - \else - \endgroup - \expandafter\expandafter - \expandafter\@secondoftwo - \fi - \else - \expandafter\@secondoftwo - \fi} - -% {<true>}{<false>} - -\protected\def\blx@imc@ifterm{% - \ifhmode - \expandafter\blx@imc@ifcapital - \else - \expandafter\@secondoftwo - \fi} - -% {<true>}{<false>} - -\protected\def\blx@imc@ifcapital{% - \ifcsdef{blx@cap@\blx@spacefactor}} - -% {<true>}{<false>} - -\protected\def\blx@imc@ifpunct{% - \ifnum\blx@spacefactor>\blx@sf@threshold@low - \ifnum\blx@spacefactor<\blx@sf@threshold@high - \expandafter\expandafter - \expandafter\@firstoftwo - \else - \expandafter\expandafter - \expandafter\@secondoftwo - \fi - \else - \expandafter\@secondoftwo - \fi} - -% {<character>} - -\newrobustcmd*{\autocap}[1]{#1} - -\protected\def\blx@imc@autocap{% - \blx@imc@ifcapital\MakeUppercase\@firstofone} - -\protected\def\blx@imc@nopunct{% - \leavevmode\spacefactor\blx@sf@nopunct} - -\protected\def\blx@imc@isdot{% - \ifnum\blx@spacefactor=\blx@sf@period - \spacefactor\blx@sf@dot - \fi} - -\protected\def\blx@imc@adddot{% - \blx@addpunct{dot}% - \ifnum\blx@spacefactor=\blx@sf@period - \spacefactor\blx@sf@dot - \fi} - -\protected\def\blx@imc@addperiod{% - \blx@addpunct{period}% - \ifnum\blx@spacefactor=\blx@sf@dot - \spacefactor\blx@sf@period - \fi} - -\protected\def\blx@imc@addcomma{\blx@addpunct{comma}} -\protected\def\blx@imc@addsemicolon{\blx@addpunct{semicolon}} -\protected\def\blx@imc@addcolon{\blx@addpunct{colon}} -\protected\def\blx@imc@addexclam{\blx@addpunct{exclam}} -\protected\def\blx@imc@addquestion{\blx@addpunct{question}} - -\def\blx@addpunct#1{% - \unspace - \ifnum\blx@spacefactor<\blx@sf@threshold@low - \csuse{blx@qp@#1}\csuse{abx@#1}% - \else - \ifnum\blx@spacefactor>\blx@sf@threshold@high - \csuse{blx@qp@#1}\csuse{abx@#1}% - \else - \ifcsdef{blx@pp@\the\csname blx@sf@#1\endcsname @\blx@spacefactor} - {\csuse{blx@qp@#1}\csuse{abx@#1}} - {\csuse{blx@qp@#1}}% - \fi - \fi - \csuse{blx@pq@#1}} - -\providerobustcmd*{\unspace}{% - \ifbool{hmode} - {\ifdimgreater\lastskip\z@ - {\unskip\unspace} - {\ifnumgreater\lastpenalty\z@ - {\unpenalty\unspace} - {}}} - {}} - -\newrobustcmd*{\bibsentence}{% - \leavevmode\spacefactor\blx@sf@par - \ignorespaces} - -\newrobustcmd*{\midsentence}{% - \leavevmode - \@ifstar - {\ifnum\spacefactor=\blx@sf@dot - \else - \spacefactor\@m - \fi} - {\spacefactor\@m}} - -\newrobustcmd*{\addslash}{% - \unspace/\penalty\hyphenpenalty\hskip\z@skip} - -\newrobustcmd*{\addspace}{% - \unspace\blx@postpunct - \space\blx@imc@resetpunctfont} - -\newrobustcmd*{\addnbspace}{% - \unspace\blx@postpunct - \nobreak\space\blx@imc@resetpunctfont} - -\newrobustcmd*{\addthinspace}{% - \unspace\blx@postpunct - \hskip0.16667em\relax - \blx@imc@resetpunctfont} - -\newrobustcmd*{\addnbthinspace}{% - \unspace\blx@postpunct - \nobreak\hskip0.16667em\relax - \blx@imc@resetpunctfont} - -\newrobustcmd*{\addlowpenspace}{% - \unspace\blx@postpunct - \penalty\value{lownamepenalty}\space - \blx@imc@resetpunctfont} - -\newrobustcmd*{\addhighpenspace}{% - \unspace\blx@postpunct - \penalty\value{highnamepenalty}\space - \blx@imc@resetpunctfont} - -\newrobustcmd*{\addlpthinspace}{% - \unspace\blx@postpunct - \penalty\value{lownamepenalty}% - \hskip0.16667em\relax\blx@imc@resetpunctfont} - -\newrobustcmd*{\addhpthinspace}{% - \unspace\blx@postpunct - \penalty\value{highnamepenalty}% - \hskip0.16667em\relax\blx@imc@resetpunctfont} - -\newrobustcmd*{\addabbrvspace}{% - \unspace\blx@postpunct - \penalty\value{abbrvpenalty}% - \space\blx@imc@resetpunctfont} - -\newrobustcmd*{\addabthinspace}{% - \unspace\blx@postpunct - \penalty\value{abbrvpenalty}% - \hskip0.16667em\relax - \blx@imc@resetpunctfont} - -\newrobustcmd*{\adddotspace}{% - \unspace\adddot\blx@postpunct - \penalty\value{abbrvpenalty}% - \space\blx@imc@resetpunctfont} - -\providerobustcmd*{\noligature}{% - \penalty\@M\discretionary{-}{}{\kern0.03em}% - \nobreak\hskip\z@skip} - -\providerobustcmd*{\hyphen}{% - \nobreak-\nobreak\hskip\z@skip} - -\providerobustcmd*{\nbhyphen}{% - \nobreak\mbox{-}\nobreak\hskip\z@skip} - -\providerobustcmd*{\hyphenate}{% - \nobreak\-\nobreak\hskip\z@skip} - -\providerobustcmd*{\allowhyphens}{% - \nobreak\hskip\z@skip} - -\providerobustcmd*{\nohyphenation}{% - \lefthyphenmin\@m} - -\providerobustcmd*{\textnohyphenation}[1]{% - \bgroup\nohyphenation#1\egroup} - -\blx@regimcs{% - \setpunctfont \resetpunctfont \ifcapital \autocap \ifpunctmark - \ifpunct \ifterm \nopunct \isdot \adddot \addperiod \addcomma - \addsemicolon \addcolon \addexclam \addquestion} - -\appto\blx@blxinit{% - \appto\nocorrlist{\isdot\adddot\addperiod\addcomma}} - -%% Style definition - -% {<bibstyle>} - -\newrobustcmd*{\RequireBibliographyStyle}[1]{% - \blx@inputonce{#1.bbx}{bibliography style '#1'}{}{}{} - {\blx@error - {Style '#1' not found} - {The bibliography style '#1' could not be found}}} -\@onlypreamble\RequireBibliographyStyle - -% {<code>} - -\newrobustcmd*{\InitializeBibliographyStyle}{\appto\blx@hook@bbxinit} -\@onlypreamble\InitializeBibliographyStyle - -% {<entry type>}{<driverdef>} - -\newrobustcmd*{\DeclareBibliographyDriver}[1]{% - \long\csdef{blx@bbx@#1}} -\@onlypreamble\DeclareBibliographyDriver - -% {<entry type>} - -\def\blx@driver#1{% - \ifcsdef{blx@bbx@#1} - {\csuse{blx@bbx@#1}} - {\ifcsdef{blx@bbx@*} - {\blx@warning{% - No driver for entry type '#1'.\MessageBreak - Using fallback driver}% - \csuse{blx@bbx@*}} - {\blx@error - {No driver found} - {I can't find a driver for the entry type - '\abx@field@entrytype'\MessageBreak - and there is no fallback driver either}}}} - -% {<type>}{<true>}{<false>} - -\def\blx@imc@ifdriver#1{\ifcsdef{blx@bbx@#1}} - -% {<alias>}{<type>} - -\newrobustcmd*{\DeclareBibliographyAlias}[2]{% - \csedef{blx@bbx@#1}{% - \expandafter\noexpand\csname blx@bbx@#2\endcsname}} -\@onlypreamble\DeclareBibliographyAlias - -% {<key>}[<value>]{<code>} - -\newrobustcmd*{\DeclareBibliographyOption}[1]{% - \@ifnextchar[%] - {\blx@defbibopt{#1}} - {\blx@defbibopt{#1}[]}} - -\long\def\blx@defbibopt#1[#2]#3{% - \ifcsundef{KV@blx@opt@ldt@#1} - {\ifcsundef{KV@blx@opt@pre@#1} - {\ifblank{#2} - {\define@key{blx@opt@pre}{#1}{#3}} - {\define@key{blx@opt@pre}{#1}[#2]{#3}}} - {\blx@err@optdef{#1}}} - {\blx@err@optdef{#1}}} - -% {<key>}[<value>]{<code>} - -\newrobustcmd*{\DeclareTypeOption}[1]{% - \@ifnextchar[%] - {\blx@deftypeopt{#1}} - {\blx@deftypeopt{#1}[]}} - -\long\def\blx@deftypeopt#1[#2]#3{% - \ifcsundef{KV@blx@opt@typ@#1} - {\ifblank{#2} - {\define@key{blx@opt@typ}{#1}{#3}} - {\define@key{blx@opt@typ}{#1}[#2]{#3}}} - {\blx@err@optdef{#1}}} - -% {<key>}[<value>]{<code>} - -\newrobustcmd*{\DeclareEntryOption}[1]{% - \@ifnextchar[%] - {\blx@defentryopt{#1}} - {\blx@defentryopt{#1}[]}} - -\long\def\blx@defentryopt#1[#2]#3{% - \ifcsundef{KV@blx@opt@ent@#1} - {\ifblank{#2} - {\define@key{blx@opt@ent}{#1}{#3}} - {\define@key{blx@opt@ent}{#1}[#2]{#3}}} - {\blx@err@optdef{#1}}} - -%% Auxiliary commands - -\newrobustcmd*{\citereset}{% - \csuse{blx@hook@cbxinit}% - \@ifstar - {} - {\global\cslet{blx@bsee@\the\c@refsection}\@empty - \global\cslet{blx@fsee@\the\c@refsection}\@empty - \blx@ibidreset@force - \blx@idemreset@force - \blx@opcitreset@force - \blx@loccitreset@force}} - -\def\blx@save#1{% - \ifcsdef{blx@saved@#1} - {} - {\blx@safe@actives - \csletcs{blx@saved@#1}{#1}% - \blx@rest@actives}} - -\def\blx@restore#1{% - \ifcsdef{blx@saved@#1} - {\blx@safe@actives - \csletcs{#1}{blx@saved@#1}% - \csundef{blx@saved@#1}% - \blx@rest@actives} - {}} - -\newrobustcmd*{\savecommand}[1]{% - \ifcsdef{blx@saved@cmd@\detokenize{#1}} - {} - {\cslet{blx@saved@cmd@\detokenize{#1}}{#1}}} - -\newrobustcmd*{\restorecommand}[1]{% - \ifcsdef{blx@saved@cmd@\detokenize{#1}} - {\letcs{#1}{blx@saved@cmd@\detokenize{#1}}% - \csundef{blx@saved@cmd@\detokenize{#1}}} - {}} - -% {<name>} - -\newrobustcmd*{\savebibmacro}[1]{% - \blx@save{abx@macro@\detokenize{#1}}} - -\newrobustcmd*{\restorebibmacro}[1]{% - \blx@restore{abx@macro@\detokenize{#1}}} - -% {<name>}[<args>][<optarg>]{<definition>} - -\newrobustcmd*{\newbibmacro}{% - \@star@or@long\blx@newbibmacro} - -\def\blx@newbibmacro#1{% - \ifcsundef{abx@macro@\detokenize{#1}} - {\blx@defbibmacro\new@command{#1}} - {\blx@warning{% - Macro '\detokenize{#1}' already defined.\MessageBreak - Using \string\renewbibmacro} - \blx@defbibmacro\renew@command{#1}}} - -\newrobustcmd*{\renewbibmacro}{% - \@star@or@long\blx@renewbibmacro} - -\def\blx@renewbibmacro#1{% - \ifcsundef{abx@macro@\detokenize{#1}} - {\blx@warning{% - Macro '\detokenize{#1}' undefined.\MessageBreak - Using \string\newbibmacro} - \blx@defbibmacro\new@command{#1}} - {\blx@defbibmacro\renew@command{#1}}} - -\newrobustcmd*{\providebibmacro}{% - \@star@or@long{\blx@defbibmacro\provide@command}} - -\def\blx@defbibmacro#1#2{% - \expandafter#1\csname abx@macro@\detokenize{#2}\endcsname} - -% {<name>} - -\newrobustcmd*{\usebibmacro}[1]{% - \ifcsundef{abx@macro@\detokenize{#1}} - {\blx@error - {Bibliography macro '\detokenize{#1}' undefined} - {Use '\string\newbibmacro' to define this macro}} - {\csuse{abx@macro@\detokenize{#1}}}} - -% {<field>} - -\def\blx@imc@thefield#1{\csuse{abx@field@#1}} - -\def\blx@imc@strfield#1{% - \ifcsdef{abx@field@#1} - {\detokenize\expandafter\expandafter\expandafter - {\csname abx@field@#1\endcsname}} - {}} - -% {<plainlist>} - -\def\blx@imc@thelist#1{\csuse{abx@list@#1}} - -% {<namelist>} - -\def\blx@imc@thename#1{\csuse{abx@name@#1}} - -% {<field>} - -\protected\def\blx@imc@clearfield#1{% - \csundef{abx@field@#1}} - -% {<plainlist>} - -\protected\def\blx@imc@clearlist#1{% - \ifcsundef{abx@list@#1} - {} - {\togglefalse{abx@bool@more#1}% - \csundef{abx@list@#1}% - \csname c@#1\endcsname\z@}} - -% {<namelist>} - -\protected\def\blx@imc@clearname#1{% - \ifcsundef{abx@name@#1} - {} - {\togglefalse{abx@bool@more#1}% - \csundef{abx@name@#1}% - \csname c@#1\endcsname\z@}} - -% {<field>}{<macro>} - -\protected\def\blx@imc@restorefield#1{\cslet{abx@field@#1}} - -% {<plainlist>}{<macro>} - -\protected\def\blx@imc@restorelist#1{\cslet{abx@list@#1}} - -% {<namelist>}{<macro>} - -\protected\def\blx@imc@restorename#1{\cslet{abx@name@#1}} - -% {<field>}{<macro>} - -\protected\def\blx@imc@savefield{% - \@ifstar{\blx@savedata{field}}{\global\blx@savedata{field}}} -\def\blx@savedata#1#2#3{\letcs#3{abx@#1@#2}} - -% {<plainlist>}{<macro>} - -\protected\def\blx@imc@savelist{% - \@ifstar{\blx@savedata{list}}{\global\blx@savedata{list}}} - -% {<namelist>}{<macro>} - -\protected\def\blx@imc@savename{% - \@ifstar{\blx@savedata{name}}{\global\blx@savedata{name}}} - -% {<field>}{<csname>} - -\protected\def\blx@imc@savefieldcs{% - \@ifstar{\blx@savedatacs{field}}{\global\blx@savedatacs{field}}} -\def\blx@savedatacs#1#2#3{\csletcs{#3}{abx@#1@#2}} - -% {<plainlist>}{<csname>} - -\protected\def\blx@imc@savelistcs{% - \@ifstar{\blx@savedatacs{list}}{\global\blx@savedatacs{list}}} - -% {<namelist>}{<csname>} - -\protected\def\blx@imc@savenamecs{% - \@ifstar{\blx@savedatacs{name}}{\global\blx@savedatacs{name}}} - -% {<field>}{<true>}{<false>} - -\def\blx@imc@iffieldundef#1{% - \ifcsundef{abx@field@#1}} - -% {<plainlist>}{<true>}{<false>} - -\def\blx@imc@iflistundef#1{% - \ifcsundef{abx@list@#1}} - -% {<namelist>}{<true>}{<false>} - -\def\blx@imc@ifnameundef#1{% - \ifcsundef{abx@name@#1}} - -% {<field1>}{<field2>}{<true>}{<false>} - -\def\blx@imc@iffieldsequal#1#2{% - \ifcsequal{abx@field@#1}{abx@field@#2}} - -% {<plainlist1>}{<plainlist2>}{<true>}{<false>} - -\def\blx@imc@iflistsequal#1#2{% - \ifcsequal{abx@list@#1}{abx@list@#2}} - -% {<namelist1>}{<namelist2>}{<true>}{<false>} - -\def\blx@imc@ifnamesequal#1#2{% - \ifcsundef{abx@name@#1} - {\@secondoftwo} - {\ifcsundef{abx@name@#2} - {\@secondoftwo} - {\blx@ifnamesequal{#1}{#2}}}} - -\def\blx@ifnamesequal#1#2{% - \begingroup - \let\blx@tempa\@empty - \expandafter\expandafter - \expandafter\blx@ifnamesequal@i\csname abx@name@#2\endcsname - \let\blx@tempb\blx@tempa - \let\blx@tempa\@empty - \expandafter\expandafter - \expandafter\blx@ifnamesequal@i\csname abx@name@#1\endcsname - \expandafter\endgroup - \ifx\blx@tempa\blx@tempb - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi} - -\def\blx@ifnamesequal@i#1#2{% - \expandafter\blx@ifnamesequal@ii#2{}&} - -\def\blx@ifnamesequal@ii#1{% - \ifblank{#1} - {\blx@namebreak} - {\blx@ifnamesequal@iii#1% - \blx@ifnamesequal@ii}} - -\def\blx@ifnamesequal@iii#1#2#3#4#5#6#7#8#9{% - \setkeys{blx@opt@name}{#1}% - \ifdef\abx@field@hash - {\eappto\blx@tempa{{\abx@field@hash}}} - {\appto\blx@tempa{{{#2}{#4}{#6}{#8}}}}} - -% {<field>}{<macro>}{<true>}{<false>} - -\def\blx@imc@iffieldequals#1#2{% - \blx@imc@iffieldundef{#1} - {\@secondoftwo} - {\ifundef#2% - {\@secondoftwo} - {\expandafter\ifx\csname abx@field@#1\endcsname#2% - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi}}} - -% {<plainlist>}{<macro>}{<true>}{<false>} - -\def\blx@imc@iflistequals#1#2{% - \blx@imc@iflistundef{#1} - {\@secondoftwo} - {\ifundef#2% - {\@secondoftwo} - {\expandafter\ifx\csname abx@list@#1\endcsname#2% - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi}}} - -% {<namelist>}{<macro>}{<true>}{<false>} - -\def\blx@imc@ifnameequals#1#2{% FIXME - \blx@imc@ifnameundef{#1} - {\@secondoftwo} - {\ifundef#2% - {\@secondoftwo} - {\expandafter\ifx\csname abx@name@#1\endcsname#2% - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi}}} - -% {<field>}{<csname>}{<true>}{<false>} - -\def\blx@imc@iffieldequalcs#1{% - \ifcsequal{abx@field@#1}} - -% {<plainlist>}{<csname>}{<true>}{<false>} - -\def\blx@imc@iflistequalcs#1{% - \ifcsequal{abx@list@#1}} - -% {<namelist>}{<csname>}{<true>}{<false>} - -\def\blx@imc@ifnameequalcs#1{% FIXME - \ifcsequal{abx@name@#1}} - -% {<field>}{<string>}{<true>}{<false>} - -\protected\long\def\blx@imc@iffieldequalstr#1#2{% - \blx@imc@iffieldundef{#1} - {\@secondoftwo} - {\expandafter\expandafter\expandafter\ifstrequal - \expandafter\expandafter\expandafter{% - \csname abx@field@#1\endcsname}{#2}}} - -% {<field>}{<true>}{<false>} - -\protected\def\blx@imc@iffieldxref#1{% - \blx@imc@iffieldundef{#1} - {\@secondoftwo} - {\blx@whichxref - {\blx@iffieldxref{#1}} - {\@secondoftwo}}} - -\def\blx@iffieldxref#1#2{% - \begingroup - \letcs\blx@tempa{abx@field@#2}% - \letcs\blx@tempb{abx@field@#1}% - \csundef{abx@field@#1}% - \blx@getdata{\blx@tempa}% - \blx@imc@iffieldequals{#1}\blx@tempb - {\aftergroup\@firstoftwo} - {\aftergroup\@secondoftwo}% - \endgroup} - -\def\blx@whichxref#1#2{% - \blx@imc@iffieldundef{crossref} - {\blx@imc@iffieldundef{xref} - {#2} - {#1{xref}}} - {#1{crossref}}} - -% {<plainlist>}{<true>}{<false>} - -\protected\def\blx@imc@iflistxref#1{% - \blx@imc@iflistundef{#1} - {\@secondoftwo} - {\blx@whichxref - {\blx@iflistxref{#1}} - {\@secondoftwo}}} - -\def\blx@iflistxref#1#2{% - \begingroup - \letcs\blx@tempa{abx@field@#2}% - \letcs\blx@tempb{abx@list@#1}% - \csundef{abx@list@#1}% - \blx@getdata{\blx@tempa}% - \blx@imc@iflistequals{#1}\blx@tempb - {\aftergroup\@firstoftwo} - {\aftergroup\@secondoftwo}% - \endgroup} - -% {<namelist>}{<true>}{<false>} - -\protected\def\blx@imc@ifnamexref#1{% - \blx@imc@ifnameundef{#1} - {\@secondoftwo} - {\blx@whichxref - {\blx@ifnamexref{#1}} - {\@secondoftwo}}} - -\def\blx@ifnamexref#1#2{% - \begingroup - \letcs\blx@tempa{abx@field@#2}% - \letcs\blx@tempb{abx@name@#1}% - \csundef{abx@name@#1}% - \blx@getdata{\blx@tempa}% - \blx@imc@ifnameequals{#1}\blx@tempb - {\aftergroup\@firstoftwo} - {\aftergroup\@secondoftwo}% - \endgroup} - -% {<string>}{<true>}{<false>} - -\protected\def\blx@imc@ifcurrentfield#1{% - \begingroup - \def\blx@tempa{#1}% - \ifx\currentfield\blx@tempa - \aftergroup\@firstoftwo - \else - \aftergroup\@secondoftwo - \fi - \endgroup} - -% {<string>}{<true>}{<false>} - -\protected\def\blx@imc@ifcurrentlist#1{% - \begingroup - \def\blx@tempa{#1}% - \ifx\currentlist\blx@tempa - \aftergroup\@firstoftwo - \else - \aftergroup\@secondoftwo - \fi - \endgroup} - -% {<string>}{<true>}{<false>} - -\protected\def\blx@imc@ifcurrentname#1{% - \begingroup - \def\blx@tempa{#1}% - \ifx\currentname\blx@tempa - \aftergroup\@firstoftwo - \else - \aftergroup\@secondoftwo - \fi - \endgroup} - -% {<string>}{<true>}{<false>} - -\protected\def\blx@imc@ifentrytype#1{% - \begingroup - \def\blx@tempa{#1}% - \ifx\abx@field@entrytype\blx@tempa - \aftergroup\@firstoftwo - \else - \aftergroup\@secondoftwo - \fi - \endgroup} - -% {<true>}{<false>} - -\def\blx@imc@ifmorenames{% - \ifundef\currentname - {\@secondoftwo} - {\iftoggle{abx@bool@more\currentname} - {\@firstoftwo} - {\ifnum\c@listtotal>\c@liststop - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi}}} - -% {<true>}{<false>} - -\def\blx@imc@ifmoreitems{% - \ifundef\currentlist - {\@secondoftwo} - {\iftoggle{abx@bool@more\currentlist} - {\@firstoftwo} - {\ifnum\c@listtotal>\c@liststop - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi}}} - -% {<category>}{<true>}{<false>} - -\protected\def\blx@imc@ifcategory{% - \ifdef\abx@field@entrykey - {\blx@imc@ifentrycategory\abx@field@entrykey} - {\expandafter\@secondoftwo\@gobble}} - -% {<entrykey>}{<category>}{<true>}{<false>} - -\protected\def\blx@imc@ifentrycategory{% - \blx@xsanitizeafter\blx@imc@ifentrycategory@i} - -\def\blx@imc@ifentrycategory@i#1#2{% - \ifcsdef{blx@catg@\detokenize{#2}} - {\ifinlistcs{#1}{blx@catg@\detokenize{#2}}} - {\@secondoftwo}} - -% {<keyword>}{<true>}{<false>} - -\protected\def\blx@imc@ifkeyword{% - \ifdef\abx@field@entrykey - {\blx@imc@ifentrykeyword\abx@field@entrykey} - {\expandafter\@secondoftwo\@gobble}} - -% {<entrykey>}{<keyword>}{<true>}{<false>} - -\protected\def\blx@imc@ifentrykeyword{% - \blx@xsanitizeafter\blx@imc@ifentrykeyword@i} - -\def\blx@imc@ifentrykeyword@i#1#2{% - \ifcsdef{blx@keyw@\the\c@refsection @\detokenize{#2}} - {\ifinlistcs{#1}{blx@keyw@\the\c@refsection @\detokenize{#2}}} - {\@secondoftwo}} - -% {<true>}{<false>} - -\protected\def\blx@ifciteseen@global{% - \ifdef\abx@field@entrykey - {\expandafter\blx@ifseen@global - \expandafter{\abx@field@entrykey}} - {\@secondoftwo}} - -\protected\def\blx@ifciteseen@context{% - \ifdef\abx@field@entrykey - {\expandafter\blx@ifseen@context - \expandafter{\abx@field@entrykey}} - {\@secondoftwo}} - -% {<entrykey>}{<true>}{<false>} - -\protected\def\blx@ifentryseen@global{% - \blx@xsanitizeafter\blx@ifseen@global} - -\protected\def\blx@ifentryseen@context{% - \blx@xsanitizeafter\blx@ifseen@context} - -\def\blx@ifseen@global#1{% - \ifinlistcs{#1}{blx@bsee@\the\c@refsection}} - -\def\blx@ifseen@context#1{% - \iftoggle{blx@footnote} - {\ifinlistcs{#1}{blx@fsee@\the\c@refsection}} - {\ifinlistcs{#1}{blx@bsee@\the\c@refsection}}} - -% {<true>}{<false>} - -\def\blx@ifciteibid@global{% - \blx@imc@iffieldequals{entrykey}\blx@lastkey@text} - -\def\blx@ifciteibid@context{% - \iftoggle{blx@footnote} - {\blx@imc@iffieldequals{entrykey}\blx@lastkey@foot} - {\blx@imc@iffieldequals{entrykey}\blx@lastkey@text}} - -\def\blx@ifciteibid@strict{% - \blx@ifcitesingle - {\blx@ifciteibid@global} - {\@secondoftwo}}% - -\def\blx@ifciteibid@constrict{% - \blx@ifcitesingle - {\iftoggle{blx@footnote} - {\blx@ifmpfncheck - {\blx@imc@iffieldequals{entrykey}\blx@lastkey@foot} - {\@secondoftwo}} - {\blx@imc@iffieldequals{entrykey}\blx@lastkey@text}} - {\@secondoftwo}}% - -% {<true>}{<false>} - -\def\blx@ifciteidem@global{% - \blx@imc@iffieldequals{fullhash}\blx@lasthash@text} - -\def\blx@ifciteidem@context{% - \iftoggle{blx@footnote} - {\blx@imc@iffieldequals{fullhash}\blx@lasthash@foot} - {\blx@imc@iffieldequals{fullhash}\blx@lasthash@text}} - -\let\blx@ifciteidem@strict\blx@ifciteidem@global - -\def\blx@ifciteidem@constrict{% - \iftoggle{blx@footnote} - {\blx@ifmpfncheck - {\blx@imc@iffieldequals{fullhash}\blx@lasthash@foot} - {\@secondoftwo}} - {\blx@imc@iffieldequals{fullhash}\blx@lasthash@text}} - -% {<true>}{<false>} - -\def\blx@ifopcit@global{% - \blx@imc@iffieldundef{namehash} - {\@secondoftwo} - {\blx@imc@iffieldequalcs{entrykey}{blx@lastkey@text@\abx@field@namehash}}} - -\def\blx@ifopcit@context{% - \blx@imc@iffieldundef{namehash} - {\@secondoftwo} - {\iftoggle{blx@footnote} - {\blx@imc@iffieldequalcs{entrykey}{blx@lastkey@foot@\abx@field@namehash}} - {\blx@imc@iffieldequalcs{entrykey}{blx@lastkey@text@\abx@field@namehash}}}} - -\def\blx@ifopcit@strict{% - \blx@ifcitesingle - {\blx@ifopcit@global} - {\@secondoftwo}}% - -\def\blx@ifopcit@constrict{% - \blx@ifcitesingle - {\blx@imc@iffieldundef{namehash} - {\@secondoftwo} - {\iftoggle{blx@footnote} - {\blx@ifmpfncheck - {\blx@imc@iffieldequalcs{entrykey}{blx@lastkey@foot@\abx@field@namehash}} - {\@secondoftwo}} - {\blx@imc@iffieldequalcs{entrykey}{blx@lastkey@text@\abx@field@namehash}}}} - {\@secondoftwo}}% - -% {<true>}{<false>} - -\def\blx@ifloccit@global{% - \blx@loccit@check{text}} - -\def\blx@ifloccit@context{% - \iftoggle{blx@footnote} - {\blx@loccit@check{foot}} - {\blx@loccit@check{text}}} - -\def\blx@ifloccit@strict{% - \blx@ifcitesingle - {\blx@loccit@numcheck{text}} - {\@secondoftwo}}% - -\def\blx@ifloccit@constrict{% - \blx@ifcitesingle - {\iftoggle{blx@footnote} - {\blx@ifmpfncheck - {\blx@loccit@numcheck{foot}} - {\@secondoftwo}} - {\blx@loccit@numcheck{text}}} - {\@secondoftwo}} - -\def\blx@loccit@check#1{% - \blx@imc@iffieldundef{postnote} - {\@secondoftwo} - {\blx@imc@iffieldequalcs{postnote}{blx@lastnote@#1@\abx@field@entrykey}}} - -\def\blx@loccit@numcheck#1{% - \blx@imc@iffieldundef{postnote} - {\@secondoftwo} - {\expandafter\blx@imc@ifpages - \expandafter{\abx@field@postnote} - {\blx@imc@iffieldequalcs{postnote}{blx@lastnote@#1@\abx@field@entrykey}} - {\@secondoftwo}}} - -% {<true>}{<false>} - -\def\blx@ifmpfncheck{% - \ifnum\numexpr\value\@mpfn-\blx@lastmpfn<\tw@ - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi} - -\def\blx@mpfnsave{% - \xdef\blx@lastmpfn{\the\value\@mpfn}} - -\def\blx@mpfnreset{% - \global\let\blx@lastmpfn\z@} - -\blx@mpfnreset - -% {<true>}{<false>} - -\def\blx@imc@iffirstonpage{% - \iftoggle{blx@footnote} - {\blx@iffirstonpage{fnpage}} - {\blx@iffirstonpage{page}}} - -\def\blx@iffirstonpage#1{% - \ifcsundef{blx@#1@\number\c@instcount} - {\@secondoftwo} - {\expandafter\blx@iffirstonpage@i - \expandafter{\number\numexpr\c@instcount-1}{#1}}} - -\def\blx@iffirstonpage@i#1#2{% - \ifcsundef{blx@#2@#1} - {\ifnum#1>\@ne - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi - {\expandafter\blx@iffirstonpage@i - \expandafter{\number\numexpr#1-1}{#2}} - {\@firstoftwo}} - {\ifnum\csuse{blx@#2@\number\c@instcount}=% - \csuse{blx@#2@#1} % - \expandafter\@secondoftwo - \else - \expandafter\@firstoftwo - \fi}} - -% {<count1>}{<count2>}{<true>}{<false>} - -\def\blx@imc@ifsamepage#1#2{% - \ifcsundef{blx@page@\number\numexpr#1} - {\ifcsundef{blx@fnpage@\number\numexpr#1} - {\@secondoftwo} - {\blx@ifsamepage{#1}{#2}{fnpage}}} - {\blx@ifsamepage{#1}{#2}{page}}} - -\def\blx@ifsamepage#1#2#3{% - \ifcsundef{blx@page@\number\numexpr#2} - {\ifcsundef{blx@fnpage@\number\numexpr#2} - {\@secondoftwo} - {\blx@ifsamepage@i{#1}{#2}{#3}{fnpage}}} - {\blx@ifsamepage@i{#1}{#2}{#3}{page}}} - -\def\blx@ifsamepage@i#1#2#3#4{% - \ifnum\csuse{blx@#3@\number\numexpr#1}=% - \csuse{blx@#4@\number\numexpr#2} % - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi} - -% {<string>}{<true>}{<false>} - -\protected\long\def\blx@imc@ifinteger#1{% - \begingroup - \def\do##1{\uccode`##1=`\%}% - \do\0\do\1\do\2\do\3\do\4\do\5\do\6\do\7\do\8\do\9% - \makeatletter - \catcode`\%=9 - \endlinechar\m@ne - \uppercase{\scantokens{\def\blx@tempa{#1}}}% - \ifx\blx@tempa\@empty - \aftergroup\@firstoftwo - \else - \aftergroup\@secondoftwo - \fi - \endgroup} - -% {<field>}{<true>}{<false>} - -\protected\def\blx@imc@iffieldint#1{% - \blx@imc@iffieldundef{#1} - {\@secondoftwo} - {\expandafter\expandafter - \expandafter\ifinteger - \expandafter\expandafter - \expandafter{\csname abx@field@#1\endcsname}}} - -% {<string>}{<true>}{<false>} - -\protected\def\blx@imc@ifnumeral{% - \blx@ifnum\blx@hook@ifnum} - -\protected\def\blx@imc@ifnumerals{% - \blx@ifnum\blx@hook@ifnums} - -\protected\def\blx@imc@ifpages{% - \blx@ifnum\blx@hook@ifpages} - -\long\def\blx@ifnum#1#2{% - \begingroup - \let\protect\@unexpandable@protect - \uppercase{\edef\blx@tempa{#2}}% - \ifx\blx@tempa\@empty - \aftergroup\@secondoftwo - \else - \makeatletter - \catcode`\%=9 - \endlinechar\m@ne - \everyeof{\noexpand}#1% - \uppercase{\edef\blx@tempa{\scantokens{#2}}}% - \ifx\blx@tempa\@empty - \aftergroup\@firstoftwo - \else - \aftergroup\@secondoftwo - \fi - \fi - \endgroup} - -\def\blx@hook@ifnum{% - \def\do##1{\uccode`##1=`\%}% - \do\ \do\0\do\1\do\2\do\3\do\4\do\5\do\6\do\7\do\8\do\9% - \do\i\do\v\do\x\do\l\do\c\do\d\do\m - \do\I\do\V\do\X\do\L\do\C\do\D\do\M - \blx@donumchars - \let\RN\@firstofone - \let\Rn\@firstofone} - -\def\blx@hook@ifnums{% - \blx@hook@ifnum - \def\do##1{\uccode`##1=`\%}% - \blx@dorangechars - \def\do##1{\let##1\@empty}% - \blx@dorangecmds} - -\def\blx@hook@ifpages{% - \blx@hook@ifnum - \blx@hook@ifnums - \def\do##1{\let##1\@empty}% - \blx@dopagecmds} - -% {<field>}{<true>}{<false>} - -\protected\def\blx@imc@iffieldnum#1{% - \blx@imc@iffieldundef{#1} - {\@secondoftwo} - {\expandafter\expandafter - \expandafter\blx@imc@ifnumeral - \expandafter\expandafter - \expandafter{\csname abx@field@#1\endcsname}}} - -\protected\def\blx@imc@iffieldnums#1{% - \blx@imc@iffieldundef{#1} - {\@secondoftwo} - {\expandafter\expandafter - \expandafter\blx@imc@ifnumerals - \expandafter\expandafter - \expandafter{\csname abx@field@#1\endcsname}}} - -\protected\def\blx@imc@iffieldpages#1{% - \blx@imc@iffieldundef{#1} - {\@secondoftwo} - {\expandafter\expandafter - \expandafter\blx@imc@ifpages - \expandafter\expandafter - \expandafter{\csname abx@field@#1\endcsname}}} - -% {<chars>} - -\newrobustcmd*{\DeclareNumChars}{% - \@ifstar - {\blx@defnumchars} - {\global\let\blx@donumchars\@empty - \blx@defnumchars}} - -\def\blx@defnumchars#1{% - \ifblank{#1} - {} - {\expandafter\blx@defdochars - \expandafter\blx@donumchars - \detokenize{#1}\relax}} - -% {<chars>} - -\newrobustcmd*{\DeclareRangeChars}{% - \@ifstar - {\blx@defrangechars} - {\global\let\blx@dorangechars\@empty - \blx@defrangechars}} - -\def\blx@defrangechars#1{% - \ifblank{#1} - {} - {\expandafter\blx@defdochars - \expandafter\blx@dorangechars - \detokenize{#1}\relax}} - -\def\blx@defdochars#1#2{% - \ifx#2\relax - \else - \xdef#1{% - \expandonce#1\noexpand\do - \expandafter\noexpand\csname#2\endcsname}% - \expandafter\blx@defdochars - \expandafter#1% - \fi} - -% {<cstokens>} - -\newrobustcmd*{\DeclareRangeCommands}{% - \@ifstar - {\blx@defrangecmds} - {\global\let\blx@dorangecmds\@empty - \blx@defrangecmds}} - -\def\blx@defrangecmds#1{% - \ifblank{#1} - {} - {\blx@defrangecmds@i#1&}} - -\def\blx@defrangecmds@i#1{% - \ifx% - \else - \gappto\blx@dorangecmds{\do#1}% - \expandafter\blx@defrangecmds@i - \fi} - -% {<cstokens>} - -\newrobustcmd*{\DeclarePageCommands}{% - \@ifstar - {\blx@defpagecmds} - {\global\let\blx@dopagecmds\@empty - \blx@defpagecmds}} - -\def\blx@defpagecmds#1{% - \ifblank{#1} - {} - {\blx@defpagecmds@i#1&}} - -\def\blx@defpagecmds@i#1{% - \ifx% - \else - \gappto\blx@dopagecmds{\do#1}% - \expandafter\blx@defpagecmds@i - \fi} - -\DeclareNumChars{.} -\DeclareRangeChars{~,;-+/} -\DeclareRangeCommands{% - \ \,\space\nobreakspace\addspace\addnbspace - \addthinspace\addnbthinspace\addlowpenspace - \addhighpenspace\addlpthinspace\addhpthinspace - \adddotspace\addabbrvspace\&\psq\psqq - \bibrangedash\bibdatedash\textendash\textemdash} -\DeclarePageCommands{\pno\ppno} - -% *{<code>} - -\newrobustcmd*{\NumCheckSetup}{\appto\blx@hook@ifnum} -\newcommand*{\NumcheckSetup}{\NumCheckSetup} - -% [<pagination>][<postpro>]{<string>} - -\newrobustcmd*{\blx@imc@mkpageprefix}[1][pagination]{% - \begingroup - \def\blx@tempa{\blx@mkpageprefix{page}}% - \iffieldundef{#1} - {} - {\iffieldequalstr{#1}{none} - {\def\blx@tempa{\blx@mkpageprefix@i}} - {\iffieldbibstring{#1} - {\edef\blx@tempa{\blx@mkpageprefix{\thefield{#1}}}} - {\blx@warning@entry{% - Unknown pagination type '\strfield{#1}'}}}}% - \@ifnextchar[%] - {\blx@tempa} - {\blx@tempa[\@firstofone]}} - -\protected\long\def\blx@mkpageprefix#1[#2]#3{% - \ifnumeral{#3} - {\bibstring{#1}\ppspace} - {\ifnumerals{#3} - {\bibstring{#1s}\ppspace} - {\def\pno{\bibstring{#1}}% - \def\ppno{\bibstring{#1s}}}}% - \blx@mkpageprefix@i[#2]{#3}} - -\long\def\blx@mkpageprefix@i[#1]#2{#1{#2}\endgroup} - -% [<pagination>][<postpro>]{<string>} - -\newrobustcmd*{\blx@imc@mkpagetotal}[1][bookpagination]{% - \begingroup - \def\blx@tempa{\blx@mkpagetotal{page}}% - \iffieldundef{#1} - {} - {\iffieldequalstr{#1}{none} - {\def\blx@tempa{\blx@mkpagetotal@i}} - {\iffieldbibstring{#1} - {\edef\blx@tempa{\blx@mkpagetotal{\thefield{#1}}}} - {\blx@warning@entry{% - Unknown pagination type '\strfield{#1}'}}}}% - \@ifnextchar[%] - {\blx@tempa} - {\blx@tempa[\@firstofone]}} - -\protected\long\def\blx@mkpagetotal#1[#2]#3{% - \ifnumeral{#3} - {\setbox\@tempboxa=\hbox{% - \blx@tempcnta0#3\relax - \ifnum\blx@tempcnta=\@ne - \aftergroup\@firstoftwo - \else - \aftergroup\@secondoftwo - \fi}% - {#2{#3}\ppspace\bibstring{#1}} - {#2{#3}\ppspace\bibstring{#1s}}} - {\def\pno{\bibstring{#1}}% - \def\ppno{\bibstring{#1s}}% - #2{#3}}% - \endgroup} - -\long\def\blx@mkpagetotal@i[#1]#2{#1{#2}\endgroup} - -\newcounter{mincomprange} -\newcounter{maxcomprange} -\newcounter{mincompwidth} -\setcounter{mincomprange}{10} -\setcounter{maxcomprange}{100000} -\setcounter{mincompwidth}{1} -\def\abx@rangeproclimit{100000} - -% <*>[<postpro>]{<string>} - -\newrobustcmd*{\mkcomprange}{% - \begingroup - \@ifstar - {\blx@comprange\blx@comprange@ii} - {\blx@comprange\blx@comprange@i}} - -\def\blx@comprange#1{% - \@ifnextchar[{#1}{#1[\@firstofone]}} - -\def\blx@comprange@i[#1]#2{% - \let\blx@tempa\@empty - \protected\def\blx@range@out@value{\appto\blx@tempa}% - \let\blx@range@out@delim\blx@range@out@value - \let\blx@range@split\blx@comprange@split - \blx@range@chunk{#2}% - \edef\blx@tempa{\endgroup - \unexpanded{#1}{\expandonce\blx@tempa}}% - \blx@tempa} - -\def\blx@comprange@ii[#1]#2{% - \protected\def\blx@range@out@value{#1}% - \let\blx@range@out@delim\@firstofone - \let\blx@range@split\blx@comprange@split - \blx@range@chunk{#2}% - \endgroup} - -\def\blx@comprange@split#1{% - \def\blx@comprange@abort{\blx@range@out@value{#1}}% - \blx@imc@ifpages{#1} - {\blx@comprange@range#1\bibrangedash\bibrangedash&} - {\blx@comprange@abort}} - -\def\blx@comprange@range#1\bibrangedash#2\bibrangedash#3&{% - \ifblank{#3} - {\blx@comprange@hyphen#1--&} - {\ifblank{#2} - {\blx@range@out@value{#1\bibrangedash}} - {\ifblank{#1} - {\blx@range@out@value{\bibrangedash#2}} - {\blx@comprange@check{#1}{#2}}}}} - -\def\blx@comprange@hyphen#1-#2-#3&{% - \ifblank{#3} - {\blx@comprange@abort} - {\ifblank{#2} - {\ifblank{#1} - {\let\blx@tempb\@empty} - {\def\blx@tempb{#1}}% - \blx@comprange@hyphen@i#3&} - {\ifblank{#1} - {\blx@range@out@value{\bibrangedash#2}} - {\blx@comprange@check{#1}{#2}}}}} - -\def\blx@comprange@hyphen@i#1-#2&{% - \ifblank{#1#2} - {\expandafter\blx@range@out@value - \expandafter{\blx@tempb\bibrangedash}} - {\notblank{#1} - {\ifdefempty\blx@tempb - {\blx@range@out@value{\bibrangedash#1}} - {\expandafter\blx@comprange@check - \expandafter{\blx@tempb}{#1}}} - {\blx@comprange@hyphen@i#2&}}} - -\def\blx@comprange@check#1#2{% - \blx@imc@ifinteger{#1} - {\blx@imc@ifinteger{#2} - {\blx@comprange@comp{#1}{#2}} - {\blx@range@out@value{#1\bibrangedash#2}}} - {\blx@range@out@value{#1\bibrangedash#2}}} - -\def\blx@comprange@comp#1#2{% - \def\blx@tempb{#1}% - \def\blx@tempc{#2}% - \let\blx@tempd\blx@tempc - \ifnum\c@maxcomprange<\abx@rangeproclimit\relax - \numdef\blx@tempe\abx@rangeproclimit - \else - \numdef\blx@tempe\c@maxcomprange - \fi - \blx@tempcntc=\blx@tempe\relax - \ifnum - \ifnum\c@mincompwidth<1\space1\fi - \ifnum\c@maxcomprange<10\space1\fi - \ifnum\c@mincomprange<\blx@tempb\space\else1\fi - \ifnum\blx@tempb<\numexpr\blx@tempcntc*10\relax\else1\fi - 0=\z@ - \expandafter\blx@comprange@comp@div - \else - \expandafter\blx@comprange@end - \fi} - -\def\blx@comprange@end{% - \numdef\blx@tempb\blx@tempb - \ifnum\blx@tempe>\c@maxcomprange\relax - \numdef\blx@tempc\blx@tempc - \else - \numdef\blx@tempc\blx@tempd - \fi - \edef\blx@tempb{\blx@range@out@value{\blx@tempb\noexpand\bibrangedash\blx@tempc}}% - \blx@tempb} - -\def\blx@comprange@comp@div{% - \unless\ifnum\blx@tempb<\blx@tempcntc - \blx@tempcnta\blx@tempb\relax - \blx@tempcntb\blx@tempc\relax - \divide\blx@tempcnta\blx@tempcntc - \divide\blx@tempcntb\blx@tempcntc - \ifnum\blx@tempcnta=\blx@tempcntb - \edef\blx@tempd{\expandafter\@gobble\blx@tempd}% - \numdef\blx@tempe\blx@tempcntc - \fi - \fi - \divide\blx@tempcntc10\relax - \ifnum - \ifnum\blx@tempcntc<10 1\fi - \ifnum\blx@tempcntc>\c@mincompwidth\else 1\fi - 0=\z@ - \expandafter\blx@comprange@comp@div - \else - \expandafter\blx@comprange@end - \fi} - -\def\blx@range@chunk#1{% - \blx@range@chunk@semcol#1;&} - -\def\blx@range@chunk@semcol#1;#2&{% - \notblank{#1} - {\blx@range@chunk@comma#1,&} - {}% - \notblank{#2} - {\notblank{#1}{\blx@range@out@delim{;\space}}{}% - \blx@range@chunk@semcol#2&} - {}} - -\def\blx@range@chunk@comma#1,#2&{% - \notblank{#1} - {\expandafter\blx@range@split - \expandafter{\@firstofone#1}} - {}% - \notblank{#2} - {\notblank{#1}{\blx@range@out@delim{,\space}}{}% - \blx@range@chunk@comma#2&} - {}} - -% <*>[<postpro>]{<string>} - -\newrobustcmd*{\mkfirstpage}{% - \begingroup - \@ifstar - {\blx@firstpage\blx@firstpage@ii} - {\blx@firstpage\blx@firstpage@i}} - -\def\blx@firstpage#1{% - \@ifnextchar[{#1}{#1[\@firstofone]}} - -\def\blx@firstpage@i[#1]#2{% - \let\blx@tempa\@empty - \protected\def\blx@range@out@value{\appto\blx@tempa}% - \let\blx@range@out@delim\blx@range@out@value - \let\blx@range@split\blx@firstpage@split - \blx@range@chunk{#2}% - \edef\blx@tempa{\endgroup - \unexpanded{#1}{\expandonce\blx@tempa}}% - \blx@tempa} - -\def\blx@firstpage@ii[#1]#2{% - \protected\def\blx@range@out@value{#1}% - \let\blx@range@out@delim\@firstofone - \let\blx@range@split\blx@firstpage@split - \blx@range@chunk{#2}% - \endgroup} - -\def\blx@firstpage@split#1{% - \def\blx@firstpage@abort{\blx@range@out@value{#1}}% - \blx@firstpage@range#1\bibrangedash\bibrangedash&} - -\def\blx@firstpage@range#1\bibrangedash#2\bibrangedash#3&{% - \ifblank{#3} - {\blx@firstpage@hyphen#1--&} - {\ifblank{#1} - {\blx@range@out@value{\bibrangedash#2}} - {\blx@range@out@value{#1}}}} - -\def\blx@firstpage@hyphen#1-#2-#3&{% - \ifblank{#3} - {\blx@firstpage@abort} - {\ifblank{#1} - {\ifblank{#2} - {\blx@firstpage@hyphen@i#3&} - {\blx@range@out@value{\bibrangedash#2}}} - {\blx@range@out@value{#1}}}} - -\def\blx@firstpage@hyphen@i#1-#2&{% - \ifblank{#1} - {\ifblank{#2} - {\blx@firstpage@abort} - {\blx@firstpage@hyphen@i#2&}} - {\blx@range@out@value{\bibrangedash#1}}} - -\newcommand*{\ppspace}{\addnbspace} -\newcommand*{\sqspace}{\addnbspace} - -\newrobustcmd*{\RN}[1]{% - \begingroup - \expandafter\RNfont - \expandafter{\romannumeral#1}% - \endgroup} -\newrobustcmd*{\Rn}[1]{% - \begingroup - \expandafter\Rnfont - \expandafter{\romannumeral#1}% - \endgroup} - -\newcommand*{\RNfont}{\uppercase} -\newcommand*{\Rnfont}{} - -% {<init>}{<entrytype>} - -\protected\def\blx@imc@usedriver#1#2{% - \begingroup - \let\finentry\blx@finentry@usedrv - \let\newblock\relax - \let\abx@macro@bibindex\@empty - \let\abx@macro@pageref\@empty - \csuse{blx@hook@bbxinit}#1% - \blx@beglang - \blx@driver{#2}% - \blx@endlang - \endgroup} - -% Punctuation - -\protected\def\blx@initunit{% - \global\togglefalse{blx@block}% - \global\togglefalse{blx@unit}% - \global\togglefalse{blx@insert}% - \global\togglefalse{blx@lastins}% - \global\let\blx@unitpunct\newunitpunct - \blx@imc@resetpunctfont} - -\def\blx@begunit{% - \toggletrue{blx@tempa}% - \iftoggle{blx@insert} - {\iftoggle{blx@unit} - {\begingroup - \let\blx@begunit\@empty - \let\blx@endunit\@empty - \let\blx@endnounit\@empty - \blx@unitpunct\blx@postpunct - \endgroup - \global\togglefalse{blx@unit}% - \togglefalse{blx@tempa}} - {\blx@postpunct}% - \iftoggle{blx@block} - {\begingroup - \let\blx@begunit\@empty - \let\blx@endunit\@empty - \let\blx@endnounit\@empty - \newblockpunct - \endgroup - \global\togglefalse{blx@block}% - \togglefalse{blx@tempa}} - {}} - {}% - \blx@postpunct - \blx@imc@resetpunctfont - \iftoggle{blx@tempa} - {} - {\global\togglefalse{blx@insert}}% - \blx@leavevmode - \begingroup} - -\def\blx@endunit{% - \endgroup - \global\toggletrue{blx@insert}% - \global\toggletrue{blx@lastins}} - -\def\blx@nounit{% - \global\togglefalse{blx@lastins}} - -\def\blx@endnounit{% - \endgroup\blx@nounit} - -\protected\def\blx@imc@newblock{% - \global\toggletrue{blx@block}}% - -\protected\def\blx@imc@newunit{% - \global\let\blx@unitpunct\newunitpunct - \global\toggletrue{blx@unit}}% - -\protected\def\blx@imc@setunit{% - \@ifstar\blx@setunit@i\blx@setunit} - -\long\def\blx@setunit#1{% - \long\gdef\blx@unitpunct{#1}% - \global\toggletrue{blx@unit}}% - -\def\blx@setunit@i{% - \iftoggle{blx@lastins} - {\blx@setunit} - {\@gobble}} - -\protected\def\blx@imc@finentry{% - \unspace\finentrypunct - \blx@postpunct - \blx@initunit} - -\protected\def\blx@finentry@usedrv{% - \unspace -% \blx@initunit -} - -\protected\def\blx@finentry@inset{% - \blx@setunit\entrysetpunct - \global\toggletrue{blx@block}} - -\blx@regimcs{% - \ifdriver \thefield \strfield \thelist \thename \clearfield \clearlist - \clearname \restorefield \restorelist \restorename - \ifcategory \ifentrycategory \ifkeyword \ifentrykeyword - \ifciteseen \ifentryseen \ifciteibid \ifciteidem \ifopcit \ifloccit - \ifcurrentfield \ifcurrentlist \ifcurrentname \ifentrytype - \iffieldequalcs \iffieldequals \iffieldequalstr \iffieldsequal - \iffieldundef \iffieldxref \iflistequalcs \iflistequals - \iflistsequal \iflistundef \iflistxref \ifmorenames \ifmoreitems - \ifnameequalcs \ifnameequals \ifnamesequal \ifnameundef \ifnamexref - \iffirstonpage \ifsamepage \savefield \savefieldcs \savelist - \savelistcs \savename \savenamecs \usedriver - \ifinteger \ifnumeral \ifnumerals \ifpages - \iffieldint \iffieldnum \iffieldnums \iffieldpages - \mkpageprefix \mkpagetotal \mkpagefirst - \newblock \newunit \setunit \finentry} - -\appto\blx@blxinit{% - \def\ifnatbibmode{\iftoggle{blx@natbib}}% - \def\ifcitation{\iftoggle{blx@citation}}% - \def\ifbibliography{\iftoggle{blx@bibliography}}% - \def\ifciteindex{\iftoggle{blx@citeindex}}% - \def\ifbibindex{\iftoggle{blx@bibindex}}% - \def\iffootnote{\iftoggle{blx@footnote}}% - \def\ifuseprefix{\iftoggle{blx@useprefix}}% - \def\ifuseauthor{\iftoggle{blx@useauthor}}% - \def\ifuseeditor{\iftoggle{blx@useeditor}}% - \def\ifusetranslator{\iftoggle{blx@usetranslator}}% - \def\iffirstinits{\iftoggle{blx@firstinits}}% - \def\ifsingletitle{\iftoggle{abx@bool@singletitle}}% - \def\ifandothers#1{\iftoggle{abx@bool@more#1}}% - \protected\def\pno{\bibstring{page}}% - \protected\def\ppno{\bibstring{pages}}% - \let\nopp\relax - \protected\def\psq{\sqspace\bibstring{sequens}}% - \protected\def\psqq{\sqspace\bibstring{sequentes}}} - -%% Global formatting hooks - -% capitalization - -% {<text>} - -\newrobustcmd{\MakeCapital}[1]{% - \begingroup - \blx@mkcp@init - \protected@edef\blx@tempa{#1}% - \expandafter\blx@mkcp@parse\blx@tempa\@empty\blx@mkcp@end} - -\def\blx@mkcp@init{% - \def\blx@mkcp@iec{\noexpand\blx@mkcp@iec\noexpand}% - \def\blx@mkcp@bbl{\noexpand\blx@mkcp@bbl\noexpand}% - \def\blx@mkcp@sgl{\noexpand\blx@mkcp@sgl\noexpand}% - \def\blx@mkcp@dbl{\noexpand\blx@mkcp@dbl\noexpand}% - \def\do##1{\def##1{\blx@mkcp@sgl##1}}\abx@dosingleaccents - \def\do##1{\def##1{\blx@mkcp@dbl##1}}\abx@dodoubleaccents - \def\IeC##1{\blx@mkcp@iec\IeC{##1}}% - \def\@tabacckludge##1{% - \expandafter\blx@mkcp@sgl\csname\string##1\endcsname}} - -\begingroup -\catcode`\"=\active -\gappto\blx@mkcp@init{% - \ifnum\catcode`\"=\active - \def"#1{\blx@mkcp@bbl"\noexpand#1}% - \fi} -\endgroup - -\def\blx@mkcp@parse{% - \futurelet\@let@token\blx@mkcp@eval} - -\long\def\blx@mkcp@eval{% - \ifx\@let@token\blx@mkcp@iec - \expandafter\blx@mkcp@getiec - \fi - \ifx\@let@token\blx@mkcp@bbl - \expandafter\blx@mkcp@gettwo - \fi - \ifx\@let@token\blx@mkcp@sgl - \expandafter\blx@mkcp@gettwo - \fi - \ifx\@let@token\blx@mkcp@dbl - \expandafter\blx@mkcp@getthree - \fi - \blx@mkcp@case} - -\def\blx@mkcp@getiec#1\blx@mkcp@case#2#3#4{% - \blx@mkcp@case{#2#3{#4}}} - -\def\blx@mkcp@gettwo#1\blx@mkcp@case#2#3#4{% - \blx@mkcp@case{#2#3#4}} - -\def\blx@mkcp@getthree#1\blx@mkcp@case#2#3#4#5{% - \blx@mkcp@case{#2#3#4#5}} - -\long\def\blx@mkcp@case#1{% - \begingroup - \def\i{I}\def\j{J}% - \def\do##1##2{\let##1##2\do}% - \expandafter\do\@uclclist\relax{\relax\@gobble}% - \uppercase{\protected@edef\blx@tempa{\endgroup\blx@mkcp@end#1}}% - \blx@tempa} - -\protected\long\def\blx@mkcp@end#1\blx@mkcp@end{% - \let\blx@mkcp@iec\noexpand - \let\blx@mkcp@bbl\noexpand - \let\blx@mkcp@sgl\noexpand - \let\blx@mkcp@dbl\noexpand - \protected@edef\blx@tempa{\endgroup#1}% - \blx@tempa} - -\def\abx@dosingleaccents{% - \do\"\do\'\do\`\do\^\do\~\do\=\do\.% - \do\H\do\b\do\c\do\d\do\r\do\u\do\v} -\def\abx@dodoubleaccents{% - \do\t} - -% {<text>} - -\newrobustcmd*{\MakeSentenceCase}{% - \@ifstar\blx@mksc@i\blx@mksc@ii} - -\def\blx@mksc@i{% - \ifdef\abx@field@hyphenation - {\xifinlist\abx@field@hyphenation\blx@cmksc@lang - {\blx@mksc@ii} - {\@firstofone}} - {\blx@mksc@ii}} - -\long\def\blx@mksc@ii#1{% - \begingroup - \let\blx@tempa\@empty - \let\blx@tempb\@empty - \blx@mksc@init - \protected@edef\@tempa{#1}% - \expandafter\blx@mksc@parse\@tempa\blx@mksc@end} - -\def\blx@mksc@init{% - \blx@mkcp@init - \def\blx@mkcp@nil{\noexpand\blx@mkcp@nil\noexpand}% - \def\i{\blx@mkcp@nil\i}\def\j{\blx@mkcp@nil\j}% - \def\do##1{% - \ifx##1\relax - \else - \def##1{\blx@mkcp@nil##1}% - \expandafter\do - \fi}% - \expandafter\do\@uclclist\relax} - -\def\blx@mksc@parse{% - \futurelet\@let@token\blx@mksc@eval} - -\def\blx@mksc@eval{% - \ifx\@let@token\blx@mksc@end - \expandafter\blx@mksc@end - \fi - \ifx\@let@token\bgroup - \expandafter\blx@mksc@group - \fi - \ifx\@let@token\@sptoken - \expandafter\blx@mksc@space - \fi - \ifx\@let@token\blx@mkcp@nil - \expandafter\blx@mksc@getone - \fi - \ifx\@let@token\blx@mkcp@iec - \expandafter\blx@mksc@getiec - \fi - \ifx\@let@token\blx@mkcp@bbl - \expandafter\blx@mksc@gettwo - \fi - \ifx\@let@token\blx@mkcp@sgl - \expandafter\blx@mksc@gettwo - \fi - \ifx\@let@token\blx@mkcp@dbl - \expandafter\blx@mksc@getthree - \fi - \if\noexpand\@let@token\relax - \expandafter\blx@mksc@cs - \fi - \blx@mksc@other} - -\def\blx@mksc@end#1\blx@mksc@end{% - \blx@mksc@eject - \let\blx@mkcp@nil\noexpand - \let\blx@mkcp@iec\noexpand - \let\blx@mkcp@bbl\noexpand - \let\blx@mkcp@sgl\noexpand - \let\blx@mkcp@dbl\noexpand - \let\MakeUppercase\relax - \let\MakeLowercase\relax - \protected@edef\blx@tempa{\endgroup\blx@tempa}% - \blx@tempa} - -\long\def\blx@mksc@group#1\blx@mksc@other#2{% - \futurelet\@let@token\blx@mksc@ingroup#2&{#2}% - \blx@mksc@endhead - \blx@mksc@parse} - -\long\def\blx@mksc@ingroup#1{% - \if\noexpand\@let@token\relax - \blx@mksc@locase{{#2}}% - \else - \blx@mksc@nocase{{#2}}% - \fi} - -\def\blx@mksc@space{\def\blx@mksc@space##1\blx@mksc@other} -\csuse{blx@mksc@space} {% - \blx@mksc@anycase{ }% - \blx@mksc@endhead - \blx@mksc@parse} - -\long\def\blx@mksc@cs#1\blx@mksc@other#2{% - \ifcat\noexpand~\noexpand#2% - \blx@mksc@locase{#2}% - \else - \blx@mksc@nocase{#2}% - \fi - \blx@mksc@endhead - \blx@mksc@parse} - -\def\blx@mksc@getiec#1\blx@mksc@other#2#3#4{% - \blx@mksc@other{#2#3{#4}}} - -\def\blx@mksc@getone#1\blx@mksc@other#2#3{% - \blx@mksc@other{#2#3}} - -\def\blx@mksc@gettwo#1\blx@mksc@other#2#3#4{% - \blx@mksc@other{#2#3#4}} - -\def\blx@mksc@getthree#1\blx@mksc@other#2#3#4#5{% - \blx@mksc@other{#2#3#4#5}} - -\long\def\blx@mksc@other#1{% - \blx@mksc@locase{#1}% - \blx@mksc@endhead - \blx@mksc@parse} - -\def\blx@mksc@locase{% - \appto\blx@tempb} - -\def\blx@mksc@nocase{% - \blx@mksc@eject - \appto\blx@tempa} - -\def\blx@mksc@anycase{% - \ifx\blx@tempb\@empty - \expandafter\appto - \expandafter\blx@tempa - \else - \expandafter\appto - \expandafter\blx@tempb - \fi} - -\def\blx@mksc@eject{% - \ifx\blx@tempb\@empty - \else - \eappto\blx@tempa{\noexpand\MakeLowercase{\expandonce\blx@tempb}}% - \let\blx@tempb\@empty - \fi} - -\def\blx@mksc@endhead{% - \ifx\blx@tempb\@empty - \else - \eappto\blx@tempa{\noexpand\MakeCapital{\expandonce\blx@tempb}}% - \let\blx@tempb\@empty - \fi - \let\blx@mksc@endhead\relax} - -% {<language,language,...>} - -\newrobustcmd*{\DeclareCaseLangs}{% - \@ifstar - {\blx@defcaselangs} - {\global\let\blx@cmksc@lang\@empty - \blx@defcaselangs}} - -\def\blx@defcaselangs#1{% - \ifblank{#1} - {} - {\forcsvlist{\listgadd\blx@cmksc@lang}{#1}}} - -\DeclareCaseLangs{% - american,british,canadian, - english,USenglish,UKenglish, - australian,newzealand} - -%% Main formatting commands - -% [<entrytype>]{<name>}{<definiton>} - -\newrobustcmd*{\DeclareNameFormat}{% - \@ifstar - {\blx@defformat\blx@defnameformat{nfd}*} - {\blx@defformat\blx@defnameformat{nfd}{}}} -\newrobustcmd*{\DeclareIndexNameFormat}{% - \@ifstar - {\blx@defformat\blx@defnameformat{nid}*} - {\blx@defformat\blx@defnameformat{nid}{}}} - -\newrobustcmd*{\DeclareListFormat}{% - \@ifstar - {\blx@defformat\blx@defplainformat{lfd}*} - {\blx@defformat\blx@defplainformat{lfd}{}}} -\newrobustcmd*{\DeclareIndexListFormat}{% - \@ifstar - {\blx@defformat\blx@defplainformat{lid}*} - {\blx@defformat\blx@defplainformat{lid}{}}} - -\newrobustcmd*{\DeclareFieldFormat}{% - \@ifstar - {\blx@defformat\blx@defplainformat{ffd}*} - {\blx@defformat\blx@defplainformat{ffd}{}}} -\newrobustcmd*{\DeclareIndexFieldFormat}{% - \@ifstar - {\blx@defformat\blx@defplainformat{fid}*} - {\blx@defformat\blx@defplainformat{fid}{}}} - -% {<macro>}{<class>}{<*>} - -\def\blx@defformat#1#2#3{% - \@ifnextchar[%] - {\blx@defformat@i{#1}{#2}{#3}} - {\blx@defformat@i{#1}{#2}{#3}[*]}} - -% {<macro>}{<class>}{<*>}[<entrytype>]{<name>} - -\def\blx@defformat@i#1#2#3[#4]#5{% - \notblank{#3} - {\blx@resetformat{#2}{#5}} - {}% - \def\blx@defformat@a{#2}% - \def\blx@defformat@b{#4}% - \blx@xsanitizeafter{\def\blx@defformat@c}{#5}% - \afterassignment\blx@defformat@ii - #1} - -\def\blx@defformat@ii{% - \expandafter\forcsvlist - \expandafter\blx@defformat@iii - \expandafter{\blx@defformat@b}} - -\def\blx@defformat@iii#1{% - \cslet{abx@\blx@defformat@a @#1@\blx@defformat@c}\blx@defformat@d} - -\def\blx@defplainformat{% - \long\def\blx@defformat@d##1} - -\def\blx@defnameformat{% - \long\def\blx@defformat@d##1##2##3##4##5##6##7##8} - -\def\blx@resetformat#1#2{% - \let\blx@saved@do\do - \def\do##1{\blx@resetformat@i{#1}{#2}{##1}}% - \blx@safe@actives - \abx@dotypes - \blx@rest@actives - \let\do\blx@saved@do} - -\def\blx@resetformat@i#1#2#3{% - \ifcsdef{abx@#1@#3@#2} - {\csundef{abx@#1@#3@#2}} - {}} - -% {<name>}{<name>} - -\def\blx@letformat#1#2{% - \blx@safe@actives - \afterassignment\blx@rest@actives - \csletcs{#1}{#2}} - -% [aliastype]{aliasname}[formattype]{formatname} - -\def\blx@defalias#1{% - \@ifnextchar[%] - {\blx@defalias@i{#1}} - {\blx@defalias@i{#1}[*]}} -\def\blx@defalias@i#1[#2]#3{% - \@ifnextchar[%] - {\blx@defalias@ii{#1}{#2}{#3}} - {\blx@defalias@ii{#1}{#2}{#3}[*]}} -\def\blx@defalias@ii#1#2#3[#4]#5{% - \blx@safe@actives - \afterassignment\blx@rest@actives - \csedef{abx@#1@#2@#3}{% - \expandonce{\csname abx@#1@#4@#5\endcsname}}} - -% {<macro>}{<id>}{<name>}{<field>} - -\def\blx@getformat#1#2#3#4{% - \blx@safe@actives - \afterassignment\blx@rest@actives - \ifcsundef{abx@#2@\blx@imc@thefield{entrytype}@#3} - {\ifcsundef{abx@#2@*@#3} - {\ifcsundef{abx@#2@\blx@imc@thefield{entrytype}@#4} - {\ifcsundef{abx@#2@*@#4} - {\letcs#1{abx@#2@*@default}} - {\letcs#1{abx@#2@*@#4}}} - {\letcs#1{abx@#2@\blx@imc@thefield{entrytype}@#4}}} - {\letcs#1{abx@#2@*@#3}}} - {\letcs#1{abx@#2@\blx@imc@thefield{entrytype}@#3}}} - -% [<entrytype>]{<name>} - -\newrobustcmd*{\savefieldformat}[2][*]{\blx@save{abx@ffd@#1@#2}} -\newrobustcmd*{\savelistformat}[2][*]{\blx@save{abx@lfd@#1@#2}} -\newrobustcmd*{\savenameformat}[2][*]{\blx@save{abx@nfd@#1@#2}} - -\newrobustcmd*{\restorefieldformat}[2][*]{\blx@restore{abx@ffd@#1@#2}} -\newrobustcmd*{\restorelistformat}[2][*]{\blx@restore{abx@lfd@#1@#2}} -\newrobustcmd*{\restorenameformat}[2][*]{\blx@restore{abx@nfd@#1@#2}} - -% [<entrytype>]{<alias>}[<entrytype>]{<name>} - -\newrobustcmd*{\DeclareNameAlias}{\blx@defalias{nfd}} -\newrobustcmd*{\DeclareIndexNameAlias}{\blx@defalias{nid}} - -\newrobustcmd*{\DeclareListAlias}{\blx@defalias{lfd}} -\newrobustcmd*{\DeclareIndexListAlias}{\blx@defalias{lid}} - -\newrobustcmd*{\DeclareFieldAlias}{\blx@defalias{ffd}} -\newrobustcmd*{\DeclareIndexFieldAlias}{\blx@defalias{fid}} - -% [<format>]{<text>} - -\newrobustcmd{\blx@imc@printtext}[2][]{% - \ifblank{#2} - {\blx@nounit} - {\ifblank{#1} - {\let\blx@theformat\@firstofone} - {\blx@getformat\blx@theformat{ffd}{#1}{}}% - \ifdefvoid\blx@theformat - {\blx@nounit} - {\blx@begunit - \blx@theformat{#2}% - \blx@endunit}}} - -% [<format>]{<field>} - -\newrobustcmd*{\blx@imc@printfield}[2][]{% - \blx@imc@iffieldundef{#2} - {\blx@nounit} - {\blx@getformat\blx@theformat{ffd}{#1}{#2}% - \ifdefvoid\blx@theformat - {\blx@nounit} - {\blx@begunit - \def\currentfield{#2}% - \expandafter\expandafter - \expandafter\blx@theformat - \expandafter\expandafter - \expandafter{\csname abx@field@#2\endcsname}% - \blx@endunit}}} - -% [<format>]{<field>} - -\newcommand*{\blx@imc@indexfield}[2][]{% - \blx@imc@iffieldundef{#2} - {} - {\blx@getformat\blx@theformat{fid}{#1}{#2}% - \ifdefvoid\blx@theformat - {} - {\begingroup - \def\currentfield{#2}% - \letcs\blx@tempa{abx@field@#2}% - \expandafter\blx@theformat\expandafter{\blx@tempa}% - \endgroup}}} - -% [<format>]{<file>} - -\newrobustcmd*{\blx@imc@printfile}[2][]{% - \iftoggle{blx@loadfiles} - {\IfFileExists{#2} - {\listxadd\blx@list@req@edit{#2}% - \blx@imc@printtext[#1]{\input{#2}\unspace}} - {\blx@nounit}} - {\blx@nounit}} - -% {<macro>}[<format>][<start>-<stop>] -% => <macro>{<format>}{<start>}{<stop>} - -\def\blx@listargs#1{% - \@ifnextchar[%] - {\blx@listargs@i{#1}} - {#1{}{}{}}} - -\def\blx@listargs@i#1[#2]{% - \@ifnextchar[%] - {\blx@listargs@ii{#1}{#2}} - {#1{#2}{}{}}} - -\def\blx@listargs@ii#1#2[#3]{% - \blx@listargs@iii{#1}{#2}#3&} - -\def\blx@listargs@iii#1#2#3-#4&{% - #1{#2}{#3}{#4}} - -% [<format>][<start>-<stop>]{<namelist>} - -\protected\def\blx@imc@printnames{% - \blx@listargs\blx@printnames} - -% {<format>}{<start>}{<stop>}{<namelist>} - -\def\blx@printnames#1#2#3#4{% - \blx@imc@ifnameundef{#4} - {\blx@nounit} - {\blx@getformat\blx@theformat{nfd}{#1}{#4}% - \ifdefvoid\blx@theformat - {\blx@nounit} - {\blx@begunit - \blx@namesetup{#2}{#3}{#4}% - \expandafter\blx@nameparser\blx@thedata{}&% - \blx@endunit}}} - -\def\blx@namesetup#1#2#3{% - \def\currentname{#3}% - \c@listcount\@ne - \c@listtotal\csname c@#3\endcsname - \blx@namesetup@i{#3}% - \ifblank{#1} - {\c@liststart\@ne} - {\ifnum#1<\@ne - \c@liststart\@ne - \else - \c@liststart#1\relax - \fi}% - \ifblank{#2} - {\c@liststop\c@listtotal - \ifnum\c@liststop>\c@maxnames - \c@liststop\c@minnames - \ifnum\c@uniquelist>\c@liststop - \c@liststop\c@uniquelist - \fi - \fi} - {\ifnum#2>\c@listtotal - \c@liststop\c@listtotal - \else - \ifnum#2<\@ne - \c@liststop\@ne - \else - \c@liststop#2\relax - \fi - \fi}% - \ifnumequal\blx@backend\blx@backend@biber - {} - {\let~\bibnamedelima}% BibTeX only - \blx@namecodes} - -\def\blx@namesetup@i#1{% - \expandafter\expandafter - \expandafter\blx@namesetup@ii\csname abx@name@#1\endcsname} - -\def\blx@namesetup@ii#1#2{% - \c@uniquelist\z@ - \ifblank{#1} - {} - {\setkeys{blx@opt@name}{#1}}% - \def\blx@thedata{#2}} - -\define@key{blx@opt@name}{uniquelist}{\c@uniquelist#1\relax} -\define@key{blx@opt@name}{uniquename}{\c@uniquename#1\relax} -\define@key{blx@opt@name}{hash}{\edef\abx@field@hash{\detokenize{#1}}} - -\newrobustcmd*{\bibinitperiod}{\adddot} -\newrobustcmd*{\bibinitdelim}{\addnbspace} -\newrobustcmd*{\bibinithyphendelim}{.\mbox{-}} -\newrobustcmd*{\bibnamedelima}{\addhighpenspace} -\newrobustcmd*{\bibnamedelimb}{\addlowpenspace} -\newrobustcmd*{\bibnamedelimc}{\addhighpenspace} -\newrobustcmd*{\bibnamedelimd}{\addlowpenspace} -\newrobustcmd*{\bibnamedelimi}{\addnbspace} - -% [<format>][<start>-<stop>]{<namelist>} - -\protected\def\blx@imc@indexnames{% - \blx@listargs\blx@indexnames} - -% {<format>}{<start>}{<stop>}{<namelist>} - -\def\blx@indexnames#1#2#3#4{% - \blx@imc@ifnameundef{#4} - {} - {\blx@getformat\blx@theformat{nid}{#1}{#4}% - \ifdefvoid\blx@theformat - {} - {\begingroup - \blx@namesetup{#2}{#3}{#4}% - \blx@indexnamesetup - \expandafter\blx@nameparser\blx@thedata{}&% - \endgroup}}} - -\def\blx@indexnamesetup{% - \let\bibinitperiod\bibindexinitperiod - \let\bibinitdelim\bibindexinitdelim - \let\bibinithyphendelim\bibindexinithyphendelim - \let\bibnamedelima\bibindexnamedelima - \let\bibnamedelimb\bibindexnamedelimb - \let\bibnamedelimc\bibindexnamedelimc - \let\bibnamedelimd\bibindexnamedelimd - \let\bibnamedelimi\bibindexnamedelimi} - -% {<name1>}{<name2>}{...} - -\long\def\blx@nameparser#1{% - \ifblank{#1} - {\blx@namebreak} - {\ifnum\c@listcount<\c@liststart - \else - \blx@nameparser@i#1% - \fi - \advance\c@listcount\@ne - \ifnum\c@listcount>\c@liststop - \expandafter\blx@namebreak - \fi - \blx@nameparser}} - -\long\def\blx@nameparser@i#1{% - \ifblank{#1} - {} - {\setkeys{blx@opt@name}{#1}}% - \blx@theformat} - -\long\def\blx@namebreak#1&{} - -% [<format>][<start>-<stop>]{<plainlist>} - -\protected\def\blx@imc@printlist{% - \blx@listargs\blx@printlist} - -% {<format>}{<start>}{<stop>}{<plainlist>} - -\def\blx@printlist#1#2#3#4{% - \blx@imc@iflistundef{#4} - {\blx@nounit} - {\blx@getformat\blx@theformat{lfd}{#1}{#4}% - \ifdefvoid\blx@theformat - {\blx@nounit} - {\blx@begunit - \blx@listsetup{#2}{#3}{#4}% - \expandafter\blx@listparser\blx@thedata{}&% - \blx@endunit}}} - -\def\blx@listsetup#1#2#3{% - \def\currentlist{#3}% - \c@listcount\@ne - \expandafter\c@listtotal\csname c@#3\endcsname - \letcs\blx@thedata{abx@list@#3}% - \ifblank{#1} - {\c@liststart\@ne} - {\ifnum#1<\@ne - \c@liststart\@ne - \else - \c@liststart#1\relax - \fi}% - \ifblank{#2} - {\c@liststop\c@listtotal - \ifnum\c@listtotal>\c@maxitems - \c@liststop\c@minitems - \fi} - {\ifnum#2>\c@listtotal - \c@liststop\c@listtotal - \else - \ifnum#2<\@ne - \c@liststop\@ne - \else - \c@liststop#2\relax - \fi - \fi}} - -% [<format>][<start>-<stop>]{<plainlist>} - -\protected\def\blx@imc@indexlist{% - \blx@listargs\blx@indexlist} - -% {<format>}{<start>}{<stop>}{<plainlist>} - -\def\blx@indexlist#1#2#3#4{% - \blx@imc@iflistundef{#4} - {} - {\blx@getformat\blx@theformat{lid}{#1}{#4}% - \ifdefvoid\blx@theformat - {} - {\begingroup - \blx@listsetup{#2}{#3}{#4}% - \expandafter\blx@listparser\blx@thedata{}&% - \endgroup}}} - -% {<item1>}{<item2>}{...} - -\long\def\blx@listparser#1{% - \ifblank{#1} - {\blx@listbreak} - {\ifnum\c@listcount<\c@liststart - \else - \blx@theformat{#1}% - \fi - \advance\c@listcount\@ne - \ifnum\c@listcount>\c@liststop - \expandafter\blx@listbreak - \fi - \blx@listparser}} - -\long\def\blx@listbreak#1&{} - -% <*>{<key>}{<code>} - -\protected\def\blx@imc@entrydata{% - \@ifstar - {\blx@xsanitizeafter{\blx@imc@entrydata@i\blx@saveentry}} - {\blx@xsanitizeafter{\blx@imc@entrydata@i{}}}} - -\long\def\blx@imc@entrydata@i#1#2#3{% - \blx@ifdata{#2} - {\begingroup - #1% - \blx@resetdata - \blx@getdata{#2}% - \blx@entrysetcount - \blx@setoptions@type\abx@field@entrytype - \blx@setoptions@entry - \addtocounter{instcount}\@ne - \blx@execute - \blx@beglang#3\blx@endlang - \endgroup} - {}} - -\protected\def\blx@imc@entryset#1#2{% - \blx@imc@iffieldundef{entrykey} - {} - {\begingroup - \long\def\blx@entryset@precode{#1}% - \long\def\blx@entryset@postcode{#2}% - \let\finentry\blx@finentry@inset - \let\do\blx@entryset - \blx@imc@docsvfield{entryset}% - \endgroup}} - -\def\blx@entryset#1{% - \blx@ifdata{#1} - {\begingroup - \blx@imc@clearlist{pageref}% - \blx@getdata{#1}% - \blx@setoptions@type\abx@field@entrytype - \def\abx@field@entrysetcount{1}% - \blx@entryset@precode - \blx@driver{\blx@imc@thefield{entrytype}}% - \blx@entryset@postcode - \endgroup} - {}% - \let\do\blx@entryset@i} - -\def\blx@entryset@i#1{% - \blx@imc@entrydata{#1}{% - \blx@entryset@precode - \blx@driver{\blx@imc@thefield{entrytype}} - \blx@entryset@postcode}} - -\blx@regimcs{% - \printtext \printfield \printlist \printnames \printfile - \indexfield \indexlist \indexnames \entrydata \entryset} - -%% Localization - -% [<wrapper>]{<string>} - -\newrobustcmd*{\blx@imc@bibstring}[2][\@firstofone]{% - \blx@bibstring{#1}{\abx@str}{#2}} - -\newrobustcmd*{\blx@imc@biblstring}[2][\@firstofone]{% - \blx@bibstring{#1}{abx@lstr}{#2}} - -\newrobustcmd*{\blx@imc@bibsstring}[2][\@firstofone]{% - \blx@bibstring{#1}{abx@sstr}{#2}} - -\protected\def\blx@bibstring#1#2#3{% - \blx@begunit - \blx@hyphenreset - \let\bibstring\blx@imc@bibxstring - \let\biblstring\blx@imc@bibxlstring - \let\bibsstring\blx@imc@bibxsstring - \lowercase{\edef\blx@tempa{#3}}% - \ifcsundef{#2@\blx@tempa} - {\blx@warn@nostring\blx@tempa - \blx@endnounit} - {\blx@imc@ifcapital - {#1{\MakeCapital{\csuse{#2@\blx@tempa}}}} - {#1{\csuse{#2@\blx@tempa}}}% - \blx@endunit}} - -% [<wrapper>]{<string>} - -\newrobustcmd*{\blx@imc@bibcpstring}[2][\@firstofone]{% - \blx@bibcpstring{#1}{\abx@str}{#2}} - -\newrobustcmd*{\blx@imc@bibcplstring}[2][\@firstofone]{% - \blx@bibcpstring{#1}{abx@lstr}{#2}} - -\newrobustcmd*{\blx@imc@bibcpsstring}[2][\@firstofone]{% - \blx@bibcpstring{#1}{abx@sstr}{#2}} - -\protected\def\blx@bibcpstring#1#2#3{% - \blx@begunit - \blx@hyphenreset - \let\bibstring\blx@imc@bibxstring - \let\biblstring\blx@imc@bibxlstring - \let\bibsstring\blx@imc@bibxsstring - \lowercase{\edef\blx@tempa{#3}}% - \ifcsundef{#2@\blx@tempa} - {\blx@warn@nostring\blx@tempa - \blx@endnounit} - {#1{\MakeCapital{\csuse{#2@\blx@tempa}}}% - \blx@endunit}} - -% [<wrapper>]{<string>} - -\newrobustcmd*{\blx@imc@biblcstring}[2][\@firstofone]{% - \blx@biblcstring{#1}{\abx@str}{#2}} - -\newrobustcmd*{\blx@imc@biblclstring}[2][\@firstofone]{% - \blx@biblcstring{#1}{abx@lstr}{#2}} - -\newrobustcmd*{\blx@imc@biblcsstring}[2][\@firstofone]{% - \blx@biblcstring{#1}{abx@sstr}{#2}} - -\protected\def\blx@biblcstring#1#2#3{% - \blx@begunit - \blx@hyphenreset - \let\bibstring\blx@imc@bibxstring - \let\biblstring\blx@imc@bibxlstring - \let\bibsstring\blx@imc@bibxsstring - \lowercase{\edef\blx@tempa{#3}}% - \ifcsundef{#2@\blx@tempa} - {\blx@warn@nostring\blx@tempa - \blx@endnounit} - {#1{\MakeLowercase{\csuse{#2@\blx@tempa}}}% - \blx@endunit}} - -% [<wrapper>]{<string>} - -\newrobustcmd*{\blx@imc@bibucstring}[2][\@firstofone]{% - \blx@bibucstring{#1}{\abx@str}{#2}} - -\newrobustcmd*{\blx@imc@bibuclstring}[2][\@firstofone]{% - \blx@bibucstring{#1}{abx@lstr}{#2}} - -\newrobustcmd*{\blx@imc@bibucsstring}[2][\@firstofone]{% - \blx@bibucstring{#1}{abx@sstr}{#2}} - -\protected\def\blx@bibucstring#1#2#3{% - \blx@begunit - \blx@hyphenreset - \let\bibstring\blx@imc@bibxstring - \let\biblstring\blx@imc@bibxlstring - \let\bibsstring\blx@imc@bibxsstring - \lowercase{\edef\blx@tempa{#3}}% - \ifcsundef{#2@\blx@tempa} - {\blx@warn@nostring\blx@tempa - \blx@endnounit} - {#1{\MakeUppercase{\csuse{#2@\blx@tempa}}}% - \blx@endunit}} - -% {<string>} - -\def\blx@imc@bibxstring#1{% - \blx@bibxstring{\abx@str}{#1}} - -\def\blx@imc@bibxlstring#1{% - \blx@bibxstring{abx@lstr}{#1}} - -\def\blx@imc@bibxsstring#1{% - \blx@bibxstring{abx@sstr}{#1}} - -\def\blx@bibxstring#1#2{% - \ifcsundef{#1@#2} - {\protect\blx@warn@nostring{#2}} - {\csuse{#1@#2}}} - -% {<string>}{<true>}{<false>} - -\def\blx@imc@ifbibstring#1{% - \ifcsundef{\abx@str @\detokenize{#1}} - {\@secondoftwo} - {\@firstoftwo}} - -\def\blx@imc@ifbibxstring#1{% - \blx@xsanitizeafter\ifcsundef{\abx@str @#1} - {\@secondoftwo} - {\@firstoftwo}} - -% {<field>}{<true>}{<false>} - -\def\blx@imc@iffieldbibstring#1{% - \blx@imc@iffieldundef{#1} - {\@secondoftwo} - {\ifcsundef{\abx@str @\detokenize\expandafter - \expandafter\expandafter{% - \csname abx@field@#1\endcsname}} - {\@secondoftwo} - {\@firstoftwo}}} - -\blx@regimcs{% - \bibstring \biblstring \bibsstring - \bibxstring \bibxlstring \bibxsstring - \bibcpstring \bibcplstring \bibcpsstring - \biblcstring \biblclstring \biblcsstring - \bibucstring \bibuclstring \bibucsstring - \ifbibstring \ifbibxstring \iffieldbibstring} - -\let\blx@hook@uc\relax -\let\blx@hook@lc\relax - -\AtEndPreamble{% - \toggletrue{blx@tempa}% - \toggletrue{blx@tempb}% - \expandafter\patchcmd\csname MakeUppercase \endcsname - {\protected@edef} - {\blx@hook@uc\protected@edef} - {\togglefalse{blx@tempa}} - {}% - \expandafter\patchcmd\csname MakeLowercase \endcsname - {\protected@edef} - {\blx@hook@lc\protected@edef} - {\togglefalse{blx@tempb}} - {}% - \@ifpackageloaded{textcase} - {\expandafter\patchcmd\csname MakeUppercase \endcsname - {\def\i} - {\blx@hook@uc\def\i} - {\togglefalse{blx@tempa}} - {}% - \expandafter\patchcmd\csname MakeLowercase \endcsname - {\@uclcnotmath{}} - {\@uclcnotmath{\blx@hook@lc}} - {\togglefalse{blx@tempb}} - {}% - \expandafter\patchcmd\csname MakeTextUppercase \endcsname - {\def\i} - {\blx@hook@uc\def\i} - {} - {}% - \expandafter\patchcmd\csname MakeTextLowercase \endcsname - {\@uclcnotmath{}} - {\@uclcnotmath{\blx@hook@lc}} - {} - {}} - {}% - \iftoggle{blx@tempa}{\blx@err@patch{\string\MakeUppercase}}{}% - \iftoggle{blx@tempb}{\blx@err@patch{\string\MakeLowercase}}{}% -} - -\appto\blx@blxinit{% - \def\blx@hook@uc{% - \def\bibstring{\blx@imc@bibucstring}% - \def\biblstring{\blx@imc@bibuclstring}% - \def\bibsstring{\blx@imc@bibucsstring}% - \def\biblcstring{\blx@imc@bibucstring}% - \def\biblclstring{\blx@imc@bibuclstring}% - \def\biblcsstring{\blx@imc@bibucsstring}% - \def\bibcpstring{\blx@imc@bibucstring}% - \def\bibcplstring{\blx@imc@bibuclstring}% - \def\bibcpsstring{\blx@imc@bibucsstring}}% - \def\blx@hook@lc{% - \def\bibstring{\blx@imc@biblcstring}% - \def\biblstring{\blx@imc@biblclstring}% - \def\bibsstring{\blx@imc@biblcsstring}% - \def\bibucstring{\blx@imc@biblcstring}% - \def\bibuclstring{\blx@imc@biblclstring}% - \def\bibucsstring{\blx@imc@biblcsstring}% - \def\bibcpstring{\blx@imc@biblcstring}% - \def\bibcplstring{\blx@imc@biblclstring}% - \def\bibcpsstring{\blx@imc@biblcsstring}}} - -\def\abx@dostrings{% - \do{bibliography}% - \do{references}% - \do{shorthands}% - \do{editor}% - \do{editors}% - \do{compiler}% - \do{compilers}% - \do{redactor}% - \do{redactors}% - \do{reviser}% - \do{revisers}% - \do{founder}% - \do{founders}% - \do{continuator}% - \do{continuators}% - \do{collaborator}% - \do{collaborators}% - \do{translator}% - \do{translators}% - \do{commentator}% - \do{commentators}% - \do{annotator}% - \do{annotators}% - \do{commentary}% - \do{annotations}% - \do{introduction}% - \do{foreword}% - \do{afterword}% - \do{editortr}% - \do{editorstr}% - \do{editorco}% - \do{editorsco}% - \do{editoran}% - \do{editorsan}% - \do{editorin}% - \do{editorsin}% - \do{editorfo}% - \do{editorsfo}% - \do{editoraf}% - \do{editorsaf}% - \do{editortrco}% - \do{editorstrco}% - \do{editortran}% - \do{editorstran}% - \do{editortrin}% - \do{editorstrin}% - \do{editortrfo}% - \do{editorstrfo}% - \do{editortraf}% - \do{editorstraf}% - \do{editorcoin}% - \do{editorscoin}% - \do{editorcofo}% - \do{editorscofo}% - \do{editorcoaf}% - \do{editorscoaf}% - \do{editoranin}% - \do{editorsanin}% - \do{editoranfo}% - \do{editorsanfo}% - \do{editoranaf}% - \do{editorsanaf}% - \do{editortrcoin}% - \do{editorstrcoin}% - \do{editortrcofo}% - \do{editorstrcofo}% - \do{editortrcoaf}% - \do{editorstrcoaf}% - \do{editortranin}% - \do{editorstranin}% - \do{editortranfo}% - \do{editorstranfo}% - \do{editortranaf}% - \do{editorstranaf}% - \do{translatorco}% - \do{translatorsco}% - \do{translatoran}% - \do{translatorsan}% - \do{translatorin}% - \do{translatorsin}% - \do{translatorfo}% - \do{translatorsfo}% - \do{translatoraf}% - \do{translatorsaf}% - \do{translatorcoin}% - \do{translatorscoin}% - \do{translatorcofo}% - \do{translatorscofo}% - \do{translatorcoaf}% - \do{translatorscoaf}% - \do{translatoranin}% - \do{translatorsanin}% - \do{translatoranfo}% - \do{translatorsanfo}% - \do{translatoranaf}% - \do{translatorsanaf}% - \do{byauthor}% - \do{byeditor}% - \do{byeditor}% - \do{bycompiler}% - \do{byredactor}% - \do{byreviser}% - \do{byfounder}% - \do{bycontinuator}% - \do{bycollaborator}% - \do{bytranslator}% - \do{bycommentator}% - \do{byannotator}% - \do{withcommentator}% - \do{withannotator}% - \do{withintroduction}% - \do{withforeword}% - \do{withafterword}% - \do{byeditortr}% - \do{byeditorco}% - \do{byeditoran}% - \do{byeditorin}% - \do{byeditorfo}% - \do{byeditoraf}% - \do{byeditortrco}% - \do{byeditortran}% - \do{byeditortrin}% - \do{byeditortrfo}% - \do{byeditortraf}% - \do{byeditorcoin}% - \do{byeditorcofo}% - \do{byeditorcoaf}% - \do{byeditoranin}% - \do{byeditoranfo}% - \do{byeditoranaf}% - \do{byeditortrcoin}% - \do{byeditortrcofo}% - \do{byeditortrcoaf}% - \do{byeditortranin}% - \do{byeditortranfo}% - \do{byeditortranaf}% - \do{bytranslatorco}% - \do{bytranslatoran}% - \do{bytranslatorin}% - \do{bytranslatorfo}% - \do{bytranslatoraf}% - \do{bytranslatorcoin}% - \do{bytranslatorcofo}% - \do{bytranslatorcoaf}% - \do{bytranslatoranin}% - \do{bytranslatoranfo}% - \do{bytranslatoranaf}% - \do{and}% - \do{andothers}% - \do{andmore}% - \do{volume}% - \do{volumes}% - \do{part}% - \do{jourvol}% - \do{jourser}% - \do{newseries}% - \do{oldseries}% - \do{edition}% - \do{reprint}% - \do{reprintof}% - \do{reprintas}% - \do{page}% - \do{pages}% - \do{column}% - \do{columns}% - \do{line}% - \do{lines}% - \do{verse}% - \do{verses}% - \do{section}% - \do{sections}% - \do{paragraph}% - \do{paragraphs}% - \do{in}% - \do{inseries}% - \do{ofseries}% - \do{book}% - \do{issue}% - \do{number}% - \do{chapter}% - \do{mathesis}% - \do{phdthesis}% - \do{resreport}% - \do{techreport}% - \do{software}% - \do{datacd}% - \do{audiocd}% - \do{version}% - \do{doi}% - \do{url}% - \do{urlseen}% - \do{file}% - \do{inpreparation}% - \do{submitted}% - \do{inpress}% - \do{forthcoming}% - \do{library}% - \do{abstract}% - \do{annotation}% - \do{citedas}% - \do{seenote}% - \do{quotedin}% - \do{opcit}% - \do{loccit}% - \do{ibidem}% - \do{idem}% - \do{idemsf}% - \do{idemsm}% - \do{idemsn}% - \do{idempf}% - \do{idempm}% - \do{idempn}% - \do{idempp}% - \do{confer}% - \do{sequens}% - \do{sequentes}% - \do{passim}% - \do{see}% - \do{seealso}% - \do{backrefpage}% - \do{backrefpages}% - \do{thiscite}% - \do{january}% - \do{february}% - \do{march}% - \do{april}% - \do{may}% - \do{june}% - \do{july}% - \do{august}% - \do{september}% - \do{october}% - \do{november}% - \do{december}% - \do{langamerican}% - \do{langbrazilian}% - \do{langcroatian}% - \do{langdanish}% - \do{langdutch}% - \do{langenglish}% - \do{langfinnish}% - \do{langfrench}% - \do{langgerman}% - \do{langgreek}% - \do{langitalian}% - \do{langlatin}% - \do{langnorwegian}% - \do{langportuguese}% - \do{langrussian}% - \do{langspanish}% - \do{langswedish}% - \do{fromamerican}% - \do{frombrazilian}% - \do{fromcroatian}% - \do{fromdanish}% - \do{fromdutch}% - \do{fromenglish}% - \do{fromfinnish}% - \do{fromfrench}% - \do{fromgerman}% - \do{fromgreek}% - \do{fromitalian}% - \do{fromlatin}% - \do{fromnorwegian}% - \do{fromportuguese}% - \do{fromrussian}% - \do{fromspanish}% - \do{fromswedish}% - \do{countryde}% - \do{countryep}% - \do{countryeu}% - \do{countryfr}% - \do{countryuk}% - \do{countryus}% - \do{patent}% - \do{patentde}% - \do{patenteu}% - \do{patentfr}% - \do{patentuk}% - \do{patentus}% - \do{patreq}% - \do{patreqde}% - \do{patreqeu}% - \do{patreqfr}% - \do{patrequk}% - \do{patrequs}% -} - -\newrobustcmd*{\NewBibliographyString}[1]{% - \forcsvlist\blx@newstring{#1}} - -\def\blx@newstring#1{% - \ifcsundef{KV@blx@lbx@#1} - {\gappto\abx@dostrings{\do{#1}}% - \csgdef{KV@blx@lbx@#1}##1{\blx@defstring{#1}{##1}}} - {}} - -% in *.cbx/bbx/tex: <key> = {<string>}, -% in *.lbx: <key> = {{<longstring>}{<abbrevstring>}}, - -\def\do#1{\define@key{blx@lbx}{#1}{\blx@defstring{#1}{##1}}} -\abx@dostrings - -% in *.cbx/bbx/tex: (implicit) -% in *.lbx: inherit = {<language>}, - -\define@key{blx@lbx}{inherit}{% - \blx@lbxinput{#1}{}{\blx@err@nolang{#1}}% - \csuse{abx@strings@#1}} - -\def\blx@cfg@defstring#1#2{% - \csdef{abx@lstr@#1}{#2}% - \csdef{abx@sstr@#1}{#2}} - -\def\blx@lbx@defstring#1#2{% - \blx@lbx@defstring@i{#1}#2} -\def\blx@lbx@defstring@i#1#2#3{% - \csdef{abx@lstr@#1}{#2}% - \csdef{abx@sstr@#1}{#3}} - -% {<language>} - -\def\blx@lbxcheck#1{% - \ifcsdef{blx@lng@#1} - {\expandafter\expandafter\expandafter\IfFileExists - \expandafter\expandafter\expandafter{% - \csname blx@lng@#1\endcsname.lbx} - {} - {\blx@err@nolang{#1}}} - {\IfFileExists{#1.lbx} - {} - {\blx@err@nolang{#1}}}} - -% {<language>}{<definitions>} - -\newrobustcmd*{\DefineBibliographyExtras}[2]{% - \blx@lbxcheck{#1}% - \csgappto{blx@hook@extras@#1}{% - \blx@defbibextras{#1}{#2}}} -\@onlypreamble\DefineBibliographyExtras - -\newrobustcmd*{\UndefineBibliographyExtras}[2]{% - \blx@lbxcheck{#1}% - \csgappto{blx@hook@noextras@#1}{% - \blx@undefbibextras{#1}{#2}}} -\@onlypreamble\UndefineBibliographyExtras - -\def\blx@defbibextras#1{\csgappto{abx@extras@#1}} -\def\blx@undefbibextras#1{\csgappto{abx@noextras@#1}} - -% {<language>}{<language>} - -\def\blx@letbibextras#1#2{% - \blx@lbxinput{#2}{}{\blx@err@nolang{#2}}% - \global\csletcs{abx@extras@#1}{abx@extras@#2} - \global\csletcs{abx@noextras@#1}{abx@noextras@#2}}% - -% {<language>}{<strings>} - -\newrobustcmd*{\DefineBibliographyStrings}[2]{% - \blx@lbxcheck{#1}% - \csgappto{blx@hook@strings@#1}{% - \begingroup - \let\blx@defstring\blx@cfg@defstring - \blx@defbibstrings{#1}{#2}% - \endgroup}} -\@onlypreamble\DefineBibliographyStrings - -\def\blx@defbibstrings#1#2{% - \def\do##1{\csundef{abx@lstr@##1}\csundef{abx@sstr@##1}}% - \abx@dostrings - \csuse{abx@strings@#1}% - \setkeys{blx@lbx}{#2}% - \let\do\blx@defbibstrings@i - \csxdef{abx@strings@#1}{\abx@dostrings}% - \csgappto{abx@strings@#1}{% - \ifcsdef{\abx@str @bibliography} - {\letcs\bibname{\abx@str @bibliography}} - {\let\bibname\@empty}% - \ifcsdef{\abx@str @references} - {\letcs\refname{\abx@str @references}} - {\let\refname\@empty}% - \ifcsdef{\abx@str @shorthands} - {\letcs\losname{\abx@str @shorthands}} - {\let\losname\@empty}}} - -\def\blx@defbibstrings@i#1{% - \ifcsdef{abx@lstr@#1} - {\def\expandafter\noexpand\csname abx@lstr@#1\endcsname{% - \csexpandonce{abx@lstr@#1}}} - {\undef\expandafter\noexpand\csname abx@lstr@#1\endcsname}% - \ifcsdef{abx@sstr@#1} - {\def\expandafter\noexpand\csname abx@sstr@#1\endcsname{% - \csexpandonce{abx@sstr@#1}}} - {\undef\expandafter\noexpand\csname abx@sstr@#1\endcsname}} - -% {<language>}{<language>} - -\def\blx@letbibstrings#1#2{% - \blx@lbxinput{#2}{}{\blx@err@nolang{#2}}% - \global\csletcs{abx@strings@#1}{abx@strings@#2}}% - -% {<language>}{<exceptions>} - -\newrobustcmd*{\DefineHyphenationExceptions}[2]{% - \ifcsundef{l@#1} - {\blx@warn@nohyph{#1}} - {}% - \csgappto{blx@hook@hyph@#1}{\blx@hyphexcept{#1}{#2}}} -\@onlypreamble\DefineHyphenationExceptions - -\def\blx@hyphexcept#1#2{% - \ifcsundef{l@#1} - {\blx@warn@nohyph{#1}} - {\begingroup - \language\csname l@#1\endcsname\relax - \hyphenation{#2}% - \endgroup}} - -% {<language>}{<mapping>} - -\newrobustcmd*{\DeclareLanguageMapping}[2]{% - \csgdef{blx@lng@#1}{#2}} -\@onlypreamble\DeclareLanguageMapping - -% {<language>}{<success>}{<failure>} - -\def\blx@lbxinput#1{% - \ifcsdef{blx@lng@#1} - {\expandafter\expandafter\expandafter\blx@lbxinput@i - \expandafter\expandafter\expandafter{% - \csname blx@lng@#1\endcsname}{#1}} - {\blx@lbxinput@ii{#1}{#1}{language '#1'}}} - -% {<mapping>}{<language>} - -\def\blx@lbxinput@i#1#2{% - \global\csundef{blx@lng@#2}% - \IfFileExists{#1.lbx} - {\blx@lbxinput@ii{#2}{#1}{language '#2' -> '#1'}} - {\blx@warning@noline{% - File '#1.lbx' not found!\MessageBreak - Ignoring mapping '#2' -> '#1'}% - \blx@lbxinput{#2}}} - -% {<language>}{<lbxfile>}{<message>} - -\def\blx@lbxinput@ii#1#2#3{% - \begingroup - \setbox\@tempboxa=\hbox\bgroup - \aftergroup\endgroup - \blx@inputonce{#2.lbx}{#3} - {\global\cslet{abx@strings@#1}\@empty - \global\cslet{abx@extras@#1}\@empty - \global\cslet{abx@noextras@#1}\@empty - \blx@maplang{#1}{#1}% - \def\InheritBibliographyStrings{% - \blx@letbibstrings{#1}}% - \def\DeclareBibliographyStrings####1{% - \begingroup - \let\blx@defstring\blx@lbx@defstring - \blx@defbibstrings{#1}{####1}% - \endgroup}% - \def\InheritBibliographyExtras{\blx@letbibextras{#1}}% - \def\DeclareBibliographyExtras{\blx@defbibextras{#1}}% - \def\UndeclareBibliographyExtras{\blx@undefbibextras{#1}}% - \def\DeclareHyphenationExceptions{\blx@hyphexcept{#1}}% - \begingroup - \blx@saneccodes - \makeatletter} - {\endgroup - \csuse{blx@hook@strings@#1}% - \csuse{blx@hook@strings@#2}% - \csuse{blx@hook@extras@#1}% - \csuse{blx@hook@extras@#2}% - \csuse{blx@hook@noextras@#1}% - \csuse{blx@hook@noextras@#2}% - \csuse{blx@hook@hyph@#1}% - \csuse{blx@hook@hyph@#2}} - {\aftergroup\@firstoftwo} - {\aftergroup\@secondoftwo}% - \egroup} - -% {<language>} - -\def\blx@langsetup#1{% - \blx@lbxinput{#1} - {\edef\blx@languagename{#1}} - {\blx@warning - {Language '#1' not supported.\MessageBreak - Using fallback language '\blx@languagename'}% - \blx@lbxinput{\blx@languagename} - {\blx@maplang{#1}{\blx@languagename}} - {\blx@err@nolang{\blx@languagename}}}} - -% auxiliary macros - -% {<field base name>} - -\newrobustcmd*{\mkbibrangeshort}{% - \mkbibrangefull{short}} - -\newrobustcmd*{\mkbibrangelong}{% - \mkbibrangefull{long}} - -\newrobustcmd*{\mkbibrangeterse}{% - \mkbibrangetrunc{short}} - -\newrobustcmd*{\mkbibrangecomp}{% - \mkbibrangetrunc{long}} - -\newrobustcmd*{\mkbibrangeshortextra}{% - \mkbibrangefullextra{short}} - -\newrobustcmd*{\mkbibrangelongextra}{% - \mkbibrangefullextra{long}} - -\newrobustcmd*{\mkbibrangeterseextra}{% - \mkbibrangetruncextra{short}} - -\newrobustcmd*{\mkbibrangecompextra}{% - \mkbibrangetruncextra{long}} - -% {<short|long>}{<basename>} - -\newrobustcmd*{\mkbibrangefull}[2]{% - \iffieldundef{#2year} - {} - {\printtext[#2date]{% - \csuse{mkbibdate#1}{#2year}{#2month}{#2day}% - \iffieldundef{#2endyear} - {} - {\iffieldequalstr{#2endyear}{} - {\mbox{\bibdatedash}} - {\bibdatedash - \csuse{mkbibdate#1}{#2endyear}{#2endmonth}{#2endday}}}}}} - -\newrobustcmd*{\mkbibrangetrunc}[2]{% - \iffieldundef{#2year} - {} - {\printtext[#2date]{% - \iffieldsequal{#2year}{#2endyear} - {\iffieldsequal{#2month}{#2endmonth} - {\csuse{mkbibdate#1}{}{}{#2day}} - {\csuse{mkbibdate#1}{}{#2month}{#2day}}} - {\csuse{mkbibdate#1}{#2year}{#2month}{#2day}}% - \iffieldundef{#2endyear} - {} - {\iffieldequalstr{#2endyear}{} - {\mbox{\bibdatedash}} - {\bibdatedash - \csuse{mkbibdate#1}{#2endyear}{#2endmonth}{#2endday}}}}}} - -\newrobustcmd*{\mkbibrangefullextra}[2]{% - \iffieldundef{#2year} - {} - {\printtext[#2date]{% - \printtext{% - \csuse{mkbibdate#1}{#2year}{#2month}{#2day}}% - \iffieldundef{#2endyear} - {\printfield{extrayear}} - {\iffieldequalstr{#2endyear}{} - {\printfield{extrayear}% - \printtext{\mbox{\bibdatedash}}} - {\printtext{% - \bibdatedash - \csuse{mkbibdate#1}{#2endyear}{#2endmonth}{#2endday}% - \printfield{extrayear}}}}}}} - -\newrobustcmd*{\mkbibrangetruncextra}[2]{% - \iffieldundef{#2year} - {} - {\printtext[#2date]{% - \printtext{% - \iffieldsequal{#2year}{#2endyear} - {\iffieldsequal{#2month}{#2endmonth} - {\csuse{mkbibdate#1}{}{}{#2day}} - {\csuse{mkbibdate#1}{}{#2month}{#2day}}} - {\csuse{mkbibdate#1}{#2year}{#2month}{#2day}}}% - \iffieldundef{#2endyear} - {\printfield{extrayear}} - {\iffieldequalstr{#2endyear}{} - {\printfield{extrayear}% - \printtext{\mbox{\bibdatedash}}} - {\printtext{% - \bibdatedash - \csuse{mkbibdate#1}{#2endyear}{#2endmonth}{#2endday}% - \printfield{extrayear}}}}}}} - -\expandafter\newrobustcmd -\expandafter*\csname mkbibrangeiso8601\endcsname[1]{% - \iffieldundef{#1year} - {} - {\printtext[#1date]{% - \blx@isodate{#1year}{#1month}{#1day}% - \iffieldundef{#1endyear} - {} - {\addslash\blx@isodate{#1endyear}{#1endmonth}{#1endday}}}}} - -\expandafter\newrobustcmd -\expandafter*\csname mkbibrangeiso8601extra\endcsname[1]{% - \iffieldundef{#1year} - {} - {\printtext[#1date]{% - \blx@isodate[extrayear]{#1year}{#1month}{#1day}% - \iffieldundef{#1endyear} - {} - {\addslash\blx@isodate{#1endyear}{#1endmonth}{#1endday}}}}} - -\newrobustcmd*{\blx@isodate}[4][]{% - \thefield{#2}\ifblank{#1}{}{\printfield{#1}}% - \iffieldundef{#3}{}{\mbox{-}\thefield{#3}}% - \iffieldundef{#4}{}{\mbox{-}\thefield{#4}}} - -\newrobustcmd*{\mkbibdatelong}[3]{} -\newrobustcmd*{\mkbibdateshort}[3]{} -\newrobustcmd*{\bibrangedash}{\textendash} -\newrobustcmd*{\bibdatedash}{\bibrangedash} -\newrobustcmd*{\finalandcomma}{} -\newrobustcmd*{\mkbibordinal}[1]{#1} -\newrobustcmd*{\mkbibmascord}{\mkbibordinal} -\newrobustcmd*{\mkbibfemord}{\mkbibordinal} -\newrobustcmd*{\mkbibneutord}{\mkbibordinal} -\newrobustcmd*{\mkbibmonth}[1]{% - \ifcase0#1\relax - \blx@warning@entry{Month out of range or not an integer}% - \or\abx@bibmonth{january}% - \or\abx@bibmonth{february}% - \or\abx@bibmonth{march}% - \or\abx@bibmonth{april}% - \or\abx@bibmonth{may}% - \or\abx@bibmonth{june}% - \or\abx@bibmonth{july}% - \or\abx@bibmonth{august}% - \or\abx@bibmonth{september}% - \or\abx@bibmonth{october}% - \or\abx@bibmonth{november}% - \or\abx@bibmonth{december}% - \else - \blx@warning@entry{Month out of range}#1% - \fi} - -\protected\def\blx@imc@printdate{} -\protected\def\blx@imc@printdateextra{} -\protected\def\blx@imc@printurldate{} -\protected\def\blx@imc@printeventdate{} -\protected\def\blx@imc@printorigdate{} - -\let\blx@imc@mkdatezeros\@firstofone -\protected\def\blx@imc@stripzeros#1{% - \begingroup - \setbox\@tempboxa=\hbox\bgroup - \aftergroup\endgroup - \abx@hook@xsanitize - \if0#1\relax - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi - {\@tempcnta#1\relax - \expandafter\egroup - \number\@tempcnta - \@tempcnta#1\relax} - {\egroup#1}} - -\blx@regimcs{% - \printdate \printdateextra \printurldate \printeventdate - \printorigdate \stripzeros \mkdatezeros} - -% {<language>}{<strings>} +[\abx@date\space v\abx@version\space programmable bibliographies (PK/JW/AB)] -\def\blx@maplang#1#2{% - \csxappto{extras#1}{% - \noexpand\blx@resetpunct - \expandafter\noexpand\csname abx@extras@#2\endcsname - \expandafter\noexpand\csname abx@strings@#2\endcsname}% - \csxappto{noextras#1}{% - \noexpand\blx@resetpunct - \expandafter\noexpand\csname abx@noextras@#2\endcsname}} +% Set up a switch for choosing the version +\newif\ifblx@load@version@one -%% Babel interface +% A switch so we can issue a message about the backend +\newif\ifblx@load@backend@seen -\def\blx@beglang{\blx@clearlang\begingroup} -\def\blx@endlang{\endgroup} -\let\blx@hook@endlang\@empty -\let\blx@hook@initlang\@empty -\def\blx@hyphenreset{% - \ifcsundef{l@\blx@languagename} - {} - {\language\csname l@\blx@languagename\endcsname\relax}% - \ifcsundef{\blx@languagename hyphenmins} - {\blx@sethyphenmins\tw@\thr@@} - {\expandafter\expandafter\expandafter\blx@sethyphenmins - \csname\blx@languagename hyphenmins\endcsname}} -\def\blx@sethyphenmins#1#2{% - \lefthyphenmin#1\relax - \righthyphenmin#2\relax} - -\begingroup -\@makeother\# -\gdef\blx@mkbabel{% - \pretocmd\select@language{\blx@langsetup{#1}} - {\ifdef\blx@thelangenv - {\def\blx@beglang{% - \blx@clearlang - \begingroup - \blx@imc@iffieldundef{hyphenation} - {} - {\blx@hook@initlang - \def\blx@endlang{% - \blx@hook@endlang - \csname end\blx@thelangenv\endcsname - \endgroup}% - \csname\blx@thelangenv\expandafter\endcsname - \expandafter{\abx@field@hyphenation}}}} - {}% - \blx@langsetup\bbl@main@language} - {\blx@err@patch{'babel' package}% - \blx@mknobabel}} -\endgroup - -\def\blx@mknobabel{% - \blx@lbxinput{\blx@languagename} - {} - {\blx@err@nolang{\blx@languagename}}} - -\newrobustcmd*{\DeclareRedundantLanguages}[2]{% - \begingroup - \ifblank{#2} - {\def\do##1{% - \global\csundef{blx@rlm@##1}% - \global\csundef{blx@rlm@lang##1}}} - {\def\do##1{% - \csxdef{blx@rlm@##1}{#2}% - \csxdef{blx@rlm@lang##1}{#2}}}% - \docsvlist{#1}% - \endgroup} - -\def\blx@clearlang{% - \iftoggle{blx@clearlang} - {\iflistundef{language} - {} - {\ifnumgreater{\value{language}}{1} - {} - {\expandafter\blx@clearlang@i\abx@list@language}}} - {}} - -\def\blx@clearlang@i#1{% - \ifcsdef{blx@rlm@#1} - {\expandafter\expandafter\expandafter\forcsvlist - \expandafter\expandafter\expandafter\blx@clearlang@ii - \expandafter\expandafter\expandafter{% - \csname blx@rlm@#1\endcsname}} - {}} - -\def\blx@clearlang@ii#1{% - \ifdefstring\languagename{#1} - {\clearlist{language}} - {}} - -%% Bibtex data interface - -\def\abx@dotypes{% - \do{set}% - \do{article}% - \do{book}% - \do{mvbook}% - \do{booklet}% - \do{collection}% - \do{mvcollection}% - \do{inbook}% - \do{bookinbook}% - \do{incollection}% - \do{inproceedings}% - \do{manual}% - \do{misc}% - \do{online}% - \do{patent}% - \do{periodical}% - \do{proceedings}% - \do{mvproceedings}% - \do{report}% - \do{suppbook}% - \do{suppcollection}% - \do{suppperiodical}% - \do{thesis}% - \do{unpublished}% - \do{artwork}% - \do{audio}% - \do{commentary}% - \do{image}% - \do{inreference}% - \do{jurisdiction}% - \do{legal}% - \do{legislation}% - \do{letter}% - \do{movie}% - \do{music}% - \do{performance}% - \do{reference}% - \do{mvreference}% - \do{review}% - \do{software}% - \do{standard}% - \do{video}% - \do{customa}% - \do{customb}% - \do{customc}% - \do{customd}% - \do{custome}% - \do{customf}% +% Fake keyval options to detect the backend +% All basically the same, so passing the backend is done simply +\DeclareOption{backend=bibtex}{% + \PassOptionsToPackage{\CurrentOption}{biblatex1}% + \blx@load@version@onetrue + \blx@load@backend@seentrue } - -\def\abx@donames{% - \do{labelname}% - \do{author}% - \do{shortauthor}% - \do{editor}% - \do{editora}% - \do{editorb}% - \do{editorc}% - \do{shorteditor}% - \do{bookauthor}% - \do{translator}% - \do{annotator}% - \do{commentator}% - \do{introduction}% - \do{foreword}% - \do{afterword}% - \do{holder}% - \do{namea}% - \do{nameb}% - \do{namec}% -} - -\def\abx@dolists{% - \do{institution}% - \do{language}% - \do{location}% - \do{organization}% - \do{origlocation}% - \do{origpublisher}% - \do{pageref}% - \do{publisher}% - \do{lista}% - \do{listb}% - \do{listc}% - \do{listd}% - \do{liste}% - \do{listf}% +\DeclareOption{backend=bibtex8}{% + \PassOptionsToPackage{\CurrentOption}{biblatex1}% + \blx@load@version@onetrue + \blx@load@backend@seentrue } - -\def\abx@dofields{% - \do{crossref}% - \do{xref}% - \do{entrykey}% - \do{childentrykey}% - \do{entrytype}% - \do{entrysubtype}% - \do{entryset}% - \do{entrysetcount}% - \do{related}% - \do{relatedtype}% - \do{relatedstring}% - \do{hyphenation}% - \do{keywords}% - \do{authortype}% - \do{editortype}% - \do{editoratype}% - \do{editorbtype}% - \do{editorctype}% - \do{nameatype}% - \do{namebtype}% - \do{namectype}% - \do{addendum}% - \do{booktitle}% - \do{booksubtitle}% - \do{booktitleaddon}% - \do{chapter}% - \do{doi}% - \do{edition}% - \do{eid}% - \do{eprint}% - \do{eprinttype}% - \do{eprintclass}% - \do{file}% - \do{gender}% - \do{howpublished}% - \do{indextitle}% - \do{indexsorttitle}% - \do{isan}% - \do{isbn}% - \do{ismn}% - \do{isrn}% - \do{issn}% - \do{issue}% - \do{iswc}% - \do{issuetitle}% - \do{issuesubtitle}% - \do{journaltitle}% - \do{journalsubtitle}% - \do{label}% - \do{labelalpha}% - \do{extraalpha}% - \do{labelnumber}% - \do{labeltitle}% - \do{labelyear}% - \do{extrayear}% - \do{library}% - \do{localnumber}% - \do{prefixnumber}% - \do{mainsubtitle}% - \do{maintitle}% - \do{maintitleaddon}% - \do{nameaddon}% - \do{namehash}% - \do{fullhash}% - \do{note}% - \do{number}% - \do{day}% - \do{month}% - \do{year}% - \do{endday}% - \do{endmonth}% - \do{endyear}% - \do{origlanguage}% - \do{origtitle}% - \do{origday}% - \do{origmonth}% - \do{origyear}% - \do{origendday}% - \do{origendmonth}% - \do{origendyear}% - \do{reprinttitle}% - \do{pages}% - \do{pagetotal}% - \do{pagination}% - \do{bookpagination}% - \do{part}% - \do{pubstate}% - \do{series}% - \do{shorthand}% - \do{shorthandintro}% - \do{shortjournal}% - \do{shortseries}% - \do{shorttitle}% - \do{sortinit}% - \do{subtitle}% - \do{title}% - \do{titleaddon}% - \do{eventtitle}% - \do{eventday}% - \do{eventmonth}% - \do{eventyear}% - \do{eventendday}% - \do{eventendmonth}% - \do{eventendyear}% - \do{type}% - \do{url}% - \do{urlday}% - \do{urlmonth}% - \do{urlyear}% - \do{urlendday}% - \do{urlendmonth}% - \do{urlendyear}% - \do{venue}% - \do{version}% - \do{volume}% - \do{volumes}% - \do{abstract}% - \do{annotation}% - \do{usera}% - \do{userb}% - \do{userc}% - \do{userd}% - \do{usere}% - \do{userf}% - \do{verba}% - \do{verbb}% - \do{verbc}% +\DeclareOption{backend=bibtexu}{% + \PassOptionsToPackage{\CurrentOption}{biblatex1}% + \blx@load@version@onetrue + \blx@load@backend@seentrue } - -\def\abx@dobooleans{% - \do{singletitle}% +\DeclareOption{backend=biber}{% + \blx@load@version@onefalse + \blx@load@backend@seentrue } - -\def\do#1{% - \newcounter{#1}% - \newcounter{saved#1}% - \csedef{the#1}{\noexpand\the\expandonce{\csname c@#1\endcsname}}% - \csedef{thesaved#1}{\noexpand\the\expandonce{\csname c@saved#1\endcsname}}% - \appto\abx@dobooleans{\do{more#1}}} -\abx@donames -\abx@dolists -\def\do#1{\newtoggle{abx@bool@#1}} -\abx@dobooleans - -\protected\def\blx@resetdata{% - \let\blx@saved@do\do - \let\do\blx@imc@clearname - \abx@donames - \let\do\blx@imc@clearlist - \abx@dolists - \let\do\blx@imc@clearfield - \abx@dofields\do{execute}\do{options}% - \def\do##1{\togglefalse{abx@bool@##1}}% - \abx@dobooleans - \let\do\blx@saved@do - \c@citecounter\z@ - \iftoggle{blx@bibliography} - {\c@maxnames\blx@maxbibnames\relax - \c@minnames\blx@minbibnames\relax} - {\c@maxnames\blx@maxcitenames\relax - \c@minnames\blx@mincitenames\relax}% - \c@maxitems\blx@maxitems\relax - \c@minitems\blx@minitems\relax} - -\protected\def\blx@saveentry{% - \let\blx@saved@do\do - \let\do\blx@savename - \abx@donames - \let\do\blx@savelist - \abx@dolists - \let\do\blx@savefield - \abx@dofields\do{execute}\do{options}% - \let\do\blx@savebool - \abx@dobooleans - \c@savedcitecounter\c@citecounter - \let\do\blx@saved@do} - -\protected\def\blx@savename#1{% - \csletcs{etb@tgl@abx@bool@moresaved#1}{etb@tgl@abx@bool@more#1}% - \csletcs{abx@name@saved#1}{abx@name@#1}% - \csname c@saved#1\endcsname\csname c@#1\endcsname} - -\protected\def\blx@savelist#1{% - \csletcs{etb@tgl@abx@bool@moresaved#1}{etb@tgl@abx@bool@more#1}% - \csletcs{abx@list@saved#1}{abx@list@#1}% - \csname c@saved#1\endcsname\csname c@#1\endcsname} - -\protected\def\blx@savefield#1{% - \csletcs{abx@field@saved#1}{abx@field@#1}} - -\protected\def\blx@savebool#1{% - \csletcs{abx@bool@saved#1}{abx@bool@#1}} - -% {<code>} - -\protected\long\def\blx@bbl@preamble#1{% - \gappto\abx@preamble{#1}} - -% {<message>} - -\protected\def\blx@bbl@warn#1{% - \begingroup - \def\item{\MessageBreak-\space}% - \def\break{\MessageBreak\space\space}% - \edef\blx@tempa{% - \ifnum\blx@backend=\blx@backend@biber - Biber - \else - BibTeX - \fi - reported the following issues% - \ifdef\abx@field@entrykey - {\MessageBreak with '\abx@field@entrykey'} - {}% - :#1}% - \blx@warning@noline{\blx@tempa}% - \endgroup} - -% {<field>}{<code>} - -\newrobustcmd{\DeclareFieldInputHandler}[2]{% - \ifblank{#2} - {\csundef{blx@fih@#1}} - {\long\csdef{blx@fih@#1}##1{#2}}} -\@onlypreamble\DeclareFieldInputHandler - -% {<list>}{<code>} - -\newrobustcmd*{\DeclareListInputHandler}[2]{% - \ifblank{#2} - {\csundef{blx@lih@#1}} - {\csdef{blx@lih@#1}##1{#2}}} -\@onlypreamble\DeclareListInputHandler - -% {<name>}{<code>} - -\newrobustcmd*{\DeclareNameInputHandler}[2]{% - \ifblank{#2} - {\csundef{blx@nih@#1}} - {\csdef{blx@nih@#1}##1{#2}}} -\@onlypreamble\DeclareNameInputHandler - -% {<entrykey>}{<refsection>}{<field>}{<value>} - -\long\def\blx@bbl@addentryfield#1#2#3#4{% - \csxappto{blx@data@#2@#1}{% - \def\expandafter\noexpand\csname abx@field@#3\endcsname{#4}}} - -% {<field>}{<value>} - -\long\def\blx@bbl@addfield#1#2{% - \csxappto\blx@bbl@data{% - \def\expandafter\noexpand\csname abx@field@#1\endcsname{#2}}} - -\protected\long\def\blx@bbl@fielddef#1#2{% - \def\NewValue{#2}% - \ifcsdef{blx@fih@#1} - {\csname blx@fih@#1\endcsname{#2}% - \ifdefvoid\NewValue} - {\@secondoftwo} - {} - {\blx@bbl@addfield{#1}{\expandonce\NewValue}}} - -\protected\long\def\blx@bbl@fieldedef#1#2{% - \edef\NewValue{#2}% - \ifcsdef{blx@fih@#1} - {\csname blx@fih@#1\expandafter - \endcsname\expandafter{\NewValue}% - \ifdefvoid\NewValue} - {\@secondoftwo} - {} - {\blx@bbl@addfield{#1}{\NewValue}}} - -\protected\long\def\blx@bbl@stringdef#1#2{% - \begingroup - \edef\blx@tempa{\endgroup - \blx@bbl@fielddef{#1}{\detokenize{#2}}}% - \blx@tempa} - -% {<field>} - -\protected\def\blx@bbl@verbdef#1{% - \begingroup - \let\verb\blx@bbl@verbadd - \def\blx@tempa{#1}% - \let\NewValue\@empty} - -\protected\def\blx@bbl@verbend{% - \ifcsdef{blx@fih@\blx@tempa} - {\csname blx@fih@\blx@tempa\expandafter - \endcsname\expandafter{\NewValue}% - \ifdefvoid\NewValue} - {\@secondoftwo} - {} - {\blx@bbl@addfield{\blx@tempa}{\NewValue}}% - \endgroup} - -\protected\def\blx@bbl@verbadd{% - \begingroup - \let\do\@makeother - \dospecials - \catcode\endlinechar=12\relax - \blx@bbl@verbadd@i} - -\begingroup -\catcode`\<=12 -\catcode`\>=12 -\uccode`\<=`\ % -\uccode`\>=\endlinechar -\uppercase{\gdef\blx@bbl@verbadd@i<#1>}{% - \endgroup - \edef\NewValue{\NewValue\detokenize{#1}}} -\endgroup - -% {<counter>}{<value>} - -\protected\long\def\blx@bbl@countdef#1#2{% - \csxappto\blx@bbl@data{% - \csname c@#1\endcsname#2\relax}} - -% {<boolean>} - -\protected\def\blx@bbl@booltrue#1{% - \csgappto\blx@bbl@data{% - \toggletrue{abx@bool@#1}}} - -\protected\def\blx@bbl@boolfalse#1{% - \csgappto\blx@bbl@data{% - \togglefalse{abx@bool@#1}}} - -% {<list}{<itemcount>}{<value>} - -\protected\def\blx@bbl@listdef#1#2#3{% - \def\NewCount{#2}% - \def\NewValue{#3}% - \ifcsdef{blx@lih@#1} - {\csname blx@lih@#1\endcsname{#3}% - \ifdefvoid\NewValue} - {\@secondoftwo} - {} - {\csxappto\blx@bbl@data{% - \csname c@#1\endcsname\NewCount\relax - \def\expandafter\noexpand\csname abx@list@#1\endcsname - {\expandonce\NewValue}}}} - - -% {<name>}{<itemcount>}{<value>} - -\protected\def\blx@bbl@namedef#1#2#3#4{% - \def\NewCount{#2}% - \def\NewOption{#3}% - \def\NewValue{#4}% - \ifcsdef{blx@nih@#1} - {\csname blx@nih@#1\endcsname{#4}% - \ifdefvoid\NewValue} - {\@secondoftwo} - {} - {\csxappto\blx@bbl@data{% - \csname c@#1\endcsname\NewCount\relax - \def\expandafter\noexpand\csname abx@name@#1\endcsname - {{\expandonce\NewOption}{\expandonce\NewValue}}}}} - -% {<entrykey>,...} - -\protected\def\blx@bbl@set#1{% - \blx@bbl@fieldedef{entryset}{\detokenize{#1}}% - \csxdef{blx@setp@\the\c@refsection @\abx@field@entrykey}{\detokenize{#1}}% - \begingroup - \blx@tempcnta\z@ - \expandafter\forcsvlist - \expandafter\blx@bbl@set@i - \expandafter{\detokenize{#1}}% - \endgroup} - -\def\blx@bbl@set@i#1{% - \advance\blx@tempcnta\@ne - \csxdef{blx@seti@\the\c@refsection @#1}{\the\blx@tempcnta}} - -% {<entrykey>} - -\protected\def\blx@bbl@inset#1{% - \toggletrue{blx@setonly}% - \blx@bbl@fieldedef{entryset}{\detokenize{#1}}% - \csxdef{blx@setc@\the\c@refsection @\abx@field@entrykey}{\detokenize{#1}}} - -% {<entrykey>} - -\protected\def\blx@bbl@xref#1{% BibTeX only - \ifcsdef{blx@refp@\the\c@refsection @\detokenize{#1}} - {} - {\listcsxadd{blx@refs@\the\c@refsection}{\detokenize{#1}}}% - \listcsxadd{blx@refp@\the\c@refsection @\detokenize{#1}}{\abx@field@entrykey}% - \csxdef{blx@refc@\the\c@refsection @\abx@field@entrykey}{\detokenize{#1}}} - -\def\blx@addxref#1{% BibTeX only - \blx@ifdata{#1} - {\begingroup - \def\do##1{% - \csgappto{blx@data@\the\c@refsection @##1}{% - \def\abx@field@xref{#1}}}% - \dolistcsloop{blx@refp@\the\c@refsection @#1}% - \endgroup} - {}% - \global\csundef{blx@refp@\the\c@refsection @#1}} - -% {<keyword>,...} - -\protected\def\blx@bbl@keyw#1{% - \iftoggle{blx@skipbib} - {} - {\forcsvlist{\blx@addkeyword{\abx@field@entrykey}}{#1}% - \blx@bbl@fielddef{keywords}{#1}}} - -\def\blx@addkeyword#1#2{% - \listcsxadd{blx@keyw@\the\c@refsection @\detokenize{#2}}{#1}} - -% {<options>} - -\protected\long\def\blx@bbl@options#1{% - \begingroup - \let\blx@tempa\@empty - \forcsvlist\blx@bbl@options@i{#1}% - \edef\blx@tempa{% - \endgroup - \ifx\blx@tempa\@empty - \else - \def\noexpand\abx@field@options{\expandonce\blx@tempa}% - \fi}% - \blx@tempa} - -\long\def\blx@bbl@options@i#1{\blx@bbl@options@ii#1==&} - -\long\def\blx@bbl@options@ii#1=#2=#3&{% - \ifcsundef{KV@blx@opt@ent@#1} - {\blx@warning@noline{% - Ignoring undefined option '#1'\MessageBreak - at entry '\abx@field@entrykey'}} - {\eappto\blx@tempa{% - \ifx\blx@tempa\@empty\else,\fi - \unexpanded{#1}\ifblank{#2}{}{=\unexpanded{#2}}}}} - -% \blx@data@<section>@<entrykey> data hook -% key -> data -% \blx@miss@<section> missing entries (blacklist) -% section -> keys [internal list] -% \blx@sort@<section> all entries, sorted -% section -> keys [internal list] -% \blx@sbib@<section> all entries in bibliography, sorted -% section -> keys [internal list] -% \blx@bsee@<section> seen citations, document body -% section -> keys [internal list] -% \blx@fsee@<section> seen citations, footnotes -% section -> keys [internal list] -% \blx@type@<section>@<entrytype> type hash -% type -> keys [internal list] -% \blx@subt@<section>@<entrytype> subtype hash -% subtype -> keys [internal list] -% \blx@segm@<section>@<segment> segment hash -% segment -> keys [internal list] -% \blx@keyw@<section>@<keyword> keyword hash -% keyword -> keys [internal list] -% \blx@losh@<section> shorthand hash -% section -> keys [internal list] -% \blx@catg@<category> category hash, global -% category -> keys [internal list] -% \blx@set@<section>@<entrykey> parent -> child mapping (dynamic entry sets) -% key -> key,key,... [csv list] -% \blx@setp@<section>@<entrykey> parent -> child mapping (entry sets) -% key -> key,key,... [csv list] -% \blx@setc@<section>@<entrykey> child -> parent mapping (entry sets) -% key -> key -% \blx@seti@<section>@<entrykey> child -> index mapping (entry sets) -% key -> index -% \blx@pref@<section>@<entrykey> pageref hook, temporary -% key -> pages [internal list] -% \blx@refs@<section> xref hash, temporary -% section -> parents [internal list] -% (BibTeX only) -% \blx@refp@<section>@<entrykey> parent -> child mapping (xrefs), temporary -% key -> keys [internal list] -% (BibTeX only) -% \blx@refc@<section>@<entrykey> child -> parent mapping (xrefs) -% key -> key [internal list] -% (BibTeX only) - -\def\blx@ifdata#1{% - \ifcsdef{blx@data@\the\c@refsection @#1}} - -\def\blx@getdata#1{% - \csuse{blx@data@\the\c@refsection @#1}% - \blx@setcitecounter} - -\def\blx@getdata@cite#1{% - \ifcsdef{blx@setc@\the\c@refsection @#1} - {\expandafter\expandafter\expandafter\blx@getdata - \expandafter\expandafter\expandafter{% - \csname blx@setc@\the\c@refsection @#1\endcsname}% - \blx@ifdata{#1} - {\def\abx@field@childentrykey{#1}% - \begingroup - \blx@getdata{#1}% - \edef\blx@tempa{\endgroup - \def\noexpand\abx@field@childentrytype{\abx@field@entrytype}}% - \blx@tempa} - {}} - {\blx@getdata{#1}}% - \ifcsdef{blx@seti@\the\c@refsection @#1} - {\letcs\abx@field@entrysetcount{blx@seti@\the\c@refsection @#1}} - {}} - -\def\blx@execute{% - \blx@imc@thefield{execute}} - -\def\blx@setoptions@entry{% - \blx@imc@iffieldundef{options} - {} - {\begingroup - \edef\blx@tempa{\endgroup - \noexpand\setkeys{blx@opt@ent}{\abx@field@options}}% - \blx@tempa - \blx@checkoptions@entry}} - -\def\blx@setoptions@type#1{% - \ifcsdef{blx@opts@type@#1} - {\begingroup - \edef\blx@tempa{\endgroup - \noexpand\setkeys{blx@opt@typ}{\csuse{blx@opts@type@#1}}}% - \blx@tempa} - {}} - -\def\blx@checkoptions@global{} -\def\blx@checkoptions@type{} -\def\blx@checkoptions@entry{} - -\def\blx@entrysetcount{% - \ifdef\abx@field@entrykey - {\ifcsdef{blx@seti@\the\c@refsection @\abx@field@entrykey} - {\letcs\abx@field@entrysetcount{% - blx@seti@\the\c@refsection @\abx@field@entrykey}} - {}} - {}} - -% {<section>} - -\def\blx@bbl@refsection#1{% - \begingroup - \c@refsection#1\relax} - -\def\blx@bbl@endrefsection{% - \endgroup - \csnumgdef{blx@labelnumber@\the\c@refsection}{0}% - \iftoggle{blx@reencode}{\blx@reencode}{}} - -% {<entrykey>} - -\protected\def\blx@bbl@missing#1{% - \listcsxadd{blx@miss@\the\c@refsection}{\detokenize{#1}}% - \blx@warning@noline{% - The following entry could not be found\MessageBreak - in the database% - \ifnumgreater\c@refsection\z@ - { (refsection \the\c@refsection)} - {}:\MessageBreak - \detokenize{#1}\MessageBreak - Please verify the spelling and rerun\MessageBreak - LaTeX afterwards}} - -% {<entrykey>}{<entrytype>}{<options>} - -\protected\def\blx@bbl@entry#1#2#3{% - \begingroup - \edef\abx@field@entrykey{\detokenize{#1}}% - \blx@setoptions@type{#2}% - \blx@bbl@options{#3}% - \blx@setoptions@entry - \edef\blx@bbl@data{blx@data@\the\c@refsection @\abx@field@entrykey}% - \csuse\blx@bbl@data - \cslet\blx@bbl@data\@empty - \blx@bbl@addfield{entrykey}{\abx@field@entrykey}% - \blx@bbl@addfield{entrytype}{#2}% - \blx@imc@iffieldundef{options} - {} - {\blx@bbl@fieldedef{options}{\expandonce\abx@field@options}}} - -\protected\def\blx@bbl@endentry{% - \csuse\blx@bbl@data - \ifcsundef{blx@pref@\the\c@refsection @\abx@field@entrykey} - {} - {\blx@addpageref{\abx@field@entrykey}}% - \nottoggle{blx@setonly} - {\listcsxadd{blx@sort@\the\c@refsection}{\abx@field@entrykey}} - {\global\toggletrue{blx@addset}% - \toggletrue{blx@skipbib}% - \toggletrue{blx@skiplos}% - \toggletrue{blx@skiplab}}% - \nottoggle{blx@skipbib} - {\listcsxadd{blx@sbib@\the\c@refsection}{\abx@field@entrykey}% - \listcsxadd{blx@type@\the\c@refsection @\abx@field@entrytype}{\abx@field@entrykey}% - \ifdef\abx@field@entrysubtype - {\listcsxadd{blx@subt@\the\c@refsection @\abx@field@entrysubtype}{\abx@field@entrykey}} - {}} - {}% - \nottoggle{blx@skiplos} - {\blx@bbl@shorthand} - {}% - \nottoggle{blx@skiplab} - {\iftoggle{blx@labelnumber} - {\blx@bbl@labelnumber} - {}% - \iftoggle{blx@labelalpha} - {\blx@bbl@labelalpha} - {}% - \iftoggle{blx@labelyear} - {\blx@bbl@labelyear} - {}% - \blx@bbl@prefixnumber} - {}% - \ifnumless\blx@backend\blx@backend@biber - {\blx@bbl@labelname} - {}% - \blx@bbl@titles - \blx@bbl@hooks - \endgroup} - -\def\blx@addset{% - \begingroup - \letcs\blx@tempa{blx@sort@\the\c@refsection}% - \global\cslet{blx@sort@\the\c@refsection}\@empty - \forlistloop\blx@addset@i\blx@tempa - \endgroup} - -\def\blx@addset@i#1{% - \listcsgadd{blx@sort@\the\c@refsection}{#1}% - \ifcsdef{blx@setp@\the\c@refsection @#1} - {\expandafter\expandafter\expandafter\forcsvlist - \expandafter\expandafter\expandafter\blx@addset@ii - \expandafter\expandafter\expandafter{% - \csname blx@setp@\the\c@refsection @#1\endcsname}} - {}} - -\def\blx@addset@ii#1{% - \listcsgadd{blx@sort@\the\c@refsection}{#1}} - -\def\blx@bbl@shorthand{% - \ifundef\abx@field@shorthand - {} - {\blx@setlabwidth{\shorthandwidth}{% - \csuse{abx@ffd@*@shorthandwidth}{\abx@field@shorthand}}}} - -\def\blx@bbl@labelnumber{% - \ifdefempty\abx@field@localnumber - {} - {\ifundef\abx@field@shorthand - {\ifdef\abx@field@localnumber - {} - {\csnumgdef{blx@labelnumber@\the\c@refsection}{% - \csuse{blx@labelnumber@\the\c@refsection}+1}% - \edef\abx@field@localnumber{% - \csuse{blx@labelnumber@\the\c@refsection}}}% - \blx@bbl@fieldedef{labelnumber}{\abx@field@localnumber}% - \iftoggle{blx@skipbib} - {} - {\blx@setlabwidth{\labelnumberwidth}{% - \csuse{abx@ffd@*@labelnumberwidth}{% - \ifdef\abx@field@prefixnumber - {\csuse{abx@ffd@*@prefixnumber}{\abx@field@prefixnumber}} - {}% - \abx@field@localnumber}}}} - {\csgappto\blx@bbl@data{% - \let\abx@field@labelnumber\abx@field@shorthand}% - \iftoggle{blx@skipbib} - {} - {\blx@setlabwidth{\labelnumberwidth}{% - \csuse{abx@ffd@*@labelnumberwidth}{\abx@field@shorthand}}}}}} - -\def\blx@bbl@prefixnumber{% - \ifdef\abx@field@prefixnumber - {\blx@bbl@fieldedef{prefixnumber}{\abx@field@prefixnumber}} - {}} - -\def\blx@bbl@labelalpha{% - \ifundef\abx@field@shorthand - {\ifundef\abx@field@labelalpha - {} - {\ifundef\abx@field@extraalpha - {} - {\ifnum\abx@field@extraalpha>\c@maxextraalpha - \global\c@maxextraalpha\abx@field@extraalpha\relax - \fi}% - \iftoggle{blx@skipbib} - {} - {\blx@setlabwidth{\labelalphawidth}{% - \csuse{abx@ffd@*@labelalphawidth}{% - \ifdef\abx@field@prefixnumber - {\csuse{abx@ffd@*@prefixnumber}{\abx@field@prefixnumber}} - {}% - \csuse{abx@ffd@*@labelalpha}{\abx@field@labelalpha}% - \ifundef\abx@field@extraalpha - {} - {\csuse{abx@ffd@*@extraalpha}{\abx@field@extraalpha}}}}}}} - {\csgappto\blx@bbl@data{% - \let\abx@field@labelalpha\abx@field@shorthand}% - \iftoggle{blx@skipbib} - {} - {\blx@setlabwidth{\labelalphawidth}{% - \csuse{abx@ffd@*@labelalphawidth}{\abx@field@shorthand}}}}} - -\def\blx@bbl@labelyear{% - \ifundef\abx@field@extrayear - {} - {\ifnum\abx@field@extrayear>\c@maxextrayear - \global\c@maxextrayear\abx@field@extrayear\relax - \fi}} - -\def\blx@bbl@labelname{% BibTeX only - \iftoggle{blx@useauthor} - {\ifundef\abx@name@shortauthor - {\ifundef\abx@name@author - {\blx@bbl@labelname@i} - {\csgappto\blx@bbl@data{% - \c@labelname\c@author - \let\abx@name@labelname\abx@name@author}% - \iftoggle{abx@bool@moreauthor} - {\csgappto\blx@bbl@data{% - \toggletrue{abx@bool@morelabelname}}} - {}}} - {\csgappto\blx@bbl@data{% - \c@labelname\c@shortauthor - \let\abx@name@labelname\abx@name@shortauthor}% - \iftoggle{abx@bool@moreshortauthor} - {\csgappto\blx@bbl@data{% - \toggletrue{abx@bool@morelabelname}}} - {}}} - {\blx@bbl@labelname@i}} - -\def\blx@bbl@labelname@i{% - \iftoggle{blx@useeditor} - {\ifundef\abx@name@shorteditor - {\ifundef\abx@name@editor - {\blx@bbl@labelname@ii} - {\csgappto\blx@bbl@data{% - \c@labelname\c@editor - \let\abx@name@labelname\abx@name@editor}% - \iftoggle{abx@bool@moreeditor} - {\csgappto\blx@bbl@data{% - \toggletrue{abx@bool@morelabelname}}} - {}}} - {\csgappto\blx@bbl@data{% - \c@labelname\c@shorteditor - \let\abx@name@labelname\abx@name@shorteditor}% - \iftoggle{abx@bool@moreshorteditor} - {\csgappto\blx@bbl@data{% - \toggletrue{abx@bool@morelabelname}}} - {}}} - {\blx@bbl@labelname@ii}} - -\def\blx@bbl@labelname@ii{% - \iftoggle{blx@usetranslator} - {\ifundef\abx@name@translator - {} - {\csgappto\blx@bbl@data{% - \c@labelname\c@translator - \let\abx@name@labelname\abx@name@translator}% - \iftoggle{abx@bool@moretranslator} - {\csgappto\blx@bbl@data{% - \toggletrue{abx@bool@morelabelname}}} - {}}} - {}} - -\def\blx@bbl@titles{% - \ifundef\abx@field@shorttitle - {\csgappto\blx@bbl@data{% - \let\abx@field@labeltitle\abx@field@title}} - {\csgappto\blx@bbl@data{% - \let\abx@field@labeltitle\abx@field@shorttitle}}% - \ifundef\abx@field@indextitle - {\csgappto\blx@bbl@data{% - \let\abx@field@indextitle\abx@field@title}} - {}% - \ifundef\abx@field@indexsorttitle - {\csgappto\blx@bbl@data{% - \let\abx@field@indexsorttitle\abx@field@indextitle}} - {}} - -\def\blx@bbl@hooks{% - \ifcsundef{blx@hook@bblitem@*} - {\ifcsundef{blx@hook@bblitem@\abx@field@entrytype} - {} - {\csuse\blx@bbl@data - \csuse{blx@hook@bblitem@\abx@field@entrytype}}} - {\csuse\blx@bbl@data - \csuse{blx@hook@bblitem@*}% - \csuse{blx@hook@bblitem@\abx@field@entrytype}}} - -\newrobustcmd*{\AtDataInput}[1][*]{\csgappto{blx@hook@bblitem@#1}} -\@onlypreamble\AtDataInput - -\def\blx@setlabwidth#1#2{% - \begingroup - \settowidth{\@tempdima}{\bibfont#2}% - \ifnum\@tempdima>#1% - \global#1\@tempdima - \fi - \endgroup} - -\def\blx@bblstart{% - \let\preamble\blx@bbl@preamble - \let\warn\blx@bbl@thewarn - \let\refsection\blx@bbl@refsection - \let\endrefsection\blx@bbl@endrefsection - \let\entry\blx@bbl@entry - \let\endentry\blx@bbl@endentry - \let\missing\blx@bbl@missing - \let\lossort\blx@bbl@lossort - \let\endlossort\blx@bbl@endlossort - \let\set\blx@bbl@set - \let\inset\blx@bbl@inset - \let\xref\blx@bbl@xref % BibTeX only - \let\keyw\blx@bbl@keyw - \let\name\blx@bbl@namedef - \let\list\blx@bbl@listdef - \let\field\blx@bbl@fielddef - \let\strng\blx@bbl@stringdef - \let\count\blx@bbl@countdef - \let\true\blx@bbl@booltrue - \let\false\blx@bbl@boolfalse - \let\verb\blx@bbl@verbdef - \let\endverb\blx@bbl@verbend} - -\def\blx@bblend{% - \ifcsdef{blx@refs@\the\c@refsection}% BibTeX only - {\begingroup - \let\do\blx@addxref - \dolistcsloop{blx@refs@\the\c@refsection}% - \endgroup - \global\csundef{blx@refs@\the\c@refsection}} - {}% - \iftoggle{blx@addset} - {\blx@addset - \global\togglefalse{blx@addset}} - {}} - -% {<instcount>}{<entrykey>}{<refsection>}{<labelnumber>} - -\protected\def\blx@aux@number#1#2#3#4{% - \blx@bbl@addentryfield{\detokenize{#2}}{#3}{localnumber}{#4}% - \ifblank{#4} - {} - {\csgdef{blx@labelnumber@#3}{#4}% - \blx@addchecksum{#1}{#4}}} - -\AtEndDocument{% - \def\abx@aux@number#1#2#3#4{\blx@addchecksum{#1}{#4}}} - -\def\blx@addlabelnumber{% - \begingroup - \nottoggle{blx@skiplab} - {\iftoggle{blx@labelnumber} - {\ifundef\abx@field@shorthand - {\ifundef\abx@field@localnumber - {\iftoggle{blx@omitnumbers} - {\let\abx@field@localnumber\@empty} - {\csnumgdef{blx@labelnumber@\the\c@refsection}{% - \csuse{blx@labelnumber@\the\c@refsection}+1}% - \edef\abx@field@localnumber{\csuse{blx@labelnumber@\the\c@refsection}}% - \blx@bbl@addentryfield{\abx@field@entrykey}{\the\c@refsection}% - {localnumber}{\abx@field@localnumber}}% - \blx@auxwrite\@mainaux{}{% - \string\abx@aux@number{\the\c@instcount}{\abx@field@entrykey}% - {\the\c@refsection}{\abx@field@localnumber}}} - {}} - {}}% - {}} - {}% - \endgroup} - -\def\blx@addprefixnumber{% - \nottoggle{blx@skiplab} - {\ifdef\blx@prefixnumbers - {\ifundef\abx@field@shorthand - {\edef\abx@field@prefixnumber{\expandonce\blx@prefixnumbers}% - \ifundef\abx@field@prefixnumber - {\blx@bbl@addentryfield{\abx@field@entrykey}{\the\c@refsection}% - {prefixnumber}{\expandonce\abx@field@prefixnumber}} - {}% - \blx@auxwrite\@mainaux{}{% - \string\blx@aux@numprefix{\abx@field@entrykey}% - {\the\c@refsection}{\expandonce\abx@field@prefixnumber}}} - {}} - {}} - {}} - -% {<entrykey>}{<refsection>}{<numberprefix>} - -\protected\def\blx@aux@numprefix#1#2#3{% - \blx@bbl@addentryfield{\detokenize{#1}}{#2}{prefixnumber}{#3}} - -\def\blx@bbl@lossort{% - \begingroup - \def\key##1{\listcsxadd{blx@losh@\the\c@refsection}{\detokenize{##1}}}} -\let\blx@bbl@endlossort\endgroup - -\def\blx@addpageref#1{% - \begingroup - \blx@tempcnta\z@ - \let\blx@tempa\@empty - \def\do##1{% - \appto\blx@tempa{{##1}}% - \advance\blx@tempcnta\@ne}% - \dolistcsloop{blx@pref@\the\c@refsection @#1}% - \edef\blx@tempa{\endgroup\noexpand\blx@bbl@listdef - {pageref}{\the\blx@tempcnta}{\blx@tempa}}% - \blx@tempa} - -%% Data input - -\def\blx@bblinput{% - \begingroup - \iftoggle{blx@reencode} - {\ifdef\inpenc@prehook - {\inpenc@prehook{}% - \inpenc@posthook{}} - {}% - \inputencoding\blx@bibencoding} - {}% - \blx@info@noline{Trying to load bibliographic data..}% - \blx@blxinit - \ifnumequal\blx@backend\blx@backend@biber - {\blx@bblfile@biber} - {\blx@bblfile@bibtex - \blx@bblsecs@bibtex}% - \endgroup - \iftoggle{blx@reencode} - {\ifdef\@enablequotes - {\@enablequotes} - {}} - {}} - -\def\blx@bblfile@biber{% - \blx@secinit - \begingroup - \blx@bblstart - \blx@ifsigned{\jobname}{bbl} - {\InputIfFileExists{\jobname.bbl} - {\blx@info@noline{... file '\jobname.bbl' found}} - {\blx@info@noline{... file '\jobname.bbl' not found}% - \typeout{No file \jobname.bbl.}}} - {}% - \blx@bblend - \endgroup - \csnumgdef{blx@labelnumber@\the\c@refsection}{0}} - -\def\blx@bblfile@bibtex{% - \blx@secinit - \begingroup - \blx@bblstart - \ifnum\c@refsection>\z@ - \edef\blx@auxfile@bibtex{\jobname\the\c@refsection\blxauxsuffix}% - \else - \edef\blx@auxfile@bibtex{\jobname}% - \fi - \blx@ifsigned{\blx@auxfile@bibtex}{bbl} - {\InputIfFileExists{\blx@auxfile@bibtex.bbl} - {\blx@info@noline{... file '\blx@auxfile@bibtex.bbl' found}} - {\blx@info@noline{... file '\blx@auxfile@bibtex.bbl' not found}% - \typeout{No file \blx@auxfile@bibtex.bbl.}}} - {}% - \blx@bblend - \endgroup - \csnumgdef{blx@labelnumber@\the\c@refsection}{0}% - \iftoggle{blx@reencode}{\blx@reencode}{}} - -\def\blx@bblsecs@bibtex{% - \advance\c@refsection\@ne - \ifnum\c@refsection>\blx@maxsection - \else - \blx@bblfile@bibtex - \expandafter\blx@bblsecs@bibtex - \fi} - -\def\blx@reencode{% - \begingroup - \abx@hook@reencode - \let\protect\@unexpandable@protect - \def\do##1{\cslet{abx@name@##1}\relax}% - \abx@donames - \def\do##1{\cslet{abx@list@##1}\relax}% - \abx@dolists - \def\do##1{\cslet{abx@field@##1}\relax}% - \abx@dofields\do{options}% - \long\def\abx@field@execute##1{% - \unexpanded{\abx@field@execute{##1}}}% - \csuse{abx@preamble}% - \def\do##1{% - \csxdef{blx@data@\the\c@refsection @##1}{% - \csuse{blx@data@\the\c@refsection @##1}}}% - \dolistcsloop{blx@sort@\the\c@refsection}% - \endgroup} - -\def\abx@hook@reencode{% - \ifdef\@enablequotes{\@enablequotes}{}% - \def\IeC##1{\unexpanded{\IeC{##1}}}% - \let~\relax -} - -%% Bibliography - -% {<name>}{<start code>}[<end code>]{<item code>} - -\newrobustcmd*{\defbibenvironment}[4]{% - \long\csdef{blx@env@#1}{#2}% - \long\csdef{blx@endenv@#1}{#3}% - \long\csdef{blx@item@#1}{#4}} - -\defbibenvironment{bibliography} - {\list{}{% - \leftmargin\bibhang - \itemindent-\leftmargin - \itemsep\bibitemsep - \parsep\bibparsep}} - {\endlist} - {\item} - -\defbibenvironment{shorthands} - {\list{\thefield{shorthand}}{% - \labelwidth\shorthandwidth - \labelsep\biblabelsep - \leftmargin\labelwidth - \advance\leftmargin\labelsep - \itemsep\bibitemsep - \parsep\bibparsep - \def\makelabel##1{##1\hss}}} - {\endlist} - {\item} - -% {<name>}[<default>]{<code>} - -\newrobustcmd*{\defbibheading}[1]{% - \@ifnextchar[%] - {\blx@defbibheading{blx@head@#1}} - {\blx@defbibheading{blx@head@#1}[\bibname]}} - -\def\blx@defbibheading#1[#2]{% - \csundef{#1}% - \expandafter\newcommand\csname#1\endcsname[1][#2]} - -% {<name>}{<text>} - -\newrobustcmd*{\defbibnote}[1]{% - \long\csdef{blx@note@#1}} - -% {<name>}{<code>} - -\newrobustcmd*{\defbibfilter}[2]{% - \begingroup - \def\blx@flt@error{\csname blx@flt@errortrue\endcsname}% - \let\not\blx@flt@not \let\NOT\not - \let\and\blx@flt@and \let\AND\and - \let\or\blx@flt@or \let\OR\or - \letcs\({blx@flt@(} \letcs\){blx@flt@)}% - \def\section##1{\blx@flt@error}% - \def\segment##1{segment=##1}% - \def\type##1{type=##1}% - \def\subtype##1{subtype=##1}% - \def\keyword##1{keyword={##1}}% - \def\category##1{category={##1}}% - \edef\blx@tempa{\noexpand\blx@defbibfilter{#2}}% - \ifdef\blx@flt@errortrue - {\blx@err@filter} - {\let\the\relax - \let\blx@flt@item\relax - \edef\blx@tempa{\blx@tempa}% - \ifdef\blx@flt@errortrue - {\blx@err@filter} - {\csxdef{blx@filter@#1}{\blx@tempa}}}% - \endgroup} - -\def\blx@defbibfilter#1{% - \blx@defbibfilter@i#1 &} -\def\blx@defbibfilter@i#1 #2&{% - \blx@defbibfilter@ii#1==&% - \ifblank{#2}{}{\blx@defbibfilter@i#2 &}} -\def\blx@defbibfilter@ii#1=#2=#3&{% - \ifblank{#2} - {\ifblank{#1} - {} - {\ifcsdef{blx@flt@#1} - {\csname blx@flt@#1\endcsname} - {\blx@flt@error}}} - {\ifcsdef{blx@flt@#1} - {\csname blx@flt@#1\endcsname{\detokenize{#2}}} - {\blx@flt@error}}} - -\def\blx@flt@and{ and } -\def\blx@flt@or{ or } -\def\blx@flt@not{ not } -\csdef{blx@flt@(}{ ( } -\csdef{blx@flt@)}{ ) } -\def\blx@flt@segment#1{% - test {\xifinlistcs\blx@flt@item{blx@segm@\the\c@refsection @#1}}} -\def\blx@flt@type#1{% - test {\xifinlistcs\blx@flt@item{blx@type@\the\c@refsection @#1}}} -\def\blx@flt@subtype#1{% - test {\xifinlistcs\blx@flt@item{blx@subt@\the\c@refsection @#1}}} -\def\blx@flt@keyword#1{% - test {\xifinlistcs\blx@flt@item{blx@keyw@\the\c@refsection @#1}}} -\def\blx@flt@category#1{% - test {\xifinlistcs\blx@flt@item{blx@catg@#1}}} - -% {<name>}{<code>} - -\newrobustcmd*{\defbibcheck}[2]{% - \csdef{blx@bibcheck@#1}{% - \togglefalse{blx@skipentry}% - \def\skipentry{\toggletrue{blx@skipentry}}% - #2\undef\skipentry}} - -% options - -\define@key{blx@bib}{section}{% - \ifcsundef{blx@sbib@#1} - {\blx@err@nosec{#1}} - {\c@refsection#1\relax - \iftoggle{blx@tempa} - {\letcs\blx@tempa{blx@sbib@\the\c@refsection}} - {\blx@err@secfirst}}} - -\define@key{blx@los}{section}{% - \ifcsundef{blx@sbib@#1} - {\blx@err@nosec{#1}} - {\c@refsection#1\relax - \iftoggle{blx@tempa} - {\letcs\blx@tempa{blx@losh@\the\c@refsection}} - {\blx@err@secfirst}}} - -\define@key{blx@bbg}{section}{% - \ifcsundef{blx@sbib@#1} - {\blx@err@nosec{#1}} - {\c@refsection#1\relax}} - -\define@key{blx@bbc}{section}{% - \ifcsundef{blx@sbib@#1} - {\blx@err@nosec{#1}} - {\c@refsection#1\relax}} - -\define@key{blx@bib}{segment}{\blx@key@segment{#1}} -\define@key{blx@los}{segment}{\blx@key@segment{#1}} - -\def\blx@key@segment#1{% - \ifcsundef{blx@segm@\the\c@refsection @#1} - {\blx@error - {Segment '#1' not found} - {The reference segment '#1' could not be found}} - {\c@refsegment#1\relax - \blx@printbibchecks - \blx@filter\blx@tempa{blx@segm@\the\c@refsection @#1}}} - -\define@key{blx@bib}{type}{\blx@key@type{#1}} -\define@key{blx@los}{type}{\blx@key@type{#1}} - -\def\blx@key@type#1{% - \ifcsundef{blx@type@\the\c@refsection @#1} - {\blx@warning{Type '#1' not found}% - \let\blx@tempa\@empty} - {\blx@printbibchecks - \iftoggle{blx@tempb} - {\togglefalse{blx@tempb}% - \blx@filter\blx@tempa{blx@type@\the\c@refsection @#1}} - {\let\blx@tempa\@empty - \blx@error - {'type' used multiple times} - {When passing multiple filter options, each entry\MessageBreak - must satisfy all conditions (AND conjunction),\MessageBreak - hence some options may not be used twice.\MessageBreak - Use 'filter' and '\string\defbibfilter' with OR conjunctions}}}} - -\define@key{blx@bib}{nottype}{\blx@key@nottype{#1}} -\define@key{blx@los}{nottype}{\blx@key@nottype{#1}} - -\def\blx@key@nottype#1{% - \ifcsundef{blx@type@\the\c@refsection @#1} - {} - {\blx@printbibchecks - \blx@notfilter\blx@tempa{blx@type@\the\c@refsection @#1}}} - -\define@key{blx@bib}{subtype}{\blx@key@subtype{#1}} -\define@key{blx@los}{subtype}{\blx@key@subtype{#1}} - -\def\blx@key@subtype#1{% - \ifcsundef{blx@subt@\the\c@refsection @#1} - {\blx@warning{Subtype '#1' not found}% - \let\blx@tempa\@empty} - {\blx@printbibchecks - \iftoggle{blx@tempb} - {\togglefalse{blx@tempb}% - \blx@filter\blx@tempa{blx@subt@\the\c@refsection @#1}} - {\let\blx@tempa\@empty - \blx@error - {'subtype' used multiple times} - {When passing multiple filter options, each entry\MessageBreak - must satisfy all conditions (AND conjunction),\MessageBreak - hence some options may not be used twice.\MessageBreak - Use 'filter' and '\string\defbibfilter' with OR conjunctions}}}} - -\define@key{blx@bib}{notsubtype}{\blx@key@notsubtype{#1}} -\define@key{blx@los}{notsubtype}{\blx@key@notsubtype{#1}} - -\def\blx@key@notsubtype#1{% - \ifcsundef{blx@subt@\the\c@refsection @#1} - {} - {\blx@printbibchecks - \blx@notfilter\blx@tempa{blx@subt@\the\c@refsection @#1}}} - -\define@key{blx@bib}{keyword}{\blx@key@keyword{#1}} -\define@key{blx@los}{keyword}{\blx@key@keyword{#1}} - -\def\blx@key@keyword#1{% - \ifcsundef{blx@keyw@\the\c@refsection @\detokenize{#1}} - {\blx@warning{Keyword '\detokenize{#1}' not found}% - \let\blx@tempa\@empty} - {\blx@printbibchecks - \blx@filter\blx@tempa{blx@keyw@\the\c@refsection @\detokenize{#1}}}} - -\define@key{blx@bib}{notkeyword}{\blx@key@notkeyword{#1}} -\define@key{blx@los}{notkeyword}{\blx@key@notkeyword{#1}} - -\def\blx@key@notkeyword#1{% - \ifcsundef{blx@keyw@\the\c@refsection @\detokenize{#1}} - {} - {\blx@printbibchecks - \blx@notfilter\blx@tempa{blx@keyw@\the\c@refsection @\detokenize{#1}}}} - -\define@key{blx@bib}{category}{\blx@key@category{#1}} -\define@key{blx@los}{category}{\blx@key@category{#1}} - -\def\blx@key@category#1{% - \ifcsundef{blx@catg@\detokenize{#1}} - {\blx@warning{Category '\detokenize{#1}' not found}% - \let\blx@tempa\@empty} - {\blx@printbibchecks - \blx@filter\blx@tempa{blx@catg@\detokenize{#1}}}} - -\define@key{blx@bib}{notcategory}{\blx@key@notcategory{#1}} -\define@key{blx@los}{notcategory}{\blx@key@notcategory{#1}} - -\def\blx@key@notcategory#1{% - \ifcsundef{blx@catg@#1} - {} - {\blx@printbibchecks - \blx@notfilter\blx@tempa{blx@catg@#1}}} - -\define@key{blx@bib}{filter}{\blx@key@filter{#1}} -\define@key{blx@los}{filter}{\blx@key@filter{#1}} - -\def\blx@key@filter#1{% - \ifcsdef{blx@filter@#1} - {\blx@printbibchecks - \blx@bibfilter\blx@tempa{blx@filter@#1}} - {\let\blx@tempa\@empty - \blx@error - {Filter '#1' not found} - {The filter '#1' could not be found.\MessageBreak - Use \string\defbibfilter\space to define it}}} - -\define@key{blx@bib}{check}{\blx@key@bibcheck{#1}} -\define@key{blx@los}{check}{\blx@key@bibcheck{#1}} - -\def\blx@key@bibcheck#1{% - \ifcsdef{blx@bibcheck@#1} - {\letcs\blx@bibcheck{blx@bibcheck@#1}} - {\let\blx@tempa\@empty - \blx@error - {Check '#1' not found} - {The check '#1' could not be found.\MessageBreak - Use \string\defbibcheck\space to define it}}} - -\define@key{blx@bhd}{heading}{\blx@key@heading{#1}} -\define@key{blx@bib}{heading}{\blx@key@heading{#1}} -\define@key{blx@los}{heading}{\blx@key@heading{#1}} -\define@key{blx@bbs}{heading}{\blx@key@heading{#1}} -\define@key{blx@bbg}{heading}{\blx@key@heading{#1}} - -\def\blx@key@heading#1{% - \ifcsundef{blx@head@#1} - {\blx@error - {Heading '#1' not found} - {The heading '#1' could not be found.\MessageBreak - Use \string\defbibheading\space to define it}} - {\def\blx@theheading{#1}}} - -\define@key{blx@bib}{env}{\blx@key@env{#1}} -\define@key{blx@los}{env}{\blx@key@env{#1}} -\define@key{blx@bbs}{env}{\blx@key@env{#1}} -\define@key{blx@bbg}{env}{\blx@key@env{#1}} -\define@key{blx@bbc}{env}{\blx@key@env{#1}} - -\def\blx@key@env#1{% - \ifcsundef{blx@env@#1} - {\blx@error - {Environment '#1' not found} - {The environment '#1' could not be found.\MessageBreak - Use \string\defbibenvironment\space to define it}} - {\def\blx@theenv{#1}}} - -\define@key{blx@bhd}{title}{\def\blx@thetitle{#1}} -\define@key{blx@bib}{title}{\def\blx@thetitle{#1}} -\define@key{blx@los}{title}{\def\blx@thetitle{#1}} - -\define@key{blx@bib}{prenote}{\blx@key@prenote{#1}} -\define@key{blx@los}{prenote}{\blx@key@prenote{#1}} -\define@key{blx@bbs}{prenote}{\blx@key@prenote{#1}} -\define@key{blx@bbg}{prenote}{\blx@key@prenote{#1}} -\define@key{blx@bbc}{prenote}{\blx@key@prenote{#1}} -\def\blx@key@prenote#1{% - \ifcsundef{blx@note@#1} - {\blx@error - {Note '#1' not found} - {The note '#1' could not be found.\MessageBreak - Use \string\defbibnote\space to define it}} - {\def\blx@theprenote{#1}}} - -\define@key{blx@bib}{postnote}{\blx@key@postnote{#1}} -\define@key{blx@los}{postnote}{\blx@key@postnote{#1}} -\define@key{blx@bbs}{postnote}{\blx@key@postnote{#1}} -\define@key{blx@bbg}{postnote}{\blx@key@postnote{#1}} -\define@key{blx@bbc}{postnote}{\blx@key@postnote{#1}} - -\def\blx@key@postnote#1{% - \ifcsundef{blx@note@#1} - {\blx@error - {Note '#1' not found} - {The note '#1' could not be found.\MessageBreak - Use \string\defbibnote\space to define it}} - {\def\blx@thepostnote{#1}}} - -\define@key{blx@bib}{resetnumbers}[true]{% - \ifstrequal{#1}{true} - {\iftoggle{blx@defernumbers} - {\csnumdef{blx@labelnumber@\the\c@refsection}{0}} - {\blx@warning{% - Option 'resetnumbers' requires 'defernumbers=true'.\MessageBreak - Ignoring 'resetnumbers=true'}}} - {}} - -\define@key{blx@bib}{omitnumbers}[true]{% - \ifstrequal{#1}{true} - {\iftoggle{blx@defernumbers} - {\toggletrue{blx@omitnumbers}} - {\blx@warning{% - Option 'omitnumbers' requires 'defernumbers=true'.\MessageBreak - Ignoring 'omitnumbers=true'}}} - {}} - -\define@key{blx@bib}{prefixnumbers}{% - \def\blx@prefixnumbers{#1}% - \iftoggle{blx@defernumbers} - {\csnumdef{blx@labelnumber@\the\c@refsection}{0}} - {\iftoggle{blx@labelnumber} - {\blx@warning{% - Option 'prefixnumbers' requires global\MessageBreak - 'defernumbers=true'}} - {}}} - -% [<options>] - -\newrobustcmd*{\printbibheading}{% - \begingroup - \edef\on@line{\on@line}% - \@ifnextchar[%] - {\blx@printbibheading} - {\blx@printbibheading[]}} - -\def\blx@printbibheading[#1]{% - \def\blx@theheading{bibliography}% - \let\blx@thetitle\@empty - \blx@safe@actives - \setkeys{blx@bhd}{#1}% - \blx@rest@actives - \blx@bibheading\blx@theheading\blx@thetitle - \endgroup} - -% [<options>] - -\newrobustcmd*{\printbibliography}{% - \begingroup - \edef\on@line{\on@line}% - \@ifnextchar[%] - {\blx@printbibliography} - {\blx@printbibliography[]}} - -\def\blx@printbibliography[#1]{% - \toggletrue{blx@tempa}% - \toggletrue{blx@tempb}% - \letcs\blx@tempa{blx@sbib@\the\c@refsection}% - \def\blx@theheading{bibliography}% - \def\blx@theenv{bibliography}% - \let\blx@theprenote\@empty - \let\blx@thepostnote\@empty - \let\blx@thetitle\@empty - \blx@safe@actives - \setkeys{blx@bib}{#1}% - \blx@rest@actives - \ifdefvoid\blx@tempa - {\blx@warn@bibempty\endgroup} - {\blx@bibliography\blx@tempa}} - -% [<options>] - -\newrobustcmd*{\bibbysection}{% - \begingroup - \ifnum\blx@maxsection=\z@ - \blx@warning{No reference sections found}% - \fi - \edef\on@line{\on@line}% - \@ifnextchar[%] - {\blx@bibbysection} - {\blx@bibbysection[]}} - -\def\blx@bibbysection[#1]{% - \def\blx@theheading{bibliography}% - \def\blx@theenv{bibliography}% - \let\blx@theprenote\@empty - \let\blx@thepostnote\@empty - \let\blx@thetitle\@empty - \c@refsection\z@ - \blx@safe@actives - \setkeys{blx@bbs}{#1}% - \blx@rest@actives - \togglefalse{blx@tempa}% - \blx@refsections} - -\def\blx@refsections{% - \ifcsvoid{blx@sbib@\the\c@refsection} - {} - {\toggletrue{blx@tempa}% - \begingroup - \expandafter\blx@bibliography\csname blx@sbib@\the\c@refsection\endcsname}% - \ifnum\c@refsection<\blx@maxsection - \advance\c@refsection\@ne - \expandafter\blx@refsections - \else - \iftoggle{blx@tempa}{}{\blx@warn@bibempty}% - \endgroup - \fi} - -% [<options>] - -\newrobustcmd*{\bibbysegment}{% - \begingroup - \edef\on@line{\on@line}% - \ifnum\blx@maxsegment=\z@ - \blx@warning{No reference segments found}% - \fi - \@ifnextchar[%] - {\blx@bibbysegment} - {\blx@bibbysegment[]}} - -\def\blx@bibbysegment[#1]{% - \def\blx@theheading{bibliography}% - \def\blx@theenv{bibliography}% - \let\blx@theprenote\@empty - \let\blx@thepostnote\@empty - \let\blx@thetitle\@empty - \c@refsection\z@ - \c@refsegment\@ne - \blx@safe@actives - \setkeys{blx@bbg}{#1}% - \blx@rest@actives - \togglefalse{blx@tempa}% - \blx@refsegments} - -\def\blx@refsegments{% - \ifcsvoid{blx@segm@\the\c@refsection @\the\c@refsegment} - {} - {\toggletrue{blx@tempa}% - \begingroup - \letcs\blx@tempa{blx@sbib@\the\c@refsection}% - \blx@filter\blx@tempa{blx@segm@\the\c@refsection @\the\c@refsegment}% - \blx@bibliography\blx@tempa}% - \ifnum\c@refsegment<\blx@maxsegment - \advance\c@refsegment\@ne - \expandafter\blx@refsegments - \else - \iftoggle{blx@tempa}{}{\blx@warn@bibempty}% - \endgroup - \fi} - -% [<options>] - -\newrobustcmd*{\bibbycategory}{% - \begingroup - \edef\on@line{\on@line}% - \ifx\blx@categories\@empty - \blx@warning{No categories found}% - \fi - \@ifnextchar[%] - {\blx@bibbycategory} - {\blx@bibbycategory[]}} - -\def\blx@bibbycategory[#1]{% - \def\blx@theheading{bibliography}% - \def\blx@theenv{bibliography}% - \let\blx@theprenote\@empty - \let\blx@thepostnote\@empty - \let\blx@thetitle\@empty - \c@refsection\z@ - \blx@safe@actives - \setkeys{blx@bbc}{#1}% - \blx@rest@actives - \togglefalse{blx@tempa}% - \forlistloop\blx@bibcategory\blx@categories - \blx@endbibcategory} - -\def\blx@bibcategory#1{% - \ifcsvoid{blx@catg@#1} - {} - {\toggletrue{blx@tempa}% - \begingroup - \blx@key@heading{#1}% - \letcs\blx@tempa{blx@sbib@\the\c@refsection}% - \blx@filter\blx@tempa{blx@catg@#1}% - \blx@bibliography\blx@tempa}}% - -\def\blx@endbibcategory{% - \iftoggle{blx@tempa}{}{\blx@warn@bibempty}% - \endgroup} - -% {<entrykey>,...} - -\def\blx@bibliography{% - \blx@bibheading\blx@theheading\blx@thetitle - \blx@bibnote\blx@theprenote - \begingroup - \blx@bibinit - \let\@noitemerr\@empty - \let\blx@noitem\blx@warn@bibempty - \ifnum\bibinitsep=\z@ - \let\blx@initsep\relax - \fi - \ifnum\bibnamesep=\z@ - \let\blx@namesep\relax - \fi - \csuse{blx@env@\blx@theenv}% - \csuse{blx@hook@bibinit}% - \let\blx@do\blx@bibitem - \let\blx@done\blx@endbibliography - \blx@listloop} - -\def\blx@endbibliography{% - \csuse{blx@endenv@\blx@theenv}% - \blx@noitem - \endgroup - \blx@bibnote\blx@thepostnote - \endgroup} - -\def\blx@bibheading#1#2{% - \begingroup - \edef\blx@tempa{\endgroup - \noexpand\blx@bibheading@i{\expandonce#1}{\expandonce#2}}% - \blx@tempa} - -\def\blx@bibheading@i#1#2{% - \let\newrefsection\relax - \let\newrefsegment\relax - \ifblank{#2} - {\csuse{blx@head@#1}} - {\csuse{blx@head@#1}[#2]}% - \let\newrefsection\blx@newrefsection - \let\newrefsegment\blx@newrefsegment} - -\def\blx@bibnote#1{% - \ifdefempty#1 - {} - {\begingroup - \let\newrefsection\relax - \let\newrefsegment\relax - \noindent - \csuse{blx@note@#1}\par\nobreak - \endgroup}} - -\def\blx@bibinit{% - \iftoggle{blx@citation} - {} - {\toggletrue{blx@bibliography}}% - \blx@blxinit - \blx@resetdata - \csuse{blx@hook@bbxinit}% - \bibsetup\bibfont - \blx@setsfcodes - \csuse{blx@bibsetup}} - -% {<entrykey>} - -\def\blx@bibitem#1{% - \blx@ifdata{#1} - {\begingroup - \blx@getdata{#1}% - \blx@bibcheck - \iftoggle{blx@skipentry}{}{% - \global\let\blx@noitem\@empty - \blx@setoptions@type\abx@field@entrytype - \blx@setoptions@entry - \blx@thelabelnumber - \blx@addprefixnumber - \addtocounter{instcount}\@ne - \csuse{blx@item@\blx@theenv}\relax - \blx@initsep - \blx@namesep - \csuse{blx@hook@bibitem}% - \blx@execute - \blx@initunit - \blx@anchor - \blx@beglang - \bibsentence - \blx@pagetracker - \blx@driver\abx@field@entrytype - \blx@postpunct - \blx@endlang}% - \endgroup} - {}} - -\let\blx@bibcheck\relax - -\def\blx@initsep{% - \blx@imc@iffieldundef{sortinit} - {} - {\ifnum\c@instcount>\@ne - \blx@imc@iffieldequals{sortinit}\blx@previnit - {} - {\addvspace{\bibinitsep}}% - \fi - \global\let\blx@previnit\abx@field@sortinit}} - -\def\blx@namesep{% - \ifnum\c@instcount>\@ne - \blx@imc@iffieldequals{fullhash}\blx@prevhash - {} - {\addvspace{\bibnamesep}}% - \fi - \global\let\blx@prevhash\abx@field@fullhash} - -\newrobustcmd*{\AtBeginBibliography}{\gappto\blx@hook@bibinit} -\newrobustcmd*{\AtEveryBibitem}{\gappto\blx@hook@bibitem} -\@onlypreamble\AtBeginBibliography -\@onlypreamble\AtEveryBibitem - -% page tracker - -\def\blx@pagetracker@context{% - \blx@leavevmode - \ifbool{@filesw} - {\ifbool{pagetracker} - {\protected@write\@mainaux{}{% - \iftoggle{blx@footnote} - {\string\abx@aux@fnpage} - {\string\abx@aux@page}% - {\the\c@instcount}{\noexpand\the\c@page}}} - {}} - {}} - -% {<instcount>}{<page>} - -\protected\def\blx@aux@page#1#2{% - \csgdef{blx@page@#1}{#2}% - \blx@addpagesum{#1}{#2}} -\protected\def\blx@aux@spread#1#2{% - \ifodd#2\relax - \csxdef{blx@page@#1}{\number\numexpr#2-1}% - \else - \csgdef{blx@page@#1}{#2}% - \fi - \blx@addpagesum{#1}{#2}} - -\protected\def\blx@aux@fnpage#1#2{% - \csgdef{blx@fnpage@#1}{#2}% - \blx@addpagesum{#1}{#2}} -\protected\def\blx@aux@fnspread#1#2{% - \ifodd#2\relax - \csxdef{blx@fnpage@#1}{\number\numexpr#2-1}% - \else - \csgdef{blx@fnpage@#1}{#2}% - \fi - \blx@addpagesum{#1}{#2}} - -\AtEndDocument{% - \def\abx@aux@page#1#2{\blx@addpagesum{#1}{#2}}% - \def\abx@aux@fnpage#1#2{\blx@addpagesum{#1}{#2}}} - -% hyperref interface - -\appto\blx@mkhyperref{% - \let\blx@anchors\@empty - \ifundef\hyper@natanchorstart - {\protected\def\blx@anchor{% - \xifinlist{\the\c@refsection @\abx@field@entrykey}{\blx@anchors} - {} - {\listxadd\blx@anchors{\the\c@refsection @\abx@field@entrykey}% - \hypertarget{cite.\the\c@refsection @\abx@field@entrykey}{}}}} - {\protected\def\blx@anchor{% - \xifinlist{\the\c@refsection @\abx@field@entrykey}{\blx@anchors} - {} - {\listxadd\blx@anchors{\the\c@refsection @\abx@field@entrykey}% - \hyper@natanchorstart{\the\c@refsection @\abx@field@entrykey}% - \hyper@natanchorend}}}} - -\appto\blx@mknohyperref{\let\blx@anchor\relax} - -% List of shorthands - -\newrobustcmd*{\printshorthands}{% - \begingroup - \edef\on@line{\on@line}% - \@ifnextchar[%] - {\blx@printshorthands} - {\blx@printshorthands[]}} - -\def\blx@printshorthands[#1]{% - \toggletrue{blx@tempa}% - \toggletrue{blx@tempb}% - \letcs\blx@tempa{blx@losh@\the\c@refsection}% - \def\blx@theheading{shorthands}% - \def\blx@theenv{shorthands}% - \let\blx@theprenote\@empty - \let\blx@thepostnote\@empty - \let\blx@thetitle\@empty - \let\blx@printbibchecks\relax - \blx@safe@actives - \setkeys{blx@los}{#1}% - \blx@rest@actives - \ifdefvoid\blx@tempa - {\blx@warn@losempty\endgroup} - {\blx@shorthands\blx@tempa}} - -\def\blx@printbibchecks{% - \togglefalse{blx@tempa}% - \iftoggle{blx@defernumbers} - {\global\let\blx@printbibchecks\relax} - {\iftoggle{blx@labelnumber} - {\blx@warning@noline{Setting 'defernumbers=true' recommended}} - {\global\let\blx@printbibchecks\relax}}} - -% {<entrykey>,...} - -\def\blx@shorthands{% - \if@twocolumn - \@restonecoltrue\onecolumn - \else - \@restonecolfalse - \fi - \blx@bibheading\blx@theheading\blx@thetitle - \blx@bibnote\blx@theprenote - \begingroup - \blx@bibinit - \let\@noitemerr\@empty - \let\blx@noitem\blx@warn@losempty - \csuse{blx@env@\blx@theenv}% - \csuse{blx@hook@losinit}% - \let\blx@do\blx@lositem - \let\blx@done\blx@endshorthands - \blx@listloop} - -\def\blx@endshorthands{% - \csuse{blx@endenv@\blx@theenv}% - \blx@noitem - \endgroup - \blx@bibnote\blx@thepostnote - \endgroup - \if@restonecol\twocolumn\fi} - -\newrobustcmd*{\AtBeginShorthands}{\gappto\blx@hook@losinit} -\newrobustcmd*{\AtEveryLositem}{\gappto\blx@hook@lositem} -\@onlypreamble\AtBeginShorthands -\@onlypreamble\AtEveryLositem - -% {<entrykey>} - -\def\blx@lositem#1{% - \blx@ifdata{#1} - {\begingroup - \blx@getdata{#1}% - \blx@bibcheck - \iftoggle{blx@skipentry}{}{% - \global\let\blx@noitem\@empty - \blx@setoptions@type\abx@field@entrytype - \blx@setoptions@entry - \addtocounter{instcount}\@ne - \csuse{blx@item@\blx@theenv}\relax - \csuse{blx@hook@lositem}% - \blx@execute - \blx@initunit - \blx@beglang - \bibsentence - \blx@pagetracker - \blx@driver{shorthands}% - \blx@postpunct - \blx@endlang}% - \endgroup} - {}} - -\DeclareBibliographyDriver{shorthands}{% - \iffieldundef{shorttitle} - {\printfield{title}} - {\printfield{shorttitle}}} - -% Reference sections - -\newrobustcmd*{\newrefsection}{% - \ifnum\c@refsection>\z@ - \endrefsection - \fi - \refsection} -\let\blx@newrefsection\newrefsection - -\newrobustcmd*{\refsection}{% - \begingroup - \edef\on@line{\on@line}% - \ifnum\c@refsection>\z@ - \blx@err@nestenv{refsection}% - \blx@endrefsection - \fi - \ifnum\c@refsegment>\z@ - \blx@err@nestenv{refsection}% - \blx@endrefsegment - \fi - \@ifnextchar[%] - {\blx@refsection} - {\blx@refsection[]}} - -\def\blx@refsection{% - \begingroup - \blx@hook@fileverb - \blx@refsection@i} - -\def\blx@refsection@i[#1]{% - \endgroup - \global\advance\blx@maxsection\@ne - \global\c@refsection\blx@maxsection - \blx@inf@refsec - \blx@secinit - \if@filesw - \blx@auxwrite\@mainaux{}{% - \string\abx@aux@refsection{\the\c@refsection}{\the\c@page}}% - \ifblank{#1} - {} - {\let\blx@bibfiles\@empty - \blx@xsanitizeafter{\forcsvlist\blx@refsection@addfile}{#1}% - \forlistloop{\listadd\blx@bibfiles}\blx@bibfiles@global}% - \ifnum\blx@backend=\blx@backend@biber - \blx@refsection@biber - \else - \blx@refsection@bibtex - \fi - \fi - \blx@info{Setting label 'refsection:\the\c@refsection'}% - \label{refsection:\the\c@refsection}% - \endgroup} - -\def\blx@refsection@addfile#1{% - \ifcsdef{blx@res@labl@#1} - {\blx@refsection@addfile@i{\csuse{blx@res@labl@#1}}} - {\blx@refsection@addfile@i{#1}}} - -\def\blx@refsection@addfile@i#1{% - \ifcsdef{blx@res@loca@#1} - {\listeadd\blx@bibfiles{#1}} - {\listeadd\blx@bibfiles{\blx@stripbib{#1}\detokenize{.bib}}}} - -\def\blx@refsection@biber{% - \blx@regbibfiles\jobname\blx@bibfiles - \begingroup - \let\blx@tempa\@empty - \blx@bibdata\blx@tempa\blx@bibfiles - \blx@auxwrite\blx@auxout - {\let\do\blx@datasource} - {\blx@xml@endsection\blx@nl - \blx@xml@comment{section \the\c@refsection}% - \blx@xml@bibdata{\the\c@refsection}{\blx@tempa}% - \blx@xml@section{\the\c@refsection}}% - \endgroup} - -\def\blx@refsection@bibtex{% - \xdef\blx@auxfile@bibtex{\jobname\the\c@refsection\blxauxsuffix}% - \blx@regbibfiles\blx@auxfile@bibtex\blx@bibfiles - \blx@logreq@inactive - \blx@ifsigned{\blx@auxfile@bibtex}{aux} - {\immediate\openout\blx@auxout\blx@auxfile@bibtex.aux\relax - \global\let\blx@auxout@bibtex\blx@auxout - \blx@auxinit@bibtex\blx@bibfiles} - {}} - -\protected\def\endrefsection{% - \blx@endrefsection - \blx@inf@refsec} - -\def\blx@endrefsection{% - \blx@endrefsegment - \ifnum\blx@backend=\blx@backend@biber - \blx@endrefsection@biber - \else - \blx@endrefsection@bibtex - \fi - \global\c@refsection\z@} - -\def\blx@endrefsection@biber{% - \ifnum\c@refsection>\z@ - \blx@auxwrite\blx@auxout{}{% - \blx@xml@endsection\blx@nl - \blx@xml@comment{section 0 (cont.)}% - \blx@xml@section{0}}% - \fi} - -\def\blx@endrefsection@bibtex{% - \ifx\blx@auxout@bibtex\blx@auxout - \immediate\closeout\blx@auxout - \global\let\blx@auxout@bibtex\@mainaux - \xdef\blx@auxfile@bibtex{\jobname}% - \fi} - -\AtEndDocument{% - \blx@endrefsection - \def\abx@aux@refsection#1#2{\blx@addchecksum{#1}{#2}}} - -\protected\def\abx@aux@refsection#1#2{% - \ifnum#1>\blx@maxsection - \global\blx@maxsection#1\relax - \fi - \blx@addchecksum{#1}{#2}} - -% Reference segments - -\newrobustcmd*{\newrefsegment}{% - \ifnum\c@refsegment>\z@ - \blx@endrefsegment - \fi - \refsegment} -\let\blx@newrefsegment\newrefsegment - -\newrobustcmd*{\refsegment}{% - \ifnum\c@refsegment>\z@ - \blx@err@nestenv{refsegment}% - \blx@endrefsegment - \fi - \global\advance\blx@maxsegment\@ne - \global\c@refsegment\blx@maxsegment - \blx@inf@refseg - \blx@info{Setting label 'refsegment:\the\c@refsegment'}% - \label{refsegment:\the\c@refsegment}% - \ifcsundef{blx@segm@\the\c@refsection @\the\c@refsegment} - {\global\cslet{blx@segm@\the\c@refsection @\the\c@refsegment}\@empty} - {}} - -\protected\def\endrefsegment{% - \blx@endrefsegment - \blx@inf@refseg} - -\def\blx@endrefsegment{% - \global\c@refsegment\z@} - -% Reference section/segment auto-reset - -\def\blx@refpatch@part#1{% - \ifundef\part - {\blx@err@nodocdiv{part}} - {\toggletrue{blx@tempa}% - \def\do##1{% - \patchcmd##1{\@endpart}{#1\@endpart} - {\togglefalse{blx@tempa}\listbreak} - {}}% - \docsvlist{% - \H@old@part,% hyperref - \NR@part,% nameref - \@part}% latex/koma-script/memoir - \iftoggle{blx@tempa} - {\blx@err@patch{\string\@part}} - {}% - \let\do\noexpand}} - -\def\blx@refpatch@chapter#1{% - \ifundef\chapter - {\blx@err@nodocdiv{chapter}} - {\apptocmd\@makechapterhead{#1} - {} - {\blx@err@patch{\string\@makechapterhead}}}} - -\def\blx@refpatch@sect#1{% - \ifcsundef{#1} - {\blx@err@nodocdiv{#1}\@gobbletwo} - {\blx@refpatch@sect@i}} - -\edef\blx@refpatch@sect@i#1#2{% - \def\noexpand\do##1{% - \patchcmd##1% - {\noexpand\@xsect} - {\noexpand\blx@refpatch@sect@ii{#1}{#2}{\string#2}\noexpand\@xsect} - {\togglefalse{blx@tempa}\noexpand\listbreak} - {}}% - \noexpand\blx@refpatch@sect@iii} - -\def\blx@refpatch@sect@ii#1#2#3{% - \ifnumequal{#2}{#3}{#1}{}} - -\def\blx@refpatch@sect@iii{% - \toggletrue{blx@tempa}% - \docsvlist{% order does matter: - \H@old@sectm@m,% memoir+hyperref (what a mess...) - \M@sect,% memoir - \H@old@sect,% hyperref - \NR@sect,% nameref - \scr@sect,% koma-script 3.x - \@sect}% latex - \iftoggle{blx@tempa} - {\blx@err@patch{\string\@sect}} - {}% - \let\do\noexpand} - -% Bibliography categories - -\let\blx@categories\@empty - -% {<category>} - -\newrobustcmd*{\DeclareBibliographyCategory}[1]{% - \ifcsundef{blx@catg@#1} - {\global\cslet{blx@catg@#1}\@empty - \listgadd\blx@categories{#1}} - {\blx@error - {Category '#1' already declared} - {The bibliography category '#1'\MessageBreak - has already been declared}}} -\@onlypreamble\DeclareBibliographyCategory - -% {<category>}{<entrykey>,...} - -\newrobustcmd*{\addtocategory}[2]{% - \ifcsundef{blx@catg@#1} - {\blx@error - {Category '#1' not declared} - {Use \string\DeclareBibliographyCategory\space to declare}} - {\AfterPreamble{% - \blx@xsanitizeafter{\forcsvlist{\blx@addtocategory{#1}}}{#2}}}} - -% {<category>}{<entrykey>,...} - -\def\blx@addtocategory#1#2{% - \blx@auxwrite\@mainaux{}{\string\abx@aux@category{#1}{#2}}% - \abx@aux@category{#1}{#2}} - -% {<category>}{<entrykey>,...} - -\protected\def\abx@aux@category#1#2{% - \xifinlistcs{\detokenize{#2}}{blx@catg@#1} - {} - {\listcsxadd{blx@catg@#1}{\detokenize{#2}}}} - -\AtEndDocument{\let\abx@aux@category\@gobbletwo} - -% [<options>]{<resource>,...} - -\renewrobustcmd*{\bibliography}[1]{% - \begingroup - \def\blx@tempa{file}% - \def\blx@tempb{bibtex}% - \def\blx@tempc{local}% - \blx@xsanitizeafter{\forcsvlist\blx@addbib@legacy}{#1}% - \endgroup} -\@onlypreamble\bibliography - -\def\blx@addbib@legacy#1{% - \begingroup - \edef\blx@tempa{\endgroup - \noexpand\blx@addbib@resource{\blx@stripbib{#1}\detokenize{.bib}}}% - \blx@tempa} - -\def\blx@stripbib#1{% - \expandafter\blx@stripbib@i\detokenize{#1.bib}&} -\edef\blx@stripbib@i{% - \def\noexpand\blx@stripbib@i##1\detokenize{.bib}##2&} -\blx@stripbib@i{#1} - -% [<options>]{<resource>,...} - -\newrobustcmd*{\addbibresource}{% - \blx@addbib\blx@addbib@resource} -\@onlypreamble\addbibresource - -\newrobustcmd*{\addglobalbib}{% - \blx@addbib\blx@addbib@global} -\@onlypreamble\addglobalbib - -\newrobustcmd*{\addsectionbib}{% - \blx@addbib\blx@addbib@register} -\@onlypreamble\addsectionbib - -\def\blx@addbib#1{% - \@ifnextchar[%] - {\blx@addbib@i{#1}} - {\blx@addbib@i{#1}[]}} - -\def\blx@addbib@i#1[#2]{% - \begingroup - \blx@hook@fileverb - \blx@addbib@ii{#1}{#2}} - -\def\blx@addbib@ii#1#2#3{% - \endgroup - \begingroup - \def\blx@tempa{file}% - \def\blx@tempb{bibtex}% - \def\blx@tempc{local}% - \undef\blx@tempd - \setkeys{blx@addbib}{#2}% - \blx@xsanitizeafter{#1}{#3}% - \endgroup} - -\def\blx@hook@fileverb{% - \let\do\@makeother - \dospecials - \catcode`\\=\z@ - \catcode`\{=\@ne - \catcode`\}=\tw@} - -\define@key{blx@addbib}{type}{\def\blx@tempa{#1}} -\define@key{blx@addbib}{datatype}{\def\blx@tempb{#1}} -\define@key{blx@addbib}{location}{\def\blx@tempc{#1}} -\define@key{blx@addbib}{label}{\edef\blx@tempd{\detokenize{#1}}} - -% \blx@res@type@<resource> resource -> type -% \blx@res@data@<resource> resource -> datatype -% \blx@res@loca@<resource> resource -> datatype -% \blx@res@labl@<resource> label -> resource - -\def\blx@addbib@register#1{% - \csxdef{blx@res@type@#1}{\blx@tempa}% - \csxdef{blx@res@data@#1}{\blx@tempb}% - \csxdef{blx@res@loca@#1}{\blx@tempc}% - \ifdef\blx@tempd - {\csxdef{blx@res@labl@\blx@tempd}{#1}} - {}} - -\def\blx@addbib@resource#1{% - \blx@addbib@register{#1}% - \listgadd\blx@bibfiles{#1}% - \blx@regbibfile\jobname{#1}} - -\def\blx@addbib@global#1{% - \blx@addbib@resource{#1}% - \listgadd\blx@bibfiles@global{#1}} - -\let\blx@bibfiles\@empty -\let\blx@bibfiles@global\@empty - -\def\blx@bibdata#1#2{% - \forlistloop{\blx@bibdata@i{#1}}#2} -\def\blx@bibdata@i#1#2{% - \blx@xmlsanitizeafter{\blx@bibdata@ii{#1}{#2}}{#2}} -\def\blx@bibdata@ii#1#2#3{% - \eappto#1{% - \blx@xml@datasource - {\ifcsdef{blx@res@type@#2} - {\csuse{blx@res@type@#2}} - {file}} - {\ifcsdef{blx@res@data@#2} - {\csuse{blx@res@data@#2}} - {bibtex}} - {#3}}} - -%% Citations - -\newrobustcmd*{\AtEveryCite}{\gappto\blx@hook@cite} -\newrobustcmd*{\AtEveryCitekey}{\gappto\blx@hook@citekey} -\@onlypreamble\AtEveryCite -\@onlypreamble\AtEveryCitekey - -\newrobustcmd*{\AtNextCite}{% - \ifundef\blx@hook@cite@next - {\gdef\blx@hook@cite@next{\global\undef\blx@hook@cite@next}} - {}% - \gappto\blx@hook@cite@next} - -\newrobustcmd*{\AtNextCitekey}{% - \ifundef\blx@hook@citekey@next - {\gdef\blx@hook@citekey@next{\global\undef\blx@hook@citekey@next}} - {}% - \gappto\blx@hook@citekey@next} - -% {<style>] - -\newrobustcmd*{\RequireCitationStyle}[1]{% - \blx@inputonce{#1.cbx}{citation style '#1'}{}{}{} - {\blx@error - {Style '#1' not found} - {The citation style '#1' could not be found}}} -\@onlypreamble\RequireCitationStyle - -% {<code>} - -\newrobustcmd*{\InitializeCitationStyle}{\appto\blx@hook@cbxinit} -\@onlypreamble\InitializeCitationStyle - -% {<code>} - -\newrobustcmd*{\OnManualCitation}{\appto\blx@hook@mancite} -\@onlypreamble\OnManualCitation - -\newrobustcmd*{\mancite}{% - \csuse{blx@hook@mancite}% - \blx@ibidreset - \blx@idemreset - \blx@opcitreset - \blx@loccitreset} - -% {<entrykey>}{<message>} - -\def\blx@citation#1#2{% - \ifbool{citerequest} - {\ifnumless\blx@backend\blx@backend@biber % BibTeX only - {\ifcsdef{blx@setp@\the\c@refsection @#1} - {\blx@citation@set{#1}{#2}} - {\ifcsdef{blx@setc@\the\c@refsection @#1} - {\blx@citation@inset{#1}{#2}} - {\blx@citation@entry{#1}{#2}}}} - {\blx@citation@entry{#1}{#2}}% - \ifcsdef{blx@refc@\the\c@refsection @#1}% BibTeX only - {\blx@citation@xref{#1}} - {}} - {}} - -\def\blx@citation@entry#1#2{% - \blx@bibreq{#1}% - \ifinlistcs{#1}{blx@segm@\the\c@refsection @\the\c@refsegment} - {} - {\listcsgadd{blx@segm@\the\c@refsection @\the\c@refsegment}{#1}}% - \blx@ifdata{#1} - {} - {\ifcsdef{blx@miss@\the\c@refsection} - {\ifinlistcs{#1}{blx@miss@\the\c@refsection} - {} - {\blx@logreq@active{#2{#1}}}} - {\blx@logreq@active{#2{#1}}}}} - -\def\blx@citation@set#1#2{% - \blx@citation@entry{#1}{#2}% - \begingroup - \def\do##1{\blx@citation@entry{##1}\blx@msg@cundef}% - \expandafter\expandafter\expandafter\docsvlist - \expandafter\expandafter\expandafter{% - \csname blx@setp@\the\c@refsection @#1\endcsname}% - \endgroup} - -\def\blx@citation@inset#1#2{% - \blx@citation@entry{#1}{#2}% - \expandafter\expandafter\expandafter\blx@citation@inset@i - \expandafter\expandafter\expandafter{% - \csname blx@setc@\the\c@refsection @#1\endcsname}\blx@msg@cundef} - -\def\blx@citation@inset@i#1{% - \ifcsdef{blx@setp@\the\c@refsection @#1} - {\blx@citation@set{#1}} - {\blx@citation@entry{#1}}} - -\def\blx@citation@xref#1{% BibTeX only - \begingroup - \edef\blx@tempa{blx@refp@\the\c@refsection @% - \csname blx@refc@\the\c@refsection @#1\endcsname}% - \ifcsdef\blx@tempa - {\ifinlistcs{#1}\blx@tempa - {} - {\listcsxadd\blx@tempa{#1}}% - \blx@tempcnta\z@ - \def\do##1{\advance\blx@tempcnta\@ne}% - \dolistcsloop\blx@tempa} - {\listcsxadd\blx@tempa{#1}% - \blx@tempcnta\@ne}% - \expandafter\endgroup\ifnum\blx@tempcnta<\blx@minxrefs\relax - \else - \expandafter\expandafter\expandafter\blx@citation@entry - \expandafter\expandafter\expandafter{% - \csname blx@refc@\the\c@refsection @#1\endcsname}\blx@msg@cundef - \fi} - -\def\blx@citation@all{% - \ifbool{citerequest} - {\blx@bibreq{*}% - \global\csletcs - {blx@segm@\the\c@refsection @\the\c@refsegment} - {blx@sbib@\the\c@refsection}% - \ifcsvoid{blx@sort@\the\c@refsection} - {\blx@logreq@active{}} - {}} - {}} - -\protected\def\blx@bibreq#1{% - \ifnum\blx@backend=\blx@backend@biber - \begingroup - \blx@xmlsanitizeafter{\def\blx@tempa}{#1}% - \blx@auxwrite\blx@auxout{}{\blx@xml@citekey{\blx@tempa}}% - \endgroup - \else - \blx@auxwrite\blx@auxout@bibtex{}{\string\citation{#1}}% - \fi} - -% {<set>}{<key1,key2,key3>} - -\newrobustcmd*{\defbibentryset}[2]{% - \@bsphack - \begingroup - \blx@xsanitizeafter{\def\blx@tempa}{#1}% - \let\blx@tempb\@empty - \let\blx@tempc\@empty - \blx@xsanitizeafter{\forcsvlist\blx@defentryset@add}{#2}% - \ifcsdef{blx@set@\the\c@refsection @\blx@tempa} - {\expandafter\ifdefequal - \csname blx@set@\the\c@refsection @\blx@tempa\endcsname - \blx@tempb - {} - {\blx@error - {Conflicting definitions of '\blx@tempa'} - {The entry set '\blx@tempa' been defined before.\MessageBreak - old: \blx@tempa\space = % - \csuse{blx@set@\the\c@refsection @\blx@tempa}\MessageBreak - new: \blx@tempa\space = \blx@tempb\MessageBreak - I'm ignoring the new definition}}} - {\global\cslet{blx@set@\the\c@refsection @\blx@tempa}\blx@tempb - \edef\blx@tempa{% - \AfterPreamble{\blx@setreq{\blx@tempa}{\blx@tempb}}}% - \blx@tempa}% - \endgroup - \@esphack} - -\def\blx@defentryset@add#1{% - \edef\blx@tempb{\blx@tempb\blx@tempc#1}% - \def\blx@tempc{,}} - -\protected\def\blx@setreq#1#2{% - \ifnum\blx@backend=\blx@backend@biber - \begingroup - \blx@xmlsanitizeafter{\def\blx@tempa}{#1}% - \blx@xmlsanitizeafter{\def\blx@tempb}{#2}% - \blx@auxwrite\blx@auxout{}{\blx@xml@citeset{\blx@tempa}{\blx@tempb}}% - \endgroup - \fi} - -% {<entrykey>,...} - -\protected\def\blx@citeloop#1{% - \begingroup - \blx@tempcnta\z@ - \blx@tempcntb\z@ - \let\blx@tempa\@empty - \forcsvlist\blx@citeadd{#1}% - \blx@thenotecheck - \ifnum\blx@tempcnta>\z@ - \ifnum\blx@tempcntb>\z@ - \multicitedelim - \fi - \fi - \letcs\blx@tempb{blx@sort@\the\c@refsection}% - \blx@thecitesort - \edef\blx@tempa{\endgroup - \c@citecount\z@ - \c@citetotal\the\blx@tempcnta\relax - \unexpanded{\forlistloop\blx@citeprint}{\blx@tempb}}% - \blx@tempa} - -\def\blx@notecheck{% - \ifnum\blx@tempcnta>\@ne - \blx@warning{% - Package option 'sortcites' enabled.\MessageBreak - Verify postnote placement}% - \fi} - -\def\blx@citesort{% - \ifnum\blx@tempcnta>\@ne - \blx@filter\blx@tempb{blx@tempa}% - \else - \blx@citenosort - \fi} - -\def\blx@citenosort{% - \let\blx@tempb\blx@tempa} - -% {<entrykey>} - -\def\blx@citeadd#1{% - \blx@citation{#1}\blx@msg@cundefon - \blx@ifdata{#1} - {\advance\blx@tempcnta\@ne - \listadd\blx@tempa{#1}} - {\ifnum\blx@tempcntb>\z@\multicitedelim\fi - \abx@missing{#1}% - \advance\blx@tempcntb\@ne}} - -% {<entrykey>} - -\protected\def\blx@citeprint#1{% - \advance\c@citecount\@ne - \addtocounter{instcount}\@ne - \ifnum\c@citecount=\@ne - \blx@getdata@cite{#1}% - \blx@precode - \ifnum\c@citetotal>\@ne - \blx@resetdata - \fi - \else - \blx@dlimcode - \fi - \begingroup - \ifnum\c@citetotal>\@ne - \blx@getdata@cite{#1}% - \fi - \blx@entrysetcount - \blx@setoptions@type\abx@field@entrytype - \blx@setoptions@entry - \blx@backref{#1}% - \blx@pagetracker - \csuse{blx@hook@citekey}% - \csuse{blx@hook@citekey@next}% - \blx@execute - \blx@loopcode - \blx@citecounter - \blx@citetracker - \blx@ibidtracker - \blx@idemtracker - \blx@opcittracker - \blx@loccittracker - \ifnum\c@citecount=\c@citetotal - \def\blx@thecheckpunct{\blx@err@nestcite\@gobble}% - \blx@postcode - \fi - \endgroup} - -% cite counter - -\def\blx@citecounter@global{% - \ifbool{@filesw} - {\ifbool{citetracker} - {\immediate\write\@mainaux{% - \string\abx@aux@count - {\the\c@refsection}{\abx@field@entrykey}}} - {}} - {}} - -\def\blx@citecounter@context{% - \ifbool{@filesw} - {\ifbool{citetracker} - {\immediate\write\@mainaux{% - \iftoggle{blx@footnote} - {\string\abx@aux@fncount} - {\string\abx@aux@count}% - {\the\c@refsection}{\abx@field@entrykey}}} - {}} - {}} - -% {<refsection>}{<entrykey>} - -\protected\def\blx@aux@count#1#2{% - \csnumgdef{blx@count@#1@\detokenize{#2}}{\csuse{blx@count@#1@\detokenize{#2}}+1}} -\protected\def\blx@aux@fncount#1#2{% - \csnumgdef{blx@fncount@#1@\detokenize{#2}}{\csuse{blx@fncount@#1@\detokenize{#2}}+1}} - -\let\abx@aux@count\@gobbletwo -\let\abx@aux@fncount\@gobbletwo - -\AtEndDocument{% - \let\abx@aux@count\@gobbletwo - \let\abx@aux@fncount\@gobbletwo} - -\protected\def\blx@setcitecounter@global{% - \c@citecounter0% - \csuse{blx@count@\the\c@refsection @\abx@field@entrykey}% - \relax} - -\protected\def\blx@setcitecounter@context{% - \c@citecounter0% - \iftoggle{blx@footnote} - {\csuse{blx@fncount@\the\c@refsection @\abx@field@entrykey}} - {\csuse{blx@count@\the\c@refsection @\abx@field@entrykey}}% - \relax} - -% cite tracker - -\def\blx@citetracker@global{% - \ifbool{citetracker} - {\xifinlistcs\abx@field@entrykey{blx@bsee@\the\c@refsection} - {} - {\listcsxadd{blx@bsee@\the\c@refsection}\abx@field@entrykey}} - {}} - -\def\blx@citetracker@context{% - \ifbool{citetracker} - {\iftoggle{blx@footnote} - {\xifinlistcs\abx@field@entrykey{blx@fsee@\the\c@refsection} - {} - {\listcsxadd{blx@fsee@\the\c@refsection}\abx@field@entrykey}} - {\xifinlistcs{\abx@field@entrykey}{blx@bsee@\the\c@refsection} - {} - {\listcsxadd{blx@bsee@\the\c@refsection}\abx@field@entrykey}}} - {}} - -\protected\appto\abx@savetrackers{% - \global\csletcs{blx@saved@bsee@\the\c@refsection}{blx@bsee@\the\c@refsection}% - \global\csletcs{blx@saved@fsee@\the\c@refsection}{blx@fsee@\the\c@refsection}} - -\protected\appto\abx@resttrackers{% - \global\csletcs{blx@bsee@\the\c@refsection}{blx@saved@bsee@\the\c@refsection}% - \global\csletcs{blx@fsee@\the\c@refsection}{blx@saved@fsee@\the\c@refsection}} - -\protected\appto\abx@cleartrackers{% - \global\cslet{blx@saved@bsee@\the\c@refsection}\@empty - \global\cslet{blx@saved@fsee@\the\c@refsection}\@empty} - -% ibidem tracker - -\def\blx@ibidtracker@gobal{% - \ifbool{citetracker} - {\global\let\blx@lastkey@text\abx@field@entrykey} - {}} - -\def\blx@ibidtracker@context{% - \ifbool{citetracker} - {\iftoggle{blx@footnote} - {\global\let\blx@lastkey@foot\abx@field@entrykey} - {\global\let\blx@lastkey@text\abx@field@entrykey}} - {}} - -\def\blx@ibidtracker@strict{% - \blx@ifcitesingle - {\blx@ibidtracker@gobal} - {\blx@ibidreset@gobal}}% - -\def\blx@ibidtracker@constrict{% - \blx@ifcitesingle - {\blx@mpfnsave - \blx@ibidtracker@context} - {\blx@ibidreset@context}}% - -\def\blx@ibidreset@force{% - \global\undef\blx@lastkey@text - \global\undef\blx@lastkey@foot - \blx@mpfnreset} - -\def\blx@ibidreset@gobal{% - \global\undef\blx@lastkey@text} - -\def\blx@ibidreset@context{% - \iftoggle{blx@footnote} - {\blx@mpfnreset - \global\undef\blx@lastkey@foot} - {\global\undef\blx@lastkey@text}} - -\protected\appto\abx@savetrackers{% - \global\let\blx@saved@lastkey@text\blx@lastkey@text - \global\let\blx@saved@lastkey@foot\blx@lastkey@foot} - -\protected\appto\abx@resttrackers{% - \global\let\blx@lastkey@text\blx@saved@lastkey@text - \global\let\blx@lastkey@foot\blx@saved@lastkey@foot} - -\protected\appto\abx@cleartrackers{% - \global\undef\blx@saved@lastkey@text - \global\undef\blx@saved@lastkey@foot} - -% idem tracker - -\def\blx@idemtracker@gobal{% - \ifbool{citetracker} - {\global\let\blx@lasthash@text\abx@field@fullhash} - {}} - -\def\blx@idemtracker@context{% - \ifbool{citetracker} - {\iftoggle{blx@footnote} - {\global\let\blx@lasthash@foot\abx@field@fullhash} - {\global\let\blx@lasthash@text\abx@field@fullhash}} - {}} - -\let\blx@idemtracker@strict\blx@idemtracker@gobal - -\def\blx@idemtracker@constrict{% - \blx@mpfnsave - \blx@idemtracker@context} - -\def\blx@idemreset@force{% - \global\undef\blx@lasthash@text - \global\undef\blx@lasthash@foot - \blx@mpfnreset} - -\def\blx@idemreset@gobal{% - \global\undef\blx@lasthash@text} - -\def\blx@idemreset@context{% - \iftoggle{blx@footnote} - {\blx@mpfnreset - \global\undef\blx@lasthash@foot} - {\global\undef\blx@lasthash@text}} - -\protected\appto\abx@savetrackers{% - \global\let\blx@saved@lasthash@text\blx@lasthash@text - \global\let\blx@saved@lasthash@text\blx@lasthash@text} - -\protected\appto\abx@resttrackers{% - \global\let\blx@lasthash@text\blx@saved@lasthash@text - \global\let\blx@lasthash@text\blx@saved@lasthash@text} - -\protected\appto\abx@cleartrackers{% - \global\undef\blx@saved@lasthash@text - \global\undef\blx@saved@lasthash@foot} - -% opcit tracker - -\def\blx@opcittracker@gobal{% - \ifbool{citetracker} - {\blx@opcit@tracker{text}} - {}} - -\def\blx@opcittracker@context{% - \ifbool{citetracker} - {\iftoggle{blx@footnote} - {\blx@opcit@tracker{foot}} - {\blx@opcit@tracker{text}}} - {}} - -\def\blx@opcittracker@strict{% - \blx@ifcitesingle - {\blx@opcittracker@gobal} - {\blx@opcitreset@gobal}}% - -\def\blx@opcittracker@constrict{% - \blx@ifcitesingle - {\blx@mpfnsave - \blx@opcittracker@context} - {\blx@opcitreset@context}}% - -\def\blx@opcit@tracker#1{% - \blx@imc@iffieldundef{namehash} - {} - {\global\cslet{blx@lastkey@#1@\abx@field@namehash}\abx@field@entrykey - \xifinlistcs\abx@field@namehash{blx@trackhash@#1} - {} - {\listcsxadd{blx@trackhash@#1}\abx@field@namehash}}} - -\def\blx@opcit@reset#1{% - \begingroup - \def\do##1{\global\csundef{blx@lastkey@#1@##1}}% - \dolistcsloop{blx@trackhash@#1}% - \global\cslet{blx@trackhash@#1}\@empty - \endgroup} - -\def\blx@opcitreset@force{% - \blx@opcit@reset{text}% - \blx@opcit@reset{foot}% - \blx@mpfnreset} - -\def\blx@opcitreset@gobal{% - \blx@opcit@reset{text}} - -\def\blx@opcitreset@context{% - \iftoggle{blx@footnote} - {\blx@opcit@reset{foot}% - \blx@mpfnreset} - {\blx@opcit@reset{text}}} - -\let\blx@trackhash@text\@empty -\let\blx@trackhash@foot\@empty - -\protected\appto\abx@savetrackers{% - \begingroup - \def\do#1{\global\csletcs{blx@saved@lastkey@text@#1}{blx@lastkey@text@#1}}% - \dolistloop\blx@trackhash@text - \global\let\blx@saved@trackhash@text\blx@trackhash@text - \def\do#1{\global\csletcs{blx@saved@lastkey@foot@#1}{blx@lastkey@foot@#1}}% - \dolistloop\blx@trackhash@foot - \global\let\blx@saved@trackhash@foot\blx@trackhash@foot - \endgroup} - -\protected\appto\abx@resttrackers{% - \begingroup - \blx@opcit@reset{text}% - \global\let\blx@trackhash@text\blx@saved@trackhash@text - \def\do#1{\global\csletcs{blx@lastkey@text@#1}{blx@saved@lastkey@text@#1}}% - \dolistloop\blx@trackhash@text - \blx@opcit@reset{foot}% - \global\let\blx@trackhash@foot\blx@saved@trackhash@foot - \def\do#1{\global\csletcs{blx@lastkey@foot@#1}{blx@saved@lastkey@foot@#1}}% - \dolistloop\blx@trackhash@foot - \endgroup} - -\protected\appto\abx@cleartrackers{% - \begingroup - \def\do#1{\global\csundef{blx@saved@lastkey@text@#1}}% - \dolistloop\blx@saved@trackhash@text - \global\undef\blx@saved@trackhash@text - \def\do#1{\global\csundef{blx@saved@lastkey@foot@#1}}% - \dolistloop\blx@saved@trackhash@foot - \global\undef\blx@saved@trackhash@foot - \endgroup} - -% loccit tracker - -\def\blx@loccittracker@gobal{% - \ifbool{citetracker} - {\blx@loccit@tracker{text}} - {}} - -\def\blx@loccittracker@context{% - \ifbool{citetracker} - {\iftoggle{blx@footnote} - {\blx@loccit@tracker{foot}} - {\blx@loccit@tracker{text}}} - {}} - -\def\blx@loccittracker@strict{% - \ifbool{citetracker} - {\blx@loccit@stricttracker{text}} - {}} - -\def\blx@loccittracker@constrict{% - \ifbool{citetracker} - {\iftoggle{blx@footnote} - {\blx@mpfnsave - \blx@loccit@stricttracker{foot}} - {\blx@loccit@stricttracker{text}}} - {}} - -\def\blx@loccit@tracker#1{% - \global\csundef{blx@lastnote@#1@\abx@field@entrykey}% - \blx@imc@iffieldundef{postnote} - {} - {\global\cslet{blx@lastnote@#1@\abx@field@entrykey}\abx@field@postnote - \xifinlistcs\abx@field@entrykey{blx@trackkeys@#1} - {} - {\listcsxadd{blx@trackkeys@#1}\abx@field@entrykey}}} - -\def\blx@loccit@stricttracker#1{% - \global\csundef{blx@lastnote@#1@\abx@field@entrykey}% - \blx@imc@iffieldundef{postnote} - {} - {\blx@ifcitesingle - {\expandafter\blx@imc@ifpages - \expandafter{\abx@field@postnote} - {\global\cslet{blx@lastnote@#1@\abx@field@entrykey}\abx@field@postnote - \xifinlistcs\abx@field@entrykey{blx@trackkeys@#1} - {} - {\listcsxadd{blx@trackkeys@#1}\abx@field@entrykey}} - {}} - {}}} - -\def\blx@loccit@reset#1{% - \begingroup - \def\do##1{\global\csundef{blx@lastnote@#1@##1}}% - \dolistcsloop{blx@trackkeys@#1}% - \global\cslet{blx@trackkeys@#1}\@empty - \endgroup} - -\def\blx@loccitreset@force{% - \blx@loccit@reset{text}% - \blx@loccit@reset{foot}% - \blx@mpfnreset} - -\def\blx@loccitreset@gobal{% - \blx@loccit@reset{text}} - -\def\blx@loccitreset@context{% - \iftoggle{blx@footnote} - {\blx@loccit@reset{foot}% - \blx@mpfnreset} - {\blx@loccit@reset{text}}} - -\let\blx@trackkeys@text\@empty -\let\blx@trackkeys@foot\@empty - -\protected\appto\abx@savetrackers{% - \begingroup - \def\do#1{\global\csletcs{blx@saved@lastnote@text@#1}{blx@lastnote@text@#1}}% - \dolistloop\blx@trackkeys@text - \global\let\blx@saved@trackkeys@text\blx@trackkeys@text - \def\do#1{\global\csletcs{blx@saved@lastnote@foot@#1}{blx@lastnote@foot@#1}}% - \dolistloop\blx@trackkeys@foot - \global\let\blx@saved@trackkeys@foot\blx@trackkeys@foot - \endgroup} - -\protected\appto\abx@resttrackers{% - \begingroup - \blx@loccit@reset{text}% - \global\let\blx@trackkeys@text\blx@saved@trackkeys@text - \def\do#1{\global\csletcs{blx@lastnote@text@#1}{blx@saved@lastnote@text@#1}}% - \dolistloop\blx@trackkeys@text - \blx@loccit@reset{foot}% - \global\let\blx@trackkeys@foot\blx@saved@trackkeys@foot - \def\do#1{\global\csletcs{blx@lastnote@foot@#1}{blx@saved@lastnote@foot@#1}}% - \dolistloop\blx@trackkeys@foot - \endgroup} - -\protected\appto\abx@cleartrackers{% - \begingroup - \def\do#1{\global\csundef{blx@saved@lastnote@text@#1}}% - \dolistloop\blx@saved@trackkeys@text - \global\undef\blx@saved@trackkeys@text - \def\do#1{\global\csundef{blx@saved@lastnote@foot@#1}}% - \dolistloop\blx@saved@trackkeys@foot - \global\undef\blx@saved@trackkeys@foot - \endgroup} - -\def\blx@addbackref#1{% - \ifcsdef{blx@setp@\the\c@refsection @#1} - {\ifcase\blx@backrefsetstyle - \blx@addbackref@i{#1}% - \or - \blx@addbackref@ii{setp}{#1}% - \or - \blx@addbackref@i{#1}% - \or - \blx@addbackref@i{#1}% - \or - \blx@addbackref@i{#1}% - \blx@addbackref@ii{setp}{#1}% - \or - \blx@addbackref@i{#1}% - \blx@addbackref@ii{setp}{#1}% - \fi} - {\ifcsdef{blx@setc@\the\c@refsection @#1} - {\ifcase\blx@backrefsetstyle - \blx@addbackref@ii{setc}{#1}% - \or - \blx@addbackref@i{#1}% - \or - \blx@addbackref@i{#1}% - \or - \blx@addbackref@i{#1}% - \blx@addbackref@ii{setc}{#1}% - \or - \blx@addbackref@i{#1}% - \or - \blx@addbackref@i{#1}% - \blx@addbackref@ii{setc}{#1}% - \fi} - {\blx@addbackref@i{#1}}}} - -\def\blx@addbackref@i#1{% - \ifbacktracker - \blx@leavevmode - \if@filesw - \protected@write\@mainaux{}{\string\abx@aux@backref - {\the\c@instcount}{#1}{\the\c@refsection}% - {\thepage}{\noexpand\the\c@page}}% - \fi - \fi} - -\def\blx@addbackref@ii#1#2{% - \expandafter\expandafter\expandafter\forcsvlist - \expandafter\expandafter\expandafter\blx@addbackref@i - \expandafter\expandafter\expandafter{% - \csname blx@#1@\the\c@refsection @#2\endcsname}} - -% {<instcount>}{<entrykey>}{<refsection>}{<page>}{<page int>} - -\protected\def\blx@aux@backref#1#2#3#4#5{% - \ifcsundef{blx@pref@#3@\detokenize{#2}} - {\global\cslet{blx@pref@#3@\detokenize{#2}}\@empty - \expandafter\blx@onlypreamble\csname blx@pref@#3@\detokenize{#2}\endcsname} - {}% - \ifinlistcs{#4}{blx@pref@#3@\detokenize{#2}} - {} - {\listcsgadd{blx@pref@#3@\detokenize{#2}}{#4}}% - \blx@addpagesum{#1}{#5}} - -\AtEndDocument{% - \def\abx@aux@backref#1#2#3#4#5{\blx@addpagesum{#1}{#5}}} - -% {<true>}{<false>} - -\def\blx@ifcitesingle{% - \ifnum\c@citetotal=\@ne - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi} - -% hyperref interface - -\appto\blx@mkhyperref{% - \protected\def\blx@imc@bibhyperref{% - \@ifnextchar[%] - {\blx@bibhyperref} - {\blx@bibhyperref[\abx@field@entrykey]}}% - \ifundef\hyper@natanchorstart - {\long\def\blx@bibhyperref[#1]#2{% - \blx@sfsave\hyperlink{cite.\the\c@refsection @#1}{\blx@sfrest - #2% - \blx@sfsave}\blx@sfrest}% - \protected\long\def\blx@imc@bibhyperlink#1#2{% - \blx@sfsave\hyperlink{cite.\the\c@refsection:#1}{\blx@sfrest - #2% - \blx@sfsave}\blx@sfrest}% - \protected\long\def\blx@imc@bibhypertarget#1#2{% - \blx@sfsave\hypertarget{cite.\the\c@refsection:#1}{\blx@sfrest - #2% - \blx@sfsave}\blx@sfrest}}% - {\long\def\blx@bibhyperref[#1]#2{% - \blx@sfsave\hyper@natlinkstart{\the\c@refsection @#1}\blx@sfrest - #2% - \blx@sfsave\hyper@natlinkend\blx@sfrest}% - \protected\long\def\blx@imc@bibhyperlink#1#2{% - \blx@sfsave\hyper@natlinkstart{\the\c@refsection:#1}\blx@sfrest - #2% - \blx@sfsave\hyper@natlinkend\blx@sfrest}% - \protected\long\def\blx@imc@bibhypertarget#1#2{% - \blx@sfsave\hyper@natanchorstart{\the\c@refsection:#1}\blx@sfrest - #2% - \blx@sfsave\hyper@natanchorend\blx@sfrest}} - \let\blx@imc@ifhyperref\@firstoftwo - \def\blx@sf{\spacefactor}% - \def\blx@sfsave{% - \blx@leavevmode - \numgdef\blx@sf{\spacefactor}}% - \def\blx@sfrest{% - \ifhmode\spacefactor\blx@sf\relax\fi - \gdef\blx@sf{\spacefactor}}} - -\appto\blx@mknohyperref{% - \protected\def\blx@imc@bibhyperref{\@ifnextchar[\blx@nohyperref\@firstofone}% - \def\blx@nohyperref[#1]#2{#2}% - \let\blx@imc@bibhyperlink\@secondoftwo - \let\blx@imc@bibhypertarget\@secondoftwo - \let\blx@imc@ifhyperref\@secondoftwo} - -\blx@regimcs{% - \bibhyperref \bibhyperlink \bibhypertarget \ifhyperref} - -% {<entrykey>,...} - -\protected\def\nocite#{\blx@nocite} - -\def\blx@nocite#1{% - \@bsphack - \AfterPreamble{% - \iftoggle{blx@bibliography} - {} - {\ifstrequal{*}{#1} - {\blx@citation@all} - {\blx@xsanitizeafter{\forcsvlist\blx@nocite@do}{#1}}}}% - \@esphack} - -\def\blx@nocite@do#1{\blx@citation{#1}\blx@msg@cundef} - -% {<macro>}[<arg1>][<arg2>]{<arg3>} -% => <macro>{<arg1>}{<arg2>}{<arg3>} - -\protected\def\blx@citeargs#1{% - \@ifnextchar[%] - {\blx@citeargs@i{#1}} - {\blx@citeargs@iii{#1{}{}}}} -\long\def\blx@citeargs@i#1[#2]{% - \@ifnextchar[%] - {\blx@citeargs@ii{#1{#2}}} - {\blx@citeargs@iii{#1{}{#2}}}} -\long\def\blx@citeargs@ii#1[#2]{% - \blx@citeargs@iii{#1{#2}}} -\long\def\blx@citeargs@iii#1#2{% - \blx@xsanitizeafter{#1}{#2}} - -% {<macro>}(<arg1>)(<arg2>) -% => <macro>{<arg1>}{<arg2>} - -\protected\def\blx@multiargs#1{% - \@ifnextchar(%) - {\blx@multiargs@i{#1}} - {#1{}{}}} -\long\def\blx@multiargs@i#1(#2){% - \@ifnextchar(%) - {\blx@multiargs@ii{#1{#2}}} - {#1{}{#2}}} -\long\def\blx@multiargs@ii#1(#2){#1{#2}} - -% {<macro>}[<arg1>][<arg2>]{<arg3>}<punct> -% => <macro>{<arg1>}{<arg2>}{<arg3>}{<punctcmd>} - -\protected\def\blx@citepunct#1{% - \blx@citeargs{\blx@citepunct@i{#1}}} -\long\def\blx@citepunct@i#1#2#3#4{% - \blx@thecheckpunct{#1{#2}{#3}{#4}}} - -% {<csname>}[<arg1>][<arg2>]{arg3}[arg4]{arg5}<punct> -% => <macro>{<arg1>}{<arg2>}{<arg3>}{<arg4>}{arg5}{<punctcmd>} - -\protected\def\blx@citexpunct#1{% - \blx@citeargs{\blx@citexpunct@i{#1}}} -\long\def\blx@citexpunct@i#1#2#3#4{% - \@ifnextchar[%] - {\blx@citexpunct@ii{#1}{{#2}{#3}{#4}}} - {\blx@citexpunct@ii{#1}{{#2}{#3}{#4}}[#1]}} -\long\def\blx@citexpunct@ii#1#2[#3]#4{% - \blx@thecheckpunct{\blxcitecmd{#1}#2{#3}{#4}}} - -% {<code>}<punct> => <code>{<punctcmd>} - -\long\def\blx@checkpunct#1{% - \begingroup - \def\blx@tempa{\endgroup#1}% - \futurelet\blx@tempb\blx@checkpunct@i} -\def\blx@checkpunct@i{% - \expandafter\blx@checkpunct@ii\blx@autopunct&} -\def\blx@checkpunct@ii#1{% - \ifx#1&% - \expandafter\blx@checkpunct@iii - \fi - \ifx#1\blx@tempb - \expandafter\blx@checkpunct@iv - \fi - \blx@checkpunct@ii} -\def\blx@checkpunct@iii#1\blx@checkpunct@ii{% - \blx@tempa{\blx@postpunct}} -\def\blx@checkpunct@iv#1\blx@checkpunct@ii#2{% - \edef\blx@tempa{% - \expandonce\blx@tempa{% - \ifcsdef{blx@pm@\detokenize{#3}} - {\csname blx@imc@add\csname blx@pm@\detokenize{#3}\endcsname - \endcsname} - {\noexpand#3}}}% - \blx@tempa} - -\long\def\blx@nocheckpunct#1{#1{}} - -\protected\def\blx@citeinit{% - \iftoggle{blx@bibliography} - {} - {\toggletrue{blx@citation}}% - \blx@blxinit - \citesetup - \blx@setsfcodes - \blx@postpunct@agroup - \blx@resetdata - \blx@leavevmode - \csuse{blx@hook@cite}% - \csuse{blx@hook@cite@next}% - \let\blx@citeinit\blx@resetdata} - -\protected\def\blx@citecmdinit{% - \blx@leavevmode@cite - \iftoggle{blx@bibliography} - {} - {\blx@initunit}} - -% *{<command>}[<wrapper>]{<precode>}{<loopcode>}{<delimcode>}{<postcode>} - -\newrobustcmd*{\DeclareCiteCommand}{% - \@ifstar{\blx@defcitecmd*}{\blx@defcitecmd{}}} - -\def\blx@defcitecmd#1#2{% - \begingroup - \escapechar\m@ne - \edef\blx@tempa{\endgroup - \noexpand\blx@defcitecmd@i{#1}{\string#2}}% - \blx@tempa} - -\def\blx@defcitecmd@i#1#2{% - \blx@checkcitecmd{#2}{#1}% - \protected\csdef{#2}{% - \blx@citecmdinit - \@ifstar - {\blx@citepunct{\blxcitecmd{#2*}}} - {\blx@citepunct{\blxcitecmd{#2}}}}% - \@ifnextchar[%] - {\blx@defcitecmd@iii{#2#1}} - {\blx@defcitecmd@ii{#2#1}}} - -\long\def\blx@defcitecmd@ii#1{% - \protected\csedef{blx@cite@#1}{\blxciteicmd{#1}}% - \blx@defcitecmd@iv{#1}} - -\long\def\blx@defcitecmd@iii#1[#2]{% - \protected\long\csedef{blx@cite@#1}##1##2##3##4{% - \begingroup - \blx@citeinit - \unexpanded{#2}{\blxciteicmd{#1}{##1}{##2}{##3}{}}% - ##4\endgroup}% - \blx@defcitecmd@iv{#1}} - -\long\def\blx@defcitecmd@iv#1#2#3#4#5{% - \protected\long\csdef{blx@citei@#1}##1##2##3##4{% - \ifblank{##1} - {} - {\def\abx@field@prenote{##1}}% - \ifblank{##2} - {\let\blx@thenotecheck\relax} - {\def\abx@field@postnote{##2}}% - \def\blx@precode{#2}% - \def\blx@loopcode{#3}% - \def\blx@dlimcode{#4}% - \def\blx@postcode{#5##4}% - \blx@citeloop{##3}% - \endgroup}} - -% {<type>}{<name>}{*} - -\def\blx@checkcitecmd#1#2{% - \ifblank{#2} - {\ifcsdef{blx@cite@#1} - {\blx@info{Redefining '\@backslashchar#1'}} - {\ifcsundef{#1} - {} - {\blx@warning@noline{Redefining '\@backslashchar#1'}}}% - \ifcsdef{blx@cite@#1*} - {} - {\csedef{blx@cite@#1*}{% - \expandafter\noexpand\csname blx@cite@#1\endcsname}% - \csedef{blx@citei@#1*}{% - \expandafter\noexpand\csname blx@citei@#1\endcsname}}} - {\ifcsdef{blx@cite@#1} - {} - {\csdef{blx@cite@#1}{\blx@err@citecmd{#1}}% - \csdef{blx@citei@#1}{\blx@err@citecmd{#1}}}}} - -% {<name>}{prenote}{postnote}{citekey}{punct} - -\newrobustcmd*{\blxcitecmd}[1]{% - \ifcsundef{blx@cite@#1} - {\blx@err@citecmd{#1}} - {\csuse{blx@cite@#1}}} - -\newrobustcmd*{\blxciteicmd}[1]{% - \begingroup - \blx@citeinit - \ifcsundef{blx@citei@#1} - {\blx@err@citecmd{#1}} - {\csuse{blx@citei@#1}}} - -% {<multicitecount>}{<name>}{prenote}{postnote}{citekey}{punct} - -\protected\def\blxmciteicmd#1{% - \c@multicitecount#1\relax - \blxciteicmd} - -% {<multicitetotal>}{<multiprenote>}{<multipostnote>} - -\protected\def\blxmcites#1#2#3{% - \begingroup - \blx@citeinit - \c@multicitecount\z@ - \c@multicitetotal#1\relax - \ifnum\c@multicitetotal>\@ne - \let\blx@ifcitesingle\@secondoftwo - \fi - \ifblank{#2}% - {} - {\def\abx@field@multiprenote{#2}}% - \ifblank{#3}% - {} - {\def\abx@field@multipostnote{#3}}% - \usebibmacro{multiprenote}} - -\protected\def\blxendmcites{% - \usebibmacro{multipostnote}% - \endgroup} - -% {<command>}[<wrapper>]{<cite>}{<delimiter>} - -\newrobustcmd{\DeclareMultiCiteCommand}[1]{% - \ifundef#1% - {} - {\blx@info{Redefining '\string#1'}}% - \@ifnextchar[%] - {\blx@defmcitecmd{#1}} - {\blx@defmcitecmd{#1}[\@firstofone]}} - -\def\blx@defmcitecmd#1[#2]#3#4{% - \begingroup - \escapechar\m@ne - \edef\blx@tempa{\endgroup - \protected\def\noexpand#1{% - \blx@citecmdinit - \noexpand\@ifstar - {\expandafter\noexpand - \csname blx@mcite@\string#1\endcsname*% - \expandafter\noexpand - \csname blx@mcitei@\string#1\endcsname} - {\expandafter\noexpand - \csname blx@mcite@\string#1\endcsname{}% - \expandafter\noexpand - \csname blx@mcitei@\string#1\endcsname}}% - \protected\csdef{blx@mcite@\string#1}####1####2{% - \begingroup - \blx@citeinit - \noexpand\blx@multicite - ####2% - {\unexpanded{#2}}% - {\string#3####1}% - {\unexpanded{#4}}}% - \protected\long\csdef{blx@mcitei@\string#1}}% - \blx@tempa##1##2##3{##1{##2}##3\endgroup}} - -% {<command>}{<wrapper>}{<citecmd>}{<delimiter>} => -% <init><command>{<wrapper>}{<cites>}{<punct>} - -\def\blx@multicite#1#2#3#4{% - \begingroup - \def\blx@tempa{#1}% - \def\blx@tempb{#2}% - \def\blx@tempc{#3}% - \def\blx@tempd{#4}% - \c@multicitetotal\z@ - \blx@multiargs\blx@multicite@i} - -\def\blx@multicite@i#1#2{% - \ifblank{#1}% - {\let\abx@field@multiprenote\@empty}% - {\def\abx@field@multiprenote{#1}}% - \ifblank{#2}% - {\let\abx@field@multipostnote\@empty}% - {\def\abx@field@multipostnote{#2}}% - \let\blx@tempe\@empty - \let\blx@tempf\@empty - \togglefalse{blx@tempa}% - \blx@multiparse} - -\def\blx@multicite@add#1#2#3{% - \togglefalse{blx@tempa}% - \advance\c@multicitetotal\@ne - \eappto\blx@tempe{% - \expandonce\blx@tempf - \blxmciteicmd{\the\c@multicitetotal}% - {\expandonce\blx@tempc}\unexpanded{{#1}{#2}{#3}}{}}% - \let\blx@tempf\blx@tempd - \blx@multiparse} - -\def\blx@multicite@end#1{% - \edef\blx@tempa{\endgroup - \expandonce\blx@tempa - {\expandonce\blx@tempb}% - {\blxmcites - {\the\c@multicitetotal}% - {\expandonce\abx@field@multiprenote}% - {\expandonce\abx@field@multipostnote}% - \expandonce\blx@tempe - \blxendmcites}% - {#1}% - \iftoggle{blx@tempa}{\relax\space}{}}% - \blx@tempa} - -\def\blx@multiparse{% - \futurelet\@let@token\blx@multiparse@i} - -\def\blx@multiparse@i{% - \ifx\@let@token\relax - \blx@multiparse@ii{\blx@multicite@end{}}% - \fi - \ifx\@let@token[%] - \blx@multiparse@ii{\blx@citeargs\blx@multicite@add}% - \fi - \ifx\@let@token\bgroup - \blx@multiparse@ii{\blx@citeargs\blx@multicite@add}% - \fi - \ifx\@let@token\@sptoken - \blx@multiparse@ii\blx@multiparse@iii - \fi - \iftrue - \iftoggle{blx@tempa} - {\blx@multiparse@ii{\blx@multicite@end{}}} - {\blx@multiparse@ii{\blx@thecheckpunct\blx@multicite@end}}% - \fi - &} - -\def\blx@multiparse@ii#1#2&{\fi#1} -\csdef{blx@multiparse@iii} {\toggletrue{blx@tempa}\blx@multiparse} - -% {<name>}[l|i|r]{<cite>}{<multicite>} - -\newrobustcmd*{\DeclareAutoCiteCommand}[1]{% - \ifcsundef{blx@acite@#1} - {} - {\blx@info{Redefining autocite command '#1'}}% - \@ifnextchar[%] - {\blx@defautocmd@i{#1}} - {\blx@defautocmd@i{#1}[r]}} - -\def\blx@defautocmd@i#1[#2]#3#4{% - \begingroup - \escapechar\m@ne - \edef\blx@tempa{\endgroup - \noexpand\blx@defautocmd@ii{#1}{#2}% - {\string#3}{\string#4}}% - \blx@tempa} - -\def\blx@defautocmd@ii#1#2#3#4{% - \protected\csedef{blx@acite@#1}{% - \blx@citecmdinit - \noexpand\@ifstar - {\blx@citepunct{\expandafter\noexpand - \csname blx@acitei@#1\endcsname*}} - {\blx@citepunct{\expandafter\noexpand - \csname blx@acitei@#1\endcsname{}}}}% - \protected\csedef{blx@acitei@#1}##1##2##3##4##5{% - \begingroup - \blx@citeinit - \if l#2\noexpand\unspace##5\fi - \if f#2\noexpand\iftoggle{blx@footnote}{}{\unspace##5}\fi - \blxcitecmd{#3##1}{##2}{##3}{##4}{}% - \if r#2##5\fi - \if f#2\noexpand\iftoggle{blx@footnote}{##5}{}\fi - \endgroup}% - \protected\csedef{blx@macite@#1}{% - \blx@citecmdinit - \noexpand\@ifstar - {\expandafter\noexpand - \csname blx@mcite@#4\endcsname*% - \expandafter\noexpand - \csname blx@macitei@#1\endcsname} - {\expandafter\noexpand - \csname blx@mcite@#4\endcsname{}% - \expandafter\noexpand - \csname blx@macitei@#1\endcsname}}% - \protected\csedef{blx@macitei@#1}##1##2##3{% - \if l#2\noexpand\unspace##3\fi - \if f#2\noexpand\iftoggle{blx@footnote}{}{\unspace##3}\fi - ##1{##2}% - \if r#2##3\fi - \if f#2\noexpand\iftoggle{blx@footnote}{##3}{}\fi - \endgroup}} - -% {<characters>} - -\newrobustcmd*{\DeclareAutoPunctuation}[1]{% - \ifblank{#1} - {\let\blx@thecheckpunct\blx@nocheckpunct} - {\let\blx@thecheckpunct\blx@checkpunct - \def\blx@autopunct{#1}}} - -\AfterEndPreamble{% babel - \begingroup - \makeatletter - \endlinechar\m@ne - \scantokens\expandafter{% - \expandafter\gdef - \expandafter\blx@autopunct - \expandafter{\blx@autopunct}}% - \endgroup} - -% [<prenote>][<postnote>]{<entrykey>,...}[<format>]{<namelist>}<punct> - -\newrobustcmd*{\citename}{\blx@citexpunct{citename}} -\long\csdef{blx@cite@citename}#1#2#3#4#5#6{% - \begingroup - \blx@citecmdinit - \blx@citeinit - \ifblank{#1} - {} - {\def\abx@field@prenote{#1}}% - \ifblank{#2} - {\let\blx@thenotecheck\relax} - {\def\abx@field@postnote{#2}}% - \def\blx@precode{\usebibmacro{prenote}}% - \def\blx@loopcode{% - \ifnameundef{#5} - {\blx@warning@entry{'#5' undefined or not a name list}% - \abx@missing{#5}} - {\printnames[#4]{#5}}}% - \def\blx@dlimcode{\multicitedelim}% - \ifblank{#2} - {\def\blx@postcode{#6}} - {\def\blx@postcode{\usebibmacro{postnote}#6}}% - \boolfalse{citetracker}% - \boolfalse{pagetracker}% - \blx@citeloop{#3}% - \endgroup} - -% [<prenote>][<postnote>]{<entrykey>,...}[<format>]{<list>}<punct> - -\newrobustcmd*{\citelist}{\blx@citexpunct{citelist}} -\long\csdef{blx@cite@citelist}#1#2#3#4#5#6{% - \begingroup - \blx@citecmdinit - \blx@citeinit - \ifblank{#1} - {} - {\def\abx@field@prenote{#1}}% - \ifblank{#2} - {\let\blx@thenotecheck\relax} - {\def\abx@field@postnote{#2}}% - \def\blx@precode{\usebibmacro{prenote}}% - \def\blx@loopcode{% - \iflistundef{#5} - {\blx@warning@entry{'#5' undefined or not a literal list}% - \abx@missing{#5}} - {\printlist[#4]{#5}}}% - \def\blx@dlimcode{\multicitedelim}% - \ifblank{#2} - {\def\blx@postcode{#6}} - {\def\blx@postcode{\usebibmacro{postnote}#6}}% - \boolfalse{citetracker}% - \boolfalse{pagetracker}% - \blx@citeloop{#3}% - \endgroup} - -% [<prenote>][<postnote>]{<entrykey>,...}[<format>]{<field>}<punct> - -\newrobustcmd*{\citefield}{\blx@citexpunct{citefield}} -\long\csdef{blx@cite@citefield}#1#2#3#4#5#6{% - \begingroup - \blx@citecmdinit - \blx@citeinit - \ifblank{#1} - {} - {\def\abx@field@prenote{#1}}% - \ifblank{#2} - {\let\blx@thenotecheck\relax} - {\def\abx@field@postnote{#2}}% - \def\blx@precode{\usebibmacro{prenote}}% - \def\blx@loopcode{% - \iffieldundef{#5} - {\blx@warning@entry{'#5' undefined or not a field}% - \abx@missing{#5}} - {\printfield[#4]{#5}}}% - \def\blx@dlimcode{\multicitedelim}% - \ifblank{#2} - {\def\blx@postcode{#6}} - {\def\blx@postcode{\usebibmacro{postnote}#6}}% - \boolfalse{citetracker}% - \boolfalse{pagetracker}% - \blx@citeloop{#3}% - \endgroup} - -\renewrobustcmd*{\cite}{\blx@err@citecmd\cite} -\let\blx@cite@cite\relax -\newrobustcmd*{\parencite}{\blx@warn@citecmd\parencite\cite} -\let\blx@cite@parencite\relax -\newrobustcmd*{\footcite}{\blx@warn@citecmd\footcite\cite} -\let\blx@cite@footcite\relax -\newrobustcmd*{\footcitetext}{\blx@warn@citecmd\footcitetext\cite} -\let\blx@cite@footcitetext\relax -\newrobustcmd*{\smartcite}{\blx@warn@citecmd\smartcite\cite} -\let\blx@cite@smartcite\relax -\newrobustcmd*{\textcite}{\blx@warn@citecmd\textcite\cite} -\let\blx@cite@textcite\relax -\newrobustcmd*{\supercite}{\blx@warn@citecmd\supercite\cite} -\let\blx@cite@supercite\relax - -%% ifthen interface - -\def\blx@TE#1#2{% - \TE@throw - \unexpanded{% - \iftrue\@nameuse{fi}% - #1{\@nameuse{iftrue}}{\@nameuse{iffalse}}}#2} - -\def\blx@xTE#1#2{% - \TE@throw - \unexpanded{\iftrue\@nameuse{fi}}% - #1\unexpanded{{\@nameuse{iftrue}}{\@nameuse{iffalse}}}#2} - -\let\blx@TE@hook\@empty - -\appto\blx@blxinit{% - \appto\blx@TE@hook{% - \def\ifhyperref{\blx@TE\blx@imc@ifhyperref}% - \def\ifmorenames{\blx@TE\blx@imc@ifmorenames}% - \def\ifmoreitems{\blx@TE\blx@imc@ifmoreitems}% - \def\ifciteseen{\blx@TE\blx@imc@ifciteseen}% - \def\ifentryseen{\blx@TE\blx@imc@ifentryseen}% - \def\ifciteibid{\blx@TE\blx@imc@ifciteibid}% - \def\ifciteidem{\blx@TE\blx@imc@ifciteidem}% - \def\ifopcit{\blx@TE\blx@imc@ifopcit}% - \def\ifloccit{\blx@TE\blx@imc@ifloccit}% - \def\ifsamepage{\blx@TE\blx@imc@ifsamepage}% - \def\iffirstonpage{\blx@TE\blx@imc@iffirstonpage}% - \def\ifcurrentfield#1{\blx@TE{\blx@imc@ifcurrentfield{#1}}}% - \def\ifcurrentlist#1{\blx@TE{\blx@imc@ifcurrentlist{#1}}}% - \def\ifcurrentname#1{\blx@TE{\blx@imc@ifcurrentname{#1}}}% - \def\ifentrytype#1{\blx@TE{\blx@imc@ifentrytype{#1}}}% - \def\iffieldequalcs#1#2{\blx@TE{\blx@imc@iffieldequalcs{#1}{#2}}}% - \def\iffieldequals#1#2{\blx@TE{\blx@imc@iffieldequals{#1}{#2}}}% - \def\iffieldequalstr#1#2{\blx@TE{\blx@imc@iffieldequalstr{#1}{#2}}}% - \def\iffieldsequal#1#2{\blx@TE{\blx@imc@iffieldsequal{#1}{#2}}}% - \def\iffieldundef#1{\blx@TE{\blx@imc@iffieldundef{#1}}}% - \def\ifnameequalcs#1#2{\blx@TE{\blx@imc@ifnameequalcs{#1}{#2}}}% - \def\ifnameequals#1#2{\blx@TE{\blx@imc@ifnameequals{#1}{#2}}}% - \def\ifnamesequal#1#2{\blx@TE{\blx@imc@ifnamesequal{#1}{#2}}}% - \def\ifnameundef#1{\blx@TE{\blx@imc@ifnameundef{#1}}}% - \def\ifcategory#1{\blx@TE{\blx@imc@ifcategory{#1}}}% - \def\ifkeyword#1{\blx@TE{\blx@imc@ifkeyword{#1}}}% - \def\ifentrycategory#1#2{\blx@TE{\blx@imc@ifentrycategory{#1}{#2}}}% - \def\ifentrykeyword#1#2{\blx@TE{\blx@imc@ifentrykeyword{#1}{#2}}}% - \def\ifcapital{\blx@TE\blx@imc@ifcapital}% - \def\ifinteger#1{\blx@TE{\blx@imc@ifinteger{#1}}}% - \def\iffieldint#1{\blx@TE{\blx@imc@iffieldint{#1}}}% - \def\ifnumeral#1{\blx@TE{\blx@imc@ifnumeral{#1}}}% - \def\ifnumerals#1{\blx@TE{\blx@imc@ifnumerals{#1}}}% - \def\ifpages#1{\blx@TE{\blx@imc@ifpages{#1}}}% - \def\iffieldnum#1{\blx@TE{\blx@imc@iffieldnum{#1}}}% - \def\iffieldnums#1{\blx@TE{\blx@imc@iffieldnums{#1}}}% - \def\iffieldpages#1{\blx@TE{\blx@imc@iffieldpages{#1}}}% - \def\ifbibstring#1{\blx@TE{\blx@imc@ifbibstring{#1}}}% - \def\iffieldbibstring#1{\blx@TE{\blx@imc@iffieldbibstring{#1}}}% - \def\ifnatbibmode{\blx@TE{\iftoggle{blx@natbib}}}% - \def\ifcitation{\blx@TE{\iftoggle{blx@citation}}}% - \def\ifbibliography{\blx@TE{\iftoggle{blx@bibliography}}}% - \def\ifciteindex{\blx@TE{\iftoggle{blx@citeindex}}}% - \def\ifbibindex{\blx@TE{\iftoggle{blx@bibindex}}}% - \def\iffootnote{\blx@TE{\iftoggle{blx@footnote}}}% - \def\ifuseprefix{\blx@TE{\iftoggle{blx@useprefix}}}% - \def\ifuseauthor{\blx@TE{\iftoggle{blx@useauthor}}}% - \def\ifuseeditor{\blx@TE{\iftoggle{blx@useeditor}}}% - \def\ifusetranslator{\blx@TE{\iftoggle{blx@usetranslator}}}% - \def\iffirstinits{\blx@TE{\iftoggle{blx@firstinits}}}% - \def\ifsingletitle{\blx@TE{\iftoggle{abx@bool@singletitle}}}% - \def\ifandothers#1{\blx@TE{\iftoggle{abx@bool@more#1}}}}} - -% {<listmacro>}{<filtercsname>} => matches in <listmacro> - -\protected\def\blx@bibfilter#1#2{% - \begingroup - \edef\blx@do##1{% - \def\noexpand\blx@flt@item{##1}% - \ifboolexpr{\csexpandonce{#2}}% - {\listadd\noexpand\blx@tempa{##1}}% - {}}% - \let\blx@done\relax - \edef\blx@tempa{% - \let\noexpand\blx@tempa\noexpand\@empty - \blx@listloop{#1}}% - \blx@tempa - \edef\blx@tempa{\endgroup - \def\noexpand#1{\blx@tempa}}% - \blx@tempa} - -%% Auxiliary macros - -\newrobustcmd*{\mkbibquote}{\enquote} -\protected\def\blx@imc@mkbibquote{% - \blx@ifuspunct\blx@usquote\enquote} - -\def\blx@usquote{% - \ifnum\@quotelevel>\z@ - \expandafter\blx@usiquote - \else - \expandafter\blx@usoquote - \fi} - -\long\def\blx@usoquote#1{% - \begingroup - \initoquote - \textooquote#1% - \futurelet\@let@token\blx@usoquote@i} - -\def\blx@usoquote@i{% - \blx@usqcheck - {\ifx\blx@postpunct\@empty\else\blx@dopostpunct\fi - \textcoquote\endgroup} - {\blx@setpostpunct\textcoquote\endgroup}} - -\long\def\blx@usiquote#1{% - \begingroup - \initiquote - \textoiquote#1% - \futurelet\@let@token\blx@usiquote@i} - -\def\blx@usiquote@i{% - \blx@usqcheck - {\textciquote\endgroup} - {\blx@setpostpunct\textciquote\endgroup}} - -\def\blx@usqcheck#1#2{% - \def\blx@tempa{#1}% - \def\blx@tempb{#2}% - \ifx\@let@token\space - \blx@usqcheck@i\blx@tempa - \fi - \ifx\@let@token\@sptoken - \blx@usqcheck@i\blx@tempa - \fi - \if\noexpand\@let@token\relax - \blx@usqcheck@i\blx@tempb - \fi - \expandafter\blx@usqcheck@ii\blx@quotepunct\relax&} - -\def\blx@usqcheck@i#1#2&{\fi#1} - -\def\blx@usqcheck@ii#1{% - \if\noexpand#1\relax - \blx@usqcheck@i\blx@tempa - \fi - \if\noexpand#1\noexpand\@let@token - \blx@usqcheck@i{\blx@usqcheck@iii\blx@tempa}% - \fi - \blx@usqcheck@ii} - -\def\blx@usqcheck@iii#1#2{#2#1} - -\newrobustcmd*{\mkbibemph}{\emph} -\protected\long\def\blx@imc@mkbibemph#1{% - \emph{#1}\blx@imc@setpunctfont\emph} - -\newrobustcmd*{\mkbibbold}{\textbf} -\protected\long\def\blx@imc@mkbibbold#1{% - \textbf{#1}\blx@imc@setpunctfont\textbf} - -\blx@regimcs{\mkbibquote \mkbibemph \mkbibbold} - -\newcommand*{\bibleftparen}{\blx@postpunct(} -\newcommand*{\bibrightparen}{\blx@postpunct)\midsentence} -\newcommand*{\bibleftbracket}{\blx@postpunct[} -\newcommand*{\bibrightbracket}{\blx@postpunct]\midsentence} - -\def\blx@parenlevel{% - \iftoggle{blx@footnote} - {\blx@parenlevel@foot} - {\blx@parenlevel@text}} - -\newrobustcmd*{\blx@bibopenparen}{% - \blx@opencheck\bibopenparen - \blx@postpunct - \ifnum\blx@parenlevel=\z@ - \global\blx@parenlevel\@ne - \global\c@parenlevel\@ne - \expandafter\bibleftparen - \else - \expandafter\blx@openparen - \fi} - -\newrobustcmd*{\blx@bibopenbracket}{% - \blx@opencheck\bibopenbracket - \blx@postpunct - \ifnum\blx@parenlevel=\z@ - \global\blx@parenlevel1002 - \global\c@parenlevel\@ne - \expandafter\bibleftbracket - \else - \expandafter\blx@openparen - \fi} - -\newrobustcmd*{\blx@bibcloseparen}{% - \blx@closecheck\bibcloseparen - \blx@postpunct\blx@closeparen} - -\newrobustcmd*{\blx@bibclosebracket}{% - \blx@closecheck\bibclosebracket - \blx@postpunct\blx@closeparen} - -\def\blx@openparen{% - \ifodd\blx@parenlevel - \global\advance\blx@parenlevel\@ne - \global\advance\c@parenlevel\@ne - \expandafter\bibleftbracket - \else - \global\advance\blx@parenlevel\@ne - \global\advance\c@parenlevel\@ne - \expandafter\bibleftparen - \fi} - -\def\blx@closeparen{% - \ifodd\blx@parenlevel - \blx@closeparen@i - \expandafter\bibrightparen - \else - \blx@closeparen@i - \expandafter\bibrightbracket - \fi} - -\def\blx@closeparen@i{% - \ifnum\blx@parenlevel=1002 - \global\blx@parenlevel\z@ - \global\c@parenlevel\z@ - \else - \global\advance\blx@parenlevel\m@ne - \global\advance\c@parenlevel\m@ne - \fi} - -\def\blx@opencheck#1{% - \ifnum\numexpr\blx@parenlevel+\@ne - \ifnum\blx@parenlevel>\@m -1001\fi - >\c@maxparens - \blx@err@nestparen{\string#1}% - \blx@errormark - \fi} - -\def\blx@closecheck#1{% - \ifnum\numexpr\blx@parenlevel - \ifnum\blx@parenlevel>\@m -1001\fi - >\c@maxparens - \blx@err@nestparen{\string#1}% - \blx@errormark - \fi - \ifnum\blx@parenlevel<\@ne - \blx@err@matchparen{Unmatched \string#1}% - \blx@errormark - \fi} - -\protected\def\blx@errormark{% - \rule[0.25ex]{1.25ex}{1.25ex}} - -\AtEndDocument{% - \unless\ifnum\blx@parenlevel@text=\z@ - \blx@err@matchparen{% - Unbalanced parentheses or brackets in the document body}% - \fi - \unless\ifnum\blx@parenlevel@foot=\z@ - \blx@err@matchparen{% - Unbalanced parentheses or brackets in a foot or endnote}% - \fi} - -\newrobustcmd{\mkbibparens}[1]{% - \begingroup - \blx@blxinit - \blx@setsfcodes - \bibopenparen#1\bibcloseparen - \endgroup} - -\newrobustcmd{\mkbibbrackets}[1]{% - \begingroup - \blx@blxinit - \blx@setsfcodes - \bibopenbracket#1\bibclosebracket - \endgroup} - -\newrobustcmd*{\parentext}{\mkbibparens} -\newrobustcmd*{\brackettext}{\mkbibbrackets} - -\newrobustcmd{\mkbibsuperscript}[1]{% - \unspace\allowhyphens\textsuperscript{% - \begingroup - \protected\long\def\mkbibsuperscript##1{% - \blx@warning{Nested superscript}% - \mkbibbrackets{##1}}% - #1\endgroup}} - -\newrobustcmd{\mkbibfootnote}{\blx@mkbibfootnote{}} -\newrobustcmd{\mkbibfootnotetext}{\blx@mkbibfootnote{text}} -\newrobustcmd{\blx@mkbibfootnote}[2]{% - \iftoggle{blx@footnote} - {\blx@warning{Nested notes}% - \addspace\mkbibparens{#2}} - {\unspace - \ifnum\blx@notetype=\tw@ - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi - {\csuse{blx@theendnote#1}{\protecting{\blxmkbibnote{end}{#2}}}} - {\csuse{footnote#1}{\protecting{\blxmkbibnote{foot}{#2}}}}}} - -\newrobustcmd{\mkbibendnote}{\blx@mkbibendnote{}} -\newrobustcmd{\mkbibendnotetext}{\blx@mkbibendnote{text}} -\newrobustcmd{\blx@mkbibendnote}[2]{% - \iftoggle{blx@footnote} - {\blx@warning{Nested notes}% - \addspace\mkbibparens{#2}} - {\unspace - \ifnum\blx@notetype=\@ne - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi - {\csuse{footnote#1}{\protecting{\blxmkbibnote{foot}{#2}}}} - {\csuse{blx@theendnote#1}{\protecting{\blxmkbibnote{end}{#2}}}}}} - -\newrobustcmd{\blxmkbibnote}[2]{% - \begingroup - \blx@blxinit - \blx@setsfcodes - \blx@postpunct@agroup - \toggletrue{blx@footnote}% - \csuse{bib#1notewrapper}{#2}% - \endgroup} - -\newcommand{\bibfootnotewrapper}[1]{% - \bibsentence#1\addperiod} - -\newcommand{\bibendnotewrapper}[1]{% - \bibsentence#1\addperiod} - -\AtEndPreamble{% - \def\blx@theendnote{\blx@err@endnote\footnote}% - \def\blx@theendnotetext{\blx@err@endnote\footnotetext}% - \ifdef\endnote - {\def\blx@theendnote{\endnote}% - \ifdef\endnotetext - {\def\blx@theendnotetext{\endnotetext}} - {}} - {\ifdef\pagenote - {\def\blx@theendnote{\pagenote}% - \ifdef\pagenotetext - {\def\blx@theendnotetext{\pagenotetext}} - {}} - {}}} - -\newrobustcmd*{\mknumalph}[1]{% - \begingroup - \blx@tempcnta=#1\relax - \ifnum\blx@tempcnta>702 % - \else - \ifnum\blx@tempcnta>26 % - \advance\blx@tempcnta\m@ne - \divide\blx@tempcnta26\relax - \blx@numalph\blx@tempcnta - \multiply\blx@tempcnta26\relax - \blx@tempcnta=\numexpr#1-\blx@tempcnta\relax - \fi - \fi - \blx@numalph\blx@tempcnta - \endgroup} -\def\blx@numalph#1{% - \ifcase#1\relax\blx@warning@entry{Value out of range}\number#1\or - a\or b\or c\or d\or e\or f\or g\or h\or i\or j\or k\or l\or m\or - n\or o\or p\or q\or r\or s\or t\or u\or v\or w\or x\or y\or z\else - \blx@warning@entry{Value out of range}\number#1\fi} - -\newrobustcmd*{\volcitecmd}[1]{% - \begingroup - \def\blx@tempa{\endgroup#1}% - \@ifstar - {\appto\blx@tempa{*}% - \blx@volcitecmd@i} - {\blx@volcitecmd@i}} - -\def\blx@volcitecmd@i{% - \@ifnextchar[%] - {\blx@volcitecmd@ii} - {\blx@volcitecmd@ii[]}} - -\def\blx@volcitecmd@ii[#1]#2{% - \appto\blx@tempa{[#1]}% - \blx@getformat\blx@tempb{ffd}{}{volcitevolume}% - \@ifnextchar[%] - {\blx@volcitecmd@iii{#2}} - {\edef\blx@tempa{\expandonce\blx@tempa[{% - \expandonce{\blx@tempb{#2}}}]}% - \blx@tempa}} - -\def\blx@volcitecmd@iii#1[#2]{% - \blx@getformat\blx@tempc{ffd}{}{volcitepages}% - \edef\blx@tempa{\expandonce\blx@tempa[{% - \expandonce{\blx@tempb{#1}}% - \noexpand\volcitedelim - \expandonce{\blx@tempc{#2}}}]}% - \blx@tempa} - -%% Control file - -\begingroup -\let~\space -\@makeother\< -\@makeother\> -\@makeother\. -\@makeother\: -\@makeother\? -\@makeother\" -\@makeother\- -\@makeother\= -\@makeother\/ -\xdef\blx@xml@file{% - \blx@sig@bcf\blx@nl - \blx@ver@bcf\blx@nl} -\xdef\blx@xml@endfile{% - \blx@nl</bcf:controlfile>} -\xdef\blx@xml@comment#1{% - ~~<!-- #1 -->\blx@nl} -\xdef\blx@xml@options#1#2#3{% - ~~<bcf:options% - \noexpand\ifblank{#1}{}{ component="#1"}% - \noexpand\ifblank{#2}{}{ type="#2"}% - >\blx@nl - #3% - ~~</bcf:options>\blx@nl} -\xdef\blx@xml@option#1#2{% - ~~~~<bcf:option type="#1">\blx@nl - #2% - ~~~~</bcf:option>\blx@nl} -\xdef\blx@xml@ordered#1#2{% - ~~~~~~<bcf:value order="#1">#2</bcf:value>\blx@nl} - -\xdef\blx@xml@displaymodes#1#2{% - ~~<bcf:displaymodes type="#1">\blx@nl - #2% - ~~</bcf:displaymodes>\blx@nl} -\xdef\blx@xml@displaymode#1{% - ~~~~<bcf:displaymode>\blx@nl - #1% - ~~~~</bcf:displaymode>\blx@nl} -\xdef\blx@xml@dtarget#1{% - ~~~~~~<bcf:dtarget>#1</bcf:dtarget>\blx@nl} -\xdef\blx@xml@dmode#1#2{% - ~~~~~~<bcf:dmode order="#1">#2</bcf:dmode>\blx@nl} - -\xdef\blx@xml@inheritance#1{% - ~~<bcf:inheritance>\blx@nl - #1% - ~~</bcf:inheritance>\blx@nl} -\xdef\blx@xml@inherit@defaults#1#2{% - ~~~~<bcf:defaults#1>\blx@nl - #2% - ~~~~</bcf:defaults>\blx@nl} -\xdef\blx@xml@inherit@data#1{% - ~~~~<bcf:inherit>\blx@nl - #1% - ~~~~</bcf:inherit>\blx@nl} -\xdef\blx@xml@inherit@type#1#2#3{% - ~~~~~~<bcf:type\string_pair source="#1" target="#2"#3/>\blx@nl} -\xdef\blx@xml@inherit@field#1#2#3{% - ~~~~~~<bcf:field source="#1" target="#2"#3/>\blx@nl} -\xdef\blx@xml@inherit@block#1{% - ~~~~~~<bcf:field source="#1" skip="true"/>\blx@nl} - -\xdef\blx@xml@sorting#1{% - ~~<bcf:sorting>\blx@nl - #1% - ~~</bcf:sorting>\blx@nl} -\xdef\blx@xml@presort#1#2{% - ~~~~<bcf:presort\noexpand\ifblank{#1}{}{ type="#1"}>% - #2</bcf:presort>\blx@nl} - -\xdef\blx@xml@sortexclude#1#2{% - ~~~~<bcf:sortexclusion\noexpand\ifblank{#1}{}{ type="#1"}>\blx@nl - #2% - ~~~~</bcf:sortexclusion>\blx@nl} -\xdef\blx@xml@exclude#1{% - ~~~~~~<bcf:exclusion>#1</bcf:exclusion>\blx@nl} -\xdef\blx@xml@sort#1#2{% - ~~~~<bcf:sort #1>\blx@nl - #2% - ~~~~</bcf:sort>\blx@nl} -\xdef\blx@xml@sortitem#1#2{% - ~~~~~~<bcf:sortitem #1>#2</bcf:sortitem>\blx@nl} -\xdef\blx@xml@section#1{% - ~~<bcf:section number="#1">} -\xdef\blx@xml@endsection{% - ~~</bcf:section>} -\xdef\blx@xml@bibdata#1#2{% - ~~<bcf:bibdata section="#1">\blx@nl - #2% - ~~</bcf:bibdata>\blx@nl} -\xdef\blx@xml@datasource#1#2#3{% - ~~~~<bcf:datasource type="#1" datatype="#2">#3</bcf:datasource>\blx@nl} -\xdef\blx@xml@citekey#1{% - ~~~~<bcf:citekey>#1</bcf:citekey>} -\xdef\blx@xml@citeset#1#2{% - ~~~~<bcf:citekey type="set" members="#2">#1</bcf:citekey>} -\xdef\blx@xml@svalue#1#2{% - \blx@xml@option{singlevalued}{% - ~~~~~~<bcf:key>#1</bcf:key>\blx@nl - ~~~~~~<bcf:value>#2</bcf:value>\blx@nl}} -\xdef\blx@xml@mvalue#1#2{% - \blx@xml@option{multivalued}{% - ~~~~~~<bcf:key>#1</bcf:key>\blx@nl - #2}} -\xdef\blx@xml@toggle#1{% - \blx@xml@svalue{#1}{\noexpand\iftoggle{blx@#1}{1}{0}}} -\endgroup - -\def\blx@bcf@options@global{% - \blx@xml@comment{global}% - \blx@xml@options{biblatex}{global}{% - \blx@xml@svalue{alphaothers}{\labelalphaothers}% - \blx@xml@toggle{labelalpha}% - \blx@xml@mvalue{labelnamespec}{\blx@bcf@labelnamespec}% - \blx@xml@toggle{labelyear}% - \blx@xml@mvalue{labelyearspec}{\blx@bcf@labelyearspec}% - \blx@xml@svalue{maxalphanames}{\blx@maxalphanames}% - \blx@xml@svalue{maxbibnames}{\blx@maxbibnames}% - \blx@xml@svalue{maxcitenames}{\blx@maxcitenames}% - \blx@xml@svalue{maxitems}{\blx@maxitems}% - \blx@xml@svalue{minalphanames}{\blx@minalphanames}% - \blx@xml@svalue{minbibnames}{\blx@minbibnames}% - \blx@xml@svalue{mincitenames}{\blx@mincitenames}% - \blx@xml@svalue{minitems}{\blx@minitems}% - \blx@xml@toggle{singletitle}% - \blx@xml@svalue{sortalphaothers}{\sortalphaothers}% - \blx@xml@svalue{sortlos}{\blx@sortlos}% - \blx@xml@svalue{uniquelist}{\blx@uniquelist}% - \blx@xml@svalue{uniquename}{\blx@uniquename}% - \blx@xml@toggle{useauthor}% - \blx@xml@toggle{useeditor}% - \blx@xml@toggle{useprefix}% - \blx@xml@toggle{usetranslator}% - }% -} - -\def\blx@bcf@options@type#1{% - \blx@xml@comment{#1}% - \blx@xml@options{biblatex}{#1}{% - \blx@xml@toggle{labelalpha}% - \blx@xml@mvalue{labelnamespec}{% - \ifcsdef{blx@bcf@labelnamespec@#1} - {\csuse{blx@bcf@labelnamespec@#1}} - {\blx@bcf@labelnamespec}}% - \blx@xml@toggle{labelyear}% - \blx@xml@mvalue{labelyearspec}{% - \ifcsdef{blx@bcf@labelyearspec@#1} - {\csuse{blx@bcf@labelyearspec@#1}} - {\blx@bcf@labelyearspec}}% - \blx@xml@svalue{maxalphanames}{\blx@maxalphanames}% - \blx@xml@svalue{maxbibnames}{\blx@maxbibnames@type}% - \blx@xml@svalue{maxcitenames}{\blx@maxcitenames@type}% - \blx@xml@svalue{maxitems}{\blx@maxitems@type}% - \blx@xml@svalue{minalphanames}{\blx@minalphanames}% - \blx@xml@svalue{minbibnames}{\blx@minbibnames@type}% - \blx@xml@svalue{mincitenames}{\blx@mincitenames@type}% - \blx@xml@svalue{minitems}{\blx@minitems@type}% - \blx@xml@toggle{singletitle}% - \blx@xml@toggle{skipbib}% - \blx@xml@toggle{skiplab}% - \blx@xml@toggle{skiplos}% - \blx@xml@svalue{uniquelist}{\blx@uniquelist}% - \blx@xml@svalue{uniquename}{\blx@uniquename}% - \blx@xml@toggle{useauthor}% - \blx@xml@toggle{useeditor}% - \blx@xml@toggle{useprefix}% - \blx@xml@toggle{usetranslator}% - }% -} - -\edef\blx@ctrl@bibtex{% - \blx@msg@bib - @Control\string{biblatex-control,\blx@nl - \space\space options = \string{% - \blx@bblversion:% - \noexpand\iftoggle{blx@debug}{1}{0}:% - \noexpand\ifnum\noexpand\blx@backend>\noexpand\blx@backend@bibtex - 1:% - \noexpand\else - 0:% - \noexpand\fi - \noexpand\iftoggle{blx@sortcase}{1}{0}:% - \noexpand\iftoggle{blx@terseinits}{1}{0}:% - \noexpand\iftoggle{blx@useprefix}{1}{0}:% - \noexpand\iftoggle{blx@useauthor}{1}{0}:% - \noexpand\iftoggle{blx@useeditor}{1}{0}:% - \noexpand\iftoggle{blx@usetranslator}{1}{0}:% - \noexpand\iftoggle{blx@labelalpha}{1}{0}:% - \noexpand\iftoggle{blx@labelyear}{1}{0}:% - \noexpand\iftoggle{blx@singletitle}{1}{0}:% - \noexpand\csuse{blx@bibtex@sorting@\noexpand\blx@sorting}:% - \noexpand\blx@sortlos:% - \noexpand\blx@maxcitenames:% - \noexpand\blx@mincitenames:% - \noexpand\blx@maxline:% - \noexpand\detokenize\noexpand\expandafter{\noexpand\labelalphaothers}% - \string},\blx@nl - \string}% -} - -\def\blx@ctrlwrite@bibtex{% - \immediate\openout\blx@auxout\blx@ctrlfile@bibtex\blxauxsuffix.bib\relax - \blx@auxwrite\blx@auxout{}{\blx@ctrl@bibtex}% - \immediate\closeout\blx@auxout} - -\def\blx@ctrlwrite@biber{% - \begingroup - \blx@safe@actives - \let\protect\string - % options - \edef\labelalphaothers{\labelalphaothers}% - \edef\sortalphaothers{\sortalphaothers}% - \blx@xmlsanitizeafter{\def\labelalphaothers}{\labelalphaothers}% - \blx@xmlsanitizeafter{\def\sortalphaothers}{\sortalphaothers}% - \edef\blx@tempa{% - \blx@xml@file - \blx@xml@comment{BIBER OPTIONS}% - \blx@xml@options{biber}{global}{% - \blx@xml@svalue{bblencoding}{\blx@texencoding}% - \blx@xml@svalue{bibencoding}{\blx@bibencoding}% - \blx@xml@toggle{debug}% - \blx@xml@svalue{mincrossrefs}{\blx@mincrossrefs}% - \blx@xml@toggle{sortcase}% - \ifdef\blx@sortlocale - {\blx@xml@svalue{sortlocale}{\blx@sortlocale}} - {}% - \blx@xml@toggle{sortupper}% - }% - \blx@xml@comment{BIBLATEX OPTIONS}% - \blx@bcf@options@global - }% - \ifdef\blx@opts@type - {\def\do##1{% - \begingroup - \blx@setoptions@type{##1}% - \begingroup - \let\protect\relax - \blx@checkoptions@type - \endgroup - \xappto\blx@tempa{\blx@bcf@options@type{##1}}% - \endgroup}% - \dolistloop\blx@opts@type} - {}% - % displaymode - \eappto\blx@tempa{% - \blx@xml@comment{DISPLAYMODES}% - \blx@xml@displaymodes{global}{% - \csuse{blx@biber@displaymodes@global}% - }% - }% - % data inheritance - \eappto\blx@tempa{% - \blx@xml@comment{CROSSREF}% - \blx@xml@inheritance{% - \csuse{blx@biber@inherit@default}% - \csuse{blx@biber@inherit@data}% - }% - }% - % sorting - \def\do##1{% - \eappto\blx@bcf@presort{\csuse{blx@bcf@presort@##1}}% - \eappto\blx@bcf@exclude{\csuse{blx@bcf@exclude@##1}}}% - \abx@dotypes - \eappto\blx@tempa{% - \blx@xml@comment{SORTING}% - \blx@xml@sorting{% - \blx@bcf@presort - \blx@bcf@exclude - \csuse{blx@biber@sorting@\blx@sorting}% - }% - }% - % files - \let\blx@tempb\@empty - \blx@bibdata\blx@tempb\blx@bibfiles - \eappto\blx@tempa{% - \blx@xml@comment{CITATION DATA}% - \blx@xml@comment{section 0}% - \blx@xml@bibdata{0}{\blx@tempb}% - \blx@xml@section{0}% - }% - \immediate\openout\blx@auxout\jobname.bcf\relax - \blx@auxwrite\blx@auxout{}{\blx@tempa}% - \global\undef\blx@tempa - \endgroup - \AfterEndDocument{% - \blx@auxwrite\blx@auxout{}{% - \blx@xml@endsection - \blx@xml@endfile}% - \immediate\closeout\blx@auxout}} - -%% Customization - -% [<exceptions>]{<options>} - -\newrobustcmd*{\DefaultInheritance}[2][]{% - \begingroup - \ifblank{#2} - {} - {\setkeys{blx@inherit@default}{#2}}% - \edef\blx@tempa{\space - inherit\string_all="\iftoggle{blx@inherit@all}{true}{false}"\space - override\string_target="\iftoggle{blx@inherit@override}{true}{false}"}% - \let\blx@tempb\@empty - \let\except\blx@inherit@except - #1% - \xdef\blx@biber@inherit@default{% - \blx@xml@inherit@defaults{\blx@tempa}{\blx@tempb}}% - \endgroup} -\@onlypreamble\DefaultInheritance - -\newtoggle{blx@inherit@all} -\newtoggle{blx@inherit@override} - -\define@key{blx@inherit@default}{all}[true]{% true|false - \settoggle{blx@inherit@all}{#1}} -\define@key{blx@inherit@default}{override}[true]{% true|false - \settoggle{blx@inherit@override}{#1}} - -% {<source>}{<target>}{<options>} - -\newcommand{\blx@inherit@except}[3]{% - \let\blx@tempc\@empty - \ifblank{#3} - {} - {\setkeys{blx@inherit@except}{#3}}% - \eappto\blx@tempb{% - \blx@xml@inherit@type{#1}{#2}{\blx@tempc}}} - -\define@key{blx@inherit@except}{all}[true]{% true|false - \eappto\blx@tempc{ inherit\string_all="#1"}} -\define@key{blx@inherit@except}{override}[true]{% true|false - \eappto\blx@tempc{ override\string_target="#1"}} - -% {<type,type,...>}{<type,type,...>}{<spec>} - -\newrobustcmd*{\DeclareDataInheritance}[3]{% - \begingroup - \let\blx@tempa\@empty - \forcsvlist{\blx@inherit@i{#2}}{#1}% - \let\blx@tempb\@empty - \let\inherit\blx@inherit@field - \let\noinherit\blx@inherit@block - #3% - \xappto\blx@biber@inherit@data{% - \blx@xml@inherit@data{% - \blx@tempa - \blx@tempb}}% - \endgroup} -\@onlypreamble\DeclareDataInheritance - -\def\blx@inherit@i#1#2{% - \forcsvlist{\blx@inherit@ii{#2}}{#1}} - -\def\blx@inherit@ii#1#2{% - \eappto\blx@tempa{\blx@xml@inherit@type{#1}{#2}{}}} - -% [<options>]{<source>}{<target>} - -\newcommand{\blx@inherit@field}[3][]{% - \let\blx@tempc\@empty - \ifblank{#1} - {} - {\setkeys{blx@inherit@field}{#1}}% - \eappto\blx@tempb{% - \blx@xml@inherit@field{#2}{#3}{\blx@tempc}}} - -\newcommand{\blx@inherit@block}[1]{% - \eappto\blx@tempb{\blx@xml@inherit@block{#1}}} - -\define@key{blx@inherit@field}{override}[true]{% true|false - \ifstrequal{#1}{true} - {\edef\blx@tempc{ override\string_target="true"}} - {\edef\blx@tempc{ override\string_target="false"}}} - -\newrobustcmd*{\ResetDataInheritance}{% - \global\csundef{blx@biber@inherit@data}} -\@onlypreamble\ResetDataInheritance - -% {<name>}{<spec>} - -\newrobustcmd*{\DeclareSortingScheme}[2]{% - \begingroup - \let\sort\blx@sortdef@sort - \let\name\blx@sortdef@list - \let\list\blx@sortdef@list - \let\field\blx@sortdef@field - \let\literal\blx@sortdef@literal - \def\citeorder{\blx@sortdef@field{citeorder}}% - \blx@tempcnta\z@ - \let\blx@tempa\@empty - #2% - \global\cslet{blx@biber@sorting@#1}\blx@tempa - \endgroup} -\@onlypreamble\DeclareSortingScheme - -\newcommand{\blx@sortdef@sort}[2][]{% - \advance\blx@tempcnta\@ne - \blx@tempcntb\z@ - \let\blx@tempb\@empty - \edef\blx@tempc{order="\the\blx@tempcnta"}% - \ifblank{#1} - {} - {\setkeys{blx@sortdef@sort}{#1}}% - \let\do\@firstofone - #2% - \eappto\blx@tempa{% - \blx@xml@sort{\blx@tempc}{\blx@tempb}}} - -\define@key{blx@sortdef@sort}{direction}{% ascending|descending - \ifstrequal{#1}{ascending} - {\eappto\blx@tempc{ sort\string_direction="ascending"}} - {\eappto\blx@tempc{ sort\string_direction="descending"}}} -\define@key{blx@sortdef@sort}{final}[true]{% true|false - \ifstrequal{#1}{true} - {\appto\blx@tempc{ final="1"}} - {}} -\define@key{blx@sortdef@sort}{sortcase}[true]{% true|false - \ifstrequal{#1}{true} - {\appto\blx@tempc{ sortcase="1"}} - {\appto\blx@tempc{ sortcase="0"}}} -\define@key{blx@sortdef@sort}{sortupper}[true]{% true|false - \ifstrequal{#1}{true} - {\appto\blx@tempc{ sortupper="1"}} - {\appto\blx@tempc{ sortupper="0"}}} - -\def\blx@sortdef@list#1{% - \advance\blx@tempcntb\@ne - \edef\blx@tempd{order="\the\blx@tempcntb"}% - \eappto\blx@tempb{% - \blx@xml@sortitem{\blx@tempd}{#1}}} - -\newcommand*{\blx@sortdef@field}[2][]{% - \advance\blx@tempcntb\@ne - \edef\blx@tempd{order="\the\blx@tempcntb"}% - \ifblank{#1} - {} - {\setkeys{blx@sortdef@field}{#1}}% - \eappto\blx@tempb{% - \blx@xml@sortitem{\blx@tempd}{#2}}} - -\define@key{blx@sortdef@field}{padside}{% left|right - \ifstrequal{#1}{right} - {\eappto\blx@tempd{ pad\string_side="right"}} - {\eappto\blx@tempd{ pad\string_side="left"}}} -\define@key{blx@sortdef@field}{padwidth}{% integer - \eappto\blx@tempd{ pad\string_width="#1"}} -\define@key{blx@sortdef@field}{padchar}{% character - \blx@xmlsanitizeafter{\def\blx@tempe}{#1}% - \eappto\blx@tempd{ pad\string_char="\blx@tempe"}} -\define@key{blx@sortdef@field}{strside}{% left|right - \ifstrequal{#1}{right} - {\eappto\blx@tempd{ substring\string_side="right"}} - {\eappto\blx@tempd{ substring\string_side="left"}}} -\define@key{blx@sortdef@field}{strwidth}{% integer - \eappto\blx@tempd{ substring\string_width="#1"}} - -\def\blx@sortdef@literal#1{% - \advance\blx@tempcntb\@ne - \blx@xmlsanitizeafter{\def\blx@tempe}{#1}% - \eappto\blx@tempb{% - \blx@xml@sortitem{order="\the\blx@tempcntb"}{\blx@tempe}}} - -% [<type,type,...>]{<string>} - -\newrobustcmd*{\DeclarePresort}[2][]{% - \begingroup - \blx@xmlsanitizeafter{\def\blx@tempa}{#2}% - \ifblank{#1} - {\xdef\blx@bcf@presort{\blx@xml@presort{}{\blx@tempa}}} - {\notblank{#2} - {\forcsvlist{\blx@defpresort\blx@tempa}{#1}} - {\forcsvlist\blx@undefpresort{#1}}}% - \endgroup} -\@onlypreamble\DeclarePresort - -\def\blx@defpresort#1#2{% - \csxdef{blx@bcf@presort@#2}{\blx@xml@presort{#2}{#1}}} -\def\blx@undefpresort#1{% - \global\csundef{blx@bcf@presort@#1}} - -\newrobustcmd*{\DeclareSortExclusion}[2]{% - \forcsvlist{\blx@sortexlude{#2}}{#1}} - -\def\blx@sortexlude#1#2{% - \begingroup - \ifblank{#1} - {\global\csundef{blx@bcf@exclude@#2}} - {\let\blx@tempa\@empty - \forcsvlist\blx@sortexlude@i{#1}% - \csxdef{blx@bcf@exclude@#2}{% - \blx@xml@sortexclude{#2}{\blx@tempa}}} - \endgroup} - -\def\blx@sortexlude@i#1{% - \appto\blx@tempa{\blx@xml@exclude{#1}}} - -% [<type,type,...>]{<field,field,...>} - -\newrobustcmd*{\DeclareLabelname}[2][]{% - \blx@defmvalue{labelnamespec}{#1}{#2}} -\@onlypreamble\DeclareLabelname - -\newrobustcmd*{\DeclareLabelyear}[2][]{% - \blx@defmvalue{labelyearspec}{#1}{#2}} -\@onlypreamble\Declarelabelyear - -\def\blx@defmvalue#1#2#3{% - \ifblank{#2} - {\expandafter\blx@defmvalue@ii\csname blx@bcf@#1\endcsname{#3}} - {\forcsvlist{\blx@defmvalue@i{#1}{#3}}{#2}}} - -\def\blx@defmvalue@i#1#2#3{% - \blx@addtypeopt{#3}% - \expandafter\blx@defmvalue@ii\csname blx@bcf@#1@#3\endcsname{#2}} - -\def\blx@defmvalue@ii#1#2{% - \begingroup - \global\let#1\@empty - \blx@tempcnta\z@ - \def\do##1{% - \advance\blx@tempcnta\@ne - \xappto#1{\noexpand\blx@xml@ordered{\the\blx@tempcnta}{##1}}}% - \docsvlist{#2}% - \endgroup} - -% experimental - -\newrobustcmd*{\DeclareDisplaymode}[2][global]{% - \begingroup - \blx@tempcnta\z@ - \def\blx@tempa{\blx@xml@dtarget{*}}% - \forcsvlist\blx@defdisplaymode{#2}% - \csxdef{blx@biber@displaymodes@#1}{% - \blx@xml@displaymode{\blx@tempa}}% - \endgroup} - -\def\blx@defdisplaymode#1{% - \advance\blx@tempcnta\@ne - \edef\blx@tempa{% - \blx@tempa - \blx@xml@dmode{\the\blx@tempcnta}{#1}}} - -\DeclareDisplaymode{original,romanised,uniform,translated} - -%% Package options - -% [<entrytype,entrytype,...>]{<options>} - -\newrobustcmd*{\ExecuteBibliographyOptions}[2][]{% - \ifblank{#1} - {\setkeys{blx@opt@pre}{#2}} - {\forcsvlist{\blx@typeoptions{#2}}{#1}}} -\@onlypreamble\ExecuteBibliographyOptions - -\def\blx@typeoptions#1#2{% - \blx@addtypeopt{#2}% - \csappto{blx@opts@type@#2}{#1}} - -\def\blx@addtypeopt#1{% - \notblank{#1} - {\ifdef\blx@opts@type - {\ifinlist{#1}{\blx@opts@type} - {} - {\listadd\blx@opts@type{#1}}} - {\listadd\blx@opts@type{#1}}} - {}} - -% load-time only - -\define@key{blx@opt@ldt}{style}{% - \def\blx@cbxfile{#1}% - \def\blx@bbxfile{#1}} - -\define@key{blx@opt@ldt}{bibstyle}{% - \def\blx@bbxfile{#1}} - -\define@key{blx@opt@ldt}{citestyle}{% - \def\blx@cbxfile{#1}} - -\define@key{blx@opt@ldt}{natbib}[true]{% - \settoggle{blx@natbib}{#1}} - -\define@key{blx@opt@ldt}{mcite}[true]{% - \settoggle{blx@mcite}{#1}} - -% load-time and preamble - -\DeclareBibliographyOption{debug}[true]{% - \settoggle{blx@debug}{#1}} - -\DeclareBibliographyOption{backend}{% - \ifcsdef{blx@backend@#1} - {\letcs\blx@backend{blx@backend@#1}} - {\blx@err@invopt{backend=#1}{}}} -\chardef\blx@backend@bibtex=0 -\chardef\blx@backend@bibtexe=1 -\chardef\blx@backend@bibtexu=2 -\chardef\blx@backend@biber=3 -\cslet{blx@backend@bibtex8}\blx@backend@bibtexe - -\DeclareBibliographyOption{loadfiles}[true]{% - \settoggle{blx@loadfiles}{#1}} - -\DeclareBibliographyOption{mincrossrefs}{% - \ifnum#1<\z@ - \def\blx@mincrossrefs{1}% - \def\blx@minxrefs{1}% - \else - \def\blx@mincrossrefs{#1}% - \def\blx@minxrefs{#1}% - \fi} -\def\blx@minxrefs{2} - -\DeclareBibliographyOption{texencoding}{% - \ifstrequal{#1}{auto} - {\undef\blx@texencoding} - {\def\blx@texencoding{#1}}} - -\DeclareBibliographyOption{bibencoding}{% - \ifcsdef{blx@bibenc@#1} - {\letcs\blx@bibencoding{blx@bibenc@#1}} - {\def\blx@bibencoding{#1}}} - -\def\abx@mapbibenc#1#2{\csdef{blx@bibenc@#1}{#2}} -\abx@mapbibenc{inputenc}{auto} -\abx@mapbibenc{x-ascii}{ascii} - -\def\abx@mapinpenc#1#2{\csdef{blx@inpenc@#1}{#2}} -\abx@mapinpenc{utf8x}{utf8} -\abx@mapinpenc{lutf8}{utf8} -\abx@mapinpenc{x-ascii}{ascii} - -\DeclareBibliographyOption{safeinputenc}[true]{% - \settoggle{blx@safeinputenc}{#1}} -\newtoggle{blx@safeinputenc} - -\DeclareBibliographyOption{sorting}{% - \def\blx@sorting{#1}} -\def\blx@bibtex@sorting@none{0} -\def\blx@bibtex@sorting@nty{1} -\def\blx@bibtex@sorting@nyt{2} -\def\blx@bibtex@sorting@nyvt{3} -\def\blx@bibtex@sorting@anyt{12} -\def\blx@bibtex@sorting@anyvt{13} -\def\blx@bibtex@sorting@ynt{21} -\def\blx@bibtex@sorting@ydnt{22} -\def\blx@bibtex@sorting@debug{99} - -\AtEndPreamble{% - \ifnum\blx@backend=\blx@backend@biber - \ifcsdef{blx@biber@sorting@\blx@sorting} - {} - {\blx@err@invopt{sorting=\blx@sorting}{}% - \def\blx@sorting{nty}}% - \else - \ifcsdef{blx@bibtex@sorting@\blx@sorting} - {} - {\blx@err@invopt{sorting=\blx@sorting}{}% - \def\blx@sorting{nty}}% - \fi} - -\DeclareBibliographyOption{sortcase}[true]{% - \settoggle{blx@sortcase}{#1}} - -\DeclareBibliographyOption{sortupper}[true]{% - \settoggle{blx@sortupper}{#1}} - -\DeclareBibliographyOption{sortlocale}{% - \ifblank{#1} - {\undef\blx@sortlocale} - {\edef\blx@sortlocale{\detokenize{#1}}}} - -\DeclareBibliographyOption{sortlos}{% - \ifcsdef{blx@opt@sortlos@#1} - {\letcs\blx@sortlos{blx@opt@sortlos@#1}} - {\blx@err@invopt{sortlos=#1}{}}} -\def\blx@opt@sortlos@bib{0} -\def\blx@opt@sortlos@los{1} - -\DeclareBibliographyOption{maxnames}{% - \numdef\blx@maxcitenames{#1}% - \numdef\blx@maxbibnames{#1}} -\DeclareBibliographyOption{minnames}{% - \numdef\blx@mincitenames{#1}% - \numdef\blx@minbibnames{#1}} -\DeclareTypeOption{maxnames}{% - \numdef\blx@maxcitenames@type{#1}% - \numdef\blx@maxbibnames@type{#1}% - \c@maxnames#1\relax} -\DeclareTypeOption{minnames}{% - \numdef\blx@mincitenames@type{#1}% - \numdef\blx@minbibnames@type{#1}% - \c@minnames#1\relax} -\DeclareEntryOption{maxnames}{% - \c@maxnames#1\relax} -\DeclareEntryOption{minnames}{% - \c@minnames#1\relax} - -\DeclareBibliographyOption{maxbibnames}{% - \numdef\blx@maxbibnames{#1}} -\DeclareBibliographyOption{minbibnames}{% - \numdef\blx@minbibnames{#1}} -\DeclareTypeOption{maxbibnames}{% - \numdef\blx@maxbibnames@type{#1}% - \iftoggle{blx@bibliography} - {\c@maxnames#1\relax} - {}} -\DeclareTypeOption{minbibnames}{% - \numdef\blx@minbibnames@type{#1}% - \iftoggle{blx@bibliography} - {\c@minnames#1\relax} - {}} -\DeclareEntryOption{maxbibnames}{% - \iftoggle{blx@bibliography} - {\c@maxnames#1\relax} - {}} -\DeclareEntryOption{minbibnames}{% - \iftoggle{blx@bibliography} - {\c@minnames#1\relax} - {}} - -\DeclareBibliographyOption{maxcitenames}{% - \numdef\blx@maxcitenames{#1}} -\DeclareBibliographyOption{mincitenames}{% - \numdef\blx@minbibnames{#1}} -\DeclareTypeOption{maxcitenames}{% - \numdef\blx@maxcitenames@type{#1}% - \iftoggle{blx@bibliography} - {} - {\c@maxnames#1\relax}} -\DeclareTypeOption{mincitenames}{% - \numdef\blx@minbibnames@type{#1}% - \iftoggle{blx@bibliography} - {} - {\c@minnames#1\relax}} -\DeclareEntryOption{maxcitenames}{% - \iftoggle{blx@bibliography} - {} - {\c@maxnames#1\relax}} -\DeclareEntryOption{mincitenames}{% - \iftoggle{blx@bibliography} - {} - {\c@minnames#1\relax}} - -\appto\blx@checkoptions@global{% - \blx@maxmin@num{maxbibnames}{minbibnames}\blx@maxbibnames\blx@minbibnames - \blx@maxmin@num{maxcitenames}{mincitenames}\blx@maxcitenames\blx@mincitenames} -\appto\blx@checkoptions@type{% - \blx@maxmin@num{maxbibnames}{minbibnames}\blx@maxbibnames@type\blx@minbibnames@type - \blx@maxmin@num{maxcitenames}{mincitenames}\blx@maxcitenames@type\blx@mincitenames@type} -\appto\blx@checkoptions@entry{% - \blx@maxmin@cnt{maxnames}{minnames}\c@maxnames\c@minnames} - -\DeclareBibliographyOption{maxitems}{% - \numdef\blx@maxitems{#1}} -\DeclareBibliographyOption{minitems}{% - \numdef\blx@minitems{#1}} -\DeclareTypeOption{maxitems}{% - \numdef\blx@maxitems@type{#1}% - \c@maxitems#1\relax} -\DeclareTypeOption{minitems}{% - \numdef\blx@minitems@type{#1}% - \c@minitems#1\relax} -\DeclareEntryOption{maxitems}{% - \c@maxitems#1\relax} -\DeclareEntryOption{minitems}{% - \c@minitems#1\relax} - -\appto\blx@checkoptions@global{% - \blx@maxmin@num{maxitems}{minitems}\blx@maxitems\blx@minitems} -\appto\blx@checkoptions@type{% - \blx@maxmin@num{maxitems}{minitems}\blx@maxitems@type\blx@minitems@type} -\appto\blx@checkoptions@entry{% - \blx@maxmin@cnt{maxitems}{minitems}\c@maxitems\blx@minitems} - -\DeclareBibliographyOption{maxalphanames}{% - \numdef\blx@maxalphanames{#1}} -\DeclareBibliographyOption{minalphanames}{% - \numdef\blx@minalphanames{#1}} -\DeclareTypeOption{maxalphanames}{% - \numdef\blx@maxalphanames{#1}} -\DeclareTypeOption{minalphanames}{% - \numdef\blx@minalphanames{#1}} - -\appto\blx@checkoptions@global{% - \blx@maxmin@num{maxalphanames}{minalphanames}\blx@maxalphanames\blx@minalphanames} -\appto\blx@checkoptions@type{% - \blx@maxmin@num{maxalphanames}{minalphanames}\blx@maxalphanames\blx@minalphanames} - -\def\blx@maxmin@num#1#2#3#4{% - \ifnumless#3\@ne - {\blx@err@invopt{#1=#3}{'#1' must be greater than zero}% - \let#3\@ne} - {}% - \ifnumless#4\@ne - {\blx@err@invopt{#2=#4}{'#2' must be greater than zero}% - \let#4\@ne} - {}% - \ifnumless#3#4 - {\blx@err@confopt{#1/#2}{'#1' must be greater than or equal to '#2'}% - \let#3#4} - {}} - -\def\blx@maxmin@cnt#1#2#3#4{% - \ifnumless#3\@ne - {\blx@err@invopt{#1=\number#3}{'#1' must be greater than zero}% - #3\@ne} - {}% - \ifnumless#4\@ne - {\blx@err@invopt{#2=\number#4}{'#2' must be greater than zero}% - #4\@ne} - {}% - \ifnumless#3#4 - {\blx@err@confopt{#1/#2}{'#1' must be greater than or equal to '#2'}% - #3=#4} - {}} - -\DeclareBibliographyOption{maxline}{% BibTeX only - \ifnum#1<49 - \def\blx@maxline{49}% - \else - \ifnum#1>79 - \def\blx@maxline{79}% - \else - \def\blx@maxline{#1}% - \fi - \fi} - -\DeclareBibliographyOption{terseinits}[true]{% - \ifstrequal{#1}{true} - {\toggletrue{blx@terseinits}% BibTeX only - \renewrobustcmd*{\bibinitperiod}{} - \renewrobustcmd*{\bibinitdelim}{} - \renewrobustcmd*{\bibinithyphendelim}{}} - {\togglefalse{blx@terseinits}% BibTeX only - \renewrobustcmd*{\bibinitperiod}{\adddot} - \renewrobustcmd*{\bibinitdelim}{\addnbspace} - \renewrobustcmd*{\bibinithyphendelim}{\adddot\mbox{-}}}} - -\DeclareBibliographyOption{firstinits}[true]{% - \settoggle{blx@firstinits}{#1}} - -\DeclareBibliographyOption{abbreviate}[true]{% - \ifstrequal{#1}{true} - {\def\abx@str{abx@sstr}} - {\def\abx@str{abx@lstr}}} - -\DeclareBibliographyOption{dateabbrev}[true]{% - \ifstrequal{#1}{true} - {\let\abx@bibmonth\blx@imc@bibsstring} - {\let\abx@bibmonth\blx@imc@biblstring}} - -\DeclareBibliographyOption{language}{% - \ifstrequal{#1}{auto} - {\toggletrue{blx@autolang}% - \def\blx@languagename{english}} - {\IfFileExists{#1.lbx} - {\togglefalse{blx@autolang}% - \edef\blx@languagename{#1}} - {\blx@error - {Language '#1' not supported} - {Failed to find a matching '#1.lbx' file}}}} - -\DeclareBibliographyOption{clearlang}[true]{% - \settoggle{blx@clearlang}{#1}} - -\DeclareBibliographyOption{babel}{% - \ifcsdef{blx@opt@babel@#1} - {\csuse{blx@opt@babel@#1}} - {\blx@err@invopt{babel=#1}{}}} -\def\blx@opt@babel@none{% - \undef\blx@thelangenv - \let\blx@hook@initlang\@empty - \let\blx@hook@endlang\@empty} -\def\blx@opt@babel@hyphen{% - \def\blx@thelangenv{hyphenrules}% - \let\blx@hook@initlang\@empty - \let\blx@hook@endlang\@empty} -\csdef{blx@opt@babel@other*}{% - \def\blx@thelangenv{otherlanguage*}% - \def\blx@hook@initlang{\@quotereset\@ne}% - \def\blx@hook@endlang{\blx@postpunct}} -\def\blx@opt@babel@other{% - \def\blx@thelangenv{otherlanguage}% - \def\blx@hook@initlang{\@quotereset\@ne}% - \def\blx@hook@endlang{\blx@postpunct}} - -\DeclareBibliographyOption{indexing}[true]{% - \blx@opt@index{#1}} -\DeclareTypeOption{indexing}[true]{% - \blx@opt@index{#1}} -\DeclareEntryOption{indexing}[true]{% - \blx@opt@index{#1}} -\def\blx@opt@index#1{% - \ifcsdef{blx@opt@index@#1} - {\csuse{blx@opt@index@#1}} - {\blx@err@invopt{indexing=#1}{}}} -\def\blx@opt@index@true{% - \toggletrue{blx@citeindex}% - \toggletrue{blx@bibindex}} -\def\blx@opt@index@false{% - \togglefalse{blx@citeindex}% - \togglefalse{blx@bibindex}} -\def\blx@opt@index@cite{% - \toggletrue{blx@citeindex}% - \togglefalse{blx@bibindex}} -\def\blx@opt@index@bib{% - \togglefalse{blx@citeindex}% - \toggletrue{blx@bibindex}} - -\DeclareBibliographyOption{sortcites}[true]{% - \ifstrequal{#1}{true} - {\let\blx@thecitesort\blx@citesort - \let\blx@thenotecheck\blx@notecheck} - {\let\blx@thecitesort\blx@citenosort - \let\blx@thenotecheck\relax}} - -\DeclareBibliographyOption{hyperref}[true]{% - \ifcsdef{blx@opt@hyperref@#1} - {\letcs\blx@hyperref{blx@opt@hyperref@#1}} - {\blx@err@invopt{hyperref=#1}{}}} -\def\blx@opt@hyperref@false{0} -\def\blx@opt@hyperref@true{1} -\def\blx@opt@hyperref@auto{2} - -\DeclareBibliographyOption{backref}[true]{% - \ifstrequal{#1}{true} - {\let\blx@backref\blx@addbackref - \let\abx@aux@backref\blx@aux@backref - \booltrue{backtracker}} - {\let\blx@backref\@gobble - \let\abx@aux@backref\@gobblefive - \boolfalse{backtracker}}} - -\DeclareBibliographyOption{backrefsetstyle}{% - \ifcsdef{blx@opt@backrefsetstyle@#1} - {\letcs\blx@backrefsetstyle{blx@opt@backrefsetstyle@#1}} - {\blx@err@invopt{backrefsetstyle=#1}{}}} -\def\blx@opt@backrefsetstyle@setonly{0} -\def\blx@opt@backrefsetstyle@memonly{1} -\def\blx@opt@backrefsetstyle@setormem{2} -\def\blx@opt@backrefsetstyle@setandmem{3} -\def\blx@opt@backrefsetstyle@memandset{4} -\def\blx@opt@backrefsetstyle@setplusmem{5} - -\appto\blx@mkhyperref{% - \ifHy@plainpages - \blx@warning@noline{% - hyperref package option 'plainpages' enabled.\MessageBreak - This may cause problems with hyperlinked back\MessageBreak - references. 'plainpages=false' is recommended}% - \fi - \ifHy@pageanchor\else - \blx@warning@noline{% - hyperref package option 'pageanchor' disabled.\MessageBreak - This will cause problems with hyperlinked back\MessageBreak - references. 'pageanchor=true' is required}% - \fi} - -\DeclareBibliographyOption{block}{% - \ifcsdef{blx@opt@block@#1} - {\csuse{blx@opt@block@#1}} - {\blx@err@invopt{block=#1}{}}} -\def\blx@opt@block@none{% - \let\blx@bibsetup\@empty - \let\newblockpunct\@empty} -\def\blx@opt@block@par{% - \let\blx@bibsetup\@empty - \def\newblockpunct{\par}} -\def\blx@opt@block@nbpar{% - \def\blx@bibsetup{\interlinepenalty\@M}% - \def\newblockpunct{\par\nobreak}} -\def\blx@opt@block@space{% - \let\blx@bibsetup\@empty - \def\newblockpunct{% - \unspace\space - \hskip 0.11em - \@plus 0.33em - \@minus 0.07em}} -\def\blx@opt@block@ragged{% - \let\blx@bibsetup\raggedright - \def\newblockpunct{% - \unspace\penalty-9\relax\space}} - -\DeclareBibliographyOption{pagetracker}[true]{% - \ifcsdef{blx@opt@pagetracker@#1} - {\csuse{blx@opt@pagetracker@#1}} - {\blx@err@invopt{pagetracker=#1}{}}} -\def\blx@opt@pagetracker@true{% - \if@twoside - \blx@opt@pagetracker@spread - \else - \blx@opt@pagetracker@page - \fi} -\def\blx@opt@pagetracker@false{% - \let\blx@pagetracker\relax - \let\abx@aux@page\@gobbletwo - \let\abx@aux@fnpage\@gobbletwo - \boolfalse{pagetracker}} -\def\blx@opt@pagetracker@page{% - \let\blx@pagetracker\blx@pagetracker@context - \let\abx@aux@page\blx@aux@page - \let\abx@aux@fnpage\blx@aux@fnpage - \booltrue{pagetracker}} -\def\blx@opt@pagetracker@spread{% - \if@twoside - \let\blx@pagetracker\blx@pagetracker@context - \let\abx@aux@page\blx@aux@spread - \let\abx@aux@fnpage\blx@aux@fnspread - \booltrue{pagetracker}% - \else - \blx@warning@noline{% - LaTeX not in twoside mode\MessageBreak - Falling back to 'pagetracker=page'}% - \blx@opt@pagetracker@page - \fi} - -\DeclareBibliographyOption{citecounter}[true]{% - \ifcsdef{blx@opt@citecounter@#1} - {\csuse{blx@opt@citecounter@#1}} - {\blx@err@invopt{citecounter=#1}{}}} -\def\blx@opt@citecounter@true{% - \let\blx@setcitecounter\blx@setcitecounter@global - \let\blx@citecounter\blx@citecounter@global - \let\abx@aux@count\blx@aux@count - \let\abx@aux@fncount\blx@aux@fncount - \booltrue{citetracker}} -\def\blx@opt@citecounter@context{% - \let\blx@setcitecounter\blx@setcitecounter@context - \let\blx@citecounter\blx@citecounter@context - \let\abx@aux@count\blx@aux@count - \let\abx@aux@fncount\blx@aux@fncount - \booltrue{citetracker}} -\def\blx@opt@citecounter@false{% - \let\blx@setcitecounter\relax - \let\blx@citecounter\relax - \let\abx@aux@count\@gobbletwo - \let\abx@aux@fncount\@gobbletwo} - -\DeclareBibliographyOption{citetracker}[true]{% - \ifcsdef{blx@opt@citetracker@#1} - {\csuse{blx@opt@citetracker@#1}} - {\blx@err@invopt{citetracker=#1}{}}} -\def\blx@opt@citetracker@true{% - \let\blx@imc@ifciteseen\blx@ifciteseen@global - \let\blx@imc@ifentryseen\blx@ifentryseen@global - \let\blx@citetracker\blx@citetracker@global - \booltrue{citetracker}} -\def\blx@opt@citetracker@false{% - \let\blx@imc@ifciteseen\@secondoftwo - \protected\long\def\blx@imc@ifentryseen##1##2##3{##3}% - \let\blx@citetracker\relax} -\def\blx@opt@citetracker@context{% - \let\blx@imc@ifciteseen\blx@ifciteseen@context - \let\blx@imc@ifentryseen\blx@ifentryseen@context - \let\blx@citetracker\blx@citetracker@context - \booltrue{citetracker}} -\def\blx@opt@citetracker@strict{% - \let\blx@imc@ifciteseen\blx@ifciteseen@global - \let\blx@imc@ifentryseen\blx@ifentryseen@global - \def\blx@citetracker{% - \blx@ifcitesingle{\blx@citetracker@global}{}}% - \booltrue{citetracker}} -\def\blx@opt@citetracker@constrict{% - \let\blx@imc@ifciteseen\blx@ifciteseen@context - \let\blx@imc@ifentryseen\blx@ifentryseen@context - \def\blx@citetracker{% - \blx@ifcitesingle{\blx@citetracker@context}{}}% - \booltrue{citetracker}} - -\DeclareBibliographyOption{ibidtracker}[true]{% - \ifcsdef{blx@opt@ibidtracker@#1} - {\csuse{blx@opt@ibidtracker@#1}} - {\blx@err@invopt{ibidtracker=#1}{}}} -\def\blx@opt@ibidtracker@true{% - \let\blx@imc@ifciteibid\blx@ifciteibid@global - \let\blx@ibidtracker\blx@ibidtracker@gobal - \let\blx@ibidreset\blx@ibidreset@gobal - \booltrue{citetracker}} -\def\blx@opt@ibidtracker@false{% - \let\blx@imc@ifciteibid\@secondoftwo - \let\blx@ibidtracker\relax - \let\blx@ibidreset\relax} -\def\blx@opt@ibidtracker@context{% - \let\blx@imc@ifciteibid\blx@ifciteibid@context - \let\blx@ibidtracker\blx@ibidtracker@context - \let\blx@ibidreset\blx@ibidreset@context - \booltrue{citetracker}} -\def\blx@opt@ibidtracker@strict{% - \let\blx@imc@ifciteibid\blx@ifciteibid@strict - \let\blx@ibidtracker\blx@ibidtracker@strict - \let\blx@ibidreset\blx@ibidreset@gobal - \booltrue{citetracker}} -\def\blx@opt@ibidtracker@constrict{% - \let\blx@imc@ifciteibid\blx@ifciteibid@constrict - \let\blx@ibidtracker\blx@ibidtracker@constrict - \let\blx@ibidreset\blx@ibidreset@context - \booltrue{citetracker}} - -\DeclareBibliographyOption{idemtracker}[true]{% - \ifcsdef{blx@opt@idemtracker@#1} - {\csuse{blx@opt@idemtracker@#1}} - {\blx@err@invopt{idemtracker=#1}{}}} -\def\blx@opt@idemtracker@true{% - \let\blx@imc@ifciteidem\blx@ifciteidem@global - \let\blx@idemtracker\blx@idemtracker@gobal - \let\blx@idemreset\blx@idemreset@gobal - \booltrue{citetracker}} -\def\blx@opt@idemtracker@false{% - \let\blx@imc@ifciteidem\@secondoftwo - \let\blx@idemtracker\relax - \let\blx@idemreset\relax} -\def\blx@opt@idemtracker@context{% - \let\blx@imc@ifciteidem\blx@ifciteidem@context - \let\blx@idemtracker\blx@idemtracker@context - \let\blx@idemreset\blx@idemreset@context - \booltrue{citetracker}} -\def\blx@opt@idemtracker@strict{% - \let\blx@imc@ifciteidem\blx@ifciteidem@strict - \let\blx@idemtracker\blx@idemtracker@strict - \let\blx@idemreset\blx@idemreset@gobal - \booltrue{citetracker}} -\def\blx@opt@idemtracker@constrict{% - \let\blx@imc@ifciteidem\blx@ifciteidem@constrict - \let\blx@idemtracker\blx@idemtracker@constrict - \let\blx@idemreset\blx@idemreset@context - \booltrue{citetracker}} - -\DeclareBibliographyOption{opcittracker}[true]{% - \ifcsdef{blx@opt@opcittracker@#1} - {\csuse{blx@opt@opcittracker@#1}} - {\blx@err@invopt{opcittracker=#1}{}}} -\def\blx@opt@opcittracker@true{% - \let\blx@imc@ifopcit\blx@ifopcit@global - \let\blx@opcittracker\blx@opcittracker@gobal - \let\blx@opcitreset\blx@opcitreset@gobal - \booltrue{citetracker}} -\def\blx@opt@opcittracker@false{% - \let\blx@imc@ifopcit\@secondoftwo - \let\blx@opcittracker\relax - \let\blx@opcitreset\relax} -\def\blx@opt@opcittracker@context{% - \let\blx@imc@ifopcit\blx@ifopcit@context - \let\blx@opcittracker\blx@opcittracker@context - \let\blx@opcitreset\blx@opcitreset@context - \booltrue{citetracker}} -\def\blx@opt@opcittracker@strict{% - \let\blx@imc@ifopcit\blx@ifopcit@strict - \let\blx@opcittracker\blx@opcittracker@strict - \let\blx@opcitreset\blx@opcitreset@gobal - \booltrue{citetracker}} -\def\blx@opt@opcittracker@constrict{% - \let\blx@imc@ifopcit\blx@ifopcit@constrict - \let\blx@opcittracker\blx@opcittracker@constrict - \let\blx@opcitreset\blx@opcitreset@context - \booltrue{citetracker}} - -\DeclareBibliographyOption{loccittracker}[true]{% - \ifcsdef{blx@opt@loccittracker@#1} - {\csuse{blx@opt@loccittracker@#1}} - {\blx@err@invopt{loccittracker=#1}{}}} -\def\blx@opt@loccittracker@true{% - \let\blx@imc@ifloccit\blx@ifloccit@global - \let\blx@loccittracker\blx@loccittracker@gobal - \let\blx@loccitreset\blx@loccitreset@gobal - \booltrue{citetracker}} -\def\blx@opt@loccittracker@false{% - \let\blx@imc@ifloccit\@secondoftwo - \let\blx@loccittracker\relax - \let\blx@loccitreset\relax} -\def\blx@opt@loccittracker@context{% - \let\blx@imc@ifloccit\blx@ifloccit@context - \let\blx@loccittracker\blx@loccittracker@context - \let\blx@loccitreset\blx@loccitreset@context - \booltrue{citetracker}} -\def\blx@opt@loccittracker@strict{% - \let\blx@imc@ifloccit\blx@ifloccit@strict - \let\blx@loccittracker\blx@loccittracker@strict - \let\blx@loccitreset\blx@loccitreset@gobal - \booltrue{citetracker}} -\def\blx@opt@loccittracker@constrict{% - \let\blx@imc@ifloccit\blx@ifloccit@constrict - \let\blx@loccittracker\blx@loccittracker@constrict - \let\blx@loccitreset\blx@loccitreset@context - \booltrue{citetracker}} - -\DeclareBibliographyOption{parentracker}[true]{% - \ifstrequal{#1}{true} - {\let\bibopenparen\blx@bibopenparen - \let\bibcloseparen\blx@bibcloseparen - \let\bibopenbracket\blx@bibopenbracket - \let\bibclosebracket\blx@bibclosebracket} - {\protected\def\bibopenparen{\bibleftparen}% - \protected\def\bibcloseparen{\bibrightparen}% - \protected\def\bibopenbracket{\bibleftbracket}% - \protected\def\bibclosebracket{\bibrightbracket}}} - -\DeclareBibliographyOption{maxparens}{% - \ifnumless{#1}{1} - {\blx@err@invopt{maxparens=#1}{}} - {\setcounter{maxparens}{#1}}} - -\DeclareBibliographyOption{date}{% - \ifcsdef{mkbibrange#1} - {\protected\def\blx@imc@printdate{\csuse{mkbibrange#1}{}}% - \protected\def\blx@imc@printdateextra{\csuse{mkbibrange#1extra}{}}} - {\blx@err@invopt{date=#1}{}}} - -\DeclareBibliographyOption{urldate}{% - \ifcsdef{mkbibrange#1} - {\protected\def\blx@imc@printurldate{\csuse{mkbibrange#1}{url}}} - {\blx@err@invopt{urldate=#1}{}}} - -\DeclareBibliographyOption{eventdate}{% - \ifcsdef{mkbibrange#1} - {\protected\def\blx@imc@printeventdate{\csuse{mkbibrange#1}{event}}} - {\blx@err@invopt{eventdate=#1}{}}} - -\DeclareBibliographyOption{origdate}{% - \ifcsdef{mkbibrange#1} - {\protected\def\blx@imc@printorigdate{\csuse{mkbibrange#1}{orig}}} - {\blx@err@invopt{origdate=#1}{}}} - -\DeclareBibliographyOption{alldates}{% - \ExecuteBibliographyOptions{date=#1,urldate=#1,eventdate=#1,origdate=#1}} - -\DeclareBibliographyOption{datezeros}[true]{% - \ifstrequal{#1}{true} - {\let\blx@imc@mkdatezeros\@firstofone} - {\let\blx@imc@mkdatezeros\blx@imc@stripzeros}} - -\DeclareBibliographyOption{autocite}{% - \ifcsundef{blx@acite@#1} - {\blx@error - {Autocite command '#1' undefined} - {The autocite command '#1' has not been defined by - the\MessageBreak selected citation style}} - {\letcs\autocite{blx@acite@#1}% - \letcs\autocites{blx@macite@#1}}} - -\DeclareBibliographyOption{notetype}{% - \ifcsdef{blx@opt@notetype@#1} - {\blx@notetype\csuse{blx@opt@notetype@#1}} - {\blx@err@invopt{notetype=#1}{}}} -\cslet{blx@opt@notetype@foot+end}\z@ -\let\blx@opt@notetype@footonly\@ne -\let\blx@opt@notetype@endonly\tw@ - -\DeclareBibliographyOption{autopunct}[true]{% - \ifstrequal{#1}{true} - {\DeclareAutoPunctuation{.,;:!?}} - {\DeclareAutoPunctuation{}}} - -\DeclareBibliographyOption{punctfont}[true]{% - \ifstrequal{#1}{true} - {\let\blx@ifpuncthook\@firstoftwo} - {\let\blx@ifpuncthook\@secondoftwo}} - -\DeclareBibliographyOption{labelnumber}[true]{% - \settoggle{blx@labelnumber}{#1}% - \iftoggle{blx@labelnumber} - {} - {\setkeys{blx@opt@pre}{defernumbers=false}}} -\DeclareTypeOption{labelnumber}[true]{% - \settoggle{blx@labelnumber}{#1}} - -\DeclareBibliographyOption{labelalpha}[true]{% - \settoggle{blx@labelalpha}{#1}} -\DeclareTypeOption{labelalpha}[true]{% - \settoggle{blx@labelalpha}{#1}} - -\DeclareBibliographyOption{labelyear}[true]{% - \settoggle{blx@labelyear}{#1}} -\DeclareTypeOption{labelyear}[true]{% - \settoggle{blx@labelyear}{#1}} - -\DeclareBibliographyOption{uniquelist}[true]{% - \ifcsdef{blx@opt@uniquelist@#1} - {\letcs\blx@uniquelist{blx@opt@uniquelist@#1}} - {\blx@err@invopt{uniquelist=#1}{}}} -\DeclareTypeOption{uniquelist}[true]{% - \ifcsdef{blx@opt@uniquelist@#1} - {\letcs\blx@uniquelist{blx@opt@uniquelist@#1}} - {\blx@err@invopt{uniquelist=#1}{}}} -\def\blx@opt@uniquelist@false{0} -\def\blx@opt@uniquelist@true{1} -\def\blx@opt@uniquelist@minyear{2} - -\DeclareBibliographyOption{uniquename}[true]{% - \ifcsdef{blx@opt@uniquename@#1} - {\letcs\blx@uniquename{blx@opt@uniquename@#1}} - {\blx@err@invopt{uniquename=#1}{}}} -\DeclareTypeOption{uniquename}[true]{% - \ifcsdef{blx@opt@uniquename@#1} - {\letcs\blx@uniquename{blx@opt@uniquename@#1}} - {\blx@err@invopt{uniquename=#1}{}}} -\def\blx@opt@uniquename@false{0} -\def\blx@opt@uniquename@init{1} -\def\blx@opt@uniquename@true{2} -\def\blx@opt@uniquename@full{2} -\def\blx@opt@uniquename@allinit{3} -\def\blx@opt@uniquename@allfull{4} -\def\blx@opt@uniquename@mininit{5} -\def\blx@opt@uniquename@minfull{6} - -\DeclareBibliographyOption{singletitle}[true]{% - \settoggle{blx@singletitle}{#1}} -\DeclareTypeOption{singletitle}[true]{% - \settoggle{blx@singletitle}{#1}} - -\DeclareBibliographyOption{defernumbers}[true]{% - \settoggle{blx@defernumbers}{#1}% - \iftoggle{blx@defernumbers} - {\setkeys{blx@opt@pre}{labelnumber}% - \let\blx@thelabelnumber\blx@addlabelnumber - \let\abx@aux@number\blx@aux@number} - {\let\blx@thelabelnumber\relax - \let\abx@aux@number\@gobblefour}} - -\DeclareBibliographyOption{refsection}{% - \ifcsdef{blx@opt@refsection@#1} - {\letcs\blx@refsecreset@level{blx@opt@refsection@#1}} - {\blx@err@invopt{refsection=#1}{}}} -\def\blx@opt@refsection@none{0} -\def\blx@opt@refsection@part{1} -\def\blx@opt@refsection@chapter{2} -\def\blx@opt@refsection@section{3} -\def\blx@opt@refsection@subsection{4} - -\AtEndPreamble{% - \ifcase\blx@refsecreset@level - \or % 1 - \blx@refpatch@part\newrefsection - \or % 2 - \blx@refpatch@chapter\newrefsection - \or % 3 - \blx@refpatch@sect{section}{\newrefsection}{1}% - \or % 4 - \blx@refpatch@sect{subsection}{\newrefsection}{2}% - \fi} - -\DeclareBibliographyOption{refsegment}{% - \ifcsdef{blx@opt@refsegment@#1} - {\letcs\blx@refsegreset@level{blx@opt@refsegment@#1}} - {\blx@err@invopt{refsegment=#1}{}}} -\def\blx@opt@refsegment@none{0} -\def\blx@opt@refsegment@part{1} -\def\blx@opt@refsegment@chapter{2} -\def\blx@opt@refsegment@section{3} -\def\blx@opt@refsegment@subsection{4} - -\AtEndPreamble{% - \ifnumgreater\blx@refsegreset@level\z@ - {\ifnumgreater\blx@refsegreset@level\blx@refsecreset@level - {} - {\blx@err@confopt - {refsegment/refsection} - {The 'refsegment' option must point to a - lower-level\MessageBreak document division - than 'refsection'}% - \def\blx@refsegreset@level{0}}} - {}% - \ifcase\blx@refsegreset@level - \or % 1 - \blx@refpatch@part\newrefsegment - \or % 2 - \blx@refpatch@chapter\newrefsegment - \or % 3 - \blx@refpatch@sect{section}{\newrefsegment}{1}% - \or % 4 - \blx@refpatch@sect{subsection}{\newrefsegment}{2}% - \fi} - -\DeclareBibliographyOption{citereset}{% - \ifcsdef{blx@opt@citereset@#1} - {\letcs\blx@citereset@level{blx@opt@citereset@#1}} - {\blx@err@invopt{citereset=#1}{}}} -\def\blx@opt@citereset@none{0} -\def\blx@opt@citereset@part{1} -\def\blx@opt@citereset@chapter{2} -\def\blx@opt@citereset@section{3} -\def\blx@opt@citereset@subsection{4} - -\AtEndPreamble{% - \ifcase\blx@citereset@level - \or % 1 - \blx@refpatch@part{\citereset\blx@inf@creset}% - \or % 2 - \blx@refpatch@chapter{\citereset\blx@inf@creset}% - \or % 3 - \blx@refpatch@sect{section}{\citereset\blx@inf@creset}{1}% - \or % 4 - \blx@refpatch@sect{subsection}{\citereset\blx@inf@creset}{2}% - \fi} - -\DeclareBibliographyOption{bibwarn}[true]{% - \ifstrequal{#1}{true} - {\let\blx@bbl@thewarn\blx@bbl@warn} - {\let\blx@bbl@thewarn\@gobble}} - -% Entry options - -\DeclareBibliographyOption{useprefix}[true]{% - \settoggle{blx@useprefix}{#1}} -\DeclareTypeOption{useprefix}[true]{% - \settoggle{blx@useprefix}{#1}} -\DeclareEntryOption{useprefix}[true]{% - \settoggle{blx@useprefix}{#1}} - -\DeclareBibliographyOption{useauthor}[true]{% - \settoggle{blx@useauthor}{#1}} -\DeclareTypeOption{useauthor}[true]{% - \settoggle{blx@useauthor}{#1}} -\DeclareEntryOption{useauthor}[true]{% - \settoggle{blx@useauthor}{#1}} - -\DeclareBibliographyOption{useeditor}[true]{% - \settoggle{blx@useeditor}{#1}} -\DeclareTypeOption{useeditor}[true]{% - \settoggle{blx@useeditor}{#1}} -\DeclareEntryOption{useeditor}[true]{% - \settoggle{blx@useeditor}{#1}} - -\DeclareBibliographyOption{usetranslator}[true]{% - \settoggle{blx@usetranslator}{#1}} -\DeclareTypeOption{usetranslator}[true]{% - \settoggle{blx@usetranslator}{#1}} -\DeclareEntryOption{usetranslator}[true]{% - \settoggle{blx@usetranslator}{#1}} - -\DeclareTypeOption{skipbib}[true]{% - \settoggle{blx@skipbib}{#1}} -\DeclareEntryOption{skipbib}[true]{% - \settoggle{blx@skipbib}{#1}} - -\DeclareTypeOption{skiplos}[true]{% - \settoggle{blx@skiplos}{#1}} -\DeclareEntryOption{skiplos}[true]{% - \settoggle{blx@skiplos}{#1}} - -\DeclareTypeOption{skiplab}[true]{% - \settoggle{blx@skiplab}{#1}} -\DeclareEntryOption{skiplab}[true]{% - \settoggle{blx@skiplab}{#1}} - -\DeclareTypeOption{dataonly}[true]{% - \settoggle{blx@skipbib}{#1}% - \settoggle{blx@skiplos}{#1}% - \settoggle{blx@skiplab}{#1}} -\DeclareEntryOption{dataonly}[true]{% - \settoggle{blx@skipbib}{#1}% - \settoggle{blx@skiplos}{#1}% - \settoggle{blx@skiplab}{#1}} - -% Option processor/scheduler - \DeclareOption*{% - \begingroup - \def\blx@tempa#1=#2&{#1}% - \edef\blx@tempa{% - \expandafter\blx@tempa\CurrentOption=&}% - \ifcsundef{KV@blx@opt@ldt@\blx@tempa} - {\endgroup - \eappto\blx@theoptions{\CurrentOption,}} - {\edef\blx@tempa{\endgroup - \noexpand\setkeys{blx@opt@ldt}{\CurrentOption}}% - \blx@tempa}} - -\def\blx@processoptions{% - \ifundef\blx@theoptions - {} - {\begingroup - \edef\blx@tempa{\endgroup - \noexpand\setkeys{blx@opt@pre}{\blx@theoptions}}% - \blx@tempa}} - -%% Initial setup - -% Set defaults - -\setkeys{blx@opt@ldt}{style=numeric} -\setkeys{blx@opt@pre}{% - sorting=nty,sortlos=los,sortcase,sortupper,sortcites=false, - maxnames=3,minnames=1,maxalphanames=3,minalphanames=1, - maxitems=3,minitems=1,mincrossrefs=2,useauthor=true,useeditor=true, - usetranslator=false,indexing=false,abbreviate=true,dateabbrev=true, - backref=false,backrefsetstyle=setonly,pagetracker=false,ibidtracker=false, - idemtracker=false,opcittracker=false,loccittracker=false,citetracker=false, - citecounter=false,block=none,language=auto,clearlang=true,babel=none, - date=comp,origdate=comp,eventdate=comp,urldate=short,autopunct=true, - punctfont=false,defernumbers=false,refsection=none,refsegment=none, - citereset=none,hyperref=auto,parentracker,maxparens=3,maxline=79, - bibencoding=auto,bibwarn} - -% Load compatibility code - -\blx@inputonce{blx-compat.def}{compatibility code}{}{}{}{} - -% Restore catcodes - -\blx@catcodes -\undef\blx@catcodes - -% Process load-time options - -\ProcessOptions* - -% Load citation and bibliography styles, configuration file - -\blx@inputonce{biblatex.def}{generic definitions}{}{}{}{} -\iftoggle{blx@natbib} - {\blx@inputonce{blx-natbib.def}{natbib compatibility}{}{}{}{}} - {} -\iftoggle{blx@mcite} - {\blx@inputonce{blx-mcite.def}{mcite-like commands}{}{}{}{}} - {} -\RequireBibliographyStyle{\blx@bbxfile} -\RequireCitationStyle{\blx@cbxfile} -\blx@secinit -\citereset -\blx@inputonce{biblatex.cfg}{configuration file}{}{}{}{} - -% Process preamble options - -\blx@processoptions - -% Deferred setup at end of preamble - -\AtEndPreamble{% - \blx@checkoptions@global - \c@maxnames\blx@maxcitenames\relax - \c@minnames\blx@mincitenames\relax - \c@maxitems\blx@maxitems\relax - \c@minitems\blx@minitems\relax - \iftoggle{blx@firstinits} - {\ifnumequal\blx@uniquename\blx@opt@uniquename@full - {\blx@warn@conflopt{% - 'firstinits' conflicts with 'uniquename=full'.\MessageBreak - Setting 'uniquename=init'}% - \setkeys{blx@opt@pre}{uniquename=init}} - {}% - \ifnumequal\blx@uniquename\blx@opt@uniquename@allfull - {\blx@warn@conflopt{% - 'firstinits' conflicts with 'uniquename=allfull'.\MessageBreak - Setting 'uniquename=allinit}% - \setkeys{blx@opt@pre}{uniquename=allinit}} - {}% - \ifnumequal\blx@uniquename\blx@opt@uniquename@minfull - {\blx@warn@conflopt{% - 'firstinits' conflicts with 'uniquename=minfull'.\MessageBreak - Setting 'uniquename=mininit}% - \setkeys{blx@opt@pre}{uniquename=mininit}} - {}} - {}% - \nottoggle{blx@labelyear} - {\ifnumequal\blx@uniquelist\blx@opt@uniquelist@minyear - {\blx@warn@conflopt{% - 'uniquelist=minyear' requires 'labelyear'.\MessageBreak - Setting 'uniquelist=true'}% - \setkeys{blx@opt@pre}{uniquelist}} - {}} - {}} + \PassOptionsToPackage{\CurrentOption}{biblatex1}% + \PassOptionsToPackage{\CurrentOption}{biblatex2}% +} + +% Default to the Biber backend +\blx@load@version@onefalse +\ProcessOptions\relax + +\ifblx@load@backend@seen +\else + \PackageWarningNoLine{biblatex} + {% + No "backend" specified, using Biber backend.\MessageBreak + To use BibTeX, load biblatex with \MessageBreak + the "backend=bibtex" option% + } +\fi -\def\blx@checkencoding{% - \ifdef\blx@texencoding - {\blx@info@noline{% - Input encoding '\blx@texencoding' specified}} - {\ifundef\inputencodingname - {\ifundef\XeTeXrevision - {\ifundef\luatexversion - {\def\blx@texencoding{ascii}% - \blx@info@noline{% - No input encoding detected.\MessageBreak - Assuming '\blx@texencoding'}} - {\def\blx@texencoding{utf8}% - \blx@info@noline{% - LuaTeX detected.\MessageBreak - Assuming input encoding '\blx@texencoding'}}} - {\def\blx@texencoding{utf8}% - \blx@info@noline{% - XeTeX detected.\MessageBreak - Assuming input encoding '\blx@texencoding'}}} - {\ifcsdef{blx@inpenc@\inputencodingname} - {\letcs\blx@texencoding{blx@inpenc@\inputencodingname}} - {\let\blx@texencoding\inputencodingname}% - \blx@info@noline{% - Input encoding '\blx@texencoding' detected}}}% - \ifdef\blx@bibencoding - {\ifdefstring\blx@bibencoding{ascii} - {\blx@info@noline{% - Data encoding '\blx@bibencoding' specified.\MessageBreak - No need to reencode data}% - \togglefalse{blx@reencode}} - {\ifdefstring\blx@bibencoding{auto} - {\let\blx@bibencoding\blx@texencoding - \blx@info@noline{% - Automatic encoding selection.\MessageBreak - Assuming data encoding '\blx@bibencoding'} - \togglefalse{blx@reencode}} - {\ifdefstrequal\blx@bibencoding\blx@texencoding - {\blx@info@noline{% - Data encoding '\blx@bibencoding' specified.\MessageBreak - No need to reencode data}% - \togglefalse{blx@reencode}} - {\ifnumequal\blx@backend\blx@backend@biber - {\blx@info@noline{% - Data encoding '\blx@bibencoding' specified.\MessageBreak - Backend will reencode on the fly}% - \togglefalse{blx@reencode}} - {\blx@info@noline{% - Data encoding '\blx@bibencoding' specified.\MessageBreak - Reencoding not supported by backend.\MessageBreak - Falling back to reencoding with inputenc}% - \@ifpackageloaded{inputenc} - {\toggletrue{blx@reencode}} - {\@ifpackageloaded{inputenx} - {\toggletrue{blx@reencode}} - {\blx@warning@noline{% - On-the-fly data reencoding not supported by\MessageBreak - this setup. Load the 'inputenc/inputenx'\MessageBreak - package or use backend=biber. 'luainputenc'\MessageBreak - is not supported (use backend=biber instead)}% - \togglefalse{blx@reencode}}}}}}}} - {\def\blx@bibencoding{ascii}% - \blx@info@noline{% - Data encoding not specified.\MessageBreak - Assuming '\blx@bibencoding'}% - \togglefalse{blx@reencode}}% - \ifdefstring\blx@bibencoding{ascii} - {} - {\ifdefstring\blx@bibencoding{utf8} - {\ifnumless\blx@backend\blx@backend@bibtexu - {\blx@warning@noline{% - Data encoding is '\blx@bibencoding'.\MessageBreak - Use backend=biber}} - {}} - {\ifnumodd\blx@backend - {\ifnumequal\blx@backend\blx@backend@bibtexe - {\let\blx@csfencoding\blx@bibencoding} - {}} - {\blx@warning@noline{% - Data encoding is '\blx@bibencoding'.\MessageBreak - Use backend=bibtex8 or backend=biber}}}}% - \ifboolexpr{% - togl {blx@safeinputenc} - and test {\ifnumequal\blx@backend\blx@backend@biber} - and ( test {\@ifpackageloaded{inputenc}} - or - test {\@ifpackageloaded{inputenx}} ) +% Now do the loading: avoid any awkward stuff with the conditional by +% expanding first +\ifblx@load@version@one + \expandafter\@firstoftwo +\else + \expandafter\@secondoftwo +\fi + {% + % A few things not defined by v1, but defined in biblatex.def so has to be handled + \protected\long\def\DeclareDefaultSourcemap[#1]#2{}% + \protected\long\def\DeclareLabelalphaTemplate#1{}% + \protected\long\def\DeclareLabeltitle#1{}% + \RequirePackage{biblatex1}% } - {\def\blx@texencoding{ascii}% - \blx@info@noline{% - Input encoding '\blx@texencoding' forced by\MessageBreak - 'safeinputenc' option}} - {}% -} - -% Deferred last minute setup - -\AtBeginDocument{% - \blx@checkbackend{style}% - \blx@checkencoding - \if@filesw - \ifnum\blx@backend=\blx@backend@biber - \blx@ifsigned{\jobname}{bcf} - {\blx@ctrlwrite@biber} - {}% - \else - \blx@auxinit@bibtex\blx@bibfiles - \blx@ifsigned{\blx@ctrlfile@bibtex\blxauxsuffix}{bib} - {\blx@ctrlwrite@bibtex} - {}% - \fi - \ifnumless\blx@reqbiber\thr@@ - {\blx@bblinput} - {}% - \blx@maxsection\z@ - \fi - \let\blx@reqbiber\z@ - \csuse{abx@preamble}% - \blx@checkbackend{.bib file}% - \blx@inf@refsec - \blx@inf@refseg} - -\AtEndOfPackage{% - \AtBeginDocument{% - \let\do\undef - \blx@dopreamblecmds - \let\do\noexpand}} - -\endinput + {\RequirePackage{biblatex2}} + +%% Copyright (C) 2006-2011 Philipp Lehman +%% 2012 Philip Kime, Audrey Boruvka, Joseph Wright +%% +%% It may be distributed and/or modified under the conditions of +%% the LaTeX Project Public License (LPPL), either version 1.3c of +%% this license or (at your option) any later version. The latest +%% version of this license is in the file: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% This work is "maintained" (as per LPPL maintenance status) by +%% Philip Kime, Audrey Boruvka, Joseph Wright. diff --git a/Master/texmf-dist/tex/latex/biblatex/biblatex1.sty b/Master/texmf-dist/tex/latex/biblatex/biblatex1.sty new file mode 100644 index 00000000000..e672b64d927 --- /dev/null +++ b/Master/texmf-dist/tex/latex/biblatex/biblatex1.sty @@ -0,0 +1,10517 @@ +% $Id: biblatex.sty,v 1.7 2011/11/13 19:09:07 lehman stable $ + +% Copyright (c) 2006-2011 Philipp Lehman. +% +% Permission is granted to copy, distribute and/or modify this +% software under the terms of the LaTeX Project Public License +% (LPPL), version 1.3. +% +% The LPPL maintenance status of this software is +% 'author-maintained'. +% +% This software is provided 'as is', without warranty of any kind, +% either expressed or implied, including, but not limited to, the +% implied warranties of merchantability and fitness for a +% particular purpose. + +\NeedsTeXFormat{LaTeX2e}[2005/12/01] +\ProvidesPackage{biblatex1} +[\abx@date\space v\abx@version\space programmable bibliographies (bibtex) (PK/JW/AB)] + +%% Dependencies + +\RequirePackage{etoolbox} +\RequirePackage{keyval} +\RequirePackage{logreq} +\RequirePackage{ifthen} +\RequirePackage{url} + +\@ifpackagelater{etoolbox}{2010/11/29} + {} + {\PackageError{biblatex} + {Outdated 'etoolbox' package} + {Upgrade to etoolbox v2.1 (2010/11/29) or later.\MessageBreak + I found: '\csuse{ver@etoolbox.sty}'.\MessageBreak + This is a fatal error. I'm aborting now.}% + \endinput} + +%% Category codes + +\def\blx@docatcodes{% + \do\=\do\<\do\>\do\-\do\"\do\'\do\`\do\.% + \do\,\do\;\do\:\do\!\do\?\do\/} +\def\do#1{\catcode\number`#1=\the\catcode`#1\relax} +\edef\blx@catcodes{\blx@docatcodes\do\^\do\~\do\&\do\|} +\let\do\noexpand + +\def\blx@saneccodes{% + \catcode`\~=\active + \let\do\@makeother + \blx@docatcodes + \let\do\noexpand} + +\blx@saneccodes +\catcode`\&=3 +\catcode`\|=3 +\catcode`\^=7 +\def\blx@nl{^^J} + +%% Compatibility + +\AtEndPreamble{% + \def\do#1{% + \@ifpackageloaded{#1} + {\blx@error + {Incompatible package '#1'} + {The '#1' package and biblatex are incompatible}} + {}}% + \docsvlist{% + amsrefs,apacite,babelbib,backref,bibtopic,bibunits,chapterbib, + cite,citeref,drftcite,footbib,inlinebib,jurabib,mcite,mciteplus, + mlbib,multibbl,multibib,natbib,opcit,overcite,splitbib,ucs}% + \@ifpackageloaded{babel} + {\iftoggle{blx@autolang} + {\blx@mkbabel} + {\blx@mknobabel}} + {\blx@mknobabel}% + \csuse{abx@extras@\blx@languagename}% + \csuse{abx@strings@\blx@languagename}% + \undef\blx@mkbabel + \undef\blx@mknobabel + \ifnum\blx@hyperref=\z@ + \blx@mknohyperref + \else + \@ifpackageloaded{hyperref} + {\blx@mkhyperref} + {\ifnum\blx@hyperref=\@ne + \blx@warning@noline{% + Missing 'hyperref' package.\MessageBreak + Setting hyperref=false}% + \fi + \blx@mknohyperref}% + \fi + \providecommand*{\nolinkurl}{\url}% + \undef\blx@mkhyperref + \undef\blx@mknohyperref + \ifundef\TE@hook + {\let\TE@hook\@empty + \toggletrue{blx@tempa}% + \def\do#1{% + \patchcmd#1% + {\let\isundefined\TE@undef} + {\let\isundefined\TE@undef\TE@hook} + {\togglefalse{blx@tempa}\listbreak} + {}}% + \docsvlist{% + \ifthenelse,% ifthen + \org@ifthenelse,% babel + \HyOrg@ifthenelse,% hyperref + \NROrg@ifthenelse}% nameref + \iftoggle{blx@tempa} + {\blx@err@patch{'ifthen' package}} + {}} + {}% + \appto\TE@hook{\blx@TE@hook}% + \toggletrue{blx@tempa}% + \def\do#1{% + \patchcmd#1% + {\color@begingroup} + {\color@begingroup\toggletrue{blx@footnote}} + {\togglefalse{blx@tempa}\listbreak} + {}}% + \docsvlist{% + \@footnotetext,% latex + \H@@footnotetext,% hyperref + \V@@footnotetext,% fancyvrb + \scr@saved@footnotetext,% koma-script 3.x + \l@dold@footnotetext,% ledmac + \l@doldold@footnotetext,% ledmac + \@fntORI}% frenchle + \iftoggle{blx@tempa}% ams classes + {\patchcmd\@footnotetext + {\@makefntext} + {\toggletrue{blx@footnote}\@makefntext} + {\togglefalse{blx@tempa}} + {}} + {}% + \@ifclassloaded{memoir} + {\def\do#1{% + \patchcmd#1% + {\color@begingroup} + {\color@begingroup\toggletrue{blx@footnote}} + {} + {}}% + \docsvlist{% + \m@mold@footnotetext,% + \@plainfootnotetext,% + \@twocolfootnotetext,% + \@threecolfootnotetext,% + \@parafootnotetext}% + \def\do#1{% + \patchcmd#1% + {\color@begingroup\@makefntext} + {\color@begingroup\toggletrue{blx@footnote}\@makefntext} + {} + {}}% + \docsvlist{% + \@footnotetext,% patch twice + \@plainfootnotetext}} + {}% + \iftoggle{blx@tempa} + {\blx@warning@noline{% + Patching footnotes failed.\MessageBreak + Footnote detection will not work}} + {}% + \@ifpackageloaded{endnotes} + {\patchcmd\theendnotes + {\enoteformat} + {\toggletrue{blx@footnote}\enoteformat} + {} + {\blx@err@patch{'endnotes' package}}} + {}% + \@ifpackageloaded{bigfoot} + {\apptocmd\@makefnstartbox + {\toggletrue{blx@footnote}} + {} + {\blx@err@patch{'bigfoot' package}}} + {}% + \@ifpackageloaded{showkeys} + {\ifdef\SK@ + {\AtEveryBibitem{\SK@\SK@@label{\thefield{entrykey}}}% + \AtEveryLositem{\SK@\SK@@label{\thefield{entrykey}}}% + \ifundef\SK@cite % = 'notcite' disabled + {\AtEveryCitekey{\SK@\SK@@ref{\thefield{entrykey}}}} + {}} + {}} + {}% + \apptocmd\@floatboxreset + {\boolfalse{citetracker}% + \boolfalse{pagetracker}} + {} + {\blx@err@patch{floats}}% + \ifdef\TX@endtabularx % tabularx/memoir + {\pretocmd\TX@endtabularx + {\addtocounter{tabx@nest}{1}}% track nestes tabularx environments + {} + {\blx@err@patch{'tabularx'}}% + % no need to conditionalise on top-level tabx as the search/replace + % will only match once anyway + \patchcmd\TX@endtabularx + {\edef\TX@ckpt{\cl@@ckpt}} + {\edef\TX@ckpt{\cl@@ckpt\abx@resttrackers}% + \abx@savetrackers} + {} + {\blx@err@patch{'tabularx'}}% + \apptocmd\TX@endtabularx + {\ifnum\value{tabx@nest}=1% only clear trackers for top-level tabularx + \abx@cleartrackers + \fi + \addtocounter{tabx@nest}{-1}} + {} + {\blx@err@patch{'tabularx'}}} + {}% + \@ifpackageloaded{csquotes} + {\@ifpackagelater{csquotes}{2009/05/30} + {} + {\blx@error + {Outdated 'csquotes' package} + {Upgrade to csquotes v4.4 (2009/05/30) or later.\MessageBreak + I found: '\csuse{ver@csquotes.sty}'}}% + \BlockquoteDisable{\let\blx@thecheckpunct\@gobble}% + \@ifpackagelater{csquotes}{2009/08/27} + {\appto\@blockquote@prehook{\abx@savetrackers}% + \appto\@blockquote@posthook{\abx@resttrackers\abx@cleartrackers}} + {}% + \@ifpackagelater{csquotes}{2010/06/09} + {} + {\newcommand*{\@quotereset}{}\newcount\@quotereset}} + {\@ifpackageloaded{babel} + {\blx@warning@noline{% + 'babel' detected but 'csquotes' missing.\MessageBreak + Loading 'csquotes' recommended}} + {}% + \newcommand*{\@quotelevel}{}% + \newcount\@quotelevel + \newcommand*{\@quotereset}{}% + \newcount\@quotereset + \newcommand*{\@setquotesfcodes}{}% + \let\@setquotesfcodes\relax + \newrobustcmd*{\initoquote}{\@quotelevel\@ne}% + \newrobustcmd*{\initiquote}{\@quotelevel\tw@}% + \newrobustcmd*{\textooquote}{``}% + \newrobustcmd*{\textcoquote}{''}% + \newrobustcmd*{\textoiquote}{`\relax}% block ligs + \newrobustcmd*{\textciquote}{'\relax}% block ligs + \newrobustcmd*{\enquote}{\@ifstar\blx@enquote@ii\blx@enquote}% + \def\blx@enquote{% + \ifnum\@quotelevel>\z@ + \expandafter\blx@enquote@ii + \else + \expandafter\blx@enquote@i + \fi}% + \long\def\blx@enquote@i#1{% + \begingroup\initoquote + \textooquote#1\textcoquote + \endgroup}% + \long\def\blx@enquote@ii#1{% + \begingroup\initiquote + \textoiquote#1\textciquote + \endgroup}% + \appto\blx@setsfcodes{% + \sfcode`\`=\z@ + \sfcode`\'=\z@}}% + \let\do\noexpand} + +\begingroup +\@makeother\# +% \relax: gobble newline -> titletoc.sty +\AtEndPreamble{% + \addtocontents{toc}{% + \boolfalse{citerequest}% + \boolfalse{citetracker}% + \boolfalse{pagetracker}% + \boolfalse{backtracker}\relax}% + \addtocontents{lof}{% + \boolfalse{citerequest}% + \boolfalse{citetracker}% + \boolfalse{pagetracker}% + \boolfalse{backtracker}\relax}% + \addtocontents{lot}{% + \boolfalse{citerequest}% + \boolfalse{citetracker}% + \boolfalse{pagetracker}% + \boolfalse{backtracker}\relax}% + \patchcmd\addtocontents + {\string\@writefile} + {\string\@writefile{#1}{\defcounter{refsection}{\the\c@refsection}\relax}% + \string\@writefile} + {} + {\blx@err@patch{\string\addtocontents}}} +\endgroup + +% trick hyperref into believing we're natbib +\let\NAT@parse\@empty +% trick showkeys into believing we're havard +\let\HAR@checkdef\@empty + +%% Allocation + +\providecommand{\@gobblefive}[5]{} + +% Counter to track nested tabularx environemnts so we don't +% try to patch the commands more than once below as this undefs some +% macros and an error is thrown +\newcounter{tabx@nest} +\setcounter{tabx@nest}{0} + +\newcounter{listtotal} +\def\thelisttotal{\the\c@listtotal} +\newcounter{listcount} +\def\thelistcount{\the\c@listcount} +\newcounter{liststart} +\def\theliststart{\the\c@liststart} +\newcounter{liststop} +\def\theliststop{\the\c@liststop} +\newcounter{citecount} +\def\thecitecount{\the\c@citecount} +\newcounter{citetotal} +\def\thecitetotal{\the\c@citetotal} +\newcounter{multicitecount} +\def\themulticitecount{\the\c@multicitecount} +\newcounter{multicitetotal} +\def\themulticitetotal{\the\c@multicitetotal} +\newcounter{instcount} +\def\theinstcount{\the\c@instcount} +\newcounter{maxnames} +\def\themaxnames{\the\c@maxnames} +\newcounter{minnames} +\def\theminnames{\the\c@minnames} +\newcounter{maxitems} +\def\themaxitems{\the\c@maxitems} +\newcounter{minitems} +\def\theminitems{\the\c@minitems} +\newcounter{citecounter} +\def\thecitecount{\the\c@citecounter} +\newcounter{savedcitecounter} +\def\thecitecount{\the\c@savedcitecounter} +\newcounter{uniquelist} +\def\theuniquelist{\the\c@uniquelist} +\newcounter{uniquename} +\def\theuniquename{\the\c@uniquename} +\newcounter{refsection} +\def\therefsection{\the\c@refsection} +\newcounter{refsegment} +\def\therefsegment{\the\c@refsegment} +\newcounter{maxextrayear} +\def\themaxextrayear{\the\c@maxextrayear} +\newcounter{maxextraalpha} +\def\themaxextraalpha{\the\c@maxextraalpha} +\newcounter{abbrvpenalty} +\def\theabbrvpenalty{\the\c@abbrvpenalty} +\newcounter{highnamepenalty} +\def\thehighnamepenalty{\the\c@highnamepenalty} +\newcounter{lownamepenalty} +\def\thelownamepenalty{\the\c@lownamepenalty} +\newcounter{maxparens} +\def\themaxparens{\the\c@maxparens} +\newcounter{parenlevel} +\def\theparenlevel{\the\c@parenlevel} + +\newcount\blx@tempcnta +\newcount\blx@tempcntb +\newcount\blx@tempcntc +\newcount\blx@maxsection +\newcount\blx@maxsegment +\newcount\blx@notetype +\newcount\blx@parenlevel@text +\newcount\blx@parenlevel@foot + +\def\blx@backend{0} +\def\blx@uniquename{0} +\def\blx@uniquelist{0} +\def\blx@maxbibnames{0} +\def\blx@minbibnames{0} +\def\blx@maxcitenames{0} +\def\blx@mincitenames{0} +\def\blx@maxbibnames@type{\blx@maxbibnames} +\def\blx@minbibnames@type{\blx@minbibnames} +\def\blx@maxcitenames@type{\blx@maxcitenames} +\def\blx@mincitenames@type{\blx@mincitenames} +\def\blx@maxalphanames{0} +\def\blx@minalphanames{0} +\def\blx@maxitems{0} +\def\blx@minitems{0} +\def\blx@maxitems@type{\blx@maxitems} +\def\blx@minitems@type{\blx@minitems} + +\newlength{\labelnumberwidth} +\newlength{\labelalphawidth} +\newlength{\shorthandwidth} +\newlength{\biblabelsep} +\ifdef\bibitemsep % memoir + {} + {\newlength{\bibitemsep}} +\newlength{\bibnamesep} +\newlength{\bibinitsep} +\newlength{\bibparsep} +\newlength{\bibhang} + +\newbool{citetracker} +\newbool{pagetracker} +\newbool{backtracker} +\newbool{citerequest} +\booltrue{citerequest} + +\newtoggle{blx@tempa} +\newtoggle{blx@tempb} +\newtoggle{blx@runltx} +\newtoggle{blx@runbtx} +\newtoggle{blx@block} +\newtoggle{blx@unit} +\newtoggle{blx@skipentry} +\newtoggle{blx@insert} +\newtoggle{blx@lastins} +\newtoggle{blx@debug} +\newtoggle{blx@sortcase} +\newtoggle{blx@sortupper} +\newtoggle{blx@autolang} +\newtoggle{blx@clearlang} +\newtoggle{blx@defernumbers} +\newtoggle{blx@omitnumbers} +\newtoggle{blx@footnote} +\newtoggle{blx@labelalpha} +\newtoggle{blx@labelnumber} +\newtoggle{blx@labelyear} +\newtoggle{blx@natbib} +\newtoggle{blx@mcite} +\newtoggle{blx@loadfiles} +\newtoggle{blx@singletitle} +\newtoggle{blx@terseinits}% BibTeX only +\newtoggle{blx@firstinits} +\newtoggle{blx@useauthor} +\newtoggle{blx@useeditor} +\newtoggle{blx@usetranslator} +\newtoggle{blx@useprefix} +\newtoggle{blx@addset} +\newtoggle{blx@setonly} +\newtoggle{blx@dataonly} +\newtoggle{blx@skipbib} +\newtoggle{blx@skiplos} +\newtoggle{blx@skiplab} +\newtoggle{blx@citation} +\newtoggle{blx@bibliography} +\newtoggle{blx@reencode} +\newtoggle{blx@citeindex} +\newtoggle{blx@bibindex} + +\newread\blx@auxin +\newwrite\blx@auxout + +\def\blx@onlypreamble#1{% + \gappto\blx@dopreamblecmds{\do#1}} + +\def\blx@dopreamblecmds{% + \do\blx@dopreamblecmds + \do\blx@onlypreamble} + +%% Initialization + +\def\blx@blxinit{% + \let\blx@blxinit\relax + \blx@initunit} + +\edef\blx@auxfile@bibtex{\jobname} +\let\blx@auxout@bibtex\@mainaux +\newcommand*{\labelalphaothers}{+} +\newcommand*{\sortalphaothers}{\labelalphaothers} +\newcommand*{\blxauxsuffix}{-blx} + +\begingroup +\def\blx@tempa#1"#2{% + #1\ifx#2\@empty\else + \expandafter\blx@tempa + \fi#2} +\edef\blx@ctrlfile@bibtex{% + \noexpand\blx@tempa + \expandafter\blx@tempa\jobname"\@empty + \space\noexpand\@empty} +\def\blx@tempa#1 #2{% + #1\ifx#2\@empty\else + \string_\expandafter\blx@tempa + \fi#2} +\xdef\blx@ctrlfile@bibtex{\blx@ctrlfile@bibtex} +\endgroup + +\def\blx@secinit{% + \ifcsundef{blx@sort@\the\c@refsection} + {\global\cslet{blx@sort@\the\c@refsection}\@empty} + {}% + \ifcsundef{blx@sbib@\the\c@refsection} + {\global\cslet{blx@sbib@\the\c@refsection}\@empty} + {}% + \ifcsundef{blx@bsee@\the\c@refsection} + {\global\cslet{blx@bsee@\the\c@refsection}\@empty} + {}% + \ifcsundef{blx@fsee@\the\c@refsection} + {\global\cslet{blx@fsee@\the\c@refsection}\@empty} + {}% + \ifcsundef{blx@losh@\the\c@refsection} + {\global\cslet{blx@losh@\the\c@refsection}\@empty} + {}% + \blx@ibidreset@force + \blx@idemreset@force + \blx@opcitreset@force + \blx@loccitreset@force + \ifcsundef{blx@segm@\the\c@refsection @\the\c@refsegment} + {\global\cslet{blx@segm@\the\c@refsection @\the\c@refsegment}\@empty} + {}} + +%% Auxiliary commands + +\protected\def\blx@safe@actives{% + \let\blx@if@safe@actives\if@safe@actives + \let\if@safe@actives\iftrue} + +\protected\def\blx@rest@actives{% + \let\if@safe@actives\blx@if@safe@actives} + +\protected\def\blx@regimc#1{% + \xappto\blx@blxinit{% + \let\noexpand#1\expandafter\noexpand\csname + blx@imc@\expandafter\@gobble\string#1\endcsname}} + +\protected\def\blx@regimcs#1{\blx@regimcs@i#1&} +\def\blx@regimcs@i#1{% + \ifx#1&\else + \blx@regimc#1% + \expandafter\blx@regimcs@i + \fi} + +% {<field>} => \do{<item1>}\do{<item2>}... + +\def\blx@imc@docsvfield#1{% + \blx@imc@iffieldundef{#1} + {} + {\expandafter\expandafter\expandafter\docsvlist + \expandafter\expandafter\expandafter{% + \csname abx@field@#1\endcsname}}} + +% {<handler>}{<field>} => <handler>{<item1>}<handler>{<item2>}... + +\def\blx@imc@forcsvfield#1#2{% + \blx@imc@iffieldundef{#2} + {} + {\expandafter\expandafter\expandafter\blx@imc@forcsvfield@i + \expandafter\expandafter\expandafter{% + \csname abx@field@#2\endcsname}{#1}}} + +\def\blx@imc@forcsvfield@i#1#2{\forcsvlist{#2}{#1}} + +\blx@regimcs{\docsvfield \forcsvfield} + +% {<list>|<listmacro>} + +\protected\long\def\blx@listloop#1{% + \expandafter\blx@listloop@i#1|&} +\long\def\blx@listloop@i#1|{% + \ifblank{#1} + {\blx@break} + {\blx@do{#1}\blx@listloop@i}} + +\long\def\blx@break#1&{% + \blx@done + \undef\blx@do + \undef\blx@done} + +% {<listmacro>}{<listcsname>} => matches in <listmacro> + +\protected\def\blx@filter#1#2{% + \def\do##1{% + \ifinlistcs{##1}{#2} + {\listadd#1{##1}} + {}}% + \blx@runfilter#1} + +% {<listmacro>}{<listcsname>} => matches in <listmacro> +% Slightly odd use of filtering to do citation sorting. +% Same as blx@filter but it keeps \tempcnta in step with the +% resulting number of things in the filtered list. This is +% because \tempcnta is used to set citetotal - this use +% of filtering for cite sorting has the side-effect of stripping +% duplicated like \cite{foo,foo} but we need then to keep citetotal +% in sync. + +\protected\def\blx@filtercitesort#1#2{% + \blx@tempcnta\z@ + \def\do##1{% + \ifinlistcs{##1}{#2} + {\listadd#1{##1}% + \advance\blx@tempcnta\@ne} + {}}% + \blx@runfilter#1} + +% {<listmacro>}{<listcsname>} => neg. matches in <listmacro> + +\protected\def\blx@notfilter#1#2{% + \def\do##1{% + \ifinlistcs{##1}{#2} + {} + {\listadd#1{##1}}}% + \blx@runfilter#1} + +\def\blx@runfilter#1{% + \begingroup\edef#1{\endgroup + \unexpanded{\let#1\@empty\dolistloop}{#1}}% + #1\let\do\noexpand} + +% {<code>}{<string>} => <code>{<string>} + +\protected\def\blx@xsanitizeafter#1#2{% + \begingroup + \abx@hook@xsanitize + \def\blx@tempa{\endgroup#1}% + \edef\blx@tempb{#2}% + \expandafter\blx@tempa + \expandafter{\detokenize\expandafter{\blx@tempb}}} + +\def\abx@hook@xsanitize{% + \blx@safe@actives + \let\protect\string} + +% {<code>}{<string>} => <code>{<string>} + +\begingroup +\catcode`\<=\active +\catcode`\>=\active +\catcode`\&=\active +\catcode`\"=\active +\catcode`\'=\active +\protected\gdef\blx@xmlsanitizeafter#1#2{% + \begingroup + \abx@hook@xsanitize + \def\blx@tempa{\endgroup#1}% + \edef\blx@tempb{#2}% + \let\do\@makeother + \dospecials + \catcode`\<=\active + \catcode`\>=\active + \catcode`\&=\active + \catcode`\"=\active + \catcode`\'=\active + \edef<{\string<\string;}% + \edef>{\string>\string;}% + \edef&{\string&\string;}% + \edef"{\string"\string;}% + \edef'{\string&apos\string;}% + \endlinechar\m@ne + \everyeof{\noexpand}% + \edef\blx@tempb{\scantokens\expandafter{\blx@tempb}}% + \expandafter\blx@tempa + \expandafter{\detokenize\expandafter{\blx@tempb}}} +\endgroup + +% {<file>}{<message>}{<preload>}{<postload>}{<success>}{<failure>} + +\protected\long\def\blx@inputonce#1#2#3#4#5#6{% + \ifcsundef{blx@file@#1} + {\blx@info@noline{Trying to load #2..}% + \IfFileExists{#1} + {\blx@info@noline{... file '#1' found}% + \listxadd\blx@list@req@stat{#1}% + #3\@@input\@filef@und#4#5} + {\blx@info@noline{... file '#1' not found}#6}% + \global\csdef{blx@file@#1}{}% + \@addtofilelist{#1}} + {#5}} + +% {<write>}{<precode>}{<string>} + +\protected\def\blx@auxwrite#1#2#3{% + \if@filesw + \begingroup + \blx@safe@actives + \let\protect\string + #2% + \immediate\write#1{#3}% + \endgroup + \fi} + +\def\blx@auxinit@bibtex#1{% + \blx@auxwrite\blx@auxout@bibtex + {\def\do##1{,\blx@stripbib{##1}}} + {\ifx\blx@auxout@bibtex\@mainaux + \else + \blx@msg@aux + \fi + \string\bibstyle{biblatex}\blx@nl + \string\bibdata{% + \blx@ctrlfile@bibtex\blxauxsuffix + \ifx#1\@empty + \else + \dolistloop#1% + \fi}\blx@nl + \string\citation{biblatex-control}}} + +% {<file>}{<signature>}{<true>}{<false>} + +\def\blx@ifsigned#1#2{% + \begingroup + \let\blx@tempa\@firstoftwo + \edef\blx@tempb{\csuse{blx@sig@#2}}% + \edef\blx@tempb{\detokenize\expandafter{\blx@tempb}}% + \openin\blx@auxin #1.#2\relax + \ifeof\blx@auxin + \else + \endlinechar\m@ne + \readline\blx@auxin to \blx@tempc + \ifeof\blx@auxin + \else + \ifx\blx@tempb\blx@tempc + \readline\blx@auxin to \blx@tempc + \edef\blx@tempb{\csuse{blx@ver@#2}}% + \edef\blx@tempb{\detokenize\expandafter{\blx@tempb}}% + \ifx\blx@tempb\blx@tempc + \else + \blx@warning@noline{% + File '#1.#2' created by wrong version} + \fi + \else + \blx@error + {File '#1.#2' not created by biblatex} + {This file was apparently not created by biblatex. + Rename it or\MessageBreak move it to a location were + TeX will not find it. If this error\MessageBreak + persists, consider redefining \string\blxauxsuffix.% + See the biblatex\MessageBreak manual for details}% + \let\blx@tempa\@secondoftwo + \fi + \fi + \fi + \closein\blx@auxin + \expandafter\endgroup\blx@tempa} + +\def\blx@sig@bib{@Comment{$ biblatex control file $}} +\edef\blx@ver@bib{@Comment{$ biblatex version \blx@bblversion\space $}} +\edef\blx@sig@aux{\@percentchar\space $ biblatex auxiliary file $} +\edef\blx@ver@aux{\@percentchar\space$ biblatex version \blx@bblversion\space $} +\let\blx@sig@bbl\blx@sig@aux +\let\blx@ver@bbl\blx@ver@aux +\edef\blx@sig@bcf{\detokenize{<?xml version="1.0" encoding="UTF-8"?>}} +\edef\blx@ver@bcf{% + \detokenize{<bcf:controlfile version="}\blx@bblversion + \detokenize{" xmlns:bcf="https://sourceforge.net/projects/biblatex">}} + +\edef\blx@msg@aux{% + \blx@sig@aux\blx@nl + \blx@ver@aux\blx@nl + \@percentchar\space Do not modify this file!\blx@nl + \@percentchar\blx@nl + \@percentchar\space This is an auxiliary file + used by the 'biblatex' package.\blx@nl + \@percentchar\space This file may safely be deleted. + It will be recreated as\blx@nl + \@percentchar\space required.\blx@nl + \@percentchar\blx@nl\string\relax\blx@nl} +\edef\blx@msg@bib{% + \blx@sig@bib\blx@nl + \blx@ver@bib\blx@nl + Do not modify this file!\blx@nl\blx@nl + This is an auxiliary file used + by the 'biblatex' package.\blx@nl + This file may safely be deleted. + It will be recreated as\blx@nl + required.\blx@nl\blx@nl} + +% {<true>}{<false>} + +\newrobustcmd*{\lbx@ifutfinput}{\ifboolexpr{% + test {\ifdefstring\inputencodingname{utf8}} + or + test {\ifdefstring\inputencodingname{utf8x}} + or + test {\ifdefstring\inputencodingname{lutf8}} + or + ( test {\ifundef\inputencodingname} + and + ( not test {\ifundef\XeTeXrevision} + or + not test {\ifundef\luatexversion} + ) + ) +}} + +%% User feedback + +\protected\def\blx@error#1#2{% + \begingroup + \blx@safe@actives + \PackageError{biblatex}{#1}{#2.}% + \endgroup} + +\protected\def\blx@warning#1{% + \begingroup + \blx@safe@actives + \PackageWarning{biblatex}{#1\blx@noline}% + \endgroup} +\protected\def\blx@warning@noline#1{% + \begingroup + \blx@safe@actives + \PackageWarningNoLine{biblatex}{#1}% + \endgroup} +\protected\def\blx@warning@entry#1{% + \ifdef\abx@field@entrykey + {\blx@warning{#1\MessageBreak at entry '\abx@field@entrykey'}} + {\blx@warning{#1}}} + +\protected\def\blx@info#1{% + \begingroup + \blx@safe@actives + \PackageInfo{biblatex}{#1\blx@noline}% + \endgroup} +\def\blx@info@noline#1{% + \begingroup + \blx@safe@actives + \PackageInfo{biblatex}{#1\@gobble}% + \endgroup} + +\let\blx@noline\@gobble +\AtEndOfPackage{\let\blx@noline\@empty} +\def\blx@imc@BibliographyWarning{\blx@warning@entry} +\blx@regimc\BibliographyWarning + +\protected\def\abx@missing#1{% + \mbox{\reset@font\bfseries#1}} + +\def\blx@err@patch#1{% + \blx@error + {Patching #1 failed} + {This is an internal issue typically caused by a + conflict\MessageBreak between biblatex and some + other package. Modifying\MessageBreak the package + loading order may fix the problem}} + +\def\blx@err@nolang#1{% + \blx@error + {Language '#1' not found} + {The localization module for '#1' could not be found}} + +\def\blx@err@invarg#1#2{% + \blx@error + {Argument '#1' invalid} + {\ifblank{#2} + {The argument you have supplied is invalid.\MessageBreak + See the biblatex manual for details} + {#2}}} + +\def\blx@err@invopt#1#2{% + \blx@error + {Option '#1' invalid} + {\ifblank{#2} + {The option you have supplied is invalid.\MessageBreak + See the biblatex manual for valid option keys and + possible values} + {#2}}} + +\def\blx@err@confopt#1#2{% + \blx@error + {Conflicting options\ifblank{#1}{}{ (#1)}} + {\ifblank{#2} + {The option you have supplied conflicts with another one.\MessageBreak + See the biblatex manual for valid option keys and possible values} + {#2}}} + +\def\blx@err@optdef#1{% + \blx@error + {Conflicting options} + {The option '#1' is already defined}} + +\def\blx@err@nodocdiv#1{% + \blx@error + {\@backslashchar#1 not provided by class} + {The document class does not seems to support #1s}} + +\def\blx@err@nosec#1{% + \blx@error + {Section '#1' not found} + {The reference section '#1' could not be found}} + +\def\blx@err@secfirst{% + \blx@error + {'section' not first filter} + {When passing multiple filter options, + the 'section' filter must be given first}} + +\protected\def\blx@err@nestcite{% + \blx@error + {Nested citation command} + {Citation commands may not be nested}} + +\def\blx@err@nestenv#1{% + \blx@error + {Nested '#1' environment} + {This environment may not be nested}} + +\protected\def\blx@err@citecmd#1{% + \begingroup + \escapechar\m@ne + \blx@error + {Command '\@backslashchar\string#1' undefined} + {The citation command '\@backslashchar\string#1' + has not been defined\MessageBreak by the + selected citation style}% + \endgroup} + +\def\blx@err@endnote#1{% + \blx@error + {Missing or incomplete endnote support} + {There does not seem to be endnote support available\MessageBreak + or the available support is incomplete.\MessageBreak + If you continue, I will fall back to '\string#1'}% + #1} + +\def\blx@err@matchparen#1{% + \blx@error + {Unbalanced parentheses or brackets} + {\iftoggle{blx@footnote}{#1 in foot or endnote}{#1}.\MessageBreak + This error is triggered if \string\bibopenparen\space and + \string\bibcloseparen\MessageBreak or + \string\bibopenbracket\space and \string\bibclosebracket\space + are unbalanced\MessageBreak or mismatched}} + +\def\blx@err@nestparen#1{% + \blx@error + {Too deeply nested parentheses or brackets} + {#1 nested too deeply% + \iftoggle{blx@footnote}{\space in foot or endnote}{}.\MessageBreak + This error may also be triggered if \string\mkbibparens\MessageBreak + or \string\mkbibbrackets\space are nested too deeply}} + +\def\blx@err@filter{% + \blx@error + {Invalid filter expression} + {The filter expression you have supplied is invalid.\MessageBreak + See the biblatex manual for details}} + +\def\blx@warn@nohyph#1{% + \blx@warning{No hyphenation patterns for '#1'}} + +\protected\def\blx@warn@citecmd#1#2{% + \blx@warning{% + '\string#1' not defined by citation style.\MessageBreak + Falling back to '\string#2'}% + #2} + +\protected\def\blx@warn@nostring#1{% + \blx@warning@entry{Bibliography string '#1' undefined}% + \abx@missing{#1}} + +\def\blx@warn@conflopt#1{% + \blx@warning{Conflicting options.\MessageBreak#1}} + +\def\blx@warn@depropt#1{% + \blx@warning{Deprecated option.\MessageBreak Ignoring '#1'}} + +\def\blx@warn@bibempty{% + \@latex@warning{Empty bibliography}} + +\def\blx@warn@losempty{% + \@latex@warning{Empty list of shorthands}} + +\def\blx@inf@refsec{% + \blx@info{Reference section=\the\c@refsection}}% + +\def\blx@inf@refseg{% + \ifnum\c@refsection=\z@ + \blx@info{Reference segment=\the\c@refsegment}% + \else + \blx@info{% + Reference section/segment=% + \the\c@refsection/\the\c@refsegment}% + \fi} + +\def\blx@inf@creset{% + \blx@info{Resetting trackers}}% + +\def\blx@msg@cundef#1{% + Citation '#1' undefined} +\def\blx@msg@cundefon#1{% + Citation '#1' on page \the\c@page\space undefined} + +\newrobustcmd*{\RequireBiber}[1][2]{% + \ifnumgreater{#1}\blx@reqbiber + {\numgdef\blx@reqbiber{#1}} + {}} +\@onlypreamble\RequireBiber +\let\blx@reqbiber\z@ + +\def\blx@checkbackend#1{% + \ifnumequal\blx@backend\blx@backend@biber + {} + {\ifcase\blx@reqbiber + \or + \blx@info@noline{% + backend=biber recommended by #1}% + \or + \blx@warning@noline{% + backend=biber required by #1.\MessageBreak + Some features may not work properly}% + \else + \blx@error + {backend=biber required by #1} + {The selected style or one of the .bib files + requires backend=biber.\MessageBreak It will + not work at all with any other backend}% + \fi}} + +% \blx@list@active active aux files (basename) +% [internal list] +% \blx@list@inactive inactive aux files (basename) +% [internal list] +% \blx@list@bibfiles@<auxfile> aux file -> bib file mapping (refsections) +% aux file (basename) -> bib files (full) +% [internal list] + +\let\blx@list@active\@empty +\let\blx@list@inactive\@empty +\listeadd\blx@list@inactive{\jobname} + +\protected\def\blx@regbibfiles#1#2{% + \forlistloop{\blx@regbibfile{#1}}{#2}} + +\def\blx@regbibfile#1#2{% + \ifcsundef{blx@res@loca@#2} + {\blx@regbibfile@i{#1}{#2}} + {\ifcsstring{blx@res@loca@#2}{local} + {\blx@regbibfile@i{#1}{#2}} + {}}} + +\def\blx@regbibfile@i#1#2{% + \ifinlistcs{#2}{blx@list@bibfiles@#1} + {} + {\listcsxadd{blx@list@bibfiles@#1}{#2}}} + +\def\blx@check@logreq{% + \begingroup + \ifnum\blx@backend=\blx@backend@biber + \ltxrequest{biblatex}{{\iftoggle{blx@runltx}{1}{0}}}{% + \provides[type=dynamic]{ + \file{\jobname.bcf} + } + \requires[type=dynamic]{ + \file{\jobname.bbl} + } + \ifdef\blx@list@req@edit + {\requires[type=editable]{ + \forlistloop\file\blx@list@req@edit + }} + {} + \ifdef\blx@list@req@stat + {\requires[type=static]{ + \forlistloop\file\blx@list@req@stat + }} + {} + }% + \logrequest[package=biblatex,priority=5,active={{\iftoggle{blx@runbtx}{1}{0}}}]{% + \generic{biber} + \cmdline{ + \binary{biber} + \infile{\jobname} + } + \input{ + \file{\jobname.bcf} + } + \output{ + \file{\jobname.bbl} + } + \provides[type=dynamic]{ + \file{\jobname.bbl} + } + \requires[type=dynamic]{ + \file{\jobname.bcf} + } + \ifcsdef{blx@list@bibfiles@\jobname} + {\requires[type=editable]{ + \def\do{\file} + \dolistcsloop{blx@list@bibfiles@\jobname} + }} + {} + }% + \else + \ltxrequest{biblatex}{{\iftoggle{blx@runltx}{1}{0}}}{% + \provides[type=dynamic]{ + \def\do##1{\file{##1.aux}} + \dolistloop\blx@list@inactive + \file{\blx@ctrlfile@bibtex\blxauxsuffix.bib} + } + \requires[type=dynamic]{ + \def\do##1{\file{##1.bbl}} + \dolistloop\blx@list@inactive + } + \ifdef\blx@list@req@edit + {\requires[type=editable]{ + \forlistloop\file\blx@list@req@edit + }} + {} + \ifdef\blx@list@req@stat + {\requires[type=static]{ + \forlistloop\file\blx@list@req@stat + }} + {} + }% + \def\do##1{% + \ifinlist{##1}{\blx@list@active} + {\blx@logreq@bibtex{1}{##1}} + {\blx@logreq@bibtex{0}{##1}}}% + \dolistloop\blx@list@inactive + \fi + \endgroup} + +\def\blx@logreq@bibtex#1#2{% + \logrequest[package=biblatex,priority=5,active=#1]{% + \generic{bibtex} + \cmdline{% + \ifcase\blx@backend + \binary{bibtex} + \option{-min-crossrefs \blx@mincrossrefs} + \or + \binary{bibtex8} + \option{--wolfgang} + \option{--min\string_crossrefs \blx@mincrossrefs} + \ifdef\blx@csfencoding + {\option{--csfile \blx@csfencoding.csf}} + {}% + \or + \binary{bibtexu} + \option{--wolfgang} + \option{--min\string_crossrefs \blx@mincrossrefs} + \fi + \infile{#2} + } + \input{ + \file{#2.aux} + } + \output{ + \file{#2.bbl} + } + \provides[type=dynamic]{ + \file{#2.bbl} + } + \requires[type=dynamic]{ + \file{#2.aux} + \file{\blx@ctrlfile@bibtex\blxauxsuffix.bib} + } + \requires[type=editable]{ + \ifcsdef{blx@list@bibfiles@#2} + {\def\do{\file} + \dolistcsloop{blx@list@bibfiles@#2}} + {} + } + \requires[type=static]{ + \file{biblatex.bst} + \ifnum\blx@backend=\blx@backend@bibtexe + \ifdef\blx@csfencoding + {\file{\blx@csfencoding.csf}} + {}% + \fi + } + }% +} + +\def\blx@logreq@active#1{% + \ifnum\blx@backend=\blx@backend@biber + \else + \xifinlist{\blx@auxfile@bibtex}{\blx@list@active} + {} + {\listxadd\blx@list@active{\blx@auxfile@bibtex}}% + \fi + \ifblank{#1} + {} + {\@latex@warning{#1}}% + \blx@rerun@latex + \blx@rerun@bibtex} + +\def\blx@logreq@inactive{% + \ifnum\blx@backend=\blx@backend@biber + \else + \xifinlist{\blx@auxfile@bibtex}{\blx@list@inactive} + {} + {\listxadd\blx@list@inactive{\blx@auxfile@bibtex}}% + \fi} + +\def\blx@rerun@latex{% + \G@refundefinedtrue + \global\toggletrue{blx@runltx}% + \global\let\blx@rerun@latex\relax} + +\def\blx@rerun@bibtex{% + \global\toggletrue{blx@runbtx}% + \global\let\blx@rerun@bibtex\relax} + +\let\blx@checksum@old\@empty +\let\blx@checksum@new\@empty +\let\blx@pagesum@old\@empty +\let\blx@pagesum@new\@empty + +\def\blx@checksum#1#2#3{% + \begingroup + \blx@tempcnta\the\numexpr0#2*0#3\relax + \blx@tempcntb\blx@tempcnta + \divide\blx@tempcntb10 + \multiply\blx@tempcntb10 + \advance\blx@tempcnta-\blx@tempcntb + \xdef#1{#1\the\blx@tempcnta}% + \endgroup} + +\def\blx@addchecksum{\blx@checksum\blx@checksum@old} +\def\blx@addpagesum{\blx@checksum\blx@pagesum@old} +\AtEndDocument{% + \def\blx@addchecksum{\blx@checksum\blx@checksum@new}% + \def\blx@addpagesum{\blx@checksum\blx@pagesum@new}} + +\protected\def\blx@check@rerun{% + \begingroup + \blx@tempcnta\z@ + \iftoggle{blx@runltx} + {\blx@tempcnta\@ne} + {\ifx\blx@checksum@old\blx@checksum@new + \ifx\blx@pagesum@old\blx@pagesum@new + \else + \blx@tempcnta\@ne + \fi + \else + \blx@tempcnta\@ne + \fi}% + \iftoggle{blx@runbtx} + {\advance\blx@tempcnta\tw@} + {}% + \ifcase\blx@tempcnta + \or + \blx@rerun@latex + \blx@warning@noline{% + Please rerun LaTeX% + \ifx\blx@pagesum@old\blx@pagesum@new\else + .\MessageBreak Page breaks have changed% + \fi}% + \else + \blx@rerun@latex + \blx@warn@auxlist + \fi + \endgroup} + +\def\blx@warn@auxlist{% + \begingroup + \ifnum\blx@backend=\blx@backend@biber + \edef\blx@tempa{% + Please (re)run Biber on the file:\MessageBreak + \jobname}% + \else + \edef\blx@tempa{Please (re)run BibTeX on the file(s):}% + \def\do##1{\appto\blx@tempa{\MessageBreak##1}}% + \dolistloop\blx@list@active + \fi + \blx@warning@noline{% + \blx@tempa\MessageBreak + and rerun LaTeX afterwards}% + \endgroup} + +\AfterEndDocument{% + \blx@check@rerun + \blx@check@logreq} + +%% Punctuation and capitalization + +% 1001 apostrophe (\printnames only) +% 1002 abbreviation period (dot) +% 1003/1250 comma +% 1004/1500 semicolon +% 1005/2000 colon +% 1006/3000 period +% 1007/3001 exclamation mark +% 1008/3002 question mark +% 1009 suppress punctuation +% 1010 new paragaph + +\mathchardef\blx@sf@apo=1001 +\mathchardef\blx@sf@dot=1002 +\mathchardef\blx@sf@comma=1003 +\mathchardef\blx@sf@semicolon=1004 +\mathchardef\blx@sf@colon=1005 +\mathchardef\blx@sf@period=1006 +\mathchardef\blx@sf@exclam=1007 +\mathchardef\blx@sf@question=1008 +\mathchardef\blx@sf@nopunct=1009 +\mathchardef\blx@sf@par=1010 +\mathchardef\blx@sf@threshold@low=1002 +\mathchardef\blx@sf@threshold@high=1009 + +\csdef{blx@sf@1250}{\the\blx@sf@comma} +\csdef{blx@sf@1500}{\the\blx@sf@semicolon} +\csdef{blx@sf@2000}{\the\blx@sf@colon} +\csdef{blx@sf@3000}{\the\blx@sf@period} +\csdef{blx@sf@3001}{\the\blx@sf@exclam} +\csdef{blx@sf@3002}{\the\blx@sf@question} + +\csdef{blx@pm@,}{comma} +\csdef{blx@pm@;}{semicolon} +\csdef{blx@pm@:}{colon} +\csdef{blx@pm@.}{period} +\csdef{blx@pm@!}{exclam} +\csdef{blx@pm@?}{question} + +\def\blx@setsfcodes{% + \let\blx@setsfcodes\relax + \let\frenchspacing\blx@setfrcodes + \let\nonfrenchspacing\blx@setencodes + \ifnum\sfcode`\.>2000 + \blx@setencodes + \else + \blx@setfrcodes + \fi + \@setquotesfcodes + \sfcode`\(=\z@ + \sfcode`\)=\z@ + \sfcode`\[=\z@ + \sfcode`\]=\z@ + \sfcode`\<=\z@ + \sfcode`\>=\z@} + +\def\blx@setfrcodes{% + \ifnum\sfcode`\A=\@m + \else + \blx@setazcodes + \fi + \sfcode`\,=\blx@sf@comma + \sfcode`\;=\blx@sf@semicolon + \sfcode`\:=\blx@sf@colon + \sfcode`\.=\blx@sf@period + \sfcode`\!=\blx@sf@exclam + \sfcode`\?=\blx@sf@question +} + +\def\blx@setencodes{% + \sfcode`\,=1250 + \sfcode`\;=1500 + \sfcode`\:=2000 + \sfcode`\.=3000 + \sfcode`\!=3001 + \sfcode`\?=3002 +} + +\def\blx@namecodes{% + \ifnum\sfcode`\A=\@m + \else + \blx@setazcodes + \fi + \sfcode`\'=\blx@sf@apo +} + +\begingroup +\let\blx@setazcodes\@empty +\def\blx@tempa{% + \xdef\blx@setazcodes{% + \blx@setazcodes + \sfcode\the\blx@tempcnta=\@m} + \ifnum\blx@tempcnta<\blx@tempcntb + \advance\blx@tempcnta\@ne + \expandafter\blx@tempa + \fi} +\blx@tempcnta`\A +\blx@tempcntb`\Z +\blx@tempa +\ifnum\inputlineno=\m@ne\else + \blx@tempcnta"80 + \blx@tempcntb"9C + \blx@tempa + \blx@tempcnta"C0 + \blx@tempcntb"DF + \blx@tempa +\fi +\endgroup + +\def\blx@spacefactor{% + \ifhmode + \ifcsundef{blx@sf@\the\spacefactor} + {\the\spacefactor} + {\csname blx@sf@\the\spacefactor\endcsname}% + \else + \the\blx@sf@par + \fi} + +\protected\def\blx@leavevmode{% + \ifhmode + \else + \leavevmode\spacefactor\blx@sf@par + \fi} + +\protected\def\blx@leavevmode@cite{% + \ifhmode + \ifnum\spacefactor=\blx@sf@par + \else + \spacefactor\@m + \fi + \else + \leavevmode + \fi} + +\protected\def\blx@imc@setpunctfont#1{% + \blx@ifpuncthook + {\gdef\abx@puncthook{% + \ifdim\lastkern>\z@\unkern\fi + \blx@imc@resetpunctfont#1}} + {}} +\protected\def\blx@imc@resetpunctfont{% + \blx@ifpuncthook + {\global\let\abx@puncthook\@firstofone} + {}} + +\protected\def\blx@setpostpunct#1{% + \blx@ifuspunct + {\global\let\blx@postpunct\blx@dopostpunct + \ifdef\blx@thepostpunct + {\gappto\blx@thepostpunct{#1}} + {\gdef\blx@thepostpunct{#1}}} + {}} + +\def\blx@dopostpunct{% + \blx@thepostpunct + \global\let\blx@postpunct\@empty + \global\undef\blx@thepostpunct} + +\protected\def\blx@postpunct@agroup{% + \aftergroup\blx@postpunct + \let\blx@postpunct@agroup\@empty} + +% {<characters>} + +\newrobustcmd*{\DeclareCapitalPunctuation}[1]{% + \cslet{blx@cap@\the\blx@sf@par}\@empty + \csundef{blx@cap@\the\blx@sf@comma}% + \csundef{blx@cap@\the\blx@sf@semicolon}% + \csundef{blx@cap@\the\blx@sf@colon}% + \csundef{blx@cap@\the\blx@sf@period}% + \csundef{blx@cap@\the\blx@sf@exclam}% + \csundef{blx@cap@\the\blx@sf@question}% + \ifblank{#1} + {} + {\expandafter\blx@defcapstring\detokenize{#1}\relax}} + +\def\blx@defcapstring#1{% + \ifx#1\relax + \else + \begingroup + \blx@setfrcodes + \ifcsdef{blx@pm@#1} + {\expandafter\endgroup + \expandafter\let + \csname blx@cap@\the\sfcode`#1\endcsname\@empty} + {\blx@warning{Ignoring invalid punctuation mark '#1'}% + \endgroup}% + \expandafter\blx@defcapstring + \fi} + +% {<characters>} + +\newrobustcmd*{\DeclareQuotePunctuation}[1]{% + \csdef{blx@qp@comma}{\blx@postpunct}% + \csdef{blx@qp@semicolon}{\blx@postpunct}% + \csdef{blx@qp@colon}{\blx@postpunct}% + \csdef{blx@qp@period}{\blx@postpunct}% + \csdef{blx@qp@exclam}{\blx@postpunct}% + \csdef{blx@qp@question}{\blx@postpunct}% + \cslet{blx@pq@comma}\@empty + \cslet{blx@pq@semicolon}\@empty + \cslet{blx@pq@colon}\@empty + \cslet{blx@pq@period}\@empty + \cslet{blx@pq@exclam}\@empty + \cslet{blx@pq@question}\@empty + \let\blx@quotepunct\@empty + \ifblank{#1} + {\let\blx@ifuspunct\@secondoftwo} + {\let\blx@ifuspunct\@firstoftwo + \expandafter\blx@defquotepunct\detokenize{#1}&}} + +\def\blx@defquotepunct#1{% + \ifx\relax + \else + \ifcsdef{blx@pm@#1} + {\appto\blx@quotepunct{#1}% + \cslet{blx@qp@\csuse{blx@pm@#1}}\@empty + \csdef{blx@pq@\csuse{blx@pm@#1}}{\blx@postpunct}} + {\blx@warning{Ignoring invalid punctuation mark '#1'}}% + \expandafter\blx@defquotepunct + \fi} + +% {<mark>}{<characters>} + +\newrobustcmd*{\DeclarePunctuationPairs}[2]{% + \ifcsdef{blx@sf@\detokenize{#1}} + {\ifnum\csname blx@sf@\detokenize{#1}\endcsname>\blx@sf@apo + \ifnum\csname blx@sf@\detokenize{#1}\endcsname<\blx@sf@nopunct + \expandafter\blx@defpunctpairs + \expandafter{\the\csname blx@sf@\detokenize{#1}\endcsname}{#2}% + \else + \blx@err@invarg{\detokenize{#1}{}}% + \fi + \else + \blx@err@invarg{\detokenize{#1}{}}% + \fi} + {\blx@err@invarg{\detokenize{#1}{}}}} + +\def\blx@defpunctpairs#1#2{% + \blx@undefpair{#1}{\the\blx@sf@dot}% + \blx@undefpair{#1}{\the\blx@sf@comma}% + \blx@undefpair{#1}{\the\blx@sf@semicolon}% + \blx@undefpair{#1}{\the\blx@sf@colon}% + \blx@undefpair{#1}{\the\blx@sf@period}% + \blx@undefpair{#1}{\the\blx@sf@exclam}% + \blx@undefpair{#1}{\the\blx@sf@question}% + \ifblank{#2} + {} + {\begingroup + \def\blx@tempa{#1}% + \let\blx@tempb\@empty + \blx@setfrcodes + \sfcode`\*=\blx@sf@dot + \expandafter\blx@defpair\detokenize{#2}&% + \expandafter\endgroup\blx@tempb}} + +\def\blx@defpair#1{% + \ifx% + \else + \ifnum\the\sfcode`#1>\blx@sf@apo + \ifnum\the\sfcode`#1<\blx@sf@nopunct + \eappto\blx@tempb{% + \cslet{blx@pp@\blx@tempa @\the\sfcode`#1}\noexpand\@empty}% + \else + \blx@err@invarg{#1}{}% + \fi + \else + \blx@err@invarg{#1}{}% + \fi + \expandafter\blx@defpair + \fi} + +\def\blx@undefpair#1#2{% + \ifcsdef{blx@pp@#1@#2} + {\csundef{blx@pp@#1@#2}} + {}} + +\protected\def\blx@resetpunct{% + \DeclareCapitalPunctuation{.!?}% + \DeclarePunctuationPairs{dot}{}% + \DeclarePunctuationPairs{comma}{*!?}% + \DeclarePunctuationPairs{semicolon}{*!?}% + \DeclarePunctuationPairs{colon}{*!?}% + \DeclarePunctuationPairs{period}{}% + \DeclarePunctuationPairs{exclam}{*}% + \DeclarePunctuationPairs{question}{*}% + \DeclareQuotePunctuation{}% + \def\abx@dot{\ifdim\lastkern>\z@\unkern\fi.\spacefactor\blx@sf@dot}% + \def\abx@comma{\ifdim\lastkern>\z@\unkern\fi\abx@puncthook{,}}% + \def\abx@semicolon{\abx@puncthook{;}}% + \def\abx@colon{\abx@puncthook{:}}% + \def\abx@period{\ifdim\lastkern>\z@\unkern\fi\abx@puncthook{.}}% + \def\abx@exclam{\abx@puncthook{!}}% + \def\abx@question{\abx@puncthook{?}}% + \global\let\abx@puncthook\@firstofone + \global\let\blx@postpunct\@empty} + +\blx@resetpunct + +% {<character>}{<true>}{<false>} + +\protected\def\blx@imc@ifpunctmark#1{% + \ifhmode + \begingroup + \sfcode`\*=\blx@sf@dot + \ifnum\sfcode`#1=\spacefactor + \endgroup + \expandafter\expandafter + \expandafter\@firstoftwo + \else + \endgroup + \expandafter\expandafter + \expandafter\@secondoftwo + \fi + \else + \expandafter\@secondoftwo + \fi} + +% {<true>}{<false>} + +\protected\def\blx@imc@ifterm{% + \ifhmode + \expandafter\blx@imc@ifcapital + \else + \expandafter\@secondoftwo + \fi} + +% {<true>}{<false>} + +\protected\def\blx@imc@ifcapital{% + \ifcsdef{blx@cap@\blx@spacefactor}} + +% {<true>}{<false>} + +\protected\def\blx@imc@ifpunct{% + \ifnum\blx@spacefactor>\blx@sf@threshold@low + \ifnum\blx@spacefactor<\blx@sf@threshold@high + \expandafter\expandafter + \expandafter\@firstoftwo + \else + \expandafter\expandafter + \expandafter\@secondoftwo + \fi + \else + \expandafter\@secondoftwo + \fi} + +% {<character>} + +\newrobustcmd*{\autocap}[1]{#1} + +\protected\def\blx@imc@autocap{% + \blx@imc@ifcapital\MakeUppercase\@firstofone} + +\protected\def\blx@imc@nopunct{% + \leavevmode\spacefactor\blx@sf@nopunct} + +\protected\def\blx@imc@isdot{% + \ifnum\blx@spacefactor=\blx@sf@period + \spacefactor\blx@sf@dot + \fi} + +\protected\def\blx@imc@adddot{% + \blx@addpunct{dot}% + \ifnum\blx@spacefactor=\blx@sf@period + \spacefactor\blx@sf@dot + \fi} + +\protected\def\blx@imc@addperiod{% + \blx@addpunct{period}% + \ifnum\blx@spacefactor=\blx@sf@dot + \spacefactor\blx@sf@period + \fi} + +\protected\def\blx@imc@addcomma{\blx@addpunct{comma}} +\protected\def\blx@imc@addsemicolon{\blx@addpunct{semicolon}} +\protected\def\blx@imc@addcolon{\blx@addpunct{colon}} +\protected\def\blx@imc@addexclam{\blx@addpunct{exclam}} +\protected\def\blx@imc@addquestion{\blx@addpunct{question}} + +\def\blx@addpunct#1{% + \unspace + \ifnum\blx@spacefactor<\blx@sf@threshold@low + \csuse{blx@qp@#1}\csuse{abx@#1}% + \else + \ifnum\blx@spacefactor>\blx@sf@threshold@high + \csuse{blx@qp@#1}\csuse{abx@#1}% + \else + \ifcsdef{blx@pp@\the\csname blx@sf@#1\endcsname @\blx@spacefactor} + {\csuse{blx@qp@#1}\csuse{abx@#1}} + {\csuse{blx@qp@#1}}% + \fi + \fi + \csuse{blx@pq@#1}} + +\providerobustcmd*{\unspace}{% + \ifbool{hmode} + {\ifdimgreater\lastskip\z@ + {\unskip\unspace} + {\ifnumgreater\lastpenalty\z@ + {\unpenalty\unspace} + {}}} + {}} + +\newrobustcmd*{\bibsentence}{% + \leavevmode\spacefactor\blx@sf@par + \ignorespaces} + +\newrobustcmd*{\midsentence}{% + \leavevmode + \@ifstar + {\ifnum\spacefactor=\blx@sf@dot + \else + \spacefactor\@m + \fi} + {\spacefactor\@m}} + +\newrobustcmd*{\addslash}{% + \unspace/\penalty\hyphenpenalty\hskip\z@skip} + +\newrobustcmd*{\addspace}{% + \unspace\blx@postpunct + \space\blx@imc@resetpunctfont} + +\newrobustcmd*{\addnbspace}{% + \unspace\blx@postpunct + \nobreak\space\blx@imc@resetpunctfont} + +\newrobustcmd*{\addthinspace}{% + \unspace\blx@postpunct + \hskip0.16667em\relax + \blx@imc@resetpunctfont} + +\newrobustcmd*{\addnbthinspace}{% + \unspace\blx@postpunct + \nobreak\hskip0.16667em\relax + \blx@imc@resetpunctfont} + +\newrobustcmd*{\addlowpenspace}{% + \unspace\blx@postpunct + \penalty\value{lownamepenalty}\space + \blx@imc@resetpunctfont} + +\newrobustcmd*{\addhighpenspace}{% + \unspace\blx@postpunct + \penalty\value{highnamepenalty}\space + \blx@imc@resetpunctfont} + +\newrobustcmd*{\addlpthinspace}{% + \unspace\blx@postpunct + \penalty\value{lownamepenalty}% + \hskip0.16667em\relax\blx@imc@resetpunctfont} + +\newrobustcmd*{\addhpthinspace}{% + \unspace\blx@postpunct + \penalty\value{highnamepenalty}% + \hskip0.16667em\relax\blx@imc@resetpunctfont} + +\newrobustcmd*{\addabbrvspace}{% + \unspace\blx@postpunct + \penalty\value{abbrvpenalty}% + \space\blx@imc@resetpunctfont} + +\newrobustcmd*{\addabthinspace}{% + \unspace\blx@postpunct + \penalty\value{abbrvpenalty}% + \hskip0.16667em\relax + \blx@imc@resetpunctfont} + +\newrobustcmd*{\adddotspace}{% + \unspace\adddot\blx@postpunct + \penalty\value{abbrvpenalty}% + \space\blx@imc@resetpunctfont} + +\providerobustcmd*{\noligature}{% + \penalty\@M\discretionary{-}{}{\kern0.03em}% + \nobreak\hskip\z@skip} + +\providerobustcmd*{\hyphen}{% + \nobreak-\nobreak\hskip\z@skip} + +\providerobustcmd*{\nbhyphen}{% + \nobreak\mbox{-}\nobreak\hskip\z@skip} + +\providerobustcmd*{\hyphenate}{% + \nobreak\-\nobreak\hskip\z@skip} + +\providerobustcmd*{\allowhyphens}{% + \nobreak\hskip\z@skip} + +\providerobustcmd*{\nohyphenation}{% + \lefthyphenmin\@m} + +\providerobustcmd*{\textnohyphenation}[1]{% + \bgroup\nohyphenation#1\egroup} + +\blx@regimcs{% + \setpunctfont \resetpunctfont \ifcapital \autocap \ifpunctmark + \ifpunct \ifterm \nopunct \isdot \adddot \addperiod \addcomma + \addsemicolon \addcolon \addexclam \addquestion} + +\appto\blx@blxinit{% + \appto\nocorrlist{\isdot\adddot\addperiod\addcomma}} + +%% Style definition + +% {<bibstyle>} + +\newrobustcmd*{\RequireBibliographyStyle}[1]{% + \blx@inputonce{#1.bbx}{bibliography style '#1'}{}{}{} + {\blx@error + {Style '#1' not found} + {The bibliography style '#1' could not be found}}} +\@onlypreamble\RequireBibliographyStyle + +% {<code>} + +\newrobustcmd*{\InitializeBibliographyStyle}{\appto\blx@hook@bbxinit} +\@onlypreamble\InitializeBibliographyStyle + +% {<entry type>}{<driverdef>} + +\newrobustcmd*{\DeclareBibliographyDriver}[1]{% + \long\csdef{blx@bbx@#1}} +\@onlypreamble\DeclareBibliographyDriver + +% {<entry type>} + +\def\blx@driver#1{% + \ifcsdef{blx@bbx@#1} + {\csuse{blx@bbx@#1}} + {\ifcsdef{blx@bbx@*} + {\blx@warning{% + No driver for entry type '#1'.\MessageBreak + Using fallback driver}% + \csuse{blx@bbx@*}} + {\blx@error + {No driver found} + {I can't find a driver for the entry type + '\abx@field@entrytype'\MessageBreak + and there is no fallback driver either}}}} + +% {<type>}{<true>}{<false>} + +\def\blx@imc@ifdriver#1{\ifcsdef{blx@bbx@#1}} + +% {<alias>}{<type>} + +\newrobustcmd*{\DeclareBibliographyAlias}[2]{% + \csedef{blx@bbx@#1}{% + \expandafter\noexpand\csname blx@bbx@#2\endcsname}} +\@onlypreamble\DeclareBibliographyAlias + +% {<key>}[<value>]{<code>} + +\newrobustcmd*{\DeclareBibliographyOption}[1]{% + \@ifnextchar[%] + {\blx@defbibopt{#1}} + {\blx@defbibopt{#1}[]}} + +\long\def\blx@defbibopt#1[#2]#3{% + \ifcsundef{KV@blx@opt@ldt@#1} + {\ifcsundef{KV@blx@opt@pre@#1} + {\ifblank{#2} + {\define@key{blx@opt@pre}{#1}{#3}} + {\define@key{blx@opt@pre}{#1}[#2]{#3}}} + {\blx@err@optdef{#1}}} + {\blx@err@optdef{#1}}} + +% {<key>}[<value>]{<code>} + +\newrobustcmd*{\DeclareTypeOption}[1]{% + \@ifnextchar[%] + {\blx@deftypeopt{#1}} + {\blx@deftypeopt{#1}[]}} + +\long\def\blx@deftypeopt#1[#2]#3{% + \ifcsundef{KV@blx@opt@typ@#1} + {\ifblank{#2} + {\define@key{blx@opt@typ}{#1}{#3}} + {\define@key{blx@opt@typ}{#1}[#2]{#3}}} + {\blx@err@optdef{#1}}} + +% {<key>}[<value>]{<code>} + +\newrobustcmd*{\DeclareEntryOption}[1]{% + \@ifnextchar[%] + {\blx@defentryopt{#1}} + {\blx@defentryopt{#1}[]}} + +\long\def\blx@defentryopt#1[#2]#3{% + \ifcsundef{KV@blx@opt@ent@#1} + {\ifblank{#2} + {\define@key{blx@opt@ent}{#1}{#3}} + {\define@key{blx@opt@ent}{#1}[#2]{#3}}} + {\blx@err@optdef{#1}}} + +%% Auxiliary commands + +\newrobustcmd*{\citereset}{% + \csuse{blx@hook@cbxinit}% + \@ifstar + {} + {\global\cslet{blx@bsee@\the\c@refsection}\@empty + \global\cslet{blx@fsee@\the\c@refsection}\@empty + \blx@ibidreset@force + \blx@idemreset@force + \blx@opcitreset@force + \blx@loccitreset@force}} + +\def\blx@save#1{% + \ifcsdef{blx@saved@#1} + {} + {\blx@safe@actives + \csletcs{blx@saved@#1}{#1}% + \blx@rest@actives}} + +\def\blx@restore#1{% + \ifcsdef{blx@saved@#1} + {\blx@safe@actives + \csletcs{#1}{blx@saved@#1}% + \csundef{blx@saved@#1}% + \blx@rest@actives} + {}} + +\newrobustcmd*{\savecommand}[1]{% + \ifcsdef{blx@saved@cmd@\detokenize{#1}} + {} + {\cslet{blx@saved@cmd@\detokenize{#1}}{#1}}} + +\newrobustcmd*{\restorecommand}[1]{% + \ifcsdef{blx@saved@cmd@\detokenize{#1}} + {\letcs{#1}{blx@saved@cmd@\detokenize{#1}}% + \csundef{blx@saved@cmd@\detokenize{#1}}} + {}} + +% {<name>} + +\newrobustcmd*{\savebibmacro}[1]{% + \blx@save{abx@macro@\detokenize{#1}}} + +\newrobustcmd*{\restorebibmacro}[1]{% + \blx@restore{abx@macro@\detokenize{#1}}} + +% {<name>}[<args>][<optarg>]{<definition>} + +\newrobustcmd*{\newbibmacro}{% + \@star@or@long\blx@newbibmacro} + +\def\blx@newbibmacro#1{% + \ifcsundef{abx@macro@\detokenize{#1}} + {\blx@defbibmacro\new@command{#1}} + {\blx@warning{% + Macro '\detokenize{#1}' already defined.\MessageBreak + Using \string\renewbibmacro} + \blx@defbibmacro\renew@command{#1}}} + +\newrobustcmd*{\renewbibmacro}{% + \@star@or@long\blx@renewbibmacro} + +\def\blx@renewbibmacro#1{% + \ifcsundef{abx@macro@\detokenize{#1}} + {\blx@warning{% + Macro '\detokenize{#1}' undefined.\MessageBreak + Using \string\newbibmacro} + \blx@defbibmacro\new@command{#1}} + {\blx@defbibmacro\renew@command{#1}}} + +\newrobustcmd*{\providebibmacro}{% + \@star@or@long{\blx@defbibmacro\provide@command}} + +\def\blx@defbibmacro#1#2{% + \expandafter#1\csname abx@macro@\detokenize{#2}\endcsname} + +% {<name>} + +\newrobustcmd*{\usebibmacro}[1]{% + \ifcsundef{abx@macro@\detokenize{#1}} + {\blx@error + {Bibliography macro '\detokenize{#1}' undefined} + {Use '\string\newbibmacro' to define this macro}} + {\csuse{abx@macro@\detokenize{#1}}}} + +% {<field>} + +\def\blx@imc@thefield#1{\csuse{abx@field@#1}} + +\def\blx@imc@strfield#1{% + \ifcsdef{abx@field@#1} + {\detokenize\expandafter\expandafter\expandafter + {\csname abx@field@#1\endcsname}} + {}} + +% {<plainlist>} + +\def\blx@imc@thelist#1{\csuse{abx@list@#1}} + +% {<namelist>} + +\def\blx@imc@thename#1{\csuse{abx@name@#1}} + +% {<field>} + +\protected\def\blx@imc@clearfield#1{% + \csundef{abx@field@#1}} + +% {<plainlist>} + +\protected\def\blx@imc@clearlist#1{% + \ifcsundef{abx@list@#1} + {} + {\togglefalse{abx@bool@more#1}% + \csundef{abx@list@#1}% + \csname c@#1\endcsname\z@}} + +% {<namelist>} + +\protected\def\blx@imc@clearname#1{% + \ifcsundef{abx@name@#1} + {} + {\togglefalse{abx@bool@more#1}% + \csundef{abx@name@#1}% + \csname c@#1\endcsname\z@}} + +% {<field>}{<macro>} + +\protected\def\blx@imc@restorefield#1{\cslet{abx@field@#1}} + +% {<plainlist>}{<macro>} + +\protected\def\blx@imc@restorelist#1{\cslet{abx@list@#1}} + +% {<namelist>}{<macro>} + +\protected\def\blx@imc@restorename#1{\cslet{abx@name@#1}} + +% {<field>}{<macro>} + +\protected\def\blx@imc@savefield{% + \@ifstar{\blx@savedata{field}}{\global\blx@savedata{field}}} +\def\blx@savedata#1#2#3{\letcs#3{abx@#1@#2}} + +% {<plainlist>}{<macro>} + +\protected\def\blx@imc@savelist{% + \@ifstar{\blx@savedata{list}}{\global\blx@savedata{list}}} + +% {<namelist>}{<macro>} + +\protected\def\blx@imc@savename{% + \@ifstar{\blx@savedata{name}}{\global\blx@savedata{name}}} + +% {<field>}{<csname>} + +\protected\def\blx@imc@savefieldcs{% + \@ifstar{\blx@savedatacs{field}}{\global\blx@savedatacs{field}}} +\def\blx@savedatacs#1#2#3{\csletcs{#3}{abx@#1@#2}} + +% {<plainlist>}{<csname>} + +\protected\def\blx@imc@savelistcs{% + \@ifstar{\blx@savedatacs{list}}{\global\blx@savedatacs{list}}} + +% {<namelist>}{<csname>} + +\protected\def\blx@imc@savenamecs{% + \@ifstar{\blx@savedatacs{name}}{\global\blx@savedatacs{name}}} + +% {<field>}{<true>}{<false>} + +\def\blx@imc@iffieldundef#1{% + \ifcsundef{abx@field@#1}} + +% {<plainlist>}{<true>}{<false>} + +\def\blx@imc@iflistundef#1{% + \ifcsundef{abx@list@#1}} + +% {<namelist>}{<true>}{<false>} + +\def\blx@imc@ifnameundef#1{% + \ifcsundef{abx@name@#1}} + +% {<field1>}{<field2>}{<true>}{<false>} + +\def\blx@imc@iffieldsequal#1#2{% + \ifcsequal{abx@field@#1}{abx@field@#2}} + +% {<plainlist1>}{<plainlist2>}{<true>}{<false>} + +\def\blx@imc@iflistsequal#1#2{% + \ifcsequal{abx@list@#1}{abx@list@#2}} + +% {<namelist1>}{<namelist2>}{<true>}{<false>} + +\def\blx@imc@ifnamesequal#1#2{% + \ifcsundef{abx@name@#1} + {\@secondoftwo} + {\ifcsundef{abx@name@#2} + {\@secondoftwo} + {\blx@ifnamesequal{#1}{#2}}}} + +\def\blx@ifnamesequal#1#2{% + \begingroup + \let\blx@tempa\@empty + \expandafter\expandafter + \expandafter\blx@ifnamesequal@i\csname abx@name@#2\endcsname + \let\blx@tempb\blx@tempa + \let\blx@tempa\@empty + \expandafter\expandafter + \expandafter\blx@ifnamesequal@i\csname abx@name@#1\endcsname + \expandafter\endgroup + \ifx\blx@tempa\blx@tempb + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi} + +\def\blx@ifnamesequal@i#1#2{% + \expandafter\blx@ifnamesequal@ii#2{}&} + +\def\blx@ifnamesequal@ii#1{% + \ifblank{#1} + {\blx@namebreak} + {\blx@ifnamesequal@iii#1% + \blx@ifnamesequal@ii}} + +\def\blx@ifnamesequal@iii#1#2#3#4#5#6#7#8#9{% + \setkeys{blx@opt@name}{#1}% + \ifdef\abx@field@hash + {\eappto\blx@tempa{{\abx@field@hash}}} + {\appto\blx@tempa{{{#2}{#4}{#6}{#8}}}}} + +% {<field>}{<macro>}{<true>}{<false>} + +\def\blx@imc@iffieldequals#1#2{% + \blx@imc@iffieldundef{#1} + {\@secondoftwo} + {\ifundef#2% + {\@secondoftwo} + {\expandafter\ifx\csname abx@field@#1\endcsname#2% + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi}}} + +% {<plainlist>}{<macro>}{<true>}{<false>} + +\def\blx@imc@iflistequals#1#2{% + \blx@imc@iflistundef{#1} + {\@secondoftwo} + {\ifundef#2% + {\@secondoftwo} + {\expandafter\ifx\csname abx@list@#1\endcsname#2% + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi}}} + +% {<namelist>}{<macro>}{<true>}{<false>} + +\def\blx@imc@ifnameequals#1#2{% FIXME + \blx@imc@ifnameundef{#1} + {\@secondoftwo} + {\ifundef#2% + {\@secondoftwo} + {\expandafter\ifx\csname abx@name@#1\endcsname#2% + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi}}} + +% {<field>}{<csname>}{<true>}{<false>} + +\def\blx@imc@iffieldequalcs#1{% + \ifcsequal{abx@field@#1}} + +% {<plainlist>}{<csname>}{<true>}{<false>} + +\def\blx@imc@iflistequalcs#1{% + \ifcsequal{abx@list@#1}} + +% {<namelist>}{<csname>}{<true>}{<false>} + +\def\blx@imc@ifnameequalcs#1{% FIXME + \ifcsequal{abx@name@#1}} + +% {<field>}{<string>}{<true>}{<false>} + +\protected\long\def\blx@imc@iffieldequalstr#1#2{% + \blx@imc@iffieldundef{#1} + {\@secondoftwo} + {\expandafter\expandafter\expandafter\ifstrequal + \expandafter\expandafter\expandafter{% + \csname abx@field@#1\endcsname}{#2}}} + +% {<field>}{<true>}{<false>} + +\protected\def\blx@imc@iffieldxref#1{% + \blx@imc@iffieldundef{#1} + {\@secondoftwo} + {\blx@whichxref + {\blx@iffieldxref{#1}} + {\@secondoftwo}}} + +\def\blx@iffieldxref#1#2{% + \begingroup + \letcs\blx@tempa{abx@field@#2}% + \letcs\blx@tempb{abx@field@#1}% + \csundef{abx@field@#1}% + \blx@getdata{\blx@tempa}% + \blx@imc@iffieldequals{#1}\blx@tempb + {\aftergroup\@firstoftwo} + {\aftergroup\@secondoftwo}% + \endgroup} + +\def\blx@whichxref#1#2{% + \blx@imc@iffieldundef{crossref} + {\blx@imc@iffieldundef{xref} + {#2} + {#1{xref}}} + {#1{crossref}}} + +% {<plainlist>}{<true>}{<false>} + +\protected\def\blx@imc@iflistxref#1{% + \blx@imc@iflistundef{#1} + {\@secondoftwo} + {\blx@whichxref + {\blx@iflistxref{#1}} + {\@secondoftwo}}} + +\def\blx@iflistxref#1#2{% + \begingroup + \letcs\blx@tempa{abx@field@#2}% + \letcs\blx@tempb{abx@list@#1}% + \csundef{abx@list@#1}% + \blx@getdata{\blx@tempa}% + \blx@imc@iflistequals{#1}\blx@tempb + {\aftergroup\@firstoftwo} + {\aftergroup\@secondoftwo}% + \endgroup} + +% {<namelist>}{<true>}{<false>} + +\protected\def\blx@imc@ifnamexref#1{% + \blx@imc@ifnameundef{#1} + {\@secondoftwo} + {\blx@whichxref + {\blx@ifnamexref{#1}} + {\@secondoftwo}}} + +\def\blx@ifnamexref#1#2{% + \begingroup + \letcs\blx@tempa{abx@field@#2}% + \letcs\blx@tempb{abx@name@#1}% + \csundef{abx@name@#1}% + \blx@getdata{\blx@tempa}% + \blx@imc@ifnameequals{#1}\blx@tempb + {\aftergroup\@firstoftwo} + {\aftergroup\@secondoftwo}% + \endgroup} + +% {<string>}{<true>}{<false>} + +\protected\def\blx@imc@ifcurrentfield#1{% + \begingroup + \def\blx@tempa{#1}% + \ifx\currentfield\blx@tempa + \aftergroup\@firstoftwo + \else + \aftergroup\@secondoftwo + \fi + \endgroup} + +% {<string>}{<true>}{<false>} + +\protected\def\blx@imc@ifcurrentlist#1{% + \begingroup + \def\blx@tempa{#1}% + \ifx\currentlist\blx@tempa + \aftergroup\@firstoftwo + \else + \aftergroup\@secondoftwo + \fi + \endgroup} + +% {<string>}{<true>}{<false>} + +\protected\def\blx@imc@ifcurrentname#1{% + \begingroup + \def\blx@tempa{#1}% + \ifx\currentname\blx@tempa + \aftergroup\@firstoftwo + \else + \aftergroup\@secondoftwo + \fi + \endgroup} + +% {<string>}{<true>}{<false>} + +\protected\def\blx@imc@ifentrytype#1{% + \begingroup + \def\blx@tempa{#1}% + \ifx\abx@field@entrytype\blx@tempa + \aftergroup\@firstoftwo + \else + \aftergroup\@secondoftwo + \fi + \endgroup} + +% {<true>}{<false>} + +\def\blx@imc@ifmorenames{% + \ifundef\currentname + {\@secondoftwo} + {\iftoggle{abx@bool@more\currentname} + {\@firstoftwo} + {\ifnum\c@listtotal>\c@liststop + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi}}} + +% {<true>}{<false>} + +\def\blx@imc@ifmoreitems{% + \ifundef\currentlist + {\@secondoftwo} + {\iftoggle{abx@bool@more\currentlist} + {\@firstoftwo} + {\ifnum\c@listtotal>\c@liststop + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi}}} + +% {<category>}{<true>}{<false>} + +\protected\def\blx@imc@ifcategory{% + \ifdef\abx@field@entrykey + {\blx@imc@ifentrycategory\abx@field@entrykey} + {\expandafter\@secondoftwo\@gobble}} + +% {<entrykey>}{<category>}{<true>}{<false>} + +\protected\def\blx@imc@ifentrycategory{% + \blx@xsanitizeafter\blx@imc@ifentrycategory@i} + +\def\blx@imc@ifentrycategory@i#1#2{% + \ifcsdef{blx@catg@\detokenize{#2}} + {\ifinlistcs{#1}{blx@catg@\detokenize{#2}}} + {\@secondoftwo}} + +% {<keyword>}{<true>}{<false>} + +\protected\def\blx@imc@ifkeyword{% + \ifdef\abx@field@entrykey + {\blx@imc@ifentrykeyword\abx@field@entrykey} + {\expandafter\@secondoftwo\@gobble}} + +% {<entrykey>}{<keyword>}{<true>}{<false>} + +\protected\def\blx@imc@ifentrykeyword{% + \blx@xsanitizeafter\blx@imc@ifentrykeyword@i} + +\def\blx@imc@ifentrykeyword@i#1#2{% + \ifcsdef{blx@keyw@\the\c@refsection @\detokenize{#2}} + {\ifinlistcs{#1}{blx@keyw@\the\c@refsection @\detokenize{#2}}} + {\@secondoftwo}} + +% {<true>}{<false>} + +\protected\def\blx@ifciteseen@global{% + \ifdef\abx@field@entrykey + {\expandafter\blx@ifseen@global + \expandafter{\abx@field@entrykey}} + {\@secondoftwo}} + +\protected\def\blx@ifciteseen@context{% + \ifdef\abx@field@entrykey + {\expandafter\blx@ifseen@context + \expandafter{\abx@field@entrykey}} + {\@secondoftwo}} + +% {<entrykey>}{<true>}{<false>} + +\protected\def\blx@ifentryseen@global{% + \blx@xsanitizeafter\blx@ifseen@global} + +\protected\def\blx@ifentryseen@context{% + \blx@xsanitizeafter\blx@ifseen@context} + +\def\blx@ifseen@global#1{% + \ifinlistcs{#1}{blx@bsee@\the\c@refsection}} + +\def\blx@ifseen@context#1{% + \iftoggle{blx@footnote} + {\ifinlistcs{#1}{blx@fsee@\the\c@refsection}} + {\ifinlistcs{#1}{blx@bsee@\the\c@refsection}}} + +% {<true>}{<false>} + +\def\blx@ifciteibid@global{% + \blx@imc@iffieldequals{entrykey}\blx@lastkey@text} + +\def\blx@ifciteibid@context{% + \iftoggle{blx@footnote} + {\blx@imc@iffieldequals{entrykey}\blx@lastkey@foot} + {\blx@imc@iffieldequals{entrykey}\blx@lastkey@text}} + +\def\blx@ifciteibid@strict{% + \blx@ifcitesingle + {\blx@ifciteibid@global} + {\@secondoftwo}}% + +\def\blx@ifciteibid@constrict{% + \blx@ifcitesingle + {\iftoggle{blx@footnote} + {\blx@ifmpfncheck + {\blx@imc@iffieldequals{entrykey}\blx@lastkey@foot} + {\@secondoftwo}} + {\blx@imc@iffieldequals{entrykey}\blx@lastkey@text}} + {\@secondoftwo}}% + +% {<true>}{<false>} + +\def\blx@ifciteidem@global{% + \blx@imc@iffieldequals{fullhash}\blx@lasthash@text} + +\def\blx@ifciteidem@context{% + \iftoggle{blx@footnote} + {\blx@imc@iffieldequals{fullhash}\blx@lasthash@foot} + {\blx@imc@iffieldequals{fullhash}\blx@lasthash@text}} + +\let\blx@ifciteidem@strict\blx@ifciteidem@global + +\def\blx@ifciteidem@constrict{% + \iftoggle{blx@footnote} + {\blx@ifmpfncheck + {\blx@imc@iffieldequals{fullhash}\blx@lasthash@foot} + {\@secondoftwo}} + {\blx@imc@iffieldequals{fullhash}\blx@lasthash@text}} + +% {<true>}{<false>} + +\def\blx@ifopcit@global{% + \blx@imc@iffieldundef{namehash} + {\@secondoftwo} + {\blx@imc@iffieldequalcs{entrykey}{blx@lastkey@text@\abx@field@namehash}}} + +\def\blx@ifopcit@context{% + \blx@imc@iffieldundef{namehash} + {\@secondoftwo} + {\iftoggle{blx@footnote} + {\blx@imc@iffieldequalcs{entrykey}{blx@lastkey@foot@\abx@field@namehash}} + {\blx@imc@iffieldequalcs{entrykey}{blx@lastkey@text@\abx@field@namehash}}}} + +\def\blx@ifopcit@strict{% + \blx@ifcitesingle + {\blx@ifopcit@global} + {\@secondoftwo}}% + +\def\blx@ifopcit@constrict{% + \blx@ifcitesingle + {\blx@imc@iffieldundef{namehash} + {\@secondoftwo} + {\iftoggle{blx@footnote} + {\blx@ifmpfncheck + {\blx@imc@iffieldequalcs{entrykey}{blx@lastkey@foot@\abx@field@namehash}} + {\@secondoftwo}} + {\blx@imc@iffieldequalcs{entrykey}{blx@lastkey@text@\abx@field@namehash}}}} + {\@secondoftwo}}% + +% {<true>}{<false>} + +\def\blx@ifloccit@global{% + \blx@loccit@check{text}} + +\def\blx@ifloccit@context{% + \iftoggle{blx@footnote} + {\blx@loccit@check{foot}} + {\blx@loccit@check{text}}} + +\def\blx@ifloccit@strict{% + \blx@ifcitesingle + {\blx@loccit@numcheck{text}} + {\@secondoftwo}}% + +\def\blx@ifloccit@constrict{% + \blx@ifcitesingle + {\iftoggle{blx@footnote} + {\blx@ifmpfncheck + {\blx@loccit@numcheck{foot}} + {\@secondoftwo}} + {\blx@loccit@numcheck{text}}} + {\@secondoftwo}} + +\def\blx@loccit@check#1{% + \blx@imc@iffieldundef{postnote} + {\@secondoftwo} + {\blx@imc@iffieldequalcs{postnote}{blx@lastnote@#1@\abx@field@entrykey}}} + +\def\blx@loccit@numcheck#1{% + \blx@imc@iffieldundef{postnote} + {\@secondoftwo} + {\expandafter\blx@imc@ifpages + \expandafter{\abx@field@postnote} + {\blx@imc@iffieldequalcs{postnote}{blx@lastnote@#1@\abx@field@entrykey}} + {\@secondoftwo}}} + +% {<true>}{<false>} + +\def\blx@ifmpfncheck{% + \ifnum\numexpr\value\@mpfn-\blx@lastmpfn<\tw@ + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi} + +\def\blx@mpfnsave{% + \xdef\blx@lastmpfn{\the\value\@mpfn}} + +\def\blx@mpfnreset{% + \global\let\blx@lastmpfn\z@} + +\blx@mpfnreset + +% {<true>}{<false>} + +\def\blx@imc@iffirstonpage{% + \iftoggle{blx@footnote} + {\blx@iffirstonpage{fnpage}} + {\blx@iffirstonpage{page}}} + +\def\blx@iffirstonpage#1{% + \ifcsundef{blx@#1@\number\c@instcount} + {\@secondoftwo} + {\expandafter\blx@iffirstonpage@i + \expandafter{\number\numexpr\c@instcount-1}{#1}}} + +\def\blx@iffirstonpage@i#1#2{% + \ifcsundef{blx@#2@#1} + {\ifnum#1>\@ne + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {\expandafter\blx@iffirstonpage@i + \expandafter{\number\numexpr#1-1}{#2}} + {\@firstoftwo}} + {\ifnum\csuse{blx@#2@\number\c@instcount}=% + \csuse{blx@#2@#1} % + \expandafter\@secondoftwo + \else + \expandafter\@firstoftwo + \fi}} + +% {<count1>}{<count2>}{<true>}{<false>} + +\def\blx@imc@ifsamepage#1#2{% + \ifcsundef{blx@page@\number\numexpr#1} + {\ifcsundef{blx@fnpage@\number\numexpr#1} + {\@secondoftwo} + {\blx@ifsamepage{#1}{#2}{fnpage}}} + {\blx@ifsamepage{#1}{#2}{page}}} + +\def\blx@ifsamepage#1#2#3{% + \ifcsundef{blx@page@\number\numexpr#2} + {\ifcsundef{blx@fnpage@\number\numexpr#2} + {\@secondoftwo} + {\blx@ifsamepage@i{#1}{#2}{#3}{fnpage}}} + {\blx@ifsamepage@i{#1}{#2}{#3}{page}}} + +\def\blx@ifsamepage@i#1#2#3#4{% + \ifnum\csuse{blx@#3@\number\numexpr#1}=% + \csuse{blx@#4@\number\numexpr#2} % + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi} + +% {<string>}{<true>}{<false>} + +\protected\long\def\blx@imc@ifinteger#1{% + \begingroup + \def\do##1{\uccode`##1=`\%}% + \do\0\do\1\do\2\do\3\do\4\do\5\do\6\do\7\do\8\do\9% + \makeatletter + \catcode`\%=9 + \endlinechar\m@ne + \uppercase{\scantokens{\def\blx@tempa{#1}}}% + \ifx\blx@tempa\@empty + \aftergroup\@firstoftwo + \else + \aftergroup\@secondoftwo + \fi + \endgroup} + +% {<field>}{<true>}{<false>} + +\protected\def\blx@imc@iffieldint#1{% + \blx@imc@iffieldundef{#1} + {\@secondoftwo} + {\expandafter\expandafter + \expandafter\ifinteger + \expandafter\expandafter + \expandafter{\csname abx@field@#1\endcsname}}} + +% {<string>}{<true>}{<false>} + +\protected\def\blx@imc@ifnumeral{% + \blx@ifnum\blx@hook@ifnum} + +\protected\def\blx@imc@ifnumerals{% + \blx@ifnum\blx@hook@ifnums} + +\protected\def\blx@imc@ifpages{% + \blx@ifnum\blx@hook@ifpages} + +\long\def\blx@ifnum#1#2{% + \begingroup + \let\protect\@unexpandable@protect + \uppercase{\edef\blx@tempa{#2}}% + \ifx\blx@tempa\@empty + \aftergroup\@secondoftwo + \else + \makeatletter + \catcode`\%=9 + \endlinechar\m@ne + \everyeof{\noexpand}#1% + \uppercase{\edef\blx@tempa{\scantokens{#2}}}% + \ifx\blx@tempa\@empty + \aftergroup\@firstoftwo + \else + \aftergroup\@secondoftwo + \fi + \fi + \endgroup} + +\def\blx@hook@ifnum{% + \def\do##1{\uccode`##1=`\%}% + \do\ \do\0\do\1\do\2\do\3\do\4\do\5\do\6\do\7\do\8\do\9% + \do\i\do\v\do\x\do\l\do\c\do\d\do\m + \do\I\do\V\do\X\do\L\do\C\do\D\do\M + \blx@donumchars + \let\RN\@firstofone + \let\Rn\@firstofone} + +\def\blx@hook@ifnums{% + \blx@hook@ifnum + \def\do##1{\uccode`##1=`\%}% + \blx@dorangechars + \def\do##1{\let##1\@empty}% + \blx@dorangecmds} + +\def\blx@hook@ifpages{% + \blx@hook@ifnum + \blx@hook@ifnums + \def\do##1{\let##1\@empty}% + \blx@dopagecmds} + +% {<field>}{<true>}{<false>} + +\protected\def\blx@imc@iffieldnum#1{% + \blx@imc@iffieldundef{#1} + {\@secondoftwo} + {\expandafter\expandafter + \expandafter\blx@imc@ifnumeral + \expandafter\expandafter + \expandafter{\csname abx@field@#1\endcsname}}} + +\protected\def\blx@imc@iffieldnums#1{% + \blx@imc@iffieldundef{#1} + {\@secondoftwo} + {\expandafter\expandafter + \expandafter\blx@imc@ifnumerals + \expandafter\expandafter + \expandafter{\csname abx@field@#1\endcsname}}} + +\protected\def\blx@imc@iffieldpages#1{% + \blx@imc@iffieldundef{#1} + {\@secondoftwo} + {\expandafter\expandafter + \expandafter\blx@imc@ifpages + \expandafter\expandafter + \expandafter{\csname abx@field@#1\endcsname}}} + +% {<chars>} + +\newrobustcmd*{\DeclareNumChars}{% + \@ifstar + {\blx@defnumchars} + {\global\let\blx@donumchars\@empty + \blx@defnumchars}} + +\def\blx@defnumchars#1{% + \ifblank{#1} + {} + {\expandafter\blx@defdochars + \expandafter\blx@donumchars + \detokenize{#1}\relax}} + +% {<chars>} + +\newrobustcmd*{\DeclareRangeChars}{% + \@ifstar + {\blx@defrangechars} + {\global\let\blx@dorangechars\@empty + \blx@defrangechars}} + +\def\blx@defrangechars#1{% + \ifblank{#1} + {} + {\expandafter\blx@defdochars + \expandafter\blx@dorangechars + \detokenize{#1}\relax}} + +\def\blx@defdochars#1#2{% + \ifx#2\relax + \else + \xdef#1{% + \expandonce#1\noexpand\do + \expandafter\noexpand\csname#2\endcsname}% + \expandafter\blx@defdochars + \expandafter#1% + \fi} + +% {<cstokens>} + +\newrobustcmd*{\DeclareRangeCommands}{% + \@ifstar + {\blx@defrangecmds} + {\global\let\blx@dorangecmds\@empty + \blx@defrangecmds}} + +\def\blx@defrangecmds#1{% + \ifblank{#1} + {} + {\blx@defrangecmds@i#1&}} + +\def\blx@defrangecmds@i#1{% + \ifx% + \else + \gappto\blx@dorangecmds{\do#1}% + \expandafter\blx@defrangecmds@i + \fi} + +% {<cstokens>} + +\newrobustcmd*{\DeclarePageCommands}{% + \@ifstar + {\blx@defpagecmds} + {\global\let\blx@dopagecmds\@empty + \blx@defpagecmds}} + +\def\blx@defpagecmds#1{% + \ifblank{#1} + {} + {\blx@defpagecmds@i#1&}} + +\def\blx@defpagecmds@i#1{% + \ifx% + \else + \gappto\blx@dopagecmds{\do#1}% + \expandafter\blx@defpagecmds@i + \fi} + +\DeclareNumChars{.} +\DeclareRangeChars{~,;-+/} +\DeclareRangeCommands{% + \ \,\space\nobreakspace\addspace\addnbspace + \addthinspace\addnbthinspace\addlowpenspace + \addhighpenspace\addlpthinspace\addhpthinspace + \adddotspace\addabbrvspace\&\psq\psqq + \bibrangedash\bibdatedash\textendash\textemdash} +\DeclarePageCommands{\pno\ppno} + +% *{<code>} + +\newrobustcmd*{\NumCheckSetup}{\appto\blx@hook@ifnum} +\newcommand*{\NumcheckSetup}{\NumCheckSetup} + +% [<pagination>][<postpro>]{<string>} + +\newrobustcmd*{\blx@imc@mkpageprefix}[1][pagination]{% + \begingroup + \def\blx@tempa{\blx@mkpageprefix{page}}% + \iffieldundef{#1} + {} + {\iffieldequalstr{#1}{none} + {\def\blx@tempa{\blx@mkpageprefix@i}} + {\iffieldbibstring{#1} + {\edef\blx@tempa{\blx@mkpageprefix{\thefield{#1}}}} + {\blx@warning@entry{% + Unknown pagination type '\strfield{#1}'}}}}% + \@ifnextchar[%] + {\blx@tempa} + {\blx@tempa[\@firstofone]}} + +\protected\long\def\blx@mkpageprefix#1[#2]#3{% + \ifnumeral{#3} + {\bibstring{#1}\ppspace} + {\ifnumerals{#3} + {\bibstring{#1s}\ppspace} + {\def\pno{\bibstring{#1}}% + \def\ppno{\bibstring{#1s}}}}% + \blx@mkpageprefix@i[#2]{#3}} + +\long\def\blx@mkpageprefix@i[#1]#2{#1{#2}\endgroup} + +% [<pagination>][<postpro>]{<string>} + +\newrobustcmd*{\blx@imc@mkpagetotal}[1][bookpagination]{% + \begingroup + \def\blx@tempa{\blx@mkpagetotal{page}}% + \iffieldundef{#1} + {} + {\iffieldequalstr{#1}{none} + {\def\blx@tempa{\blx@mkpagetotal@i}} + {\iffieldbibstring{#1} + {\edef\blx@tempa{\blx@mkpagetotal{\thefield{#1}}}} + {\blx@warning@entry{% + Unknown pagination type '\strfield{#1}'}}}}% + \@ifnextchar[%] + {\blx@tempa} + {\blx@tempa[\@firstofone]}} + +\protected\long\def\blx@mkpagetotal#1[#2]#3{% + \ifnumeral{#3} + {\setbox\@tempboxa=\hbox{% + \blx@tempcnta0#3\relax + \ifnum\blx@tempcnta=\@ne + \aftergroup\@firstoftwo + \else + \aftergroup\@secondoftwo + \fi}% + {#2{#3}\ppspace\bibstring{#1}} + {#2{#3}\ppspace\bibstring{#1s}}} + {\def\pno{\bibstring{#1}}% + \def\ppno{\bibstring{#1s}}% + #2{#3}}% + \endgroup} + +\long\def\blx@mkpagetotal@i[#1]#2{#1{#2}\endgroup} + +\newcounter{mincomprange} +\newcounter{maxcomprange} +\newcounter{mincompwidth} +\setcounter{mincomprange}{10} +\setcounter{maxcomprange}{100000} +\setcounter{mincompwidth}{1} +\def\abx@rangeproclimit{100000} + +% <*>[<postpro>]{<string>} + +\newrobustcmd*{\mkcomprange}{% + \begingroup + \@ifstar + {\blx@comprange\blx@comprange@ii} + {\blx@comprange\blx@comprange@i}} + +\def\blx@comprange#1{% + \@ifnextchar[{#1}{#1[\@firstofone]}} + +\def\blx@comprange@i[#1]#2{% + \let\blx@tempa\@empty + \protected\def\blx@range@out@value{\appto\blx@tempa}% + \let\blx@range@out@delim\blx@range@out@value + \let\blx@range@split\blx@comprange@split + \blx@range@chunk{#2}% + \edef\blx@tempa{\endgroup + \unexpanded{#1}{\expandonce\blx@tempa}}% + \blx@tempa} + +\def\blx@comprange@ii[#1]#2{% + \protected\def\blx@range@out@value{#1}% + \let\blx@range@out@delim\@firstofone + \let\blx@range@split\blx@comprange@split + \blx@range@chunk{#2}% + \endgroup} + +\def\blx@comprange@split#1{% + \def\blx@comprange@abort{\blx@range@out@value{#1}}% + \blx@imc@ifpages{#1} + {\blx@comprange@range#1\bibrangedash\bibrangedash&} + {\blx@comprange@abort}} + +\def\blx@comprange@range#1\bibrangedash#2\bibrangedash#3&{% + \ifblank{#3} + {\blx@comprange@hyphen#1--&} + {\ifblank{#2} + {\blx@range@out@value{#1\bibrangedash}} + {\ifblank{#1} + {\blx@range@out@value{\bibrangedash#2}} + {\blx@comprange@check{#1}{#2}}}}} + +\def\blx@comprange@hyphen#1-#2-#3&{% + \ifblank{#3} + {\blx@comprange@abort} + {\ifblank{#2} + {\ifblank{#1} + {\let\blx@tempb\@empty} + {\def\blx@tempb{#1}}% + \blx@comprange@hyphen@i#3&} + {\ifblank{#1} + {\blx@range@out@value{\bibrangedash#2}} + {\blx@comprange@check{#1}{#2}}}}} + +\def\blx@comprange@hyphen@i#1-#2&{% + \ifblank{#1#2} + {\expandafter\blx@range@out@value + \expandafter{\blx@tempb\bibrangedash}} + {\notblank{#1} + {\ifdefempty\blx@tempb + {\blx@range@out@value{\bibrangedash#1}} + {\expandafter\blx@comprange@check + \expandafter{\blx@tempb}{#1}}} + {\blx@comprange@hyphen@i#2&}}} + +\def\blx@comprange@check#1#2{% + \blx@imc@ifinteger{#1} + {\blx@imc@ifinteger{#2} + {\blx@comprange@comp{#1}{#2}} + {\blx@range@out@value{#1\bibrangedash#2}}} + {\blx@range@out@value{#1\bibrangedash#2}}} + +\def\blx@comprange@comp#1#2{% + \def\blx@tempb{#1}% + \def\blx@tempc{#2}% + \let\blx@tempd\blx@tempc + \ifnum\c@maxcomprange<\abx@rangeproclimit\relax + \numdef\blx@tempe\abx@rangeproclimit + \else + \numdef\blx@tempe\c@maxcomprange + \fi + \blx@tempcntc=\blx@tempe\relax + \ifnum + \ifnum\c@mincompwidth<1\space1\fi + \ifnum\c@maxcomprange<10\space1\fi + \ifnum\c@mincomprange<\blx@tempb\space\else1\fi + \ifnum\blx@tempb<\numexpr\blx@tempcntc*10\relax\else1\fi + 0=\z@ + \expandafter\blx@comprange@comp@div + \else + \expandafter\blx@comprange@end + \fi} + +\def\blx@comprange@end{% + \numdef\blx@tempb\blx@tempb + \ifnum\blx@tempe>\c@maxcomprange\relax + \numdef\blx@tempc\blx@tempc + \else + \numdef\blx@tempc\blx@tempd + \fi + \edef\blx@tempb{\blx@range@out@value{\blx@tempb\noexpand\bibrangedash\blx@tempc}}% + \blx@tempb} + +\def\blx@comprange@comp@div{% + \unless\ifnum\blx@tempb<\blx@tempcntc + \blx@tempcnta\blx@tempb\relax + \blx@tempcntb\blx@tempc\relax + \divide\blx@tempcnta\blx@tempcntc + \divide\blx@tempcntb\blx@tempcntc + \ifnum\blx@tempcnta=\blx@tempcntb + \edef\blx@tempd{\expandafter\@gobble\blx@tempd}% + \numdef\blx@tempe\blx@tempcntc + \fi + \fi + \divide\blx@tempcntc10\relax + \ifnum + \ifnum\blx@tempcntc<10 1\fi + \ifnum\blx@tempcntc>\c@mincompwidth\else 1\fi + 0=\z@ + \expandafter\blx@comprange@comp@div + \else + \expandafter\blx@comprange@end + \fi} + +\def\blx@range@chunk#1{% + \blx@range@chunk@semcol#1;&} + +\def\blx@range@chunk@semcol#1;#2&{% + \notblank{#1} + {\blx@range@chunk@comma#1,&} + {}% + \notblank{#2} + {\notblank{#1}{\blx@range@out@delim{;\space}}{}% + \blx@range@chunk@semcol#2&} + {}} + +\def\blx@range@chunk@comma#1,#2&{% + \notblank{#1} + {\expandafter\blx@range@split + \expandafter{\@firstofone#1}} + {}% + \notblank{#2} + {\notblank{#1}{\blx@range@out@delim{,\space}}{}% + \blx@range@chunk@comma#2&} + {}} + +% <*>[<postpro>]{<string>} + +\newrobustcmd*{\mkfirstpage}{% + \begingroup + \@ifstar + {\blx@firstpage\blx@firstpage@ii} + {\blx@firstpage\blx@firstpage@i}} + +\def\blx@firstpage#1{% + \@ifnextchar[{#1}{#1[\@firstofone]}} + +\def\blx@firstpage@i[#1]#2{% + \let\blx@tempa\@empty + \protected\def\blx@range@out@value{\appto\blx@tempa}% + \let\blx@range@out@delim\blx@range@out@value + \let\blx@range@split\blx@firstpage@split + \blx@range@chunk{#2}% + \edef\blx@tempa{\endgroup + \unexpanded{#1}{\expandonce\blx@tempa}}% + \blx@tempa} + +\def\blx@firstpage@ii[#1]#2{% + \protected\def\blx@range@out@value{#1}% + \let\blx@range@out@delim\@firstofone + \let\blx@range@split\blx@firstpage@split + \blx@range@chunk{#2}% + \endgroup} + +\def\blx@firstpage@split#1{% + \def\blx@firstpage@abort{\blx@range@out@value{#1}}% + \blx@firstpage@range#1\bibrangedash\bibrangedash&} + +\def\blx@firstpage@range#1\bibrangedash#2\bibrangedash#3&{% + \ifblank{#3} + {\blx@firstpage@hyphen#1--&} + {\ifblank{#1} + {\blx@range@out@value{\bibrangedash#2}} + {\blx@range@out@value{#1}}}} + +\def\blx@firstpage@hyphen#1-#2-#3&{% + \ifblank{#3} + {\blx@firstpage@abort} + {\ifblank{#1} + {\ifblank{#2} + {\blx@firstpage@hyphen@i#3&} + {\blx@range@out@value{\bibrangedash#2}}} + {\blx@range@out@value{#1}}}} + +\def\blx@firstpage@hyphen@i#1-#2&{% + \ifblank{#1} + {\ifblank{#2} + {\blx@firstpage@abort} + {\blx@firstpage@hyphen@i#2&}} + {\blx@range@out@value{\bibrangedash#1}}} + +\newcommand*{\ppspace}{\addnbspace} +\newcommand*{\sqspace}{\addnbspace} + +\newrobustcmd*{\RN}[1]{% + \begingroup + \expandafter\RNfont + \expandafter{\romannumeral#1}% + \endgroup} +\newrobustcmd*{\Rn}[1]{% + \begingroup + \expandafter\Rnfont + \expandafter{\romannumeral#1}% + \endgroup} + +\newcommand*{\RNfont}{\uppercase} +\newcommand*{\Rnfont}{} + +% {<init>}{<entrytype>} + +\protected\def\blx@imc@usedriver#1#2{% + \begingroup + \let\finentry\blx@finentry@usedrv + \let\newblock\relax + \let\abx@macro@bibindex\@empty + \let\abx@macro@pageref\@empty + \csuse{blx@hook@bbxinit}#1% + \blx@beglang + \blx@driver{#2}% + \blx@endlang + \endgroup} + +% Punctuation + +\protected\def\blx@initunit{% + \global\togglefalse{blx@block}% + \global\togglefalse{blx@unit}% + \global\togglefalse{blx@insert}% + \global\togglefalse{blx@lastins}% + \global\let\blx@unitpunct\newunitpunct + \blx@imc@resetpunctfont} + +\def\blx@begunit{% + \toggletrue{blx@tempa}% + \iftoggle{blx@insert} + {\iftoggle{blx@unit} + {\begingroup + \let\blx@begunit\@empty + \let\blx@endunit\@empty + \let\blx@endnounit\@empty + \blx@unitpunct\blx@postpunct + \endgroup + \global\togglefalse{blx@unit}% + \togglefalse{blx@tempa}} + {\blx@postpunct}% + \iftoggle{blx@block} + {\begingroup + \let\blx@begunit\@empty + \let\blx@endunit\@empty + \let\blx@endnounit\@empty + \newblockpunct + \endgroup + \global\togglefalse{blx@block}% + \togglefalse{blx@tempa}} + {}} + {}% + \blx@postpunct + \blx@imc@resetpunctfont + \iftoggle{blx@tempa} + {} + {\global\togglefalse{blx@insert}}% + \blx@leavevmode + \begingroup} + +\def\blx@endunit{% + \endgroup + \global\toggletrue{blx@insert}% + \global\toggletrue{blx@lastins}} + +\def\blx@nounit{% + \global\togglefalse{blx@lastins}} + +\def\blx@endnounit{% + \endgroup\blx@nounit} + +\protected\def\blx@imc@newblock{% + \global\toggletrue{blx@block}}% + +\protected\def\blx@imc@newunit{% + \global\let\blx@unitpunct\newunitpunct + \global\toggletrue{blx@unit}}% + +\protected\def\blx@imc@setunit{% + \@ifstar\blx@setunit@i\blx@setunit} + +\long\def\blx@setunit#1{% + \long\gdef\blx@unitpunct{#1}% + \global\toggletrue{blx@unit}}% + +\def\blx@setunit@i{% + \iftoggle{blx@lastins} + {\blx@setunit} + {\@gobble}} + +\protected\def\blx@imc@finentry{% + \unspace\finentrypunct + \blx@postpunct + \blx@initunit} + +\protected\def\blx@finentry@usedrv{% + \unspace\blx@initunit +} + +\protected\def\blx@finentry@inset{% + \blx@setunit\entrysetpunct + \global\toggletrue{blx@block}} + +\blx@regimcs{% + \ifdriver \thefield \strfield \thelist \thename \clearfield \clearlist + \clearname \restorefield \restorelist \restorename + \ifcategory \ifentrycategory \ifkeyword \ifentrykeyword + \ifciteseen \ifentryseen \ifciteibid \ifciteidem \ifopcit \ifloccit + \ifcurrentfield \ifcurrentlist \ifcurrentname \ifentrytype + \iffieldequalcs \iffieldequals \iffieldequalstr \iffieldsequal + \iffieldundef \iffieldxref \iflistequalcs \iflistequals + \iflistsequal \iflistundef \iflistxref \ifmorenames \ifmoreitems + \ifnameequalcs \ifnameequals \ifnamesequal \ifnameundef \ifnamexref + \iffirstonpage \ifsamepage \savefield \savefieldcs \savelist + \savelistcs \savename \savenamecs \usedriver + \ifinteger \ifnumeral \ifnumerals \ifpages + \iffieldint \iffieldnum \iffieldnums \iffieldpages + \mkpageprefix \mkpagetotal \mkpagefirst + \newblock \newunit \setunit \finentry} + +\appto\blx@blxinit{% + \def\ifnatbibmode{\iftoggle{blx@natbib}}% + \def\ifcitation{\iftoggle{blx@citation}}% + \def\ifbibliography{\iftoggle{blx@bibliography}}% + \def\ifciteindex{\iftoggle{blx@citeindex}}% + \def\ifbibindex{\iftoggle{blx@bibindex}}% + \def\iffootnote{\iftoggle{blx@footnote}}% + \def\ifuseprefix{\iftoggle{blx@useprefix}}% + \def\ifuseauthor{\iftoggle{blx@useauthor}}% + \def\ifuseeditor{\iftoggle{blx@useeditor}}% + \def\ifusetranslator{\iftoggle{blx@usetranslator}}% + \def\iffirstinits{\iftoggle{blx@firstinits}}% + \def\ifsingletitle{\iftoggle{abx@bool@singletitle}}% + \def\ifandothers#1{\iftoggle{abx@bool@more#1}}% + \protected\def\pno{\bibstring{page}}% + \protected\def\ppno{\bibstring{pages}}% + \let\nopp\relax + \protected\def\psq{\sqspace\bibstring{sequens}}% + \protected\def\psqq{\sqspace\bibstring{sequentes}}} + +% Make sure that commands which might pop up inside an \edef will be defined +% as something. If they are taken \AtBeginDocument then we assume that all will +% be well. If not, then provide a definition which will give an error outside +% of a citation context. +\AtBeginDocument{% + \protected\def\do#1{% + \ifdefined#1% + \else + \protected\def#1{\ERROR}% + \fi + }% + \docsvlist{\pno,\ppno,\nopp,\psq,\psqq}% +} + +%% Global formatting hooks + +% capitalization + +% {<text>} + +\newrobustcmd{\MakeCapital}[1]{% + \begingroup + \blx@mkcp@init + \protected@edef\blx@tempa{#1}% + \expandafter\blx@mkcp@parse\blx@tempa\@empty\blx@mkcp@end} + +\def\blx@mkcp@init{% + \def\blx@mkcp@iec{\noexpand\blx@mkcp@iec\noexpand}% + \def\blx@mkcp@bbl{\noexpand\blx@mkcp@bbl\noexpand}% + \def\blx@mkcp@sgl{\noexpand\blx@mkcp@sgl\noexpand}% + \def\blx@mkcp@dbl{\noexpand\blx@mkcp@dbl\noexpand}% + \def\do##1{\def##1{\blx@mkcp@sgl##1}}\abx@dosingleaccents + \def\do##1{\def##1{\blx@mkcp@dbl##1}}\abx@dodoubleaccents + \def\IeC##1{\blx@mkcp@iec\IeC{##1}}% + \def\@tabacckludge##1{% + \expandafter\blx@mkcp@sgl\csname\string##1\endcsname}} + +\begingroup +\catcode`\"=\active +\gappto\blx@mkcp@init{% + \ifnum\catcode`\"=\active + \def"#1{\blx@mkcp@bbl"\noexpand#1}% + \fi} +\endgroup + +\def\blx@mkcp@parse{% + \futurelet\@let@token\blx@mkcp@eval} + +\long\def\blx@mkcp@eval{% + \ifx\@let@token\blx@mkcp@iec + \expandafter\blx@mkcp@getiec + \fi + \ifx\@let@token\blx@mkcp@bbl + \expandafter\blx@mkcp@gettwo + \fi + \ifx\@let@token\blx@mkcp@sgl + \expandafter\blx@mkcp@gettwo + \fi + \ifx\@let@token\blx@mkcp@dbl + \expandafter\blx@mkcp@getthree + \fi + \blx@mkcp@case} + +\def\blx@mkcp@getiec#1\blx@mkcp@case#2#3#4{% + \blx@mkcp@case{#2#3{#4}}} + +\def\blx@mkcp@gettwo#1\blx@mkcp@case#2#3#4{% + \blx@mkcp@case{#2#3#4}} + +\def\blx@mkcp@getthree#1\blx@mkcp@case#2#3#4#5{% + \blx@mkcp@case{#2#3#4#5}} + +\long\def\blx@mkcp@case#1{% + \begingroup + \def\i{I}\def\j{J}% + \def\do##1##2{\let##1##2\do}% + \expandafter\do\@uclclist\relax{\relax\@gobble}% + \uppercase{\protected@edef\blx@tempa{\endgroup\blx@mkcp@end#1}}% + \blx@tempa} + +\protected\long\def\blx@mkcp@end#1\blx@mkcp@end{% + \let\blx@mkcp@iec\noexpand + \let\blx@mkcp@bbl\noexpand + \let\blx@mkcp@sgl\noexpand + \let\blx@mkcp@dbl\noexpand + \protected@edef\blx@tempa{\endgroup#1}% + \blx@tempa} + +\def\abx@dosingleaccents{% + \do\"\do\'\do\`\do\^\do\~\do\=\do\.% + \do\H\do\b\do\c\do\d\do\r\do\u\do\v} +\def\abx@dodoubleaccents{% + \do\t} + +% {<text>} + +\newrobustcmd*{\MakeSentenceCase}{% + \@ifstar\blx@mksc@i\blx@mksc@ii} + +\def\blx@mksc@i{% + \ifdef\abx@field@hyphenation + {\xifinlist\abx@field@hyphenation\blx@cmksc@lang + {\blx@mksc@ii} + {\@firstofone}} + {\blx@mksc@ii}} + +\long\def\blx@mksc@ii#1{% + \begingroup + \let\blx@tempa\@empty + \let\blx@tempb\@empty + \blx@mksc@init + \protected@edef\@tempa{#1}% + \expandafter\blx@mksc@parse\@tempa\blx@mksc@end} + +\def\blx@mksc@init{% + \blx@mkcp@init + \def\blx@mkcp@nil{\noexpand\blx@mkcp@nil\noexpand}% + \def\i{\blx@mkcp@nil\i}\def\j{\blx@mkcp@nil\j}% + \def\do##1{% + \ifx##1\relax + \else + \def##1{\blx@mkcp@nil##1}% + \expandafter\do + \fi}% + \expandafter\do\@uclclist\relax} + +\def\blx@mksc@parse{% + \futurelet\@let@token\blx@mksc@eval} + +\def\blx@mksc@eval{% + \ifx\@let@token\blx@mksc@end + \expandafter\blx@mksc@end + \fi + \ifx\@let@token\bgroup + \expandafter\blx@mksc@group + \fi + \ifx\@let@token\@sptoken + \expandafter\blx@mksc@space + \fi + \ifx\@let@token\blx@mkcp@nil + \expandafter\blx@mksc@getone + \fi + \ifx\@let@token\blx@mkcp@iec + \expandafter\blx@mksc@getiec + \fi + \ifx\@let@token\blx@mkcp@bbl + \expandafter\blx@mksc@gettwo + \fi + \ifx\@let@token\blx@mkcp@sgl + \expandafter\blx@mksc@gettwo + \fi + \ifx\@let@token\blx@mkcp@dbl + \expandafter\blx@mksc@getthree + \fi + \if\noexpand\@let@token\relax + \expandafter\blx@mksc@cs + \fi + \blx@mksc@other} + +\def\blx@mksc@end#1\blx@mksc@end{% + \blx@mksc@eject + \let\blx@mkcp@nil\noexpand + \let\blx@mkcp@iec\noexpand + \let\blx@mkcp@bbl\noexpand + \let\blx@mkcp@sgl\noexpand + \let\blx@mkcp@dbl\noexpand + \let\MakeUppercase\relax + \let\MakeLowercase\relax + \protected@edef\blx@tempa{\endgroup\blx@tempa}% + \blx@tempa} + +\long\def\blx@mksc@group#1\blx@mksc@other#2{% + \futurelet\@let@token\blx@mksc@ingroup#2&{#2}% + \blx@mksc@endhead + \blx@mksc@parse} + +\long\def\blx@mksc@ingroup#1{% + \if\noexpand\@let@token\relax + \blx@mksc@locase{{#2}}% + \else + \blx@mksc@nocase{{#2}}% + \fi} + +\def\blx@mksc@space{\def\blx@mksc@space##1\blx@mksc@other} +\csuse{blx@mksc@space} {% + \blx@mksc@anycase{ }% + \blx@mksc@endhead + \blx@mksc@parse} + +\long\def\blx@mksc@cs#1\blx@mksc@other#2{% + \ifcat\noexpand~\noexpand#2% + \blx@mksc@locase{#2}% + \else + \blx@mksc@nocase{#2}% + \fi + \blx@mksc@endhead + \blx@mksc@parse} + +\def\blx@mksc@getiec#1\blx@mksc@other#2#3#4{% + \blx@mksc@other{#2#3{#4}}} + +\def\blx@mksc@getone#1\blx@mksc@other#2#3{% + \blx@mksc@other{#2#3}} + +\def\blx@mksc@gettwo#1\blx@mksc@other#2#3#4{% + \blx@mksc@other{#2#3#4}} + +\def\blx@mksc@getthree#1\blx@mksc@other#2#3#4#5{% + \blx@mksc@other{#2#3#4#5}} + +\long\def\blx@mksc@other#1{% + \blx@mksc@locase{#1}% + \blx@mksc@endhead + \blx@mksc@parse} + +\def\blx@mksc@locase{% + \appto\blx@tempb} + +\def\blx@mksc@nocase{% + \blx@mksc@eject + \appto\blx@tempa} + +\def\blx@mksc@anycase{% + \ifx\blx@tempb\@empty + \expandafter\appto + \expandafter\blx@tempa + \else + \expandafter\appto + \expandafter\blx@tempb + \fi} + +\def\blx@mksc@eject{% + \ifx\blx@tempb\@empty + \else + \eappto\blx@tempa{\noexpand\MakeLowercase{\expandonce\blx@tempb}}% + \let\blx@tempb\@empty + \fi} + +\def\blx@mksc@endhead{% + \ifx\blx@tempb\@empty + \else + \eappto\blx@tempa{\noexpand\MakeCapital{\expandonce\blx@tempb}}% + \let\blx@tempb\@empty + \fi + \let\blx@mksc@endhead\relax} + +% {<language,language,...>} + +\newrobustcmd*{\DeclareCaseLangs}{% + \@ifstar + {\blx@defcaselangs} + {\global\let\blx@cmksc@lang\@empty + \blx@defcaselangs}} + +\def\blx@defcaselangs#1{% + \ifblank{#1} + {} + {\forcsvlist{\listgadd\blx@cmksc@lang}{#1}}} + +\DeclareCaseLangs{% + american,british,canadian, + english,USenglish,UKenglish, + australian,newzealand} + +%% Main formatting commands + +% [<entrytype>]{<name>}{<definiton>} + +\newrobustcmd*{\DeclareNameFormat}{% + \@ifstar + {\blx@defformat\blx@defnameformat{nfd}*} + {\blx@defformat\blx@defnameformat{nfd}{}}} +\newrobustcmd*{\DeclareIndexNameFormat}{% + \@ifstar + {\blx@defformat\blx@defnameformat{nid}*} + {\blx@defformat\blx@defnameformat{nid}{}}} + +\newrobustcmd*{\DeclareListFormat}{% + \@ifstar + {\blx@defformat\blx@defplainformat{lfd}*} + {\blx@defformat\blx@defplainformat{lfd}{}}} +\newrobustcmd*{\DeclareIndexListFormat}{% + \@ifstar + {\blx@defformat\blx@defplainformat{lid}*} + {\blx@defformat\blx@defplainformat{lid}{}}} + +\newrobustcmd*{\DeclareFieldFormat}{% + \@ifstar + {\blx@defformat\blx@defplainformat{ffd}*} + {\blx@defformat\blx@defplainformat{ffd}{}}} +\newrobustcmd*{\DeclareIndexFieldFormat}{% + \@ifstar + {\blx@defformat\blx@defplainformat{fid}*} + {\blx@defformat\blx@defplainformat{fid}{}}} + +% {<macro>}{<class>}{<*>} + +\def\blx@defformat#1#2#3{% + \@ifnextchar[%] + {\blx@defformat@i{#1}{#2}{#3}} + {\blx@defformat@i{#1}{#2}{#3}[*]}} + +% {<macro>}{<class>}{<*>}[<entrytype>]{<name>} + +\def\blx@defformat@i#1#2#3[#4]#5{% + \notblank{#3} + {\blx@resetformat{#2}{#5}} + {}% + \def\blx@defformat@a{#2}% + \def\blx@defformat@b{#4}% + \blx@xsanitizeafter{\def\blx@defformat@c}{#5}% + \afterassignment\blx@defformat@ii + #1} + +\def\blx@defformat@ii{% + \expandafter\forcsvlist + \expandafter\blx@defformat@iii + \expandafter{\blx@defformat@b}} + +\def\blx@defformat@iii#1{% + \cslet{abx@\blx@defformat@a @#1@\blx@defformat@c}\blx@defformat@d} + +\def\blx@defplainformat{% + \long\def\blx@defformat@d##1} + +\def\blx@defnameformat{% + \long\def\blx@defformat@d##1##2##3##4##5##6##7##8} + +\def\blx@resetformat#1#2{% + \let\blx@saved@do\do + \def\do##1{\blx@resetformat@i{#1}{#2}{##1}}% + \blx@safe@actives + \abx@dotypes + \blx@rest@actives + \let\do\blx@saved@do} + +\def\blx@resetformat@i#1#2#3{% + \ifcsdef{abx@#1@#3@#2} + {\csundef{abx@#1@#3@#2}} + {}} + +% {<name>}{<name>} + +\def\blx@letformat#1#2{% + \blx@safe@actives + \afterassignment\blx@rest@actives + \csletcs{#1}{#2}} + +% [aliastype]{aliasname}[formattype]{formatname} + +\def\blx@defalias#1{% + \@ifnextchar[%] + {\blx@defalias@i{#1}} + {\blx@defalias@i{#1}[*]}} +\def\blx@defalias@i#1[#2]#3{% + \@ifnextchar[%] + {\blx@defalias@ii{#1}{#2}{#3}} + {\blx@defalias@ii{#1}{#2}{#3}[*]}} +\def\blx@defalias@ii#1#2#3[#4]#5{% + \blx@safe@actives + \afterassignment\blx@rest@actives + \csedef{abx@#1@#2@#3}{% + \expandonce{\csname abx@#1@#4@#5\endcsname}}} + +% {<macro>}{<id>}{<name>}{<field>} + +\def\blx@getformat#1#2#3#4{% + \blx@safe@actives + \afterassignment\blx@rest@actives + \ifcsundef{abx@#2@\blx@imc@thefield{entrytype}@#3} + {\ifcsundef{abx@#2@*@#3} + {\ifcsundef{abx@#2@\blx@imc@thefield{entrytype}@#4} + {\ifcsundef{abx@#2@*@#4} + {\letcs#1{abx@#2@*@default}} + {\letcs#1{abx@#2@*@#4}}} + {\letcs#1{abx@#2@\blx@imc@thefield{entrytype}@#4}}} + {\letcs#1{abx@#2@*@#3}}} + {\letcs#1{abx@#2@\blx@imc@thefield{entrytype}@#3}}} + +% [<entrytype>]{<name>} + +\newrobustcmd*{\savefieldformat}[2][*]{\blx@save{abx@ffd@#1@#2}} +\newrobustcmd*{\savelistformat}[2][*]{\blx@save{abx@lfd@#1@#2}} +\newrobustcmd*{\savenameformat}[2][*]{\blx@save{abx@nfd@#1@#2}} + +\newrobustcmd*{\restorefieldformat}[2][*]{\blx@restore{abx@ffd@#1@#2}} +\newrobustcmd*{\restorelistformat}[2][*]{\blx@restore{abx@lfd@#1@#2}} +\newrobustcmd*{\restorenameformat}[2][*]{\blx@restore{abx@nfd@#1@#2}} + +% [<entrytype>]{<alias>}[<entrytype>]{<name>} + +\newrobustcmd*{\DeclareNameAlias}{\blx@defalias{nfd}} +\newrobustcmd*{\DeclareIndexNameAlias}{\blx@defalias{nid}} + +\newrobustcmd*{\DeclareListAlias}{\blx@defalias{lfd}} +\newrobustcmd*{\DeclareIndexListAlias}{\blx@defalias{lid}} + +\newrobustcmd*{\DeclareFieldAlias}{\blx@defalias{ffd}} +\newrobustcmd*{\DeclareIndexFieldAlias}{\blx@defalias{fid}} + +% [<format>]{<text>} + +\newrobustcmd{\blx@imc@printtext}[2][]{% + \ifblank{#2} + {\blx@nounit} + {\ifblank{#1} + {\let\blx@theformat\@firstofone} + {\blx@getformat\blx@theformat{ffd}{#1}{}}% + \ifdefvoid\blx@theformat + {\blx@nounit} + {\blx@begunit + \blx@theformat{#2}% + \blx@endunit}}} + +% [<format>]{<field>} + +\newrobustcmd*{\blx@imc@printfield}[2][]{% + \blx@imc@iffieldundef{#2} + {\blx@nounit} + {\blx@getformat\blx@theformat{ffd}{#1}{#2}% + \ifdefvoid\blx@theformat + {\blx@nounit} + {\blx@begunit + \def\currentfield{#2}% + \expandafter\expandafter + \expandafter\blx@theformat + \expandafter\expandafter + \expandafter{\csname abx@field@#2\endcsname}% + \blx@endunit}}} + +% [<format>]{<field>} + +\newcommand*{\blx@imc@indexfield}[2][]{% + \blx@imc@iffieldundef{#2} + {} + {\blx@getformat\blx@theformat{fid}{#1}{#2}% + \ifdefvoid\blx@theformat + {} + {\begingroup + \def\currentfield{#2}% + \letcs\blx@tempa{abx@field@#2}% + \expandafter\blx@theformat\expandafter{\blx@tempa}% + \endgroup}}} + +% [<format>]{<file>} + +\newrobustcmd*{\blx@imc@printfile}[2][]{% + \iftoggle{blx@loadfiles} + {\IfFileExists{#2} + {\listxadd\blx@list@req@edit{#2}% + \blx@imc@printtext[#1]{\input{#2}\unspace}} + {\blx@nounit}} + {\blx@nounit}} + +% {<macro>}[<format>][<start>-<stop>] +% => <macro>{<format>}{<start>}{<stop>} + +\def\blx@listargs#1{% + \@ifnextchar[%] + {\blx@listargs@i{#1}} + {#1{}{}{}}} + +\def\blx@listargs@i#1[#2]{% + \@ifnextchar[%] + {\blx@listargs@ii{#1}{#2}} + {#1{#2}{}{}}} + +\def\blx@listargs@ii#1#2[#3]{% + \blx@listargs@iii{#1}{#2}#3&} + +\def\blx@listargs@iii#1#2#3-#4&{% + #1{#2}{#3}{#4}} + +% [<format>][<start>-<stop>]{<namelist>} + +\protected\def\blx@imc@printnames{% + \blx@listargs\blx@printnames} + +% {<format>}{<start>}{<stop>}{<namelist>} + +\def\blx@printnames#1#2#3#4{% + \blx@imc@ifnameundef{#4} + {\blx@nounit} + {\blx@getformat\blx@theformat{nfd}{#1}{#4}% + \ifdefvoid\blx@theformat + {\blx@nounit} + {\blx@begunit + \blx@namesetup{#2}{#3}{#4}% + \expandafter\blx@nameparser\blx@thedata{}&% + \blx@endunit}}} + +\def\blx@namesetup#1#2#3{% + \def\currentname{#3}% + \c@listcount\@ne + \c@listtotal\csname c@#3\endcsname + \blx@namesetup@i{#3}% + \ifblank{#1} + {\c@liststart\@ne} + {\ifnum#1<\@ne + \c@liststart\@ne + \else + \c@liststart#1\relax + \fi}% + \ifblank{#2} + {\c@liststop\c@listtotal + \ifnum\c@liststop>\c@maxnames + \c@liststop\c@minnames + \ifnum\c@uniquelist>\c@liststop + \c@liststop\c@uniquelist + \fi + \fi} + {\ifnum#2>\c@listtotal + \c@liststop\c@listtotal + \else + \ifnum#2<\@ne + \c@liststop\@ne + \else + \c@liststop#2\relax + \fi + \fi}% + \ifnumequal\blx@backend\blx@backend@biber + {} + {\let~\bibnamedelima}% BibTeX only + \blx@namecodes} + +\def\blx@namesetup@i#1{% + \expandafter\expandafter + \expandafter\blx@namesetup@ii\csname abx@name@#1\endcsname} + +\def\blx@namesetup@ii#1#2{% + \c@uniquelist\z@ + \ifblank{#1} + {} + {\setkeys{blx@opt@name}{#1}}% + \def\blx@thedata{#2}} + +\define@key{blx@opt@name}{uniquelist}{\c@uniquelist#1\relax} +\define@key{blx@opt@name}{uniquename}{\c@uniquename#1\relax} +\define@key{blx@opt@name}{hash}{\edef\abx@field@hash{\detokenize{#1}}} + +\newrobustcmd*{\bibinitperiod}{\adddot} +\newrobustcmd*{\bibinitdelim}{\addnbspace} +\newrobustcmd*{\bibinithyphendelim}{.\mbox{-}} +\newrobustcmd*{\bibnamedelima}{\addhighpenspace} +\newrobustcmd*{\bibnamedelimb}{\addlowpenspace} +\newrobustcmd*{\bibnamedelimc}{\addhighpenspace} +\newrobustcmd*{\bibnamedelimd}{\addlowpenspace} +\newrobustcmd*{\bibnamedelimi}{\addnbspace} + +% [<format>][<start>-<stop>]{<namelist>} + +\protected\def\blx@imc@indexnames{% + \blx@listargs\blx@indexnames} + +% {<format>}{<start>}{<stop>}{<namelist>} + +\def\blx@indexnames#1#2#3#4{% + \blx@imc@ifnameundef{#4} + {} + {\blx@getformat\blx@theformat{nid}{#1}{#4}% + \ifdefvoid\blx@theformat + {} + {\begingroup + \blx@namesetup{#2}{#3}{#4}% + \blx@indexnamesetup + \expandafter\blx@nameparser\blx@thedata{}&% + \endgroup}}} + +\def\blx@indexnamesetup{% + \let\bibinitperiod\bibindexinitperiod + \let\bibinitdelim\bibindexinitdelim + \let\bibinithyphendelim\bibindexinithyphendelim + \let\bibnamedelima\bibindexnamedelima + \let\bibnamedelimb\bibindexnamedelimb + \let\bibnamedelimc\bibindexnamedelimc + \let\bibnamedelimd\bibindexnamedelimd + \let\bibnamedelimi\bibindexnamedelimi} + +% {<name1>}{<name2>}{...} + +\long\def\blx@nameparser#1{% + \ifblank{#1} + {\blx@namebreak} + {\ifnum\c@listcount<\c@liststart + \else + \blx@nameparser@i#1% + \fi + \advance\c@listcount\@ne + \ifnum\c@listcount>\c@liststop + \expandafter\blx@namebreak + \fi + \blx@nameparser}} + +\long\def\blx@nameparser@i#1{% + \ifblank{#1} + {} + {\setkeys{blx@opt@name}{#1}}% + \blx@theformat} + +\long\def\blx@namebreak#1&{} + +% [<format>][<start>-<stop>]{<plainlist>} + +\protected\def\blx@imc@printlist{% + \blx@listargs\blx@printlist} + +% {<format>}{<start>}{<stop>}{<plainlist>} + +\def\blx@printlist#1#2#3#4{% + \blx@imc@iflistundef{#4} + {\blx@nounit} + {\blx@getformat\blx@theformat{lfd}{#1}{#4}% + \ifdefvoid\blx@theformat + {\blx@nounit} + {\blx@begunit + \blx@listsetup{#2}{#3}{#4}% + \expandafter\blx@listparser\blx@thedata{}&% + \blx@endunit}}} + +\def\blx@listsetup#1#2#3{% + \def\currentlist{#3}% + \c@listcount\@ne + \expandafter\c@listtotal\csname c@#3\endcsname + \letcs\blx@thedata{abx@list@#3}% + \ifblank{#1} + {\c@liststart\@ne} + {\ifnum#1<\@ne + \c@liststart\@ne + \else + \c@liststart#1\relax + \fi}% + \ifblank{#2} + {\c@liststop\c@listtotal + \ifnum\c@listtotal>\c@maxitems + \c@liststop\c@minitems + \fi} + {\ifnum#2>\c@listtotal + \c@liststop\c@listtotal + \else + \ifnum#2<\@ne + \c@liststop\@ne + \else + \c@liststop#2\relax + \fi + \fi}} + +% [<format>][<start>-<stop>]{<plainlist>} + +\protected\def\blx@imc@indexlist{% + \blx@listargs\blx@indexlist} + +% {<format>}{<start>}{<stop>}{<plainlist>} + +\def\blx@indexlist#1#2#3#4{% + \blx@imc@iflistundef{#4} + {} + {\blx@getformat\blx@theformat{lid}{#1}{#4}% + \ifdefvoid\blx@theformat + {} + {\begingroup + \blx@listsetup{#2}{#3}{#4}% + \expandafter\blx@listparser\blx@thedata{}&% + \endgroup}}} + +% {<item1>}{<item2>}{...} + +\long\def\blx@listparser#1{% + \ifblank{#1} + {\blx@listbreak} + {\ifnum\c@listcount<\c@liststart + \else + \blx@theformat{#1}% + \fi + \advance\c@listcount\@ne + \ifnum\c@listcount>\c@liststop + \expandafter\blx@listbreak + \fi + \blx@listparser}} + +\long\def\blx@listbreak#1&{} + +% <*>{<key>}{<code>} + +\protected\def\blx@imc@entrydata{% + \@ifstar + {\blx@xsanitizeafter{\blx@imc@entrydata@i\blx@saveentry}} + {\blx@xsanitizeafter{\blx@imc@entrydata@i{}}}} + +\long\def\blx@imc@entrydata@i#1#2#3{% + \blx@ifdata{#2} + {\begingroup + #1% + \blx@resetdata + \blx@getdata{#2}% + \blx@entrysetcount + \blx@setoptions@type\abx@field@entrytype + \blx@setoptions@entry + \addtocounter{instcount}\@ne + \blx@execute + \blx@beglang#3\blx@endlang + \endgroup} + {}} + +\protected\def\blx@imc@entryset#1#2{% + \blx@imc@iffieldundef{entrykey} + {} + {\begingroup + \long\def\blx@entryset@precode{#1}% + \long\def\blx@entryset@postcode{#2}% + \let\finentry\blx@finentry@inset + \let\do\blx@entryset + \blx@imc@docsvfield{entryset}% + \endgroup}} + +\def\blx@entryset#1{% + \blx@ifdata{#1} + {\begingroup + \blx@imc@clearlist{pageref}% + \blx@getdata{#1}% + \blx@setoptions@type\abx@field@entrytype + \def\abx@field@entrysetcount{1}% + \blx@entryset@precode + \blx@driver{\blx@imc@thefield{entrytype}}% + \blx@entryset@postcode + \endgroup} + {}% + \let\do\blx@entryset@i} + +\def\blx@entryset@i#1{% + \blx@imc@entrydata{#1}{% + \blx@entryset@precode + \blx@driver{\blx@imc@thefield{entrytype}} + \blx@entryset@postcode}} + +\blx@regimcs{% + \printtext \printfield \printlist \printnames \printfile + \indexfield \indexlist \indexnames \entrydata \entryset} + +%% Localization + +% [<wrapper>]{<string>} + +\newrobustcmd*{\blx@imc@bibstring}[2][\@firstofone]{% + \blx@bibstring{#1}{\abx@str}{#2}} + +\newrobustcmd*{\blx@imc@biblstring}[2][\@firstofone]{% + \blx@bibstring{#1}{abx@lstr}{#2}} + +\newrobustcmd*{\blx@imc@bibsstring}[2][\@firstofone]{% + \blx@bibstring{#1}{abx@sstr}{#2}} + +\protected\def\blx@bibstring#1#2#3{% + \blx@begunit + \blx@hyphenreset + \let\bibstring\blx@imc@bibxstring + \let\biblstring\blx@imc@bibxlstring + \let\bibsstring\blx@imc@bibxsstring + \lowercase{\edef\blx@tempa{#3}}% + \ifcsundef{#2@\blx@tempa} + {\blx@warn@nostring\blx@tempa + \blx@endnounit} + {\blx@imc@ifcapital + {#1{\MakeCapital{\csuse{#2@\blx@tempa}}}} + {#1{\csuse{#2@\blx@tempa}}}% + \blx@endunit}} + +% [<wrapper>]{<string>} + +\newrobustcmd*{\blx@imc@bibcpstring}[2][\@firstofone]{% + \blx@bibcpstring{#1}{\abx@str}{#2}} + +\newrobustcmd*{\blx@imc@bibcplstring}[2][\@firstofone]{% + \blx@bibcpstring{#1}{abx@lstr}{#2}} + +\newrobustcmd*{\blx@imc@bibcpsstring}[2][\@firstofone]{% + \blx@bibcpstring{#1}{abx@sstr}{#2}} + +\protected\def\blx@bibcpstring#1#2#3{% + \blx@begunit + \blx@hyphenreset + \let\bibstring\blx@imc@bibxstring + \let\biblstring\blx@imc@bibxlstring + \let\bibsstring\blx@imc@bibxsstring + \lowercase{\edef\blx@tempa{#3}}% + \ifcsundef{#2@\blx@tempa} + {\blx@warn@nostring\blx@tempa + \blx@endnounit} + {#1{\MakeCapital{\csuse{#2@\blx@tempa}}}% + \blx@endunit}} + +% [<wrapper>]{<string>} + +\newrobustcmd*{\blx@imc@biblcstring}[2][\@firstofone]{% + \blx@biblcstring{#1}{\abx@str}{#2}} + +\newrobustcmd*{\blx@imc@biblclstring}[2][\@firstofone]{% + \blx@biblcstring{#1}{abx@lstr}{#2}} + +\newrobustcmd*{\blx@imc@biblcsstring}[2][\@firstofone]{% + \blx@biblcstring{#1}{abx@sstr}{#2}} + +\protected\def\blx@biblcstring#1#2#3{% + \blx@begunit + \blx@hyphenreset + \let\bibstring\blx@imc@bibxstring + \let\biblstring\blx@imc@bibxlstring + \let\bibsstring\blx@imc@bibxsstring + \lowercase{\edef\blx@tempa{#3}}% + \ifcsundef{#2@\blx@tempa} + {\blx@warn@nostring\blx@tempa + \blx@endnounit} + {#1{\MakeLowercase{\csuse{#2@\blx@tempa}}}% + \blx@endunit}} + +% [<wrapper>]{<string>} + +\newrobustcmd*{\blx@imc@bibucstring}[2][\@firstofone]{% + \blx@bibucstring{#1}{\abx@str}{#2}} + +\newrobustcmd*{\blx@imc@bibuclstring}[2][\@firstofone]{% + \blx@bibucstring{#1}{abx@lstr}{#2}} + +\newrobustcmd*{\blx@imc@bibucsstring}[2][\@firstofone]{% + \blx@bibucstring{#1}{abx@sstr}{#2}} + +\protected\def\blx@bibucstring#1#2#3{% + \blx@begunit + \blx@hyphenreset + \let\bibstring\blx@imc@bibxstring + \let\biblstring\blx@imc@bibxlstring + \let\bibsstring\blx@imc@bibxsstring + \lowercase{\edef\blx@tempa{#3}}% + \ifcsundef{#2@\blx@tempa} + {\blx@warn@nostring\blx@tempa + \blx@endnounit} + {#1{\MakeUppercase{\csuse{#2@\blx@tempa}}}% + \blx@endunit}} + +% {<string>} + +\def\blx@imc@bibxstring#1{% + \blx@bibxstring{\abx@str}{#1}} + +\def\blx@imc@bibxlstring#1{% + \blx@bibxstring{abx@lstr}{#1}} + +\def\blx@imc@bibxsstring#1{% + \blx@bibxstring{abx@sstr}{#1}} + +\def\blx@bibxstring#1#2{% + \ifcsundef{#1@#2} + {\protect\blx@warn@nostring{#2}} + {\csuse{#1@#2}}} + +% {<string>}{<true>}{<false>} + +\def\blx@imc@ifbibstring#1{% + \ifcsundef{\abx@str @\detokenize{#1}} + {\@secondoftwo} + {\@firstoftwo}} + +\def\blx@imc@ifbibxstring#1{% + \blx@xsanitizeafter\ifcsundef{\abx@str @#1} + {\@secondoftwo} + {\@firstoftwo}} + +% {<field>}{<true>}{<false>} + +\def\blx@imc@iffieldbibstring#1{% + \blx@imc@iffieldundef{#1} + {\@secondoftwo} + {\ifcsundef{\abx@str @\detokenize\expandafter + \expandafter\expandafter{% + \csname abx@field@#1\endcsname}} + {\@secondoftwo} + {\@firstoftwo}}} + +\blx@regimcs{% + \bibstring \biblstring \bibsstring + \bibxstring \bibxlstring \bibxsstring + \bibcpstring \bibcplstring \bibcpsstring + \biblcstring \biblclstring \biblcsstring + \bibucstring \bibuclstring \bibucsstring + \ifbibstring \ifbibxstring \iffieldbibstring} + +\let\blx@hook@uc\relax +\let\blx@hook@lc\relax + +\AtEndPreamble{% + \toggletrue{blx@tempa}% + \toggletrue{blx@tempb}% + \expandafter\patchcmd\csname MakeUppercase \endcsname + {\protected@edef} + {\blx@hook@uc\protected@edef} + {\togglefalse{blx@tempa}} + {}% + \expandafter\patchcmd\csname MakeLowercase \endcsname + {\protected@edef} + {\blx@hook@lc\protected@edef} + {\togglefalse{blx@tempb}} + {}% + \@ifpackageloaded{textcase} + {\expandafter\patchcmd\csname MakeUppercase \endcsname + {\def\i} + {\blx@hook@uc\def\i} + {\togglefalse{blx@tempa}} + {}% + \expandafter\patchcmd\csname MakeLowercase \endcsname + {\@uclcnotmath{}} + {\@uclcnotmath{\blx@hook@lc}} + {\togglefalse{blx@tempb}} + {}% + \expandafter\patchcmd\csname MakeTextUppercase \endcsname + {\def\i} + {\blx@hook@uc\def\i} + {} + {}% + \expandafter\patchcmd\csname MakeTextLowercase \endcsname + {\@uclcnotmath{}} + {\@uclcnotmath{\blx@hook@lc}} + {} + {}} + {}% + \iftoggle{blx@tempa}{\blx@err@patch{\string\MakeUppercase}}{}% + \iftoggle{blx@tempb}{\blx@err@patch{\string\MakeLowercase}}{}% +} + +\appto\blx@blxinit{% + \def\blx@hook@uc{% + \def\bibstring{\blx@imc@bibucstring}% + \def\biblstring{\blx@imc@bibuclstring}% + \def\bibsstring{\blx@imc@bibucsstring}% + \def\biblcstring{\blx@imc@bibucstring}% + \def\biblclstring{\blx@imc@bibuclstring}% + \def\biblcsstring{\blx@imc@bibucsstring}% + \def\bibcpstring{\blx@imc@bibucstring}% + \def\bibcplstring{\blx@imc@bibuclstring}% + \def\bibcpsstring{\blx@imc@bibucsstring}}% + \def\blx@hook@lc{% + \def\bibstring{\blx@imc@biblcstring}% + \def\biblstring{\blx@imc@biblclstring}% + \def\bibsstring{\blx@imc@biblcsstring}% + \def\bibucstring{\blx@imc@biblcstring}% + \def\bibuclstring{\blx@imc@biblclstring}% + \def\bibucsstring{\blx@imc@biblcsstring}% + \def\bibcpstring{\blx@imc@biblcstring}% + \def\bibcplstring{\blx@imc@biblclstring}% + \def\bibcpsstring{\blx@imc@biblcsstring}}} + +\def\abx@dostrings{% + \do{bibliography}% + \do{references}% + \do{shorthands}% + \do{editor}% + \do{editors}% + \do{compiler}% + \do{compilers}% + \do{redactor}% + \do{redactors}% + \do{reviser}% + \do{revisers}% + \do{founder}% + \do{founders}% + \do{continuator}% + \do{continuators}% + \do{collaborator}% + \do{collaborators}% + \do{translator}% + \do{translators}% + \do{commentator}% + \do{commentators}% + \do{annotator}% + \do{annotators}% + \do{commentary}% + \do{annotations}% + \do{introduction}% + \do{foreword}% + \do{afterword}% + \do{editortr}% + \do{editorstr}% + \do{editorco}% + \do{editorsco}% + \do{editoran}% + \do{editorsan}% + \do{editorin}% + \do{editorsin}% + \do{editorfo}% + \do{editorsfo}% + \do{editoraf}% + \do{editorsaf}% + \do{editortrco}% + \do{editorstrco}% + \do{editortran}% + \do{editorstran}% + \do{editortrin}% + \do{editorstrin}% + \do{editortrfo}% + \do{editorstrfo}% + \do{editortraf}% + \do{editorstraf}% + \do{editorcoin}% + \do{editorscoin}% + \do{editorcofo}% + \do{editorscofo}% + \do{editorcoaf}% + \do{editorscoaf}% + \do{editoranin}% + \do{editorsanin}% + \do{editoranfo}% + \do{editorsanfo}% + \do{editoranaf}% + \do{editorsanaf}% + \do{editortrcoin}% + \do{editorstrcoin}% + \do{editortrcofo}% + \do{editorstrcofo}% + \do{editortrcoaf}% + \do{editorstrcoaf}% + \do{editortranin}% + \do{editorstranin}% + \do{editortranfo}% + \do{editorstranfo}% + \do{editortranaf}% + \do{editorstranaf}% + \do{translatorco}% + \do{translatorsco}% + \do{translatoran}% + \do{translatorsan}% + \do{translatorin}% + \do{translatorsin}% + \do{translatorfo}% + \do{translatorsfo}% + \do{translatoraf}% + \do{translatorsaf}% + \do{translatorcoin}% + \do{translatorscoin}% + \do{translatorcofo}% + \do{translatorscofo}% + \do{translatorcoaf}% + \do{translatorscoaf}% + \do{translatoranin}% + \do{translatorsanin}% + \do{translatoranfo}% + \do{translatorsanfo}% + \do{translatoranaf}% + \do{translatorsanaf}% + \do{byauthor}% + \do{byeditor}% + \do{byeditor}% + \do{bycompiler}% + \do{byredactor}% + \do{byreviser}% + \do{byreviewer}% + \do{byfounder}% + \do{bycontinuator}% + \do{bycollaborator}% + \do{bytranslator}% + \do{bycommentator}% + \do{byannotator}% + \do{withcommentator}% + \do{withannotator}% + \do{withintroduction}% + \do{withforeword}% + \do{withafterword}% + \do{byeditortr}% + \do{byeditorco}% + \do{byeditoran}% + \do{byeditorin}% + \do{byeditorfo}% + \do{byeditoraf}% + \do{byeditortrco}% + \do{byeditortran}% + \do{byeditortrin}% + \do{byeditortrfo}% + \do{byeditortraf}% + \do{byeditorcoin}% + \do{byeditorcofo}% + \do{byeditorcoaf}% + \do{byeditoranin}% + \do{byeditoranfo}% + \do{byeditoranaf}% + \do{byeditortrcoin}% + \do{byeditortrcofo}% + \do{byeditortrcoaf}% + \do{byeditortranin}% + \do{byeditortranfo}% + \do{byeditortranaf}% + \do{bytranslatorco}% + \do{bytranslatoran}% + \do{bytranslatorin}% + \do{bytranslatorfo}% + \do{bytranslatoraf}% + \do{bytranslatorcoin}% + \do{bytranslatorcofo}% + \do{bytranslatorcoaf}% + \do{bytranslatoranin}% + \do{bytranslatoranfo}% + \do{bytranslatoranaf}% + \do{and}% + \do{andothers}% + \do{andmore}% + \do{volume}% + \do{volumes}% + \do{involumes}% + \do{part}% + \do{jourvol}% + \do{jourser}% + \do{newseries}% + \do{oldseries}% + \do{edition}% + \do{reprint}% + \do{reprintof}% + \do{reprintas}% + \do{reprintfrom}% + \do{reviewof}% + \do{translationof}% + \do{translationas}% + \do{translationfrom}% + \do{origpubas}% + \do{origpubin}% + \do{astitle}% + \do{bypublisher}% + \do{page}% + \do{pages}% + \do{column}% + \do{columns}% + \do{line}% + \do{lines}% + \do{verse}% + \do{verses}% + \do{section}% + \do{sections}% + \do{paragraph}% + \do{paragraphs}% + \do{in}% + \do{inseries}% + \do{ofseries}% + \do{book}% + \do{issue}% + \do{number}% + \do{chapter}% + \do{mathesis}% + \do{phdthesis}% + \do{candthesis}% + \do{resreport}% + \do{techreport}% + \do{software}% + \do{datacd}% + \do{audiocd}% + \do{version}% + \do{doi}% + \do{url}% + \do{urlseen}% + \do{file}% + \do{inpreparation}% + \do{submitted}% + \do{inpress}% + \do{forthcoming}% + \do{library}% + \do{abstract}% + \do{annotation}% + \do{citedas}% + \do{seenote}% + \do{quotedin}% + \do{opcit}% + \do{loccit}% + \do{ibidem}% + \do{idem}% + \do{idemsf}% + \do{idemsm}% + \do{idemsn}% + \do{idempf}% + \do{idempm}% + \do{idempn}% + \do{idempp}% + \do{confer}% + \do{sequens}% + \do{sequentes}% + \do{passim}% + \do{see}% + \do{seealso}% + \do{backrefpage}% + \do{backrefpages}% + \do{thiscite}% + \do{january}% + \do{february}% + \do{march}% + \do{april}% + \do{may}% + \do{june}% + \do{july}% + \do{august}% + \do{september}% + \do{october}% + \do{november}% + \do{december}% + \do{langamerican}% + \do{langbrazilian}% + \do{langcroatian}% + \do{langdanish}% + \do{langdutch}% + \do{langenglish}% + \do{langfinnish}% + \do{langfrench}% + \do{langgerman}% + \do{langgreek}% + \do{langitalian}% + \do{langlatin}% + \do{langnorwegian}% + \do{langportuguese}% + \do{langrussian}% + \do{langspanish}% + \do{langswedish}% + \do{fromamerican}% + \do{frombrazilian}% + \do{fromcroatian}% + \do{fromdanish}% + \do{fromdutch}% + \do{fromenglish}% + \do{fromfinnish}% + \do{fromfrench}% + \do{fromgerman}% + \do{fromgreek}% + \do{fromitalian}% + \do{fromlatin}% + \do{fromnorwegian}% + \do{fromportuguese}% + \do{fromrussian}% + \do{fromspanish}% + \do{fromswedish}% + \do{countryde}% + \do{countryep}% + \do{countryeu}% + \do{countryfr}% + \do{countryuk}% + \do{countryus}% + \do{patent}% + \do{patentde}% + \do{patenteu}% + \do{patentfr}% + \do{patentuk}% + \do{patentus}% + \do{patreq}% + \do{patreqde}% + \do{patreqeu}% + \do{patreqfr}% + \do{patrequk}% + \do{patrequs}% +} + +\newrobustcmd*{\NewBibliographyString}[1]{% + \forcsvlist\blx@newstring{#1}} + +\def\blx@newstring#1{% + \ifcsundef{KV@blx@lbx@#1} + {\gappto\abx@dostrings{\do{#1}}% + \csgdef{KV@blx@lbx@#1}##1{\blx@defstring{#1}{##1}}} + {}} + +% in *.cbx/bbx/tex: <key> = {<string>}, +% in *.lbx: <key> = {{<longstring>}{<abbrevstring>}}, + +\def\do#1{\define@key{blx@lbx}{#1}{\blx@defstring{#1}{##1}}} +\abx@dostrings + +% in *.cbx/bbx/tex: (implicit) +% in *.lbx: inherit = {<language>}, + +\define@key{blx@lbx}{inherit}{% + \blx@lbxinput{#1}{}{\blx@err@nolang{#1}}% + \csuse{abx@strings@#1}} + +\def\blx@cfg@defstring#1#2{% + \csdef{abx@lstr@#1}{#2}% + \csdef{abx@sstr@#1}{#2}} + +\def\blx@lbx@defstring#1#2{% + \blx@lbx@defstring@i{#1}#2} +\def\blx@lbx@defstring@i#1#2#3{% + \csdef{abx@lstr@#1}{#2}% + \csdef{abx@sstr@#1}{#3}} + +% {<language>} + +\def\blx@lbxcheck#1{% + \ifcsdef{blx@lng@#1} + {\expandafter\expandafter\expandafter\IfFileExists + \expandafter\expandafter\expandafter{% + \csname blx@lng@#1\endcsname.lbx} + {} + {\blx@err@nolang{#1}}} + {\IfFileExists{#1.lbx} + {} + {\blx@err@nolang{#1}}}} + +% {<language>}{<definitions>} + +\newrobustcmd*{\DefineBibliographyExtras}[2]{% + \blx@lbxcheck{#1}% + \csgappto{blx@hook@extras@#1}{% + \blx@defbibextras{#1}{#2}}} +\@onlypreamble\DefineBibliographyExtras + +\newrobustcmd*{\UndefineBibliographyExtras}[2]{% + \blx@lbxcheck{#1}% + \csgappto{blx@hook@noextras@#1}{% + \blx@undefbibextras{#1}{#2}}} +\@onlypreamble\UndefineBibliographyExtras + +\def\blx@defbibextras#1{\csgappto{abx@extras@#1}} +\def\blx@undefbibextras#1{\csgappto{abx@noextras@#1}} + +% {<language>}{<language>} + +\def\blx@letbibextras#1#2{% + \blx@lbxinput{#2}{}{\blx@err@nolang{#2}}% + \global\csletcs{abx@extras@#1}{abx@extras@#2} + \global\csletcs{abx@noextras@#1}{abx@noextras@#2}}% + +% {<language>}{<strings>} + +\newrobustcmd*{\DefineBibliographyStrings}[2]{% + \blx@lbxcheck{#1}% + \csgappto{blx@hook@strings@#1}{% + \begingroup + \let\blx@defstring\blx@cfg@defstring + \blx@defbibstrings{#1}{#2}% + \endgroup}} +\@onlypreamble\DefineBibliographyStrings + +\def\blx@defbibstrings#1#2{% + \def\do##1{\csundef{abx@lstr@##1}\csundef{abx@sstr@##1}}% + \abx@dostrings + \csuse{abx@strings@#1}% + \setkeys{blx@lbx}{#2}% + \let\do\blx@defbibstrings@i + \csxdef{abx@strings@#1}{\abx@dostrings}% + \csgappto{abx@strings@#1}{% + \ifcsdef{\abx@str @bibliography} + {\letcs\bibname{\abx@str @bibliography}} + {\let\bibname\@empty}% + \ifcsdef{\abx@str @references} + {\letcs\refname{\abx@str @references}} + {\let\refname\@empty}% + \ifcsdef{\abx@str @shorthands} + {\letcs\losname{\abx@str @shorthands}} + {\let\losname\@empty}}} + +\def\blx@defbibstrings@i#1{% + \ifcsdef{abx@lstr@#1} + {\def\expandafter\noexpand\csname abx@lstr@#1\endcsname{% + \csexpandonce{abx@lstr@#1}}} + {\undef\expandafter\noexpand\csname abx@lstr@#1\endcsname}% + \ifcsdef{abx@sstr@#1} + {\def\expandafter\noexpand\csname abx@sstr@#1\endcsname{% + \csexpandonce{abx@sstr@#1}}} + {\undef\expandafter\noexpand\csname abx@sstr@#1\endcsname}} + +% {<language>}{<language>} + +\def\blx@letbibstrings#1#2{% + \blx@lbxinput{#2}{}{\blx@err@nolang{#2}}% + \global\csletcs{abx@strings@#1}{abx@strings@#2}}% + +% {<language>}{<exceptions>} + +\newrobustcmd*{\DefineHyphenationExceptions}[2]{% + \ifcsundef{l@#1} + {\blx@warn@nohyph{#1}} + {}% + \csgappto{blx@hook@hyph@#1}{\blx@hyphexcept{#1}{#2}}} +\@onlypreamble\DefineHyphenationExceptions + +\def\blx@hyphexcept#1#2{% + \ifcsundef{l@#1} + {\blx@warn@nohyph{#1}} + {\begingroup + \language\csname l@#1\endcsname\relax + \hyphenation{#2}% + \endgroup}} + +% {<language>}{<mapping>} + +\newrobustcmd*{\DeclareLanguageMapping}[2]{% + \csgdef{blx@lng@#1}{#2}} +\@onlypreamble\DeclareLanguageMapping + +% {<language>}{<success>}{<failure>} + +\def\blx@lbxinput#1{% + \ifcsdef{blx@lng@#1} + {\expandafter\expandafter\expandafter\blx@lbxinput@i + \expandafter\expandafter\expandafter{% + \csname blx@lng@#1\endcsname}{#1}} + {\blx@lbxinput@ii{#1}{#1}{language '#1'}}} + +% {<mapping>}{<language>} + +\def\blx@lbxinput@i#1#2{% + \global\csundef{blx@lng@#2}% + \IfFileExists{#1.lbx} + {\blx@lbxinput@ii{#2}{#1}{language '#2' -> '#1'}} + {\blx@warning@noline{% + File '#1.lbx' not found!\MessageBreak + Ignoring mapping '#2' -> '#1'}% + \blx@lbxinput{#2}}} + +% {<language>}{<lbxfile>}{<message>} + +\def\blx@lbxinput@ii#1#2#3{% + \begingroup + \setbox\@tempboxa=\hbox\bgroup + \aftergroup\endgroup + \blx@inputonce{#2.lbx}{#3} + {\global\cslet{abx@strings@#1}\@empty + \global\cslet{abx@extras@#1}\@empty + \global\cslet{abx@noextras@#1}\@empty + \blx@maplang{#1}{#1}% + \def\InheritBibliographyStrings{% + \blx@letbibstrings{#1}}% + \def\DeclareBibliographyStrings####1{% + \begingroup + \let\blx@defstring\blx@lbx@defstring + \blx@defbibstrings{#1}{####1}% + \endgroup}% + \def\InheritBibliographyExtras{\blx@letbibextras{#1}}% + \def\DeclareBibliographyExtras{\blx@defbibextras{#1}}% + \def\UndeclareBibliographyExtras{\blx@undefbibextras{#1}}% + \def\DeclareHyphenationExceptions{\blx@hyphexcept{#1}}% + \begingroup + \blx@saneccodes + \makeatletter} + {\endgroup + \csuse{blx@hook@strings@#1}% + \csuse{blx@hook@strings@#2}% + \csuse{blx@hook@extras@#1}% + \csuse{blx@hook@extras@#2}% + \csuse{blx@hook@noextras@#1}% + \csuse{blx@hook@noextras@#2}% + \csuse{blx@hook@hyph@#1}% + \csuse{blx@hook@hyph@#2}} + {\aftergroup\@firstoftwo} + {\aftergroup\@secondoftwo}% + \egroup} + +% {<language>} + +\def\blx@langsetup#1{% + \blx@lbxinput{#1} + {\edef\blx@languagename{#1}} + {\blx@warning + {Language '#1' not supported.\MessageBreak + Using fallback language '\blx@languagename'}% + \blx@lbxinput{\blx@languagename} + {\blx@maplang{#1}{\blx@languagename}} + {\blx@err@nolang{\blx@languagename}}}} + +% auxiliary macros + +% {<field base name>} + +\newrobustcmd*{\mkbibrangeshort}{% + \mkbibrangefull{short}} + +\newrobustcmd*{\mkbibrangelong}{% + \mkbibrangefull{long}} + +\newrobustcmd*{\mkbibrangeterse}{% + \mkbibrangetrunc{short}} + +\newrobustcmd*{\mkbibrangecomp}{% + \mkbibrangetrunc{long}} + +\newrobustcmd*{\mkbibrangeshortextra}{% + \mkbibrangefullextra{short}} + +\newrobustcmd*{\mkbibrangelongextra}{% + \mkbibrangefullextra{long}} + +\newrobustcmd*{\mkbibrangeterseextra}{% + \mkbibrangetruncextra{short}} + +\newrobustcmd*{\mkbibrangecompextra}{% + \mkbibrangetruncextra{long}} + +% {<short|long>}{<basename>} + +\newrobustcmd*{\mkbibrangefull}[2]{% + \iffieldundef{#2year} + {} + {\printtext[#2date]{% + \csuse{mkbibdate#1}{#2year}{#2month}{#2day}% + \iffieldundef{#2endyear} + {} + {\iffieldequalstr{#2endyear}{} + {\mbox{\bibdatedash}} + {\bibdatedash + \csuse{mkbibdate#1}{#2endyear}{#2endmonth}{#2endday}}}}}} + +\newrobustcmd*{\mkbibrangetrunc}[2]{% + \iffieldundef{#2year} + {} + {\printtext[#2date]{% + \iffieldsequal{#2year}{#2endyear} + {\iffieldsequal{#2month}{#2endmonth} + {\csuse{mkbibdate#1}{}{}{#2day}} + {\csuse{mkbibdate#1}{}{#2month}{#2day}}} + {\csuse{mkbibdate#1}{#2year}{#2month}{#2day}}% + \iffieldundef{#2endyear} + {} + {\iffieldequalstr{#2endyear}{} + {\mbox{\bibdatedash}} + {\bibdatedash + \csuse{mkbibdate#1}{#2endyear}{#2endmonth}{#2endday}}}}}} + +\newrobustcmd*{\mkbibrangefullextra}[2]{% + \iffieldundef{#2year} + {} + {\printtext[#2date]{% + \printtext{% + \csuse{mkbibdate#1}{#2year}{#2month}{#2day}}% + \iffieldundef{#2endyear} + {\printfield{extrayear}} + {\iffieldequalstr{#2endyear}{} + {\printfield{extrayear}% + \printtext{\mbox{\bibdatedash}}} + {\printtext{% + \bibdatedash + \csuse{mkbibdate#1}{#2endyear}{#2endmonth}{#2endday}% + \printfield{extrayear}}}}}}} + +\newrobustcmd*{\mkbibrangetruncextra}[2]{% + \iffieldundef{#2year} + {} + {\printtext[#2date]{% + \printtext{% + \iffieldsequal{#2year}{#2endyear} + {\iffieldsequal{#2month}{#2endmonth} + {\csuse{mkbibdate#1}{}{}{#2day}} + {\csuse{mkbibdate#1}{}{#2month}{#2day}}} + {\csuse{mkbibdate#1}{#2year}{#2month}{#2day}}}% + \iffieldundef{#2endyear} + {\printfield{extrayear}} + {\iffieldequalstr{#2endyear}{} + {\printfield{extrayear}% + \printtext{\mbox{\bibdatedash}}} + {\printtext{% + \bibdatedash + \csuse{mkbibdate#1}{#2endyear}{#2endmonth}{#2endday}% + \printfield{extrayear}}}}}}} + +\expandafter\newrobustcmd +\expandafter*\csname mkbibrangeiso8601\endcsname[1]{% + \iffieldundef{#1year} + {} + {\printtext[#1date]{% + \blx@isodate{#1year}{#1month}{#1day}% + \iffieldundef{#1endyear} + {} + {\addslash\blx@isodate{#1endyear}{#1endmonth}{#1endday}}}}} + +\expandafter\newrobustcmd +\expandafter*\csname mkbibrangeiso8601extra\endcsname[1]{% + \iffieldundef{#1year} + {} + {\printtext[#1date]{% + \blx@isodate[extrayear]{#1year}{#1month}{#1day}% + \iffieldundef{#1endyear} + {} + {\addslash\blx@isodate{#1endyear}{#1endmonth}{#1endday}}}}} + +\newrobustcmd*{\blx@isodate}[4][]{% + \thefield{#2}\ifblank{#1}{}{\printfield{#1}}% + \iffieldundef{#3}{}{\mbox{-}\thefield{#3}}% + \iffieldundef{#4}{}{\mbox{-}\thefield{#4}}} + +\newrobustcmd*{\mkbibdatelong}[3]{} +\newrobustcmd*{\mkbibdateshort}[3]{} +\newrobustcmd*{\bibrangedash}{\textendash} +\newrobustcmd*{\bibdatedash}{\bibrangedash} +\newrobustcmd*{\finalandcomma}{} +\newrobustcmd*{\mkbibordinal}[1]{#1} +\newrobustcmd*{\mkbibmascord}{\mkbibordinal} +\newrobustcmd*{\mkbibfemord}{\mkbibordinal} +\newrobustcmd*{\mkbibneutord}{\mkbibordinal} +\newrobustcmd*{\mkbibmonth}[1]{% + \ifcase0#1\relax + \blx@warning@entry{Month out of range or not an integer}% + \or\abx@bibmonth{january}% + \or\abx@bibmonth{february}% + \or\abx@bibmonth{march}% + \or\abx@bibmonth{april}% + \or\abx@bibmonth{may}% + \or\abx@bibmonth{june}% + \or\abx@bibmonth{july}% + \or\abx@bibmonth{august}% + \or\abx@bibmonth{september}% + \or\abx@bibmonth{october}% + \or\abx@bibmonth{november}% + \or\abx@bibmonth{december}% + \else + \blx@warning@entry{Month out of range}#1% + \fi} + +\protected\def\blx@imc@printdate{} +\protected\def\blx@imc@printdateextra{} +\protected\def\blx@imc@printurldate{} +\protected\def\blx@imc@printeventdate{} +\protected\def\blx@imc@printorigdate{} + +\let\blx@imc@mkdatezeros\@firstofone +\protected\def\blx@imc@stripzeros#1{% + \begingroup + \setbox\@tempboxa=\hbox\bgroup + \aftergroup\endgroup + \abx@hook@xsanitize + \if0#1\relax + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {\@tempcnta#1\relax + \expandafter\egroup + \number\@tempcnta + \@tempcnta#1\relax} + {\egroup#1}} + +\blx@regimcs{% + \printdate \printdateextra \printurldate \printeventdate + \printorigdate \stripzeros \mkdatezeros} + +% {<language>}{<strings>} + +\def\blx@maplang#1#2{% + \csxappto{extras#1}{% + \noexpand\blx@resetpunct + \expandafter\noexpand\csname abx@extras@#2\endcsname + \expandafter\noexpand\csname abx@strings@#2\endcsname}% + \csxappto{noextras#1}{% + \noexpand\blx@resetpunct + \expandafter\noexpand\csname abx@noextras@#2\endcsname}} + +%% Babel interface + +\def\blx@beglang{\blx@clearlang\begingroup} +\def\blx@endlang{\endgroup} +\let\blx@hook@endlang\@empty +\let\blx@hook@initlang\@empty +\def\blx@hyphenreset{% + \ifcsundef{l@\blx@languagename} + {} + {\language\csname l@\blx@languagename\endcsname\relax}% + \ifcsundef{\blx@languagename hyphenmins} + {\blx@sethyphenmins\tw@\thr@@} + {\expandafter\expandafter\expandafter\blx@sethyphenmins + \csname\blx@languagename hyphenmins\endcsname}} +\def\blx@sethyphenmins#1#2{% + \lefthyphenmin#1\relax + \righthyphenmin#2\relax} + +\begingroup +\@makeother\# +\gdef\blx@mkbabel{% + \pretocmd\select@language{\blx@langsetup{#1}} + {\ifdef\blx@thelangenv + {\def\blx@beglang{% + \blx@clearlang + \begingroup + \blx@imc@iffieldundef{hyphenation} + {} + {\blx@hook@initlang + \def\blx@endlang{% + \blx@hook@endlang + \csname end\blx@thelangenv\endcsname + \endgroup}% + \csname\blx@thelangenv\expandafter\endcsname + \expandafter{\abx@field@hyphenation}}}} + {}% + \blx@langsetup\bbl@main@language} + {\blx@err@patch{'babel' package}% + \blx@mknobabel}} +\endgroup + +\def\blx@mknobabel{% + \blx@lbxinput{\blx@languagename} + {} + {\blx@err@nolang{\blx@languagename}}} + +\newrobustcmd*{\DeclareRedundantLanguages}[2]{% + \begingroup + \ifblank{#2} + {\def\do##1{% + \global\csundef{blx@rlm@##1}% + \global\csundef{blx@rlm@lang##1}}} + {\def\do##1{% + \csxdef{blx@rlm@##1}{#2}% + \csxdef{blx@rlm@lang##1}{#2}}}% + \docsvlist{#1}% + \endgroup} + +\def\blx@clearlang{% + \iftoggle{blx@clearlang} + {\iflistundef{language} + {} + {\ifnumgreater{\value{language}}{1} + {} + {\expandafter\blx@clearlang@i\abx@list@language}}} + {}} + +\def\blx@clearlang@i#1{% + \ifcsdef{blx@rlm@#1} + {\expandafter\expandafter\expandafter\forcsvlist + \expandafter\expandafter\expandafter\blx@clearlang@ii + \expandafter\expandafter\expandafter{% + \csname blx@rlm@#1\endcsname}} + {}} + +\def\blx@clearlang@ii#1{% + \ifdefstring\languagename{#1} + {\clearlist{language}} + {}} + +%% Bibtex data interface + +\def\abx@dotypes{% + \do{set}% + \do{article}% + \do{book}% + \do{mvbook}% + \do{booklet}% + \do{collection}% + \do{mvcollection}% + \do{inbook}% + \do{bookinbook}% + \do{incollection}% + \do{inproceedings}% + \do{manual}% + \do{misc}% + \do{online}% + \do{patent}% + \do{periodical}% + \do{proceedings}% + \do{mvproceedings}% + \do{report}% + \do{suppbook}% + \do{suppcollection}% + \do{suppperiodical}% + \do{thesis}% + \do{unpublished}% + \do{artwork}% + \do{audio}% + \do{commentary}% + \do{image}% + \do{inreference}% + \do{jurisdiction}% + \do{legal}% + \do{legislation}% + \do{letter}% + \do{movie}% + \do{music}% + \do{performance}% + \do{reference}% + \do{mvreference}% + \do{review}% + \do{software}% + \do{standard}% + \do{video}% + \do{customa}% + \do{customb}% + \do{customc}% + \do{customd}% + \do{custome}% + \do{customf}% +} + +\def\abx@donames{% + \do{labelname}% + \do{author}% + \do{shortauthor}% + \do{editor}% + \do{editora}% + \do{editorb}% + \do{editorc}% + \do{shorteditor}% + \do{bookauthor}% + \do{translator}% + \do{annotator}% + \do{commentator}% + \do{introduction}% + \do{foreword}% + \do{afterword}% + \do{holder}% + \do{namea}% + \do{nameb}% + \do{namec}% +} + +\def\abx@dolists{% + \do{institution}% + \do{language}% + \do{location}% + \do{organization}% + \do{origlocation}% + \do{origpublisher}% + \do{pageref}% + \do{publisher}% + \do{lista}% + \do{listb}% + \do{listc}% + \do{listd}% + \do{liste}% + \do{listf}% +} + +\def\abx@dofields{% + \do{crossref}% + \do{xref}% + \do{entrykey}% + \do{childentrykey}% + \do{entrytype}% + \do{entrysubtype}% + \do{entryset}% + \do{entrysetcount}% + \do{related}% + \do{relatedtype}% + \do{relatedstring}% + \do{hyphenation}% + \do{keywords}% + \do{authortype}% + \do{editortype}% + \do{editoratype}% + \do{editorbtype}% + \do{editorctype}% + \do{nameatype}% + \do{namebtype}% + \do{namectype}% + \do{addendum}% + \do{booktitle}% + \do{booksubtitle}% + \do{booktitleaddon}% + \do{chapter}% + \do{doi}% + \do{edition}% + \do{eid}% + \do{eprint}% + \do{eprinttype}% + \do{eprintclass}% + \do{file}% + \do{gender}% + \do{howpublished}% + \do{indextitle}% + \do{indexsorttitle}% + \do{isan}% + \do{isbn}% + \do{ismn}% + \do{isrn}% + \do{issn}% + \do{issue}% + \do{iswc}% + \do{issuetitle}% + \do{issuesubtitle}% + \do{journaltitle}% + \do{journalsubtitle}% + \do{label}% + \do{labelalpha}% + \do{extraalpha}% + \do{labelnumber}% + \do{labeltitle}% + \do{labelyear}% + \do{extrayear}% + \do{library}% + \do{localnumber}% + \do{prefixnumber}% + \do{mainsubtitle}% + \do{maintitle}% + \do{maintitleaddon}% + \do{nameaddon}% + \do{namehash}% + \do{fullhash}% + \do{note}% + \do{number}% + \do{day}% + \do{month}% + \do{year}% + \do{endday}% + \do{endmonth}% + \do{endyear}% + \do{origlanguage}% + \do{origtitle}% + \do{origday}% + \do{origmonth}% + \do{origyear}% + \do{origendday}% + \do{origendmonth}% + \do{origendyear}% + \do{reprinttitle}% + \do{pages}% + \do{pagetotal}% + \do{pagination}% + \do{bookpagination}% + \do{part}% + \do{pubstate}% + \do{series}% + \do{shorthand}% + \do{shorthandintro}% + \do{shortjournal}% + \do{shortseries}% + \do{shorttitle}% + \do{sortinit}% + \do{subtitle}% + \do{title}% + \do{titleaddon}% + \do{eventtitle}% + \do{eventday}% + \do{eventmonth}% + \do{eventyear}% + \do{eventendday}% + \do{eventendmonth}% + \do{eventendyear}% + \do{type}% + \do{url}% + \do{urlday}% + \do{urlmonth}% + \do{urlyear}% + \do{urlendday}% + \do{urlendmonth}% + \do{urlendyear}% + \do{venue}% + \do{version}% + \do{volume}% + \do{volumes}% + \do{abstract}% + \do{annotation}% + \do{usera}% + \do{userb}% + \do{userc}% + \do{userd}% + \do{usere}% + \do{userf}% + \do{verba}% + \do{verbb}% + \do{verbc}% +} + +\def\abx@dobooleans{% + \do{singletitle}% +} + +\def\do#1{% + \newcounter{#1}% + \newcounter{saved#1}% + \csedef{the#1}{\noexpand\the\expandonce{\csname c@#1\endcsname}}% + \csedef{thesaved#1}{\noexpand\the\expandonce{\csname c@saved#1\endcsname}}% + \appto\abx@dobooleans{\do{more#1}}} +\abx@donames +\abx@dolists +\def\do#1{\newtoggle{abx@bool@#1}} +\abx@dobooleans + +\protected\def\blx@resetdata{% + \let\blx@saved@do\do + \let\do\blx@imc@clearname + \abx@donames + \let\do\blx@imc@clearlist + \abx@dolists + \let\do\blx@imc@clearfield + \abx@dofields\do{execute}\do{options}% + \def\do##1{\togglefalse{abx@bool@##1}}% + \abx@dobooleans + \let\do\blx@saved@do + \c@citecounter\z@ + \iftoggle{blx@bibliography} + {\c@maxnames\blx@maxbibnames\relax + \c@minnames\blx@minbibnames\relax} + {\c@maxnames\blx@maxcitenames\relax + \c@minnames\blx@mincitenames\relax}% + \c@maxitems\blx@maxitems\relax + \c@minitems\blx@minitems\relax} + +\protected\def\blx@saveentry{% + \let\blx@saved@do\do + \let\do\blx@savename + \abx@donames + \let\do\blx@savelist + \abx@dolists + \let\do\blx@savefield + \abx@dofields\do{execute}\do{options}% + \let\do\blx@savebool + \abx@dobooleans + \c@savedcitecounter\c@citecounter + \let\do\blx@saved@do} + +\protected\def\blx@savename#1{% + \csletcs{etb@tgl@abx@bool@moresaved#1}{etb@tgl@abx@bool@more#1}% + \csletcs{abx@name@saved#1}{abx@name@#1}% + \csname c@saved#1\endcsname\csname c@#1\endcsname} + +\protected\def\blx@savelist#1{% + \csletcs{etb@tgl@abx@bool@moresaved#1}{etb@tgl@abx@bool@more#1}% + \csletcs{abx@list@saved#1}{abx@list@#1}% + \csname c@saved#1\endcsname\csname c@#1\endcsname} + +\protected\def\blx@savefield#1{% + \csletcs{abx@field@saved#1}{abx@field@#1}} + +\protected\def\blx@savebool#1{% + \csletcs{abx@bool@saved#1}{abx@bool@#1}} + +% {<code>} + +\protected\long\def\blx@bbl@preamble#1{% + \gappto\abx@preamble{#1}} + +% {<message>} + +\protected\def\blx@bbl@warn#1{% + \begingroup + \def\item{\MessageBreak-\space}% + \def\break{\MessageBreak\space\space}% + \edef\blx@tempa{% + \ifnum\blx@backend=\blx@backend@biber + Biber + \else + BibTeX + \fi + reported the following issues% + \ifdef\abx@field@entrykey + {\MessageBreak with '\abx@field@entrykey'} + {}% + :#1}% + \blx@warning@noline{\blx@tempa}% + \endgroup} + +% {<field>}{<code>} + +\newrobustcmd{\DeclareFieldInputHandler}[2]{% + \ifblank{#2} + {\csundef{blx@fih@#1}} + {\long\csdef{blx@fih@#1}##1{#2}}} +\@onlypreamble\DeclareFieldInputHandler + +% {<list>}{<code>} + +\newrobustcmd*{\DeclareListInputHandler}[2]{% + \ifblank{#2} + {\csundef{blx@lih@#1}} + {\csdef{blx@lih@#1}##1{#2}}} +\@onlypreamble\DeclareListInputHandler + +% {<name>}{<code>} + +\newrobustcmd*{\DeclareNameInputHandler}[2]{% + \ifblank{#2} + {\csundef{blx@nih@#1}} + {\csdef{blx@nih@#1}##1{#2}}} +\@onlypreamble\DeclareNameInputHandler + +% {<entrykey>}{<refsection>}{<field>}{<value>} + +\long\def\blx@bbl@addentryfield#1#2#3#4{% + \csxappto{blx@data@#2@#1}{% + \def\expandafter\noexpand\csname abx@field@#3\endcsname{#4}}} + +% {<field>}{<value>} + +\long\def\blx@bbl@addfield#1#2{% + \csxappto\blx@bbl@data{% + \def\expandafter\noexpand\csname abx@field@#1\endcsname{#2}}} + +\protected\long\def\blx@bbl@fielddef#1#2{% + \def\NewValue{#2}% + \ifcsdef{blx@fih@#1} + {\csname blx@fih@#1\endcsname{#2}% + \ifdefvoid\NewValue} + {\@secondoftwo} + {} + {\blx@bbl@addfield{#1}{\expandonce\NewValue}}} + +\protected\long\def\blx@bbl@fieldedef#1#2{% + \edef\NewValue{#2}% + \ifcsdef{blx@fih@#1} + {\csname blx@fih@#1\expandafter + \endcsname\expandafter{\NewValue}% + \ifdefvoid\NewValue} + {\@secondoftwo} + {} + {\blx@bbl@addfield{#1}{\NewValue}}} + +\protected\long\def\blx@bbl@stringdef#1#2{% + \begingroup + \edef\blx@tempa{\endgroup + \blx@bbl@fielddef{#1}{\detokenize{#2}}}% + \blx@tempa} + +% {<field>} + +\protected\def\blx@bbl@verbdef#1{% + \begingroup + \let\verb\blx@bbl@verbadd + \def\blx@tempa{#1}% + \let\NewValue\@empty} + +\protected\def\blx@bbl@verbend{% + \ifcsdef{blx@fih@\blx@tempa} + {\csname blx@fih@\blx@tempa\expandafter + \endcsname\expandafter{\NewValue}% + \ifdefvoid\NewValue} + {\@secondoftwo} + {} + {\blx@bbl@addfield{\blx@tempa}{\NewValue}}% + \endgroup} + +\protected\def\blx@bbl@verbadd{% + \begingroup + \let\do\@makeother + \dospecials + \catcode\endlinechar=12\relax + \blx@bbl@verbadd@i} + +\begingroup +\catcode`\<=12 +\catcode`\>=12 +\uccode`\<=`\ % +\uccode`\>=\endlinechar +\uppercase{\gdef\blx@bbl@verbadd@i<#1>}{% + \endgroup + \edef\NewValue{\NewValue\detokenize{#1}}} +\endgroup + +% {<counter>}{<value>} + +\protected\long\def\blx@bbl@countdef#1#2{% + \csxappto\blx@bbl@data{% + \csname c@#1\endcsname#2\relax}} + +% {<boolean>} + +\protected\def\blx@bbl@booltrue#1{% + \csgappto\blx@bbl@data{% + \toggletrue{abx@bool@#1}}} + +\protected\def\blx@bbl@boolfalse#1{% + \csgappto\blx@bbl@data{% + \togglefalse{abx@bool@#1}}} + +% {<list}{<itemcount>}{<value>} + +\protected\def\blx@bbl@listdef#1#2#3{% + \def\NewCount{#2}% + \def\NewValue{#3}% + \ifcsdef{blx@lih@#1} + {\csname blx@lih@#1\endcsname{#3}% + \ifdefvoid\NewValue} + {\@secondoftwo} + {} + {\csxappto\blx@bbl@data{% + \csname c@#1\endcsname\NewCount\relax + \def\expandafter\noexpand\csname abx@list@#1\endcsname + {\expandonce\NewValue}}}} + + +% {<name>}{<itemcount>}{<value>} + +\protected\def\blx@bbl@namedef#1#2#3#4{% + \def\NewCount{#2}% + \def\NewOption{#3}% + \def\NewValue{#4}% + \ifcsdef{blx@nih@#1} + {\csname blx@nih@#1\endcsname{#4}% + \ifdefvoid\NewValue} + {\@secondoftwo} + {} + {\csxappto\blx@bbl@data{% + \csname c@#1\endcsname\NewCount\relax + \def\expandafter\noexpand\csname abx@name@#1\endcsname + {{\expandonce\NewOption}{\expandonce\NewValue}}}}} + +% {<entrykey>,...} + +\protected\def\blx@bbl@set#1{% + \blx@bbl@fieldedef{entryset}{\detokenize{#1}}% + \csxdef{blx@setp@\the\c@refsection @\abx@field@entrykey}{\detokenize{#1}}% + \begingroup + \blx@tempcnta\z@ + \expandafter\forcsvlist + \expandafter\blx@bbl@set@i + \expandafter{\detokenize{#1}}% + \endgroup} + +\def\blx@bbl@set@i#1{% + \advance\blx@tempcnta\@ne + \csxdef{blx@seti@\the\c@refsection @#1}{\the\blx@tempcnta}} + +% {<entrykey>} + +\protected\def\blx@bbl@inset#1{% + \toggletrue{blx@setonly}% + \blx@bbl@fieldedef{entryset}{\detokenize{#1}}% + \csxdef{blx@setc@\the\c@refsection @\abx@field@entrykey}{\detokenize{#1}}} + +% {<entrykey>} + +\protected\def\blx@bbl@xref#1{% BibTeX only + \ifcsdef{blx@refp@\the\c@refsection @\detokenize{#1}} + {} + {\listcsxadd{blx@refs@\the\c@refsection}{\detokenize{#1}}}% + \listcsxadd{blx@refp@\the\c@refsection @\detokenize{#1}}{\abx@field@entrykey}% + \csxdef{blx@refc@\the\c@refsection @\abx@field@entrykey}{\detokenize{#1}}} + +\def\blx@addxref#1{% BibTeX only + \blx@ifdata{#1} + {\begingroup + \def\do##1{% + \csgappto{blx@data@\the\c@refsection @##1}{% + \def\abx@field@xref{#1}}}% + \dolistcsloop{blx@refp@\the\c@refsection @#1}% + \endgroup} + {}% + \global\csundef{blx@refp@\the\c@refsection @#1}} + +% {<keyword>,...} + +\protected\def\blx@bbl@keyw#1{% + \iftoggle{blx@skipbib} + {} + {\forcsvlist{\blx@addkeyword{\abx@field@entrykey}}{#1}% + \blx@bbl@fielddef{keywords}{#1}}} + +\def\blx@addkeyword#1#2{% + \listcsxadd{blx@keyw@\the\c@refsection @\detokenize{#2}}{#1}} + +% {<options>} + +\protected\long\def\blx@bbl@options#1{% + \begingroup + \let\blx@tempa\@empty + \forcsvlist\blx@bbl@options@i{#1}% + \edef\blx@tempa{% + \endgroup + \ifx\blx@tempa\@empty + \else + \def\noexpand\abx@field@options{\expandonce\blx@tempa}% + \fi}% + \blx@tempa} + +\long\def\blx@bbl@options@i#1{\blx@bbl@options@ii#1==&} + +\long\def\blx@bbl@options@ii#1=#2=#3&{% + \ifcsundef{KV@blx@opt@ent@#1} + {\blx@warning@noline{% + Ignoring undefined option '#1'\MessageBreak + at entry '\abx@field@entrykey'}} + {\eappto\blx@tempa{% + \ifx\blx@tempa\@empty\else,\fi + \unexpanded{#1}\ifblank{#2}{}{=\unexpanded{#2}}}}} + +% \blx@data@<section>@<entrykey> data hook +% key -> data +% \blx@miss@<section> missing entries (blacklist) +% section -> keys [internal list] +% \blx@sort@<section> all entries, sorted +% section -> keys [internal list] +% \blx@sbib@<section> all entries in bibliography, sorted +% section -> keys [internal list] +% \blx@bsee@<section> seen citations, document body +% section -> keys [internal list] +% \blx@fsee@<section> seen citations, footnotes +% section -> keys [internal list] +% \blx@type@<section>@<entrytype> type hash +% type -> keys [internal list] +% \blx@subt@<section>@<entrytype> subtype hash +% subtype -> keys [internal list] +% \blx@segm@<section>@<segment> segment hash +% segment -> keys [internal list] +% \blx@keyw@<section>@<keyword> keyword hash +% keyword -> keys [internal list] +% \blx@losh@<section> shorthand hash +% section -> keys [internal list] +% \blx@catg@<category> category hash, global +% category -> keys [internal list] +% \blx@set@<section>@<entrykey> parent -> child mapping (dynamic entry sets) +% key -> key,key,... [csv list] +% \blx@setp@<section>@<entrykey> parent -> child mapping (entry sets) +% key -> key,key,... [csv list] +% \blx@setc@<section>@<entrykey> child -> parent mapping (entry sets) +% key -> key +% \blx@seti@<section>@<entrykey> child -> index mapping (entry sets) +% key -> index +% \blx@pref@<section>@<entrykey> pageref hook, temporary +% key -> pages [internal list] +% \blx@refs@<section> xref hash, temporary +% section -> parents [internal list] +% (BibTeX only) +% \blx@refp@<section>@<entrykey> parent -> child mapping (xrefs), temporary +% key -> keys [internal list] +% (BibTeX only) +% \blx@refc@<section>@<entrykey> child -> parent mapping (xrefs) +% key -> key [internal list] +% (BibTeX only) + +\def\blx@ifdata#1{% + \ifcsdef{blx@data@\the\c@refsection @#1}} + +\def\blx@getdata#1{% + \csuse{blx@data@\the\c@refsection @#1}% + \blx@setcitecounter} + +\def\blx@getdata@cite#1{% + \ifcsdef{blx@setc@\the\c@refsection @#1} + {\expandafter\expandafter\expandafter\blx@getdata + \expandafter\expandafter\expandafter{% + \csname blx@setc@\the\c@refsection @#1\endcsname}% + \blx@ifdata{#1} + {\def\abx@field@childentrykey{#1}% + \begingroup + \blx@getdata{#1}% + \edef\blx@tempa{\endgroup + \def\noexpand\abx@field@childentrytype{\abx@field@entrytype}}% + \blx@tempa} + {}} + {\blx@getdata{#1}}% + \ifcsdef{blx@seti@\the\c@refsection @#1} + {\letcs\abx@field@entrysetcount{blx@seti@\the\c@refsection @#1}} + {}} + +\def\blx@execute{% + \blx@imc@thefield{execute}} + +\def\blx@setoptions@entry{% + \blx@imc@iffieldundef{options} + {} + {\begingroup + \edef\blx@tempa{\endgroup + \noexpand\setkeys{blx@opt@ent}{\abx@field@options}}% + \blx@tempa + \blx@checkoptions@entry}} + +\def\blx@setoptions@type#1{% + \ifcsdef{blx@opts@type@#1} + {\begingroup + \edef\blx@tempa{\endgroup + \noexpand\setkeys{blx@opt@typ}{\csuse{blx@opts@type@#1}}}% + \blx@tempa} + {}} + +\def\blx@checkoptions@global{} +\def\blx@checkoptions@type{} +\def\blx@checkoptions@entry{} + +\def\blx@entrysetcount{% + \ifdef\abx@field@entrykey + {\ifcsdef{blx@seti@\the\c@refsection @\abx@field@entrykey} + {\letcs\abx@field@entrysetcount{% + blx@seti@\the\c@refsection @\abx@field@entrykey}} + {}} + {}} + +% {<section>} + +\def\blx@bbl@refsection#1{% + \begingroup + \c@refsection#1\relax} + +\def\blx@bbl@endrefsection{% + \endgroup + \csnumgdef{blx@labelnumber@\the\c@refsection}{0}% + \iftoggle{blx@reencode}{\blx@reencode}{}} + +% {<entrykey>} + +\protected\def\blx@bbl@missing#1{% + \listcsxadd{blx@miss@\the\c@refsection}{\detokenize{#1}}% + \blx@warning@noline{% + The following entry could not be found\MessageBreak + in the database% + \ifnumgreater\c@refsection\z@ + { (refsection \the\c@refsection)} + {}:\MessageBreak + \detokenize{#1}\MessageBreak + Please verify the spelling and rerun\MessageBreak + LaTeX afterwards}} + +% {<entrykey>}{<entrytype>}{<options>} + +\protected\def\blx@bbl@entry#1#2#3{% + \begingroup + \edef\abx@field@entrykey{\detokenize{#1}}% + \blx@setoptions@type{#2}% + \blx@bbl@options{#3}% + \blx@setoptions@entry + \edef\blx@bbl@data{blx@data@\the\c@refsection @\abx@field@entrykey}% + \csuse\blx@bbl@data + \cslet\blx@bbl@data\@empty + \blx@bbl@addfield{entrykey}{\abx@field@entrykey}% + \blx@bbl@addfield{entrytype}{#2}% + \blx@imc@iffieldundef{options} + {} + {\blx@bbl@fieldedef{options}{\expandonce\abx@field@options}}} + +\protected\def\blx@bbl@endentry{% + \csuse\blx@bbl@data + \ifcsundef{blx@pref@\the\c@refsection @\abx@field@entrykey} + {} + {\blx@addpageref{\abx@field@entrykey}}% + \nottoggle{blx@setonly} + {\listcsxadd{blx@sort@\the\c@refsection}{\abx@field@entrykey}} + {\global\toggletrue{blx@addset}% + \toggletrue{blx@skipbib}% + \toggletrue{blx@skiplos}% + \toggletrue{blx@skiplab}}% + \nottoggle{blx@skipbib} + {\listcsxadd{blx@sbib@\the\c@refsection}{\abx@field@entrykey}% + \listcsxadd{blx@type@\the\c@refsection @\abx@field@entrytype}{\abx@field@entrykey}% + \ifdef\abx@field@entrysubtype + {\listcsxadd{blx@subt@\the\c@refsection @\abx@field@entrysubtype}{\abx@field@entrykey}} + {}} + {}% + \nottoggle{blx@skiplos} + {\blx@bbl@shorthand} + {}% + \nottoggle{blx@skiplab} + {\iftoggle{blx@labelnumber} + {\blx@bbl@labelnumber} + {}% + \iftoggle{blx@labelalpha} + {\blx@bbl@labelalpha} + {}% + \iftoggle{blx@labelyear} + {\blx@bbl@labelyear} + {}% + \blx@bbl@prefixnumber} + {}% + \ifnumless\blx@backend\blx@backend@biber + {\blx@bbl@labelname} + {}% + \blx@bbl@titles + \blx@bbl@hooks + \endgroup} + +\def\blx@addset{% + \begingroup + \letcs\blx@tempa{blx@sort@\the\c@refsection}% + \global\cslet{blx@sort@\the\c@refsection}\@empty + \forlistloop\blx@addset@i\blx@tempa + \endgroup} + +\def\blx@addset@i#1{% + \listcsgadd{blx@sort@\the\c@refsection}{#1}% + \ifcsdef{blx@setp@\the\c@refsection @#1} + {\expandafter\expandafter\expandafter\forcsvlist + \expandafter\expandafter\expandafter\blx@addset@ii + \expandafter\expandafter\expandafter{% + \csname blx@setp@\the\c@refsection @#1\endcsname}} + {}} + +\def\blx@addset@ii#1{% + \listcsgadd{blx@sort@\the\c@refsection}{#1}} + +\def\blx@bbl@shorthand{% + \ifundef\abx@field@shorthand + {} + {\blx@setlabwidth{\shorthandwidth}{% + \csuse{abx@ffd@*@shorthandwidth}{\abx@field@shorthand}}}} + +\def\blx@bbl@labelnumber{% + \ifdefempty\abx@field@localnumber + {} + {\ifundef\abx@field@shorthand + {\ifdef\abx@field@localnumber + {} + {\csnumgdef{blx@labelnumber@\the\c@refsection}{% + \csuse{blx@labelnumber@\the\c@refsection}+1}% + \edef\abx@field@localnumber{% + \csuse{blx@labelnumber@\the\c@refsection}}}% + \blx@bbl@fieldedef{labelnumber}{\abx@field@localnumber}% + \iftoggle{blx@skipbib} + {} + {\blx@setlabwidth{\labelnumberwidth}{% + \csuse{abx@ffd@*@labelnumberwidth}{% + \ifdef\abx@field@prefixnumber + {\csuse{abx@ffd@*@prefixnumber}{\abx@field@prefixnumber}} + {}% + \abx@field@localnumber}}}} + {\csgappto\blx@bbl@data{% + \let\abx@field@labelnumber\abx@field@shorthand}% + \iftoggle{blx@skipbib} + {} + {\blx@setlabwidth{\labelnumberwidth}{% + \csuse{abx@ffd@*@labelnumberwidth}{\abx@field@shorthand}}}}}} + +\def\blx@bbl@prefixnumber{% + \ifdef\abx@field@prefixnumber + {\blx@bbl@fieldedef{prefixnumber}{\abx@field@prefixnumber}} + {}} + +\def\blx@bbl@labelalpha{% + \ifundef\abx@field@shorthand + {\ifundef\abx@field@labelalpha + {} + {\ifundef\abx@field@extraalpha + {} + {\ifnum\abx@field@extraalpha>\c@maxextraalpha + \global\c@maxextraalpha\abx@field@extraalpha\relax + \fi}% + \iftoggle{blx@skipbib} + {} + {\blx@setlabwidth{\labelalphawidth}{% + \csuse{abx@ffd@*@labelalphawidth}{% + \ifdef\abx@field@prefixnumber + {\csuse{abx@ffd@*@prefixnumber}{\abx@field@prefixnumber}} + {}% + \csuse{abx@ffd@*@labelalpha}{\abx@field@labelalpha}% + \ifundef\abx@field@extraalpha + {} + {\csuse{abx@ffd@*@extraalpha}{\abx@field@extraalpha}}}}}}} + {\csgappto\blx@bbl@data{% + \let\abx@field@labelalpha\abx@field@shorthand}% + \iftoggle{blx@skipbib} + {} + {\blx@setlabwidth{\labelalphawidth}{% + \csuse{abx@ffd@*@labelalphawidth}{\abx@field@shorthand}}}}} + +\def\blx@bbl@labelyear{% + \ifundef\abx@field@extrayear + {} + {\ifnum\abx@field@extrayear>\c@maxextrayear + \global\c@maxextrayear\abx@field@extrayear\relax + \fi}} + +\def\blx@bbl@labelname{% BibTeX only + \iftoggle{blx@useauthor} + {\ifundef\abx@name@shortauthor + {\ifundef\abx@name@author + {\blx@bbl@labelname@i} + {\csgappto\blx@bbl@data{% + \c@labelname\c@author + \let\abx@name@labelname\abx@name@author}% + \iftoggle{abx@bool@moreauthor} + {\csgappto\blx@bbl@data{% + \toggletrue{abx@bool@morelabelname}}} + {}}} + {\csgappto\blx@bbl@data{% + \c@labelname\c@shortauthor + \let\abx@name@labelname\abx@name@shortauthor}% + \iftoggle{abx@bool@moreshortauthor} + {\csgappto\blx@bbl@data{% + \toggletrue{abx@bool@morelabelname}}} + {}}} + {\blx@bbl@labelname@i}} + +\def\blx@bbl@labelname@i{% + \iftoggle{blx@useeditor} + {\ifundef\abx@name@shorteditor + {\ifundef\abx@name@editor + {\blx@bbl@labelname@ii} + {\csgappto\blx@bbl@data{% + \c@labelname\c@editor + \let\abx@name@labelname\abx@name@editor}% + \iftoggle{abx@bool@moreeditor} + {\csgappto\blx@bbl@data{% + \toggletrue{abx@bool@morelabelname}}} + {}}} + {\csgappto\blx@bbl@data{% + \c@labelname\c@shorteditor + \let\abx@name@labelname\abx@name@shorteditor}% + \iftoggle{abx@bool@moreshorteditor} + {\csgappto\blx@bbl@data{% + \toggletrue{abx@bool@morelabelname}}} + {}}} + {\blx@bbl@labelname@ii}} + +\def\blx@bbl@labelname@ii{% + \iftoggle{blx@usetranslator} + {\ifundef\abx@name@translator + {} + {\csgappto\blx@bbl@data{% + \c@labelname\c@translator + \let\abx@name@labelname\abx@name@translator}% + \iftoggle{abx@bool@moretranslator} + {\csgappto\blx@bbl@data{% + \toggletrue{abx@bool@morelabelname}}} + {}}} + {}} + +\def\blx@bbl@titles{% + \ifundef\abx@field@shorttitle + {\csgappto\blx@bbl@data{% + \let\abx@field@labeltitle\abx@field@title}} + {\csgappto\blx@bbl@data{% + \let\abx@field@labeltitle\abx@field@shorttitle}}% + \ifundef\abx@field@indextitle + {\csgappto\blx@bbl@data{% + \let\abx@field@indextitle\abx@field@title}} + {}% + \ifundef\abx@field@indexsorttitle + {\csgappto\blx@bbl@data{% + \let\abx@field@indexsorttitle\abx@field@indextitle}} + {}} + +\def\blx@bbl@hooks{% + \ifcsundef{blx@hook@bblitem@*} + {\ifcsundef{blx@hook@bblitem@\abx@field@entrytype} + {} + {\csuse\blx@bbl@data + \csuse{blx@hook@bblitem@\abx@field@entrytype}}} + {\csuse\blx@bbl@data + \csuse{blx@hook@bblitem@*}% + \csuse{blx@hook@bblitem@\abx@field@entrytype}}} + +\newrobustcmd*{\AtDataInput}[1][*]{\csgappto{blx@hook@bblitem@#1}} +\@onlypreamble\AtDataInput + +\def\blx@setlabwidth#1#2{% + \begingroup + \settowidth{\@tempdima}{\bibfont#2}% + \ifnum\@tempdima>#1% + \global#1\@tempdima + \fi + \endgroup} + +\def\blx@bblstart{% + \let\preamble\blx@bbl@preamble + \let\warn\blx@bbl@thewarn + \let\refsection\blx@bbl@refsection + \let\endrefsection\blx@bbl@endrefsection + \let\entry\blx@bbl@entry + \let\endentry\blx@bbl@endentry + \let\missing\blx@bbl@missing + \let\lossort\blx@bbl@lossort + \let\endlossort\blx@bbl@endlossort + \let\set\blx@bbl@set + \let\inset\blx@bbl@inset + \let\xref\blx@bbl@xref % BibTeX only + \let\keyw\blx@bbl@keyw + \let\name\blx@bbl@namedef + \let\list\blx@bbl@listdef + \let\field\blx@bbl@fielddef + \let\strng\blx@bbl@stringdef + \let\count\blx@bbl@countdef + \let\true\blx@bbl@booltrue + \let\false\blx@bbl@boolfalse + \let\verb\blx@bbl@verbdef + \let\endverb\blx@bbl@verbend} + +\def\blx@bblend{% + \ifcsdef{blx@refs@\the\c@refsection}% BibTeX only + {\begingroup + \let\do\blx@addxref + \dolistcsloop{blx@refs@\the\c@refsection}% + \endgroup + \global\csundef{blx@refs@\the\c@refsection}} + {}% + \iftoggle{blx@addset} + {\blx@addset + \global\togglefalse{blx@addset}} + {}} + +% {<instcount>}{<entrykey>}{<refsection>}{<labelnumber>} + +\protected\def\blx@aux@number#1#2#3#4{% + \blx@bbl@addentryfield{\detokenize{#2}}{#3}{localnumber}{#4}% + \ifblank{#4} + {} + {\csgdef{blx@labelnumber@#3}{#4}% + \blx@addchecksum{#1}{#4}}} + +\AtEndDocument{% + \def\abx@aux@number#1#2#3#4{\blx@addchecksum{#1}{#4}}} + +\def\blx@addlabelnumber{% + \begingroup + \nottoggle{blx@skiplab} + {\iftoggle{blx@labelnumber} + {\ifundef\abx@field@shorthand + {\ifundef\abx@field@localnumber + {\iftoggle{blx@omitnumbers} + {\let\abx@field@localnumber\@empty} + {\csnumgdef{blx@labelnumber@\the\c@refsection}{% + \csuse{blx@labelnumber@\the\c@refsection}+1}% + \edef\abx@field@localnumber{\csuse{blx@labelnumber@\the\c@refsection}}% + \blx@bbl@addentryfield{\abx@field@entrykey}{\the\c@refsection}% + {localnumber}{\abx@field@localnumber}}% + \blx@auxwrite\@mainaux{}{% + \string\abx@aux@number{\the\c@instcount}{\abx@field@entrykey}% + {\the\c@refsection}{\abx@field@localnumber}}} + {}} + {}}% + {}} + {}% + \endgroup} + +\def\blx@addprefixnumber{% + \nottoggle{blx@skiplab} + {\ifdef\blx@prefixnumbers + {\ifundef\abx@field@shorthand + {\edef\abx@field@prefixnumber{\expandonce\blx@prefixnumbers}% + \ifundef\abx@field@prefixnumber + {\blx@bbl@addentryfield{\abx@field@entrykey}{\the\c@refsection}% + {prefixnumber}{\expandonce\abx@field@prefixnumber}} + {}% + \blx@auxwrite\@mainaux{}{% + \string\blx@aux@numprefix{\abx@field@entrykey}% + {\the\c@refsection}{\expandonce\abx@field@prefixnumber}}} + {}} + {}} + {}} + +% {<entrykey>}{<refsection>}{<numberprefix>} + +\protected\def\blx@aux@numprefix#1#2#3{% + \blx@bbl@addentryfield{\detokenize{#1}}{#2}{prefixnumber}{#3}} + +\def\blx@bbl@lossort{% + \begingroup + \def\key##1{\listcsxadd{blx@losh@\the\c@refsection}{\detokenize{##1}}}} +\let\blx@bbl@endlossort\endgroup + +\def\blx@addpageref#1{% + \begingroup + \blx@tempcnta\z@ + \let\blx@tempa\@empty + \def\do##1{% + \appto\blx@tempa{{##1}}% + \advance\blx@tempcnta\@ne}% + \dolistcsloop{blx@pref@\the\c@refsection @#1}% + \edef\blx@tempa{\endgroup\noexpand\blx@bbl@listdef + {pageref}{\the\blx@tempcnta}{\blx@tempa}}% + \blx@tempa} + +%% Data input + +\def\blx@bblinput{% + \begingroup + \iftoggle{blx@reencode} + {\ifdef\inpenc@prehook + {\inpenc@prehook{}% + \inpenc@posthook{}} + {}% + \inputencoding\blx@bibencoding} + {}% + \blx@info@noline{Trying to load bibliographic data..}% + \blx@blxinit + \ifnumequal\blx@backend\blx@backend@biber + {\blx@bblfile@biber} + {\blx@bblfile@bibtex + \blx@bblsecs@bibtex}% + \endgroup + \iftoggle{blx@reencode} + {\ifdef\@enablequotes + {\@enablequotes} + {}} + {}} + +\def\blx@bblfile@biber{% + \blx@secinit + \begingroup + \blx@bblstart + \blx@ifsigned{\jobname}{bbl} + {\InputIfFileExists{\jobname.bbl} + {\blx@info@noline{... file '\jobname.bbl' found}} + {\blx@info@noline{... file '\jobname.bbl' not found}% + \typeout{No file \jobname.bbl.}}} + {}% + \blx@bblend + \endgroup + \csnumgdef{blx@labelnumber@\the\c@refsection}{0}} + +\def\blx@bblfile@bibtex{% + \blx@secinit + \begingroup + \blx@bblstart + \ifnum\c@refsection>\z@ + \edef\blx@auxfile@bibtex{\jobname\the\c@refsection\blxauxsuffix}% + \else + \edef\blx@auxfile@bibtex{\jobname}% + \fi + \blx@ifsigned{\blx@auxfile@bibtex}{bbl} + {\InputIfFileExists{\blx@auxfile@bibtex.bbl} + {\blx@info@noline{... file '\blx@auxfile@bibtex.bbl' found}} + {\blx@info@noline{... file '\blx@auxfile@bibtex.bbl' not found}% + \typeout{No file \blx@auxfile@bibtex.bbl.}}} + {}% + \blx@bblend + \endgroup + \csnumgdef{blx@labelnumber@\the\c@refsection}{0}% + \iftoggle{blx@reencode}{\blx@reencode}{}} + +\def\blx@bblsecs@bibtex{% + \advance\c@refsection\@ne + \ifnum\c@refsection>\blx@maxsection + \else + \blx@bblfile@bibtex + \expandafter\blx@bblsecs@bibtex + \fi} + +\def\blx@reencode{% + \begingroup + \abx@hook@reencode + \let\protect\@unexpandable@protect + \def\do##1{\cslet{abx@name@##1}\relax}% + \abx@donames + \def\do##1{\cslet{abx@list@##1}\relax}% + \abx@dolists + \def\do##1{\cslet{abx@field@##1}\relax}% + \abx@dofields\do{options}% + \long\def\abx@field@execute##1{% + \unexpanded{\abx@field@execute{##1}}}% + \csuse{abx@preamble}% + \def\do##1{% + \csxdef{blx@data@\the\c@refsection @##1}{% + \csuse{blx@data@\the\c@refsection @##1}}}% + \dolistcsloop{blx@sort@\the\c@refsection}% + \endgroup} + +\def\abx@hook@reencode{% + \ifdef\@enablequotes{\@enablequotes}{}% + \def\IeC##1{\unexpanded{\IeC{##1}}}% + \let~\relax +} + +%% Bibliography + +% {<name>}{<start code>}[<end code>]{<item code>} + +\newrobustcmd*{\defbibenvironment}[4]{% + \long\csdef{blx@env@#1}{#2}% + \long\csdef{blx@endenv@#1}{#3}% + \long\csdef{blx@item@#1}{#4}} + +\defbibenvironment{bibliography} + {\list{}{% + \leftmargin\bibhang + \itemindent-\leftmargin + \itemsep\bibitemsep + \parsep\bibparsep}} + {\endlist} + {\item} + +\defbibenvironment{shorthands} + {\list{\thefield{shorthand}}{% + \labelwidth\shorthandwidth + \labelsep\biblabelsep + \leftmargin\labelwidth + \advance\leftmargin\labelsep + \itemsep\bibitemsep + \parsep\bibparsep + \def\makelabel##1{##1\hss}}} + {\endlist} + {\item} + +% {<name>}[<default>]{<code>} + +\newrobustcmd*{\defbibheading}[1]{% + \@ifnextchar[%] + {\blx@defbibheading{blx@head@#1}} + {\blx@defbibheading{blx@head@#1}[\bibname]}} + +\def\blx@defbibheading#1[#2]{% + \csundef{#1}% + \expandafter\newcommand\csname#1\endcsname[1][#2]} + +% {<name>}{<text>} + +\newrobustcmd*{\defbibnote}[1]{% + \long\csdef{blx@note@#1}} + +% {<name>}{<code>} + +\newrobustcmd*{\defbibfilter}[2]{% + \begingroup + \def\blx@flt@error{\csname blx@flt@errortrue\endcsname}% + \let\not\blx@flt@not \let\NOT\not + \let\and\blx@flt@and \let\AND\and + \let\or\blx@flt@or \let\OR\or + \letcs\({blx@flt@(} \letcs\){blx@flt@)}% + \def\section##1{\blx@flt@error}% + \def\segment##1{segment=##1}% + \def\type##1{type=##1}% + \def\subtype##1{subtype=##1}% + \def\keyword##1{keyword={##1}}% + \def\category##1{category={##1}}% + \edef\blx@tempa{\noexpand\blx@defbibfilter{#2}}% + \ifdef\blx@flt@errortrue + {\blx@err@filter} + {\let\the\relax + \let\blx@flt@item\relax + \edef\blx@tempa{\blx@tempa}% + \ifdef\blx@flt@errortrue + {\blx@err@filter} + {\csxdef{blx@filter@#1}{\blx@tempa}}}% + \endgroup} + +\def\blx@defbibfilter#1{% + \blx@defbibfilter@i#1 &} +\def\blx@defbibfilter@i#1 #2&{% + \blx@defbibfilter@ii#1==&% + \ifblank{#2}{}{\blx@defbibfilter@i#2 &}} +\def\blx@defbibfilter@ii#1=#2=#3&{% + \ifblank{#2} + {\ifblank{#1} + {} + {\ifcsdef{blx@flt@#1} + {\csname blx@flt@#1\endcsname} + {\blx@flt@error}}} + {\ifcsdef{blx@flt@#1} + {\csname blx@flt@#1\endcsname{\detokenize{#2}}} + {\blx@flt@error}}} + +\def\blx@flt@and{ and } +\def\blx@flt@or{ or } +\def\blx@flt@not{ not } +\csdef{blx@flt@(}{ ( } +\csdef{blx@flt@)}{ ) } +\def\blx@flt@segment#1{% + test {\xifinlistcs\blx@flt@item{blx@segm@\the\c@refsection @#1}}} +\def\blx@flt@type#1{% + test {\xifinlistcs\blx@flt@item{blx@type@\the\c@refsection @#1}}} +\def\blx@flt@subtype#1{% + test {\xifinlistcs\blx@flt@item{blx@subt@\the\c@refsection @#1}}} +\def\blx@flt@keyword#1{% + test {\xifinlistcs\blx@flt@item{blx@keyw@\the\c@refsection @#1}}} +\def\blx@flt@category#1{% + test {\xifinlistcs\blx@flt@item{blx@catg@#1}}} + +% {<name>}{<code>} + +\newrobustcmd*{\defbibcheck}[2]{% + \csdef{blx@bibcheck@#1}{% + \togglefalse{blx@skipentry}% + \def\skipentry{\toggletrue{blx@skipentry}}% + #2\undef\skipentry}} + +% options + +\define@key{blx@bib}{section}{% + \ifcsundef{blx@sbib@#1} + {\blx@err@nosec{#1}} + {\c@refsection#1\relax + \iftoggle{blx@tempa} + {\letcs\blx@tempa{blx@sbib@\the\c@refsection}} + {\blx@err@secfirst}}} + +\define@key{blx@los}{section}{% + \ifcsundef{blx@sbib@#1} + {\blx@err@nosec{#1}} + {\c@refsection#1\relax + \iftoggle{blx@tempa} + {\letcs\blx@tempa{blx@losh@\the\c@refsection}} + {\blx@err@secfirst}}} + +\define@key{blx@bbg}{section}{% + \ifcsundef{blx@sbib@#1} + {\blx@err@nosec{#1}} + {\c@refsection#1\relax}} + +\define@key{blx@bbc}{section}{% + \ifcsundef{blx@sbib@#1} + {\blx@err@nosec{#1}} + {\c@refsection#1\relax}} + +\define@key{blx@bib}{segment}{\blx@key@segment{#1}} +\define@key{blx@los}{segment}{\blx@key@segment{#1}} + +\def\blx@key@segment#1{% + \ifcsundef{blx@segm@\the\c@refsection @#1} + {\blx@error + {Segment '#1' not found} + {The reference segment '#1' could not be found}} + {\c@refsegment#1\relax + \blx@printbibchecks + \blx@filter\blx@tempa{blx@segm@\the\c@refsection @#1}}} + +\define@key{blx@bib}{type}{\blx@key@type{#1}} +\define@key{blx@los}{type}{\blx@key@type{#1}} + +\def\blx@key@type#1{% + \ifcsundef{blx@type@\the\c@refsection @#1} + {\blx@warning{Type '#1' not found}% + \let\blx@tempa\@empty} + {\blx@printbibchecks + \iftoggle{blx@tempb} + {\togglefalse{blx@tempb}% + \blx@filter\blx@tempa{blx@type@\the\c@refsection @#1}} + {\let\blx@tempa\@empty + \blx@error + {'type' used multiple times} + {When passing multiple filter options, each entry\MessageBreak + must satisfy all conditions (AND conjunction),\MessageBreak + hence some options may not be used twice.\MessageBreak + Use 'filter' and '\string\defbibfilter' with OR conjunctions}}}} + +\define@key{blx@bib}{nottype}{\blx@key@nottype{#1}} +\define@key{blx@los}{nottype}{\blx@key@nottype{#1}} + +\def\blx@key@nottype#1{% + \ifcsundef{blx@type@\the\c@refsection @#1} + {} + {\blx@printbibchecks + \blx@notfilter\blx@tempa{blx@type@\the\c@refsection @#1}}} + +\define@key{blx@bib}{subtype}{\blx@key@subtype{#1}} +\define@key{blx@los}{subtype}{\blx@key@subtype{#1}} + +\def\blx@key@subtype#1{% + \ifcsundef{blx@subt@\the\c@refsection @#1} + {\blx@warning{Subtype '#1' not found}% + \let\blx@tempa\@empty} + {\blx@printbibchecks + \iftoggle{blx@tempb} + {\togglefalse{blx@tempb}% + \blx@filter\blx@tempa{blx@subt@\the\c@refsection @#1}} + {\let\blx@tempa\@empty + \blx@error + {'subtype' used multiple times} + {When passing multiple filter options, each entry\MessageBreak + must satisfy all conditions (AND conjunction),\MessageBreak + hence some options may not be used twice.\MessageBreak + Use 'filter' and '\string\defbibfilter' with OR conjunctions}}}} + +\define@key{blx@bib}{notsubtype}{\blx@key@notsubtype{#1}} +\define@key{blx@los}{notsubtype}{\blx@key@notsubtype{#1}} + +\def\blx@key@notsubtype#1{% + \ifcsundef{blx@subt@\the\c@refsection @#1} + {} + {\blx@printbibchecks + \blx@notfilter\blx@tempa{blx@subt@\the\c@refsection @#1}}} + +\define@key{blx@bib}{keyword}{\blx@key@keyword{#1}} +\define@key{blx@los}{keyword}{\blx@key@keyword{#1}} + +\def\blx@key@keyword#1{% + \ifcsundef{blx@keyw@\the\c@refsection @\detokenize{#1}} + {\blx@warning{Keyword '\detokenize{#1}' not found}% + \let\blx@tempa\@empty} + {\blx@printbibchecks + \blx@filter\blx@tempa{blx@keyw@\the\c@refsection @\detokenize{#1}}}} + +\define@key{blx@bib}{notkeyword}{\blx@key@notkeyword{#1}} +\define@key{blx@los}{notkeyword}{\blx@key@notkeyword{#1}} + +\def\blx@key@notkeyword#1{% + \ifcsundef{blx@keyw@\the\c@refsection @\detokenize{#1}} + {} + {\blx@printbibchecks + \blx@notfilter\blx@tempa{blx@keyw@\the\c@refsection @\detokenize{#1}}}} + +\define@key{blx@bib}{category}{\blx@key@category{#1}} +\define@key{blx@los}{category}{\blx@key@category{#1}} + +\def\blx@key@category#1{% + \ifcsundef{blx@catg@\detokenize{#1}} + {\blx@warning{Category '\detokenize{#1}' not found}% + \let\blx@tempa\@empty} + {\blx@printbibchecks + \blx@filter\blx@tempa{blx@catg@\detokenize{#1}}}} + +\define@key{blx@bib}{notcategory}{\blx@key@notcategory{#1}} +\define@key{blx@los}{notcategory}{\blx@key@notcategory{#1}} + +\def\blx@key@notcategory#1{% + \ifcsundef{blx@catg@#1} + {} + {\blx@printbibchecks + \blx@notfilter\blx@tempa{blx@catg@#1}}} + +\define@key{blx@bib}{filter}{\blx@key@filter{#1}} +\define@key{blx@los}{filter}{\blx@key@filter{#1}} + +\def\blx@key@filter#1{% + \ifcsdef{blx@filter@#1} + {\blx@printbibchecks + \blx@bibfilter\blx@tempa{blx@filter@#1}} + {\let\blx@tempa\@empty + \blx@error + {Filter '#1' not found} + {The filter '#1' could not be found.\MessageBreak + Use \string\defbibfilter\space to define it}}} + +\define@key{blx@bib}{check}{\blx@key@bibcheck{#1}} +\define@key{blx@los}{check}{\blx@key@bibcheck{#1}} + +\def\blx@key@bibcheck#1{% + \ifcsdef{blx@bibcheck@#1} + {\letcs\blx@bibcheck{blx@bibcheck@#1}} + {\let\blx@tempa\@empty + \blx@error + {Check '#1' not found} + {The check '#1' could not be found.\MessageBreak + Use \string\defbibcheck\space to define it}}} + +\define@key{blx@bhd}{heading}{\blx@key@heading{#1}} +\define@key{blx@bib}{heading}{\blx@key@heading{#1}} +\define@key{blx@los}{heading}{\blx@key@heading{#1}} +\define@key{blx@bbs}{heading}{\blx@key@heading{#1}} +\define@key{blx@bbg}{heading}{\blx@key@heading{#1}} + +\def\blx@key@heading#1{% + \ifcsundef{blx@head@#1} + {\blx@error + {Heading '#1' not found} + {The heading '#1' could not be found.\MessageBreak + Use \string\defbibheading\space to define it}} + {\def\blx@theheading{#1}}} + +\define@key{blx@bib}{env}{\blx@key@env{#1}} +\define@key{blx@los}{env}{\blx@key@env{#1}} +\define@key{blx@bbs}{env}{\blx@key@env{#1}} +\define@key{blx@bbg}{env}{\blx@key@env{#1}} +\define@key{blx@bbc}{env}{\blx@key@env{#1}} + +\def\blx@key@env#1{% + \ifcsundef{blx@env@#1} + {\blx@error + {Environment '#1' not found} + {The environment '#1' could not be found.\MessageBreak + Use \string\defbibenvironment\space to define it}} + {\def\blx@theenv{#1}}} + +\define@key{blx@bhd}{title}{\def\blx@thetitle{#1}} +\define@key{blx@bib}{title}{\def\blx@thetitle{#1}} +\define@key{blx@los}{title}{\def\blx@thetitle{#1}} + +\define@key{blx@bib}{prenote}{\blx@key@prenote{#1}} +\define@key{blx@los}{prenote}{\blx@key@prenote{#1}} +\define@key{blx@bbs}{prenote}{\blx@key@prenote{#1}} +\define@key{blx@bbg}{prenote}{\blx@key@prenote{#1}} +\define@key{blx@bbc}{prenote}{\blx@key@prenote{#1}} +\def\blx@key@prenote#1{% + \ifcsundef{blx@note@#1} + {\blx@error + {Note '#1' not found} + {The note '#1' could not be found.\MessageBreak + Use \string\defbibnote\space to define it}} + {\def\blx@theprenote{#1}}} + +\define@key{blx@bib}{postnote}{\blx@key@postnote{#1}} +\define@key{blx@los}{postnote}{\blx@key@postnote{#1}} +\define@key{blx@bbs}{postnote}{\blx@key@postnote{#1}} +\define@key{blx@bbg}{postnote}{\blx@key@postnote{#1}} +\define@key{blx@bbc}{postnote}{\blx@key@postnote{#1}} + +\def\blx@key@postnote#1{% + \ifcsundef{blx@note@#1} + {\blx@error + {Note '#1' not found} + {The note '#1' could not be found.\MessageBreak + Use \string\defbibnote\space to define it}} + {\def\blx@thepostnote{#1}}} + +\define@key{blx@bib}{resetnumbers}[true]{% + \ifstrequal{#1}{true} + {\iftoggle{blx@defernumbers} + {\csnumdef{blx@labelnumber@\the\c@refsection}{0}} + {\blx@warning{% + Option 'resetnumbers' requires 'defernumbers=true'.\MessageBreak + Ignoring 'resetnumbers=true'}}} + {}} + +\define@key{blx@bib}{omitnumbers}[true]{% + \ifstrequal{#1}{true} + {\iftoggle{blx@defernumbers} + {\toggletrue{blx@omitnumbers}} + {\blx@warning{% + Option 'omitnumbers' requires 'defernumbers=true'.\MessageBreak + Ignoring 'omitnumbers=true'}}} + {}} + +\define@key{blx@bib}{prefixnumbers}{% + \def\blx@prefixnumbers{#1}% + \iftoggle{blx@defernumbers} + {\csnumdef{blx@labelnumber@\the\c@refsection}{0}} + {\iftoggle{blx@labelnumber} + {\blx@warning{% + Option 'prefixnumbers' requires global\MessageBreak + 'defernumbers=true'}} + {}}} + +% [<options>] + +\newrobustcmd*{\printbibheading}{% + \begingroup + \edef\on@line{\on@line}% + \@ifnextchar[%] + {\blx@printbibheading} + {\blx@printbibheading[]}} + +\def\blx@printbibheading[#1]{% + \def\blx@theheading{bibliography}% + \let\blx@thetitle\@empty + \blx@safe@actives + \setkeys{blx@bhd}{#1}% + \blx@rest@actives + \blx@bibheading\blx@theheading\blx@thetitle + \endgroup} + +% [<options>] + +\newrobustcmd*{\printbibliography}{% + \begingroup + \edef\on@line{\on@line}% + \@ifnextchar[%] + {\blx@printbibliography} + {\blx@printbibliography[]}} + +\def\blx@printbibliography[#1]{% + \toggletrue{blx@tempa}% + \toggletrue{blx@tempb}% + \letcs\blx@tempa{blx@sbib@\the\c@refsection}% + \def\blx@theheading{bibliography}% + \def\blx@theenv{bibliography}% + \let\blx@theprenote\@empty + \let\blx@thepostnote\@empty + \let\blx@thetitle\@empty + \blx@safe@actives + \setkeys{blx@bib}{#1}% + \blx@rest@actives + \ifdefvoid\blx@tempa + {\blx@warn@bibempty\endgroup} + {\blx@bibliography\blx@tempa}} + +% [<options>] + +\newrobustcmd*{\bibbysection}{% + \begingroup + \ifnum\blx@maxsection=\z@ + \blx@warning{No reference sections found}% + \fi + \edef\on@line{\on@line}% + \@ifnextchar[%] + {\blx@bibbysection} + {\blx@bibbysection[]}} + +\def\blx@bibbysection[#1]{% + \def\blx@theheading{bibliography}% + \def\blx@theenv{bibliography}% + \let\blx@theprenote\@empty + \let\blx@thepostnote\@empty + \let\blx@thetitle\@empty + \c@refsection\z@ + \blx@safe@actives + \setkeys{blx@bbs}{#1}% + \blx@rest@actives + \togglefalse{blx@tempa}% + \blx@refsections} + +\def\blx@refsections{% + \ifcsvoid{blx@sbib@\the\c@refsection} + {} + {\toggletrue{blx@tempa}% + \begingroup + \expandafter\blx@bibliography\csname blx@sbib@\the\c@refsection\endcsname}% + \ifnum\c@refsection<\blx@maxsection + \advance\c@refsection\@ne + \expandafter\blx@refsections + \else + \iftoggle{blx@tempa}{}{\blx@warn@bibempty}% + \endgroup + \fi} + +% [<options>] + +\newrobustcmd*{\bibbysegment}{% + \begingroup + \edef\on@line{\on@line}% + \ifnum\blx@maxsegment=\z@ + \blx@warning{No reference segments found}% + \fi + \@ifnextchar[%] + {\blx@bibbysegment} + {\blx@bibbysegment[]}} + +\def\blx@bibbysegment[#1]{% + \def\blx@theheading{bibliography}% + \def\blx@theenv{bibliography}% + \let\blx@theprenote\@empty + \let\blx@thepostnote\@empty + \let\blx@thetitle\@empty + \c@refsection\z@ + \c@refsegment\@ne + \blx@safe@actives + \setkeys{blx@bbg}{#1}% + \blx@rest@actives + \togglefalse{blx@tempa}% + \blx@refsegments} + +\def\blx@refsegments{% + \ifcsvoid{blx@segm@\the\c@refsection @\the\c@refsegment} + {} + {\toggletrue{blx@tempa}% + \begingroup + \letcs\blx@tempa{blx@sbib@\the\c@refsection}% + \blx@filter\blx@tempa{blx@segm@\the\c@refsection @\the\c@refsegment}% + \blx@bibliography\blx@tempa}% + \ifnum\c@refsegment<\blx@maxsegment + \advance\c@refsegment\@ne + \expandafter\blx@refsegments + \else + \iftoggle{blx@tempa}{}{\blx@warn@bibempty}% + \endgroup + \fi} + +% [<options>] + +\newrobustcmd*{\bibbycategory}{% + \begingroup + \edef\on@line{\on@line}% + \ifx\blx@categories\@empty + \blx@warning{No categories found}% + \fi + \@ifnextchar[%] + {\blx@bibbycategory} + {\blx@bibbycategory[]}} + +\def\blx@bibbycategory[#1]{% + \def\blx@theheading{bibliography}% + \def\blx@theenv{bibliography}% + \let\blx@theprenote\@empty + \let\blx@thepostnote\@empty + \let\blx@thetitle\@empty + \c@refsection\z@ + \blx@safe@actives + \setkeys{blx@bbc}{#1}% + \blx@rest@actives + \togglefalse{blx@tempa}% + \forlistloop\blx@bibcategory\blx@categories + \blx@endbibcategory} + +\def\blx@bibcategory#1{% + \ifcsvoid{blx@catg@#1} + {} + {\toggletrue{blx@tempa}% + \begingroup + \blx@key@heading{#1}% + \letcs\blx@tempa{blx@sbib@\the\c@refsection}% + \blx@filter\blx@tempa{blx@catg@#1}% + \blx@bibliography\blx@tempa}}% + +\def\blx@endbibcategory{% + \iftoggle{blx@tempa}{}{\blx@warn@bibempty}% + \endgroup} + +% {<entrykey>,...} + +\def\blx@bibliography{% + \blx@bibheading\blx@theheading\blx@thetitle + \blx@bibnote\blx@theprenote + \begingroup + \blx@bibinit + \let\@noitemerr\@empty + \let\blx@noitem\blx@warn@bibempty + \ifnum\bibinitsep=\z@ + \let\blx@initsep\relax + \fi + \ifnum\bibnamesep=\z@ + \let\blx@namesep\relax + \fi + \csuse{blx@env@\blx@theenv}% + \csuse{blx@hook@bibinit}% + \let\blx@do\blx@bibitem + \let\blx@done\blx@endbibliography + \blx@listloop} + +\def\blx@endbibliography{% + \csuse{blx@endenv@\blx@theenv}% + \blx@noitem + \endgroup + \blx@bibnote\blx@thepostnote + \endgroup} + +\def\blx@bibheading#1#2{% + \begingroup + \edef\blx@tempa{\endgroup + \noexpand\blx@bibheading@i{\expandonce#1}{\expandonce#2}}% + \blx@tempa} + +\def\blx@bibheading@i#1#2{% + \let\newrefsection\relax + \let\newrefsegment\relax + \ifblank{#2} + {\csuse{blx@head@#1}} + {\csuse{blx@head@#1}[#2]}% + \let\newrefsection\blx@newrefsection + \let\newrefsegment\blx@newrefsegment} + +\def\blx@bibnote#1{% + \ifdefempty#1 + {} + {\begingroup + \let\newrefsection\relax + \let\newrefsegment\relax + \noindent + \csuse{blx@note@#1}\par\nobreak + \endgroup}} + +\def\blx@bibinit{% + \iftoggle{blx@citation} + {} + {\toggletrue{blx@bibliography}}% + \blx@blxinit + \blx@resetdata + \csuse{blx@hook@bbxinit}% + \bibsetup\bibfont + \blx@setsfcodes + \csuse{blx@bibsetup}} + +% {<entrykey>} + +\def\blx@bibitem#1{% + \blx@ifdata{#1} + {\begingroup + \blx@getdata{#1}% + \blx@bibcheck + \iftoggle{blx@skipentry}{}{% + \global\let\blx@noitem\@empty + \blx@setoptions@type\abx@field@entrytype + \blx@setoptions@entry + \blx@thelabelnumber + \blx@addprefixnumber + \addtocounter{instcount}\@ne + \csuse{blx@item@\blx@theenv}\relax + \blx@initsep + \blx@namesep + \csuse{blx@hook@bibitem}% + \blx@execute + \blx@initunit + \blx@anchor + \blx@beglang + \bibsentence + \blx@pagetracker + \blx@driver\abx@field@entrytype + \blx@postpunct + \blx@endlang}% + \endgroup} + {}} + +\let\blx@bibcheck\relax + +\def\blx@initsep{% + \blx@imc@iffieldundef{sortinit} + {} + {\ifnum\c@instcount>\@ne + \blx@imc@iffieldequals{sortinit}\blx@previnit + {} + {\addvspace{\bibinitsep}}% + \fi + \global\let\blx@previnit\abx@field@sortinit}} + +\def\blx@namesep{% + \ifnum\c@instcount>\@ne + \blx@imc@iffieldequals{fullhash}\blx@prevhash + {} + {\addvspace{\bibnamesep}}% + \fi + \global\let\blx@prevhash\abx@field@fullhash} + +\newrobustcmd*{\AtBeginBibliography}{\gappto\blx@hook@bibinit} +\newrobustcmd*{\AtEveryBibitem}{\gappto\blx@hook@bibitem} +\@onlypreamble\AtBeginBibliography +\@onlypreamble\AtEveryBibitem + +% page tracker + +\def\blx@pagetracker@context{% + \blx@leavevmode + \ifbool{@filesw} + {\ifbool{pagetracker} + {\protected@write\@mainaux{}{% + \iftoggle{blx@footnote} + {\string\abx@aux@fnpage} + {\string\abx@aux@page}% + {\the\c@instcount}{\noexpand\the\c@page}}} + {}} + {}} + +% {<instcount>}{<page>} + +\protected\def\blx@aux@page#1#2{% + \csgdef{blx@page@#1}{#2}% + \blx@addpagesum{#1}{#2}} +\protected\def\blx@aux@spread#1#2{% + \ifodd#2\relax + \csxdef{blx@page@#1}{\number\numexpr#2-1}% + \else + \csgdef{blx@page@#1}{#2}% + \fi + \blx@addpagesum{#1}{#2}} + +\protected\def\blx@aux@fnpage#1#2{% + \csgdef{blx@fnpage@#1}{#2}% + \blx@addpagesum{#1}{#2}} +\protected\def\blx@aux@fnspread#1#2{% + \ifodd#2\relax + \csxdef{blx@fnpage@#1}{\number\numexpr#2-1}% + \else + \csgdef{blx@fnpage@#1}{#2}% + \fi + \blx@addpagesum{#1}{#2}} + +\AtEndDocument{% + \def\abx@aux@page#1#2{\blx@addpagesum{#1}{#2}}% + \def\abx@aux@fnpage#1#2{\blx@addpagesum{#1}{#2}}} + +% hyperref interface + +\appto\blx@mkhyperref{% + \let\blx@anchors\@empty + \ifundef\hyper@natanchorstart + {\protected\def\blx@anchor{% + \xifinlist{\the\c@refsection @\abx@field@entrykey}{\blx@anchors} + {} + {\listxadd\blx@anchors{\the\c@refsection @\abx@field@entrykey}% + \hypertarget{cite.\the\c@refsection @\abx@field@entrykey}{}}}} + {\protected\def\blx@anchor{% + \xifinlist{\the\c@refsection @\abx@field@entrykey}{\blx@anchors} + {} + {\listxadd\blx@anchors{\the\c@refsection @\abx@field@entrykey}% + \hyper@natanchorstart{\the\c@refsection @\abx@field@entrykey}% + \hyper@natanchorend}}}} + +\appto\blx@mknohyperref{\let\blx@anchor\relax} + +% List of shorthands + +\newrobustcmd*{\printshorthands}{% + \begingroup + \edef\on@line{\on@line}% + \@ifnextchar[%] + {\blx@printshorthands} + {\blx@printshorthands[]}} + +\def\blx@printshorthands[#1]{% + \toggletrue{blx@tempa}% + \toggletrue{blx@tempb}% + \letcs\blx@tempa{blx@losh@\the\c@refsection}% + \def\blx@theheading{shorthands}% + \def\blx@theenv{shorthands}% + \let\blx@theprenote\@empty + \let\blx@thepostnote\@empty + \let\blx@thetitle\@empty + \let\blx@printbibchecks\relax + \blx@safe@actives + \setkeys{blx@los}{#1}% + \blx@rest@actives + \ifdefvoid\blx@tempa + {\blx@warn@losempty\endgroup} + {\blx@shorthands\blx@tempa}} + +\def\blx@printbibchecks{% + \togglefalse{blx@tempa}% + \iftoggle{blx@defernumbers} + {\global\let\blx@printbibchecks\relax} + {\iftoggle{blx@labelnumber} + {\blx@warning@noline{Setting 'defernumbers=true' recommended}} + {\global\let\blx@printbibchecks\relax}}} + +% {<entrykey>,...} + +\def\blx@shorthands{% + \if@twocolumn + \@restonecoltrue\onecolumn + \else + \@restonecolfalse + \fi + \blx@bibheading\blx@theheading\blx@thetitle + \blx@bibnote\blx@theprenote + \begingroup + \blx@bibinit + \let\@noitemerr\@empty + \let\blx@noitem\blx@warn@losempty + \csuse{blx@env@\blx@theenv}% + \csuse{blx@hook@losinit}% + \let\blx@do\blx@lositem + \let\blx@done\blx@endshorthands + \blx@listloop} + +\def\blx@endshorthands{% + \csuse{blx@endenv@\blx@theenv}% + \blx@noitem + \endgroup + \blx@bibnote\blx@thepostnote + \endgroup + \if@restonecol\twocolumn\fi} + +\newrobustcmd*{\AtBeginShorthands}{\gappto\blx@hook@losinit} +\newrobustcmd*{\AtEveryLositem}{\gappto\blx@hook@lositem} +\@onlypreamble\AtBeginShorthands +\@onlypreamble\AtEveryLositem + +% {<entrykey>} + +\def\blx@lositem#1{% + \blx@ifdata{#1} + {\begingroup + \blx@getdata{#1}% + \blx@bibcheck + \iftoggle{blx@skipentry}{}{% + \global\let\blx@noitem\@empty + \blx@setoptions@type\abx@field@entrytype + \blx@setoptions@entry + \addtocounter{instcount}\@ne + \csuse{blx@item@\blx@theenv}\relax + \csuse{blx@hook@lositem}% + \blx@execute + \blx@initunit + \blx@beglang + \bibsentence + \blx@pagetracker + \blx@driver{shorthands}% + \blx@postpunct + \blx@endlang}% + \endgroup} + {}} + +\DeclareBibliographyDriver{shorthands}{% + \iffieldundef{shorttitle} + {\printfield{title}} + {\printfield{shorttitle}}} + +% Reference sections + +\newrobustcmd*{\newrefsection}{% + \ifnum\c@refsection>\z@ + \endrefsection + \fi + \refsection} +\let\blx@newrefsection\newrefsection + +\newrobustcmd*{\refsection}{% + \begingroup + \edef\on@line{\on@line}% + \ifnum\c@refsection>\z@ + \blx@err@nestenv{refsection}% + \blx@endrefsection + \fi + \ifnum\c@refsegment>\z@ + \blx@err@nestenv{refsection}% + \blx@endrefsegment + \fi + \@ifnextchar[%] + {\blx@refsection} + {\blx@refsection[]}} + +\def\blx@refsection{% + \begingroup + \blx@hook@fileverb + \blx@refsection@i} + +\def\blx@refsection@i[#1]{% + \endgroup + \global\advance\blx@maxsection\@ne + \global\c@refsection\blx@maxsection + \blx@inf@refsec + \blx@secinit + \if@filesw + \blx@auxwrite\@mainaux{}{% + \string\abx@aux@refsection{\the\c@refsection}{\the\c@page}}% + \ifblank{#1} + {} + {\let\blx@bibfiles\@empty + \blx@xsanitizeafter{\forcsvlist\blx@refsection@addfile}{#1}% + \forlistloop{\listadd\blx@bibfiles}\blx@bibfiles@global}% + \ifnum\blx@backend=\blx@backend@biber + \blx@refsection@biber + \else + \blx@refsection@bibtex + \fi + \fi + \blx@info{Setting label 'refsection:\the\c@refsection'}% + \label{refsection:\the\c@refsection}% + \endgroup} + +\def\blx@refsection@addfile#1{% + \ifcsdef{blx@res@labl@#1} + {\blx@refsection@addfile@i{\csuse{blx@res@labl@#1}}} + {\blx@refsection@addfile@i{#1}}} + +\def\blx@refsection@addfile@i#1{% + \ifcsdef{blx@res@loca@#1} + {\listeadd\blx@bibfiles{#1}} + {\listeadd\blx@bibfiles{\blx@stripbib{#1}\detokenize{.bib}}}} + +\def\blx@refsection@biber{% + \blx@regbibfiles\jobname\blx@bibfiles + \begingroup + \let\blx@tempa\@empty + \blx@bibdata\blx@tempa\blx@bibfiles + \blx@auxwrite\blx@auxout + {\let\do\blx@datasource} + {\blx@xml@endsection\blx@nl + \blx@xml@comment{section \the\c@refsection}% + \blx@xml@bibdata{\the\c@refsection}{\blx@tempa}% + \blx@xml@section{\the\c@refsection}}% + \endgroup} + +\def\blx@refsection@bibtex{% + \xdef\blx@auxfile@bibtex{\jobname\the\c@refsection\blxauxsuffix}% + \blx@regbibfiles\blx@auxfile@bibtex\blx@bibfiles + \blx@logreq@inactive + \blx@ifsigned{\blx@auxfile@bibtex}{aux} + {\immediate\openout\blx@auxout\blx@auxfile@bibtex.aux\relax + \global\let\blx@auxout@bibtex\blx@auxout + \blx@auxinit@bibtex\blx@bibfiles} + {}} + +\protected\def\endrefsection{% + \blx@endrefsection + \blx@inf@refsec} + +\def\blx@endrefsection{% + \blx@endrefsegment + \ifnum\blx@backend=\blx@backend@biber + \blx@endrefsection@biber + \else + \blx@endrefsection@bibtex + \fi + \global\c@refsection\z@} + +\def\blx@endrefsection@biber{% + \ifnum\c@refsection>\z@ + \blx@auxwrite\blx@auxout{}{% + \blx@xml@endsection\blx@nl + \blx@xml@comment{section 0 (cont.)}% + \blx@xml@section{0}}% + \fi} + +\def\blx@endrefsection@bibtex{% + \ifx\blx@auxout@bibtex\blx@auxout + \immediate\closeout\blx@auxout + \global\let\blx@auxout@bibtex\@mainaux + \xdef\blx@auxfile@bibtex{\jobname}% + \fi} + +\AtEndDocument{% + \blx@endrefsection + \def\abx@aux@refsection#1#2{\blx@addchecksum{#1}{#2}}} + +\protected\def\abx@aux@refsection#1#2{% + \ifnum#1>\blx@maxsection + \global\blx@maxsection#1\relax + \fi + \blx@addchecksum{#1}{#2}} + +% Reference segments + +\newrobustcmd*{\newrefsegment}{% + \ifnum\c@refsegment>\z@ + \blx@endrefsegment + \fi + \refsegment} +\let\blx@newrefsegment\newrefsegment + +\newrobustcmd*{\refsegment}{% + \ifnum\c@refsegment>\z@ + \blx@err@nestenv{refsegment}% + \blx@endrefsegment + \fi + \global\advance\blx@maxsegment\@ne + \global\c@refsegment\blx@maxsegment + \blx@inf@refseg + \blx@info{Setting label 'refsegment:\the\c@refsegment'}% + \label{refsegment:\the\c@refsegment}% + \ifcsundef{blx@segm@\the\c@refsection @\the\c@refsegment} + {\global\cslet{blx@segm@\the\c@refsection @\the\c@refsegment}\@empty} + {}} + +\protected\def\endrefsegment{% + \blx@endrefsegment + \blx@inf@refseg} + +\def\blx@endrefsegment{% + \global\c@refsegment\z@} + +% Reference section/segment auto-reset +% we are prepending to the commands so that the resets happen before +% the part title is typeset otherwise \cites in there could be "ibid" +% which makes no sense +\def\blx@refpatch@part#1{% + \ifundef\part + {\blx@err@nodocdiv{part}} + {\toggletrue{blx@tempa}% + \def\do##1{% + \pretocmd##1{#1} + {\togglefalse{blx@tempa}\listbreak} + {}}% + \docsvlist{% + \H@old@part,% hyperref + \NR@part,% nameref + \@part}% latex/koma-script/memoir + \iftoggle{blx@tempa} + {\blx@err@patch{\string\@part}} + {}% + \let\do\noexpand}} + +\def\blx@refpatch@chapter#1{% + \ifundef\chapter + {\blx@err@nodocdiv{chapter}} + {\pretocmd\@makechapterhead{#1} + {} + {\blx@err@patch{\string\@makechapterhead}}}} + +\def\blx@refpatch@sect#1{% + \ifcsundef{#1} + {\blx@err@nodocdiv{#1}\@gobbletwo} + {\blx@refpatch@sect@i}} + +\edef\blx@refpatch@sect@i#1#2{% + \def\noexpand\do##1{% + \pretocmd##1% + {\noexpand\blx@refpatch@sect@ii{#1}{#2}{\string#2}} + {\togglefalse{blx@tempa}\noexpand\listbreak} + {}}% + \noexpand\blx@refpatch@sect@iii} + +\def\blx@refpatch@sect@ii#1#2#3{% + \ifnumequal{#2}{#3}{#1}{}} + +\def\blx@refpatch@sect@iii{% + \toggletrue{blx@tempa}% + \docsvlist{% order does matter: + \H@old@sectm@m,% memoir+hyperref (what a mess...) + \M@sect,% memoir + \H@old@sect,% hyperref + \NR@sect,% nameref + \scr@sect,% koma-script 3.x + \@sect}% latex + \iftoggle{blx@tempa} + {\blx@err@patch{\string\@sect}} + {}% + \let\do\noexpand} + +% Bibliography categories + +\let\blx@categories\@empty + +% {<category>} + +\newrobustcmd*{\DeclareBibliographyCategory}[1]{% + \ifcsundef{blx@catg@#1} + {\global\cslet{blx@catg@#1}\@empty + \listgadd\blx@categories{#1}} + {\blx@error + {Category '#1' already declared} + {The bibliography category '#1'\MessageBreak + has already been declared}}} +\@onlypreamble\DeclareBibliographyCategory + +% {<category>}{<entrykey>,...} + +\newrobustcmd*{\addtocategory}[2]{% + \ifcsundef{blx@catg@#1} + {\blx@error + {Category '#1' not declared} + {Use \string\DeclareBibliographyCategory\space to declare}} + {\AfterPreamble{% + \blx@xsanitizeafter{\forcsvlist{\blx@addtocategory{#1}}}{#2}}}} + +% {<category>}{<entrykey>,...} + +\def\blx@addtocategory#1#2{% + \blx@auxwrite\@mainaux{}{\string\abx@aux@category{#1}{#2}}% + \abx@aux@category{#1}{#2}} + +% {<category>}{<entrykey>,...} + +\protected\def\abx@aux@category#1#2{% + \xifinlistcs{\detokenize{#2}}{blx@catg@#1} + {} + {\listcsxadd{blx@catg@#1}{\detokenize{#2}}}} + +\AtEndDocument{\let\abx@aux@category\@gobbletwo} + +% [<options>]{<resource>,...} + +\renewrobustcmd*{\bibliography}[1]{% + \begingroup + \def\blx@tempa{file}% + \def\blx@tempb{bibtex}% + \def\blx@tempc{local}% + \blx@xsanitizeafter{\forcsvlist\blx@addbib@legacy}{#1}% + \endgroup} +\@onlypreamble\bibliography + +\def\blx@addbib@legacy#1{% + \begingroup + \edef\blx@tempa{\endgroup + \noexpand\blx@addbib@resource{\blx@stripbib{#1}\detokenize{.bib}}}% + \blx@tempa} + +\def\blx@stripbib#1{% + \expandafter\blx@stripbib@i\detokenize{#1.bib}&} +\edef\blx@stripbib@i{% + \def\noexpand\blx@stripbib@i##1\detokenize{.bib}##2&} +\blx@stripbib@i{#1} + +% [<options>]{<resource>,...} + +\newrobustcmd*{\addbibresource}{% + \blx@addbib\blx@addbib@resource} +\@onlypreamble\addbibresource + +\newrobustcmd*{\addglobalbib}{% + \blx@addbib\blx@addbib@global} +\@onlypreamble\addglobalbib + +\newrobustcmd*{\addsectionbib}{% + \blx@addbib\blx@addbib@register} +\@onlypreamble\addsectionbib + +\def\blx@addbib#1{% + \@ifnextchar[%] + {\blx@addbib@i{#1}} + {\blx@addbib@i{#1}[]}} + +\def\blx@addbib@i#1[#2]{% + \begingroup + \blx@hook@fileverb + \blx@addbib@ii{#1}{#2}} + +\def\blx@addbib@ii#1#2#3{% + \endgroup + \begingroup + \def\blx@tempa{file}% + \def\blx@tempb{bibtex}% + \def\blx@tempc{local}% + \undef\blx@tempd + \setkeys{blx@addbib}{#2}% + \blx@xsanitizeafter{#1}{#3}% + \endgroup} + +\def\blx@hook@fileverb{% + \let\do\@makeother + \dospecials + \catcode`\\=\z@ + \catcode`\{=\@ne + \catcode`\}=\tw@} + +\define@key{blx@addbib}{type}{\def\blx@tempa{#1}} +\define@key{blx@addbib}{datatype}{\def\blx@tempb{#1}} +\define@key{blx@addbib}{location}{\def\blx@tempc{#1}} +\define@key{blx@addbib}{label}{\edef\blx@tempd{\detokenize{#1}}} + +% \blx@res@type@<resource> resource -> type +% \blx@res@data@<resource> resource -> datatype +% \blx@res@loca@<resource> resource -> datatype +% \blx@res@labl@<resource> label -> resource + +\def\blx@addbib@register#1{% + \csxdef{blx@res@type@#1}{\blx@tempa}% + \csxdef{blx@res@data@#1}{\blx@tempb}% + \csxdef{blx@res@loca@#1}{\blx@tempc}% + \ifdef\blx@tempd + {\csxdef{blx@res@labl@\blx@tempd}{#1}} + {}} + +\def\blx@addbib@resource#1{% + \blx@addbib@register{#1}% + \listgadd\blx@bibfiles{#1}% + \blx@regbibfile\jobname{#1}} + +\def\blx@addbib@global#1{% + \blx@addbib@resource{#1}% + \listgadd\blx@bibfiles@global{#1}} + +\let\blx@bibfiles\@empty +\let\blx@bibfiles@global\@empty + +\def\blx@bibdata#1#2{% + \forlistloop{\blx@bibdata@i{#1}}#2} +\def\blx@bibdata@i#1#2{% + \blx@xmlsanitizeafter{\blx@bibdata@ii{#1}{#2}}{#2}} +\def\blx@bibdata@ii#1#2#3{% + \eappto#1{% + \blx@xml@datasource + {\ifcsdef{blx@res@type@#2} + {\csuse{blx@res@type@#2}} + {file}} + {\ifcsdef{blx@res@data@#2} + {\csuse{blx@res@data@#2}} + {bibtex}} + {#3}}} + +%% Citations + +\newrobustcmd*{\AtEveryCite}{\gappto\blx@hook@cite} +\newrobustcmd*{\AtEveryCitekey}{\gappto\blx@hook@citekey} +\@onlypreamble\AtEveryCite +\@onlypreamble\AtEveryCitekey + +\newrobustcmd*{\AtNextCite}{% + \ifundef\blx@hook@cite@next + {\gdef\blx@hook@cite@next{\global\undef\blx@hook@cite@next}} + {}% + \gappto\blx@hook@cite@next} + +\newrobustcmd*{\AtNextCitekey}{% + \ifundef\blx@hook@citekey@next + {\gdef\blx@hook@citekey@next{\global\undef\blx@hook@citekey@next}} + {}% + \gappto\blx@hook@citekey@next} + +% {<style>] + +\newrobustcmd*{\RequireCitationStyle}[1]{% + \blx@inputonce{#1.cbx}{citation style '#1'}{}{}{} + {\blx@error + {Style '#1' not found} + {The citation style '#1' could not be found}}} +\@onlypreamble\RequireCitationStyle + +% {<code>} + +\newrobustcmd*{\InitializeCitationStyle}{\appto\blx@hook@cbxinit} +\@onlypreamble\InitializeCitationStyle + +% {<code>} + +\newrobustcmd*{\OnManualCitation}{\appto\blx@hook@mancite} +\@onlypreamble\OnManualCitation + +\newrobustcmd*{\mancite}{% + \csuse{blx@hook@mancite}% + \blx@ibidreset + \blx@idemreset + \blx@opcitreset + \blx@loccitreset} + +% {<entrykey>}{<message>} + +\def\blx@citation#1#2{% + \ifbool{citerequest} + {\ifnumless\blx@backend\blx@backend@biber % BibTeX only + {\ifcsdef{blx@setp@\the\c@refsection @#1} + {\blx@citation@set{#1}{#2}} + {\ifcsdef{blx@setc@\the\c@refsection @#1} + {\blx@citation@inset{#1}{#2}} + {\blx@citation@entry{#1}{#2}}}} + {\blx@citation@entry{#1}{#2}}% + \ifcsdef{blx@refc@\the\c@refsection @#1}% BibTeX only + {\blx@citation@xref{#1}} + {}} + {}} + +\def\blx@citation@entry#1#2{% + \blx@bibreq{#1}% + \ifinlistcs{#1}{blx@segm@\the\c@refsection @\the\c@refsegment} + {} + {\listcsgadd{blx@segm@\the\c@refsection @\the\c@refsegment}{#1}}% + \blx@ifdata{#1} + {} + {\ifcsdef{blx@miss@\the\c@refsection} + {\ifinlistcs{#1}{blx@miss@\the\c@refsection} + {} + {\blx@logreq@active{#2{#1}}}} + {\blx@logreq@active{#2{#1}}}}} + +\def\blx@citation@set#1#2{% + \blx@citation@entry{#1}{#2}% + \begingroup + \def\do##1{\blx@citation@entry{##1}\blx@msg@cundef}% + \expandafter\expandafter\expandafter\docsvlist + \expandafter\expandafter\expandafter{% + \csname blx@setp@\the\c@refsection @#1\endcsname}% + \endgroup} + +\def\blx@citation@inset#1#2{% + \blx@citation@entry{#1}{#2}% + \expandafter\expandafter\expandafter\blx@citation@inset@i + \expandafter\expandafter\expandafter{% + \csname blx@setc@\the\c@refsection @#1\endcsname}\blx@msg@cundef} + +\def\blx@citation@inset@i#1{% + \ifcsdef{blx@setp@\the\c@refsection @#1} + {\blx@citation@set{#1}} + {\blx@citation@entry{#1}}} + +\def\blx@citation@xref#1{% BibTeX only + \begingroup + \edef\blx@tempa{blx@refp@\the\c@refsection @% + \csname blx@refc@\the\c@refsection @#1\endcsname}% + \ifcsdef\blx@tempa + {\ifinlistcs{#1}\blx@tempa + {} + {\listcsxadd\blx@tempa{#1}}% + \blx@tempcnta\z@ + \def\do##1{\advance\blx@tempcnta\@ne}% + \dolistcsloop\blx@tempa} + {\listcsxadd\blx@tempa{#1}% + \blx@tempcnta\@ne}% + \expandafter\endgroup\ifnum\blx@tempcnta<\blx@minxrefs\relax + \else + \expandafter\expandafter\expandafter\blx@citation@entry + \expandafter\expandafter\expandafter{% + \csname blx@refc@\the\c@refsection @#1\endcsname}\blx@msg@cundef + \fi} + +\def\blx@citation@all{% + \ifbool{citerequest} + {\blx@bibreq{*}% + \global\csletcs + {blx@segm@\the\c@refsection @\the\c@refsegment} + {blx@sbib@\the\c@refsection}% + \ifcsvoid{blx@sort@\the\c@refsection} + {\blx@logreq@active{}} + {}} + {}} + +\protected\def\blx@bibreq#1{% + \ifnum\blx@backend=\blx@backend@biber + \begingroup + \blx@xmlsanitizeafter{\def\blx@tempa}{#1}% + \blx@auxwrite\blx@auxout{}{\blx@xml@citekey{\blx@tempa}}% + \endgroup + \else + \blx@auxwrite\blx@auxout@bibtex{}{\string\citation{#1}}% + \fi} + +% {<set>}{<key1,key2,key3>} + +\newrobustcmd*{\defbibentryset}[2]{% + \@bsphack + \begingroup + \blx@xsanitizeafter{\def\blx@tempa}{#1}% + \let\blx@tempb\@empty + \let\blx@tempc\@empty + \blx@xsanitizeafter{\forcsvlist\blx@defentryset@add}{#2}% + \ifcsdef{blx@set@\the\c@refsection @\blx@tempa} + {\expandafter\ifdefequal + \csname blx@set@\the\c@refsection @\blx@tempa\endcsname + \blx@tempb + {} + {\blx@error + {Conflicting definitions of '\blx@tempa'} + {The entry set '\blx@tempa' been defined before.\MessageBreak + old: \blx@tempa\space = % + \csuse{blx@set@\the\c@refsection @\blx@tempa}\MessageBreak + new: \blx@tempa\space = \blx@tempb\MessageBreak + I'm ignoring the new definition}}} + {\global\cslet{blx@set@\the\c@refsection @\blx@tempa}\blx@tempb + \edef\blx@tempa{% + \AfterPreamble{\blx@setreq{\blx@tempa}{\blx@tempb}}}% + \blx@tempa}% + \endgroup + \@esphack} + +\def\blx@defentryset@add#1{% + \edef\blx@tempb{\blx@tempb\blx@tempc#1}% + \def\blx@tempc{,}} + +\protected\def\blx@setreq#1#2{% + \ifnum\blx@backend=\blx@backend@biber + \begingroup + \blx@xmlsanitizeafter{\def\blx@tempa}{#1}% + \blx@xmlsanitizeafter{\def\blx@tempb}{#2}% + \blx@auxwrite\blx@auxout{}{\blx@xml@citeset{\blx@tempa}{\blx@tempb}}% + \endgroup + \fi} + +% {<entrykey>,...} + +\protected\def\blx@citeloop#1{% + \begingroup + \blx@tempcnta\z@ + \blx@tempcntb\z@ + \let\blx@tempa\@empty + \forcsvlist\blx@citeadd{#1}% + \blx@thenotecheck + \ifnum\blx@tempcnta>\z@ + \ifnum\blx@tempcntb>\z@ + \multicitedelim + \fi + \fi + \letcs\blx@tempb{blx@sort@\the\c@refsection}% + \blx@thecitesort + \edef\blx@tempa{\endgroup + \c@citecount\z@ + \c@citetotal\the\blx@tempcnta\relax + \unexpanded{\forlistloop\blx@citeprint}{\blx@tempb}}% + \blx@tempa} + +\def\blx@notecheck{% + \ifnum\blx@tempcnta>\@ne + \blx@warning{% + Package option 'sortcites' enabled.\MessageBreak + Verify postnote placement}% + \fi} + +\def\blx@citesort{% + \ifnum\blx@tempcnta>\@ne + \blx@filtercitesort\blx@tempb{blx@tempa}% + \else + \blx@citenosort + \fi} + +\def\blx@citenosort{% + \let\blx@tempb\blx@tempa} + +% {<entrykey>} + +\def\blx@citeadd#1{% + \blx@citation{#1}\blx@msg@cundefon + \blx@ifdata{#1} + {\advance\blx@tempcnta\@ne + \listadd\blx@tempa{#1}} + {\ifnum\blx@tempcntb>\z@\multicitedelim\fi + \abx@missing{#1}% + \advance\blx@tempcntb\@ne}} + +% {<entrykey>} + +\protected\def\blx@citeprint#1{% + \advance\c@citecount\@ne + \addtocounter{instcount}\@ne + \ifnum\c@citecount=\@ne + \blx@getdata@cite{#1}% + \blx@precode + \ifnum\c@citetotal>\@ne + \blx@resetdata + \fi + \else + \blx@dlimcode + \fi + \begingroup + \ifnum\c@citetotal>\@ne + \blx@getdata@cite{#1}% + \fi + \blx@entrysetcount + \blx@setoptions@type\abx@field@entrytype + \blx@setoptions@entry + \blx@backref{#1}% + \blx@pagetracker + \csuse{blx@hook@citekey}% + \csuse{blx@hook@citekey@next}% + \blx@execute + \blx@loopcode + \blx@citecounter + \blx@citetracker + \blx@ibidtracker + \blx@idemtracker + \blx@opcittracker + \blx@loccittracker + \ifnum\c@citecount=\c@citetotal + \def\blx@thecheckpunct{\blx@err@nestcite\@gobble}% + \blx@postcode + \fi + \endgroup} + +% cite counter + +\def\blx@citecounter@global{% + \ifbool{@filesw} + {\ifbool{citetracker} + {\immediate\write\@mainaux{% + \string\abx@aux@count + {\the\c@refsection}{\abx@field@entrykey}}} + {}} + {}} + +\def\blx@citecounter@context{% + \ifbool{@filesw} + {\ifbool{citetracker} + {\immediate\write\@mainaux{% + \iftoggle{blx@footnote} + {\string\abx@aux@fncount} + {\string\abx@aux@count}% + {\the\c@refsection}{\abx@field@entrykey}}} + {}} + {}} + +% {<refsection>}{<entrykey>} + +\protected\def\blx@aux@count#1#2{% + \csnumgdef{blx@count@#1@\detokenize{#2}}{\csuse{blx@count@#1@\detokenize{#2}}+1}} +\protected\def\blx@aux@fncount#1#2{% + \csnumgdef{blx@fncount@#1@\detokenize{#2}}{\csuse{blx@fncount@#1@\detokenize{#2}}+1}} + +\let\abx@aux@count\@gobbletwo +\let\abx@aux@fncount\@gobbletwo + +\AtEndDocument{% + \let\abx@aux@count\@gobbletwo + \let\abx@aux@fncount\@gobbletwo} + +\protected\def\blx@setcitecounter@global{% + \c@citecounter0% + \csuse{blx@count@\the\c@refsection @\abx@field@entrykey}% + \relax} + +\protected\def\blx@setcitecounter@context{% + \c@citecounter0% + \iftoggle{blx@footnote} + {\csuse{blx@fncount@\the\c@refsection @\abx@field@entrykey}} + {\csuse{blx@count@\the\c@refsection @\abx@field@entrykey}}% + \relax} + +% cite tracker + +\def\blx@citetracker@global{% + \ifbool{citetracker} + {\xifinlistcs\abx@field@entrykey{blx@bsee@\the\c@refsection} + {} + {\listcsxadd{blx@bsee@\the\c@refsection}\abx@field@entrykey}} + {}} + +\def\blx@citetracker@context{% + \ifbool{citetracker} + {\iftoggle{blx@footnote} + {\xifinlistcs\abx@field@entrykey{blx@fsee@\the\c@refsection} + {} + {\listcsxadd{blx@fsee@\the\c@refsection}\abx@field@entrykey}} + {\xifinlistcs{\abx@field@entrykey}{blx@bsee@\the\c@refsection} + {} + {\listcsxadd{blx@bsee@\the\c@refsection}\abx@field@entrykey}}} + {}} + +\protected\appto\abx@savetrackers{% + \global\csletcs{blx@saved@bsee@\the\c@refsection}{blx@bsee@\the\c@refsection}% + \global\csletcs{blx@saved@fsee@\the\c@refsection}{blx@fsee@\the\c@refsection}} + +\protected\appto\abx@resttrackers{% + \global\csletcs{blx@bsee@\the\c@refsection}{blx@saved@bsee@\the\c@refsection}% + \global\csletcs{blx@fsee@\the\c@refsection}{blx@saved@fsee@\the\c@refsection}} + +\protected\appto\abx@cleartrackers{% + \global\cslet{blx@saved@bsee@\the\c@refsection}\@empty + \global\cslet{blx@saved@fsee@\the\c@refsection}\@empty} + +% ibidem tracker + +\def\blx@ibidtracker@gobal{% + \ifbool{citetracker} + {\global\let\blx@lastkey@text\abx@field@entrykey} + {}} + +\def\blx@ibidtracker@context{% + \ifbool{citetracker} + {\iftoggle{blx@footnote} + {\global\let\blx@lastkey@foot\abx@field@entrykey} + {\global\let\blx@lastkey@text\abx@field@entrykey}} + {}} + +\def\blx@ibidtracker@strict{% + \blx@ifcitesingle + {\blx@ibidtracker@gobal} + {\blx@ibidreset@gobal}}% + +\def\blx@ibidtracker@constrict{% + \blx@ifcitesingle + {\blx@mpfnsave + \blx@ibidtracker@context} + {\blx@ibidreset@context}}% + +\def\blx@ibidreset@force{% + \global\undef\blx@lastkey@text + \global\undef\blx@lastkey@foot + \blx@mpfnreset} + +\def\blx@ibidreset@gobal{% + \global\undef\blx@lastkey@text} + +\def\blx@ibidreset@context{% + \iftoggle{blx@footnote} + {\blx@mpfnreset + \global\undef\blx@lastkey@foot} + {\global\undef\blx@lastkey@text}} + +\protected\appto\abx@savetrackers{% + \global\let\blx@saved@lastkey@text\blx@lastkey@text + \global\let\blx@saved@lastkey@foot\blx@lastkey@foot} + +\protected\appto\abx@resttrackers{% + \global\let\blx@lastkey@text\blx@saved@lastkey@text + \global\let\blx@lastkey@foot\blx@saved@lastkey@foot} + +\protected\appto\abx@cleartrackers{% + \global\undef\blx@saved@lastkey@text + \global\undef\blx@saved@lastkey@foot} + +% idem tracker + +\def\blx@idemtracker@gobal{% + \ifbool{citetracker} + {\global\let\blx@lasthash@text\abx@field@fullhash} + {}} + +\def\blx@idemtracker@context{% + \ifbool{citetracker} + {\iftoggle{blx@footnote} + {\global\let\blx@lasthash@foot\abx@field@fullhash} + {\global\let\blx@lasthash@text\abx@field@fullhash}} + {}} + +\let\blx@idemtracker@strict\blx@idemtracker@gobal + +\def\blx@idemtracker@constrict{% + \blx@mpfnsave + \blx@idemtracker@context} + +\def\blx@idemreset@force{% + \global\undef\blx@lasthash@text + \global\undef\blx@lasthash@foot + \blx@mpfnreset} + +\def\blx@idemreset@gobal{% + \global\undef\blx@lasthash@text} + +\def\blx@idemreset@context{% + \iftoggle{blx@footnote} + {\blx@mpfnreset + \global\undef\blx@lasthash@foot} + {\global\undef\blx@lasthash@text}} + +\protected\appto\abx@savetrackers{% + \global\let\blx@saved@lasthash@text\blx@lasthash@text + \global\let\blx@saved@lasthash@text\blx@lasthash@text} + +\protected\appto\abx@resttrackers{% + \global\let\blx@lasthash@text\blx@saved@lasthash@text + \global\let\blx@lasthash@text\blx@saved@lasthash@text} + +\protected\appto\abx@cleartrackers{% + \global\undef\blx@saved@lasthash@text + \global\undef\blx@saved@lasthash@foot} + +% opcit tracker + +\def\blx@opcittracker@gobal{% + \ifbool{citetracker} + {\blx@opcit@tracker{text}} + {}} + +\def\blx@opcittracker@context{% + \ifbool{citetracker} + {\iftoggle{blx@footnote} + {\blx@opcit@tracker{foot}} + {\blx@opcit@tracker{text}}} + {}} + +\def\blx@opcittracker@strict{% + \blx@ifcitesingle + {\blx@opcittracker@gobal} + {\blx@opcitreset@gobal}}% + +\def\blx@opcittracker@constrict{% + \blx@ifcitesingle + {\blx@mpfnsave + \blx@opcittracker@context} + {\blx@opcitreset@context}}% + +\def\blx@opcit@tracker#1{% + \blx@imc@iffieldundef{namehash} + {} + {\global\cslet{blx@lastkey@#1@\abx@field@namehash}\abx@field@entrykey + \xifinlistcs\abx@field@namehash{blx@trackhash@#1} + {} + {\listcsxadd{blx@trackhash@#1}\abx@field@namehash}}} + +\def\blx@opcit@reset#1{% + \begingroup + \def\do##1{\global\csundef{blx@lastkey@#1@##1}}% + \dolistcsloop{blx@trackhash@#1}% + \global\cslet{blx@trackhash@#1}\@empty + \endgroup} + +\def\blx@opcitreset@force{% + \blx@opcit@reset{text}% + \blx@opcit@reset{foot}% + \blx@mpfnreset} + +\def\blx@opcitreset@gobal{% + \blx@opcit@reset{text}} + +\def\blx@opcitreset@context{% + \iftoggle{blx@footnote} + {\blx@opcit@reset{foot}% + \blx@mpfnreset} + {\blx@opcit@reset{text}}} + +\let\blx@trackhash@text\@empty +\let\blx@trackhash@foot\@empty + +\protected\appto\abx@savetrackers{% + \begingroup + \def\do#1{\global\csletcs{blx@saved@lastkey@text@#1}{blx@lastkey@text@#1}}% + \dolistloop\blx@trackhash@text + \global\let\blx@saved@trackhash@text\blx@trackhash@text + \def\do#1{\global\csletcs{blx@saved@lastkey@foot@#1}{blx@lastkey@foot@#1}}% + \dolistloop\blx@trackhash@foot + \global\let\blx@saved@trackhash@foot\blx@trackhash@foot + \endgroup} + +\protected\appto\abx@resttrackers{% + \begingroup + \blx@opcit@reset{text}% + \global\let\blx@trackhash@text\blx@saved@trackhash@text + \def\do#1{\global\csletcs{blx@lastkey@text@#1}{blx@saved@lastkey@text@#1}}% + \dolistloop\blx@trackhash@text + \blx@opcit@reset{foot}% + \global\let\blx@trackhash@foot\blx@saved@trackhash@foot + \def\do#1{\global\csletcs{blx@lastkey@foot@#1}{blx@saved@lastkey@foot@#1}}% + \dolistloop\blx@trackhash@foot + \endgroup} + +\protected\appto\abx@cleartrackers{% + \begingroup + \def\do#1{\global\csundef{blx@saved@lastkey@text@#1}}% + \dolistloop\blx@saved@trackhash@text + \global\undef\blx@saved@trackhash@text + \def\do#1{\global\csundef{blx@saved@lastkey@foot@#1}}% + \dolistloop\blx@saved@trackhash@foot + \global\undef\blx@saved@trackhash@foot + \endgroup} + +% loccit tracker + +\def\blx@loccittracker@gobal{% + \ifbool{citetracker} + {\blx@loccit@tracker{text}} + {}} + +\def\blx@loccittracker@context{% + \ifbool{citetracker} + {\iftoggle{blx@footnote} + {\blx@loccit@tracker{foot}} + {\blx@loccit@tracker{text}}} + {}} + +\def\blx@loccittracker@strict{% + \ifbool{citetracker} + {\blx@loccit@stricttracker{text}} + {}} + +\def\blx@loccittracker@constrict{% + \ifbool{citetracker} + {\iftoggle{blx@footnote} + {\blx@mpfnsave + \blx@loccit@stricttracker{foot}} + {\blx@loccit@stricttracker{text}}} + {}} + +\def\blx@loccit@tracker#1{% + \global\csundef{blx@lastnote@#1@\abx@field@entrykey}% + \blx@imc@iffieldundef{postnote} + {} + {\global\cslet{blx@lastnote@#1@\abx@field@entrykey}\abx@field@postnote + \xifinlistcs\abx@field@entrykey{blx@trackkeys@#1} + {} + {\listcsxadd{blx@trackkeys@#1}\abx@field@entrykey}}} + +\def\blx@loccit@stricttracker#1{% + \global\csundef{blx@lastnote@#1@\abx@field@entrykey}% + \blx@imc@iffieldundef{postnote} + {} + {\blx@ifcitesingle + {\expandafter\blx@imc@ifpages + \expandafter{\abx@field@postnote} + {\global\cslet{blx@lastnote@#1@\abx@field@entrykey}\abx@field@postnote + \xifinlistcs\abx@field@entrykey{blx@trackkeys@#1} + {} + {\listcsxadd{blx@trackkeys@#1}\abx@field@entrykey}} + {}} + {}}} + +\def\blx@loccit@reset#1{% + \begingroup + \def\do##1{\global\csundef{blx@lastnote@#1@##1}}% + \dolistcsloop{blx@trackkeys@#1}% + \global\cslet{blx@trackkeys@#1}\@empty + \endgroup} + +\def\blx@loccitreset@force{% + \blx@loccit@reset{text}% + \blx@loccit@reset{foot}% + \blx@mpfnreset} + +\def\blx@loccitreset@gobal{% + \blx@loccit@reset{text}} + +\def\blx@loccitreset@context{% + \iftoggle{blx@footnote} + {\blx@loccit@reset{foot}% + \blx@mpfnreset} + {\blx@loccit@reset{text}}} + +\let\blx@trackkeys@text\@empty +\let\blx@trackkeys@foot\@empty + +\protected\appto\abx@savetrackers{% + \begingroup + \def\do#1{\global\csletcs{blx@saved@lastnote@text@#1}{blx@lastnote@text@#1}}% + \dolistloop\blx@trackkeys@text + \global\let\blx@saved@trackkeys@text\blx@trackkeys@text + \def\do#1{\global\csletcs{blx@saved@lastnote@foot@#1}{blx@lastnote@foot@#1}}% + \dolistloop\blx@trackkeys@foot + \global\let\blx@saved@trackkeys@foot\blx@trackkeys@foot + \endgroup} + +\protected\appto\abx@resttrackers{% + \begingroup + \blx@loccit@reset{text}% + \global\let\blx@trackkeys@text\blx@saved@trackkeys@text + \def\do#1{\global\csletcs{blx@lastnote@text@#1}{blx@saved@lastnote@text@#1}}% + \dolistloop\blx@trackkeys@text + \blx@loccit@reset{foot}% + \global\let\blx@trackkeys@foot\blx@saved@trackkeys@foot + \def\do#1{\global\csletcs{blx@lastnote@foot@#1}{blx@saved@lastnote@foot@#1}}% + \dolistloop\blx@trackkeys@foot + \endgroup} + +\protected\appto\abx@cleartrackers{% + \begingroup + \def\do#1{\global\csundef{blx@saved@lastnote@text@#1}}% + \dolistloop\blx@saved@trackkeys@text + \global\undef\blx@saved@trackkeys@text + \def\do#1{\global\csundef{blx@saved@lastnote@foot@#1}}% + \dolistloop\blx@saved@trackkeys@foot + \global\undef\blx@saved@trackkeys@foot + \endgroup} + +\def\blx@addbackref#1{% + \ifcsdef{blx@setp@\the\c@refsection @#1} + {\ifcase\blx@backrefsetstyle + \blx@addbackref@i{#1}% + \or + \blx@addbackref@ii{setp}{#1}% + \or + \blx@addbackref@i{#1}% + \or + \blx@addbackref@i{#1}% + \or + \blx@addbackref@i{#1}% + \blx@addbackref@ii{setp}{#1}% + \or + \blx@addbackref@i{#1}% + \blx@addbackref@ii{setp}{#1}% + \fi} + {\ifcsdef{blx@setc@\the\c@refsection @#1} + {\ifcase\blx@backrefsetstyle + \blx@addbackref@ii{setc}{#1}% + \or + \blx@addbackref@i{#1}% + \or + \blx@addbackref@i{#1}% + \or + \blx@addbackref@i{#1}% + \blx@addbackref@ii{setc}{#1}% + \or + \blx@addbackref@i{#1}% + \or + \blx@addbackref@i{#1}% + \blx@addbackref@ii{setc}{#1}% + \fi} + {\blx@addbackref@i{#1}}}} + +\def\blx@addbackref@i#1{% + \ifbacktracker + \blx@leavevmode + \if@filesw + \protected@write\@mainaux{}{\string\abx@aux@backref + {\the\c@instcount}{#1}{\the\c@refsection}% + {\thepage}{\noexpand\the\c@page}}% + \fi + \fi} + +\def\blx@addbackref@ii#1#2{% + \expandafter\expandafter\expandafter\forcsvlist + \expandafter\expandafter\expandafter\blx@addbackref@i + \expandafter\expandafter\expandafter{% + \csname blx@#1@\the\c@refsection @#2\endcsname}} + +% {<instcount>}{<entrykey>}{<refsection>}{<page>}{<page int>} + +\protected\def\blx@aux@backref#1#2#3#4#5{% + \ifcsundef{blx@pref@#3@\detokenize{#2}} + {\global\cslet{blx@pref@#3@\detokenize{#2}}\@empty + \expandafter\blx@onlypreamble\csname blx@pref@#3@\detokenize{#2}\endcsname} + {}% + \ifinlistcs{#4}{blx@pref@#3@\detokenize{#2}} + {} + {\listcsgadd{blx@pref@#3@\detokenize{#2}}{#4}}% + \blx@addpagesum{#1}{#5}} + +\AtEndDocument{% + \def\abx@aux@backref#1#2#3#4#5{\blx@addpagesum{#1}{#5}}} + +% {<true>}{<false>} + +\def\blx@ifcitesingle{% + \ifnum\c@citetotal=\@ne + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi} + +% hyperref interface + +\appto\blx@mkhyperref{% + \protected\def\blx@imc@bibhyperref{% + \@ifnextchar[%] + {\blx@bibhyperref} + {\blx@bibhyperref[\abx@field@entrykey]}}% + \ifundef\hyper@natanchorstart + {\long\def\blx@bibhyperref[#1]#2{% + \blx@sfsave\hyperlink{cite.\the\c@refsection @#1}{\blx@sfrest + #2% + \blx@sfsave}\blx@sfrest}% + \protected\long\def\blx@imc@bibhyperlink#1#2{% + \blx@sfsave\hyperlink{cite.\the\c@refsection:#1}{\blx@sfrest + #2% + \blx@sfsave}\blx@sfrest}% + \protected\long\def\blx@imc@bibhypertarget#1#2{% + \blx@sfsave\hypertarget{cite.\the\c@refsection:#1}{\blx@sfrest + #2% + \blx@sfsave}\blx@sfrest}}% + {\long\def\blx@bibhyperref[#1]#2{% + \blx@sfsave\hyper@natlinkstart{\the\c@refsection @#1}\blx@sfrest + #2% + \blx@sfsave\hyper@natlinkend\blx@sfrest}% + \protected\long\def\blx@imc@bibhyperlink#1#2{% + \blx@sfsave\hyper@natlinkstart{\the\c@refsection:#1}\blx@sfrest + #2% + \blx@sfsave\hyper@natlinkend\blx@sfrest}% + \protected\long\def\blx@imc@bibhypertarget#1#2{% + \blx@sfsave\hyper@natanchorstart{\the\c@refsection:#1}\blx@sfrest + #2% + \blx@sfsave\hyper@natanchorend\blx@sfrest}} + \let\blx@imc@ifhyperref\@firstoftwo + \def\blx@sf{\spacefactor}% + \def\blx@sfsave{% + \blx@leavevmode + \numgdef\blx@sf{\spacefactor}}% + \def\blx@sfrest{% + \ifhmode\spacefactor\blx@sf\relax\fi + \gdef\blx@sf{\spacefactor}}} + +\appto\blx@mknohyperref{% + \protected\def\blx@imc@bibhyperref{\@ifnextchar[\blx@nohyperref\@firstofone}% + \def\blx@nohyperref[#1]#2{#2}% + \let\blx@imc@bibhyperlink\@secondoftwo + \let\blx@imc@bibhypertarget\@secondoftwo + \let\blx@imc@ifhyperref\@secondoftwo} + +\blx@regimcs{% + \bibhyperref \bibhyperlink \bibhypertarget \ifhyperref} + +% {<entrykey>,...} + +\protected\def\nocite#{\blx@nocite} + +\def\blx@nocite#1{% + \@bsphack + \AfterPreamble{% + \iftoggle{blx@bibliography} + {} + {\ifstrequal{*}{#1} + {\blx@citation@all} + {\blx@xsanitizeafter{\forcsvlist\blx@nocite@do}{#1}}}}% + \@esphack} + +\def\blx@nocite@do#1{\blx@citation{#1}\blx@msg@cundef} + +% {<macro>}[<arg1>][<arg2>]{<arg3>} +% => <macro>{<arg1>}{<arg2>}{<arg3>} + +\protected\def\blx@citeargs#1{% + \@ifnextchar[%] + {\blx@citeargs@i{#1}} + {\blx@citeargs@iii{#1{}{}}}} +\long\def\blx@citeargs@i#1[#2]{% + \@ifnextchar[%] + {\blx@citeargs@ii{#1{#2}}} + {\blx@citeargs@iii{#1{}{#2}}}} +\long\def\blx@citeargs@ii#1[#2]{% + \blx@citeargs@iii{#1{#2}}} +\long\def\blx@citeargs@iii#1#2{% + \blx@xsanitizeafter{#1}{#2}} + +% {<macro>}(<arg1>)(<arg2>) +% => <macro>{<arg1>}{<arg2>} + +\protected\def\blx@multiargs#1{% + \@ifnextchar(%) + {\blx@multiargs@i{#1}} + {#1{}{}}} +\long\def\blx@multiargs@i#1(#2){% + \@ifnextchar(%) + {\blx@multiargs@ii{#1{#2}}} + {#1{}{#2}}} +\long\def\blx@multiargs@ii#1(#2){#1{#2}} + +% {<macro>}[<arg1>][<arg2>]{<arg3>}<punct> +% => <macro>{<arg1>}{<arg2>}{<arg3>}{<punctcmd>} + +\protected\def\blx@citepunct#1{% + \blx@citeargs{\blx@citepunct@i{#1}}} +\long\def\blx@citepunct@i#1#2#3#4{% + \blx@thecheckpunct{#1{#2}{#3}{#4}}} + +% {<csname>}[<arg1>][<arg2>]{arg3}[arg4]{arg5}<punct> +% => <macro>{<arg1>}{<arg2>}{<arg3>}{<arg4>}{arg5}{<punctcmd>} + +\protected\def\blx@citexpunct#1{% + \blx@citeargs{\blx@citexpunct@i{#1}}} +\long\def\blx@citexpunct@i#1#2#3#4{% + \@ifnextchar[%] + {\blx@citexpunct@ii{#1}{{#2}{#3}{#4}}} + {\blx@citexpunct@ii{#1}{{#2}{#3}{#4}}[#1]}} +\long\def\blx@citexpunct@ii#1#2[#3]#4{% + \blx@thecheckpunct{\blxcitecmd{#1}#2{#3}{#4}}} + +% {<code>}<punct> => <code>{<punctcmd>} + +\long\def\blx@checkpunct#1{% + \begingroup + \def\blx@tempa{\endgroup#1}% + \futurelet\blx@tempb\blx@checkpunct@i} +\def\blx@checkpunct@i{% + \expandafter\blx@checkpunct@ii\blx@autopunct&} +\def\blx@checkpunct@ii#1{% + \ifx#1&% + \expandafter\blx@checkpunct@iii + \fi + \ifx#1\blx@tempb + \expandafter\blx@checkpunct@iv + \fi + \blx@checkpunct@ii} +\def\blx@checkpunct@iii#1\blx@checkpunct@ii{% + \blx@tempa{\blx@postpunct}} +\def\blx@checkpunct@iv#1\blx@checkpunct@ii#2{% + \edef\blx@tempa{% + \expandonce\blx@tempa{% + \ifcsdef{blx@pm@\detokenize{#3}} + {\csname blx@imc@add\csname blx@pm@\detokenize{#3}\endcsname + \endcsname} + {\noexpand#3}}}% + \blx@tempa} + +\long\def\blx@nocheckpunct#1{#1{}} + +\protected\def\blx@citeinit{% + \iftoggle{blx@bibliography} + {} + {\toggletrue{blx@citation}}% + \blx@blxinit + \citesetup + \blx@setsfcodes + \blx@postpunct@agroup + \blx@resetdata + \blx@leavevmode + \csuse{blx@hook@cite}% + \csuse{blx@hook@cite@next}% + \let\blx@citeinit\blx@resetdata} + +\protected\def\blx@citecmdinit{% + \blx@leavevmode@cite + \iftoggle{blx@bibliography} + {} + {\blx@initunit}} + +% *{<command>}[<wrapper>]{<precode>}{<loopcode>}{<delimcode>}{<postcode>} + +\newrobustcmd*{\DeclareCiteCommand}{% + \@ifstar{\blx@defcitecmd*}{\blx@defcitecmd{}}} + +\def\blx@defcitecmd#1#2{% + \begingroup + \escapechar\m@ne + \edef\blx@tempa{\endgroup + \noexpand\blx@defcitecmd@i{#1}{\string#2}}% + \blx@tempa} + +\def\blx@defcitecmd@i#1#2{% + \blx@checkcitecmd{#2}{#1}% + \protected\csdef{#2}{% + \blx@citecmdinit + \@ifstar + {\blx@citepunct{\blxcitecmd{#2*}}} + {\blx@citepunct{\blxcitecmd{#2}}}}% + \@ifnextchar[%] + {\blx@defcitecmd@iii{#2#1}} + {\blx@defcitecmd@ii{#2#1}}} + +\long\def\blx@defcitecmd@ii#1{% + \protected\csedef{blx@cite@#1}{\blxciteicmd{#1}}% + \blx@defcitecmd@iv{#1}} + +\long\def\blx@defcitecmd@iii#1[#2]{% + \protected\long\csedef{blx@cite@#1}##1##2##3##4{% + \begingroup + \blx@citeinit + \unexpanded{#2}{\blxciteicmd{#1}{##1}{##2}{##3}{}}% + ##4\endgroup}% + \blx@defcitecmd@iv{#1}} + +\long\def\blx@defcitecmd@iv#1#2#3#4#5{% + \protected\long\csdef{blx@citei@#1}##1##2##3##4{% + \ifblank{##1} + {} + {\def\abx@field@prenote{##1}}% + \ifblank{##2} + {\let\blx@thenotecheck\relax} + {\def\abx@field@postnote{##2}}% + \def\blx@precode{#2}% + \def\blx@loopcode{#3}% + \def\blx@dlimcode{#4}% + \def\blx@postcode{#5##4}% + \blx@citeloop{##3}% + \endgroup}} + +% {<type>}{<name>}{*} + +\def\blx@checkcitecmd#1#2{% + \ifblank{#2} + {\ifcsdef{blx@cite@#1} + {\blx@info{Redefining '\@backslashchar#1'}} + {\ifcsundef{#1} + {} + {\blx@warning@noline{Redefining '\@backslashchar#1'}}}% + \ifcsdef{blx@cite@#1*} + {} + {\csedef{blx@cite@#1*}{% + \expandafter\noexpand\csname blx@cite@#1\endcsname}% + \csedef{blx@citei@#1*}{% + \expandafter\noexpand\csname blx@citei@#1\endcsname}}} + {\ifcsdef{blx@cite@#1} + {} + {\csdef{blx@cite@#1}{\blx@err@citecmd{#1}}% + \csdef{blx@citei@#1}{\blx@err@citecmd{#1}}}}} + +% {<name>}{prenote}{postnote}{citekey}{punct} + +\newrobustcmd*{\blxcitecmd}[1]{% + \ifcsundef{blx@cite@#1} + {\blx@err@citecmd{#1}} + {\csuse{blx@cite@#1}}} + +\newrobustcmd*{\blxciteicmd}[1]{% + \begingroup + \blx@citeinit + \ifcsundef{blx@citei@#1} + {\blx@err@citecmd{#1}} + {\csuse{blx@citei@#1}}} + +% {<multicitecount>}{<name>}{prenote}{postnote}{citekey}{punct} + +\protected\def\blxmciteicmd#1{% + \c@multicitecount#1\relax + \blxciteicmd} + +% {<multicitetotal>}{<multiprenote>}{<multipostnote>} + +\protected\def\blxmcites#1#2#3{% + \begingroup + \blx@citeinit + \c@multicitecount\z@ + \c@multicitetotal#1\relax + \ifnum\c@multicitetotal>\@ne + \let\blx@ifcitesingle\@secondoftwo + \fi + \ifblank{#2}% + {} + {\def\abx@field@multiprenote{#2}}% + \ifblank{#3}% + {} + {\def\abx@field@multipostnote{#3}}% + \usebibmacro{multiprenote}} + +\protected\def\blxendmcites{% + \usebibmacro{multipostnote}% + \endgroup} + +% {<command>}[<wrapper>]{<cite>}{<delimiter>} + +\newrobustcmd{\DeclareMultiCiteCommand}[1]{% + \ifundef#1% + {} + {\blx@info{Redefining '\string#1'}}% + \@ifnextchar[%] + {\blx@defmcitecmd{#1}} + {\blx@defmcitecmd{#1}[\@firstofone]}} + +\def\blx@defmcitecmd#1[#2]#3#4{% + \begingroup + \escapechar\m@ne + \edef\blx@tempa{\endgroup + \protected\def\noexpand#1{% + \blx@citecmdinit + \noexpand\@ifstar + {\expandafter\noexpand + \csname blx@mcite@\string#1\endcsname*% + \expandafter\noexpand + \csname blx@mcitei@\string#1\endcsname} + {\expandafter\noexpand + \csname blx@mcite@\string#1\endcsname{}% + \expandafter\noexpand + \csname blx@mcitei@\string#1\endcsname}}% + \protected\csdef{blx@mcite@\string#1}####1####2{% + \begingroup + \blx@citeinit + \noexpand\blx@multicite + ####2% + {\unexpanded{#2}}% + {\string#3####1}% + {\unexpanded{#4}}}% + \protected\long\csdef{blx@mcitei@\string#1}}% + \blx@tempa##1##2##3{##1{##2}##3\endgroup}} + +% {<command>}{<wrapper>}{<citecmd>}{<delimiter>} => +% <init><command>{<wrapper>}{<cites>}{<punct>} + +\def\blx@multicite#1#2#3#4{% + \begingroup + \def\blx@tempa{#1}% + \def\blx@tempb{#2}% + \def\blx@tempc{#3}% + \def\blx@tempd{#4}% + \c@multicitetotal\z@ + \blx@multiargs\blx@multicite@i} + +\def\blx@multicite@i#1#2{% + \ifblank{#1}% + {\let\abx@field@multiprenote\@empty}% + {\def\abx@field@multiprenote{#1}}% + \ifblank{#2}% + {\let\abx@field@multipostnote\@empty}% + {\def\abx@field@multipostnote{#2}}% + \let\blx@tempe\@empty + \let\blx@tempf\@empty + \togglefalse{blx@tempa}% + \blx@multiparse} + +\def\blx@multicite@add#1#2#3{% + \togglefalse{blx@tempa}% + \advance\c@multicitetotal\@ne + \eappto\blx@tempe{% + \expandonce\blx@tempf + \blxmciteicmd{\the\c@multicitetotal}% + {\expandonce\blx@tempc}\unexpanded{{#1}{#2}{#3}}{}}% + \let\blx@tempf\blx@tempd + \blx@multiparse} + +\def\blx@multicite@end#1{% + \edef\blx@tempa{\endgroup + \expandonce\blx@tempa + {\expandonce\blx@tempb}% + {\blxmcites + {\the\c@multicitetotal}% + {\expandonce\abx@field@multiprenote}% + {\expandonce\abx@field@multipostnote}% + \expandonce\blx@tempe + \blxendmcites}% + {#1}% + \iftoggle{blx@tempa}{\relax\space}{}}% + \blx@tempa} + +\def\blx@multiparse{% + \futurelet\@let@token\blx@multiparse@i} + +\def\blx@multiparse@i{% + \ifx\@let@token\relax + \blx@multiparse@ii{\blx@multicite@end{}}% + \fi + \ifx\@let@token[%] + \blx@multiparse@ii{\blx@citeargs\blx@multicite@add}% + \fi + \ifx\@let@token\bgroup + \blx@multiparse@ii{\blx@citeargs\blx@multicite@add}% + \fi + \ifx\@let@token\@sptoken + \blx@multiparse@ii\blx@multiparse@iii + \fi + \iftrue + \iftoggle{blx@tempa} + {\blx@multiparse@ii{\blx@multicite@end{}}} + {\blx@multiparse@ii{\blx@thecheckpunct\blx@multicite@end}}% + \fi + &} + +\def\blx@multiparse@ii#1#2&{\fi#1} +\csdef{blx@multiparse@iii} {\toggletrue{blx@tempa}\blx@multiparse} + +% {<name>}[l|i|r]{<cite>}{<multicite>} + +\newrobustcmd*{\DeclareAutoCiteCommand}[1]{% + \ifcsundef{blx@acite@#1} + {} + {\blx@info{Redefining autocite command '#1'}}% + \@ifnextchar[%] + {\blx@defautocmd@i{#1}} + {\blx@defautocmd@i{#1}[r]}} + +\def\blx@defautocmd@i#1[#2]#3#4{% + \begingroup + \escapechar\m@ne + \edef\blx@tempa{\endgroup + \noexpand\blx@defautocmd@ii{#1}{#2}% + {\string#3}{\string#4}}% + \blx@tempa} + +\def\blx@defautocmd@ii#1#2#3#4{% + \protected\csedef{blx@acite@#1}{% + \blx@citecmdinit + \noexpand\@ifstar + {\blx@citepunct{\expandafter\noexpand + \csname blx@acitei@#1\endcsname*}} + {\blx@citepunct{\expandafter\noexpand + \csname blx@acitei@#1\endcsname{}}}}% + \protected\csedef{blx@acitei@#1}##1##2##3##4##5{% + \begingroup + \blx@citeinit + \if l#2\noexpand\unspace##5\fi + \if f#2\noexpand\iftoggle{blx@footnote}{}{\unspace##5}\fi + \blxcitecmd{#3##1}{##2}{##3}{##4}{}% + \if r#2##5\fi + \if f#2\noexpand\iftoggle{blx@footnote}{##5}{}\fi + \endgroup}% + \protected\csedef{blx@macite@#1}{% + \blx@citecmdinit + \noexpand\@ifstar + {\expandafter\noexpand + \csname blx@mcite@#4\endcsname*% + \expandafter\noexpand + \csname blx@macitei@#1\endcsname} + {\expandafter\noexpand + \csname blx@mcite@#4\endcsname{}% + \expandafter\noexpand + \csname blx@macitei@#1\endcsname}}% + \protected\csedef{blx@macitei@#1}##1##2##3{% + \if l#2\noexpand\unspace##3\fi + \if f#2\noexpand\iftoggle{blx@footnote}{}{\unspace##3}\fi + ##1{##2}% + \if r#2##3\fi + \if f#2\noexpand\iftoggle{blx@footnote}{##3}{}\fi + \endgroup}} + +% {<characters>} + +\newrobustcmd*{\DeclareAutoPunctuation}[1]{% + \ifblank{#1} + {\let\blx@thecheckpunct\blx@nocheckpunct} + {\let\blx@thecheckpunct\blx@checkpunct + \def\blx@autopunct{#1}}} + +\AfterEndPreamble{% babel + \begingroup + \makeatletter + \endlinechar\m@ne + \scantokens\expandafter{% + \expandafter\gdef + \expandafter\blx@autopunct + \expandafter{\blx@autopunct}}% + \endgroup} + +% [<prenote>][<postnote>]{<entrykey>,...}[<format>]{<namelist>}<punct> + +\newrobustcmd*{\citename}{\blx@citexpunct{citename}} +\long\csdef{blx@cite@citename}#1#2#3#4#5#6{% + \begingroup + \blx@citecmdinit + \blx@citeinit + \ifblank{#1} + {} + {\def\abx@field@prenote{#1}}% + \ifblank{#2} + {\let\blx@thenotecheck\relax} + {\def\abx@field@postnote{#2}}% + \def\blx@precode{\usebibmacro{prenote}}% + \def\blx@loopcode{% + \ifnameundef{#5} + {\blx@warning@entry{'#5' undefined or not a name list}% + \abx@missing{#5}} + {\printnames[#4]{#5}}}% + \def\blx@dlimcode{\multicitedelim}% + \ifblank{#2} + {\def\blx@postcode{#6}} + {\def\blx@postcode{\usebibmacro{postnote}#6}}% + \boolfalse{citetracker}% + \boolfalse{pagetracker}% + \blx@citeloop{#3}% + \endgroup} + +% [<prenote>][<postnote>]{<entrykey>,...}[<format>]{<list>}<punct> + +\newrobustcmd*{\citelist}{\blx@citexpunct{citelist}} +\long\csdef{blx@cite@citelist}#1#2#3#4#5#6{% + \begingroup + \blx@citecmdinit + \blx@citeinit + \ifblank{#1} + {} + {\def\abx@field@prenote{#1}}% + \ifblank{#2} + {\let\blx@thenotecheck\relax} + {\def\abx@field@postnote{#2}}% + \def\blx@precode{\usebibmacro{prenote}}% + \def\blx@loopcode{% + \iflistundef{#5} + {\blx@warning@entry{'#5' undefined or not a literal list}% + \abx@missing{#5}} + {\printlist[#4]{#5}}}% + \def\blx@dlimcode{\multicitedelim}% + \ifblank{#2} + {\def\blx@postcode{#6}} + {\def\blx@postcode{\usebibmacro{postnote}#6}}% + \boolfalse{citetracker}% + \boolfalse{pagetracker}% + \blx@citeloop{#3}% + \endgroup} + +% [<prenote>][<postnote>]{<entrykey>,...}[<format>]{<field>}<punct> + +\newrobustcmd*{\citefield}{\blx@citexpunct{citefield}} +\long\csdef{blx@cite@citefield}#1#2#3#4#5#6{% + \begingroup + \blx@citecmdinit + \blx@citeinit + \ifblank{#1} + {} + {\def\abx@field@prenote{#1}}% + \ifblank{#2} + {\let\blx@thenotecheck\relax} + {\def\abx@field@postnote{#2}}% + \def\blx@precode{\usebibmacro{prenote}}% + \def\blx@loopcode{% + \iffieldundef{#5} + {\blx@warning@entry{'#5' undefined or not a field}% + \abx@missing{#5}} + {\printfield[#4]{#5}}}% + \def\blx@dlimcode{\multicitedelim}% + \ifblank{#2} + {\def\blx@postcode{#6}} + {\def\blx@postcode{\usebibmacro{postnote}#6}}% + \boolfalse{citetracker}% + \boolfalse{pagetracker}% + \blx@citeloop{#3}% + \endgroup} + +\renewrobustcmd*{\cite}{\blx@err@citecmd\cite} +\let\blx@cite@cite\relax +\newrobustcmd*{\parencite}{\blx@warn@citecmd\parencite\cite} +\let\blx@cite@parencite\relax +\newrobustcmd*{\footcite}{\blx@warn@citecmd\footcite\cite} +\let\blx@cite@footcite\relax +\newrobustcmd*{\footcitetext}{\blx@warn@citecmd\footcitetext\cite} +\let\blx@cite@footcitetext\relax +\newrobustcmd*{\smartcite}{\blx@warn@citecmd\smartcite\cite} +\let\blx@cite@smartcite\relax +\newrobustcmd*{\textcite}{\blx@warn@citecmd\textcite\cite} +\let\blx@cite@textcite\relax +\newrobustcmd*{\supercite}{\blx@warn@citecmd\supercite\cite} +\let\blx@cite@supercite\relax + +%% ifthen interface + +\def\blx@TE#1#2{% + \TE@throw + \unexpanded{% + \iftrue\@nameuse{fi}% + #1{\@nameuse{iftrue}}{\@nameuse{iffalse}}}#2} + +\def\blx@xTE#1#2{% + \TE@throw + \unexpanded{\iftrue\@nameuse{fi}}% + #1\unexpanded{{\@nameuse{iftrue}}{\@nameuse{iffalse}}}#2} + +\let\blx@TE@hook\@empty + +\appto\blx@blxinit{% + \appto\blx@TE@hook{% + \def\ifhyperref{\blx@TE\blx@imc@ifhyperref}% + \def\ifmorenames{\blx@TE\blx@imc@ifmorenames}% + \def\ifmoreitems{\blx@TE\blx@imc@ifmoreitems}% + \def\ifciteseen{\blx@TE\blx@imc@ifciteseen}% + \def\ifentryseen{\blx@TE\blx@imc@ifentryseen}% + \def\ifciteibid{\blx@TE\blx@imc@ifciteibid}% + \def\ifciteidem{\blx@TE\blx@imc@ifciteidem}% + \def\ifopcit{\blx@TE\blx@imc@ifopcit}% + \def\ifloccit{\blx@TE\blx@imc@ifloccit}% + \def\ifsamepage{\blx@TE\blx@imc@ifsamepage}% + \def\iffirstonpage{\blx@TE\blx@imc@iffirstonpage}% + \def\ifcurrentfield#1{\blx@TE{\blx@imc@ifcurrentfield{#1}}}% + \def\ifcurrentlist#1{\blx@TE{\blx@imc@ifcurrentlist{#1}}}% + \def\ifcurrentname#1{\blx@TE{\blx@imc@ifcurrentname{#1}}}% + \def\ifentrytype#1{\blx@TE{\blx@imc@ifentrytype{#1}}}% + \def\iffieldequalcs#1#2{\blx@TE{\blx@imc@iffieldequalcs{#1}{#2}}}% + \def\iffieldequals#1#2{\blx@TE{\blx@imc@iffieldequals{#1}{#2}}}% + \def\iffieldequalstr#1#2{\blx@TE{\blx@imc@iffieldequalstr{#1}{#2}}}% + \def\iffieldsequal#1#2{\blx@TE{\blx@imc@iffieldsequal{#1}{#2}}}% + \def\iffieldundef#1{\blx@TE{\blx@imc@iffieldundef{#1}}}% + \def\ifnameequalcs#1#2{\blx@TE{\blx@imc@ifnameequalcs{#1}{#2}}}% + \def\ifnameequals#1#2{\blx@TE{\blx@imc@ifnameequals{#1}{#2}}}% + \def\ifnamesequal#1#2{\blx@TE{\blx@imc@ifnamesequal{#1}{#2}}}% + \def\ifnameundef#1{\blx@TE{\blx@imc@ifnameundef{#1}}}% + \def\ifcategory#1{\blx@TE{\blx@imc@ifcategory{#1}}}% + \def\ifkeyword#1{\blx@TE{\blx@imc@ifkeyword{#1}}}% + \def\ifentrycategory#1#2{\blx@TE{\blx@imc@ifentrycategory{#1}{#2}}}% + \def\ifentrykeyword#1#2{\blx@TE{\blx@imc@ifentrykeyword{#1}{#2}}}% + \def\ifcapital{\blx@TE\blx@imc@ifcapital}% + \def\ifinteger#1{\blx@TE{\blx@imc@ifinteger{#1}}}% + \def\iffieldint#1{\blx@TE{\blx@imc@iffieldint{#1}}}% + \def\ifnumeral#1{\blx@TE{\blx@imc@ifnumeral{#1}}}% + \def\ifnumerals#1{\blx@TE{\blx@imc@ifnumerals{#1}}}% + \def\ifpages#1{\blx@TE{\blx@imc@ifpages{#1}}}% + \def\iffieldnum#1{\blx@TE{\blx@imc@iffieldnum{#1}}}% + \def\iffieldnums#1{\blx@TE{\blx@imc@iffieldnums{#1}}}% + \def\iffieldpages#1{\blx@TE{\blx@imc@iffieldpages{#1}}}% + \def\ifbibstring#1{\blx@TE{\blx@imc@ifbibstring{#1}}}% + \def\iffieldbibstring#1{\blx@TE{\blx@imc@iffieldbibstring{#1}}}% + \def\ifnatbibmode{\blx@TE{\iftoggle{blx@natbib}}}% + \def\ifcitation{\blx@TE{\iftoggle{blx@citation}}}% + \def\ifbibliography{\blx@TE{\iftoggle{blx@bibliography}}}% + \def\ifciteindex{\blx@TE{\iftoggle{blx@citeindex}}}% + \def\ifbibindex{\blx@TE{\iftoggle{blx@bibindex}}}% + \def\iffootnote{\blx@TE{\iftoggle{blx@footnote}}}% + \def\ifuseprefix{\blx@TE{\iftoggle{blx@useprefix}}}% + \def\ifuseauthor{\blx@TE{\iftoggle{blx@useauthor}}}% + \def\ifuseeditor{\blx@TE{\iftoggle{blx@useeditor}}}% + \def\ifusetranslator{\blx@TE{\iftoggle{blx@usetranslator}}}% + \def\iffirstinits{\blx@TE{\iftoggle{blx@firstinits}}}% + \def\ifsingletitle{\blx@TE{\iftoggle{abx@bool@singletitle}}}% + \def\ifandothers#1{\blx@TE{\iftoggle{abx@bool@more#1}}}}} + +% {<listmacro>}{<filtercsname>} => matches in <listmacro> + +\protected\def\blx@bibfilter#1#2{% + \begingroup + \edef\blx@do##1{% + \def\noexpand\blx@flt@item{##1}% + \ifboolexpr{\csexpandonce{#2}}% + {\listadd\noexpand\blx@tempa{##1}}% + {}}% + \let\blx@done\relax + \edef\blx@tempa{% + \let\noexpand\blx@tempa\noexpand\@empty + \blx@listloop{#1}}% + \blx@tempa + \edef\blx@tempa{\endgroup + \def\noexpand#1{\blx@tempa}}% + \blx@tempa} + +%% Auxiliary macros + +\newrobustcmd*{\mkbibquote}{\enquote} +\protected\def\blx@imc@mkbibquote{% + \blx@ifuspunct\blx@usquote\enquote} + +\def\blx@usquote{% + \ifnum\@quotelevel>\z@ + \expandafter\blx@usiquote + \else + \expandafter\blx@usoquote + \fi} + +\long\def\blx@usoquote#1{% + \begingroup + \initoquote + \textooquote#1% + \futurelet\@let@token\blx@usoquote@i} + +\def\blx@usoquote@i{% + \blx@usqcheck + {\ifx\blx@postpunct\@empty\else\blx@dopostpunct\fi + \textcoquote\endgroup} + {\blx@setpostpunct\textcoquote\endgroup}} + +\long\def\blx@usiquote#1{% + \begingroup + \initiquote + \textoiquote#1% + \futurelet\@let@token\blx@usiquote@i} + +\def\blx@usiquote@i{% + \blx@usqcheck + {\textciquote\endgroup} + {\blx@setpostpunct\textciquote\endgroup}} + +\def\blx@usqcheck#1#2{% + \def\blx@tempa{#1}% + \def\blx@tempb{#2}% + \ifx\@let@token\space + \blx@usqcheck@i\blx@tempa + \fi + \ifx\@let@token\@sptoken + \blx@usqcheck@i\blx@tempa + \fi + \if\noexpand\@let@token\relax + \blx@usqcheck@i\blx@tempb + \fi + \expandafter\blx@usqcheck@ii\blx@quotepunct\relax&} + +\def\blx@usqcheck@i#1#2&{\fi#1} + +\def\blx@usqcheck@ii#1{% + \if\noexpand#1\relax + \blx@usqcheck@i\blx@tempa + \fi + \if\noexpand#1\noexpand\@let@token + \blx@usqcheck@i{\blx@usqcheck@iii\blx@tempa}% + \fi + \blx@usqcheck@ii} + +\def\blx@usqcheck@iii#1#2{#2#1} + +\newrobustcmd*{\mkbibemph}{\emph} +\protected\long\def\blx@imc@mkbibemph#1{% + \emph{#1}\blx@imc@setpunctfont\emph} + +\newrobustcmd*{\mkbibbold}{\textbf} +\protected\long\def\blx@imc@mkbibbold#1{% + \textbf{#1}\blx@imc@setpunctfont\textbf} + +\blx@regimcs{\mkbibquote \mkbibemph \mkbibbold} + +\newcommand*{\bibleftparen}{\blx@postpunct(} +\newcommand*{\bibrightparen}{\blx@postpunct)\midsentence} +\newcommand*{\bibleftbracket}{\blx@postpunct[} +\newcommand*{\bibrightbracket}{\blx@postpunct]\midsentence} + +\def\blx@parenlevel{% + \iftoggle{blx@footnote} + {\blx@parenlevel@foot} + {\blx@parenlevel@text}} + +\newrobustcmd*{\blx@bibopenparen}{% + \blx@opencheck\bibopenparen + \blx@postpunct + \ifnum\blx@parenlevel=\z@ + \global\blx@parenlevel\@ne + \global\c@parenlevel\@ne + \expandafter\bibleftparen + \else + \expandafter\blx@openparen + \fi} + +\newrobustcmd*{\blx@bibopenbracket}{% + \blx@opencheck\bibopenbracket + \blx@postpunct + \ifnum\blx@parenlevel=\z@ + \global\blx@parenlevel1002 + \global\c@parenlevel\@ne + \expandafter\bibleftbracket + \else + \expandafter\blx@openparen + \fi} + +\newrobustcmd*{\blx@bibcloseparen}{% + \blx@closecheck\bibcloseparen + \blx@postpunct\blx@closeparen} + +\newrobustcmd*{\blx@bibclosebracket}{% + \blx@closecheck\bibclosebracket + \blx@postpunct\blx@closeparen} + +\def\blx@openparen{% + \ifodd\blx@parenlevel + \global\advance\blx@parenlevel\@ne + \global\advance\c@parenlevel\@ne + \expandafter\bibleftbracket + \else + \global\advance\blx@parenlevel\@ne + \global\advance\c@parenlevel\@ne + \expandafter\bibleftparen + \fi} + +\def\blx@closeparen{% + \ifodd\blx@parenlevel + \blx@closeparen@i + \expandafter\bibrightparen + \else + \blx@closeparen@i + \expandafter\bibrightbracket + \fi} + +\def\blx@closeparen@i{% + \ifnum\blx@parenlevel=1002 + \global\blx@parenlevel\z@ + \global\c@parenlevel\z@ + \else + \global\advance\blx@parenlevel\m@ne + \global\advance\c@parenlevel\m@ne + \fi} + +\def\blx@opencheck#1{% + \ifnum\numexpr\blx@parenlevel+\@ne + \ifnum\blx@parenlevel>\@m -1001\fi + >\c@maxparens + \blx@err@nestparen{\string#1}% + \blx@errormark + \fi} + +\def\blx@closecheck#1{% + \ifnum\numexpr\blx@parenlevel + \ifnum\blx@parenlevel>\@m -1001\fi + >\c@maxparens + \blx@err@nestparen{\string#1}% + \blx@errormark + \fi + \ifnum\blx@parenlevel<\@ne + \blx@err@matchparen{Unmatched \string#1}% + \blx@errormark + \fi} + +\protected\def\blx@errormark{% + \rule[0.25ex]{1.25ex}{1.25ex}} + +\AtEndDocument{% + \unless\ifnum\blx@parenlevel@text=\z@ + \blx@err@matchparen{% + Unbalanced parentheses or brackets in the document body}% + \fi + \unless\ifnum\blx@parenlevel@foot=\z@ + \blx@err@matchparen{% + Unbalanced parentheses or brackets in a foot or endnote}% + \fi} + +\newrobustcmd{\mkbibparens}[1]{% + \begingroup + \blx@blxinit + \blx@setsfcodes + \bibopenparen#1\bibcloseparen + \endgroup} + +\newrobustcmd{\mkbibbrackets}[1]{% + \begingroup + \blx@blxinit + \blx@setsfcodes + \bibopenbracket#1\bibclosebracket + \endgroup} + +\newrobustcmd*{\parentext}{\mkbibparens} +\newrobustcmd*{\brackettext}{\mkbibbrackets} + +\newrobustcmd{\mkbibsuperscript}[1]{% + \unspace\allowhyphens\textsuperscript{% + \begingroup + \protected\long\def\mkbibsuperscript##1{% + \blx@warning{Nested superscript}% + \mkbibbrackets{##1}}% + #1\endgroup}} + +\newrobustcmd{\mkbibfootnote}{\blx@mkbibfootnote{}} +\newrobustcmd{\mkbibfootnotetext}{\blx@mkbibfootnote{text}} +\newrobustcmd{\blx@mkbibfootnote}[2]{% + \iftoggle{blx@footnote} + {\blx@warning{Nested notes}% + \addspace\mkbibparens{#2}} + {\unspace + \ifnum\blx@notetype=\tw@ + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {\csuse{blx@theendnote#1}{\protecting{\blxmkbibnote{end}{#2}}}} + {\csuse{footnote#1}{\protecting{\blxmkbibnote{foot}{#2}}}}}} + +\newrobustcmd{\mkbibendnote}{\blx@mkbibendnote{}} +\newrobustcmd{\mkbibendnotetext}{\blx@mkbibendnote{text}} +\newrobustcmd{\blx@mkbibendnote}[2]{% + \iftoggle{blx@footnote} + {\blx@warning{Nested notes}% + \addspace\mkbibparens{#2}} + {\unspace + \ifnum\blx@notetype=\@ne + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {\csuse{footnote#1}{\protecting{\blxmkbibnote{foot}{#2}}}} + {\csuse{blx@theendnote#1}{\protecting{\blxmkbibnote{end}{#2}}}}}} + +\newrobustcmd{\blxmkbibnote}[2]{% + \begingroup + \blx@blxinit + \blx@setsfcodes + \blx@postpunct@agroup + \toggletrue{blx@footnote}% + \csuse{bib#1notewrapper}{#2}% + \endgroup} + +\newcommand{\bibfootnotewrapper}[1]{% + \bibsentence#1\addperiod} + +\newcommand{\bibendnotewrapper}[1]{% + \bibsentence#1\addperiod} + +\AtEndPreamble{% + \def\blx@theendnote{\blx@err@endnote\footnote}% + \def\blx@theendnotetext{\blx@err@endnote\footnotetext}% + \ifdef\endnote + {\def\blx@theendnote{\endnote}% + \ifdef\endnotetext + {\def\blx@theendnotetext{\endnotetext}} + {}} + {\ifdef\pagenote + {\def\blx@theendnote{\pagenote}% + \ifdef\pagenotetext + {\def\blx@theendnotetext{\pagenotetext}} + {}} + {}}} + +\newrobustcmd*{\mknumalph}[1]{% + \begingroup + \blx@tempcnta=#1\relax + \ifnum\blx@tempcnta>702 % + \else + \ifnum\blx@tempcnta>26 % + \advance\blx@tempcnta\m@ne + \divide\blx@tempcnta26\relax + \blx@numalph\blx@tempcnta + \multiply\blx@tempcnta26\relax + \blx@tempcnta=\numexpr#1-\blx@tempcnta\relax + \fi + \fi + \blx@numalph\blx@tempcnta + \endgroup} +\def\blx@numalph#1{% + \ifcase#1\relax\blx@warning@entry{Value out of range}\number#1\or + a\or b\or c\or d\or e\or f\or g\or h\or i\or j\or k\or l\or m\or + n\or o\or p\or q\or r\or s\or t\or u\or v\or w\or x\or y\or z\else + \blx@warning@entry{Value out of range}\number#1\fi} + +\newrobustcmd*{\volcitecmd}[1]{% + \begingroup + \def\blx@tempa{\endgroup#1}% + \@ifstar + {\appto\blx@tempa{*}% + \blx@volcitecmd@i} + {\blx@volcitecmd@i}} + +\def\blx@volcitecmd@i{% + \@ifnextchar[%] + {\blx@volcitecmd@ii} + {\blx@volcitecmd@ii[]}} + +\def\blx@volcitecmd@ii[#1]#2{% + \appto\blx@tempa{[#1]}% + \blx@getformat\blx@tempb{ffd}{}{volcitevolume}% + \@ifnextchar[%] + {\blx@volcitecmd@iii{#2}} + {\edef\blx@tempa{\expandonce\blx@tempa[{% + \expandonce{\blx@tempb{#2}}}]}% + \blx@tempa}} + +\def\blx@volcitecmd@iii#1[#2]{% + \blx@getformat\blx@tempc{ffd}{}{volcitepages}% + \edef\blx@tempa{\expandonce\blx@tempa[{% + \expandonce{\blx@tempb{#1}}% + \noexpand\volcitedelim + \expandonce{\blx@tempc{#2}}}]}% + \blx@tempa} + +%% Control file + +\begingroup +\let~\space +\@makeother\< +\@makeother\> +\@makeother\. +\@makeother\: +\@makeother\? +\@makeother\" +\@makeother\- +\@makeother\= +\@makeother\/ +\xdef\blx@xml@file{% + \blx@sig@bcf\blx@nl + \blx@ver@bcf\blx@nl} +\xdef\blx@xml@endfile{% + \blx@nl</bcf:controlfile>} +\xdef\blx@xml@comment#1{% + ~~<!-- #1 -->\blx@nl} +\xdef\blx@xml@options#1#2#3{% + ~~<bcf:options% + \noexpand\ifblank{#1}{}{ component="#1"}% + \noexpand\ifblank{#2}{}{ type="#2"}% + >\blx@nl + #3% + ~~</bcf:options>\blx@nl} +\xdef\blx@xml@option#1#2{% + ~~~~<bcf:option type="#1">\blx@nl + #2% + ~~~~</bcf:option>\blx@nl} +\xdef\blx@xml@ordered#1#2{% + ~~~~~~<bcf:value order="#1">#2</bcf:value>\blx@nl} + +\xdef\blx@xml@displaymodes#1#2{% + ~~<bcf:displaymodes type="#1">\blx@nl + #2% + ~~</bcf:displaymodes>\blx@nl} +\xdef\blx@xml@displaymode#1{% + ~~~~<bcf:displaymode>\blx@nl + #1% + ~~~~</bcf:displaymode>\blx@nl} +\xdef\blx@xml@dtarget#1{% + ~~~~~~<bcf:dtarget>#1</bcf:dtarget>\blx@nl} +\xdef\blx@xml@dmode#1#2{% + ~~~~~~<bcf:dmode order="#1">#2</bcf:dmode>\blx@nl} + +\xdef\blx@xml@inheritance#1{% + ~~<bcf:inheritance>\blx@nl + #1% + ~~</bcf:inheritance>\blx@nl} +\xdef\blx@xml@inherit@defaults#1#2{% + ~~~~<bcf:defaults#1>\blx@nl + #2% + ~~~~</bcf:defaults>\blx@nl} +\xdef\blx@xml@inherit@data#1{% + ~~~~<bcf:inherit>\blx@nl + #1% + ~~~~</bcf:inherit>\blx@nl} +\xdef\blx@xml@inherit@type#1#2#3{% + ~~~~~~<bcf:type\string_pair source="#1" target="#2"#3/>\blx@nl} +\xdef\blx@xml@inherit@field#1#2#3{% + ~~~~~~<bcf:field source="#1" target="#2"#3/>\blx@nl} +\xdef\blx@xml@inherit@block#1{% + ~~~~~~<bcf:field source="#1" skip="true"/>\blx@nl} + +\xdef\blx@xml@sorting#1{% + ~~<bcf:sorting>\blx@nl + #1% + ~~</bcf:sorting>\blx@nl} +\xdef\blx@xml@presort#1#2{% + ~~~~<bcf:presort\noexpand\ifblank{#1}{}{ type="#1"}>% + #2</bcf:presort>\blx@nl} + +\xdef\blx@xml@sortexclude#1#2{% + ~~~~<bcf:sortexclusion\noexpand\ifblank{#1}{}{ type="#1"}>\blx@nl + #2% + ~~~~</bcf:sortexclusion>\blx@nl} +\xdef\blx@xml@exclude#1{% + ~~~~~~<bcf:exclusion>#1</bcf:exclusion>\blx@nl} +\xdef\blx@xml@sort#1#2{% + ~~~~<bcf:sort #1>\blx@nl + #2% + ~~~~</bcf:sort>\blx@nl} +\xdef\blx@xml@sortitem#1#2{% + ~~~~~~<bcf:sortitem #1>#2</bcf:sortitem>\blx@nl} +\xdef\blx@xml@section#1{% + ~~<bcf:section number="#1">} +\xdef\blx@xml@endsection{% + ~~</bcf:section>} +\xdef\blx@xml@bibdata#1#2{% + ~~<bcf:bibdata section="#1">\blx@nl + #2% + ~~</bcf:bibdata>\blx@nl} +\xdef\blx@xml@datasource#1#2#3{% + ~~~~<bcf:datasource type="#1" datatype="#2">#3</bcf:datasource>\blx@nl} +\xdef\blx@xml@citekey#1{% + ~~~~<bcf:citekey>#1</bcf:citekey>} +\xdef\blx@xml@citeset#1#2{% + ~~~~<bcf:citekey type="set" members="#2">#1</bcf:citekey>} +\xdef\blx@xml@svalue#1#2{% + \blx@xml@option{singlevalued}{% + ~~~~~~<bcf:key>#1</bcf:key>\blx@nl + ~~~~~~<bcf:value>#2</bcf:value>\blx@nl}} +\xdef\blx@xml@mvalue#1#2{% + \blx@xml@option{multivalued}{% + ~~~~~~<bcf:key>#1</bcf:key>\blx@nl + #2}} +\xdef\blx@xml@toggle#1{% + \blx@xml@svalue{#1}{\noexpand\iftoggle{blx@#1}{1}{0}}} +\endgroup + +\def\blx@bcf@options@global{% + \blx@xml@comment{global}% + \blx@xml@options{biblatex}{global}{% + \blx@xml@svalue{alphaothers}{\labelalphaothers}% + \blx@xml@toggle{labelalpha}% + \blx@xml@mvalue{labelnamespec}{\blx@bcf@labelnamespec}% + \blx@xml@toggle{labelyear}% + \blx@xml@mvalue{labelyearspec}{\blx@bcf@labelyearspec}% + \blx@xml@svalue{maxalphanames}{\blx@maxalphanames}% + \blx@xml@svalue{maxbibnames}{\blx@maxbibnames}% + \blx@xml@svalue{maxcitenames}{\blx@maxcitenames}% + \blx@xml@svalue{maxitems}{\blx@maxitems}% + \blx@xml@svalue{minalphanames}{\blx@minalphanames}% + \blx@xml@svalue{minbibnames}{\blx@minbibnames}% + \blx@xml@svalue{mincitenames}{\blx@mincitenames}% + \blx@xml@svalue{minitems}{\blx@minitems}% + \blx@xml@toggle{singletitle}% + \blx@xml@svalue{sortalphaothers}{\sortalphaothers}% + \blx@xml@svalue{sortlos}{\blx@sortlos}% + \blx@xml@svalue{uniquelist}{\blx@uniquelist}% + \blx@xml@svalue{uniquename}{\blx@uniquename}% + \blx@xml@toggle{useauthor}% + \blx@xml@toggle{useeditor}% + \blx@xml@toggle{useprefix}% + \blx@xml@toggle{usetranslator}% + }% +} + +\def\blx@bcf@options@type#1{% + \blx@xml@comment{#1}% + \blx@xml@options{biblatex}{#1}{% + \blx@xml@toggle{labelalpha}% + \blx@xml@mvalue{labelnamespec}{% + \ifcsdef{blx@bcf@labelnamespec@#1} + {\csuse{blx@bcf@labelnamespec@#1}} + {\blx@bcf@labelnamespec}}% + \blx@xml@toggle{labelyear}% + \blx@xml@mvalue{labelyearspec}{% + \ifcsdef{blx@bcf@labelyearspec@#1} + {\csuse{blx@bcf@labelyearspec@#1}} + {\blx@bcf@labelyearspec}}% + \blx@xml@svalue{maxalphanames}{\blx@maxalphanames}% + \blx@xml@svalue{maxbibnames}{\blx@maxbibnames@type}% + \blx@xml@svalue{maxcitenames}{\blx@maxcitenames@type}% + \blx@xml@svalue{maxitems}{\blx@maxitems@type}% + \blx@xml@svalue{minalphanames}{\blx@minalphanames}% + \blx@xml@svalue{minbibnames}{\blx@minbibnames@type}% + \blx@xml@svalue{mincitenames}{\blx@mincitenames@type}% + \blx@xml@svalue{minitems}{\blx@minitems@type}% + \blx@xml@toggle{singletitle}% + \blx@xml@toggle{skipbib}% + \blx@xml@toggle{skiplab}% + \blx@xml@toggle{skiplos}% + \blx@xml@svalue{uniquelist}{\blx@uniquelist}% + \blx@xml@svalue{uniquename}{\blx@uniquename}% + \blx@xml@toggle{useauthor}% + \blx@xml@toggle{useeditor}% + \blx@xml@toggle{useprefix}% + \blx@xml@toggle{usetranslator}% + }% +} + +\edef\blx@ctrl@bibtex{% + \blx@msg@bib + @Control\string{biblatex-control,\blx@nl + \space\space options = \string{% + \blx@bblversion:% + \noexpand\iftoggle{blx@debug}{1}{0}:% + \noexpand\ifnum\noexpand\blx@backend>\noexpand\blx@backend@bibtex + 1:% + \noexpand\else + 0:% + \noexpand\fi + \noexpand\iftoggle{blx@sortcase}{1}{0}:% + \noexpand\iftoggle{blx@terseinits}{1}{0}:% + \noexpand\iftoggle{blx@useprefix}{1}{0}:% + \noexpand\iftoggle{blx@useauthor}{1}{0}:% + \noexpand\iftoggle{blx@useeditor}{1}{0}:% + \noexpand\iftoggle{blx@usetranslator}{1}{0}:% + \noexpand\iftoggle{blx@labelalpha}{1}{0}:% + \noexpand\iftoggle{blx@labelyear}{1}{0}:% + \noexpand\iftoggle{blx@singletitle}{1}{0}:% + \noexpand\csuse{blx@bibtex@sorting@\noexpand\blx@sorting}:% + \noexpand\blx@sortlos:% + \noexpand\blx@maxcitenames:% + \noexpand\blx@mincitenames:% + \noexpand\blx@maxline:% + \noexpand\detokenize\noexpand\expandafter{\noexpand\labelalphaothers}% + \string},\blx@nl + \string}% +} + +\def\blx@ctrlwrite@bibtex{% + \immediate\openout\blx@auxout\blx@ctrlfile@bibtex\blxauxsuffix.bib\relax + \blx@auxwrite\blx@auxout{}{\blx@ctrl@bibtex}% + \immediate\closeout\blx@auxout} + +\def\blx@ctrlwrite@biber{% + \begingroup + \blx@safe@actives + \let\protect\string + % options + \edef\labelalphaothers{\labelalphaothers}% + \edef\sortalphaothers{\sortalphaothers}% + \blx@xmlsanitizeafter{\def\labelalphaothers}{\labelalphaothers}% + \blx@xmlsanitizeafter{\def\sortalphaothers}{\sortalphaothers}% + \edef\blx@tempa{% + \blx@xml@file + \blx@xml@comment{BIBER OPTIONS}% + \blx@xml@options{biber}{global}{% + \blx@xml@svalue{bblencoding}{\blx@texencoding}% + \blx@xml@svalue{bibencoding}{\blx@bibencoding}% + \blx@xml@toggle{debug}% + \blx@xml@svalue{mincrossrefs}{\blx@mincrossrefs}% + \blx@xml@toggle{sortcase}% + \ifdef\blx@sortlocale + {\blx@xml@svalue{sortlocale}{\blx@sortlocale}} + {}% + \blx@xml@toggle{sortupper}% + }% + \blx@xml@comment{BIBLATEX OPTIONS}% + \blx@bcf@options@global + }% + \ifdef\blx@opts@type + {\def\do##1{% + \begingroup + \blx@setoptions@type{##1}% + \begingroup + \let\protect\relax + \blx@checkoptions@type + \endgroup + \xappto\blx@tempa{\blx@bcf@options@type{##1}}% + \endgroup}% + \dolistloop\blx@opts@type} + {}% + % displaymode + \eappto\blx@tempa{% + \blx@xml@comment{DISPLAYMODES}% + \blx@xml@displaymodes{global}{% + \csuse{blx@biber@displaymodes@global}% + }% + }% + % data inheritance + \eappto\blx@tempa{% + \blx@xml@comment{CROSSREF}% + \blx@xml@inheritance{% + \csuse{blx@biber@inherit@default}% + \csuse{blx@biber@inherit@data}% + }% + }% + % sorting + \def\do##1{% + \eappto\blx@bcf@presort{\csuse{blx@bcf@presort@##1}}% + \eappto\blx@bcf@exclude{\csuse{blx@bcf@exclude@##1}}}% + \abx@dotypes + \eappto\blx@tempa{% + \blx@xml@comment{SORTING}% + \blx@xml@sorting{% + \blx@bcf@presort + \blx@bcf@exclude + \csuse{blx@biber@sorting@\blx@sorting}% + }% + }% + % files + \let\blx@tempb\@empty + \blx@bibdata\blx@tempb\blx@bibfiles + \eappto\blx@tempa{% + \blx@xml@comment{CITATION DATA}% + \blx@xml@comment{section 0}% + \blx@xml@bibdata{0}{\blx@tempb}% + \blx@xml@section{0}% + }% + \immediate\openout\blx@auxout\jobname.bcf\relax + \blx@auxwrite\blx@auxout{}{\blx@tempa}% + \global\undef\blx@tempa + \endgroup + \AfterEndDocument{% + \blx@auxwrite\blx@auxout{}{% + \blx@xml@endsection + \blx@xml@endfile}% + \immediate\closeout\blx@auxout}} + +%% Customization + +% [<exceptions>]{<options>} + +\newrobustcmd*{\DefaultInheritance}[2][]{% + \begingroup + \ifblank{#2} + {} + {\setkeys{blx@inherit@default}{#2}}% + \edef\blx@tempa{\space + inherit\string_all="\iftoggle{blx@inherit@all}{true}{false}"\space + override\string_target="\iftoggle{blx@inherit@override}{true}{false}"}% + \let\blx@tempb\@empty + \let\except\blx@inherit@except + #1% + \xdef\blx@biber@inherit@default{% + \blx@xml@inherit@defaults{\blx@tempa}{\blx@tempb}}% + \endgroup} +\@onlypreamble\DefaultInheritance + +\newtoggle{blx@inherit@all} +\newtoggle{blx@inherit@override} + +\define@key{blx@inherit@default}{all}[true]{% true|false + \settoggle{blx@inherit@all}{#1}} +\define@key{blx@inherit@default}{override}[true]{% true|false + \settoggle{blx@inherit@override}{#1}} + +% {<source>}{<target>}{<options>} + +\newcommand{\blx@inherit@except}[3]{% + \let\blx@tempc\@empty + \ifblank{#3} + {} + {\setkeys{blx@inherit@except}{#3}}% + \eappto\blx@tempb{% + \blx@xml@inherit@type{#1}{#2}{\blx@tempc}}} + +\define@key{blx@inherit@except}{all}[true]{% true|false + \eappto\blx@tempc{ inherit\string_all="#1"}} +\define@key{blx@inherit@except}{override}[true]{% true|false + \eappto\blx@tempc{ override\string_target="#1"}} + +% {<type,type,...>}{<type,type,...>}{<spec>} + +\newrobustcmd*{\DeclareDataInheritance}[3]{% + \begingroup + \let\blx@tempa\@empty + \forcsvlist{\blx@inherit@i{#2}}{#1}% + \let\blx@tempb\@empty + \let\inherit\blx@inherit@field + \let\noinherit\blx@inherit@block + #3% + \xappto\blx@biber@inherit@data{% + \blx@xml@inherit@data{% + \blx@tempa + \blx@tempb}}% + \endgroup} +\@onlypreamble\DeclareDataInheritance + +\def\blx@inherit@i#1#2{% + \forcsvlist{\blx@inherit@ii{#2}}{#1}} + +\def\blx@inherit@ii#1#2{% + \eappto\blx@tempa{\blx@xml@inherit@type{#1}{#2}{}}} + +% [<options>]{<source>}{<target>} + +\newcommand{\blx@inherit@field}[3][]{% + \let\blx@tempc\@empty + \ifblank{#1} + {} + {\setkeys{blx@inherit@field}{#1}}% + \eappto\blx@tempb{% + \blx@xml@inherit@field{#2}{#3}{\blx@tempc}}} + +\newcommand{\blx@inherit@block}[1]{% + \eappto\blx@tempb{\blx@xml@inherit@block{#1}}} + +\define@key{blx@inherit@field}{override}[true]{% true|false + \ifstrequal{#1}{true} + {\edef\blx@tempc{ override\string_target="true"}} + {\edef\blx@tempc{ override\string_target="false"}}} + +\newrobustcmd*{\ResetDataInheritance}{% + \global\csundef{blx@biber@inherit@data}} +\@onlypreamble\ResetDataInheritance + +% {<name>}{<spec>} + +\newrobustcmd*{\DeclareSortingScheme}[2]{% + \begingroup + \let\sort\blx@sortdef@sort + \let\name\blx@sortdef@list + \let\list\blx@sortdef@list + \let\field\blx@sortdef@field + \let\literal\blx@sortdef@literal + \def\citeorder{\blx@sortdef@field{citeorder}}% + \blx@tempcnta\z@ + \let\blx@tempa\@empty + #2% + \global\cslet{blx@biber@sorting@#1}\blx@tempa + \endgroup} +\@onlypreamble\DeclareSortingScheme + +\newcommand{\blx@sortdef@sort}[2][]{% + \advance\blx@tempcnta\@ne + \blx@tempcntb\z@ + \let\blx@tempb\@empty + \edef\blx@tempc{order="\the\blx@tempcnta"}% + \ifblank{#1} + {} + {\setkeys{blx@sortdef@sort}{#1}}% + \let\do\@firstofone + #2% + \eappto\blx@tempa{% + \blx@xml@sort{\blx@tempc}{\blx@tempb}}} + +\define@key{blx@sortdef@sort}{direction}{% ascending|descending + \ifstrequal{#1}{ascending} + {\eappto\blx@tempc{ sort\string_direction="ascending"}} + {\eappto\blx@tempc{ sort\string_direction="descending"}}} +\define@key{blx@sortdef@sort}{final}[true]{% true|false + \ifstrequal{#1}{true} + {\appto\blx@tempc{ final="1"}} + {}} +\define@key{blx@sortdef@sort}{sortcase}[true]{% true|false + \ifstrequal{#1}{true} + {\appto\blx@tempc{ sortcase="1"}} + {\appto\blx@tempc{ sortcase="0"}}} +\define@key{blx@sortdef@sort}{sortupper}[true]{% true|false + \ifstrequal{#1}{true} + {\appto\blx@tempc{ sortupper="1"}} + {\appto\blx@tempc{ sortupper="0"}}} + +\def\blx@sortdef@list#1{% + \advance\blx@tempcntb\@ne + \edef\blx@tempd{order="\the\blx@tempcntb"}% + \eappto\blx@tempb{% + \blx@xml@sortitem{\blx@tempd}{#1}}} + +\newcommand*{\blx@sortdef@field}[2][]{% + \advance\blx@tempcntb\@ne + \edef\blx@tempd{order="\the\blx@tempcntb"}% + \ifblank{#1} + {} + {\setkeys{blx@sortdef@field}{#1}}% + \eappto\blx@tempb{% + \blx@xml@sortitem{\blx@tempd}{#2}}} + +\define@key{blx@sortdef@field}{padside}{% left|right + \ifstrequal{#1}{right} + {\eappto\blx@tempd{ pad\string_side="right"}} + {\eappto\blx@tempd{ pad\string_side="left"}}} +\define@key{blx@sortdef@field}{padwidth}{% integer + \eappto\blx@tempd{ pad\string_width="#1"}} +\define@key{blx@sortdef@field}{padchar}{% character + \blx@xmlsanitizeafter{\def\blx@tempe}{#1}% + \eappto\blx@tempd{ pad\string_char="\blx@tempe"}} +\define@key{blx@sortdef@field}{strside}{% left|right + \ifstrequal{#1}{right} + {\eappto\blx@tempd{ substring\string_side="right"}} + {\eappto\blx@tempd{ substring\string_side="left"}}} +\define@key{blx@sortdef@field}{strwidth}{% integer + \eappto\blx@tempd{ substring\string_width="#1"}} + +\def\blx@sortdef@literal#1{% + \advance\blx@tempcntb\@ne + \blx@xmlsanitizeafter{\def\blx@tempe}{#1}% + \eappto\blx@tempb{% + \blx@xml@sortitem{order="\the\blx@tempcntb"}{\blx@tempe}}} + +% [<type,type,...>]{<string>} + +\newrobustcmd*{\DeclarePresort}[2][]{% + \begingroup + \blx@xmlsanitizeafter{\def\blx@tempa}{#2}% + \ifblank{#1} + {\xdef\blx@bcf@presort{\blx@xml@presort{}{\blx@tempa}}} + {\notblank{#2} + {\forcsvlist{\blx@defpresort\blx@tempa}{#1}} + {\forcsvlist\blx@undefpresort{#1}}}% + \endgroup} +\@onlypreamble\DeclarePresort + +\def\blx@defpresort#1#2{% + \csxdef{blx@bcf@presort@#2}{\blx@xml@presort{#2}{#1}}} +\def\blx@undefpresort#1{% + \global\csundef{blx@bcf@presort@#1}} + +\newrobustcmd*{\DeclareSortExclusion}[2]{% + \forcsvlist{\blx@sortexlude{#2}}{#1}} + +\def\blx@sortexlude#1#2{% + \begingroup + \ifblank{#1} + {\global\csundef{blx@bcf@exclude@#2}} + {\let\blx@tempa\@empty + \forcsvlist\blx@sortexlude@i{#1}% + \csxdef{blx@bcf@exclude@#2}{% + \blx@xml@sortexclude{#2}{\blx@tempa}}} + \endgroup} + +\def\blx@sortexlude@i#1{% + \appto\blx@tempa{\blx@xml@exclude{#1}}} + +% [<type,type,...>]{<field,field,...>} + +\newrobustcmd*{\DeclareLabelname}[2][]{% + \blx@defmvalue{labelnamespec}{#1}{#2}} +\@onlypreamble\DeclareLabelname + +\newrobustcmd*{\DeclareLabelyear}[2][]{% + \blx@defmvalue{labelyearspec}{#1}{#2}} +\@onlypreamble\Declarelabelyear + +\def\blx@defmvalue#1#2#3{% + \ifblank{#2} + {\expandafter\blx@defmvalue@ii\csname blx@bcf@#1\endcsname{#3}} + {\forcsvlist{\blx@defmvalue@i{#1}{#3}}{#2}}} + +\def\blx@defmvalue@i#1#2#3{% + \blx@addtypeopt{#3}% + \expandafter\blx@defmvalue@ii\csname blx@bcf@#1@#3\endcsname{#2}} + +\def\blx@defmvalue@ii#1#2{% + \begingroup + \global\let#1\@empty + \blx@tempcnta\z@ + \def\do##1{% + \advance\blx@tempcnta\@ne + \xappto#1{\noexpand\blx@xml@ordered{\the\blx@tempcnta}{##1}}}% + \docsvlist{#2}% + \endgroup} + +% experimental + +\newrobustcmd*{\DeclareDisplaymode}[2][global]{% + \begingroup + \blx@tempcnta\z@ + \def\blx@tempa{\blx@xml@dtarget{*}}% + \forcsvlist\blx@defdisplaymode{#2}% + \csxdef{blx@biber@displaymodes@#1}{% + \blx@xml@displaymode{\blx@tempa}}% + \endgroup} + +\def\blx@defdisplaymode#1{% + \advance\blx@tempcnta\@ne + \edef\blx@tempa{% + \blx@tempa + \blx@xml@dmode{\the\blx@tempcnta}{#1}}} + +\DeclareDisplaymode{original,romanised,uniform,translated} + +%% Package options + +% [<entrytype,entrytype,...>]{<options>} + +\newrobustcmd*{\ExecuteBibliographyOptions}[2][]{% + \ifblank{#1} + {\setkeys{blx@opt@pre}{#2}} + {\forcsvlist{\blx@typeoptions{#2}}{#1}}} +\@onlypreamble\ExecuteBibliographyOptions + +\def\blx@typeoptions#1#2{% + \blx@addtypeopt{#2}% + \csappto{blx@opts@type@#2}{#1}} + +\def\blx@addtypeopt#1{% + \notblank{#1} + {\ifdef\blx@opts@type + {\ifinlist{#1}{\blx@opts@type} + {} + {\listadd\blx@opts@type{#1}}} + {\listadd\blx@opts@type{#1}}} + {}} + +% load-time only + +\define@key{blx@opt@ldt}{style}{% + \def\blx@cbxfile{#1}% + \def\blx@bbxfile{#1}} + +\define@key{blx@opt@ldt}{bibstyle}{% + \def\blx@bbxfile{#1}} + +\define@key{blx@opt@ldt}{citestyle}{% + \def\blx@cbxfile{#1}} + +\define@key{blx@opt@ldt}{natbib}[true]{% + \settoggle{blx@natbib}{#1}} + +\define@key{blx@opt@ldt}{mcite}[true]{% + \settoggle{blx@mcite}{#1}} + +% load-time and preamble + +\DeclareBibliographyOption{debug}[true]{% + \settoggle{blx@debug}{#1}} + +\DeclareBibliographyOption{backend}{% + \ifcsdef{blx@backend@#1} + {\letcs\blx@backend{blx@backend@#1}} + {\blx@err@invopt{backend=#1}{}}} +\chardef\blx@backend@bibtex=0 +\chardef\blx@backend@bibtexe=1 +\chardef\blx@backend@bibtexu=2 +\chardef\blx@backend@biber=3 +\cslet{blx@backend@bibtex8}\blx@backend@bibtexe + +\DeclareBibliographyOption{loadfiles}[true]{% + \settoggle{blx@loadfiles}{#1}} + +\DeclareBibliographyOption{mincrossrefs}{% + \ifnum#1<\z@ + \def\blx@mincrossrefs{1}% + \def\blx@minxrefs{1}% + \else + \def\blx@mincrossrefs{#1}% + \def\blx@minxrefs{#1}% + \fi} +\def\blx@minxrefs{2} + +\DeclareBibliographyOption{texencoding}{% + \ifstrequal{#1}{auto} + {\undef\blx@texencoding} + {\def\blx@texencoding{#1}}} + +\DeclareBibliographyOption{bibencoding}{% + \ifcsdef{blx@bibenc@#1} + {\letcs\blx@bibencoding{blx@bibenc@#1}} + {\def\blx@bibencoding{#1}}} + +\def\abx@mapbibenc#1#2{\csdef{blx@bibenc@#1}{#2}} +\abx@mapbibenc{inputenc}{auto} +\abx@mapbibenc{x-ascii}{ascii} + +\def\abx@mapinpenc#1#2{\csdef{blx@inpenc@#1}{#2}} +\abx@mapinpenc{utf8x}{utf8} +\abx@mapinpenc{lutf8}{utf8} +\abx@mapinpenc{x-ascii}{ascii} + +\DeclareBibliographyOption{safeinputenc}[true]{% + \settoggle{blx@safeinputenc}{#1}} +\newtoggle{blx@safeinputenc} + +\DeclareBibliographyOption{sorting}{% + \def\blx@sorting{#1}} +\def\blx@bibtex@sorting@none{0} +\def\blx@bibtex@sorting@nty{1} +\def\blx@bibtex@sorting@nyt{2} +\def\blx@bibtex@sorting@nyvt{3} +\def\blx@bibtex@sorting@anyt{12} +\def\blx@bibtex@sorting@anyvt{13} +\def\blx@bibtex@sorting@ynt{21} +\def\blx@bibtex@sorting@ydnt{22} +\def\blx@bibtex@sorting@debug{99} + +\AtEndPreamble{% + \ifnum\blx@backend=\blx@backend@biber + \ifcsdef{blx@biber@sorting@\blx@sorting} + {} + {\blx@err@invopt{sorting=\blx@sorting}{}% + \def\blx@sorting{nty}}% + \else + \ifcsdef{blx@bibtex@sorting@\blx@sorting} + {} + {\blx@err@invopt{sorting=\blx@sorting}{}% + \def\blx@sorting{nty}}% + \fi} + +\DeclareBibliographyOption{sortcase}[true]{% + \settoggle{blx@sortcase}{#1}} + +\DeclareBibliographyOption{sortupper}[true]{% + \settoggle{blx@sortupper}{#1}} + +\DeclareBibliographyOption{sortlocale}{% + \ifblank{#1} + {\undef\blx@sortlocale} + {\edef\blx@sortlocale{\detokenize{#1}}}} + +\DeclareBibliographyOption{sortlos}{% + \ifcsdef{blx@opt@sortlos@#1} + {\letcs\blx@sortlos{blx@opt@sortlos@#1}} + {\blx@err@invopt{sortlos=#1}{}}} +\def\blx@opt@sortlos@bib{0} +\def\blx@opt@sortlos@los{1} + +\DeclareBibliographyOption{maxnames}{% + \numdef\blx@maxcitenames{#1}% + \numdef\blx@maxbibnames{#1}} +\DeclareBibliographyOption{minnames}{% + \numdef\blx@mincitenames{#1}% + \numdef\blx@minbibnames{#1}} +\DeclareTypeOption{maxnames}{% + \numdef\blx@maxcitenames@type{#1}% + \numdef\blx@maxbibnames@type{#1}% + \c@maxnames#1\relax} +\DeclareTypeOption{minnames}{% + \numdef\blx@mincitenames@type{#1}% + \numdef\blx@minbibnames@type{#1}% + \c@minnames#1\relax} +\DeclareEntryOption{maxnames}{% + \c@maxnames#1\relax} +\DeclareEntryOption{minnames}{% + \c@minnames#1\relax} + +\DeclareBibliographyOption{maxbibnames}{% + \numdef\blx@maxbibnames{#1}} +\DeclareBibliographyOption{minbibnames}{% + \numdef\blx@minbibnames{#1}} +\DeclareTypeOption{maxbibnames}{% + \numdef\blx@maxbibnames@type{#1}% + \iftoggle{blx@bibliography} + {\c@maxnames#1\relax} + {}} +\DeclareTypeOption{minbibnames}{% + \numdef\blx@minbibnames@type{#1}% + \iftoggle{blx@bibliography} + {\c@minnames#1\relax} + {}} +\DeclareEntryOption{maxbibnames}{% + \iftoggle{blx@bibliography} + {\c@maxnames#1\relax} + {}} +\DeclareEntryOption{minbibnames}{% + \iftoggle{blx@bibliography} + {\c@minnames#1\relax} + {}} + +\DeclareBibliographyOption{maxcitenames}{% + \numdef\blx@maxcitenames{#1}} +\DeclareBibliographyOption{mincitenames}{% + \numdef\blx@minbibnames{#1}} +\DeclareTypeOption{maxcitenames}{% + \numdef\blx@maxcitenames@type{#1}% + \iftoggle{blx@bibliography} + {} + {\c@maxnames#1\relax}} +\DeclareTypeOption{mincitenames}{% + \numdef\blx@minbibnames@type{#1}% + \iftoggle{blx@bibliography} + {} + {\c@minnames#1\relax}} +\DeclareEntryOption{maxcitenames}{% + \iftoggle{blx@bibliography} + {} + {\c@maxnames#1\relax}} +\DeclareEntryOption{mincitenames}{% + \iftoggle{blx@bibliography} + {} + {\c@minnames#1\relax}} + +\appto\blx@checkoptions@global{% + \blx@maxmin@num{maxbibnames}{minbibnames}\blx@maxbibnames\blx@minbibnames + \blx@maxmin@num{maxcitenames}{mincitenames}\blx@maxcitenames\blx@mincitenames} +\appto\blx@checkoptions@type{% + \blx@maxmin@num{maxbibnames}{minbibnames}\blx@maxbibnames@type\blx@minbibnames@type + \blx@maxmin@num{maxcitenames}{mincitenames}\blx@maxcitenames@type\blx@mincitenames@type} +\appto\blx@checkoptions@entry{% + \blx@maxmin@cnt{maxnames}{minnames}\c@maxnames\c@minnames} + +\DeclareBibliographyOption{maxitems}{% + \numdef\blx@maxitems{#1}} +\DeclareBibliographyOption{minitems}{% + \numdef\blx@minitems{#1}} +\DeclareTypeOption{maxitems}{% + \numdef\blx@maxitems@type{#1}% + \c@maxitems#1\relax} +\DeclareTypeOption{minitems}{% + \numdef\blx@minitems@type{#1}% + \c@minitems#1\relax} +\DeclareEntryOption{maxitems}{% + \c@maxitems#1\relax} +\DeclareEntryOption{minitems}{% + \c@minitems#1\relax} + +\appto\blx@checkoptions@global{% + \blx@maxmin@num{maxitems}{minitems}\blx@maxitems\blx@minitems} +\appto\blx@checkoptions@type{% + \blx@maxmin@num{maxitems}{minitems}\blx@maxitems@type\blx@minitems@type} +\appto\blx@checkoptions@entry{% + \blx@maxmin@cnt{maxitems}{minitems}\c@maxitems\blx@minitems} + +\DeclareBibliographyOption{maxalphanames}{% + \numdef\blx@maxalphanames{#1}} +\DeclareBibliographyOption{minalphanames}{% + \numdef\blx@minalphanames{#1}} +\DeclareTypeOption{maxalphanames}{% + \numdef\blx@maxalphanames{#1}} +\DeclareTypeOption{minalphanames}{% + \numdef\blx@minalphanames{#1}} + +\appto\blx@checkoptions@global{% + \blx@maxmin@num{maxalphanames}{minalphanames}\blx@maxalphanames\blx@minalphanames} +\appto\blx@checkoptions@type{% + \blx@maxmin@num{maxalphanames}{minalphanames}\blx@maxalphanames\blx@minalphanames} + +\def\blx@maxmin@num#1#2#3#4{% + \ifnumless#3\@ne + {\blx@err@invopt{#1=#3}{'#1' must be greater than zero}% + \let#3\@ne} + {}% + \ifnumless#4\@ne + {\blx@err@invopt{#2=#4}{'#2' must be greater than zero}% + \let#4\@ne} + {}% + \ifnumless#3#4 + {\blx@err@confopt{#1/#2}{'#1' must be greater than or equal to '#2'}% + \let#3#4} + {}} + +\def\blx@maxmin@cnt#1#2#3#4{% + \ifnumless#3\@ne + {\blx@err@invopt{#1=\number#3}{'#1' must be greater than zero}% + #3\@ne} + {}% + \ifnumless#4\@ne + {\blx@err@invopt{#2=\number#4}{'#2' must be greater than zero}% + #4\@ne} + {}% + \ifnumless#3#4 + {\blx@err@confopt{#1/#2}{'#1' must be greater than or equal to '#2'}% + #3=#4} + {}} + +\DeclareBibliographyOption{maxline}{% BibTeX only + \ifnum#1<49 + \def\blx@maxline{49}% + \else + \ifnum#1>79 + \def\blx@maxline{79}% + \else + \def\blx@maxline{#1}% + \fi + \fi} + +\DeclareBibliographyOption{terseinits}[true]{% + \ifstrequal{#1}{true} + {\toggletrue{blx@terseinits}% BibTeX only + \renewrobustcmd*{\bibinitperiod}{} + \renewrobustcmd*{\bibinitdelim}{} + \renewrobustcmd*{\bibinithyphendelim}{}} + {\togglefalse{blx@terseinits}% BibTeX only + \renewrobustcmd*{\bibinitperiod}{\adddot} + \renewrobustcmd*{\bibinitdelim}{\addnbspace} + \renewrobustcmd*{\bibinithyphendelim}{\adddot\mbox{-}}}} + +\DeclareBibliographyOption{firstinits}[true]{% + \settoggle{blx@firstinits}{#1}} + +\DeclareBibliographyOption{abbreviate}[true]{% + \ifstrequal{#1}{true} + {\def\abx@str{abx@sstr}} + {\def\abx@str{abx@lstr}}} + +\DeclareBibliographyOption{dateabbrev}[true]{% + \ifstrequal{#1}{true} + {\let\abx@bibmonth\blx@imc@bibsstring} + {\let\abx@bibmonth\blx@imc@biblstring}} + +\DeclareBibliographyOption{language}{% + \ifstrequal{#1}{auto} + {\toggletrue{blx@autolang}% + \def\blx@languagename{english}} + {\IfFileExists{#1.lbx} + {\togglefalse{blx@autolang}% + \edef\blx@languagename{#1}} + {\blx@error + {Language '#1' not supported} + {Failed to find a matching '#1.lbx' file}}}} + +\DeclareBibliographyOption{clearlang}[true]{% + \settoggle{blx@clearlang}{#1}} + +\DeclareBibliographyOption{babel}{% + \ifcsdef{blx@opt@babel@#1} + {\csuse{blx@opt@babel@#1}} + {\blx@err@invopt{babel=#1}{}}} +\def\blx@opt@babel@none{% + \undef\blx@thelangenv + \let\blx@hook@initlang\@empty + \let\blx@hook@endlang\@empty} +\def\blx@opt@babel@hyphen{% + \def\blx@thelangenv{hyphenrules}% + \let\blx@hook@initlang\@empty + \let\blx@hook@endlang\@empty} +\csdef{blx@opt@babel@other*}{% + \def\blx@thelangenv{otherlanguage*}% + \def\blx@hook@initlang{\@quotereset\@ne}% + \def\blx@hook@endlang{\blx@postpunct}} +\def\blx@opt@babel@other{% + \def\blx@thelangenv{otherlanguage}% + \def\blx@hook@initlang{\@quotereset\@ne}% + \def\blx@hook@endlang{\blx@postpunct}} + +\DeclareBibliographyOption{indexing}[true]{% + \blx@opt@index{#1}} +\DeclareTypeOption{indexing}[true]{% + \blx@opt@index{#1}} +\DeclareEntryOption{indexing}[true]{% + \blx@opt@index{#1}} +\def\blx@opt@index#1{% + \ifcsdef{blx@opt@index@#1} + {\csuse{blx@opt@index@#1}} + {\blx@err@invopt{indexing=#1}{}}} +\def\blx@opt@index@true{% + \toggletrue{blx@citeindex}% + \toggletrue{blx@bibindex}} +\def\blx@opt@index@false{% + \togglefalse{blx@citeindex}% + \togglefalse{blx@bibindex}} +\def\blx@opt@index@cite{% + \toggletrue{blx@citeindex}% + \togglefalse{blx@bibindex}} +\def\blx@opt@index@bib{% + \togglefalse{blx@citeindex}% + \toggletrue{blx@bibindex}} + +\DeclareBibliographyOption{sortcites}[true]{% + \ifstrequal{#1}{true} + {\let\blx@thecitesort\blx@citesort + \let\blx@thenotecheck\blx@notecheck} + {\let\blx@thecitesort\blx@citenosort + \let\blx@thenotecheck\relax}} + +\DeclareBibliographyOption{hyperref}[true]{% + \ifcsdef{blx@opt@hyperref@#1} + {\letcs\blx@hyperref{blx@opt@hyperref@#1}} + {\blx@err@invopt{hyperref=#1}{}}} +\def\blx@opt@hyperref@false{0} +\def\blx@opt@hyperref@true{1} +\def\blx@opt@hyperref@auto{2} + +\DeclareBibliographyOption{backref}[true]{% + \ifstrequal{#1}{true} + {\let\blx@backref\blx@addbackref + \let\abx@aux@backref\blx@aux@backref + \booltrue{backtracker}} + {\let\blx@backref\@gobble + \let\abx@aux@backref\@gobblefive + \boolfalse{backtracker}}} + +\DeclareBibliographyOption{backrefsetstyle}{% + \ifcsdef{blx@opt@backrefsetstyle@#1} + {\letcs\blx@backrefsetstyle{blx@opt@backrefsetstyle@#1}} + {\blx@err@invopt{backrefsetstyle=#1}{}}} +\def\blx@opt@backrefsetstyle@setonly{0} +\def\blx@opt@backrefsetstyle@memonly{1} +\def\blx@opt@backrefsetstyle@setormem{2} +\def\blx@opt@backrefsetstyle@setandmem{3} +\def\blx@opt@backrefsetstyle@memandset{4} +\def\blx@opt@backrefsetstyle@setplusmem{5} + +\appto\blx@mkhyperref{% + \ifHy@plainpages + \blx@warning@noline{% + hyperref package option 'plainpages' enabled.\MessageBreak + This may cause problems with hyperlinked back\MessageBreak + references. 'plainpages=false' is recommended}% + \fi + \ifHy@pageanchor\else + \blx@warning@noline{% + hyperref package option 'pageanchor' disabled.\MessageBreak + This will cause problems with hyperlinked back\MessageBreak + references. 'pageanchor=true' is required}% + \fi} + +\DeclareBibliographyOption{block}{% + \ifcsdef{blx@opt@block@#1} + {\csuse{blx@opt@block@#1}} + {\blx@err@invopt{block=#1}{}}} +\def\blx@opt@block@none{% + \let\blx@bibsetup\@empty + \let\newblockpunct\@empty} +\def\blx@opt@block@par{% + \let\blx@bibsetup\@empty + \def\newblockpunct{\par}} +\def\blx@opt@block@nbpar{% + \def\blx@bibsetup{\interlinepenalty\@M}% + \def\newblockpunct{\par\nobreak}} +\def\blx@opt@block@space{% + \let\blx@bibsetup\@empty + \def\newblockpunct{% + \unspace\space + \hskip 0.11em + \@plus 0.33em + \@minus 0.07em}} +\def\blx@opt@block@ragged{% + \let\blx@bibsetup\raggedright + \def\newblockpunct{% + \unspace\penalty-9\relax\space}} + +\DeclareBibliographyOption{pagetracker}[true]{% + \ifcsdef{blx@opt@pagetracker@#1} + {\csuse{blx@opt@pagetracker@#1}} + {\blx@err@invopt{pagetracker=#1}{}}} +\def\blx@opt@pagetracker@true{% + \if@twoside + \blx@opt@pagetracker@spread + \else + \blx@opt@pagetracker@page + \fi} +\def\blx@opt@pagetracker@false{% + \let\blx@pagetracker\relax + \let\abx@aux@page\@gobbletwo + \let\abx@aux@fnpage\@gobbletwo + \boolfalse{pagetracker}} +\def\blx@opt@pagetracker@page{% + \let\blx@pagetracker\blx@pagetracker@context + \let\abx@aux@page\blx@aux@page + \let\abx@aux@fnpage\blx@aux@fnpage + \booltrue{pagetracker}} +\def\blx@opt@pagetracker@spread{% + \if@twoside + \let\blx@pagetracker\blx@pagetracker@context + \let\abx@aux@page\blx@aux@spread + \let\abx@aux@fnpage\blx@aux@fnspread + \booltrue{pagetracker}% + \else + \blx@warning@noline{% + LaTeX not in twoside mode\MessageBreak + Falling back to 'pagetracker=page'}% + \blx@opt@pagetracker@page + \fi} + +\DeclareBibliographyOption{citecounter}[true]{% + \ifcsdef{blx@opt@citecounter@#1} + {\csuse{blx@opt@citecounter@#1}} + {\blx@err@invopt{citecounter=#1}{}}} +\def\blx@opt@citecounter@true{% + \let\blx@setcitecounter\blx@setcitecounter@global + \let\blx@citecounter\blx@citecounter@global + \let\abx@aux@count\blx@aux@count + \let\abx@aux@fncount\blx@aux@fncount + \booltrue{citetracker}} +\def\blx@opt@citecounter@context{% + \let\blx@setcitecounter\blx@setcitecounter@context + \let\blx@citecounter\blx@citecounter@context + \let\abx@aux@count\blx@aux@count + \let\abx@aux@fncount\blx@aux@fncount + \booltrue{citetracker}} +\def\blx@opt@citecounter@false{% + \let\blx@setcitecounter\relax + \let\blx@citecounter\relax + \let\abx@aux@count\@gobbletwo + \let\abx@aux@fncount\@gobbletwo} + +\DeclareBibliographyOption{citetracker}[true]{% + \ifcsdef{blx@opt@citetracker@#1} + {\csuse{blx@opt@citetracker@#1}} + {\blx@err@invopt{citetracker=#1}{}}} +\def\blx@opt@citetracker@true{% + \let\blx@imc@ifciteseen\blx@ifciteseen@global + \let\blx@imc@ifentryseen\blx@ifentryseen@global + \let\blx@citetracker\blx@citetracker@global + \booltrue{citetracker}} +\def\blx@opt@citetracker@false{% + \let\blx@imc@ifciteseen\@secondoftwo + \protected\long\def\blx@imc@ifentryseen##1##2##3{##3}% + \let\blx@citetracker\relax} +\def\blx@opt@citetracker@context{% + \let\blx@imc@ifciteseen\blx@ifciteseen@context + \let\blx@imc@ifentryseen\blx@ifentryseen@context + \let\blx@citetracker\blx@citetracker@context + \booltrue{citetracker}} +\def\blx@opt@citetracker@strict{% + \let\blx@imc@ifciteseen\blx@ifciteseen@global + \let\blx@imc@ifentryseen\blx@ifentryseen@global + \def\blx@citetracker{% + \blx@ifcitesingle{\blx@citetracker@global}{}}% + \booltrue{citetracker}} +\def\blx@opt@citetracker@constrict{% + \let\blx@imc@ifciteseen\blx@ifciteseen@context + \let\blx@imc@ifentryseen\blx@ifentryseen@context + \def\blx@citetracker{% + \blx@ifcitesingle{\blx@citetracker@context}{}}% + \booltrue{citetracker}} + +\DeclareBibliographyOption{ibidtracker}[true]{% + \ifcsdef{blx@opt@ibidtracker@#1} + {\csuse{blx@opt@ibidtracker@#1}} + {\blx@err@invopt{ibidtracker=#1}{}}} +\def\blx@opt@ibidtracker@true{% + \let\blx@imc@ifciteibid\blx@ifciteibid@global + \let\blx@ibidtracker\blx@ibidtracker@gobal + \let\blx@ibidreset\blx@ibidreset@gobal + \booltrue{citetracker}} +\def\blx@opt@ibidtracker@false{% + \let\blx@imc@ifciteibid\@secondoftwo + \let\blx@ibidtracker\relax + \let\blx@ibidreset\relax} +\def\blx@opt@ibidtracker@context{% + \let\blx@imc@ifciteibid\blx@ifciteibid@context + \let\blx@ibidtracker\blx@ibidtracker@context + \let\blx@ibidreset\blx@ibidreset@context + \booltrue{citetracker}} +\def\blx@opt@ibidtracker@strict{% + \let\blx@imc@ifciteibid\blx@ifciteibid@strict + \let\blx@ibidtracker\blx@ibidtracker@strict + \let\blx@ibidreset\blx@ibidreset@gobal + \booltrue{citetracker}} +\def\blx@opt@ibidtracker@constrict{% + \let\blx@imc@ifciteibid\blx@ifciteibid@constrict + \let\blx@ibidtracker\blx@ibidtracker@constrict + \let\blx@ibidreset\blx@ibidreset@context + \booltrue{citetracker}} + +\DeclareBibliographyOption{idemtracker}[true]{% + \ifcsdef{blx@opt@idemtracker@#1} + {\csuse{blx@opt@idemtracker@#1}} + {\blx@err@invopt{idemtracker=#1}{}}} +\def\blx@opt@idemtracker@true{% + \let\blx@imc@ifciteidem\blx@ifciteidem@global + \let\blx@idemtracker\blx@idemtracker@gobal + \let\blx@idemreset\blx@idemreset@gobal + \booltrue{citetracker}} +\def\blx@opt@idemtracker@false{% + \let\blx@imc@ifciteidem\@secondoftwo + \let\blx@idemtracker\relax + \let\blx@idemreset\relax} +\def\blx@opt@idemtracker@context{% + \let\blx@imc@ifciteidem\blx@ifciteidem@context + \let\blx@idemtracker\blx@idemtracker@context + \let\blx@idemreset\blx@idemreset@context + \booltrue{citetracker}} +\def\blx@opt@idemtracker@strict{% + \let\blx@imc@ifciteidem\blx@ifciteidem@strict + \let\blx@idemtracker\blx@idemtracker@strict + \let\blx@idemreset\blx@idemreset@gobal + \booltrue{citetracker}} +\def\blx@opt@idemtracker@constrict{% + \let\blx@imc@ifciteidem\blx@ifciteidem@constrict + \let\blx@idemtracker\blx@idemtracker@constrict + \let\blx@idemreset\blx@idemreset@context + \booltrue{citetracker}} + +\DeclareBibliographyOption{opcittracker}[true]{% + \ifcsdef{blx@opt@opcittracker@#1} + {\csuse{blx@opt@opcittracker@#1}} + {\blx@err@invopt{opcittracker=#1}{}}} +\def\blx@opt@opcittracker@true{% + \let\blx@imc@ifopcit\blx@ifopcit@global + \let\blx@opcittracker\blx@opcittracker@gobal + \let\blx@opcitreset\blx@opcitreset@gobal + \booltrue{citetracker}} +\def\blx@opt@opcittracker@false{% + \let\blx@imc@ifopcit\@secondoftwo + \let\blx@opcittracker\relax + \let\blx@opcitreset\relax} +\def\blx@opt@opcittracker@context{% + \let\blx@imc@ifopcit\blx@ifopcit@context + \let\blx@opcittracker\blx@opcittracker@context + \let\blx@opcitreset\blx@opcitreset@context + \booltrue{citetracker}} +\def\blx@opt@opcittracker@strict{% + \let\blx@imc@ifopcit\blx@ifopcit@strict + \let\blx@opcittracker\blx@opcittracker@strict + \let\blx@opcitreset\blx@opcitreset@gobal + \booltrue{citetracker}} +\def\blx@opt@opcittracker@constrict{% + \let\blx@imc@ifopcit\blx@ifopcit@constrict + \let\blx@opcittracker\blx@opcittracker@constrict + \let\blx@opcitreset\blx@opcitreset@context + \booltrue{citetracker}} + +\DeclareBibliographyOption{loccittracker}[true]{% + \ifcsdef{blx@opt@loccittracker@#1} + {\csuse{blx@opt@loccittracker@#1}} + {\blx@err@invopt{loccittracker=#1}{}}} +\def\blx@opt@loccittracker@true{% + \let\blx@imc@ifloccit\blx@ifloccit@global + \let\blx@loccittracker\blx@loccittracker@gobal + \let\blx@loccitreset\blx@loccitreset@gobal + \booltrue{citetracker}} +\def\blx@opt@loccittracker@false{% + \let\blx@imc@ifloccit\@secondoftwo + \let\blx@loccittracker\relax + \let\blx@loccitreset\relax} +\def\blx@opt@loccittracker@context{% + \let\blx@imc@ifloccit\blx@ifloccit@context + \let\blx@loccittracker\blx@loccittracker@context + \let\blx@loccitreset\blx@loccitreset@context + \booltrue{citetracker}} +\def\blx@opt@loccittracker@strict{% + \let\blx@imc@ifloccit\blx@ifloccit@strict + \let\blx@loccittracker\blx@loccittracker@strict + \let\blx@loccitreset\blx@loccitreset@gobal + \booltrue{citetracker}} +\def\blx@opt@loccittracker@constrict{% + \let\blx@imc@ifloccit\blx@ifloccit@constrict + \let\blx@loccittracker\blx@loccittracker@constrict + \let\blx@loccitreset\blx@loccitreset@context + \booltrue{citetracker}} + +\DeclareBibliographyOption{parentracker}[true]{% + \ifstrequal{#1}{true} + {\let\bibopenparen\blx@bibopenparen + \let\bibcloseparen\blx@bibcloseparen + \let\bibopenbracket\blx@bibopenbracket + \let\bibclosebracket\blx@bibclosebracket} + {\protected\def\bibopenparen{\bibleftparen}% + \protected\def\bibcloseparen{\bibrightparen}% + \protected\def\bibopenbracket{\bibleftbracket}% + \protected\def\bibclosebracket{\bibrightbracket}}} + +\DeclareBibliographyOption{maxparens}{% + \ifnumless{#1}{1} + {\blx@err@invopt{maxparens=#1}{}} + {\setcounter{maxparens}{#1}}} + +\DeclareBibliographyOption{date}{% + \ifcsdef{mkbibrange#1} + {\protected\def\blx@imc@printdate{\csuse{mkbibrange#1}{}}% + \protected\def\blx@imc@printdateextra{\csuse{mkbibrange#1extra}{}}} + {\blx@err@invopt{date=#1}{}}} + +\DeclareBibliographyOption{urldate}{% + \ifcsdef{mkbibrange#1} + {\protected\def\blx@imc@printurldate{\csuse{mkbibrange#1}{url}}} + {\blx@err@invopt{urldate=#1}{}}} + +\DeclareBibliographyOption{eventdate}{% + \ifcsdef{mkbibrange#1} + {\protected\def\blx@imc@printeventdate{\csuse{mkbibrange#1}{event}}} + {\blx@err@invopt{eventdate=#1}{}}} + +\DeclareBibliographyOption{origdate}{% + \ifcsdef{mkbibrange#1} + {\protected\def\blx@imc@printorigdate{\csuse{mkbibrange#1}{orig}}} + {\blx@err@invopt{origdate=#1}{}}} + +\DeclareBibliographyOption{alldates}{% + \ExecuteBibliographyOptions{date=#1,urldate=#1,eventdate=#1,origdate=#1}} + +\DeclareBibliographyOption{datezeros}[true]{% + \ifstrequal{#1}{true} + {\let\blx@imc@mkdatezeros\@firstofone} + {\let\blx@imc@mkdatezeros\blx@imc@stripzeros}} + +\DeclareBibliographyOption{autocite}{% + \ifcsundef{blx@acite@#1} + {\blx@error + {Autocite command '#1' undefined} + {The autocite command '#1' has not been defined by + the\MessageBreak selected citation style}} + {\letcs\autocite{blx@acite@#1}% + \letcs\autocites{blx@macite@#1}}} + +\DeclareBibliographyOption{notetype}{% + \ifcsdef{blx@opt@notetype@#1} + {\blx@notetype\csuse{blx@opt@notetype@#1}} + {\blx@err@invopt{notetype=#1}{}}} +\cslet{blx@opt@notetype@foot+end}\z@ +\let\blx@opt@notetype@footonly\@ne +\let\blx@opt@notetype@endonly\tw@ + +\DeclareBibliographyOption{autopunct}[true]{% + \ifstrequal{#1}{true} + {\DeclareAutoPunctuation{.,;:!?}} + {\DeclareAutoPunctuation{}}} + +\DeclareBibliographyOption{punctfont}[true]{% + \ifstrequal{#1}{true} + {\let\blx@ifpuncthook\@firstoftwo} + {\let\blx@ifpuncthook\@secondoftwo}} + +\DeclareBibliographyOption{labelnumber}[true]{% + \settoggle{blx@labelnumber}{#1}% + \iftoggle{blx@labelnumber} + {} + {\setkeys{blx@opt@pre}{defernumbers=false}}} +\DeclareTypeOption{labelnumber}[true]{% + \settoggle{blx@labelnumber}{#1}} + +\DeclareBibliographyOption{labelalpha}[true]{% + \settoggle{blx@labelalpha}{#1}} +\DeclareTypeOption{labelalpha}[true]{% + \settoggle{blx@labelalpha}{#1}} + +\DeclareBibliographyOption{labelyear}[true]{% + \settoggle{blx@labelyear}{#1}} +\DeclareTypeOption{labelyear}[true]{% + \settoggle{blx@labelyear}{#1}} + +\DeclareBibliographyOption{uniquelist}[true]{% + \ifcsdef{blx@opt@uniquelist@#1} + {\letcs\blx@uniquelist{blx@opt@uniquelist@#1}} + {\blx@err@invopt{uniquelist=#1}{}}} +\DeclareTypeOption{uniquelist}[true]{% + \ifcsdef{blx@opt@uniquelist@#1} + {\letcs\blx@uniquelist{blx@opt@uniquelist@#1}} + {\blx@err@invopt{uniquelist=#1}{}}} +\def\blx@opt@uniquelist@false{0} +\def\blx@opt@uniquelist@true{1} +\def\blx@opt@uniquelist@minyear{2} + +\DeclareBibliographyOption{uniquename}[true]{% + \ifcsdef{blx@opt@uniquename@#1} + {\letcs\blx@uniquename{blx@opt@uniquename@#1}} + {\blx@err@invopt{uniquename=#1}{}}} +\DeclareTypeOption{uniquename}[true]{% + \ifcsdef{blx@opt@uniquename@#1} + {\letcs\blx@uniquename{blx@opt@uniquename@#1}} + {\blx@err@invopt{uniquename=#1}{}}} +\def\blx@opt@uniquename@false{0} +\def\blx@opt@uniquename@init{1} +\def\blx@opt@uniquename@true{2} +\def\blx@opt@uniquename@full{2} +\def\blx@opt@uniquename@allinit{3} +\def\blx@opt@uniquename@allfull{4} +\def\blx@opt@uniquename@mininit{5} +\def\blx@opt@uniquename@minfull{6} + +\DeclareBibliographyOption{singletitle}[true]{% + \settoggle{blx@singletitle}{#1}} +\DeclareTypeOption{singletitle}[true]{% + \settoggle{blx@singletitle}{#1}} + +\DeclareBibliographyOption{defernumbers}[true]{% + \settoggle{blx@defernumbers}{#1}% + \iftoggle{blx@defernumbers} + {\setkeys{blx@opt@pre}{labelnumber}% + \let\blx@thelabelnumber\blx@addlabelnumber + \let\abx@aux@number\blx@aux@number} + {\let\blx@thelabelnumber\relax + \let\abx@aux@number\@gobblefour}} + +\DeclareBibliographyOption{refsection}{% + \ifcsdef{blx@opt@refsection@#1} + {\letcs\blx@refsecreset@level{blx@opt@refsection@#1}} + {\blx@err@invopt{refsection=#1}{}}} +\def\blx@opt@refsection@none{0} +\def\blx@opt@refsection@part{1} +\def\blx@opt@refsection@chapter{2} +\def\blx@opt@refsection@section{3} +\def\blx@opt@refsection@subsection{4} + +\AtEndPreamble{% + \ifcase\blx@refsecreset@level + \or % 1 + \blx@refpatch@part\newrefsection + \or % 2 + \blx@refpatch@chapter\newrefsection + \or % 3 + \blx@refpatch@sect{section}{\newrefsection}{1}% + \or % 4 + \blx@refpatch@sect{subsection}{\newrefsection}{2}% + \fi} + +\DeclareBibliographyOption{refsegment}{% + \ifcsdef{blx@opt@refsegment@#1} + {\letcs\blx@refsegreset@level{blx@opt@refsegment@#1}} + {\blx@err@invopt{refsegment=#1}{}}} +\def\blx@opt@refsegment@none{0} +\def\blx@opt@refsegment@part{1} +\def\blx@opt@refsegment@chapter{2} +\def\blx@opt@refsegment@section{3} +\def\blx@opt@refsegment@subsection{4} + +\AtEndPreamble{% + \ifnumgreater\blx@refsegreset@level\z@ + {\ifnumgreater\blx@refsegreset@level\blx@refsecreset@level + {} + {\blx@err@confopt + {refsegment/refsection} + {The 'refsegment' option must point to a + lower-level\MessageBreak document division + than 'refsection'}% + \def\blx@refsegreset@level{0}}} + {}% + \ifcase\blx@refsegreset@level + \or % 1 + \blx@refpatch@part\newrefsegment + \or % 2 + \blx@refpatch@chapter\newrefsegment + \or % 3 + \blx@refpatch@sect{section}{\newrefsegment}{1}% + \or % 4 + \blx@refpatch@sect{subsection}{\newrefsegment}{2}% + \fi} + +\DeclareBibliographyOption{citereset}{% + \ifcsdef{blx@opt@citereset@#1} + {\letcs\blx@citereset@level{blx@opt@citereset@#1}} + {\blx@err@invopt{citereset=#1}{}}} +\def\blx@opt@citereset@none{0} +\def\blx@opt@citereset@part{1} +\def\blx@opt@citereset@chapter{2} +\def\blx@opt@citereset@section{3} +\def\blx@opt@citereset@subsection{4} + +\AtEndPreamble{% + \ifcase\blx@citereset@level + \or % 1 + \blx@refpatch@part{\citereset\blx@inf@creset}% + \or % 2 + \blx@refpatch@chapter{\citereset\blx@inf@creset}% + \or % 3 + \blx@refpatch@sect{section}{\citereset\blx@inf@creset}{1}% + \or % 4 + \blx@refpatch@sect{subsection}{\citereset\blx@inf@creset}{2}% + \fi} + +\DeclareBibliographyOption{bibwarn}[true]{% + \ifstrequal{#1}{true} + {\let\blx@bbl@thewarn\blx@bbl@warn} + {\let\blx@bbl@thewarn\@gobble}} + +% Entry options + +\DeclareBibliographyOption{useprefix}[true]{% + \settoggle{blx@useprefix}{#1}} +\DeclareTypeOption{useprefix}[true]{% + \settoggle{blx@useprefix}{#1}} +\DeclareEntryOption{useprefix}[true]{% + \settoggle{blx@useprefix}{#1}} + +\DeclareBibliographyOption{useauthor}[true]{% + \settoggle{blx@useauthor}{#1}} +\DeclareTypeOption{useauthor}[true]{% + \settoggle{blx@useauthor}{#1}} +\DeclareEntryOption{useauthor}[true]{% + \settoggle{blx@useauthor}{#1}} + +\DeclareBibliographyOption{useeditor}[true]{% + \settoggle{blx@useeditor}{#1}} +\DeclareTypeOption{useeditor}[true]{% + \settoggle{blx@useeditor}{#1}} +\DeclareEntryOption{useeditor}[true]{% + \settoggle{blx@useeditor}{#1}} + +\DeclareBibliographyOption{usetranslator}[true]{% + \settoggle{blx@usetranslator}{#1}} +\DeclareTypeOption{usetranslator}[true]{% + \settoggle{blx@usetranslator}{#1}} +\DeclareEntryOption{usetranslator}[true]{% + \settoggle{blx@usetranslator}{#1}} + +\DeclareTypeOption{skipbib}[true]{% + \settoggle{blx@skipbib}{#1}} +\DeclareEntryOption{skipbib}[true]{% + \settoggle{blx@skipbib}{#1}} + +\DeclareTypeOption{skiplos}[true]{% + \settoggle{blx@skiplos}{#1}} +\DeclareEntryOption{skiplos}[true]{% + \settoggle{blx@skiplos}{#1}} + +\DeclareTypeOption{skiplab}[true]{% + \settoggle{blx@skiplab}{#1}} +\DeclareEntryOption{skiplab}[true]{% + \settoggle{blx@skiplab}{#1}} + +\DeclareTypeOption{dataonly}[true]{% + \settoggle{blx@skipbib}{#1}% + \settoggle{blx@skiplos}{#1}% + \settoggle{blx@skiplab}{#1}} +\DeclareEntryOption{dataonly}[true]{% + \settoggle{blx@skipbib}{#1}% + \settoggle{blx@skiplos}{#1}% + \settoggle{blx@skiplab}{#1}} + +% Option processor/scheduler + +\DeclareOption*{% + \begingroup + \def\blx@tempa#1=#2&{#1}% + \edef\blx@tempa{% + \expandafter\blx@tempa\CurrentOption=&}% + \ifcsundef{KV@blx@opt@ldt@\blx@tempa} + {\endgroup + \eappto\blx@theoptions{\CurrentOption,}} + {\edef\blx@tempa{\endgroup + \noexpand\setkeys{blx@opt@ldt}{\CurrentOption}}% + \blx@tempa}} + +\def\blx@processoptions{% + \ifundef\blx@theoptions + {} + {\begingroup + \edef\blx@tempa{\endgroup + \noexpand\setkeys{blx@opt@pre}{\blx@theoptions}}% + \blx@tempa}} + +%% Initial setup + +% Set defaults + +\setkeys{blx@opt@ldt}{style=numeric} +\setkeys{blx@opt@pre}{% + sorting=nty,sortlos=los,sortcase,sortupper,sortcites=false, + maxnames=3,minnames=1,maxalphanames=3,minalphanames=1, + maxitems=3,minitems=1,mincrossrefs=2,useauthor=true,useeditor=true, + usetranslator=false,indexing=false,abbreviate=true,dateabbrev=true, + backref=false,backrefsetstyle=setonly,pagetracker=false,ibidtracker=false, + idemtracker=false,opcittracker=false,loccittracker=false,citetracker=false, + citecounter=false,block=none,language=auto,clearlang=true,babel=none, + date=comp,origdate=comp,eventdate=comp,urldate=short,autopunct=true, + punctfont=false,defernumbers=false,refsection=none,refsegment=none, + citereset=none,hyperref=auto,parentracker,maxparens=3,maxline=79, + bibencoding=auto,bibwarn} + +% Load compatibility code + +\blx@inputonce{blx-compat.def}{compatibility code}{}{}{}{} + +% Restore catcodes + +\blx@catcodes +\undef\blx@catcodes + +% Process load-time options + +\ProcessOptions* + +% Load citation and bibliography styles, configuration file + +\blx@inputonce{biblatex.def}{generic definitions}{}{}{}{} +\iftoggle{blx@natbib} + {\blx@inputonce{blx-natbib.def}{natbib compatibility}{}{}{}{}} + {} +\iftoggle{blx@mcite} + {\blx@inputonce{blx-mcite.def}{mcite-like commands}{}{}{}{}} + {} +\RequireBibliographyStyle{\blx@bbxfile} +\RequireCitationStyle{\blx@cbxfile} +\blx@secinit +\citereset +\blx@inputonce{biblatex.cfg}{configuration file}{}{}{}{} + +% Process preamble options + +\blx@processoptions + +% Deferred setup at end of preamble + +\AtEndPreamble{% + \blx@checkoptions@global + \c@maxnames\blx@maxcitenames\relax + \c@minnames\blx@mincitenames\relax + \c@maxitems\blx@maxitems\relax + \c@minitems\blx@minitems\relax + \iftoggle{blx@firstinits} + {\ifnumequal\blx@uniquename\blx@opt@uniquename@full + {\blx@warn@conflopt{% + 'firstinits' conflicts with 'uniquename=full'.\MessageBreak + Setting 'uniquename=init'}% + \setkeys{blx@opt@pre}{uniquename=init}} + {}% + \ifnumequal\blx@uniquename\blx@opt@uniquename@allfull + {\blx@warn@conflopt{% + 'firstinits' conflicts with 'uniquename=allfull'.\MessageBreak + Setting 'uniquename=allinit}% + \setkeys{blx@opt@pre}{uniquename=allinit}} + {}% + \ifnumequal\blx@uniquename\blx@opt@uniquename@minfull + {\blx@warn@conflopt{% + 'firstinits' conflicts with 'uniquename=minfull'.\MessageBreak + Setting 'uniquename=mininit}% + \setkeys{blx@opt@pre}{uniquename=mininit}} + {}} + {}% + \nottoggle{blx@labelyear} + {\ifnumequal\blx@uniquelist\blx@opt@uniquelist@minyear + {\blx@warn@conflopt{% + 'uniquelist=minyear' requires 'labelyear'.\MessageBreak + Setting 'uniquelist=true'}% + \setkeys{blx@opt@pre}{uniquelist}} + {}} + {}} + +\def\blx@checkencoding{% + \ifdef\blx@texencoding + {\blx@info@noline{% + Input encoding '\blx@texencoding' specified}} + {\ifundef\inputencodingname + {\ifundef\XeTeXrevision + {\ifundef\luatexversion + {\def\blx@texencoding{ascii}% + \blx@info@noline{% + No input encoding detected.\MessageBreak + Assuming '\blx@texencoding'}} + {\def\blx@texencoding{utf8}% + \blx@info@noline{% + LuaTeX detected.\MessageBreak + Assuming input encoding '\blx@texencoding'}}} + {\def\blx@texencoding{utf8}% + \blx@info@noline{% + XeTeX detected.\MessageBreak + Assuming input encoding '\blx@texencoding'}}} + {\ifcsdef{blx@inpenc@\inputencodingname} + {\letcs\blx@texencoding{blx@inpenc@\inputencodingname}} + {\let\blx@texencoding\inputencodingname}% + \blx@info@noline{% + Input encoding '\blx@texencoding' detected}}}% + \ifdef\blx@bibencoding + {\ifdefstring\blx@bibencoding{ascii} + {\blx@info@noline{% + Data encoding '\blx@bibencoding' specified.\MessageBreak + No need to reencode data}% + \togglefalse{blx@reencode}} + {\ifdefstring\blx@bibencoding{auto} + {\let\blx@bibencoding\blx@texencoding + \blx@info@noline{% + Automatic encoding selection.\MessageBreak + Assuming data encoding '\blx@bibencoding'} + \togglefalse{blx@reencode}} + {\ifdefstrequal\blx@bibencoding\blx@texencoding + {\blx@info@noline{% + Data encoding '\blx@bibencoding' specified.\MessageBreak + No need to reencode data}% + \togglefalse{blx@reencode}} + {\ifnumequal\blx@backend\blx@backend@biber + {\blx@info@noline{% + Data encoding '\blx@bibencoding' specified.\MessageBreak + Backend will reencode on the fly}% + \togglefalse{blx@reencode}} + {\blx@info@noline{% + Data encoding '\blx@bibencoding' specified.\MessageBreak + Reencoding not supported by backend.\MessageBreak + Falling back to reencoding with inputenc}% + \@ifpackageloaded{inputenc} + {\toggletrue{blx@reencode}} + {\@ifpackageloaded{inputenx} + {\toggletrue{blx@reencode}} + {\blx@warning@noline{% + On-the-fly data reencoding not supported by\MessageBreak + this setup. Load the 'inputenc/inputenx'\MessageBreak + package or use backend=biber. 'luainputenc'\MessageBreak + is not supported (use backend=biber instead)}% + \togglefalse{blx@reencode}}}}}}}} + {\def\blx@bibencoding{ascii}% + \blx@info@noline{% + Data encoding not specified.\MessageBreak + Assuming '\blx@bibencoding'}% + \togglefalse{blx@reencode}}% + \ifdefstring\blx@bibencoding{ascii} + {} + {\ifdefstring\blx@bibencoding{utf8} + {\ifnumless\blx@backend\blx@backend@bibtexu + {\blx@warning@noline{% + Data encoding is '\blx@bibencoding'.\MessageBreak + Use backend=biber}} + {}} + {\ifnumodd\blx@backend + {\ifnumequal\blx@backend\blx@backend@bibtexe + {\let\blx@csfencoding\blx@bibencoding} + {}} + {\blx@warning@noline{% + Data encoding is '\blx@bibencoding'.\MessageBreak + Use backend=bibtex8 or backend=biber}}}}% + \ifboolexpr{% + togl {blx@safeinputenc} + and test {\ifnumequal\blx@backend\blx@backend@biber} + and ( test {\@ifpackageloaded{inputenc}} + or + test {\@ifpackageloaded{inputenx}} ) + } + {\def\blx@texencoding{ascii}% + \blx@info@noline{% + Input encoding '\blx@texencoding' forced by\MessageBreak + 'safeinputenc' option}} + {}% +} + +% Deferred last minute setup + +\AtBeginDocument{% + \blx@checkbackend{style}% + \blx@checkencoding + \if@filesw + \ifnum\blx@backend=\blx@backend@biber + \blx@ifsigned{\jobname}{bcf} + {\blx@ctrlwrite@biber} + {}% + \blx@bblinput + \else + \blx@auxinit@bibtex\blx@bibfiles + \blx@ifsigned{\blx@ctrlfile@bibtex\blxauxsuffix}{bib} + {\blx@ctrlwrite@bibtex} + {}% + \ifnumless\blx@reqbiber\thr@@ + {\blx@bblinput} + {}% + \fi + \blx@maxsection\z@ + \fi + \let\blx@reqbiber\z@ + \csuse{abx@preamble}% + \blx@checkbackend{.bib file}% + \blx@inf@refsec + \blx@inf@refseg} + +\AtEndOfPackage{% + \AtBeginDocument{% + \let\do\undef + \blx@dopreamblecmds + \let\do\noexpand}} + +\endinput diff --git a/Master/texmf-dist/tex/latex/biblatex/biblatex2.sty b/Master/texmf-dist/tex/latex/biblatex/biblatex2.sty new file mode 100644 index 00000000000..079897b93e1 --- /dev/null +++ b/Master/texmf-dist/tex/latex/biblatex/biblatex2.sty @@ -0,0 +1,10362 @@ +% Copyright (c) 2006-2011 Philipp Lehman. +% +% Permission is granted to copy, distribute and/or modify this +% software under the terms of the LaTeX Project Public License +% (LPPL), version 1.3. +% +% This software is provided 'as is', without warranty of any kind, +% either expressed or implied, including, but not limited to, the +% implied warranties of merchantability and fitness for a +% particular purpose. + +\NeedsTeXFormat{LaTeX2e}[2005/12/01] +\ProvidesPackage{biblatex2} +[\abx@date\space v\abx@version\space programmable bibliographies (biber) (PK/JW/AB)] + +%% Dependencies +\RequirePackage{etoolbox} +\RequirePackage{keyval} +\RequirePackage{kvoptions} +\RequirePackage{logreq} +\RequirePackage{ifthen} +\RequirePackage{url} + +\@ifpackagelater{etoolbox}{2010/11/29} + {} + {\PackageError{biblatex} + {Outdated 'etoolbox' package} + {Upgrade to etoolbox v2.1 (2010/11/29) or later.\MessageBreak + I found: '\csuse{ver@etoolbox.sty}'.\MessageBreak + This is a fatal error. I'm aborting now.}% + \endinput} + +%% Category codes + +\def\blx@docatcodes{% + \do\=\do\<\do\>\do\-\do\"\do\'\do\`\do\.% + \do\,\do\;\do\:\do\!\do\?\do\/} +\def\do#1{\catcode\number`#1=\the\catcode`#1\relax} +\edef\blx@catcodes{\blx@docatcodes\do\^\do\~\do\&\do\|} +\let\do\noexpand + +\def\blx@saneccodes{% + \catcode`\~=\active + \let\do\@makeother + \blx@docatcodes + \let\do\noexpand} + +\blx@saneccodes +\catcode`\&=3 +\catcode`\|=3 +\catcode`\^=7 +\def\blx@nl{^^J} + +%% Compatibility + +\AtEndPreamble{% + \def\do#1{% + \@ifpackageloaded{#1} + {\blx@error + {Incompatible package '#1'} + {The '#1' package and biblatex are incompatible}} + {}}% + \docsvlist{% + amsrefs,apacite,babelbib,backref,bibtopic,bibunits,chapterbib, + cite,citeref,drftcite,footbib,inlinebib,jurabib,mcite,mciteplus, + mlbib,multibbl,multibib,natbib,opcit,overcite,splitbib,ucs}% + \@ifpackageloaded{babel} + {\iftoggle{blx@autolang} + {\blx@mkbabel} + {\blx@mknobabel}} + {\blx@mknobabel}% + \csuse{abx@extras@\blx@languagename}% + \csuse{abx@strings@\blx@languagename}% + \undef\blx@mkbabel + \undef\blx@mknobabel + \ifnum\blx@hyperref=\z@ + \blx@mknohyperref + \else + \@ifpackageloaded{hyperref} + {\blx@mkhyperref} + {\ifnum\blx@hyperref=\@ne + \blx@warning@noline{% + Missing 'hyperref' package.\MessageBreak + Setting hyperref=false}% + \fi + \blx@mknohyperref}% + \fi + \providecommand*{\nolinkurl}{\url}% + \undef\blx@mkhyperref + \undef\blx@mknohyperref + \ifundef\TE@hook + {\let\TE@hook\@empty + \toggletrue{blx@tempa}% + \def\do#1{% + \patchcmd#1% + {\let\isundefined\TE@undef} + {\let\isundefined\TE@undef\TE@hook} + {\togglefalse{blx@tempa}\listbreak} + {}}% + \docsvlist{% + \ifthenelse,% ifthen + \org@ifthenelse,% babel + \HyOrg@ifthenelse,% hyperref + \NROrg@ifthenelse}% nameref + \iftoggle{blx@tempa} + {\blx@err@patch{'ifthen' package}} + {}} + {}% + \appto\TE@hook{\blx@TE@hook}% + \toggletrue{blx@tempa}% + \def\do#1{% + \patchcmd#1% + {\color@begingroup} + {\color@begingroup\toggletrue{blx@footnote}} + {\togglefalse{blx@tempa}\listbreak} + {}}% + \docsvlist{% + \@footnotetext,% latex + \H@@footnotetext,% hyperref + \V@@footnotetext,% fancyvrb + \scr@saved@footnotetext,% koma-script 3.x + \l@dold@footnotetext,% ledmac + \l@doldold@footnotetext,% ledmac + \@fntORI}% frenchle + \iftoggle{blx@tempa}% ams classes + {\patchcmd\@footnotetext + {\@makefntext} + {\toggletrue{blx@footnote}\@makefntext} + {\togglefalse{blx@tempa}} + {}} + {}% + \@ifclassloaded{memoir} + {\def\do#1{% + \patchcmd#1% + {\color@begingroup} + {\color@begingroup\toggletrue{blx@footnote}} + {} + {}}% + \docsvlist{% + \m@mold@footnotetext,% + \@plainfootnotetext,% + \@twocolfootnotetext,% + \@threecolfootnotetext,% + \@parafootnotetext}% + \def\do#1{% + \patchcmd#1% + {\color@begingroup\@makefntext} + {\color@begingroup\toggletrue{blx@footnote}\@makefntext} + {} + {}}% + \docsvlist{% + \@footnotetext,% patch twice + \@plainfootnotetext}} + {}% + \iftoggle{blx@tempa} + {\blx@warning@noline{% + Patching footnotes failed.\MessageBreak + Footnote detection will not work}} + {}% + \@ifpackageloaded{endnotes} + {\patchcmd\theendnotes + {\enoteformat} + {\toggletrue{blx@footnote}\enoteformat} + {} + {\blx@err@patch{'endnotes' package}}} + {}% + \@ifpackageloaded{bigfoot} + {\apptocmd\@makefnstartbox + {\toggletrue{blx@footnote}} + {} + {\blx@err@patch{'bigfoot' package}}} + {}% + \@ifpackageloaded{showkeys} + {\ifdef\SK@ + {\AtEveryBibitem{\SK@\SK@@label{\thefield{entrykey}}}% + \AtEveryLositem{\SK@\SK@@label{\thefield{entrykey}}}% + \ifundef\SK@cite % = 'notcite' disabled + {\AtEveryCitekey{\SK@\SK@@ref{\thefield{entrykey}}}} + {}} + {}} + {}% + \apptocmd\@floatboxreset + {\boolfalse{citetracker}% + \boolfalse{pagetracker}} + {} + {\blx@err@patch{floats}}% + \ifdef\TX@endtabularx % tabularx/memoir + {\pretocmd\TX@endtabularx + {\addtocounter{tabx@nest}{1}}% track nestes tabularx environments + {} + {\blx@err@patch{'tabularx'}}% + % no need to conditionalise on top-level tabx as the search/replace + % will only match once anyway + \patchcmd\TX@endtabularx + {\edef\TX@ckpt{\cl@@ckpt}} + {\edef\TX@ckpt{\cl@@ckpt\abx@resttrackers}% + \abx@savetrackers} + {} + {\blx@err@patch{'tabularx'}}% + \apptocmd\TX@endtabularx + {\ifnum\value{tabx@nest}=1% only clear trackers for top-level tabularx + \abx@cleartrackers + \fi + \addtocounter{tabx@nest}{-1}} + {} + {\blx@err@patch{'tabularx'}}} + {}% + \@ifpackageloaded{csquotes} + {\@ifpackagelater{csquotes}{2009/05/30} + {} + {\blx@error + {Outdated 'csquotes' package} + {Upgrade to csquotes v4.4 (2009/05/30) or later.\MessageBreak + I found: '\csuse{ver@csquotes.sty}'}}% + \BlockquoteDisable{\let\blx@thecheckpunct\@gobble}% + \@ifpackagelater{csquotes}{2009/08/27} + {\appto\@blockquote@prehook{\abx@savetrackers}% + \appto\@blockquote@posthook{\abx@resttrackers\abx@cleartrackers}} + {}% + \@ifpackagelater{csquotes}{2010/06/09} + {} + {\newcommand*{\@quotereset}{}\newcount\@quotereset}} + {\@ifpackageloaded{babel} + {\blx@warning@noline{% + 'babel' detected but 'csquotes' missing.\MessageBreak + Loading 'csquotes' recommended}} + {}% + \newcommand*{\@quotelevel}{}% + \newcount\@quotelevel + \newcommand*{\@quotereset}{}% + \newcount\@quotereset + \newcommand*{\@setquotesfcodes}{}% + \let\@setquotesfcodes\relax + \newrobustcmd*{\initoquote}{\@quotelevel\@ne}% + \newrobustcmd*{\initiquote}{\@quotelevel\tw@}% + \newrobustcmd*{\textooquote}{``}% + \newrobustcmd*{\textcoquote}{''}% + \newrobustcmd*{\textoiquote}{`\relax}% block ligs + \newrobustcmd*{\textciquote}{'\relax}% block ligs + \newrobustcmd*{\enquote}{\@ifstar\blx@enquote@ii\blx@enquote}% + \def\blx@enquote{% + \ifnum\@quotelevel>\z@ + \expandafter\blx@enquote@ii + \else + \expandafter\blx@enquote@i + \fi}% + \long\def\blx@enquote@i#1{% + \begingroup\initoquote + \textooquote#1\textcoquote + \endgroup}% + \long\def\blx@enquote@ii#1{% + \begingroup\initiquote + \textoiquote#1\textciquote + \endgroup}% + \appto\blx@setsfcodes{% + \sfcode`\`=\z@ + \sfcode`\'=\z@}}% + \let\do\noexpand} + +\begingroup +\@makeother\# +% \relax: gobble newline -> titletoc.sty +\AtEndPreamble{% + \addtocontents{toc}{% + \boolfalse{citerequest}% + \boolfalse{citetracker}% + \boolfalse{pagetracker}% + \boolfalse{backtracker}\relax}% + \addtocontents{lof}{% + \boolfalse{citerequest}% + \boolfalse{citetracker}% + \boolfalse{pagetracker}% + \boolfalse{backtracker}\relax}% + \addtocontents{lot}{% + \boolfalse{citerequest}% + \boolfalse{citetracker}% + \boolfalse{pagetracker}% + \boolfalse{backtracker}\relax}% + \patchcmd\addtocontents + {\string\@writefile} + {\string\@writefile{#1}{\defcounter{refsection}{\the\c@refsection}\relax}% + \string\@writefile} + {} + {\blx@err@patch{\string\addtocontents}}} +\endgroup + +% trick hyperref into believing we're natbib +\let\NAT@parse\@empty +% trick showkeys into believing we're havard +\let\HAR@checkdef\@empty + +%% Allocation + +\providecommand{\@gobblefive}[5]{} + +% Counter to track nested tabularx environemnts so we don't +% try to patch the commands more than once below as this undefs some +% macros and an error is thrown +\newcounter{tabx@nest} +\setcounter{tabx@nest}{0} + +\newcounter{listtotal} +\def\thelisttotal{\the\c@listtotal} +\newcounter{listcount} +\def\thelistcount{\the\c@listcount} +\newcounter{liststart} +\def\theliststart{\the\c@liststart} +\newcounter{liststop} +\def\theliststop{\the\c@liststop} +\newcounter{citecount} +\def\thecitecount{\the\c@citecount} +\newcounter{citetotal} +\def\thecitetotal{\the\c@citetotal} +\newcounter{multicitecount} +\def\themulticitecount{\the\c@multicitecount} +\newcounter{multicitetotal} +\def\themulticitetotal{\the\c@multicitetotal} +\newcounter{instcount} +\def\theinstcount{\the\c@instcount} +\newcounter{maxnames} +\def\themaxnames{\the\c@maxnames} +\newcounter{minnames} +\def\theminnames{\the\c@minnames} +\newcounter{maxitems} +\def\themaxitems{\the\c@maxitems} +\newcounter{minitems} +\def\theminitems{\the\c@minitems} +\newcounter{citecounter} +\def\thecitecount{\the\c@citecounter} +\newcounter{savedcitecounter} +\def\thecitecount{\the\c@savedcitecounter} +\newcounter{uniquelist} +\def\theuniquelist{\the\c@uniquelist} +\newcounter{uniquename} +\def\theuniquename{\the\c@uniquename} +\newcounter{refsection} +\def\therefsection{\the\c@refsection} +\newcounter{refsegment} +\def\therefsegment{\the\c@refsegment} +\newcounter{maxextratitle} +\def\themaxextratitle{\the\c@maxextratitle} +\newcounter{maxextratitleyear} +\def\themaxextratitleyear{\the\c@maxextratitleyear} +\newcounter{maxextrayear} +\def\themaxextrayear{\the\c@maxextrayear} +\newcounter{maxextraalpha} +\def\themaxextraalpha{\the\c@maxextraalpha} +\newcounter{abbrvpenalty} +\def\theabbrvpenalty{\the\c@abbrvpenalty} +\newcounter{highnamepenalty} +\def\thehighnamepenalty{\the\c@highnamepenalty} +\newcounter{lownamepenalty} +\def\thelownamepenalty{\the\c@lownamepenalty} +\newcounter{maxparens} +\def\themaxparens{\the\c@maxparens} +\newcounter{parenlevel} +\def\theparenlevel{\the\c@parenlevel} + +\newcount\blx@tempcnta +\newcount\blx@tempcntb +\newcount\blx@tempcntc +\newcount\blx@maxsection +\expandafter\newcount\csname blx@maxsegment@0\endcsname +\newcount\blx@notetype +\newcount\blx@parenlevel@text +\newcount\blx@parenlevel@foot +\expandafter\newcount\csname blx@sectionciteorder@0\endcsname + + + +\def\blx@uniquename{0} +\def\blx@uniquelist{0} +\def\blx@maxbibnames{0} +\def\blx@minbibnames{0} +\def\blx@maxcitenames{0} +\def\blx@mincitenames{0} +\def\blx@maxbibnames@type{\blx@maxbibnames} +\def\blx@minbibnames@type{\blx@minbibnames} +\def\blx@maxcitenames@type{\blx@maxcitenames} +\def\blx@mincitenames@type{\blx@mincitenames} +\def\blx@maxalphanames{0} +\def\blx@minalphanames{0} +\def\blx@maxitems{0} +\def\blx@minitems{0} +\def\blx@maxitems@type{\blx@maxitems} +\def\blx@minitems@type{\blx@minitems} + +\newlength{\labelnumberwidth} +\newlength{\labelalphawidth} +\newlength{\shorthandwidth} +\newlength{\biblabelsep} +\ifdef\bibitemsep % memoir + {} + {\newlength{\bibitemsep}} +\newlength{\bibnamesep} +\newlength{\bibinitsep} +\newlength{\bibparsep} +\newlength{\bibhang} + +\newbool{sourcemap} +\newbool{citetracker} +\newbool{pagetracker} +\newbool{backtracker} +\newbool{citerequest} +\booltrue{citerequest} + +\newtoggle{blx@tempa} +\newtoggle{blx@tempb} +\newtoggle{blx@runltx} +\newtoggle{blx@runbiber} +\newtoggle{blx@block} +\newtoggle{blx@unit} +\newtoggle{blx@skipentry} +\newtoggle{blx@insert} +\newtoggle{blx@lastins} +\newtoggle{blx@debug} +\newtoggle{blx@sortcase} +\newtoggle{blx@sortupper} +\newtoggle{blx@autolang} +\newtoggle{blx@clearlang} +\newtoggle{blx@defernumbers} +\newtoggle{blx@omitnumbers} +\newtoggle{blx@footnote} +\newtoggle{blx@labelalpha} +\newtoggle{blx@labelnumber} +\newtoggle{blx@labeltitle} +\newtoggle{blx@labeltitleyear} +\newtoggle{blx@labelyear} +\newtoggle{blx@natbib} +\newtoggle{blx@mcite} +\newtoggle{blx@loadfiles} +\newtoggle{blx@singletitle} +\newtoggle{blx@firstinits} +\newtoggle{blx@sortfirstinits} +\newtoggle{blx@useauthor} +\newtoggle{blx@useeditor} +\newtoggle{blx@usetranslator} +\newtoggle{blx@useprefix} +\newtoggle{blx@setonly} +\newtoggle{blx@dataonly} +\newtoggle{blx@skipbib} +\newtoggle{blx@skiplos} +\newtoggle{blx@skiplab} +\newtoggle{blx@citation} +\newtoggle{blx@bibliography} +\newtoggle{blx@reencode} +\newtoggle{blx@citeindex} +\newtoggle{blx@bibindex} + +\newread\blx@bcfin +\newwrite\blx@bcfout + +\def\blx@onlypreamble#1{% + \gappto\blx@dopreamblecmds{\do#1}} + +\def\blx@dopreamblecmds{% + \do\blx@dopreamblecmds + \do\blx@onlypreamble} + +%% Initialization + +\def\blx@blxinit{% + \let\blx@blxinit\relax + \blx@initunit} + +\newcommand*{\labelalphaothers}{+} +\newcommand*{\sortalphaothers}{\labelalphaothers} + +\def\blx@secinit{% + \csgdef{blx@sections@\the\c@refsection}{true}% just to say we have a section for tests later + \ifcsundef{blx@bsee@\the\c@refsection} + {\global\cslet{blx@bsee@\the\c@refsection}\@empty} + {}% + \ifcsundef{blx@fsee@\the\c@refsection} + {\global\cslet{blx@fsee@\the\c@refsection}\@empty} + {}% + \blx@ibidreset@force + \blx@idemreset@force + \blx@opcitreset@force + \blx@loccitreset@force + \ifcsundef{blx@segm@\the\c@refsection @\the\c@refsegment} + {\global\cslet{blx@segm@\the\c@refsection @\the\c@refsegment}\@empty} + {}} + +%% Auxiliary commands + +\protected\def\blx@safe@actives{% + \let\blx@if@safe@actives\if@safe@actives + \let\if@safe@actives\iftrue} + +\protected\def\blx@rest@actives{% + \let\if@safe@actives\blx@if@safe@actives} + +\protected\def\blx@regimc#1{% + \xappto\blx@blxinit{% + \let\noexpand#1\expandafter\noexpand\csname + blx@imc@\expandafter\@gobble\string#1\endcsname}} + +\protected\def\blx@regimcs#1{\blx@regimcs@i#1&} +\def\blx@regimcs@i#1{% + \ifx#1&\else + \blx@regimc#1% + \expandafter\blx@regimcs@i + \fi} + +% {<field>} => \do{<item1>}\do{<item2>}... + +\def\blx@imc@docsvfield#1{% + \blx@imc@iffieldundef{#1} + {} + {\expandafter\expandafter\expandafter\docsvlist + \expandafter\expandafter\expandafter{% + \csname abx@field@#1\endcsname}}} + +% {<handler>}{<field>} => <handler>{<item1>}<handler>{<item2>}... + +\def\blx@imc@forcsvfield#1#2{% + \blx@imc@iffieldundef{#2} + {} + {\expandafter\expandafter\expandafter\blx@imc@forcsvfield@i + \expandafter\expandafter\expandafter{% + \csname abx@field@#2\endcsname}{#1}}} + +\def\blx@imc@forcsvfield@i#1#2{\forcsvlist{#2}{#1}} + +\blx@regimcs{\docsvfield \forcsvfield} + +% {<list>|<listmacro>} + +\protected\long\def\blx@listloop#1{% + \expandafter\blx@listloop@i#1|&} +\long\def\blx@listloop@i#1|{% + \ifblank{#1} + {\blx@break} + {\blx@do{#1}\blx@listloop@i}} + +\long\def\blx@break#1&{% + \blx@done + \undef\blx@do + \undef\blx@done} + +% {<listmacro>}{<listcsname>} => matches in <listmacro> + +\protected\def\blx@filter#1#2{% + \def\do##1{% + \ifinlistcs{##1}{#2} + {\listadd#1{##1}} + {}}% + \blx@runfilter#1} + +% {<listmacro>}{<listcsname>} => matches in <listmacro> +% Slightly odd use of filtering to do citation sorting. +% Same as blx@filter but it keeps \tempcnta in step with the +% resulting number of things in the filtered list. This is +% because \tempcnta is used to set citetotal - this use +% of filtering for cite sorting has the side-effect of stripping +% duplicated like \cite{foo,foo} but we need then to keep citetotal +% in sync. + +\protected\def\blx@filtercitesort#1#2{% + \blx@tempcnta\z@ + \def\do##1{% + \ifinlistcs{##1}{#2} + {\listadd#1{##1}% + \advance\blx@tempcnta\@ne} + {}}% + \blx@runfilter#1} + +% {<listmacro>}{<listcsname>} => neg. matches in <listmacro> + +\protected\def\blx@notfilter#1#2{% + \def\do##1{% + \ifinlistcs{##1}{#2} + {} + {\listadd#1{##1}}}% + \blx@runfilter#1} + +\def\blx@runfilter#1{% + \begingroup\edef#1{\endgroup + \unexpanded{\let#1\@empty\dolistloop}{#1}}% + #1\let\do\noexpand} + +% {<code>}{<string>} => <code>{<string>} + +\protected\def\blx@xsanitizeafter#1#2{% + \begingroup + \abx@hook@xsanitize + \def\blx@tempa{\endgroup#1}% + \edef\blx@tempb{#2}% + \expandafter\blx@tempa + \expandafter{\detokenize\expandafter{\blx@tempb}}} + +\def\abx@hook@xsanitize{% + \blx@safe@actives + \let\protect\string} + +% {<code>}{<string>} => <code>{<string>} + +\begingroup +\catcode`\<=\active +\catcode`\>=\active +\catcode`\&=\active +\catcode`\"=\active +\catcode`\'=\active +\protected\gdef\blx@xmlsanitizeafter#1#2{% + \begingroup + \abx@hook@xsanitize + \def\blx@tempa{\endgroup#1}% + \edef\blx@tempb{#2}% + \let\do\@makeother + \dospecials + \catcode`\<=\active + \catcode`\>=\active + \catcode`\&=\active + \catcode`\"=\active + \catcode`\'=\active + \edef<{\string<\string;}% + \edef>{\string>\string;}% + \edef&{\string&\string;}% + \edef"{\string"\string;}% + \edef'{\string&apos\string;}% + \endlinechar\m@ne + \everyeof{\noexpand}% + \edef\blx@tempb{\scantokens\expandafter{\blx@tempb}}% + \expandafter\blx@tempa + \expandafter{\detokenize\expandafter{\blx@tempb}}} +\endgroup + +% {<file>}{<message>}{<preload>}{<postload>}{<success>}{<failure>} + +\protected\long\def\blx@inputonce#1#2#3#4#5#6{% + \ifcsundef{blx@file@#1} + {\blx@info@noline{Trying to load #2..}% + \IfFileExists{#1} + {\blx@info@noline{... file '#1' found}% + \listxadd\blx@list@req@stat{#1}% + #3\@@input\@filef@und#4#5} + {\blx@info@noline{... file '#1' not found}#6}% + \global\csdef{blx@file@#1}{}% + \@addtofilelist{#1}} + {#5}} + +% {<write>}{<precode>}{<string>} + +\protected\def\blx@auxwrite#1#2#3{% + \if@filesw + \begingroup + \blx@safe@actives + \let\protect\string + #2% + \immediate\write#1{#3}% + \endgroup + \fi} + +% {<file>}{<signature>}{<true>}{<false>} + +\def\blx@ifsigned#1#2{% + \begingroup + \let\blx@tempa\@firstoftwo + \edef\blx@tempb{\csuse{blx@sig@#2}}% + \edef\blx@tempb{\detokenize\expandafter{\blx@tempb}}% + \openin\blx@bcfin #1.#2\relax + \ifeof\blx@bcfin + \else + \endlinechar\m@ne + \readline\blx@bcfin to \blx@tempc + \ifeof\blx@bcfin + \else + \ifx\blx@tempb\blx@tempc + \readline\blx@bcfin to \blx@tempc + \edef\blx@tempb{\csuse{blx@ver@#2}}% + \edef\blx@tempb{\detokenize\expandafter{\blx@tempb}}% + \ifx\blx@tempb\blx@tempc + \else + \blx@warning@noline{% + File '#1.#2' created by wrong version} + \fi + \else + \blx@error + {File '#1.#2' not created by biblatex} + {This file was apparently not created by biblatex. + Rename it or\MessageBreak move it to a location were + TeX will not find it. If this error\MessageBreak + persists, consider redefining \string\blxauxsuffix.% + See the biblatex\MessageBreak manual for details}% + \let\blx@tempa\@secondoftwo + \fi + \fi + \fi + \closein\blx@bcfin + \expandafter\endgroup\blx@tempa} + +\def\blx@sig@bib{@Comment{$ biblatex control file $}} +\edef\blx@ver@bib{@Comment{$ biblatex version \blx@bblversion\space $}} +\edef\blx@sig@aux{\@percentchar\space $ biblatex auxiliary file $} +\edef\blx@ver@aux{\@percentchar\space$ biblatex version \blx@bblversion\space $} +\let\blx@sig@bbl\blx@sig@aux +\let\blx@ver@bbl\blx@ver@aux +\edef\blx@sig@bcf{\detokenize{<?xml version="1.0" encoding="UTF-8"?>}} +\edef\blx@ver@bcf{% + \detokenize{<bcf:controlfile version="}\blx@bblversion + \detokenize{" xmlns:bcf="https://sourceforge.net/projects/biblatex">}} + +\edef\blx@msg@aux{% + \blx@sig@aux\blx@nl + \blx@ver@aux\blx@nl + \@percentchar\space Do not modify this file!\blx@nl + \@percentchar\blx@nl + \@percentchar\space This is an auxiliary file + used by the 'biblatex' package.\blx@nl + \@percentchar\space This file may safely be deleted. + It will be recreated as\blx@nl + \@percentchar\space required.\blx@nl + \@percentchar\blx@nl\string\relax\blx@nl} +\edef\blx@msg@bib{% + \blx@sig@bib\blx@nl + \blx@ver@bib\blx@nl + Do not modify this file!\blx@nl\blx@nl + This is an auxiliary file used + by the 'biblatex' package.\blx@nl + This file may safely be deleted. + It will be recreated as\blx@nl + required.\blx@nl\blx@nl} + +% {<true>}{<false>} + +\newrobustcmd*{\lbx@ifutfinput}{\ifboolexpr{% + test {\ifdefstring\inputencodingname{utf8}} + or + test {\ifdefstring\inputencodingname{utf8x}} + or + test {\ifdefstring\inputencodingname{lutf8}} + or + ( test {\ifundef\inputencodingname} + and + ( not test {\ifundef\XeTeXrevision} + or + not test {\ifundef\luatexversion} + ) + ) +}} + +%% User feedback + +\protected\def\blx@error#1#2{% + \begingroup + \blx@safe@actives + \PackageError{biblatex}{#1}{#2.}% + \endgroup} + +\protected\def\blx@warning#1{% + \begingroup + \blx@safe@actives + \PackageWarning{biblatex}{#1\blx@noline}% + \endgroup} +\protected\def\blx@warning@noline#1{% + \begingroup + \blx@safe@actives + \PackageWarningNoLine{biblatex}{#1}% + \endgroup} +\protected\def\blx@warning@entry#1{% + \ifdef\abx@field@entrykey + {\blx@warning{#1\MessageBreak at entry '\abx@field@entrykey'}} + {\blx@warning{#1}}} + +\protected\def\blx@info#1{% + \begingroup + \blx@safe@actives + \PackageInfo{biblatex}{#1\blx@noline}% + \endgroup} +\def\blx@info@noline#1{% + \begingroup + \blx@safe@actives + \PackageInfo{biblatex}{#1\@gobble}% + \endgroup} + +\let\blx@noline\@gobble +\AtEndOfPackage{\let\blx@noline\@empty} +\def\blx@imc@BibliographyWarning{\blx@warning@entry} +\blx@regimc\BibliographyWarning + +\protected\def\abx@missing#1{% + \mbox{\reset@font\bfseries#1}} + +\def\blx@err@patch#1{% + \blx@error + {Patching #1 failed} + {This is an internal issue typically caused by a + conflict\MessageBreak between biblatex and some + other package. Modifying\MessageBreak the package + loading order may fix the problem}} + +\def\blx@err@nolang#1{% + \blx@error + {Language '#1' not found} + {The localization module for '#1' could not be found}} + +\def\blx@err@invarg#1#2{% + \blx@error + {Argument '#1' invalid} + {\ifblank{#2} + {The argument you have supplied is invalid.\MessageBreak + See the biblatex manual for details} + {#2}}} + +\def\blx@err@invopt#1#2{% + \blx@error + {Option '#1' invalid} + {\ifblank{#2} + {The option you have supplied is invalid.\MessageBreak + See the biblatex manual for valid option keys and + possible values} + {#2}}} + +\def\blx@err@confopt#1#2{% + \blx@error + {Conflicting options\ifblank{#1}{}{ (#1)}} + {\ifblank{#2} + {The option you have supplied conflicts with another one.\MessageBreak + See the biblatex manual for valid option keys and possible values} + {#2}}} + +\def\blx@err@optdef#1{% + \blx@error + {Conflicting options} + {The option '#1' is already defined}} + +\def\blx@err@nodocdiv#1{% + \blx@error + {\@backslashchar#1 not provided by class} + {The document class does not seems to support #1s}} + +\def\blx@err@nosec#1{% + \blx@error + {Section '#1' not found} + {The reference section '#1' could not be found}} + +\def\blx@err@nosort#1{% + \blx@error + {Sorting scheme '#1' not found} + {The sorting scheme '#1' does not seem to have been defined anywhere}} + +\def\blx@err@secfirst{% + \blx@error + {'section' not first filter} + {When passing multiple filter options, + the 'section' filter must be given first}} + +\protected\def\blx@err@nestcite{% + \blx@error + {Nested citation command} + {Citation commands may not be nested}} + +\def\blx@err@nestenv#1{% + \blx@error + {Nested '#1' environment} + {This environment may not be nested}} + +\protected\def\blx@err@citecmd#1{% + \begingroup + \escapechar\m@ne + \blx@error + {Command '\@backslashchar\string#1' undefined} + {The citation command '\@backslashchar\string#1' + has not been defined\MessageBreak by the + selected citation style}% + \endgroup} + +\def\blx@err@endnote#1{% + \blx@error + {Missing or incomplete endnote support} + {There does not seem to be endnote support available\MessageBreak + or the available support is incomplete.\MessageBreak + If you continue, I will fall back to '\string#1'}% + #1} + +\def\blx@err@matchparen#1{% + \blx@error + {Unbalanced parentheses or brackets} + {\iftoggle{blx@footnote}{#1 in foot or endnote}{#1}.\MessageBreak + This error is triggered if \string\bibopenparen\space and + \string\bibcloseparen\MessageBreak or + \string\bibopenbracket\space and \string\bibclosebracket\space + are unbalanced\MessageBreak or mismatched}} + +\def\blx@err@nestparen#1{% + \blx@error + {Too deeply nested parentheses or brackets} + {#1 nested too deeply% + \iftoggle{blx@footnote}{\space in foot or endnote}{}.\MessageBreak + This error may also be triggered if \string\mkbibparens\MessageBreak + or \string\mkbibbrackets\space are nested too deeply}} + +\def\blx@err@filter{% + \blx@error + {Invalid filter expression} + {The filter expression you have supplied is invalid.\MessageBreak + See the biblatex manual for details}} + +\def\blx@warn@nohyph#1{% + \blx@warning{No hyphenation patterns for '#1'}} + +\protected\def\blx@warn@citecmd#1#2{% + \blx@warning{% + '\string#1' not defined by citation style.\MessageBreak + Falling back to '\string#2'}% + #2} + +\protected\def\blx@warn@nostring#1{% + \blx@warning@entry{Bibliography string '#1' undefined}% + \abx@missing{#1}} + +\def\blx@warn@conflopt#1{% + \blx@warning{Conflicting options.\MessageBreak#1}} + +\def\blx@warn@depropt#1{% + \blx@warning{Deprecated option.\MessageBreak Ignoring '#1'}} + +\def\blx@warn@bibempty{% + \@latex@warning{Empty bibliography}} + +\def\blx@warn@losempty{% + \@latex@warning{Empty list of shorthands}} + +\def\blx@inf@refsec{% + \blx@info{Reference section=\the\c@refsection}}% + +\def\blx@inf@refseg{% + \ifnum\c@refsection=\z@ + \blx@info{Reference segment=\the\c@refsegment}% + \else + \blx@info{% + Reference section/segment=% + \the\c@refsection/\the\c@refsegment}% + \fi} + +\def\blx@inf@creset{% + \blx@info{Resetting trackers}}% + +\def\blx@msg@cundef#1{% + Citation '#1' undefined} +\def\blx@msg@cundefon#1{% + Citation '#1' on page \the\c@page\space undefined} + +% Dummy as biblatex 2 is biber only. Some style may still use this though. +\newrobustcmd*{\RequireBiber}[1][2]{} + +% \blx@list@active active aux files (basename) +% [internal list] +% \blx@list@inactive inactive aux files (basename) +% [internal list] +% \blx@list@bibfiles@<auxfile> aux file -> bib file mapping (refsections) +% aux file (basename) -> bib files (full) +% [internal list] + +\let\blx@list@active\@empty +\let\blx@list@inactive\@empty +\listeadd\blx@list@inactive{\jobname} + +\protected\def\blx@regbibfiles#1#2{% + \forlistloop{\blx@regbibfile{#1}}{#2}} + +\def\blx@regbibfile#1#2{% + \ifcsundef{blx@res@loca@#2} + {\blx@regbibfile@i{#1}{#2}} + {\ifcsstring{blx@res@loca@#2}{local} + {\blx@regbibfile@i{#1}{#2}} + {}}} + +\def\blx@regbibfile@i#1#2{% + \ifinlistcs{#2}{blx@list@bibfiles@#1} + {} + {\listcsxadd{blx@list@bibfiles@#1}{#2}}} + +\def\blx@check@logreq{% + \begingroup + \ltxrequest{biblatex}{{\iftoggle{blx@runltx}{1}{0}}}{% + \provides[type=dynamic]{ + \file{\jobname.bcf} + } + \requires[type=dynamic]{ + \file{\jobname.bbl} + } + \ifdef\blx@list@req@edit + {\requires[type=editable]{ + \forlistloop\file\blx@list@req@edit + }} + {} + \ifdef\blx@list@req@stat + {\requires[type=static]{ + \forlistloop\file\blx@list@req@stat + }} + {} + }% + \logrequest[package=biblatex,priority=5,active={{\iftoggle{blx@runbiber}{1}{0}}}]{% + \generic{biber} + \cmdline{ + \binary{biber} + \infile{\jobname} + } + \input{ + \file{\jobname.bcf} + } + \output{ + \file{\jobname.bbl} + } + \provides[type=dynamic]{ + \file{\jobname.bbl} + } + \requires[type=dynamic]{ + \file{\jobname.bcf} + } + \ifcsdef{blx@list@bibfiles@\jobname} + {\requires[type=editable]{ + \def\do{\file} + \dolistcsloop{blx@list@bibfiles@\jobname} + }} + {} + }% + \endgroup} + +\def\blx@logreq@active#1{% + \ifblank{#1} + {} + {\@latex@warning{#1}}% + \blx@rerun@latex + \blx@rerun@biber} + +\def\blx@rerun@latex{% + \G@refundefinedtrue + \global\toggletrue{blx@runltx}% + \global\let\blx@rerun@latex\relax} + +\def\blx@rerun@biber{% + \global\toggletrue{blx@runbiber}% + \global\let\blx@rerun@biber\relax} + +\let\blx@checksum@old\@empty +\let\blx@checksum@new\@empty +\let\blx@pagesum@old\@empty +\let\blx@pagesum@new\@empty + +\def\blx@checksum#1#2#3{% + \begingroup + \blx@tempcnta\the\numexpr0#2*0#3\relax + \blx@tempcntb\blx@tempcnta + \divide\blx@tempcntb10 + \multiply\blx@tempcntb10 + \advance\blx@tempcnta-\blx@tempcntb + \xdef#1{#1\the\blx@tempcnta}% + \endgroup} + +\def\blx@addchecksum{\blx@checksum\blx@checksum@old} +\def\blx@addpagesum{\blx@checksum\blx@pagesum@old} +\AtEndDocument{% + \def\blx@addchecksum{\blx@checksum\blx@checksum@new}% + \def\blx@addpagesum{\blx@checksum\blx@pagesum@new}} + +\protected\def\blx@check@rerun{% + \begingroup + \blx@tempcnta\z@ + \iftoggle{blx@runltx} + {\blx@tempcnta\@ne} + {\ifx\blx@checksum@old\blx@checksum@new + \ifx\blx@pagesum@old\blx@pagesum@new + \else + \blx@tempcnta\@ne + \fi + \else + \blx@tempcnta\@ne + \fi}% + \iftoggle{blx@runbiber} + {\advance\blx@tempcnta\tw@} + {}% + \ifcase\blx@tempcnta + \or + \blx@rerun@latex + \blx@warning@noline{% + Please rerun LaTeX% + \ifx\blx@pagesum@old\blx@pagesum@new\else + .\MessageBreak Page breaks have changed% + \fi}% + \else + \blx@rerun@latex + \blx@warn@auxlist + \fi + \endgroup} + +\def\blx@warn@auxlist{% + \begingroup + \edef\blx@tempa{% + Please (re)run Biber on the file:\MessageBreak + \jobname}% + \blx@warning@noline{% + \blx@tempa\MessageBreak + and rerun LaTeX afterwards}% + \endgroup} + +\AfterEndDocument{% + \blx@check@rerun + \blx@check@logreq} + +%% Punctuation and capitalization + +% 1001 apostrophe (\printnames only) +% 1002 abbreviation period (dot) +% 1003/1250 comma +% 1004/1500 semicolon +% 1005/2000 colon +% 1006/3000 period +% 1007/3001 exclamation mark +% 1008/3002 question mark +% 1009 suppress punctuation +% 1010 new paragaph + +\mathchardef\blx@sf@apo=1001 +\mathchardef\blx@sf@dot=1002 +\mathchardef\blx@sf@comma=1003 +\mathchardef\blx@sf@semicolon=1004 +\mathchardef\blx@sf@colon=1005 +\mathchardef\blx@sf@period=1006 +\mathchardef\blx@sf@exclam=1007 +\mathchardef\blx@sf@question=1008 +\mathchardef\blx@sf@nopunct=1009 +\mathchardef\blx@sf@par=1010 +\mathchardef\blx@sf@threshold@low=1002 +\mathchardef\blx@sf@threshold@high=1009 + +\csdef{blx@sf@1250}{\the\blx@sf@comma} +\csdef{blx@sf@1500}{\the\blx@sf@semicolon} +\csdef{blx@sf@2000}{\the\blx@sf@colon} +\csdef{blx@sf@3000}{\the\blx@sf@period} +\csdef{blx@sf@3001}{\the\blx@sf@exclam} +\csdef{blx@sf@3002}{\the\blx@sf@question} + +\csdef{blx@pm@,}{comma} +\csdef{blx@pm@;}{semicolon} +\csdef{blx@pm@:}{colon} +\csdef{blx@pm@.}{period} +\csdef{blx@pm@!}{exclam} +\csdef{blx@pm@?}{question} + +\def\blx@setsfcodes{% + \let\blx@setsfcodes\relax + \let\frenchspacing\blx@setfrcodes + \let\nonfrenchspacing\blx@setencodes + \ifnum\sfcode`\.>2000 + \blx@setencodes + \else + \blx@setfrcodes + \fi + \@setquotesfcodes + \sfcode`\(=\z@ + \sfcode`\)=\z@ + \sfcode`\[=\z@ + \sfcode`\]=\z@ + \sfcode`\<=\z@ + \sfcode`\>=\z@} + +\def\blx@setfrcodes{% + \ifnum\sfcode`\A=\@m + \else + \blx@setazcodes + \fi + \sfcode`\,=\blx@sf@comma + \sfcode`\;=\blx@sf@semicolon + \sfcode`\:=\blx@sf@colon + \sfcode`\.=\blx@sf@period + \sfcode`\!=\blx@sf@exclam + \sfcode`\?=\blx@sf@question +} + +\def\blx@setencodes{% + \sfcode`\,=1250 + \sfcode`\;=1500 + \sfcode`\:=2000 + \sfcode`\.=3000 + \sfcode`\!=3001 + \sfcode`\?=3002 +} + +\def\blx@namecodes{% + \ifnum\sfcode`\A=\@m + \else + \blx@setazcodes + \fi + \sfcode`\'=\blx@sf@apo +} + +\begingroup +\let\blx@setazcodes\@empty +\def\blx@tempa{% + \xdef\blx@setazcodes{% + \blx@setazcodes + \sfcode\the\blx@tempcnta=\@m} + \ifnum\blx@tempcnta<\blx@tempcntb + \advance\blx@tempcnta\@ne + \expandafter\blx@tempa + \fi} +\blx@tempcnta`\A +\blx@tempcntb`\Z +\blx@tempa +\ifnum\inputlineno=\m@ne\else + \blx@tempcnta"80 + \blx@tempcntb"9C + \blx@tempa + \blx@tempcnta"C0 + \blx@tempcntb"DF + \blx@tempa +\fi +\endgroup + +\def\blx@spacefactor{% + \ifhmode + \ifcsundef{blx@sf@\the\spacefactor} + {\the\spacefactor} + {\csname blx@sf@\the\spacefactor\endcsname}% + \else + \the\blx@sf@par + \fi} + +\protected\def\blx@leavevmode{% + \ifhmode + \else + \leavevmode\spacefactor\blx@sf@par + \fi} + +\protected\def\blx@leavevmode@cite{% + \ifhmode + \ifnum\spacefactor=\blx@sf@par + \else + \spacefactor\@m + \fi + \else + \leavevmode + \fi} + +\protected\def\blx@imc@setpunctfont#1{% + \blx@ifpuncthook + {\gdef\abx@puncthook{% + \ifdim\lastkern>\z@\unkern\fi + \blx@imc@resetpunctfont#1}} + {}} +\protected\def\blx@imc@resetpunctfont{% + \blx@ifpuncthook + {\global\let\abx@puncthook\@firstofone} + {}} + +\protected\def\blx@setpostpunct#1{% + \blx@ifuspunct + {\global\let\blx@postpunct\blx@dopostpunct + \ifdef\blx@thepostpunct + {\gappto\blx@thepostpunct{#1}} + {\gdef\blx@thepostpunct{#1}}} + {}} + +\def\blx@dopostpunct{% + \blx@thepostpunct + \global\let\blx@postpunct\@empty + \global\undef\blx@thepostpunct} + +\protected\def\blx@postpunct@agroup{% + \aftergroup\blx@postpunct + \let\blx@postpunct@agroup\@empty} + +% {<characters>} + +\newrobustcmd*{\DeclareCapitalPunctuation}[1]{% + \cslet{blx@cap@\the\blx@sf@par}\@empty + \csundef{blx@cap@\the\blx@sf@comma}% + \csundef{blx@cap@\the\blx@sf@semicolon}% + \csundef{blx@cap@\the\blx@sf@colon}% + \csundef{blx@cap@\the\blx@sf@period}% + \csundef{blx@cap@\the\blx@sf@exclam}% + \csundef{blx@cap@\the\blx@sf@question}% + \ifblank{#1} + {} + {\expandafter\blx@defcapstring\detokenize{#1}\relax}} + +\def\blx@defcapstring#1{% + \ifx#1\relax + \else + \begingroup + \blx@setfrcodes + \ifcsdef{blx@pm@#1} + {\expandafter\endgroup + \expandafter\let + \csname blx@cap@\the\sfcode`#1\endcsname\@empty} + {\blx@warning{Ignoring invalid punctuation mark '#1'}% + \endgroup}% + \expandafter\blx@defcapstring + \fi} + +% {<characters>} + +\newrobustcmd*{\DeclareQuotePunctuation}[1]{% + \csdef{blx@qp@comma}{\blx@postpunct}% + \csdef{blx@qp@semicolon}{\blx@postpunct}% + \csdef{blx@qp@colon}{\blx@postpunct}% + \csdef{blx@qp@period}{\blx@postpunct}% + \csdef{blx@qp@exclam}{\blx@postpunct}% + \csdef{blx@qp@question}{\blx@postpunct}% + \cslet{blx@pq@comma}\@empty + \cslet{blx@pq@semicolon}\@empty + \cslet{blx@pq@colon}\@empty + \cslet{blx@pq@period}\@empty + \cslet{blx@pq@exclam}\@empty + \cslet{blx@pq@question}\@empty + \let\blx@quotepunct\@empty + \ifblank{#1} + {\let\blx@ifuspunct\@secondoftwo} + {\let\blx@ifuspunct\@firstoftwo + \expandafter\blx@defquotepunct\detokenize{#1}&}} + +\def\blx@defquotepunct#1{% + \ifx\relax + \else + \ifcsdef{blx@pm@#1} + {\appto\blx@quotepunct{#1}% + \cslet{blx@qp@\csuse{blx@pm@#1}}\@empty + \csdef{blx@pq@\csuse{blx@pm@#1}}{\blx@postpunct}} + {\blx@warning{Ignoring invalid punctuation mark '#1'}}% + \expandafter\blx@defquotepunct + \fi} + +% {<mark>}{<characters>} + +\newrobustcmd*{\DeclarePunctuationPairs}[2]{% + \ifcsdef{blx@sf@\detokenize{#1}} + {\ifnum\csname blx@sf@\detokenize{#1}\endcsname>\blx@sf@apo + \ifnum\csname blx@sf@\detokenize{#1}\endcsname<\blx@sf@nopunct + \expandafter\blx@defpunctpairs + \expandafter{\the\csname blx@sf@\detokenize{#1}\endcsname}{#2}% + \else + \blx@err@invarg{\detokenize{#1}{}}% + \fi + \else + \blx@err@invarg{\detokenize{#1}{}}% + \fi} + {\blx@err@invarg{\detokenize{#1}{}}}} + +\def\blx@defpunctpairs#1#2{% + \blx@undefpair{#1}{\the\blx@sf@dot}% + \blx@undefpair{#1}{\the\blx@sf@comma}% + \blx@undefpair{#1}{\the\blx@sf@semicolon}% + \blx@undefpair{#1}{\the\blx@sf@colon}% + \blx@undefpair{#1}{\the\blx@sf@period}% + \blx@undefpair{#1}{\the\blx@sf@exclam}% + \blx@undefpair{#1}{\the\blx@sf@question}% + \ifblank{#2} + {} + {\begingroup + \def\blx@tempa{#1}% + \let\blx@tempb\@empty + \blx@setfrcodes + \sfcode`\*=\blx@sf@dot + \expandafter\blx@defpair\detokenize{#2}&% + \expandafter\endgroup\blx@tempb}} + +\def\blx@defpair#1{% + \ifx% + \else + \ifnum\the\sfcode`#1>\blx@sf@apo + \ifnum\the\sfcode`#1<\blx@sf@nopunct + \eappto\blx@tempb{% + \cslet{blx@pp@\blx@tempa @\the\sfcode`#1}\noexpand\@empty}% + \else + \blx@err@invarg{#1}{}% + \fi + \else + \blx@err@invarg{#1}{}% + \fi + \expandafter\blx@defpair + \fi} + +\def\blx@undefpair#1#2{% + \ifcsdef{blx@pp@#1@#2} + {\csundef{blx@pp@#1@#2}} + {}} + +\protected\def\blx@resetpunct{% + \DeclareCapitalPunctuation{.!?}% + \DeclarePunctuationPairs{dot}{}% + \DeclarePunctuationPairs{comma}{*!?}% + \DeclarePunctuationPairs{semicolon}{*!?}% + \DeclarePunctuationPairs{colon}{*!?}% + \DeclarePunctuationPairs{period}{}% + \DeclarePunctuationPairs{exclam}{*}% + \DeclarePunctuationPairs{question}{*}% + \DeclareQuotePunctuation{}% + \def\abx@dot{\ifdim\lastkern>\z@\unkern\fi.\spacefactor\blx@sf@dot}% + \def\abx@comma{\ifdim\lastkern>\z@\unkern\fi\abx@puncthook{,}}% + \def\abx@semicolon{\abx@puncthook{;}}% + \def\abx@colon{\abx@puncthook{:}}% + \def\abx@period{\ifdim\lastkern>\z@\unkern\fi\abx@puncthook{.}}% + \def\abx@exclam{\abx@puncthook{!}}% + \def\abx@question{\abx@puncthook{?}}% + \global\let\abx@puncthook\@firstofone + \global\let\blx@postpunct\@empty} + +\blx@resetpunct + +% {<character>}{<true>}{<false>} + +\protected\def\blx@imc@ifpunctmark#1{% + \ifhmode + \begingroup + \sfcode`\*=\blx@sf@dot + \ifnum\sfcode`#1=\spacefactor + \endgroup + \expandafter\expandafter + \expandafter\@firstoftwo + \else + \endgroup + \expandafter\expandafter + \expandafter\@secondoftwo + \fi + \else + \expandafter\@secondoftwo + \fi} + +% {<true>}{<false>} + +\protected\def\blx@imc@ifterm{% + \ifhmode + \expandafter\blx@imc@ifcapital + \else + \expandafter\@secondoftwo + \fi} + +% {<true>}{<false>} + +\protected\def\blx@imc@ifcapital{% + \ifcsdef{blx@cap@\blx@spacefactor}} + +% {<true>}{<false>} + +\protected\def\blx@imc@ifpunct{% + \ifnum\blx@spacefactor>\blx@sf@threshold@low + \ifnum\blx@spacefactor<\blx@sf@threshold@high + \expandafter\expandafter + \expandafter\@firstoftwo + \else + \expandafter\expandafter + \expandafter\@secondoftwo + \fi + \else + \expandafter\@secondoftwo + \fi} + +% {<character>} + +\newrobustcmd*{\autocap}[1]{#1} + +\protected\def\blx@imc@autocap{% + \blx@imc@ifcapital\MakeUppercase\@firstofone} + +\protected\def\blx@imc@nopunct{% + \leavevmode\spacefactor\blx@sf@nopunct} + +\protected\def\blx@imc@isdot{% + \ifnum\blx@spacefactor=\blx@sf@period + \spacefactor\blx@sf@dot + \fi} + +\protected\def\blx@imc@adddot{% + \blx@addpunct{dot}% + \ifnum\blx@spacefactor=\blx@sf@period + \spacefactor\blx@sf@dot + \fi} + +\protected\def\blx@imc@addperiod{% + \blx@addpunct{period}% + \ifnum\blx@spacefactor=\blx@sf@dot + \spacefactor\blx@sf@period + \fi} + +\protected\def\blx@imc@addcomma{\blx@addpunct{comma}} +\protected\def\blx@imc@addsemicolon{\blx@addpunct{semicolon}} +\protected\def\blx@imc@addcolon{\blx@addpunct{colon}} +\protected\def\blx@imc@addexclam{\blx@addpunct{exclam}} +\protected\def\blx@imc@addquestion{\blx@addpunct{question}} + +\def\blx@addpunct#1{% + \unspace + \ifnum\blx@spacefactor<\blx@sf@threshold@low + \csuse{blx@qp@#1}\csuse{abx@#1}% + \else + \ifnum\blx@spacefactor>\blx@sf@threshold@high + \csuse{blx@qp@#1}\csuse{abx@#1}% + \else + \ifcsdef{blx@pp@\the\csname blx@sf@#1\endcsname @\blx@spacefactor} + {\csuse{blx@qp@#1}\csuse{abx@#1}} + {\csuse{blx@qp@#1}}% + \fi + \fi + \csuse{blx@pq@#1}} + +\providerobustcmd*{\unspace}{% + \ifbool{hmode} + {\ifdimgreater\lastskip\z@ + {\unskip\unspace} + {\ifnumgreater\lastpenalty\z@ + {\unpenalty\unspace} + {}}} + {}} + +\newrobustcmd*{\bibsentence}{% + \leavevmode\spacefactor\blx@sf@par + \ignorespaces} + +\newrobustcmd*{\midsentence}{% + \leavevmode + \@ifstar + {\ifnum\spacefactor=\blx@sf@dot + \else + \spacefactor\@m + \fi} + {\spacefactor\@m}} + +\newrobustcmd*{\addslash}{% + \unspace/\penalty\hyphenpenalty\hskip\z@skip} + +\newrobustcmd*{\addspace}{% + \unspace\blx@postpunct + \space\blx@imc@resetpunctfont} + +\newrobustcmd*{\addnbspace}{% + \unspace\blx@postpunct + \nobreak\space\blx@imc@resetpunctfont} + +\newrobustcmd*{\addthinspace}{% + \unspace\blx@postpunct + \hskip0.16667em\relax + \blx@imc@resetpunctfont} + +\newrobustcmd*{\addnbthinspace}{% + \unspace\blx@postpunct + \nobreak\hskip0.16667em\relax + \blx@imc@resetpunctfont} + +\newrobustcmd*{\addlowpenspace}{% + \unspace\blx@postpunct + \penalty\value{lownamepenalty}\space + \blx@imc@resetpunctfont} + +\newrobustcmd*{\addhighpenspace}{% + \unspace\blx@postpunct + \penalty\value{highnamepenalty}\space + \blx@imc@resetpunctfont} + +\newrobustcmd*{\addlpthinspace}{% + \unspace\blx@postpunct + \penalty\value{lownamepenalty}% + \hskip0.16667em\relax\blx@imc@resetpunctfont} + +\newrobustcmd*{\addhpthinspace}{% + \unspace\blx@postpunct + \penalty\value{highnamepenalty}% + \hskip0.16667em\relax\blx@imc@resetpunctfont} + +\newrobustcmd*{\addabbrvspace}{% + \unspace\blx@postpunct + \penalty\value{abbrvpenalty}% + \space\blx@imc@resetpunctfont} + +\newrobustcmd*{\addabthinspace}{% + \unspace\blx@postpunct + \penalty\value{abbrvpenalty}% + \hskip0.16667em\relax + \blx@imc@resetpunctfont} + +\newrobustcmd*{\adddotspace}{% + \unspace\adddot\blx@postpunct + \penalty\value{abbrvpenalty}% + \space\blx@imc@resetpunctfont} + +\providerobustcmd*{\noligature}{% + \penalty\@M\discretionary{-}{}{\kern0.03em}% + \nobreak\hskip\z@skip} + +\providerobustcmd*{\hyphen}{% + \nobreak-\nobreak\hskip\z@skip} + +\providerobustcmd*{\nbhyphen}{% + \nobreak\mbox{-}\nobreak\hskip\z@skip} + +\providerobustcmd*{\hyphenate}{% + \nobreak\-\nobreak\hskip\z@skip} + +\providerobustcmd*{\allowhyphens}{% + \nobreak\hskip\z@skip} + +\providerobustcmd*{\nohyphenation}{% + \lefthyphenmin\@m} + +\providerobustcmd*{\textnohyphenation}[1]{% + \bgroup\nohyphenation#1\egroup} + +\blx@regimcs{% + \setpunctfont \resetpunctfont \ifcapital \autocap \ifpunctmark + \ifpunct \ifterm \nopunct \isdot \adddot \addperiod \addcomma + \addsemicolon \addcolon \addexclam \addquestion} + +\appto\blx@blxinit{% + \appto\nocorrlist{\isdot\adddot\addperiod\addcomma}} + +%% Style definition + +% {<bibstyle>} + +\newrobustcmd*{\RequireBibliographyStyle}[1]{% + \blx@inputonce{#1.bbx}{bibliography style '#1'}{}{}{} + {\blx@error + {Style '#1' not found} + {The bibliography style '#1' could not be found}}} +\@onlypreamble\RequireBibliographyStyle + +% {<code>} + +\newrobustcmd*{\InitializeBibliographyStyle}{\appto\blx@hook@bbxinit} +\@onlypreamble\InitializeBibliographyStyle + +% {<entry type>}{<driverdef>} + +\newrobustcmd*{\DeclareBibliographyDriver}[1]{% + \long\csdef{blx@bbx@#1}} +\@onlypreamble\DeclareBibliographyDriver + +% {<entry type>} + +\def\blx@driver#1{% + \ifcsdef{blx@bbx@#1} + {\csuse{blx@bbx@#1}} + {\ifcsdef{blx@bbx@*} + {\blx@warning{% + No driver for entry type '#1'.\MessageBreak + Using fallback driver}% + \csuse{blx@bbx@*}} + {\blx@error + {No driver found} + {I can't find a driver for the entry type + '\abx@field@entrytype'\MessageBreak + and there is no fallback driver either}}}} + +% {<type>}{<true>}{<false>} + +\def\blx@imc@ifdriver#1{\ifcsdef{blx@bbx@#1}} + +% {<alias>}{<type>} + +\newrobustcmd*{\DeclareBibliographyAlias}[2]{% + \csedef{blx@bbx@#1}{% + \expandafter\noexpand\csname blx@bbx@#2\endcsname}} +\@onlypreamble\DeclareBibliographyAlias + +% {<key>}[<value>]{<code>} + +\newrobustcmd*{\DeclareBibliographyOption}[1]{% + \@ifnextchar[%] + {\blx@defbibopt{#1}} + {\blx@defbibopt{#1}[]}} + +\long\def\blx@defbibopt#1[#2]#3{% + \ifcsundef{KV@blx@opt@ldt@#1} + {\ifcsundef{KV@blx@opt@pre@#1} + {\ifblank{#2} + {\define@key{blx@opt@pre}{#1}{#3}} + {\define@key{blx@opt@pre}{#1}[#2]{#3}}} + {\blx@err@optdef{#1}}} + {\blx@err@optdef{#1}}} + +% {<key>}[<value>]{<code>} + +\newrobustcmd*{\DeclareTypeOption}[1]{% + \@ifnextchar[%] + {\blx@deftypeopt{#1}} + {\blx@deftypeopt{#1}[]}} + +\long\def\blx@deftypeopt#1[#2]#3{% + \ifcsundef{KV@blx@opt@typ@#1} + {\ifblank{#2} + {\define@key{blx@opt@typ}{#1}{#3}} + {\define@key{blx@opt@typ}{#1}[#2]{#3}}} + {\blx@err@optdef{#1}}} + +% {<key>}[<value>]{<code>} + +\newrobustcmd*{\DeclareEntryOption}[1]{% + \@ifnextchar[%] + {\blx@defentryopt{#1}} + {\blx@defentryopt{#1}[]}} + +\long\def\blx@defentryopt#1[#2]#3{% + \ifcsundef{KV@blx@opt@ent@#1} + {\ifblank{#2} + {\define@key{blx@opt@ent}{#1}{#3}} + {\define@key{blx@opt@ent}{#1}[#2]{#3}}} + {\blx@err@optdef{#1}}} + +%% Auxiliary commands + +\newrobustcmd*{\citereset}{% + \csuse{blx@hook@cbxinit}% + \@ifstar + {} + {\global\cslet{blx@bsee@\the\c@refsection}\@empty + \global\cslet{blx@fsee@\the\c@refsection}\@empty + \blx@ibidreset@force + \blx@idemreset@force + \blx@opcitreset@force + \blx@loccitreset@force}} + +\def\blx@save#1{% + \ifcsdef{blx@saved@#1} + {} + {\blx@safe@actives + \csletcs{blx@saved@#1}{#1}% + \blx@rest@actives}} + +\def\blx@restore#1{% + \ifcsdef{blx@saved@#1} + {\blx@safe@actives + \csletcs{#1}{blx@saved@#1}% + \csundef{blx@saved@#1}% + \blx@rest@actives} + {}} + +\newrobustcmd*{\savecommand}[1]{% + \ifcsdef{blx@saved@cmd@\detokenize{#1}} + {} + {\cslet{blx@saved@cmd@\detokenize{#1}}{#1}}} + +\newrobustcmd*{\restorecommand}[1]{% + \ifcsdef{blx@saved@cmd@\detokenize{#1}} + {\letcs{#1}{blx@saved@cmd@\detokenize{#1}}% + \csundef{blx@saved@cmd@\detokenize{#1}}} + {}} + +% {<name>} + +\newrobustcmd*{\savebibmacro}[1]{% + \blx@save{abx@macro@\detokenize{#1}}} + +\newrobustcmd*{\restorebibmacro}[1]{% + \blx@restore{abx@macro@\detokenize{#1}}} + +% {<name>}[<args>][<optarg>]{<definition>} + +\newrobustcmd*{\newbibmacro}{% + \@star@or@long\blx@newbibmacro} + +\def\blx@newbibmacro#1{% + \ifcsundef{abx@macro@\detokenize{#1}} + {\blx@defbibmacro\new@command{#1}} + {\blx@warning{% + Macro '\detokenize{#1}' already defined.\MessageBreak + Using \string\renewbibmacro} + \blx@defbibmacro\renew@command{#1}}} + +\newrobustcmd*{\renewbibmacro}{% + \@star@or@long\blx@renewbibmacro} + +\def\blx@renewbibmacro#1{% + \ifcsundef{abx@macro@\detokenize{#1}} + {\blx@warning{% + Macro '\detokenize{#1}' undefined.\MessageBreak + Using \string\newbibmacro} + \blx@defbibmacro\new@command{#1}} + {\blx@defbibmacro\renew@command{#1}}} + +\newrobustcmd*{\providebibmacro}{% + \@star@or@long{\blx@defbibmacro\provide@command}} + +\def\blx@defbibmacro#1#2{% + \expandafter#1\csname abx@macro@\detokenize{#2}\endcsname} + +% {<name>} + +\newrobustcmd*{\usebibmacro}[1]{% + \ifcsundef{abx@macro@\detokenize{#1}} + {\blx@error + {Bibliography macro '\detokenize{#1}' undefined} + {Use '\string\newbibmacro' to define this macro}} + {\csuse{abx@macro@\detokenize{#1}}}} + +% {<field>} + +\def\blx@imc@thefield#1{\csuse{abx@field@#1}} + +\def\blx@imc@strfield#1{% + \ifcsdef{abx@field@#1} + {\detokenize\expandafter\expandafter\expandafter + {\csname abx@field@#1\endcsname}} + {}} + +% {<plainlist>} + +\def\blx@imc@thelist#1{\csuse{abx@list@#1}} + +% {<namelist>} + +\def\blx@imc@thename#1{\csuse{abx@name@#1}} + +% {<field>} + +\protected\def\blx@imc@clearfield#1{% + \csundef{abx@field@#1}} + +% {<plainlist>} + +\protected\def\blx@imc@clearlist#1{% + \ifcsundef{abx@list@#1} + {} + {\togglefalse{abx@bool@more#1}% + \csundef{abx@list@#1}% + \csname c@#1\endcsname\z@}} + +% {<namelist>} + +\protected\def\blx@imc@clearname#1{% + \ifcsundef{abx@name@#1} + {} + {\togglefalse{abx@bool@more#1}% + \csundef{abx@name@#1}% + \csname c@#1\endcsname\z@}} + +% {<field>}{<macro>} + +\protected\def\blx@imc@restorefield#1{\cslet{abx@field@#1}} + +% {<plainlist>}{<macro>} + +\protected\def\blx@imc@restorelist#1{\cslet{abx@list@#1}} + +% {<namelist>}{<macro>} + +\protected\def\blx@imc@restorename#1{\cslet{abx@name@#1}} + +% {<field>}{<macro>} + +\protected\def\blx@imc@savefield{% + \@ifstar{\blx@savedata{field}}{\global\blx@savedata{field}}} +\def\blx@savedata#1#2#3{\letcs#3{abx@#1@#2}} + +% {<plainlist>}{<macro>} + +\protected\def\blx@imc@savelist{% + \@ifstar{\blx@savedata{list}}{\global\blx@savedata{list}}} + +% {<namelist>}{<macro>} + +\protected\def\blx@imc@savename{% + \@ifstar{\blx@savedata{name}}{\global\blx@savedata{name}}} + +% {<field>}{<csname>} + +\protected\def\blx@imc@savefieldcs{% + \@ifstar{\blx@savedatacs{field}}{\global\blx@savedatacs{field}}} +\def\blx@savedatacs#1#2#3{\csletcs{#3}{abx@#1@#2}} + +% {<plainlist>}{<csname>} + +\protected\def\blx@imc@savelistcs{% + \@ifstar{\blx@savedatacs{list}}{\global\blx@savedatacs{list}}} + +% {<namelist>}{<csname>} + +\protected\def\blx@imc@savenamecs{% + \@ifstar{\blx@savedatacs{name}}{\global\blx@savedatacs{name}}} + +% {<field>}{<true>}{<false>} + +\def\blx@imc@iffieldundef#1{% + \ifcsundef{abx@field@#1}} + +% {<plainlist>}{<true>}{<false>} + +\def\blx@imc@iflistundef#1{% + \ifcsundef{abx@list@#1}} + +% {<namelist>}{<true>}{<false>} + +\def\blx@imc@ifnameundef#1{% + \ifcsundef{abx@name@#1}} + +% {<field1>}{<field2>}{<true>}{<false>} + +\def\blx@imc@iffieldsequal#1#2{% + \ifcsequal{abx@field@#1}{abx@field@#2}} + +% {<plainlist1>}{<plainlist2>}{<true>}{<false>} + +\def\blx@imc@iflistsequal#1#2{% + \ifcsequal{abx@list@#1}{abx@list@#2}} + +% {<namelist1>}{<namelist2>}{<true>}{<false>} + +\def\blx@imc@ifnamesequal#1#2{% + \ifcsundef{abx@name@#1} + {\@secondoftwo} + {\ifcsundef{abx@name@#2} + {\@secondoftwo} + {\blx@ifnamesequal{#1}{#2}}}} + +\def\blx@ifnamesequal#1#2{% + \begingroup + \let\blx@tempa\@empty + \expandafter\expandafter + \expandafter\blx@ifnamesequal@i\csname abx@name@#2\endcsname + \let\blx@tempb\blx@tempa + \let\blx@tempa\@empty + \expandafter\expandafter + \expandafter\blx@ifnamesequal@i\csname abx@name@#1\endcsname + \expandafter\endgroup + \ifx\blx@tempa\blx@tempb + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi} + +\def\blx@ifnamesequal@i#1#2{% + \expandafter\blx@ifnamesequal@ii#2{}&} + +\def\blx@ifnamesequal@ii#1{% + \ifblank{#1} + {\blx@namebreak} + {\blx@ifnamesequal@iii#1% + \blx@ifnamesequal@ii}} + +\def\blx@ifnamesequal@iii#1#2#3#4#5#6#7#8#9{% + \setkeys{blx@opt@name}{#1}% + \ifdef\abx@field@hash + {\eappto\blx@tempa{{\abx@field@hash}}} + {\appto\blx@tempa{{{#2}{#4}{#6}{#8}}}}} + +% {<field>}{<macro>}{<true>}{<false>} + +\def\blx@imc@iffieldequals#1#2{% + \blx@imc@iffieldundef{#1} + {\@secondoftwo} + {\ifundef#2% + {\@secondoftwo} + {\expandafter\ifx\csname abx@field@#1\endcsname#2% + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi}}} + +% {<plainlist>}{<macro>}{<true>}{<false>} + +\def\blx@imc@iflistequals#1#2{% + \blx@imc@iflistundef{#1} + {\@secondoftwo} + {\ifundef#2% + {\@secondoftwo} + {\expandafter\ifx\csname abx@list@#1\endcsname#2% + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi}}} + +% {<namelist>}{<macro>}{<true>}{<false>} + +\def\blx@imc@ifnameequals#1#2{% FIXME + \blx@imc@ifnameundef{#1} + {\@secondoftwo} + {\ifundef#2% + {\@secondoftwo} + {\expandafter\ifx\csname abx@name@#1\endcsname#2% + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi}}} + +% {<field>}{<csname>}{<true>}{<false>} + +\def\blx@imc@iffieldequalcs#1{% + \ifcsequal{abx@field@#1}} + +% {<plainlist>}{<csname>}{<true>}{<false>} + +\def\blx@imc@iflistequalcs#1{% + \ifcsequal{abx@list@#1}} + +% {<namelist>}{<csname>}{<true>}{<false>} + +\def\blx@imc@ifnameequalcs#1{% FIXME + \ifcsequal{abx@name@#1}} + +% {<field>}{<string>}{<true>}{<false>} + +\protected\long\def\blx@imc@iffieldequalstr#1#2{% + \blx@imc@iffieldundef{#1} + {\@secondoftwo} + {\expandafter\expandafter\expandafter\ifstrequal + \expandafter\expandafter\expandafter{% + \csname abx@field@#1\endcsname}{#2}}} + +% {<field>}{<true>}{<false>} + +\protected\def\blx@imc@iffieldxref#1{% + \blx@imc@iffieldundef{#1} + {\@secondoftwo} + {\blx@whichxref + {\blx@iffieldxref{#1}} + {\@secondoftwo}}} + +\def\blx@iffieldxref#1#2{% + \begingroup + \letcs\blx@tempa{abx@field@#2}% + \letcs\blx@tempb{abx@field@#1}% + \csundef{abx@field@#1}% + \blx@getdata{\blx@tempa}% + \blx@imc@iffieldequals{#1}\blx@tempb + {\aftergroup\@firstoftwo} + {\aftergroup\@secondoftwo}% + \endgroup} + +\def\blx@whichxref#1#2{% + \blx@imc@iffieldundef{crossref} + {\blx@imc@iffieldundef{xref} + {#2} + {#1{xref}}} + {#1{crossref}}} + +% {<plainlist>}{<true>}{<false>} + +\protected\def\blx@imc@iflistxref#1{% + \blx@imc@iflistundef{#1} + {\@secondoftwo} + {\blx@whichxref + {\blx@iflistxref{#1}} + {\@secondoftwo}}} + +\def\blx@iflistxref#1#2{% + \begingroup + \letcs\blx@tempa{abx@field@#2}% + \letcs\blx@tempb{abx@list@#1}% + \csundef{abx@list@#1}% + \blx@getdata{\blx@tempa}% + \blx@imc@iflistequals{#1}\blx@tempb + {\aftergroup\@firstoftwo} + {\aftergroup\@secondoftwo}% + \endgroup} + +% {<namelist>}{<true>}{<false>} + +\protected\def\blx@imc@ifnamexref#1{% + \blx@imc@ifnameundef{#1} + {\@secondoftwo} + {\blx@whichxref + {\blx@ifnamexref{#1}} + {\@secondoftwo}}} + +\def\blx@ifnamexref#1#2{% + \begingroup + \letcs\blx@tempa{abx@field@#2}% + \letcs\blx@tempb{abx@name@#1}% + \csundef{abx@name@#1}% + \blx@getdata{\blx@tempa}% + \blx@imc@ifnameequals{#1}\blx@tempb + {\aftergroup\@firstoftwo} + {\aftergroup\@secondoftwo}% + \endgroup} + +% {<string>}{<true>}{<false>} + +\protected\def\blx@imc@ifcurrentfield#1{% + \begingroup + \def\blx@tempa{#1}% + \ifx\currentfield\blx@tempa + \aftergroup\@firstoftwo + \else + \aftergroup\@secondoftwo + \fi + \endgroup} + +% {<string>}{<true>}{<false>} + +\protected\def\blx@imc@ifcurrentlist#1{% + \begingroup + \def\blx@tempa{#1}% + \ifx\currentlist\blx@tempa + \aftergroup\@firstoftwo + \else + \aftergroup\@secondoftwo + \fi + \endgroup} + +% {<string>}{<true>}{<false>} + +\protected\def\blx@imc@ifcurrentname#1{% + \begingroup + \def\blx@tempa{#1}% + \ifx\currentname\blx@tempa + \aftergroup\@firstoftwo + \else + \aftergroup\@secondoftwo + \fi + \endgroup} + +% {<string>}{<true>}{<false>} + +\protected\def\blx@imc@ifentrytype#1{% + \begingroup + \def\blx@tempa{#1}% + \ifx\abx@field@entrytype\blx@tempa + \aftergroup\@firstoftwo + \else + \aftergroup\@secondoftwo + \fi + \endgroup} + +% {<true>}{<false>} + +\def\blx@imc@ifmorenames{% + \ifundef\currentname + {\@secondoftwo} + {\iftoggle{abx@bool@more\currentname} + {\@firstoftwo} + {\ifnum\c@listtotal>\c@liststop + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi}}} + +% {<true>}{<false>} + +\def\blx@imc@ifmoreitems{% + \ifundef\currentlist + {\@secondoftwo} + {\iftoggle{abx@bool@more\currentlist} + {\@firstoftwo} + {\ifnum\c@listtotal>\c@liststop + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi}}} + +% {<category>}{<true>}{<false>} + +\protected\def\blx@imc@ifcategory{% + \ifdef\abx@field@entrykey + {\blx@imc@ifentrycategory\abx@field@entrykey} + {\expandafter\@secondoftwo\@gobble}} + +% {<entrykey>}{<category>}{<true>}{<false>} + +\protected\def\blx@imc@ifentrycategory{% + \blx@xsanitizeafter\blx@imc@ifentrycategory@i} + +\def\blx@imc@ifentrycategory@i#1#2{% + \ifcsdef{blx@catg@\detokenize{#2}} + {\ifinlistcs{#1}{blx@catg@\detokenize{#2}}} + {\@secondoftwo}} + +% {<keyword>}{<true>}{<false>} + +\protected\def\blx@imc@ifkeyword{% + \ifdef\abx@field@entrykey + {\blx@imc@ifentrykeyword\abx@field@entrykey} + {\expandafter\@secondoftwo\@gobble}} + +% {<entrykey>}{<keyword>}{<true>}{<false>} + +\protected\def\blx@imc@ifentrykeyword{% + \blx@xsanitizeafter\blx@imc@ifentrykeyword@i} + +\def\blx@imc@ifentrykeyword@i#1#2{% + \ifcsdef{blx@keyw@\the\c@refsection @\detokenize{#2}} + {\ifinlistcs{#1}{blx@keyw@\the\c@refsection @\detokenize{#2}}} + {\@secondoftwo}} + +% {<true>}{<false>} + +\protected\def\blx@ifciteseen@global{% + \ifdef\abx@field@entrykey + {\expandafter\blx@ifseen@global + \expandafter{\abx@field@entrykey}} + {\@secondoftwo}} + +\protected\def\blx@ifciteseen@context{% + \ifdef\abx@field@entrykey + {\expandafter\blx@ifseen@context + \expandafter{\abx@field@entrykey}} + {\@secondoftwo}} + +% {<entrykey>}{<true>}{<false>} + +\protected\def\blx@ifentryseen@global{% + \blx@xsanitizeafter\blx@ifseen@global} + +\protected\def\blx@ifentryseen@context{% + \blx@xsanitizeafter\blx@ifseen@context} + +\def\blx@ifseen@global#1{% + \ifinlistcs{#1}{blx@bsee@\the\c@refsection}} + +\def\blx@ifseen@context#1{% + \iftoggle{blx@footnote} + {\ifinlistcs{#1}{blx@fsee@\the\c@refsection}} + {\ifinlistcs{#1}{blx@bsee@\the\c@refsection}}} + +% {<true>}{<false>} + +\def\blx@ifciteibid@global{% + \blx@imc@iffieldequals{entrykey}\blx@lastkey@text} + +\def\blx@ifciteibid@context{% + \iftoggle{blx@footnote} + {\blx@imc@iffieldequals{entrykey}\blx@lastkey@foot} + {\blx@imc@iffieldequals{entrykey}\blx@lastkey@text}} + +\def\blx@ifciteibid@strict{% + \blx@ifcitesingle + {\blx@ifciteibid@global} + {\@secondoftwo}}% + +\def\blx@ifciteibid@constrict{% + \blx@ifcitesingle + {\iftoggle{blx@footnote} + {\blx@ifmpfncheck + {\blx@imc@iffieldequals{entrykey}\blx@lastkey@foot} + {\@secondoftwo}} + {\blx@imc@iffieldequals{entrykey}\blx@lastkey@text}} + {\@secondoftwo}}% + +% {<true>}{<false>} + +\def\blx@ifciteidem@global{% + \blx@imc@iffieldequals{fullhash}\blx@lasthash@text} + +\def\blx@ifciteidem@context{% + \iftoggle{blx@footnote} + {\blx@imc@iffieldequals{fullhash}\blx@lasthash@foot} + {\blx@imc@iffieldequals{fullhash}\blx@lasthash@text}} + +\let\blx@ifciteidem@strict\blx@ifciteidem@global + +\def\blx@ifciteidem@constrict{% + \iftoggle{blx@footnote} + {\blx@ifmpfncheck + {\blx@imc@iffieldequals{fullhash}\blx@lasthash@foot} + {\@secondoftwo}} + {\blx@imc@iffieldequals{fullhash}\blx@lasthash@text}} + +% {<true>}{<false>} + +\def\blx@ifopcit@global{% + \blx@imc@iffieldundef{namehash} + {\@secondoftwo} + {\blx@imc@iffieldequalcs{entrykey}{blx@lastkey@text@\abx@field@namehash}}} + +\def\blx@ifopcit@context{% + \blx@imc@iffieldundef{namehash} + {\@secondoftwo} + {\iftoggle{blx@footnote} + {\blx@imc@iffieldequalcs{entrykey}{blx@lastkey@foot@\abx@field@namehash}} + {\blx@imc@iffieldequalcs{entrykey}{blx@lastkey@text@\abx@field@namehash}}}} + +\def\blx@ifopcit@strict{% + \blx@ifcitesingle + {\blx@ifopcit@global} + {\@secondoftwo}}% + +\def\blx@ifopcit@constrict{% + \blx@ifcitesingle + {\blx@imc@iffieldundef{namehash} + {\@secondoftwo} + {\iftoggle{blx@footnote} + {\blx@ifmpfncheck + {\blx@imc@iffieldequalcs{entrykey}{blx@lastkey@foot@\abx@field@namehash}} + {\@secondoftwo}} + {\blx@imc@iffieldequalcs{entrykey}{blx@lastkey@text@\abx@field@namehash}}}} + {\@secondoftwo}}% + +% {<true>}{<false>} + +\def\blx@ifloccit@global{% + \blx@loccit@check{text}} + +\def\blx@ifloccit@context{% + \iftoggle{blx@footnote} + {\blx@loccit@check{foot}} + {\blx@loccit@check{text}}} + +\def\blx@ifloccit@strict{% + \blx@ifcitesingle + {\blx@loccit@numcheck{text}} + {\@secondoftwo}}% + +\def\blx@ifloccit@constrict{% + \blx@ifcitesingle + {\iftoggle{blx@footnote} + {\blx@ifmpfncheck + {\blx@loccit@numcheck{foot}} + {\@secondoftwo}} + {\blx@loccit@numcheck{text}}} + {\@secondoftwo}} + +\def\blx@loccit@check#1{% + \blx@imc@iffieldundef{postnote} + {\@secondoftwo} + {\blx@imc@iffieldequalcs{postnote}{blx@lastnote@#1@\abx@field@entrykey}}} + +\def\blx@loccit@numcheck#1{% + \blx@imc@iffieldundef{postnote} + {\@secondoftwo} + {\expandafter\blx@imc@ifpages + \expandafter{\abx@field@postnote} + {\blx@imc@iffieldequalcs{postnote}{blx@lastnote@#1@\abx@field@entrykey}} + {\@secondoftwo}}} + +% {<true>}{<false>} + +\def\blx@ifmpfncheck{% + \ifnum\numexpr\value\@mpfn-\blx@lastmpfn<\tw@ + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi} + +\def\blx@mpfnsave{% + \xdef\blx@lastmpfn{\the\value\@mpfn}} + +\def\blx@mpfnreset{% + \global\let\blx@lastmpfn\z@} + +\blx@mpfnreset + +% {<true>}{<false>} + +\def\blx@imc@iffirstonpage{% + \iftoggle{blx@footnote} + {\blx@iffirstonpage{fnpage}} + {\blx@iffirstonpage{page}}} + +\def\blx@iffirstonpage#1{% + \ifcsundef{blx@#1@\number\c@instcount} + {\@secondoftwo} + {\expandafter\blx@iffirstonpage@i + \expandafter{\number\numexpr\c@instcount-1}{#1}}} + +\def\blx@iffirstonpage@i#1#2{% + \ifcsundef{blx@#2@#1} + {\ifnum#1>\@ne + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {\expandafter\blx@iffirstonpage@i + \expandafter{\number\numexpr#1-1}{#2}} + {\@firstoftwo}} + {\ifnum\csuse{blx@#2@\number\c@instcount}=% + \csuse{blx@#2@#1} % + \expandafter\@secondoftwo + \else + \expandafter\@firstoftwo + \fi}} + +% {<count1>}{<count2>}{<true>}{<false>} + +\def\blx@imc@ifsamepage#1#2{% + \ifcsundef{blx@page@\number\numexpr#1} + {\ifcsundef{blx@fnpage@\number\numexpr#1} + {\@secondoftwo} + {\blx@ifsamepage{#1}{#2}{fnpage}}} + {\blx@ifsamepage{#1}{#2}{page}}} + +\def\blx@ifsamepage#1#2#3{% + \ifcsundef{blx@page@\number\numexpr#2} + {\ifcsundef{blx@fnpage@\number\numexpr#2} + {\@secondoftwo} + {\blx@ifsamepage@i{#1}{#2}{#3}{fnpage}}} + {\blx@ifsamepage@i{#1}{#2}{#3}{page}}} + +\def\blx@ifsamepage@i#1#2#3#4{% + \ifnum\csuse{blx@#3@\number\numexpr#1}=% + \csuse{blx@#4@\number\numexpr#2} % + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi} + +% {<string>}{<true>}{<false>} + +\protected\long\def\blx@imc@ifinteger#1{% + \begingroup + \def\do##1{\uccode`##1=`\%}% + \do\0\do\1\do\2\do\3\do\4\do\5\do\6\do\7\do\8\do\9% + \makeatletter + \catcode`\%=9 + \endlinechar\m@ne + \uppercase{\scantokens{\def\blx@tempa{#1}}}% + \ifx\blx@tempa\@empty + \aftergroup\@firstoftwo + \else + \aftergroup\@secondoftwo + \fi + \endgroup} + +% {<field>}{<true>}{<false>} + +\protected\def\blx@imc@iffieldint#1{% + \blx@imc@iffieldundef{#1} + {\@secondoftwo} + {\expandafter\expandafter + \expandafter\ifinteger + \expandafter\expandafter + \expandafter{\csname abx@field@#1\endcsname}}} + +% {<string>}{<true>}{<false>} + +\protected\def\blx@imc@ifnumeral{% + \blx@ifnum\blx@hook@ifnum} + +\protected\def\blx@imc@ifnumerals{% + \blx@ifnum\blx@hook@ifnums} + +\protected\def\blx@imc@ifpages{% + \blx@ifnum\blx@hook@ifpages} + +\long\def\blx@ifnum#1#2{% + \begingroup + \let\protect\@unexpandable@protect + \uppercase{\edef\blx@tempa{#2}}% + \ifx\blx@tempa\@empty + \aftergroup\@secondoftwo + \else + \makeatletter + \catcode`\%=9 + \endlinechar\m@ne + \everyeof{\noexpand}#1% + \uppercase{\edef\blx@tempa{\scantokens{#2}}}% + \ifx\blx@tempa\@empty + \aftergroup\@firstoftwo + \else + \aftergroup\@secondoftwo + \fi + \fi + \endgroup} + +\def\blx@hook@ifnum{% + \def\do##1{\uccode`##1=`\%}% + \do\ \do\0\do\1\do\2\do\3\do\4\do\5\do\6\do\7\do\8\do\9% + \do\i\do\v\do\x\do\l\do\c\do\d\do\m + \do\I\do\V\do\X\do\L\do\C\do\D\do\M + \blx@donumchars + \let\RN\@firstofone + \let\Rn\@firstofone} + +\def\blx@hook@ifnums{% + \blx@hook@ifnum + \def\do##1{\uccode`##1=`\%}% + \blx@dorangechars + \def\do##1{\let##1\@empty}% + \blx@dorangecmds} + +\def\blx@hook@ifpages{% + \blx@hook@ifnum + \blx@hook@ifnums + \def\do##1{\let##1\@empty}% + \blx@dopagecmds} + +% {<field>}{<true>}{<false>} + +\protected\def\blx@imc@iffieldnum#1{% + \blx@imc@iffieldundef{#1} + {\@secondoftwo} + {\expandafter\expandafter + \expandafter\blx@imc@ifnumeral + \expandafter\expandafter + \expandafter{\csname abx@field@#1\endcsname}}} + +\protected\def\blx@imc@iffieldnums#1{% + \blx@imc@iffieldundef{#1} + {\@secondoftwo} + {\expandafter\expandafter + \expandafter\blx@imc@ifnumerals + \expandafter\expandafter + \expandafter{\csname abx@field@#1\endcsname}}} + +\protected\def\blx@imc@iffieldpages#1{% + \blx@imc@iffieldundef{#1} + {\@secondoftwo} + {\expandafter\expandafter + \expandafter\blx@imc@ifpages + \expandafter\expandafter + \expandafter{\csname abx@field@#1\endcsname}}} + +% {<chars>} + +\newrobustcmd*{\DeclareNumChars}{% + \@ifstar + {\blx@defnumchars} + {\global\let\blx@donumchars\@empty + \blx@defnumchars}} + +\def\blx@defnumchars#1{% + \ifblank{#1} + {} + {\expandafter\blx@defdochars + \expandafter\blx@donumchars + \detokenize{#1}\relax}} + +% {<chars>} + +\newrobustcmd*{\DeclareRangeChars}{% + \@ifstar + {\blx@defrangechars} + {\global\let\blx@dorangechars\@empty + \blx@defrangechars}} + +\def\blx@defrangechars#1{% + \ifblank{#1} + {} + {\expandafter\blx@defdochars + \expandafter\blx@dorangechars + \detokenize{#1}\relax}} + +\def\blx@defdochars#1#2{% + \ifx#2\relax + \else + \xdef#1{% + \expandonce#1\noexpand\do + \expandafter\noexpand\csname#2\endcsname}% + \expandafter\blx@defdochars + \expandafter#1% + \fi} + +% {<cstokens>} + +\newrobustcmd*{\DeclareRangeCommands}{% + \@ifstar + {\blx@defrangecmds} + {\global\let\blx@dorangecmds\@empty + \blx@defrangecmds}} + +\def\blx@defrangecmds#1{% + \ifblank{#1} + {} + {\blx@defrangecmds@i#1&}} + +\def\blx@defrangecmds@i#1{% + \ifx% + \else + \gappto\blx@dorangecmds{\do#1}% + \expandafter\blx@defrangecmds@i + \fi} + +% {<cstokens>} + +\newrobustcmd*{\DeclarePageCommands}{% + \@ifstar + {\blx@defpagecmds} + {\global\let\blx@dopagecmds\@empty + \blx@defpagecmds}} + +\def\blx@defpagecmds#1{% + \ifblank{#1} + {} + {\blx@defpagecmds@i#1&}} + +\def\blx@defpagecmds@i#1{% + \ifx% + \else + \gappto\blx@dopagecmds{\do#1}% + \expandafter\blx@defpagecmds@i + \fi} + +\DeclareNumChars{.} +\DeclareRangeChars{~,;-+/} +\DeclareRangeCommands{% + \ \,\space\nobreakspace\addspace\addnbspace + \addthinspace\addnbthinspace\addlowpenspace + \addhighpenspace\addlpthinspace\addhpthinspace + \adddotspace\addabbrvspace\&\psq\psqq + \bibrangedash\bibdatedash\textendash\textemdash\bibrangessep} +\DeclarePageCommands{\pno\ppno} + +% *{<code>} + +\newrobustcmd*{\NumCheckSetup}{\appto\blx@hook@ifnum} +\newcommand*{\NumcheckSetup}{\NumCheckSetup} + +% [<pagination>][<postpro>]{<string>} + +\newrobustcmd*{\blx@imc@mkpageprefix}[1][pagination]{% + \begingroup + \def\blx@tempa{\blx@mkpageprefix{page}}% + \iffieldundef{#1} + {} + {\iffieldequalstr{#1}{none} + {\def\blx@tempa{\blx@mkpageprefix@i}} + {\iffieldbibstring{#1} + {\edef\blx@tempa{\blx@mkpageprefix{\thefield{#1}}}} + {\blx@warning@entry{% + Unknown pagination type '\strfield{#1}'}}}}% + \@ifnextchar[%] + {\blx@tempa} + {\blx@tempa[\@firstofone]}} + +\protected\long\def\blx@mkpageprefix#1[#2]#3{% + \ifnumeral{#3} + {\bibstring{#1}\ppspace} + {\ifnumerals{#3} + {\bibstring{#1s}\ppspace} + {\def\pno{\bibstring{#1}}% + \def\ppno{\bibstring{#1s}}}}% + \blx@mkpageprefix@i[#2]{#3}} + +\long\def\blx@mkpageprefix@i[#1]#2{#1{#2}\endgroup} + +% [<pagination>][<postpro>]{<string>} + +\newrobustcmd*{\blx@imc@mkpagetotal}[1][bookpagination]{% + \begingroup + \def\blx@tempa{\blx@mkpagetotal{page}}% + \iffieldundef{#1} + {} + {\iffieldequalstr{#1}{none} + {\def\blx@tempa{\blx@mkpagetotal@i}} + {\iffieldbibstring{#1} + {\edef\blx@tempa{\blx@mkpagetotal{\thefield{#1}}}} + {\blx@warning@entry{% + Unknown pagination type '\strfield{#1}'}}}}% + \@ifnextchar[%] + {\blx@tempa} + {\blx@tempa[\@firstofone]}} + +\protected\long\def\blx@mkpagetotal#1[#2]#3{% + \ifnumeral{#3} + {\setbox\@tempboxa=\hbox{% + \blx@tempcnta0#3\relax + \ifnum\blx@tempcnta=\@ne + \aftergroup\@firstoftwo + \else + \aftergroup\@secondoftwo + \fi}% + {#2{#3}\ppspace\bibstring{#1}} + {#2{#3}\ppspace\bibstring{#1s}}} + {\def\pno{\bibstring{#1}}% + \def\ppno{\bibstring{#1s}}% + #2{#3}}% + \endgroup} + +\long\def\blx@mkpagetotal@i[#1]#2{#1{#2}\endgroup} + +\newcounter{mincomprange} +\newcounter{maxcomprange} +\newcounter{mincompwidth} +\setcounter{mincomprange}{10} +\setcounter{maxcomprange}{100000} +\setcounter{mincompwidth}{1} +\def\abx@rangeproclimit{100000} + +% <*>[<postpro>]{<string>} + +\newrobustcmd*{\mkcomprange}{% + \begingroup + \@ifstar + {\blx@comprange\blx@comprange@ii} + {\blx@comprange\blx@comprange@i}} + +\def\blx@comprange#1{% + \@ifnextchar[{#1}{#1[\@firstofone]}} + +\def\blx@comprange@i[#1]#2{% + \let\blx@tempa\@empty + \protected\def\blx@range@out@value{\appto\blx@tempa}% + \let\blx@range@out@delim\blx@range@out@value + \let\blx@range@split\blx@comprange@split + \blx@range@chunk{#2}% + \edef\blx@tempa{\endgroup + \unexpanded{#1}{\expandonce\blx@tempa}}% + \blx@tempa} + +\def\blx@comprange@ii[#1]#2{% + \protected\def\blx@range@out@value{#1}% + \let\blx@range@out@delim\@firstofone + \let\blx@range@split\blx@comprange@split + \blx@range@chunk{#2}% + \endgroup} + +\def\blx@comprange@split#1{% + \def\blx@comprange@abort{\blx@range@out@value{#1}}% + \blx@imc@ifpages{#1} + {\blx@comprange@range#1\bibrangedash\bibrangedash&} + {\blx@comprange@abort}} + +\def\blx@comprange@range#1\bibrangedash#2\bibrangedash#3&{% + \ifblank{#3} + {\blx@comprange@hyphen#1--&} + {\ifblank{#2} + {\blx@range@out@value{#1\bibrangedash}} + {\ifblank{#1} + {\blx@range@out@value{\bibrangedash#2}} + {\blx@comprange@check{#1}{#2}}}}} + +\def\blx@comprange@hyphen#1-#2-#3&{% + \ifblank{#3} + {\blx@comprange@abort} + {\ifblank{#2} + {\ifblank{#1} + {\let\blx@tempb\@empty} + {\def\blx@tempb{#1}}% + \blx@comprange@hyphen@i#3&} + {\ifblank{#1} + {\blx@range@out@value{\bibrangedash#2}} + {\blx@comprange@check{#1}{#2}}}}} + +\def\blx@comprange@hyphen@i#1-#2&{% + \ifblank{#1#2} + {\expandafter\blx@range@out@value + \expandafter{\blx@tempb\bibrangedash}} + {\notblank{#1} + {\ifdefempty\blx@tempb + {\blx@range@out@value{\bibrangedash#1}} + {\expandafter\blx@comprange@check + \expandafter{\blx@tempb}{#1}}} + {\blx@comprange@hyphen@i#2&}}} + +\def\blx@comprange@check#1#2{% + \blx@imc@ifinteger{#1} + {\blx@imc@ifinteger{#2} + {\blx@comprange@comp{#1}{#2}} + {\blx@range@out@value{#1\bibrangedash#2}}} + {\blx@range@out@value{#1\bibrangedash#2}}} + +\def\blx@comprange@comp#1#2{% + \def\blx@tempb{#1}% + \def\blx@tempc{#2}% + \let\blx@tempd\blx@tempc + \ifnum\c@maxcomprange<\abx@rangeproclimit\relax + \numdef\blx@tempe\abx@rangeproclimit + \else + \numdef\blx@tempe\c@maxcomprange + \fi + \blx@tempcntc=\blx@tempe\relax + \ifnum + \ifnum\c@mincompwidth<1\space1\fi + \ifnum\c@maxcomprange<10\space1\fi + \ifnum\c@mincomprange<\blx@tempb\space\else1\fi + \ifnum\blx@tempb<\numexpr\blx@tempcntc*10\relax\else1\fi + 0=\z@ + \expandafter\blx@comprange@comp@div + \else + \expandafter\blx@comprange@end + \fi} + +\def\blx@comprange@end{% + \numdef\blx@tempb\blx@tempb + \ifnum\blx@tempe>\c@maxcomprange\relax + \numdef\blx@tempc\blx@tempc + \else + \numdef\blx@tempc\blx@tempd + \fi + \edef\blx@tempb{\blx@range@out@value{\blx@tempb\noexpand\bibrangedash\blx@tempc}}% + \blx@tempb} + +\def\blx@comprange@comp@div{% + \unless\ifnum\blx@tempb<\blx@tempcntc + \blx@tempcnta\blx@tempb\relax + \blx@tempcntb\blx@tempc\relax + \divide\blx@tempcnta\blx@tempcntc + \divide\blx@tempcntb\blx@tempcntc + \ifnum\blx@tempcnta=\blx@tempcntb + \edef\blx@tempd{\expandafter\@gobble\blx@tempd}% + \numdef\blx@tempe\blx@tempcntc + \fi + \fi + \divide\blx@tempcntc10\relax + \ifnum + \ifnum\blx@tempcntc<10 1\fi + \ifnum\blx@tempcntc>\c@mincompwidth\else 1\fi + 0=\z@ + \expandafter\blx@comprange@comp@div + \else + \expandafter\blx@comprange@end + \fi} + +\def\blx@range@chunk#1{% + \blx@range@chunk@sep#1\bibrangessep&} + +\def\blx@range@chunk@sep#1\bibrangessep#2&{% + \notblank{#1} + {\expandafter\blx@range@split + \expandafter{\@firstofone#1}} + {}% + \notblank{#2} + {\notblank{#1}{\blx@range@out@delim{\bibrangessep}}{}% + \blx@range@chunk@sep#2&} + {}} + +% <*>[<postpro>]{<string>} + +\newrobustcmd*{\mkfirstpage}{% + \begingroup + \@ifstar + {\blx@firstpage\blx@firstpage@ii} + {\blx@firstpage\blx@firstpage@i}} + +\def\blx@firstpage#1{% + \@ifnextchar[{#1}{#1[\@firstofone]}} + +\def\blx@firstpage@i[#1]#2{% + \let\blx@tempa\@empty + \protected\def\blx@range@out@value{\appto\blx@tempa}% + \let\blx@range@out@delim\blx@range@out@value + \let\blx@range@split\blx@firstpage@split + \blx@range@chunk{#2}% + \edef\blx@tempa{\endgroup + \unexpanded{#1}{\expandonce\blx@tempa}}% + \blx@tempa} + +\def\blx@firstpage@ii[#1]#2{% + \protected\def\blx@range@out@value{#1}% + \let\blx@range@out@delim\@firstofone + \let\blx@range@split\blx@firstpage@split + \blx@range@chunk{#2}% + \endgroup} + +\def\blx@firstpage@split#1{% + \def\blx@firstpage@abort{\blx@range@out@value{#1}}% + \blx@firstpage@range#1\bibrangedash\bibrangedash&} + +\def\blx@firstpage@range#1\bibrangedash#2\bibrangedash#3&{% + \ifblank{#3} + {\blx@firstpage@hyphen#1--&} + {\ifblank{#1} + {\blx@range@out@value{\bibrangedash#2}} + {\blx@range@out@value{#1}}}} + +\def\blx@firstpage@hyphen#1-#2-#3&{% + \ifblank{#3} + {\blx@firstpage@abort} + {\ifblank{#1} + {\ifblank{#2} + {\blx@firstpage@hyphen@i#3&} + {\blx@range@out@value{\bibrangedash#2}}} + {\blx@range@out@value{#1}}}} + +\def\blx@firstpage@hyphen@i#1-#2&{% + \ifblank{#1} + {\ifblank{#2} + {\blx@firstpage@abort} + {\blx@firstpage@hyphen@i#2&}} + {\blx@range@out@value{\bibrangedash#1}}} + +\newcommand*{\ppspace}{\addnbspace} +\newcommand*{\sqspace}{\addnbspace} + +\newrobustcmd*{\RN}[1]{% + \begingroup + \expandafter\RNfont + \expandafter{\romannumeral#1}% + \endgroup} +\newrobustcmd*{\Rn}[1]{% + \begingroup + \expandafter\Rnfont + \expandafter{\romannumeral#1}% + \endgroup} + +\newcommand*{\RNfont}{\uppercase} +\newcommand*{\Rnfont}{} + +% {<init>}{<entrytype>} + +\protected\def\blx@imc@usedriver#1#2{% + \begingroup + \let\finentry\blx@finentry@usedrv + \let\newblock\relax + \let\abx@macro@bibindex\@empty + \let\abx@macro@pageref\@empty + \csuse{blx@hook@bbxinit}#1% + \blx@beglang + \blx@driver{#2}% + \blx@endlang + \endgroup} + +% Punctuation + +\protected\def\blx@initunit{% + \global\togglefalse{blx@block}% + \global\togglefalse{blx@unit}% + \global\togglefalse{blx@insert}% + \global\togglefalse{blx@lastins}% + \global\let\blx@unitpunct\newunitpunct + \blx@imc@resetpunctfont} + +\def\blx@begunit{% + \toggletrue{blx@tempa}% + \iftoggle{blx@insert} + {\iftoggle{blx@unit} + {\begingroup + \let\blx@begunit\@empty + \let\blx@endunit\@empty + \let\blx@endnounit\@empty + \blx@unitpunct\blx@postpunct + \endgroup + \global\togglefalse{blx@unit}% + \togglefalse{blx@tempa}} + {\blx@postpunct}% + \iftoggle{blx@block} + {\begingroup + \let\blx@begunit\@empty + \let\blx@endunit\@empty + \let\blx@endnounit\@empty + \newblockpunct + \endgroup + \global\togglefalse{blx@block}% + \togglefalse{blx@tempa}} + {}} + {}% + \blx@postpunct + \blx@imc@resetpunctfont + \iftoggle{blx@tempa} + {} + {\global\togglefalse{blx@insert}}% + \blx@leavevmode + \begingroup} + +\def\blx@endunit{% + \endgroup + \global\toggletrue{blx@insert}% + \global\toggletrue{blx@lastins}} + +\def\blx@nounit{% + \global\togglefalse{blx@lastins}} + +\def\blx@endnounit{% + \endgroup\blx@nounit} + +\protected\def\blx@imc@newblock{% + \global\toggletrue{blx@block}}% + +\protected\def\blx@imc@newunit{% + \global\let\blx@unitpunct\newunitpunct + \global\toggletrue{blx@unit}}% + +\protected\def\blx@imc@setunit{% + \@ifstar\blx@setunit@i\blx@setunit} + +\long\def\blx@setunit#1{% + \long\gdef\blx@unitpunct{#1}% + \global\toggletrue{blx@unit}}% + +\def\blx@setunit@i{% + \iftoggle{blx@lastins} + {\blx@setunit} + {\@gobble}} + +\protected\def\blx@imc@finentry{% + \unspace\finentrypunct + \blx@postpunct + \blx@initunit} + +\protected\def\blx@finentry@usedrv{% + \unspace\blx@initunit +} + +\protected\def\blx@finentry@inset{% + \blx@setunit\entrysetpunct + \global\toggletrue{blx@block}} + +\blx@regimcs{% + \ifdriver \thefield \strfield \thelist \thename \clearfield \clearlist + \clearname \restorefield \restorelist \restorename + \ifcategory \ifentrycategory \ifkeyword \ifentrykeyword + \ifciteseen \ifentryseen \ifciteibid \ifciteidem \ifopcit \ifloccit + \ifcurrentfield \ifcurrentlist \ifcurrentname \ifentrytype + \iffieldequalcs \iffieldequals \iffieldequalstr \iffieldsequal + \iffieldundef \iffieldxref \iflistequalcs \iflistequals + \iflistsequal \iflistundef \iflistxref \ifmorenames \ifmoreitems + \ifnameequalcs \ifnameequals \ifnamesequal \ifnameundef \ifnamexref + \iffirstonpage \ifsamepage \savefield \savefieldcs \savelist + \savelistcs \savename \savenamecs \usedriver + \ifinteger \ifnumeral \ifnumerals \ifpages + \iffieldint \iffieldnum \iffieldnums \iffieldpages + \mkpageprefix \mkpagetotal \mkpagefirst + \newblock \newunit \setunit \finentry} + +\appto\blx@blxinit{% + \def\ifnatbibmode{\iftoggle{blx@natbib}}% + \def\ifcitation{\iftoggle{blx@citation}}% + \def\ifbibliography{\iftoggle{blx@bibliography}}% + \def\ifciteindex{\iftoggle{blx@citeindex}}% + \def\ifbibindex{\iftoggle{blx@bibindex}}% + \def\iffootnote{\iftoggle{blx@footnote}}% + \def\ifuseprefix{\iftoggle{blx@useprefix}}% + \def\ifuseauthor{\iftoggle{blx@useauthor}}% + \def\ifuseeditor{\iftoggle{blx@useeditor}}% + \def\ifusetranslator{\iftoggle{blx@usetranslator}}% + \def\iffirstinits{\iftoggle{blx@firstinits}}% + \def\ifsingletitle{\iftoggle{abx@bool@singletitle}}% + \def\ifandothers#1{\iftoggle{abx@bool@more#1}}% + \protected\def\pno{\bibstring{page}}% + \protected\def\ppno{\bibstring{pages}}% + \let\nopp\relax + \protected\def\psq{\sqspace\bibstring{sequens}}% + \protected\def\psqq{\sqspace\bibstring{sequentes}}} + +% Make sure that commands which might pop up inside an \edef will be defined +% as something. If they are taken \AtBeginDocument then we assume that all will +% be well. If not, then provide a definition which will give an error outside +% of a citation context. +\AtBeginDocument{% + \protected\def\do#1{% + \ifdefined#1% + \else + \protected\def#1{\ERROR}% + \fi + }% + \docsvlist{\pno,\ppno,\nopp,\psq,\psqq}% +} + +%% Global formatting hooks + +% capitalization + +% {<text>} + +\newrobustcmd{\MakeCapital}[1]{% + \begingroup + \blx@mkcp@init + \protected@edef\blx@tempa{#1}% + \expandafter\blx@mkcp@parse\blx@tempa\@empty\blx@mkcp@end} + +\def\blx@mkcp@init{% + \def\blx@mkcp@iec{\noexpand\blx@mkcp@iec\noexpand}% + \def\blx@mkcp@bbl{\noexpand\blx@mkcp@bbl\noexpand}% + \def\blx@mkcp@sgl{\noexpand\blx@mkcp@sgl\noexpand}% + \def\blx@mkcp@dbl{\noexpand\blx@mkcp@dbl\noexpand}% + \def\do##1{\def##1{\blx@mkcp@sgl##1}}\abx@dosingleaccents + \def\do##1{\def##1{\blx@mkcp@dbl##1}}\abx@dodoubleaccents + \def\IeC##1{\blx@mkcp@iec\IeC{##1}}% + \def\@tabacckludge##1{% + \expandafter\blx@mkcp@sgl\csname\string##1\endcsname}} + +\begingroup +\catcode`\"=\active +\gappto\blx@mkcp@init{% + \ifnum\catcode`\"=\active + \def"#1{\blx@mkcp@bbl"\noexpand#1}% + \fi} +\endgroup + +\def\blx@mkcp@parse{% + \futurelet\@let@token\blx@mkcp@eval} + +\long\def\blx@mkcp@eval{% + \ifx\@let@token\blx@mkcp@iec + \expandafter\blx@mkcp@getiec + \fi + \ifx\@let@token\blx@mkcp@bbl + \expandafter\blx@mkcp@gettwo + \fi + \ifx\@let@token\blx@mkcp@sgl + \expandafter\blx@mkcp@gettwo + \fi + \ifx\@let@token\blx@mkcp@dbl + \expandafter\blx@mkcp@getthree + \fi + \blx@mkcp@case} + +\def\blx@mkcp@getiec#1\blx@mkcp@case#2#3#4{% + \blx@mkcp@case{#2#3{#4}}} + +\def\blx@mkcp@gettwo#1\blx@mkcp@case#2#3#4{% + \blx@mkcp@case{#2#3#4}} + +\def\blx@mkcp@getthree#1\blx@mkcp@case#2#3#4#5{% + \blx@mkcp@case{#2#3#4#5}} + +\long\def\blx@mkcp@case#1{% + \begingroup + \def\i{I}\def\j{J}% + \def\do##1##2{\let##1##2\do}% + \expandafter\do\@uclclist\relax{\relax\@gobble}% + \uppercase{\protected@edef\blx@tempa{\endgroup\blx@mkcp@end#1}}% + \blx@tempa} + +\protected\long\def\blx@mkcp@end#1\blx@mkcp@end{% + \let\blx@mkcp@iec\noexpand + \let\blx@mkcp@bbl\noexpand + \let\blx@mkcp@sgl\noexpand + \let\blx@mkcp@dbl\noexpand + \protected@edef\blx@tempa{\endgroup#1}% + \blx@tempa} + +\def\abx@dosingleaccents{% + \do\"\do\'\do\`\do\^\do\~\do\=\do\.% + \do\H\do\b\do\c\do\d\do\r\do\u\do\v} +\def\abx@dodoubleaccents{% + \do\t} + +% {<text>} + +\newrobustcmd*{\MakeSentenceCase}{% + \@ifstar\blx@mksc@i\blx@mksc@ii} + +\def\blx@mksc@i{% + \ifdef\abx@field@hyphenation + {\xifinlist\abx@field@hyphenation\blx@cmksc@lang + {\blx@mksc@ii} + {\@firstofone}} + {\blx@mksc@ii}} + +\long\def\blx@mksc@ii#1{% + \begingroup + \let\blx@tempa\@empty + \let\blx@tempb\@empty + \blx@mksc@init + \protected@edef\@tempa{#1}% + \expandafter\blx@mksc@parse\@tempa\blx@mksc@end} + +\def\blx@mksc@init{% + \blx@mkcp@init + \def\blx@mkcp@nil{\noexpand\blx@mkcp@nil\noexpand}% + \def\i{\blx@mkcp@nil\i}\def\j{\blx@mkcp@nil\j}% + \def\do##1{% + \ifx##1\relax + \else + \def##1{\blx@mkcp@nil##1}% + \expandafter\do + \fi}% + \expandafter\do\@uclclist\relax} + +\def\blx@mksc@parse{% + \futurelet\@let@token\blx@mksc@eval} + +\def\blx@mksc@eval{% + \ifx\@let@token\blx@mksc@end + \expandafter\blx@mksc@end + \fi + \ifx\@let@token\bgroup + \expandafter\blx@mksc@group + \fi + \ifx\@let@token\@sptoken + \expandafter\blx@mksc@space + \fi + \ifx\@let@token\blx@mkcp@nil + \expandafter\blx@mksc@getone + \fi + \ifx\@let@token\blx@mkcp@iec + \expandafter\blx@mksc@getiec + \fi + \ifx\@let@token\blx@mkcp@bbl + \expandafter\blx@mksc@gettwo + \fi + \ifx\@let@token\blx@mkcp@sgl + \expandafter\blx@mksc@gettwo + \fi + \ifx\@let@token\blx@mkcp@dbl + \expandafter\blx@mksc@getthree + \fi + \if\noexpand\@let@token\relax + \expandafter\blx@mksc@cs + \fi + \blx@mksc@other} + +\def\blx@mksc@end#1\blx@mksc@end{% + \blx@mksc@eject + \let\blx@mkcp@nil\noexpand + \let\blx@mkcp@iec\noexpand + \let\blx@mkcp@bbl\noexpand + \let\blx@mkcp@sgl\noexpand + \let\blx@mkcp@dbl\noexpand + \let\MakeUppercase\relax + \let\MakeLowercase\relax + \protected@edef\blx@tempa{\endgroup\blx@tempa}% + \blx@tempa} + +\long\def\blx@mksc@group#1\blx@mksc@other#2{% + \futurelet\@let@token\blx@mksc@ingroup#2&{#2}% + \blx@mksc@endhead + \blx@mksc@parse} + +\long\def\blx@mksc@ingroup#1{% + \if\noexpand\@let@token\relax + \blx@mksc@locase{{#2}}% + \else + \blx@mksc@nocase{{#2}}% + \fi} + +\def\blx@mksc@space{\def\blx@mksc@space##1\blx@mksc@other} +\csuse{blx@mksc@space} {% + \blx@mksc@anycase{ }% + \blx@mksc@endhead + \blx@mksc@parse} + +\long\def\blx@mksc@cs#1\blx@mksc@other#2{% + \ifcat\noexpand~\noexpand#2% + \blx@mksc@locase{#2}% + \else + \blx@mksc@nocase{#2}% + \fi + \blx@mksc@endhead + \blx@mksc@parse} + +\def\blx@mksc@getiec#1\blx@mksc@other#2#3#4{% + \blx@mksc@other{#2#3{#4}}} + +\def\blx@mksc@getone#1\blx@mksc@other#2#3{% + \blx@mksc@other{#2#3}} + +\def\blx@mksc@gettwo#1\blx@mksc@other#2#3#4{% + \blx@mksc@other{#2#3#4}} + +\def\blx@mksc@getthree#1\blx@mksc@other#2#3#4#5{% + \blx@mksc@other{#2#3#4#5}} + +\long\def\blx@mksc@other#1{% + \blx@mksc@locase{#1}% + \blx@mksc@endhead + \blx@mksc@parse} + +\def\blx@mksc@locase{% + \appto\blx@tempb} + +\def\blx@mksc@nocase{% + \blx@mksc@eject + \appto\blx@tempa} + +\def\blx@mksc@anycase{% + \ifx\blx@tempb\@empty + \expandafter\appto + \expandafter\blx@tempa + \else + \expandafter\appto + \expandafter\blx@tempb + \fi} + +\def\blx@mksc@eject{% + \ifx\blx@tempb\@empty + \else + \eappto\blx@tempa{\noexpand\MakeLowercase{\expandonce\blx@tempb}}% + \let\blx@tempb\@empty + \fi} + +\def\blx@mksc@endhead{% + \ifx\blx@tempb\@empty + \else + \eappto\blx@tempa{\noexpand\MakeCapital{\expandonce\blx@tempb}}% + \let\blx@tempb\@empty + \fi + \let\blx@mksc@endhead\relax} + +% {<language,language,...>} + +\newrobustcmd*{\DeclareCaseLangs}{% + \@ifstar + {\blx@defcaselangs} + {\global\let\blx@cmksc@lang\@empty + \blx@defcaselangs}} + +\def\blx@defcaselangs#1{% + \ifblank{#1} + {} + {\forcsvlist{\listgadd\blx@cmksc@lang}{#1}}} + +\DeclareCaseLangs{% + american,british,canadian, + english,USenglish,UKenglish, + australian,newzealand} + +%% Main formatting commands + +% [<entrytype>]{<name>}{<definiton>} + +\newrobustcmd*{\DeclareNameFormat}{% + \@ifstar + {\blx@defformat\blx@defnameformat{nfd}*} + {\blx@defformat\blx@defnameformat{nfd}{}}} +\newrobustcmd*{\DeclareIndexNameFormat}{% + \@ifstar + {\blx@defformat\blx@defnameformat{nid}*} + {\blx@defformat\blx@defnameformat{nid}{}}} + +\newrobustcmd*{\DeclareListFormat}{% + \@ifstar + {\blx@defformat\blx@defplainformat{lfd}*} + {\blx@defformat\blx@defplainformat{lfd}{}}} +\newrobustcmd*{\DeclareIndexListFormat}{% + \@ifstar + {\blx@defformat\blx@defplainformat{lid}*} + {\blx@defformat\blx@defplainformat{lid}{}}} + +\newrobustcmd*{\DeclareFieldFormat}{% + \@ifstar + {\blx@defformat\blx@defplainformat{ffd}*} + {\blx@defformat\blx@defplainformat{ffd}{}}} +\newrobustcmd*{\DeclareIndexFieldFormat}{% + \@ifstar + {\blx@defformat\blx@defplainformat{fid}*} + {\blx@defformat\blx@defplainformat{fid}{}}} + +% {<macro>}{<class>}{<*>} + +\def\blx@defformat#1#2#3{% + \@ifnextchar[%] + {\blx@defformat@i{#1}{#2}{#3}} + {\blx@defformat@i{#1}{#2}{#3}[*]}} + +% {<macro>}{<class>}{<*>}[<entrytype>]{<name>} + +\def\blx@defformat@i#1#2#3[#4]#5{% + \notblank{#3} + {\blx@resetformat{#2}{#5}} + {}% + \def\blx@defformat@a{#2}% + \def\blx@defformat@b{#4}% + \blx@xsanitizeafter{\def\blx@defformat@c}{#5}% + \afterassignment\blx@defformat@ii + #1} + +\def\blx@defformat@ii{% + \expandafter\forcsvlist + \expandafter\blx@defformat@iii + \expandafter{\blx@defformat@b}} + +\def\blx@defformat@iii#1{% + \cslet{abx@\blx@defformat@a @#1@\blx@defformat@c}\blx@defformat@d} + +\def\blx@defplainformat{% + \long\def\blx@defformat@d##1} + +\def\blx@defnameformat{% + \long\def\blx@defformat@d##1##2##3##4##5##6##7##8} + +\def\blx@resetformat#1#2{% + \let\blx@saved@do\do + \def\do##1{\blx@resetformat@i{#1}{#2}{##1}}% + \blx@safe@actives + \dolistcsloop{blx@biber@datamodel@entrytypes}% + \blx@rest@actives + \let\do\blx@saved@do} + +\def\blx@resetformat@i#1#2#3{% + \ifcsdef{abx@#1@#3@#2} + {\csundef{abx@#1@#3@#2}} + {}} + +% {<name>}{<name>} + +\def\blx@letformat#1#2{% + \blx@safe@actives + \afterassignment\blx@rest@actives + \csletcs{#1}{#2}} + +% [aliastype]{aliasname}[formattype]{formatname} + +\def\blx@defalias#1{% + \@ifnextchar[%] + {\blx@defalias@i{#1}} + {\blx@defalias@i{#1}[*]}} +\def\blx@defalias@i#1[#2]#3{% + \@ifnextchar[%] + {\blx@defalias@ii{#1}{#2}{#3}} + {\blx@defalias@ii{#1}{#2}{#3}[*]}} +\def\blx@defalias@ii#1#2#3[#4]#5{% + \blx@safe@actives + \afterassignment\blx@rest@actives + \csedef{abx@#1@#2@#3}{% + \expandonce{\csname abx@#1@#4@#5\endcsname}}} + +% {<macro>}{<id>}{<name>}{<field>} + +\def\blx@getformat#1#2#3#4{% + \blx@safe@actives + \afterassignment\blx@rest@actives + \ifcsundef{abx@#2@\blx@imc@thefield{entrytype}@#3} + {\ifcsundef{abx@#2@*@#3} + {\ifcsundef{abx@#2@\blx@imc@thefield{entrytype}@#4} + {\ifcsundef{abx@#2@*@#4} + {\letcs#1{abx@#2@*@default}} + {\letcs#1{abx@#2@*@#4}}} + {\letcs#1{abx@#2@\blx@imc@thefield{entrytype}@#4}}} + {\letcs#1{abx@#2@*@#3}}} + {\letcs#1{abx@#2@\blx@imc@thefield{entrytype}@#3}}} + +% [<entrytype>]{<name>} + +\newrobustcmd*{\savefieldformat}[2][*]{\blx@save{abx@ffd@#1@#2}} +\newrobustcmd*{\savelistformat}[2][*]{\blx@save{abx@lfd@#1@#2}} +\newrobustcmd*{\savenameformat}[2][*]{\blx@save{abx@nfd@#1@#2}} + +\newrobustcmd*{\restorefieldformat}[2][*]{\blx@restore{abx@ffd@#1@#2}} +\newrobustcmd*{\restorelistformat}[2][*]{\blx@restore{abx@lfd@#1@#2}} +\newrobustcmd*{\restorenameformat}[2][*]{\blx@restore{abx@nfd@#1@#2}} + +% [<entrytype>]{<alias>}[<entrytype>]{<name>} + +\newrobustcmd*{\DeclareNameAlias}{\blx@defalias{nfd}} +\newrobustcmd*{\DeclareIndexNameAlias}{\blx@defalias{nid}} + +\newrobustcmd*{\DeclareListAlias}{\blx@defalias{lfd}} +\newrobustcmd*{\DeclareIndexListAlias}{\blx@defalias{lid}} + +\newrobustcmd*{\DeclareFieldAlias}{\blx@defalias{ffd}} +\newrobustcmd*{\DeclareIndexFieldAlias}{\blx@defalias{fid}} + +% [<format>]{<text>} + +\newrobustcmd{\blx@imc@printtext}[2][]{% + \ifblank{#2} + {\blx@nounit} + {\ifblank{#1} + {\let\blx@theformat\@firstofone} + {\blx@getformat\blx@theformat{ffd}{#1}{}}% + \ifdefvoid\blx@theformat + {\blx@nounit} + {\blx@begunit + \blx@theformat{#2}% + \blx@endunit}}} + +% [<format>]{<field>} + +\newrobustcmd*{\blx@imc@printfield}[2][]{% + \blx@imc@iffieldundef{#2} + {\blx@nounit} + {\blx@getformat\blx@theformat{ffd}{#1}{#2}% + \ifdefvoid\blx@theformat + {\blx@nounit} + {\blx@begunit + \def\currentfield{#2}% + \expandafter\expandafter + \expandafter\blx@theformat + \expandafter\expandafter + \expandafter{\csname abx@field@#2\endcsname}% + \blx@endunit}}} + +% [<format>]{<field>} + +\newcommand*{\blx@imc@indexfield}[2][]{% + \blx@imc@iffieldundef{#2} + {} + {\blx@getformat\blx@theformat{fid}{#1}{#2}% + \ifdefvoid\blx@theformat + {} + {\begingroup + \def\currentfield{#2}% + \letcs\blx@tempa{abx@field@#2}% + \expandafter\blx@theformat\expandafter{\blx@tempa}% + \endgroup}}} + +% [<format>]{<file>} + +\newrobustcmd*{\blx@imc@printfile}[2][]{% + \iftoggle{blx@loadfiles} + {\IfFileExists{#2} + {\listxadd\blx@list@req@edit{#2}% + \blx@imc@printtext[#1]{\input{#2}\unspace}} + {\blx@nounit}} + {\blx@nounit}} + +% {<macro>}[<format>][<start>-<stop>] +% => <macro>{<format>}{<start>}{<stop>} + +\def\blx@listargs#1{% + \@ifnextchar[%] + {\blx@listargs@i{#1}} + {#1{}{}{}}} + +\def\blx@listargs@i#1[#2]{% + \@ifnextchar[%] + {\blx@listargs@ii{#1}{#2}} + {#1{#2}{}{}}} + +\def\blx@listargs@ii#1#2[#3]{% + \blx@listargs@iii{#1}{#2}#3&} + +\def\blx@listargs@iii#1#2#3-#4&{% + #1{#2}{#3}{#4}} + +% [<format>][<start>-<stop>]{<namelist>} + +\protected\def\blx@imc@printnames{% + \blx@listargs\blx@printnames} + +% {<format>}{<start>}{<stop>}{<namelist>} + +\def\blx@printnames#1#2#3#4{% + \blx@imc@ifnameundef{#4} + {\blx@nounit} + {\blx@getformat\blx@theformat{nfd}{#1}{#4}% + \ifdefvoid\blx@theformat + {\blx@nounit} + {\blx@begunit + \blx@namesetup{#2}{#3}{#4}% + \expandafter\blx@nameparser\blx@thedata{}&% + \blx@endunit}}} + +\def\blx@namesetup#1#2#3{% + \def\currentname{#3}% + \c@listcount\@ne + \c@listtotal\csname c@#3\endcsname + \blx@namesetup@i{#3}% + \ifblank{#1} + {\c@liststart\@ne} + {\ifnum#1<\@ne + \c@liststart\@ne + \else + \c@liststart#1\relax + \fi}% + \ifblank{#2} + {\c@liststop\c@listtotal + \ifnum\c@liststop>\c@maxnames + \c@liststop\c@minnames + \ifnum\c@uniquelist>\c@liststop + \c@liststop\c@uniquelist + \fi + \fi} + {\ifnum#2>\c@listtotal + \c@liststop\c@listtotal + \else + \ifnum#2<\@ne + \c@liststop\@ne + \else + \c@liststop#2\relax + \fi + \fi}% + \blx@namecodes} + +\def\blx@namesetup@i#1{% + \expandafter\expandafter + \expandafter\blx@namesetup@ii\csname abx@name@#1\endcsname} + +\def\blx@namesetup@ii#1#2{% + \c@uniquelist\z@ + \ifblank{#1} + {} + {\setkeys{blx@opt@name}{#1}}% + \def\blx@thedata{#2}} + +\define@key{blx@opt@name}{uniquelist}{\c@uniquelist#1\relax} +\define@key{blx@opt@name}{uniquename}{\c@uniquename#1\relax} +\define@key{blx@opt@name}{hash}{\edef\abx@field@hash{\detokenize{#1}}} + +\newrobustcmd*{\bibinitperiod}{\adddot} +\newrobustcmd*{\bibinitdelim}{\addnbspace} +\newrobustcmd*{\bibinithyphendelim}{.\mbox{-}} +\newrobustcmd*{\bibnamedelima}{\addhighpenspace} +\newrobustcmd*{\bibnamedelimb}{\addlowpenspace} +\newrobustcmd*{\bibnamedelimc}{\addhighpenspace} +\newrobustcmd*{\bibnamedelimd}{\addlowpenspace} +\newrobustcmd*{\bibnamedelimi}{\addnbspace} + +% [<format>][<start>-<stop>]{<namelist>} + +\protected\def\blx@imc@indexnames{% + \blx@listargs\blx@indexnames} + +% {<format>}{<start>}{<stop>}{<namelist>} + +\def\blx@indexnames#1#2#3#4{% + \blx@imc@ifnameundef{#4} + {} + {\blx@getformat\blx@theformat{nid}{#1}{#4}% + \ifdefvoid\blx@theformat + {} + {\begingroup + \blx@namesetup{#2}{#3}{#4}% + \blx@indexnamesetup + \expandafter\blx@nameparser\blx@thedata{}&% + \endgroup}}} + +\def\blx@indexnamesetup{% + \let\bibinitperiod\bibindexinitperiod + \let\bibinitdelim\bibindexinitdelim + \let\bibinithyphendelim\bibindexinithyphendelim + \let\bibnamedelima\bibindexnamedelima + \let\bibnamedelimb\bibindexnamedelimb + \let\bibnamedelimc\bibindexnamedelimc + \let\bibnamedelimd\bibindexnamedelimd + \let\bibnamedelimi\bibindexnamedelimi} + +% {<name1>}{<name2>}{...} + +\long\def\blx@nameparser#1{% + \ifblank{#1} + {\blx@namebreak} + {\ifnum\c@listcount<\c@liststart + \else + \blx@nameparser@i#1% + \fi + \advance\c@listcount\@ne + \ifnum\c@listcount>\c@liststop + \expandafter\blx@namebreak + \fi + \blx@nameparser}} + +\long\def\blx@nameparser@i#1{% + \ifblank{#1} + {} + {\setkeys{blx@opt@name}{#1}}% + \blx@theformat} + +\long\def\blx@namebreak#1&{} + +% [<format>][<start>-<stop>]{<plainlist>} + +\protected\def\blx@imc@printlist{% + \blx@listargs\blx@printlist} + +% {<format>}{<start>}{<stop>}{<plainlist>} + +\def\blx@printlist#1#2#3#4{% + \blx@imc@iflistundef{#4} + {\blx@nounit} + {\blx@getformat\blx@theformat{lfd}{#1}{#4}% + \ifdefvoid\blx@theformat + {\blx@nounit} + {\blx@begunit + \blx@listsetup{#2}{#3}{#4}% + \expandafter\blx@listparser\blx@thedata{}&% + \blx@endunit}}} + +\def\blx@listsetup#1#2#3{% + \def\currentlist{#3}% + \c@listcount\@ne + \expandafter\c@listtotal\csname c@#3\endcsname + \letcs\blx@thedata{abx@list@#3}% + \ifblank{#1} + {\c@liststart\@ne} + {\ifnum#1<\@ne + \c@liststart\@ne + \else + \c@liststart#1\relax + \fi}% + \ifblank{#2} + {\c@liststop\c@listtotal + \ifnum\c@listtotal>\c@maxitems + \c@liststop\c@minitems + \fi} + {\ifnum#2>\c@listtotal + \c@liststop\c@listtotal + \else + \ifnum#2<\@ne + \c@liststop\@ne + \else + \c@liststop#2\relax + \fi + \fi}} + +% [<format>][<start>-<stop>]{<plainlist>} + +\protected\def\blx@imc@indexlist{% + \blx@listargs\blx@indexlist} + +% {<format>}{<start>}{<stop>}{<plainlist>} + +\def\blx@indexlist#1#2#3#4{% + \blx@imc@iflistundef{#4} + {} + {\blx@getformat\blx@theformat{lid}{#1}{#4}% + \ifdefvoid\blx@theformat + {} + {\begingroup + \blx@listsetup{#2}{#3}{#4}% + \expandafter\blx@listparser\blx@thedata{}&% + \endgroup}}} + +% {<item1>}{<item2>}{...} + +\long\def\blx@listparser#1{% + \ifblank{#1} + {\blx@listbreak} + {\ifnum\c@listcount<\c@liststart + \else + \blx@theformat{#1}% + \fi + \advance\c@listcount\@ne + \ifnum\c@listcount>\c@liststop + \expandafter\blx@listbreak + \fi + \blx@listparser}} + +\long\def\blx@listbreak#1&{} + +% <*>{<key>}{<code>} + +\protected\def\blx@imc@entrydata{% + \@ifstar + {\blx@xsanitizeafter{\blx@imc@entrydata@i\blx@saveentry}} + {\blx@xsanitizeafter{\blx@imc@entrydata@i{}}}} + +\long\def\blx@imc@entrydata@i#1#2#3{% + \blx@ifdata{#2} + {\begingroup + #1% + \blx@resetdata + \blx@getdata{#2}% + \blx@entrysetcount + \blx@setoptions@type\abx@field@entrytype + \blx@setoptions@entry + \addtocounter{instcount}\@ne + \blx@execute + \blx@beglang#3\blx@endlang + \endgroup} + {}} + +\protected\def\blx@imc@entryset#1#2{% + \blx@imc@iffieldundef{entrykey} + {} + {\begingroup + \long\def\blx@entryset@precode{#1}% + \long\def\blx@entryset@postcode{#2}% + \let\finentry\blx@finentry@inset + \let\do\blx@entryset + \blx@imc@docsvfield{entryset}% + \endgroup}} + +\def\blx@entryset#1{% + \blx@ifdata{#1} + {\begingroup + \blx@imc@clearlist{pageref}% + \blx@getdata{#1}% + \blx@setoptions@type\abx@field@entrytype + \def\abx@field@entrysetcount{1}% + \blx@entryset@precode + \blx@driver{\blx@imc@thefield{entrytype}}% + \blx@entryset@postcode + \endgroup} + {}% + \let\do\blx@entryset@i} + +\def\blx@entryset@i#1{% + \blx@imc@entrydata{#1}{% + \blx@entryset@precode + \blx@driver{\blx@imc@thefield{entrytype}} + \blx@entryset@postcode}} + +\blx@regimcs{% + \printtext \printfield \printlist \printnames \printfile + \indexfield \indexlist \indexnames \entrydata \entryset} + +%% Localization + +% [<wrapper>]{<string>} + +\newrobustcmd*{\blx@imc@bibstring}[2][\@firstofone]{% + \blx@bibstring{#1}{\abx@str}{#2}} + +\newrobustcmd*{\blx@imc@biblstring}[2][\@firstofone]{% + \blx@bibstring{#1}{abx@lstr}{#2}} + +\newrobustcmd*{\blx@imc@bibsstring}[2][\@firstofone]{% + \blx@bibstring{#1}{abx@sstr}{#2}} + +\protected\def\blx@bibstring#1#2#3{% + \blx@begunit + \blx@hyphenreset + \let\bibstring\blx@imc@bibxstring + \let\biblstring\blx@imc@bibxlstring + \let\bibsstring\blx@imc@bibxsstring + \lowercase{\edef\blx@tempa{#3}}% + \ifcsundef{#2@\blx@tempa} + {\blx@warn@nostring\blx@tempa + \blx@endnounit} + {\blx@imc@ifcapital + {#1{\MakeCapital{\csuse{#2@\blx@tempa}}}} + {#1{\csuse{#2@\blx@tempa}}}% + \blx@endunit}} + +% [<wrapper>]{<string>} + +\newrobustcmd*{\blx@imc@bibcpstring}[2][\@firstofone]{% + \blx@bibcpstring{#1}{\abx@str}{#2}} + +\newrobustcmd*{\blx@imc@bibcplstring}[2][\@firstofone]{% + \blx@bibcpstring{#1}{abx@lstr}{#2}} + +\newrobustcmd*{\blx@imc@bibcpsstring}[2][\@firstofone]{% + \blx@bibcpstring{#1}{abx@sstr}{#2}} + +\protected\def\blx@bibcpstring#1#2#3{% + \blx@begunit + \blx@hyphenreset + \let\bibstring\blx@imc@bibxstring + \let\biblstring\blx@imc@bibxlstring + \let\bibsstring\blx@imc@bibxsstring + \lowercase{\edef\blx@tempa{#3}}% + \ifcsundef{#2@\blx@tempa} + {\blx@warn@nostring\blx@tempa + \blx@endnounit} + {#1{\MakeCapital{\csuse{#2@\blx@tempa}}}% + \blx@endunit}} + +% [<wrapper>]{<string>} + +\newrobustcmd*{\blx@imc@biblcstring}[2][\@firstofone]{% + \blx@biblcstring{#1}{\abx@str}{#2}} + +\newrobustcmd*{\blx@imc@biblclstring}[2][\@firstofone]{% + \blx@biblcstring{#1}{abx@lstr}{#2}} + +\newrobustcmd*{\blx@imc@biblcsstring}[2][\@firstofone]{% + \blx@biblcstring{#1}{abx@sstr}{#2}} + +\protected\def\blx@biblcstring#1#2#3{% + \blx@begunit + \blx@hyphenreset + \let\bibstring\blx@imc@bibxstring + \let\biblstring\blx@imc@bibxlstring + \let\bibsstring\blx@imc@bibxsstring + \lowercase{\edef\blx@tempa{#3}}% + \ifcsundef{#2@\blx@tempa} + {\blx@warn@nostring\blx@tempa + \blx@endnounit} + {#1{\MakeLowercase{\csuse{#2@\blx@tempa}}}% + \blx@endunit}} + +% [<wrapper>]{<string>} + +\newrobustcmd*{\blx@imc@bibucstring}[2][\@firstofone]{% + \blx@bibucstring{#1}{\abx@str}{#2}} + +\newrobustcmd*{\blx@imc@bibuclstring}[2][\@firstofone]{% + \blx@bibucstring{#1}{abx@lstr}{#2}} + +\newrobustcmd*{\blx@imc@bibucsstring}[2][\@firstofone]{% + \blx@bibucstring{#1}{abx@sstr}{#2}} + +\protected\def\blx@bibucstring#1#2#3{% + \blx@begunit + \blx@hyphenreset + \let\bibstring\blx@imc@bibxstring + \let\biblstring\blx@imc@bibxlstring + \let\bibsstring\blx@imc@bibxsstring + \lowercase{\edef\blx@tempa{#3}}% + \ifcsundef{#2@\blx@tempa} + {\blx@warn@nostring\blx@tempa + \blx@endnounit} + {#1{\MakeUppercase{\csuse{#2@\blx@tempa}}}% + \blx@endunit}} + +% {<string>} + +\def\blx@imc@bibxstring#1{% + \blx@bibxstring{\abx@str}{#1}} + +\def\blx@imc@bibxlstring#1{% + \blx@bibxstring{abx@lstr}{#1}} + +\def\blx@imc@bibxsstring#1{% + \blx@bibxstring{abx@sstr}{#1}} + +\def\blx@bibxstring#1#2{% + \ifcsundef{#1@#2} + {\protect\blx@warn@nostring{#2}} + {\csuse{#1@#2}}} + +% {<string>}{<true>}{<false>} + +\def\blx@imc@ifbibstring#1{% + \ifcsundef{\abx@str @\detokenize{#1}} + {\@secondoftwo} + {\@firstoftwo}} + +\def\blx@imc@ifbibxstring#1{% + \blx@xsanitizeafter\ifcsundef{\abx@str @#1} + {\@secondoftwo} + {\@firstoftwo}} + +% {<field>}{<true>}{<false>} + +\def\blx@imc@iffieldbibstring#1{% + \blx@imc@iffieldundef{#1} + {\@secondoftwo} + {\ifcsundef{\abx@str @\detokenize\expandafter + \expandafter\expandafter{% + \csname abx@field@#1\endcsname}} + {\@secondoftwo} + {\@firstoftwo}}} + +\blx@regimcs{% + \bibstring \biblstring \bibsstring + \bibxstring \bibxlstring \bibxsstring + \bibcpstring \bibcplstring \bibcpsstring + \biblcstring \biblclstring \biblcsstring + \bibucstring \bibuclstring \bibucsstring + \ifbibstring \ifbibxstring \iffieldbibstring} + +\let\blx@hook@uc\relax +\let\blx@hook@lc\relax + +\AtEndPreamble{% + \toggletrue{blx@tempa}% + \toggletrue{blx@tempb}% + \expandafter\patchcmd\csname MakeUppercase \endcsname + {\protected@edef} + {\blx@hook@uc\protected@edef} + {\togglefalse{blx@tempa}} + {}% + \expandafter\patchcmd\csname MakeLowercase \endcsname + {\protected@edef} + {\blx@hook@lc\protected@edef} + {\togglefalse{blx@tempb}} + {}% + \@ifpackageloaded{textcase} + {\expandafter\patchcmd\csname MakeUppercase \endcsname + {\def\i} + {\blx@hook@uc\def\i} + {\togglefalse{blx@tempa}} + {}% + \expandafter\patchcmd\csname MakeLowercase \endcsname + {\@uclcnotmath{}} + {\@uclcnotmath{\blx@hook@lc}} + {\togglefalse{blx@tempb}} + {}% + \expandafter\patchcmd\csname MakeTextUppercase \endcsname + {\def\i} + {\blx@hook@uc\def\i} + {} + {}% + \expandafter\patchcmd\csname MakeTextLowercase \endcsname + {\@uclcnotmath{}} + {\@uclcnotmath{\blx@hook@lc}} + {} + {}} + {}% + \iftoggle{blx@tempa}{\blx@err@patch{\string\MakeUppercase}}{}% + \iftoggle{blx@tempb}{\blx@err@patch{\string\MakeLowercase}}{}% +} + +\appto\blx@blxinit{% + \def\blx@hook@uc{% + \def\bibstring{\blx@imc@bibucstring}% + \def\biblstring{\blx@imc@bibuclstring}% + \def\bibsstring{\blx@imc@bibucsstring}% + \def\biblcstring{\blx@imc@bibucstring}% + \def\biblclstring{\blx@imc@bibuclstring}% + \def\biblcsstring{\blx@imc@bibucsstring}% + \def\bibcpstring{\blx@imc@bibucstring}% + \def\bibcplstring{\blx@imc@bibuclstring}% + \def\bibcpsstring{\blx@imc@bibucsstring}}% + \def\blx@hook@lc{% + \def\bibstring{\blx@imc@biblcstring}% + \def\biblstring{\blx@imc@biblclstring}% + \def\bibsstring{\blx@imc@biblcsstring}% + \def\bibucstring{\blx@imc@biblcstring}% + \def\bibuclstring{\blx@imc@biblclstring}% + \def\bibucsstring{\blx@imc@biblcsstring}% + \def\bibcpstring{\blx@imc@biblcstring}% + \def\bibcplstring{\blx@imc@biblclstring}% + \def\bibcpsstring{\blx@imc@biblcsstring}}} + +\def\abx@dostrings{% + \do{bibliography}% + \do{references}% + \do{shorthands}% + \do{editor}% + \do{editors}% + \do{compiler}% + \do{compilers}% + \do{redactor}% + \do{redactors}% + \do{reviser}% + \do{revisers}% + \do{founder}% + \do{founders}% + \do{continuator}% + \do{continuators}% + \do{collaborator}% + \do{collaborators}% + \do{translator}% + \do{translators}% + \do{commentator}% + \do{commentators}% + \do{annotator}% + \do{annotators}% + \do{commentary}% + \do{annotations}% + \do{introduction}% + \do{foreword}% + \do{afterword}% + \do{editortr}% + \do{editorstr}% + \do{editorco}% + \do{editorsco}% + \do{editoran}% + \do{editorsan}% + \do{editorin}% + \do{editorsin}% + \do{editorfo}% + \do{editorsfo}% + \do{editoraf}% + \do{editorsaf}% + \do{editortrco}% + \do{editorstrco}% + \do{editortran}% + \do{editorstran}% + \do{editortrin}% + \do{editorstrin}% + \do{editortrfo}% + \do{editorstrfo}% + \do{editortraf}% + \do{editorstraf}% + \do{editorcoin}% + \do{editorscoin}% + \do{editorcofo}% + \do{editorscofo}% + \do{editorcoaf}% + \do{editorscoaf}% + \do{editoranin}% + \do{editorsanin}% + \do{editoranfo}% + \do{editorsanfo}% + \do{editoranaf}% + \do{editorsanaf}% + \do{editortrcoin}% + \do{editorstrcoin}% + \do{editortrcofo}% + \do{editorstrcofo}% + \do{editortrcoaf}% + \do{editorstrcoaf}% + \do{editortranin}% + \do{editorstranin}% + \do{editortranfo}% + \do{editorstranfo}% + \do{editortranaf}% + \do{editorstranaf}% + \do{translatorco}% + \do{translatorsco}% + \do{translatoran}% + \do{translatorsan}% + \do{translatorin}% + \do{translatorsin}% + \do{translatorfo}% + \do{translatorsfo}% + \do{translatoraf}% + \do{translatorsaf}% + \do{translatorcoin}% + \do{translatorscoin}% + \do{translatorcofo}% + \do{translatorscofo}% + \do{translatorcoaf}% + \do{translatorscoaf}% + \do{translatoranin}% + \do{translatorsanin}% + \do{translatoranfo}% + \do{translatorsanfo}% + \do{translatoranaf}% + \do{translatorsanaf}% + \do{byauthor}% + \do{byeditor}% + \do{byeditor}% + \do{bycompiler}% + \do{byredactor}% + \do{byreviser}% + \do{byreviewer}% + \do{byfounder}% + \do{bycontinuator}% + \do{bycollaborator}% + \do{bytranslator}% + \do{bycommentator}% + \do{byannotator}% + \do{withcommentator}% + \do{withannotator}% + \do{withintroduction}% + \do{withforeword}% + \do{withafterword}% + \do{byeditortr}% + \do{byeditorco}% + \do{byeditoran}% + \do{byeditorin}% + \do{byeditorfo}% + \do{byeditoraf}% + \do{byeditortrco}% + \do{byeditortran}% + \do{byeditortrin}% + \do{byeditortrfo}% + \do{byeditortraf}% + \do{byeditorcoin}% + \do{byeditorcofo}% + \do{byeditorcoaf}% + \do{byeditoranin}% + \do{byeditoranfo}% + \do{byeditoranaf}% + \do{byeditortrcoin}% + \do{byeditortrcofo}% + \do{byeditortrcoaf}% + \do{byeditortranin}% + \do{byeditortranfo}% + \do{byeditortranaf}% + \do{bytranslatorco}% + \do{bytranslatoran}% + \do{bytranslatorin}% + \do{bytranslatorfo}% + \do{bytranslatoraf}% + \do{bytranslatorcoin}% + \do{bytranslatorcofo}% + \do{bytranslatorcoaf}% + \do{bytranslatoranin}% + \do{bytranslatoranfo}% + \do{bytranslatoranaf}% + \do{and}% + \do{andothers}% + \do{andmore}% + \do{volume}% + \do{volumes}% + \do{involumes}% + \do{part}% + \do{jourvol}% + \do{jourser}% + \do{newseries}% + \do{oldseries}% + \do{edition}% + \do{reprint}% + \do{reprintof}% + \do{reprintas}% + \do{reprintfrom}% + \do{reviewof}% + \do{translationof}% + \do{translationas}% + \do{translationfrom}% + \do{origpubas}% + \do{origpubin}% + \do{astitle}% + \do{bypublisher}% + \do{page}% + \do{pages}% + \do{column}% + \do{columns}% + \do{line}% + \do{lines}% + \do{verse}% + \do{verses}% + \do{section}% + \do{sections}% + \do{paragraph}% + \do{paragraphs}% + \do{in}% + \do{inseries}% + \do{ofseries}% + \do{book}% + \do{issue}% + \do{number}% + \do{chapter}% + \do{mathesis}% + \do{phdthesis}% + \do{candthesis}% + \do{resreport}% + \do{techreport}% + \do{software}% + \do{datacd}% + \do{audiocd}% + \do{version}% + \do{doi}% + \do{url}% + \do{urlseen}% + \do{file}% + \do{inpreparation}% + \do{submitted}% + \do{inpress}% + \do{forthcoming}% + \do{library}% + \do{abstract}% + \do{annotation}% + \do{citedas}% + \do{seenote}% + \do{quotedin}% + \do{opcit}% + \do{loccit}% + \do{ibidem}% + \do{idem}% + \do{idemsf}% + \do{idemsm}% + \do{idemsn}% + \do{idempf}% + \do{idempm}% + \do{idempn}% + \do{idempp}% + \do{confer}% + \do{sequens}% + \do{sequentes}% + \do{passim}% + \do{see}% + \do{seealso}% + \do{backrefpage}% + \do{backrefpages}% + \do{thiscite}% + \do{january}% + \do{february}% + \do{march}% + \do{april}% + \do{may}% + \do{june}% + \do{july}% + \do{august}% + \do{september}% + \do{october}% + \do{november}% + \do{december}% + \do{langamerican}% + \do{langbrazilian}% + \do{langcroatian}% + \do{langdanish}% + \do{langdutch}% + \do{langenglish}% + \do{langfinnish}% + \do{langfrench}% + \do{langgerman}% + \do{langgreek}% + \do{langitalian}% + \do{langlatin}% + \do{langnorwegian}% + \do{langportuguese}% + \do{langrussian}% + \do{langspanish}% + \do{langswedish}% + \do{fromamerican}% + \do{frombrazilian}% + \do{fromcroatian}% + \do{fromdanish}% + \do{fromdutch}% + \do{fromenglish}% + \do{fromfinnish}% + \do{fromfrench}% + \do{fromgerman}% + \do{fromgreek}% + \do{fromitalian}% + \do{fromlatin}% + \do{fromnorwegian}% + \do{fromportuguese}% + \do{fromrussian}% + \do{fromspanish}% + \do{fromswedish}% + \do{countryde}% + \do{countryep}% + \do{countryeu}% + \do{countryfr}% + \do{countryuk}% + \do{countryus}% + \do{patent}% + \do{patentde}% + \do{patenteu}% + \do{patentfr}% + \do{patentuk}% + \do{patentus}% + \do{patreq}% + \do{patreqde}% + \do{patreqeu}% + \do{patreqfr}% + \do{patrequk}% + \do{patrequs}% +} + +\newrobustcmd*{\NewBibliographyString}[1]{% + \forcsvlist\blx@newstring{#1}} + +\def\blx@newstring#1{% + \ifcsundef{KV@blx@lbx@#1} + {\gappto\abx@dostrings{\do{#1}}% + \csgdef{KV@blx@lbx@#1}##1{\blx@defstring{#1}{##1}}} + {}} + +% in *.cbx/bbx/tex: <key> = {<string>}, +% in *.lbx: <key> = {{<longstring>}{<abbrevstring>}}, + +\def\do#1{\define@key{blx@lbx}{#1}{\blx@defstring{#1}{##1}}} +\abx@dostrings + +% in *.cbx/bbx/tex: (implicit) +% in *.lbx: inherit = {<language>}, + +\define@key{blx@lbx}{inherit}{% + \blx@lbxinput{#1}{}{\blx@err@nolang{#1}}% + \csuse{abx@strings@#1}} + +\def\blx@cfg@defstring#1#2{% + \csdef{abx@lstr@#1}{#2}% + \csdef{abx@sstr@#1}{#2}} + +\def\blx@lbx@defstring#1#2{% + \blx@lbx@defstring@i{#1}#2} +\def\blx@lbx@defstring@i#1#2#3{% + \csdef{abx@lstr@#1}{#2}% + \csdef{abx@sstr@#1}{#3}} + +% {<language>} + +\def\blx@lbxcheck#1{% + \ifcsdef{blx@lng@#1} + {\expandafter\expandafter\expandafter\IfFileExists + \expandafter\expandafter\expandafter{% + \csname blx@lng@#1\endcsname.lbx} + {} + {\blx@err@nolang{#1}}} + {\IfFileExists{#1.lbx} + {} + {\blx@err@nolang{#1}}}} + +% {<language>}{<definitions>} + +\newrobustcmd*{\DefineBibliographyExtras}[2]{% + \blx@lbxcheck{#1}% + \csgappto{blx@hook@extras@#1}{% + \blx@defbibextras{#1}{#2}}} +\@onlypreamble\DefineBibliographyExtras + +\newrobustcmd*{\UndefineBibliographyExtras}[2]{% + \blx@lbxcheck{#1}% + \csgappto{blx@hook@noextras@#1}{% + \blx@undefbibextras{#1}{#2}}} +\@onlypreamble\UndefineBibliographyExtras + +\def\blx@defbibextras#1{\csgappto{abx@extras@#1}} +\def\blx@undefbibextras#1{\csgappto{abx@noextras@#1}} + +% {<language>}{<language>} + +\def\blx@letbibextras#1#2{% + \blx@lbxinput{#2}{}{\blx@err@nolang{#2}}% + \global\csletcs{abx@extras@#1}{abx@extras@#2} + \global\csletcs{abx@noextras@#1}{abx@noextras@#2}}% + +% {<language>}{<strings>} + +\newrobustcmd*{\DefineBibliographyStrings}[2]{% + \blx@lbxcheck{#1}% + \csgappto{blx@hook@strings@#1}{% + \begingroup + \let\blx@defstring\blx@cfg@defstring + \blx@defbibstrings{#1}{#2}% + \endgroup}} +\@onlypreamble\DefineBibliographyStrings + +\def\blx@defbibstrings#1#2{% + \def\do##1{\csundef{abx@lstr@##1}\csundef{abx@sstr@##1}}% + \abx@dostrings + \csuse{abx@strings@#1}% + \setkeys{blx@lbx}{#2}% + \let\do\blx@defbibstrings@i + \csxdef{abx@strings@#1}{\abx@dostrings}% + \csgappto{abx@strings@#1}{% + \ifcsdef{\abx@str @bibliography} + {\letcs\bibname{\abx@str @bibliography}} + {\let\bibname\@empty}% + \ifcsdef{\abx@str @references} + {\letcs\refname{\abx@str @references}} + {\let\refname\@empty}% + \ifcsdef{\abx@str @shorthands} + {\letcs\losname{\abx@str @shorthands}} + {\let\losname\@empty}}} + +\def\blx@defbibstrings@i#1{% + \ifcsdef{abx@lstr@#1} + {\def\expandafter\noexpand\csname abx@lstr@#1\endcsname{% + \csexpandonce{abx@lstr@#1}}} + {\undef\expandafter\noexpand\csname abx@lstr@#1\endcsname}% + \ifcsdef{abx@sstr@#1} + {\def\expandafter\noexpand\csname abx@sstr@#1\endcsname{% + \csexpandonce{abx@sstr@#1}}} + {\undef\expandafter\noexpand\csname abx@sstr@#1\endcsname}} + +% {<language>}{<language>} + +\def\blx@letbibstrings#1#2{% + \blx@lbxinput{#2}{}{\blx@err@nolang{#2}}% + \global\csletcs{abx@strings@#1}{abx@strings@#2}}% + +% {<language>}{<exceptions>} + +\newrobustcmd*{\DefineHyphenationExceptions}[2]{% + \ifcsundef{l@#1} + {\blx@warn@nohyph{#1}} + {}% + \csgappto{blx@hook@hyph@#1}{\blx@hyphexcept{#1}{#2}}} +\@onlypreamble\DefineHyphenationExceptions + +\def\blx@hyphexcept#1#2{% + \ifcsundef{l@#1} + {\blx@warn@nohyph{#1}} + {\begingroup + \language\csname l@#1\endcsname\relax + \hyphenation{#2}% + \endgroup}} + +% {<language>}{<mapping>} + +\newrobustcmd*{\DeclareLanguageMapping}[2]{% + \csgdef{blx@lng@#1}{#2}} +\@onlypreamble\DeclareLanguageMapping + +% {<language>}{<success>}{<failure>} + +\def\blx@lbxinput#1{% + \ifcsdef{blx@lng@#1} + {\expandafter\expandafter\expandafter\blx@lbxinput@i + \expandafter\expandafter\expandafter{% + \csname blx@lng@#1\endcsname}{#1}} + {\blx@lbxinput@ii{#1}{#1}{language '#1'}}} + +% {<mapping>}{<language>} + +\def\blx@lbxinput@i#1#2{% + \global\csundef{blx@lng@#2}% + \IfFileExists{#1.lbx} + {\blx@lbxinput@ii{#2}{#1}{language '#2' -> '#1'}} + {\blx@warning@noline{% + File '#1.lbx' not found!\MessageBreak + Ignoring mapping '#2' -> '#1'}% + \blx@lbxinput{#2}}} + +% {<language>}{<lbxfile>}{<message>} + +\def\blx@lbxinput@ii#1#2#3{% + \begingroup + \setbox\@tempboxa=\hbox\bgroup + \aftergroup\endgroup + \blx@inputonce{#2.lbx}{#3} + {\global\cslet{abx@strings@#1}\@empty + \global\cslet{abx@extras@#1}\@empty + \global\cslet{abx@noextras@#1}\@empty + \blx@maplang{#1}{#1}% + \def\InheritBibliographyStrings{% + \blx@letbibstrings{#1}}% + \def\DeclareBibliographyStrings####1{% + \begingroup + \let\blx@defstring\blx@lbx@defstring + \blx@defbibstrings{#1}{####1}% + \endgroup}% + \def\InheritBibliographyExtras{\blx@letbibextras{#1}}% + \def\DeclareBibliographyExtras{\blx@defbibextras{#1}}% + \def\UndeclareBibliographyExtras{\blx@undefbibextras{#1}}% + \def\DeclareHyphenationExceptions{\blx@hyphexcept{#1}}% + \begingroup + \blx@saneccodes + \makeatletter} + {\endgroup + \csuse{blx@hook@strings@#1}% + \csuse{blx@hook@strings@#2}% + \csuse{blx@hook@extras@#1}% + \csuse{blx@hook@extras@#2}% + \csuse{blx@hook@noextras@#1}% + \csuse{blx@hook@noextras@#2}% + \csuse{blx@hook@hyph@#1}% + \csuse{blx@hook@hyph@#2}} + {\aftergroup\@firstoftwo} + {\aftergroup\@secondoftwo}% + \egroup} + +% {<language>} + +\def\blx@langsetup#1{% + \blx@lbxinput{#1} + {\edef\blx@languagename{#1}} + {\blx@warning + {Language '#1' not supported.\MessageBreak + Using fallback language '\blx@languagename'}% + \blx@lbxinput{\blx@languagename} + {\blx@maplang{#1}{\blx@languagename}} + {\blx@err@nolang{\blx@languagename}}}} + +% auxiliary macros + +% {<field base name>} + +\newrobustcmd*{\mkbibrangeshort}{% + \mkbibrangefull{short}} + +\newrobustcmd*{\mkbibrangelong}{% + \mkbibrangefull{long}} + +\newrobustcmd*{\mkbibrangeterse}{% + \mkbibrangetrunc{short}} + +\newrobustcmd*{\mkbibrangecomp}{% + \mkbibrangetrunc{long}} + +\newrobustcmd*{\mkbibrangeshortextra}{% + \mkbibrangefullextra{short}} + +\newrobustcmd*{\mkbibrangelongextra}{% + \mkbibrangefullextra{long}} + +\newrobustcmd*{\mkbibrangeterseextra}{% + \mkbibrangetruncextra{short}} + +\newrobustcmd*{\mkbibrangecompextra}{% + \mkbibrangetruncextra{long}} + +% {<short|long>}{<basename>} + +\newrobustcmd*{\mkbibrangefull}[2]{% + \iffieldundef{#2year} + {} + {\printtext[#2date]{% + \csuse{mkbibdate#1}{#2year}{#2month}{#2day}% + \iffieldundef{#2endyear} + {} + {\iffieldequalstr{#2endyear}{} + {\mbox{\bibdatedash}} + {\bibdatedash + \csuse{mkbibdate#1}{#2endyear}{#2endmonth}{#2endday}}}}}} + +\newrobustcmd*{\mkbibrangetrunc}[2]{% + \iffieldundef{#2year} + {} + {\printtext[#2date]{% + \iffieldsequal{#2year}{#2endyear} + {\iffieldsequal{#2month}{#2endmonth} + {\csuse{mkbibdate#1}{}{}{#2day}} + {\csuse{mkbibdate#1}{}{#2month}{#2day}}} + {\csuse{mkbibdate#1}{#2year}{#2month}{#2day}}% + \iffieldundef{#2endyear} + {} + {\iffieldequalstr{#2endyear}{} + {\mbox{\bibdatedash}} + {\bibdatedash + \csuse{mkbibdate#1}{#2endyear}{#2endmonth}{#2endday}}}}}} + +\newrobustcmd*{\mkbibrangefullextra}[2]{% + \iffieldundef{#2year} + {} + {\printtext[#2date]{% + \printtext{% + \csuse{mkbibdate#1}{#2year}{#2month}{#2day}}% + \iffieldundef{#2endyear} + {\printfield{extrayear}} + {\iffieldequalstr{#2endyear}{} + {\printfield{extrayear}% + \printtext{\mbox{\bibdatedash}}} + {\printtext{% + \bibdatedash + \csuse{mkbibdate#1}{#2endyear}{#2endmonth}{#2endday}% + \printfield{extrayear}}}}}}} + +\newrobustcmd*{\mkbibrangetruncextra}[2]{% + \iffieldundef{#2year} + {} + {\printtext[#2date]{% + \printtext{% + \iffieldsequal{#2year}{#2endyear} + {\iffieldsequal{#2month}{#2endmonth} + {\csuse{mkbibdate#1}{}{}{#2day}} + {\csuse{mkbibdate#1}{}{#2month}{#2day}}} + {\csuse{mkbibdate#1}{#2year}{#2month}{#2day}}}% + \iffieldundef{#2endyear} + {\printfield{extrayear}} + {\iffieldequalstr{#2endyear}{} + {\printfield{extrayear}% + \printtext{\mbox{\bibdatedash}}} + {\printtext{% + \bibdatedash + \csuse{mkbibdate#1}{#2endyear}{#2endmonth}{#2endday}% + \printfield{extrayear}}}}}}} + +\expandafter\newrobustcmd +\expandafter*\csname mkbibrangeiso8601\endcsname[1]{% + \iffieldundef{#1year} + {} + {\printtext[#1date]{% + \blx@isodate{#1year}{#1month}{#1day}% + \iffieldundef{#1endyear} + {} + {\addslash\blx@isodate{#1endyear}{#1endmonth}{#1endday}}}}} + +\expandafter\newrobustcmd +\expandafter*\csname mkbibrangeiso8601extra\endcsname[1]{% + \iffieldundef{#1year} + {} + {\printtext[#1date]{% + \blx@isodate[extrayear]{#1year}{#1month}{#1day}% + \iffieldundef{#1endyear} + {} + {\addslash\blx@isodate{#1endyear}{#1endmonth}{#1endday}}}}} + +\newrobustcmd*{\blx@isodate}[4][]{% + \thefield{#2}\ifblank{#1}{}{\printfield{#1}}% + \iffieldundef{#3}{}{\mbox{-}\thefield{#3}}% + \iffieldundef{#4}{}{\mbox{-}\thefield{#4}}} + +\newrobustcmd*{\mkbibdatelong}[3]{} +\newrobustcmd*{\mkbibdateshort}[3]{} +\newrobustcmd*{\bibrangedash}{\textendash} +\newrobustcmd*{\bibrangessep}{,\space} +\newrobustcmd*{\bibdatedash}{\bibrangedash} +\newrobustcmd*{\finalandcomma}{} +\newrobustcmd*{\mkbibordinal}[1]{#1} +\newrobustcmd*{\mkbibmascord}{\mkbibordinal} +\newrobustcmd*{\mkbibfemord}{\mkbibordinal} +\newrobustcmd*{\mkbibneutord}{\mkbibordinal} +\newrobustcmd*{\mkbibmonth}[1]{% + \ifcase0#1\relax + \blx@warning@entry{Month out of range or not an integer}% + \or\abx@bibmonth{january}% + \or\abx@bibmonth{february}% + \or\abx@bibmonth{march}% + \or\abx@bibmonth{april}% + \or\abx@bibmonth{may}% + \or\abx@bibmonth{june}% + \or\abx@bibmonth{july}% + \or\abx@bibmonth{august}% + \or\abx@bibmonth{september}% + \or\abx@bibmonth{october}% + \or\abx@bibmonth{november}% + \or\abx@bibmonth{december}% + \else + \blx@warning@entry{Month out of range}#1% + \fi} + +\protected\def\blx@imc@printdate{} +\protected\def\blx@imc@printdateextra{} +\protected\def\blx@imc@printurldate{} +\protected\def\blx@imc@printeventdate{} +\protected\def\blx@imc@printorigdate{} + +\let\blx@imc@mkdatezeros\@firstofone +\protected\def\blx@imc@stripzeros#1{% + \begingroup + \setbox\@tempboxa=\hbox\bgroup + \aftergroup\endgroup + \abx@hook@xsanitize + \if0#1\relax + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {\@tempcnta#1\relax + \expandafter\egroup + \number\@tempcnta + \@tempcnta#1\relax} + {\egroup#1}} + +\blx@regimcs{% + \printdate \printdateextra \printurldate \printeventdate + \printorigdate \stripzeros \mkdatezeros} + +% {<language>}{<strings>} + +\def\blx@maplang#1#2{% + \csxappto{extras#1}{% + \noexpand\blx@resetpunct + \expandafter\noexpand\csname abx@extras@#2\endcsname + \expandafter\noexpand\csname abx@strings@#2\endcsname}% + \csxappto{noextras#1}{% + \noexpand\blx@resetpunct + \expandafter\noexpand\csname abx@noextras@#2\endcsname}} + +%% Babel interface + +\def\blx@beglang{\blx@clearlang\begingroup} +\def\blx@endlang{\endgroup} +\let\blx@hook@endlang\@empty +\let\blx@hook@initlang\@empty +\def\blx@hyphenreset{% + \ifcsundef{l@\blx@languagename} + {} + {\language\csname l@\blx@languagename\endcsname\relax}% + \ifcsundef{\blx@languagename hyphenmins} + {\blx@sethyphenmins\tw@\thr@@} + {\expandafter\expandafter\expandafter\blx@sethyphenmins + \csname\blx@languagename hyphenmins\endcsname}} +\def\blx@sethyphenmins#1#2{% + \lefthyphenmin#1\relax + \righthyphenmin#2\relax} + +\begingroup +\@makeother\# +\gdef\blx@mkbabel{% + \pretocmd\select@language{\blx@langsetup{#1}} + {\ifdef\blx@thelangenv + {\def\blx@beglang{% + \blx@clearlang + \begingroup + \blx@imc@iffieldundef{hyphenation} + {} + {\blx@hook@initlang + \def\blx@endlang{% + \blx@hook@endlang + \csname end\blx@thelangenv\endcsname + \endgroup}% + \csname\blx@thelangenv\expandafter\endcsname + \expandafter{\abx@field@hyphenation}}}} + {}% + \blx@langsetup\bbl@main@language} + {\blx@err@patch{'babel' package}% + \blx@mknobabel}} +\endgroup + +\def\blx@mknobabel{% + \blx@lbxinput{\blx@languagename} + {} + {\blx@err@nolang{\blx@languagename}}} + +\newrobustcmd*{\DeclareRedundantLanguages}[2]{% + \begingroup + \ifblank{#2} + {\def\do##1{% + \global\csundef{blx@rlm@##1}% + \global\csundef{blx@rlm@lang##1}}} + {\def\do##1{% + \csxdef{blx@rlm@##1}{#2}% + \csxdef{blx@rlm@lang##1}{#2}}}% + \docsvlist{#1}% + \endgroup} + +\def\blx@clearlang{% + \iftoggle{blx@clearlang} + {\iflistundef{language} + {} + {\ifnumgreater{\value{language}}{1} + {} + {\expandafter\blx@clearlang@i\abx@list@language}}} + {}} + +\def\blx@clearlang@i#1{% + \ifcsdef{blx@rlm@#1} + {\expandafter\expandafter\expandafter\forcsvlist + \expandafter\expandafter\expandafter\blx@clearlang@ii + \expandafter\expandafter\expandafter{% + \csname blx@rlm@#1\endcsname}} + {}} + +\def\blx@clearlang@ii#1{% + \ifdefstring\languagename{#1} + {\clearlist{language}} + {}} + +% Used to pass regexps to .bcf +\def\regexp#1{\expandafter\zap@space\detokenize{#1} \@empty} + +% Have to do this otherwise the '~'s in the .bcf strings are not expanded +% This is done for the .bcf later in the style but since we have to do all the +% data model things much earlier, have to set this here and reset on finishing +\let\blx@tsave~ +\let~\space +% Data model and supporting macros must be loaded early +\blx@inputonce{blx-dm.def}{biblatex default data model}{}{}{}{} +\let~\blx@tsave + +% We need to now load any style data model +% Order of precedence is: +% <datamodel option>.dbx, <style option>.dbx +% This has to be done before the real options processing so we need to +% pick out just these two options to look at. You can't do this with keyval, +% you have to use kvoptions. So, pick out these two, pass through all +% others and delete datamodel option as we don't care about it when we come +% to really set options below +\SetupKeyvalOptions{ + family=blx@opt@eldt, + prefix=blx@opt@eldt@} +\DeclareStringOption{datamodel} +\DeclareStringOption{style} +\DeclareDefaultOption{} +\ProcessLocalKeyvalOptions{blx@opt@eldt} +\ifx\blx@opt@eldt@datamodel\@empty + \blx@inputonce{\blx@opt@eldt@style.dbx}{biblatex style data model}{}{}{}{} +\else + \blx@inputonce{\blx@opt@eldt@datamodel.dbx}{biblatex style data model}{}{}{}{} +\fi +\DisableKeyvalOption[action=undef,local]{blx@opt@eldt}{datamodel} + +% Override with user-defined data model if there is one +\blx@inputonce{biblatex-dm.cfg}{biblatex custom data model}{}{}{}{} + +% These are internal fields which are not part of the data model but +% which need to be dealt with along with data model fields in places +\def\abx@dointernalfields{% + \do{childentrykey}% + \do{entrykey}% + \do{entryset}% + \do{entrysetcount}% + \do{entrytype}% + \do{extraalpha}% + \do{extratitle}% + \do{extratitleyear}% + \do{extrayear}% + \do{fullhash}% + \do{labelalpha}% + \do{labelnumber}% + \do{labeltitle}% + \do{labeltitleyear}% + \do{labelyear}% + \do{localnumber}% + \do{namehash}% + \do{prefixnumber}% + \do{sortinit}% +} + +\def\abx@dobooleans{% + \do{singletitle}% +} +\def\do#1{% + \newcounter{#1}% + \newcounter{saved#1}% + \csedef{the#1}{\noexpand\the\expandonce{\csname c@#1\endcsname}}% + \csedef{thesaved#1}{\noexpand\the\expandonce{\csname c@saved#1\endcsname}}% + \appto\abx@dobooleans{\do{more#1}}} +\dolistcsloop{blx@biber@datamodel@names}\do{labelname}% +\dolistcsloop{blx@biber@datamodel@lists}\do{pageref}% +\def\do#1{\newtoggle{abx@bool@#1}} +\abx@dobooleans + +\protected\def\blx@resetdata{% + \let\blx@saved@do\do + \let\do\blx@imc@clearname + \dolistcsloop{blx@biber@datamodel@names}\do{labelname}% + \let\do\blx@imc@clearlist + \dolistcsloop{blx@biber@datamodel@lists}\do{pageref}% + \let\do\blx@imc@clearfield + \dolistcsloop{blx@biber@datamodel@fields}\do{options}% + \abx@dointernalfields + \def\do##1{\togglefalse{abx@bool@##1}}% + \abx@dobooleans + \let\do\blx@saved@do + \c@citecounter\z@ + \iftoggle{blx@bibliography} + {\c@maxnames\blx@maxbibnames\relax + \c@minnames\blx@minbibnames\relax} + {\c@maxnames\blx@maxcitenames\relax + \c@minnames\blx@mincitenames\relax}% + \c@maxitems\blx@maxitems\relax + \c@minitems\blx@minitems\relax} + +\protected\def\blx@saveentry{% + \let\blx@saved@do\do + \let\do\blx@savename + \dolistcsloop{blx@biber@datamodel@names}\do{labelname}% + \let\do\blx@savelist + \dolistcsloop{blx@biber@datamodel@lists}\do{pageref}% + \let\do\blx@savefield + \dolistcsloop{blx@biber@datamodel@fields}\do{options}% + \abx@dointernalfields + \let\do\blx@savebool + \abx@dobooleans + \c@savedcitecounter\c@citecounter + \let\do\blx@saved@do} + +\protected\def\blx@savename#1{% + \csletcs{etb@tgl@abx@bool@moresaved#1}{etb@tgl@abx@bool@more#1}% + \csletcs{abx@name@saved#1}{abx@name@#1}% + \csname c@saved#1\endcsname\csname c@#1\endcsname} + +\protected\def\blx@savelist#1{% + \csletcs{etb@tgl@abx@bool@moresaved#1}{etb@tgl@abx@bool@more#1}% + \csletcs{abx@list@saved#1}{abx@list@#1}% + \csname c@saved#1\endcsname\csname c@#1\endcsname} + +\protected\def\blx@savefield#1{% + \csletcs{abx@field@saved#1}{abx@field@#1}} + +\protected\def\blx@savebool#1{% + \csletcs{abx@bool@saved#1}{abx@bool@#1}} + +% {<code>} + +\protected\long\def\blx@bbl@preamble#1{% + \gappto\abx@preamble{#1}} + +% {<message>} + +\protected\def\blx@bbl@warn#1{% + \begingroup + \def\item{\MessageBreak-\space}% + \def\break{\MessageBreak\space\space}% + \edef\blx@tempa{% + Biber reported the following issues% + \ifdef\abx@field@entrykey + {\MessageBreak with '\abx@field@entrykey'} + {}% + :#1}% + \blx@warning@noline{\blx@tempa}% + \endgroup} + +% {<field>}{<code>} + +\newrobustcmd{\DeclareFieldInputHandler}[2]{% + \ifblank{#2} + {\csundef{blx@fih@#1}} + {\long\csdef{blx@fih@#1}##1{#2}}} +\@onlypreamble\DeclareFieldInputHandler + +% {<list>}{<code>} + +\newrobustcmd*{\DeclareListInputHandler}[2]{% + \ifblank{#2} + {\csundef{blx@lih@#1}} + {\csdef{blx@lih@#1}##1{#2}}} +\@onlypreamble\DeclareListInputHandler + +% {<name>}{<code>} + +\newrobustcmd*{\DeclareNameInputHandler}[2]{% + \ifblank{#2} + {\csundef{blx@nih@#1}} + {\csdef{blx@nih@#1}##1{#2}}} +\@onlypreamble\DeclareNameInputHandler + +% {<entrykey>}{<refsection>}{<field>}{<value>} + +\long\def\blx@bbl@addentryfield#1#2#3#4{% + \csxappto{blx@data@#2@#1}{% + \def\expandafter\noexpand\csname abx@field@#3\endcsname{#4}}} + +% {<field>}{<value>} + +\long\def\blx@bbl@addfield#1#2{% + \csxappto\blx@bbl@data{% + \def\expandafter\noexpand\csname abx@field@#1\endcsname{#2}}} + +\protected\long\def\blx@bbl@fielddef#1#2{% + \def\NewValue{#2}% + \ifcsdef{blx@fih@#1} + {\csname blx@fih@#1\endcsname{#2}% + \ifdefvoid\NewValue} + {\@secondoftwo} + {} + {\blx@bbl@addfield{#1}{\expandonce\NewValue}}} + +\protected\long\def\blx@bbl@fieldedef#1#2{% + \edef\NewValue{#2}% + \ifcsdef{blx@fih@#1} + {\csname blx@fih@#1\expandafter + \endcsname\expandafter{\NewValue}% + \ifdefvoid\NewValue} + {\@secondoftwo} + {} + {\blx@bbl@addfield{#1}{\NewValue}}} + +\protected\long\def\blx@bbl@stringdef#1#2{% + \begingroup + \edef\blx@tempa{\endgroup + \blx@bbl@fielddef{#1}{\detokenize{#2}}}% + \blx@tempa} + +% {<field>} + +\protected\def\blx@bbl@verbdef#1{% + \begingroup + \let\verb\blx@bbl@verbadd + \def\blx@tempa{#1}% + \let\NewValue\@empty} + +\protected\def\blx@bbl@verbend{% + \ifcsdef{blx@fih@\blx@tempa} + {\csname blx@fih@\blx@tempa\expandafter + \endcsname\expandafter{\NewValue}% + \ifdefvoid\NewValue} + {\@secondoftwo} + {} + {\blx@bbl@addfield{\blx@tempa}{\NewValue}}% + \endgroup} + +\protected\def\blx@bbl@verbadd{% + \begingroup + \let\do\@makeother + \dospecials + \catcode\endlinechar=12\relax + \blx@bbl@verbadd@i} + +\begingroup +\catcode`\<=12 +\catcode`\>=12 +\uccode`\<=`\ % +\uccode`\>=\endlinechar +\uppercase{\gdef\blx@bbl@verbadd@i<#1>}{% + \endgroup + \edef\NewValue{\NewValue\detokenize{#1}}} +\endgroup + +% {<counter>}{<value>} + +\protected\long\def\blx@bbl@countdef#1#2{% + \csxappto\blx@bbl@data{% + \csname c@#1\endcsname#2\relax}} + +% {<boolean>} + +\protected\def\blx@bbl@booltrue#1{% + \csgappto\blx@bbl@data{% + \toggletrue{abx@bool@#1}}} + +\protected\def\blx@bbl@boolfalse#1{% + \csgappto\blx@bbl@data{% + \togglefalse{abx@bool@#1}}} + +% {<list}{<itemcount>}{<value>} + +\protected\def\blx@bbl@listdef#1#2#3{% + \def\NewCount{#2}% + \def\NewValue{#3}% + \ifcsdef{blx@lih@#1} + {\csname blx@lih@#1\endcsname{#3}% + \ifdefvoid\NewValue} + {\@secondoftwo} + {} + {\csxappto\blx@bbl@data{% + \csname c@#1\endcsname\NewCount\relax + \def\expandafter\noexpand\csname abx@list@#1\endcsname + {\expandonce\NewValue}}}} + + +% {<name>}{<itemcount>}{<value>} + +\protected\def\blx@bbl@namedef#1#2#3#4{% + \def\NewCount{#2}% + \def\NewOption{#3}% + \def\NewValue{#4}% + \ifcsdef{blx@nih@#1} + {\csname blx@nih@#1\endcsname{#4}% + \ifdefvoid\NewValue} + {\@secondoftwo} + {} + {\csxappto\blx@bbl@data{% + \csname c@#1\endcsname\NewCount\relax + \def\expandafter\noexpand\csname abx@name@#1\endcsname + {{\expandonce\NewOption}{\expandonce\NewValue}}}}} + +% {<entrykey>,...} + +\protected\def\blx@bbl@set#1{% + \blx@bbl@fieldedef{entryset}{\detokenize{#1}}% + \csxdef{blx@setp@\the\c@refsection @\abx@field@entrykey}{\detokenize{#1}}% + \begingroup + \blx@tempcnta\z@ + \expandafter\forcsvlist + \expandafter\blx@bbl@set@i + \expandafter{\detokenize{#1}}% + \endgroup} + +\def\blx@bbl@set@i#1{% + \advance\blx@tempcnta\@ne + \csxdef{blx@seti@\the\c@refsection @#1}{\the\blx@tempcnta}} + +% {<entrykey>} + +\protected\def\blx@bbl@inset#1{% + \toggletrue{blx@setonly}% + \blx@bbl@fieldedef{entryset}{\detokenize{#1}}% + \csxdef{blx@setc@\the\c@refsection @\abx@field@entrykey}{\detokenize{#1}}} + +% {<keyword>,...} + +\protected\def\blx@bbl@keyw#1{% + \iftoggle{blx@skipbib} + {} + {\forcsvlist{\blx@addkeyword{\abx@field@entrykey}}{#1}% + \blx@bbl@fielddef{keywords}{#1}}} + +\def\blx@addkeyword#1#2{% + \listcsxadd{blx@keyw@\the\c@refsection @\detokenize{#2}}{#1}} + +% {<options>} + +\protected\long\def\blx@bbl@options#1{% + \begingroup + \let\blx@tempa\@empty + \forcsvlist\blx@bbl@options@i{#1}% + \edef\blx@tempa{% + \endgroup + \ifx\blx@tempa\@empty + \else + \def\noexpand\abx@field@options{\expandonce\blx@tempa}% + \fi}% + \blx@tempa} + +\long\def\blx@bbl@options@i#1{\blx@bbl@options@ii#1==&} + +\long\def\blx@bbl@options@ii#1=#2=#3&{% + \ifcsundef{KV@blx@opt@ent@#1} + {\blx@warning@noline{% + Ignoring undefined option '#1'\MessageBreak + at entry '\abx@field@entrykey'}} + {\eappto\blx@tempa{% + \ifx\blx@tempa\@empty\else,\fi + \unexpanded{#1}\ifblank{#2}{}{=\unexpanded{#2}}}}} + +% \blx@data@<section>@<entrykey> data hook +% key -> data +% \blx@miss@<section> missing entries (blacklist) +% section -> keys [internal list] +% \blx@sort@<section> all entries, sorted +% section -> keys [internal list] +% \blx@sbib@<section> all entries in bibliography, sorted +% section -> keys [internal list] +% \blx@bsee@<section> seen citations, document body +% section -> keys [internal list] +% \blx@fsee@<section> seen citations, footnotes +% section -> keys [internal list] +% \blx@type@<section>@<entrytype> type hash +% type -> keys [internal list] +% \blx@subt@<section>@<entrytype> subtype hash +% subtype -> keys [internal list] +% \blx@segm@<section>@<segment> segment hash +% segment -> keys [internal list] +% \blx@keyw@<section>@<keyword> keyword hash +% keyword -> keys [internal list] +% \blx@losh@<section> shorthand hash +% section -> keys [internal list] +% \blx@slistsbib@<section>@<sectiontype>@<sectionname> all entries in +% bibliography of a type sorted +% in a particular way +% section -> keys [internal list] +% sectiontype -> "shorthand" or "entry" +% sectionname -> sort scheme name +% \blx@slists@<section>@<sectiontype>@<sectionname> all entries of a type sorted +% in a particular way +% section -> keys [internal list] +% sectiontype -> "shorthand" or "entry" +% sectionname -> sort scheme name +% \blx@catg@<category> category hash, global +% category -> keys [internal list] +% \blx@set@<section>@<entrykey> parent -> child mapping (dynamic entry sets) +% key -> key,key,... [csv list] +% \blx@setp@<section>@<entrykey> parent -> child mapping (entry sets) +% key -> key,key,... [csv list] +% \blx@setc@<section>@<entrykey> child -> parent mapping (entry sets) +% key -> key +% \blx@seti@<section>@<entrykey> child -> index mapping (entry sets) +% key -> index +% \blx@pref@<section>@<entrykey> pageref hook, temporary +% key -> pages [internal list] + +\def\blx@ifdata#1{% + \ifcsdef{blx@data@\the\c@refsection @#1}} + +\def\blx@getdata#1{% + \csuse{blx@data@\the\c@refsection @#1}% + \blx@setcitecounter} + +\def\blx@getdata@cite#1{% + \ifcsdef{blx@setc@\the\c@refsection @#1} + {\expandafter\expandafter\expandafter\blx@getdata + \expandafter\expandafter\expandafter{% + \csname blx@setc@\the\c@refsection @#1\endcsname}% + \blx@ifdata{#1} + {\def\abx@field@childentrykey{#1}% + \begingroup + \blx@getdata{#1}% + \edef\blx@tempa{\endgroup + \def\noexpand\abx@field@childentrytype{\abx@field@entrytype}}% + \blx@tempa} + {}} + {\blx@getdata{#1}}% + \ifcsdef{blx@seti@\the\c@refsection @#1} + {\letcs\abx@field@entrysetcount{blx@seti@\the\c@refsection @#1}} + {}} + +\def\blx@execute{% + \blx@imc@thefield{execute}} + +\def\blx@setoptions@entry{% + \blx@imc@iffieldundef{options} + {} + {\begingroup + \edef\blx@tempa{\endgroup + \noexpand\setkeys{blx@opt@ent}{\abx@field@options}}% + \blx@tempa + \blx@checkoptions@entry}} + +\def\blx@setoptions@type#1{% + \ifcsdef{blx@opts@type@#1} + {\begingroup + \edef\blx@tempa{\endgroup + \noexpand\setkeys{blx@opt@typ}{\csuse{blx@opts@type@#1}}}% + \blx@tempa} + {}} + +\def\blx@checkoptions@global{} +\def\blx@checkoptions@type{} +\def\blx@checkoptions@entry{} + +\def\blx@entrysetcount{% + \ifdef\abx@field@entrykey + {\ifcsdef{blx@seti@\the\c@refsection @\abx@field@entrykey} + {\letcs\abx@field@entrysetcount{% + blx@seti@\the\c@refsection @\abx@field@entrykey}} + {}} + {}} + +% {<section>} + +\def\blx@bbl@refsection#1{% + \begingroup + \c@refsection#1\relax} + +\def\blx@bbl@endrefsection{% + \endgroup + \csnumgdef{blx@labelnumber@\the\c@refsection}{0}% + \iftoggle{blx@reencode}{\blx@reencode}{}} + +% {<entrykey>} + +\protected\def\blx@bbl@missing#1{% + \listcsxadd{blx@miss@\the\c@refsection}{\detokenize{#1}}% + \blx@warning@noline{% + The following entry could not be found\MessageBreak + in the database% + \ifnumgreater\c@refsection\z@ + { (refsection \the\c@refsection)} + {}:\MessageBreak + \detokenize{#1}\MessageBreak + Please verify the spelling and rerun\MessageBreak + LaTeX afterwards}} + +\protected\def\blx@bbl@keyalias#1#2{% + \csgdef{blx@keyalias@\the\c@refsection @#1}{\detokenize{#2}}} + +% {<entrykey>}{<entrytype>}{<options>} + +\protected\def\blx@bbl@entry#1#2#3{% + \begingroup + \edef\abx@field@entrykey{\detokenize{#1}}% + \blx@setoptions@type{#2}% + \blx@bbl@options{#3}% + \blx@setoptions@entry + \edef\blx@bbl@data{blx@data@\the\c@refsection @\abx@field@entrykey}% + \csuse\blx@bbl@data + \cslet\blx@bbl@data\@empty + \blx@bbl@addfield{entrykey}{\abx@field@entrykey}% + \blx@bbl@addfield{entrytype}{#2}% + \blx@imc@iffieldundef{options} + {} + {\blx@bbl@fieldedef{options}{\expandonce\abx@field@options}}} + +\protected\def\blx@bbl@endentry{% + \csuse\blx@bbl@data + \ifcsundef{blx@pref@\the\c@refsection @\abx@field@entrykey} + {} + {\blx@addpageref{\abx@field@entrykey}}% + \nottoggle{blx@setonly} + {\listcsxadd{blx@slists@\the\c@refsection @entry@\blx@slist@name}{\abx@field@entrykey}} + {\toggletrue{blx@skipbib}% + \toggletrue{blx@skiplos}% + \toggletrue{blx@skiplab}}% + \nottoggle{blx@skipbib} + {\listcsxadd{blx@slistsbib@\the\c@refsection @entry@\blx@slist@name}{\abx@field@entrykey}% + \listcsxadd{blx@type@\the\c@refsection @\abx@field@entrytype}{\abx@field@entrykey}% + \ifdef\abx@field@entrysubtype + {\listcsxadd{blx@subt@\the\c@refsection @\abx@field@entrysubtype}{\abx@field@entrykey}} + {}} + {}% + \nottoggle{blx@skiplos} + {\blx@bbl@shorthand} + {}% + \nottoggle{blx@skiplab} + {\iftoggle{blx@labelnumber} + {\blx@bbl@labelnumber} + {}% + \iftoggle{blx@labelalpha} + {\blx@bbl@labelalpha} + {}% + \iftoggle{blx@labeltitle} + {\blx@bbl@labeltitle} + {}% + \iftoggle{blx@labeltitleyear} + {\blx@bbl@labeltitleyear} + {}% + \iftoggle{blx@labelyear} + {\blx@bbl@labelyear} + {}% + \blx@bbl@prefixnumber} + {}% + \blx@bbl@titles + \blx@bbl@hooks + \endgroup} + +\def\blx@bbl@shorthand{% + \ifundef\abx@field@shorthand + {} + {\blx@setlabwidth{\shorthandwidth}{% + \csuse{abx@ffd@*@shorthandwidth}{\abx@field@shorthand}}}} + +\def\blx@bbl@labelnumber{% + \ifdefempty\abx@field@localnumber + {} + {\ifundef\abx@field@shorthand + {\ifdef\abx@field@localnumber + {} + {\csnumgdef{blx@labelnumber@\the\c@refsection}{% + \csuse{blx@labelnumber@\the\c@refsection}+1}% + \edef\abx@field@localnumber{% + \csuse{blx@labelnumber@\the\c@refsection}}}% + \blx@bbl@fieldedef{labelnumber}{\abx@field@localnumber}% + \iftoggle{blx@skipbib} + {} + {\blx@setlabwidth{\labelnumberwidth}{% + \csuse{abx@ffd@*@labelnumberwidth}{% + \ifdef\abx@field@prefixnumber + {\csuse{abx@ffd@*@prefixnumber}{\abx@field@prefixnumber}} + {}% + \abx@field@localnumber}}}} + {\csgappto\blx@bbl@data{% + \let\abx@field@labelnumber\abx@field@shorthand}% + \iftoggle{blx@skipbib} + {} + {\blx@setlabwidth{\labelnumberwidth}{% + \csuse{abx@ffd@*@labelnumberwidth}{\abx@field@shorthand}}}}}} + +\def\blx@bbl@prefixnumber{% + \ifdef\abx@field@prefixnumber + {\blx@bbl@fieldedef{prefixnumber}{\abx@field@prefixnumber}} + {}} + +\def\blx@bbl@labelalpha{% + \ifundef\abx@field@labelalpha + {} + {\ifundef\abx@field@extraalpha + {} + {\ifnum\abx@field@extraalpha>\c@maxextraalpha + \global\c@maxextraalpha\abx@field@extraalpha\relax + \fi}% + \iftoggle{blx@skipbib} + {} + {\blx@setlabwidth{\labelalphawidth}{% + \csuse{abx@ffd@*@labelalphawidth}{% + \ifdef\abx@field@prefixnumber + {\csuse{abx@ffd@*@prefixnumber}{\abx@field@prefixnumber}} + {}% + \csuse{abx@ffd@*@labelalpha}{\abx@field@labelalpha}% + \ifundef\abx@field@extraalpha + {} + {\csuse{abx@ffd@*@extraalpha}{\abx@field@extraalpha}}}}}}} + +\def\blx@bbl@labeltitle{% + \ifundef\abx@field@extratitle + {} + {\ifnum\abx@field@extratitle>\c@maxextratitle + \global\c@maxextratitle\abx@field@extratitle\relax + \fi}} + +\def\blx@bbl@labeltitleyear{% + \ifundef\abx@field@extratitleyear + {} + {\ifnum\abx@field@extratitleyear>\c@maxextratitleyear + \global\c@maxextratitleyear\abx@field@extratitleyear\relax + \fi}} + +\def\blx@bbl@labelyear{% + \ifundef\abx@field@extrayear + {} + {\ifnum\abx@field@extrayear>\c@maxextrayear + \global\c@maxextrayear\abx@field@extrayear\relax + \fi}} + +\def\blx@bbl@titles{% + \ifundef\abx@field@indextitle + {\csgappto\blx@bbl@data{% + \let\abx@field@indextitle\abx@field@title}} + {}% + \ifundef\abx@field@indexsorttitle + {\csgappto\blx@bbl@data{% + \let\abx@field@indexsorttitle\abx@field@indextitle}} + {}} + +\def\blx@bbl@hooks{% + \ifcsundef{blx@hook@bblitem@*} + {\ifcsundef{blx@hook@bblitem@\abx@field@entrytype} + {} + {\csuse\blx@bbl@data + \csuse{blx@hook@bblitem@\abx@field@entrytype}}} + {\csuse\blx@bbl@data + \csuse{blx@hook@bblitem@*}% + \csuse{blx@hook@bblitem@\abx@field@entrytype}}} + +\newrobustcmd*{\AtDataInput}[1][*]{\csgappto{blx@hook@bblitem@#1}} +\@onlypreamble\AtDataInput + +\def\blx@setlabwidth#1#2{% + \begingroup + \settowidth{\@tempdima}{\bibfont#2}% + \ifnum\@tempdima>#1% + \global#1\@tempdima + \fi + \endgroup} + +\def\blx@bblstart{% + \let\preamble\blx@bbl@preamble + \let\warn\blx@bbl@thewarn + \let\refsection\blx@bbl@refsection + \let\endrefsection\blx@bbl@endrefsection + \let\entry\blx@bbl@entry + \let\endentry\blx@bbl@endentry + \let\missing\blx@bbl@missing + \let\keyalias\blx@bbl@keyalias + \let\sortlist\blx@bbl@slist + \let\endsortlist\blx@bbl@endslist + \let\set\blx@bbl@set + \let\inset\blx@bbl@inset + \let\keyw\blx@bbl@keyw + \let\name\blx@bbl@namedef + \let\list\blx@bbl@listdef + \let\field\blx@bbl@fielddef + \let\strng\blx@bbl@stringdef + \let\count\blx@bbl@countdef + \let\true\blx@bbl@booltrue + \let\false\blx@bbl@boolfalse + \let\verb\blx@bbl@verbdef + \let\endverb\blx@bbl@verbend} + +\def\blx@bblend{} + +% {<instcount>}{<entrykey>}{<refsection>}{<labelnumber>} + +\protected\def\blx@aux@number#1#2#3#4{% + \blx@bbl@addentryfield{\detokenize{#2}}{#3}{localnumber}{#4}% + \ifblank{#4} + {} + {\csgdef{blx@labelnumber@#3}{#4}% + \blx@addchecksum{#1}{#4}}} + +\AtEndDocument{% + \def\abx@aux@number#1#2#3#4{\blx@addchecksum{#1}{#4}}} + +\def\blx@addlabelnumber{% + \begingroup + \nottoggle{blx@skiplab} + {\iftoggle{blx@labelnumber} + {\ifundef\abx@field@shorthand + {\ifundef\abx@field@localnumber + {\iftoggle{blx@omitnumbers} + {\let\abx@field@localnumber\@empty} + {\csnumgdef{blx@labelnumber@\the\c@refsection}{% + \csuse{blx@labelnumber@\the\c@refsection}+1}% + \edef\abx@field@localnumber{\csuse{blx@labelnumber@\the\c@refsection}}% + \blx@bbl@addentryfield{\abx@field@entrykey}{\the\c@refsection}% + {localnumber}{\abx@field@localnumber}}% + \blx@auxwrite\@mainaux{}{% + \string\abx@aux@number{\the\c@instcount}{\abx@field@entrykey}% + {\the\c@refsection}{\abx@field@localnumber}}} + {}} + {}}% + {}} + {}% + \endgroup} + +\def\blx@addprefixnumber{% + \nottoggle{blx@skiplab} + {\ifdef\blx@prefixnumbers + {\ifundef\abx@field@shorthand + {\edef\abx@field@prefixnumber{\expandonce\blx@prefixnumbers}% + \ifundef\abx@field@prefixnumber + {\blx@bbl@addentryfield{\abx@field@entrykey}{\the\c@refsection}% + {prefixnumber}{\expandonce\abx@field@prefixnumber}} + {}% + \blx@auxwrite\@mainaux{}{% + \string\blx@aux@numprefix{\abx@field@entrykey}% + {\the\c@refsection}{\expandonce\abx@field@prefixnumber}}} + {}} + {}} + {}} + +% {<entrykey>}{<refsection>}{<numberprefix>} + +\protected\def\blx@aux@numprefix#1#2#3{% + \blx@bbl@addentryfield{\detokenize{#1}}{#2}{prefixnumber}{#3}} + +\def\blx@bbl@slist#1#2{% + \begingroup + \def\blx@slist@name{#2}% + % This macro (\key) will only be called in shorthand lists + \def\key##1{\listcsxadd{blx@slistsbib@\the\c@refsection @shorthand@#2}{\detokenize{##1}}}} +\let\blx@bbl@endslist\endgroup + +\def\blx@addpageref#1{% + \begingroup + \blx@tempcnta\z@ + \let\blx@tempa\@empty + \def\do##1{% + \appto\blx@tempa{{##1}}% + \advance\blx@tempcnta\@ne}% + \dolistcsloop{blx@pref@\the\c@refsection @#1}% + \edef\blx@tempa{\endgroup\noexpand\blx@bbl@listdef + {pageref}{\the\blx@tempcnta}{\blx@tempa}}% + \blx@tempa} + +%% Data input + +\def\blx@bblinput{% + \begingroup + \iftoggle{blx@reencode} + {\ifdef\inpenc@prehook + {\inpenc@prehook{}% + \inpenc@posthook{}} + {}% + \inputencoding\blx@bibencoding} + {}% + \blx@info@noline{Trying to load bibliographic data..}% + \blx@blxinit + \blx@bblfile@biber + \endgroup + \iftoggle{blx@reencode} + {\ifdef\@enablequotes + {\@enablequotes} + {}} + {}} + +\def\blx@bblfile@biber{% + \blx@secinit + \begingroup + \blx@bblstart + \blx@ifsigned{\jobname}{bbl} + {\InputIfFileExists{\jobname.bbl} + {\blx@info@noline{... file '\jobname.bbl' found}} + {\blx@info@noline{... file '\jobname.bbl' not found}% + \typeout{No file \jobname.bbl.}}} + {}% + \blx@bblend + \endgroup + \csnumgdef{blx@labelnumber@\the\c@refsection}{0}} + +\def\blx@reencode{% + \begingroup + \abx@hook@reencode + \let\protect\@unexpandable@protect + \def\do##1{\cslet{abx@name@##1}\relax}% + \dolistcsloop{blx@biber@datamodel@names}\do{labelname}% + \def\do##1{\cslet{abx@list@##1}\relax}% + \dolistcsloop{blx@biber@datamodel@lists}\do{pageref}% + \def\do##1{\cslet{abx@field@##1}\relax}% + \dolistcsloop{blx@biber@datamodel@fields}\do{options}% + \abx@dointernalfields + \long\def\abx@field@execute##1{% + \unexpanded{\abx@field@execute{##1}}}% + \csuse{abx@preamble}% + \def\do##1{% + \csxdef{blx@data@\the\c@refsection @##1}{% + \csuse{blx@data@\the\c@refsection @##1}}}% + \dolistcsloop{blx@slists@\the\c@refsection @entry@\blx@sorting}% + \endgroup} + +\def\abx@hook@reencode{% + \ifdef\@enablequotes{\@enablequotes}{}% + \def\IeC##1{\unexpanded{\IeC{##1}}}% + \let~\relax +} + +%% Bibliography + +% {<name>}{<start code>}[<end code>]{<item code>} + +\newrobustcmd*{\defbibenvironment}[4]{% + \long\csdef{blx@env@#1}{#2}% + \long\csdef{blx@endenv@#1}{#3}% + \long\csdef{blx@item@#1}{#4}} + +\defbibenvironment{bibliography} + {\list{}{% + \leftmargin\bibhang + \itemindent-\leftmargin + \itemsep\bibitemsep + \parsep\bibparsep}} + {\endlist} + {\item} + +\defbibenvironment{shorthands} + {\list{\thefield{shorthand}}{% + \labelwidth\shorthandwidth + \labelsep\biblabelsep + \leftmargin\labelwidth + \advance\leftmargin\labelsep + \itemsep\bibitemsep + \parsep\bibparsep + \def\makelabel##1{##1\hss}}} + {\endlist} + {\item} + +% {<name>}[<default>]{<code>} + +\newrobustcmd*{\defbibheading}[1]{% + \@ifnextchar[%] + {\blx@defbibheading{blx@head@#1}} + {\blx@defbibheading{blx@head@#1}[\bibname]}} + +\def\blx@defbibheading#1[#2]{% + \csundef{#1}% + \expandafter\newcommand\csname#1\endcsname[1][#2]} + +% {<name>}{<text>} + +\newrobustcmd*{\defbibnote}[1]{% + \long\csdef{blx@note@#1}} + +% {<name>}{<code>} + +\newrobustcmd*{\defbibfilter}[2]{% + \begingroup + \def\blx@flt@error{\csname blx@flt@errortrue\endcsname}% + \let\not\blx@flt@not \let\NOT\not + \let\and\blx@flt@and \let\AND\and + \let\or\blx@flt@or \let\OR\or + \letcs\({blx@flt@(} \letcs\){blx@flt@)}% + \def\section##1{\blx@flt@error}% + \def\segment##1{segment=##1}% + \def\type##1{type=##1}% + \def\subtype##1{subtype=##1}% + \def\keyword##1{keyword={##1}}% + \def\category##1{category={##1}}% + \edef\blx@tempa{\noexpand\blx@defbibfilter{#2}}% + \ifdef\blx@flt@errortrue + {\blx@err@filter} + {\let\the\relax + \let\blx@flt@item\relax + \edef\blx@tempa{\blx@tempa}% + \ifdef\blx@flt@errortrue + {\blx@err@filter} + {\csxdef{blx@filter@#1}{\blx@tempa}}}% + \endgroup} + +\def\blx@defbibfilter#1{% + \blx@defbibfilter@i#1 &} +\def\blx@defbibfilter@i#1 #2&{% + \blx@defbibfilter@ii#1==&% + \ifblank{#2}{}{\blx@defbibfilter@i#2 &}} +\def\blx@defbibfilter@ii#1=#2=#3&{% + \ifblank{#2} + {\ifblank{#1} + {} + {\ifcsdef{blx@flt@#1} + {\csname blx@flt@#1\endcsname} + {\blx@flt@error}}} + {\ifcsdef{blx@flt@#1} + {\csname blx@flt@#1\endcsname{\detokenize{#2}}} + {\blx@flt@error}}} + +\def\blx@flt@and{ and } +\def\blx@flt@or{ or } +\def\blx@flt@not{ not } +\csdef{blx@flt@(}{ ( } +\csdef{blx@flt@)}{ ) } +\def\blx@flt@segment#1{% + test {\xifinlistcs\blx@flt@item{blx@segm@\the\c@refsection @#1}}} +\def\blx@flt@type#1{% + test {\xifinlistcs\blx@flt@item{blx@type@\the\c@refsection @#1}}} +\def\blx@flt@subtype#1{% + test {\xifinlistcs\blx@flt@item{blx@subt@\the\c@refsection @#1}}} +\def\blx@flt@keyword#1{% + test {\xifinlistcs\blx@flt@item{blx@keyw@\the\c@refsection @#1}}} +\def\blx@flt@category#1{% + test {\xifinlistcs\blx@flt@item{blx@catg@#1}}} + +% {<name>}{<code>} + +\newrobustcmd*{\defbibcheck}[2]{% + \csdef{blx@bibcheck@#1}{% + \togglefalse{blx@skipentry}% + \def\skipentry{\toggletrue{blx@skipentry}}% + #2\undef\skipentry}} + +% options +% We need a 2-pass structure for options in \printbibliography and +% \printshorthands because section and/or sorting have to be set before any +% other options and these also determine which list to use for later filtering + +\define@key{blx@bib1}{segment}{} +\define@key{blx@bib1}{type}{} +\define@key{blx@bib1}{nottype}{} +\define@key{blx@bib1}{subtype}{} +\define@key{blx@bib1}{notsubtype}{} +\define@key{blx@bib1}{keyword}{} +\define@key{blx@bib1}{notkeyword}{} +\define@key{blx@bib1}{category}{} +\define@key{blx@bib1}{notcategory}{} +\define@key{blx@bib1}{filter}{} +\define@key{blx@bib1}{check}{} +\define@key{blx@bib1}{heading}{} +\define@key{blx@bib1}{env}{} +\define@key{blx@bib1}{title}{} +\define@key{blx@bib1}{prenote}{} +\define@key{blx@bib1}{postnote}{} +\define@key{blx@bib1}{resetnumbers}{} +\define@key{blx@bib1}{omitnumbers}{} +\define@key{blx@bib1}{prefixnumbers}{} + +\define@key{blx@bib2}{section}{} +\define@key{blx@bib2}{sorting}{} + +\define@key{blx@los1}{segment}{} +\define@key{blx@los1}{type}{} +\define@key{blx@los1}{nottype}{} +\define@key{blx@los1}{subtype}{} +\define@key{blx@los1}{notsubtype}{} +\define@key{blx@los1}{keyword}{} +\define@key{blx@los1}{notkeyword}{} +\define@key{blx@los1}{category}{} +\define@key{blx@los1}{notcategory}{} +\define@key{blx@los1}{filter}{} +\define@key{blx@los1}{check}{} +\define@key{blx@los1}{heading}{} +\define@key{blx@los1}{env}{} +\define@key{blx@los1}{title}{} +\define@key{blx@los1}{prenote}{} +\define@key{blx@los1}{postnote}{} + +\define@key{blx@los2}{section}{} +\define@key{blx@los2}{sorting}{} + +\define@key{blx@bib1}{sorting}{% + \ifcsundef{blx@biber@sorting@#1} + {\blx@err@invopt{sorting=#1}{}}% + {\blx@printbibchecks + \def\blx@tempc{#1}% + \edef\blx@tempd{% + \blx@xml@sorting{% + \csuse{blx@biber@sorting@#1}}}}} + +\define@key{blx@los1}{sorting}{% + \ifcsundef{blx@biber@sorting@#1} + {\blx@err@invopt{sorting=#1}{}}% + {\blx@printbibchecks + \def\blx@tempc{#1}% + \edef\blx@tempd{% + \blx@xml@sorting{% + \csuse{blx@biber@sorting@#1}}}}} + +\define@key{blx@bib1}{section}{% + \ifcsundef{blx@sections@#1} + {\blx@err@nosec{#1}} + {\c@refsection#1\relax + \def\blx@tempe{#1}}} + +\define@key{blx@los1}{section}{% + \ifcsundef{blx@sections@#1} + {\blx@err@nosec{#1}} + {\c@refsection#1\relax + \def\blx@tempe{#1}}} + +\define@key{blx@bbg}{section}{% + \ifcsundef{blx@sections@#1} + {\blx@err@nosec{#1}} + {\c@refsection#1\relax}} + +\define@key{blx@bbc}{section}{% + \ifcsundef{blx@sections@#1} + {\blx@err@nosec{#1}} + {\c@refsection#1\relax}} + +\define@key{blx@bib2}{segment}{\blx@key@segment{#1}} +\define@key{blx@los2}{segment}{\blx@key@segment{#1}} + +\def\blx@key@segment#1{% + \ifcsundef{blx@segm@\the\c@refsection @#1} + {\blx@error + {Segment '#1' not found in section '\the\c@refsection'} + {The reference segment '#1' could not be found in section '\the\c@refsection'}} + {\c@refsegment#1\relax + \blx@printbibchecks + \blx@filter\blx@tempa{blx@segm@\the\c@refsection @#1}}} + +\define@key{blx@bib2}{type}{\blx@key@type{#1}} +\define@key{blx@los2}{type}{\blx@key@type{#1}} + +\def\blx@key@type#1{% + \ifcsundef{blx@type@\the\c@refsection @#1} + {\blx@warning{Type '#1' not found}% + \let\blx@tempa\@empty} + {\blx@printbibchecks + \iftoggle{blx@tempb} + {\togglefalse{blx@tempb}% + \blx@filter\blx@tempa{blx@type@\the\c@refsection @#1}} + {\let\blx@tempa\@empty + \blx@error + {'type' used multiple times} + {When passing multiple filter options, each entry\MessageBreak + must satisfy all conditions (AND conjunction),\MessageBreak + hence some options may not be used twice.\MessageBreak + Use 'filter' and '\string\defbibfilter' with OR conjunctions}}}} + +\define@key{blx@bib2}{nottype}{\blx@key@nottype{#1}} +\define@key{blx@los2}{nottype}{\blx@key@nottype{#1}} + +\def\blx@key@nottype#1{% + \ifcsundef{blx@type@\the\c@refsection @#1} + {} + {\blx@printbibchecks + \blx@notfilter\blx@tempa{blx@type@\the\c@refsection @#1}}} + +\define@key{blx@bib2}{subtype}{\blx@key@subtype{#1}} +\define@key{blx@los2}{subtype}{\blx@key@subtype{#1}} + +\def\blx@key@subtype#1{% + \ifcsundef{blx@subt@\the\c@refsection @#1} + {\blx@warning{Subtype '#1' not found}% + \let\blx@tempa\@empty} + {\blx@printbibchecks + \iftoggle{blx@tempb} + {\togglefalse{blx@tempb}% + \blx@filter\blx@tempa{blx@subt@\the\c@refsection @#1}} + {\let\blx@tempa\@empty + \blx@error + {'subtype' used multiple times} + {When passing multiple filter options, each entry\MessageBreak + must satisfy all conditions (AND conjunction),\MessageBreak + hence some options may not be used twice.\MessageBreak + Use 'filter' and '\string\defbibfilter' with OR conjunctions}}}} + +\define@key{blx@bib2}{notsubtype}{\blx@key@notsubtype{#1}} +\define@key{blx@los2}{notsubtype}{\blx@key@notsubtype{#1}} + +\def\blx@key@notsubtype#1{% + \ifcsundef{blx@subt@\the\c@refsection @#1} + {} + {\blx@printbibchecks + \blx@notfilter\blx@tempa{blx@subt@\the\c@refsection @#1}}} + +\define@key{blx@bib2}{keyword}{\blx@key@keyword{#1}} +\define@key{blx@los2}{keyword}{\blx@key@keyword{#1}} + +\def\blx@key@keyword#1{% + \ifcsundef{blx@keyw@\the\c@refsection @\detokenize{#1}} + {\blx@warning{Keyword '\detokenize{#1}' not found}% + \let\blx@tempa\@empty} + {\blx@printbibchecks + \blx@filter\blx@tempa{blx@keyw@\the\c@refsection @\detokenize{#1}}}} + +\define@key{blx@bib2}{notkeyword}{\blx@key@notkeyword{#1}} +\define@key{blx@los2}{notkeyword}{\blx@key@notkeyword{#1}} + +\def\blx@key@notkeyword#1{% + \ifcsundef{blx@keyw@\the\c@refsection @\detokenize{#1}} + {} + {\blx@printbibchecks + \blx@notfilter\blx@tempa{blx@keyw@\the\c@refsection @\detokenize{#1}}}} + +\define@key{blx@bib2}{category}{\blx@key@category{#1}} +\define@key{blx@los2}{category}{\blx@key@category{#1}} + +\def\blx@key@category#1{% + \ifcsundef{blx@catg@\detokenize{#1}} + {\blx@warning{Category '\detokenize{#1}' not found}% + \let\blx@tempa\@empty} + {\blx@printbibchecks + \blx@filter\blx@tempa{blx@catg@\detokenize{#1}}}} + +\define@key{blx@bib2}{notcategory}{\blx@key@notcategory{#1}} +\define@key{blx@los2}{notcategory}{\blx@key@notcategory{#1}} + +\def\blx@key@notcategory#1{% + \ifcsundef{blx@catg@#1} + {} + {\blx@printbibchecks + \blx@notfilter\blx@tempa{blx@catg@#1}}} + +\define@key{blx@bib2}{filter}{\blx@key@filter{#1}} +\define@key{blx@los2}{filter}{\blx@key@filter{#1}} + +\def\blx@key@filter#1{% + \ifcsdef{blx@filter@#1} + {\blx@printbibchecks + \blx@bibfilter\blx@tempa{blx@filter@#1}} + {\let\blx@tempa\@empty + \blx@error + {Filter '#1' not found} + {The filter '#1' could not be found.\MessageBreak + Use \string\defbibfilter\space to define it}}} + +\define@key{blx@bib2}{check}{\blx@key@bibcheck{#1}} +\define@key{blx@los2}{check}{\blx@key@bibcheck{#1}} + +\def\blx@key@bibcheck#1{% + \ifcsdef{blx@bibcheck@#1} + {\letcs\blx@bibcheck{blx@bibcheck@#1}} + {\let\blx@tempa\@empty + \blx@error + {Check '#1' not found} + {The check '#1' could not be found.\MessageBreak + Use \string\defbibcheck\space to define it}}} + +\define@key{blx@bhd}{heading}{\blx@key@heading{#1}} +\define@key{blx@bib2}{heading}{\blx@key@heading{#1}} +\define@key{blx@los2}{heading}{\blx@key@heading{#1}} +\define@key{blx@bbs}{heading}{\blx@key@heading{#1}} +\define@key{blx@bbg}{heading}{\blx@key@heading{#1}} + +\def\blx@key@heading#1{% + \ifcsundef{blx@head@#1} + {\blx@error + {Heading '#1' not found} + {The heading '#1' could not be found.\MessageBreak + Use \string\defbibheading\space to define it}} + {\def\blx@theheading{#1}}} + +\define@key{blx@bib2}{env}{\blx@key@env{#1}} +\define@key{blx@los2}{env}{\blx@key@env{#1}} +\define@key{blx@bbs}{env}{\blx@key@env{#1}} +\define@key{blx@bbg}{env}{\blx@key@env{#1}} +\define@key{blx@bbc}{env}{\blx@key@env{#1}} + +\def\blx@key@env#1{% + \ifcsundef{blx@env@#1} + {\blx@error + {Environment '#1' not found} + {The environment '#1' could not be found.\MessageBreak + Use \string\defbibenvironment\space to define it}} + {\def\blx@theenv{#1}}} + +\define@key{blx@bhd}{title}{\def\blx@thetitle{#1}} +\define@key{blx@bib2}{title}{\def\blx@thetitle{#1}} +\define@key{blx@los2}{title}{\def\blx@thetitle{#1}} + +\define@key{blx@bib2}{prenote}{\blx@key@prenote{#1}} +\define@key{blx@los2}{prenote}{\blx@key@prenote{#1}} +\define@key{blx@bbs}{prenote}{\blx@key@prenote{#1}} +\define@key{blx@bbg}{prenote}{\blx@key@prenote{#1}} +\define@key{blx@bbc}{prenote}{\blx@key@prenote{#1}} +\def\blx@key@prenote#1{% + \ifcsundef{blx@note@#1} + {\blx@error + {Note '#1' not found} + {The note '#1' could not be found.\MessageBreak + Use \string\defbibnote\space to define it}} + {\def\blx@theprenote{#1}}} + +\define@key{blx@bib2}{postnote}{\blx@key@postnote{#1}} +\define@key{blx@los2}{postnote}{\blx@key@postnote{#1}} +\define@key{blx@bbs}{postnote}{\blx@key@postnote{#1}} +\define@key{blx@bbg}{postnote}{\blx@key@postnote{#1}} +\define@key{blx@bbc}{postnote}{\blx@key@postnote{#1}} + +\def\blx@key@postnote#1{% + \ifcsundef{blx@note@#1} + {\blx@error + {Note '#1' not found} + {The note '#1' could not be found.\MessageBreak + Use \string\defbibnote\space to define it}} + {\def\blx@thepostnote{#1}}} + +\define@key{blx@bib2}{resetnumbers}[true]{% + \ifstrequal{#1}{true} + {\iftoggle{blx@defernumbers} + {\csnumdef{blx@labelnumber@\the\c@refsection}{0}} + {\blx@warning{% + Option 'resetnumbers' requires 'defernumbers=true'.\MessageBreak + Ignoring 'resetnumbers=true'}}} + {}} + +\define@key{blx@bib2}{omitnumbers}[true]{% + \ifstrequal{#1}{true} + {\iftoggle{blx@defernumbers} + {\toggletrue{blx@omitnumbers}} + {\blx@warning{% + Option 'omitnumbers' requires 'defernumbers=true'.\MessageBreak + Ignoring 'omitnumbers=true'}}} + {}} + +\define@key{blx@bib2}{prefixnumbers}{% + \def\blx@prefixnumbers{#1}% + \iftoggle{blx@defernumbers} + {\csnumdef{blx@labelnumber@\the\c@refsection}{0}} + {\iftoggle{blx@labelnumber} + {\blx@warning{% + Option 'prefixnumbers' requires global\MessageBreak + 'defernumbers=true'}} + {}}} + +% [<options>] + +\newrobustcmd*{\printbibheading}{% + \begingroup + \edef\on@line{\on@line}% + \@ifnextchar[%] + {\blx@printbibheading} + {\blx@printbibheading[]}} + +\def\blx@printbibheading[#1]{% + \def\blx@theheading{bibliography}% + \let\blx@thetitle\@empty + \blx@safe@actives + \setkeys{blx@bhd}{#1}% + \blx@rest@actives + \blx@bibheading\blx@theheading\blx@thetitle + \endgroup} + +% [<options>] + +\newrobustcmd*{\printbibliography}{% + \begingroup + \edef\on@line{\on@line}% + \@ifnextchar[%] + {\blx@printbibliography} + {\blx@printbibliography[]}} + +\def\blx@printbibliography[#1]{% + \toggletrue{blx@tempa}% + \toggletrue{blx@tempb}% + \def\blx@theheading{bibliography}% + \def\blx@theenv{bibliography}% + \let\blx@theprenote\@empty + \let\blx@thepostnote\@empty + \let\blx@thetitle\@empty + % defaults + \let\blx@tempa\@empty% before there is a .bbl, this must not be undef + \let\blx@tempc\blx@sorting% sorting scheme name from "sorting" option + \edef\blx@tempd{% + \blx@xml@sorting{% + \csuse{blx@biber@sorting@\blx@sorting}}}% sorting scheme from "sorting" option + \edef\blx@tempe{\the\c@refsection}% default refsection is current + \blx@safe@actives + \setkeys{blx@bib1}{#1}% Set sorting and section only, if present ... + \blx@rest@actives + \ifcsvoid{blx@slistsbib@\blx@tempe @entry@\blx@tempc} + {} + {\letcs\blx@tempa{blx@slistsbib@\blx@tempe @entry@\blx@tempc}}% + {\ifcsvoid{blx@sbib@\blx@tempe} + {} + {\letcs\blx@tempa{blx@sbib@\blx@tempe}}}% + \blx@safe@actives + \setkeys{blx@bib2}{#1}% ... now we have correct \blx@tempa, set rest of options + \blx@rest@actives + \csxappto{blx@xml@slistsbib}{\blx@xml@slist{entry}{\blx@tempe}{\blx@tempc}{\blx@tempd}}% + \ifdefvoid\blx@tempa + {\blx@warn@bibempty\endgroup} + {\blx@bibliography\blx@tempa}} + +% [<options>] + +\newrobustcmd*{\bibbysection}{% + \begingroup + \ifnum\blx@maxsection=\z@ + \blx@warning{No reference sections found}% + \fi + \edef\on@line{\on@line}% + \@ifnextchar[%] + {\blx@bibbysection} + {\blx@bibbysection[]}} + +\def\blx@bibbysection[#1]{% + \def\blx@theheading{bibliography}% + \def\blx@theenv{bibliography}% + \let\blx@theprenote\@empty + \let\blx@thepostnote\@empty + \let\blx@thetitle\@empty + \c@refsection\z@ + \blx@safe@actives + \setkeys{blx@bbs}{#1}% + \blx@rest@actives + \togglefalse{blx@tempa}% + \blx@refsections} + +\def\blx@refsections{% + \ifcsvoid{blx@slistsbib@\the\c@refsection @entry@\blx@sorting} + {} + {\toggletrue{blx@tempa}% + \begingroup + \expandafter\blx@bibliography\csname blx@slistsbib@\the\c@refsection @entry@\blx@sorting\endcsname}% + \ifnum\c@refsection<\blx@maxsection + \advance\c@refsection\@ne + \expandafter\blx@refsections + \else + \iftoggle{blx@tempa}{}{\blx@warn@bibempty}% + \endgroup + \fi} + +% [<options>] + +\newrobustcmd*{\bibbysegment}{% + \begingroup + \edef\on@line{\on@line}% + \ifnum\csname blx@maxsegment@\the\c@refsection\endcsname=\z@ + \blx@warning{No reference segments found}% + \fi + \@ifnextchar[%] + {\blx@bibbysegment} + {\blx@bibbysegment[]}} + +\def\blx@bibbysegment[#1]{% + \def\blx@theheading{bibliography}% + \def\blx@theenv{bibliography}% + \let\blx@theprenote\@empty + \let\blx@thepostnote\@empty + \let\blx@thetitle\@empty + \c@refsegment\@ne + \blx@safe@actives + \setkeys{blx@bbg}{#1}% + \blx@rest@actives + \togglefalse{blx@tempa}% + \blx@refsegments} + +\def\blx@refsegments{% + \ifcsvoid{blx@segm@\the\c@refsection @\the\c@refsegment} + {} + {\toggletrue{blx@tempa}% + \begingroup + \let\blx@tempa\@empty + \ifcsvoid{blx@slistsbib@\the\c@refsection @entry@\blx@sorting} + {} + {\letcs\blx@tempa{blx@slistsbib@\the\c@refsection @entry@\blx@sorting}}% + \blx@filter\blx@tempa{blx@segm@\the\c@refsection @\the\c@refsegment}% + \blx@bibliography\blx@tempa}% + \ifnum\c@refsegment<\csname blx@maxsegment@\the\c@refsection\endcsname + \advance\c@refsegment\@ne + \expandafter\blx@refsegments + \else + \iftoggle{blx@tempa}{}{\blx@warn@bibempty}% + \endgroup + \fi} + +% [<options>] + +\newrobustcmd*{\bibbycategory}{% + \begingroup + \edef\on@line{\on@line}% + \ifx\blx@categories\@empty + \blx@warning{No categories found}% + \fi + \@ifnextchar[%] + {\blx@bibbycategory} + {\blx@bibbycategory[]}} + +\def\blx@bibbycategory[#1]{% + \def\blx@theheading{bibliography}% + \def\blx@theenv{bibliography}% + \let\blx@theprenote\@empty + \let\blx@thepostnote\@empty + \let\blx@thetitle\@empty + \c@refsection\z@ + \blx@safe@actives + \setkeys{blx@bbc}{#1}% + \blx@rest@actives + \togglefalse{blx@tempa}% + \forlistloop\blx@bibcategory\blx@categories + \blx@endbibcategory} + +\def\blx@bibcategory#1{% + \ifcsvoid{blx@catg@#1} + {} + {\toggletrue{blx@tempa}% + \begingroup + \blx@key@heading{#1}% + \let\blx@tempa\@empty + \ifcsvoid{blx@slistsbib@\the\c@refsection @entry@\blx@sorting} + {} + {\letcs\blx@tempa{blx@slistsbib@\the\c@refsection @entry@\blx@sorting}}% + \blx@filter\blx@tempa{blx@catg@#1}% + \blx@bibliography\blx@tempa}}% + +\def\blx@endbibcategory{% + \iftoggle{blx@tempa}{}{\blx@warn@bibempty}% + \endgroup} + +% {<entrykey>,...} + +\def\blx@bibliography{% + \blx@bibheading\blx@theheading\blx@thetitle + \blx@bibnote\blx@theprenote + \begingroup + \blx@bibinit + \let\@noitemerr\@empty + \let\blx@noitem\blx@warn@bibempty + \ifnum\bibinitsep=\z@ + \let\blx@initsep\relax + \fi + \ifnum\bibnamesep=\z@ + \let\blx@namesep\relax + \fi + \csuse{blx@env@\blx@theenv}% + \csuse{blx@hook@bibinit}% + \let\blx@do\blx@bibitem + \let\blx@done\blx@endbibliography + \blx@listloop} + +\def\blx@endbibliography{% + \csuse{blx@endenv@\blx@theenv}% + \blx@noitem + \endgroup + \blx@bibnote\blx@thepostnote + \endgroup} + +\def\blx@bibheading#1#2{% + \begingroup + \edef\blx@tempa{\endgroup + \noexpand\blx@bibheading@i{\expandonce#1}{\expandonce#2}}% + \blx@tempa} + +\def\blx@bibheading@i#1#2{% + \let\newrefsection\relax + \let\newrefsegment\relax + \ifblank{#2} + {\csuse{blx@head@#1}} + {\csuse{blx@head@#1}[#2]}% + \let\newrefsection\blx@newrefsection + \let\newrefsegment\blx@newrefsegment} + +\def\blx@bibnote#1{% + \ifdefempty#1 + {} + {\begingroup + \let\newrefsection\relax + \let\newrefsegment\relax + \noindent + \csuse{blx@note@#1}\par\nobreak + \endgroup}} + +\def\blx@bibinit{% + \iftoggle{blx@citation} + {} + {\toggletrue{blx@bibliography}}% + \blx@blxinit + \blx@resetdata + \csuse{blx@hook@bbxinit}% + \bibsetup\bibfont + \blx@setsfcodes + \csuse{blx@bibsetup}} + +% {<entrykey>} + +\def\blx@bibitem#1{% + \blx@ifdata{#1} + {\begingroup + \blx@getdata{#1}% + \blx@bibcheck + \iftoggle{blx@skipentry}{}{% + \global\let\blx@noitem\@empty + \blx@setoptions@type\abx@field@entrytype + \blx@setoptions@entry + \blx@thelabelnumber + \blx@addprefixnumber + \addtocounter{instcount}\@ne + \csuse{blx@item@\blx@theenv}\relax + \blx@initsep + \blx@namesep + \csuse{blx@hook@bibitem}% + \blx@execute + \blx@initunit + \blx@anchor + \blx@beglang + \bibsentence + \blx@pagetracker + \blx@driver\abx@field@entrytype + \blx@postpunct + \blx@endlang}% + \endgroup} + {}} + +\let\blx@bibcheck\relax + +\def\blx@initsep{% + \blx@imc@iffieldundef{sortinit} + {} + {\ifnum\c@instcount>\@ne + \blx@imc@iffieldequals{sortinit}\blx@previnit + {} + {\addvspace{\bibinitsep}}% + \fi + \global\let\blx@previnit\abx@field@sortinit}} + +\def\blx@namesep{% + \ifnum\c@instcount>\@ne + \blx@imc@iffieldequals{fullhash}\blx@prevhash + {} + {\addvspace{\bibnamesep}}% + \fi + \global\let\blx@prevhash\abx@field@fullhash} + +\newrobustcmd*{\AtBeginBibliography}{\gappto\blx@hook@bibinit} +\newrobustcmd*{\AtEveryBibitem}{\gappto\blx@hook@bibitem} +\@onlypreamble\AtBeginBibliography +\@onlypreamble\AtEveryBibitem + +% page tracker + +\def\blx@pagetracker@context{% + \blx@leavevmode + \ifbool{@filesw} + {\ifbool{pagetracker} + {\protected@write\@mainaux{}{% + \iftoggle{blx@footnote} + {\string\abx@aux@fnpage} + {\string\abx@aux@page}% + {\the\c@instcount}{\noexpand\the\c@page}}} + {}} + {}} + +% {<instcount>}{<page>} + +\protected\def\blx@aux@page#1#2{% + \csgdef{blx@page@#1}{#2}% + \blx@addpagesum{#1}{#2}} +\protected\def\blx@aux@spread#1#2{% + \ifodd#2\relax + \csxdef{blx@page@#1}{\number\numexpr#2-1}% + \else + \csgdef{blx@page@#1}{#2}% + \fi + \blx@addpagesum{#1}{#2}} + +\protected\def\blx@aux@fnpage#1#2{% + \csgdef{blx@fnpage@#1}{#2}% + \blx@addpagesum{#1}{#2}} +\protected\def\blx@aux@fnspread#1#2{% + \ifodd#2\relax + \csxdef{blx@fnpage@#1}{\number\numexpr#2-1}% + \else + \csgdef{blx@fnpage@#1}{#2}% + \fi + \blx@addpagesum{#1}{#2}} + +\AtEndDocument{% + \def\abx@aux@page#1#2{\blx@addpagesum{#1}{#2}}% + \def\abx@aux@fnpage#1#2{\blx@addpagesum{#1}{#2}}} + +% hyperref interface + +\appto\blx@mkhyperref{% + \let\blx@anchors\@empty + \ifundef\hyper@natanchorstart + {\protected\def\blx@anchor{% + \xifinlist{\the\c@refsection @\abx@field@entrykey}{\blx@anchors} + {} + {\listxadd\blx@anchors{\the\c@refsection @\abx@field@entrykey}% + \hypertarget{cite.\the\c@refsection @\abx@field@entrykey}{}}}} + {\protected\def\blx@anchor{% + \xifinlist{\the\c@refsection @\abx@field@entrykey}{\blx@anchors} + {} + {\listxadd\blx@anchors{\the\c@refsection @\abx@field@entrykey}% + \hyper@natanchorstart{\the\c@refsection @\abx@field@entrykey}% + \hyper@natanchorend}}}} + +\appto\blx@mknohyperref{\let\blx@anchor\relax} + +% List of shorthands + +\newrobustcmd*{\printshorthands}{% + \begingroup + \edef\on@line{\on@line}% + \@ifnextchar[%] + {\blx@printshorthands} + {\blx@printshorthands[]}} + +\def\blx@printshorthands[#1]{% + \toggletrue{blx@tempa}% + \toggletrue{blx@tempb}% + \def\blx@theheading{shorthands}% + \def\blx@theenv{shorthands}% + \let\blx@theprenote\@empty + \let\blx@thepostnote\@empty + \let\blx@thetitle\@empty + % defaults + \let\blx@tempa\@empty% before there is a .bbl, this must not be undef + \def\blx@tempc{shorthand}% sorting scheme name from "sorting" option + \edef\blx@tempd{% + \blx@xml@sorting{% + \csuse{blx@biber@sorting@shorthand}}}% sorting scheme from "sorting" option + \let\blx@printbibchecks\relax + \edef\blx@tempe{\the\c@refsection}% default refsection is current + \blx@safe@actives + \setkeys{blx@los1}{#1}% Set sorting and section only, if present ... + \blx@rest@actives + \ifcsvoid{blx@slistsbib@\blx@tempe @shorthand@\blx@tempc} + {} + {\letcs\blx@tempa{blx@slistsbib@\blx@tempe @shorthand@\blx@tempc}}% + \blx@safe@actives + \setkeys{blx@los2}{#1}% ... now we have correct \blx@tempa, set rest of options + \blx@rest@actives + \csxappto{blx@xml@slistsbib}{\blx@xml@slistlos{shorthand}{\blx@tempe}{\blx@tempc}{\blx@tempd}}% + \ifdefvoid\blx@tempa + {\blx@warn@losempty\endgroup} + {\blx@shorthands\blx@tempa}} + +\def\blx@printbibchecks{% + \togglefalse{blx@tempa}% + \iftoggle{blx@defernumbers} + {\global\let\blx@printbibchecks\relax} + {\iftoggle{blx@labelnumber} + {\blx@warning@noline{Setting 'defernumbers=true' recommended}} + {\global\let\blx@printbibchecks\relax}}} + +% {<entrykey>,...} + +\def\blx@shorthands{% + \if@twocolumn + \@restonecoltrue\onecolumn + \else + \@restonecolfalse + \fi + \blx@bibheading\blx@theheading\blx@thetitle + \blx@bibnote\blx@theprenote + \begingroup + \blx@bibinit + \let\@noitemerr\@empty + \let\blx@noitem\blx@warn@losempty + \csuse{blx@env@\blx@theenv}% + \csuse{blx@hook@losinit}% + \let\blx@do\blx@lositem + \let\blx@done\blx@endshorthands + \blx@listloop} + +\def\blx@endshorthands{% + \csuse{blx@endenv@\blx@theenv}% + \blx@noitem + \endgroup + \blx@bibnote\blx@thepostnote + \endgroup + \if@restonecol\twocolumn\fi} + +\newrobustcmd*{\AtBeginShorthands}{\gappto\blx@hook@losinit} +\newrobustcmd*{\AtEveryLositem}{\gappto\blx@hook@lositem} +\@onlypreamble\AtBeginShorthands +\@onlypreamble\AtEveryLositem + +% {<entrykey>} + +\def\blx@lositem#1{% + \blx@ifdata{#1} + {\begingroup + \blx@getdata{#1}% + \blx@bibcheck + \iftoggle{blx@skipentry}{}{% + \global\let\blx@noitem\@empty + \blx@setoptions@type\abx@field@entrytype + \blx@setoptions@entry + \addtocounter{instcount}\@ne + \csuse{blx@item@\blx@theenv}\relax + \csuse{blx@hook@lositem}% + \blx@execute + \blx@initunit + \blx@beglang + \bibsentence + \blx@pagetracker + \blx@driver{shorthands}% + \blx@postpunct + \blx@endlang}% + \endgroup} + {}} + +\DeclareBibliographyDriver{shorthands}{% + \iffieldundef{shorttitle} + {\printfield{title}} + {\printfield{shorttitle}}} + +% Reference sections + +\newrobustcmd*{\newrefsection}{% + \ifnum\c@refsection>\z@ + \endrefsection + \fi + \refsection} +\let\blx@newrefsection\newrefsection + +\newrobustcmd*{\refsection}{% + \begingroup + \edef\on@line{\on@line}% + \ifnum\c@refsection>\z@ + \blx@err@nestenv{refsection}% + \blx@endrefsection + \fi + \ifnum\c@refsegment>\z@ + \blx@err@nestenv{refsection}% + \blx@endrefsegment + \fi + \@ifnextchar[%] + {\blx@refsection} + {\blx@refsection[]}} + +\def\blx@refsection{% + \begingroup + \blx@hook@fileverb + \blx@refsection@i} + +\def\blx@refsection@i[#1]{% + \endgroup + \global\advance\blx@maxsection\@ne + \global\c@refsection\blx@maxsection + \expandafter\newcount\csname blx@maxsegment@\the\c@refsection\endcsname + \expandafter\newcount\csname blx@sectionciteorder@\the\c@refsection\endcsname + \blx@inf@refsec + \blx@secinit + \if@filesw + \blx@auxwrite\@mainaux{}{% + \string\abx@aux@refsection{\the\c@refsection}{\the\c@page}}% + \ifblank{#1} + {} + {\let\blx@bibfiles\@empty + \blx@xsanitizeafter{\forcsvlist\blx@refsection@addfile}{#1}% + \forlistloop{\listadd\blx@bibfiles}\blx@bibfiles@global}% + \blx@refsection@biber + \fi + \blx@info{Setting label 'refsection:\the\c@refsection'}% + \label{refsection:\the\c@refsection}% + \endgroup} + +\def\blx@refsection@addfile#1{% + \ifcsdef{blx@res@labl@#1} + {\blx@refsection@addfile@i{\csuse{blx@res@labl@#1}}} + {\blx@refsection@addfile@i{#1}}} + +\def\blx@refsection@addfile@i#1{% + \ifcsdef{blx@res@loca@#1} + {\listeadd\blx@bibfiles{#1}} + {\listeadd\blx@bibfiles{\blx@stripbib{#1}\detokenize{.bib}}}} + +\def\blx@refsection@biber{% + \blx@regbibfiles\jobname\blx@bibfiles + \begingroup + \let\blx@tempa\@empty + \blx@bibdata\blx@tempa\blx@bibfiles + \blx@auxwrite\blx@bcfout + {\let\do\blx@datasource} + {\blx@xml@endsection\blx@nl + \blx@xml@comment{SECTION \the\c@refsection}% + \blx@xml@bibdata{\the\c@refsection}{\blx@tempa}% + \blx@xml@section{\the\c@refsection}}% + \endgroup} + +\protected\def\endrefsection{% + \blx@endrefsection + \blx@inf@refsec} + +\def\blx@endrefsection{% + \blx@endrefsegment + \blx@endrefsection@biber + \global\c@refsection\z@} + +\def\blx@endrefsection@biber{% + \ifnum\c@refsection>\z@ + \blx@auxwrite\blx@bcfout{}{% + \blx@xml@endsection\blx@nl + \blx@xml@comment{SECTION 0 (cont.)}% + \blx@xml@section{0}}% + \fi} + +\AtEndDocument{% + \blx@endrefsection + \def\abx@aux@refsection#1#2{\blx@addchecksum{#1}{#2}}} + +\protected\def\abx@aux@refsection#1#2{% + \ifnum#1>\blx@maxsection + \global\blx@maxsection#1\relax + \fi + \blx@addchecksum{#1}{#2}} + +% Reference segments + +\newrobustcmd*{\newrefsegment}{% + \ifnum\c@refsegment>\z@ + \blx@endrefsegment + \fi + \refsegment} +\let\blx@newrefsegment\newrefsegment + +\newrobustcmd*{\refsegment}{% + \ifnum\c@refsegment>\z@ + \blx@err@nestenv{refsegment}% + \blx@endrefsegment + \fi + \global\advance\csname blx@maxsegment@\the\c@refsection\endcsname\@ne + \global\c@refsegment\csname blx@maxsegment@\the\c@refsection\endcsname + \blx@inf@refseg + \blx@info{Setting label 'refsegment:\the\c@refsection\the\c@refsegment'}% + \label{refsegment:\the\c@refsection\the\c@refsegment}% + \ifcsundef{blx@segm@\the\c@refsection @\the\c@refsegment} + {\global\cslet{blx@segm@\the\c@refsection @\the\c@refsegment}\@empty} + {}} + +\protected\def\endrefsegment{% + \blx@endrefsegment + \blx@inf@refseg} + +\def\blx@endrefsegment{% + \global\c@refsegment\z@} + +% Reference section/segment auto-reset +% we are prepending to the commands so that the resets happen before +% the part title is typeset otherwise \cites in there could be "ibid" +% which makes no sense +\def\blx@refpatch@part#1{% + \ifundef\part + {\blx@err@nodocdiv{part}} + {\toggletrue{blx@tempa}% + \def\do##1{% + \pretocmd##1{#1} + {\togglefalse{blx@tempa}\listbreak} + {}}% + \docsvlist{% + \H@old@part,% hyperref + \NR@part,% nameref + \@part}% latex/koma-script/memoir + \iftoggle{blx@tempa} + {\blx@err@patch{\string\@part}} + {}% + \let\do\noexpand}} + +\def\blx@refpatch@chapter#1{% + \ifundef\chapter + {\blx@err@nodocdiv{chapter}} + {\pretocmd\@makechapterhead{#1} + {} + {\blx@err@patch{\string\@makechapterhead}}}} + +\def\blx@refpatch@sect#1{% + \ifcsundef{#1} + {\blx@err@nodocdiv{#1}\@gobbletwo} + {\blx@refpatch@sect@i}} + +\edef\blx@refpatch@sect@i#1#2{% + \def\noexpand\do##1{% + \pretocmd##1% + {\noexpand\blx@refpatch@sect@ii{#1}{#2}{\string#2}} + {\togglefalse{blx@tempa}\noexpand\listbreak} + {}}% + \noexpand\blx@refpatch@sect@iii} + +\def\blx@refpatch@sect@ii#1#2#3{% + \ifnumequal{#2}{#3}{#1}{}} + +\def\blx@refpatch@sect@iii{% + \toggletrue{blx@tempa}% + \docsvlist{% order does matter: + \H@old@sectm@m,% memoir+hyperref (what a mess...) + \M@sect,% memoir + \H@old@sect,% hyperref + \NR@sect,% nameref + \scr@sect,% koma-script 3.x + \@sect}% latex + \iftoggle{blx@tempa} + {\blx@err@patch{\string\@sect}} + {}% + \let\do\noexpand} + +% Bibliography categories + +\let\blx@categories\@empty + +% {<category>} + +\newrobustcmd*{\DeclareBibliographyCategory}[1]{% + \ifcsundef{blx@catg@#1} + {\global\cslet{blx@catg@#1}\@empty + \listgadd\blx@categories{#1}} + {\blx@error + {Category '#1' already declared} + {The bibliography category '#1'\MessageBreak + has already been declared}}} +\@onlypreamble\DeclareBibliographyCategory + +% {<category>}{<entrykey>,...} + +\newrobustcmd*{\addtocategory}[2]{% + \ifcsundef{blx@catg@#1} + {\blx@error + {Category '#1' not declared} + {Use \string\DeclareBibliographyCategory\space to declare}} + {\AfterPreamble{% + \blx@xsanitizeafter{\forcsvlist{\blx@addtocategory{#1}}}{#2}}}} + +% {<category>}{<entrykey>,...} + +\def\blx@addtocategory#1#2{% + \blx@auxwrite\@mainaux{}{\string\abx@aux@category{#1}{#2}}% + \abx@aux@category{#1}{#2}} + +% {<category>}{<entrykey>,...} + +\protected\def\abx@aux@category#1#2{% + \xifinlistcs{\detokenize{#2}}{blx@catg@#1} + {} + {\listcsxadd{blx@catg@#1}{\detokenize{#2}}}} + +\AtEndDocument{\let\abx@aux@category\@gobbletwo} + +% [<options>]{<resource>,...} + +\renewrobustcmd*{\bibliography}[1]{% + \begingroup + \def\blx@tempa{file}% + \def\blx@tempb{bibtex}% + \def\blx@tempc{local}% + \blx@xsanitizeafter{\forcsvlist\blx@addbib@legacy}{#1}% + \endgroup} +\@onlypreamble\bibliography + +\def\blx@addbib@legacy#1{% + \begingroup + \edef\blx@tempa{\endgroup + \noexpand\blx@addbib@resource{\blx@stripbib{#1}\detokenize{.bib}}}% + \blx@tempa} + +\def\blx@stripbib#1{% + \expandafter\blx@stripbib@i\detokenize{#1.bib}&} +\edef\blx@stripbib@i{% + \def\noexpand\blx@stripbib@i##1\detokenize{.bib}##2&} +\blx@stripbib@i{#1} + +% [<options>]{<resource>,...} + +\newrobustcmd*{\addbibresource}{% + \blx@addbib\blx@addbib@resource} +\@onlypreamble\addbibresource + +\newrobustcmd*{\addglobalbib}{% + \blx@addbib\blx@addbib@global} +\@onlypreamble\addglobalbib + +\newrobustcmd*{\addsectionbib}{% + \blx@addbib\blx@addbib@register} +\@onlypreamble\addsectionbib + +\def\blx@addbib#1{% + \@ifnextchar[%] + {\blx@addbib@i{#1}} + {\blx@addbib@i{#1}[]}} + +\def\blx@addbib@i#1[#2]{% + \begingroup + \blx@hook@fileverb + \blx@addbib@ii{#1}{#2}} + +\def\blx@addbib@ii#1#2#3{% + \endgroup + \begingroup + \def\blx@tempa{file}% + \def\blx@tempb{bibtex}% + \def\blx@tempc{local}% + \undef\blx@tempd + \setkeys{blx@addbib}{#2}% + \blx@xsanitizeafter{#1}{#3}% + \endgroup} + +\def\blx@hook@fileverb{% + \let\do\@makeother + \dospecials + \catcode`\\=\z@ + \catcode`\{=\@ne + \catcode`\}=\tw@} + +\define@key{blx@addbib}{type}{\def\blx@tempa{#1}} +\define@key{blx@addbib}{datatype}{\def\blx@tempb{#1}} +\define@key{blx@addbib}{location}{\def\blx@tempc{#1}} +\define@key{blx@addbib}{label}{\edef\blx@tempd{\detokenize{#1}}} + +% \blx@res@type@<resource> resource -> type +% \blx@res@data@<resource> resource -> datatype +% \blx@res@loca@<resource> resource -> datatype +% \blx@res@labl@<resource> label -> resource + +\def\blx@addbib@register#1{% + \csxdef{blx@res@type@#1}{\blx@tempa}% + \csxdef{blx@res@data@#1}{\blx@tempb}% + \csxdef{blx@res@loca@#1}{\blx@tempc}% + \ifdef\blx@tempd + {\csxdef{blx@res@labl@\blx@tempd}{#1}} + {}} + +\def\blx@addbib@resource#1{% + \blx@addbib@register{#1}% + \listgadd\blx@bibfiles{#1}% + \blx@regbibfile\jobname{#1}} + +\def\blx@addbib@global#1{% + \blx@addbib@resource{#1}% + \listgadd\blx@bibfiles@global{#1}} + +\let\blx@bibfiles\@empty +\let\blx@bibfiles@global\@empty + +\def\blx@bibdata#1#2{% + \forlistloop{\blx@bibdata@i{#1}}#2} +\def\blx@bibdata@i#1#2{% + \blx@xmlsanitizeafter{\blx@bibdata@ii{#1}{#2}}{#2}} +\def\blx@bibdata@ii#1#2#3{% + \eappto#1{% + \blx@xml@datasource + {\ifcsdef{blx@res@type@#2} + {\csuse{blx@res@type@#2}} + {file}} + {\ifcsdef{blx@res@data@#2} + {\csuse{blx@res@data@#2}} + {bibtex}} + {#3}}} + +%% Citations + +\newrobustcmd*{\AtEveryCite}{\gappto\blx@hook@cite} +\newrobustcmd*{\AtEveryCitekey}{\gappto\blx@hook@citekey} +\@onlypreamble\AtEveryCite +\@onlypreamble\AtEveryCitekey + +\newrobustcmd*{\AtNextCite}{% + \ifundef\blx@hook@cite@next + {\gdef\blx@hook@cite@next{\global\undef\blx@hook@cite@next}} + {}% + \gappto\blx@hook@cite@next} + +\newrobustcmd*{\AtNextCitekey}{% + \ifundef\blx@hook@citekey@next + {\gdef\blx@hook@citekey@next{\global\undef\blx@hook@citekey@next}} + {}% + \gappto\blx@hook@citekey@next} + +% {<style>] + +\newrobustcmd*{\RequireCitationStyle}[1]{% + \blx@inputonce{#1.cbx}{citation style '#1'}{}{}{} + {\blx@error + {Style '#1' not found} + {The citation style '#1' could not be found}}} +\@onlypreamble\RequireCitationStyle + +% {<code>} + +\newrobustcmd*{\InitializeCitationStyle}{\appto\blx@hook@cbxinit} +\@onlypreamble\InitializeCitationStyle + +% {<code>} + +\newrobustcmd*{\OnManualCitation}{\appto\blx@hook@mancite} +\@onlypreamble\OnManualCitation + +\newrobustcmd*{\mancite}{% + \csuse{blx@hook@mancite}% + \blx@ibidreset + \blx@idemreset + \blx@opcitreset + \blx@loccitreset} + +% {<entrykey>}{<message>} + +\def\blx@citation#1#2{% + \ifbool{citerequest} + {\blx@citation@entry{#1}{#2}} + {}} + +\def\blx@citation@entry#1#2{% + \blx@bibreq{#1}% + \ifinlistcs{#1}{blx@segm@\the\c@refsection @\the\c@refsegment} + {} + {\listcsgadd{blx@segm@\the\c@refsection @\the\c@refsegment}{#1}}% + \blx@ifdata{#1} + {} + {\ifcsdef{blx@miss@\the\c@refsection} + {\ifinlistcs{#1}{blx@miss@\the\c@refsection} + {} + {\blx@logreq@active{#2{#1}}}} + {\blx@logreq@active{#2{#1}}}}} + +\def\blx@citation@set#1#2{% + \blx@citation@entry{#1}{#2}% + \begingroup + \def\do##1{\blx@citation@entry{##1}\blx@msg@cundef}% + \expandafter\expandafter\expandafter\docsvlist + \expandafter\expandafter\expandafter{% + \csname blx@setp@\the\c@refsection @#1\endcsname}% + \endgroup} + +\def\blx@citation@inset#1#2{% + \blx@citation@entry{#1}{#2}% + \expandafter\expandafter\expandafter\blx@citation@inset@i + \expandafter\expandafter\expandafter{% + \csname blx@setc@\the\c@refsection @#1\endcsname}\blx@msg@cundef} + +\def\blx@citation@inset@i#1{% + \ifcsdef{blx@setp@\the\c@refsection @#1} + {\blx@citation@set{#1}} + {\blx@citation@entry{#1}}} + +\def\blx@citation@all{% + \ifbool{citerequest} + {\blx@bibreq{*}% + \global\csletcs + {blx@segm@\the\c@refsection @\the\c@refsegment} + {blx@slists@\the\c@refsection @entry@\blx@sorting}% + \ifcsvoid{blx@slists@\the\c@refsection @entry@\blx@sorting} + {\blx@logreq@active{}} + {}} + {}} + +\protected\def\blx@bibreq#1{% + \begingroup + \blx@xmlsanitizeafter{\def\blx@tempa}{#1}% + % citeall is always order "0" - this make no real difference as biber + % ignores all other citekeys in the section if citeall is present + \ifstrequal{*}{#1} + {\blx@auxwrite\blx@bcfout{}{\blx@xml@citekey{\blx@tempa}{0}}} + {\blx@auxwrite\blx@bcfout{}{\blx@xml@citekey{\blx@tempa}{\expandafter\the\csname blx@sectionciteorder@\the\c@refsection\endcsname}}}% + \endgroup} + +% {<set>}{<key1,key2,key3>} + +\newrobustcmd*{\defbibentryset}[2]{% + \@bsphack + \begingroup + \blx@xsanitizeafter{\def\blx@tempa}{#1}% + \let\blx@tempb\@empty + \let\blx@tempc\@empty + \blx@xsanitizeafter{\forcsvlist\blx@defentryset@add}{#2}% + \ifcsdef{blx@set@\the\c@refsection @\blx@tempa} + {\expandafter\ifdefequal + \csname blx@set@\the\c@refsection @\blx@tempa\endcsname + \blx@tempb + {} + {\blx@error + {Conflicting definitions of '\blx@tempa'} + {The entry set '\blx@tempa' been defined before.\MessageBreak + old: \blx@tempa\space = % + \csuse{blx@set@\the\c@refsection @\blx@tempa}\MessageBreak + new: \blx@tempa\space = \blx@tempb\MessageBreak + I'm ignoring the new definition}}} + {\global\cslet{blx@set@\the\c@refsection @\blx@tempa}\blx@tempb + \edef\blx@tempa{% + \AfterPreamble{\blx@setreq{\blx@tempa}{\blx@tempb}}}% + \blx@tempa}% + \endgroup + \@esphack} + +\def\blx@defentryset@add#1{% + \edef\blx@tempb{\blx@tempb\blx@tempc#1}% + \def\blx@tempc{,}} + +\protected\def\blx@setreq#1#2{% + \begingroup + \blx@xmlsanitizeafter{\def\blx@tempa}{#1}% + \blx@xmlsanitizeafter{\def\blx@tempb}{#2}% + \blx@auxwrite\blx@bcfout{}{\blx@xml@citeset{\blx@tempa}{\blx@tempb}}% + \endgroup} + +% {<entrykey>,...} + +\protected\def\blx@citeloop#1{% + \begingroup + \global\advance\csname blx@sectionciteorder@\the\c@refsection\endcsname\@ne + \blx@tempcnta\z@ + \blx@tempcntb\z@ + \let\blx@tempa\@empty + \forcsvlist\blx@citeadd{#1}% + \blx@thenotecheck + \ifnum\blx@tempcnta>\z@ + \ifnum\blx@tempcntb>\z@ + \multicitedelim + \fi + \fi + \letcs\blx@tempb{blx@slists@\the\c@refsection @entry@\blx@sorting}% + \blx@thecitesort + \edef\blx@tempa{\endgroup + \c@citecount\z@ + \c@citetotal\the\blx@tempcnta\relax + \unexpanded{\forlistloop\blx@citeprint}{\blx@tempb}}% + \blx@tempa} + +\def\blx@notecheck{% + \ifnum\blx@tempcnta>\@ne + \blx@warning{% + Package option 'sortcites' enabled.\MessageBreak + Verify postnote placement}% + \fi} + +\def\blx@citesort{% + \ifnum\blx@tempcnta>\@ne + \blx@filtercitesort\blx@tempb{blx@tempa}% + \else + \blx@citenosort + \fi} + +\def\blx@citenosort{% + \let\blx@tempb\blx@tempa} + +% {<entrykey>} + +\def\blx@citeadd#1{% + \ifcsdef{blx@keyalias@\the\c@refsection @#1} + {\edef\blx@realkey{\csuse{blx@keyalias@\the\c@refsection @#1}}} + {\def\blx@realkey{#1}}% + \expandafter\blx@citation\expandafter{\blx@realkey}\blx@msg@cundefon + \expandafter\blx@ifdata\expandafter{\blx@realkey} + {\advance\blx@tempcnta\@ne + \listeadd\blx@tempa{\blx@realkey}} + {\ifnum\blx@tempcntb>\z@\multicitedelim\fi + \expandafter\abx@missing\expandafter{\blx@realkey} + \advance\blx@tempcntb\@ne}} + +% {<entrykey>} + +\protected\def\blx@citeprint#1{% + \advance\c@citecount\@ne + \addtocounter{instcount}\@ne + \ifnum\c@citecount=\@ne + \blx@getdata@cite{#1}% + \blx@precode + \ifnum\c@citetotal>\@ne + \blx@resetdata + \fi + \else + \blx@dlimcode + \fi + \begingroup + \ifnum\c@citetotal>\@ne + \blx@getdata@cite{#1}% + \fi + \blx@entrysetcount + \blx@setoptions@type\abx@field@entrytype + \blx@setoptions@entry + \blx@backref{#1}% + \blx@pagetracker + \csuse{blx@hook@citekey}% + \csuse{blx@hook@citekey@next}% + \blx@execute + \blx@loopcode + \blx@citecounter + \blx@citetracker + \blx@ibidtracker + \blx@idemtracker + \blx@opcittracker + \blx@loccittracker + \ifnum\c@citecount=\c@citetotal + \def\blx@thecheckpunct{\blx@err@nestcite\@gobble}% + \blx@postcode + \fi + \endgroup} + +% cite counter + +\def\blx@citecounter@global{% + \ifbool{@filesw} + {\ifbool{citetracker} + {\immediate\write\@mainaux{% + \string\abx@aux@count + {\the\c@refsection}{\abx@field@entrykey}}} + {}} + {}} + +\def\blx@citecounter@context{% + \ifbool{@filesw} + {\ifbool{citetracker} + {\immediate\write\@mainaux{% + \iftoggle{blx@footnote} + {\string\abx@aux@fncount} + {\string\abx@aux@count}% + {\the\c@refsection}{\abx@field@entrykey}}} + {}} + {}} + +% {<refsection>}{<entrykey>} + +\protected\def\blx@aux@count#1#2{% + \csnumgdef{blx@count@#1@\detokenize{#2}}{\csuse{blx@count@#1@\detokenize{#2}}+1}} +\protected\def\blx@aux@fncount#1#2{% + \csnumgdef{blx@fncount@#1@\detokenize{#2}}{\csuse{blx@fncount@#1@\detokenize{#2}}+1}} + +\let\abx@aux@count\@gobbletwo +\let\abx@aux@fncount\@gobbletwo + +\AtEndDocument{% + \let\abx@aux@count\@gobbletwo + \let\abx@aux@fncount\@gobbletwo} + +\protected\def\blx@setcitecounter@global{% + \c@citecounter0% + \csuse{blx@count@\the\c@refsection @\abx@field@entrykey}% + \relax} + +\protected\def\blx@setcitecounter@context{% + \c@citecounter0% + \iftoggle{blx@footnote} + {\csuse{blx@fncount@\the\c@refsection @\abx@field@entrykey}} + {\csuse{blx@count@\the\c@refsection @\abx@field@entrykey}}% + \relax} + +% cite tracker + +\def\blx@citetracker@global{% + \ifbool{citetracker} + {\xifinlistcs\abx@field@entrykey{blx@bsee@\the\c@refsection} + {} + {\listcsxadd{blx@bsee@\the\c@refsection}\abx@field@entrykey}} + {}} + +\def\blx@citetracker@context{% + \ifbool{citetracker} + {\iftoggle{blx@footnote} + {\xifinlistcs\abx@field@entrykey{blx@fsee@\the\c@refsection} + {} + {\listcsxadd{blx@fsee@\the\c@refsection}\abx@field@entrykey}} + {\xifinlistcs{\abx@field@entrykey}{blx@bsee@\the\c@refsection} + {} + {\listcsxadd{blx@bsee@\the\c@refsection}\abx@field@entrykey}}} + {}} + +\protected\appto\abx@savetrackers{% + \global\csletcs{blx@saved@bsee@\the\c@refsection}{blx@bsee@\the\c@refsection}% + \global\csletcs{blx@saved@fsee@\the\c@refsection}{blx@fsee@\the\c@refsection}} + +\protected\appto\abx@resttrackers{% + \global\csletcs{blx@bsee@\the\c@refsection}{blx@saved@bsee@\the\c@refsection}% + \global\csletcs{blx@fsee@\the\c@refsection}{blx@saved@fsee@\the\c@refsection}} + +\protected\appto\abx@cleartrackers{% + \global\cslet{blx@saved@bsee@\the\c@refsection}\@empty + \global\cslet{blx@saved@fsee@\the\c@refsection}\@empty} + +% ibidem tracker + +\def\blx@ibidtracker@gobal{% + \ifbool{citetracker} + {\global\let\blx@lastkey@text\abx@field@entrykey} + {}} + +\def\blx@ibidtracker@context{% + \ifbool{citetracker} + {\iftoggle{blx@footnote} + {\global\let\blx@lastkey@foot\abx@field@entrykey} + {\global\let\blx@lastkey@text\abx@field@entrykey}} + {}} + +\def\blx@ibidtracker@strict{% + \blx@ifcitesingle + {\blx@ibidtracker@gobal} + {\blx@ibidreset@gobal}}% + +\def\blx@ibidtracker@constrict{% + \blx@ifcitesingle + {\blx@mpfnsave + \blx@ibidtracker@context} + {\blx@ibidreset@context}}% + +\def\blx@ibidreset@force{% + \global\undef\blx@lastkey@text + \global\undef\blx@lastkey@foot + \blx@mpfnreset} + +\def\blx@ibidreset@gobal{% + \global\undef\blx@lastkey@text} + +\def\blx@ibidreset@context{% + \iftoggle{blx@footnote} + {\blx@mpfnreset + \global\undef\blx@lastkey@foot} + {\global\undef\blx@lastkey@text}} + +\protected\appto\abx@savetrackers{% + \global\let\blx@saved@lastkey@text\blx@lastkey@text + \global\let\blx@saved@lastkey@foot\blx@lastkey@foot} + +\protected\appto\abx@resttrackers{% + \global\let\blx@lastkey@text\blx@saved@lastkey@text + \global\let\blx@lastkey@foot\blx@saved@lastkey@foot} + +\protected\appto\abx@cleartrackers{% + \global\undef\blx@saved@lastkey@text + \global\undef\blx@saved@lastkey@foot} + +% idem tracker + +\def\blx@idemtracker@gobal{% + \ifbool{citetracker} + {\global\let\blx@lasthash@text\abx@field@fullhash} + {}} + +\def\blx@idemtracker@context{% + \ifbool{citetracker} + {\iftoggle{blx@footnote} + {\global\let\blx@lasthash@foot\abx@field@fullhash} + {\global\let\blx@lasthash@text\abx@field@fullhash}} + {}} + +\let\blx@idemtracker@strict\blx@idemtracker@gobal + +\def\blx@idemtracker@constrict{% + \blx@mpfnsave + \blx@idemtracker@context} + +\def\blx@idemreset@force{% + \global\undef\blx@lasthash@text + \global\undef\blx@lasthash@foot + \blx@mpfnreset} + +\def\blx@idemreset@gobal{% + \global\undef\blx@lasthash@text} + +\def\blx@idemreset@context{% + \iftoggle{blx@footnote} + {\blx@mpfnreset + \global\undef\blx@lasthash@foot} + {\global\undef\blx@lasthash@text}} + +\protected\appto\abx@savetrackers{% + \global\let\blx@saved@lasthash@text\blx@lasthash@text + \global\let\blx@saved@lasthash@text\blx@lasthash@text} + +\protected\appto\abx@resttrackers{% + \global\let\blx@lasthash@text\blx@saved@lasthash@text + \global\let\blx@lasthash@text\blx@saved@lasthash@text} + +\protected\appto\abx@cleartrackers{% + \global\undef\blx@saved@lasthash@text + \global\undef\blx@saved@lasthash@foot} + +% opcit tracker + +\def\blx@opcittracker@gobal{% + \ifbool{citetracker} + {\blx@opcit@tracker{text}} + {}} + +\def\blx@opcittracker@context{% + \ifbool{citetracker} + {\iftoggle{blx@footnote} + {\blx@opcit@tracker{foot}} + {\blx@opcit@tracker{text}}} + {}} + +\def\blx@opcittracker@strict{% + \blx@ifcitesingle + {\blx@opcittracker@gobal} + {\blx@opcitreset@gobal}}% + +\def\blx@opcittracker@constrict{% + \blx@ifcitesingle + {\blx@mpfnsave + \blx@opcittracker@context} + {\blx@opcitreset@context}}% + +\def\blx@opcit@tracker#1{% + \blx@imc@iffieldundef{namehash} + {} + {\global\cslet{blx@lastkey@#1@\abx@field@namehash}\abx@field@entrykey + \xifinlistcs\abx@field@namehash{blx@trackhash@#1} + {} + {\listcsxadd{blx@trackhash@#1}\abx@field@namehash}}} + +\def\blx@opcit@reset#1{% + \begingroup + \def\do##1{\global\csundef{blx@lastkey@#1@##1}}% + \dolistcsloop{blx@trackhash@#1}% + \global\cslet{blx@trackhash@#1}\@empty + \endgroup} + +\def\blx@opcitreset@force{% + \blx@opcit@reset{text}% + \blx@opcit@reset{foot}% + \blx@mpfnreset} + +\def\blx@opcitreset@gobal{% + \blx@opcit@reset{text}} + +\def\blx@opcitreset@context{% + \iftoggle{blx@footnote} + {\blx@opcit@reset{foot}% + \blx@mpfnreset} + {\blx@opcit@reset{text}}} + +\let\blx@trackhash@text\@empty +\let\blx@trackhash@foot\@empty + +\protected\appto\abx@savetrackers{% + \begingroup + \def\do#1{\global\csletcs{blx@saved@lastkey@text@#1}{blx@lastkey@text@#1}}% + \dolistloop\blx@trackhash@text + \global\let\blx@saved@trackhash@text\blx@trackhash@text + \def\do#1{\global\csletcs{blx@saved@lastkey@foot@#1}{blx@lastkey@foot@#1}}% + \dolistloop\blx@trackhash@foot + \global\let\blx@saved@trackhash@foot\blx@trackhash@foot + \endgroup} + +\protected\appto\abx@resttrackers{% + \begingroup + \blx@opcit@reset{text}% + \global\let\blx@trackhash@text\blx@saved@trackhash@text + \def\do#1{\global\csletcs{blx@lastkey@text@#1}{blx@saved@lastkey@text@#1}}% + \dolistloop\blx@trackhash@text + \blx@opcit@reset{foot}% + \global\let\blx@trackhash@foot\blx@saved@trackhash@foot + \def\do#1{\global\csletcs{blx@lastkey@foot@#1}{blx@saved@lastkey@foot@#1}}% + \dolistloop\blx@trackhash@foot + \endgroup} + +\protected\appto\abx@cleartrackers{% + \begingroup + \def\do#1{\global\csundef{blx@saved@lastkey@text@#1}}% + \dolistloop\blx@saved@trackhash@text + \global\undef\blx@saved@trackhash@text + \def\do#1{\global\csundef{blx@saved@lastkey@foot@#1}}% + \dolistloop\blx@saved@trackhash@foot + \global\undef\blx@saved@trackhash@foot + \endgroup} + +% loccit tracker + +\def\blx@loccittracker@gobal{% + \ifbool{citetracker} + {\blx@loccit@tracker{text}} + {}} + +\def\blx@loccittracker@context{% + \ifbool{citetracker} + {\iftoggle{blx@footnote} + {\blx@loccit@tracker{foot}} + {\blx@loccit@tracker{text}}} + {}} + +\def\blx@loccittracker@strict{% + \ifbool{citetracker} + {\blx@loccit@stricttracker{text}} + {}} + +\def\blx@loccittracker@constrict{% + \ifbool{citetracker} + {\iftoggle{blx@footnote} + {\blx@mpfnsave + \blx@loccit@stricttracker{foot}} + {\blx@loccit@stricttracker{text}}} + {}} + +\def\blx@loccit@tracker#1{% + \global\csundef{blx@lastnote@#1@\abx@field@entrykey}% + \blx@imc@iffieldundef{postnote} + {} + {\global\cslet{blx@lastnote@#1@\abx@field@entrykey}\abx@field@postnote + \xifinlistcs\abx@field@entrykey{blx@trackkeys@#1} + {} + {\listcsxadd{blx@trackkeys@#1}\abx@field@entrykey}}} + +\def\blx@loccit@stricttracker#1{% + \global\csundef{blx@lastnote@#1@\abx@field@entrykey}% + \blx@imc@iffieldundef{postnote} + {} + {\blx@ifcitesingle + {\expandafter\blx@imc@ifpages + \expandafter{\abx@field@postnote} + {\global\cslet{blx@lastnote@#1@\abx@field@entrykey}\abx@field@postnote + \xifinlistcs\abx@field@entrykey{blx@trackkeys@#1} + {} + {\listcsxadd{blx@trackkeys@#1}\abx@field@entrykey}} + {}} + {}}} + +\def\blx@loccit@reset#1{% + \begingroup + \def\do##1{\global\csundef{blx@lastnote@#1@##1}}% + \dolistcsloop{blx@trackkeys@#1}% + \global\cslet{blx@trackkeys@#1}\@empty + \endgroup} + +\def\blx@loccitreset@force{% + \blx@loccit@reset{text}% + \blx@loccit@reset{foot}% + \blx@mpfnreset} + +\def\blx@loccitreset@gobal{% + \blx@loccit@reset{text}} + +\def\blx@loccitreset@context{% + \iftoggle{blx@footnote} + {\blx@loccit@reset{foot}% + \blx@mpfnreset} + {\blx@loccit@reset{text}}} + +\let\blx@trackkeys@text\@empty +\let\blx@trackkeys@foot\@empty + +\protected\appto\abx@savetrackers{% + \begingroup + \def\do#1{\global\csletcs{blx@saved@lastnote@text@#1}{blx@lastnote@text@#1}}% + \dolistloop\blx@trackkeys@text + \global\let\blx@saved@trackkeys@text\blx@trackkeys@text + \def\do#1{\global\csletcs{blx@saved@lastnote@foot@#1}{blx@lastnote@foot@#1}}% + \dolistloop\blx@trackkeys@foot + \global\let\blx@saved@trackkeys@foot\blx@trackkeys@foot + \endgroup} + +\protected\appto\abx@resttrackers{% + \begingroup + \blx@loccit@reset{text}% + \global\let\blx@trackkeys@text\blx@saved@trackkeys@text + \def\do#1{\global\csletcs{blx@lastnote@text@#1}{blx@saved@lastnote@text@#1}}% + \dolistloop\blx@trackkeys@text + \blx@loccit@reset{foot}% + \global\let\blx@trackkeys@foot\blx@saved@trackkeys@foot + \def\do#1{\global\csletcs{blx@lastnote@foot@#1}{blx@saved@lastnote@foot@#1}}% + \dolistloop\blx@trackkeys@foot + \endgroup} + +\protected\appto\abx@cleartrackers{% + \begingroup + \def\do#1{\global\csundef{blx@saved@lastnote@text@#1}}% + \dolistloop\blx@saved@trackkeys@text + \global\undef\blx@saved@trackkeys@text + \def\do#1{\global\csundef{blx@saved@lastnote@foot@#1}}% + \dolistloop\blx@saved@trackkeys@foot + \global\undef\blx@saved@trackkeys@foot + \endgroup} + +\def\blx@addbackref#1{% + \ifcsdef{blx@setp@\the\c@refsection @#1} + {\ifcase\blx@backrefsetstyle + \blx@addbackref@i{#1}% + \or + \blx@addbackref@ii{setp}{#1}% + \or + \blx@addbackref@i{#1}% + \or + \blx@addbackref@i{#1}% + \or + \blx@addbackref@i{#1}% + \blx@addbackref@ii{setp}{#1}% + \or + \blx@addbackref@i{#1}% + \blx@addbackref@ii{setp}{#1}% + \fi} + {\ifcsdef{blx@setc@\the\c@refsection @#1} + {\ifcase\blx@backrefsetstyle + \blx@addbackref@ii{setc}{#1}% + \or + \blx@addbackref@i{#1}% + \or + \blx@addbackref@i{#1}% + \or + \blx@addbackref@i{#1}% + \blx@addbackref@ii{setc}{#1}% + \or + \blx@addbackref@i{#1}% + \or + \blx@addbackref@i{#1}% + \blx@addbackref@ii{setc}{#1}% + \fi} + {\blx@addbackref@i{#1}}}} + +\def\blx@addbackref@i#1{% + \ifbacktracker + \blx@leavevmode + \if@filesw + \protected@write\@mainaux{}{\string\abx@aux@backref + {\the\c@instcount}{#1}{\the\c@refsection}% + {\thepage}{\noexpand\the\c@page}}% + \fi + \fi} + +\def\blx@addbackref@ii#1#2{% + \expandafter\expandafter\expandafter\forcsvlist + \expandafter\expandafter\expandafter\blx@addbackref@i + \expandafter\expandafter\expandafter{% + \csname blx@#1@\the\c@refsection @#2\endcsname}} + +% {<instcount>}{<entrykey>}{<refsection>}{<page>}{<page int>} + +\protected\def\blx@aux@backref#1#2#3#4#5{% + \ifcsundef{blx@pref@#3@\detokenize{#2}} + {\global\cslet{blx@pref@#3@\detokenize{#2}}\@empty + \expandafter\blx@onlypreamble\csname blx@pref@#3@\detokenize{#2}\endcsname} + {}% + \ifinlistcs{#4}{blx@pref@#3@\detokenize{#2}} + {} + {\listcsgadd{blx@pref@#3@\detokenize{#2}}{#4}}% + \blx@addpagesum{#1}{#5}} + +\AtEndDocument{% + \def\abx@aux@backref#1#2#3#4#5{\blx@addpagesum{#1}{#5}}} + +% {<true>}{<false>} + +\def\blx@ifcitesingle{% + \ifnum\c@citetotal=\@ne + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi} + +% hyperref interface + +\appto\blx@mkhyperref{% + \protected\def\blx@imc@bibhyperref{% + \@ifnextchar[%] + {\blx@bibhyperref} + {\blx@bibhyperref[\abx@field@entrykey]}}% + \ifundef\hyper@natanchorstart + {\long\def\blx@bibhyperref[#1]#2{% + \blx@sfsave\hyperlink{cite.\the\c@refsection @#1}{\blx@sfrest + #2% + \blx@sfsave}\blx@sfrest}% + \protected\long\def\blx@imc@bibhyperlink#1#2{% + \blx@sfsave\hyperlink{cite.\the\c@refsection:#1}{\blx@sfrest + #2% + \blx@sfsave}\blx@sfrest}% + \protected\long\def\blx@imc@bibhypertarget#1#2{% + \blx@sfsave\hypertarget{cite.\the\c@refsection:#1}{\blx@sfrest + #2% + \blx@sfsave}\blx@sfrest}}% + {\long\def\blx@bibhyperref[#1]#2{% + \blx@sfsave\hyper@natlinkstart{\the\c@refsection @#1}\blx@sfrest + #2% + \blx@sfsave\hyper@natlinkend\blx@sfrest}% + \protected\long\def\blx@imc@bibhyperlink#1#2{% + \blx@sfsave\hyper@natlinkstart{\the\c@refsection:#1}\blx@sfrest + #2% + \blx@sfsave\hyper@natlinkend\blx@sfrest}% + \protected\long\def\blx@imc@bibhypertarget#1#2{% + \blx@sfsave\hyper@natanchorstart{\the\c@refsection:#1}\blx@sfrest + #2% + \blx@sfsave\hyper@natanchorend\blx@sfrest}} + \let\blx@imc@ifhyperref\@firstoftwo + \def\blx@sf{\spacefactor}% + \def\blx@sfsave{% + \blx@leavevmode + \numgdef\blx@sf{\spacefactor}}% + \def\blx@sfrest{% + \ifhmode\spacefactor\blx@sf\relax\fi + \gdef\blx@sf{\spacefactor}}} + +\appto\blx@mknohyperref{% + \protected\def\blx@imc@bibhyperref{\@ifnextchar[\blx@nohyperref\@firstofone}% + \def\blx@nohyperref[#1]#2{#2}% + \let\blx@imc@bibhyperlink\@secondoftwo + \let\blx@imc@bibhypertarget\@secondoftwo + \let\blx@imc@ifhyperref\@secondoftwo} + +\blx@regimcs{% + \bibhyperref \bibhyperlink \bibhypertarget \ifhyperref} + +% {<entrykey>,...} + +\protected\def\nocite#{\blx@nocite} + +\def\blx@nocite#1{% + \@bsphack + \AfterPreamble{% + \iftoggle{blx@bibliography} + {} + {\ifstrequal{*}{#1} + {\blx@citation@all} + {\blx@xsanitizeafter{\forcsvlist\blx@nocite@do}{#1}}}}% + \@esphack} + +\def\blx@nocite@do#1{\blx@citation{#1}\blx@msg@cundef} + +% {<macro>}[<arg1>][<arg2>]{<arg3>} +% => <macro>{<arg1>}{<arg2>}{<arg3>} + +\protected\def\blx@citeargs#1{% + \@ifnextchar[%] + {\blx@citeargs@i{#1}} + {\blx@citeargs@iii{#1{}{}}}} +\long\def\blx@citeargs@i#1[#2]{% + \@ifnextchar[%] + {\blx@citeargs@ii{#1{#2}}} + {\blx@citeargs@iii{#1{}{#2}}}} +\long\def\blx@citeargs@ii#1[#2]{% + \blx@citeargs@iii{#1{#2}}} +\long\def\blx@citeargs@iii#1#2{% + \blx@xsanitizeafter{#1}{#2}} + +% {<macro>}(<arg1>)(<arg2>) +% => <macro>{<arg1>}{<arg2>} + +\protected\def\blx@multiargs#1{% + \@ifnextchar(%) + {\blx@multiargs@i{#1}} + {#1{}{}}} +\long\def\blx@multiargs@i#1(#2){% + \@ifnextchar(%) + {\blx@multiargs@ii{#1{#2}}} + {#1{}{#2}}} +\long\def\blx@multiargs@ii#1(#2){#1{#2}} + +% {<macro>}[<arg1>][<arg2>]{<arg3>}<punct> +% => <macro>{<arg1>}{<arg2>}{<arg3>}{<punctcmd>} + +\protected\def\blx@citepunct#1{% + \blx@citeargs{\blx@citepunct@i{#1}}} +\long\def\blx@citepunct@i#1#2#3#4{% + \blx@thecheckpunct{#1{#2}{#3}{#4}}} + +% {<csname>}[<arg1>][<arg2>]{arg3}[arg4]{arg5}<punct> +% => <macro>{<arg1>}{<arg2>}{<arg3>}{<arg4>}{arg5}{<punctcmd>} + +\protected\def\blx@citexpunct#1{% + \blx@citeargs{\blx@citexpunct@i{#1}}} +\long\def\blx@citexpunct@i#1#2#3#4{% + \@ifnextchar[%] + {\blx@citexpunct@ii{#1}{{#2}{#3}{#4}}} + {\blx@citexpunct@ii{#1}{{#2}{#3}{#4}}[#1]}} +\long\def\blx@citexpunct@ii#1#2[#3]#4{% + \blx@thecheckpunct{\blxcitecmd{#1}#2{#3}{#4}}} + +% {<code>}<punct> => <code>{<punctcmd>} + +\long\def\blx@checkpunct#1{% + \begingroup + \def\blx@tempa{\endgroup#1}% + \futurelet\blx@tempb\blx@checkpunct@i} +\def\blx@checkpunct@i{% + \expandafter\blx@checkpunct@ii\blx@autopunct&} +\def\blx@checkpunct@ii#1{% + \ifx#1&% + \expandafter\blx@checkpunct@iii + \fi + \ifx#1\blx@tempb + \expandafter\blx@checkpunct@iv + \fi + \blx@checkpunct@ii} +\def\blx@checkpunct@iii#1\blx@checkpunct@ii{% + \blx@tempa{\blx@postpunct}} +\def\blx@checkpunct@iv#1\blx@checkpunct@ii#2{% + \edef\blx@tempa{% + \expandonce\blx@tempa{% + \ifcsdef{blx@pm@\detokenize{#3}} + {\csname blx@imc@add\csname blx@pm@\detokenize{#3}\endcsname + \endcsname} + {\noexpand#3}}}% + \blx@tempa} + +\long\def\blx@nocheckpunct#1{#1{}} + +\protected\def\blx@citeinit{% + \iftoggle{blx@bibliography} + {} + {\toggletrue{blx@citation}}% + \blx@blxinit + \citesetup + \blx@setsfcodes + \blx@postpunct@agroup + \blx@resetdata + \blx@leavevmode + \csuse{blx@hook@cite}% + \csuse{blx@hook@cite@next}% + \let\blx@citeinit\blx@resetdata} + +\protected\def\blx@citecmdinit{% + \blx@leavevmode@cite + \iftoggle{blx@bibliography} + {} + {\blx@initunit}} + +% *{<command>}[<wrapper>]{<precode>}{<loopcode>}{<delimcode>}{<postcode>} + +\newrobustcmd*{\DeclareCiteCommand}{% + \@ifstar{\blx@defcitecmd*}{\blx@defcitecmd{}}} + +\def\blx@defcitecmd#1#2{% + \begingroup + \escapechar\m@ne + \edef\blx@tempa{\endgroup + \noexpand\blx@defcitecmd@i{#1}{\string#2}}% + \blx@tempa} + +\def\blx@defcitecmd@i#1#2{% + \blx@checkcitecmd{#2}{#1}% + \protected\csdef{#2}{% + \blx@citecmdinit + \@ifstar + {\blx@citepunct{\blxcitecmd{#2*}}} + {\blx@citepunct{\blxcitecmd{#2}}}}% + \@ifnextchar[%] + {\blx@defcitecmd@iii{#2#1}} + {\blx@defcitecmd@ii{#2#1}}} + +\long\def\blx@defcitecmd@ii#1{% + \protected\csedef{blx@cite@#1}{\blxciteicmd{#1}}% + \blx@defcitecmd@iv{#1}} + +\long\def\blx@defcitecmd@iii#1[#2]{% + \protected\long\csedef{blx@cite@#1}##1##2##3##4{% + \begingroup + \blx@citeinit + \unexpanded{#2}{\blxciteicmd{#1}{##1}{##2}{##3}{}}% + ##4\endgroup}% + \blx@defcitecmd@iv{#1}} + +\long\def\blx@defcitecmd@iv#1#2#3#4#5{% + \protected\long\csdef{blx@citei@#1}##1##2##3##4{% + \ifblank{##1} + {} + {\def\abx@field@prenote{##1}}% + \ifblank{##2} + {\let\blx@thenotecheck\relax} + {\def\abx@field@postnote{##2}}% + \def\blx@precode{#2}% + \def\blx@loopcode{#3}% + \def\blx@dlimcode{#4}% + \def\blx@postcode{#5##4}% + \blx@citeloop{##3}% + \endgroup}} + +% {<type>}{<name>}{*} + +\def\blx@checkcitecmd#1#2{% + \ifblank{#2} + {\ifcsdef{blx@cite@#1} + {\blx@info{Redefining '\@backslashchar#1'}} + {\ifcsundef{#1} + {} + {\blx@warning@noline{Redefining '\@backslashchar#1'}}}% + \ifcsdef{blx@cite@#1*} + {} + {\csedef{blx@cite@#1*}{% + \expandafter\noexpand\csname blx@cite@#1\endcsname}% + \csedef{blx@citei@#1*}{% + \expandafter\noexpand\csname blx@citei@#1\endcsname}}} + {\ifcsdef{blx@cite@#1} + {} + {\csdef{blx@cite@#1}{\blx@err@citecmd{#1}}% + \csdef{blx@citei@#1}{\blx@err@citecmd{#1}}}}} + +% {<name>}{prenote}{postnote}{citekey}{punct} + +\newrobustcmd*{\blxcitecmd}[1]{% + \ifcsundef{blx@cite@#1} + {\blx@err@citecmd{#1}} + {\csuse{blx@cite@#1}}} + +\newrobustcmd*{\blxciteicmd}[1]{% + \begingroup + \blx@citeinit + \ifcsundef{blx@citei@#1} + {\blx@err@citecmd{#1}} + {\csuse{blx@citei@#1}}} + +% {<multicitecount>}{<name>}{prenote}{postnote}{citekey}{punct} + +\protected\def\blxmciteicmd#1{% + \c@multicitecount#1\relax + \blxciteicmd} + +% {<multicitetotal>}{<multiprenote>}{<multipostnote>} + +\protected\def\blxmcites#1#2#3{% + \begingroup + \blx@citeinit + \c@multicitecount\z@ + \c@multicitetotal#1\relax + \ifnum\c@multicitetotal>\@ne + \let\blx@ifcitesingle\@secondoftwo + \fi + \ifblank{#2}% + {} + {\def\abx@field@multiprenote{#2}}% + \ifblank{#3}% + {} + {\def\abx@field@multipostnote{#3}}% + \usebibmacro{multiprenote}} + +\protected\def\blxendmcites{% + \usebibmacro{multipostnote}% + \endgroup} + +% {<command>}[<wrapper>]{<cite>}{<delimiter>} + +\newrobustcmd{\DeclareMultiCiteCommand}[1]{% + \ifundef#1% + {} + {\blx@info{Redefining '\string#1'}}% + \@ifnextchar[%] + {\blx@defmcitecmd{#1}} + {\blx@defmcitecmd{#1}[\@firstofone]}} + +\def\blx@defmcitecmd#1[#2]#3#4{% + \begingroup + \escapechar\m@ne + \edef\blx@tempa{\endgroup + \protected\def\noexpand#1{% + \blx@citecmdinit + \noexpand\@ifstar + {\expandafter\noexpand + \csname blx@mcite@\string#1\endcsname*% + \expandafter\noexpand + \csname blx@mcitei@\string#1\endcsname} + {\expandafter\noexpand + \csname blx@mcite@\string#1\endcsname{}% + \expandafter\noexpand + \csname blx@mcitei@\string#1\endcsname}}% + \protected\csdef{blx@mcite@\string#1}####1####2{% + \begingroup + \blx@citeinit + \noexpand\blx@multicite + ####2% + {\unexpanded{#2}}% + {\string#3####1}% + {\unexpanded{#4}}}% + \protected\long\csdef{blx@mcitei@\string#1}}% + \blx@tempa##1##2##3{##1{##2}##3\endgroup}} + +% {<command>}{<wrapper>}{<citecmd>}{<delimiter>} => +% <init><command>{<wrapper>}{<cites>}{<punct>} + +\def\blx@multicite#1#2#3#4{% + \begingroup + \def\blx@tempa{#1}% + \def\blx@tempb{#2}% + \def\blx@tempc{#3}% + \def\blx@tempd{#4}% + \c@multicitetotal\z@ + \blx@multiargs\blx@multicite@i} + +\def\blx@multicite@i#1#2{% + \ifblank{#1}% + {\let\abx@field@multiprenote\@empty}% + {\def\abx@field@multiprenote{#1}}% + \ifblank{#2}% + {\let\abx@field@multipostnote\@empty}% + {\def\abx@field@multipostnote{#2}}% + \let\blx@tempe\@empty + \let\blx@tempf\@empty + \togglefalse{blx@tempa}% + \blx@multiparse} + +\def\blx@multicite@add#1#2#3{% + \togglefalse{blx@tempa}% + \advance\c@multicitetotal\@ne + \eappto\blx@tempe{% + \expandonce\blx@tempf + \blxmciteicmd{\the\c@multicitetotal}% + {\expandonce\blx@tempc}\unexpanded{{#1}{#2}{#3}}{}}% + \let\blx@tempf\blx@tempd + \blx@multiparse} + +\def\blx@multicite@end#1{% + \edef\blx@tempa{\endgroup + \expandonce\blx@tempa + {\expandonce\blx@tempb}% + {\blxmcites + {\the\c@multicitetotal}% + {\expandonce\abx@field@multiprenote}% + {\expandonce\abx@field@multipostnote}% + \expandonce\blx@tempe + \blxendmcites}% + {#1}% + \iftoggle{blx@tempa}{\relax\space}{}}% + \blx@tempa} + +\def\blx@multiparse{% + \futurelet\@let@token\blx@multiparse@i} + +\def\blx@multiparse@i{% + \ifx\@let@token\relax + \blx@multiparse@ii{\blx@multicite@end{}}% + \fi + \ifx\@let@token[%] + \blx@multiparse@ii{\blx@citeargs\blx@multicite@add}% + \fi + \ifx\@let@token\bgroup + \blx@multiparse@ii{\blx@citeargs\blx@multicite@add}% + \fi + \ifx\@let@token\@sptoken + \blx@multiparse@ii\blx@multiparse@iii + \fi + \iftrue + \iftoggle{blx@tempa} + {\blx@multiparse@ii{\blx@multicite@end{}}} + {\blx@multiparse@ii{\blx@thecheckpunct\blx@multicite@end}}% + \fi + &} + +\def\blx@multiparse@ii#1#2&{\fi#1} +\csdef{blx@multiparse@iii} {\toggletrue{blx@tempa}\blx@multiparse} + +% {<name>}[l|i|r]{<cite>}{<multicite>} + +\newrobustcmd*{\DeclareAutoCiteCommand}[1]{% + \ifcsundef{blx@acite@#1} + {} + {\blx@info{Redefining autocite command '#1'}}% + \@ifnextchar[%] + {\blx@defautocmd@i{#1}} + {\blx@defautocmd@i{#1}[r]}} + +\def\blx@defautocmd@i#1[#2]#3#4{% + \begingroup + \escapechar\m@ne + \edef\blx@tempa{\endgroup + \noexpand\blx@defautocmd@ii{#1}{#2}% + {\string#3}{\string#4}}% + \blx@tempa} + +\def\blx@defautocmd@ii#1#2#3#4{% + \protected\csedef{blx@acite@#1}{% + \blx@citecmdinit + \noexpand\@ifstar + {\blx@citepunct{\expandafter\noexpand + \csname blx@acitei@#1\endcsname*}} + {\blx@citepunct{\expandafter\noexpand + \csname blx@acitei@#1\endcsname{}}}}% + \protected\csedef{blx@acitei@#1}##1##2##3##4##5{% + \begingroup + \blx@citeinit + \if l#2\noexpand\unspace##5\fi + \if f#2\noexpand\iftoggle{blx@footnote}{}{\unspace##5}\fi + \blxcitecmd{#3##1}{##2}{##3}{##4}{}% + \if r#2##5\fi + \if f#2\noexpand\iftoggle{blx@footnote}{##5}{}\fi + \endgroup}% + \protected\csedef{blx@macite@#1}{% + \blx@citecmdinit + \noexpand\@ifstar + {\expandafter\noexpand + \csname blx@mcite@#4\endcsname*% + \expandafter\noexpand + \csname blx@macitei@#1\endcsname} + {\expandafter\noexpand + \csname blx@mcite@#4\endcsname{}% + \expandafter\noexpand + \csname blx@macitei@#1\endcsname}}% + \protected\csedef{blx@macitei@#1}##1##2##3{% + \if l#2\noexpand\unspace##3\fi + \if f#2\noexpand\iftoggle{blx@footnote}{}{\unspace##3}\fi + ##1{##2}% + \if r#2##3\fi + \if f#2\noexpand\iftoggle{blx@footnote}{##3}{}\fi + \endgroup}} + +% {<characters>} + +\newrobustcmd*{\DeclareAutoPunctuation}[1]{% + \ifblank{#1} + {\let\blx@thecheckpunct\blx@nocheckpunct} + {\let\blx@thecheckpunct\blx@checkpunct + \def\blx@autopunct{#1}}} + +\AfterEndPreamble{% babel + \begingroup + \makeatletter + \endlinechar\m@ne + \scantokens\expandafter{% + \expandafter\gdef + \expandafter\blx@autopunct + \expandafter{\blx@autopunct}}% + \endgroup} + +% [<prenote>][<postnote>]{<entrykey>,...}[<format>]{<namelist>}<punct> + +\newrobustcmd*{\citename}{\blx@citexpunct{citename}} +\long\csdef{blx@cite@citename}#1#2#3#4#5#6{% + \begingroup + \blx@citecmdinit + \blx@citeinit + \ifblank{#1} + {} + {\def\abx@field@prenote{#1}}% + \ifblank{#2} + {\let\blx@thenotecheck\relax} + {\def\abx@field@postnote{#2}}% + \def\blx@precode{\usebibmacro{prenote}}% + \def\blx@loopcode{% + \ifnameundef{#5} + {\blx@warning@entry{'#5' undefined or not a name list}% + \abx@missing{#5}} + {\printnames[#4]{#5}}}% + \def\blx@dlimcode{\multicitedelim}% + \ifblank{#2} + {\def\blx@postcode{#6}} + {\def\blx@postcode{\usebibmacro{postnote}#6}}% + \boolfalse{citetracker}% + \boolfalse{pagetracker}% + \blx@citeloop{#3}% + \endgroup} + +% [<prenote>][<postnote>]{<entrykey>,...}[<format>]{<list>}<punct> + +\newrobustcmd*{\citelist}{\blx@citexpunct{citelist}} +\long\csdef{blx@cite@citelist}#1#2#3#4#5#6{% + \begingroup + \blx@citecmdinit + \blx@citeinit + \ifblank{#1} + {} + {\def\abx@field@prenote{#1}}% + \ifblank{#2} + {\let\blx@thenotecheck\relax} + {\def\abx@field@postnote{#2}}% + \def\blx@precode{\usebibmacro{prenote}}% + \def\blx@loopcode{% + \iflistundef{#5} + {\blx@warning@entry{'#5' undefined or not a literal list}% + \abx@missing{#5}} + {\printlist[#4]{#5}}}% + \def\blx@dlimcode{\multicitedelim}% + \ifblank{#2} + {\def\blx@postcode{#6}} + {\def\blx@postcode{\usebibmacro{postnote}#6}}% + \boolfalse{citetracker}% + \boolfalse{pagetracker}% + \blx@citeloop{#3}% + \endgroup} + +% [<prenote>][<postnote>]{<entrykey>,...}[<format>]{<field>}<punct> + +\newrobustcmd*{\citefield}{\blx@citexpunct{citefield}} +\long\csdef{blx@cite@citefield}#1#2#3#4#5#6{% + \begingroup + \blx@citecmdinit + \blx@citeinit + \ifblank{#1} + {} + {\def\abx@field@prenote{#1}}% + \ifblank{#2} + {\let\blx@thenotecheck\relax} + {\def\abx@field@postnote{#2}}% + \def\blx@precode{\usebibmacro{prenote}}% + \def\blx@loopcode{% + \iffieldundef{#5} + {\blx@warning@entry{'#5' undefined or not a field}% + \abx@missing{#5}} + {\printfield[#4]{#5}}}% + \def\blx@dlimcode{\multicitedelim}% + \ifblank{#2} + {\def\blx@postcode{#6}} + {\def\blx@postcode{\usebibmacro{postnote}#6}}% + \boolfalse{citetracker}% + \boolfalse{pagetracker}% + \blx@citeloop{#3}% + \endgroup} + +\renewrobustcmd*{\cite}{\blx@err@citecmd\cite} +\let\blx@cite@cite\relax +\newrobustcmd*{\parencite}{\blx@warn@citecmd\parencite\cite} +\let\blx@cite@parencite\relax +\newrobustcmd*{\footcite}{\blx@warn@citecmd\footcite\cite} +\let\blx@cite@footcite\relax +\newrobustcmd*{\footcitetext}{\blx@warn@citecmd\footcitetext\cite} +\let\blx@cite@footcitetext\relax +\newrobustcmd*{\smartcite}{\blx@warn@citecmd\smartcite\cite} +\let\blx@cite@smartcite\relax +\newrobustcmd*{\textcite}{\blx@warn@citecmd\textcite\cite} +\let\blx@cite@textcite\relax +\newrobustcmd*{\supercite}{\blx@warn@citecmd\supercite\cite} +\let\blx@cite@supercite\relax + +%% ifthen interface + +\def\blx@TE#1#2{% + \TE@throw + \unexpanded{% + \iftrue\@nameuse{fi}% + #1{\@nameuse{iftrue}}{\@nameuse{iffalse}}}#2} + +\def\blx@xTE#1#2{% + \TE@throw + \unexpanded{\iftrue\@nameuse{fi}}% + #1\unexpanded{{\@nameuse{iftrue}}{\@nameuse{iffalse}}}#2} + +\let\blx@TE@hook\@empty + +\appto\blx@blxinit{% + \appto\blx@TE@hook{% + \def\ifhyperref{\blx@TE\blx@imc@ifhyperref}% + \def\ifmorenames{\blx@TE\blx@imc@ifmorenames}% + \def\ifmoreitems{\blx@TE\blx@imc@ifmoreitems}% + \def\ifciteseen{\blx@TE\blx@imc@ifciteseen}% + \def\ifentryseen{\blx@TE\blx@imc@ifentryseen}% + \def\ifciteibid{\blx@TE\blx@imc@ifciteibid}% + \def\ifciteidem{\blx@TE\blx@imc@ifciteidem}% + \def\ifopcit{\blx@TE\blx@imc@ifopcit}% + \def\ifloccit{\blx@TE\blx@imc@ifloccit}% + \def\ifsamepage{\blx@TE\blx@imc@ifsamepage}% + \def\iffirstonpage{\blx@TE\blx@imc@iffirstonpage}% + \def\ifcurrentfield#1{\blx@TE{\blx@imc@ifcurrentfield{#1}}}% + \def\ifcurrentlist#1{\blx@TE{\blx@imc@ifcurrentlist{#1}}}% + \def\ifcurrentname#1{\blx@TE{\blx@imc@ifcurrentname{#1}}}% + \def\ifentrytype#1{\blx@TE{\blx@imc@ifentrytype{#1}}}% + \def\iffieldequalcs#1#2{\blx@TE{\blx@imc@iffieldequalcs{#1}{#2}}}% + \def\iffieldequals#1#2{\blx@TE{\blx@imc@iffieldequals{#1}{#2}}}% + \def\iffieldequalstr#1#2{\blx@TE{\blx@imc@iffieldequalstr{#1}{#2}}}% + \def\iffieldsequal#1#2{\blx@TE{\blx@imc@iffieldsequal{#1}{#2}}}% + \def\iffieldundef#1{\blx@TE{\blx@imc@iffieldundef{#1}}}% + \def\ifnameequalcs#1#2{\blx@TE{\blx@imc@ifnameequalcs{#1}{#2}}}% + \def\ifnameequals#1#2{\blx@TE{\blx@imc@ifnameequals{#1}{#2}}}% + \def\ifnamesequal#1#2{\blx@TE{\blx@imc@ifnamesequal{#1}{#2}}}% + \def\ifnameundef#1{\blx@TE{\blx@imc@ifnameundef{#1}}}% + \def\ifcategory#1{\blx@TE{\blx@imc@ifcategory{#1}}}% + \def\ifkeyword#1{\blx@TE{\blx@imc@ifkeyword{#1}}}% + \def\ifentrycategory#1#2{\blx@TE{\blx@imc@ifentrycategory{#1}{#2}}}% + \def\ifentrykeyword#1#2{\blx@TE{\blx@imc@ifentrykeyword{#1}{#2}}}% + \def\ifcapital{\blx@TE\blx@imc@ifcapital}% + \def\ifinteger#1{\blx@TE{\blx@imc@ifinteger{#1}}}% + \def\iffieldint#1{\blx@TE{\blx@imc@iffieldint{#1}}}% + \def\ifnumeral#1{\blx@TE{\blx@imc@ifnumeral{#1}}}% + \def\ifnumerals#1{\blx@TE{\blx@imc@ifnumerals{#1}}}% + \def\ifpages#1{\blx@TE{\blx@imc@ifpages{#1}}}% + \def\iffieldnum#1{\blx@TE{\blx@imc@iffieldnum{#1}}}% + \def\iffieldnums#1{\blx@TE{\blx@imc@iffieldnums{#1}}}% + \def\iffieldpages#1{\blx@TE{\blx@imc@iffieldpages{#1}}}% + \def\ifbibstring#1{\blx@TE{\blx@imc@ifbibstring{#1}}}% + \def\iffieldbibstring#1{\blx@TE{\blx@imc@iffieldbibstring{#1}}}% + \def\ifnatbibmode{\blx@TE{\iftoggle{blx@natbib}}}% + \def\ifcitation{\blx@TE{\iftoggle{blx@citation}}}% + \def\ifbibliography{\blx@TE{\iftoggle{blx@bibliography}}}% + \def\ifciteindex{\blx@TE{\iftoggle{blx@citeindex}}}% + \def\ifbibindex{\blx@TE{\iftoggle{blx@bibindex}}}% + \def\iffootnote{\blx@TE{\iftoggle{blx@footnote}}}% + \def\ifuseprefix{\blx@TE{\iftoggle{blx@useprefix}}}% + \def\ifuseauthor{\blx@TE{\iftoggle{blx@useauthor}}}% + \def\ifuseeditor{\blx@TE{\iftoggle{blx@useeditor}}}% + \def\ifusetranslator{\blx@TE{\iftoggle{blx@usetranslator}}}% + \def\iffirstinits{\blx@TE{\iftoggle{blx@firstinits}}}% + \def\ifsingletitle{\blx@TE{\iftoggle{abx@bool@singletitle}}}% + \def\ifandothers#1{\blx@TE{\iftoggle{abx@bool@more#1}}}}} + +% {<listmacro>}{<filtercsname>} => matches in <listmacro> + +\protected\def\blx@bibfilter#1#2{% + \begingroup + \edef\blx@do##1{% + \def\noexpand\blx@flt@item{##1}% + \ifboolexpr{\csexpandonce{#2}}% + {\listadd\noexpand\blx@tempa{##1}}% + {}}% + \let\blx@done\relax + \edef\blx@tempa{% + \let\noexpand\blx@tempa\noexpand\@empty + \blx@listloop{#1}}% + \blx@tempa + \edef\blx@tempa{\endgroup + \def\noexpand#1{\blx@tempa}}% + \blx@tempa} + +%% Auxiliary macros + +\newrobustcmd*{\mkbibquote}{\enquote} +\protected\def\blx@imc@mkbibquote{% + \blx@ifuspunct\blx@usquote\enquote} + +\def\blx@usquote{% + \ifnum\@quotelevel>\z@ + \expandafter\blx@usiquote + \else + \expandafter\blx@usoquote + \fi} + +\long\def\blx@usoquote#1{% + \begingroup + \initoquote + \textooquote#1% + \futurelet\@let@token\blx@usoquote@i} + +\def\blx@usoquote@i{% + \blx@usqcheck + {\ifx\blx@postpunct\@empty\else\blx@dopostpunct\fi + \textcoquote\endgroup} + {\blx@setpostpunct\textcoquote\endgroup}} + +\long\def\blx@usiquote#1{% + \begingroup + \initiquote + \textoiquote#1% + \futurelet\@let@token\blx@usiquote@i} + +\def\blx@usiquote@i{% + \blx@usqcheck + {\textciquote\endgroup} + {\blx@setpostpunct\textciquote\endgroup}} + +\def\blx@usqcheck#1#2{% + \def\blx@tempa{#1}% + \def\blx@tempb{#2}% + \ifx\@let@token\space + \blx@usqcheck@i\blx@tempa + \fi + \ifx\@let@token\@sptoken + \blx@usqcheck@i\blx@tempa + \fi + \if\noexpand\@let@token\relax + \blx@usqcheck@i\blx@tempb + \fi + \expandafter\blx@usqcheck@ii\blx@quotepunct\relax&} + +\def\blx@usqcheck@i#1#2&{\fi#1} + +\def\blx@usqcheck@ii#1{% + \if\noexpand#1\relax + \blx@usqcheck@i\blx@tempa + \fi + \if\noexpand#1\noexpand\@let@token + \blx@usqcheck@i{\blx@usqcheck@iii\blx@tempa}% + \fi + \blx@usqcheck@ii} + +\def\blx@usqcheck@iii#1#2{#2#1} + +\newrobustcmd*{\mkbibemph}{\emph} +\protected\long\def\blx@imc@mkbibemph#1{% + \emph{#1}\blx@imc@setpunctfont\emph} + +\newrobustcmd*{\mkbibbold}{\textbf} +\protected\long\def\blx@imc@mkbibbold#1{% + \textbf{#1}\blx@imc@setpunctfont\textbf} + +\blx@regimcs{\mkbibquote \mkbibemph \mkbibbold} + +\newcommand*{\bibleftparen}{\blx@postpunct(} +\newcommand*{\bibrightparen}{\blx@postpunct)\midsentence} +\newcommand*{\bibleftbracket}{\blx@postpunct[} +\newcommand*{\bibrightbracket}{\blx@postpunct]\midsentence} + +\def\blx@parenlevel{% + \iftoggle{blx@footnote} + {\blx@parenlevel@foot} + {\blx@parenlevel@text}} + +\newrobustcmd*{\blx@bibopenparen}{% + \blx@opencheck\bibopenparen + \blx@postpunct + \ifnum\blx@parenlevel=\z@ + \global\blx@parenlevel\@ne + \global\c@parenlevel\@ne + \expandafter\bibleftparen + \else + \expandafter\blx@openparen + \fi} + +\newrobustcmd*{\blx@bibopenbracket}{% + \blx@opencheck\bibopenbracket + \blx@postpunct + \ifnum\blx@parenlevel=\z@ + \global\blx@parenlevel1002 + \global\c@parenlevel\@ne + \expandafter\bibleftbracket + \else + \expandafter\blx@openparen + \fi} + +\newrobustcmd*{\blx@bibcloseparen}{% + \blx@closecheck\bibcloseparen + \blx@postpunct\blx@closeparen} + +\newrobustcmd*{\blx@bibclosebracket}{% + \blx@closecheck\bibclosebracket + \blx@postpunct\blx@closeparen} + +\def\blx@openparen{% + \ifodd\blx@parenlevel + \global\advance\blx@parenlevel\@ne + \global\advance\c@parenlevel\@ne + \expandafter\bibleftbracket + \else + \global\advance\blx@parenlevel\@ne + \global\advance\c@parenlevel\@ne + \expandafter\bibleftparen + \fi} + +\def\blx@closeparen{% + \ifodd\blx@parenlevel + \blx@closeparen@i + \expandafter\bibrightparen + \else + \blx@closeparen@i + \expandafter\bibrightbracket + \fi} + +\def\blx@closeparen@i{% + \ifnum\blx@parenlevel=1002 + \global\blx@parenlevel\z@ + \global\c@parenlevel\z@ + \else + \global\advance\blx@parenlevel\m@ne + \global\advance\c@parenlevel\m@ne + \fi} + +\def\blx@opencheck#1{% + \ifnum\numexpr\blx@parenlevel+\@ne + \ifnum\blx@parenlevel>\@m -1001\fi + >\c@maxparens + \blx@err@nestparen{\string#1}% + \blx@errormark + \fi} + +\def\blx@closecheck#1{% + \ifnum\numexpr\blx@parenlevel + \ifnum\blx@parenlevel>\@m -1001\fi + >\c@maxparens + \blx@err@nestparen{\string#1}% + \blx@errormark + \fi + \ifnum\blx@parenlevel<\@ne + \blx@err@matchparen{Unmatched \string#1}% + \blx@errormark + \fi} + +\protected\def\blx@errormark{% + \rule[0.25ex]{1.25ex}{1.25ex}} + +\AtEndDocument{% + \unless\ifnum\blx@parenlevel@text=\z@ + \blx@err@matchparen{% + Unbalanced parentheses or brackets in the document body}% + \fi + \unless\ifnum\blx@parenlevel@foot=\z@ + \blx@err@matchparen{% + Unbalanced parentheses or brackets in a foot or endnote}% + \fi} + +\newrobustcmd{\mkbibparens}[1]{% + \begingroup + \blx@blxinit + \blx@setsfcodes + \bibopenparen#1\bibcloseparen + \endgroup} + +\newrobustcmd{\mkbibbrackets}[1]{% + \begingroup + \blx@blxinit + \blx@setsfcodes + \bibopenbracket#1\bibclosebracket + \endgroup} + +\newrobustcmd*{\parentext}{\mkbibparens} +\newrobustcmd*{\brackettext}{\mkbibbrackets} + +\newrobustcmd{\mkbibsuperscript}[1]{% + \unspace\allowhyphens\textsuperscript{% + \begingroup + \protected\long\def\mkbibsuperscript##1{% + \blx@warning{Nested superscript}% + \mkbibbrackets{##1}}% + #1\endgroup}} + +\newrobustcmd{\mkbibfootnote}{\blx@mkbibfootnote{}} +\newrobustcmd{\mkbibfootnotetext}{\blx@mkbibfootnote{text}} +\newrobustcmd{\blx@mkbibfootnote}[2]{% + \iftoggle{blx@footnote} + {\blx@warning{Nested notes}% + \addspace\mkbibparens{#2}} + {\unspace + \ifnum\blx@notetype=\tw@ + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {\csuse{blx@theendnote#1}{\protecting{\blxmkbibnote{end}{#2}}}} + {\csuse{footnote#1}{\protecting{\blxmkbibnote{foot}{#2}}}}}} + +\newrobustcmd{\mkbibendnote}{\blx@mkbibendnote{}} +\newrobustcmd{\mkbibendnotetext}{\blx@mkbibendnote{text}} +\newrobustcmd{\blx@mkbibendnote}[2]{% + \iftoggle{blx@footnote} + {\blx@warning{Nested notes}% + \addspace\mkbibparens{#2}} + {\unspace + \ifnum\blx@notetype=\@ne + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {\csuse{footnote#1}{\protecting{\blxmkbibnote{foot}{#2}}}} + {\csuse{blx@theendnote#1}{\protecting{\blxmkbibnote{end}{#2}}}}}} + +\newrobustcmd{\blxmkbibnote}[2]{% + \begingroup + \blx@blxinit + \blx@setsfcodes + \blx@postpunct@agroup + \toggletrue{blx@footnote}% + \csuse{bib#1notewrapper}{#2}% + \endgroup} + +\newcommand{\bibfootnotewrapper}[1]{% + \bibsentence#1\addperiod} + +\newcommand{\bibendnotewrapper}[1]{% + \bibsentence#1\addperiod} + +\AtEndPreamble{% + \def\blx@theendnote{\blx@err@endnote\footnote}% + \def\blx@theendnotetext{\blx@err@endnote\footnotetext}% + \ifdef\endnote + {\def\blx@theendnote{\endnote}% + \ifdef\endnotetext + {\def\blx@theendnotetext{\endnotetext}} + {}} + {\ifdef\pagenote + {\def\blx@theendnote{\pagenote}% + \ifdef\pagenotetext + {\def\blx@theendnotetext{\pagenotetext}} + {}} + {}}} + +\newrobustcmd*{\mknumalph}[1]{% + \begingroup + \blx@tempcnta=#1\relax + \ifnum\blx@tempcnta>702 % + \else + \ifnum\blx@tempcnta>26 % + \advance\blx@tempcnta\m@ne + \divide\blx@tempcnta26\relax + \blx@numalph\blx@tempcnta + \multiply\blx@tempcnta26\relax + \blx@tempcnta=\numexpr#1-\blx@tempcnta\relax + \fi + \fi + \blx@numalph\blx@tempcnta + \endgroup} +\def\blx@numalph#1{% + \ifcase#1\relax\blx@warning@entry{Value out of range}\number#1\or + a\or b\or c\or d\or e\or f\or g\or h\or i\or j\or k\or l\or m\or + n\or o\or p\or q\or r\or s\or t\or u\or v\or w\or x\or y\or z\else + \blx@warning@entry{Value out of range}\number#1\fi} + +\newrobustcmd*{\volcitecmd}[1]{% + \begingroup + \def\blx@tempa{\endgroup#1}% + \@ifstar + {\appto\blx@tempa{*}% + \blx@volcitecmd@i} + {\blx@volcitecmd@i}} + +\def\blx@volcitecmd@i{% + \@ifnextchar[%] + {\blx@volcitecmd@ii} + {\blx@volcitecmd@ii[]}} + +\def\blx@volcitecmd@ii[#1]#2{% + \appto\blx@tempa{[#1]}% + \blx@getformat\blx@tempb{ffd}{}{volcitevolume}% + \@ifnextchar[%] + {\blx@volcitecmd@iii{#2}} + {\edef\blx@tempa{\expandonce\blx@tempa[{% + \expandonce{\blx@tempb{#2}}}]}% + \blx@tempa}} + +\def\blx@volcitecmd@iii#1[#2]{% + \blx@getformat\blx@tempc{ffd}{}{volcitepages}% + \edef\blx@tempa{\expandonce\blx@tempa[{% + \expandonce{\blx@tempb{#1}}% + \noexpand\volcitedelim + \expandonce{\blx@tempc{#2}}}]}% + \blx@tempa} + +%% Control file + +\begingroup +\let~\space +\@makeother\< +\@makeother\> +\@makeother\. +\@makeother\: +\@makeother\? +\@makeother\" +\@makeother\- +\@makeother\= +\@makeother\/ +\xdef\blx@xml@file{% + \blx@sig@bcf\blx@nl + \blx@ver@bcf\blx@nl} +\xdef\blx@xml@endfile{% + </bcf:controlfile>} +\xdef\blx@xml@comment#1{% + ~~<!-- #1 -->\blx@nl} +\xdef\blx@xml@options#1#2#3{% + ~~<bcf:options% + \noexpand\ifblank{#1}{}{ component="#1"}% + \noexpand\ifblank{#2}{}{ type="#2"}% + >\blx@nl + #3% + ~~</bcf:options>\blx@nl} +\xdef\blx@xml@option#1#2{% + ~~~~<bcf:option type="#1">\blx@nl + #2% + ~~~~</bcf:option>\blx@nl} +\xdef\blx@xml@ordered#1#2{% + ~~~~~~<bcf:value order="#1">#2</bcf:value>\blx@nl} + +\xdef\blx@xml@sourcemap#1{% + ~~<bcf:sourcemap>\blx@nl + #1% + ~~</bcf:sourcemap>\blx@nl} +\xdef\blx@xml@sourcemap@maps#1#2{% + ~~~~<bcf:maps#1>\blx@nl + #2% + ~~~~</bcf:maps>\blx@nl} +\xdef\blx@xml@sourcemap@map#1#2{% + ~~~~~~<bcf:map#1>\blx@nl + #2% + ~~~~~~</bcf:map>\blx@nl} +\xdef\blx@xml@sourcemap@perdatasource#1{% + ~~~~~~~~<bcf:per_datasource>#1</bcf:per_datasource>\blx@nl} +\xdef\blx@xml@sourcemap@pertype#1{% + ~~~~~~~~<bcf:per_type>#1</bcf:per_type>\blx@nl} +\xdef\blx@xml@sourcemap@step#1{% + ~~~~~~~~<bcf:map_step#1/>\blx@nl} + +\xdef\blx@xml@displaymodes#1#2{% + ~~<bcf:displaymodes type="#1">\blx@nl + #2% + ~~</bcf:displaymodes>\blx@nl} +\xdef\blx@xml@displaymode#1{% + ~~~~<bcf:displaymode>\blx@nl + #1% + ~~~~</bcf:displaymode>\blx@nl} +\xdef\blx@xml@dtarget#1{% + ~~~~~~<bcf:dtarget>#1</bcf:dtarget>\blx@nl} +\xdef\blx@xml@dmode#1#2{% + ~~~~~~<bcf:dmode order="#1">#2</bcf:dmode>\blx@nl} + +\xdef\blx@xml@labelalphatemplate#1#2{% + ~~<bcf:labelalphatemplate type="#1">\blx@nl + #2% + ~~</bcf:labelalphatemplate>\blx@nl} +\xdef\blx@xml@labelalpha@element#1#2{% + ~~~~<bcf:labelelement order="#1">\blx@nl + #2% + ~~~~</bcf:labelelement>\blx@nl} +\xdef\blx@xml@labelalpha@part#1#2{% + ~~~~~~<bcf:labelpart#1>#2</bcf:labelpart>\blx@nl} + +\xdef\blx@xml@inheritance#1{% + ~~<bcf:inheritance>\blx@nl + #1% + ~~</bcf:inheritance>\blx@nl} +\xdef\blx@xml@inherit@defaults#1#2{% + ~~~~<bcf:defaults#1>\blx@nl + #2% + ~~~~</bcf:defaults>\blx@nl} +\xdef\blx@xml@inherit@data#1{% + ~~~~<bcf:inherit>\blx@nl + #1% + ~~~~</bcf:inherit>\blx@nl} +\xdef\blx@xml@inherit@type#1#2#3{% + ~~~~~~<bcf:type\string_pair source="#1" target="#2"#3/>\blx@nl} +\xdef\blx@xml@inherit@field#1#2#3{% + ~~~~~~<bcf:field source="#1" target="#2"#3/>\blx@nl} +\xdef\blx@xml@inherit@block#1{% + ~~~~~~<bcf:field source="#1" skip="true"/>\blx@nl} + +\xdef\blx@xml@nosorts#1{% + ~~<bcf:nosorts>\blx@nl + #1% + ~~</bcf:nosorts>\blx@nl} +\xdef\blx@xml@nosort#1#2{% + ~~~~<bcf:nosort field="#1" value="#2"/>\blx@nl} + +\xdef\blx@xml@noinits#1{% + ~~<bcf:noinits>\blx@nl + #1% + ~~</bcf:noinits>\blx@nl} +\xdef\blx@xml@noinit#1{% + ~~~~<bcf:noinit value="#1"/>\blx@nl} + +\xdef\blx@xml@sorting#1{% + ~~<bcf:sorting>\blx@nl + #1% + ~~</bcf:sorting>\blx@nl} +\xdef\blx@xml@presort#1#2{% + ~~~~<bcf:presort\noexpand\ifblank{#1}{}{ type="#1"}>% + #2</bcf:presort>\blx@nl} + +\xdef\blx@xml@sortexclude#1#2{% + ~~~~<bcf:sortexclusion\noexpand\ifblank{#1}{}{ type="#1"}>\blx@nl + #2% + ~~~~</bcf:sortexclusion>\blx@nl} +\xdef\blx@xml@exclude#1{% + ~~~~~~<bcf:exclusion>#1</bcf:exclusion>\blx@nl} +\xdef\blx@xml@sort#1#2{% + ~~~~<bcf:sort #1>\blx@nl + #2% + ~~~~</bcf:sort>\blx@nl} +\xdef\blx@xml@sortitem#1#2{% + ~~~~~~<bcf:sortitem #1>#2</bcf:sortitem>\blx@nl} +\xdef\blx@xml@section#1{% + ~~<bcf:section number="#1">} +\xdef\blx@xml@endsection{% + ~~</bcf:section>} + +\xdef\blx@xml@slist#1#2#3#4{% + ~~<bcf:sortlist section="#2" type="#1" label="#3">\blx@nl + #4% + ~~</bcf:sortlist>\blx@nl} +\xdef\blx@xml@slistlos#1#2#3#4{% + ~~<bcf:sortlist section="#2" type="#1" label="#3">\blx@nl + ~~~~<bcf:filter type="field">shorthand</bcf:filter>\blx@nl + #4% + ~~</bcf:sortlist>\blx@nl} + +\xdef\blx@xml@bibdata#1#2{% + ~~<bcf:bibdata section="#1">\blx@nl + #2% + ~~</bcf:bibdata>\blx@nl} +\xdef\blx@xml@datasource#1#2#3{% + ~~~~<bcf:datasource type="#1" datatype="#2">#3</bcf:datasource>\blx@nl} +\xdef\blx@xml@citekey#1#2{% + ~~~~<bcf:citekey order="#2">#1</bcf:citekey>} +\xdef\blx@xml@citeset#1#2{% + ~~~~<bcf:citekey type="set" members="#2">#1</bcf:citekey>} +\xdef\blx@xml@svalue#1#2{% + \blx@xml@option{singlevalued}{% + ~~~~~~<bcf:key>#1</bcf:key>\blx@nl + ~~~~~~<bcf:value>#2</bcf:value>\blx@nl}} +\xdef\blx@xml@mvalue#1#2{% + \blx@xml@option{multivalued}{% + ~~~~~~<bcf:key>#1</bcf:key>\blx@nl + #2}} +\xdef\blx@xml@toggle#1{% + \blx@xml@svalue{#1}{\noexpand\iftoggle{blx@#1}{1}{0}}} +\endgroup + +\def\blx@bcf@options@global{% + \blx@xml@comment{GLOBAL}% + \blx@xml@options{biblatex}{global}{% + \blx@xml@svalue{alphaothers}{\labelalphaothers}% + \blx@xml@toggle{labelalpha}% + \blx@xml@mvalue{labelnamespec}{\blx@bcf@labelnamespec}% + \blx@xml@toggle{labeltitle}% + \blx@xml@mvalue{labeltitlespec}{\blx@bcf@labeltitlespec}% + \blx@xml@toggle{labeltitleyear}% + \blx@xml@toggle{labelyear}% + \blx@xml@mvalue{labelyearspec}{\blx@bcf@labelyearspec}% + \blx@xml@svalue{maxalphanames}{\blx@maxalphanames}% + \blx@xml@svalue{maxbibnames}{\blx@maxbibnames}% + \blx@xml@svalue{maxcitenames}{\blx@maxcitenames}% + \blx@xml@svalue{maxitems}{\blx@maxitems}% + \blx@xml@svalue{minalphanames}{\blx@minalphanames}% + \blx@xml@svalue{minbibnames}{\blx@minbibnames}% + \blx@xml@svalue{mincitenames}{\blx@mincitenames}% + \blx@xml@svalue{minitems}{\blx@minitems}% + \blx@xml@toggle{singletitle}% + \blx@xml@svalue{sortalphaothers}{\sortalphaothers}% + \blx@xml@svalue{sortscheme}{\blx@sorting}% + \blx@xml@svalue{uniquelist}{\blx@uniquelist}% + \blx@xml@svalue{uniquename}{\blx@uniquename}% + \blx@xml@toggle{useauthor}% + \blx@xml@toggle{useeditor}% + \blx@xml@toggle{useprefix}% + \blx@xml@toggle{usetranslator}% + }% +} + +\def\blx@bcf@options@type#1{% + \blx@xml@comment{#1}% + \blx@xml@options{biblatex}{#1}{% + \blx@xml@toggle{labelalpha}% + \blx@xml@mvalue{labelnamespec}{% + \ifcsdef{blx@bcf@labelnamespec@#1} + {\csuse{blx@bcf@labelnamespec@#1}} + {\blx@bcf@labelnamespec}}% + \blx@xml@toggle{labeltitle}% + \blx@xml@mvalue{labeltitlespec}{% + \ifcsdef{blx@bcf@labeltitlespec@#1} + {\csuse{blx@bcf@labeltitlespec@#1}} + {\blx@bcf@labeltitlespec}}% + \blx@xml@toggle{labeltitleyear}% + \blx@xml@toggle{labelyear}% + \blx@xml@mvalue{labelyearspec}{% + \ifcsdef{blx@bcf@labelyearspec@#1} + {\csuse{blx@bcf@labelyearspec@#1}} + {\blx@bcf@labelyearspec}}% + \blx@xml@svalue{maxalphanames}{\blx@maxalphanames}% + \blx@xml@svalue{maxbibnames}{\blx@maxbibnames@type}% + \blx@xml@svalue{maxcitenames}{\blx@maxcitenames@type}% + \blx@xml@svalue{maxitems}{\blx@maxitems@type}% + \blx@xml@svalue{minalphanames}{\blx@minalphanames}% + \blx@xml@svalue{minbibnames}{\blx@minbibnames@type}% + \blx@xml@svalue{mincitenames}{\blx@mincitenames@type}% + \blx@xml@svalue{minitems}{\blx@minitems@type}% + \blx@xml@toggle{singletitle}% + \blx@xml@toggle{skipbib}% + \blx@xml@toggle{skiplab}% + \blx@xml@toggle{skiplos}% + \blx@xml@svalue{uniquelist}{\blx@uniquelist}% + \blx@xml@svalue{uniquename}{\blx@uniquename}% + \blx@xml@toggle{useauthor}% + \blx@xml@toggle{useeditor}% + \blx@xml@toggle{useprefix}% + \blx@xml@toggle{usetranslator}% + }% +} + +\def\blx@ctrlwrite@biber{% + \begingroup + \blx@safe@actives + \let\protect\string + % options + \edef\labelalphaothers{\labelalphaothers}% + \edef\sortalphaothers{\sortalphaothers}% + \blx@xmlsanitizeafter{\def\labelalphaothers}{\labelalphaothers}% + \blx@xmlsanitizeafter{\def\sortalphaothers}{\sortalphaothers}% + \edef\blx@tempa{% + \blx@xml@file + \blx@xml@comment{BIBER OPTIONS}% + \blx@xml@options{biber}{global}{% + \blx@xml@svalue{bblencoding}{\blx@texencoding}% + \blx@xml@svalue{bibencoding}{\blx@bibencoding}% + \blx@xml@toggle{debug}% + \blx@xml@svalue{mincrossrefs}{\blx@mincrossrefs}% + \blx@xml@toggle{sortcase}% + \blx@xml@toggle{sortfirstinits}% + \ifdef\blx@sortlocale + {\blx@xml@svalue{sortlocale}{\blx@sortlocale}} + {}% + \blx@xml@toggle{sortupper}% + }% + \blx@xml@comment{BIBLATEX OPTIONS}% + \blx@bcf@options@global + }% + \ifdef\blx@opts@type + {\def\do##1{% + \begingroup + \blx@setoptions@type{##1}% + \begingroup + \let\protect\relax + \blx@checkoptions@type + \endgroup + \xappto\blx@tempa{\blx@bcf@options@type{##1}}% + \endgroup}% + \dolistloop\blx@opts@type} + {}% + % displaymode + \eappto\blx@tempa{% + \blx@xml@comment{DISPLAYMODES}% + \blx@xml@displaymodes{global}{% + \csuse{blx@biber@displaymodes@global}% + }% + }% + % sourcemap + \ifbool{sourcemap} + {\eappto\blx@tempa{% + \blx@xml@comment{SOURCEMAP}% + \blx@xml@sourcemap{% + \ifcsdef{blx@biber@sourcemap@user}{\csuse{blx@biber@sourcemap@user}}{}% + \ifcsdef{blx@biber@sourcemap@defaults@bibtex}{\csuse{blx@biber@sourcemap@defaults@bibtex}}{}% + \ifcsdef{blx@biber@sourcemap@defaults@biblatexml}{\csuse{blx@biber@sourcemap@defaults@biblatexml}}{}% + \ifcsdef{blx@biber@sourcemap@defaults@endnotexml}{\csuse{blx@biber@sourcemap@defaults@endnotexml}}{}% + \ifcsdef{blx@biber@sourcemap@defaults@ris}{\csuse{blx@biber@sourcemap@defaults@ris}}{}% + \ifcsdef{blx@biber@sourcemap@defaults@zoterordfxml}{\csuse{blx@biber@sourcemap@defaults@zoterordfxml}}{}% + }% + }} + {}% + % labelalpha template + \eappto\blx@tempa{% + \blx@xml@comment{LABELALPHA TEMPLATE}}% + \def\do##1{% + \eappto\blx@tempa{% + \blx@xml@labelalphatemplate{##1}{% + \csuse{blx@biber@labelalphatemplate@##1}}% + }% + }% + \dolistloop\blx@biber@latem@type + % data inheritance + \eappto\blx@tempa{% + \blx@xml@comment{INHERITANCE}% + \blx@xml@inheritance{% + \csuse{blx@biber@inherit@default}% + \csuse{blx@biber@inherit@data}% + }% + }% + % noinit + \ifcsdef{blx@biber@noinit} + {\eappto\blx@tempa{% + \blx@xml@comment{NOINIT}% + \blx@xml@noinits{% + \csuse{blx@biber@noinit}% + }% + }} + {}% + % nosort + \ifcsdef{blx@biber@nosort} + {\eappto\blx@tempa{% + \blx@xml@comment{NOSORT}% + \blx@xml@nosorts{% + \csuse{blx@biber@nosort}% + }% + }} + {}% + % sorting + \def\do##1{% + \eappto\blx@bcf@presort{\csuse{blx@bcf@presort@##1}}% + \eappto\blx@bcf@exclude{\csuse{blx@bcf@exclude@##1}}}% + \dolistcsloop{blx@biber@datamodel@entrytypes}% + \eappto\blx@tempa{% + \blx@xml@comment{SORTING}% + \blx@xml@sorting{% + \blx@bcf@presort + \blx@bcf@exclude + \csuse{blx@biber@sorting@\blx@sorting}% + }% + }% + % datamodel + \eappto\blx@tempa{% + \blx@xml@comment{DATA MODEL}% + \blx@xml@datamodel{% + \blx@xml@datamodel@entrytypes{% + \blx@bcf@datamodel@entrytypes + }% + \blx@xml@datamodel@fields{% + \blx@bcf@datamodel@fields + }% + \blx@bcf@datamodel@entryfields + \blx@bcf@datamodel@constraints + }% + }% + % files + \let\blx@tempb\@empty + \blx@bibdata\blx@tempb\blx@bibfiles + \eappto\blx@tempa{% + \blx@xml@comment{CITATION DATA}% + \blx@xml@comment{SECTION 0}% + \blx@xml@bibdata{0}{\blx@tempb}% + \blx@xml@section{0}% + }% + \immediate\openout\blx@bcfout\jobname.bcf\relax + \blx@auxwrite\blx@bcfout{}{\blx@tempa}% + \global\undef\blx@tempa + \endgroup + \AfterEndDocument{% + \blx@auxwrite\blx@bcfout{}{% + \blx@xml@endsection\blx@nl + \csuse{blx@xml@slistsbib}% + \blx@xml@endfile}% + \immediate\closeout\blx@bcfout}} + +%% Customisation + +% nosort +\newrobustcmd*{\DeclareNosort}[1]{% + \begingroup + \let\nosort\blx@nosort + \let\blx@tempa\@empty + #1% + \global\cslet{blx@biber@nosort}\blx@tempa + \endgroup} +\@onlypreamble\DeclareNosort + +\newcommand*{\blx@nosort}[2]{% + \eappto\blx@tempa{% + \blx@xml@nosort{#1}{#2}}} + +% noinit +\newrobustcmd*{\DeclareNoinit}[1]{% + \begingroup + \let\noinit\blx@noinit + \let\blx@tempa\@empty + #1% + \global\cslet{blx@biber@noinit}\blx@tempa + \endgroup} +\@onlypreamble\DeclareNoinit + +\newcommand*{\blx@noinit}[1]{% + \eappto\blx@tempa{% + \blx@xml@noinit{#1}}} + +% sourcemap +\newrobustcmd*{\DeclareSourcemap}[1]{% + \booltrue{sourcemap}% + \begingroup + \let\maps\blx@sourcemap@maps + \let\blx@tempa\@empty + #1% + \csxdef{blx@biber@sourcemap@user}{\blx@tempa}% + \endgroup} +\@onlypreamble\DeclareSourcemap + +\newrobustcmd*{\DeclareDefaultSourcemap}[2][]{% + \booltrue{sourcemap}% + \begingroup + \let\blx@tempa\@empty + \let\blx@tempb\@empty + \let\blx@tempc\@empty + \let\blx@tempd\@empty + \let\map\blx@sourcemap@map + #2% + \ifblank{#1} + {\setkeys{blx@sourcemap@maps}{datatype=bibtex, defaults=true}} + {\setkeys{blx@sourcemap@maps}{#1, defaults=true}}% + \eappto\blx@tempa{% + \blx@xml@sourcemap@maps{\blx@tempb}{\blx@tempc}}% + \csxdef{blx@biber@sourcemap@defaults@\blx@tempd}{\blx@tempa}% + \endgroup} +\@onlypreamble\DeclareDefaultSourcemap + +\newcommand*{\blx@sourcemap@maps}[2][]{% + \let\blx@tempb\@empty + \let\blx@tempc\@empty + \let\map\blx@sourcemap@map + \ifblank{#1} + {} + {\setkeys{blx@sourcemap@maps}{#1}}% + #2% + \eappto\blx@tempa{% + \blx@xml@sourcemap@maps{\blx@tempb}{\blx@tempc}}} + +\define@key{blx@sourcemap@maps}{datatype}{% characters + \eappto\blx@tempb{ datatype="#1"}% + \eappto\blx@tempd{#1}} +\define@key{blx@sourcemap@maps}{overwrite}[true]{% true|false + \ifstrequal{#1}{true} + {\appto\blx@tempb{ map\string_overwrite="1"}} + {}} +\define@key{blx@sourcemap@maps}{defaults}[true]{% true|false + \ifstrequal{#1}{true} + {\appto\blx@tempb{ driver\string_defaults="1"}} + {}} + +\newcommand*{\blx@sourcemap@map}[2][]{% + \let\blx@tempd\@empty + \let\blx@tempe\@empty + \let\perdatasource\blx@sourcemap@perdatasource + \let\pertype\blx@sourcemap@pertype + \let\step\blx@sourcemap@step + \ifblank{#1} + {} + {\setkeys{blx@sourcemap@map}{#1}}% + #2% + \eappto\blx@tempc{% + \blx@xml@sourcemap@map{\blx@tempd}{\blx@tempe}}} + +\define@key{blx@sourcemap@map}{overwrite}[true]{% true|false + \ifstrequal{#1}{true} + {\appto\blx@tempd{ map\string_overwrite="1"}} + {}} + +\newcommand*{\blx@sourcemap@perdatasource}[1]{% + \eappto\blx@tempe{% + \blx@xml@sourcemap@perdatasource{#1}}} + +\newcommand*{\blx@sourcemap@pertype}[1]{% + \eappto\blx@tempe{% + \blx@xml@sourcemap@pertype{#1}}} + +\newcommand*{\blx@sourcemap@step}[1][2]{% + \let\blx@tempf\@empty + \setkeys{blx@sourcemap@step}{#1}% + \eappto\blx@tempe{% + \blx@xml@sourcemap@step{\blx@tempf}}} + +\define@key{blx@sourcemap@step}{typesource}{% characters + \eappto\blx@tempf{ map\string_type\string_source="#1"}} +\define@key{blx@sourcemap@step}{typetarget}{% characters + \eappto\blx@tempf{ map\string_type\string_target="#1"}} +\define@key{blx@sourcemap@step}{final}[true]{% true|false + \ifstrequal{#1}{true} + {\appto\blx@tempf{ map\string_final="1"}} + {}} +\define@key{blx@sourcemap@step}{fieldsource}{% characters + \eappto\blx@tempf{ map\string_field\string_source="#1"}} +\define@key{blx@sourcemap@step}{fieldtarget}{% characters + \eappto\blx@tempf{ map\string_field\string_target="#1"}} +\define@key{blx@sourcemap@step}{fieldset}{% characters + \eappto\blx@tempf{ map\string_field\string_set="#1"}} +\define@key{blx@sourcemap@step}{fieldvalue}{% characters + \eappto\blx@tempf{ map\string_field\string_value="#1"}} +\define@key{blx@sourcemap@step}{null}[true]{% true|false + \ifstrequal{#1}{true} + {\appto\blx@tempf{ map\string_null="1"}} + {}} +\define@key{blx@sourcemap@step}{origfield}[true]{% true|false + \ifstrequal{#1}{true} + {\appto\blx@tempf{ map\string_origfield="1"}} + {}} +\define@key{blx@sourcemap@step}{origfieldval}[true]{% true|false + \ifstrequal{#1}{true} + {\appto\blx@tempf{ map\string_origfieldval="1"}} + {}} +\define@key{blx@sourcemap@step}{origentrytype}[true]{% true|false + \ifstrequal{#1}{true} + {\appto\blx@tempf{ map\string_origentrytype="1"}} + {}} +\define@key{blx@sourcemap@step}{match}{% characters + \appto\blx@tempf{ map\string_match="#1"}} +\define@key{blx@sourcemap@step}{replace}{% characters + \eappto\blx@tempf{ map\string_replace="#1"}} + +%%% + +\newrobustcmd*{\DeclareLabelalphaTemplate}[2][]{% + \ifblank{#1} + {\blx@biber@latem{#2}{global}} + {\forcsvlist{\blx@biber@latem{#2}}{#1}}} +\@onlypreamble\DeclareLabelalphaTemplate + +\def\blx@biber@latem#1#2{% + \begingroup + \let\labelelement\blx@latem@element + \let\field\blx@latem@field + \let\literal\blx@latem@literal + \blx@tempcnta\z@ + \let\blx@tempa\@empty + #1% + \ifdef\blx@biber@latem@type + {\ifinlist{#2}{\blx@biber@latem@type} + {\global\cslet{blx@biber@labelalphatemplate@#2}\blx@tempa} + {\listgadd\blx@biber@latem@type{#2}% + \global\cslet{blx@biber@labelalphatemplate@#2}\blx@tempa}}% + {\listgadd\blx@biber@latem@type{#2}% + \global\cslet{blx@biber@labelalphatemplate@#2}\blx@tempa}% + \endgroup} + +\newcommand{\blx@latem@element}[1]{% + \advance\blx@tempcnta\@ne + \let\blx@tempb\@empty + #1% + \eappto\blx@tempa{% + \blx@xml@labelalpha@element{\the\blx@tempcnta}{\blx@tempb}}} + +\newcommand*{\blx@latem@literal}[1]{% + \eappto\blx@tempb{% + \blx@xml@labelalpha@part{}{#1}}} + +\newcommand*{\blx@latem@field}[2][]{% + \let\blx@tempc\@empty + \ifblank{#1} + {} + {\setkeys{blx@latem@field}{#1}}% + \eappto\blx@tempb{% + \blx@xml@labelalpha@part{\blx@tempc}{#2}}} + +\define@key{blx@latem@field}{uppercase}[true]{% true|false + \ifstrequal{#1}{true} + {\appto\blx@tempc{ uppercase="1"}} + {}} +\define@key{blx@latem@field}{lowercase}[true]{% true|false + \ifstrequal{#1}{true} + {\appto\blx@tempc{ lowercase="1"}} + {}} +\define@key{blx@latem@field}{final}[true]{% true|false + \ifstrequal{#1}{true} + {\appto\blx@tempc{ final="1"}} + {}} +\define@key{blx@latem@field}{strwidth}{% integer + \eappto\blx@tempc{ substring\string_width="#1"}} +\define@key{blx@latem@field}{varwidth}[true]{% "v" + \ifstrequal{#1}{true} + {\appto\blx@tempc{ substring\string_width="v"}} + {}} +\define@key{blx@latem@field}{varwidthnorm}[true]{% "vf" + \ifstrequal{#1}{true} + {\appto\blx@tempc{ substring\string_width="vf"}} + {}} +\define@key{blx@latem@field}{varwidthlist}[true]{% "l" + \ifstrequal{#1}{true} + {\appto\blx@tempc{ substring\string_width="l"}} + {}} +\define@key{blx@latem@field}{strfixedcount}{% + \eappto\blx@tempc{ substring\string_fixed\string_threshold="#1"}} +\define@key{blx@latem@field}{strwidthmax}{% + \eappto\blx@tempc{ substring\string_width\string_max="#1"}} +\define@key{blx@latem@field}{strside}{% left|right + \ifstrequal{#1}{right} + {\eappto\blx@tempc{ substring\string_side="right"}} + {\eappto\blx@tempc{ substring\string_side="left"}}} +\define@key{blx@latem@field}{compound}[false]{% true|false + \ifstrequal{#1}{true} + {\appto\blx@tempc{ substring\string_compound="1"}} + {}} +\define@key{blx@latem@field}{ifnames}{% + \eappto\blx@tempc{ ifnamecount="#1"}} +\define@key{blx@latem@field}{names}{% + \eappto\blx@tempc{ namecount="#1"}} + +% [<exceptions>]{<options>} + +\newrobustcmd*{\DefaultInheritance}[2][]{% + \begingroup + \ifblank{#2} + {} + {\setkeys{blx@inherit@default}{#2}}% + \edef\blx@tempa{\space + inherit\string_all="\iftoggle{blx@inherit@all}{true}{false}"\space + override\string_target="\iftoggle{blx@inherit@override}{true}{false}"}% + \let\blx@tempb\@empty + \let\except\blx@inherit@except + #1% + \xdef\blx@biber@inherit@default{% + \blx@xml@inherit@defaults{\blx@tempa}{\blx@tempb}}% + \endgroup} +\@onlypreamble\DefaultInheritance + +\newtoggle{blx@inherit@all} +\newtoggle{blx@inherit@override} + +\define@key{blx@inherit@default}{all}[true]{% true|false + \settoggle{blx@inherit@all}{#1}} +\define@key{blx@inherit@default}{override}[true]{% true|false + \settoggle{blx@inherit@override}{#1}} + +% {<source>}{<target>}{<options>} + +\newcommand{\blx@inherit@except}[3]{% + \let\blx@tempc\@empty + \ifblank{#3} + {} + {\setkeys{blx@inherit@except}{#3}}% + \eappto\blx@tempb{% + \blx@xml@inherit@type{#1}{#2}{\blx@tempc}}} + +\define@key{blx@inherit@except}{all}[true]{% true|false + \eappto\blx@tempc{ inherit\string_all="#1"}} +\define@key{blx@inherit@except}{override}[true]{% true|false + \eappto\blx@tempc{ override\string_target="#1"}} + +% {<type,type,...>}{<type,type,...>}{<spec>} + +\newrobustcmd*{\DeclareDataInheritance}[3]{% + \begingroup + \let\blx@tempa\@empty + \forcsvlist{\blx@inherit@i{#2}}{#1}% + \let\blx@tempb\@empty + \let\inherit\blx@inherit@field + \let\noinherit\blx@inherit@block + #3% + \xappto\blx@biber@inherit@data{% + \blx@xml@inherit@data{% + \blx@tempa + \blx@tempb}}% + \endgroup} +\@onlypreamble\DeclareDataInheritance + +\def\blx@inherit@i#1#2{% + \forcsvlist{\blx@inherit@ii{#2}}{#1}} + +\def\blx@inherit@ii#1#2{% + \eappto\blx@tempa{\blx@xml@inherit@type{#1}{#2}{}}} + +% [<options>]{<source>}{<target>} + +\newcommand{\blx@inherit@field}[3][]{% + \let\blx@tempc\@empty + \ifblank{#1} + {} + {\setkeys{blx@inherit@field}{#1}}% + \eappto\blx@tempb{% + \blx@xml@inherit@field{#2}{#3}{\blx@tempc}}} + +\newcommand{\blx@inherit@block}[1]{% + \eappto\blx@tempb{\blx@xml@inherit@block{#1}}} + +\define@key{blx@inherit@field}{override}[true]{% true|false + \ifstrequal{#1}{true} + {\edef\blx@tempc{ override\string_target="true"}} + {\edef\blx@tempc{ override\string_target="false"}}} + +\newrobustcmd*{\ResetDataInheritance}{% + \global\csundef{blx@biber@inherit@data}} +\@onlypreamble\ResetDataInheritance + +% {<name>}{<spec>} + +\newrobustcmd*{\DeclareSortingScheme}[2]{% + \begingroup + \let\sort\blx@sortdef@sort + \let\name\blx@sortdef@field% legacy pre-biblatex 2.0 compat + \let\list\blx@sortdef@field% legacy pre-biblatex 2.0 compat + \let\field\blx@sortdef@field + \let\literal\blx@sortdef@literal + \def\citeorder{\blx@sortdef@field{citeorder}}% + \blx@tempcnta\z@ + \let\blx@tempa\@empty + #2% + \global\cslet{blx@biber@sorting@#1}\blx@tempa + \endgroup} +\@onlypreamble\DeclareSortingScheme + +\newcommand{\blx@sortdef@sort}[2][]{% + \advance\blx@tempcnta\@ne + \blx@tempcntb\z@ + \let\blx@tempb\@empty + \edef\blx@tempc{order="\the\blx@tempcnta"}% + \ifblank{#1} + {} + {\setkeys{blx@sortdef@sort}{#1}}% + \let\do\@firstofone + #2% + \eappto\blx@tempa{% + \blx@xml@sort{\blx@tempc}{\blx@tempb}}} + +\define@key{blx@sortdef@sort}{direction}{% ascending|descending + \ifstrequal{#1}{ascending} + {\eappto\blx@tempc{ sort\string_direction="ascending"}} + {\eappto\blx@tempc{ sort\string_direction="descending"}}} +\define@key{blx@sortdef@sort}{final}[true]{% true|false + \ifstrequal{#1}{true} + {\appto\blx@tempc{ final="1"}} + {}} +\define@key{blx@sortdef@sort}{sortcase}[true]{% true|false + \ifstrequal{#1}{true} + {\appto\blx@tempc{ sortcase="1"}} + {\appto\blx@tempc{ sortcase="0"}}} +\define@key{blx@sortdef@sort}{sortupper}[true]{% true|false + \ifstrequal{#1}{true} + {\appto\blx@tempc{ sortupper="1"}} + {\appto\blx@tempc{ sortupper="0"}}} + +\newcommand*{\blx@sortdef@field}[2][]{% + \advance\blx@tempcntb\@ne + \edef\blx@tempd{order="\the\blx@tempcntb"}% + \ifblank{#1} + {} + {\setkeys{blx@sortdef@field}{#1}}% + \eappto\blx@tempb{% + \blx@xml@sortitem{\blx@tempd}{#2}}} + +\define@key{blx@sortdef@field}{padside}{% left|right + \ifstrequal{#1}{right} + {\eappto\blx@tempd{ pad\string_side="right"}} + {\eappto\blx@tempd{ pad\string_side="left"}}} +\define@key{blx@sortdef@field}{padwidth}{% integer + \eappto\blx@tempd{ pad\string_width="#1"}} +\define@key{blx@sortdef@field}{padchar}{% character + \blx@xmlsanitizeafter{\def\blx@tempe}{#1}% + \eappto\blx@tempd{ pad\string_char="\blx@tempe"}} +\define@key{blx@sortdef@field}{strside}{% left|right + \ifstrequal{#1}{right} + {\eappto\blx@tempd{ substring\string_side="right"}} + {\eappto\blx@tempd{ substring\string_side="left"}}} +\define@key{blx@sortdef@field}{strwidth}{% integer + \eappto\blx@tempd{ substring\string_width="#1"}} + +\def\blx@sortdef@literal#1{% + \advance\blx@tempcntb\@ne + \blx@xmlsanitizeafter{\def\blx@tempe}{#1}% + \eappto\blx@tempb{% + \blx@xml@sortitem{order="\the\blx@tempcntb"}{\blx@tempe}}} + +% [<type,type,...>]{<string>} + +\newrobustcmd*{\DeclarePresort}[2][]{% + \begingroup + \blx@xmlsanitizeafter{\def\blx@tempa}{#2}% + \ifblank{#1} + {\xdef\blx@bcf@presort{\blx@xml@presort{}{\blx@tempa}}} + {\notblank{#2} + {\forcsvlist{\blx@defpresort\blx@tempa}{#1}} + {\forcsvlist\blx@undefpresort{#1}}}% + \endgroup} +\@onlypreamble\DeclarePresort + +\def\blx@defpresort#1#2{% + \csxdef{blx@bcf@presort@#2}{\blx@xml@presort{#2}{#1}}} +\def\blx@undefpresort#1{% + \global\csundef{blx@bcf@presort@#1}} + +\newrobustcmd*{\DeclareSortExclusion}[2]{% + \forcsvlist{\blx@sortexlude{#2}}{#1}} + +\def\blx@sortexlude#1#2{% + \begingroup + \ifblank{#1} + {\global\csundef{blx@bcf@exclude@#2}} + {\let\blx@tempa\@empty + \forcsvlist\blx@sortexlude@i{#1}% + \csxdef{blx@bcf@exclude@#2}{% + \blx@xml@sortexclude{#2}{\blx@tempa}}} + \endgroup} + +\def\blx@sortexlude@i#1{% + \appto\blx@tempa{\blx@xml@exclude{#1}}} + +% [<type,type,...>]{<field,field,...>} + +\newrobustcmd*{\DeclareLabelname}[2][]{% + \blx@defmvalue{labelnamespec}{#1}{#2}} +\@onlypreamble\DeclareLabelname + +\newrobustcmd*{\DeclareLabeltitle}[2][]{% + \blx@defmvalue{labeltitlespec}{#1}{#2}} +\@onlypreamble\DeclareLabeltitle + +\newrobustcmd*{\DeclareLabelyear}[2][]{% + \blx@defmvalue{labelyearspec}{#1}{#2}} +\@onlypreamble\DeclareLabelyear + +\def\blx@defmvalue#1#2#3{% + \ifblank{#2} + {\expandafter\blx@defmvalue@ii\csname blx@bcf@#1\endcsname{#3}} + {\forcsvlist{\blx@defmvalue@i{#1}{#3}}{#2}}} + +\def\blx@defmvalue@i#1#2#3{% + \blx@addtypeopt{#3}% + \expandafter\blx@defmvalue@ii\csname blx@bcf@#1@#3\endcsname{#2}} + +\def\blx@defmvalue@ii#1#2{% + \begingroup + \global\let#1\@empty + \blx@tempcnta\z@ + \def\do##1{% + \advance\blx@tempcnta\@ne + \xappto#1{\noexpand\blx@xml@ordered{\the\blx@tempcnta}{##1}}}% + \docsvlist{#2}% + \endgroup} + +% experimental + +\newrobustcmd*{\DeclareDisplaymode}[2][global]{% + \begingroup + \blx@tempcnta\z@ + \def\blx@tempa{\blx@xml@dtarget{*}}% + \forcsvlist\blx@defdisplaymode{#2}% + \csxdef{blx@biber@displaymodes@#1}{% + \blx@xml@displaymode{\blx@tempa}}% + \endgroup} + +\def\blx@defdisplaymode#1{% + \advance\blx@tempcnta\@ne + \edef\blx@tempa{% + \blx@tempa + \blx@xml@dmode{\the\blx@tempcnta}{#1}}} + +\DeclareDisplaymode{original,romanised,uniform,translated} + +%% Package options + +% [<entrytype,entrytype,...>]{<options>} + +\newrobustcmd*{\ExecuteBibliographyOptions}[2][]{% + \ifblank{#1} + {\setkeys{blx@opt@pre}{#2}} + {\forcsvlist{\blx@typeoptions{#2}}{#1}}} +\@onlypreamble\ExecuteBibliographyOptions + +\def\blx@typeoptions#1#2{% + \blx@addtypeopt{#2}% + \csappto{blx@opts@type@#2}{#1}} + +\def\blx@addtypeopt#1{% + \notblank{#1} + {\ifdef\blx@opts@type + {\ifinlist{#1}{\blx@opts@type} + {} + {\listadd\blx@opts@type{#1}}} + {\listadd\blx@opts@type{#1}}} + {}} + +% load-time only + +% Have to have a dummy for this as it's set much earlier but is passed +% through to here where we just ignore it +\define@key{blx@opt@ldt}{datamodel}{} + +\define@key{blx@opt@ldt}{style}{% + \def\blx@cbxfile{#1}% + \def\blx@bbxfile{#1}} + +\define@key{blx@opt@ldt}{bibstyle}{% + \def\blx@bbxfile{#1}} + +\define@key{blx@opt@ldt}{citestyle}{% + \def\blx@cbxfile{#1}} + +\define@key{blx@opt@ldt}{natbib}[true]{% + \settoggle{blx@natbib}{#1}} + +\define@key{blx@opt@ldt}{mcite}[true]{% + \settoggle{blx@mcite}{#1}} + +% load-time and preamble + +\DeclareBibliographyOption{backend}{ + \blx@error + {'backend' is load-time only option} + {The 'backend' option is load-time only and cannot + be\MessageBreak set after package loading}} + +\DeclareBibliographyOption{debug}[true]{% + \settoggle{blx@debug}{#1}} + +\DeclareBibliographyOption{loadfiles}[true]{% + \settoggle{blx@loadfiles}{#1}} + +\DeclareBibliographyOption{mincrossrefs}{% + \ifnum#1<\z@ + \def\blx@mincrossrefs{1}% + \def\blx@minxrefs{1}% + \else + \def\blx@mincrossrefs{#1}% + \def\blx@minxrefs{#1}% + \fi} +\def\blx@minxrefs{2} + +\DeclareBibliographyOption{texencoding}{% + \ifstrequal{#1}{auto} + {\undef\blx@texencoding} + {\def\blx@texencoding{#1}}} + +\DeclareBibliographyOption{bibencoding}{% + \ifcsdef{blx@bibenc@#1} + {\letcs\blx@bibencoding{blx@bibenc@#1}} + {\def\blx@bibencoding{#1}}} + +\def\abx@mapbibenc#1#2{\csdef{blx@bibenc@#1}{#2}} +\abx@mapbibenc{inputenc}{auto} +\abx@mapbibenc{x-ascii}{ascii} + +\def\abx@mapinpenc#1#2{\csdef{blx@inpenc@#1}{#2}} +\abx@mapinpenc{utf8x}{utf8} +\abx@mapinpenc{lutf8}{utf8} +\abx@mapinpenc{x-ascii}{ascii} + +\DeclareBibliographyOption{safeinputenc}[true]{% + \settoggle{blx@safeinputenc}{#1}} +\newtoggle{blx@safeinputenc} + +\DeclareBibliographyOption{sorting}{% + \def\blx@sorting{#1}} + +\AtEndPreamble{% + \ifcsdef{blx@biber@sorting@\blx@sorting} + {} + {\blx@err@invopt{sorting=\blx@sorting}{}% + \def\blx@sorting{nty}}} + +\DeclareBibliographyOption{sortcase}[true]{% + \settoggle{blx@sortcase}{#1}} + +\DeclareBibliographyOption{sortupper}[true]{% + \settoggle{blx@sortupper}{#1}} + +\DeclareBibliographyOption{sortlocale}{% + \ifblank{#1} + {\undef\blx@sortlocale} + {\edef\blx@sortlocale{\detokenize{#1}}}} + +\DeclareBibliographyOption{sortlos}{% + \blx@warning@noline{% + sortlos option is deprecated, use 'sorting' option to \string\printshorthands}} + +\DeclareBibliographyOption{maxnames}{% + \numdef\blx@maxcitenames{#1}% + \numdef\blx@maxbibnames{#1}} +\DeclareBibliographyOption{minnames}{% + \numdef\blx@mincitenames{#1}% + \numdef\blx@minbibnames{#1}} +\DeclareTypeOption{maxnames}{% + \numdef\blx@maxcitenames@type{#1}% + \numdef\blx@maxbibnames@type{#1}% + \c@maxnames#1\relax} +\DeclareTypeOption{minnames}{% + \numdef\blx@mincitenames@type{#1}% + \numdef\blx@minbibnames@type{#1}% + \c@minnames#1\relax} +\DeclareEntryOption{maxnames}{% + \c@maxnames#1\relax} +\DeclareEntryOption{minnames}{% + \c@minnames#1\relax} + +\DeclareBibliographyOption{maxbibnames}{% + \numdef\blx@maxbibnames{#1}} +\DeclareBibliographyOption{minbibnames}{% + \numdef\blx@minbibnames{#1}} +\DeclareTypeOption{maxbibnames}{% + \numdef\blx@maxbibnames@type{#1}% + \iftoggle{blx@bibliography} + {\c@maxnames#1\relax} + {}} +\DeclareTypeOption{minbibnames}{% + \numdef\blx@minbibnames@type{#1}% + \iftoggle{blx@bibliography} + {\c@minnames#1\relax} + {}} +\DeclareEntryOption{maxbibnames}{% + \iftoggle{blx@bibliography} + {\c@maxnames#1\relax} + {}} +\DeclareEntryOption{minbibnames}{% + \iftoggle{blx@bibliography} + {\c@minnames#1\relax} + {}} + +\DeclareBibliographyOption{maxcitenames}{% + \numdef\blx@maxcitenames{#1}} +\DeclareBibliographyOption{mincitenames}{% + \numdef\blx@minbibnames{#1}} +\DeclareTypeOption{maxcitenames}{% + \numdef\blx@maxcitenames@type{#1}% + \iftoggle{blx@bibliography} + {} + {\c@maxnames#1\relax}} +\DeclareTypeOption{mincitenames}{% + \numdef\blx@minbibnames@type{#1}% + \iftoggle{blx@bibliography} + {} + {\c@minnames#1\relax}} +\DeclareEntryOption{maxcitenames}{% + \iftoggle{blx@bibliography} + {} + {\c@maxnames#1\relax}} +\DeclareEntryOption{mincitenames}{% + \iftoggle{blx@bibliography} + {} + {\c@minnames#1\relax}} + +\appto\blx@checkoptions@global{% + \blx@maxmin@num{maxbibnames}{minbibnames}\blx@maxbibnames\blx@minbibnames + \blx@maxmin@num{maxcitenames}{mincitenames}\blx@maxcitenames\blx@mincitenames} +\appto\blx@checkoptions@type{% + \blx@maxmin@num{maxbibnames}{minbibnames}\blx@maxbibnames@type\blx@minbibnames@type + \blx@maxmin@num{maxcitenames}{mincitenames}\blx@maxcitenames@type\blx@mincitenames@type} +\appto\blx@checkoptions@entry{% + \blx@maxmin@cnt{maxnames}{minnames}\c@maxnames\c@minnames} + +\DeclareBibliographyOption{maxitems}{% + \numdef\blx@maxitems{#1}} +\DeclareBibliographyOption{minitems}{% + \numdef\blx@minitems{#1}} +\DeclareTypeOption{maxitems}{% + \numdef\blx@maxitems@type{#1}% + \c@maxitems#1\relax} +\DeclareTypeOption{minitems}{% + \numdef\blx@minitems@type{#1}% + \c@minitems#1\relax} +\DeclareEntryOption{maxitems}{% + \c@maxitems#1\relax} +\DeclareEntryOption{minitems}{% + \c@minitems#1\relax} + +\appto\blx@checkoptions@global{% + \blx@maxmin@num{maxitems}{minitems}\blx@maxitems\blx@minitems} +\appto\blx@checkoptions@type{% + \blx@maxmin@num{maxitems}{minitems}\blx@maxitems@type\blx@minitems@type} +\appto\blx@checkoptions@entry{% + \blx@maxmin@cnt{maxitems}{minitems}\c@maxitems\blx@minitems} + +\DeclareBibliographyOption{maxalphanames}{% + \numdef\blx@maxalphanames{#1}} +\DeclareBibliographyOption{minalphanames}{% + \numdef\blx@minalphanames{#1}} +\DeclareTypeOption{maxalphanames}{% + \numdef\blx@maxalphanames{#1}} +\DeclareTypeOption{minalphanames}{% + \numdef\blx@minalphanames{#1}} + +\appto\blx@checkoptions@global{% + \blx@maxmin@num{maxalphanames}{minalphanames}\blx@maxalphanames\blx@minalphanames} +\appto\blx@checkoptions@type{% + \blx@maxmin@num{maxalphanames}{minalphanames}\blx@maxalphanames\blx@minalphanames} + +\def\blx@maxmin@num#1#2#3#4{% + \ifnumless#3\@ne + {\blx@err@invopt{#1=#3}{'#1' must be greater than zero}% + \let#3\@ne} + {}% + \ifnumless#4\@ne + {\blx@err@invopt{#2=#4}{'#2' must be greater than zero}% + \let#4\@ne} + {}% + \ifnumless#3#4 + {\blx@err@confopt{#1/#2}{'#1' must be greater than or equal to '#2'}% + \let#3#4} + {}} + +\def\blx@maxmin@cnt#1#2#3#4{% + \ifnumless#3\@ne + {\blx@err@invopt{#1=\number#3}{'#1' must be greater than zero}% + #3\@ne} + {}% + \ifnumless#4\@ne + {\blx@err@invopt{#2=\number#4}{'#2' must be greater than zero}% + #4\@ne} + {}% + \ifnumless#3#4 + {\blx@err@confopt{#1/#2}{'#1' must be greater than or equal to '#2'}% + #3=#4} + {}} + +\DeclareBibliographyOption{terseinits}[true]{% + \ifstrequal{#1}{true} + {\renewrobustcmd*{\bibinitperiod}{} + \renewrobustcmd*{\bibinitdelim}{} + \renewrobustcmd*{\bibinithyphendelim}{}} + {\renewrobustcmd*{\bibinitperiod}{\adddot} + \renewrobustcmd*{\bibinitdelim}{\addnbspace} + \renewrobustcmd*{\bibinithyphendelim}{\adddot\mbox{-}}}} + +\DeclareBibliographyOption{firstinits}[true]{% + \settoggle{blx@firstinits}{#1}} + +\DeclareBibliographyOption{sortfirstinits}[true]{% + \settoggle{blx@sortfirstinits}{#1}} + +\DeclareBibliographyOption{abbreviate}[true]{% + \ifstrequal{#1}{true} + {\def\abx@str{abx@sstr}} + {\def\abx@str{abx@lstr}}} + +\DeclareBibliographyOption{dateabbrev}[true]{% + \ifstrequal{#1}{true} + {\let\abx@bibmonth\blx@imc@bibsstring} + {\let\abx@bibmonth\blx@imc@biblstring}} + +\DeclareBibliographyOption{language}{% + \ifstrequal{#1}{auto} + {\toggletrue{blx@autolang}% + \def\blx@languagename{english}} + {\IfFileExists{#1.lbx} + {\togglefalse{blx@autolang}% + \edef\blx@languagename{#1}} + {\blx@error + {Language '#1' not supported} + {Failed to find a matching '#1.lbx' file}}}} + +\DeclareBibliographyOption{clearlang}[true]{% + \settoggle{blx@clearlang}{#1}} + +\DeclareBibliographyOption{babel}{% + \ifcsdef{blx@opt@babel@#1} + {\csuse{blx@opt@babel@#1}} + {\blx@err@invopt{babel=#1}{}}} +\def\blx@opt@babel@none{% + \undef\blx@thelangenv + \let\blx@hook@initlang\@empty + \let\blx@hook@endlang\@empty} +\def\blx@opt@babel@hyphen{% + \def\blx@thelangenv{hyphenrules}% + \let\blx@hook@initlang\@empty + \let\blx@hook@endlang\@empty} +\csdef{blx@opt@babel@other*}{% + \def\blx@thelangenv{otherlanguage*}% + \def\blx@hook@initlang{\@quotereset\@ne}% + \def\blx@hook@endlang{\blx@postpunct}} +\def\blx@opt@babel@other{% + \def\blx@thelangenv{otherlanguage}% + \def\blx@hook@initlang{\@quotereset\@ne}% + \def\blx@hook@endlang{\blx@postpunct}} + +\DeclareBibliographyOption{indexing}[true]{% + \blx@opt@index{#1}} +\DeclareTypeOption{indexing}[true]{% + \blx@opt@index{#1}} +\DeclareEntryOption{indexing}[true]{% + \blx@opt@index{#1}} +\def\blx@opt@index#1{% + \ifcsdef{blx@opt@index@#1} + {\csuse{blx@opt@index@#1}} + {\blx@err@invopt{indexing=#1}{}}} +\def\blx@opt@index@true{% + \toggletrue{blx@citeindex}% + \toggletrue{blx@bibindex}} +\def\blx@opt@index@false{% + \togglefalse{blx@citeindex}% + \togglefalse{blx@bibindex}} +\def\blx@opt@index@cite{% + \toggletrue{blx@citeindex}% + \togglefalse{blx@bibindex}} +\def\blx@opt@index@bib{% + \togglefalse{blx@citeindex}% + \toggletrue{blx@bibindex}} + +\DeclareBibliographyOption{sortcites}[true]{% + \ifstrequal{#1}{true} + {\let\blx@thecitesort\blx@citesort + \let\blx@thenotecheck\blx@notecheck} + {\let\blx@thecitesort\blx@citenosort + \let\blx@thenotecheck\relax}} + +\DeclareBibliographyOption{hyperref}[true]{% + \ifcsdef{blx@opt@hyperref@#1} + {\letcs\blx@hyperref{blx@opt@hyperref@#1}} + {\blx@err@invopt{hyperref=#1}{}}} +\def\blx@opt@hyperref@false{0} +\def\blx@opt@hyperref@true{1} +\def\blx@opt@hyperref@auto{2} + +\DeclareBibliographyOption{backref}[true]{% + \ifstrequal{#1}{true} + {\let\blx@backref\blx@addbackref + \let\abx@aux@backref\blx@aux@backref + \booltrue{backtracker}} + {\let\blx@backref\@gobble + \let\abx@aux@backref\@gobblefive + \boolfalse{backtracker}}} + +\DeclareBibliographyOption{backrefsetstyle}{% + \ifcsdef{blx@opt@backrefsetstyle@#1} + {\letcs\blx@backrefsetstyle{blx@opt@backrefsetstyle@#1}} + {\blx@err@invopt{backrefsetstyle=#1}{}}} +\def\blx@opt@backrefsetstyle@setonly{0} +\def\blx@opt@backrefsetstyle@memonly{1} +\def\blx@opt@backrefsetstyle@setormem{2} +\def\blx@opt@backrefsetstyle@setandmem{3} +\def\blx@opt@backrefsetstyle@memandset{4} +\def\blx@opt@backrefsetstyle@setplusmem{5} + +\appto\blx@mkhyperref{% + \ifHy@plainpages + \blx@warning@noline{% + hyperref package option 'plainpages' enabled.\MessageBreak + This may cause problems with hyperlinked back\MessageBreak + references. 'plainpages=false' is recommended}% + \fi + \ifHy@pageanchor\else + \blx@warning@noline{% + hyperref package option 'pageanchor' disabled.\MessageBreak + This will cause problems with hyperlinked back\MessageBreak + references. 'pageanchor=true' is required}% + \fi} + +\DeclareBibliographyOption{block}{% + \ifcsdef{blx@opt@block@#1} + {\csuse{blx@opt@block@#1}} + {\blx@err@invopt{block=#1}{}}} +\def\blx@opt@block@none{% + \let\blx@bibsetup\@empty + \let\newblockpunct\@empty} +\def\blx@opt@block@par{% + \let\blx@bibsetup\@empty + \def\newblockpunct{\par}} +\def\blx@opt@block@nbpar{% + \def\blx@bibsetup{\interlinepenalty\@M}% + \def\newblockpunct{\par\nobreak}} +\def\blx@opt@block@space{% + \let\blx@bibsetup\@empty + \def\newblockpunct{% + \unspace\space + \hskip 0.11em + \@plus 0.33em + \@minus 0.07em}} +\def\blx@opt@block@ragged{% + \let\blx@bibsetup\raggedright + \def\newblockpunct{% + \unspace\penalty-9\relax\space}} + +\DeclareBibliographyOption{pagetracker}[true]{% + \ifcsdef{blx@opt@pagetracker@#1} + {\csuse{blx@opt@pagetracker@#1}} + {\blx@err@invopt{pagetracker=#1}{}}} +\def\blx@opt@pagetracker@true{% + \if@twoside + \blx@opt@pagetracker@spread + \else + \blx@opt@pagetracker@page + \fi} +\def\blx@opt@pagetracker@false{% + \let\blx@pagetracker\relax + \let\abx@aux@page\@gobbletwo + \let\abx@aux@fnpage\@gobbletwo + \boolfalse{pagetracker}} +\def\blx@opt@pagetracker@page{% + \let\blx@pagetracker\blx@pagetracker@context + \let\abx@aux@page\blx@aux@page + \let\abx@aux@fnpage\blx@aux@fnpage + \booltrue{pagetracker}} +\def\blx@opt@pagetracker@spread{% + \if@twoside + \let\blx@pagetracker\blx@pagetracker@context + \let\abx@aux@page\blx@aux@spread + \let\abx@aux@fnpage\blx@aux@fnspread + \booltrue{pagetracker}% + \else + \blx@warning@noline{% + LaTeX not in twoside mode\MessageBreak + Falling back to 'pagetracker=page'}% + \blx@opt@pagetracker@page + \fi} + +\DeclareBibliographyOption{citecounter}[true]{% + \ifcsdef{blx@opt@citecounter@#1} + {\csuse{blx@opt@citecounter@#1}} + {\blx@err@invopt{citecounter=#1}{}}} +\def\blx@opt@citecounter@true{% + \let\blx@setcitecounter\blx@setcitecounter@global + \let\blx@citecounter\blx@citecounter@global + \let\abx@aux@count\blx@aux@count + \let\abx@aux@fncount\blx@aux@fncount + \booltrue{citetracker}} +\def\blx@opt@citecounter@context{% + \let\blx@setcitecounter\blx@setcitecounter@context + \let\blx@citecounter\blx@citecounter@context + \let\abx@aux@count\blx@aux@count + \let\abx@aux@fncount\blx@aux@fncount + \booltrue{citetracker}} +\def\blx@opt@citecounter@false{% + \let\blx@setcitecounter\relax + \let\blx@citecounter\relax + \let\abx@aux@count\@gobbletwo + \let\abx@aux@fncount\@gobbletwo} + +\DeclareBibliographyOption{citetracker}[true]{% + \ifcsdef{blx@opt@citetracker@#1} + {\csuse{blx@opt@citetracker@#1}} + {\blx@err@invopt{citetracker=#1}{}}} +\def\blx@opt@citetracker@true{% + \let\blx@imc@ifciteseen\blx@ifciteseen@global + \let\blx@imc@ifentryseen\blx@ifentryseen@global + \let\blx@citetracker\blx@citetracker@global + \booltrue{citetracker}} +\def\blx@opt@citetracker@false{% + \let\blx@imc@ifciteseen\@secondoftwo + \protected\long\def\blx@imc@ifentryseen##1##2##3{##3}% + \let\blx@citetracker\relax} +\def\blx@opt@citetracker@context{% + \let\blx@imc@ifciteseen\blx@ifciteseen@context + \let\blx@imc@ifentryseen\blx@ifentryseen@context + \let\blx@citetracker\blx@citetracker@context + \booltrue{citetracker}} +\def\blx@opt@citetracker@strict{% + \let\blx@imc@ifciteseen\blx@ifciteseen@global + \let\blx@imc@ifentryseen\blx@ifentryseen@global + \def\blx@citetracker{% + \blx@ifcitesingle{\blx@citetracker@global}{}}% + \booltrue{citetracker}} +\def\blx@opt@citetracker@constrict{% + \let\blx@imc@ifciteseen\blx@ifciteseen@context + \let\blx@imc@ifentryseen\blx@ifentryseen@context + \def\blx@citetracker{% + \blx@ifcitesingle{\blx@citetracker@context}{}}% + \booltrue{citetracker}} + +\DeclareBibliographyOption{ibidtracker}[true]{% + \ifcsdef{blx@opt@ibidtracker@#1} + {\csuse{blx@opt@ibidtracker@#1}} + {\blx@err@invopt{ibidtracker=#1}{}}} +\def\blx@opt@ibidtracker@true{% + \let\blx@imc@ifciteibid\blx@ifciteibid@global + \let\blx@ibidtracker\blx@ibidtracker@gobal + \let\blx@ibidreset\blx@ibidreset@gobal + \booltrue{citetracker}} +\def\blx@opt@ibidtracker@false{% + \let\blx@imc@ifciteibid\@secondoftwo + \let\blx@ibidtracker\relax + \let\blx@ibidreset\relax} +\def\blx@opt@ibidtracker@context{% + \let\blx@imc@ifciteibid\blx@ifciteibid@context + \let\blx@ibidtracker\blx@ibidtracker@context + \let\blx@ibidreset\blx@ibidreset@context + \booltrue{citetracker}} +\def\blx@opt@ibidtracker@strict{% + \let\blx@imc@ifciteibid\blx@ifciteibid@strict + \let\blx@ibidtracker\blx@ibidtracker@strict + \let\blx@ibidreset\blx@ibidreset@gobal + \booltrue{citetracker}} +\def\blx@opt@ibidtracker@constrict{% + \let\blx@imc@ifciteibid\blx@ifciteibid@constrict + \let\blx@ibidtracker\blx@ibidtracker@constrict + \let\blx@ibidreset\blx@ibidreset@context + \booltrue{citetracker}} + +\DeclareBibliographyOption{idemtracker}[true]{% + \ifcsdef{blx@opt@idemtracker@#1} + {\csuse{blx@opt@idemtracker@#1}} + {\blx@err@invopt{idemtracker=#1}{}}} +\def\blx@opt@idemtracker@true{% + \let\blx@imc@ifciteidem\blx@ifciteidem@global + \let\blx@idemtracker\blx@idemtracker@gobal + \let\blx@idemreset\blx@idemreset@gobal + \booltrue{citetracker}} +\def\blx@opt@idemtracker@false{% + \let\blx@imc@ifciteidem\@secondoftwo + \let\blx@idemtracker\relax + \let\blx@idemreset\relax} +\def\blx@opt@idemtracker@context{% + \let\blx@imc@ifciteidem\blx@ifciteidem@context + \let\blx@idemtracker\blx@idemtracker@context + \let\blx@idemreset\blx@idemreset@context + \booltrue{citetracker}} +\def\blx@opt@idemtracker@strict{% + \let\blx@imc@ifciteidem\blx@ifciteidem@strict + \let\blx@idemtracker\blx@idemtracker@strict + \let\blx@idemreset\blx@idemreset@gobal + \booltrue{citetracker}} +\def\blx@opt@idemtracker@constrict{% + \let\blx@imc@ifciteidem\blx@ifciteidem@constrict + \let\blx@idemtracker\blx@idemtracker@constrict + \let\blx@idemreset\blx@idemreset@context + \booltrue{citetracker}} + +\DeclareBibliographyOption{opcittracker}[true]{% + \ifcsdef{blx@opt@opcittracker@#1} + {\csuse{blx@opt@opcittracker@#1}} + {\blx@err@invopt{opcittracker=#1}{}}} +\def\blx@opt@opcittracker@true{% + \let\blx@imc@ifopcit\blx@ifopcit@global + \let\blx@opcittracker\blx@opcittracker@gobal + \let\blx@opcitreset\blx@opcitreset@gobal + \booltrue{citetracker}} +\def\blx@opt@opcittracker@false{% + \let\blx@imc@ifopcit\@secondoftwo + \let\blx@opcittracker\relax + \let\blx@opcitreset\relax} +\def\blx@opt@opcittracker@context{% + \let\blx@imc@ifopcit\blx@ifopcit@context + \let\blx@opcittracker\blx@opcittracker@context + \let\blx@opcitreset\blx@opcitreset@context + \booltrue{citetracker}} +\def\blx@opt@opcittracker@strict{% + \let\blx@imc@ifopcit\blx@ifopcit@strict + \let\blx@opcittracker\blx@opcittracker@strict + \let\blx@opcitreset\blx@opcitreset@gobal + \booltrue{citetracker}} +\def\blx@opt@opcittracker@constrict{% + \let\blx@imc@ifopcit\blx@ifopcit@constrict + \let\blx@opcittracker\blx@opcittracker@constrict + \let\blx@opcitreset\blx@opcitreset@context + \booltrue{citetracker}} + +\DeclareBibliographyOption{loccittracker}[true]{% + \ifcsdef{blx@opt@loccittracker@#1} + {\csuse{blx@opt@loccittracker@#1}} + {\blx@err@invopt{loccittracker=#1}{}}} +\def\blx@opt@loccittracker@true{% + \let\blx@imc@ifloccit\blx@ifloccit@global + \let\blx@loccittracker\blx@loccittracker@gobal + \let\blx@loccitreset\blx@loccitreset@gobal + \booltrue{citetracker}} +\def\blx@opt@loccittracker@false{% + \let\blx@imc@ifloccit\@secondoftwo + \let\blx@loccittracker\relax + \let\blx@loccitreset\relax} +\def\blx@opt@loccittracker@context{% + \let\blx@imc@ifloccit\blx@ifloccit@context + \let\blx@loccittracker\blx@loccittracker@context + \let\blx@loccitreset\blx@loccitreset@context + \booltrue{citetracker}} +\def\blx@opt@loccittracker@strict{% + \let\blx@imc@ifloccit\blx@ifloccit@strict + \let\blx@loccittracker\blx@loccittracker@strict + \let\blx@loccitreset\blx@loccitreset@gobal + \booltrue{citetracker}} +\def\blx@opt@loccittracker@constrict{% + \let\blx@imc@ifloccit\blx@ifloccit@constrict + \let\blx@loccittracker\blx@loccittracker@constrict + \let\blx@loccitreset\blx@loccitreset@context + \booltrue{citetracker}} + +\DeclareBibliographyOption{parentracker}[true]{% + \ifstrequal{#1}{true} + {\let\bibopenparen\blx@bibopenparen + \let\bibcloseparen\blx@bibcloseparen + \let\bibopenbracket\blx@bibopenbracket + \let\bibclosebracket\blx@bibclosebracket} + {\protected\def\bibopenparen{\bibleftparen}% + \protected\def\bibcloseparen{\bibrightparen}% + \protected\def\bibopenbracket{\bibleftbracket}% + \protected\def\bibclosebracket{\bibrightbracket}}} + +\DeclareBibliographyOption{maxparens}{% + \ifnumless{#1}{1} + {\blx@err@invopt{maxparens=#1}{}} + {\setcounter{maxparens}{#1}}} + +\DeclareBibliographyOption{date}{% + \ifcsdef{mkbibrange#1} + {\protected\def\blx@imc@printdate{\csuse{mkbibrange#1}{}}% + \protected\def\blx@imc@printdateextra{\csuse{mkbibrange#1extra}{}}} + {\blx@err@invopt{date=#1}{}}} + +\DeclareBibliographyOption{urldate}{% + \ifcsdef{mkbibrange#1} + {\protected\def\blx@imc@printurldate{\csuse{mkbibrange#1}{url}}} + {\blx@err@invopt{urldate=#1}{}}} + +\DeclareBibliographyOption{eventdate}{% + \ifcsdef{mkbibrange#1} + {\protected\def\blx@imc@printeventdate{\csuse{mkbibrange#1}{event}}} + {\blx@err@invopt{eventdate=#1}{}}} + +\DeclareBibliographyOption{origdate}{% + \ifcsdef{mkbibrange#1} + {\protected\def\blx@imc@printorigdate{\csuse{mkbibrange#1}{orig}}} + {\blx@err@invopt{origdate=#1}{}}} + +\DeclareBibliographyOption{alldates}{% + \ExecuteBibliographyOptions{date=#1,urldate=#1,eventdate=#1,origdate=#1}} + +\DeclareBibliographyOption{datezeros}[true]{% + \ifstrequal{#1}{true} + {\let\blx@imc@mkdatezeros\@firstofone} + {\let\blx@imc@mkdatezeros\blx@imc@stripzeros}} + +\DeclareBibliographyOption{autocite}{% + \ifcsundef{blx@acite@#1} + {\blx@error + {Autocite command '#1' undefined} + {The autocite command '#1' has not been defined by + the\MessageBreak selected citation style}} + {\letcs\autocite{blx@acite@#1}% + \letcs\autocites{blx@macite@#1}}} + +\DeclareBibliographyOption{notetype}{% + \ifcsdef{blx@opt@notetype@#1} + {\blx@notetype\csuse{blx@opt@notetype@#1}} + {\blx@err@invopt{notetype=#1}{}}} +\cslet{blx@opt@notetype@foot+end}\z@ +\let\blx@opt@notetype@footonly\@ne +\let\blx@opt@notetype@endonly\tw@ + +\DeclareBibliographyOption{autopunct}[true]{% + \ifstrequal{#1}{true} + {\DeclareAutoPunctuation{.,;:!?}} + {\DeclareAutoPunctuation{}}} + +\DeclareBibliographyOption{punctfont}[true]{% + \ifstrequal{#1}{true} + {\let\blx@ifpuncthook\@firstoftwo} + {\let\blx@ifpuncthook\@secondoftwo}} + +\DeclareBibliographyOption{labelnumber}[true]{% + \settoggle{blx@labelnumber}{#1}% + \iftoggle{blx@labelnumber} + {} + {\setkeys{blx@opt@pre}{defernumbers=false}}} +\DeclareTypeOption{labelnumber}[true]{% + \settoggle{blx@labelnumber}{#1}} + +\DeclareBibliographyOption{labelalpha}[true]{% + \settoggle{blx@labelalpha}{#1}} +\DeclareTypeOption{labelalpha}[true]{% + \settoggle{blx@labelalpha}{#1}} + +\DeclareBibliographyOption{labeltitle}[true]{% + \settoggle{blx@labeltitle}{#1}} +\DeclareTypeOption{labeltitle}[true]{% + \settoggle{blx@labeltitle}{#1}} + +\DeclareBibliographyOption{labeltitleyear}[true]{% + \settoggle{blx@labeltitleyear}{#1}} +\DeclareTypeOption{labeltitleyear}[true]{% + \settoggle{blx@labeltitleyear}{#1}} + +\DeclareBibliographyOption{labelyear}[true]{% + \settoggle{blx@labelyear}{#1}} +\DeclareTypeOption{labelyear}[true]{% + \settoggle{blx@labelyear}{#1}} + +\DeclareBibliographyOption{uniquelist}[true]{% + \ifcsdef{blx@opt@uniquelist@#1} + {\letcs\blx@uniquelist{blx@opt@uniquelist@#1}} + {\blx@err@invopt{uniquelist=#1}{}}} +\DeclareTypeOption{uniquelist}[true]{% + \ifcsdef{blx@opt@uniquelist@#1} + {\letcs\blx@uniquelist{blx@opt@uniquelist@#1}} + {\blx@err@invopt{uniquelist=#1}{}}} +\def\blx@opt@uniquelist@false{0} +\def\blx@opt@uniquelist@true{1} +\def\blx@opt@uniquelist@minyear{2} + +\DeclareBibliographyOption{uniquename}[true]{% + \ifcsdef{blx@opt@uniquename@#1} + {\letcs\blx@uniquename{blx@opt@uniquename@#1}} + {\blx@err@invopt{uniquename=#1}{}}} +\DeclareTypeOption{uniquename}[true]{% + \ifcsdef{blx@opt@uniquename@#1} + {\letcs\blx@uniquename{blx@opt@uniquename@#1}} + {\blx@err@invopt{uniquename=#1}{}}} +\def\blx@opt@uniquename@false{0} +\def\blx@opt@uniquename@init{1} +\def\blx@opt@uniquename@true{2} +\def\blx@opt@uniquename@full{2} +\def\blx@opt@uniquename@allinit{3} +\def\blx@opt@uniquename@allfull{4} +\def\blx@opt@uniquename@mininit{5} +\def\blx@opt@uniquename@minfull{6} + +\DeclareBibliographyOption{singletitle}[true]{% + \settoggle{blx@singletitle}{#1}} +\DeclareTypeOption{singletitle}[true]{% + \settoggle{blx@singletitle}{#1}} + +\DeclareBibliographyOption{defernumbers}[true]{% + \settoggle{blx@defernumbers}{#1}% + \iftoggle{blx@defernumbers} + {\setkeys{blx@opt@pre}{labelnumber}% + \let\blx@thelabelnumber\blx@addlabelnumber + \let\abx@aux@number\blx@aux@number} + {\let\blx@thelabelnumber\relax + \let\abx@aux@number\@gobblefour}} + +\DeclareBibliographyOption{refsection}{% + \ifcsdef{blx@opt@refsection@#1} + {\letcs\blx@refsecreset@level{blx@opt@refsection@#1}} + {\blx@err@invopt{refsection=#1}{}}} +\def\blx@opt@refsection@none{0} +\def\blx@opt@refsection@part{1} +\def\blx@opt@refsection@chapter{2} +\def\blx@opt@refsection@section{3} +\def\blx@opt@refsection@subsection{4} + +\AtEndPreamble{% + \ifcase\blx@refsecreset@level + \or % 1 + \blx@refpatch@part\newrefsection + \or % 2 + \blx@refpatch@chapter\newrefsection + \or % 3 + \blx@refpatch@sect{section}{\newrefsection}{1}% + \or % 4 + \blx@refpatch@sect{subsection}{\newrefsection}{2}% + \fi} + +\DeclareBibliographyOption{refsegment}{% + \ifcsdef{blx@opt@refsegment@#1} + {\letcs\blx@refsegreset@level{blx@opt@refsegment@#1}} + {\blx@err@invopt{refsegment=#1}{}}} +\def\blx@opt@refsegment@none{0} +\def\blx@opt@refsegment@part{1} +\def\blx@opt@refsegment@chapter{2} +\def\blx@opt@refsegment@section{3} +\def\blx@opt@refsegment@subsection{4} + +\AtEndPreamble{% + \ifnumgreater\blx@refsegreset@level\z@ + {\ifnumgreater\blx@refsegreset@level\blx@refsecreset@level + {} + {\blx@err@confopt + {refsegment/refsection} + {The 'refsegment' option must point to a + lower-level\MessageBreak document division + than 'refsection'}% + \def\blx@refsegreset@level{0}}} + {}% + \ifcase\blx@refsegreset@level + \or % 1 + \blx@refpatch@part\newrefsegment + \or % 2 + \blx@refpatch@chapter\newrefsegment + \or % 3 + \blx@refpatch@sect{section}{\newrefsegment}{1}% + \or % 4 + \blx@refpatch@sect{subsection}{\newrefsegment}{2}% + \fi} + +\DeclareBibliographyOption{citereset}{% + \ifcsdef{blx@opt@citereset@#1} + {\letcs\blx@citereset@level{blx@opt@citereset@#1}} + {\blx@err@invopt{citereset=#1}{}}} +\def\blx@opt@citereset@none{0} +\def\blx@opt@citereset@part{1} +\def\blx@opt@citereset@chapter{2} +\def\blx@opt@citereset@section{3} +\def\blx@opt@citereset@subsection{4} + +\AtEndPreamble{% + \ifcase\blx@citereset@level + \or % 1 + \blx@refpatch@part{\citereset\blx@inf@creset}% + \or % 2 + \blx@refpatch@chapter{\citereset\blx@inf@creset}% + \or % 3 + \blx@refpatch@sect{section}{\citereset\blx@inf@creset}{1}% + \or % 4 + \blx@refpatch@sect{subsection}{\citereset\blx@inf@creset}{2}% + \fi} + +\DeclareBibliographyOption{bibwarn}[true]{% + \ifstrequal{#1}{true} + {\let\blx@bbl@thewarn\blx@bbl@warn} + {\let\blx@bbl@thewarn\@gobble}} + +% Entry options + +\DeclareBibliographyOption{useprefix}[true]{% + \settoggle{blx@useprefix}{#1}} +\DeclareTypeOption{useprefix}[true]{% + \settoggle{blx@useprefix}{#1}} +\DeclareEntryOption{useprefix}[true]{% + \settoggle{blx@useprefix}{#1}} + +\DeclareBibliographyOption{useauthor}[true]{% + \settoggle{blx@useauthor}{#1}} +\DeclareTypeOption{useauthor}[true]{% + \settoggle{blx@useauthor}{#1}} +\DeclareEntryOption{useauthor}[true]{% + \settoggle{blx@useauthor}{#1}} + +\DeclareBibliographyOption{useeditor}[true]{% + \settoggle{blx@useeditor}{#1}} +\DeclareTypeOption{useeditor}[true]{% + \settoggle{blx@useeditor}{#1}} +\DeclareEntryOption{useeditor}[true]{% + \settoggle{blx@useeditor}{#1}} + +\DeclareBibliographyOption{usetranslator}[true]{% + \settoggle{blx@usetranslator}{#1}} +\DeclareTypeOption{usetranslator}[true]{% + \settoggle{blx@usetranslator}{#1}} +\DeclareEntryOption{usetranslator}[true]{% + \settoggle{blx@usetranslator}{#1}} + +\DeclareTypeOption{skipbib}[true]{% + \settoggle{blx@skipbib}{#1}} +\DeclareEntryOption{skipbib}[true]{% + \settoggle{blx@skipbib}{#1}} + +\DeclareTypeOption{skiplos}[true]{% + \settoggle{blx@skiplos}{#1}} +\DeclareEntryOption{skiplos}[true]{% + \settoggle{blx@skiplos}{#1}} + +\DeclareTypeOption{skiplab}[true]{% + \settoggle{blx@skiplab}{#1}} +\DeclareEntryOption{skiplab}[true]{% + \settoggle{blx@skiplab}{#1}} + +\DeclareTypeOption{dataonly}[true]{% + \settoggle{blx@skipbib}{#1}% + \settoggle{blx@skiplos}{#1}% + \settoggle{blx@skiplab}{#1}} +\DeclareEntryOption{dataonly}[true]{% + \settoggle{blx@skipbib}{#1}% + \settoggle{blx@skiplos}{#1}% + \settoggle{blx@skiplab}{#1}} + +% Option processor/scheduler + +\DeclareOption*{% + \begingroup + \def\blx@tempa#1=#2&{#1}% + \edef\blx@tempa{% + \expandafter\blx@tempa\CurrentOption=&}% + \ifcsundef{KV@blx@opt@ldt@\blx@tempa} + {\endgroup + \eappto\blx@theoptions{\CurrentOption,}} + {\edef\blx@tempa{\endgroup + \noexpand\setkeys{blx@opt@ldt}{\CurrentOption}}% + \blx@tempa}} + +\def\blx@processoptions{% + \ifundef\blx@theoptions + {} + {\begingroup + \edef\blx@tempa{\endgroup + \noexpand\setkeys{blx@opt@pre}{\blx@theoptions}}% + \blx@tempa}} + +%% Initial setup + +% Set defaults + +\setkeys{blx@opt@ldt}{style=numeric} +\setkeys{blx@opt@pre}{% + sorting=nty,sortcase,sortupper,sortcites=false, + maxnames=3,minnames=1,maxalphanames=3,minalphanames=1, + maxitems=3,minitems=1,mincrossrefs=2,useauthor=true,useeditor=true, + usetranslator=false,indexing=false,abbreviate=true,dateabbrev=true, + backref=false,backrefsetstyle=setonly,pagetracker=false,ibidtracker=false, + idemtracker=false,opcittracker=false,loccittracker=false,citetracker=false, + citecounter=false,block=none,language=auto,clearlang=true,babel=none, + date=comp,origdate=comp,eventdate=comp,urldate=short,autopunct=true, + punctfont=false,defernumbers=false,refsection=none,refsegment=none, + citereset=none,hyperref=auto,parentracker,maxparens=3, + bibencoding=auto,bibwarn} + +% Load compatibility code + +\blx@inputonce{blx-compat.def}{compatibility code}{}{}{}{} + +% Restore catcodes + +\blx@catcodes +\undef\blx@catcodes + +% Process load-time options + +\ProcessOptions* + +% Load citation and bibliography styles, configuration file + +\blx@inputonce{biblatex.def}{generic definitions}{}{}{}{} +\iftoggle{blx@natbib} + {\blx@inputonce{blx-natbib.def}{natbib compatibility}{}{}{}{}} + {} +\iftoggle{blx@mcite} + {\blx@inputonce{blx-mcite.def}{mcite-like commands}{}{}{}{}} + {} +\RequireBibliographyStyle{\blx@bbxfile} +\RequireCitationStyle{\blx@cbxfile} +\blx@secinit +\citereset +\blx@inputonce{biblatex.cfg}{configuration file}{}{}{}{} + +% Process preamble options + +\blx@processoptions + +% Deferred setup at end of preamble + +\AtEndPreamble{% + \blx@checkoptions@global + \c@maxnames\blx@maxcitenames\relax + \c@minnames\blx@mincitenames\relax + \c@maxitems\blx@maxitems\relax + \c@minitems\blx@minitems\relax + \iftoggle{blx@firstinits} + {\ifnumequal\blx@uniquename\blx@opt@uniquename@full + {\blx@warn@conflopt{% + 'firstinits' conflicts with 'uniquename=full'.\MessageBreak + Setting 'uniquename=init'}% + \setkeys{blx@opt@pre}{uniquename=init}} + {}% + \ifnumequal\blx@uniquename\blx@opt@uniquename@allfull + {\blx@warn@conflopt{% + 'firstinits' conflicts with 'uniquename=allfull'.\MessageBreak + Setting 'uniquename=allinit}% + \setkeys{blx@opt@pre}{uniquename=allinit}} + {}% + \ifnumequal\blx@uniquename\blx@opt@uniquename@minfull + {\blx@warn@conflopt{% + 'firstinits' conflicts with 'uniquename=minfull'.\MessageBreak + Setting 'uniquename=mininit}% + \setkeys{blx@opt@pre}{uniquename=mininit}} + {}} + {}% + \nottoggle{blx@labelyear} + {\ifnumequal\blx@uniquelist\blx@opt@uniquelist@minyear + {\blx@warn@conflopt{% + 'uniquelist=minyear' requires 'labelyear'.\MessageBreak + Setting 'uniquelist=true'}% + \setkeys{blx@opt@pre}{uniquelist}} + {}} + {}} + +\def\blx@checkencoding{% + \ifdef\blx@texencoding + {\blx@info@noline{% + Input encoding '\blx@texencoding' specified}} + {\ifundef\inputencodingname + {\ifundef\XeTeXrevision + {\ifundef\luatexversion + {\def\blx@texencoding{ascii}% + \blx@info@noline{% + No input encoding detected.\MessageBreak + Assuming '\blx@texencoding'}} + {\def\blx@texencoding{utf8}% + \blx@info@noline{% + LuaTeX detected.\MessageBreak + Assuming input encoding '\blx@texencoding'}}} + {\def\blx@texencoding{utf8}% + \blx@info@noline{% + XeTeX detected.\MessageBreak + Assuming input encoding '\blx@texencoding'}}} + {\ifcsdef{blx@inpenc@\inputencodingname} + {\letcs\blx@texencoding{blx@inpenc@\inputencodingname}} + {\let\blx@texencoding\inputencodingname}% + \blx@info@noline{% + Input encoding '\blx@texencoding' detected}}}% + \ifdef\blx@bibencoding + {\ifdefstring\blx@bibencoding{ascii} + {\blx@info@noline{% + Data encoding '\blx@bibencoding' specified.\MessageBreak + No need to reencode data}% + \togglefalse{blx@reencode}} + {\ifdefstring\blx@bibencoding{auto} + {\let\blx@bibencoding\blx@texencoding + \blx@info@noline{% + Automatic encoding selection.\MessageBreak + Assuming data encoding '\blx@bibencoding'} + \togglefalse{blx@reencode}} + {\ifdefstrequal\blx@bibencoding\blx@texencoding + {\blx@info@noline{% + Data encoding '\blx@bibencoding' specified.\MessageBreak + No need to reencode data}% + \togglefalse{blx@reencode}} + {\blx@info@noline{% + Data encoding '\blx@bibencoding' specified.\MessageBreak + Backend will reencode on the fly}% + \togglefalse{blx@reencode}}}}} + {\def\blx@bibencoding{ascii}% + \blx@info@noline{% + Data encoding not specified.\MessageBreak + Assuming '\blx@bibencoding'}% + \togglefalse{blx@reencode}}% + \ifboolexpr{% + togl {blx@safeinputenc} + and ( test {\@ifpackageloaded{inputenc}} + or + test {\@ifpackageloaded{inputenx}} ) + } + {\def\blx@texencoding{ascii}% + \blx@info@noline{% + Input encoding '\blx@texencoding' forced by\MessageBreak + 'safeinputenc' option}} + {}% +} + + +% Deferred last minute setup + +\AtBeginDocument{% + \blx@checkencoding + \if@filesw + \blx@ifsigned{\jobname}{bcf} + {\blx@ctrlwrite@biber} + {}% + \blx@bblinput + \blx@maxsection\z@ + \fi + \csuse{abx@preamble}% + \blx@inf@refsec + \blx@inf@refseg} + +\AtEndOfPackage{% + \AtBeginDocument{% + \let\do\undef + \blx@dopreamblecmds + \let\do\noexpand}} + +\endinput diff --git a/Master/texmf-dist/tex/latex/biblatex/blx-compat.def b/Master/texmf-dist/tex/latex/biblatex/blx-compat.def index 2e0a9fbfec2..45aeb955f98 100644 --- a/Master/texmf-dist/tex/latex/biblatex/blx-compat.def +++ b/Master/texmf-dist/tex/latex/biblatex/blx-compat.def @@ -1,8 +1,5 @@ -% $Id: blx-compat.def,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{blx-compat.def} -[\abx@rcsid $Id: blx-compat.def,v 1.7 2011/11/13 19:09:07 lehman stable $ - biblatex generic compatibility] +[\abx@cptid] % LaTeX diff --git a/Master/texmf-dist/tex/latex/biblatex/blx-dm.def b/Master/texmf-dist/tex/latex/biblatex/blx-dm.def new file mode 100644 index 00000000000..0da6bc8e7cd --- /dev/null +++ b/Master/texmf-dist/tex/latex/biblatex/blx-dm.def @@ -0,0 +1,1561 @@ +% -*- mode: LaTeX -*- + +\newbool{dmskipout}% + +% Data model .bcf output macros +\xdef\blx@xml@datamodel#1{% + ~~<bcf:datamodel>\blx@nl + #1% + ~~</bcf:datamodel>\blx@nl} +\xdef\blx@xml@datamodel@entrytypes#1{% + ~~~~<bcf:entrytypes>\blx@nl + #1% + ~~~~</bcf:entrytypes>\blx@nl} +\xdef\blx@xml@datamodel@entrytype#1{% + ~~~~~~<bcf:entrytype>#1</bcf:entrytype>\blx@nl} +\xdef\blx@xml@datamodel@fields#1{% + ~~~~<bcf:fields>\blx@nl + #1% + ~~~~</bcf:fields>\blx@nl} +\xdef\blx@xml@datamodel@field#1#2{% + ~~~~~~<bcf:field#1>#2</bcf:field>\blx@nl} +\xdef\blx@xml@datamodel@entryfields#1{% + ~~~~<bcf:entryfields>\blx@nl + #1% + ~~~~</bcf:entryfields>\blx@nl} +\xdef\blx@xml@datamodel@entryfield@type#1{% + ~~~~~~<bcf:entrytype>#1</bcf:entrytype>\blx@nl} +\xdef\blx@xml@datamodel@entryfield@field#1{% + ~~~~~~<bcf:field>#1</bcf:field>\blx@nl} +\xdef\blx@xml@datamodel@constraints#1{% + ~~~~<bcf:constraints>\blx@nl + #1% + ~~~~</bcf:constraints>\blx@nl} +\xdef\blx@xml@datamodel@constraints@type#1{% + ~~~~~~<bcf:entrytype>#1</bcf:entrytype>\blx@nl} +\xdef\blx@xml@datamodel@constraint#1#2{% + ~~~~~~<bcf:constraint#1>\blx@nl + #2% + ~~~~~~</bcf:constraint>\blx@nl} +\xdef\blx@xml@datamodel@constraintfieldsxor#1{% + ~~~~~~~~<bcf:fieldxor>\blx@nl + #1% + ~~~~~~~~</bcf:fieldxor>\blx@nl} +\xdef\blx@xml@datamodel@constraintfieldsor#1{% + ~~~~~~~~<bcf:fieldor>\blx@nl + #1% + ~~~~~~~~</bcf:fieldor>\blx@nl} +\xdef\blx@xml@datamodel@constraint@antecedent#1#2{% + ~~~~~~~~<bcf:antecedent#1>\blx@nl + #2% + ~~~~~~~~</bcf:antecedent>\blx@nl} +\xdef\blx@xml@datamodel@constraint@consequent#1#2{% + ~~~~~~~~<bcf:consequent#1>\blx@nl + #2% + ~~~~~~~~</bcf:consequent>\blx@nl} +\xdef\blx@xml@datamodel@constraintfield#1{% + ~~~~~~~~<bcf:field>#1</bcf:field>\blx@nl} +\xdef\blx@xml@datamodel@constraintfieldsub#1{% + ~~~~~~~~~~<bcf:field>#1</bcf:field>\blx@nl} + +% Data model specification macros +\newrobustcmd*{\ResetDatamodelEntrytypes}{% + \global\cslet{blx@bcf@datamodel@entrytypes}\@empty + \global\cslet{blx@biber@datamodel@entrytypes}\@empty} + +\newrobustcmd*{\ResetDatamodelFields}{% + \global\cslet{blx@bcf@datamodel@fields}\@empty + \global\cslet{blx@biber@datamodel@fields}\@empty + \global\cslet{blx@biber@datamodel@names}\@empty + \global\cslet{blx@biber@datamodel@lists}\@empty} + +\newrobustcmd*{\ResetDatamodelEntryfields}{% + \global\cslet{blx@bcf@datamodel@entryfields}\@empty} + +\newrobustcmd*{\ResetDatamodelConstraints}{% + \global\cslet{blx@bcf@datamodel@constraints}\@empty} + +\newrobustcmd*{\DeclareDatamodelEntrytypes}[1]{% + \def\do##1{% + \ifinlistcs{##1}{blx@biber@datamodel@entrytypes} + {} + {\listcsgadd{blx@biber@datamodel@entrytypes}{##1}}% + \xappto\blx@bcf@datamodel@entrytypes{% + \blx@xml@datamodel@entrytype{##1}}}% + \docsvlist{#1}} + +\newrobustcmd*{\DeclareDatamodelFields}[2][]{% + \begingroup + \let\blx@dm@type\@empty + \let\blx@dm@datatype\@empty + \boolfalse{dmskipout}% + \let\blx@tempa\@empty + \setkeys{blx@datamodel@field}{#1}% + \def\do##1{% + \ifboolexpr{% add to list of names if it is a name which appears in .bbl + not bool {dmskipout} + and + test {\ifcsstring{blx@dm@datatype}{name}} + and + not test {\ifinlistcs{##1}{blx@biber@datamodel@names}}} + {\listcsgadd{blx@biber@datamodel@names}{##1}} + {}% + \ifboolexpr{% add to list of lists if it is a list which appears in .bbl + not bool {dmskipout} + test {\ifcsstring{blx@dm@type}{list}} + and + ( test {\ifcsstring{blx@dm@datatype}{literal}} + or + test {\ifcsstring{blx@dm@datatype}{key}} + ) + and + not test {\ifinlistcs{##1}{blx@biber@datamodel@lists}}} + {\listcsgadd{blx@biber@datamodel@lists}{##1}} + {}% + \ifboolexpr{% add to list of fields unless certain type/datatype etc. + bool {dmskipout} + or + test {\ifcsstring{blx@dm@datatype}{name}} + or + ( test {\ifcsstring{blx@dm@type}{list}} + and + test {\ifcsstring{blx@dm@datatype}{literal}} + ) + or + ( test {\ifcsstring{blx@dm@type}{field}} + and + test {\ifcsstring{blx@dm@datatype}{code}} + ) + or + ( test {\ifcsstring{blx@dm@type}{list}} + and + test {\ifcsstring{blx@dm@datatype}{key}} + ) + or + test {\ifinlistcs{##1}{blx@biber@datamodel@fields}}} + {} + {\listcsgadd{blx@biber@datamodel@fields}{##1}}% + \xappto\blx@bcf@datamodel@fields{% + \blx@xml@datamodel@field{\blx@tempa}{##1}}}% + \docsvlist{#2} + \endgroup} + +\define@key{blx@datamodel@field}{type}{% characters + \eappto\blx@tempa{ fieldtype="#1"}% + \def\blx@dm@type{#1}} +\define@key{blx@datamodel@field}{datatype}{% characters + \eappto\blx@tempa{ datatype="#1"}% + \def\blx@dm@datatype{#1}} +\define@key{blx@datamodel@field}{nullok}[true]{% true|false + \ifstrequal{#1}{true} + {\appto\blx@tempa{ nullok="true"}} + {}} +\define@key{blx@datamodel@field}{skipout}[true]{% true|false + \ifstrequal{#1}{true} + {\appto\blx@tempa{ skip\string_output="true"}% + \booltrue{dmskipout}} + {}} + +\newrobustcmd*{\DeclareDatamodelEntryfields}[2][]{% + \begingroup + \let\blx@tempa\@empty + \let\blx@tempb\@empty + \ifblank{#1} + {} + {\def\do##1{% + \eappto\blx@tempa{\blx@xml@datamodel@entryfield@type{##1}}}% + \docsvlist{#1}}% + \def\do##1{% + \eappto\blx@tempb{\blx@xml@datamodel@entryfield@field{##1}}}% + \docsvlist{#2}% + \xappto\blx@bcf@datamodel@entryfields{\blx@xml@datamodel@entryfields{\blx@tempa\blx@tempb}}% + \endgroup} + +\newrobustcmd*{\DeclareDatamodelConstraints}[2][]{% + \begingroup + \let\blx@tempa\@empty + \let\blx@tempb\@empty + \let\constraint\blx@datamodel@constraint + \ifblank{#1} + {} + {\def\do##1{% + \eappto\blx@tempa{\blx@xml@datamodel@constraints@type{##1}}}% + \docsvlist{#1}}% + #2% + \xappto\blx@bcf@datamodel@constraints{\blx@xml@datamodel@constraints{\blx@tempa\blx@tempb}}% + \endgroup} + +\newcommand*{\blx@datamodel@constraint}[2][]{% + \let\blx@tempc\@empty + \let\blx@tempd\@empty + \setkeys{blx@datamodel@constraint}{#1}% + \let\constraintfieldsxor\blx@datamodel@constraintfieldsxor + \let\constraintfieldsor\blx@datamodel@constraintfieldsor + \let\constraintfield\blx@datamodel@constraintfield + \let\antecedent\blx@datamodel@constraint@antecedent + \let\consequent\blx@datamodel@constraint@consequent + #2% + \eappto\blx@tempb{\blx@xml@datamodel@constraint{\blx@tempc}{\blx@tempd}}} + +\define@key{blx@datamodel@constraint}{type}{% characters + \eappto\blx@tempc{ type="#1"}} +\define@key{blx@datamodel@constraint}{datatype}{% characters + \eappto\blx@tempc{ datatype="#1"}} +\define@key{blx@datamodel@constraint}{rangemin}{% integer + \eappto\blx@tempc{ rangemin="#1"}} +\define@key{blx@datamodel@constraint}{rangemax}{% integer + \eappto\blx@tempc{ rangemax="#1"}} +\define@key{blx@datamodel@constraint}{pattern}{% regexp + \eappto\blx@tempc{ pattern="#1"}} + +\newcommand*{\blx@datamodel@constraint@antecedent}[2][]{% + \let\blx@tempe\@empty + \let\blx@temph\@empty + \let\constraintfield\blx@datamodel@constraintfieldsub + \setkeys{blx@datamodel@constraint@quant}{#1}% + #2% + \let\constraintfield\blx@datamodel@constraintfield% back to default + \eappto\blx@tempd{\blx@xml@datamodel@constraint@antecedent{\blx@tempe}{\blx@temph}}} + +\newcommand*{\blx@datamodel@constraint@consequent}[2][]{% + \let\blx@tempe\@empty + \let\blx@temph\@empty + \let\constraintfield\blx@datamodel@constraintfieldsub + \setkeys{blx@datamodel@constraint@quant}{#1}% + #2% + \let\constraintfield\blx@datamodel@constraintfield% back to default + \eappto\blx@tempd{\blx@xml@datamodel@constraint@consequent{\blx@tempe}{\blx@temph}}} + +\define@key{blx@datamodel@constraint@quant}{quantifier}{% characters + \eappto\blx@tempe{ quant="#1"}} + +\newcommand*{\blx@datamodel@constraintfieldsxor}[1]{% + \let\blx@temph\@empty + \let\constraintfield\blx@datamodel@constraintfieldsub + #1% + \let\constraintfield\blx@datamodel@constraintfield% back to default + \eappto\blx@tempd{\blx@xml@datamodel@constraintfieldsxor{\blx@temph}}} + +\newcommand*{\blx@datamodel@constraintfieldsor}[1]{% + \let\blx@temph\@empty + \let\constraintfield\blx@datamodel@constraintfieldsub + #1% + \let\constraintfield\blx@datamodel@constraintfield% back to default + \eappto\blx@tempd{\blx@xml@datamodel@constraintfieldsor{\blx@temph}}} + +\newcommand*{\blx@datamodel@constraintfield}[1]{% + \eappto\blx@tempd{\blx@xml@datamodel@constraintfield{#1}}} + +\newcommand*{\blx@datamodel@constraintfieldsub}[1]{% + \eappto\blx@temph{\blx@xml@datamodel@constraintfieldsub{#1}}} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Data model specification + + +\DeclareDatamodelEntrytypes{ + article, + artwork, + audio, + bibnote, + book, + bookinbook, + booklet, + collection, + commentary, + customa, + customb, + customc, + customd, + custome, + customf, + inbook, + incollection, + inproceedings, + inreference, + image, + jurisdiction, + legal, + legislation, + letter, + manual, + misc, + movie, + music, + mvcollection, + mvbook, + online, + patent, + performance, + periodical, + proceedings, + reference, + report, + review, + set, + software, + standard, + suppbook, + suppcollection, + thesis, + unpublished, + video, + xdata} + +\DeclareDatamodelFields[type=field, datatype=integer]{ + day, + endday, + endmonth, + eventday, + eventendday, + eventendmonth, + eventmonth, + eventyear, + origday, + origendday, + origendmonth, + origmonth, + origyear, + urlday, + urlendday, + urlendmonth, + urlmonth, + urlyear} + +\DeclareDatamodelFields[type=field, datatype=literal]{ + abstract, + addendum, + annotation, + booksubtitle, + booktitle, + booktitleaddon, + chapter, + edition, + eid, + entrysubtype, + eprintclass, + eprinttype, + eventtitle, + gender, + howpublished, + hyphenation, + indexsorttitle, + indextitle, + isan, + isbn, + ismn, + isrn, + issn, + issue, + issuesubtitle, + issuetitle, + iswc, + journalsubtitle, + journaltitle, + label, + library, + mainsubtitle, + maintitle, + maintitleaddon, + month, + nameaddon, + note, + number, + origtitle, + pagetotal, + part, + related, + relatedtype, + relatedstring, + reprinttitle, + series, + shorthand, + shorthandintro, + shortjournal, + shortseries, + shorttitle, + subtitle, + title, + titleaddon, + usera, + userb, + userc, + userd, + usere, + userf, + venue, + version, + volume, + volumes, + year} + +\DeclareDatamodelFields[type=field, datatype=integer, nullok]{ + urlendyear, + endyear, + eventendyear, + origendyear} + +\DeclareDatamodelFields[type=field, datatype=literal, skipout]{ + sorttitle, + sortshorthand, + sortyear, + sortkey, + presort, + entryset} + +\DeclareDatamodelFields[type=list, datatype=literal]{ + institution, + lista, + listb, + listc, + listd, + liste, + listf, + location, + organization, + origlocation, + origpublisher, + publisher} + +\DeclareDatamodelFields[type=list, datatype=name]{ + afterword, + annotator, + author, + bookauthor, + commentator, + editor, + editora, + editorb, + editorc, + foreword, + holder, + introduction, + namea, + nameb, + namec, + shortauthor, + shorteditor, + translator} + +\DeclareDatamodelFields[type=list, datatype=name, skipout]{sortname} + +\DeclareDatamodelFields[type=field, datatype=key]{ + authortype, + editoratype, + editorbtype, + editorctype, + editortype, + bookpagination, + nameatype, + namebtype, + namectype, + origlanguage, + pagination, + pubstate, + type} + +\DeclareDatamodelFields[type=list, datatype=key]{language} + +\DeclareDatamodelFields[type=field, datatype=entrykey]{ + crossref, + xref} + +\DeclareDatamodelFields[type=list, datatype=entrykey, skipout]{xdata, ids} + +\DeclareDatamodelFields[type=field, datatype=date, skipout]{ + date, + eventdate, + origdate, + urldate} + +\DeclareDatamodelFields[type=field, datatype=verbatim]{ + doi, + eprint, + file, + url, + verba, + verbb, + verbc} + +\DeclareDatamodelFields[type=field, datatype=csv]{keywords} +\DeclareDatamodelFields[type=field, datatype=csv, skipout]{options} +\DeclareDatamodelFields[type=field, datatype=range]{pages} +\DeclareDatamodelFields[type=field, datatype=code]{execute} + +\DeclareDatamodelEntryfields{ + abstract, + annotation, + authortype, + bookpagination, + crossref, + entryset, + entrysubtype, + execute, + file, + gender, + hyphenation, + ids, + indextitle, + indexsorttitle, + isan, + ismn, + iswc, + keywords, + label, + library, + lista, + listb, + listc, + listd, + liste, + listf, + nameaddon, + options, + origday, + origendday, + origendmonth, + origendyear, + origmonth, + origyear, + origlocation, + origpublisher, + origtitle, + pagination, + presort, + related, + relatedtype, + relatedstring, + shortauthor, + shorteditor, + shorthand, + shorthandintro, + shortjournal, + shortseries, + shorttitle, + sortkey, + sortname, + sortshorthand, + sorttitle, + sortyear, + usera, + userb, + userc, + userd, + usere, + userf, + verba, + verbb, + verbc, + xdata, + xref} + +\DeclareDatamodelEntryfields[set]{ + entryset, + crossref} + +\DeclareDatamodelEntryfields[article]{ + author, + journaltitle, + title, + day, + endday, + endmonth, + endyear, + month, + year, + addendum, + annotator, + commentator, + doi, + editor, + editora, + editorb, + editorc, + editoratype, + editorbtype, + editorctype, + eid, + eprint, + eprintclass, + eprinttype, + issn, + issue, + issuetitle, + issuesubtitle, + journalsubtitle, + language, + note, + number, + origlanguage, + pages, + pubstate, + series, + subtitle, + titleaddon, + translator, + url, + urlday, + urlendday, + urlendmonth, + urlendyear, + urlmonth, + urlyear, + version, + volume} + +\DeclareDatamodelEntryfields[bibnote]{note} + +\DeclareDatamodelEntryfields[book]{ + author, + title, + day, + endday, + endmonth, + endyear, + month, + year, + addendum, + afterword, + annotator, + chapter, + commentator, + doi, + edition, + editor, + editora, + editorb, + editorc, + editoratype, + editorbtype, + editorctype, + eprint, + eprintclass, + eprinttype, + foreword, + introduction, + isbn, + language, + location, + maintitle, + maintitleaddon, + mainsubtitle, + note, + number, + origlanguage, + pages, + pagetotal, + part, + publisher, + pubstate, + series, + subtitle, + titleaddon, + translator, + url, + urlday, + urlendday, + urlendmonth, + urlendyear, + urlmonth, + urlyear, + volume, + volumes} + +\DeclareDatamodelEntryfields[mvbook]{ + author, + title, + day, + endday, + endmonth, + endyear, + month, + year, + addendum, + afterword, + annotator, + commentator, + doi, + edition, + editor, + editora, + editorb, + editorc, + editoratype, + editorbtype, + editorctype, + eprint, + eprintclass, + eprinttype, + foreword, + introduction, + isbn, + language, + location, + note, + number, + origlanguage, + publisher, + pubstate, + subtitle, + titleaddon, + translator, + url, + urlday, + urlendday, + urlendmonth, + urlendyear, + urlmonth, + urlyear, + volume, + volumes} + +\DeclareDatamodelEntryfields[inbook,bookinbook,suppbook]{ + author, + title, + booktitle, + day, + endday, + endmonth, + endyear, + month, + year, + addendum, + afterword, + annotator, + bookauthor, + booksubtitle, + booktitleaddon, + chapter, + commentator, + doi, + edition, + editor, + editora, + editorb, + editorc, + editoratype, + editorbtype, + editorctype, + eprint, + eprintclass, + eprinttype, + foreword, + introduction, + isbn, + language, + location, + mainsubtitle, + maintitle, + maintitleaddon, + note, + number, + origlanguage, + part, + publisher, + pages, + pubstate, + series, + subtitle, + titleaddon, + translator, + url, + urlday, + urlendday, + urlendmonth, + urlendyear, + urlmonth, + urlyear, + volume, + volumes} + +\DeclareDatamodelEntryfields[booklet]{ + author, + editor, + title, + day, + endday, + endmonth, + endyear, + month, + year, + addendum, + chapter, + doi, + eprint, + eprintclass, + eprinttype, + howpublished, + language, + location, + note, + pages, + pagetotal, + pubstate, + subtitle, + titleaddon, + type, + url, + urlday, + urlendday, + urlendmonth, + urlendyear, + urlmonth, + urlyear} + +\DeclareDatamodelEntryfields[collection,reference]{ + editor, + title, + day, + endday, + endmonth, + endyear, + month, + year, + addendum, + afterword, + annotator, + chapter, + commentator, + doi, + edition, + editora, + editorb, + editorc, + editoratype, + editorbtype, + editorctype, + eprint, + eprintclass, + eprinttype, + foreword, + introduction, + isbn, + language, + location, + mainsubtitle, + maintitle, + maintitleaddon, + note, + number, + origlanguage, + pages, + pagetotal, + part, + publisher, + pubstate, + series, + subtitle, + titleaddon, + translator, + url, + urlday, + urlendday, + urlendmonth, + urlendyear, + urlmonth, + urlyear, + volume, + volumes} + +\DeclareDatamodelEntryfields[mvcollection,mvreference]{ + author, + title, + day, + endday, + endmonth, + endyear, + month, + year, + addendum, + afterword, + annotator, + commentator, + doi, + edition, + editor, + editora, + editorb, + editorc, + editoratype, + editorbtype, + editorctype, + eprint, + eprintclass, + eprinttype, + foreword, + introduction, + isbn, + language, + location, + note, + number, + origlanguage, + publisher, + pubstate, + subtitle, + titleaddon, + translator, + url, + urlday, + urlendday, + urlendmonth, + urlendyear, + urlmonth, + urlyear, + volume, + volumes} + +\DeclareDatamodelEntryfields[incollection,suppcollection,inreference]{ + author, + editor, + title, + booktitle, + day, + endday, + endmonth, + endyear, + month, + year, + addendum, + afterword, + annotator, + booksubtitle, + booktitleaddon, + chapter, + commentator, + doi, + edition, + editora, + editorb, + editorc, + editoratype, + editorbtype, + editorctype, + eprint, + eprintclass, + eprinttype, + foreword, + introduction, + isbn, + language, + location, + mainsubtitle, + maintitle, + maintitleaddon, + note, + number, + origlanguage, + pages, + part, + publisher, + pubstate, + series, + subtitle, + titleaddon, + translator, + url, + urlday, + urlendday, + urlendmonth, + urlendyear, + urlmonth, + urlyear, + volume, + volumes} + +\DeclareDatamodelEntryfields[manual]{ + title, + day, + endday, + endmonth, + endyear, + month, + year, + addendum, + author, + chapter, + doi, + edition, + editor, + eprint, + eprintclass, + eprinttype, + isbn, + language, + location, + note, + number, + organization, + pages, + pagetotal, + publisher, + pubstate, + series, + subtitle, + titleaddon, + type, + url, + urlday, + urlendday, + urlendmonth, + urlendyear, + urlmonth, + urlyear, + version} + +\DeclareDatamodelEntryfields[misc]{ + title, + day, + endday, + endmonth, + endyear, + day, + endday, + endmonth, + endyear, + month, + year, + addendum, + author, + doi, + editor, + eprint, + eprintclass, + eprinttype, + howpublished, + language, + location, + note, + organization, + pubstate, + subtitle, + titleaddon, + type, + url, + urlday, + urlendday, + urlendmonth, + urlendyear, + urlmonth, + urlyear, + version} + +\DeclareDatamodelEntryfields[online]{ + title, + url, + addendum, + author, + editor, + language, + month, + note, + organization, + pubstate, + subtitle, + titleaddon, + urlday, + urlendday, + urlendmonth, + urlendyear, + urlmonth, + urlyear, + version, + year} + +\DeclareDatamodelEntryfields[patent]{ + author, + title, + number, + day, + endday, + endmonth, + endyear, + month, + year, + addendum, + doi, + eprint, + eprintclass, + eprinttype, + holder, + location, + note, + pubstate, + subtitle, + titleaddon, + type, + url, + urlday, + urlendday, + urlendmonth, + urlendyear, + urlmonth, + urlyear, + version} + +\DeclareDatamodelEntryfields[periodical]{ + editor, + title, + day, + endday, + endmonth, + endyear, + month, + year, + addendum, + doi, + editora, + editorb, + editorc, + editoratype, + editorbtype, + editorctype, + eprint, + eprintclass, + eprinttype, + issn, + issue, + issuesubtitle, + issuetitle, + language, + note, + number, + pubstate, + series, + subtitle, + url, + urlday, + urlendday, + urlendmonth, + urlendyear, + urlmonth, + urlyear, + volume} + +\DeclareDatamodelEntryfields[mvproceedings]{ + editor, + title, + day, + endday, + endmonth, + endyear, + month, + year, + addendum, + doi, + eprint, + eprintclass, + eprinttype, + eventday, + eventendday, + eventendmonth, + eventendyear, + eventmonth, + eventyear, + eventtitle, + isbn, + language, + location, + note, + number, + organization, + pagetotal, + publisher, + pubstate, + series, + subtitle, + titleaddon, + url, + urlday, + urlendday, + urlendmonth, + urlendyear, + urlmonth, + urlyear, + venue, + volumes} + +\DeclareDatamodelEntryfields[proceedings]{ + editor, + title, + day, + endday, + endmonth, + endyear, + month, + year, + addendum, + chapter, + doi, + eprint, + eprintclass, + eprinttype, + eventday, + eventendday, + eventendmonth, + eventendyear, + eventmonth, + eventyear, + eventtitle, + isbn, + language, + location, + mainsubtitle, + maintitle, + maintitleaddon, + note, + number, + organization, + pages, + pagetotal, + part, + publisher, + pubstate, + series, + subtitle, + titleaddon, + url, + urlday, + urlendday, + urlendmonth, + urlendyear, + urlmonth, + urlyear, + venue, + volume, + volumes} + +\DeclareDatamodelEntryfields[inproceedings]{ + author, + editor, + title, + booktitle, + day, + endday, + endmonth, + endyear, + month, + year, + addendum, + booksubtitle, + booktitleaddon, + chapter, + doi, + eprint, + eprintclass, + eprinttype, + eventday, + eventendday, + eventendmonth, + eventendyear, + eventmonth, + eventyear, + eventtitle, + isbn, + language, + location, + mainsubtitle, + maintitle, + maintitleaddon, + note, + number, + organization, + pages, + part, + publisher, + pubstate, + series, + subtitle, + titleaddon, + url, + urlday, + urlendday, + urlendmonth, + urlendyear, + urlmonth, + urlyear, + venue, + volume, + volumes} + +\DeclareDatamodelEntryfields[report]{ + author, + title, + type, + institution, + day, + endday, + endmonth, + endyear, + month, + year, + addendum, + chapter, + doi, + eprint, + eprintclass, + eprinttype, + isrn, + language, + location, + note, + number, + pages, + pagetotal, + pubstate, + subtitle, + titleaddon, + url, + urlday, + urlendday, + urlendmonth, + urlendyear, + urlmonth, + urlyear, + version} + +\DeclareDatamodelEntryfields[thesis]{ + author, + title, + type, + institution, + day, + endday, + endmonth, + endyear, + month, + year, + addendum, + chapter, + doi, + eprint, + eprintclass, + eprinttype, + language, + location, + note, + pages, + pagetotal, + pubstate, + subtitle, + titleaddon, + url, + urlday, + urlendday, + urlendmonth, + urlendyear, + urlmonth, + urlyear} + +\DeclareDatamodelEntryfields[unpublished]{ + author, + title, + day, + endday, + endmonth, + endyear, + month, + year, + addendum, + howpublished, + language, + location, + note, + pubstate, + subtitle, + titleaddon, + url, + urlday, + urlendday, + urlendmonth, + urlendyear, + urlmonth, + urlyear} + +\DeclareDatamodelConstraints[ + article, + book, + inbook, + bookinbook, + suppbook, + booklet, + collection, + incollection, + suppcollection, + manual, + misc, + mvbook, + mvcollection, + online, + patent, + periodical, + suppperiodical, + proceedings, + inproceedings, + reference, + inreference, + report, + set, + thesis, + unpublished]{ + \constraint[type=mandatory]{ + \constraintfieldsxor{ + \constraintfield{date} + \constraintfield{year} + } + } + } + +\DeclareDatamodelConstraints[set]{ + \constraint[type=mandatory]{ + \constraintfield{entryset} + \constraintfield{crossref} + } +} + +\DeclareDatamodelConstraints[article]{ + \constraint[type=mandatory]{ + \constraintfield{author} + \constraintfield{journaltitle} + \constraintfield{title} + } +} + +\DeclareDatamodelConstraints[book,mvbook,mvcollection,mvreference]{ + \constraint[type=mandatory]{ + \constraintfield{author} + \constraintfield{title} + } +} + +\DeclareDatamodelConstraints[inbook,bookinbook,suppbook]{ + \constraint[type=mandatory]{ + \constraintfield{author} + \constraintfield{title} + \constraintfield{booktitle} + } +} + +\DeclareDatamodelConstraints[booklet]{ + \constraint[type=mandatory]{ + \constraintfieldsor{ + \constraintfield{author} + \constraintfield{editor} + } + \constraintfield{title} + } +} + +\DeclareDatamodelConstraints[collection,reference]{ + \constraint[type=mandatory]{ + \constraintfield{editor} + \constraintfield{title} + } +} + +\DeclareDatamodelConstraints[incollection,suppcollection,inreference]{ + \constraint[type=mandatory]{ + \constraintfield{author} + \constraintfield{editor} + \constraintfield{title} + \constraintfield{booktitle} + } +} + +\DeclareDatamodelConstraints[manual]{ + \constraint[type=mandatory]{ + \constraintfield{title} + } +} + +\DeclareDatamodelConstraints[misc]{ + \constraint[type=mandatory]{ + \constraintfield{title} + } +} + +\DeclareDatamodelConstraints[online]{ + \constraint[type=mandatory]{ + \constraintfield{title} + \constraintfield{url} + } +} + +\DeclareDatamodelConstraints[patent]{ + \constraint[type=mandatory]{ + \constraintfield{author} + \constraintfield{title} + \constraintfield{number} + } +} + +\DeclareDatamodelConstraints[periodical]{ + \constraint[type=mandatory]{ + \constraintfield{editor} + \constraintfield{title} + } +} + +\DeclareDatamodelConstraints[proceedings,mvproceedings]{ + \constraint[type=mandatory]{ + \constraintfield{editor} + \constraintfield{title} + } +} + +\DeclareDatamodelConstraints[inproceedings]{ + \constraint[type=mandatory]{ + \constraintfield{author} + \constraintfield{editor} + \constraintfield{title} + \constraintfield{booktitle} + } +} + +\DeclareDatamodelConstraints[report]{ + \constraint[type=mandatory]{ + \constraintfield{author} + \constraintfield{title} + \constraintfield{type} + \constraintfield{institution} + } +} + +\DeclareDatamodelConstraints[thesis]{ + \constraint[type=mandatory]{ + \constraintfield{author} + \constraintfield{title} + \constraintfield{type} + \constraintfield{institution} + } +} + +\DeclareDatamodelConstraints[unpublished]{ + \constraint[type=mandatory]{ + \constraintfield{author} + \constraintfield{title} + } +} + +\DeclareDatamodelConstraints{ + \constraint[type=data, datatype=isbn]{ + \constraintfield{isbn} + } + \constraint[type=data, datatype=issn]{ + \constraintfield{issn} + } + \constraint[type=data, datatype=ismn]{ + \constraintfield{ismn} + } + \constraint[type=data, datatype=date]{ + \constraintfield{date} + \constraintfield{eventdate} + \constraintfield{origdate} + \constraintfield{urldate} + } + \constraint[type=data, datatype=pattern, pattern=\regexp{(?:sf|sm|sn|pf|pm|pn|pp)}]{ + \constraintfield{gender} + } +} + diff --git a/Master/texmf-dist/tex/latex/biblatex/blx-mcite.def b/Master/texmf-dist/tex/latex/biblatex/blx-mcite.def index b2260b1b716..7057a4185ad 100644 --- a/Master/texmf-dist/tex/latex/biblatex/blx-mcite.def +++ b/Master/texmf-dist/tex/latex/biblatex/blx-mcite.def @@ -1,8 +1,5 @@ -% $Id: blx-mcite.def,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{blx-mcite.def} -[\abx@rcsid $Id: blx-mcite.def,v 1.7 2011/11/13 19:09:07 lehman stable $ - mcite-like citation commands] +[\abx@cptid] \newrobustcmd*{\mcite}{\mcitelike\cite} \newrobustcmd*{\Mcite}{\mcitelike\Cite} diff --git a/Master/texmf-dist/tex/latex/biblatex/blx-natbib.def b/Master/texmf-dist/tex/latex/biblatex/blx-natbib.def index fcc5b0ef9a8..bb002ab5077 100644 --- a/Master/texmf-dist/tex/latex/biblatex/blx-natbib.def +++ b/Master/texmf-dist/tex/latex/biblatex/blx-natbib.def @@ -1,8 +1,5 @@ -% $Id: blx-natbib.def,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{blx-natbib.def} -[\abx@rcsid $Id: blx-natbib.def,v 1.7 2011/11/13 19:09:07 lehman stable $ - biblatex natbib compatibility] +[\abx@cptid] \renewcommand*{\nameyeardelim}{\addcomma\space} diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/alphabetic-verb.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/alphabetic-verb.cbx index 55e0451e907..1a590085e28 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/alphabetic-verb.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/alphabetic-verb.cbx @@ -1,7 +1,5 @@ -% $Id: alphabetic-verb.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{alphabetic-verb.cbx} -[\abx@cbxid $Id: alphabetic-verb.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@cbxid] \ExecuteBibliographyOptions{labelalpha,autocite=inline} diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/alphabetic.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/alphabetic.cbx index d21640becc8..590d77eee9b 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/alphabetic.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/alphabetic.cbx @@ -1,7 +1,5 @@ -% $Id: alphabetic.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{alphabetic.cbx} -[\abx@cbxid $Id: alphabetic.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@cbxid] \ExecuteBibliographyOptions{labelalpha,autocite=inline} diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-comp.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-comp.cbx index 34e38583808..185499b12ba 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-comp.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-comp.cbx @@ -1,7 +1,5 @@ -% $Id: authortitle-comp.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{authortitle-comp.cbx} -[\abx@cbxid $Id: authortitle-comp.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@cbxid] \ExecuteBibliographyOptions{uniquename,uniquelist,sortcites,autocite=footnote} \newbool{cbx:parens} diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-ibid.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-ibid.cbx index b1a72767f23..8068079eafd 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-ibid.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-ibid.cbx @@ -1,7 +1,5 @@ -% $Id: authortitle-ibid.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{authortitle-ibid.cbx} -[\abx@cbxid $Id: authortitle-ibid.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@cbxid] \ExecuteBibliographyOptions{uniquename,uniquelist,ibidtracker=constrict,pagetracker,autocite=footnote} \providecommand*{\mkibid}[1]{#1} diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-icomp.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-icomp.cbx index 5e39e58d019..faec6bea6af 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-icomp.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-icomp.cbx @@ -1,7 +1,5 @@ -% $Id: authortitle-icomp.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{authortitle-icomp.cbx} -[\abx@cbxid $Id: authortitle-icomp.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@cbxid] \ExecuteBibliographyOptions{uniquename,uniquelist,ibidtracker=constrict, pagetracker,sortcites,autocite=footnote} diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-tcomp.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-tcomp.cbx index c92f8599bbf..2764d3031cf 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-tcomp.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-tcomp.cbx @@ -1,7 +1,5 @@ -% $Id: authortitle-tcomp.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{authortitle-tcomp.cbx} -[\abx@cbxid $Id: authortitle-tcomp.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@cbxid] \RequireCitationStyle{authortitle-comp} \ExecuteBibliographyOptions{singletitle,uniquename,uniquelist,autocite=inline} diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-terse.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-terse.cbx index ebfb2f0be3c..2e3015ef651 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-terse.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-terse.cbx @@ -1,7 +1,5 @@ -% $Id: authortitle-terse.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{authortitle-terse.cbx} -[\abx@cbxid $Id: authortitle-terse.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@cbxid] \RequireCitationStyle{authortitle} \ExecuteBibliographyOptions{singletitle,uniquename,uniquelist,autocite=inline} diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-ticomp.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-ticomp.cbx index 25b255ff919..28bfa4e699d 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-ticomp.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-ticomp.cbx @@ -1,7 +1,5 @@ -% $Id: authortitle-ticomp.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{authortitle-ticomp.cbx} -[\abx@cbxid $Id: authortitle-ticomp.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@cbxid] \RequireCitationStyle{authortitle-icomp} \ExecuteBibliographyOptions{singletitle,uniquename,uniquelist,autocite=inline} diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle.cbx index f010f7f9298..4bdb2a94230 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle.cbx @@ -1,7 +1,5 @@ -% $Id: authortitle.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{authortitle.cbx} -[\abx@cbxid $Id: authortitle.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@cbxid] \ExecuteBibliographyOptions{uniquename,uniquelist,autocite=footnote} \newbool{cbx:parens} diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/authoryear-comp.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/authoryear-comp.cbx index 21a2e9abf5d..b579d1c9efd 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/authoryear-comp.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/authoryear-comp.cbx @@ -1,7 +1,5 @@ -% $Id: authoryear-comp.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{authoryear-comp.cbx} -[\abx@cbxid $Id: authoryear-comp.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@cbxid] \ExecuteBibliographyOptions{labelyear,uniquename,uniquelist,sortcites,autocite=inline} \newbool{cbx:parens} diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/authoryear-ibid.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/authoryear-ibid.cbx index 6119852780c..56dc3f27d86 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/authoryear-ibid.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/authoryear-ibid.cbx @@ -1,7 +1,5 @@ -% $Id: authoryear-ibid.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{authoryear-ibid.cbx} -[\abx@cbxid $Id: authoryear-ibid.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@cbxid] \ExecuteBibliographyOptions{labelyear,uniquename,uniquelist,pagetracker, ibidtracker=constrict,autocite=inline} diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/authoryear-icomp.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/authoryear-icomp.cbx index de084dc3c54..afa46ee3677 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/authoryear-icomp.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/authoryear-icomp.cbx @@ -1,7 +1,5 @@ -% $Id: authoryear-icomp.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{authoryear-icomp.cbx} -[\abx@cbxid $Id: authoryear-icomp.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@cbxid] \ExecuteBibliographyOptions{labelyear,uniquename,uniquelist,ibidtracker=constrict, pagetracker,sortcites,autocite=inline} diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/authoryear.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/authoryear.cbx index 9d2f8155964..c8fb2f891ad 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/authoryear.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/authoryear.cbx @@ -1,7 +1,5 @@ -% $Id: authoryear.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{authoryear.cbx} -[\abx@cbxid $Id: authoryear.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@cbxid] \ExecuteBibliographyOptions{labelyear,uniquename,uniquelist,autocite=inline} \newbool{cbx:parens} diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/debug.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/debug.cbx index f428806df22..dc3405dd7f3 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/debug.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/debug.cbx @@ -1,7 +1,5 @@ -% $Id: debug.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{debug.cbx} -[\abx@cbxid $Id: debug.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@cbxid] \ExecuteBibliographyOptions{autocite=plain} diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/draft.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/draft.cbx index a2a1a488ec4..af32a89c6e6 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/draft.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/draft.cbx @@ -1,7 +1,5 @@ -% $Id: draft.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{draft.cbx} -[\abx@cbxid $Id: draft.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@cbxid] \ExecuteBibliographyOptions{autocite=plain} diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/numeric-comp.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/numeric-comp.cbx index 19f7aaed7cc..9f5a434b38b 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/numeric-comp.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/numeric-comp.cbx @@ -1,7 +1,5 @@ -% $Id: numeric-comp.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{numeric-comp.cbx} -[\abx@cbxid $Id: numeric-comp.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@cbxid] \ExecuteBibliographyOptions{labelnumber,sortcites,autocite=inline} \renewcommand*{\multicitedelim}{\addcomma\space} diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/numeric-verb.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/numeric-verb.cbx index e7c2ddf6f84..8242120b64d 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/numeric-verb.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/numeric-verb.cbx @@ -1,7 +1,5 @@ -% $Id: numeric-verb.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{numeric-verb.cbx} -[\abx@cbxid $Id: numeric-verb.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@cbxid] \ExecuteBibliographyOptions{labelnumber,autocite=inline} \renewcommand*{\multicitedelim}{\addcomma\space} diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/numeric.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/numeric.cbx index 15dc0eb3616..4f431473601 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/numeric.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/numeric.cbx @@ -1,7 +1,5 @@ -% $Id: numeric.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{numeric.cbx} -[\abx@cbxid $Id: numeric.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@cbxid] \ExecuteBibliographyOptions{labelnumber,autocite=inline} \renewcommand*{\multicitedelim}{\addcomma\space} diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/reading.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/reading.cbx index 5834a6f3a97..b9c47701d20 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/reading.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/reading.cbx @@ -1,7 +1,5 @@ -% $Id: reading.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{reading.cbx} -[\abx@cbxid $Id: reading.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@cbxid] \RequireCitationStyle{authortitle} diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-ibid.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-ibid.cbx index af78b9ee90c..dff768ed174 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-ibid.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-ibid.cbx @@ -1,7 +1,5 @@ -% $Id: verbose-ibid.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{verbose-ibid.cbx} -[\abx@cbxid $Id: verbose-ibid.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@cbxid] \InitializeCitationStyle{\numgdef{\cbx@resetcount}{\cbx@resetcount+1}} \DeclareFieldFormat{bibhyperlink}{% diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-inote.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-inote.cbx index 492ea42667d..fc416ef3ba6 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-inote.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-inote.cbx @@ -1,7 +1,5 @@ -% $Id: verbose-inote.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{verbose-inote.cbx} -[\abx@cbxid $Id: verbose-inote.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@cbxid] \DeclareFieldFormat{bibhyperlink}{% \bibhyperlink{\thefield{entrykey}:\csuse{cbx@\iffootnote{f}{t}@\thefield{entrykey}}}{#1}} diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-note.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-note.cbx index 347f291afa6..70d697cfeb2 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-note.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-note.cbx @@ -1,7 +1,5 @@ -% $Id: verbose-note.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{verbose-note.cbx} -[\abx@cbxid $Id: verbose-note.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@cbxid] \DeclareFieldFormat{bibhyperlink}{% \bibhyperlink{\thefield{entrykey}:\csuse{cbx@\iffootnote{f}{t}@\thefield{entrykey}}}{#1}} diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-trad1.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-trad1.cbx index 3f53294ef64..14d863c0b51 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-trad1.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-trad1.cbx @@ -1,8 +1,12 @@ -% $Id: verbose-trad1.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{verbose-trad1.cbx} -[\abx@cbxid $Id: verbose-trad1.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $] - +[\abx@cbxid] + +\InitializeCitationStyle{\numgdef{\cbx@resetcount}{\cbx@resetcount+1}} +\DeclareFieldFormat{bibhyperlink}{% + \bibhyperlink{\iffootnote{f}{t}:\cbx@resetcount:\thefield{entrykey}}{#1}} +\DeclareFieldFormat{bibhypertarget}{% + \bibhypertarget{\iffootnote{f}{t}:\cbx@resetcount:\thefield{entrykey}}{#1}} +\newcommand*{\cbx@resetcount}{0} \providecommand*{\mkibid}[1]{#1} \newtoggle{cbx:ibidpage} \newtoggle{cbx:loccit} diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-trad2.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-trad2.cbx index 7227d0ebb43..c87aa5f6623 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-trad2.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-trad2.cbx @@ -1,8 +1,12 @@ -% $Id: verbose-trad2.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{verbose-trad2.cbx} -[\abx@cbxid $Id: verbose-trad2.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $] - +[\abx@cbxid] + +\InitializeCitationStyle{\numgdef{\cbx@resetcount}{\cbx@resetcount+1}} +\DeclareFieldFormat{bibhyperlink}{% + \bibhyperlink{\iffootnote{f}{t}:\cbx@resetcount:\thefield{entrykey}}{#1}} +\DeclareFieldFormat{bibhypertarget}{% + \bibhypertarget{\iffootnote{f}{t}:\cbx@resetcount:\thefield{entrykey}}{#1}} +\newcommand*{\cbx@resetcount}{0} \providecommand*{\mkibid}[1]{#1} \newtoggle{cbx:fullcite} \newtoggle{cbx:loccit} diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-trad3.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-trad3.cbx index e451e8285ca..0f7cdb4a949 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-trad3.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-trad3.cbx @@ -1,8 +1,12 @@ -% $Id: verbose-trad3.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{verbose-trad3.cbx} -[\abx@cbxid $Id: verbose-trad3.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $] - +[\abx@cbxid] + +\InitializeCitationStyle{\numgdef{\cbx@resetcount}{\cbx@resetcount+1}} +\DeclareFieldFormat{bibhyperlink}{% + \bibhyperlink{\iffootnote{f}{t}:\cbx@resetcount:\thefield{entrykey}}{#1}} +\DeclareFieldFormat{bibhypertarget}{% + \bibhypertarget{\iffootnote{f}{t}:\cbx@resetcount:\thefield{entrykey}}{#1}} +\newcommand*{\cbx@resetcount}{0} \providecommand*{\mkibid}[1]{#1} \newtoggle{cbx:loccit} diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/verbose.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/verbose.cbx index eecfc6a26d4..f219fb6d4d8 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/verbose.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/verbose.cbx @@ -1,7 +1,5 @@ -% $Id: verbose.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{verbose.cbx} -[\abx@cbxid $Id: verbose.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@cbxid] \InitializeCitationStyle{\numgdef{\cbx@resetcount}{\cbx@resetcount+1}} \DeclareFieldFormat{bibhyperlink}{% diff --git a/Master/texmf-dist/tex/latex/biblatex/lbx/UKenglish.lbx b/Master/texmf-dist/tex/latex/biblatex/lbx/UKenglish.lbx index 2b1e0b591a6..87b20b85e09 100644 --- a/Master/texmf-dist/tex/latex/biblatex/lbx/UKenglish.lbx +++ b/Master/texmf-dist/tex/latex/biblatex/lbx/UKenglish.lbx @@ -1,7 +1,5 @@ -% $Id: UKenglish.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{UKenglish.lbx} -[\abx@lbxid $Id: UKenglish.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@lbxid] \InheritBibliographyExtras{british} \InheritBibliographyStrings{british} diff --git a/Master/texmf-dist/tex/latex/biblatex/lbx/USenglish.lbx b/Master/texmf-dist/tex/latex/biblatex/lbx/USenglish.lbx index dd1ab54b14e..62f02a3a9d2 100644 --- a/Master/texmf-dist/tex/latex/biblatex/lbx/USenglish.lbx +++ b/Master/texmf-dist/tex/latex/biblatex/lbx/USenglish.lbx @@ -1,7 +1,5 @@ -% $Id: USenglish.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{USenglish.lbx} -[\abx@lbxid $Id: USenglish.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@lbxid] \InheritBibliographyExtras{american} \InheritBibliographyStrings{american} diff --git a/Master/texmf-dist/tex/latex/biblatex/lbx/american.lbx b/Master/texmf-dist/tex/latex/biblatex/lbx/american.lbx index 28a8bfc53e1..91ebe2f4490 100644 --- a/Master/texmf-dist/tex/latex/biblatex/lbx/american.lbx +++ b/Master/texmf-dist/tex/latex/biblatex/lbx/american.lbx @@ -1,7 +1,5 @@ -% $Id: american.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{american.lbx} -[\abx@lbxid $Id: american.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@lbxid] \InheritBibliographyExtras{english} \DeclareBibliographyExtras{\uspunctuation} diff --git a/Master/texmf-dist/tex/latex/biblatex/lbx/australian.lbx b/Master/texmf-dist/tex/latex/biblatex/lbx/australian.lbx index 0b9176e48d1..44dc3408647 100644 --- a/Master/texmf-dist/tex/latex/biblatex/lbx/australian.lbx +++ b/Master/texmf-dist/tex/latex/biblatex/lbx/australian.lbx @@ -1,7 +1,5 @@ -% $Id: australian.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{australian.lbx} -[\abx@lbxid $Id: australian.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@lbxid] \InheritBibliographyExtras{british} \DeclareBibliographyExtras{% diff --git a/Master/texmf-dist/tex/latex/biblatex/lbx/austrian.lbx b/Master/texmf-dist/tex/latex/biblatex/lbx/austrian.lbx index cce27921a31..39ee155aa64 100644 --- a/Master/texmf-dist/tex/latex/biblatex/lbx/austrian.lbx +++ b/Master/texmf-dist/tex/latex/biblatex/lbx/austrian.lbx @@ -1,7 +1,5 @@ -% $Id: austrian.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{austrian.lbx} -[\abx@lbxid $Id: austrian.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@lbxid] \InheritBibliographyExtras{german} diff --git a/Master/texmf-dist/tex/latex/biblatex/lbx/brazil.lbx b/Master/texmf-dist/tex/latex/biblatex/lbx/brazil.lbx index bed339c3770..5da4cbe39d7 100644 --- a/Master/texmf-dist/tex/latex/biblatex/lbx/brazil.lbx +++ b/Master/texmf-dist/tex/latex/biblatex/lbx/brazil.lbx @@ -1,7 +1,5 @@ -% $Id: brazil.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{brazil.lbx} -[\abx@lbxid $Id: brazil.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@lbxid] \InheritBibliographyExtras{brazilian} \InheritBibliographyStrings{brazilian} diff --git a/Master/texmf-dist/tex/latex/biblatex/lbx/brazilian.lbx b/Master/texmf-dist/tex/latex/biblatex/lbx/brazilian.lbx index 6fb1a37b265..dc08a17d6f9 100644 --- a/Master/texmf-dist/tex/latex/biblatex/lbx/brazilian.lbx +++ b/Master/texmf-dist/tex/latex/biblatex/lbx/brazilian.lbx @@ -1,7 +1,5 @@ -% $Id: brazilian.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{brazilian.lbx} -[\abx@lbxid $Id: brazilian.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@lbxid] \DeclareRedundantLanguages{brazilian}{brazil,portuges} @@ -217,6 +215,7 @@ bycompiler = {{compilado por}{comp\adddotspace por}}, byredactor = {{redigido por}{red\adddotspace por}}, % byreviser = {{}{}}, % FIXME: missing +% byreviewer = {{}{}}, % FIXME: missing byfounder = {{fundado por}{fund\adddotspace por}}, bycontinuator = {{continuado por}{cont\adddotspace por}}, bycollaborator = {{em colabora\c{a}\~o com}{em col\adddotspace com}}, @@ -301,6 +300,7 @@ andmore = {{et\addabbrvspace al\adddot}{et\addabbrvspace al\adddot}}, volume = {{volume}{vol\adddot}}, volumes = {{volumes}{vols\adddot}}, + involumes = {{em}{em}}, jourvol = {{volume}{vol\adddot}}, jourser = {{s\'erie}{s\'er\adddot}}, % book = {{}{}}, % FIXME: missing @@ -312,6 +312,15 @@ reprint = {{reimpress\~ao}{reimpr\adddot}}, reprintof = {{reimpress\~ao de}{reimpr\adddotspace de}}, reprintas = {{reimpresso como}{reimpr\adddotspace como}}, + reprintfrom = {{reimpresso}{reimpr\adddot}}, % FIXME: check + translationof = {{tradu\c{c}\~ao de}{trans\adddotspace de}}, % FIXME: check + translationas = {{traduzido como}{trans\adddotspace como}}, % FIXME: check + translationfrom = {{traduzido do}{trans\adddotspace do}}, % FIXME: check +% reviewof = {{}{}}, % FIXME: missing + origpubas = {{originalmente publicado como}{orig\adddotspace pub\adddotspace como}}, % FIXME: check + origpubin = {{originalmente publicado em}{orig\adddotspace pub\adddotspace em}}, % FIXME: check + astitle = {{como}{como}}, % FIXME: check + bypublisher = {{por}{por}}, % FIXME: check page = {{p\'agina}{p\adddot}}, pages = {{p\'aginas}{pp\adddot}}, column = {{coluna}{col\adddot}}, @@ -331,6 +340,7 @@ chapter = {{cap\'\i tulo}{cap\adddot}}, mathesis = {{disserta\c{c}\~ao de mestrado}{diss\adddot\ de mestrado}}, phdthesis = {{tese de doutorado}{tese de doutorado}}, +% candthesis = {{}{}}, % FIXME: missing resreport = {{relat\'orio de pesquisa}{rel\adddotspace de pesquisa}}, techreport = {{relat\'orio t\'ecnico}{rel\adddotspace t\'ec\adddot}}, software = {{software}{software}}, diff --git a/Master/texmf-dist/tex/latex/biblatex/lbx/british.lbx b/Master/texmf-dist/tex/latex/biblatex/lbx/british.lbx index 4213e3103df..f2ce1a735d0 100644 --- a/Master/texmf-dist/tex/latex/biblatex/lbx/british.lbx +++ b/Master/texmf-dist/tex/latex/biblatex/lbx/british.lbx @@ -1,7 +1,5 @@ -% $Id: british.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{british.lbx} -[\abx@lbxid $Id: british.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@lbxid] \DeclareBibliographyExtras{% \protected\def\bibrangedash{% diff --git a/Master/texmf-dist/tex/latex/biblatex/lbx/canadian.lbx b/Master/texmf-dist/tex/latex/biblatex/lbx/canadian.lbx index 992f72b191b..67b2dfc2cdf 100644 --- a/Master/texmf-dist/tex/latex/biblatex/lbx/canadian.lbx +++ b/Master/texmf-dist/tex/latex/biblatex/lbx/canadian.lbx @@ -1,7 +1,5 @@ -% $Id: canadian.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{canadian.lbx} -[\abx@lbxid $Id: canadian.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@lbxid] \InheritBibliographyExtras{english}% correct? these are the US standards \InheritBibliographyStrings{english} diff --git a/Master/texmf-dist/tex/latex/biblatex/lbx/danish.lbx b/Master/texmf-dist/tex/latex/biblatex/lbx/danish.lbx index 9fb9c611d45..9fd7c10b7bb 100644 --- a/Master/texmf-dist/tex/latex/biblatex/lbx/danish.lbx +++ b/Master/texmf-dist/tex/latex/biblatex/lbx/danish.lbx @@ -1,7 +1,5 @@ -% $Id: danish.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{danish.lbx} -[\abx@lbxid $Id: danish.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@lbxid] \DeclareRedundantLanguages{danish}{danish} @@ -147,6 +145,7 @@ bycompiler = {{kompileret af}{komp\adddotspace af}}, byredactor = {{bearbejdet af}{bearb\adddotspace af}}, % byreviser = {{}{}}, % FIXME: missing +% byreviewer = {{}{}}, % FIXME: missing % byfounder = {{}{}}, % FIXME: missing % bycontinuator = {{}{}}, % FIXME: missing % bycollaborator = {{}{}}, % FIXME: missing @@ -234,6 +233,7 @@ andmore = {{med flere}{m.fl\adddot}}, volume = {{bind}{bd\adddot}}, volumes = {{bind}{bd\adddot}}, + involumes = {{i}{i}}, jourvol = {{\aa rgang}{\aa g\adddot}}, jourser = {{serie}{ser\adddot}}, % book = {{}{}}, % FIXME: missing @@ -254,6 +254,15 @@ % alternative translation: % reprintas = {{genoptrykt i}{genoptrykt i}}, % reprintas = {{genoptrykt som}{genoptrykt som}}, + reprintfrom = {{eftertryk fra}{eftertryk fra}}, % FIXME: check + translationof = {{overs\ae ttelse af}{overs\ae ttelse af}}, % FIXME: check + translationas = {{oversat som}{oversat som}}, % FIXME: check + translationfrom = {{oversat fra}{oversat fra}}, % FIXME: check +% reviewof = {{}{}}, % FIXME: missing + origpubas = {{oprindelig udgivet som}{oprindelig udgivet som}}, % FIXME: check + origpubin = {{oprindeligt udgivet i}{oprindeligt udgivet i}}, % FIXME: check + astitle = {{i}{i}}, % FIXME: check + bypublisher = {{af}{af}}, % FIXME: check page = {{side}{s\adddot}}, pages = {{sider}{s\adddot}}, column = {{spalte}{sp\adddot}}, @@ -274,10 +283,9 @@ ofseries = {{af r\ae kken}{af r\ae kken}}, number = {{nummer}{nr\adddot}}, chapter = {{kapitel}{kap\adddot}}, - mathesis = {{kandidatafhandling}{kandidatafh\adddot}}, -% alternative translation: -% mathesis = {{speciale}{speciale}}, + mathesis = {{speciale}{speciale}}, % FIXME: check phdthesis = {{ph.d.-afhandling}{ph.d.-afh\adddot}}, + candthesis = {{kandidatafhandling}{kandidatafh\adddot}}, % FIXME: check resreport = {{forskningsrapport}{forskningsrap\adddot}}, techreport = {{teknisk rapport}{tek\adddot\ rap\adddot}}, software = {{software}{software}}, diff --git a/Master/texmf-dist/tex/latex/biblatex/lbx/dutch.lbx b/Master/texmf-dist/tex/latex/biblatex/lbx/dutch.lbx index 08833c3b5bf..66d8e787507 100644 --- a/Master/texmf-dist/tex/latex/biblatex/lbx/dutch.lbx +++ b/Master/texmf-dist/tex/latex/biblatex/lbx/dutch.lbx @@ -1,7 +1,5 @@ -% $Id: dutch.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{dutch.lbx} -[\abx@lbxid $Id: dutch.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@lbxid] % Changes: % 2010-10-31 Update by Alexander van Loon @@ -223,6 +221,7 @@ bycontinuator = {{opgevolgd door}{opgev\adddot\addabbrvspace door}}, byredactor = {{geredigeerd door}{red\adddot\ door}}, byreviser = {{nagekeken door}{nagek\adddot\addabbrvspace door}}, +% byreviewer = {{}{}}, % FIXME: missing bycollaborator = {{met medewerking van}{m\adddot m\adddot v}}, bytranslator = {{vertaald \lbx@lfromlang\ door}{vert\adddot\ \lbx@lfromlang\ door}}, bycommentator = {{becommentarieerd door}{comm\adddot\ door}}, @@ -324,6 +323,15 @@ reprint = {{herdruk}{herdr\adddot}}, reprintof = {{herdruk van}{herdr\adddotspace van}}, reprintas = {{herdrukt als}{herdr\adddotspace als}}, + reprintfrom = {{herdrukt uit}{herdr\adddotspace uit}}, % FIXME: check + translationof = {{translation of}{trans\adddotspace of}}, % FIXME: check + translationas = {{translated as}{trans\adddotspace as}}, % FIXME: check + translationfrom = {{vertaald van}{vert\adddotspace van}}, % FIXME: check +% reviewof = {{}{}}, % FIXME: missing + origpubas = {{}{}}, % FIXME: missing + origpubin = {{}{}}, % FIXME: missing + astitle = {{als}{als}}, % FIXME: check + bypublisher = {{door}{door}}, % FIXME: check inpreparation = {{in voorbereiding}{in voorbereiding}}, submitted = {{ingediend}{ingedied}}, % forthcoming = {{}{}}, % FIXME: missing diff --git a/Master/texmf-dist/tex/latex/biblatex/lbx/english.lbx b/Master/texmf-dist/tex/latex/biblatex/lbx/english.lbx index 26a9105f581..e4e1ec50117 100644 --- a/Master/texmf-dist/tex/latex/biblatex/lbx/english.lbx +++ b/Master/texmf-dist/tex/latex/biblatex/lbx/english.lbx @@ -1,7 +1,5 @@ -% $Id: english.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{english.lbx} -[\abx@lbxid $Id: english.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@lbxid] \DeclareRedundantLanguages{english,american}{english,american,british, canadian,australian,newzealand,USenglish,UKenglish} @@ -238,6 +236,7 @@ canadian,australian,newzealand,USenglish,UKenglish} bycompiler = {{compiled by}{comp\adddotspace by}}, byredactor = {{redacted by}{red\adddotspace by}}, byreviser = {{revised by}{rev\adddotspace by}}, + byreviewer = {{reviewed by}{rev\adddotspace by}}, byfounder = {{founded by}{found\adddotspace by}}, bycontinuator = {{continued by}{cont\adddotspace by}}, bycollaborator = {{in collaboration with}{in collab\adddotspace with}}, % FIXME: unsure @@ -322,6 +321,7 @@ canadian,australian,newzealand,USenglish,UKenglish} andmore = {{et\addabbrvspace al\adddot}{et\addabbrvspace al\adddot}}, volume = {{volume}{vol\adddot}}, volumes = {{volumes}{vols\adddot}}, + involumes = {{in}{in}}, jourvol = {{volume}{vol\adddot}}, jourser = {{series}{ser\adddot}}, book = {{book}{book}}, @@ -333,6 +333,15 @@ canadian,australian,newzealand,USenglish,UKenglish} reprint = {{reprint}{repr\adddot}}, reprintof = {{reprint of}{repr\adddotspace of}}, reprintas = {{reprinted as}{rpt\adddotspace as}}, + reprintfrom = {{reprinted from}{repr\adddotspace from}}, + reviewof = {{review of}{rev\adddotspace of}}, + translationof = {{translation of}{trans\adddotspace of}}, + translationas = {{translated as}{trans\adddotspace as}}, + translationfrom = {{translated from}{trans\adddotspace from}}, + origpubas = {{originally published as}{orig\adddotspace pub\adddotspace as}}, + origpubin = {{originally published in}{orig\adddotspace pub\adddotspace in}}, + astitle = {{as}{as}}, + bypublisher = {{by}{by}}, page = {{page}{p\adddot}}, pages = {{pages}{pp\adddot}}, column = {{column}{col\adddot}}, @@ -352,6 +361,7 @@ canadian,australian,newzealand,USenglish,UKenglish} chapter = {{chapter}{chap\adddot}}, mathesis = {{Master's thesis}{MA\addabbrvspace thesis}}, phdthesis = {{PhD\addabbrvspace thesis}{PhD\addabbrvspace thesis}}, + candthesis = {{Candidate thesis}{Cand\adddotspace thesis}}, resreport = {{research report}{research rep\adddot}}, techreport = {{technical report}{tech\adddotspace rep\adddot}}, software = {{computer software}{comp\adddotspace software}}, @@ -460,7 +470,7 @@ canadian,australian,newzealand,USenglish,UKenglish} \protected\gdef\lbx@us@mkbibrangetrunc@long#1#2{% \iffieldundef{#2year} {} - {\printtext{% + {\printtext[#2date]{% \iffieldsequal{#2year}{#2endyear} {\csuse{mkbibdate#1}{}{#2month}{#2day}} {\csuse{mkbibdate#1}{#2year}{#2month}{#2day}}% @@ -478,7 +488,7 @@ canadian,australian,newzealand,USenglish,UKenglish} \protected\gdef\lbx@us@mkbibrangetrunc@short#1#2{% \iffieldundef{#2year} {} - {\printtext{% + {\printtext[#2date]{% \iffieldsequal{#2year}{#2endyear} {\csuse{mkbibdate#1}{}{#2month}{#2day}} {\csuse{mkbibdate#1}{#2year}{#2month}{#2day}}% @@ -492,7 +502,7 @@ canadian,australian,newzealand,USenglish,UKenglish} \protected\gdef\lbx@us@mkbibrangetruncextra@long#1#2{% \iffieldundef{#2year} {} - {\printtext{% + {\printtext[#2date]{% \iffieldsequal{#2year}{#2endyear} {\csuse{mkbibdate#1}{}{#2month}{#2day}} {\csuse{mkbibdate#1}{#2year}{#2month}{#2day}}% @@ -512,7 +522,7 @@ canadian,australian,newzealand,USenglish,UKenglish} \protected\gdef\lbx@us@mkbibrangetruncextra@short#1#2{% \iffieldundef{#2year} {} - {\printtext{% + {\printtext[#2date]{% \iffieldsequal{#2year}{#2endyear} {\csuse{mkbibdate#1}{}{#2month}{#2day}} {\csuse{mkbibdate#1}{#2year}{#2month}{#2day}}% diff --git a/Master/texmf-dist/tex/latex/biblatex/lbx/finnish.lbx b/Master/texmf-dist/tex/latex/biblatex/lbx/finnish.lbx index 5b9c83a4bc7..499bbaf4afc 100644 --- a/Master/texmf-dist/tex/latex/biblatex/lbx/finnish.lbx +++ b/Master/texmf-dist/tex/latex/biblatex/lbx/finnish.lbx @@ -1,7 +1,5 @@ -% $Id: finnish.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{finnish.lbx} -[\abx@lbxid $Id: finnish.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@lbxid] % Translator's notes: % @@ -237,6 +235,7 @@ bycompiler = {{koontanut}{koontanut}}, byredactor = {{toimittanut}{toim\adddot}}, % FIXME: unsure. % byreviser = {{}{}}, % FIXME: missing +% byreviewer = {{}{}}, % FIXME: missing % byfounder = {{}{}}, % FIXME: missing % bycontinuator = {{}{}}, % FIXME: missing % bycollaborator = {{}{}}, % FIXME: missing @@ -321,6 +320,7 @@ andmore = {{et\addabbrvspace al\adddot}{et\addabbrvspace al\adddot}}, volume = {{volyymi}{vol\adddot}}, volumes = {{volyymit}{vol\adddot}}, + involumes = {{tilavuusosaan}{tilavuusosaan}}, % FIXME: unsure. jourvol = {{volyymi}{vol\adddot}}, jourser = {{sarja}{sarja}}, % book = {{}{}}, % FIXME: missing @@ -332,6 +332,15 @@ reprint = {{j\"alkipainos}{j\"alkipainos}}, reprintof = {{julkaistu aiemmin nimell\"a}{julkaistu aiemmin nimell\"a}}, reprintas = {{julkaistu uudelleen nimell\"a}{julkaistu uudelleen nimell\"a}}, +% reprintfrom = {{}{}}, % FIXME: missing +% translationof = {{}{}}, % FIXME: missing +% translationas = {{}{}}, % FIXME: missing +% translationfrom = {{}{}}, % FIXME: missing +% reviewof = {{}{}}, % FIXME: missing +% origpubas = {{}{}}, % FIXME: missing +% origpubin = {{}{}}, % FIXME: missing +% astitle = {{}{}}, % FIXME: missing +% bypublisher = {{}{}}, % FIXME: missing page = {{sivu}{s\adddot}}, pages = {{sivut}{s\adddot}}, column = {{palsta}{palsta}}, % Here "sarake" is wrong! @@ -351,6 +360,7 @@ chapter = {{luku}{luku}}, mathesis = {{tutkielma}{tutkielma}}, % FIXME: unsure. phdthesis = {{tohtorinv\"ait\"oskirja}{tohtorinv\"ait\"oskirja}}, + candthesis = {{kandidat}{kandidat}}, % FIXME: unsure. resreport = {{tutkimusraportti}{tutkimusraportti}}, techreport = {{tekninen raportti}{tekninen raportti}}, software = {{ohjelmisto}{ohjelmisto}}, diff --git a/Master/texmf-dist/tex/latex/biblatex/lbx/french.lbx b/Master/texmf-dist/tex/latex/biblatex/lbx/french.lbx index 2d71cfdc745..903bd0e636d 100644 --- a/Master/texmf-dist/tex/latex/biblatex/lbx/french.lbx +++ b/Master/texmf-dist/tex/latex/biblatex/lbx/french.lbx @@ -1,7 +1,5 @@ -% $Id: french.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{french.lbx} -[\abx@lbxid $Id: french.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@lbxid] % Translations by non-native speaker: this file needs an overhaul! @@ -173,6 +171,7 @@ bycompiler = {{compil\'e par}{comp\adddotspace par}}, byredactor = {{r\'edig\'e par}{r\'ed\adddotspace par}}, % byreviser = {{}{}}, % FIXME: missing + byreviewer = {{examin\'e par}{ex\adddotspace par}}, % byfounder = {{}{}}, % FIXME: missing % bycontinuator = {{}{}}, % FIXME: missing % bycollaborator = {{}{}}, % FIXME: missing @@ -183,7 +182,7 @@ withannotator = {{avec des annotations par}{avec des annot\adddot\ par}}, withintroduction = {{avec une introduction par}{avec une introd\adddot\ par}}, withforeword = {{avec une pr\'eface par}{avec une pr\'ef\adddot\ par}}, - withafterword = {{avec un postface par}{avec un postf\adddot\ par}}, + withafterword = {{avec une postface par}{avec une postf\adddot\ par}}, byeditortr = {{\'edition \'etablie et traduite \lbx@lfromlang\ par}% {\'ed\adddotspace \'etablie et trad\adddot\ \lbx@sfromlang\ par}}, byeditorco = {{\'edition \'etablie et comment\'ee par}% @@ -257,6 +256,7 @@ andmore = {{et\addabbrvspace al\adddot}{et\addabbrvspace al\adddot}}, volume = {{tome}{t\adddot}}, volumes = {{tomes}{t\adddot}}, + involumes = {{en}{en}}, jourvol = {{tome}{t\adddot}}, jourser = {{s\'erie}{s\'er\adddot}}, book = {{livre}{livre}}, @@ -266,8 +266,17 @@ oldseries = {{ancienne s\'erie}{anc\adddot\ s\'er\adddot}}, edition = {{\'edition}{\'ed\adddot}}, reprint = {{r\'eimpression}{r\'eimpr\adddot}}, - reprintof = {{r\'eimpression de}{r\'eimpr\adddot de}}, - reprintas = {{r\'eimpression sous le titre}{r\'eimpr\adddot sous le titre}}, + reprintof = {{r\'eimpression de}{r\'eimpr\adddotspace de}}, + reprintas = {{r\'eimpression sous le titre}{r\'eimpr\adddotspace sous le titre}}, + reprintfrom = {{tir\'e \`a part de}{tir\'e \`a part de}}, + translationof = {{traduction de}{trad\adddotspace de}}, + translationas = {{traduit sous le titre}{trad\adddotspace sous le titre}}, + translationfrom = {{traduit de}{trad\adddotspace de}}, + reviewof = {{critique de}{crit.\adddotspace de}}, + origpubas = {{publi\'e \`a l'origine sous le titre}{pub\adddotspace \`a l'orig\adddotspace sous le titre}}, + origpubin = {{publi\'e \`a l'origine en}{pub\adddotspace \`a l'orig\adddotspace en}}, + astitle = {{sous le titre}{sous le titre}}, + bypublisher = {{par}{par}}, page = {{page}{p\adddot}}, pages = {{pages}{p\adddot}}, column = {{colonne}{col\adddot}}, @@ -287,6 +296,7 @@ chapter = {{chapitre}{chap\adddot}}, mathesis = {{m\'emoire de ma\^{\i}trise}{m\'em\adddot de ma\^{\i}tr\adddot}}, phdthesis = {{th\`ese de doctorat}{th\`ese de doct\adddot}}, +% candthesis = {{}{}}, % FIXME: missing resreport = {{rapport scientifique}{rap\adddot\ scient\adddot}}, techreport = {{rapport technique}{rap\adddot\ tech\adddot}}, software = {{logiciel}{logiciel}}, diff --git a/Master/texmf-dist/tex/latex/biblatex/lbx/german.lbx b/Master/texmf-dist/tex/latex/biblatex/lbx/german.lbx index 5dec0129a62..a6785385041 100644 --- a/Master/texmf-dist/tex/latex/biblatex/lbx/german.lbx +++ b/Master/texmf-dist/tex/latex/biblatex/lbx/german.lbx @@ -1,7 +1,5 @@ -% $Id: german.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{german.lbx} -[\abx@lbxid $Id: german.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@lbxid] \DeclareRedundantLanguages{german}{german,ngerman,austrian,naustrian} @@ -224,6 +222,7 @@ bycompiler = {{kompiliert von}{komp\adddotspace von}}, byredactor = {{bearbeitet von}{bearb\adddotspace von}}, byreviser = {{\"uberarbeitet von}{\"uberarb\adddotspace von}}, +% byreviewer = {{}{}}, % FIXME: missing byfounder = {{begr\"undet von}{begr\adddotspace von}}, bycontinuator = {{fortgef\"urt von}{fortgef\adddotspace von}}, bycollaborator = {{unter Mitarbeit von}{unter Mitarb\adddotspace von}}, @@ -308,6 +307,7 @@ andmore = {{u.\,a\adddot}{u.\,a\adddot}}, volume = {{Band}{Bd\adddot}}, volumes = {{B\"ande}{Bde\adddot}}, + involumes = {{in}{in}}, % FIXME: unsure jourvol = {{Jahrgang}{Jg\adddot}}, jourser = {{Serie}{Ser\adddot}}, book = {{Buch}{Buch}}, @@ -319,6 +319,15 @@ reprint = {{Nachdruck}{Nachdr\adddot}}, reprintof = {{Nachdruck von}{Nachdr\adddotspace von}}, reprintas = {{Nachdruck unter dem Titel}{Nachdr\adddotspace unter dem Titel}}, +% reprintfrom = {{}{}}, % FIXME: missing +% translationof = {{}{}}, % FIXME: missing +% translationas = {{}{}}, % FIXME: missing +% translationfrom = {{}{}}, % FIXME: missing +% reviewof = {{}{}}, % FIXME: missing +% origpubas = {{}{}}, % FIXME: missing +% origpubin = {{}{}}, % FIXME: missing +% astitle = {{}{}}, % FIXME: missing +% bypublisher = {{}{}}, % FIXME: missing page = {{Seite}{S\adddot}}, pages = {{Seiten}{S\adddot}}, column = {{Spalte}{Sp\adddot}}, @@ -338,6 +347,7 @@ chapter = {{Kapitel}{Kap\adddot}}, mathesis = {{Magisterarbeit}{Magisterarb\adddot}}, phdthesis = {{Dissertation}{Diss\adddot}}, +% candthesis = {{}{}}, % FIXME: missing resreport = {{Forschungsbericht}{Forschungsber\adddot}}, techreport = {{Technischer Bericht}{Techn\adddotspace Ber\adddot}}, software = {{Com\-pu\-ter-Soft\-ware}{Soft\-ware}}, diff --git a/Master/texmf-dist/tex/latex/biblatex/lbx/greek.lbx b/Master/texmf-dist/tex/latex/biblatex/lbx/greek.lbx index b2682dfaaf3..6d3164c5fa0 100644 --- a/Master/texmf-dist/tex/latex/biblatex/lbx/greek.lbx +++ b/Master/texmf-dist/tex/latex/biblatex/lbx/greek.lbx @@ -1,7 +1,5 @@ -% $Id: greek.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{greek.lbx} -[\abx@lbxid $Id: greek.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@lbxid] % Translator's notes: % @@ -23,7 +21,7 @@ greek.lbx now.}% \endinput} -\NewBibliographyString{% +\NewBibliographyString{% Used only Greek for month checks datejanuary, datefebruary, datemarch, @@ -255,6 +253,7 @@ bycompiler = {{σύνταξη υπό}{σύνταξη υπό}} byredactor = {{σύνταξη υπό}{σύναταξη υπό}}, % byreviser = {{}{}}, % FIXME: missing +% byreviewer = {{}{}}, % FIXME: missing byfounder = {{αρχική δημιουργία από}{αρχική δημιουργία από}} bycontinuator = {{συνέχεια από}{συνέχεια από}} bycollaborator = {{συνεργασία από}{συνεργασία από}} @@ -305,6 +304,7 @@ andmore = {{κ.ά\adddot}{κ.ά\adddot}}, volume = {{τόμος}{τόμ\adddot}}, volumes = {{τόμοι}{τόμοι}}, + involumes = {{σε}{σε}}, % FIXME: check jourvol = {{τόμος}{τόμ\adddot}}, jourser = {{σειρά}{σειρά}}, % book = {{}{}}, % FIXME: missing @@ -316,6 +316,15 @@ reprint = {{ανατύπωση}{ανατύπωση}}, reprintof = {{ανατύπωση του}{ανατύπωση του}}, reprintas = {{ανατύπωση ως}{ανατύπωση ως}}, +% reprintfrom = {{}{}}, % FIXME: missing +% translationof = {{}{}}, % FIXME: missing +% translationas = {{}{}}, % FIXME: missing +% translationfrom = {{}{}}, % FIXME: missing +% reviewof = {{}{}}, % FIXME: missing +% origpubas = {{}{}}, % FIXME: missing +% origpubin = {{}{}}, % FIXME: missing +% astitle = {{}{}}, % FIXME: missing + bypublisher = {{υπό}{υπό}}, % FIXME: check page = {{σελίδα}{σ\adddot}}, pages = {{σελίδες}{σσ\adddot}}, column = {{στήλη}{στ\adddot}}, @@ -337,6 +346,7 @@ {Μεταπτ/κή διπλ\adddot\ εργασ\adddot}}, phdthesis = {{Διδακτορική διατριβή} {Διδακτορική διατρ\adddot}}, +% candthesis = {{}{}}, % FIXME: missing resreport = {{αδημοσίευτη ερευνητική εργασία} {αδημοσίευτη ερευνητική εργασία}}, techreport = {{αδημοσίευτη ερευνητική εργασία} diff --git a/Master/texmf-dist/tex/latex/biblatex/lbx/icelandic.lbx b/Master/texmf-dist/tex/latex/biblatex/lbx/icelandic.lbx new file mode 100644 index 00000000000..8209165695e --- /dev/null +++ b/Master/texmf-dist/tex/latex/biblatex/lbx/icelandic.lbx @@ -0,0 +1,403 @@ +% icelandic.lbx, originally based on danish.lbx. +% Baldur Kristinsson, June 2012. + +% STATUS OF THIS FILE +% - Translated by a native speaker (Baldur Kristinsson). +% - Many bibstrings remain untranslated. +% - Needs fine tuning, since grammatical peculiarities of Icelandic +% make straight translations difficult. +% - Last worked on: 2012-06-15 + +\ProvidesFile{icelandic.lbx} + +\DeclareRedundantLanguages{icelandic}{icelandic} + +% The beginning of this is the same as for Danish, since conventions are similar +\DeclareBibliographyExtras{% + \protected\def\bibrangedash{% + \textendash\penalty\hyphenpenalty}% breakable dash + \protected\def\bibdatedash{\bibrangedash}% + \let\finalandcomma=\empty + \protected\def\mkbibordinal#1{\stripzeros{#1}\adddot}% + \protected\def\mkbibmascord{\mkbibordinal}% + \protected\def\mkbibfemord{\mkbibordinal}% + \protected\def\mkbibneutord{\mkbibordinal}% + \protected\def\mkbibdatelong#1#2#3{% + \iffieldundef{#3} + {} + {\mkbibordinal{\thefield{#3}}% + \iffieldundef{#2}{}{\nobreakspace}}% + \iffieldundef{#2} + {} + {\mkbibmonth{\thefield{#2}}% + \iffieldundef{#1}{}{\space}}% + \stripzeros{\thefield{#1}}}% + \protected\def\mkbibdateshort#1#2#3{% + \iffieldundef{#3} + {} + {\mkdatezeros{\thefield{#3}}\adddot}% + \iffieldundef{#2} + {} + {\mkdatezeros{\thefield{#2}}% + \iffieldundef{#1}{}{\adddot}}% + \mkdatezeros{\thefield{#1}}}% + % Later, it would be more elegant to reverse the order of the name and the localized + % bibstrings, in order to avoid problems with regard to declension. This has to be done + % in a coordinated manner, however, and a lot of macros would have to be redefined + % at the same time. The below, inactive code shows the general idea. + % + % \savebibmacro{bytranslator}% + %\renewbibmacro{bytranslator}{% + % \ifnameundef{translator} + % {} + % {\printnames[bytranslator]{translator}% + % \setunit{\addspace}% + % \bibstring{bytranslator}% + % }}% +} + +%\UndeclareBibliographyExtras{% +% \restorebibmacro{bytranslator} +%} + +\DeclareBibliographyStrings{% + bibliography = {{Heimildaskr\'a}{Heimildaskr\'a}}, + references = {{Heimildir}{Heimildir}}, + shorthands = {{Listi yfir skammstafanir}{Skammstafanir}}, + editor = {{ristj\adddot}{ritstj\adddot}}, + editors = {{ritstj\adddot}{ritstj\adddot}}, + compiler = {{samantekt}{samantekt}}, + compilers = {{samantekt}{samantekt}}, +% FIXME: redactor and editor are the same string; +% is that acceptable? + redactor = {{ritstj\adddot}{ritstj\adddot}}, + redactors = {{ritstj\adddot}{ritstj\adddot}}, + reviser = {{endursk\adddot}{endursk\adddot}}, + revisers = {{endursk\adddot}{endursk\adddot}}, +% founder = {{}{}}, % FIXME: missing +% founders = {{}{}}, % FIXME: missing +% continuator = {{}{}}, % FIXME: missing +% continuators = {{}{}}, % FIXME: missing +% collaborator = {{}{}}, % FIXME: missing +% collaborators = {{}{}}, % FIXME: missing +% +% FIXME: A great deal of conflation here, as well as simplifications in order +% to avoid problems associated with declension: + translator = {{\'y\adddot}{\'y\adddot}}, + translators = {{\'y\adddot}{\'y\adddot}}, + commentator = {{sk\'yringar:}{sk\'yr\adddot}}, + commentators = {{sk\'yringar:}{sk\'yr\adddot}}, + annotator = {{t\'ulkun:}{t\'ulk\adddot}}, + annotators = {{t\'ulkun:}{t\'ulk\adddot}}, + commentary = {{sk\'yringar:}{sk\'yr\adddot}}, + annotations = {{sk\'yringar:}{sk\'yr\adddot}}, + introduction = {{inngangur}{inng\adddot}}, + foreword = {{form\'ali:}{form\'ali:}}, + afterword = {{eftirm\'ali:}{eftirm\'ali:}}, +% editortr = {{}{}}, % FIXME: missing +% editorstr = {{}{}}, % FIXME: missing +% editorco = {{}{}}, % FIXME: missing +% editorsco = {{}{}}, % FIXME: missing +% editoran = {{}{}}, % FIXME: missing +% editorsan = {{}{}}, % FIXME: missing +% editorin = {{}{}}, % FIXME: missing +% editorsin = {{}{}}, % FIXME: missing +% editorfo = {{}{}}, % FIXME: missing +% editorsfo = {{}{}}, % FIXME: missing +% editoraf = {{}{}}, % FIXME: missing +% editorsaf = {{}{}}, % FIXME: missing +% editortrco = {{}{}}, % FIXME: missing +% editorstrco = {{}{}}, % FIXME: missing +% editortran = {{}{}}, % FIXME: missing +% editorstran = {{}{}}, % FIXME: missing +% editortrin = {{}{}}, % FIXME: missing +% editorstrin = {{}{}}, % FIXME: missing +% editortrfo = {{}{}}, % FIXME: missing +% editorstrfo = {{}{}}, % FIXME: missing +% editortraf = {{}{}}, % FIXME: missing +% editorstraf = {{}{}}, % FIXME: missing +% editorcoin = {{}{}}, % FIXME: missing +% editorscoin = {{}{}}, % FIXME: missing +% editorcofo = {{}{}}, % FIXME: missing +% editorscofo = {{}{}}, % FIXME: missing +% editorcoaf = {{}{}}, % FIXME: missing +% editorscoaf = {{}{}}, % FIXME: missing +% editoranin = {{}{}}, % FIXME: missing +% editorsanin = {{}{}}, % FIXME: missing +% editoranfo = {{}{}}, % FIXME: missing +% editorsanfo = {{}{}}, % FIXME: missing +% editoranaf = {{}{}}, % FIXME: missing +% editorsanaf = {{}{}}, % FIXME: missing +% editortrcoin = {{}{}}, % FIXME: missing +% editorstrcoin = {{}{}}, % FIXME: missing +% editortrcofo = {{}{}}, % FIXME: missing +% editorstrcofo = {{}{}}, % FIXME: missing +% editortrcoaf = {{}{}}, % FIXME: missing +% editorstrcoaf = {{}{}}, % FIXME: missing +% editortranin = {{}{}}, % FIXME: missing +% editorstranin = {{}{}}, % FIXME: missing +% editortranfo = {{}{}}, % FIXME: missing +% editorstranfo = {{}{}}, % FIXME: missing +% editortranaf = {{}{}}, % FIXME: missing +% editorstranaf = {{}{}}, % FIXME: missing +% translatorco = {{}{}}, % FIXME: missing +% translatorsco = {{}{}}, % FIXME: missing +% translatoran = {{}{}}, % FIXME: missing +% translatorsan = {{}{}}, % FIXME: missing +% translatorin = {{}{}}, % FIXME: missing +% translatorsin = {{}{}}, % FIXME: missing +% translatorfo = {{}{}}, % FIXME: missing +% translatorsfo = {{}{}}, % FIXME: missing +% translatoraf = {{}{}}, % FIXME: missing +% translatorsaf = {{}{}}, % FIXME: missing +% translatorcoin = {{}{}}, % FIXME: missing +% translatorscoin = {{}{}}, % FIXME: missing +% translatorcofo = {{}{}}, % FIXME: missing +% translatorscofo = {{}{}}, % FIXME: missing +% translatorcoaf = {{}{}}, % FIXME: missing +% translatorscoaf = {{}{}}, % FIXME: missing +% translatoranin = {{}{}}, % FIXME: missing +% translatorsanin = {{}{}}, % FIXME: missing +% translatoranfo = {{}{}}, % FIXME: missing +% translatorsanfo = {{}{}}, % FIXME: missing +% translatoranaf = {{}{}}, % FIXME: missing +% translatorsanaf = {{}{}}, % FIXME: missing + byauthor = {{h\"of.:}{h\"of.:}}, + byeditor = {{gefi \'ut af}{gefi \'ut af}}, + bycompiler = {{teki saman af}{teki saman af}}, + byredactor = {{endurskoa af}{endurskoa af}}, +% byreviser = {{}{}}, % FIXME: missing +% byreviewer = {{}{}}, % FIXME: missing +% byfounder = {{}{}}, % FIXME: missing +% bycontinuator = {{}{}}, % FIXME: missing +% bycollaborator = {{}{}}, % FIXME: missing +% +% FIXME: For most of the keys below, the better way would be to postpend +% rather than prepend the localized bibstrings. That would however require a +% redefinition of many macros. Later, perhaps... + bytranslator = {{\'y\adddot \lbx@lfromlang}{\'y\adddot \lbx@sfromlang}}, + bycommentator = {{sk\'yringar:}{sk\'yringar:}}, + byannotator = {{sk\'yringar:}{sk\'yringar:}}, + withcommentator = {{sk\'yringar:}{sk\'yringar:}}, + withannotator = {{sk\'yringar:}{sk\'yringar:}}, + withintroduction = {{inng\adddot}{inng\adddot}}, + withforeword = {{form\'ali:}{form\'ali:}}, + withafterword = {{eftirm\'ali:}{eftirm\'ali:}}, + byeditortr = {{\'utg.~og \'y\adddot \lbx@lfromlang}% + {\'utg.~og \'y\adddot}}, + byeditorco = {{\'utg.~og sk\'yringar:}% + {\'utg.~og sk\'yringar:}}, + byeditoran = {{\'utg.~og sk\'yringar:}% + {\'utg. og sk\'yringar:}}, + byeditorin = {{\'utg. og inng\adddot:}% + {\'utg. og inng\adddot:}}, + byeditorfo = {{\'utg. og form\'ali:}% + {\'utg. og form\'ali:}}, + byeditoraf = {{\'utg. og eftirm\'ali:}% + {\'utg. og eftirm\'ali:}}, + byeditortrco = {{\'utg., \'y\adddot \lbx@sfromlang\ og sk\'yringar:}% + {\'utg., \'y\adddot \lbx@sfromlang\ og sk\'yringar:}}, + byeditortran = {{\'utg., \'y\adddot \lbx@sfromlang\ og sk\'yringar:}% + {\'utg., \'y\adddot \lbx@sfromlang\ og sk\'yringar:}}, + byeditortrin = {{\'utg., \'y\adddot \lbx@sfromlang\ og inng\adddot:}% + {\'utg., \'y\adddot \lbx@sfromlang\ og inng\adddot:}}, + byeditortrfo = {{\'utg., \'y\adddot \lbx@sfromlang\ og form\'ali:}% + {\'utg., \'y\adddot \lbx@sfromlang\ og form\'ali:}}, + byeditortraf = {{\'utg., \'y\adddot \lbx@sfromlang\ og eftirm\'ali:}% + {\'utg., \'y\adddot \lbx@sfromlang\ og eftirm\'ali:}}, + byeditorcoin = {{\'utg., sk\'yringar og inng\adddot:}% + {\'utg., sk\'yringar og inng\adddot:}}, + byeditorcofo = {{\'utg., sk\'yringar og form\'ali:}% + {\'utg., sk\'yringar og form\'ali:}}, + byeditorcoaf = {{\'utg., sk\'yringar og eftirm\'ali:}% + {\'utg., sk\'yringar og eftirm\'ali:}}, + byeditoranin = {{\'utg., sk\'yringar og inng\adddot:}% + {\'utg., sk\'yringar og inng\adddot:}}, + byeditoranfo = {{\'utg., sk\'yringar og form\'ali:}% + {\'utg., sk\'yringar og form\'ali:}}, + byeditoranaf = {{\'utg., sk\'yringar og eftirm\'ali:}% + {\'utg., sk\'yringar og eftirm\'ali:}}, + byeditortrcoin = {{\'utg., \'y\adddot \lbx@sfromlang\ og sk\'yringar og inng\adddot:}% + {\'utg., \'y\adddot \lbx@sfromlang\ og sk\'yringar og inng\adddot:}}, + byeditortrcofo = {{\'utg., \'y\adddot \lbx@sfromlang\ og sk\'yringar og form\'ali:}% + {\'utg., \'y\adddot \lbx@sfromlang\ og sk\'yringar og form\'ali:}}, + byeditortrcoaf = {{\'utg., \'y\adddot \lbx@sfromlang\ og sk\'yringar og eftirm\'ali:}% + {\'utg., \'y\adddot \lbx@sfromlang\ og sk\'yringar og eftirm\'ali:}}, + byeditortranin = {{\'utg., \'y\adddot \lbx@sfromlang\ og sk\'yringar og inng\adddot:}% + {\'utg., \'y\adddot \lbx@sfromlang\ og sk\'yringar og inng\adddot:}}, + byeditortranfo = {{\'utg., \'y\adddot \lbx@sfromlang\ og sk\'yringar og form\'ali:}% + {\'utg., \'y\adddot \lbx@sfromlang\ og sk\'yringar og form\'ali:}}, + byeditortranaf = {{\'utg., \'y\adddot \lbx@sfromlang\ og sk\'yringar og eftirm\'ali:}% + {\'utg., \'y\adddot \lbx@sfromlang\ og sk\'yringar og eftirm\'ali:}}, + bytranslatorco = {{\'y\adddot \lbx@lfromlang\ og sk\'yringar:}% + {\'y\adddot \lbx@lfromlang\ og sk\'yringar:}}, + bytranslatoran = {{\'y\adddot \lbx@lfromlang\ og sk\'yringar:}% + {\'y\adddot \lbx@lfromlang\ og sk\'yringar:}}, + bytranslatorin = {{\'y\adddot \lbx@lfromlang\ og inng\adddot:}% + {\'y\adddot \lbx@lfromlang\ og inng\adddot:}}, + bytranslatorfo = {{\'y\adddot \lbx@lfromlang\ og form\'ali:}% + {\'y\adddot \lbx@lfromlang\ og form\'ali:}}, + bytranslatoraf = {{\'y\adddot \lbx@lfromlang\ og eftirm\'ali:}% + {\'y\adddot \lbx@lfromlang\ og eftirm\'ali:}}, + bytranslatorcoin = {{\'y\adddot \lbx@lfromlang, sk\'yringar og inng\adddot:}% + {\'y\adddot \lbx@lfromlang, sk\'yringar og inng\adddot:}}, + bytranslatorcofo = {{\'y\adddot \lbx@lfromlang, sk\'yringar og form\'ali:}% + {\'y\adddot \lbx@lfromlang, sk\'yringar og form\'ali:}}, + bytranslatorcoaf = {{\'y\adddot \lbx@lfromlang, sk\'yringar og eftirm\'ali:}% + {\'y\adddot \lbx@lfromlang, sk\'yringar og eftirm\'ali:}}, + bytranslatoranin = {{\'y\adddot \lbx@lfromlang, sk\'yringar og inng\adddot:}% + {\'y\adddot \lbx@lfromlang, sk\'yringar og inng\adddot:}}, + bytranslatoranfo = {{\'y\adddot \lbx@lfromlang, sk\'yringar og form\'ali:}% + {\'y\adddot \lbx@lfromlang, sk\'yringar og form\'ali:}}, + bytranslatoranaf = {{\'y\adddot \lbx@lfromlang, sk\'yringar og eftirm\'ali:}% + {\'y\adddot \lbx@lfromlang, sk\'yringar og eftirm\'ali:}}, + and = {{og}{og}}, + andothers = {{o\adddot fl\adddot}{o\adddot fl\adddot}}, + andmore = {{o\adddot fl\adddot}{o\adddot fl\adddot}}, + volume = {{bindi}{bindi}}, + volumes = {{bindi}{bindi}}, +% involumes = {{}{}}, % FIXME: missing + jourvol = {{\'argangur}{\'arg\adddot}}, + jourser = {{r\"o}{r\"o}}, + book = {{b\'ok}{b\'ok}}, + part = {{hluti}{hluti}}, + issue = {{hefti}{hefti}}, + newseries = {{n\'y ritr\"o}{n\'y ritr\"o}}, + oldseries = {{g\"omul ritr\"o}{g\"omul ritr\"o}}, + edition = {{\'utg\'afa}{\'utg\adddot}}, + reprint = {{endurprentun}{endurprentun}}, + reprintof = {{endurprentun \'a}{endurprentun \'a}}, + reprintas = {{endurprenta sem}{endurprenta sem}}, +% reprintfrom = {{}{}}, % FIXME: missing +% translationof = {{}{}}, % FIXME: missing +% translationas = {{}{}}, % FIXME: missing +% translationfrom = {{}{}}, % FIXME: missing +% reviewof = {{}{}}, % FIXME: missing +% origpubas = {{}{}}, % FIXME: missing +% origpubin = {{}{}}, % FIXME: missing +% astitle = {{}{}}, % FIXME: missing + page = {{bls\adddot}{bls\adddot}}, + pages = {{bls\adddot}{bls\adddot}}, + column = {{d\'alkur}{dlk\adddot}}, + columns = {{d\'alkar}{dlk\adddot}}, + line = {{l\'{\i}na}{l\adddot}}, + lines = {{l\'{\i}nur}{l\adddot}}, + verse = {{erindi}{er\adddot}}, + verses = {{erindi}{er\adddot}}, + section = {{grein}{\S}}, + sections = {{grein}{\S\S}}, + paragraph = {{m\'alsgrein}{mgr\adddot}}, + paragraphs = {{m\'alsgreinar}{mgr\adddot}}, + in = {{\'{\i}}{\'{\i}}}, + inseries = {{ritr\"oin}{ritr\"oin}}, + ofseries = {{\'ur ritr\"oinni}{\'ur ritr\"oinni}}, + number = {{n\'umer}{nr\adddot}}, + chapter = {{kafli}{k\adddot}}, + mathesis = {{meistarapr\'ofsritger}{meistararitg\adddot}}, + phdthesis = {{doktorsritger}{doktorsritg\adddot}}, +% candthesis = {{}{}}, % FIXME: missing + resreport = {{ranns\'oknarsk\'yrsla}{ranns\'oknarsk\'yrsla}}, + techreport = {{t\ae{}knileg sk\'yrsla}{t\ae{}knileg sk\'yrsla}}, + software = {{hugb\'unaur}{hugb\'unaur}}, + datacd = {{gagnadiskur}{gagnadiskur}}, + audiocd = {{hlj\'odiskur}{hlj\'odiskur}}, + version = {{\'utg\'afa}{\'utg\adddot}}, + url = {{vefsl\'o}{vefsl\'o}}, + urlseen = {{skoa}{skoa}}, + inpreparation = {{\'{\i} vinnslu}{\'{\i} vinnslu}}, + submitted = {{afhent til birtingar}{afhent til birtingar}}, + forthcoming = {{mun birtast}{mun birtast}}, + inpress = {{\'{\i} prentun}{\'{\i} prentun}}, + citedas = {{h\'er eftir skammstafa}{h\'er eftir skst\adddot}}, + seenote = {{sj\'a athugasemd}{sj\'a aths\adddot}}, + quotedin = {{tilvitnun samkv\ae{}mt}{tilvitnun skv\adddot}}, + idem = {{sama heimild}{s\adddot h\adddot}}, + idemsf = {{sama heimild}{s\adddot h\adddot}}, + idemsm = {{sama heimild}{s\adddot h\adddot}}, + idemsn = {{sama heimild}{s\adddot h\adddot}}, + idempf = {{sama heimild}{s\adddot h\adddot}}, + idempm = {{sama heimild}{s\adddot h\adddot}}, + idempn = {{sama heimild}{s\adddot h\adddot}}, + idempp = {{sama heimild}{s\adddot h\adddot}}, + ibidem = {{sama heimild}{s\adddot h\adddot}}, + opcit = {{sama rit}{sama rit}}, + loccit = {{sami staur}{s\adddot st\adddot}}, + confer = {{sbr\adddot}{sbr\adddot}}, + sequens = {{o\adddot \'afr\adddot}{o\adddot \'afr\adddot}}, + sequentes = {{o\adddot \'afr\adddot}{o\adddot \'afr\adddot}}, + passim = {{v\'{\i}a}{v\'{\i}a}}, + see = {{sj\'a}{sj\'a}}, + seealso = {{sj\'a einnig}{sj\'a einnig}}, + backrefpage = {{sj\'a blas\'{\i}u}{sj\'a bls\adddot}}, + backrefpages = {{sj\'a blas\'{\i}ur}{sj\'a bls\adddot}}, + january = {{jan\'uar}{jan\adddot}}, + february = {{febr\'uar}{feb\adddot}}, + march = {{mars}{mar\adddot}}, + april = {{apr\'{\i}l}{apr\adddot}}, + may = {{ma\'{\i}}{ma\'{\i}}}, + june = {{j\'un\'{\i}}{j\'un\adddot}}, + july = {{j\'ul\'{\i}}{j\'ul\adddot}}, + august = {{\'ag\'ust}{\'ag\'u\adddot}}, + september = {{september}{sep\adddot}}, + october = {{okt\'ober}{okt\adddot}}, + november = {{n\'ovember}{n\'ov\adddot}}, + december = {{desember}{des\adddot}}, + langamerican = {{bandar\'{\i}ska}{bandar\'{\i}ska}}, +% langbrazilian = {{}{}}, % FIXME: missing +% langcroatian = {{}{}}, % FIXME: missing +% langdanish = {{}{}}, % FIXME: missing +% langdutch = {{}{}}, % FIXME: missing + langenglish = {{enska}{enska}}, +% langfinnish = {{}{}}, % FIXME: missing + langfrench = {{franska}{franska}}, + langgerman = {{\'yska}{\'yska}}, + langgreek = {{gr\'{\i}ska}{gr\'{\i}ska}}, + langitalian = {{\'{\i}talska}{\'{\i}talska}}, + langlatin = {{lat\'{\i}na}{lat\'{\i}na}}, + langnorwegian = {{norska}{norska}}, +% langportuguese = {{}{}}, % FIXME: missing +% langrussian = {{}{}}, % FIXME: missing + langspanish = {{sp\ae{}nska}{sp\ae{}nska}}, +% langswedish = {{}{}}, % FIXME: missing + fromamerican = {{\'ur bandar\'{\i}sku}{\'ur bandar\'{\i}sku}}, +% frombrazilian = {{}{}}, % FIXME: missing +% fromcroatian = {{}{}}, % FIXME: missing +% fromdanish = {{}{}}, % FIXME: missing +% fromdutch = {{}{}}, % FIXME: missing + fromenglish = {{\'ur ensku}{\'ur ensku}}, +% fromfinnish = {{}{}}, % FIXME: missing + fromfrench = {{\'ur fr\"onsku}{\'ur fr\"onsku}}, + fromgerman = {{\'ur \'ysku}{\'ur \'ysku}}, + fromgreek = {{\'ur gr\'{\i}sku}{\'ur gr\'{\i}sku}}, + fromitalian = {{\'ur \'{\i}t\"olsku}{\'ur \'{\i}t\"olsku}}, + fromlatin = {{\'ur lat\'{\i}nu}{\'ur lat\'{\i}nu}}, + fromnorwegian = {{\'ur norsku}{\'ur norsku}}, +% fromportuguese = {{}{}}, % FIXME: missing +% fromrussian = {{}{}}, % FIXME: missing + fromspanish = {{\'ur sp\ae{}nsku}{\'ur sp\ae{}nsku}}, +% fromswedish = {{}{}}, % FIXME: missing + countryde = {{\'yskaland}{DE}}, + countryeu = {{Evr\'opusambandi}{EU}}, + countryep = {{Evr\'opusambandi}{EP}}, + countryfr = {{Frakkland}{FR}}, + countryuk = {{Bretland}{GB}}, + countryus = {{Bandar\'{\i}kin}{US}}, + patent = {{einkaleyfi}{einkaleyfi}}, + patentde = {{\'yskt einkaleyfi}{\'yskt einkaleyfi}}, + patenteu = {{evr\'opskt einkaleyfi}{evr\'opskt einkaleyfi}}, + patentfr = {{franskt einkaleyfi}{franskt einkaleyfi}}, + patentuk = {{breskt einkaleyfi}{breskt einkaleyfi}}, + patentus = {{bandar\'{\i}skt einkaleyfi}{bandar\'{\i}skt einkaleyfi}}, + patreq = {{ums\'okn um einkaleyfi}{ums\'okn um einkaleyfi}}, + patreqde = {{ums\'okn um \'yskt einkaleyfi}{ums\'okn um \'yskt einkaleyfi}}, + patreqeu = {{ums\'okn um evr\'opskt einkaleyfi}{ums\'okn um evr\'opskt einkaleyfi}}, + patreqfr = {{ums\'okn um franskt einkaleyfi}{ums\'okn um franskt einkaleyfi}}, + patrequk = {{ums\'okn um breskt einkaleyfi}{ums\'okn um breskt einkaleyfi}}, + patrequs = {{ums\'okn um bandar\'{\i}skt einkaleyfi}{ums\'okn um bandar\'{\i}skt einkaleyfi}}, + file = {{skr\'a}{skr\'a}}, + library = {{safn}{safn}}, + abstract = {{\'utdr\'attur}{\'utdr\'attur}}, + annotation = {{athugagrein}{athugagrein}}, +} + +\endinput diff --git a/Master/texmf-dist/tex/latex/biblatex/lbx/italian.lbx b/Master/texmf-dist/tex/latex/biblatex/lbx/italian.lbx index 8c293199215..048c1fcf099 100644 --- a/Master/texmf-dist/tex/latex/biblatex/lbx/italian.lbx +++ b/Master/texmf-dist/tex/latex/biblatex/lbx/italian.lbx @@ -1,7 +1,5 @@ -% $Id: italian.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{italian.lbx} -[\abx@lbxid $Id: italian.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@lbxid] % Changes: % 2010-11-10 Update by Andrea Marchitelli @@ -152,6 +150,7 @@ bycompiler = {{compilato da}{comp\adddotspace da}}, byredactor = {{redatto da}{red\adddotspace da}}, % byreviser = {{}{}}, % FIXME: missing +% byreviewer = {{}{}}, % FIXME: missing % byfounder = {{}{}}, % FIXME: missing % bycontinuator = {{}{}}, % FIXME: missing % bycollaborator = {{}{}}, % FIXME: missing @@ -236,6 +235,7 @@ andmore = {{et\addabbrvspace al\adddot}{et\addabbrvspace al\adddot}}, volume = {{volume}{vol\adddot}}, volumes = {{volumi}{voll\adddot}}, + involumes = {{in}{in}}, % FIXME: unsure jourvol = {{volume}{vol\adddot}}, jourser = {{serie}{ser\adddot}}, % book = {{}{}}, % FIXME: missing @@ -247,6 +247,15 @@ reprint = {{ristampa}{rist\adddotspace}}, reprintof = {{ristampa di}{rist\adddotspace di}}, % reprintas = {{}{}}, % FIXME: missing +% reprintfrom = {{}{}}, % FIXME: missing +% translationof = {{}{}}, % FIXME: missing +% translationas = {{}{}}, % FIXME: missing +% translationfrom = {{}{}}, % FIXME: missing +% reviewof = {{}{}}, % FIXME: missing +% origpubas = {{}{}}, % FIXME: missing +% origpubin = {{}{}}, % FIXME: missing +% astitle = {{}{}}, % FIXME: missing +% bypublisher = {{}{}}, % FIXME: missing page = {{pagina}{p\adddot}}, pages = {{pagine}{pp\adddot}}, column = {{colonna}{col\adddot}}, @@ -266,6 +275,7 @@ chapter = {{capitolo}{cap\adddot}}, mathesis = {{tesi di laurea magistrale}{tesi di laurea mag\adddot}}, phdthesis = {{tesi di dottorato}{tesi di dott\adddot}}, +% candthesis = {{}{}}, % FIXME: missing resreport = {{rapporto di ricerca}{rapporto di ricerca}}, techreport = {{rapporto tecnico}{rapp\adddotspace tecn\adddot}}, % software = {{}{}}, % FIXME: missing diff --git a/Master/texmf-dist/tex/latex/biblatex/lbx/naustrian.lbx b/Master/texmf-dist/tex/latex/biblatex/lbx/naustrian.lbx index 11710a37497..fbf1a7f542e 100644 --- a/Master/texmf-dist/tex/latex/biblatex/lbx/naustrian.lbx +++ b/Master/texmf-dist/tex/latex/biblatex/lbx/naustrian.lbx @@ -1,7 +1,5 @@ -% $Id: naustrian.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{naustrian.lbx} -[\abx@lbxid $Id: naustrian.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@lbxid] \InheritBibliographyExtras{german} diff --git a/Master/texmf-dist/tex/latex/biblatex/lbx/newzealand.lbx b/Master/texmf-dist/tex/latex/biblatex/lbx/newzealand.lbx index c07f950c106..31aefee0c3e 100644 --- a/Master/texmf-dist/tex/latex/biblatex/lbx/newzealand.lbx +++ b/Master/texmf-dist/tex/latex/biblatex/lbx/newzealand.lbx @@ -1,7 +1,5 @@ -% $Id: newzealand.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{newzealand.lbx} -[\abx@lbxid $Id: newzealand.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@lbxid] \InheritBibliographyExtras{british} \DeclareBibliographyExtras{% diff --git a/Master/texmf-dist/tex/latex/biblatex/lbx/ngerman.lbx b/Master/texmf-dist/tex/latex/biblatex/lbx/ngerman.lbx index 9c13c6b1e0f..459b92acb67 100644 --- a/Master/texmf-dist/tex/latex/biblatex/lbx/ngerman.lbx +++ b/Master/texmf-dist/tex/latex/biblatex/lbx/ngerman.lbx @@ -1,7 +1,5 @@ -% $Id: ngerman.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{ngerman.lbx} -[\abx@lbxid $Id: ngerman.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@lbxid] \InheritBibliographyExtras{german} diff --git a/Master/texmf-dist/tex/latex/biblatex/lbx/norsk.lbx b/Master/texmf-dist/tex/latex/biblatex/lbx/norsk.lbx index e1da25c5388..adfadba47f9 100644 --- a/Master/texmf-dist/tex/latex/biblatex/lbx/norsk.lbx +++ b/Master/texmf-dist/tex/latex/biblatex/lbx/norsk.lbx @@ -1,7 +1,5 @@ -% $Id: norsk.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{norsk.lbx} -[\abx@lbxid $Id: norsk.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@lbxid] % Status: % - 'norsk' and 'nynorsk' use the same translations, correct? diff --git a/Master/texmf-dist/tex/latex/biblatex/lbx/norwegian.lbx b/Master/texmf-dist/tex/latex/biblatex/lbx/norwegian.lbx index 0e9f8b44ed3..a313bc49401 100644 --- a/Master/texmf-dist/tex/latex/biblatex/lbx/norwegian.lbx +++ b/Master/texmf-dist/tex/latex/biblatex/lbx/norwegian.lbx @@ -1,7 +1,5 @@ -% $Id: norwegian.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{norwegian.lbx} -[\abx@lbxid $Id: norwegian.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@lbxid] \DeclareRedundantLanguages{norwegian}{norsk,nynorsk} @@ -137,6 +135,7 @@ bycompiler = {{sammenstillet av}{sammenst\adddotspace av}}, byredactor = {{bearbeidet av}{bearb\adddotspace av}}, % byreviser = {{}{}}, % FIXME: missing +% byreviewer = {{}{}}, % FIXME: missing % byfounder = {{}{}}, % FIXME: missing % bycontinuator = {{}{}}, % FIXME: missing % bycollaborator = {{}{}}, % FIXME: missing @@ -221,6 +220,7 @@ andmore = {{og mer}{og mer}}, volume = {{bind}{bd\adddot}}, volumes = {{bind}{bd\adddot}}, + involumes = {{i}{i}}, % FIXME: unsure jourvol = {{\aa rgang}{\aa g\adddot}}, jourser = {{serie}{ser\adddot}}, % book = {{}{}}, % FIXME: missing @@ -232,6 +232,15 @@ reprint = {{gjenopptrykk}{gjenopptrykk}}, reprintof = {{gjenopptrykk av}{gjenopptrykk av}}, reprintas = {{gjenopptrykk som}{gjenopptrykk som}}, +% reprintfrom = {{}{}}, % FIXME: missing +% translationof = {{}{}}, % FIXME: missing +% translationas = {{}{}}, % FIXME: missing +% translationfrom = {{}{}}, % FIXME: missing +% reviewof = {{}{}}, % FIXME: missing +% origpubas = {{opprinnelig publisert som}{oppr\adddot\ pub\adddot\ som}}, % FIXME: check + origpubin = {{opprinnelig utgitt i}{oppr\adddot\ utgitt i}}, % FIXME: check +% astitle = {{}{}}, % FIXME: missing +% bypublisher = {{}{}}, % FIXME: missing page = {{side}{s\adddot}}, pages = {{sider}{s\adddot}}, column = {{spalte}{sp\adddot}}, @@ -251,6 +260,7 @@ chapter = {{kapittel}{kap\adddot}}, mathesis = {{masteroppgave}{masteropp\adddot}}, phdthesis = {{PhD avhandling}{PhD avh\adddot}}, + candthesis = {{cand\adddot\ avhandling}{cand\adddot\ avh\adddot}}, % FIXME: unsure resreport = {{forskningsrapport}{forskningsrapport}}, techreport = {{teknisk rapport}{tek\adddot\ rap\adddot}}, software = {{programvare}{programvare}}, diff --git a/Master/texmf-dist/tex/latex/biblatex/lbx/nynorsk.lbx b/Master/texmf-dist/tex/latex/biblatex/lbx/nynorsk.lbx index d24ae383604..40535b9fde4 100644 --- a/Master/texmf-dist/tex/latex/biblatex/lbx/nynorsk.lbx +++ b/Master/texmf-dist/tex/latex/biblatex/lbx/nynorsk.lbx @@ -1,7 +1,5 @@ -% $Id: nynorsk.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{nynorsk.lbx} -[\abx@lbxid $Id: nynorsk.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@lbxid] % Status: % - 'norsk' and 'nynorsk' use the same translations, correct? diff --git a/Master/texmf-dist/tex/latex/biblatex/lbx/portuges.lbx b/Master/texmf-dist/tex/latex/biblatex/lbx/portuges.lbx index d0cb720965e..8e19b107015 100644 --- a/Master/texmf-dist/tex/latex/biblatex/lbx/portuges.lbx +++ b/Master/texmf-dist/tex/latex/biblatex/lbx/portuges.lbx @@ -1,7 +1,5 @@ -% $Id: portuges.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{portuges.lbx} -[\abx@lbxid $Id: portuges.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@lbxid] \InheritBibliographyExtras{portuguese} \InheritBibliographyStrings{portuguese} diff --git a/Master/texmf-dist/tex/latex/biblatex/lbx/portuguese.lbx b/Master/texmf-dist/tex/latex/biblatex/lbx/portuguese.lbx index e0a9ad8a872..b67cd53037f 100644 --- a/Master/texmf-dist/tex/latex/biblatex/lbx/portuguese.lbx +++ b/Master/texmf-dist/tex/latex/biblatex/lbx/portuguese.lbx @@ -1,7 +1,5 @@ -% $Id: portuguese.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{portuguese.lbx} -[\abx@lbxid $Id: portuguese.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@lbxid] % Changes: % 2010-11-21 Update by Jos\'e Carlos Santos @@ -227,6 +225,7 @@ bycompiler = {{compilado por}{comp\adddotspace por}}, byredactor = {{redigido por}{red\adddotspace por}}, % byreviser = {{}{}}, % FIXME: missing +% byreviewer = {{}{}}, % FIXME: missing byfounder = {{fundado por}{fund\adddotspace por}}, bycontinuator = {{continuado por}{cont\adddotspace por}}, bycollaborator = {{em colabora\c{a}\~o com}{em col\adddotspace com}}, @@ -311,6 +310,7 @@ andmore = {{et\addabbrvspace al\adddot}{et\addabbrvspace al\adddot}}, volume = {{volume}{vol\adddot}}, volumes = {{volumes}{vols\adddot}}, + involumes = {{em}{em}}, jourvol = {{volume}{vol\adddot}}, jourser = {{s\'erie}{s\'er\adddot}}, % book = {{}{}}, % FIXME: missing @@ -322,6 +322,15 @@ reprint = {{reimpress\~ao}{reimpr\adddot}}, reprintof = {{reimpress\~ao de}{reimpr\adddotspace de}}, reprintas = {{reimpresso como}{reimpr\adddotspace como}}, + reprintfrom = {{reimpresso}{reimpr\adddot}}, % FIXME: check + translationof = {{tradu\c{c}\~ao de}{trans\adddotspace de}}, % FIXME: check + translationas = {{traduzido como}{trans\adddotspace como}}, % FIXME: check + translationfrom = {{traduzido do}{trans\adddotspace do}}, % FIXME: check +% reviewof = {{}{}}, % FIXME: missing + origpubas = {{originalmente publicado como}{orig\adddotspace pub\adddotspace como}}, % FIXME: check + origpubin = {{originalmente publicado em}{orig\adddotspace pub\adddotspace em}}, % FIXME: check + astitle = {{como}{como}}, % FIXME: check + bypublisher = {{por}{por}}, % FIXME: check page = {{p\'agina}{p\adddot}}, pages = {{p\'aginas}{pp\adddot}}, column = {{coluna}{col\adddot}}, @@ -341,6 +350,7 @@ chapter = {{cap\'\i tulo}{cap\adddot}}, mathesis = {{tese de mestrado}{tese de mestrado}}, phdthesis = {{tese de doutoramento}{tese de doutoramento}}, +% candthesis = {{}{}}, % FIXME: missing resreport = {{relat\'orio de pesquisa}{rel\adddotspace de pesquisa}}, techreport = {{relat\'orio t\'ecnico}{rel\adddotspace t\'ec\adddot}}, software = {{software}{software}}, diff --git a/Master/texmf-dist/tex/latex/biblatex/lbx/russian.lbx b/Master/texmf-dist/tex/latex/biblatex/lbx/russian.lbx index bf85e0b5d23..6125e498ed5 100644 --- a/Master/texmf-dist/tex/latex/biblatex/lbx/russian.lbx +++ b/Master/texmf-dist/tex/latex/biblatex/lbx/russian.lbx @@ -1,7 +1,5 @@ -% $Id: russian.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{russian.lbx} -[\abx@lbxid $Id: russian.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@lbxid] \DeclareRedundantLanguages{russian}{russian} @@ -17,9 +15,7 @@ russian.lbx now.}% \endinput} -\NewBibliographyString{% - involumes, - candthesis, +\NewBibliographyString{% Used only Russian for month checks datejanuary, datefebruary, datemarch, @@ -36,10 +32,9 @@ \DeclareBibliographyExtras{% \protected\def\bibrangedash{% - \textendash\penalty\hyphenpenalty}% breakable dash + \textemdash\penalty\hyphenpenalty}% breakable dash \protected\def\bibdatedash{% - \addnbthinspace\textendash\addthinspace - \penalty\hyphenpenalty}% breakable dash + \textemdash\penalty\hyphenpenalty}% breakable dash \let\finalandcomma=\empty \protected\def\mkbibordinal#1{\mkbibmascord}% \protected\def\mkbibmascord#1{#1-й}% @@ -100,8 +95,8 @@ translators = {{переводчики}{пер\adddot}}, commentator = {{комментатор}{комм\adddot}}, commentators = {{комментаторы}{комм\adddot}}, - annotator = {{составитель примечаний}{сост. прим\adddot}}, - annotators = {{составитель примечаний}{сост. прим\adddot}}, + annotator = {{примечания}{прим\adddot}}, + annotators = {{примечания}{прим\adddot}}, commentary = {{комментарий}{комм\adddot}}, annotations = {{примечания}{прим\adddot}}, introduction = {{введение}{введ\adddot}}, @@ -248,17 +243,18 @@ bycompiler = {{составлено}{сост\adddot}}, byredactor = {{под редакцией}{под\addabbrvspace ред\adddot}}, byreviser = {{исправлено}{испр\adddot}}, + byreviewer = {{рецензия}{рец\adddot}}, byfounder = {{учреждено}{учр\adddot}},% FIXME: unsure bycontinuator = {{продолжение}{продолж\adddot}},% FIXME: unsure bycollaborator = {{при участии}{при\addabbrvspace уч\adddot}}, bytranslator = {{перевод \lbx@lfromlang}{пер. \lbx@sfromlang}}, bycommentator = {{комментарии}{комм\adddot}}, byannotator = {{примечания}{прим\adddot}}, - withcommentator = {{с комментариями}{с\addabbrvspace комм\adddot}}, - withannotator = {{с примечаниями}{с\addabbrvspace прим\adddot}}, - withintroduction = {{с введением}{с\addabbrvspace введ\adddot}}, - withforeword = {{с предисловием}{с\addabbrvspace предисл\adddot}}, - withafterword = {{с послесловием}{с\addabbrvspace послесл\adddot}}, + withcommentator = {{комментарии}{комм\adddot}}, + withannotator = {{примечания}{прим\adddot}}, + withintroduction = {{введение}{введ\adddot}}, + withforeword = {{предисловие}{предисл\adddot}}, + withafterword = {{послесловие}{послесл\adddot}}, byeditortr = {{перевод \lbx@lfromlang, под редакцией}% {пер. \lbx@sfromlang, под\addabbrvspace ред\adddotspace}}, byeditorco = {{под редакцией и с комментариями}% @@ -333,19 +329,28 @@ volume = {{том}{т\adddot}}, volumes = {{томах}{т\adddot}}, involumes = {{в}{в}}, - book = {{книга}{кн\adddot}}, - part = {{часть}{ч\adddot}}, jourvol = {{том}{т\adddot}}, jourser = {{серия}{сер\adddot}}, -% book = {{}{}}, % FIXME: missing -% part = {{}{}}, % FIXME: missing -% issue = {{}{}}, % FIXME: missing + book = {{книга}{кн\adddot}}, + part = {{часть}{ч\adddot}}, + issue = {{выпуск}{вып\adddot}}, newseries = {{новая серия}{нов\addabbrvspace сер\adddot}}, oldseries = {{старая серия}{стар\addabbrvspace сер\adddot}}, edition = {{издание}{изд\adddot}}, reprint = {{переиздание}{переизд\adddot}}, reprintof = {{переиздание}{переизд\adddot}}, reprintas = {{переиздано как}{переизд. как}}, + reprintfrom = {{переиздано с}{переизд\addabbrvspace с}}, + translationof = {{перевод}{пер\addabbrvspace}}, + translationas = {{перевод как}{пер\addabbrvspace как}}, + translationfrom = {{перевод с}{пер\addabbrvspace с}}, + reviewof = {{рецензия на:}{рец\addabbrvspace на:}},% FIXME: unsure + origpubas = {{первоначально опубликовано как}% + {перв\addabbrvspace опубл\addabbrvspace как}}, + origpubin = {{первоначально опубликовано в}% + {перв\addabbrvspace опубл\addabbrvspace в}}, + astitle = {{под названием}{под назв\adddot}},% FIXME: unsure + bypublisher = {{опубликовано}{опубл\adddot}},% FIXME: unsure page = {{страница}{с\adddot}}, pages = {{страницы}{с\adddot}}, column = {{колонка}{кол\adddot}}, @@ -362,7 +367,6 @@ inseries = {{в}{в}}, ofseries = {{из}{из}}, number = {{номер}{№}}, - issue = {{выпуск}{вып\adddot}}, chapter = {{глава}{гл\adddot}}, mathesis = {{магистерская диссертация}{маг\adddotspace дисс\adddot}}, phdthesis = {{докторская диссертация}{докт\adddotspace дисс\adddot}}, @@ -377,9 +381,9 @@ urlseen = {{дата обращения}{дата\addabbrvspace обр\adddot}}, inpreparation = {{в\addabbrvspace подготовке}{в подг\adddot}}, submitted = {{представлено}{предст\adddot}}, -% forthcoming = {{}{}}, % FIXME: missing + forthcoming = {{в печати}{в печ\adddot}}, inpress = {{в\addabbrvspace печати}{в печ\adddot}}, - citedas = {{далее цитируется как}{далее цит\adddot}}, + citedas = {{далее цитируется как}{далее цит\addabbrvspace как}}, thiscite = {{здесь}{здесь}}, seenote = {{смотри сноску}{см\adddotspace сн\adddot}}, quotedin = {{цитируется по}{цит\adddotspace по}}, @@ -392,8 +396,8 @@ idempn = {{они\addabbrvspace же}{они\addabbrvspace же}}, idempp = {{они\addabbrvspace же}{они\addabbrvspace же}}, ibidem = {{там\addabbrvspace же}{там\addabbrvspace же}}, - opcit = {{цит\adddotspace соч\adddot}{цит\adddotspace соч\adddot}}, - loccit = {{цит\adddotspace мест\adddot}{цит\adddotspace мест\adddot}}, + opcit = {{указ\adddotspace соч\adddot}{указ\adddotspace соч\adddot}}, + loccit = {{указ\adddotspace место}{указ\adddotspace место}}, confer = {{сравни}{ср\adddot}}, sequens = {{и следующая}{и\addabbrvspace сл\adddot}}, sequentes = {{и следующие}{и\addabbrvspace сл\adddot}}, @@ -428,11 +432,11 @@ datedecember = {{декабря}{дек\adddot}}, langamerican = {{американский}{американский}}, langbrazilian = {{бразильский}{бразильский}}, -% langcroatian = {{}{}}, % FIXME: missing + langcroatian = {{хорватский}{хорватский}}, langdanish = {{датский}{датский}}, langdutch = {{голландский}{голландский}}, langenglish = {{английский}{английский}}, -% langfinnish = {{}{}}, % FIXME: missing + langfinnish = {{финский}{финский}}, langfrench = {{французский}{французский}}, langgerman = {{немецкий}{немецкий}}, langgreek = {{греческий}{греческий}}, @@ -445,11 +449,11 @@ langswedish = {{шведский}{шведский}}, fromamerican = {{с американского}{с\addabbrvspace амер\adddot}}, frombrazilian = {{с бразильского}{с\addabbrvspace браз\adddot}}, -% fromcroatian = {{}{}}, % FIXME: missing + fromcroatian = {{с хорватского}{с\addabbrvspace хорв\adddot}}, fromdanish = {{с датского}{с\addabbrvspace дат\adddot}}, fromdutch = {{с нидерландского}{с\addabbrvspace нидерл\adddot}}, fromenglish = {{с английского}{с\addabbrvspace англ\adddot}}, -% fromfinnish = {{}{}}, % FIXME: missing + fromfinnish = {{с финского}{с\addabbrvspace фин\adddot}}, fromfrench = {{с французского}{с\addabbrvspace фр\adddot}}, fromgerman = {{с немецкого}{с\addabbrvspace нем\adddot}}, fromgreek = {{с греческого}{с\addabbrvspace греч\adddot}}, @@ -457,7 +461,7 @@ fromlatin = {{с латинского}{с\addabbrvspace лат\adddot}}, fromnorwegian = {{с норвежского}{с\addabbrvspace норв\adddot}}, fromportuguese = {{с португальского}{с\addabbrvspace порт\adddot}}, - fromrussian = {{с русского}{с\addabbrvspace русс\adddot}}, + fromrussian = {{с русского}{с\addabbrvspace рус\adddot}}, fromspanish = {{с испанского}{с\addabbrvspace исп\adddot}}, fromswedish = {{со шведского}{со\addabbrvspace швед\adddot}}, countryde = {{Германия}{DE}}, diff --git a/Master/texmf-dist/tex/latex/biblatex/lbx/spanish.lbx b/Master/texmf-dist/tex/latex/biblatex/lbx/spanish.lbx index 4da696155fe..bab99bc453c 100644 --- a/Master/texmf-dist/tex/latex/biblatex/lbx/spanish.lbx +++ b/Master/texmf-dist/tex/latex/biblatex/lbx/spanish.lbx @@ -1,7 +1,5 @@ -% $Id: spanish.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{spanish.lbx} -[\abx@lbxid $Id: spanish.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@lbxid] \DeclareRedundantLanguages{spanish}{spanish} @@ -162,6 +160,7 @@ % bycompiler = {{}{}}, % FIXME: missing byredactor = {{revisado por}{rev\adddotspace por}}, byreviser = {{revisado por}{rev\adddotspace por}}, +% byreviewer = {{}{}}, % FIXME: missing % byfounder = {{}{}}, % FIXME: missing % bycontinuator = {{}{}}, % FIXME: missing % bycollaborator = {{}{}}, % FIXME: missing @@ -246,6 +245,7 @@ % andmore = {{}{}}, % FIXME: missing volume = {{volumen}{vol\adddot}}, volumes = {{vol\'umenes}{vols\adddot}}, + involumes = {{en}{en}}, jourvol = {{volumen}{vol\adddot}}, jourser = {{\'epoca}{\'ep\adddot}}, % book = {{}{}}, % FIXME: missing @@ -257,6 +257,15 @@ % reprint = {{}{}}, % FIXME: missing % reprintof = {{}{}}, % FIXME: missing % reprintas = {{}{}}, % FIXME: missing +% reprintfrom = {{}{}}, % FIXME: missing +% reviewof = {{}{}}, % FIXME: missing +% translationof = {{}{}}, % FIXME: missing +% translationas = {{}{}}, % FIXME: missing +% translationfrom = {{}{}}, % FIXME: missing + origpubas = {{originalmente publicado como}{orig\adddotspace pub\adddotspace como}}, % FIXME: check + origpubin = {{publicado originalmente en}{pub\adddot\ orig\adddot\ en}}, % FIXME: check +% astitle = {{}{}}, % FIXME: missing +% bypublisher = {{}{}}, % FIXME: missing page = {{p\'agina}{p\'ag\adddot}}, pages = {{p\'aginas}{p\'ags\adddot}}, column = {{columna}{col\adddot}}, @@ -276,6 +285,7 @@ chapter = {{cap\'itulo}{cap\adddot}}, mathesis = {{Tesis de licenciatura}{Tesis de lic\adddot}}, phdthesis = {{Tesis doctoral}{Tesis doct\adddot}}, +% candthesis = {{}{}}, % FIXME: missing % resreport = {{}{}}, % FIXME: missing techreport = {{informe t\'ecnico}{inf\adddotspace t\'ec\adddot}}, % software = {{}{}}, % FIXME: missing diff --git a/Master/texmf-dist/tex/latex/biblatex/lbx/swedish.lbx b/Master/texmf-dist/tex/latex/biblatex/lbx/swedish.lbx index 142add75a02..0015404cca8 100644 --- a/Master/texmf-dist/tex/latex/biblatex/lbx/swedish.lbx +++ b/Master/texmf-dist/tex/latex/biblatex/lbx/swedish.lbx @@ -1,7 +1,5 @@ -% $Id: swedish.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{swedish.lbx} -[\abx@lbxid $Id: swedish.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@lbxid] % Changes: % 2009-03-02 Update by Per Starb\"ack @@ -186,6 +184,7 @@ bycompiler = {{sammanst\"alld av}{sammanst\adddotspace av}}, byredactor = {{bearbetad av}{bearb\adddotspace av}}, % byreviser = {{}{}}, % FIXME: missing +% byreviewer = {{}{}}, % FIXME: missing % byfounder = {{}{}}, % FIXME: missing % bycontinuator = {{}{}}, % FIXME: missing % bycollaborator = {{}{}}, % FIXME: missing @@ -271,6 +270,7 @@ andmore = {{m.\,fl\adddot}{m.\,fl\adddot}}, volume = {{volym}{vol\adddot}}, volumes = {{volymer}{vol\adddot}}, + involumes = {{i}{i}}, % FIXME: unsure jourvol = {{\aa rg\aa ng}{\aa rg\adddot}}, jourser = {{serie}{ser\adddot}}, % book = {{}{}}, % FIXME: missing @@ -287,6 +287,15 @@ reprint = {{nytryck}{nytr\adddot}}, reprintof = {{nytryck av}{nytr\adddotspace av}}, reprintas = {{nytryckt som}{nytr\adddotspace som}}, + reprintfrom = {{nytryckt fr\aa n}{nytryckt fr\aa n}}, % FIXME: check +% translationof = {{}{}}, % FIXME: missing +% translationas = {{}{}}, % FIXME: missing +% translationfrom = {{}{}}, % FIXME: missing +% reviewof = {{}{}}, % FIXME: missing +% origpubas = {{}{}}, % FIXME: missing +% origpubin = {{}{}}, % FIXME: missing +% astitle = {{}{}}, % FIXME: missing + bypublisher = {{av}{av}}, % FIXME: check page = {{sidan}{s\adddot}}, pages = {{sidorna}{s\adddot}}, column = {{spalt}{sp\adddot}}, @@ -308,6 +317,7 @@ chapter = {{kapitel}{kap\adddot}}, mathesis = {{examensarbete}{examensarb\adddot}}, phdthesis = {{doktorsavhandling}{diss\adddot}}, + candthesis = {{kandidatavhandling}{kand.avh}}, % FIXME: unsure resreport = {{forskningsrapport}{forskn.rapport}}, techreport = {{teknisk rapport}{tekn\adddotspace rapport}}, % Hedberg (p. 57) uses "Datafil" and adds that it's possible to |