Ich möchte mithilfe von BibLaTeX einen \textcite
Befehl auf Grundlage des Numeric-Comp-Stils erstellen, der statt [1-3, 5] die Referenzen 1-3 und 5 anzeigt und statt [1-3, 5-7] die Referenzen 1-3 und 5-7 ausgibt.
Ersteres konnte ich mit dem folgenden MWE erreichen, Letzteres jedoch nicht:
\documentclass{article}
\usepackage{filecontents}
\usepackage[style=numeric-comp]{biblatex}
% Cite without square brackets - with Ref./Refs.
\NewBibliographyString{refname}
\NewBibliographyString{refsname}
\DefineBibliographyStrings{english}{%
refname = {Ref\adddot},
refsname = {Refs\adddot}
}
\DeclareCiteCommand{\textcite}
{%
\ifnum\thecitetotal=1
\bibstring{refname}%
\else%
\bibstring{refsname}%
\fi%
\addnbspace%
\usebibmacro{cite:init}%
\usebibmacro{prenote}%
\renewcommand*{\multicitedelim}{\iflastcitekey{\addspace\bibstring{and}\addspace}{\addcomma\addspace}}%
}
{\usebibmacro{citeindex}\usebibmacro{cite:comp}}
{}
{\usebibmacro{cite:dump}\usebibmacro{postnote}}
\begin{filecontents*}{\jobname.bib}
@book{A,
title = {A Bla},
author = {A Foo}
}
@book{B,
title = {B Bla},
author = {B Foo}
}
@book{C,
title = {C Bla},
author = {C Foo}
}
@book{D,
title = {D Bla},
author = {D Foo}
}
@book{E,
title = {E Bla},
author = {E Foo}
}
@book{F,
title = {F Bla},
author = {F Foo}
}
@book{G,
title = {G Bla},
author = {G Foo}
}
\end{filecontents*}
\addbibresource{\jobname.bib}
\begin{document}
\nocite{*}
Cite commands should stay like this (i.e. no and): \cite{A,B,C,E,F,G}
These textcites work: \textcite{A,C,E,G} ; \textcite{A,B,C,E}
This textcite misses the final and: \textcite{A,C,E,F,G}
This textcite has two ands: \textcite{A,C,D,F}
\printbibliography
\end{document}
Ausgabe des MWE:
Ich denke, das Problem besteht darin, dass beim Komprimieren von Zitaten der letzte Citekey innerhalb eines komprimierten Intervalls liegt und daher überhaupt kein Zitatlisten-Trennzeichen gedruckt wird. Gibt es einen Test, mit dem ich überprüfen könnte, welches das letzte tatsächlich gedruckte Trennzeichen ist, auch wenn es nicht vor dem letzten Citekey steht? Beachten Sie auch, dass es im letzten Beispiel irgendwie zwei „unds“ gibt. Ich denke, das Problem besteht wieder darin, dass dies \iflastcitekey
nicht wirklich wie erwartet funktioniert.