diff options
author | Norbert Preining <norbert@preining.info> | 2021-05-03 03:00:43 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2021-05-03 03:00:43 +0000 |
commit | bf393e635d1fb55b009da7ade3001c104c7deb48 (patch) | |
tree | 46ff95216d294610b559d25f56ba796d875b5c2f /macros/latex/contrib/biblatex-contrib | |
parent | db2a2e7b5c4ca1335618a0b5f5c574229bf459f6 (diff) |
CTAN sync 202105030300
Diffstat (limited to 'macros/latex/contrib/biblatex-contrib')
9 files changed, 1293 insertions, 711 deletions
diff --git a/macros/latex/contrib/biblatex-contrib/windycity/CHANGES.md b/macros/latex/contrib/biblatex-contrib/windycity/CHANGES.md index 960197f84f..ea102f1f03 100644 --- a/macros/latex/contrib/biblatex-contrib/windycity/CHANGES.md +++ b/macros/latex/contrib/biblatex-contrib/windycity/CHANGES.md @@ -8,6 +8,66 @@ indicate updates to Windy City's [repository on GitHub](https://github.com/brianchase/windycity "GitHub: brianchase/windycity"). +## 2021-05-02 + +This release brings a long overdue redesign of the workflow for +editors and translators. My hope is that users won't need to change +their bibliography databases, but I did need to change one example in +the user guide, moving an editor name list from a child entry to its +parent, where it belonged in the first place. In all, the changes +greatly extend the control and flexibility that users have over the +placement of editors and translators while allowing for simpler +internals. + +* highlights pertaining to editors and translators: + + - added support for the following editorial roles: + + + expanded by... + + expanded and compiled by... + + expanded and edited by... + + expanded and revised by... + + expanded and translated by... + + expanded and updated by... + + compiled and expanded by... + + edited and expanded by... + + revised and expanded by... + + translated and expanded by... + + updated and expanded by... + + - added support for translators of `issuetitle` and `series`, which + means you may assign translators to every title to which you may + assign editors + - editor and translator type fields now accept comma-separated + bibliography strings, making all editorial roles available for + `issuetitle`, `maintitle`, and `series` (e.g. if `editor` is the + reviser of `maintitle`, put `maintitle,reviser` or + `reviser,maintitle` in `editortype`) + - added `swaptrans:issuetitle`, `swaptrans:maintitle`, and + `swaptrans:series` entry options to swap positions of editors and + translators of `issuetitle`, `maintitle`, and `series` + - for special circumstances (explained in the user guide), added + three more entry options for swapping editors and translators: + `swaptrans:title`, `swaptrans:booktitle`, and + `swaptrans:bookbooktitle` + - added support for printing a second tier of editors after `title`, + `issuetitle`, `maintitle`, and `series` (e.g. "Edited by Jane Doe. + Revised and Expanded by John Smith") + - if the editors and translators of a work are the same, you can + control the assignment in several ways, including with just one + name list and its corresponding type field (e.g. if Jane Doe is + the compiler and translator of `title`, you can, among other + options, put `Doe, Jane` in `editor` and `comptrans` in + `editortype` or `Doe, Jane` in `translator` and `comptrans` in + `translatortype`) + - fixed several issues, at least, affecting the placement of + editors and translators, mainly the latter + +* added preamble option `shortafter` to print the same output as the + preamble option `short` but with long first citations +* for works in certain collections, fixed punctuation after the + `edition` field + ## 2021-01-30 * added support for the `pubstate` field to indicate when a work is diff --git a/macros/latex/contrib/biblatex-contrib/windycity/american-windycity.lbx b/macros/latex/contrib/biblatex-contrib/windycity/american-windycity.lbx index c368285793..8d932f698f 100644 --- a/macros/latex/contrib/biblatex-contrib/windycity/american-windycity.lbx +++ b/macros/latex/contrib/biblatex-contrib/windycity/american-windycity.lbx @@ -1,4 +1,4 @@ -% Last modified: Sat 30 Jan 2021 06:17:59 PM CST +% Last modified: Sun 02 May 2021 01:14:34 PM CDT % Permission is granted to copy, distribute and/or modify this % software under the terms of the LaTeX Project Public License (LPPL), @@ -11,7 +11,7 @@ % implied warranties of merchantability and fitness for a particular % purpose. -\ProvidesFile{american-windycity.lbx}[2021/01/30 Windy City +\ProvidesFile{american-windycity.lbx}[2021/05/02 Windy City localization module for biblatex] \InheritBibliographyExtras{american} \InheritBibliographyStrings{american} @@ -119,9 +119,10 @@ } \NewBibliographyString{by} -\NewBibliographyString{comped,comped+,compiler,compiler+,comprev,comprev+,comptrans,comptrans+,compup,compup+} -\NewBibliographyString{editor+,edcomp,edcomp+,edrev,edrev+,edtrans,edtrans+,edup,edup+} +\NewBibliographyString{comp,comp+,comped,comped+,compex,compex+,compiler,compiler+,comprev,comprev+,comptrans,comptrans+,compup,compup+} +\NewBibliographyString{ed,ed+,editor+,edcomp,edcomp+,edex,edex+,edrev,edrev+,edtrans,edtrans+,edup,edup+} \NewBibliographyString{expanded} +\NewBibliographyString{ex,ex+,excomp,excomp+,exed,exed+,expander,expander+,exrev,exrev+,extrans,extrans+,exup,exup+} \NewBibliographyString{noplace} \NewBibliographyString{of} \NewBibliographyString{origpub} @@ -132,15 +133,14 @@ \NewBibliographyString{pseudo} \NewBibliographyString{reprint,reprinted} \NewBibliographyString{review,reviewnoauth} -\NewBibliographyString{revcomp,revcomp+,reved,reved+,reviser,reviser+,revtrans,revtrans+,revup,revup+} +\NewBibliographyString{rev,rev+,revcomp,revcomp+,reved,reved+,revex,revex+,reviser,reviser+,revtrans,revtrans+,revup,revup+} \NewBibliographyString{revised} \NewBibliographyString{selfpub} \NewBibliographyString{special} \NewBibliographyString{subverbo,subverbos} -\NewBibliographyString{transcomp,transcomp+,transed,transed+,translator+,transrev,transrev+,transup,transup+} -\NewBibliographyString{upcomp,upcomp+,updater,updater+,uped,uped+,uprev,uprev+,uptrans,uptrans+} +\NewBibliographyString{trans,trans+,transcomp,transcomp+,transed,transed+,transex,transex+,translator+,transrev,transrev+,transup,transup+} +\NewBibliographyString{up,up+,upcomp,upcomp+,updater,updater+,uped,uped+,upex,upex+,uprev,uprev+,uptrans,uptrans+} \NewBibliographyString{updated} -\NewBibliographyString{updater} \NewBibliographyString{working} \DeclareBibliographyStrings{% @@ -151,8 +151,12 @@ by = {{by}{by}}, chapter = {{chap\adddot}{chap\adddot}}, citedas = {{hereafter cited as}{hereafter cited as}}, + comp = {{compiled by}{comp\adddot}}, + comp+ = {{compiled by}{comps\adddot}}, comped = {{compiled and edit\-ed by}{comp\adddotspace and ed\adddot}}, comped+ = {{compiled and edit\-ed by}{comps\adddotspace and eds\adddot}}, + compex = {{compiled and expanded by}{comp\adddotspace and exp\adddot}}, + compex+ = {{compiled and expanded by}{comps\adddotspace and exp\adddot}}, compiler = {{compiled by}{comp\adddot}}, compiler+ = {{compiled by}{comps\adddot}}, comprev = {{compiled and revised by}{comp\adddotspace and rev\adddot}}, @@ -161,8 +165,12 @@ comptrans+ = {{compiled and translated by}{comps\adddotspace and trans\adddot}}, compup = {{compiled and updated by}{comp\adddotspace and up\adddot}}, compup+ = {{compiled and updated by}{comps\adddotspace and up\adddot}}, + ed = {{edit\-ed by}{ed\adddot}}, + ed+ = {{edit\-ed by}{eds\adddot}}, edcomp = {{edit\-ed and compiled by}{ed\adddotspace and comp\adddot}}, edcomp+ = {{edit\-ed and compiled by}{eds\adddotspace and comps\adddot}}, + edex = {{edit\-ed and expanded by}{ed\adddotspace and exp\adddot}}, + edex+ = {{edit\-ed and expanded by}{eds\adddotspace and exp\adddot}}, edition = {{ed\adddot}{ed\adddot}}, editor = {{edit\-ed by}{ed\adddot}}, editor+ = {{edit\-ed by}{eds\adddot}}, @@ -172,7 +180,21 @@ edtrans+ = {{edit\-ed and translated by}{eds\adddotspace and trans\adddot}}, edup = {{edit\-ed and updated by}{ed\adddotspace and up\adddot}}, edup+ = {{edit\-ed and updated by}{eds\adddotspace and up\adddot}}, + ex = {{expanded by}{exp\adddot}}, + ex+ = {{expanded by}{exp\adddot}}, + excomp = {{expanded and compiled by}{exp\adddotspace and comp\adddot}}, + excomp+ = {{expanded and compiled by}{exp\adddotspace and comps\adddot}}, + exed = {{expanded and edit\-ed by}{exp\adddotspace and ed\adddot}}, + exed+ = {{expanded and edit\-ed by}{exp\adddotspace and eds\adddot}}, expanded = {{expanded edition}{exp\adddotspace ed\adddot}}, + expander = {{expanded by}{exp\adddot}}, + expander+ = {{expanded by}{exp\adddot}}, + exrev = {{expanded and revised by}{exp\adddotspace and rev\adddot}}, + exrev+ = {{expanded and revised by}{exp\adddotspace and revs\adddot}}, + extrans = {{expanded and translated by}{exp\adddotspace and trans\adddot}}, + extrans+ = {{expanded and translated by}{exp\adddotspace and trans\adddot}}, + exup = {{expanded and updated by}{exp\adddotspace and up\adddot}}, + exup+ = {{expanded and updated by}{exp\adddotspace and up\adddot}}, foreword = {{foreword to}{foreword to}}, forthcoming = {{forthcoming}{forthcoming}}, ibidem = {{ibid\adddot}{ibid\adddot}}, @@ -195,8 +217,12 @@ references = {{Bibliography}{Bibliography}}, reprint = {{reprint}{repr\adddot}}, reprinted = {{reprinted in}{reprinted in}}, + rev = {{revised by}{rev\adddot}}, + rev+ = {{revised by}{revs\adddot}}, reved = {{revised and edit\-ed by}{rev\adddotspace and ed\adddot}}, reved+ = {{revised and edit\-ed by}{revs\adddotspace and eds\adddot}}, + revex = {{revised and expanded by}{rev\adddotspace and exp\adddot}}, + revex+ = {{revised and expanded by}{revs\adddotspace and exp\adddot}}, revcomp = {{revised and compiled by}{rev\adddotspace and comp\adddot}}, revcomp+ = {{revised and compiled by}{revs\adddotspace and comps\adddot}}, review = {{review of}{review of}}, @@ -212,16 +238,22 @@ special = {{special issue}{special issue}}, subverbo = {{s\adddot v\adddot}{s\adddot v\adddot}}, subverbos = {{s\adddot vv\adddot}{s\adddot vv\adddot}}, + trans = {{translated by}{trans\adddot}}, + trans+ = {{translated by}{trans\adddot}}, transcomp = {{translated and compiled by}{trans\adddotspace and comp\adddot}}, transcomp+ = {{translated and compiled by}{trans\adddotspace and comps\adddot}}, transed = {{translated and edit\-ed by}{trans\adddotspace and ed\adddot}}, transed+ = {{translated and edit\-ed by}{trans\adddotspace and eds\adddot}}, + transex = {{translated and expanded by}{trans\adddotspace and exp\adddot}}, + transex+ = {{translated and expanded by}{trans\adddotspace and exp\adddot}}, translator = {{translated by}{trans\adddot}}, translator+ = {{translated by}{trans\adddot}}, transrev = {{translated and revised by}{trans\adddotspace and rev\adddot}}, transrev+ = {{translated and revised by}{trans\adddotspace and revs\adddot}}, transup = {{translated and updated by}{trans\adddotspace and up\adddot}}, transup+ = {{translated and updated by}{trans\adddotspace and up\adddot}}, + up = {{updated by}{up\adddot}}, + up+ = {{updated by}{up\adddot}}, upcomp = {{updated and compiled by}{up\adddotspace and comp\adddot}}, upcomp+ = {{updated and compiled by}{up\adddotspace and comps\adddot}}, updated = {{updated edition}{up\adddotspace ed\adddot}}, @@ -229,6 +261,8 @@ updater+ = {{updated by}{up\adddot}}, uped = {{updated and edit\-ed by}{up\adddotspace and ed\adddot}}, uped+ = {{updated and edit\-ed by}{up\adddotspace and eds\adddot}}, + upex = {{updated and expanded by}{up\adddotspace and exp\adddot}}, + upex+ = {{updated and expanded by}{up\adddotspace and exp\adddot}}, uprev = {{updated and revised by}{up\adddotspace and rev\adddot}}, uprev+ = {{updated and revised by}{up\adddotspace and revs\adddot}}, uptrans = {{updated and translated by}{up\adddotspace and trans\adddot}}, diff --git a/macros/latex/contrib/biblatex-contrib/windycity/doc/windycity.bib b/macros/latex/contrib/biblatex-contrib/windycity/doc/windycity.bib index c26415de37..8c4342505a 100644 --- a/macros/latex/contrib/biblatex-contrib/windycity/doc/windycity.bib +++ b/macros/latex/contrib/biblatex-contrib/windycity/doc/windycity.bib @@ -53,6 +53,46 @@ publisher = ucp, year = {2002} } +@InCollection{doe2017a, + options = {swaptrans:title}, + title = {An Essay}, + editor = {Smith, John}, + translator = {Smith, John}, + pages = {18–35}, + crossref = {jones2017} +} +@InCollection{doe2017b, + options = {swaptrans:booktitle}, + title = {An Essay}, + editor = {Smith, John}, + translator = {Smith, John}, + pages = {18–35}, + crossref = {jones2017} +} +@InCollection{doe2017c, + options = {swaptrans:bookbooktitle}, + title = {An Essay}, + editor = {Smith, John}, + translator = {Smith, John}, + pages = {18–35}, + crossref = {jones2017} +} +@InBook{jones2017, + title = {A Volume of Essays}, + editor = {Smith, John}, + translator = {Smith, John}, + volume = {1}, + crossref = {white2017} +} +@Collection{white2017, + title = {A Collection of Essays}, + editor = {Smith, John}, + translator = {Smith, John}, + volumes = {3}, + address = {Chicago}, + publisher = {University of Chicago Press}, + year = {2017} +} @InCollection{thoreau2007.7, title = {Walking}, pages = {185–222}, @@ -81,42 +121,40 @@ publisher = ucp, year = {1948} } -@InBook{spinoza1900.1.1, - title = {A Theological-Political Treatise}, - crossref = {spinoza1900.1} +@InCollection{myers2012, + author = {Myers, Herbert}, + title = {Pitch and Transposition}, + pages = {375--393}, + crossref = {carter2012} } -@Collection{spinoza1900.1, - author = {Spinoza, Benedict de}, - title = {The Chief Works of Benedict de Spinoza}, -% edition = {rev. ed.},% alternative to below: - edition = {revised}, - translator = {Elwes, R. H. M.}, - volume = {1}, - address = {London}, - publisher = {George Bell {and} Sons}, - year = {1900} +@Collection{carter2012, + title = {A Performer's Guide to Seventeenth-Century Music}, + edition = {2}, + editor = {Carter, Stewart}, + editora = {Kite-Powell, Jeffery}, + editoratype = {revex}, + address = {Bloomington}, + publisher = {Indiana University Press}, + year = {2012} } @InCollection{doe2018, + keywords = {notinbib,notinref}, author = {Doe, Jane}, title = {A Poem}, translator = {Smith, John}, pages = {56–57}, crossref = {jones2018} } -@InCollection{edwards2018, - author = {Adams, Mary}, - title = {Another Poem}, - pages = {128–32}, - crossref = {jones2018} -} @InBook{jones2018, + keywords = {notinbib,notinref}, editor = {Jones, David}, title = {A Volume of Poems}, volume = {2}, year = {2018}, - crossref = {blow2016} + crossref = {white2016} } -@Collection{blow2016, +@Collection{white2016, + keywords = {notinbib,notinref}, editor = {White, Amy}, title = {A Collection of Poems}, volumes = {4}, @@ -124,6 +162,47 @@ publisher = ucp, year = {2016–18} } +@InCollection{doe2018.alt, + keywords = {notinbib,notinref}, + author = {Doe, Jane}, + title = {A Poem}, + translator = {Smith, John}, + pages = {56–57}, + booktitle = {A Volume of Poems}, + editor = {Jones, David}, + editortype = {booktitle}, + bookvolume = {2}, + year = {2018}, + bookbooktitle = {A Collection of Poems}, + editora = {White, Amy}, + editoratype = {bookbooktitle}, + volumes = {4}, + address = {Chicago}, + publisher = ucp, + bookyear = {2016–18} +} +@InBook{spinoza1900.1.1, + title = {A Theological-Political Treatise}, + crossref = {spinoza1900.1} +} +@Collection{spinoza1900.1, + author = {Spinoza, Benedict de}, + title = {The Chief Works of Benedict de Spinoza}, +% edition = {rev. ed.},% alternative to below: + edition = {revised}, + translator = {Elwes, R. H. M.}, + volume = {1}, + address = {London}, + publisher = {George Bell {and} Sons}, + year = {1900} +} +@InCollection{adams2018, + keywords = {notinbib,notinref}, + author = {Adams, Mary}, + title = {Another Poem}, + pages = {128–32}, + crossref = {jones2018} +} % 13.65 Full in-text citation @@ -682,7 +761,6 @@ @Book{maclean1976, author = {Maclean, Norman}, title = {A River Runs through It, and Other Stories}, - shorttitle = {A River Runs through It}, address = {Chicago}, publisher = ucp, year = {1976} @@ -1342,7 +1420,6 @@ year = {1977} } @InBook{harley1994, - editor = {Harley, J. B. and Woodward, David}, title = {Cartography in the Traditional East and Southeast Asian Societies}, volume = {2}, part = {bk. 2}, @@ -1350,6 +1427,7 @@ crossref = {cartography1987} } @Collection{cartography1987, + editor = {Harley, J. B. and Woodward, David}, title = {The History of Cartography}, address = {Chicago}, publisher = ucp, diff --git a/macros/latex/contrib/biblatex-contrib/windycity/doc/windycity.pdf b/macros/latex/contrib/biblatex-contrib/windycity/doc/windycity.pdf Binary files differindex 02d6ab3aa1..4000a3da1c 100644 --- a/macros/latex/contrib/biblatex-contrib/windycity/doc/windycity.pdf +++ b/macros/latex/contrib/biblatex-contrib/windycity/doc/windycity.pdf diff --git a/macros/latex/contrib/biblatex-contrib/windycity/doc/windycity.sty b/macros/latex/contrib/biblatex-contrib/windycity/doc/windycity.sty index 718c4f6180..c001e45902 100644 --- a/macros/latex/contrib/biblatex-contrib/windycity/doc/windycity.sty +++ b/macros/latex/contrib/biblatex-contrib/windycity/doc/windycity.sty @@ -1,4 +1,4 @@ -% Last modified: Tue 10 Nov 2020 07:45:15 AM CST +% Last modified: Tue 13 Apr 2021 05:25:58 PM CDT \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{windycity} \RequirePackage{ifxetex} @@ -164,17 +164,17 @@ \defbibheading{biblist}{% \newpage - \begin{center}\section*{Abbreviations}\end{center} + \section*{Abbreviations} \addcontentsline{toc}{section}{Abbreviations} \markright{Abbreviations}}% \defbibheading{bibliography}{% \newpage - \begin{center}\section*{Bibliography (Standard Format)}\end{center} + \section*{Bibliography (Standard Format)} \addcontentsline{toc}{section}{Bibliography (Standard Format)} \markright{Bibliography}}% \defbibheading{references}{% \newpage - \begin{center}\section*{References (Author-Date Format)}\end{center} + \section*{References (Author-Date Format)} \addcontentsline{toc}{section}{References (Author-Date Format)} \markright{References}}% \defbibheading{none}{}% diff --git a/macros/latex/contrib/biblatex-contrib/windycity/doc/windycity.tex b/macros/latex/contrib/biblatex-contrib/windycity/doc/windycity.tex index f6ca4e6426..07f1fc504c 100644 --- a/macros/latex/contrib/biblatex-contrib/windycity/doc/windycity.tex +++ b/macros/latex/contrib/biblatex-contrib/windycity/doc/windycity.tex @@ -1,4 +1,4 @@ -% Last modified: Sat 30 Jan 2021 06:32:36 PM CST +% Last modified: Sun 02 May 2021 01:06:52 PM CDT \documentclass[11pt,letterpaper,oneside]{article} \usepackage{windycity} @@ -8,7 +8,7 @@ \author{Brian Chase} \email{brianmichaelchase@gmail.com} \website{https://github.com/brianchase/windycity} -\version{2021-01-30} +\version{2021-05-02} \maketitle \begingroup \hypersetup{linkcolor=black} @@ -35,13 +35,13 @@ City especially suitable for academic work. The following sections assume familiarity with \textit{CMOS} and \biblatex. Section \ref{overview} gives a brief overview of the -style's features. Section \ref{edtrans} discusses the assignment and -placement of editors, translators, and the like. Section -\ref{collections} discusses several issues with collections, including -options for formatting citations of individual volumes. Sections -\ref{notes} and \ref{paren} reproduce examples from \textit{CMOS} -chapters 14 and 15, respectively, with occasional commentary and -references to other sections. +style's features. Section \ref{editors} discusses the assignment and +placement of editors and translators. Section \ref{collections} +discusses several issues with collections, including options for +formatting citations of individual volumes. Sections \ref{notes} and +\ref{paren} reproduce examples from \textit{CMOS} chapters 14 and 15, +respectively, with occasional commentary and references to other +sections. Windy City requires \biblatex version 3.13 or later. @@ -63,10 +63,12 @@ some distributions of \LaTeX, you might be able to skip this step. Either way, please consider downloading the most recent release of Windy City from \begingroup \hypersetup{urlcolor=blue} -\href{https://www.ctan.org/pkg/windycity}{its home on CTAN}. More -recent but potentially less reliable updates are available from Windy -City's \href{https://github.com/brianchase/windycity}{repository on -GitHub}.\endgroup +\href{https://www.ctan.org/pkg/windycity}{its home on CTAN}. Releases +without the PDF user guide are available from Windy City's +\href{https://github.com/brianchase/windycity/releases}{repository on +GitHub}. More recent but potentially less reliable updates are +available on \href{https://github.com/brianchase/windycity}{the main +project page}.\endgroup Windy City consists of four files: @@ -198,11 +200,11 @@ may have problems with sorting. (You'll notice some in \ref{ref}, at the end of this document.) For best results, use the \opt{reflist} preamble option. -As you proceed through the this guide, note that all examples of -citations and bibliographies are outputs of the style from commands -that you can inspect in the document's source, \file{windycity.tex}, -and in its style file, \file{windycity.sty}. Almost all citations are -from \cmd{cite} or \cmd{parencite}. A few are from more specialized +As you proceed through this guide, note that all examples of citations +and bibliographies are outputs of the style from commands that you can +inspect in the document's source, \file{windycity.tex}, and in its +style file, \file{windycity.sty}. Almost all citations are from +\cmd{cite} or \cmd{parencite}. A few are from more specialized commands, such as \cmd{cite*} or \cmd{cites}. All example bibliographies are outputs of the style from \cmd{printbibliography}. All bibliographic data reside in \file{windycity.bib}. @@ -211,7 +213,7 @@ All bibliographic data reside in \file{windycity.bib}. \label{short} Standard citations may take a variety of shorter forms. Windy City -offers several preamble options and other means for reproducing them. +offers several preamble options and other means for producing them. Let's start with another passage of default output: @@ -308,17 +310,19 @@ break here may affect the output.} \item \cite[33]{morrison2004a} \end{citeonly} -Other ways to make citations more concise: For a compromise between -standard and short forms, try the preamble option \opt{shortfirst}. -It swaps long first citations for short ones but otherwise follows the -standard (see section \ref{preamble}). Also with standard citations, -the preamble option \opt{idemtracker} shortens the author's name of a -work's first citation if the previous citation is of the same author -(see section \ref{preamble}). The entry option \opt{noauth} omits the -author's name altogether (see section \ref{entry}). And the -\bibfield{shorthand} field allows you to set an abbreviation to stand -in place of the author's name, the work's title, and other elements of -a citation (see sections \ref{otherfields} and \ref{14.59}). +For a compromise between standard and short forms, try the preamble +option \opt{shortfirst}. It swaps long first citations for short ones +but otherwise follows the standard form (see section \ref{preamble}). +For another variant, try \opt{shortafter}, which gives the same output +as \opt{short} but with long first citations. Also with standard +citations, the preamble option \opt{idemtracker} shortens the author's +name of a work's first citation if the previous citation is of the +same author (see section \ref{preamble}). The entry option +\opt{noauth} omits the author's name altogether (see section +\ref{entry}). And the \bibfield{shorthand} field allows you to set an +abbreviation to stand in place of the author's name, the work's title, +and other elements of a citation (see sections \ref{otherfields} and +\ref{14.59}). \subsection{Preamble Options} \label{preamble} @@ -380,7 +384,7 @@ collections. For discussion of multivolume works, see section \noindent This option controls whether consecutive citations of a work on the same page receive an \textit{ibid}. The qualification ``on the same page'' means that \textit{ibid.} always refers to a work cited on -the current page without an \textit{ibid.} The latter isn't a +the current page without an \textit{ibid}. The latter isn't a requirement of \textit{CMOS} but seems reasonable, since it prevents readers from having to look at another page to find the referent of an \textit{ibid}. For examples of its output, see section \ref{short} and @@ -439,13 +443,10 @@ information. \noindent As shown in section \ref{short}, this option prints short citations (see \textit{CMOS} \ref{14.34}). The use of \opt{short} has -one feature in common with \opt{ibid}: Just as \textit{ibid.} appears -only for consecutive citations of a work on the same page, and so -never refers to a citation on a previous page, \opt{short} affects -consecutive citations of a work on the same page, never in reference -to a citation on a previous page. As with \textit{ibid.}, this feature -isn't required by \textit{CMOS}, but it prevents readers from having -to look at another page to find the title of a citation. +one feature in common with \opt{ibid}: It affects only consecutive +citations of a work on the same page. As with \textit{ibid.}, this +feature isn't required by \textit{CMOS}, but it prevents readers from +having to look at another page to find the title of a citation. In contexts where \opt{short} would drop a title from a citation, but where no name occupies the author's position, it prints the work's @@ -457,15 +458,52 @@ As noted earlier, \opt{short} has the same effect on first citations as \opt{shortfirst}. But recall from section \ref{short} that you can combine \opt{short} and \opt{ibid} for more concise output. +\optitem[false]{shortafter}{\opt{true}, \opt{false}} + +\noindent If you want the output of \opt{short} but with long first +citations, use \opt{shortafter}. Compare the following with examples +in \textit{CMOS} \ref{14.34}: + +% The option 'short' implies the option 'shortfirst'. The option +% 'shortafter' doesn't. Hence, to display the output of 'shortafter' +% below, you need only toggle true 'short'. + +\begin{citeonly} +\AtNextCitekey{\toggletrue{short}} +\item \cite[3]{morrison2004a} +\AtNextCitekey{\toggletrue{short}} +\item \cite[18]{morrison2004a} +\AtNextCitekey{\toggletrue{short}} +\item \cite[18]{morrison2004a} +\AtNextCitekey{\toggletrue{short}} +\item \cite[24--26]{morrison2004a} +\AtNextCitekey{\toggletrue{short}} +\item \cite[401-2]{morrison2004b} +\AtNextCitekey{\toggletrue{short}} +\item \cite[433]{morrison2004b} +\AtNextCitekey{\toggletrue{short}} +\item \cite[37--38]{diaz2008} +\AtNextCitekey{\toggletrue{short}} +\item \cite[403]{morrison2004b} +\AtNextCitekey{\toggletrue{short}} +\item \cite[152]{diaz2008} +\AtNextCitekey{\toggletrue{short}} +\item \cite[201-2]{diaz2008} +\AtNextMultiCite{\toggletrue{short}} +\item \cites[240]{morrison2004b}[32]{morrison2004a} +\AtNextCitekey{\toggletrue{short}} +\item \cite[33]{morrison2004a} +\end{citeonly} + \optitem[false]{shortfirst}{\opt{true}, \opt{false}} \noindent Use this option to shorten a work's first citation. The resulting output consists mainly of the author's name and the work's title. According to \textit{CMOS}, this approach is optional for documents with complete bibliographies. (See \textit{CMOS} -\ref{14.23}, also 14.29--14.36.) You may use \opt{shortfirst} in -conjunction with \opt{ibid}. However, it adds nothing to \opt{short}, -which has the same effect on first citations. +\ref{14.23}, also 14.29--14.36.) As with \opt{short}, you may use +\opt{shortfirst} in conjunction with \opt{ibid} for more concise +citations. \optitem[false]{shortlinks}{\opt{true}, \opt{false}} @@ -476,8 +514,8 @@ bibliography. In standard citations, these links encompass the entire citation (minus some punctuation). With \opt{shortlinks}, they're embedded in just one element: the title or, if no title is present, whatever part of the citation occupies the author's position, such as -the author's name, \textit{ibid.}, or a shorthand. For comparison, -here's what default links are like in blue: +the author's name, \textit{ibid.}, or a shorthand. For comparison, the +blue text below shows default links: \hypersetup{citecolor=blue} \begin{citeonly} @@ -520,10 +558,9 @@ For more information, see section \ref{collorder}. \subsection{Entry Options} \label{entry} -An entry option is a value for the \bibfield{options} field of a -work's database entry. It affects the format of that particular work. -For options that affect the format of every work, see section -\ref{preamble}. +An entry option goes in the \bibfield{options} field of a work's +database entry. It affects the format of that work. For options that +affect the format of every work, see section \ref{preamble}. \begin{optionlist} @@ -604,21 +641,74 @@ to skip the \textit{date}. See section \ref{entrytypes} for examples. translator, use \opt{swapauth}. This option works for \bibtype{book}, \bibtype{bookinbook}, \bibtype{collection}, \bibtype{inbook}, and \bibtype{incollection} entry types. For more information, see section -\ref{edtranspos}. +\ref{editors:swap}. \optitem[false]{swaptrans}{\opt{true}, \opt{false}} \noindent According to \textit{CMOS}, if a work has an editor and a translator, their names should appear in citations in the order in which they appear on the work's title page (see \textit{CMOS} -\ref{14.104}). By default, the style lists editors first. Entries with -the option \bibfield{swaptrans} reverse this order: Their translators -print first. If a work's translators and editors are the same, -\bibfield{swaptrans} reverses the order of their roles, say, from -\textit{edited and translated by} to \textit{translated and edited -by}. The same goes for compilers, revisers, and updaters, which the -style treats as specialized editors. For more information, see section -\ref{edtranspos}. +\ref{14.104}). By default, the style lists editors first. The option +\bibfield{swaptrans} reverses this order: Their translators print +first. If a work's translators and editors are the same, +\bibfield{swaptrans} reverses their roles, say, from \textit{edited +and translated by} to \textit{translated and edited by}. The same goes +for compilers, expanders, revisers, and updaters---all of whom the +style treats as specialized editors. For editors and translators of an +\bibfield{issuetitle}, \bibfield{maintitle}, or \bibfield{series}, see +their respective options below. See also section \ref{editors:swap}. + +\optitem[false]{swaptrans:book}{\opt{true}, \opt{false}} + +A short form of \opt{swaptrans:booktitle}. See below. + +\optitem[false]{swaptrans:bookbook}{\opt{true}, \opt{false}} + +A short form of \opt{swaptrans:bookbooktitle}. See below. + +\optitem[false]{swaptrans:bookbooktitle}{\opt{true}, \opt{false}} + +Like \opt{swaptrans} but narrower in scope. It applies only to the +editors and translators of a \bibfield{bookbooktitle} (a double +cross-referenced \bibfield{title}). See section \ref{editors:swap}. + +\optitem[false]{swaptrans:booktitle}{\opt{true}, \opt{false}} + +Like \opt{swaptrans} but narrower in scope. It applies only to the +editors and translators of a \bibfield{booktitle} (a cross-referenced +\bibfield{title}). See section \ref{editors:swap}. + +\optitem[false]{swaptrans:issue}{\opt{true}, \opt{false}} + +A short form of \opt{swaptrans:issuetitle}. See below. + +\optitem[false]{swaptrans:issuetitle}{\opt{true}, \opt{false}} + +Like \opt{swaptrans} but for editors and translators of an +\bibfield{issuetitle}. + +\optitem[false]{swaptrans:main}{\opt{true}, \opt{false}} + +A short form of \opt{swaptrans:maintitle}. See below. + +\optitem[false]{swaptrans:maintitle}{\opt{true}, \opt{false}} + +Like \opt{swaptrans} but for editors and translators of a +\bibfield{maintitle}. + +\optitem[false]{swaptrans:series}{\opt{true}, \opt{false}} + +Like \opt{swaptrans} but for editors and translators of a +\bibfield{series}. + +\optitem[false]{swaptrans:title}{\opt{true}, \opt{false}} + +Like \opt{swaptrans} but narrower in scope. It applies only to the +editors and translators of a \bibfield{title}, whereas +\bibfield{swaptrans} also affects those of a \bibfield{booktitle} (a +cross-referenced \bibfield{title}) and a \bibfield{bookbooktitle} (a +double cross-referenced \bibfield{title}). See section +\ref{editors:swap}. \optitem[false]{swapvol}{\opt{true}, \opt{false}} @@ -674,7 +764,7 @@ citation commands from \biblatex that Windy City supports: \noindent New users should get comfortable with \cmd{cite} and \cmd{footcite} (for notes) and \cmd{parencite} (for parenthetical citations). Their multicite forms---\cmd{cites}, \cmd{footcites}, and -\cmd{parencites}---take comma-separated lists of entry keys, while +\cmd{paren\-cites}---take comma-separated lists of entry keys, while allowing you to specify distinct \bibfield{prenote} and \bibfield{postnote} fields for each work. @@ -997,7 +1087,8 @@ in perhaps unexpected ways. \label{stdfields} Examples in this document don't always make it clear how Windy City -uses standard data fields. The section discusses some of them. +uses standard data fields. The list below highlights a selection of +fields that merit special attention. \begin{marglist} @@ -1012,7 +1103,7 @@ From \textit{CMOS} \ref{14.79}: \item \cite{hawkes1834} \end{citebib} -With respect to pseudonymous authors, another solution is to use the +For pseudonymous authors, another solution is to use the \bibfield{nameaddon} field. Unlike with \bibfield{authtype}, \bibfield{nameaddon} allows you to include an author's given name in the brackets. For examples, see \textit{CMOS} \ref{14.81}. @@ -1022,7 +1113,7 @@ edition's number in this field---for example, \textit{2} for a second edition. To indicate a revised edition, enter either \textit{revised} or \textit{rev. ed.} Both options give the same output. For expanded and updated editions, you may use \textit{expanded} or -\textit{updated}. Add additional data as necessary. For the following +\textit{updated}. Add additional data as necessary. In the following example from \textit{CMOS} bibliography 2.4, \bibfield{edition} contains \textit{updated edition by Arlene O'Sean and Antoinette Schleyer}: @@ -1039,9 +1130,9 @@ edition, such as \textit{Sunday Book Review} (see \textit{CMOS} \biblatex provides for electronic publishing information, even though the output doesn't conform to \textit{CMOS}. To that end, you may use the \bibfield{eprint} field, along with its cousins -\bibfield{eprinttype} and \bibfield{eprintclass}, and all the -associated options (\opt{eprint}, \opt{doi}, and \opt{url}), which are -set to \textit{true} by default. +\bibfield{eprinttype} and \bibfield{eprintclass}, and associated +options (\opt{eprint}, \opt{doi}, and \opt{url}), all of which are set +to \textit{true} by default. \item[issue] Windy City uses this field with \bibtype{article}, \bibtype{online}, and \bibtype{review} entry types (and their aliases) @@ -1087,7 +1178,7 @@ have an \bibtype{article} or \bibtype{periodical} entry (see \textit{CMOS} \ref{14.172}). For forthcoming works, see \textit{CMOS} \ref{14.146}, \ref{14.172}, and \ref{15.45}. Forthcoming works also print correctly with \textit{forthcoming} in the \bibfield{year} -field, as previous versions of the style required. +field. \begin{bibonly} \nocite{faraday,huang2015,jubb2015,lucki1980} @@ -1118,12 +1209,13 @@ In rare cases, \bibfield{type} is necessary for \bibtype{article} and bibliographic information doesn't allow Windy City to distinguish a journal article from a magazine or newspaper article. This happens when a magazine or newspaper article has an issue number. Normally, -Windy City would respond by printing the issue number before the date -and enclosing the date in parentheses. But the issue number needs to -go first, and the date shouldn't be in parentheses. The workaround is -to include a \bibfield{type} field with the value \textit{newsmag}. -For an example, see \textit{CMOS} \ref{14.204} and compare it with the -citation of Beattie in \ref{14.171}. +Windy City prints an issue number before the date and encloses the +date in parentheses. But for magazine and newspaper articles, the +issue number should go first, and the date shouldn't be in +parentheses. The workaround is to include a \bibfield{type} field with +the value \textit{newsmag}. For an example, see \textit{CMOS} +\ref{14.204} and compare it with the citation of Beattie in +\ref{14.171}. \end{marglist} @@ -1132,10 +1224,10 @@ citation of Beattie in \ref{14.171}. Some of Windy City's nonstandard data fields are for its internal handling of cross-referencing. Those fields aren't listed below, as -they're not meant for use in a bibliography database. The rest store -information that's crucial for correct formatting. Without them, quite -a few citations in this document wouldn't match their counterparts in -\textit{CMOS}. +they're not usually meant for use in a bibliography database (but see +section \ref{editors.other}). The rest store information that's +crucial for correct formatting. Without them, quite a few citations in +this document wouldn't match their counterparts in \textit{CMOS}. \begin{marglist} @@ -1144,16 +1236,23 @@ blog goes in \bibfield{blogtitle} and \bibfield{blogsubtitle}. Keep in mind that blog posts take the usual \bibfield{title} and \bibfield{subtitle} fields. -\item[editoraddon] Use this field to include additional editorial -information about a book. It's available for \bibtype{book}, -\bibtype{incollection}, and \bibfield{review} entry types and their -aliases. (For information on aliases in Windy City, see section -\ref{entrytypes}.) When applicable, its content appears after a book's -editors and translators without intervening punctuation. For an -example, see section \ref{entry}, where the citation of -\textit{Chaucer Life-Records} prints: ``from materials compiled by -John M. Manly and Edith Richert, with the assistance of Lilian J. -Redstone et al.'' +\item[editoraddon] This field holds editorial information about a work +that belongs immediately after \bibfield{editor} has printed, without +intervening punctuation. For an example, see \textit{CMOS} +\ref{14.105}, where the citation of \textit{Chaucer Life-Records} +includes: ``from materials compiled by John M. Manly and Edith +Richert, with the assistance of Lilian J. Redstone et al.'' This field +doesn't print when \bibfield{editor} prints in the author's position. +As a result, options that may affect where \bibfield{editor} prints, +such as \opt{swaptrans} and \opt{swapauth}, may affect whether +\bibfield{editoraddon} prints. + +% The main function of 'editoraaddon' is to inherit 'editoraddon' +% during cross-referencing. I don't expect anyone to use it in a +% bibliography database. + +%\item[editoraaddon] Like \bibfield{editoraddon} but for +%\bibfield{editora}. \item[seriesaddon] This field is for additional information about a book's series. That includes information about the run of a series, @@ -1165,16 +1264,16 @@ information like \textit{2nd ser.} and \textit{n.s.} go in the \item[shorthand] Windy City doesn't automatically italicize a \bibfield{shorthand}. Per \textit{CMOS} 14.60, a shorthand should be -italicized if the title that it abbreviates is italicized. Set it the -bibliography database with \cmd{emph} or \cmd{mkbibemph}. For examples -of a \bibfield{shorthand}, see section \ref{14.59} and the first -citation of \textit{CMOS} in this document's introduction. +italicized if the title that it abbreviates is italicized. Set it in +the bibliography database with \cmd{emph} or \cmd{mkbibemph}. For +examples of a \bibfield{shorthand}, see section \ref{14.59} and the +first citation of \textit{CMOS} in this document's introduction. \item[shorthandintro] You may override the default announcement of a \bibfield{shorthand} by adding your preferred content to -\bibfield{shorthandintro}. For an example, see the first citation of -\textit{CMOS} in this document's introduction, where the announcement -is a separate sentence, rather than in parentheses. +\bibfield{shorthandintro}. See the first citation of \textit{CMOS} in +this document's introduction, where the announcement isn't a note in +parentheses but its own sentence. \item[shortmaintitle] This field contains the short form of a \bibfield{maintitle}. It should only be necessary for certain works in @@ -1183,23 +1282,39 @@ James} in section \ref{multivolume}. \end{marglist} -\section{Editors, Translators, and Friends} -\label{edtrans} +\section{Editors and Translators} +\label{editors} -Windy City offers significant control over the handling of editors, -translators, and the like. Taking advantage of it, however, may not -seem intuitive at first. This section covers all the relevant features -and options. +Windy City offers significant control over the handling of editors and +translators. Taking advantage of it, however, may not seem intuitive +at first. This section covers all the relevant features and options. \subsection{Types of Editors and Translators} -\label{edtransnames} -For the most part, Windy City associates the \bibfield{editor} and -\bibfield{translator} fields with the lowest level title within the -scope of an entry. In most cases, then, you can assign editors and -translators simply by adding the \bibfield{editor} and -\bibfield{translator} fields to a database entry. The entry below is -an example from \textit{CMOS} \ref{14.104}: +Windy City has four name lists for editors (\bibfield{editor}, +\bibfield{editora}, \bibfield{editorb}, and \bibfield{editorc}) and +three name lists for translators (\bibfield{translator}, +\bibfield{translatora}, and \bibfield{translatorb}). At points where +it's prepared to print them, it cycles through one or both sets of +lists, depending on the context, looking for names to print. The set +of editors starts with \bibfield{editor}, followed by +\bibfield{editora}, and so on. The set of translators starts with +\bibfield{translator}, followed by \bibfield{translatora}, and so on. +Editors precede translators, unless you reverse the order with a +\opt{swaptrans} entry option (see section \ref{editors:swap}). Within +each set, the style prints the first name list that meets its criteria +for that context. Apart from exceptions discussed below, you can +assign any editor or translator name list to any \bibfield{title}, +\bibfield{issuetitle}, \bibfield{maintitle}, or \bibfield{series}. + +\subsubsection{The Basics} +\label{editors:basics} + +In most cases, you'll assign editors and translators to a +\bibfield{title}. Since it's the default assignment, you can do this +just by adding the \bibfield{editor} and \bibfield{translator} fields +to a database entry. The entry below is an example from \textit{CMOS} +\ref{14.104}: \begin{verbatim} @Collection{adorno1999, @@ -1220,14 +1335,13 @@ an example from \textit{CMOS} \ref{14.104}: \noindent When the style processes this entry, it identifies the editor and translator of the work with the names in the \bibfield{editor} and \bibfield{translator} fields. Since the entry -doesn't use the \opt{swaptrans} entry option (see section -\ref{edtranspos}), the resulting output lists the editor and +doesn't use \opt{swaptrans}, the resulting output lists the editor and translator, in that order, after the authors and title. Cross-referencing introduces a bit more complexity, but the principle is the same: Within the scope of an entry, the style associates -\bibfield{editor} and \bibfield{translator} with the lowest level -title. In this example from \textit{CMOS} \ref{14.30}, an essay is +\bibfield{editor} and \bibfield{translator} with \bibfield{title}. In +this example from \textit{CMOS} \ref{14.30}, an essay is cross-referenced to a collection: \begin{verbatim} @@ -1288,11 +1402,51 @@ scope of the \bibtype{incollection} entry: \noindent By the same token, since \bibfield{editor} falls within the scope of \bibtype{collection}, the style associates it with -\textit{The Renaissance Philosophy of Man}. +\textit{The Renaissance Philosophy of Man}, not ``The Ascent of Mont +Ventoux.'' + +Windy City supports a second tier of editors after \bibfield{title}, +\bibfield{issuetitle}, \bibfield{maintitle}, and \bibfield{series}. +Again, in your bibliography database, make sure to list editors in the +proper order: \bibfield{editor} before \bibfield{editora}, and so on. +Second tier editors never print in the author's position, even when +the first does. They always print after the relevant title. + +In the examples below, the editors print correctly because there's no +ambiguity about which title they're responsible for. Both fall within +the same entry, \bibfield{carter2012}, where their default assignment +is \textit{A Performer's Guide}. Citing a child entry, +\bibfield{myers2012}, places the editors after the collection's title, +starting with \bibfield{editor}, whereas citing the parent places +\bibfield{editor} in the author's position and \bibfield{editora} +after the collection's title. + +\begin{verbatim} + @InCollection{myers2012, + author = {Myers, Herbert}, + title = {Pitch and Transposition}, + pages = {375--393}, + crossref = {carter2012} + } + @Collection{carter2012, + title = {A Performer's Guide to Seventeenth-Century Music}, + editor = {Carter, Stewart}, + editora = {Kite-Powell, Jeffery}, + editoratype = {revex}, + address = {Bloomington}, + publisher = {Indiana University Press}, + year = {2012} + } +\end{verbatim} -The style supports three more basic editorial roles: compiler, -reviser, and updater. To assign them, you need to use the -\bibfield{editortype} field. It may help to see the bibliography +\begin{bibonly} +\nocite{myers2012,carter2012} +\end{bibonly} + +As the examples above also indicate, the style supports a variety of +editorial roles beyond just editor and translator. They are: compiler, +expander, reviser, and updater. To assign them, you need to use the +editor and translator type fields. Below are some bibliography database entries for examples in \textit{CMOS} \ref{14.103} and \ref{14.142}: @@ -1326,16 +1480,25 @@ database entries for examples in \textit{CMOS} \ref{14.103} and \item \cite{turabian2013} \end{citebib} -In addition to the five basic roles (editor, translator, compiler, -reviser, and updater), you may assign names to any pair of them. A -work's editor, for example, can also be its translator, compiler, -reviser, or updater---but no more than one of these. And just as you -can swap the order of the editor and translator roles (again, see -section \ref{edtranspos}), you can swap all other combinations, say, -to identify a work as \textit{compiled and edited by} Jane Doe rather -than \textit{edited and compiled by} her. Simply change the value of -\bibfield{editortype}. A summary of these values appears in Table -\ref{table:ed}. +You may combine all six editorial roles in pairs. A work's editor, for +example, can also be its translator, compiler, expander, reviser, or +updater---but no more than one of these. Simply put the proper value +in the corresponding type field. We saw this with \textit{A +Performer's Guide}, where the bibliography string \textit{revex} +identified Jeffery Kite-Powell as the work's reviser and expander. +These are the key lines: + +\begin{verbatim} + editora = {Kite-Powell, Jeffery}, + editoratype = {revex}, +\end{verbatim} + +\noindent Combinations that involve a translator's role, such as +\textit{translated and compiled by}, respond to the \opt{swaptrans} +options discussed in section \ref{editors:swap}. For these dual roles, +however, it's probably less confusing in the long run to change values +in the editor and translator type fields. The choice is yours. Table +\ref{editors:table} lists all editor and translator roles. \begin{table}[H] \begin{tabular}{@{}r l r l@{}} @@ -1343,47 +1506,132 @@ than \textit{edited and compiled by} her. Simply change the value of \toprule compiler & compiler & reviser & reviser\\ comped & compiler and editor & revcomp & reviser and compiler\\ -comprev & compiler and reviser & reved & reviser and editor\\ +compex & compiler and expander & reved & reviser and editor\\ +comprev & compiler and reviser & revex & reviser and expander\\ comptrans & compiler and translator & revtrans & reviser and translator\\ compup & compiler and updater & revup & reviser and updater\\ -edcomp & editor and compiler & edrev & editor and reviser\\ -transcomp & translator and compiler & transrev & translator and reviser\\ -\midrule -updater & updater & uptrans & updater and translator\\ -upcomp & updater and compiler & edup & editor and updater\\ -uped & updater and editor & transup & translator and updater\\ -uprev & updater and reviser & &\\ +editor & editor & translator & translator\\ +edcomp & editor and compiler & transcomp & translator and compiler\\ +edex & editor and expander & transed & translator and editor\\ +edrev & editor and reviser & transex & translator and expander\\ +edtrans & editor and translator & transrev & translator and reviser\\ +edup & editor and updater & transup & translator and updater\\ +expander & expander & updater & updater\\ +excomp & expander and compiler & upcomp & updater and compiler\\ +exed & expander and editor & uped & updater and editor\\ +exrev & expander and reviser & upex & updater and expander\\ +extrans & expander and translator & uprev & updater and reviser\\ +exup & expander and updater & uptrans & updater and translator\\ \end{tabular} -\caption{}\label{table:ed} +\caption{}\label{editors:table} \end{table} -For examples in \textit{CMOS}, we need to turn to the bibliography. -The first one below shows the output of \textit{reved} in the -\bibfield{editortype} field, the second of \textit{revup}. +For examples in \textit{CMOS} that use values from Table +\ref{editors:table}, we need to turn to the book's bibliography. The +first example below shows the effect of \textit{reved}, the second of +\textit{revup}. \begin{citebib} \item \cite{fowler1965} \item \cite{gowers2015} \end{citebib} -% Try swapping the editor type in the entries above for other values -% in Table \ref{table:ed}. Note that \textit{edrev} is the reverse of -% \textit{reved}---\textit{edited and revised by} instead of -% \textit{revised and edited by}. So, too, for \textit{comprev} and -% \textit{revcomp}, \textit{comptrans} and \textit{transcomp}, and so -% on. - -Missing from Table \ref{table:ed} are \textit{editor}, -\textit{translator}, \textit{edtrans}, and \textit{transed}. Windy -City has bibliography strings for them, too, but they're meant for the -style's internal use. It determines which of them applies, if any, -based on the contents of the \bibfield{editor} and -\bibfield{translator} fields and the option \opt{swaptrans}. You never -need to use them in a bibliography database. - -Three more values of \bibfield{editortype} allow you to assign editors -to higher level titles: \textit{maintitle}, \textit{series}, and -\textit{issuetitle}. Here's an example from \textit{CMOS} +For editors and translators with more than two roles per title, you +need to print more than one name list, either an editor name list and +a translator name list or two editor names lists (see the previous +discussion of second tier editors). This allows for complex +assignments such as ``Edited and Translated by Jane Doe. Revised and +Updated by Jane Doe and John Smith.'' What's not allowed is listing +three or more roles at once, as in ``Edited, Translated, and Revised +by Jane Doe.'' + +\subsubsection{Other Options and Titles} +\label{editors:other} + +Windy City simplifies the assignments of editors and translators in +several ways. For one, the default assignment of every editor name +list is \textit{editor}, and the default assignment of every +translator name list is \textit{translator}. As a result, you never +need to use the values \textit{editor} or \textit{translator} in the +type fields. It's strictly optional. The name fields alone set the +correct assignment. + +Much the same holds when the editor and translator of a work are the +same. The usual way to set this assignment is with identical name +lists: + +\begin{verbatim} + editor = {Doe, Jane}, + translator = {Doe, Jane}, +\end{verbatim} + +\noindent This gives a default assignment of \textit{editor and +translator} (\textit{edtrans} from Table \ref{editors:table}), unless you +use the appropriate \opt{swaptrans} entry option, which gives +\textit{translator and editor} (\textit{transed} from Table +\ref{editors:table}). No editor or translator type field is necessary. + +When type fields are required, Windy City offers flexibility over how +you structure your bibliography entries: If you like, you can set the +assignment with just one editor or translator type field and its +corresponding name field, or with both name fields and one type field, +or with both name fields and both type fields. To set Jane Doe as the +compiler and translator of a \bibfield{title}, Windy City treats all +five options below as equivalent: + +\begin{enumerate}[itemsep=0.2\baselineskip] + +\item + +\begin{verbatim} + editor = {Doe, Jane}, + editortype = {comptrans}, +\end{verbatim} + +\item + +\begin{verbatim} + translator = {Doe, Jane}, + translatortype = {comptrans}, +\end{verbatim} + +\item + +\begin{verbatim} + editor = {Doe, Jane}, + translator = {Doe, Jane}, + editortype = {comptrans}, +\end{verbatim} + +\item + +\begin{verbatim} + editor = {Doe, Jane}, + translator = {Doe, Jane}, + translatortype = {comptrans}, +\end{verbatim} + +\item + +\begin{verbatim} + editor = {Doe, Jane}, + translator = {Doe, Jane}, + editortype = {comptrans}, + translatortype = {comptrans}, +\end{verbatim} + +\end{enumerate} + +The last option above raises the possibility that editor and +translator type fields may conflict. What if the editor type is +\textit{comptrans} and the translator type is something else, say, +\textit{extrans}? If the editors and translators are the same, but the +type fields differ, Windy City reads the editor type field and ignores +the translator type field. + +Three more values for type fields allow you to assign editors and +translators to \bibfield{issuetitle}, \bibfield{maintitle}, and +\bibfield{series}. Here's an example from \textit{CMOS} \ref{14.123}: \begin{verbatim} @@ -1404,55 +1652,119 @@ to higher level titles: \textit{maintitle}, \textit{series}, and \item \cite{allen2009} \end{citebib} -\noindent If there were no \bibfield{editortype} assigning the editor -to the series, the output would list a book's editor. In short, for a -title's compilers, revisers, and updaters and for any title at a -higher level than \bibfield{title}, you need to use -\bibfield{editortype}. Combined with Windy City's support for citing -articles, chapters, books, and other works within books, this scheme -allows for several sets of editors per work, although it does limit -you to just one set of compilers, revisers, and updaters. - -What about translators? Unless a work's bibliography database entry -has a \bibfield{translatortype} field with the value -\textit{maintitle}, Windy City associates the names in -\bibfield{translator} with the entry's lowest level title. (Recall -``The Ascent of Mont Ventoux'' above.) You should rarely, and perhaps -never, need more than one set of translators per work. But if you do, -Windy City lets you assign as many as three---as long as you -cross-reference a work with one set of translators to another with -two. - -The style has three other name lists for editors: \bibfield{editora}, -\bibfield{editorb}, and \bibfield{editorc}. If a work has more than -one set of editors, list editors of the lowest level title in -\bibfield{editor}. Usually, those are editors of a \bibfield{title}. -The next level up, as it were, is for \bibfield{editora}, followed by -\bibfield{editorb}, then \bibfield{editorc}. Remember to include the -appropriate \bibfield{type} field to indicate an editor's role. These -fields are \bibfield{editortype} (for \bibfield{editor}), -\bibfield{editoratype} (for \bibfield{editora}), -\bibfield{editorbtype} (for \bibfield{editorb}), and -\bibfield{editorctype} (for \bibfield{editorc}). - -As it happens, Windy City puts a lot of effort into sorting out where -to print the names of editors and translators, so it's a bit more -clever than the previous paragraph suggests. In particular, if you use -\bibfield{editortype} to assign an \bibfield{editor} to a -\bibfield{maintitle} or some other higher level title, and have an -\bibfield{editora} with no corresponding \bibfield{editoratype}, Windy -City will assume that \bibfield{editora} is the editor of the -\bibfield{title}. Regardless, the best practice is to the follow the rule -of thumb described above, reserving \bibfield{editor} for -\bibfield{title} and working up from there. +\noindent If there were no \bibfield{editortype} with the value +\textit{series}, the style would have assigned \bibfield{editor} to +\bibfield{title}. The same goes for \bibfield{issuetitle} and +\bibfield{maintitle}: Assign editors and translators to them by +putting \textit{issuetitle} and \textit{maintitle} in the relevant +type fields. + +With the help of strings from Table \ref{editors:table}, all editor and +translator types are available to \bibfield{issuetitle}, +\bibfield{maintitle}, and \bibfield{series}. Commas function as +delimiters. To take the previous example, you could list Catharine +Stimpson as the editor and compiler of the series by putting the +values \textit{series,edcomp} or \textit{edcomp,series} in +\bibfield{editortype}. + +Almost any entry that relies on cross-referencing can be written +without it. Doing so, however, requires some fields in your +bibliography database that are usually meant for the style's internal +use. These fields include \bibfield{booktitle} (a cross-referenced +\bibfield{title}) and \bibfield{bookbooktitle} (a double +cross-referenced \bibfield{title}---a \bibfield{title} +cross-referenced by a cross-referenced \bibfield{title}). To +accommodate entries that don't use cross-referencing, the style +accepts the values \textit{booktitle} and \textit{bookbooktitle} in +editor and translator type fields. An example of double +cross-referencing will set us up to use both: + +\begin{verbatim} + @InCollection{doe2018, + options = {swapvol}, + author = {Doe, Jane}, + title = {A Poem}, + translator = {Smith, John}, + pages = {56–57}, + crossref = {jones2018} + } + @InBook{jones2018, + editor = {Jones, David}, + title = {A Volume of Poems}, + volume = {2}, + year = {2018}, + crossref = {white2016} + } + @Collection{white2016, + editor = {White, Amy}, + title = {A Collection of Poems}, + volumes = {4}, + address = {Chicago}, + publisher = {University of Chicago Press}, + year = {2016–18} + } +\end{verbatim} + +\begin{citebib} +\item \cite[56]{doe2018} +\end{citebib} + +\noindent The following alternative dispenses with \bibfield{crossref} +but needs two editor type fields, plus two other fields that don't +usually appear in bibliography databases: \bibfield{bookvolume} (a +cross-referenced \bibfield{volume}) and \bibfield{bookyear} (a +cross-referenced \bibfield{year}). + +\begin{verbatim} + @InCollection{doe2018.alt, + author = {Doe, Jane}, + title = {A Poem}, + translator = {Smith, John}, + pages = {56–57}, + booktitle = {A Volume of Poems}, + editor = {Jones, David}, + editortype = {booktitle}, + bookvolume = {2}, + year = {2018}, + bookbooktitle = {A Collection of Poems}, + editora = {White, Amy}, + editoratype = {bookbooktitle}, + volumes = {4}, + address = {Chicago}, + publisher = {University of Chicago Press}, + bookyear = {2016–18} + } +\end{verbatim} + +\begin{citebib} +\item \cite[56]{doe2018.alt} +\end{citebib} + +In short, for a title's compilers, expanders, revisers, and updaters, +and for any title other than \bibfield{title}, you need to put the +correct value of the assignment in the editor or translator type field +that corresponds with the editor or translator name list +(\bibfield{editortype} for \bibfield{editor}, +\bibfield{translatortype} for \bibfield{translator}, and so on). +Combined with Windy City's support for citing articles, chapters, +books, and other works within books, this scheme allows for several +sets of editors per work. \subsection{Switching Places and Roles} -\label{edtranspos} +\label{editors:swap} + +According to \textit{CMOS}, if a work has an editor and a translator, +their names should appear in citations in the order in which they +appear on the work's title page (see \textit{CMOS} \ref{14.104}). By +default, the style lists editors first. To reverse the order, the +style provides a suite of entry options that apply to the editors and +translators of different titles. This means that if a work has +multiple sets of editors and translators, you may swap positions of +any set without affecting the others. -Normally, Windy City lists editors first. But if translators are -listed first on a work's title page, you should reverse the order (see -\textit{CMOS} \ref{14.104}). For that, use the entry option -\opt{swaptrans}. Compare: +For simplicity, let's focus on \opt{swaptrans}. This option swaps the +editors and translators of works other than an \bibfield{issuetitle}, +\bibfield{maintitle}, or \bibfield{series}. Compare: \begin{citebib} \item \cite{doe2010a} @@ -1461,9 +1773,9 @@ listed first on a work's title page, you should reverse the order (see \item \cite{doe2010b} \end{citebib} -If a work has no author, but has an editor, the style will print the -editor's name in the author's position. The same happens if a work has -no author but does have a translator. The following are examples from +If a work has no author, but has editors, the style prints their names +in the author's position. The same happens if a work has no author or +editor but has translators. The following are examples from \textit{CMOS} \ref{14.103}: \begin{citebib} @@ -1486,24 +1798,90 @@ in the author's position: \end{citebib} Similarly, if a work's editors and translators are the same, the style -will print the editors' role first, as in \textit{edited and -translated by}. Reverse them with \opt{swaptrans}. From \textit{CMOS} +prints the editors' role first, as in \textit{edited and translated +by}. Reverse them with \opt{swaptrans}. From \textit{CMOS} \ref{14.104}: \begin{citebib} \item \cite{menchu1999} \end{citebib} -To make switching roles easier in these cases, you may also use the -relevant \bibfield{editortype} field with a bibliography string from -Table \ref{table:ed}. After all, for compilers, revisers, and -updaters, you need to put a value in \bibfield{editortype} anyway. So, -if you pick one that begins with \textit{trans} (\textit{transcomp}, -\textit{transed}, \textit{transrev}, or \textit{transup}), Windy City -will assume that the translator's role goes first. +You may also swap roles by changing the value in the relevant +\bibfield{editortype} field (see Table \ref{editors:table} in section +\ref{editors:basics}). For compilers, expanders, revisers, and +updaters, you need to put a value in \bibfield{editortype} anyway. You +may as well pick a value that has the roles in the correct order. +Either way, if you pick one that begins with \textit{trans} +(\textit{transcomp}, \textit{transed}, \textit{transex}, +\textit{transrev}, or \textit{transup}), Windy City assumes that the +translator's role goes first. Using \opt{swaptrans} would then put the +editor's role first. + +As often happens, cross-referencing raises some complications. The +problem is that \opt{swaptrans} applies to the editors and translators +of a \bibfield{title}, but cross-referenced works have more than one +(a \bibfield{title}, a cross-referenced \bibfield{title}, and maybe +even a double cross-referenced \bibfield{title}). Three more entry +options allow you to pick among them so as to swap whichever set of +editors and translators you want. Here's a silly example to showcase +all three options: + +\begin{verbatim} + @InCollection{doe2017, + author = {Doe, Jane}, + title = {An Essay}, + editor = {Smith, John}, + translator = {Smith, John}, + pages = {18–35}, + crossref = {jones2017} + } + @InBook{jones2017, + title = {A Volume of Essays}, + editor = {Smith, John}, + translator = {Smith, John}, + volume = {1}, + crossref = {white2017} + } + @Collection{white2017, + title = {A Collection of Essays}, + editor = {Smith, John}, + translator = {Smith, John}, + volumes = {3}, + address = {Chicago}, + publisher = {University of Chicago Press}, + year = {2017} + } +\end{verbatim} + +To swap the first set of editors and translators, use +\opt{swaptrans:title}: + +\begin{citebib} +\item \cite{doe2017a} +\end{citebib} + +To swap the second set of editors and translators, use +\opt{swaptrans:booktitle} (or \opt{swaptrans:book}): + +\begin{citebib} +\item \cite{doe2017b} +\end{citebib} + +To swap the third set of editors and translators, use +\opt{swaptrans:bookbooktitle} (or \opt{swaptrans:bookbook}): + +\begin{citebib} +\item \cite{doe2017c} +\end{citebib} + +To swap editors and translators of an \bibfield{issuetitle}, +\bibfield{maintitle}, or \bibfield{series}, use +\opt{swaptrans:issuetitle}, \opt{swaptrans:maintitle}, or +\opt{swaptrans:series}, respectively. The first two also have short +forms: \opt{swaptrans:issue} and \opt{swaptrans:main}. -On rare occasions, you may want to swap the position of an author and -an editor or translator. \textit{CMOS} \ref{14.104} gives an example: +On rare occasions, you may want to swap positions of an author and an +editor or translator. From \textit{CMOS} \ref{14.104}: \begin{citebib} \item \cite{pound1953} @@ -1514,13 +1892,13 @@ an editor or translator. \textit{CMOS} \ref{14.104} gives an example: \bibtype{collection}, \bibtype{inbook}, \bibtype{incollection}, \bibtype{mvbook}, and \bibtype{mvcollection} entry types. But beware: Windy City doesn't look ahead to see if there's really an editor or -translator to take the author's place. If it doesn't find one, it will -still print the author's name after the title, leaving the author's +translator to take the author's place. If it doesn't find one, it +still prints the author's name after the title, leaving the author's position empty. Also, if it finds both an editor and a translator, and -they're not the same person, it will print the editor's name in the +they're not the same person, it prints the editor's name in the author's position---again, giving priority to editors. If you want the translator's name in the author's position, use \opt{swapauth} with -\opt{swaptrans}. +the appropriate \opt{swaptrans} option. For correct sorting in a bibliography, a work that uses \opt{swapauth} needs a field like \bibfield{sortname} to sort it by the name of the @@ -1571,7 +1949,7 @@ priority, the collection's or the volume's. Consider an example from title of the collection. In standard notes and bibliographies, \textit{CMOS} gives you the option of reversing this order. (See especially \textit{CMOS} \ref{14.119}, \ref{14.121}, and \ref{14.122}, -and compare \ref{14.144} and \ref{15.41}.) Windy City does as well, +and compare \ref{14.144} and \ref{15.41}.) Windy City does as well with the entry or preamble option \opt{swapvol}. \begin{citebib} @@ -1689,7 +2067,7 @@ Windy City cross-references previously cited volumes. \begin{citebib} \item \cite[56]{doe2018} -\item \cite[128]{edwards2018} +\item \cite[128]{adams2018} \nocite{jones2018} \end{citebib} @@ -1699,7 +2077,7 @@ Windy City cross-references previously cited volumes. \AtNextCitekey{\toggletrue{swapvol}} \item \cite[56]{doe2018} \AtNextCitekey{\toggletrue{swapvol}} -\item \cite[128]{edwards2018} +\item \cite[128]{adams2018} \AtNextBibliography{\toggletrue{swapvol}} \nocite{jones2018} \end{citebib} @@ -2446,7 +2824,7 @@ database. \label{14.104} On how to make an author and editor swap places, see section -\ref{edtranspos}. +\ref{editors:swap}. \begin{citebib} \item \cite{bonnefoy1995} @@ -3571,6 +3949,7 @@ sorting in this section are mentioned there. Creating a reference list in the preferred way, with the \opt{reflist} preamble option, should prevent those issues.\\}% +\titleformat{\section}{\large\bfseries\filcenter}{}{2ex}{} \printbiblist[prenote=sh]{shorthand} \refstepcounter{sh}\label{sh} \printbibliography[notkeyword=notinbib,prenote=bib] diff --git a/macros/latex/contrib/biblatex-contrib/windycity/windycity.bbx b/macros/latex/contrib/biblatex-contrib/windycity/windycity.bbx index f52a3160f4..76b543d9a6 100644 --- a/macros/latex/contrib/biblatex-contrib/windycity/windycity.bbx +++ b/macros/latex/contrib/biblatex-contrib/windycity/windycity.bbx @@ -1,4 +1,4 @@ -% Last modified: Sat 30 Jan 2021 06:17:53 PM CST +% Last modified: Sun 02 May 2021 01:14:55 PM CDT % Permission is granted to copy, distribute and/or modify this % software under the terms of the LaTeX Project Public License (LPPL), @@ -11,7 +11,7 @@ % implied warranties of merchantability and fitness for a particular % purpose. -\ProvidesFile{windycity.bbx}[2021/01/30 Windy City bibliography style +\ProvidesFile{windycity.bbx}[2021/05/02 Windy City bibliography style for biblatex] \@ifpackagelater{biblatex}{2019/08/17} {} @@ -68,14 +68,14 @@ \DeclareBiblatexOption{entry}[boolean]{listvols}[true]{% \settoggle{listvols}{#1}}% +\providetoggle{newauth} +\DeclareBiblatexOption{entry}[boolean]{newauth}[true]{% + \settoggle{newauth}{#1}}% + \providetoggle{noauth} \DeclareBiblatexOption{entry}[boolean]{noauth}[true]{% \settoggle{noauth}{#1}}% -\providetoggle{noreprint} -\DeclareBiblatexOption{entry}[boolean]{noreprint}[true]{% - \settoggle{noreprint}{#1}}% - \DeclareBiblatexOption{global}[boolean]{nolos}[true]{% \ifstrequal{#1}{true} {\AtBeginBibliography{\blx@key@bibcheck{nolos}}} @@ -85,6 +85,10 @@ \DeclareBiblatexOption{global}[boolean]{nopages}[true]{% \settoggle{nopages}{#1}}% +\providetoggle{noreprint} +\DeclareBiblatexOption{entry}[boolean]{noreprint}[true]{% + \settoggle{noreprint}{#1}}% + \providetoggle{reflist} \DeclareBiblatexOption{global}[boolean]{reflist}[true]{% \ifstrequal{#1}{true} @@ -106,6 +110,9 @@ \toggletrue{shortfirst}}% {\togglefalse{short}}} +\DeclareBiblatexOption{global}[boolean]{shortafter}[true]{% + \settoggle{short}{#1}}% + \providetoggle{shortfirst} \DeclareBiblatexOption{global}[boolean]{shortfirst}[true]{% \settoggle{shortfirst}{#1}}% @@ -122,13 +129,38 @@ \DeclareBiblatexOption{entry}[boolean]{swapauth}[true]{% \settoggle{swapauth}{#1}}% -\providetoggle{newauth} -\DeclareBiblatexOption{entry}[boolean]{newauth}[true]{% - \settoggle{newauth}{#1}}% - \providetoggle{swaptrans} +\providetoggle{swaptrans:booktitle} +\providetoggle{swaptrans:bookbooktitle} +\providetoggle{swaptrans:issuetitle} +\providetoggle{swaptrans:maintitle} +\providetoggle{swaptrans:series} +\providetoggle{swaptrans:title} \DeclareBiblatexOption{entry}[boolean]{swaptrans}[true]{% - \settoggle{swaptrans}{#1}}% + \settoggle{swaptrans:title}{#1}% + \settoggle{swaptrans:booktitle}{#1}% + \settoggle{swaptrans:bookbooktitle}{#1}}% +\DeclareBiblatexOption{entry}[boolean]{swaptrans:booktitle}[true]{% + \settoggle{swaptrans:booktitle}{#1}}% +\DeclareBiblatexOption{entry}[boolean]{swaptrans:bookbooktitle}[true]{% + \settoggle{swaptrans:bookbooktitle}{#1}}% +\DeclareBiblatexOption{entry}[boolean]{swaptrans:issuetitle}[true]{% + \settoggle{swaptrans:issuetitle}{#1}}% +\DeclareBiblatexOption{entry}[boolean]{swaptrans:maintitle}[true]{% + \settoggle{swaptrans:maintitle}{#1}}% +\DeclareBiblatexOption{entry}[boolean]{swaptrans:series}[true]{% + \settoggle{swaptrans:series}{#1}}% +\DeclareBiblatexOption{entry}[boolean]{swaptrans:title}[true]{% + \settoggle{swaptrans:title}{#1}}% +% Short forms of the options above: +\DeclareBiblatexOption{entry}[boolean]{swaptrans:book}[true]{% + \settoggle{swaptrans:booktitle}{#1}}% +\DeclareBiblatexOption{entry}[boolean]{swaptrans:bookbook}[true]{% + \settoggle{swaptrans:bookbooktitle}{#1}}% +\DeclareBiblatexOption{entry}[boolean]{swaptrans:issue}[true]{% + \settoggle{swaptrans:issuetitle}{#1}}% +\DeclareBiblatexOption{entry}[boolean]{swaptrans:main}[true]{% + \settoggle{swaptrans:maintitle}{#1}}% \providetoggle{swapvol} \DeclareBiblatexOption{entry,global}[boolean]{swapvol}[true]{% @@ -161,9 +193,6 @@ maxbibnames=10, mincitenames=1, maxcitenames=3, -% Remember, if 'mincrossrefs' is greater than 1, and you cite just one -% entrykey in a document (or refsection, etc), the field 'crossref' is -% undefined. mincrossrefs=2, minxrefs=2, pagetracker=page, @@ -180,12 +209,7 @@ useprefix=false, usetranslator=true} -% If a document's language is English, set by babel or polyglossia or -% by biblatex when neither babel nor polyglossia has been loaded, use -% 'american-windycity.lbx': \DeclareLanguageMapping{english}{american-windycity} -% If the document's language isn't English, try to override -% 'american-windycity.lbx' with '<language>-windycity.lbx': \DeclareLanguageMappingSuffix{-windycity} \DeclareLabeldate{% 'reflist' preamble option loads an alternative @@ -278,10 +302,10 @@ \field{volume} \literal{0}}} -% Mapping for when 'journal', 'journaltitle', 'organization', or -% 'blogtitle' goes in the author's position. +% When 'journal', 'journaltitle', 'organization', or 'blogtitle' goes +% in the author's position. -\DeclareSourcemap{ +\DeclareStyleSourcemap{ \maps[datatype=bibtex]{ \map[overwrite]{ \pertype{article} @@ -310,7 +334,7 @@ } } } -\DeclareSourcemap{ +\DeclareStyleSourcemap{ \maps[datatype=bibtex]{ \map[overwrite]{ \pertype{online} @@ -337,7 +361,7 @@ } } } -\DeclareSourcemap{ +\DeclareStyleSourcemap{ \maps[datatype=bibtex]{ \map[overwrite=false]{ \pertype{inreference} @@ -359,6 +383,29 @@ } } +% Save the entry key of every editor, translator, and title. + +\DeclareStyleSourcemap{ + \maps[datatype=bibtex]{ + \map[overwrite, foreach={title,booktitle,bookbooktitle}]{ + \step[fieldsource=entrykey] + \step[fieldset=$MAPLOOPkey, origfieldval] + \step[notfield=$MAPLOOP, final] + \step[fieldset=$MAPLOOPkey, null] + } + \map[overwrite, foreach={% + editor,editora,editorb,editorc,translator,translatora,translatorb}]{ + \step[fieldsource=entrykey] + \step[fieldset=$MAPLOOPtype, fieldvalue={,}, appendstrict] + \step[fieldset=$MAPLOOPtype, origfieldval, append] + \step[notfield=$MAPLOOP, final] + \step[fieldset=$MAPLOOPtype, null] + } + } +} + +% For 'collsonly' and 'nolos' options and the 'reference' entry type. + \defbibcheck{collsonly}{% \ifentrytype{inbook} {\iffieldundef{crossref} @@ -389,18 +436,22 @@ \ResetDataInheritance \DefaultInheritance[\except{*}{review}{all=false}]{all=true,override=false} \DeclareDataInheritance{*}{incollection,inbook,letter,review}{% + \inherit[override=true]{titlekey}{booktitlekey} + \inherit[override=true]{booktitlekey}{bookbooktitlekey} \inherit{author}{bookauthor} \inherit{authortype}{bookauthortype} \inherit{shortauthor}{shortbookauthor} - \inherit{editor}{editora} - \inherit{editora}{editorb} - \inherit{editorb}{editorc} - \inherit{editortype}{editoratype} - \inherit{editoratype}{editorbtype} - \inherit{editorbtype}{editorctype} + \inherit[override=true]{editor}{editora} + \inherit[override=true]{editora}{editorb} + \inherit[override=true]{editorb}{editorc} + \inherit[override=true]{editortype}{editoratype} + \inherit[override=true]{editoratype}{editorbtype} + \inherit[override=true]{editorbtype}{editorctype} + \inherit{editoraddon}{editoraaddon} \inherit{translator}{translatora} \inherit{translatora}{translatorb} - \inherit{translatortype}{translatoratype} + \inherit[override=true]{translatortype}{translatoratype} + \inherit[override=true]{translatoratype}{translatorbtype} \inherit{title}{booktitle} \inherit{subtitle}{booksubtitle} \inherit{titleaddon}{booktitleaddon} @@ -442,12 +493,16 @@ \let\crossreflist\empty \let\pluga\empty \let\plugb\empty -\let\xeditor\empty -\let\yeditor\empty \let\xtitle\empty \let\xvolume\empty +\let\xeditor\empty +\let\yeditor\empty +\let\edtypes\empty +\let\transtypes\empty + \providetoggle{authposition} +\providetoggle{atleastone} \providetoggle{bibliography} \providetoggle{ibid:loccit} \providetoggle{multicite} @@ -496,8 +551,6 @@ \global\togglefalse{reflist}}% {\item} -% Index names only. - \renewbibmacro*{bibindex}{% \ifbibindex {\indexnames{labelname}}% @@ -536,8 +589,8 @@ \DeclareIndexNameAlias{translator}{default} % Affixes like 'Jr.', should appear last, delimited with a comma, when -% inverted, as in a bibliography, but not otherwise, as in a note. See -% CMOS, 17th ed., 6.43 and 16.41, as well as the example in 14.75. +% the name is inverted. See CMOS, 17th ed., 6.43 and 16.41, and the +% example in 14.75. \renewbibmacro*{name:family-given}[4]{% \ifuseprefix @@ -705,14 +758,18 @@ \step[typesource=www, typetarget=online] \step[typesource=inreference, typetarget=reference] \step[typesource=mathesis, typetarget=thesis] - \step[typesource=phdthesis, typetarget=thesis]} + \step[typesource=phdthesis, typetarget=thesis] + } \map{ \step[fieldsource=school, fieldtarget=institution] \step[fieldsource=address, fieldtarget=location] - \step[fieldsource=journal, fieldtarget=journaltitle]}} + \step[fieldsource=journal, fieldtarget=journaltitle] + } +} \DeclareBibliographyAlias{collection}{book} \DeclareBibliographyAlias{cite:collection}{cite:book} +\DeclareBibliographyAlias{*}{book} \DeclareBibliographyAlias{inbook}{incollection} \DeclareBibliographyAlias{letter}{incollection} @@ -722,8 +779,6 @@ \DeclareBibliographyAlias{unpublished}{thesis} \DeclareBibliographyAlias{cite:unpublished}{cite:thesis} -\DeclareBibliographyAlias{*}{book} - %%%%%%%%%%%%%%%%%%%%%%%%% %% Author's Position %% %%%%%%%%%%%%%%%%%%%%%%%%% @@ -738,11 +793,11 @@ {\usebibmacro{authpos+deflabel}}% {\usebibmacro{author+bookauthor}% \ifnameundef{\cbx@namelist} - {\usebibmacro{edtrans:authpos}% + {\usebibmacro{editors:a}% \ifnameundef{\cbx@namelist} {\toggletrue{noauth}% \usebibmacro{authpos+deflabel}}% - {\usebibmacro{addplus:authpos}% + {\usebibmacro{addplus+etc}% \usebibmacro{namehash+etc}}} {\usebibmacro{namehash+etc}}}} @@ -824,244 +879,162 @@ % For editors and translators in the author's position. -\newbibmacro*{edtrans:authpos}{% - \togglefalse{noed}% - \togglefalse{notrans}% - \usebibmacro{test:ed:authpos}% - \usebibmacro{test:trans:authpos}% - \ifboolexpr{ togl {noed} - and togl {notrans}} - {} - {\iftoggle{noed} - {\usebibmacro{transcombos}}% - {\iftoggle{notrans} - {\usebibmacro{edcombos}}% - {\iftoggle{swaptrans} - {\usebibmacro{transcombos}}% - {\usebibmacro{edcombos}}}}}} - -\newbibmacro*{test:ed:authpos}{% - \ifboolexpr{ test {\ifnameundef{editor}} - and test {\ifnameundef{editora}}} - {\toggletrue{noed}}% - {\ifnameundef{editor} - {\usebibmacro{test:editora:authpos}}% - {\usebibmacro{test:editor:authpos}% - \iftoggle{noed} - {\global\togglefalse{noed}% - \usebibmacro{test:editora:authpos}}% - {}}}} - -\newbibmacro*{test:xeditor:a}[1]{% - \ifboolexpr{ test {\ifnameundef{\xeditor}} - or test {\iffieldequalstr{\xeditor type}{issuetitle}} - or test {\iffieldequalstr{\xeditor type}{series}}} - {\toggletrue{noed}}% - {\ifstrequal{#1}{ap}% not 'authposition' toggle - {\usebibmacro{test:xeditor:b:authpos}}% - {\usebibmacro{test:xeditor:b}}}} - -\newbibmacro*{test:xeditor:b:authpos}{% - \iffieldequalstr{\xeditor type}{maintitle} - {\iftoggle{collection:bk} - {\iftoggle{swapvol} - {} - {\toggletrue{noed}}} - {\toggletrue{noed}}} - {\ifboolexpr{ togl {collection:bk} - and togl {swapvol}} - {\toggletrue{noed}}% - {\ifboolexpr{ togl {collection:icbk} - or togl {collection:icib}} - {\ifnameundef{translator} - {} - {\toggletrue{noed}}} - {}}}} +\newbibmacro*{editors:a}{% + \usebibmacro{test:ed:a}% + \usebibmacro{test:trans:a}% + \iftoggle{swapvol} + {\ifboolexpr{ test {\ifinlist{maintitle}{\edtypes}} + or test {\ifinlist{maintitle}{\transtypes}}} + {\usebibmacro{test:swaptrans:a}{maintitle}}% + {\usebibmacro{test:swaptrans:a}{booktitle}}} + {\usebibmacro{test:swaptrans:a}{title}}} + +\newbibmacro*{test:ed:a}{% + \renewcommand*{\do}[1]{% + \ifnameundef{##1} + {\toggletrue{noed}}% + {\togglefalse{noed}% + \renewcommand*{\xeditor}{##1}% + \let\edtypes\empty + \forcsvfield{\listadd\edtypes}{\xeditor type}% + \usebibmacro{test:a:types}{\edtypes}{noed}}}% needs '%' + \docsvlist{editor,editora,editorb,editorc}}% + +\newbibmacro*{test:trans:a}{% + \renewcommand*{\do}[1]{% + \ifnameundef{##1} + {\toggletrue{notrans}}% + {\togglefalse{notrans}% + \renewcommand*{\yeditor}{##1}% + \let\transtypes\empty + \forcsvfield{\listadd\transtypes}{\yeditor type}% + \usebibmacro{test:a:types}{\transtypes}{notrans}}}% needs '%' + \docsvlist{translator,translatora,translatorb}}% + +\newbibmacro*{test:a:types}[2]{% + \ifboolexpr{ test {\ifinlist{issuetitle}{#1}} + or test {\ifinlist{series}{#1}}} + {\toggletrue{#2}}% + {\ifinlist{maintitle}{#1} + {\iftoggle{collection:bk} + {\iftoggle{swapvol} + {\listbreak}% + {\toggletrue{#2}}} + {\toggletrue{#2}}} + {\ifboolexpr{ togl {collection:bk} + and togl {swapvol}} + {\toggletrue{#2}}% + {\usebibmacro{test:a:keys}{#1}{#2}}}}} -\newbibmacro*{test:editor:authpos}{% - \renewcommand*{\xeditor}{editor}% - \usebibmacro{test:xeditor:a}{ap}% - \iftoggle{noed} - {} +\newbibmacro*{test:a:keys}[2]{% + \xifinlist{\thefield{\xtitle titlekey}}{#1} {\ifboolexpr{ togl {collection:ib} - and togl {swapvol} - and not test {\ifnameundef{editora}}} - {\toggletrue{noed}}% + and togl {swapvol}} + {\toggletrue{#2}}% {\ifboolexpr{ togl {swapvol} and ( togl {collection:icbk} or togl {collection:icib} )} - {\toggletrue{noed}}% - {}}}} + {\toggletrue{#2}}% + {\listbreak}}} + {\listbreak}}% + +\newbibmacro*{test:swaptrans:a}[1]{% + \iftoggle{swaptrans:#1} + {\toggletrue{swaptrans}% + \iftoggle{notrans} + {\usebibmacro{ed:a:combos}}% + {\usebibmacro{trans:a:combos}}% + \togglefalse{swaptrans}}% + {\iftoggle{noed} + {\usebibmacro{trans:a:combos}}% + {\usebibmacro{ed:a:combos}}}} -\newbibmacro*{test:editora:authpos}{% - \renewcommand*{\xeditor}{editora}% - \usebibmacro{test:xeditor:a}{ap}% +\newbibmacro*{ed:a:combos}{% \iftoggle{noed} {} - {\ifboolexpr{ togl {collection:ib} - and not togl {swapvol} - and test {\ifnameundef{editor}}} - {\toggletrue{noed}}% - {}}} - -\newbibmacro*{test:trans:authpos}{% - \usebibmacro{trans+transa+transb}% - \ifnameundef{\yeditor} - {\toggletrue{notrans}}% - {\iffieldequalstr{translatortype}{maintitle} - {\ifboolexpr{ togl {collection:bk} - and togl {swapvol}} - {} - {\toggletrue{notrans}}} - {\iffieldequalstr{translatoratype}{maintitle} - {\ifboolexpr{ togl {collection:icbk} - and togl {swapvol}} - {} - {\toggletrue{notrans}}} - {}}}} - -\newbibmacro*{trans+transa+transb}{% - \ifnameundef{translator} - {\ifnameundef{translatora} - {\renewcommand*{\yeditor}{translatorb}}% - {\renewcommand*{\yeditor}{translatora}}} - {\renewcommand*{\yeditor}{translator}}} - -\newbibmacro*{transcombos}{% - \renewcommand*{\cbx@namelist}{\yeditor}% - \ifnamesequal{\xeditor}{\yeditor} - {\clearname{\xeditor}% - \ifboolexpr{ test {\iffieldstart{editortype}{c}} - or test {\iffieldequalstr{\xeditor type}{transcomp}}} - {\renewcommand*{\cbx@bibstring}{transcomp}}% - {\ifboolexpr{ test {\iffieldstart{\xeditor type}{r}} - or test {\iffieldequalstr{\xeditor type}{transrev}}} - {\renewcommand*{\cbx@bibstring}{transrev}}% - {\ifboolexpr{ test {\iffieldstart{\xeditor type}{u}} - or test {\iffieldequalstr{\xeditor type}{transup}}} - {\renewcommand*{\cbx@bibstring}{transup}}% - {\renewcommand*{\cbx@bibstring}{transed}}}}} - {\renewcommand*{\cbx@bibstring}{translator}}} - -\newbibmacro*{edcombos}{% - \renewcommand*{\cbx@namelist}{\xeditor}% - \ifnamesequal{\xeditor}{\yeditor} - {\clearname{\yeditor}% - \usebibmacro{edcombos:trans}}% - {\usebibmacro{edcombos:notrans}}} - -\newbibmacro*{edcombos:trans}{% - \iffieldstart{\xeditor type}{c} - {\renewcommand*{\cbx@bibstring}{comptrans}}% - {\iffieldstart{\xeditor type}{r} - {\renewcommand*{\cbx@bibstring}{revtrans}}% - {\iffieldstart{\xeditor type}{u} - {\renewcommand*{\cbx@bibstring}{uptrans}}% - {\iffieldequalstr{\xeditor type}{transcomp} - {\renewcommand*{\cbx@bibstring}{transcomp}}% - {\iffieldequalstr{\xeditor type}{transed} - {\renewcommand*{\cbx@bibstring}{transed}}% - {\iffieldequalstr{\xeditor type}{transrev} - {\renewcommand*{\cbx@bibstring}{transrev}}% - {\iffieldequalstr{\xeditor type}{transup} - {\renewcommand*{\cbx@bibstring}{transup}}% - {\renewcommand*{\cbx@bibstring}{edtrans}}}}}}}}} - -\newbibmacro*{edcombos:notrans}{% - \iffieldequalstr{\xeditor type}{compiler} - {\renewcommand*{\cbx@bibstring}{compiler}}% - {\iffieldequalstr{\xeditor type}{reviser} - {\renewcommand*{\cbx@bibstring}{reviser}}% - {\iffieldequalstr{\xeditor type}{updater} - {\renewcommand*{\cbx@bibstring}{updater}}% - {\iffieldequalstr{\xeditor type}{comped} - {\renewcommand*{\cbx@bibstring}{comped}}% - {\iffieldequalstr{\xeditor type}{comprev} - {\renewcommand*{\cbx@bibstring}{comprev}}% - {\iffieldequalstr{\xeditor type}{compup} - {\renewcommand*{\cbx@bibstring}{compup}}% - {\iffieldequalstr{\xeditor type}{edcomp} - {\renewcommand*{\cbx@bibstring}{edcomp}}% - {\iffieldequalstr{\xeditor type}{edrev} - {\renewcommand*{\cbx@bibstring}{edrev}}% - {\iffieldequalstr{\xeditor type}{edup} - {\renewcommand*{\cbx@bibstring}{edup}}% - {\iffieldequalstr{\xeditor type}{revcomp} - {\renewcommand*{\cbx@bibstring}{revcomp}}% - {\iffieldequalstr{\xeditor type}{reved} - {\renewcommand*{\cbx@bibstring}{reved}}% - {\iffieldequalstr{\xeditor type}{revup} - {\renewcommand*{\cbx@bibstring}{revup}}% - {\iffieldequalstr{\xeditor type}{upcomp} - {\renewcommand*{\cbx@bibstring}{upcomp}}% - {\iffieldequalstr{\xeditor type}{uped} - {\renewcommand*{\cbx@bibstring}{uped}}% - {\iffieldequalstr{\xeditor type}{uprev} - {\renewcommand*{\cbx@bibstring}{uprev}}% - {\renewcommand*{\cbx@bibstring}{editor}}}}}}}}}}}}}}}}} - -% Thanks to David Fussner's biblatex-chicago for pointing me to this -% command by Philipp Lehman. Source: -% https://groups.google.com/forum/#!topic/comp.text.tex/kG003fkZK1I - -\newrobustcmd*{\iffieldstart}[2]{% - \iffieldundef{#1} - {\@secondoftwo}% originally '\@gobbletwo' - {\begingroup - \edef\@tempa{% - \long\def\noexpand\iffieldstart@i####1\detokenize{#2}####2}% - \@tempa\@nil{\endgroup\ifblank{##1}}% - \savefield*{#1}{\@tempa}% - \expandafter\iffieldstart@i\detokenize - \expandafter\expandafter\expandafter{% - \expandafter\@tempa\detokenize{#2}}\@nil}}% - -\newbibmacro*{addplus:authpos}{% - \iftoggle{cbx:short} - {} - {\usebibmacro{addplus}% - \renewcommand*{\plugb}{% - \addcomma\space\bibsstring{\cbx@bibstring}}}} + {\usebibmacro{edcombos:a}}} -\newbibmacro*{addplus}{% - \ifnameundef{\xeditor} - {\ifnameundef{\yeditor} - {} - {\ifnumgreater{\value{\yeditor}}{1} - {\edef\cbx@bibstring{\cbx@bibstring +}}% - {}}} - {\ifnumgreater{\value{\xeditor}}{1} - {\edef\cbx@bibstring{\cbx@bibstring +}}% - {}}} - -% For editors and translators not in the author's position. - -\newbibmacro*{edtrans}{% - \iftoggle{swaptrans} - {\usebibmacro{transcombos+etc}% - \usebibmacro{edcombos+etc}}% - {\usebibmacro{edcombos+etc}% - \usebibmacro{transcombos+etc}}% - \usebibmacro{editoraddon}}% - -\newbibmacro*{transcombos+etc}{% - \togglefalse{noed}% - \togglefalse{notrans}% - \usebibmacro{test:ed}% - \usebibmacro{test:trans}% +\newbibmacro*{trans:a:combos}{% \iftoggle{notrans} {} - {\usebibmacro{transcombos}% - \usebibmacro{pluga+etc}}} - -\newbibmacro*{edcombos+etc}{% - \togglefalse{noed}% - \togglefalse{notrans}% - \usebibmacro{test:ed}% - \usebibmacro{test:trans}% + {\usebibmacro{transcombos:a}}} + +% For editors and translators after the author's position. + +\newbibmacro*{editors:b}{% + \usebibmacro{test:ed:b}% + \usebibmacro{test:trans:b}% + \ifdefstring{\xtitle}{book} + {\usebibmacro{test:swaptrans:b}{booktitle}}% + {\ifdefstring{\xtitle}{bookbook} + {\usebibmacro{test:swaptrans:b}{bookbooktitle}}% + {\usebibmacro{test:swaptrans:b}{title}}}} + +\newbibmacro*{test:ed:b}{% + \renewcommand*{\do}[1]{% + \ifnameundef{##1} + {\toggletrue{noed}}% + {\togglefalse{noed}% + \renewcommand*{\xeditor}{##1}% + \let\edtypes\empty + \forcsvfield{\listadd\edtypes}{\xeditor type}% + \usebibmacro{test:b:types}{\edtypes}{noed}}}% needs '%' + \docsvlist{editor,editora,editorb,editorc}}% + +\newbibmacro*{test:trans:b}{% + \renewcommand*{\do}[1]{% + \ifnameundef{##1} + {\toggletrue{notrans}}% + {\togglefalse{notrans}% + \renewcommand*{\yeditor}{##1}% + \let\transtypes\empty + \forcsvfield{\listadd\transtypes}{\yeditor type}% + \usebibmacro{test:b:types}{\transtypes}{notrans}}}% needs '%' + \docsvlist{translator,translatora,translatorb}}% + +\newbibmacro*{test:b:types}[2]{% + \ifboolexpr{ test {\ifinlist{issuetitle}{#1}} + or test {\ifinlist{maintitle}{#1}} + or test {\ifinlist{series}{#1}}} + {\toggletrue{#2}}% + {\ifinlist{booktitle}{#1} + {\ifdefstring{\xtitle}{book} + {\usebibmacro{test:b:keys}{#1}{#2}}% + {\toggletrue{#2}}} + {\ifinlist{bookbooktitle}{#1} + {\ifdefstring{\xtitle}{bookbook} + {\usebibmacro{test:b:keys}{#1}{#2}}% + {\toggletrue{#2}}} + {\usebibmacro{test:b:keys}{#1}{#2}}}}} + +\newbibmacro*{test:b:keys}[2]{% + \xifinlist{\thefield{\xtitle titlekey}}{#1} + {\listbreak}% + {\toggletrue{#2}}} + +\newbibmacro*{test:swaptrans:b}[1]{% + \iftoggle{swaptrans:#1} + {\toggletrue{swaptrans}% + \usebibmacro{trans:b:combos}% + \usebibmacro{ed:b:combos}% + \togglefalse{swaptrans}}% + {\usebibmacro{ed:b:combos}% + \usebibmacro{trans:b:combos}}} + +\newbibmacro*{ed:b:combos}{% \iftoggle{noed} + {\usebibmacro{ed:b:second}}% + {\usebibmacro{edcombos:a}% + \usebibmacro{pluga+etc}% + \usebibmacro{editoraddon}{editor}% + \usebibmacro{editoraddon}{editora}% + \usebibmacro{ed:b:second}% + \usebibmacro{editoraddon}{editora}}} + +\newbibmacro*{trans:b:combos}{% + \iftoggle{notrans} {} - {\usebibmacro{edcombos}% + {\usebibmacro{transcombos:a}% \usebibmacro{pluga+etc}}} \newbibmacro*{pluga+etc}{% @@ -1086,141 +1059,64 @@ {\setunit{\addcomma\space}}% {\newunit}}% -% Tests for 'edtrans' macro. - -\newbibmacro*{test:ed}{% - \iftoggle{edshift} - {\usebibmacro{eda+edb+edc}}% - {\ifnameundef{editor} - {\usebibmacro{test:editora}}% - {\usebibmacro{test:editor}% - \iftoggle{noed} - {\togglefalse{noed}% - \usebibmacro{test:editora}}% - {}}}} - -\newbibmacro*{eda+edb+edc}{% - \ifnameundef{editor} - {\ifnameundef{editora} - {\ifnameundef{editorb} - {\renewcommand*{\xeditor}{editorc}}% - {\renewcommand*{\xeditor}{editorb}}% - \usebibmacro{test:editorb}}% - {\usebibmacro{test:editora}% - \iftoggle{noed} - {\togglefalse{noed}% - \renewcommand*{\xeditor}{editorb}% - \usebibmacro{test:editorb}}% - {}}} - {\usebibmacro{test:editor}% - \iftoggle{noed} - {\togglefalse{noed}% - \usebibmacro{test:editora}}% - {}}} - -\newbibmacro*{test:editor}{% - \renewcommand*{\xeditor}{editor}% - \usebibmacro{test:xeditor:a}{}% +\newbibmacro*{ed:b:second}{% + \usebibmacro{test:ed:b}% \iftoggle{noed} {} - {\ifdefstring{\xtitle}{book} - {\toggletrue{noed}}% - {}}} + {\usebibmacro{edcombos:a}% + \usebibmacro{pluga+etc}}} -\newbibmacro*{test:editora}{% - \renewcommand*{\xeditor}{editora}% - \usebibmacro{test:xeditor:a}{}% +% For editors and translators of an 'issuetitle', 'maintitle', or 'series'. + +\newbibmacro*{editors:c}[1]{% + \usebibmacro{test:ed:c}{#1}% + \usebibmacro{test:trans:c}{#1}% + \iftoggle{swaptrans:#1} + {\toggletrue{swaptrans}% + \usebibmacro{trans:c:combos}% + \usebibmacro{ed:c:combos}{#1}% + \togglefalse{swaptrans}}% + {\usebibmacro{ed:c:combos}{#1}% + \usebibmacro{trans:c:combos}}} + +\newbibmacro*{test:ed:c}[1]{% + \renewcommand*{\do}[1]{% + \ifnameundef{##1} + {\toggletrue{noed}}% + {\togglefalse{noed}% + \renewcommand*{\xeditor}{##1}% + \let\edtypes\empty + \forcsvfield{\listadd\edtypes}{\xeditor type}% + \ifinlist{#1}{\edtypes} + {\listbreak}% + {\toggletrue{noed}}}}% needs '%' + \docsvlist{editor,editora,editorb,editorc}}% + +\newbibmacro*{test:trans:c}[1]{% + \renewcommand*{\do}[1]{% + \ifnameundef{##1} + {\toggletrue{notrans}}% + {\togglefalse{notrans}% + \renewcommand*{\yeditor}{##1}% + \let\transtypes\empty + \forcsvfield{\listadd\transtypes}{\yeditor type}% + \ifinlist{#1}{\transtypes} + {\listbreak}% + {\toggletrue{notrans}}}}% needs '%' + \docsvlist{translator,translatora,translatorb}}% + +\newbibmacro*{ed:c:combos}[1]{% \iftoggle{noed} {} - {\ifboolexpr{ test {\ifdefempty{\xtitle}} - and ( togl {collection:ib} - or togl {collection:icbk} - or togl {collection:icib} - or not togl {collection} )} - {\toggletrue{noed}}% - {\ifboolexpr{ test {\ifdefstring{\xtitle}{bookbook}} - and togl {swapvol} - and ( togl {collection:icib} - or togl {collection:icbk} )} - {\toggletrue{noed}}% - {}}}} - -\newbibmacro*{test:editorb}{% - \usebibmacro{test:xeditor:a}{}% - \iftoggle{collection:icib} - {\ifdefstring{\xtitle}{book} - {\toggletrue{noed}}% - {}} - {}} - -\newbibmacro*{test:xeditor:b}{% - \iffieldequalstr{\xeditor type}{maintitle} - {\toggletrue{noed}}% - {\ifdefempty{\xtitle} - {\ifboolexpr{ test {\iffieldequalstr{\xeditor type}{compiler}} - or test {\iffieldequalstr{\xeditor type}{comped}} - or test {\iffieldequalstr{\xeditor type}{comprev}} - or test {\iffieldequalstr{\xeditor type}{comptrans}} - or test {\iffieldequalstr{\xeditor type}{compup}} - or test {\iffieldequalstr{\xeditor type}{editor}} - or test {\iffieldequalstr{\xeditor type}{edcomp}} - or test {\iffieldequalstr{\xeditor type}{edrev}} - or test {\iffieldequalstr{\xeditor type}{edtrans}} - or test {\iffieldequalstr{\xeditor type}{edup}} - or test {\iffieldequalstr{\xeditor type}{reviser}} - or test {\iffieldequalstr{\xeditor type}{revcomp}} - or test {\iffieldequalstr{\xeditor type}{reved}} - or test {\iffieldequalstr{\xeditor type}{revtrans}} - or test {\iffieldequalstr{\xeditor type}{revup}} - or test {\iffieldequalstr{\xeditor type}{transcomp}} - or test {\iffieldequalstr{\xeditor type}{transed}} - or test {\iffieldequalstr{\xeditor type}{transrev}} - or test {\iffieldequalstr{\xeditor type}{transup}} - or test {\iffieldequalstr{\xeditor type}{updater}} - or test {\iffieldequalstr{\xeditor type}{upcomp}} - or test {\iffieldequalstr{\xeditor type}{uped}} - or test {\iffieldequalstr{\xeditor type}{uprev}} - or test {\iffieldequalstr{\xeditor type}{uptrans}} - or test {\iffieldequalstr{\xeditor type}{title}} - or test {\iffieldundef{\xeditor type}}} - {} - {\toggletrue{noed}}} - {}}} - -\newbibmacro*{test:trans}{% - \usebibmacro{trans+transa+transb}% - \ifnameundef{\yeditor} - {\toggletrue{notrans}}% - {\iffieldequalstr{\yeditor type}{maintitle} - {\toggletrue{notrans}}% - {\ifdefstring{\yeditor}{translatorb} - {\ifboolexpr{ test {\ifdefempty{\xtitle}} - or test {\ifdefstring{\xtitle}{book}}} - {\toggletrue{notrans}}% - {}} - {\ifdefstring{\yeditor}{translatora} - {\ifboolexpr{ test {\ifdefempty{\xtitle}} - or test {\ifdefstring{\xtitle}{bookbook}}} - {\toggletrue{notrans}}% - {}} - {\ifboolexpr{ togl {collection} - and togl {swapvol} - and test {\ifdefstring{\xtitle}{book}}} - {\toggletrue{notrans}}% - {}}}}}} - -% For editors of an 'issuetitle', 'maintitle', or 'series'. - -\newbibmacro*{editortypes}[1]{% - \ifboolexpr{ test {\iffieldequalstr{editortype}{#1}} - or test {\iffieldequalstr{editoratype}{#1}} - or test {\iffieldequalstr{editorbtype}{#1}} - or test {\iffieldequalstr{editorctype}{#1}}} {\usebibmacro{edtranspunct:c}% - \renewcommand*{\cbx@bibstring}{editor}% - \usebibmacro{editorlists}{#1}% - \usebibmacro{pluga+printnames}}% - {}} + \usebibmacro{edcombos:a}% + \usebibmacro{pluga+printnames}% + \setunit{\addcomma\space}% + \usebibmacro{editoraddon}{editor}% + \usebibmacro{editoraddon}{editora}% + \usebibmacro{ed:c:second}{#1}% + \setunit{\addcomma\space}% + \usebibmacro{editoraddon}{editora}}} \newbibmacro*{edtranspunct:c}{% \ifboolexpr{ togl {collection:bk} @@ -1228,41 +1124,163 @@ {\newunit}% {\setunit{\addcomma\space}}} -\newbibmacro*{editorlists}[1]{% - \iffieldequalstr{editortype}{#1} - {\renewcommand*{\cbx@namelist}{editor}}% - {\iffieldequalstr{editoratype}{#1} - {\renewcommand*{\cbx@namelist}{editora}}% - {\iffieldequalstr{editorbtype}{#1} - {\renewcommand*{\cbx@namelist}{editorb}}% - {\renewcommand*{\cbx@namelist}{editorc}}}}} - -% For translators of a 'maintitle'. +\newbibmacro*{trans:c:combos}{% + \iftoggle{notrans} + {} + {\usebibmacro{edtranspunct:c}% + \usebibmacro{transcombos:a}% + \usebibmacro{pluga+printnames}}} -\newbibmacro*{translatortypes}{% - \ifboolexpr{ test {\iffieldequalstr{translatortype}{maintitle}} - or test {\iffieldequalstr{translatoratype}{maintitle}}} +\newbibmacro*{ed:c:second}[1]{% + \usebibmacro{test:ed:c}{#1}% + \iftoggle{noed} + {} {\usebibmacro{edtranspunct:c}% - \renewcommand*{\cbx@bibstring}{translator}% - \iffieldequalstr{translatortype}{maintitle} - {\renewcommand*{\cbx@namelist}{translator}}% - {\renewcommand*{\cbx@namelist}{translatora}}% - \usebibmacro{pluga+printnames}}% - {}} + \usebibmacro{edcombos:a}% + \usebibmacro{pluga+printnames}}} + +% Macros common to 'editors:a', 'editors:b', and 'editors:c'. -% A catchall for additional editorial information about a 'title'. +\newbibmacro*{edcombos:a}{% + \renewcommand*{\cbx@namelist}{\xeditor}% + \ifnamesequal{\xeditor}{\yeditor} + {\clearname{\yeditor}% + \toggletrue{notrans}% + \usebibmacro{edcombos:b}{\edtypes}{edtrans}% + \iftoggle{atleastone} + {} + {\usebibmacro{edcombos:b}{\transtypes}{edtrans}}} + {\usebibmacro{edcombos:c}}} -\newbibmacro*{editoraddon}{% - \iffieldundef{editoraddon} +\newbibmacro*{transcombos:a}{% + \renewcommand*{\cbx@namelist}{\yeditor}% + \ifnamesequal{\xeditor}{\yeditor} + {\clearname{\xeditor}% + \toggletrue{noed}% + \usebibmacro{transcombos:b}{\edtypes}{transed}% + \iftoggle{atleastone} + {} + {\usebibmacro{transcombos:b}{\transtypes}{transed}}} + {\usebibmacro{transcombos:c}}} + +\newbibmacro*{edcombos:b}[2]{% + \togglefalse{atleastone}% + \renewcommand*{\do}[1]{% + \ifinlist{##1}{#1} + {\toggletrue{atleastone}% + \listbreak}% + {}}% needs '%' + \docsvlist{comptrans,comp,compiler,comped,compex,comprev,compup,transcomp}% + \iftoggle{atleastone} + {\renewcommand*{\cbx@bibstring}{comptrans}}% + {\docsvlist{extrans,ex,excomp,exed,expander,exrev,exup,transex}% + \iftoggle{atleastone} + {\renewcommand*{\cbx@bibstring}{extrans}}% + {\docsvlist{revtrans,rev,revcomp,reved,revex,reviser,revup,transrev}% + \iftoggle{atleastone} + {\renewcommand*{\cbx@bibstring}{revtrans}}% + {\docsvlist{uptrans,up,upcomp,updater,uped,upex,uprev,transup}% + \iftoggle{atleastone} + {\renewcommand*{\cbx@bibstring}{uptrans}}% + {\renewcommand*{\cbx@bibstring}{#2}}}}}} + +\newbibmacro*{edcombos:c}{% + \renewcommand*{\do}[1]{% + \ifboolexpr{ test {\ifinlist{##1}{\edtypes}} + or test {\ifstrequal{##1}{editor}}} + {\usebibmacro{swapstrings}{##1}% + \listbreak}% + {}}% needs '%' + \docsvlist{comp,comped,compex,compiler,comprev,comptrans,compup,ed,edcomp,edex,edrev,edtrans,edup, + ex,excomp,exed,expander,exrev,extrans,exup,rev,revcomp,reved,revex,reviser,revtrans, + revup,transcomp,transed,transex,transrev,transup,up,upcomp,updater,uped,upex,uprev, + uptrans,editor}}% + +\newbibmacro*{transcombos:b}[2]{% + \togglefalse{atleastone}% + \renewcommand*{\do}[1]{% + \ifinlist{##1}{#1} + {\toggletrue{atleastone}% + \listbreak}% + {}}% needs '%' + \docsvlist{transcomp,comp,comped,compex,compiler,comprev,comptrans,compup}% + \iftoggle{atleastone} + {\renewcommand*{\cbx@bibstring}{transcomp}}% + {\docsvlist{transex,ex,excomp,exed,expander,exrev,extrans,exup}% + \iftoggle{atleastone} + {\renewcommand*{\cbx@bibstring}{transex}}% + {\docsvlist{transrev,rev,revcomp,reved,revex,reviser,revtrans,revup}% + \iftoggle{atleastone} + {\renewcommand*{\cbx@bibstring}{transrev}}% + {\docsvlist{transup,up,upcomp,updater,uped,upex,uprev,uptrans}% + \iftoggle{atleastone} + {\renewcommand*{\cbx@bibstring}{transup}}% + {\renewcommand*{\cbx@bibstring}{#2}}}}}} + +\newbibmacro*{transcombos:c}{% + \renewcommand*{\do}[1]{% + \ifboolexpr{ test {\ifinlist{##1}{\transtypes}} + or test {\ifstrequal{##1}{translator}}} + {\usebibmacro{swapstrings}{##1}% + \listbreak}% + {}}% needs '%' + \docsvlist{comptrans,edtrans,extrans,revtrans,transcomp,transed,transex,transrev,transup,uptrans, + translator}}% + +\newbibmacro*{swapstrings}[1]{% + \iftoggle{swaptrans} + {\ifstrequal{#1}{comptrans} + {\renewcommand*{\cbx@bibstring}{transcomp}}% + {\ifstrequal{#1}{edtrans} + {\renewcommand*{\cbx@bibstring}{transed}}% + {\ifstrequal{#1}{extrans} + {\renewcommand*{\cbx@bibstring}{transex}}% + {\ifstrequal{#1}{revtrans} + {\renewcommand*{\cbx@bibstring}{transrev}}% + {\ifstrequal{#1}{transcomp} + {\renewcommand*{\cbx@bibstring}{comptrans}}% + {\ifstrequal{#1}{transed} + {\renewcommand*{\cbx@bibstring}{edtrans}}% + {\ifstrequal{#1}{transex} + {\renewcommand*{\cbx@bibstring}{extrans}}% + {\ifstrequal{#1}{transrev} + {\renewcommand*{\cbx@bibstring}{revtrans}}% + {\ifstrequal{#1}{transup} + {\renewcommand*{\cbx@bibstring}{uptrans}}% + {\ifstrequal{#1}{uptrans} + {\renewcommand*{\cbx@bibstring}{transup}}% + {\renewcommand*{\cbx@bibstring}{#1}}}}}}}}}}}} + {\renewcommand*{\cbx@bibstring}{#1}}} + +\newbibmacro*{addplus+etc}{% + \iftoggle{cbx:short} {} - {\nopunct\printfield{editoraddon}% - \clearfield{editoraddon}}} + {\usebibmacro{addplus}% + \renewcommand*{\plugb}{% + \addcomma\space\bibsstring{\cbx@bibstring}}}} + +\newbibmacro*{addplus}{% + \ifnameundef{\xeditor} + {\ifnameundef{\yeditor} + {} + {\ifnumgreater{\value{\yeditor}}{1} + {\edef\cbx@bibstring{\cbx@bibstring +}}% + {}}} + {\ifnumgreater{\value{\xeditor}}{1} + {\edef\cbx@bibstring{\cbx@bibstring +}}% + {}}} + +\newbibmacro*{editoraddon}[1]{% + \ifboolexpr{ test {\iffieldundef{#1addon}} + or not test {\ifdefstring{\xeditor}{#1}}} + {} + {\nopunct\printfield{#1addon}% + \clearfield{#1addon}}} %%%%%%%%%%%%%%%%%%%%%%%% %% Names and Dashes %% %%%%%%%%%%%%%%%%%%%%%%%% -% HERE \newbibmacro*{printnames+etc}{% \ifboolexpr{ togl {authposition} and togl {bibliography}} @@ -1304,7 +1322,7 @@ \printfield[parens]{handle}% \clearfield{handle}}} -% In short citations, omit addons. See CMOS, 17th ed., 14.80 and +% Omit addons in short citations. See CMOS, 17th ed., 14.80 and % 14.209. \newbibmacro*{nameaddon}{% @@ -1333,7 +1351,7 @@ \let\anona\empty \let\anonb\empty \let\pluga\empty - \let\plugb\empty}% + \let\plugb\empty} %%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Titles and Subtitles %% @@ -1442,7 +1460,7 @@ {\bibstring{in}\space \renewcommand*{\xtitle}{issue}% \usebibmacro{longtitle+titleaddon}% - \usebibmacro{editortypes}{issuetitle}}% + \usebibmacro{editors:c}{issuetitle}}% \newunit\bibstring{special}% \setunit{\addcomma\space}}} @@ -1886,7 +1904,7 @@ \usebibmacro{author+bookauthor+etc}% \usebibmacro{title+labelyear}% \usebibmacro{note}% - \usebibmacro{edtrans}}% + \usebibmacro{editors:b}}% \newbibmacro*{articles}{% \newunit @@ -1947,14 +1965,14 @@ \usebibmacro{longtitle+titleaddon}% \toggletrue{edshift}% \usebibmacro{byauthor}% - \usebibmacro{edtrans}% + \usebibmacro{editors:b}% \usebibmacro{volumes+bookseries+etc}}% {\usebibmacro{title+labelyear}% \usebibmacro{byauthor}% \iffieldundef{maintitle} {\usebibmacro{note+edition+etc}% \usebibmacro{volumes+bookseries+etc}}% - {\usebibmacro{edtrans}% + {\usebibmacro{editors:b}% \usebibmacro{volumes+bookseries+etc}% \usebibmacro{maintitle+note+etc}}} \usebibmacro{date+loc+etc}% @@ -1970,15 +1988,15 @@ {\usebibmacro{author+bookauthor+etc}% \iffieldundef{title} {\usebibmacro{booktitle}% - \usebibmacro{edtrans}}% + \usebibmacro{editors:b}}% {\ifboolexpr{ togl {collection:ib} and togl {swapvol} and not togl {collection:icib}} {\usebibmacro{booktitle}% - \usebibmacro{edtrans}}% + \usebibmacro{editors:b}}% {\usebibmacro{title+labelyear}% \usebibmacro{byauthor}% - \usebibmacro{edtrans}% + \usebibmacro{editors:b}% \usebibmacro{chapter+in}}}} {\usebibmacro{supplement}% \newunit @@ -1996,7 +2014,7 @@ \ifcsdef{c@\thefield{crossref}} {\setcounter{\thefield{crossref}}{0}}% {\newcounter{\thefield{crossref}}}% needs '%' - \usebibmacro{incollections}}}} + \usebibmacro{incollections}}}} \newbibmacro*{websites}{% \ifboolexpr{ test {\iffieldundef{blogtitle}} @@ -2029,7 +2047,7 @@ \iftoggle{shortfirst} {} {\toggletrue{edshift}% - \usebibmacro{edtrans}}} + \usebibmacro{editors:b}}} \newbibmacro*{inst+loc+date}{% \usebibmacro{thesis+type}% @@ -2095,7 +2113,7 @@ \printfield{series}}% \isdot\addcomma \usebibmacro{seriesaddon}% - \usebibmacro{editortypes}{series}% + \usebibmacro{editors:c}{series}% \newunit}}% \newbibmacro*{volume}{% @@ -2197,11 +2215,7 @@ \usebibmacro{maintitle}% \usebibmacro{note}% \usebibmacro{edition}{}% - \iftoggle{swaptrans} - {\usebibmacro{translatortypes}% - \usebibmacro{editortypes}{maintitle}}% - {\usebibmacro{editortypes}{maintitle}% - \usebibmacro{translatortypes}}} + \usebibmacro{editors:c}{maintitle}}% \newbibmacro*{volume+number+etc}{% \iffieldundef{\xvolume volume} @@ -2247,14 +2261,13 @@ \newbibmacro*{note+edition+etc}{% \usebibmacro{note}% \usebibmacro{edition}{}% - \usebibmacro{edtrans}}% + \usebibmacro{editors:b}}% \newbibmacro*{edition}[1]{% \iffieldundef{edition} {} {\iftoggle{edshift} - {\setunit{\addcomma\space}% - \togglefalse{edshift}}% + {\setunit{\addcomma\space}}% {\newunit}% \iffieldbibstring{edition} {\bibstring{\thefield{edition}}} @@ -2431,8 +2444,7 @@ \newunit \printfield{series}% \usebibmacro{seriesaddon}% - \usebibmacro{editortypes}{series}% - \setunit{\addcomma\space}}} + \usebibmacro{editors:c}{series}}} \newbibmacro*{seriesaddon}{% \iffieldundef{seriesaddon} @@ -2468,10 +2480,8 @@ {}} \newbibmacro*{other:number}{% - \ifboolexpr{ test {\iffieldequalstr{editortype}{series}} - or test {\iffieldequalstr{editoratype}{series}} - or test {\iffieldequalstr{editorbtype}{series}} - or test {\iffieldequalstr{editorctype}{series}}} + \ifboolexpr{ test {\ifinlist{series}{\edtypes}} + or test {\ifinlist{series}{\transtypes}}} {\setunit{\addcomma\space}% \printfield{number}}% {\setunit{\addspace}% not '\setunit{\space}' @@ -2513,7 +2523,7 @@ \usebibmacro{longtitle+titleaddon}% \toggletrue{edshift}% \usebibmacro{byauthor}% - \usebibmacro{edtrans}}% + \usebibmacro{editors:b}}% {\usebibmacro{volume+number+etc}% \toggletrue{edshift}% \usebibmacro{booktitle}% @@ -2531,10 +2541,10 @@ \usebibmacro{volumes+bookseries+etc}% \toggletrue{edshift}% \usebibmacro{booktitle}% - \usebibmacro{edtrans}}% + \usebibmacro{editors:b}}% {\toggletrue{edshift}% \usebibmacro{booktitle}% - \usebibmacro{edtrans}% + \usebibmacro{editors:b}% \renewcommand*{\xvolume}{book}% \usebibmacro{volume+number+etc}% \iftoggle{collection:icbk} diff --git a/macros/latex/contrib/biblatex-contrib/windycity/windycity.cbx b/macros/latex/contrib/biblatex-contrib/windycity/windycity.cbx index bb0ca85e87..f73248dcf5 100644 --- a/macros/latex/contrib/biblatex-contrib/windycity/windycity.cbx +++ b/macros/latex/contrib/biblatex-contrib/windycity/windycity.cbx @@ -1,4 +1,4 @@ -% Last modified: Sat 30 Jan 2021 06:17:55 PM CST +% Last modified: Sun 02 May 2021 01:14:43 PM CDT % Permission is granted to copy, distribute and/or modify this % software under the terms of the LaTeX Project Public License (LPPL), @@ -11,7 +11,7 @@ % implied warranties of merchantability and fitness for a particular % purpose. -\ProvidesFile{windycity.cbx}[2021/01/30 Windy City citation style for +\ProvidesFile{windycity.cbx}[2021/05/02 Windy City citation style for biblatex] \@ifpackagelater{biblatex}{2019/08/17} {} @@ -360,6 +360,22 @@ {} {\newunit}}% +% Thanks to David Fussner's biblatex-chicago for pointing me to this +% command by Philipp Lehman. Source: +% https://groups.google.com/forum/#!topic/comp.text.tex/kG003fkZK1I + +\newrobustcmd*{\iffieldstart}[2]{% + \iffieldundef{#1} + {\@secondoftwo}% originally '\@gobbletwo' + {\begingroup + \edef\@tempa{% + \long\def\noexpand\iffieldstart@i####1\detokenize{#2}####2}% + \@tempa\@nil{\endgroup\ifblank{##1}}% + \savefield*{#1}{\@tempa}% + \expandafter\iffieldstart@i\detokenize + \expandafter\expandafter\expandafter{% + \expandafter\@tempa\detokenize{#2}}\@nil}}% + \newbibmacro*{volume+page}{% \iffieldundef{volume} {} diff --git a/macros/latex/contrib/biblatex-contrib/windycity/windycity.dbx b/macros/latex/contrib/biblatex-contrib/windycity/windycity.dbx index 51a83057e7..1bdbc03b64 100644 --- a/macros/latex/contrib/biblatex-contrib/windycity/windycity.dbx +++ b/macros/latex/contrib/biblatex-contrib/windycity/windycity.dbx @@ -1,4 +1,4 @@ -\ProvidesFile{windycity.dbx}[2021/01/30 Windy City data model file for +\ProvidesFile{windycity.dbx}[2021/05/02 Windy City data model file for biblatex] \DeclareDatamodelFields[type=field,datatype=literal]{% blogsubtitle, @@ -6,10 +6,13 @@ blogtitleaddon, bookauthortype, bookbooktitle, - bookbookvolume, bookvolume, + bookbookvolume, + booktitlekey, + bookbooktitlekey, bookyear, editoraddon, + editoraaddon, endbookyear, handle, seriesaddon, @@ -17,8 +20,10 @@ shortbooktitle, shortmaintitle, shortorganization, + titlekey, + translatortype, translatoratype, - translatortype} + translatorbtype} \DeclareDatamodelFields[type=list,datatype=name]{% preface, shortbookauthor, |