
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 AO
y 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
, AO1
nuevamente 2
y 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, 3
en 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 resetnumbers
clave \printbibliography
, pero no encontré cómo usarla correctamente.
Respuesta1
Ya casi has llegado, solo necesitas algunos resetnumbers
en tus \printbiliography
comandos:
\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
, .bcf
etc.). Entonces hazlo latex->biber->latex->latex
. Es imperativo que lo ejecute latex
dos veces después biber
de usarlo defernumbers
(ver documentos). La mayoría de los IDE le indicarán que haga esto y biblatex
le advertirán que el uso defernumbers
lo requiere.
Nota técnica: A todos los sistemas de filtrado de bibliografía les gustan las opciones type
y 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
\defbibcheck
biber
.bbl
defernumbers
latex