% Last modified: Wed 03 May 2023 06:54:38 PM CDT % Permission is granted to copy, distribute and/or modify this % software under the terms of the LaTeX Project Public License (LPPL), % version 1.3. % % The LPPL maintenance status of this software is 'author-maintained'. % % This software is provided 'as is', without warranty of any kind, % either expressed or implied, including, but not limited to, the % implied warranties of merchantability and fitness for a particular % purpose. \ProvidesFile{windycity.cbx}[2023/05/03 Windy City citation style for biblatex] \@ifpackagelater{biblatex}{2019/08/17} {} {\PackageError{biblatex} {Outdated 'biblatex' package} {Windy City is for biblatex v3.13 and above.\MessageBreak You are using: '\csuse{ver@biblatex.sty}'.\MessageBreak This is a fatal error. I'm aborting now.}% \endinput}% %%%%%%%%%%%%%% %% Basics %% %%%%%%%%%%%%%% \AtEveryCite{% \global\togglefalse{bibliography}% \global\togglefalse{cbx:first}% \global\togglefalse{cbx:idem}% \global\togglefalse{ibid:loccit}% \global\togglefalse{multicite}% \AtEveryItem}% \AtEveryMultiCite{\toggletrue{multicite}}% \DeclareAutoPunctuation{.,;:!?} \DeclareCitePunctuationPosition{cite}{r} \InitializeCitationStyle{\let\crossreflist\empty}% \renewcommand{\bibfootnotewrapper}[1]{% \clearfield{postpunct}% \bibsentence#1}% \renewcommand{\bibendnotewrapper}[1]{% \clearfield{postpunct}% \bibsentence#1}% % Protect commas against abbreviation dots and terminal punctuation. % Note '\addspace'. Using '\space' there causes problems. \renewcommand*{\newunitpunct}{\ifterm{,\addspace}{\addcomma\space}}% % Prevent errant space after a colon. \renewcommand*{\multicitedelim}{\setunit{\addsemicolon\space}}% %%%%%%%%%%%%%%%%%%%%%%%%% %% Citation Commands %% %%%%%%%%%%%%%%%%%%%%%%%%% \DeclareCiteCommand{\cite} {\usebibmacro{prenote}}% {\usebibmacro{citeindex}% \usebibmacro{cite}}% {\multicitedelim}% {\usebibmacro{cite:postnote}}% \DeclareCiteCommand*{\cite} {\usebibmacro{prenote}}% {\usebibmacro{citeindex}% \toggletrue{noauth}% \usebibmacro{cite}}% {\multicitedelim}% {\usebibmacro{cite:postnote}}% \DeclareCiteCommand{\footcite}[\mkbibfootnote] {\usebibmacro{prenote}}% {\usebibmacro{citeindex}% \usebibmacro{cite}}% {\multicitedelim}% {\usebibmacro{cite:postnote}}% \DeclareCiteCommand*{\footcite}[\mkbibfootnote] {\usebibmacro{prenote}}% {\usebibmacro{citeindex}% \toggletrue{noauth}% \usebibmacro{cite}}% {\multicitedelim}% {\usebibmacro{cite:postnote}}% \DeclareCiteCommand{\footfullcite}[\mkbibfootnote] {\usebibmacro{prenote}}% {\citereset \usebibmacro{citeindex}% \usebibmacro{cite:new}}% {\multicitedelim}% {\usebibmacro{cite:postnote}}% \DeclareCiteCommand{\fullcite} {\usebibmacro{prenote}}% {\citereset \usebibmacro{citeindex}% \usebibmacro{cite:new}}% {\multicitedelim}% {\usebibmacro{cite:postnote}}% \DeclareCiteCommand{\parencite}[\mkbibparens] {\usebibmacro{prenote}}% {\usebibmacro{citeindex}% \usebibmacro{parencite}}% {\multicitedelim}% {\usebibmacro{postnote}}% \DeclareCiteCommand*{\parencite}[\mkbibparens] {\usebibmacro{prenote}}% {\usebibmacro{citeindex}% \toggletrue{noauth}% \usebibmacro{parencite}}% {\multicitedelim}% {\usebibmacro{postnote}}% \DeclareCiteCommand{\smartcite}[\iffootnote{}{\mkbibfootnote}] {\usebibmacro{prenote}}% {\usebibmacro{citeindex}% \usebibmacro{cite}}% {\multicitedelim}% {\usebibmacro{cite:postnote}}% \DeclareCiteCommand*{\smartcite}[\iffootnote{}{\mkbibfootnote}] {\usebibmacro{prenote}}% {\usebibmacro{citeindex}% \toggletrue{noauth}% \usebibmacro{cite}}% {\multicitedelim}% {\usebibmacro{cite:postnote}}% \DeclareMultiCiteCommand{\smartcites}[\iffootnote{}\mkbibfootnote] {\smartcite}{\multicitedelim} \DeclareCiteCommand{\textcite} {\usebibmacro{prenote}}% {\usebibmacro{citeindex}% \usebibmacro{cite}}% {\multicitedelim}% {\usebibmacro{postnote}}% \DeclareCiteCommand*{\textcite} {\usebibmacro{prenote}}% {\usebibmacro{citeindex}% \toggletrue{noauth}% \usebibmacro{cite}}% {\multicitedelim}% {\usebibmacro{postnote}}% \DeclareCiteCommand{\idemcite} {\usebibmacro{prenote}}% {\usebibmacro{citeindex}% \toggletrue{cbx:idem}% \usebibmacro{cite}}% {\multicitedelim}% {\usebibmacro{cite:postnote}}% \DeclareCiteCommand{\footidemcite}[\mkbibfootnote] {\usebibmacro{prenote}}% {\usebibmacro{citeindex}% \toggletrue{cbx:idem}% \usebibmacro{cite}}% {\multicitedelim}% {\usebibmacro{cite:postnote}}% \DeclareCiteCommand{\parenauth}[\mkbibparens] {\usebibmacro{prenote}}% {\usebibmacro{citeindex}% \toggletrue{cbx:skipdate}% \usebibmacro{parencite}}% {\multicitedelim}% {\usebibmacro{postnote}}% \DeclareMultiCiteCommand{\idemcites}{\idemcite}{\multicitedelim}% \DeclareMultiCiteCommand{\footidemcites}[\mkbibfootnote]{\footidemcite}{\multicitedelim}% \DeclareMultiCiteCommand{\parenauths}[\mkbibparens]{\parenauth}{\multicitedelim}% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Parenthetical Citations %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \newbibmacro*{parencite}{% \ifboolexpr{ test \ifciteibid and not test \iffirstonpage} {\usebibmacro{test:collection}% \iffieldundef{postnote} {\printtext[bibhyperref]{% \usebibmacro{parencite:date}% \usebibmacro{cite:volume}}}% needs '%' {}} {\usebibmacro{test:collection}% \usebibmacro{parencite:crossref}% \usebibmacro{parencite:multicite}}} \newbibmacro*{parencite:date}{% \iftoggle{cbx:skipdate} {} {\ifboolexpr{ test {\ifentrytype{online}} and test {\iffieldundef{year}}} {\newunit \usebibmacro{pubstate}{}}% {\usebibmacro{parencite:origyear}% \iffieldnums{labelyear} {}% needs '%' {\newunit}% \usebibmacro{labeldate+endyear}% \printfield{extradate}}}} \newbibmacro*{parencite:origyear}{% \iffieldundef{origyear} {} {\printfield[brackets]{origyear}% \space}}% \newbibmacro*{parencite:crossref}{% \ifboolexpr{ test {\ifentrytype{book}} or test {\ifentrytype{collection}} or test {\ifentrytype{incollection}} or test {\ifentrytype{inbook}} or test {\ifentrytype{letter}}} {\usebibmacro{test:crossref}}% {}} \newbibmacro*{parencite:multicite}{% \ifboolexpr{ test {\iffieldequals{namehash}{\bbx@lasthash}} and togl {multicite}} {\iffieldundef{postnote} {\newunit}% {}% needs '%' \printtext[bibhyperref]{% \usebibmacro{parencite:date}% \usebibmacro{cite:volume}}}% needs '%' {\printtext[bibhyperref]{% \usebibmacro{parencite:new}% \usebibmacro{cite:volume}}}}% needs '%' \newbibmacro*{parencite:new}{% \iffieldundef{shorthand} {\usebibmacro{parencite:auth+title}}% {\usebibmacro{test:format}{shorthand}{field}}% \setunit{\addspace}% not '\setunit{\space}' \usebibmacro{parencite:date}}% \newbibmacro*{parencite:auth+title}{% \iftoggle{noauth} {} {\ifboolexpr{ test {\ifnameundef{labelname}} or test {\iffieldundef{labelyear}}} {\printfield[citetitle]{labeltitle}}% {\global\toggletrue{cbx:short}% \renewcommand*{\cbx@deflabel}{labelname}% \clearfield{handle}% \clearfield{nameaddon}% \ifboolexpr{ test {\ifnameundef{afterword}} and test {\ifnameundef{foreword}} and test {\ifnameundef{introduction}} and test {\ifnameundef{preface}}} {\usebibmacro{collection+author+etc}}% {\usebibmacro{supplement}}}}} %%%%%%%%%%%%%%%%%%%%%%%%%% %% Citations in Notes %% %%%%%%%%%%%%%%%%%%%%%%%%%% \newbibmacro*{cite}{% \ifciteseen {\usebibmacro{test:collection}% \renewcommand*{\cbx@deflabel}{labelname}% \iftoggle{shortlinks} {\usebibmacro{cite:seen}}% {\printtext[bibhyperref]{\usebibmacro{cite:seen}}}} {\iftoggle{shortlinks} {\usebibmacro{cite:new}}% {\printtext[bibhyperref]{\usebibmacro{cite:new}}}}% needs '%' \usebibmacro{savefields}}% \newbibmacro*{cite:seen}{% \usebibmacro{test:loccit}% \iffieldundef{shorthand} {\ifboolexpr{ test \ifciteibid and togl {short} and not test \iffirstonpage} {\usebibmacro{cite:ibid}}% {\usebibmacro{cite:short}}} {\iftoggle{shortlinks} {\printtext[bibhyperref]{% \usebibmacro{test:format}{shorthand}{field}% \usebibmacro{cite:volume}}} {\usebibmacro{test:format}{shorthand}{field}% \usebibmacro{cite:volume}}}} \newbibmacro*{test:loccit}{% \ifboolexpr{ togl {ibidpage} and test \ifciteibid and test \ifloccit and not test \iffirstonpage} {\global\toggletrue{ibid:loccit}}% {}} \newbibmacro*{cite:ibid}{% \iftoggle{ibid} {\iftoggle{shortlinks} {\printtext[bibhyperref]{% \bibcpstring{ibidem}% \usebibmacro{cite:volume}}} {\bibcpstring{ibidem}% \usebibmacro{cite:volume}}} {\global\toggletrue{cbx:short}% \ifentrytype{review} {\usebibmacro{ibid:review}}% {\iftoggle{shortlinks} {\printtext[bibhyperref]{% \usebibmacro{cite:author+title+etc}}} {\usebibmacro{cite:author+title+etc}}}}} \newbibmacro*{ibid:review}{% \ifnameundef{author} {\bibcpstring{reviewnoauth}% \space \usebibmacro{shorttitle+crossref}{}}% {\usebibmacro{author+bookauthor+etc}}% \usebibmacro{cite:volume}}% \newbibmacro*{cite:author+title+etc}{% \usebibmacro{author+bookauthor+etc}% \iftoggle{noauth} {\usebibmacro{shorttitle+crossref}{}}% {}% needs '%' \usebibmacro{cite:volume}}% \newbibmacro*{cite:short}{% \global\toggletrue{cbx:short}% \usebibmacro{test:multicite}% \ifentrytype{review} {\usebibmacro{short:review}}% {\usebibmacro{collection+author+etc}% \usebibmacro{shorttitle+crossref}{}% \ifboolexpr{ togl {ibidpage} and test \ifloccit and not test \iffirstonpage} {\global\toggletrue{ibid:loccit}}% {\usebibmacro{cite:volume}}}} \newbibmacro*{test:multicite}{% \ifboolexpr{ test {\iffieldequals{namehash}{\bbx@lasthash}} and togl {multicite} and togl {short}} {\toggletrue{noauth}}% {}} \newbibmacro*{short:review}{% \ifboolexpr{ test {\ifnameundef{author}} and test {\iffieldundef{title}}} {\bibcpstring{reviewnoauth}% \setunit{\space}% \usebibmacro{shorttitle}{book}}% {\ifnameundef{author} {\usebibmacro{shorttitle+crossref}{}}% {\iffieldundef{title} {\usebibmacro{author+bookauthor+etc}% \bibstring{review}% \setunit{\space}% \usebibmacro{shorttitle}{book}}% {\usebibmacro{author+bookauthor+etc}% \usebibmacro{shorttitle+crossref}{}}}}} \newbibmacro*{collection+author+etc}{% \ifboolexpr{ test {\ifentrytype{unpublished}} and test {\iffieldundef{title}} and not test {\iffieldundef{collection}}} {\usebibmacro{unpublished:collection}}% {\usebibmacro{author+bookauthor+etc}}} \newbibmacro*{cite:volume}{% \iftoggle{ibid:loccit} {} {\usebibmacro{cite:punctuation}% \iftoggle{swapvol} {\ifboolexpr{ togl {collection:bk} or togl {collection:ib}} {\usebibmacro{volume+page}}% {}} {}}} \newbibmacro*{cite:punctuation}{% \iffieldstart{postnote}{;} {} {\newunit}}% \newbibmacro*{volume+page}{% \iffieldundef{volume} {} {\iffieldpages{postnote} {\printfield[noformat]{volume}% \addcolon}% {\printfield{volume}}}} \newbibmacro*{cite:new}{% \global\toggletrue{cbx:first}% \usebibmacro{idem+short+multicite}% \iftoggle{shortfirst} {\usebibmacro{cite:short}}% {\printtext{% \usedriver {\DeclareNameAlias{sortname}{default}}% {cite:\thefield{entrytype}}}}} % By default, idemtracker is 'false'. With idemtracker set to 'true' % (or to some value that implies 'true') the test below will print % 'labelname' if it matches that of the previous citation. \newbibmacro*{idem+short+multicite}{% \ifboolexpr{ test {\ifciteidem} or togl {cbx:idem} or togl {shortfirst}} {\renewcommand*{\cbx@deflabel}{labelname}}% {\ifboolexpr{ test {\iffieldequals{namehash}{\bbx@lasthash}} and togl {multicite}} {\renewcommand*{\cbx@deflabel}{labelname}}% {\renewcommand*{\cbx@deflabel}{default}}}} % Checking for 'title' below helps if you cross-reference volumes to a % collection with entries containing just 'volume' and 'crossref' % fields. Perhaps justifiable in very rare cases. \newbibmacro*{test:crossref}{% \ifboolexpr{ test {\iffieldundef{crossref}} or test {\iffieldundef{title}}} {} {\xifinlist{\thefield{crossref}}{\crossreflist} {\toggletrue{cbx:collection}% \stepcounter{\thefield{crossref}}} {\listxadd{\crossreflist}{\thefield{crossref}}% \ifcsdef{c@\thefield{crossref}} {\setcounter{\thefield{crossref}}{0}}% {\newcounter{\thefield{crossref}}}}}} \newbibmacro*{savefields}{% \iffieldundef{crossref} {\let\cbx@keyhash\empty}% {\savefield{crossref}{\cbx@keyhash}}} % See CMOS, 17th ed., 14.174, 14.177, 14.185, and 14.188. \newbibmacro*{colon+comma+etc}{% \ifboolexpr{ test {\iffieldundef{pages}} and test {\iffieldundef{postnote}}} {} {\ifboolexpr{ test {\iffieldundef{year}} and test {\iffieldundef{month}} and test {\iffieldundef{issue}}} {\setunit{\addcolon}}% {\ifboolexpr{ test {\iffieldundef{number}} and test {\iffieldundef{volume}}} {\newunit}% {\setunit{\addcolon\space}}}}} \newbibmacro*{reference:howpublished+etc}{% \ifboolexpr{ test {\iffieldundef{howpublished}} and test {\iffieldundef{year}}} {} {\setunit{\addspace}% \iffieldundef{howpublished} {\printtext[parens]{\printfield{year}}} {\global\togglefalse{cbx:first}% \printtext[parens]{% \printfield{howpublished}% \newunit \printfield{version}% \newunit \printfield{year}}}}} %%%%%%%%%%%%%%%% %% Postnote %% %%%%%%%%%%%%%%%% \newbibmacro*{cite:postnote}{% \usebibmacro{postnote+etc}% \usebibmacro{postpunct+etc}}% % In this context, '\ifloccit' is always true. Run it earlier and % record the state with the 'loccit' toggle. \newbibmacro*{postnote+etc}{% \iftoggle{ibid:loccit} {} {\iftoggle{cbx:first} {\usebibmacro{postnote:first}% \usebibmacro{shorthand+intro}}% {\usebibmacro{postnote}}}} \newbibmacro*{postnote:first}{% \ifboolexpr{ test {\iffieldundef{postnote}} and test {\iffieldundef{pages}} and test {\iffieldundef{url}}} {\usebibmacro{unpublished:note+etc}% \usebibmacro{doi+url+etc}}% {\usebibmacro{cite:pages}% \usebibmacro{postnote}% \usebibmacro{unpublished:note+etc}% \usebibmacro{doi+url+etc}}} % If the postnote is empty, print the page ranges of journal and % review articles. See CMOS, 17th ed., 14.153, 14.167, and 14.174. As % for incollection and inbook entries, 14.106 seems to suggest the % same, but the example in 14.30 suggests otherwise, while the % examples in 14.108 don't help. For magazines, CMOS is clear that the % range can be left out. To do so, simply omit it from your % bibliography database. \newbibmacro*{cite:pages}{% \ifboolexpr{ test {\iffieldundef{pages}} or togl {nopages}} {} {\ifboolexpr{ test {\ifentrytype{article}} or test {\ifentrytype{review}}} {\iffieldundef{postnote} {\iftoggle{shortlinks} {\printfield{pages}}% {\printtext[bibhyperref]{\printfield{pages}}}} {}} {}}} \renewbibmacro*{postnote}{% \iffieldundef{postnote} {} {\iftoggle{shortlinks} {\printfield{postnote}}% {\printtext[bibhyperref]{\printfield{postnote}}}}} \newbibmacro*{shorthand+intro}{% \iffieldundef{shorthand} {} {\iffieldundef{shorthandintro} {\setunit{\addspace}% \printtext[parens]{% \bibstring{citedas}\space \usebibmacro{test:format}{shorthand}{field}}} {\setunit{\addspace}% \printfield{shorthandintro}}}} \newbibmacro*{postpunct+etc}{% \iflastcitekey {\iffieldundef{postpunct} {\addperiod}% {}} {}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Bibliography Drivers for Notes %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \DeclareBibliographyDriver{cite:article}{% \usebibmacro{newauth}% \usebibmacro{author+title+etc}% \usebibmacro{articles}% \usebibmacro{colon+comma+etc}}% \DeclareBibliographyDriver{cite:artwork}{% \usebibmacro{bibindex}% \usebibmacro{artworks}}% \DeclareBibliographyDriver{cite:book}{% \usebibmacro{test:crossref}% \iftoggle{cbx:collection} {\usebibmacro{author+incollection+etc}% \usebibmacro{crossref+entrydata}}% {\usebibmacro{author+collection+etc}% \usebibmacro{cite:punctuation}% \usebibmacro{volume+page}}} \DeclareBibliographyDriver{cite:incollection}{% \ifentrytype{letter} {\toggletrue{noauth}}% {}% needs '%' \usebibmacro{test:crossref}% \iftoggle{cbx:collection} {\usebibmacro{author+incollection+etc}% \usebibmacro{crossref+entrydata}}% {\usebibmacro{author+incollection+etc}% \usebibmacro{incollections}% \usebibmacro{cite:punctuation}% \usebibmacro{volume+page}}} \DeclareBibliographyDriver{cite:misc}{% \usebibmacro{author+bookauthor+etc}% \usebibmacro{title+titleaddon}{}% \newunit \printfield{usera}% \newunit}% \DeclareBibliographyDriver{cite:online}{% \usebibmacro{newauth}% \usebibmacro{author+title+etc}% \setunit*{\newunitpunct}% needs '*' \usebibmacro{websites}% \usebibmacro{issue+month+etc}{parens}% \newunit}% \DeclareBibliographyDriver{cite:patent}{% \usebibmacro{author+title+etc}% \newunit \printfield{number}% \newunit}% \DeclareBibliographyDriver{cite:reference}{% \iftoggle{newauth} {\usebibmacro{author+bookauthor+etc}% \clearname{author}}% {\printlist{organization}}% \usebibmacro{edition}{}% \usebibmacro{reference:howpublished+etc}% \newunit \bibstring{subverbo}\space \usebibmacro{title+titleaddon}{}% \usebibmacro{byauthor}}% \DeclareBibliographyDriver{cite:review}{% \usebibmacro{newauth}% \usebibmacro{reviews}% \usebibmacro{articles}% \usebibmacro{colon+comma+etc}}% \DeclareBibliographyDriver{cite:standard}{% \toggletrue{noauth}% \usebibmacro{standards}% \usebibmacro{cite:punctuation}% \usebibmacro{volume+page}}% \DeclareBibliographyDriver{cite:thesis}{% \usebibmacro{author+title+etc}% \setunit{\addspace}% not '\setunit{\space}' \printtext[parens]{% \usebibmacro{thesis:type+pubstate}% \usebibmacro{inst+loc+date}}% \newunit}% \DeclareBibliographyDriver{cite:unpublished}{% \iffieldundef{collection} {\usebibmacro{author+title+etc}% \setunit{\addspace}% not '\setunit{\space}' \printtext[parens]{% \iffieldundef{type} {\usebibmacro{pubstate}{}}% {\printfield{type}% \setunit{\addcomma\space}}% \usebibmacro{unpublished:series}% \usebibmacro{inst+loc+date}}} {\usebibmacro{collection+author+etc}% \iffieldundef{title} {} {\usebibmacro{title+titleaddon}{}% \setunit{\addcomma\space}% \iffieldundef{year} {\printlabeldate}% for 'n.d.' {\printdate \global\clearfield{year}}% needs '\global' \newunit \usebibmacro{unpublished:collection}}}% needs '%' \newunit}% \endinput