
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 AO
e 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
, AO1
novamente 2
e 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
, 2
e assim por diante. Eu ficaria satisfeito com eles começando onde os primeiros terminam, ou seja, 3
neste 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 resetnumbers
chave para \printbibliography
, mas não descobri como usá-la corretamente.
Responder1
Você está quase lá, só precisa de alguns resetnumbers
em seus \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]
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
, .bcf
etc.). Então faça latex->biber->latex->latex
. É imperativo que você execute latex
duas vezes após biber
o uso defernumbers
(consulte a documentação). A maioria dos IDEs dirá para você fazer isso e biblatex
avisará que o uso defernumbers
exige isso.
Nota técnica: Todos os sistemas de filtragem de bibliografia gostam type
e keyword
opções para \printbibliography
além de filtragem mais avançada \defbibfilter
e \defbibcheck
operam após biber
a conclusão e assim os .bbl
datalists 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 defernumbers
refazer a numeração após a aplicação da filtragem, daí a latex
execução extra necessária.