summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/biblatex-contrib/biblatex-chicago/latex/cmsdocs.sty
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/biblatex-contrib/biblatex-chicago/latex/cmsdocs.sty')
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-chicago/latex/cmsdocs.sty392
1 files changed, 392 insertions, 0 deletions
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-chicago/latex/cmsdocs.sty b/macros/latex/contrib/biblatex-contrib/biblatex-chicago/latex/cmsdocs.sty
new file mode 100644
index 0000000000..08cb5f61db
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-chicago/latex/cmsdocs.sty
@@ -0,0 +1,392 @@
+\ProvidesPackage{cmsdocs}
+
+\RequirePackage{refcount}
+\RequirePackage{listings}
+\RequirePackage[svgnames]{xcolor}
+\RequirePackage{hyperref}
+
+%%% This file contains kludges and hacks to enable the bespoke
+%%% cross-referencing system found in cms-notes-intro.pdf and
+%%% cms-dates-intro.pdf. It contains code adapted from several
+%%% sources, especially from Ulrich Dirr's hyperendnotes.sty, found on
+%%% comp.text.tex. Please don't load it unless you really mean to, as
+%%% it messes with the standard biblatex-chicago macros.
+
+%%% These counters are for the slightly more informative endnote marks
+%%% used in the notes intro.
+
+\newcounter{Article}\setcounter{Article}{1}
+\newcounter{Artwork}\setcounter{Artwork}{2}
+\newcounter{Audio}\setcounter{Audio}{3}
+\newcounter{Book}\setcounter{Book}{4}
+\newcounter{BookInBook}\setcounter{BookInBook}{5}
+\newcounter{Booklet}\setcounter{Booklet}{6}
+\newcounter{Collection}\setcounter{Collection}{7}
+\newcounter{CustomC}\setcounter{CustomC}{8}
+\newcounter{Image}\setcounter{Image}{9}
+\newcounter{InBook}\setcounter{InBook}{10}
+\newcounter{InCollection}\setcounter{InCollection}{11}
+\newcounter{InProceedings}\setcounter{InProceedings}{12}
+\newcounter{InReference}\setcounter{InReference}{13}
+\newcounter{Letter}\setcounter{Letter}{14}
+\newcounter{Manual}\setcounter{Manual}{15}
+\newcounter{MastersThesis}\setcounter{MastersThesis}{16}
+\newcounter{Misc}\setcounter{Misc}{17}
+\newcounter{Music}\setcounter{Music}{18}
+\newcounter{MVBook}\setcounter{MVBook}{19}
+\newcounter{MVCollection}\setcounter{MVCollection}{20}
+\newcounter{MVProceedings}\setcounter{MVProceedings}{21}
+\newcounter{MVReference}\setcounter{MVReference}{22}
+\newcounter{Online}\setcounter{Online}{23}
+\newcounter{Patent}\setcounter{Patent}{24}
+\newcounter{Periodical}\setcounter{Periodical}{25}
+\newcounter{Proceedings}\setcounter{Proceedings}{26}
+\newcounter{Reference}\setcounter{Reference}{27}
+\newcounter{Report}\setcounter{Report}{28}
+\newcounter{Review}\setcounter{Review}{29}
+\newcounter{SuppBook}\setcounter{SuppBook}{30}
+\newcounter{SuppCollection}\setcounter{SuppCollection}{31}
+\newcounter{SuppPeriodical}\setcounter{SuppPeriodical}{32}
+\newcounter{TechReport}\setcounter{TechReport}{33}
+\newcounter{Thesis}\setcounter{Thesis}{34}
+\newcounter{Unpublished}\setcounter{Unpublished}{35}
+\newcounter{Video}\setcounter{Video}{36}
+\newcounter{Performance}\setcounter{Performance}{37}
+\newcounter{Standard}\setcounter{Standard}{38}
+\newcounter{Dataset}\setcounter{Dataset}{39}
+
+%%% Here starts the adaptation of hyperendnotes.sty
+
+\newif\ifenotelinks
+\newcounter{Hendnote}
+% Redefining portions of endnotes-package:
+\let\savedhref\href
+\let\savedurl\url
+\def\endnotemark{%
+ \@ifnextchar[\@xendnotemark{%
+ \stepcounter{endnote}%
+ \protected@xdef\@theenmark{\theendnote}%
+ \protected@xdef\@theenvalue{\number\c@refsection\number\c@endnote}%
+ \@endnotemark
+ }%
+}%
+\def\@xendnotemark[#1]{%
+ \begingroup\c@endnote#1\relax
+ \unrestored@protected@xdef\@theenmark{\theendnote}%
+ \unrestored@protected@xdef\@theenvalue{\number\c@refsection\number\c@endnote}%
+ \endgroup
+ \@endnotemark
+}%
+\def\endnotetext{%
+ \@ifnextchar[\@xendnotenext{%
+ \protected@xdef\@theenmark{\theendnote}%
+ \protected@xdef\@theenvalue{\number\c@refsection\number\c@endnote}%
+ \@endnotetext
+ }%
+}%
+\def\@xendnotenext[#1]{%
+ \begingroup
+ \c@endnote=#1\relax
+ \unrestored@protected@xdef\@theenmark{\theendnote}%
+ \unrestored@protected@xdef\@theenvalue{\number\c@refsection\number\c@endnote}%
+ \endgroup
+ \@endnotetext
+}%
+\def\endnote{%
+ \@ifnextchar[\@xendnote{%
+ \stepcounter{endnote}%
+ \protected@xdef\@theenmark{\theendnote}%
+ \protected@xdef\@theenvalue{\number\c@refsection\number\c@endnote}%
+ \@endnotemark\@endnotetext
+ }%
+}%
+\def\@xendnote[#1]{%
+ \begingroup
+ \c@endnote=#1\relax
+ \unrestored@protected@xdef\@theenmark{\theendnote}%
+ \unrestored@protected@xdef\@theenvalue{\number\c@refsection\number\c@endnote}%
+ \show\@theenvalue
+ \endgroup
+ \@endnotemark\@endnotetext
+}%
+\def\@endnotemark{%
+ \leavevmode
+ \ifhmode
+ \edef\@x@sf{\the\spacefactor}\nobreak
+ \fi
+ \ifenotelinks
+ \expandafter\@firstofone
+ \else
+ \expandafter\@gobble
+ \fi
+ {%
+ \Hy@raisedlink{%
+ \hyper@@anchor{Hendnotepage.\@theenvalue}{\empty}%
+ }%
+ }%
+ \hyper@linkstart{link}{Hendnote.\@theenvalue}%
+ \makeenmark
+ \hyper@linkend
+ \ifhmode
+ \spacefactor\@x@sf
+ \fi
+ \relax
+}%
+\long\def\@endnotetext#1{%
+ \if@enotesopen
+ \else
+ \@openenotes
+ \fi
+ \immediate\write\@enotes{%
+ \@doanenote{\@theenmark}{\@theenvalue}%
+ }%
+ \begingroup
+ \def\next{#1}%
+ \newlinechar='40
+ \immediate\write\@enotes{\meaning\next}%
+ \endgroup
+ \immediate\write\@enotes{%
+ \@endanenote
+ }%
+}%
+\def\theendnotes{%
+ \immediate\closeout\@enotes
+ \global\@enotesopenfalse
+ \begingroup
+ \makeatletter
+ \edef\@tempa{`\string>}%
+ \ifnum\catcode\@tempa=12
+ \let\@ResetGT\relax
+ \else
+ \edef\@ResetGT{\noexpand\catcode\@tempa=\the\catcode\@tempa}%
+ \@makeother\>%
+ \fi
+ \def\@doanenote##1##2##3>{%
+ \def\@theenmark{##1}%
+ \def\@theenvalue{##2}%
+ \par
+% \smallskip %<-small vertical gap between endnotes
+ \begingroup
+ \def\href{\expandafter\savedhref}%
+ \def\url{\expandafter\savedurl}%
+ \@ResetGT
+ \edef\@currentlabel{\csname p@endnote\endcsname\@theenmark}%
+ \enoteformat
+ }%
+ \def\@endanenote{%
+ \par\endgroup
+ }%
+ % Redefine, how numbers are formatted in the endnotes-section:
+ \renewcommand*\@makeenmark{%
+ \hbox{\normalfont\@theenmark~}%
+ }%
+ % header of endnotes-section
+ \enoteheading
+ % font-size of endnotes
+ \enotesize
+ \input{\jobname.ent}%
+ \endgroup
+}%
+\def\enoteformat{%
+ \renewcommand{\makeenmark}%
+ {\color{DarkBlue}{\textsf{\theenmark:\,\,}}}%
+ \rightskip\z@
+ \leftskip\z@
+ \parindent=2.3em
+ \leavevmode\llap{%
+ \setcounter{Hendnote}{\@theenvalue}%
+ \addtocounter{Hendnote}{-1}%
+ \refstepcounter{Hendnote}%
+ \ifenotelinks
+ \expandafter\@secondoftwo
+ \else
+ \expandafter\@firstoftwo
+ \fi
+ {\@firstofone}%
+ {\hyperlink{Hendnotepage.\@theenvalue}}%
+ {\makeenmark}%
+ }%
+}%
+% stop redefining portions of endnotes-package:
+
+% Toggle switch in order to turn on/off back-links in the
+% endnote-section:
+\enotelinkstrue
+% \enotelinksfalse
+
+%%% Here we substitute entry types for the usual numbers for endnote
+%%% marks.
+
+\def\cmssymbol#1{\expandafter\@cmssymbol\csname c@#1\endcsname}
+
+\def\@cmssymbol#1{\ifcase#1\or Article\or Artwork\or Audio\or Book\or
+ BookInBook\or Booklet\or Collection\or CustomC\or Image\or InBook\or
+ InCollection\or InProceedings\or InReference\or Letter\or Manual\or
+ MastersThesis\or Misc\or Music\or MVBook\or MVCollection\or
+ MVProceedings\or MVReference\or Online\or Patent\or Periodical\or
+ Proceedings\or Reference\or Report\or Review\or SuppBook\or
+ SuppCollection\or SuppPeriodical\or TechReport\or Thesis\or
+ Unpublished\or Video\or Perfor\-mance\or Standard\or
+ Dataset\else\@ctrerr\fi}
+
+\renewcommand{\theendnote}{\cmssymbol{endnote}}
+
+%%% Now we define parameters and a command for the lstlisting
+%%% environments, which print the .bib entries at the end of the .pdf.
+
+\lstset{%
+ basicstyle=\footnotesize\ttfamily,
+ breaklines=true,
+ breakatwhitespace=true,
+ breakautoindent=false,
+ breakindent=40pt,
+ escapechar=*,
+ keywordstyle=\color{DarkBlue},
+ columns=fullflexible,
+}%
+
+\lstdefinelanguage{BibTeX}
+{keywords={%
+ @string%
+ },
+ comment=[l][\itshape]{@comment},
+ sensitive=false,
+}%
+
+\newrobustcmd*{\lnbackref}[2]{%
+ \hyperlink{Hendnote.#2\the\value{#1}}{\color{DarkBlue}@#1}}
+
+\newrobustcmd*{\adlnbackref}[2]{%
+ \@ifnextchar[%]
+ {\adlnbackref@i{#1}{#2}}%
+ {\adlnbackref@i{#1}{#2}[{#2}]}}%
+
+\def\adlnbackref@i#1#2[#3]{%
+ \hyperlink{cite.0@#3}{\color{DarkBlue}@#1}\{#2}%
+
+%%% Here we renew some macros from chicago-notes.cbx, and add some
+%%% field formats to make navigating the intro easier.
+
+\renewbibmacro*{cite:full}{%
+ \ifnumequal{\the\value{refsection}}{8}%
+ {\printtext[cmsbiblink]{%
+ \usedriver
+ {\DeclareNameAlias{sortname}{default}\frenchspacing}
+ {cite:\thefield{entrytype}}}}
+ {\iffieldequalstr{entrykey}{lac:leaders}%
+ {\printtext{%
+ \usedriver
+ {\DeclareNameAlias{sortname}{default}\frenchspacing}
+ {cite:\thefield{entrytype}}}}%
+ {\printtext[bibhyperref]{%
+ \usedriver
+ {\DeclareNameAlias{sortname}{default}\frenchspacing}
+ {cite:\thefield{entrytype}}}}}}%
+
+\ifdef{\cmshyper}%
+{\renewrobustcmd*{\cmshyper}[1]{%
+ \ifboolexpr{%
+ (
+ test {\ifbibliography}%
+ or
+ test {\ifnumgreater{\the\value{refsection}}{3}}%
+ )
+ and
+ not test {\ifnumequal{\the\value{refsection}}{8}}%
+ }%
+ {\printtext[bibhyperref]{#1}}%
+ {\printtext[cmsbiblink]{#1}}}}%
+{}%
+
+\ifdef{\cmsrelhyper}%
+{\renewrobustcmd*{\cmsrelhyper}[1]{%
+ \ifhyperref%
+ {\ifbibliography%
+ {\ifentryinbib{\strfield{clonesourcekey}}%
+ {\bibhyperref[\strfield{clonesourcekey}]{#1}}%
+ {#1}}%
+ {\iftoggle{cms@allshort}%
+ {\IfSubStr{\thefield{savedoptions}}{skipbib}%
+ {\bibhyperref[\strfield{clonesourcekey}]{#1}}%%
+ {\bibhyperref[\thefield{savedentrykey}]{#1}}}%
+ {\iftoggle{cms@fullnote}%
+ {\ifentryseen{\thefield{clonesourcekey}}%
+ {\bibhyperref[\strfield{clonesourcekey}]{#1}}%
+ {#1}}%
+ {\bibhyperref[\thefield{savedentrykey}]{#1}}}}}%
+ {#1}}}%
+{}%
+
+\renewbibmacro*{cite:journal}{%
+ \ifthenelse{\ifciteibid\AND\NOT\iffirstonpage}%
+ {\iffieldundef{prenote}%
+ {\bibsentence\usebibmacro{cite:ibid}}%
+ {\usebibmacro{cite:ibid}}}%
+ {\iffieldundef{journaltitle}%
+ {\usebibmacro{cite:short}}%
+ {\iffieldequalstr{authortype}{anon}%
+ {\bibleftbracket\printnames{labelname}%
+ \bibrightbracket\newcunit}%
+ {\iffieldequalstr{authortype}{anon?}%
+ {\bibleftbracket\printnames{labelname}?%
+ \bibrightbracket\newcunit}%
+ {\printnames{labelname}%
+ \isdot\newcunit}}%
+ \iftoggle{cms@allshort}%
+ {\printtext[cmsbiblink]{%
+ \printfield[journaltitle]{journaltitle}}}%
+ {\printtext[cmsbiblink]{%
+ \printfield[journaltitle]{journaltitle}}}%
+ \iffieldundef{volume}%
+ {\iffieldundef{number}%
+ {\iffieldundef{issue}
+ {\newcunit%
+ \usebibmacro{number+or+month}}%
+ {\newcunit%
+ \printfield{issue}%
+ \setunit{\addspace}%
+ \usebibmacro{cmsyear}}}%
+ {\newcunit%
+ \printfield[journum]{number}}}%
+ {\toggletrue{cms@fullnote}%
+ \togglefalse{cms@shortnote}%
+ \setunit{\addspace}%
+ \printfield[jourvol]{volume}%
+ \ifthenelse{\iffieldundef{pagination}\AND%
+ \iffieldundef{bookpagination}}%
+ {\setunit{\postvolpunct}}%
+ {\setunit{\addcolon\addspace}}}}}}
+
+\DeclareFieldFormat{cmsbiblink}{%
+ \hyperlink{\getrefbykeydefault{\abx@field@entrykey}{anchor}{}}{#1}}
+
+\def\cmsdocref@entry{%
+ \iffieldundef{clonesourcekey}%
+ {\printfield{entrykey}}%
+ {\printfield{clonesourcekey}}}
+
+\def\cmsdoc@entrykey{%
+ \iffieldundef{clonesourcekey}%
+ {\abx@field@entrykey}%
+ {\abx@field@clonesourcekey}}
+
+\newcommand*{\cmslink}[1]{%
+ \hyperlink{\getrefbykeydefault{#1}{anchor}{}}%
+ {\texttt{#1}}}
+
+\DeclareFieldFormat{annotation}{\par\nobreak \vskip \bibitemsep%
+ \hyperlink{\getrefbykeydefault{\cmsdoc@entrykey}{anchor}{}}%
+ {\small{\textbf{[\cmsdocref@entry]\addspace}}}\small#1}
+
+%%% These commands provide the hyperlinks to the external docs in
+%%% biblatex-chicago.pdf.
+
+\newrobustcmd*{\cmssecref}[2][]{\marginpar{\href{\@baseurl%
+ \getrefbykeydefault{#2}{anchor}{}}{\small §\,\getrefnumber{#2}}%
+ \ifblank{#1}{}{\scriptsize,\, s.v.\\[1pt]\enquote{#1}}}}
+\newrobustcmd*{\cmspagref}[1]{\marginpar{\href{\@baseurl%
+ page.\getpagerefnumber{#1}}{p.~\getpagerefnumber{#1}}}}
+\newrobustcmd*{\cmstabref}[2][]{\marginpar{\href{\@baseurl%
+ \getrefbykeydefault{#2}{anchor}{}}%
+ {\footnotesize Table\,\getrefnumber{#2}}%
+ \ifblank{#1}{}{\scriptsize,\, s.v.\\[1pt]\enquote{#1}}}}