% Last modified: Wed 07 Jul 2021 05:45:51 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}[2021/07/07 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}}% \DeclareMultiCiteCommand{\idemcites}{\idemcite}{\multicitedelim}% \DeclareMultiCiteCommand{\footidemcites}[\mkbibfootnote]{\footidemcite}{\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}{% \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}}% {\printfield{shorthand}}% \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{author+bookauthor+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}{% \iffieldundef{shorthand} {\ifboolexpr{ test \ifciteibid and togl {short} and not test \iffirstonpage} {\usebibmacro{cite:ibid}}% {\usebibmacro{cite:short}}} {\iftoggle{shortlinks} {\printtext[bibhyperref]{% \printfield{shorthand}% \usebibmacro{cite:volume}}} {\printfield{shorthand}% \usebibmacro{cite:volume}}}} \newbibmacro*{cite:ibid}{% \iftoggle{ibid} {\iftoggle{shortlinks} {\printtext[bibhyperref]{% \usebibmacro{cite:ibid+loccit}}} {\usebibmacro{cite:ibid+loccit}}} {\global\toggletrue{cbx:short}% \ifentrytype{review} {\usebibmacro{ibid:review}}% {\iftoggle{shortlinks} {\printtext[bibhyperref]{% \usebibmacro{cite:author+title+etc}}} {\usebibmacro{cite:author+title+etc}}}}} \newbibmacro*{cite:ibid+loccit}{% \bibcpstring{ibidem}% \ifboolexpr{ togl {ibidpage} and test \ifloccit} {\global\toggletrue{ibid:loccit}}% {\usebibmacro{cite:volume}}} \newbibmacro*{ibid:review}{% \ifnameundef{author} {\bibcpstring{reviewnoauth}% \space \usebibmacro{shorttitle+shortlinks}}% {\usebibmacro{author+bookauthor+etc}}% \usebibmacro{cite:volume}}% \newbibmacro*{cite:author+title+etc}{% \usebibmacro{author+bookauthor+etc}% \iftoggle{noauth} {\usebibmacro{shorttitle+shortlinks}}% {}% needs '%' \ifboolexpr{ togl {ibidpage} and test \ifloccit} {\global\toggletrue{ibid:loccit}}% {\usebibmacro{cite:volume}}} \newbibmacro*{cite:short}{% \global\toggletrue{cbx:short}% \usebibmacro{short:multicite}% \ifentrytype{review} {\usebibmacro{short:review}}% {\usebibmacro{author+bookauthor+etc}% \usebibmacro{shorttitle+shortlinks}% \ifboolexpr{ togl {ibidpage} and test \ifloccit and not test \iffirstonpage} {\global\toggletrue{ibid:loccit}}% {\usebibmacro{cite:volume}}}} \newbibmacro*{short: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+shortlinks}}% {\iffieldundef{title} {\usebibmacro{author+bookauthor+etc}% \bibstring{review}% \setunit{\space}% \usebibmacro{shorttitle}{book}}% {\usebibmacro{author+bookauthor+etc}% \usebibmacro{shorttitle+shortlinks}}}} \usebibmacro{cite:volume}}% \newbibmacro*{cite:volume}{% \usebibmacro{cite:punctuation}% \iftoggle{swapvol} {\ifboolexpr{ togl {collection:bk} or togl {collection:ib}} {\usebibmacro{volume+page}}% {}} {}} \newbibmacro*{cite:punctuation}{% \iffieldstart{postnote}{;} {} {\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} {} {\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{doi+url+etc}}% {\usebibmacro{cite:pages}% \usebibmacro{postnote}% \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 \printfield{shorthand}}} {\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: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}{}% \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:thesis}{% \usebibmacro{author+title+etc}% \setunit{\addspace}% not '\setunit{\space}' \printtext[parens]{\usebibmacro{inst+loc+date}}% \newunit}% \endinput