Bibliografias Biblatex separadas com a entrada mais recente e o número de referência mais alto no topo

Bibliografias Biblatex separadas com a entrada mais recente e o número de referência mais alto no topo

Eu gostaria de ter um comportamento biblatex semelhante ao descritoaqui, ou seja, bibliografias separadas para diferentes tipos de publicação, cada bibliografia deve 1) ser prefixada com um rótulo correspondente (C para publicações de conferências, J para periódicos, etc.), 2) classificada de modo que a entrada mais recente fique no topo (definida pelo ano de publicação ) e 3) com números de referência ordenados em ordem decrescente por bibliografia, ou seja, a entrada mais recente deverá ter o número mais 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

Atualmente tenho o seguinte:

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

Bibliografias separadas funcionam bem, labelprefix também funciona conforme desejado, classificando por ano em ordem decrescente também. No entanto, se eu tentar a solução mencionada na pergunta acima, obterei números de referência muito altos (na casa dos 500).

O comportamento acima é possível e, em caso afirmativo, qual é a solução mais elegante usando o biblatex atual, etc.?

Muito obrigado antecipadamente!

Responder1

Esta resposta é baseada emAudreya resposta paraEtiqueta reversa multibib ou ordem de classificação.

Como alguns aspectos internos mudaram ao longo do tempo, alguns ajustes são necessários. Em versões recentes, pode acontecer que certas entradas sejam processadas várias vezes, por isso precisamos garantir que cada entrada seja processada apenas uma vez.

Esta solução precisa da defernumbersopção.

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

Responder2

Muito obrigado, moewe. Seu código é excelente. Modifiquei-o ligeiramente para o caso de 'classificação por palavras-chave'. Por exemplo, tenho vários tipos de entrada em @misc(palavras-chave: cartazes, apresentações, mapas, códigos). Classificar por 'entrytypes' neste caso não funciona. Mas funciona quando alterei 'entrytype' para 'keywords' no seu 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}

informação relacionada