summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-iecomp.cbx
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-iecomp.cbx
Initial commit
Diffstat (limited to 'macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-iecomp.cbx')
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-iecomp.cbx362
1 files changed, 362 insertions, 0 deletions
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-iecomp.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-iecomp.cbx
new file mode 100644
index 0000000000..c789e84887
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-iecomp.cbx
@@ -0,0 +1,362 @@
+\ProvidesFile{ext-authoryear-iecomp.cbx}
+ [2019/08/25 v0.8 biblatex authoryear-iecomp
+ citation style (MW)]
+
+\blx@inputonce{ext-biblatex-aux.def}{auxiliary code for ext-biblatex}
+ {}{}{}{}
+
+\RequireCitationStyle{authoryear-icomp}
+
+\DeclareOuterCiteDelims{parencite}{\bibopenparen}{\bibcloseparen}
+
+\DeclareInnerCiteDelims{textcite}{\bibopenparen}{\bibcloseparen}
+
+\DeclareFieldFormat{citelabeldate}{#1}
+\DeclareFieldFormat{parencitelabeldate}{#1}
+\DeclareFieldFormat{textcitelabeldate}{#1}
+\DeclareFieldFormat{footcitelabeldate}{#1}
+
+\DeclareDelimFormat{extradateonlycompcitedelim}{\addcomma}
+\DeclareDelimFormat{extradateonlycompciterangedelim}{\bibrangedash}
+
+\newcounter{cbx@extradatecount}
+
+\renewbibmacro*{cite:init}{%
+ \global\boolfalse{cbx:loccit}%
+ \ifnumless{\value{multicitecount}}{2}
+ {\global\boolfalse{cbx:parens}%
+ \global\undef\cbx@lastkey
+ \global\undef\cbx@lasthash
+ \global\undef\cbx@lastyear
+ \global\undef\cbx@lastextradate
+ \setcounter{cbx@extradatecount}{0}}
+ {\iffieldundef{prenote}
+ {}
+ {\global\undef\cbx@lastkey
+ \global\undef\cbx@lasthash
+ \global\undef\cbx@lastyear
+ \global\undef\cbx@lastextradate
+ \setcounter{cbx@extradatecount}{0}}}}
+
+\renewbibmacro*{cite:reinit}{%
+ \global\undef\cbx@lastkey
+ \global\undef\cbx@lasthash
+ \global\undef\cbx@lastyear
+ \global\undef\cbx@lastextradate
+ \setcounter{cbx@extradatecount}{0}}
+
+\newbibmacro*{generic:dump:extradate}{%
+ \ifundef\cbx@lastkey
+ {}
+ {\entrydata{\cbx@lastkey}
+ {\ifnumless{\value{cbx@extradatecount}}{1}
+ {\extblx@warning{% This should not happen
+ Uh-oh!\MessageBreak
+ The extradate compression is quite likely\MessageBreak
+ wrong for \cbx@lastkey.\MessageBreak
+ This should not happen.\MessageBreak
+ Please report this as a bug}}%
+ {}%
+ \ifnumgreater{\value{cbx@extradatecount}}{1}
+ {\setunit{\printdelim{extradateonlycompciterangedelim}}}
+ {\setunit{\printdelim{extradateonlycompcitedelim}}}%
+ \usebibmacro{cite:extradate}}%
+ \setunit{\cbx@thiscitedelim}}%
+ \global\undef\cbx@lastkey
+ \setcounter{cbx@extradatecount}{0}%
+}
+
+\newbibmacro*{cite:dump:extradate}{%
+ \def\cbx@thiscitedelim{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}%
+ \multicitedelim}%
+ \usebibmacro{generic:dump:extradate}}
+
+\newbibmacro*{textcite:dump:extradate}{%
+ \def\cbx@thiscitedelim{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}%
+ \textcitedelim}%
+ \usebibmacro{generic:dump:extradate}}
+
+\newbibmacro*{cite:comp:extradate}{%
+ \ifnumequal{\cbx@lastextradate+1}{\thefield{extradate}}
+ {\stepcounter{cbx@extradatecount}%
+ \savefield{entrykey}{\cbx@lastkey}}
+ {\usebibmacro{cite:dump:extradate}%
+ \setunit{\extradateonlycompcitedelim}%
+ \usebibmacro{cite:extradate}}%
+ \savefield{extradate}{\cbx@lastextradate}%
+}
+
+\renewbibmacro*{cite}{%
+ \iffieldundef{shorthand}
+ {\ifthenelse{\ifciteibid\AND\NOT\iffirstonpage}
+ {\usebibmacro{cite:dump:extradate}%
+ \usebibmacro{cite:ibid}}
+ {\ifboolexpr{test {\ifnameundef{labelname}}
+ or test {\iffieldundef{labelyear}}}
+ {\usebibmacro{cite:dump:extradate}%
+ \usebibmacro{cite:label}%
+ \setunit{%
+ \global\booltrue{cbx:parens}%
+ \printdelim{nonameyeardelim}%
+ \csuse{extblx@citedelim@\blx@delimcontext @inner@open}}%
+ \usebibmacro{cite:labeldate+extradate}%
+ \usebibmacro{cite:reinit}}
+ {\iffieldequals{namehash}{\cbx@lasthash}
+ {\ifboolexpr{
+ test {\iffieldequals{labelyear}{\cbx@lastyear}}
+ and ( test {\ifnumequal{\value{multicitecount}}{0}}
+ or test {\iffieldundef{postnote}})}
+ {\usebibmacro{cite:comp:extradate}}
+ {\usebibmacro{cite:dump:extradate}%
+ \setunit{\compcitedelim}%
+ \usebibmacro{cite:labeldate+extradate}%
+ \savefield{labelyear}{\cbx@lastyear}%
+ \savefield{extradate}{\cbx@lastextradate}%
+ \setcounter{cbx@extradatecount}{0}}}
+ {\usebibmacro{cite:dump:extradate}%
+ \printnames{labelname}%
+ \setunit{%
+ \global\booltrue{cbx:parens}%
+ \printdelim{nameyeardelim}%
+ \csuse{extblx@citedelim@\blx@delimcontext @inner@open}}%
+ \usebibmacro{cite:labeldate+extradate}%
+ \savefield{namehash}{\cbx@lasthash}%
+ \savefield{labelyear}{\cbx@lastyear}%
+ \savefield{extradate}{\cbx@lastextradate}%
+ \setcounter{cbx@extradatecount}{0}}}}}
+ {\usebibmacro{cite:dump:extradate}%
+ \usebibmacro{cite:shorthand}%
+ \usebibmacro{cite:reinit}}%
+ \setunit{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}%
+ \multicitedelim}}
+
+\renewbibmacro*{cite:labeldate+extradate}{%
+ \iffieldundef{labelyear}
+ {}
+ {\printtext[bibhyperref]{%
+ \printtext[\blx@delimcontext labeldate]{%
+ \printlabeldateextra}}}}
+
+\renewbibmacro*{cite:extradate}{%
+ \iffieldundef{extradate}
+ {}
+ {\printtext[bibhyperref]{%
+ \printtext[\blx@delimcontext labeldate]{%
+ \printfield{extradate}}}}}
+
+\renewbibmacro*{cite:postnote}{%
+ \setunit{}%
+ \printtext{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}}%
+ \ifbool{cbx:loccit}
+ {}
+ {\usebibmacro{postnote}}}
+
+\renewbibmacro*{textcite}{%
+ \iffieldequals{namehash}{\cbx@lasthash}
+ {\iffieldundef{shorthand}
+ {\ifboolexpr{test {\iffieldequals{labelyear}{\cbx@lastyear}}
+ and (test {\ifnumequal{\value{multicitecount}}{0}}
+ or test {\iffieldundef{postnote}})}
+ {\usebibmacro{cite:comp:extradate}}
+ {\usebibmacro{textcite:dump:extradate}%
+ \setunit{\compcitedelim}%
+ \usebibmacro{cite:labeldate+extradate}%
+ \savefield{labelyear}{\cbx@lastyear}%
+ \savefield{extradate}{\cbx@lastextradate}%
+ \setcounter{cbx@extradatecount}{0}}}
+ {\usebibmacro{textcite:dump:extradate}%
+ \setunit{\compcitedelim}%
+ \usebibmacro{cite:shorthand}%
+ \global\undef\cbx@lastyear}}
+ {\usebibmacro{textcite:dump:extradate}%
+ \ifnameundef{labelname}
+ {\iffieldundef{shorthand}
+ {\usebibmacro{cite:label}%
+ \setunit{%
+ \global\booltrue{cbx:parens}%
+ \printdelim{nonameyeardelim}%
+ \csuse{extblx@citedelim@\blx@delimcontext @inner@open}}%
+ \ifnumequal{\value{citecount}}{1}
+ {\usebibmacro{prenote}}
+ {}%
+ \ifthenelse{\ifciteibid\AND\NOT\iffirstonpage}
+ {\usebibmacro{cite:ibid}}
+ {\usebibmacro{cite:labeldate+extradate}}}
+ {\usebibmacro{cite:shorthand}}}
+ {\printnames{labelname}%
+ \setunit{%
+ \global\booltrue{cbx:parens}%
+ \printdelim{nameyeardelim}%
+ \csuse{extblx@citedelim@\blx@delimcontext @inner@open}}%
+ \ifnumequal{\value{citecount}}{1}
+ {\usebibmacro{prenote}}
+ {}%
+ \iffieldundef{shorthand}
+ {\iffieldundef{labelyear}
+ {\usebibmacro{cite:label}}
+ {\ifthenelse{\ifciteibid\AND\NOT\iffirstonpage}
+ {\usebibmacro{cite:ibid}}
+ {\usebibmacro{cite:labeldate+extradate}}}%
+ \savefield{labelyear}{\cbx@lastyear}%
+ \savefield{extradate}{\cbx@lastextradate}%
+ \setcounter{cbx@extradatecount}{0}}
+ {\usebibmacro{cite:shorthand}%
+ \global\undef\cbx@lastyear}}%
+ \stepcounter{textcitecount}%
+ \savefield{namehash}{\cbx@lasthash}}%
+ \setunit{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}%
+ \textcitedelim}}
+
+\renewbibmacro*{textcite:postnote}{%
+ \ifbool{cbx:loccit}
+ {}
+ {\usebibmacro{postnote}}%
+ \ifnumequal{\value{multicitecount}}{\value{multicitetotal}}
+ {\setunit{}%
+ \printtext{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}}}
+ {\setunit{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}%
+ \textcitedelim}}}
+
+\DeclareCiteCommand{\cite}[\mkoutercitedelims]
+ {\usebibmacro{cite:init}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {}
+ {\usebibmacro{cite:dump:extradate}%
+ \usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand*{\cite}[\mkoutercitedelims]
+ {\usebibmacro{cite:init}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{citeyear}}
+ {}
+ {\usebibmacro{cite:dump:extradate}%
+ \usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand{\parencite}[\mkouterparencitedelims]
+ {\usebibmacro{cite:init}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {}
+ {\usebibmacro{cite:dump:extradate}%
+ \usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand*{\parencite}[\mkouterparencitedelims]
+ {\usebibmacro{cite:init}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{citeyear}}
+ {}
+ {\usebibmacro{cite:dump:extradate}%
+ \usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand{\footcite}[\mkextblxfootcite]
+ {\usebibmacro{cite:init}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {}
+ {\usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand{\footcitetext}[\mkextblxfootcitetext]
+ {\usebibmacro{cite:init}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {}
+ {\usebibmacro{cite:postnote}}
+
+% smartcite's delimcontext needs special attention
+% (see ext-biblatex-aux.def)
+\DeclareCiteCommand{\smartcite}[\mksmartcite]
+ {\delimcontext{\extblx@thisdelimcontext}%
+ \usebibmacro{cite:init}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {}
+ {\usebibmacro{cite:dump:extradate}%
+ \usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand{\cbx@textcite}[\mkoutertextcitedelims]
+ {\usebibmacro{cite:init}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{textcite}}
+ {}
+ {\usebibmacro{cite:dump:extradate}%
+ \usebibmacro{textcite:postnote}}
+
+\DeclareMultiCiteCommand{\cbx@textcites}[\mkoutertextcitedelims]
+ {\cbx@textcite}{}
+
+\DeclareMultiCiteCommand{\cites}[\mkoutercitedelims]
+ {\cite}{\setunit{\multicitedelim}}
+\DeclareMultiCiteCommand{\parencites}[\mkouterparencitedelims]
+ {\parencite}{\setunit{\multicitedelim}}
+\DeclareMultiCiteCommand{\footcites}[\mkextblxfootcite]
+ {\footcite}{\setunit{\multicitedelim}}
+\DeclareMultiCiteCommand{\footcitetexts}[\mkextblxfootcitetext]
+ {\footcitetext}{\setunit{\multicitedelim}}
+\DeclareMultiCiteCommand{\smartcites}[\mksmartcite]
+ {\smartcite}{\setunit{\multicitedelim}}
+
+\DeclareCiteCommand{\bbx@xrefcite}[\mkouterbbx@xrefcitedelims]
+ {\boolfalse{citetracker}%
+ \boolfalse{pagetracker}%
+ \boolfalse{backtracker}%
+ \usebibmacro{cite:init}}
+ {\usebibmacro{bbx:inxrefcite}}
+ {}
+ {\usebibmacro{cite:dump:extradate}%
+ \usebibmacro{cite:postnote}}
+
+\renewbibmacro*{bbx:introcite}{%
+ \usebibmacro{cite}%
+ \clearfield{postnote}%
+ \usebibmacro{cite:postnote}}
+
+\endinput
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%