Interação entre `refcontext` e `subbibliografia`

Interação entre `refcontext` e `subbibliografia`

Estou tentando adaptar as soluçõesaquieaqui. Meu objetivo é o seguinte: quero uma bibliografia dividida em duas seções. A primeira deve ser dividida em múltiplas subseções, por tipo de citação, e as citações nesta primeira seção devem ter um prefixo extra AOe ser coloridas. As citações na segunda seção não têm prefixo, nenhuma divisão específica e nenhuma coloração.

Quase consigo chegar a algo satisfatório, com o seguinte código:

\documentclass{article}

\usepackage{filecontents}
\begin{filecontents}{file1.bib}
@article{article1,
  author = {Onymous, Anne},
  title  = {First Bibliography: An Journal Article},
  date   = {2000},
}
@inproceedings{inproc1,
  author   = {Onymous, Anne},
  title    = {First Bibliography: A Conference Article},
  date     = {1899},
}
\end{filecontents}
\begin{filecontents}{file2.bib}
@article{article2,
  author = {Writer, William},
  title  = {Second Bibliography: A First Reference},
  date   = {2010},
}
@article{article2bis,
  author = {Poetaster, Paula},
  title  = {Second Bibliography: A Second Reference},
  date   = {1767},
}
\end{filecontents}

\usepackage[
  backend=biber,
  hyperref=true,
  backref=true,
  giveninits=true,
  citestyle=numeric-comp,
  bibstyle=numeric,
  sortcites=false,
  maxbibnames=99,
  maxcitenames=2,
  sorting=none,
  defernumbers=true,
]{biblatex}

\addbibresource{file1.bib}
\addbibresource{file2.bib}

\usepackage[dvipsnames]{xcolor}

% https://tex.stackexchange.com/questions/470852/different-colors-for-each-bib-file-and-custom-prefix

\DeclareSourcemap{
  \maps[datatype=bibtex,overwrite]{
    \map{
      \perdatasource{file1.bib}
      \step[fieldset=keywords, fieldvalue={,mypapers}, append]
    }
  }
  \maps[datatype=bibtex,overwrite]{
    \map{
      \perdatasource{file2.bib}
      \step[fieldset=keywords, fieldvalue={,otherpapers}, append]
    }
  }
}

% https://tex.stackexchange.com/questions/368247/how-to-colorise-specific-entries-in-the-bibliography-and-corresponding-reference
\renewbibmacro{in:}{}

\DeclareFieldFormat{labelprefix}{%
  \ifkeyword{mypapers}
    {\textcolor{red}{#1}}
    {#1}}

\DeclareFieldFormat{labelnumber}{%
  \ifkeyword{mypapers}
    {\textcolor{red}{#1}}
    {#1}}

\begin{document}

  \title{Citation Test}
  \author{Ann Onymous}

\maketitle
\cite{inproc1} \cite{article1} \cite{article2} \cite{article2bis}



\section*{Publications}

\newrefcontext[labelprefix=AO]
\printbibliography[type=inproceedings,keyword=mypapers,heading=subbibliography,title={Publications in Conference Post-Proceedings}]
\printbibliography[type=article,keyword=mypapers,heading=subbibliography,title={Journal Articles}]

\newrefcontext
\printbibliography[keyword=otherpapers]

\end{document}

No entanto, a rotulagem está errada, as citações são rotuladas respectivamente como AO1, AO1novamente 2e 3. Idealmente, eu gostaria que todas as citações na primeira seção compartilhassem um contador único, ou seja, fossem rotuladas como AO1, AO2, etc. e as citações na segunda seção começassem novamente a partir de 1, ou seja, fossem rotuladas como 1, 2e assim por diante. Eu ficaria satisfeito com eles começando onde os primeiros terminam, ou seja, 3neste exemplo. Mas ter duas citações diferentes com o mesmo rótulo simplesmente não é possível…

Se eu remover o newrefcontext, obtenho a coloração esperada e uma numeração exclusiva, mas perco o prefixo, o que é lamentável.

Encontrei a resetnumberschave para \printbibliography, mas não descobri como usá-la corretamente.

Responder1

Você está quase lá, só precisa de alguns resetnumbersem seus \printbiliographycomandos:

\newrefcontext[labelprefix=AO]
\printbibliography[type=inproceedings,keyword=mypapers,heading=subbibliography,title={Publications in Conference Post-Proceedings}]
\printbibliography[resetnumbers=false,type=article,keyword=mypapers,heading=subbibliography,title={Journal Articles}]

\newrefcontext
\printbibliography[resetnumbers=true,keyword=otherpapers]

Esteja ciente de que, ao usar o defernumbers, você deve ter cuidado com quantas execuções de cada ferramenta você possui. Comece do zero, sem nenhum arquivo auxiliar (a maioria dos editores tem uma função "limpa" para excluir todos os arquivos .aux, .bcfetc.). Então faça latex->biber->latex->latex. É imperativo que você execute latexduas vezes após bibero uso defernumbers(consulte a documentação). A maioria dos IDEs dirá para você fazer isso e biblatexavisará que o uso defernumbersexige isso.

insira a descrição da imagem aqui

Nota técnica: Todos os sistemas de filtragem de bibliografia gostam typee keywordopções para \printbibliographyalém de filtragem mais avançada \defbibfiltere \defbibcheckoperam após bibera conclusão e assim os .bbldatalists ainda contêm todas as entradas na ordem de classificação, sem filtragem. Então, quando você filtra as coisas, você basicamente deixa "buracos" na ordem/numeração e então você tem que defernumbersrefazer a numeração após a aplicação da filtragem, daí a latexexecução extra necessária.

informação relacionada