Preciso classificar minhas entradas do biblatex apenas com base no primeiro autor (estilo autortítulo), mas preciso da lista completa de autores na bibliografia. Eu posso usar algo como
\DeclareSortingScheme{mio}{
\sort{\field{author}}
}
mas como posso extrair apenas o primeiro autor? Dito de outra forma, como posso extrair informações parciais das entradas do bibtex (o primeiro autor como exemplo?)
Alguém pode me ajudar?
Obrigado
Eu uso biblatex biber teklive
A ordem de referência aqui deve ser inversa
Exemplo:
\documentclass[10pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{filecontents}
\usepackage[natbib = true, backend = biber, style = authoryear, sorting = nyt]{biblatex}
\begin{filecontents}{\jobname.bib}
@article{A2014,
author={A,B and C,D},
title={Test},
year = {2014}
}
@article{A2000,
author={A,B and D,E},
title={Test},
year = {2000}
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
\nocite{*}
\printbibliography
\end{document}
ATUALIZAR
Tenho a resposta agora, mas editei a pergunta mesmo assim porque acho que isso pode ser um problema comum para iniciantes como eu e não encontrei um exemplo na rede
Portanto, responda esta pergunta dando também alguns detalhes sobre o uso de sortname
, \DeclareSourcemap
\DeclareSortingScheme
para me ajudar a aprender.
Responder1
Como comentei na sua pergunta vejo duas possibilidades de ordenação das entradas das bibliografias:
A primeira: usar apenas o sobrenome do primeiro autor
Como você está usando biber
, você consegue usar labelalpha
(biblatex.pdf. página 59). Usando labelalpha
você pode usar apenas um autor, com a extensão maxalphanames
. Então, se estiver definido como 1
biber, use apenas o primeiro autor (na verdade, o sobrenome) para fazer o arquivo labelalpha
. Finalmente, é necessário especificar um esquema de classificação que utilize, labelalpha
por exemplo anyt
(Página 254, biblatex.pdf). Em seguida, carregue biblatex
com:
\usepackage[maxalphanames=1,labelalpha,maxbibnames=99, sorting=anyt, style=authoryear, natbib=true, backend=biber]{biblatex}
MWE
\documentclass{article}
\begin{filecontents}{MWE.bib}
@article{A2014,
author={A,B and C,D},
title={Test},
year = {2014}
}
@article{A2000,
author={A,B and D,E},
title={Test},
year = {2000}
}
\end{filecontents}
\usepackage[maxalphanames=1,labelalpha,maxbibnames=99, sorting=anyt, style=authoryear, natbib=true, backend=biber]{biblatex}
\addbibresource{MWE.bib}
\begin{document}
\nocite{*}
\printbibliography
\end{document}
Os maxbibanames=99
autores são impressos na íntegra na bibliografia.
A segunda: Usando o nome completo do primeiro autor
Isso é possível usando DeclareStyleSourcemap
. A maioria dos esquemas de classificação alfabética padrão biblatex
são capazes de usar sortname
o campo. Então é possível utilizar DeclareStyleSourcemap
para copiar o nome completo do primeiro autor no sortname
campo. Para uma explicação sobre Regular Expressions
leia a perl
documentaçãoaqui.
\DeclareStyleSourcemap{
\maps[datatype=bibtex]{
\map{
\step[fieldsource=author, match=\regexp{(.+)\sand}, final]
\step[fieldset=sortname, fieldvalue=$1, final] }
}}
MWE
\documentclass{article}
\begin{filecontents}{MWE.bib}
@article{A2014,
author={A,Bo and M,M},
title={Test},
year = {2014}
}
@article{A2000,
author={A,Co and D,E},
title={Test},
year = {2000}
}
\end{filecontents}
\RequirePackage[maxbibnames=99, sorting=nyt, style=authoryear, backend=biber]{biblatex}
\DeclareStyleSourcemap{
\maps[datatype=bibtex]{
\map{
\step[fieldsource=author, match=\regexp{(.+)\sand}, final]
\step[fieldset=sortname, fieldvalue=$1, final] }
}}
\addbibresource{MWE.bib}
\begin{document}
\nocite{*}
\printbibliography
\end{document}