Audrey's great answer to Sorting citations using \cites
command in biblatex
only redefines the \cites
command, but adding support for other \...cites
is surprisingly (or perhaps not surprisingly) easy.
For \parencites
we only need two additional lines
\DeclareMultiCiteCommand{\cbx@parencites}[\mkbibparens]{\parencite}{\multicitedelim}
\DeclareMultiCiteCommand{\parencites}[\cbx@cite@wrapper\cbx@parencites]{\cbx@cite}{}
for \textcites
analogously
\DeclareMultiCiteCommand{\cbx@textcites}{\textcite}{\multicitedelim}
\DeclareMultiCiteCommand{\textcites}[\cbx@cite@wrapper\cbx@textcites]{\cbx@cite}{}
MWE
\documentclass{article}
\usepackage[backend=biber%
,style=authoryear%
,maxcitenames=5%
,uniquename=full%
,sortcites%
]{biblatex}
\makeatletter
\DeclareMultiCiteCommand{\cbx@parencites}[\mkbibparens]{\parencite}{\multicitedelim}
\DeclareMultiCiteCommand{\parencites}[\cbx@cite@wrapper\cbx@parencites]{\cbx@cite}{}
\DeclareMultiCiteCommand{\cbx@textcites}{\textcite}{\multicitedelim}
\DeclareMultiCiteCommand{\textcites}[\cbx@cite@wrapper\cbx@textcites]{\cbx@cite}{}
% original definition of \cites
\DeclareMultiCiteCommand{\cbx@cites}{\cite}{\multicitedelim}
% new definition
\DeclareMultiCiteCommand{\cites}[\cbx@cite@wrapper\cbx@cites]{\cbx@cite}{}
% first pass saves keys, prenotes, postnotes
\DeclareCiteCommand{\cbx@cite}
{\csxdef{prenote:\thefield{entrykey}}{\thefield{prenote}}}
{\listxadd\cbx@savekeys{\thefield{entrykey}}}
{}
{\csxdef{postnote:\thefield{entrykey}}{\thefield{postnote}}}
% second pass outputs sorted citation list
\newrobustcmd{\cbx@cite@wrapper}[2]{%
\def\cbx@savekeys{}%
\def\cbx@citecall{#1}%
#2\cbx@sortkeysinit\cbx@citesort\cbx@citecall}
% internal list of saved keys => sorted argument list
\def\cbx@citesort{%
\def\do##1{%
\ifinlist{##1}{\cbx@savekeys}
{\protected@xappto\cbx@citecall{%
[\csuse{prenote:##1}][\csuse{postnote:##1}]{##1}}}
{}}%
\dolistloop{\cbx@sortkeys}}
% internal list of sorted entry keys
\def\cbx@sortkeysinit{%
\ifcsundef{blx@dlist@entry@\the\c@refsection @\blx@refcontext@context}
{}
{\global\csletcs{cbx@sortkeys}{blx@dlist@entry@\the\c@refsection @\blx@refcontext@context}}}
\def\cbx@sortkeys{}
\makeatother
\addbibresource{biblatex-examples.bib}
\begin{document}
\noindent
\parencite{wilde,sigfridsson}\\
\parencites{wilde,sigfridsson}\\
\parencites[vergl.][51]{wilde}[114]{sigfridsson}\\
\parencites{knuth:ct:c}{knuth:ct:b}{knuth:ct:a}
\noindent
\cite{wilde,sigfridsson}\\
\cite{wilde,sigfridsson}\\
\cites[vergl.][51]{wilde}[114]{sigfridsson}\\
\cites{knuth:ct:c}{knuth:ct:b}{knuth:ct:a}
\noindent
\textcite{wilde,sigfridsson}\\
\textcite{wilde,sigfridsson}\\
\textcites[vergl.][51]{wilde}[114]{sigfridsson}\\
\textcites{knuth:ct:c}{knuth:ct:b}{knuth:ct:a}
\end{document}
