diff options
author | Karl Berry <karl@freefriends.org> | 2016-06-10 23:19:01 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2016-06-10 23:19:01 +0000 |
commit | 236222daf66574317ed37f1a93119fd2f44d68bf (patch) | |
tree | 6d645a139acce506db78e8215a1ea870bbcdef33 /Master/texmf-dist/tex/latex/biblatex-chicago/cmsdocs.sty | |
parent | d9c1a93c79b4a973a205cfb1294668982d337d98 (diff) |
biblatex-chicago (7jun16)
git-svn-id: svn://tug.org/texlive/trunk@41351 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/biblatex-chicago/cmsdocs.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/biblatex-chicago/cmsdocs.sty | 384 |
1 files changed, 384 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/biblatex-chicago/cmsdocs.sty b/Master/texmf-dist/tex/latex/biblatex-chicago/cmsdocs.sty new file mode 100644 index 00000000000..5a7df2634a0 --- /dev/null +++ b/Master/texmf-dist/tex/latex/biblatex-chicago/cmsdocs.sty @@ -0,0 +1,384 @@ +\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} + +%%% 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\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}{loc:leaders}% + {\printtext{% + \usedriver + {\DeclareNameAlias{sortname}{default}\frenchspacing} + {cite:\thefield{entrytype}}}}% + {\printtext[bibhyperref]{% + \usedriver + {\DeclareNameAlias{sortname}{default}\frenchspacing} + {cite:\thefield{entrytype}}}}}}% + +\renewbibmacro*{cite:short}{% + \ifthenelse{\ifnameundef{labelname}\OR% + \ifentrytype{inreference}\OR% + \ifentrytype{reference}\OR% + \ifentrytype{mvreference}}% + {\iffieldequalstr{entrysubtype}{magazine}% Simplify .bib creation + {\ifuseauthor% + {\printfield[journaltitle]{journaltitle}\isdot\newcunit}% + {}}% + {\ifentrytype{manual}% + {\printlist{organization}\isdot\newcunit}% + {}}}% + {\iffieldequalstr{authortype}{anon}% + {\bibleftbracket\printnames{labelname}% + \bibrightbracket\classicpunct}% + {\iffieldequalstr{authortype}{anon?}% + {\bibleftbracket\printnames{labelname}?% + \bibrightbracket\classicpunct}% + {\printnames{labelname}%\usebibmacro{choose+labelname}% + \isdot\classicpunct}}}% + \ifboolexpr{(% + test {\ifbibliography}% + or + test {\ifnumgreater{\the\value{refsection}}{3}}% + ) + and + not test {\ifnumequal{\the\value{refsection}}{8}}% + }% + {\printtext[bibhyperref]{% + \printfield[citetitle]{labeltitle}}}% + {\printtext[cmsbiblink]{% + \printfield[citetitle]{labeltitle}}}}%:\thefield{entrytype}? + + +\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}}}} |