summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/biblatex-ms/latex/cbx/verbose-trad3-ms.cbx
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/biblatex-ms/latex/cbx/verbose-trad3-ms.cbx')
-rw-r--r--macros/latex/contrib/biblatex-ms/latex/cbx/verbose-trad3-ms.cbx261
1 files changed, 261 insertions, 0 deletions
diff --git a/macros/latex/contrib/biblatex-ms/latex/cbx/verbose-trad3-ms.cbx b/macros/latex/contrib/biblatex-ms/latex/cbx/verbose-trad3-ms.cbx
new file mode 100644
index 0000000000..b81cf54f94
--- /dev/null
+++ b/macros/latex/contrib/biblatex-ms/latex/cbx/verbose-trad3-ms.cbx
@@ -0,0 +1,261 @@
+\ProvidesFile{verbose-trad3-ms.cbx}
+[\abx@cbxid]
+
+\InitializeCitationStyle{\numgdef{\cbx@resetcount}{\cbx@resetcount+1}}
+
+\DeclareFieldFormat{bibhyperlink}{%
+ \bibhyperlink{\iffootnote{f}{t}:\cbx@resetcount:\thefield{entrykey}}{#1}}
+\DeclareFieldFormat{bibhypertarget}{%
+ \bibhypertarget{\iffootnote{f}{t}:\cbx@resetcount:\thefield{entrykey}}{#1}}
+
+\newcommand*{\cbx@resetcount}{0}
+\providecommand*{\mkibid}[1]{#1}
+\renewcommand*{\iffinalcitedelim}{%
+ \ifnumequal{\value{textcitecount}}{\value{textcitetotal}-1}}
+
+\newtoggle{cbx:loccit}
+
+\DeclareBibliographyOption[boolean]{strict}[true]{%
+ \ifstrequal{#1}{true}
+ {\ExecuteBibliographyOptions{ibidtracker=constrict,loccittracker=constrict}}
+ {\ExecuteBibliographyOptions{ibidtracker=context,loccittracker=context}}}
+
+\DeclareBibliographyOption[string]{citepages}[permit]{%
+ \ifcsdef{cbx@opt@citepages@#1}
+ {\csuse{cbx@opt@citepages@#1}}
+ {\PackageError{biblatex}
+ {Invalid option 'citepages=#1'}
+ {Valid values are 'permit', 'suppress', 'omit', 'separate'.}}}
+
+\providebibmacro*{cite:citepages}{}
+\providebibmacro*{cite:full:citepages}{}
+\providebibmacro*{cite:postnote}{}
+
+\def\cbx@opt@citepages@permit{%
+ \renewbibmacro*{cite:citepages}{}%
+ \renewbibmacro*{cite:full:citepages}{}%
+ \renewbibmacro*{cite:postnote}{%
+ \usebibmacro{cite:postnote:ibidpage}}}
+
+\def\cbx@opt@citepages@suppress{%
+ \renewbibmacro*{cite:citepages}{}%
+ \renewbibmacro*{cite:full:citepages}{%
+ \clearfield{pages}%
+ \clearfield{pagetotal}}%
+ \renewbibmacro*{cite:postnote}{%
+ \usebibmacro{cite:postnote:ibidpage}}}
+
+\def\cbx@opt@citepages@omit{%
+ \renewbibmacro*{cite:citepages}{}%
+ \renewbibmacro*{cite:full:citepages}{%
+ \ifboolexpr{
+ test {\ifnumequal{\value{citecount}}{\value{citetotal}}}
+ and
+ test {\iffieldpages{postnote}}
+ }
+ {\clearfield{pages}%
+ \clearfield{pagetotal}}
+ {}}%
+ \renewbibmacro*{cite:postnote}{%
+ \usebibmacro{cite:postnote:ibidpage}}}
+
+\def\cbx@opt@citepages@separate{%
+ \providetoggle{cbx:fullcite}%
+ \renewbibmacro*{cite:citepages}{%
+ \global\togglefalse{cbx:fullcite}}%
+ \renewbibmacro*{cite:full:citepages}{%
+ \global\toggletrue{cbx:fullcite}}%
+ \renewbibmacro*{cite:postnote}{%
+ \ifboolexpr{
+ togl {cbx:fullcite}
+ and
+ test {\iffieldpages{postnote}}
+ and
+ test {\ifnumequal{\value{citecount}}{\value{citetotal}}}
+ and
+ (
+ not test {\iffieldundef{pages}}
+ or
+ not test {\iffieldundef{pagetotal}}
+ )
+ }
+ {\usebibmacro{cite:postnote:pages}}
+ {\usebibmacro{cite:postnote:ibidpage}}}
+ \providebibmacro*{cite:postnote:pages}{%
+ \setunit{\printdelim{postnotedelim}}%
+ \bibstring{thiscite}%
+ \setunit{\addspace}%
+ \printfield{postnote}}}
+
+\ExecuteBibliographyOptions{citetracker=context,ibidtracker=constrict,
+ loccittracker=constrict,autocite=footnote,citepages=permit}
+
+\newbibmacro*{cite}{%
+ \usebibmacro{cite:citepages}%
+ \global\togglefalse{cbx:loccit}%
+ \ifciteseen
+ {\ifciteibid
+ {\ifloccit
+ {\usebibmacro{cite:ibid}}
+ {\iffieldundef{shorthand}
+ {\usebibmacro{cite:opcit}}
+ {\usebibmacro{cite:shorthand}}}}
+ {\iffieldundef{shorthand}
+ {\usebibmacro{cite:short}}
+ {\usebibmacro{cite:shorthand}}}}
+ {\usebibmacro{cite:full}}}
+
+\newbibmacro*{cite:full}{%
+ \usebibmacro{cite:full:citepages}%
+ \printtext[bibhypertarget]{%
+ \usedriver
+ {\DeclareNameAlias{sortname}{default}}
+ {\thefield{entrytype}}}%
+ \usebibmacro{shorthandintro}}
+
+\newbibmacro*{cite:short}{%
+ \printnames{labelname}%
+ \setunit*{\printdelim{nametitledelim}}%
+ \printtext[bibhyperlink]{%
+ \printfield[citetitle]{labeltitle}}}
+
+\newbibmacro*{cite:opcit}{%
+ \printnames{labelname}%
+ \setunit*{\printdelim{nametitledelim}}%
+ \printtext[bibhyperlink]{%
+ \bibstring[\mkibid]{opcit}}}
+
+\newbibmacro*{cite:ibid}{%
+ \printtext[bibhyperlink]{\bibstring[\mkibid]{ibidem}}%
+ \global\toggletrue{cbx:loccit}}
+
+\newbibmacro*{cite:shorthand}{%
+ \printtext[bibhyperlink]{\printfield{shorthand}}}
+
+\newbibmacro*{cite:postnote:ibidpage}{%
+ \iftoggle{cbx:loccit}
+ {}
+ {\usebibmacro{postnote}}}
+
+\DeclareCiteCommand{\cite}
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand{\parencite}[\mkbibparens]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand{\footcite}[\mkbibfootnote]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand{\footcitetext}[\mkbibfootnotetext]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand{\smartcite}[\iffootnote\mkbibparens\mkbibfootnote]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{cite:postnote}}
+
+\newbibmacro*{textcite}{%
+ \ifnameundef{labelname}
+ {\printfield[citetitle]{labeltitle}}
+ {\printnames{labelname}}}
+
+\newbibmacro*{textcite:init}{%
+ \citetrackerfalse%
+ \pagetrackerfalse%
+ \iffirstcitekey
+ {\global\undef\cbx@lasthash}
+ {}}
+
+\newbibmacro*{textcite:count}{%
+ \stepcounter{textcitetotal}%
+ \ifnumgreater{\value{uniquelist}}{\value{maxnames}}
+ {\ifnumgreater{\value{uniquelist}}{\value{textcitemaxnames}}
+ {\setcounter{textcitemaxnames}{\value{uniquelist}}}
+ {}}
+ {\ifnumless{\value{labelname}}{\value{maxnames}}
+ {\ifnumgreater{\value{labelname}}{\value{textcitemaxnames}}
+ {\setcounter{textcitemaxnames}{\value{labelname}}}
+ {}}
+ {\ifnumgreater{\value{maxnames}}{\value{textcitemaxnames}}
+ {\setcounter{textcitemaxnames}{\value{maxnames}}}
+ {}}}}
+
+\DeclareCiteCommand{\cbx@textcite}
+ {\usebibmacro{textcite:init}}
+ {\iffieldequals{namehash}{\cbx@lasthash}
+ {}
+ {\iffirstcitekey
+ {}
+ {\textcitedelim}%
+ \stepcounter{textcitecount}%
+ \usebibmacro{textcite}%
+ \savefield{namehash}{\cbx@lasthash}}}
+ {}
+ {}
+
+\DeclareCiteCommand{\textcite}[\cbx@textcite@init\cbx@textcite\footcite]
+ {\usebibmacro{textcite:init}%
+ \gdef\cbx@savedkeys{}%
+ \DeferNextCitekeyHook}
+ {\ifthenelse{\iffirstcitekey\AND\value{multicitetotal}>0}
+ {\protected@xappto\cbx@footcite@args{%
+ (\thefield{multiprenote})(\thefield{multipostnote})}}
+ {}%
+ \xappto\cbx@savedkeys{\thefield{entrykey},}%
+ \iffieldequals{namehash}{\cbx@lasthash}
+ {}
+ {\usebibmacro{textcite:count}%
+ \savefield{namehash}{\cbx@lasthash}}%
+ \ifnumequal{\value{citecount}}{\value{citetotal}}
+ {\protected@xappto\cbx@textcite@args{{\cbx@savedkeys}}%
+ \protected@xappto\cbx@footcite@args{%
+ [\thefield{prenote}][\thefield{postnote}]{\cbx@savedkeys}}%
+ \iflastcitekey
+ {\protected@xappto\cbx@textcite@args{\thefield{postpunct}}%
+ \protected@xappto\cbx@footcite@args{\nopunct}}
+ {}}
+ {}}
+ {}
+ {}
+
+% textcite has nested \DeclareCiteCommand definitions for textcite and we want to use
+% the normal textcite context
+\DeclareDelimcontextAlias{cbx@textcite}{textcite}
+
+\newrobustcmd{\cbx@textcite@init}[3]{%
+ \setcounter{textcitetotal}{0}%
+ \setcounter{textcitecount}{0}%
+ \setcounter{textcitemaxnames}{0}%
+ \def\cbx@textcite@args{#1}\def\cbx@footcite@args{#2}#3%
+ \cbx@textcite@args\empty\cbx@footcite@args\empty}
+
+\DeclareMultiCiteCommand{\cbx@textcites}{\cbx@textcite}{}
+\DeclareMultiCiteCommand{\textcites}
+ [\cbx@textcites@init\cbx@textcites\footcites]{\textcite}{}
+
+\let\cbx@textcites@init\cbx@textcite@init
+\pretocmd{\cbx@textcites@init}{%
+ \UseNextMultiCiteHook%
+ \AtNextMultiCite{%
+ \renewbibmacro{multiprenote}{}%
+ \renewbibmacro{multipostnote}{}}}{}{}
+
+\endinput