Separate Biblatex-Bibliographien mit dem neuesten Eintrag und der höchsten Referenznummer oben

Separate Biblatex-Bibliographien mit dem neuesten Eintrag und der höchsten Referenznummer oben

Ich hätte gerne ein ähnliches Verhalten in Biblatex wie beschriebenHier, d. h. separate Bibliografien für verschiedene Publikationstypen, sollte jede Bibliografie 1) mit einer entsprechenden Bezeichnung versehen sein (C für Konferenzveröffentlichungen, J für Zeitschriften usw.), 2) so sortiert sein, dass der neuste Eintrag oben steht (definiert durch das Veröffentlichungsjahr) und 3) mit Referenznummern in absteigender Reihenfolge pro Bibliografie sortiert sein, d. h. der neuste Eintrag sollte die höchste Nummer haben.

Journal articles
----------------
[J3]    reference from 2017
[J2]    reference from 2016
[J1]    reference from 2015

Conference publications
-----------------------
[C4]    reference from 2017
[C3]    reference from 2017
[C2]    reference from 2016
[C1]    reference from 2015

Ich habe derzeit folgendes:

\usepackage[backend=biber,
        isbn=true,
        giveninits=true,
        style=numeric,
        maxnames=99,
        sorting=ydnt,
        defernumbers=true,
        autocite=superscript]{biblatex}

\subsection*{Journal articles}
\begin{refcontext}[labelprefix=J]
\printbibliography[type=article]
\end{refcontext}

\subsection*{Conference publications}
\begin{refcontext}[labelprefix=C]
\printbibliography[type=inproceedings]

Separate Bibliographien funktionieren einwandfrei, Labelprefix funktioniert auch wie gewünscht, Sortieren nach Jahr in absteigender Reihenfolge ebenfalls. Wenn ich jedoch die in der obigen Frage erwähnte Lösung versuche, erhalte ich sehr hohe Referenznummern (im 500er-Bereich).

Ist das obige Verhalten überhaupt möglich und wenn ja, was ist die eleganteste Lösung unter Verwendung des aktuellen Biblatex usw.?

Vielen Dank im Voraus!

Antwort1

Diese Antwort basiert aufAudrey's Antwort aufUmgekehrte Beschriftung oder Sortierreihenfolge bei mehreren Bibb-Bibs.

Da sich im Laufe der Zeit einige interne Änderungen ergeben haben, sind einige Anpassungen erforderlich. In neueren Versionen konnte es vorkommen, dass bestimmte Einträge mehrfach verarbeitet wurden. Daher müssen wir sicherstellen, dass jeder Eintrag nur einmal verarbeitet wird.

Diese Lösung benötigt die defernumbersOption.

\documentclass{article}
\usepackage[backend=biber,style=numeric,sorting=ydnt,defernumbers]{biblatex}

% Count total number of entries in each refsection
\AtDataInput{%
  \ifcsundef{bbx@processedentries:\therefsection}
    {\csgdef{bbx@processedentries:\therefsection}{}}
    {}%
  \xifinlistcs{\thefield{entrykey}}{bbx@processedentries:\therefsection}{}{%
    \listcsxadd{bbx@processedentries:\therefsection}{\thefield{entrykey}}%
    \csnumgdef{bbx@entrycount:\therefsection:\thefield{entrytype}}{%
      \csuse{bbx@entrycount:\therefsection:\thefield{entrytype}}+1}}}

% Print the labelnumber as the total number of entries in the
% current refsection, minus the actual labelnumber, plus one
\DeclareFieldFormat{labelnumber}{\mkbibdesc{#1}}    
\newrobustcmd*{\mkbibdesc}[1]{%
  \number\numexpr\csuse{bbx@entrycount:\therefsection:\thefield{entrytype}}+1-#1\relax}

\addbibresource{biblatex-examples.bib}

\begin{document}
\nocite{aksin,bertram,chiu,companion,padhye,angenendt,moraux,sigfridsson}

\newrefcontext[labelprefix=J]
\printbibliography[type=article]

\newrefcontext[labelprefix=C]
\printbibliography[type=inproceedings]
\end{document}

Antwort2

Vielen Dank, moewe. Dein Code ist ausgezeichnet. Ich habe ihn für den Fall der „Sortierung nach Schlüsselwörtern“ leicht modifiziert. Ich habe beispielsweise mehrere Eintragstypen bei @misc(Schlüsselwörter: Poster, Präsentationen, Karten, Codes). In diesem Fall funktioniert die Sortierung nach „Eintragstypen“ nicht. Aber es funktioniert, wenn ich in deinem Code „Eintragstyp“ in „Schlüsselwörter“ ändere:

\AtDataInput{%
  \ifcsundef{bbx@processedentries:\therefsection}
    {\csgdef{bbx@processedentries:\therefsection}{}}
    {}%
  \xifinlistcs{\thefield{entrykey}}{bbx@processedentries:\therefsection}{}{%
    \listcsxadd{bbx@processedentries:\therefsection}{\thefield{entrykey}}%
    \csnumgdef{bbx@entrycount:\therefsection:\thefield{keywords}}{%
      \csuse{bbx@entrycount:\therefsection:\thefield{keywords}}+1}}}

% Print the labelnumber as the total number of entries in the
% current refsection, minus the actual labelnumber, plus one
\DeclareFieldFormat{labelnumber}{\mkbibdesc{#1}}    
\newrobustcmd*{\mkbibdesc}[1]{%
  \number\numexpr\csuse{bbx@entrycount:\therefsection:\thefield{keywords}}+1-#1\relax}

verwandte Informationen