diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/biblatex/bibtex |
Initial commit
Diffstat (limited to 'macros/latex/contrib/biblatex/bibtex')
-rw-r--r-- | macros/latex/contrib/biblatex/bibtex/bib/biblatex/biblatex-examples.bib | 1667 | ||||
-rw-r--r-- | macros/latex/contrib/biblatex/bibtex/bst/biblatex.bst | 2805 |
2 files changed, 4472 insertions, 0 deletions
diff --git a/macros/latex/contrib/biblatex/bibtex/bib/biblatex/biblatex-examples.bib b/macros/latex/contrib/biblatex/bibtex/bib/biblatex/biblatex-examples.bib new file mode 100644 index 0000000000..10f114bc76 --- /dev/null +++ b/macros/latex/contrib/biblatex/bibtex/bib/biblatex/biblatex-examples.bib @@ -0,0 +1,1667 @@ +@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, + author = {Westfahl, Gary}, + title = {The True Frontier}, + subtitle = {Confronting and Avoiding the Realities of Space in {American} + Science Fiction Films}, + pages = {55-65}, + crossref = {westfahl:frontier}, + langid = {english}, + langidopts = {variant=american}, + indextitle = {True Frontier, The}, + 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. The \texttt{crossref} field + in the \texttt{@set} entry and the \texttt{entryset} field in + each set member entry is needed only when using BibTeX as the + backend}, +} + +@set{stdmodel, + entryset = {glashow,weinberg,salam}, + annotation = {A \texttt{set} with three members discussing the standard + model of particle physics. The \texttt{crossref} field + in the \texttt{@set} entry and the \texttt{entryset} field in + each set member entry is needed only when using BibTeX as the + backend}, +} + +@article{aksin, + author = {Aks{\i}n, {\"O}zge and T{\"u}rkmen, Hayati and Artok, Levent + and {\c{C}}etinkaya, Bekir and Ni, Chaoying and + B{\"u}y{\"u}kg{\"u}ng{\"o}r, Orhan and {\"O}zkal, Erhan}, + title = {Effect of immobilization on catalytic characteristics of + saturated {Pd-N}-heterocyclic carbenes in {Mizoroki-Heck} + reactions}, + journaltitle = jomch, + date = 2006, + volume = 691, + number = 13, + pages = {3027-3036}, + indextitle = {Effect of immobilization on catalytic characteristics}, +} + +@article{angenendt, + author = {Angenendt, Arnold}, + title = {In Honore Salvatoris~-- Vom Sinn und Unsinn der + Patrozinienkunde}, + journaltitle = {Revue d'Histoire Eccl{\'e}siastique}, + date = 2002, + volume = 97, + pages = {431--456, 791--823}, + langid = {german}, + indextitle = {In Honore Salvatoris}, + shorttitle = {In Honore Salvatoris}, + annotation = {A German article in a French journal. Apart from that, a + typical \texttt{article} entry. Note the \texttt{indextitle} + field}, +} + +@article{baez/article, + author = {Baez, John C. and Lauda, Aaron D.}, + title = {Higher-Dimensional Algebra {V}: 2-Groups}, + journaltitle = {Theory and Applications of Categories}, + date = 2004, + volume = 12, + pages = {423-491}, + version = 3, + eprint = {math/0307200v3}, + eprinttype = {arxiv}, + langid = {english}, + langidopts = {variant=american}, + 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, + author = {Bertram, Aaron and Wentworth, Richard}, + title = {Gromov invariants for holomorphic maps on {Riemann} surfaces}, + journaltitle = jams, + date = 1996, + volume = 9, + number = 2, + pages = {529-571}, + langid = {english}, + langidopts = {variant=american}, + shorttitle = {Gromov invariants}, + annotation = {An \texttt{article} entry with a \texttt{volume} and a + \texttt{number} field}, +} + +@article{doody, + author = {Doody, Terrence}, + title = {Hemingway's Style and {Jake's} Narration}, + year = 1974, + volume = 4, + number = 3, + pages = {212-225}, + langid = {english}, + langidopts = {variant=american}, + related = {matuz:doody}, + relatedstring= {\autocap{e}xcerpt in}, + journal = {The Journal of Narrative Technique}, + 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, + editor = {Matuz, Roger}, + title = {Contemporary Literary Criticism}, + year = 1990, + volume = 61, + publisher = {Gale}, + location = {Detroit}, + pages = {204-208}, + langid = {english}, + langidopts = {variant=american}, + annotation = {A \texttt{collection} entry providing the excerpt information + for the \texttt{doody} entry. Note the format of the + \texttt{pages} field}, +} + +@article{gillies, + author = {Gillies, Alexander}, + title = {Herder and the Preparation of {Goethe's} Idea of World + Literature}, + journaltitle = {Publications of the English Goethe Society}, + date = 1933, + series = {newseries}, + volume = 9, + pages = {46-67}, + langid = {english}, + langidopts = {variant=british}, + 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.}, + date = 1961, + volume = 22, + pages = {579-588}, +} + +@article{herrmann, + author = {Herrmann, Wolfgang A. and {\"O}fele, Karl and Schneider, + Sabine K. and Herdtweck, Eberhardt and Hoffmann, Stephan D.}, + title = {A carbocyclic carbene as an efficient catalyst ligand for {C--C} + coupling reactions}, + journaltitle = anch-ie, + date = 2006, + volume = 45, + number = 23, + pages = {3859-3862}, + indextitle = {Carbocyclic carbene as an efficient catalyst, A}, +} + +@article{kastenholz, + author = {Kastenholz, M. A. and H{\"u}nenberger, Philippe H.}, + title = {Computation of methodology\hyphen independent ionic solvation + free energies from molecular simulations}, + journaltitle = jchph, + date = 2006, + subtitle = {{I}. {The} electrostatic potential in molecular liquids}, + volume = 124, + eid = 124106, + doi = {10.1063/1.2172593}, + langid = {english}, + langidopts = {variant=american}, + indextitle = {Computation of ionic solvation free energies}, + 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, + 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.}, + title = {Alkanethiolate gold cluster molecules with core diameters from + 1.5 to 5.2~{nm}}, + journaltitle = {Langmuir}, + date = 1998, + subtitle = {Core and monolayer properties as a function of core size}, + volume = 14, + number = 1, + pages = {17-30}, + langid = {english}, + langidopts = {variant=american}, + indextitle = {Alkanethiolate gold cluster molecules}, + shorttitle = {Alkanethiolate gold cluster molecules}, + annotation = {An \texttt{article} entry with \arabic{author} authors. By + default, long author and editor lists are automatically + truncated. This is configurable}, +} + +@article{reese, + author = {Reese, Trevor R.}, + title = {Georgia in {Anglo-Spanish} Diplomacy, 1736--1739}, + journaltitle = {William and Mary Quarterly}, + date = 1958, + series = 3, + volume = 15, + pages = {168-190}, + langid = {english}, + langidopts = {variant=american}, + 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}, + year = 2002, + volume = 26, + number = 5, + pages = {795-804}, + issn = {0097-8493}, + journal = {Computers and Graphics}, + annotation = {An \texttt{article} entry with an \texttt{issn} field}, +} + +@article{shore, + author = {Shore, Bradd}, + title = {Twice-Born, Once Conceived}, + journaltitle = {American Anthropologist}, + date = {1991-03}, + subtitle = {Meaning Construction and Cultural Cognition}, + series = {newseries}, + volume = 93, + number = 1, + 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, + author = {Sigfridsson, Emma and Ryde, Ulf}, + title = {Comparison of methods for deriving atomic charges from the + electrostatic potential and moments}, + journaltitle = {Journal of Computational Chemistry}, + date = 1998, + volume = 19, + number = 4, + pages = {377-395}, + doi = {10.1002/(SICI)1096-987X(199803)19:4<377::AID-JCC1>3.0.CO;2-P}, + langid = {english}, + langidopts = {variant=american}, + indextitle = {Methods for deriving atomic charges}, + 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, + author = {Spiegelberg, Herbert}, + title = {\mkbibquote{Intention} und \mkbibquote{Intentionalit{\"a}t} in + der Scholastik, bei Brentano und Husserl}, + journaltitle = {Studia Philosophica}, + date = 1969, + volume = 29, + pages = {189-216}, + langid = {german}, + sorttitle = {Intention und Intentionalitat in der Scholastik, bei Brentano + und Husserl}, + indexsorttitle= {Intention und Intentionalitat in der Scholastik, bei Brentano + und Husserl}, + shorttitle = {Intention und Intentionalit{\"a}t}, + 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, + author = {Springer, Otto}, + title = {Mediaeval Pilgrim Routes from {Scandinavia} to {Rome}}, + journaltitle = {Mediaeval Studies}, + date = 1950, + volume = 12, + pages = {92-122}, + langid = {english}, + langidopts = {variant=british}, + shorttitle = {Mediaeval Pilgrim Routes}, + annotation = {A plain \texttt{article} entry}, +} + +@article{weinberg, + author = {Weinberg, Steven}, + title = {A Model of Leptons}, + journaltitle = {Phys.~Rev.~Lett.}, + date = 1967, + volume = 19, + pages = {1264-1266}, +} + +@article{yoon, + author = {Yoon, Myeong S. and Ryu, Dowook and Kim, Jeongryul and Ahn, + Kyo Han}, + title = {Palladium pincer complexes with reduced bond angle strain: + efficient catalysts for the {Heck} reaction}, + journaltitle = {Organometallics}, + date = 2006, + volume = 25, + number = 10, + pages = {2409-2411}, + indextitle = {Palladium pincer complexes}, +} + +@book{aristotle:anima, + author = {Aristotle}, + title = {De Anima}, + date = 1907, + editor = {Hicks, Robert Drew}, + publisher = cup, + location = {Cambridge}, + keywords = {primary}, + langid = {english}, + langidopts = {variant=british}, + annotation = {A \texttt{book} entry with an \texttt{author} and an + \texttt{editor}}, +} + +@book{aristotle:physics, + author = {Aristotle}, + title = {Physics}, + date = 1929, + translator = {Wicksteed, P. H. and Cornford, F. M.}, + publisher = {G. P. Putnam}, + location = {New York}, + keywords = {primary}, + langid = {english}, + langidopts = {variant=american}, + shorttitle = {Physics}, + annotation = {A \texttt{book} entry with a \texttt{translator} field}, +} + +@book{aristotle:poetics, + author = {Aristotle}, + title = {Poetics}, + date = 1968, + editor = {Lucas, D. W.}, + series = {Clarendon {Aristotle}}, + publisher = {Clarendon Press}, + location = {Oxford}, + keywords = {primary}, + langid = {english}, + langidopts = {variant=british}, + shorttitle = {Poetics}, + annotation = {A \texttt{book} entry with an \texttt{author} and an + \texttt{editor} as well as a \texttt{series} field}, +} + +@mvbook{aristotle:rhetoric, + author = {Aristotle}, + title = {The Rhetoric of {Aristotle} with a commentary by the late {Edward + Meredith Cope}}, + date = 1877, + editor = {Cope, Edward Meredith}, + commentator = {Cope, Edward Meredith}, + volumes = 3, + publisher = cup, + keywords = {primary}, + langid = {english}, + langidopts = {variant=british}, + sorttitle = {Rhetoric of Aristotle}, + indextitle = {Rhetoric of {Aristotle}, The}, + shorttitle = {Rhetoric}, + 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, + author = {Augustine, Robert L.}, + title = {Heterogeneous catalysis for the synthetic chemist}, + date = 1995, + publisher = {Marcel Dekker}, + location = {New York}, + langid = {english}, + langidopts = {variant=american}, + shorttitle = {Heterogeneous catalysis}, + annotation = {A plain \texttt{book} entry}, +} + +@book{averroes/bland, + author = {Averroes}, + title = {The Epistle on the Possibility of Conjunction with the Active + Intellect by {Ibn Rushd} with the Commentary of {Moses Narboni}}, + date = 1982, + editor = {Bland, Kalman P.}, + translator = {Bland, Kalman P.}, + series = {Moreshet: Studies in {Jewish} History, Literature and Thought}, + number = 7, + publisher = {Jewish Theological Seminary of America}, + location = {New York}, + keywords = {primary}, + langid = {english}, + langidopts = {variant=american}, + indextitle = {Epistle on the Possibility of Conjunction, The}, + shorttitle = {Possibility of Conjunction}, + 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, + author = {Averroes}, + title = {Des Averro{\"e}s Abhandlung: \mkbibquote{{\"U}ber die + M{\"o}glichkeit der Conjunktion} oder \mkbibquote{{\"U}ber den + materiellen Intellekt}}, + date = 1892, + editor = {Hannes, Ludwig}, + translator = {Hannes, Ludwig}, + annotator = {Hannes, Ludwig}, + publisher = {C.~A. Kaemmerer}, + location = {Halle an der Saale}, + keywords = {primary}, + langid = {german}, + sorttitle = {Uber die Moglichkeit der Conjunktion}, + indexsorttitle= {Uber die Moglichkeit der Conjunktion}, + indextitle = {{\"U}ber die M{\"o}glichkeit der Conjunktion}, + shorttitle = {{\"U}ber die M{\"o}glichkeit der Conjunktion}, + 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, + author = {Averroes}, + title = {Drei Abhandlungen {\"u}ber die Conjunction des separaten + Intellects mit dem Menschen}, + date = 1869, + editor = {Hercz, J.}, + translator = {Hercz, J.}, + publisher = {S.~Hermann}, + location = {Berlin}, + keywords = {primary}, + langid = {german}, + indexsorttitle= {Drei Abhandlungen uber die Conjunction}, + indextitle = {Drei Abhandlungen {\"u}ber die Conjunction}, + subtitle = {Von Averroes (Vater und Sohn), aus dem Arabischen + {\"u}bersetzt von Samuel Ibn Tibbon}, + shorttitle = {Drei Abhandlungen}, + 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, + author = {Cicero, Marcus Tullius}, + title = {De natura deorum. {\"U}ber das Wesen der G{\"o}tter}, + date = 1995, + editor = {Blank-Sangmeister, Ursula}, + translator = {Blank-Sangmeister, Ursula}, + afterword = {Thraede, Klaus}, + language = {langlatin and langgerman}, + publisher = {Reclam}, + location = {Stuttgart}, + langid = {german}, + indextitle = {De natura deorum}, + shorttitle = {De natura deorum}, + 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, + author = {Coleridge, Samuel Taylor}, + title = {Biographia literaria, or {Biographical} sketches of my literary + life and opinions}, + date = 1983, + editor = {Coburn, Kathleen and Engell, James and Bate, W. Jackson}, + maintitle = {The collected works of {Samuel Taylor Coleridge}}, + volume = 7, + part = 2, + series = {Bollingen Series}, + number = 75, + publisher = {Routledge {and} Kegan Paul}, + location = {London}, + langid = {english}, + langidopts = {variant=british}, + indextitle = {Biographia literaria}, + shorttitle = {Biographia literaria}, + 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, + author = {Goossens, Michel and Mittelbach, Frank and Samarin, Alexander}, + title = {The {LaTeX} Companion}, + date = 1994, + edition = 1, + publisher = {Addison-Wesley}, + location = {Reading, Mass.}, + pagetotal = 528, + langid = {english}, + langidopts = {variant=american}, + sorttitle = {LaTeX Companion}, + indextitle = {LaTeX Companion, The}, + shorttitle = {LaTeX Companion}, + 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, + author = {Cotton, Frank Albert and Wilkinson, Geoffrey and Murillio, + Carlos A. and Bochmann, Manfred}, + title = {Advanced inorganic chemistry}, + date = 1999, + edition = 6, + publisher = {Wiley}, + location = {Chichester}, + langid = {english}, + langidopts = {variant=british}, + 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, + author = {Gerhardt, Michael J.}, + title = {The Federal Appointments Process}, + date = 2000, + publisher = {Duke University Press}, + location = {Durham and London}, + langid = {english}, + langidopts = {variant=american}, + sorttitle = {Federal Appointments Process}, + indextitle = {Federal Appointments Process, The}, + subtitle = {A Constitutional and Historical Analysis}, + shorttitle = {Federal Appointments Process}, + 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, + author = {Gonzalez, Ray}, + title = {The Ghost of {John Wayne} and Other Stories}, + date = 2001, + publisher = {The University of Arizona Press}, + location = {Tucson}, + isbn = {0-816-52066-6}, + langid = {english}, + langidopts = {variant=american}, + sorttitle = {Ghost of John Wayne and Other Stories}, + indextitle = {Ghost of {John Wayne} and Other Stories, The}, + shorttitle = {Ghost of {John Wayne}}, + 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, + author = {Hammond, Christopher}, + title = {The basics of crystallography and diffraction}, + date = 1997, + publisher = {International Union of Crystallography and Oxford University + Press}, + location = {Oxford}, + langid = {english}, + langidopts = {variant=british}, + sorttitle = {Basics of crystallography and diffraction}, + indextitle = {Basics of crystallography and diffraction, The}, + shorttitle = {Crystallography and diffraction}, + 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, + author = {Homer}, + title = {Die Ilias}, + date = 2004, + translator = {Schadewaldt, Wolfgang}, + introduction = {Latacz, Joachim}, + edition = 3, + publisher = {Artemis \& Winkler}, + location = {D{\"u}sseldorf and Z{\"u}rich}, + langid = {german}, + sorttitle = {Ilias}, + indextitle = {Ilias, Die}, + shorttitle = {Ilias}, + 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}, +} + +@mvbook{knuth:ct, + author = {Knuth, Donald E.}, + title = {Computers \& Typesetting}, + date = {1984/1986}, + volumes = 5, + publisher = {Addison-Wesley}, + location = {Reading, Mass.}, + langid = {english}, + langidopts = {variant=american}, + sorttitle = {Computers & Typesetting}, + indexsorttitle= {Computers & Typesetting}, + annotation = {A five-volume book cited as a whole. This is a \texttt{mvbook} + entry, note the \texttt{volumes} field}, +} + +@book{knuth:ct:a, + author = {Knuth, Donald E.}, + title = {The {\TeX book}}, + date = 1984, + maintitle = {Computers \& Typesetting}, + volume = {A}, + publisher = {Addison-Wesley}, + location = {Reading, Mass.}, + langid = {english}, + langidopts = {variant=american}, + sorttitle = {Computers & Typesetting A}, + indexsorttitle= {The TeXbook}, + indextitle = {\protect\TeX book, The}, + shorttitle = {\TeX book}, + annotation = {The first volume of a five-volume book. Note the + \texttt{sorttitle} field. We want this + volume to be listed after the entry referring to the entire + five-volume set. Also note the \texttt{indextitle} and + \texttt{indexsorttitle} fields. Indexing packages that don't + generate robust index entries require some control sequences + to be protected from expansion}, +} + +@book{knuth:ct:b, + author = {Knuth, Donald E.}, + title = {{\TeX}: The Program}, + date = 1986, + maintitle = {Computers \& Typesetting}, + volume = {B}, + publisher = {Addison-Wesley}, + location = {Reading, Mass.}, + langid = {english}, + langidopts = {variant=american}, + sorttitle = {Computers & Typesetting B}, + indexsorttitle= {TeX: The Program}, + shorttitle = {\TeX}, + annotation = {The second volume of a five-volume book. Note the + \texttt{sorttitle} field. Also note the + \texttt{indexsorttitle} field}, +} + +@book{knuth:ct:c, + author = {Knuth, Donald E.}, + title = {The {METAFONTbook}}, + date = 1986, + maintitle = {Computers \& Typesetting}, + volume = {C}, + publisher = {Addison-Wesley}, + location = {Reading, Mass.}, + langid = {english}, + langidopts = {variant=american}, + sorttitle = {Computers & Typesetting C}, + indextitle = {METAFONTbook, The}, + shorttitle = {METAFONTbook}, + annotation = {The third volume of a five-volume book. Note the + \texttt{sorttitle} field as well as the + \texttt{indextitle} field}, +} + +@book{knuth:ct:d, + author = {Knuth, Donald E.}, + title = {{METAFONT}: The Program}, + date = 1986, + maintitle = {Computers \& Typesetting}, + volume = {D}, + publisher = {Addison-Wesley}, + location = {Reading, Mass.}, + langid = {english}, + langidopts = {variant=american}, + sorttitle = {Computers & Typesetting D}, + shorttitle = {METAFONT}, + annotation = {The fourth volume of a five-volume book. Note the + \texttt{sorttitle} field}, +} + +@book{knuth:ct:e, + author = {Knuth, Donald E.}, + title = {{Computer Modern} Typefaces}, + date = 1986, + maintitle = {Computers \& Typesetting}, + volume = {E}, + publisher = {Addison-Wesley}, + location = {Reading, Mass.}, + langid = {english}, + langidopts = {variant=american}, + sorttitle = {Computers & Typesetting E}, + annotation = {The fifth volume of a five-volume book. Note the + \texttt{sorttitle} field}, +} + +@mvbook{knuth:ct:related, + author = {Knuth, Donald E.}, + title = {Computers \& Typesetting}, + date = {1984/1986}, + volumes = 5, + publisher = {Addison-Wesley}, + location = {Reading, Mass.}, + langid = {english}, + langidopts = {variant=american}, + sorttitle = {Computers & Typesetting}, + indexsorttitle= {Computers & Typesetting}, + related = {knuth:ct:a,knuth:ct:b,knuth:ct:c,knuth:ct:d,knuth:ct:e}, + relatedtype = {multivolume}, + 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, + author = {Kullback, Solomon}, + title = {Information Theory and Statistics}, + year = 1959, + publisher = {John Wiley \& Sons}, + location = {New York}, + langid = {english}, + langidopts = {variant=american}, +} + +@book{kullback:reprint, + author = {Kullback, Solomon}, + title = {Information Theory and Statistics}, + year = 1997, + publisher = {Dover Publications}, + location = {New York}, + origyear = 1959, + origpublisher= {John Wiley \& Sons}, + langid = {english}, + langidopts = {variant=american}, + 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, + author = {Kullback, Solomon}, + title = {Information Theory and Statistics}, + year = 1997, + publisher = {Dover Publications}, + location = {New York}, + langid = {english}, + langidopts = {variant=american}, + 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, + author = {Malinowski, Bronis{\l}aw}, + title = {Argonauts of the {Western Pacific}}, + date = 1972, + edition = 8, + publisher = {Routledge {and} Kegan Paul}, + location = {London}, + langid = {english}, + langidopts = {variant=british}, + subtitle = {An account of native enterprise and adventure in the + Archipelagoes of {Melanesian New Guinea}}, + shorttitle = {Argonauts}, + 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, + author = {Maron, Monika}, + title = {Animal Triste}, + date = 2000, + translator = {Brigitte Goldstein}, + origlanguage = {german}, + publisher = {University of Nebraska Press}, + location = {Lincoln}, + langid = {english}, + langidopts = {variant=american}, + shorttitle = {Animal Triste}, + 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, + author = {Werner Massa}, + title = {Crystal structure determination}, + date = 2004, + edition = 2, + publisher = {Spinger}, + location = {Berlin}, + langid = {english}, + langidopts = {variant=british}, + annotation = {A \texttt{book} entry with an \texttt{edition} field}, +} + +@article{moore, + author = {Moore, Gordon E.}, + title = {Cramming more components onto integrated circuits}, + journaltitle = {Electronics}, + year = 1965, + volume = 38, + number = 8, + pages = {114-117}, + langid = {english}, + langidopts = {variant=american}, +} + +@article{moore:related, + author = {Moore, Gordon E.}, + title = {Cramming more components onto integrated circuits}, + journaltitle = {Proceedings of the {IEEE}}, + year = 1998, + volume = 86, + number = 1, + pages = {82-85}, + langid = {english}, + langidopts = {variant=american}, + related = {moore}, + relatedtype = {reprintfrom}, + annotation = {A reprint of Moore's law. Note the \texttt{related} and + \texttt{relatedtype} fields}, +} + +@mvbook{nietzsche:ksa, + author = {Nietzsche, Friedrich}, + title = {S{\"a}mtliche Werke}, + date = 1988, + editor = {Colli, Giorgio and Montinari, Mazzino}, + edition = 2, + volumes = 15, + publisher = dtv # { and Walter de Gruyter}, + location = {M{\"u}nchen and Berlin and New York}, + langid = {german}, + sorttitle = {Werke-00-000}, + indexsorttitle= {Samtliche Werke}, + subtitle = {Kritische Studienausgabe}, + annotation = {The critical edition of Nietzsche's works. This is a + \texttt{mvbook} entry referring to a 15-volume work as a + whole. Note the \texttt{volumes} field and the format of the + \texttt{publisher} and \texttt{location} fields in the + database file. Also note the \texttt{sorttitle} and + field which is used to fine-tune the + sorting order of the bibliography. We want this item listed + first in the bibliography}, +} + +@book{nietzsche:ksa1, + author = {Nietzsche, Friedrich}, + title = {Die Geburt der Trag{\"o}die. Unzeitgem{\"a}{\ss}e + Betrachtungen I--IV. Nachgelassene Schriften 1870--1973}, + date = 1988, + editor = {Colli, Giorgio and Montinari, Mazzino}, + 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}, + langid = {german}, + sorttitle = {Werke-01-000}, + indexsorttitle= {Samtliche Werke I}, + bookauthor = {Nietzsche, Friedrich}, + indextitle = {S{\"a}mtliche Werke I}, + shorttitle = {S{\"a}mtliche Werke I}, + 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} + field. We want this entry to be listed after the entry + referring to the entire edition}, +} + +@book{nussbaum, + author = {Nussbaum, Martha}, + title = {Aristotle's \mkbibquote{De Motu Animalium}}, + date = 1978, + publisher = pup, + location = {Princeton}, + keywords = {secondary}, + langid = {english}, + langidopts = {variant=american}, + sorttitle = {Aristotle's De Motu Animalium}, + indexsorttitle= {Aristotle's De Motu Animalium}, + 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, + author = {Piccato, Pablo}, + title = {City of Suspects}, + date = 2001, + publisher = {Duke University Press}, + location = {Durham and London}, + langid = {english}, + langidopts = {variant=american}, + subtitle = {Crime in {Mexico City}, 1900--1931}, + shorttitle = {City of Suspects}, + annotation = {This is a \texttt{book} entry. Note the format of the + \texttt{location} field in the database file}, +} + +@book{vangennep, + author = {van Gennep, Arnold}, + title = {Les rites de passage}, + date = 1909, + publisher = {Nourry}, + location = {Paris}, + options = {useprefix}, + langid = {french}, + sorttitle = {Rites de passage}, + indextitle = {Rites de passage, Les}, + shorttitle = {Rites de passage}, + 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, + author = {van Gennep, Arnold}, + title = {The Rites of Passage}, + year = 1960, + translator = {Vizedom, Monika B. and Caffee, Gabrielle L.}, + language = {english}, + origlanguage = {french}, + publisher = {University of Chicago Press}, + options = {useprefix}, + indextitle = {Rites of Passage, The}, + sorttitle = {Rites of Passage}, + shorttitle = {Rites of Passage}, + langid = {english}, + langidopts = {variant=american}, + 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, + author = {van Gennep, Arnold}, + title = {Les rites de passage}, + date = 1909, + publisher = {Nourry}, + location = {Paris}, + options = {useprefix}, + langid = {french}, + related = {vizedom:related}, + relatedtype = {bytranslator}, + sorttitle = {Rites de passage}, + indextitle = {Rites de passage, Les}, + shorttitle = {Rites de passage}, + 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, + title = {The Rites of Passage}, + year = 1960, + translator = {Vizedom, Monika B. and Caffee, Gabrielle L.}, + language = {english}, + publisher = {University of Chicago Press}, + langid = {english}, + langidopts = {variant=american}, + options = {usetranslator}, + related = {vangennep}, + relatedtype = {translationof}, + indextitle = {Rites of Passage, The}, + sorttitle = {Rites of Passage}, + shorttitle = {Rites of Passage}, + annotation = {A translated work from \texttt{vangennep}. Note the format of + the \texttt{related} and \texttt{relatedtype} fields}, +} + +@mvbook{vazques-de-parga, + author = {V{\'a}zques{ de }Parga, Luis and Lacarra, Jos{\'e} Mar{\'i}a + and Ur{\'i}a R{\'i}u, Juan}, + title = {Las Peregrinaciones a Santiago de Compostela}, + date = 1993, + volumes = 3, + note = {Ed. facs. de la realizada en 1948--49}, + publisher = {Iberdrola}, + location = {Pamplona}, + langid = {spanish}, + sorttitle = {Peregrinaciones a Santiago de Compostela}, + indextitle = {Peregrinaciones a Santiago de Compostela, Las}, + shorttitle = {Peregrinaciones}, + annotation = {A multivolume book cited as a whole. This is a \texttt{mvbook} + entry with \texttt{volumes}, \texttt{note}, + \texttt{sorttitle}, and \texttt{indextitle} fields}, +} + +@book{wilde, + author = {Wilde, Oscar}, + title = {The Importance of Being Earnest: A Trivial Comedy for Serious + People}, + year = 1899, + series = {English and {American} drama of the Nineteenth Century}, + publisher = {Leonard Smithers {and} Company}, + eprint = {4HIWAAAAYAAJ}, + eprinttype = {googlebooks}, + annotation = {A \texttt{book} with \texttt{eprint} and \texttt{eprinttype} + fields.}, +} + +@book{worman, + author = {Worman, Nancy}, + title = {The Cast of Character}, + date = 2002, + publisher = {University of Texas Press}, + location = {Austin}, + langid = {english}, + langidopts = {variant=american}, + sorttitle = {Cast of Character}, + indextitle = {Cast of Character, The}, + subtitle = {Style in {Greek} Literature}, + shorttitle = {Cast of Character}, + annotation = {A \texttt{book} entry. Note the \texttt{sorttitle} and + \texttt{indextitle} fields}, +} + +@mvcollection{britannica, + editor = {Preece, Warren E.}, + title = {The {New Encyclop{\ae}dia Britannica}}, + date = 2003, + edition = 15, + volumes = 32, + publisher = {Encyclop{\ae}dia Britannica}, + location = {Chicago, Ill.}, + options = {useeditor=false}, + label = {EB}, + langid = {english}, + langidopts = {variant=british}, + sorttitle = {Encyclop{\ae}dia Britannica}, + indextitle = {{Encyclop{\ae}dia Britannica}, The {New}}, + shorttitle = {{Encyclop{\ae}dia Britannica}}, + annotation = {This is a \texttt{mvcollection} entry for an encyclopedia. Note + the \texttt{useeditor} option in the \texttt{options} field as + well as the \texttt{sorttitle} field. We want this entry to be + cited and alphabetized by title even though there is an + 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, + editor = {Gaonkar, Dilip Parameshwar}, + title = {Alternative Modernities}, + date = 2001, + publisher = {Duke University Press}, + location = {Durham and London}, + isbn = {0-822-32714-7}, + langid = {english}, + langidopts = {variant=american}, + 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}, + editor = {Gaonkar, Dilip Parameshwar}, + title = {On Alternative Modernities}, + date = 2001, + booktitle = {Alternative Modernities}, + publisher = {Duke University Press}, + location = {Durham and London}, + isbn = {0-822-32714-7}, + pages = {1-23}, +} + +@mvcollection{jaffe, + editor = {Jaff{\'e}, Philipp}, + title = {Regesta Pontificum Romanorum ab condita ecclesia ad annum post + Christum natum \textsc{mcxcviii}}, + date = {1885/1888}, + editora = {Loewenfeld, Samuel and Kaltenbrunner, Ferdinand and Ewald, + Paul}, + edition = 2, + volumes = 2, + location = {Leipzig}, + langid = {latin}, + editoratype = {redactor}, + indextitle = {Regesta Pontificum Romanorum}, + shorttitle = {Regesta Pontificum Romanorum}, + annotation = {A \texttt{mvcollection} entry with \texttt{edition} and + \texttt{volumes} fields. Note the \texttt{editora} and + \texttt{editoratype} fields}, +} + +% booktitle and booksubtitle are only needed for BibTeX's less sophisticated +% inheritance set-up to make sure westfahl:space shows correctly. +% With Biber they are not needed. +@collection{westfahl:frontier, + editor = {Westfahl, Gary}, + title = {Space and Beyond}, + date = 2000, + subtitle = {The Frontier Theme in Science Fiction}, + publisher = {Greenwood}, + location = {Westport, Conn. and London}, + langid = {english}, + langidopts = {variant=american}, + booktitle = {Space and Beyond}, + booksubtitle = {The Frontier Theme in Science Fiction}, + annotation = {This is a \texttt{collection} entry. Note the format of the + \texttt{location} field as well as the \texttt{subtitle} + field}, +} + +@inbook{kant:kpv, + title = {Kritik der praktischen Vernunft}, + date = 1968, + author = {Kant, Immanuel}, + booktitle = {Kritik der praktischen Vernunft. Kritik der Urtheilskraft}, + bookauthor = {Kant, Immanuel}, + maintitle = {Kants Werke. Akademie Textausgabe}, + volume = 5, + publisher = {Walter de Gruyter}, + location = {Berlin}, + pages = {1-163}, + shorthand = {KpV}, + langid = {german}, + shorttitle = {Kritik der praktischen Vernunft}, + 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, + title = {Kritik der Urtheilskraft}, + date = 1968, + author = {Kant, Immanuel}, + booktitle = {Kritik der praktischen Vernunft. Kritik der Urtheilskraft}, + bookauthor = {Kant, Immanuel}, + maintitle = {Kants Werke. Akademie Textausgabe}, + volume = 5, + publisher = {Walter de Gruyter}, + location = {Berlin}, + pages = {165-485}, + shorthand = {KU}, + langid = {german}, + 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, + title = {Unzeitgem{\"a}sse Betrachtungen. Zweites St{\"u}ck}, + date = 1988, + author = {Nietzsche, Friedrich}, + booktitle = {Die Geburt der Trag{\"o}die. Unzeitgem{\"a}{\ss}e + Betrachtungen I--IV. Nachgelassene Schriften 1870--1973}, + bookauthor = {Nietzsche, Friedrich}, + editor = {Colli, Giorgio and Montinari, Mazzino}, + subtitle = {Vom Nutzen und Nachtheil der Historie f{\"u}r das Leben}, + 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}, + pages = {243-334}, + langid = {german}, + sorttitle = {Werke-01-243}, + indexsorttitle= {Vom Nutzen und Nachtheil der Historie fur das Leben}, + indextitle = {Vom Nutzen und Nachtheil der Historie f{\"u}r das Leben}, + shorttitle = {Vom Nutzen und Nachtheil der Historie}, + 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} field. We want + this entry to be listed after the entry referring to the + entire first volume}, +} + +@incollection{brandt, + author = {von Brandt, Ahasver and Erich Hoffmann}, + editor = {Ferdinand Seibt}, + title = {Die nordischen L{\"a}nder von der Mitte des 11.~Jahrhunderts + bis 1448}, + date = 1987, + booktitle = {Europa im Hoch- und Sp{\"a}tmittelalter}, + series = {Handbuch der europ{\"a}ischen Geschichte}, + number = 2, + publisher = {Klett-Cotta}, + location = {Stuttgart}, + pages = {884-917}, + options = {useprefix=false}, + langid = {german}, + indexsorttitle= {Nordischen Lander von der Mitte des 11. Jahrhunderts bis + 1448}, + indextitle = {Nordischen L{\"a}nder von der Mitte des 11.~Jahrhunderts bis + 1448, Die}, + shorttitle = {Die nordischen L{\"a}nder}, + 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, + author = {Arthur Hyman}, + editor = {O'Meara, Dominic J.}, + title = {Aristotle's Theory of the Intellect and its Interpretation by + {Averroes}}, + date = 1981, + 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.}, + pages = {161-191}, + keywords = {secondary}, + langid = {english}, + langidopts = {variant=american}, + indextitle = {Aristotle's Theory of the Intellect}, + shorttitle = {Aristotle's Theory of the Intellect}, + annotation = {An \texttt{incollection} entry with a \texttt{series} and + \texttt{number} field}, +} + +@incollection{pines, + author = {Pines, Shlomo}, + editor = {Twersky, Isadore}, + title = {The Limitations of Human Knowledge According to {Al-Farabi}, {ibn + Bajja}, and {Maimonides}}, + date = 1979, + booktitle = {Studies in Medieval {Jewish} History and Literature}, + publisher = hup, + location = {Cambridge, Mass.}, + pages = {82-109}, + keywords = {secondary}, + langid = {english}, + langidopts = {variant=american}, + indextitle = {Limitations of Human Knowledge According to {Al-Farabi}, {ibn + Bajja}, and {Maimonides}, The}, + shorttitle = {Limitations of Human Knowledge}, + annotation = {A typical \texttt{incollection} entry. Note the + \texttt{indextitle} field}, +} + +@inproceedings{moraux, + author = {Moraux, Paul}, + editor = {Lloyd, G. E. R. and Owen, G. E. L.}, + title = {Le \emph{De Anima} dans la tradition gr{\`e}cque}, + date = 1979, + booktitle = {Aristotle on Mind and the Senses}, + subtitle = {Quelques aspects de l'interpretation du trait{\'e}, de + Theophraste {\`a} Themistius}, + booktitleaddon= {Proceedings of the Seventh Symposium Aristotelicum}, + eventdate = 1975, + publisher = cup, + location = {Cambridge}, + pages = {281-324}, + keywords = {secondary}, + langid = {french}, + indexsorttitle= {De Anima dans la tradition grecque}, + indextitle = {\emph{De Anima} dans la tradition gr{\`e}cque, Le}, + shorttitle = {\emph{De Anima} dans la tradition gr{\`e}cque}, + 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}, + date = 1968, + 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}, + pages = {367-377}, +} + +@manual{cms, + title = {The {Chicago} Manual of Style}, + date = 2003, + subtitle = {The Essential Guide for Writers, Editors, and Publishers}, + edition = 15, + publisher = {University of Chicago Press}, + location = {Chicago, Ill.}, + isbn = {0-226-10403-6}, + label = {CMS}, + langid = {english}, + langidopts = {variant=american}, + sorttitle = {Chicago Manual of Style}, + indextitle = {Chicago Manual of Style, The}, + shorttitle = {Chicago Manual of Style}, + 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, + author = {Baez, John C. and Lauda, Aaron D.}, + title = {Higher-Dimensional Algebra {V}: 2-Groups}, + date = {2004-10-27}, + version = 3, + langid = {english}, + langidopts = {variant=american}, + 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, + title = {CTAN}, + date = 2006, + url = {http://www.ctan.org}, + subtitle = {The {Comprehensive TeX Archive Network}}, + urldate = {2006-10-01}, + label = {CTAN}, + langid = {english}, + langidopts = {variant=american}, + 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, + author = {Itzhaki, Nissan}, + title = {Some remarks on {'t Hooft's} {S}-matrix for black holes}, + date = {1996-03-11}, + version = 1, + langid = {english}, + langidopts = {variant=american}, + 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, + author = {Markey, Nicolas}, + title = {Tame the {BeaST}}, + date = {2005-10-16}, + url = {http://mirror.ctan.org/info/bibtex/tamethebeast/ttb_en.pdf}, + subtitle = {The {B} to {X} of {BibTeX}}, + version = {1.3}, + urldate = {2006-10-01}, + langid = {english}, + langidopts = {variant=american}, + sorttitle = {Tame the Beast}, + 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, + author = {Wassenberg, Jan and Sanders, Peter}, + title = {Faster Radix Sort via Virtual Memory and Write-Combining}, + date = {2010-08-17}, + version = 1, + langid = {english}, + langidopts = {variant=american}, + 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, + author = {Almendro, Jos{\'e} L. and Mart{\'i}n, Jacinto and S{\'a}nchez, + Alberto and Nozal, Fernando}, + title = {Elektromagnetisches Signalhorn}, + number = {EU-29702195U}, + date = 1998, + location = {countryfr and countryuk and countryde}, + langid = {german}, + 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, + author = {Kowalik, F. and Isard, M.}, + title = {Estimateur d'un d{\'e}faut de fonctionnement d'un modulateur + en quadrature et {\'e}tage de modulation l'utilisant}, + number = 9500261, + date = {1995-01-11}, + type = {patreqfr}, + langid = {french}, + indextitle = {Estimateur d'un d{\'e}faut de fonctionnement}, + 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, + 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}, + title = {Elektrische Einrichtung und Betriebsverfahren}, + number = 1700367, + date = {2006-09-13}, + holder = {{Robert Bosch GmbH} and {Daimler Chrysler AG} and {Bayerische + Motoren Werke AG}}, + type = {patenteu}, + langid = {german}, + 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, + author = {Sorace, Ronald E. and Reinhardt, Victor S. and Vaughn, Steven + A.}, + title = {High-Speed Digital-to-{RF} Converter}, + number = 5668842, + date = {1997-09-16}, + holder = {{Hughes Aircraft Company}}, + type = {patentus}, + langid = {english}, + langidopts = {variant=american}, + 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}, + year = 2011, + issuetitle = {Semantic {3D} Media and Content}, + volume = 35, + number = 4, + issn = {0097-8493}, + annotation = {This is a \texttt{periodical} entry with an \texttt{issn} + field.}, +} + +@report{chiu, + author = {Chiu, Willy W. and Chow, We Min}, + title = {A Hybrid Hierarchical Model of a {Multiple Virtual Storage} + ({MVS}) Operating System}, + type = {resreport}, + institution = {IBM}, + date = 1978, + number = {RC-6947}, + langid = {english}, + langidopts = {variant=american}, + sorttitle = {Hybrid Hierarchical Model of a Multiple Virtual Storage (MVS) + Operating System}, + indextitle = {Hybrid Hierarchical Model, A}, + 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, + author = {Padhye, Jitendra and Firoiu, Victor and Towsley, Don}, + title = {A Stochastic Model of {TCP Reno} Congestion Avoidance and + Control}, + type = {techreport}, + institution = {University of Massachusetts}, + date = 1999, + number = {99-02}, + location = {Amherst, Mass.}, + langid = {english}, + langidopts = {variant=american}, + sorttitle = {A Stochastic Model of TCP Reno Congestion Avoidance and + Control}, + indextitle = {Stochastic Model of {TCP Reno} Congestion Avoidance and Control, + A}, + 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, + author = {de Geer, Ingrid}, + title = {Earl, Saint, Bishop, Skald~-- and Music}, + type = {phdthesis}, + institution = {Uppsala Universitet}, + date = 1985, + subtitle = {The {Orkney Earldom} of the Twelfth Century. {A} Musicological + Study}, + location = {Uppsala}, + options = {useprefix=false}, + langid = {english}, + langidopts = {variant=british}, + 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, + author = {Loh, Nin C.}, + title = {High-Resolution Micromachined Interferometric Accelerometer}, + type = {mathesis}, + institution = {Massachusetts Institute of Technology}, + date = 1992, + location = {Cambridge, Mass.}, + langid = {english}, + langidopts = {variant=american}, + 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/macros/latex/contrib/biblatex/bibtex/bst/biblatex.bst b/macros/latex/contrib/biblatex/bibtex/bst/biblatex.bst new file mode 100644 index 0000000000..4b1dcee4d7 --- /dev/null +++ b/macros/latex/contrib/biblatex/bibtex/bst/biblatex.bst @@ -0,0 +1,2805 @@ +% Copyright (c) 2006-2011 Philipp Lehman. +% 2012-2018 Philip Kime, Audrey Boruvka, Joseph Wright +% +% Permission is granted to copy, distribute and/or modify this +% software under the terms of the LaTeX Project Public License +% (LPPL), version 1.3c. +% +% This software is provided 'as is', without warranty of any kind, +% either expressed or implied, including, but not limited to, the +% implied warranties of merchantability and fitness for a +% particular purpose. + +% ------------------------------------------------------------------- +% Initialization +% ------------------------------------------------------------------- + +ENTRY { + % special fields + entryset + entrysubtype + execute + hyphenation + keywords + label + langid + langidopts + options + presort + shorthand + sortkey + sortname + sorttitle + sortyear + xref + % data fields + abstract + addendum + address + afterword + annotation + annote + annotator + author + authortype + bookauthor + booksubtitle + booktitle + booktitleaddon + chapter + commentator + date + doi + edition + editor + editora + editorb + editorc + editortype + editoratype + editorbtype + editorctype + eid + eprint + eprintclass + eprinttype + eventdate + eventtitle + eventtitleaddon + file + foreword + gender + howpublished + indexsorttitle + indextitle + institution + introduction + isan + isbn + ismn + isrn + issn + issue + issuetitle + issuesubtitle + iswc + journal + journaltitle + journalsubtitle + language + library + location + bookpagination + mainsubtitle + maintitle + maintitleaddon + month + nameaddon + note + number + organization + origlanguage + origlocation + origpublisher + origtitle + origdate + pages + pagetotal + pagination + part + pdf + pubstate + reprinttitle + holder + publisher + school + series + shortauthor + shorteditor + shorthandintro + shortjournal + shortseries + shorttitle + subtitle + title + titleaddon + translator + type + url + urldate + venue + version + volume + volumes + year + % aliases + archiveprefix + primaryclass + % custom fields + namea + nameb + namec + nameatype + namebtype + namectype + lista + listb + listc + listd + liste + listf + usera + userb + userc + userd + usere + userf + verba + verbb + verbc + } + { skipbib skiplos skiplab + useauthor useeditor usetranslator useprefix + singletitle } + { entryoptions labelhash namehash fullhash + dateyear dateendyear extradate labelalpha extraalpha label.name label.year + sortinit sortkey.nosort sortkey.name sortkey.year + sortkey.title sortkey.alpha sort.year sort.alph + warningmsg } + +INTEGERS { ctrl.debug ctrl.bibtex8 ctrl.maxline ctrl.sorting ctrl.cssort + ctrl.maxcitenames ctrl.mincitenames + ctrl.maxsortnames ctrl.minsortnames + ctrl.nohashothers ctrl.nosortothers + ctrl.maxalphanames ctrl.minalphanames + ctrl.useauthor ctrl.useeditor ctrl.usetranslator + ctrl.useprefix ctrl.labelalpha ctrl.singletitle + ctrl.labeldate citecount + tempctra tempctrb tempctrc resvctra resvctrb resvctrc + last.extra.num } + +STRINGS { ctrl.alphaothers ctrl.sortalphaothers ctrl.sortstr + templist tempstrga tempstrgb resvstrga resvstrgb resvstrgc + last.name last.hash last.year last.extra } + +FUNCTION {initialize} { + "$Revision: 3.13 $" + #12 entry.max$ substring$ + #-3 entry.max$ substring$ + "Biblatex version: " swap$ * top$ + #0 'ctrl.debug := + #0 'ctrl.labelalpha := + #0 'ctrl.labeldate := + #0 'ctrl.singletitle := + #0 'ctrl.sorting := + #1 'ctrl.useauthor := + #1 'ctrl.useeditor := + #0 'ctrl.usetranslator := + #0 'ctrl.useprefix := + #99 'ctrl.maxcitenames := + #1 'ctrl.mincitenames := + #99 'ctrl.maxsortnames := + #1 'ctrl.minsortnames := + #0 'ctrl.nohashothers := + #0 'ctrl.nosortothers := + #1 'ctrl.minalphanames := + #3 'ctrl.maxalphanames := + #79 'ctrl.maxline := + "+" 'ctrl.alphaothers := + " " 'ctrl.sortalphaothers := + "nty" 'ctrl.sortstr := +} + +% ------------------------------------------------------------------- +% Strings +% ------------------------------------------------------------------- + +MACRO {jan} { "01" } +MACRO {feb} { "02" } +MACRO {mar} { "03" } +MACRO {apr} { "04" } +MACRO {may} { "05" } +MACRO {jun} { "06" } +MACRO {jul} { "07" } +MACRO {aug} { "08" } +MACRO {sep} { "09" } +MACRO {oct} { "10" } +MACRO {nov} { "11" } +MACRO {dec} { "12" } + +% ------------------------------------------------------------------- +% Generic functions +% ------------------------------------------------------------------- + +FUNCTION {and} { + 'skip$ + { pop$ #0 } + if$ +} + +FUNCTION {or} { + { pop$ #1 } + 'skip$ + if$ +} + +FUNCTION {not} { + { #0 } + { #1 } + if$ +} + +FUNCTION {ctrl:control} { + type$ "control" = +} + +FUNCTION {ctrl:set} { + type$ "set" = +} + +FUNCTION {ctrl:skiplos} { + ctrl:control skiplos or + ctrl:set not + and +} + +FUNCTION {ctrl:skiplab} { + ctrl:control skiplab or + ctrl:set not + and +} + +FUNCTION {ctrl:labelalpha} { + ctrl.labelalpha + ctrl:skiplab not + and +} + +FUNCTION {ctrl:labeldate} { + ctrl.labeldate + ctrl:skiplab not + and +} + +FUNCTION {wrap:braces} { + duplicate$ empty$ + { pop$ "{}" } + { "{" swap$ * "}" * } + if$ +} + +FUNCTION {combine:key:value} { + "=" * + swap$ + wrap:braces * + "," * +} + +FUNCTION {delimiter.1} { + ctrl.bibtex8 + { "0" } + { " " } + if$ +} + +FUNCTION {delimiter.2} { + ctrl.bibtex8 + { "1" } + { " " } + if$ +} + +FUNCTION {delimiter.3} { + ctrl.bibtex8 + { "2" } + { " " } + if$ +} + +FUNCTION {open.ended} { + "9999" +} + +FUNCTION {maxline} { + duplicate$ empty$ + 'skip$ + { #1 ctrl.maxline substring$ } + if$ +} + +FUNCTION {truncate} { + duplicate$ empty$ + { pop$ "" } + { #1 entry.max$ substring$ } + if$ +} + +FUNCTION {purify} { + duplicate$ empty$ + { pop$ "" } + { purify$ + ctrl.bibtex8 + ctrl.cssort + and + 'skip$ + { "l" change.case$ } + if$ + truncate + } + if$ +} + +FUNCTION {normalize} { + duplicate$ empty$ + { pop$ "" } + { ctrl.bibtex8 + ctrl.cssort + and + 'skip$ + { "l" change.case$ } + if$ + truncate + } + if$ +} + +FUNCTION {enquote} { + "'" swap$ * "'" * +} + +FUNCTION {str:length} { + #1 'resvctra := + { duplicate$ duplicate$ #1 resvctra substring$ = not } + { resvctra #1 + 'resvctra := } + while$ + pop$ + resvctra +} + +FUNCTION {str:replace} { + 'resvstrga := + 'resvstrgb := + 'resvstrgc := + resvstrgb str:length 'resvctra := + "" + { resvstrgc empty$ not } + { resvstrgc #1 resvctra substring$ resvstrgb = + { resvstrga * + resvstrgc #1 resvctra + global.max$ substring$ 'resvstrgc := + } + { resvstrgc #1 #1 substring$ * + resvstrgc #2 global.max$ substring$ 'resvstrgc := + } + if$ + } + while$ +} + +FUNCTION {bol.to.int} { + "true" = + { #1 } + { #0 } + if$ +} + +FUNCTION {str.to.int} { + 'resvstrga := + resvstrga text.length$ 'resvctra := + #1 'resvctrb := + #0 + { resvctrb resvctra > not } + { 'resvctrc := + resvstrga resvctrb #1 substring$ + chr.to.int$ "0" chr.to.int$ - + #0 + { resvctrc #0 > } + { resvctrc #1 - 'resvctrc := + #10 + + } + while$ + + + resvctrb #1 + 'resvctrb := + } + while$ +} + +FUNCTION {andothers} { + duplicate$ num.names$ "{ff}{vv}{ll}{jj}" format.name$ "others" = +} + +FUNCTION {push} { + duplicate$ empty$ + { pop$ "" } + { truncate } + if$ +} + +FUNCTION {push:cite} { + cite$ empty$ + { "Missing citation key" warning$ "" } + { cite$ } + if$ +} + +FUNCTION {push:presort} { + presort empty$ + { "mm" } + { presort purify + #1 #2 substring$ + "l" change.case$ } + if$ +} + +FUNCTION {push:fullname} { + author empty$ not + useauthor + and + { author } + { editor empty$ not + useeditor + and + { editor } + { translator empty$ not + usetranslator + and + { translator } + { "" } + if$ + } + if$ + } + if$ +} + +FUNCTION {push:labelname:translator} { + translator empty$ not + usetranslator + and + { "translator" } + { "" } + if$ +} + +FUNCTION {push:labelname:editor} { + useeditor + { shorteditor empty$ + { editor empty$ + { push:labelname:translator } + { "editor" } + if$ + } + { "shorteditor" } + if$ + } + { push:labelname:translator } + if$ +} + +FUNCTION {push:shortname:translator} { + translator empty$ not + usetranslator + and + { translator } + { "" } + if$ +} + +FUNCTION {push:shortname:editor} { + useeditor + { shorteditor empty$ + { editor empty$ + { push:shortname:translator } + { editor } + if$ + } + { shorteditor } + if$ + } + { push:shortname:translator } + if$ +} + +FUNCTION {push:shortname} { + useauthor + { shortauthor empty$ + { author empty$ + { push:shortname:editor } + { author } + if$ + } + { shortauthor } + if$ + } + { push:shortname:editor } + if$ +} + +FUNCTION {push:sorttitle} { + sorttitle empty$ + { title empty$ + { "" } + { title } + if$ + } + { sorttitle } + if$ + push +} + +FUNCTION {shortname:hash} { + 'tempctrc := + 'templist := + #1 'tempctra := + templist num.names$ 'tempctrb := + templist andothers + { tempctrb #1 - 'tempctrb := } + 'skip$ + if$ + tempctrc #0 = + { tempctrb 'tempctrc := } + { tempctrb tempctrc > + { ctrl.mincitenames 'tempctrc := } + { ctrl.maxcitenames 'tempctrc := } + if$ + } + if$ + "" + { tempctra tempctrc > not + tempctrb #0 > + and } + { templist tempctra "{vv{}}{ll{}}{ff{}}{jj{}}" format.name$ * + tempctra #1 + 'tempctra := + tempctrb #1 - 'tempctrb := + } + while$ + templist andothers + tempctrb #0 > + or + ctrl.nohashothers not + and + { "+" * } + 'skip$ + if$ +} + +FUNCTION {push:name:namehash} { + push:shortname duplicate$ empty$ + { pop$ push:sorttitle duplicate$ empty$ + { pop$ push:cite purify } + 'skip$ + if$ + } + { ctrl.maxcitenames shortname:hash } + if$ +} + +FUNCTION {push:name:fullhash} { + push:fullname duplicate$ empty$ + { pop$ push:sorttitle duplicate$ empty$ + { pop$ push:cite purify } + 'skip$ + if$ + } + { #0 shortname:hash } + if$ +} + +FUNCTION {push:labelname} { + useauthor + { shortauthor empty$ + { author empty$ + { push:labelname:editor } + { "author" } + if$ + } + { "shortauthor" } + if$ + } + { push:labelname:editor } + if$ +} + +FUNCTION {check:sortname} { + sortname empty$ + 'skip$ + { pop$ sortname } + if$ +} + +FUNCTION {warning} { + "\item " swap$ * + warningmsg empty$ + 'skip$ + { warningmsg " " * swap$ * } + if$ + 'warningmsg := +} + +FUNCTION {warning:invalid} { + "Invalid format of field " swap$ enquote * warning +} + +FUNCTION {warning:duplicate} { + "Can't use " swap$ enquote * " + " * swap$ enquote * warning +} + +FUNCTION {pad.number} { + 'tempctra := + duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ + { duplicate$ text.length$ tempctra < } + { "0" swap$ * } + while$ +} + +FUNCTION {extract.number} { + purify$ 'tempstrga := + "" + { tempstrga empty$ not } + { tempstrga #1 #1 substring$ chr.to.int$ duplicate$ + #47 > swap$ + #58 < and + { tempstrga #1 #1 substring$ * } + 'skip$ + if$ + tempstrga #2 global.max$ substring$ 'tempstrga := + } + while$ + #1 #9 substring$ +} + +FUNCTION {format.range} +{ 'tempstrga := + "" + { tempstrga empty$ not } + { tempstrga #1 #1 substring$ "-" = + { "\bibrangedash " * + tempstrga #2 global.max$ substring$ 'tempstrga := + { tempstrga #1 #1 substring$ "-" = } + { tempstrga #2 global.max$ substring$ 'tempstrga := } + while$ + } + { tempstrga #1 #1 substring$ * + tempstrga #2 global.max$ substring$ 'tempstrga := + } + if$ + } + while$ +} + +FUNCTION {format:name:part} { + "\~" "[[[TILDE ACCENT]]]" str:replace + "~" "\bibnamedelima " str:replace + "[[[TILDE ACCENT]]]" "\~" str:replace +} + +FUNCTION {format:name:initials} { + ".-" "\bibinithyphendelim " str:replace + ".~" "\bibinitperiod\bibinitdelim " str:replace + ". " "\bibinitperiod\bibinitdelim " str:replace + "." "\bibinitperiod" str:replace +} + +FUNCTION {is.number} { + #1 + { #0 > } + { duplicate$ #1 #1 substring$ chr.to.int$ + duplicate$ #47 > + swap$ #58 < + and + { #2 global.max$ substring$ + duplicate$ empty$ + { #0 } + { #1 } + if$ + } + { #0 } + if$ + } + while$ + empty$ +} + +FUNCTION {split.date:invalid} { + #0 'tempctra := +} + +FUNCTION {split.date:check.day} { + duplicate$ empty$ + 'skip$ + { duplicate$ is.number + { duplicate$ str.to.int + duplicate$ #0 > + swap$ #32 < + and + { duplicate$ text.length$ #2 < + { "0" swap$ * } + 'skip$ + if$ + } + { pop$ "" split.date:invalid } + if$ + } + { pop$ "" split.date:invalid } + if$ + } + if$ +} + +FUNCTION {split.date:check.month} { + duplicate$ empty$ + 'skip$ + { duplicate$ is.number + { duplicate$ str.to.int + duplicate$ #0 > + swap$ #13 < + and + { duplicate$ text.length$ #2 < + { "0" swap$ * } + 'skip$ + if$ + } + { pop$ "" split.date:invalid } + if$ + } + { pop$ "" split.date:invalid } + if$ + } + if$ +} + +FUNCTION {split.date:check.year} { + duplicate$ empty$ + 'skip$ + { duplicate$ is.number + { duplicate$ "0" = + 'skip$ + { duplicate$ + duplicate$ str.to.int #0 > + swap$ text.length$ #5 < + and + 'skip$ + { pop$ "" split.date:invalid } + if$ + } + if$ + } + { pop$ "" split.date:invalid } + if$ + } + if$ +} + +FUNCTION {split.date:check.date} { + duplicate$ empty$ + 'skip$ + { duplicate$ + duplicate$ text.length$ #0 > + swap$ text.length$ #11 < + and + 'skip$ + { pop$ "" split.date:invalid } + if$ + } + if$ +} + +FUNCTION {split.date:check.range} { + duplicate$ empty$ + 'skip$ + { duplicate$ + duplicate$ text.length$ #0 > + swap$ text.length$ #22 < + and + 'skip$ + { pop$ "" split.date:invalid } + if$ + } + if$ +} + +FUNCTION {split.date:date:part} { + 'tempstrgb := + "" + { tempstrgb #1 #1 substring$ + duplicate$ empty$ + { pop$ #0 } + { "-" = not } + if$ + } + { tempstrgb #1 #1 substring$ * + tempstrgb #2 global.max$ substring$ 'tempstrgb := + } + while$ + tempstrgb #2 global.max$ substring$ +} + +FUNCTION {split.date:date} { + duplicate$ empty$ + { pop$ "" "" "" } + { split.date:date:part swap$ split.date:check.year swap$ + split.date:date:part swap$ split.date:check.month swap$ + split.date:date:part pop$ split.date:check.day + } + if$ +} + +FUNCTION {split.date:range} { + duplicate$ empty$ + { pop$ "" "" } + { 'tempstrgb := + "" + #0 'tempctrb := + { tempstrgb #1 #1 substring$ + duplicate$ empty$ + { pop$ #0 } + { "/" = + { #1 'tempctrb := + #0 + } + { #1 } + if$ + } + if$ + } + { tempstrgb #1 #1 substring$ * + tempstrgb #2 global.max$ substring$ 'tempstrgb := + } + while$ + split.date:check.date + tempstrgb #2 global.max$ substring$ + duplicate$ empty$ + tempctrb #1 = + and + { pop$ open.ended } + 'skip$ + if$ + split.date:check.date + } + if$ +} + +FUNCTION {split.date} { + duplicate$ empty$ + { pop$ pop$ "" "" "" "" "" "" } + { swap$ 'templist := + #1 'tempctra := + split.date:check.range + split.date:range swap$ 'tempstrga := + split.date:date tempstrga + split.date:date + tempctra + 'skip$ + { pop$ pop$ pop$ pop$ pop$ pop$ "" "" "" "" "" "" + templist warning:invalid + } + if$ + } + if$ +} + +% ------------------------------------------------------------------- +% Sorting +% ------------------------------------------------------------------- + +FUNCTION {sortkey:name:format} { + 'templist := + #1 'tempctra := + templist num.names$ 'tempctrb := + templist andothers + { tempctrb #1 - 'tempctrb := } + 'skip$ + if$ + tempctrb ctrl.maxsortnames > + { ctrl.minsortnames 'tempctrc := } + { ctrl.maxsortnames 'tempctrc := } + if$ + "" + { duplicate$ text.length$ entry.max$ #50 - < + tempctra tempctrc > not and + tempctrb #0 > and + } + { useprefix + { templist tempctra "{vv}" format.name$ + duplicate$ empty$ + { pop$ "" } + { "u" change.case$ "t" change.case$ + delimiter.3 * } + if$ + templist tempctra + "{ll}{" delimiter.3 * + "ff}{" delimiter.3 * * + "jj}" * + format.name$ * + } + { templist tempctra + "{ll}{" delimiter.3 * + "ff}{" delimiter.3 * * + "vv}{" delimiter.3 * * + "jj}" * + format.name$ } + if$ + tempctra #1 > + { delimiter.2 swap$ * } + 'skip$ + if$ + * + tempctra #1 + 'tempctra := + tempctrb #1 - 'tempctrb := + } + while$ + templist andothers + tempctrb #0 > + or + ctrl.nosortothers not + and + { delimiter.2 * "zzzz" * } + 'skip$ + if$ +} + +FUNCTION {sortkey:init:label} { + push:shortname duplicate$ empty$ + { pop$ push:sorttitle } + { check:sortname sortkey:name:format } + if$ + purify 'sortkey.name := + sortyear empty$ + { dateyear + dateendyear empty$ + 'skip$ + { dateyear dateendyear = + 'skip$ + { dateendyear open.ended = + 'skip$ + { "-" * dateendyear * } + if$ + } + if$ + } + if$ + } + { sortyear } + if$ + purify 'sortkey.year := + push:sorttitle purify 'sortkey.title := +} + +FUNCTION {sortkey:init:main} { + push:fullname duplicate$ empty$ + { pop$ push:sorttitle } + { check:sortname sortkey:name:format } + if$ + purify 'sortkey.name := +} + +FUNCTION {sortkey:main:string} { + duplicate$ #1 = + { pop$ + sortkey.name delimiter.1 * + sortkey.title * delimiter.1 * + sortkey.year * delimiter.1 * + volume purify #4 pad.number * delimiter.1 * + } + { duplicate$ #2 = + { pop$ + sortkey.name delimiter.1 * + sortkey.year * delimiter.1 * + sortkey.title * delimiter.1 * + volume purify #4 pad.number * delimiter.1 * + } + { #3 = + { sortkey.name delimiter.1 * + sortkey.year * delimiter.1 * + volume purify #4 pad.number * delimiter.1 * + sortkey.title * + } + { "" } + if$ + } + if$ + } + if$ +} + +FUNCTION {sortkey:main:date:year} { + duplicate$ empty$ + { pop$ } + { extract.number #1 #4 substring$ + duplicate$ empty$ + { pop$ } + { swap$ pop$ } + if$ + } + if$ +} + +FUNCTION {sortkey:main:date} { + duplicate$ #1 = + { pop$ + sortyear empty$ + { "9999" dateyear sortkey:main:date:year } + { sortyear purify } + if$ + } + { #2 = + { sortyear empty$ + { "0" dateyear sortkey:main:date:year } + { sortyear purify } + if$ + str.to.int #9999 swap$ - int.to.str$ + } + { "" } + if$ + } + if$ + sortkey.name * delimiter.1 * + sortkey.title * delimiter.1 * + volume purify #4 pad.number * delimiter.1 * +} + +FUNCTION {sortkey:main} { + ctrl.sorting #0 = + { sortkey.nosort } + { sortkey:init:main + "" + ctrl.sorting #10 < + { sortkey empty$ + { ctrl.sorting sortkey:main:string } + { sortkey } + if$ + } + { ctrl.sorting #20 < + { shorthand empty$ + { sortkey.alpha * } + { shorthand purify * } + if$ + duplicate$ empty$ + 'skip$ + { delimiter.1 * } + if$ + ctrl.sorting #10 - sortkey:main:string + } + { ctrl.sorting #30 < + { sortkey empty$ + { ctrl.sorting #20 - sortkey:main:date } + { sortkey } + if$ + } + { push:cite purify } + if$ + } + if$ + } + if$ + * + duplicate$ #1 text.prefix$ "u" change.case$ 'sortinit := + push:presort delimiter.1 * swap$ * + } + if$ + truncate +} + +% ------------------------------------------------------------------- +% Output +% ------------------------------------------------------------------- + +FUNCTION {output:indent:field} { + duplicate$ empty$ + 'skip$ + { " " swap$ * write$ newline$ } + if$ +} + +FUNCTION {output:indent:subfield} { + duplicate$ empty$ + 'skip$ + { " " swap$ * write$ newline$ } + if$ +} + +FUNCTION {output:indent:subfield:keyval} { + duplicate$ empty$ + 'skip$ + { " " swap$ * write$ newline$ } + if$ +} + +FUNCTION {output:write:field} { + duplicate$ empty$ + { pop$ pop$ } + { swap$ "\field" swap$ wrap:braces * + swap$ wrap:braces * output:indent:field } + if$ +} + +FUNCTION {output:write:year} { + duplicate$ empty$ + { pop$ pop$ } + { duplicate$ open.ended = + { pop$ "" } + 'skip$ + if$ + swap$ "\field" swap$ wrap:braces * + swap$ wrap:braces * output:indent:field + } + if$ +} + +FUNCTION {output:write:multi} { + duplicate$ empty$ + { pop$ pop$ } + { swap$ "\field" swap$ wrap:braces * "{%" * output:indent:field + "%" * output:indent:field + "}" output:indent:field + } + if$ +} + +FUNCTION {output:write:bool} { + #0 > + { "\true" } + { "\false" } + if$ + swap$ wrap:braces * output:indent:field +} + +FUNCTION {output:write:count} { + int.to.str$ swap$ "\count" swap$ wrap:braces * + swap$ wrap:braces * output:indent:field +} + +FUNCTION {output:write:string} { + duplicate$ empty$ + { pop$ pop$ } + { swap$ "\strng" swap$ wrap:braces * + swap$ wrap:braces * output:indent:field } + if$ +} + +FUNCTION {output:write:range} { + duplicate$ empty$ + { pop$ pop$ } + { format.range output:write:field } + if$ +} + +FUNCTION {output:write:number} { + duplicate$ empty$ + { pop$ pop$ } + { duplicate$ is.number + 'skip$ + { swap$ warning:invalid "" } + if$ + output:write:field + } + if$ +} + +FUNCTION {output:write:gender} { + duplicate$ empty$ + { pop$ pop$ } + { 'tempstrga := + tempstrga "sf" = + tempstrga "sm" = or + tempstrga "sn" = or + tempstrga "pf" = or + tempstrga "pm" = or + tempstrga "pn" = or + tempstrga "pp" = or + { tempstrga output:write:field } + { warning:invalid } + if$ + } + if$ +} + +FUNCTION {output:write:verb} { + duplicate$ empty$ + { pop$ pop$ } + { 'tempstrga := + "\verb" swap$ wrap:braces * output:indent:field + { tempstrga empty$ not } + { "\verb " tempstrga #1 ctrl.maxline #10 - substring$ * + output:indent:field + tempstrga ctrl.maxline #9 - global.max$ substring$ 'tempstrga := + } + while$ + "\endverb" output:indent:field } + if$ +} + +FUNCTION {output:write:name:hash} { + templist tempctra "{v{}}{l{}}{f{}}{j{}}" format.name$ purify$ +} + +FUNCTION {output:write:name:last} { + templist tempctra "{ll}" format.name$ + duplicate$ 'tempstrga := + duplicate$ empty$ + 'pop$ + { format:name:part + "family" combine:key:value output:indent:subfield:keyval + templist tempctra "{l.}" format.name$ + duplicate$ tempstrga "." * = + { duplicate$ text.length$ #1 - text.prefix$ } + 'skip$ + if$ + format:name:initials + "familyi" combine:key:value output:indent:subfield:keyval + } + if$ +} + +FUNCTION {output:write:name:first} { + templist tempctra "{ff}" format.name$ + duplicate$ 'tempstrga := + duplicate$ empty$ + 'pop$ + { format:name:part + "given" combine:key:value output:indent:subfield:keyval + templist tempctra "{f.}" format.name$ + duplicate$ tempstrga "." * = + { duplicate$ text.length$ #1 - text.prefix$ } + 'skip$ + if$ + format:name:initials + "giveni" combine:key:value output:indent:subfield:keyval + } + if$ +} + +FUNCTION {output:write:name:prefix} { + templist tempctra "{vv}" format.name$ + duplicate$ 'tempstrga := + duplicate$ duplicate$ text.length$ duplicate$ substring$ "'" = + { #1 'tempctrc := } + { #0 'tempctrc := } + if$ + duplicate$ empty$ + 'pop$ + { format:name:part + "prefix" combine:key:value output:indent:subfield:keyval + templist tempctra "{v.}" format.name$ + tempctrc + { duplicate$ text.length$ #1 - text.prefix$ "'" * } + { duplicate$ tempstrga "." * = + { duplicate$ text.length$ #1 - text.prefix$ } + 'skip$ + if$ + } + if$ + format:name:initials + "prefixi" combine:key:value output:indent:subfield:keyval + } + if$ +} + +FUNCTION {output:write:name:suffix} { + templist tempctra "{jj}" format.name$ + duplicate$ 'tempstrga := + duplicate$ empty$ + 'pop$ + { format:name:part + "suffix" combine:key:value output:indent:subfield:keyval + templist tempctra "{j.}" format.name$ + duplicate$ tempstrga "." * = + { duplicate$ text.length$ #1 - text.prefix$ } + 'skip$ + if$ + format:name:initials + "suffixi" combine:key:value output:indent:subfield:keyval + } + if$ +} + +FUNCTION {output:write:name} { + duplicate$ empty$ + { pop$ pop$ } + { 'templist := + 'tempstrga := + #1 'tempctra := + templist num.names$ 'tempctrb := + templist andothers + { tempctrb #1 - 'tempctrb := + "more" tempstrga * #1 output:write:bool + % not actually required, biblatex should resolve this + tempstrga push:labelname = + { "morelabelname" #1 output:write:bool } + 'skip$ + if$ + } + 'skip$ + if$ + "\name" tempstrga wrap:braces * + tempctrb int.to.str$ wrap:braces * + "" wrap:braces * + "{%" * output:indent:field + { tempctrb #0 > } + { "{{hash=" output:write:name:hash * "}{%" * output:indent:subfield + output:write:name:prefix + output:write:name:last + output:write:name:suffix + output:write:name:first + "}}%" output:indent:subfield + tempctra #1 + 'tempctra := + tempctrb #1 - 'tempctrb := + } + while$ + "}" output:indent:field + } + if$ +} + +FUNCTION {output:write:list} { + duplicate$ empty$ + { pop$ pop$ } + { 'templist := + 'tempstrga := + templist num.names$ 'tempctra := + templist andothers + { tempctra #1 - 'tempctra := + "more" tempstrga * #1 output:write:bool + } + 'skip$ + if$ + "\list" tempstrga wrap:braces * + tempctra int.to.str$ wrap:braces * + "{%" * output:indent:field + #1 'tempctra := + #1 'tempctrb := + #0 'tempctrc := + { templist purify tempctrb global.max$ substring$ num.names$ #0 > } + { templist tempctrb #1 substring$ "{" = + { tempctrc #1 + 'tempctrc := + tempctrb #1 + 'tempctrb := } + { templist tempctrb #1 substring$ "}" = + { tempctrc #1 - 'tempctrc := + tempctrb #1 + 'tempctrb := } + { templist tempctrb #5 substring$ + duplicate$ " AND " = + swap$ " and " = + or + tempctrc #1 < + and + { templist tempctra tempctrb tempctra - substring$ + wrap:braces "%" * output:indent:subfield + tempctrb #5 + duplicate$ + 'tempctra := + 'tempctrb := + } + { tempctrb #1 + 'tempctrb := } + if$ + } + if$ + } + if$ + } + while$ + templist tempctra global.max$ substring$ + duplicate$ "others" = + { pop$ } + { wrap:braces "%" * output:indent:subfield } + if$ + "}" output:indent:field + } + if$ +} + +FUNCTION {output:specials} { + entryset empty$ + 'skip$ + { ctrl:set + { "\set" } + { "\inset" } + if$ + entryset wrap:braces * output:indent:field + } + if$ + xref empty$ + 'skip$ + { "\xref" xref wrap:braces * output:indent:field } + if$ + keywords empty$ + 'skip$ + { "\keyw" keywords wrap:braces * output:indent:field } + if$ + "entrysubtype" entrysubtype output:write:field + "crossref" crossref output:write:string + "execute" execute output:write:field + "namehash" namehash output:write:string + "fullhash" fullhash output:write:string + "gender" gender output:write:gender + "shorthand" shorthand output:write:field + shorthand empty$ + { label } + { shorthand } + if$ + "label" swap$ output:write:field + "labelnamesource" push:labelname output:write:field + shorttitle empty$ + { title empty$ + { "" } + { "title" } + if$ + } + { "shorttitle" } + if$ + "labeltitlesource" swap$ output:write:field + ctrl.labelalpha + { "labelalpha" labelalpha output:write:field + "extraalpha" extraalpha output:write:field + } + 'skip$ + if$ + ctrl:labeldate + dateyear empty$ not + and + { "labelyear" dateyear output:write:field + dateendyear empty$ + 'skip$ + { dateyear dateendyear = + 'skip$ + { dateendyear open.ended = + 'skip$ + { "labelendyear" dateendyear output:write:field } + if$ + } + if$ + } + if$ + "extradate" extradate output:write:field + "labeldatesource" "year" output:write:field + } + 'skip$ + if$ + "sortinit" sortinit output:write:field + "sortinithash" sortinit output:write:field + singletitle + { "singletitle" #1 output:write:bool } + 'skip$ + if$ +} + +FUNCTION {output:names} { + "author" author output:write:name + "authortype" authortype output:write:field + "shortauthor" shortauthor output:write:name + "bookauthor" bookauthor output:write:name + "editor" editor output:write:name + "editortype" editortype output:write:field + "editora" editora output:write:name + "editoratype" editoratype output:write:field + "editorb" editorb output:write:name + "editorbtype" editorbtype output:write:field + "editorc" editorc output:write:name + "editorctype" editorctype output:write:field + "shorteditor" shorteditor output:write:name + "translator" translator output:write:name + "annotator" annotator output:write:name + "commentator" commentator output:write:name + "introduction" introduction output:write:name + "foreword" foreword output:write:name + "afterword" afterword output:write:name + "holder" holder output:write:name +} + +FUNCTION {output:lists} { + "language" language output:write:list + "organization" organization output:write:list + "origlanguage" origlanguage output:write:list + "origlocation" origlocation output:write:list + "origpublisher" origpublisher output:write:list + "publisher" publisher output:write:list +} + +FUNCTION {output:fields.1} { + "abstract" abstract output:write:multi + "addendum" addendum output:write:field + "bookpagination" bookpagination output:write:field + "booksubtitle" booksubtitle output:write:field + "booktitleaddon" booktitleaddon output:write:field + "booktitle" booktitle output:write:field + "chapter" chapter output:write:field + "doi" doi output:write:verb + "edition" edition output:write:field + "eid" eid output:write:field + "eprint" eprint output:write:verb + "eventtitle" eventtitle output:write:field + "eventtitleaddon" eventtitleaddon output:write:field + "howpublished" howpublished output:write:field + "indexsorttitle" indexsorttitle output:write:field + "indextitle" indextitle output:write:field + "isan" isan output:write:field + "isbn" isbn output:write:field + "ismn" ismn output:write:field +} + +FUNCTION {output:fields.2} { + "isrn" isrn output:write:field + "issn" issn output:write:field + "issue" issue output:write:field + "issuesubtitle" issuesubtitle output:write:field + "issuetitle" issuetitle output:write:field + "iswc" iswc output:write:field + "journalsubtitle" journalsubtitle output:write:field + "langidopts" langidopts output:write:field + "library" library output:write:field + "mainsubtitle" mainsubtitle output:write:field + "maintitleaddon" maintitleaddon output:write:field + "maintitle" maintitle output:write:field + "nameaddon" nameaddon output:write:field + "note" note output:write:field + "number" number output:write:field + "origtitle" origtitle output:write:field + "pages" pages output:write:range + "pagetotal" pagetotal output:write:range + "pagination" pagination output:write:field + "part" part output:write:range +} + +FUNCTION {output:fields.3} { + "pubstate" pubstate output:write:field + "reprinttitle" reprinttitle output:write:field + "series" series output:write:field + "shorthandintro" shorthandintro output:write:field + "shortjournal" shortjournal output:write:field + "shortseries" shortseries output:write:field + "shorttitle" shorttitle output:write:field + "subtitle" subtitle output:write:field + "titleaddon" titleaddon output:write:field + "title" title output:write:field + "url" url output:write:verb + "venue" venue output:write:field + "version" version output:write:field + "volumes" volumes output:write:field + "volume" volume output:write:field +} + +FUNCTION {output:dates.1} { + "date" date split.date + "day" swap$ output:write:field + duplicate$ empty$ + { month empty$ + 'skip$ + { month is.number + { month str.to.int + duplicate$ #0 > + swap$ #13 < + and + { pop$ month #2 pad.number } + { "month" warning:invalid } + if$ + } + { "month" warning:invalid } + if$ + } + if$ + } + { month empty$ + 'skip$ + { "month" "date" warning:duplicate } + if$ + } + if$ + "month" swap$ output:write:field + duplicate$ empty$ + { year empty$ + 'skip$ + { pop$ year } + if$ + } + { year empty$ + 'skip$ + { "year" "date" warning:duplicate } + if$ + } + if$ + "year" swap$ output:write:field + "endday" swap$ output:write:field + "endmonth" swap$ output:write:field + "endyear" swap$ output:write:year +} + +FUNCTION {output:dates.2} { + "origdate" origdate split.date + "origday" swap$ output:write:field + "origmonth" swap$ output:write:field + "origyear" swap$ output:write:field + "origendday" swap$ output:write:field + "origendmonth" swap$ output:write:field + "origendyear" swap$ output:write:year + "eventdate" eventdate split.date + "eventday" swap$ output:write:field + "eventmonth" swap$ output:write:field + "eventyear" swap$ output:write:field + "eventendday" swap$ output:write:field + "eventendmonth" swap$ output:write:field + "eventendyear" swap$ output:write:year + "urldate" urldate split.date + "urlday" swap$ output:write:field + "urlmonth" swap$ output:write:field + "urlyear" swap$ output:write:field + "urlendday" swap$ output:write:field + "urlendmonth" swap$ output:write:field + "urlendyear" swap$ output:write:year +} + +FUNCTION {output:user} { + "namea" namea output:write:name + "nameatype" nameatype output:write:field + "nameb" nameb output:write:name + "namebtype" namebtype output:write:field + "namec" namec output:write:name + "namectype" namectype output:write:field + "lista" lista output:write:list + "listb" listb output:write:list + "listc" listc output:write:list + "listd" listd output:write:list + "liste" liste output:write:list + "listf" listf output:write:list + "usera" usera output:write:field + "userb" userb output:write:field + "userc" userc output:write:field + "userd" userd output:write:field + "usere" usere output:write:field + "userf" userf output:write:field + "verba" verba output:write:verb + "verbb" verbb output:write:verb + "verbc" verbc output:write:verb +} + +FUNCTION {output:warning} { + warningmsg empty$ + 'skip$ + { "\warn" warningmsg wrap:braces * output:indent:field } + if$ +} + +FUNCTION {output:compat.1} { + "langid" langid + duplicate$ empty$ + { pop$ hyphenation } + { hyphenation empty$ + 'skip$ + { "hyphenation" "langid" warning:duplicate } + if$ + } + if$ + output:write:field + "location" location + duplicate$ empty$ + { pop$ address } + { address empty$ + 'skip$ + { "address" "location" warning:duplicate } + if$ + } + if$ + output:write:list + "institution" institution + duplicate$ empty$ + { pop$ school } + { school empty$ + 'skip$ + { "school" "institution" warning:duplicate } + if$ + } + if$ + output:write:list + "file" file + duplicate$ empty$ + { pop$ pdf } + { pdf empty$ + 'skip$ + { "pdf" "file" warning:duplicate } + if$ + } + if$ + output:write:verb +} + +FUNCTION {output:compat.2} { + "type" type + duplicate$ empty$ + { type$ "patent" = + type$ "techreport" = or + type$ "phdthesis" = or + { pop$ type$ } + { type$ "mastersthesis" = + { pop$ "mathesis" } + 'skip$ + if$ + } + if$ + } + 'skip$ + if$ + output:write:field + "journaltitle" journaltitle + duplicate$ empty$ + { pop$ journal } + { journal empty$ + 'skip$ + { "journal" "journaltitle" warning:duplicate } + if$ + } + if$ + output:write:field + "annotation" annotation + duplicate$ empty$ + { pop$ annote } + { annote empty$ + 'skip$ + { "annote" "annotation" warning:duplicate } + if$ + } + if$ + output:write:multi +} + +FUNCTION {output:compat.3} { + "eprinttype" eprinttype + duplicate$ empty$ + { pop$ archiveprefix } + { archiveprefix empty$ + 'skip$ + { "archiveprefix" "eprinttype" warning:duplicate } + if$ + } + if$ + output:write:field + "eprintclass" eprintclass + duplicate$ empty$ + { pop$ primaryclass } + { primaryclass empty$ + 'skip$ + { "primaryclass" "eprintclass" warning:duplicate } + if$ + } + if$ + output:write:field +} + +FUNCTION {output:debug} { + "% sort.key$ = " sort.key$ * maxline write$ newline$ + sort.year empty$ + 'skip$ + { "% sort.year = " sort.year * maxline write$ newline$ } + if$ + sort.alph empty$ + 'skip$ + { "% sort.alph = " sort.alph * maxline write$ newline$ } + if$ +} + +FUNCTION {output:entry} { + 'tempstrga := + newline$ + ctrl.debug + { output:debug } + 'skip$ + if$ + " \entry" + push:cite wrap:braces * + tempstrga wrap:braces * + entryoptions wrap:braces * + write$ newline$ + output:names + output:lists + output:specials + output:fields.1 + output:fields.2 + output:fields.3 + output:compat.1 + output:compat.2 + output:compat.3 + output:dates.1 + output:dates.2 + output:user + output:warning + " \endentry" write$ newline$ +} + +FUNCTION {control} { skip$ } +FUNCTION {set} { type$ output:entry } + +FUNCTION {article} { type$ output:entry } +FUNCTION {bibnote} { type$ output:entry } +FUNCTION {book} { type$ output:entry } +FUNCTION {mvbook} { type$ output:entry } +FUNCTION {inbook} { type$ output:entry } +FUNCTION {bookinbook} { type$ output:entry } +FUNCTION {booklet} { type$ output:entry } +FUNCTION {collection} { type$ output:entry } +FUNCTION {mvcollection} { type$ output:entry } +FUNCTION {incollection} { type$ output:entry } +FUNCTION {manual} { type$ output:entry } +FUNCTION {misc} { type$ output:entry } +FUNCTION {online} { type$ output:entry } +FUNCTION {patent} { type$ output:entry } +FUNCTION {periodical} { type$ output:entry } +FUNCTION {proceedings} { type$ output:entry } +FUNCTION {mvproceedings} { type$ output:entry } +FUNCTION {inproceedings} { type$ output:entry } +FUNCTION {reference} { type$ output:entry } +FUNCTION {mvreference} { type$ output:entry } +FUNCTION {inreference} { type$ output:entry } +FUNCTION {report} { type$ output:entry } +FUNCTION {suppbook} { type$ output:entry } +FUNCTION {suppcollection} { type$ output:entry } +FUNCTION {suppperiodical} { type$ output:entry } +FUNCTION {thesis} { type$ output:entry } +FUNCTION {unpublished} { type$ output:entry } + +FUNCTION {artwork} { type$ output:entry } +FUNCTION {audio} { type$ output:entry } +FUNCTION {commentary} { type$ output:entry } +FUNCTION {image} { type$ output:entry } +FUNCTION {jurisdiction} { type$ output:entry } +FUNCTION {legal} { type$ output:entry } +FUNCTION {legislation} { type$ output:entry } +FUNCTION {letter} { type$ output:entry } +FUNCTION {movie} { type$ output:entry } +FUNCTION {music} { type$ output:entry } +FUNCTION {performance} { type$ output:entry } +FUNCTION {review} { type$ output:entry } +FUNCTION {software} { type$ output:entry } +FUNCTION {standard} { type$ output:entry } +FUNCTION {video} { type$ output:entry } + +FUNCTION {customa} { type$ output:entry } +FUNCTION {customb} { type$ output:entry } +FUNCTION {customc} { type$ output:entry } +FUNCTION {customd} { type$ output:entry } +FUNCTION {custome} { type$ output:entry } +FUNCTION {customf} { type$ output:entry } + +FUNCTION {conference} { "inproceedings" output:entry } +FUNCTION {electronic} { "online" output:entry } +FUNCTION {mastersthesis} { "thesis" output:entry } +FUNCTION {other} { "misc" output:entry } +FUNCTION {phdthesis} { "thesis" output:entry } +FUNCTION {techreport} { "report" output:entry } +FUNCTION {www} { "online" output:entry } +FUNCTION {default.type} { "misc" output:entry } + +% ------------------------------------------------------------------- +% Input +% ------------------------------------------------------------------- + +FUNCTION {input:control:parse} { + 'tempstrga := + "" 'tempstrgb := + #1 'tempctra := + { tempstrga empty$ not + tempctra and } + { tempstrga #1 #1 substring$ ":" = + { #0 'tempctra := } + { tempstrgb tempstrga #1 #1 substring$ * 'tempstrgb := } + if$ + tempstrga #2 global.max$ substring$ 'tempstrga := + } + while$ + tempstrga + tempstrgb +} + +FUNCTION {input:control:options} { + input:control:parse str.to.int +} + +% This version corresponds to the .bcf version, *not* the biblatex version! +FUNCTION {input:control:version} { + input:control:parse + "$Revision: 3.6 $" + #12 entry.max$ substring$ + #-3 entry.max$ substring$ + 'tempstrga := + duplicate$ tempstrga = + { pop$ } + { "bcf version mismatch: biblatex.bst has " tempstrga * + ", but biblatex.sty has " * swap$ * warning$ + " The bcf version need not be the same as the biblatex version." + top$ + pop$ "" } + if$ +} + +FUNCTION {input:control} { + options empty$ + 'skip$ + { options input:control:version + duplicate$ empty$ + { pop$ } + { input:control:options 'ctrl.debug := + input:control:options 'ctrl.bibtex8 := + input:control:options 'ctrl.cssort := + input:control:options 'ctrl.useprefix := + input:control:options 'ctrl.useauthor := + input:control:options 'ctrl.useeditor := + input:control:options 'ctrl.usetranslator := + input:control:options 'ctrl.labelalpha := + input:control:options 'ctrl.labeldate := + input:control:options 'ctrl.singletitle := + input:control:options 'ctrl.sorting := + input:control:options 'ctrl.maxcitenames := + input:control:options 'ctrl.mincitenames := + input:control:options 'ctrl.maxsortnames := + input:control:options 'ctrl.minsortnames := + input:control:options 'ctrl.nohashothers := + input:control:options 'ctrl.nosortothers := + input:control:options 'ctrl.maxalphanames := + input:control:options 'ctrl.minalphanames := + input:control:options 'ctrl.maxline := + input:control:parse 'ctrl.alphaothers := + input:control:parse 'ctrl.sortalphaothers := + 'ctrl.sortstr := + } + if$ + ctrl.maxline #49 < + { #49 'ctrl.maxline := } + { ctrl.maxline #79 > + { #79 'ctrl.maxline := } + 'skip$ + if$ + } + if$ + } + if$ +} + +FUNCTION {input:options:add} { + entryoptions empty$ + 'skip$ + { entryoptions ", " * 'entryoptions := } + if$ + entryoptions swap$ * 'entryoptions := + duplicate$ empty$ + { pop$ } + { "=" swap$ * entryoptions swap$ * 'entryoptions := } + if$ +} + +FUNCTION {input:options:known} { + duplicate$ empty$ + { tempstrgb input:options:add + #1 } + { duplicate$ "true" = + { pop$ "" tempstrgb input:options:add + #1 } + { duplicate$ tempstrgb input:options:add + bol.to.int + } + if$ + } + if$ +} + +FUNCTION {input:options:parse} { + 'tempstrgb := + tempstrgb "useprefix" = + { input:options:known 'useprefix := } + { tempstrgb "useauthor" = + { input:options:known 'useauthor := } + { tempstrgb "useeditor" = + { input:options:known 'useeditor := } + { tempstrgb "usetranslator" = + { input:options:known 'usetranslator := } + { tempstrgb "skipbib" = + { input:options:known 'skipbib := } + { tempstrgb "skiplos" = + { input:options:known 'skiplos := } + { tempstrgb "skiplab" = + { input:options:known 'skiplab := } + { tempstrgb "dataonly" = + { input:options:known + duplicate$ 'skipbib := + duplicate$ 'skiplos := + 'skiplab := + } + { tempstrgb input:options:add } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ +} + +FUNCTION {input:options:extract} { + 'tempstrgb := + #1 'tempctrb := + { tempstrgb text.length$ #0 > } + { tempstrgb tempctrb #1 substring$ "=" = + { tempstrgb tempctrb #1 + global.max$ substring$ + tempstrgb #1 tempctrb #1 - substring$ + input:options:parse + "" 'tempstrgb := + } + { tempstrgb text.length$ tempctrb = + { "" tempstrgb input:options:parse + "" 'tempstrgb := + } + { tempctrb #1 + 'tempctrb := } + if$ + } + if$ + } + while$ +} + +FUNCTION {input:options} { + options 'tempstrga := + #1 'tempctra := + { tempstrga text.length$ #0 > } + { tempstrga tempctra #1 substring$ "," = + { tempstrga #1 tempctra #1 - substring$ input:options:extract + tempctra #1 + 'tempctra := + { tempstrga tempctra #1 substring$ " " = + tempctra tempstrga text.length$ > not + and + } + { tempctra #1 + 'tempctra := } + while$ + tempstrga tempctra global.max$ substring$ 'tempstrga := + #1 'tempctra := + } + { tempstrga text.length$ tempctra = + { tempstrga input:options:extract + "" 'tempstrga := + } + { tempctra #1 + 'tempctra := } + if$ + } + if$ + } + while$ +} + +FUNCTION {input:iterate} { + ctrl:control + { input:control } + { citecount #1 + 'citecount := + citecount int.to.str$ #9 pad.number 'sortkey.nosort := + ctrl.useprefix 'useprefix := + ctrl.useauthor 'useauthor := + ctrl.useeditor 'useeditor := + ctrl.usetranslator 'usetranslator := + ctrl.singletitle + { #1 'singletitle := } + 'skip$ + if$ + options empty$ + 'skip$ + { input:options } + if$ + ctrl:set entryset empty$ or + 'skip$ + { #1 'skipbib := + #1 'skiplos := + #1 'skiplab := + } + if$ + "date" date split.date + pop$ pop$ 'dateyear := + pop$ pop$ 'dateendyear := + dateyear empty$ + { year empty$ + 'skip$ + { year 'dateyear := } + if$ + } + 'skip$ + if$ + } + if$ +} + +READ + +EXECUTE {initialize} + +ITERATE {input:iterate} + +% ------------------------------------------------------------------- +% Generate labels +% ------------------------------------------------------------------- + +FUNCTION {makelabel:name:format} { + 'templist := + #1 'tempctra := + templist num.names$ 'tempctrb := + templist andothers + { tempctrb #1 - 'tempctrb := } + 'skip$ + if$ + tempctrb ctrl.maxcitenames > + { ctrl.mincitenames 'tempctrc := } + { ctrl.maxcitenames 'tempctrc := } + if$ + "" + { duplicate$ text.length$ entry.max$ #50 - < + tempctra tempctrc > not and + tempctrb #0 > and + } + { useprefix + { templist tempctra "{vv}" format.name$ + duplicate$ empty$ + { pop$ "" } + { "u" change.case$ "t" change.case$ + delimiter.3 * } + if$ + } + { "" } + if$ + templist tempctra "{ll}" format.name$ * + tempctra #1 > + { delimiter.2 swap$ * } + 'skip$ + if$ + * + tempctra #1 + 'tempctra := + tempctrb #1 - 'tempctrb := + } + while$ + templist andothers + tempctrb #0 > + or + ctrl.nohashothers not + and + { delimiter.2 * "zzzz" * } + 'skip$ + if$ +} + + +FUNCTION {makelabel:name:full} { + duplicate$ num.names$ #1 = + { #1 + "{ll}{" delimiter.3 * + "ff}{" delimiter.3 * * + "vv}{" delimiter.3 * * + "jj}" * + format.name$ + } + { pop$ "" } + if$ +} + +FUNCTION {makelabel:alpha:format} { + duplicate$ empty$ + { pop$ "" } + { 'templist := + #1 'tempctra := + templist andothers + { templist num.names$ #1 - 'tempctrb := } + { templist num.names$ 'tempctrb := } + if$ + tempctrb ctrl.maxalphanames > + { ctrl.minalphanames 'tempctrb := } + 'skip$ + if$ + tempctrb #1 > + { "" + { tempctrb #0 > } + { templist tempctra "{l{}}" format.name$ * + tempctra #1 + 'tempctra := + tempctrb #1 - 'tempctrb := + } + while$ + } + { templist #1 "{l{}}" format.name$ } + if$ + duplicate$ text.length$ #2 < + { pop$ + useprefix + { templist #1 "{v{}}" format.name$ #2 text.prefix$ + templist #1 "{ll}" format.name$ * + } + { templist #1 "{ll}" format.name$ } + if$ + #3 text.prefix$ + } + 'skip$ + if$ + } + if$ + templist num.names$ ctrl.maxalphanames > + templist andothers + or + { ctrl.alphaothers * } + 'skip$ + if$ +} + +FUNCTION {makelabel:alpha:year} { + dateyear purify + #1 #4 substring$ + #-1 #2 substring$ +} + +FUNCTION {makelabel:hash:format} { + 'templist := + #1 'tempctra := + templist num.names$ 'tempctrb := + templist andothers + { tempctrb #1 - 'tempctrb := } + 'skip$ + if$ + tempctrb ctrl.maxcitenames > + { ctrl.mincitenames 'tempctrc := } + { ctrl.maxcitenames 'tempctrc := } + if$ + "" + { tempctra tempctrc > not + tempctrb #0 > + and } + { templist tempctra + useprefix + { "{v{}}{l{}}{j{}}{f{}}" } + { "{l{}}{j{}}{f{}}{v{}}" } + if$ + format.name$ purify$ * + tempctra #1 + 'tempctra := + tempctrb #1 - 'tempctrb := + } + while$ + templist andothers + tempctrb #0 > + or + ctrl.nohashothers not + and + { "+" * } + 'skip$ + if$ +} + +FUNCTION {makelabel:hash:format:full} { + 'templist := + #1 'tempctra := + templist num.names$ 'tempctrb := + templist andothers + { tempctrb #1 - 'tempctrb := } + 'skip$ + if$ + "" + { tempctrb #0 > } + { templist tempctra + useprefix + { "{v{}}{l{}}{j{}}{f{}}" } + { "{l{}}{j{}}{f{}}{v{}}" } + if$ + format.name$ purify$ * + tempctra #1 + 'tempctra := + tempctrb #1 - 'tempctrb := + } + while$ + templist andothers + ctrl.nohashothers not + and + { "+" * } + 'skip$ + if$ +} + +FUNCTION {makelabel:ctrl:alpha} { + ctrl:labelalpha + { shorthand empty$ + { label empty$ + { push:cite purify #1 #3 substring$ + "u" change.case$ "t" change.case$ } + { label makelabel:alpha:year * } + if$ + } + { shorthand } + if$ + } + { "" } + if$ +} + +FUNCTION {makelabel:ctrl:alpha:format} { + ctrl:labelalpha + { shorthand empty$ + { label empty$ + { makelabel:alpha:format } + { pop$ label } + if$ + makelabel:alpha:year * + } + { pop$ + shorthand + } + if$ + } + { pop$ + "" + } + if$ +} + +FUNCTION {makelabel:label} { + push:shortname empty$ + { push:sorttitle 'label.name := + makelabel:ctrl:alpha 'labelalpha := + } + { push:shortname + duplicate$ makelabel:name:format 'label.name := + duplicate$ makelabel:hash:format 'namehash := + makelabel:ctrl:alpha:format 'labelalpha := + } + if$ + push:fullname empty$ + 'skip$ + { push:fullname makelabel:hash:format:full 'fullhash := } + if$ +} + +% ------------------------------------------------------------------- +% Sort labels +% ------------------------------------------------------------------- + +FUNCTION {labelsort:label} { + sortkey:init:label + makelabel:label +} + +FUNCTION {labelsort:main} { + ctrl:skiplab not + ctrl.singletitle ctrl.labeldate or + and + { label.name purify delimiter.1 * + sortkey.year * delimiter.1 * + push:presort * delimiter.1 * + sortkey empty$ + { sortkey.name * delimiter.1 * sortkey.title } + { sortkey } + if$ + * + truncate + } + { "" } + if$ + duplicate$ + 'sort.key$ := + 'sort.year := +} + +FUNCTION {labelsort:alph} { + ctrl:labelalpha + { labelalpha ctrl.alphaothers ctrl.sortalphaothers str:replace + purify delimiter.1 * + push:presort * delimiter.1 * + sortkey empty$ + { ctrl.sorting #10 > + ctrl.sorting #20 < + and + { ctrl.sorting #10 - } + { #2 } + if$ + sortkey:main:string + } + { sortkey } + if$ + * + truncate + } + { "" } + if$ + duplicate$ + 'sort.key$ := + 'sort.alph := +} + +FUNCTION {labelsort:hash} { + ctrl:control + namehash empty$ + or + { "zzzz" 'sort.key$ := } + { namehash purify delimiter.1 * + push:shortname duplicate$ empty$ + { pop$ "zzzz" * } + { sortkey:name:format purify * } + if$ + truncate 'sort.key$ := + } + if$ +} + +FUNCTION {labelsort:fullhash} { + ctrl:control + fullhash empty$ + or + { "zzzz" 'sort.key$ := } + { fullhash purify delimiter.1 * + push:shortname duplicate$ empty$ + { pop$ "zzzz" * } + { sortkey:name:format purify * } + if$ + truncate 'sort.key$ := + } + if$ +} + +% ------------------------------------------------------------------- + +FUNCTION {labelsort:init} { + "" 'last.name := + "" 'last.year := + "" 'last.hash := + "" 'last.extra := + #1 'last.extra.num := +} + +FUNCTION {labelsort:main:init} { + "" 'last.name := +} + +FUNCTION {labelsort:hash:init} { + "" 'last.name := + #1 'last.extra.num := +} + +FUNCTION {labelsort:namehash:iterate} { + ctrl:control + namehash empty$ + or + 'skip$ + { namehash last.hash = + { push:name:namehash last.name = + 'skip$ + { last.extra.num #1 + 'last.extra.num := } + if$ + last.extra.num int.to.str$ 'labelhash := + } + { #1 'last.extra.num := + "1" 'labelhash := + } + if$ + namehash 'last.hash := + push:name:namehash 'last.name := + } + if$ +} + +FUNCTION {labelsort:namehash:reverse} { + ctrl:control + namehash empty$ + or + 'skip$ + { push:name:namehash last.name = + { last.extra "1" = + { "1" 'labelhash := } + 'skip$ + if$ + } + { last.extra "2" = + { "1" 'labelhash := } + 'skip$ + if$ + } + if$ + labelhash 'last.extra := + push:name:namehash 'last.name := + namehash labelhash * 'namehash := + } + if$ +} + +FUNCTION {labelsort:fullhash:iterate} { + ctrl:control + fullhash empty$ + or + 'skip$ + { fullhash last.hash = + { push:name:fullhash last.name = + 'skip$ + { last.extra.num #1 + 'last.extra.num := } + if$ + last.extra.num int.to.str$ 'labelhash := + } + { #1 'last.extra.num := + "1" 'labelhash := + } + if$ + fullhash 'last.hash := + push:name:fullhash 'last.name := + } + if$ +} + +FUNCTION {labelsort:fullhash:reverse} { + ctrl:control + fullhash empty$ + or + 'skip$ + { push:name:fullhash last.name = + { last.extra "1" = + { "1" 'labelhash := } + 'skip$ + if$ + } + { last.extra "2" = + { "1" 'labelhash := } + 'skip$ + if$ + } + if$ + labelhash 'last.extra := + push:name:fullhash 'last.name := + fullhash labelhash * 'fullhash := + } + if$ +} + +FUNCTION {labelsort:main:singletitle} { + ctrl.singletitle + { label.name last.name = + { #0 'singletitle := } + 'skip$ + if$ + label.name 'last.name := + } + 'skip$ + if$ +} + +FUNCTION {labelsort:main:year:iterate} { + ctrl:labeldate + { label.name + dateyear empty$ + 'skip$ + { " " * dateyear * + dateendyear empty$ + 'skip$ + { dateyear dateendyear = + 'skip$ + { dateendyear open.ended = + 'skip$ + { "-" * dateendyear * } + if$ + } + if$ + } + if$ + } + if$ + 'label.year := + label.year last.year = + { last.extra.num #1 + 'last.extra.num := + last.extra.num int.to.str$ 'extradate := + } + { #1 'last.extra.num := + "" 'extradate := + label.year 'last.year := + } + if$ + } + 'skip$ + if$ +} + +FUNCTION {labelsort:main:year:reverse} { + ctrl:labeldate + { last.extra "2" = + { "1" 'extradate := } + 'skip$ + if$ + extradate 'last.extra := + } + 'skip$ + if$ +} + +FUNCTION {labelsort:main:iterate} { + ctrl:skiplab + 'skip$ + { labelsort:main:singletitle + labelsort:main:year:iterate + } + if$ +} + +FUNCTION {labelsort:main:reverse} { + ctrl:skiplab + 'skip$ + { labelsort:main:singletitle + labelsort:main:year:reverse + } + if$ +} + +FUNCTION {labelsort:alph:iterate} { + ctrl:labelalpha + { labelalpha last.year = + { last.extra.num #1 + 'last.extra.num := + last.extra.num int.to.str$ 'extraalpha := + } + { #1 'last.extra.num := + "" 'extraalpha := + } + if$ + labelalpha 'last.year := + } + 'skip$ + if$ +} + +FUNCTION {labelsort:alph:reverse} { + ctrl:labelalpha + { last.extra "2" = + { "1" 'extraalpha := } + 'skip$ + if$ + extraalpha 'last.extra := + labelalpha empty$ + 'skip$ + { extraalpha empty$ + { labelalpha ctrl.alphaothers ctrl.sortalphaothers str:replace + purify + 'sortkey.alpha := } + { labelalpha ctrl.alphaothers ctrl.sortalphaothers str:replace + purify + extraalpha #4 pad.number * + 'sortkey.alpha := } + if$ + } + if$ + } + 'skip$ + if$ +} + +ITERATE {labelsort:label} + +EXECUTE {labelsort:init} + +ITERATE {labelsort:hash} + +SORT + +EXECUTE {labelsort:hash:init} + +ITERATE {labelsort:namehash:iterate} + +EXECUTE {labelsort:hash:init} + +REVERSE {labelsort:namehash:reverse} + +EXECUTE {labelsort:init} + +ITERATE {labelsort:fullhash} + +SORT + +EXECUTE {labelsort:hash:init} + +ITERATE {labelsort:fullhash:iterate} + +EXECUTE {labelsort:hash:init} + +REVERSE {labelsort:fullhash:reverse} + +EXECUTE {labelsort:init} + +ITERATE {labelsort:main} + +SORT + +EXECUTE {labelsort:init} + +EXECUTE {labelsort:main:init} + +ITERATE {labelsort:main:iterate} + +EXECUTE {labelsort:main:init} + +REVERSE {labelsort:main:reverse} + +EXECUTE {labelsort:init} + +ITERATE {labelsort:alph} + +SORT + +ITERATE {labelsort:alph:iterate} + +REVERSE {labelsort:alph:reverse} + +% ------------------------------------------------------------------- +% Sort bibliography, write .bbl file +% ------------------------------------------------------------------- + +FUNCTION {mainsort} { + ctrl:control + { "" } + { sortkey:main } + if$ + 'sort.key$ := +} + +ITERATE {mainsort} + +SORT + +% This version corresponds to the .bbl version, *not* the biblatex version! +FUNCTION {output:main:begin} { + "% $ biblatex auxiliary file $" write$ newline$ + "% $ biblatex bbl format version " "$Revision: 3.1 $" + #12 entry.max$ substring$ #-3 entry.max$ substring$ * " $" * write$ newline$ + "% Do not modify the above lines!" write$ newline$ + "%" write$ newline$ + "% This is an auxiliary file used by the 'biblatex' package." write$ newline$ + "% This file may safely be deleted. It will be recreated as" write$ newline$ + "% required." write$ newline$ + "%" write$ newline$ + "\begingroup" write$ newline$ + "\makeatletter" write$ newline$ + "\@ifundefined{ver@biblatex.sty}" write$ newline$ + " {\@latex@error" write$ newline$ + " {Missing 'biblatex' package}" write$ newline$ + " {The bibliography requires the 'biblatex' package.}" write$ newline$ + " \aftergroup\endinput}" write$ newline$ + " {}" write$ newline$ + "\endgroup" write$ newline$ + newline$ + "\datalist[entry]{" ctrl.sortstr * "/global//global/global}" * write$ +} + +FUNCTION {output:main:preamble} { + preamble$ empty$ + 'skip$ + { newline$ + "\preamble{%" write$ newline$ + preamble$ write$ newline$ + "}" write$ newline$ + } + if$ +} + +FUNCTION {output:main:end} { + "\enddatalist" write$ newline$ + "\endinput" write$ newline$ +} + +EXECUTE {output:main:begin} + +EXECUTE {output:main:preamble} + +ITERATE {call.type$} + +EXECUTE {output:main:end} + +% ------------------------------------------------------------------- |