
Sortieren von Zitaten mit \cites
dem Befehl in Biblatex mitSortieren von Zitaten mit dem Befehl \cites in Biblatexhat gut funktioniert, funktioniert aber mit TexLive 2016 nicht mehr.
Error produced with the minimal example of the above link:
! Undefined control sequence.
<argument> \cbx@sortkeys
l.49 ...mpanion}{ctan}{markey}[10--11]{vangennep} \\
Es handelt sich nicht nur um eine falsche Fehlermeldung beim ersten Ausführen von Biber. Es gibt auch keine Ausgabe für die beabsichtigten Sortierungen \Cites
und \cites
Befehle.
Weiß jemand, wie man den Code für das neue TexLive 2016 anpasst?
Antwort1
Ich hatte das gleiche Problem und suchte in den alten und neuen biblatex.sty
und verwandten Dateien. Ich fand, wo die Definition von
{\global\letcs{\cbx@sortkeys}
{blx@slists@\the\c@refsection @entry@\blx@sorting}}% Biber
in Audrays Lösung (Sortieren von Zitaten mit dem Befehl \cites in Biblatex) stammt. Dies funktioniert nicht mit dem aktuellen Biblatex, da einige der hier verwendeten Argumente nicht mehr definiert sind. Ich musste diese Zeilen durch die Definition ersetzen, die im aktuellen Biblatex zu finden ist:
{\global\letcs{\cbx@sortkeys}
{blx@slist@centry@\the\c@refsection @\blx@refcontext@context}}% Biber
Es ist immer noch nicht die sauberste Lösung, wenn man die tiefen internen Strukturen von Biblatex nutzt, aber für mich funktioniert es ...
Hier ein MWE. Es handelt sich um einen Patch des MWE in Audreys brillanter Antwort (die Credits liegen also immer noch bei ihm):
\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}