Bibliografías Biblatex separadas con la entrada más reciente y el número de referencia más alto en la parte superior

Bibliografías Biblatex separadas con la entrada más reciente y el número de referencia más alto en la parte superior

Me gustaría tener un comportamiento biblatex similar al descrito.aquí, es decir, bibliografías separadas para diferentes tipos de publicaciones, cada bibliografía debe 1) tener como prefijo una etiqueta correspondiente (C para publicaciones de conferencias, J para revistas, etc.), 2) ordenarse de modo que la entrada más reciente esté en la parte superior (definida por el año de publicación). ) y 3) con números de referencia ordenados en orden descendente por bibliografía, es decir, la entrada más reciente debe tener el número más alto.

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

Actualmente tengo lo siguiente:

\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]

Las bibliografías separadas funcionan bien, labelprefix también funciona según se desee, ordenando también por año en orden descendente. Sin embargo, si pruebo la solución mencionada en la pregunta anterior, obtengo números de referencia muy altos (en el orden de 500).

¿Es posible el comportamiento anterior y, en caso afirmativo, cuál es la solución más elegante utilizando biblatex actual, etc.?

¡Muchas gracias por adelantado!

Respuesta1

Esta respuesta se basa enaudreyla respuesta deEtiqueta inversa multibib u orden de clasificación.

Debido a que algunas partes internas han cambiado con el tiempo, son necesarios algunos ajustes. En versiones recientes, podría suceder que ciertas entradas se procesaran varias veces, por lo que debemos asegurarnos de que cada entrada se procese solo una vez.

Esta solución necesita la defernumbersopción.

\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}

Respuesta2

Muchas gracias moewe. Tu código es excelente. Lo modifiqué ligeramente para el caso de "ordenar por palabras clave". Por ejemplo, tengo varios tipos de entradas en @misc(palabras clave: carteles, presentaciones, mapas, códigos). En este caso, la clasificación por 'tipos de entrada' no funciona. Pero funciona cuando cambié 'tipo de entrada' a 'palabras clave' en su código:

\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}

información relacionada