summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/biblatex-ms/latex/blx-mcite-ms.def
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/biblatex-ms/latex/blx-mcite-ms.def')
-rw-r--r--macros/latex/contrib/biblatex-ms/latex/blx-mcite-ms.def78
1 files changed, 78 insertions, 0 deletions
diff --git a/macros/latex/contrib/biblatex-ms/latex/blx-mcite-ms.def b/macros/latex/contrib/biblatex-ms/latex/blx-mcite-ms.def
new file mode 100644
index 0000000000..2b59d1296c
--- /dev/null
+++ b/macros/latex/contrib/biblatex-ms/latex/blx-mcite-ms.def
@@ -0,0 +1,78 @@
+\ProvidesFile{blx-mcite-ms.def}
+[\abx@cptid]
+
+\newrobustcmd*{\mcite}{\mcitelike\cite}
+\newrobustcmd*{\Mcite}{\mcitelike\Cite}
+\newrobustcmd*{\mparencite}{\mcitelike\parencite}
+\newrobustcmd*{\Mparencite}{\mcitelike\Parencite}
+\newrobustcmd*{\mfootcite}{\mcitelike\footcite}
+\newrobustcmd*{\mfootcitetext}{\mcitelike\footcitetext}
+\newrobustcmd*{\mtextcite}{\mcitelike\textcite}
+\newrobustcmd*{\Mtextcite}{\mcitelike\Textcite}
+\newrobustcmd*{\msupercite}{\mcitelike\supercite}
+
+\newrobustcmd*{\mautocite}{\mcitelike\autocite}
+\newrobustcmd*{\Mautocite}{\mcitelike\Autocite}
+
+% \mcite{key1,setA,*keyA1,*keyA2,*keyA3,key2,setB,*keyB1,*keyB2,*keyB3}
+% => \mcitelike\cite{key1,setA,*keyA1,*keyA2,*keyA3,key2,setB,*keyB1,*keyB2,*keyB3}
+% => \defbibentryset{setA}{keyA1,keyA2,keyA3}
+% \defbibentryset{setB}{keyB1,keyB2,keyB3}
+% \cite{key1,setA,key2,setB}
+
+\newrobustcmd*{\mcitelike}[1]{%
+ \@ifstar
+ {\blx@citeargs{\blx@mclike{#1*}}}
+ {\blx@citeargs{\blx@mclike{#1}}}}
+
+\long\def\blx@mclike#1#2#3#4{%
+ \begingroup
+ \let\blx@mclike@tempa\@empty
+ \let\blx@mclike@tempb\@empty
+ \let\blx@mclike@tempc\@empty
+ \blx@xsanitizeafter\blx@mclike@i{#4}%
+ \edef\blx@mclike@tempa{\endgroup\unexpanded{#1[{#2}][{#3}]}{\blx@mclike@tempa}}%
+ \blx@mclike@tempa}
+
+\def\blx@mclike@i#1{%
+ \forcsvlist\blx@mclike@ii{#1}%
+ \blx@mclike@iv}
+
+\def\blx@mclike@ii#1{\blx@mclike@iii#1&}
+
+\def\blx@mclike@iii#1#2&{%
+ \if*#1%
+ \blx@mclike@tail{#2}%
+ \else
+ \blx@mclike@head{#1#2}%
+ \fi}
+
+\def\blx@mclike@iv{%
+ \ifx\blx@mclike@tempb\@empty
+ \else
+ \ifx\blx@mclike@tempc\@empty
+ \else
+ \defbibentryset{\blx@mclike@tempb}{\blx@mclike@tempc}%
+ \let\blx@mclike@tempc\@empty
+ \fi
+ \nocite{\blx@mclike@tempb}% preserve citation order for sorting=none
+ \let\blx@mclike@tempb\@empty
+ \fi}
+
+\def\blx@mclike@head#1{%
+ \blx@mclike@iv
+ \edef\blx@mclike@tempa{%
+ \ifx\blx@mclike@tempa\@empty
+ \else
+ \blx@mclike@tempa,%
+ \fi#1}%
+ \def\blx@mclike@tempb{#1}}
+
+\def\blx@mclike@tail#1{%
+ \edef\blx@mclike@tempc{%
+ \ifx\blx@mclike@tempc\@empty
+ \else
+ \blx@mclike@tempc,%
+ \fi#1}}
+
+\endinput