Classificar citações usando o comando \cites no biblatex produz erro

Classificar citações usando o comando \cites no biblatex produz erro

Classificando citações usando \citeso comando no biblatex comClassificando citações usando o comando \cites no biblatexfuncionou bem, mas não funciona mais com o TexLive 2016.

Error produced with the minimal example of the above link:
! Undefined control sequence.
<argument> \cbx@sortkeys 

l.49 ...mpanion}{ctan}{markey}[10--11]{vangennep} \\

Não é apenas uma mensagem de erro errada ao executar o Biber pela primeira vez. Não há saída para a classificação \Citese \citesos comandos pretendidos.

Alguém sabe como ajustar o código do novo TexLive 2016?

Responder1

Eu tive o mesmo problema e procurei nos biblatex.styarquivos antigos, novos e relacionados. Eu encontrei onde a definição de

{\global\letcs{\cbx@sortkeys}
     {blx@slists@\the\c@refsection @entry@\blx@sorting}}% Biber

na solução de Audray (Classificando citações usando o comando \cites no biblatex) veio de. Isto não funciona com o biblatex atual, porque alguns dos argumentos usados ​​aqui não estão mais definidos. Tive que substituir essas linhas pela definição encontrada no próprio biblatex:

{\global\letcs{\cbx@sortkeys}
    {blx@slist@centry@\the\c@refsection @\blx@refcontext@context}}% Biber

Ainda não é a solução mais limpa usando o interior profundo do biblatex, mas funciona para mim ...

Aqui um MWE. É um patch do MWE na brilhante resposta de Audrey (então os créditos ainda pertencem a ele):

\documentclass{article}
\usepackage[style=authortitle,sorting=ynt,sortcites]{biblatex}

\makeatletter
% 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 [patched to the original answer, new biblatex!]
\def\cbx@sortkeysinit{%
  \ifcsundef{blx@slist@centry@\the\c@refsection @\blx@refcontext@context}
    {}
    {\global\letcs{\cbx@sortkeys}{blx@slist@centry@\the\c@refsection @\blx@refcontext@context}}}
\def\cbx@sortkeys{}
\makeatother

\addbibresource{biblatex-examples.bib}
\newcommand{\cmd}[1]{\textbackslash\texttt{#1}}
\setlength{\parindent}{0pt}
\begin{document}
\cmd{cite}: \cite{companion,ctan,vangennep,markey} \\
\cmd{cites}: \cites[e.g.][10]{companion}{ctan}{markey}[10--11]{vangennep} \\
\cmd{Cites}: \Cites{ctan}{markey}[e.g.][5--10]{companion}[10--11]{vangennep}
\printbibliography
\end{document}

informação relacionada