Interacción entre `refcontext` y `subbibliografía`

Interacción entre `refcontext` y `subbibliografía`

Estoy intentando adaptar las soluciones.aquíyaquí. Mi objetivo es el siguiente: quiero una bibliografía dividida en dos secciones. La primera debe estar dividida en varias subsecciones, por tipo de cita, y las citas en esta primera sección deben tener un prefijo adicional AOy estar coloreadas. Las citas de la segunda sección no tienen prefijo, ni división particular ni coloración.

Casi puedo llegar a algo satisfactorio, con el siguiente 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}

Sin embargo, el etiquetado es incorrecto, las citas están etiquetadas respectivamente como AO1, AO1nuevamente 2y 3. Idealmente, me gustaría que todas las citas de la primera sección compartieran un contador único, es decir, que estuvieran etiquetadas como AO1, AO2, etc. y que las citas de la segunda sección comenzaran de nuevo desde 1, es decir, que estuvieran etiquetadas como 1, 2, etc. Me contentaría con que comenzaran donde terminan los primeros, es decir, 3en este ejemplo. Pero tener dos citas diferentes con la misma etiqueta simplemente no es posible...

Si elimino el newrefcontext, obtengo la coloración esperada y una numeración única, pero pierdo el prefijo, lo cual es desafortunado.

Encontré la resetnumbersclave \printbibliography, pero no encontré cómo usarla correctamente.

Respuesta1

Ya casi has llegado, solo necesitas algunos resetnumbersen tus \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]

Tenga en cuenta que al utilizar defernumbers, debe tener cuidado con la cantidad de ejecuciones de cada herramienta que tiene. Comience con un borrón y cuenta nueva sin ningún archivo auxiliar (la mayoría de los editores tienen una función "limpiar" para eliminar todos los archivos .aux, .bcfetc.). Entonces hazlo latex->biber->latex->latex. Es imperativo que lo ejecute latexdos veces después biberde usarlo defernumbers(ver documentos). La mayoría de los IDE le indicarán que haga esto y biblatexle advertirán que el uso defernumberslo requiere.

ingrese la descripción de la imagen aquí

Nota técnica: A todos los sistemas de filtrado de bibliografía les gustan las opciones typey el filtrado más avanzado y funcionan una vez finalizado, por lo que las listas de datos aún contienen todas las entradas en el orden de clasificación, sin filtrado. Entonces, cuando filtra cosas, básicamente deja "agujeros" en el orden/numeración y, por lo tanto, debe usar para rehacer la numeración después de que se haya aplicado el filtrado, de ahí la ejecución adicional requerida.keyword\printbibliography\defbibfilter\defbibcheckbiber.bbldefernumberslatex

información relacionada