diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/windycity/windycity.cbx')
-rw-r--r-- | Master/texmf-dist/tex/latex/windycity/windycity.cbx | 490 |
1 files changed, 490 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/windycity/windycity.cbx b/Master/texmf-dist/tex/latex/windycity/windycity.cbx new file mode 100644 index 00000000000..a33e9e13b6b --- /dev/null +++ b/Master/texmf-dist/tex/latex/windycity/windycity.cbx @@ -0,0 +1,490 @@ +% Last modified: Wed 27 Mar 2019 10:38:04 AM CDT + +% Copyright (c) 2019 Brian Michael Chase. +% +% 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}[Windy City style for biblatex] +\@ifpackagelater{biblatex}{2017/11/04} + {} + {\PackageError{biblatex} + {Outdated 'biblatex' package} + {Windy City 2019-03-27 is for biblatex v3.8 and above.\MessageBreak + You are using: '\csuse{ver@biblatex.sty}'.\MessageBreak + This is a fatal error. I'm aborting now.}% + \endinput}% + +% This file contains material only for formatting notes and +% parenthetical citations. For content that is also used for +% bibliographies and reference lists, see windycity.bbx. + +%%%%%%%%%%%%%%%%%%% +%% Preliminary %% +%%%%%%%%%%%%%%%%%%% + +\InitializeCitationStyle{\let\crossreflist\empty}% +\DeclareAutoPunctuation{.,;:!?} +\DeclareCitePunctuationPosition{cite}{r} +\AtEveryCite{% + \global\togglefalse{bibliography}% + \global\togglefalse{multicite}% + \global\togglefalse{cbx@first}% + \global\togglefalse{cbx@loccit}% + \AtEveryItem}% +\AtEveryMultiCite{\toggletrue{multicite}}% + +% To facilitate uniform output, citations in notes always end with +% '\addperiod' (see cite:postnote). This makes '\footcite{something}' +% and '\footnote{\cite{something}}' functionally equivalent. To +% prevent an extra period from printing in very rare cases, as when +% '\footcite{something}' ends with a capital letter, remove +% '\addperiod' from the commands below: + +\renewcommand{\bibfootnotewrapper}[1]{% + \bibsentence#1}% +\renewcommand{\bibendnotewrapper}[1]{% + \bibsentence#1}% + +% Protect commas against abbreviation dots and terminal punctuation +% marks. Note '\addspace'. Using '\space' there causes problems. + +\renewcommand*{\newunitpunct}{\ifterm{,\addspace}{\addcomma\space}}% + +% Prevents 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] + {\bibsentence\usebibmacro{prenote}}% + {\usebibmacro{citeindex}% + \usebibmacro{cite}}% + {\multicitedelim}% + {\usebibmacro{cite:postnote}}% + +\DeclareCiteCommand*{\footcite}[\mkbibfootnote] + {\bibsentence\usebibmacro{prenote}}% + {\usebibmacro{citeindex}% + \toggletrue{noauth}% + \usebibmacro{cite}}% + {\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}}% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Parenthetical Citations %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\newbibmacro*{parencite}{% + \usebibmacro{test:collection}% + \usebibmacro{test:crossref}% + \ifboolexpr{ test \ifciteibid + and not test \iffirstonpage} + {\iffieldundef{postnote} + {\printtext[bibhyperref]{% + \usebibmacro{parencite:date}% + \usebibmacro{cite:volume}}} + {}} + {\printtext[bibhyperref]{% + \usebibmacro{parencite:long}% + \usebibmacro{cite:volume}}}} + +% See note for 'crossref+long'. + +\newbibmacro*{test:crossref}{% + \ifboolexpr{ test {\iffieldundef{crossref}} + or test {\iffieldundef{title}}} + {} + {\xifinlist{\thefield{crossref}}{\crossreflist} + {\stepcounter{\thefield{crossref}}} + {\listxadd{\crossreflist}{\thefield{crossref}}% + \ifcsdef{c@\thefield{crossref}} + {\setcounter{\thefield{crossref}}{0}}% + {\newcounter{\thefield{crossref}}}}}} + +\newbibmacro*{parencite:date}{% + \iffieldundef{labelyear} + {} + {\usebibmacro{parencite:origyear}% + \ifboolexpr{ test {\iffieldundef{year}} + or test {\iffieldequalstr{year}{forthcoming}}} + {\addcomma}% + {}% needs '%' + \usebibmacro{labeldate+endyear}% + \printfield{extradate}}} + +\newbibmacro*{parencite:origyear}{% + \iffieldundef{origyear} + {} + {\printfield[brackets]{origyear}% + \space}}% + +\newbibmacro*{parencite:long}{% + \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}}} + {\iffieldundef{label} + {\usebibmacro{parencite:journal}}% + {\printfield{label}}} + {\global\toggletrue{cbx@short}% + \renewcommand*{\cbx@deflabel}{labelname}% + \clearfield{handle}% + \clearfield{nameaddon}% + \usebibmacro{author+bookauthor+etc}}}} + +\newbibmacro*{parencite:journal}{% + {\ifentrytype{article} + {\iffieldundef{shortjournal} + {\renewcommand*{\xtitle}{journal}% + \usebibmacro{longtitle}}% + {\printfield[journal]{shortjournal}}} + {\printfield[citetitle]{labeltitle}}}} + +%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Citations in Notes %% +%%%%%%%%%%%%%%%%%%%%%%%%%% + +\newbibmacro*{cite}{% + \usebibmacro{test:multicite}% + \ifciteseen + {\usebibmacro{test:collection}% + \renewcommand*{\cbx@deflabel}{labelname}% + \printtext[bibhyperref]{\usebibmacro{cite:seen}}} + {\printtext[bibhyperref]{\usebibmacro{cite:new}}}% needs '%' + \usebibmacro{savefields}}% + +\newbibmacro*{test:multicite}{% + \ifboolexpr{ test {\iffieldequals{namehash}{\bbx@lasthash}} + and togl {multicite} + and togl {short}} + {\toggletrue{noauth}}% + {}} + +\newbibmacro*{cite:seen}{% + \iffieldundef{shorthand} + {\ifboolexpr{ test \ifciteibid + and togl {short} + and not test \iffirstonpage} + {\usebibmacro{cite:ibid}}% + {\usebibmacro{cite:short}}} + {\printfield{shorthand}% + \usebibmacro{cite:volume}}} + +\newbibmacro*{cite:ibid}{% + \iftoggle{ibid} + {\bibcpstring{ibidem}% + \ifloccit + {\global\toggletrue{cbx@loccit}}% + {\usebibmacro{cite:volume}}} + {\global\toggletrue{cbx@short}% + \ifentrytype{review} + {\usebibmacro{ibid:review}}% + {\usebibmacro{author+bookauthor+etc}% + \iftoggle{noauth} + {\usebibmacro{title+labelyear}}% + {}% needs '%' + \usebibmacro{cite:volume}}}} + +\newbibmacro*{ibid:review}{% + \ifnameundef{author} + {\bibcpstring{reviewnoauth}% + \space + \usebibmacro{title+labelyear}}% + {\usebibmacro{author+bookauthor+etc}}% + \usebibmacro{cite:volume}}% + +\newbibmacro*{cite:short}{% + \global\toggletrue{cbx@short}% + \ifentrytype{review} + {\usebibmacro{short:review}}% + {\usebibmacro{author+bookauthor+etc}% + \usebibmacro{title+labelyear}% + \usebibmacro{cite:volume}}} + +\newbibmacro*{short:review}{% + \ifnameundef{author} + {\bibcpstring{reviewnoauth}}% + {\usebibmacro{author+bookauthor+etc}% + \bibstring{review}}% + \space + \renewcommand*{\xtitle}{book}% + \usebibmacro{title+labelyear}% + \usebibmacro{cite:volume}}% + +\newbibmacro*{cite:volume}{% + \newunit + \iftoggle{swapvol} + {\ifboolexpr{ togl {collection:bk} + or togl {collection:ib}} + {\usebibmacro{volume+page}}% + {}} + {}} + +\newbibmacro*{volume+page}{% + \iffieldundef{volume} + {} + {\iffieldpages{postnote} + {\printfield[noformat]{volume}% + \addcolon}% + {\printfield{volume}}}} + +\newbibmacro*{cite:new}{% + \global\toggletrue{cbx@first}% + \usebibmacro{deflabel}% + \iftoggle{firstshort} + {\usebibmacro{cite:short}}% + {\usebibmacro{crossref+long}}} + +% By default, idemtracker is 'false'. As such, '\ifciteidem' returns +% 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*{deflabel}{% + \ifboolexpr{ test {\ifciteidem} + or togl {firstshort}} + {\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*{crossref+long}{% + \ifboolexpr{ test {\iffieldundef{crossref}} + or test {\iffieldundef{title}}} + {\usebibmacro{cite:long}}% + {\xifinlist{\thefield{crossref}}{\crossreflist} + {\stepcounter{\thefield{crossref}}% + \usebibmacro{author+title+etc}% + \usebibmacro{crossref}}% + {\listxadd{\crossreflist}{\thefield{crossref}}% + \ifcsdef{c@\thefield{crossref}} + {\setcounter{\thefield{crossref}}{0}}% + {\newcounter{\thefield{crossref}}} + \usebibmacro{cite:long}}}} + +\newbibmacro*{cite:long}{% + \printtext{% + \usedriver + {\DeclareNameAlias{sortname}{default}}% + {cite:\thefield{entrytype}}}} + +\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}}}}} + +%%%%%%%%%%%%%%%% +%% Postnote %% +%%%%%%%%%%%%%%%% + +\newbibmacro*{cite:postnote}{% + \usebibmacro{postnote+etc}% + \usebibmacro{postpunct+etc}}% + +\newbibmacro*{postnote+etc}{% + \ifboolexpr{ togl {cbx@loccit} + and togl {ibid}} + {} + {\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 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. The examples in 14.108 only +% muddy the waters further. 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}{% + \iffieldundef{pages} + {} + {\ifboolexpr{ test {\ifentrytype{article}} + or test {\ifentrytype{review}}} + {\iffieldundef{postnote} + {\printtext[bibhyperref]{\printfield{pages}}} + {}} + {}}} + +\renewbibmacro*{postnote}{% + \iffieldundef{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}% + {}} + {}} + +\newbibmacro*{refworks}{% + \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}}}}} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Bibliography Drivers for Notes %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\DeclareBibliographyDriver{cite:article}{% + \usebibmacro{author+title+ed+note}% + \usebibmacro{articles}% + \usebibmacro{colon+comma+etc}}% + +\DeclareBibliographyDriver{cite:book}{% + \usebibmacro{author+collection+etc}% + \newunit + \usebibmacro{volume+page}}% + +\DeclareBibliographyDriver{cite:incollection}{% + \ifentrytype{letter} + {\toggletrue{noauth}}% + {}% needs '%' + \usebibmacro{author+title+etc}% + \usebibmacro{incollections}% + \newunit + \usebibmacro{volume+page}}% + +\DeclareBibliographyDriver{cite:misc}{% + \usebibmacro{author+bookauthor+etc}% + \usebibmacro{title+labelyear}% + \newunit + \printfield{usera}% + \newunit}% + +\DeclareBibliographyDriver{cite:online}{% + \usebibmacro{author+title+ed+note}% + \setunit*{\newunitpunct}% needs '*' + \usebibmacro{websites}% + \usebibmacro{issue+month+etc}{}% + \newunit}% + +\DeclareBibliographyDriver{cite:patent}{% + \usebibmacro{author+title+ed+note}% + \newunit + \printfield{number}% + \newunit}% + +\DeclareBibliographyDriver{cite:reference}{% + \printlist{organization}% + \usebibmacro{edition}{}% + \usebibmacro{refworks}% + \newunit + \bibstring{subverbo}\space + \usebibmacro{longtitle+titleaddon}% + \newunit + \renewcommand*{\pluga}{\bibstring{by}\space}% + \renewcommand*{\cbx@namelist}{author}% + \usebibmacro{printnames+etc}}% + +\DeclareBibliographyDriver{cite:review}{% + \usebibmacro{reviews}% + \usebibmacro{articles}% + \usebibmacro{colon+comma+etc}}% + +\DeclareBibliographyDriver{cite:thesis}{% + \usebibmacro{author+title+ed+note}% + \setunit{\addspace}% not '\setunit{\space}' + \printtext[parens]{\usebibmacro{inst+loc+date}}% + \newunit}% + +\endinput |