Um cara escreveu alguns livros, mas é inconsistente de livro para livro quando se trata de incluir e/ou abreviar seu nome do meio. Quando cito este autor no texto, gostaria biblatex
de tratar todas as diferentes versões de seu nome como o mesmo autor. Posso impor isso para a classificação na bibliografia sortname
, mas o que faço para impor isso nas citações de texto?
O exemplo a seguir ilustra como a citação do texto trata "Paul J[ohn] Smith" como um autor diferente de "Paul John Smith" e "Paul Smith". A primeira citação deve aparecer como (Smith 2002), e a segunda citação deve aparecer como (2001a, 2001b, 2002).
\documentclass{article}
\usepackage{csquotes}
\usepackage[
bibstyle = authoryear,
citestyle = authoryear-comp,
dashed = false,
sorting = nyt,
sortcites = false,
language = american,
abbreviate = false,
backend = biber]{biblatex}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@BOOK{smith2001a,
AUTHOR = "Paul John Smith",
TITLE = "My first book",
YEAR = "2001"}
@BOOK{smith2001b,
AUTHOR = "Paul Smith",
TITLE = "My second book",
YEAR = "2001",
SORTNAME = "Paul John Smith"}
@BOOK{smith2002,
AUTHOR = "Paul J[ohn] Smith",
TITLE = "My third book",
YEAR = "2002",
SORTNAME = "Paul John Smith"}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
\noindent
Some clever guy said that \parencite{smith2002}.
In fact, Paul Smith has talked about this several times \parencite*{smith2001a,smith2001b,smith2002}.
\printbibliography
\end{document}
Responder1
Agora existe uma interface macro biblatex para o recurso de mapeamento de origem, você pode colocar isso em seu preâmbulo:
\DeclareSourcemap{
\maps[datatype=bibtex]{
\map[overwrite]{
\step[fieldsource=author, match=\regexp{Paul\s+(?:J\S+\s+)?Smith}, final]
\step[fieldset=shortauthor, fieldvalue={Smith, Paul John}]
\step[fieldset=sortname, fieldvalue={Smith, Paul John}]
}
}
}
Você pode querer ajustar a expressão regular, eu a tornei bem específica para não pegar nada que não deveria.
Responder2
Isso é apenas para mostrar como a solução do PLK acima funciona na prática:
\documentclass{article}
\usepackage{csquotes}
\usepackage[
bibstyle = authoryear,
citestyle = authoryear-comp,
dashed = false,
sorting = nyt,
sortcites = false,
language = american,
abbreviate = false,
backend = biber]{biblatex}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@BOOK{smith2001a,
AUTHOR = "Paul John Smith",
TITLE = "My first book",
YEAR = "2001"}
@BOOK{smith2001b,
AUTHOR = "Paul Smith",
TITLE = "My second book",
YEAR = "2001",
SORTNAME = "Paul John Smith"}
@BOOK{smith2002,
AUTHOR = "Paul J[ohn] Smith",
TITLE = "My third book",
YEAR = "2002",
SORTNAME = "Paul John Smith"}
\end{filecontents}
\addbibresource{\jobname.bib}
\DeclareSourcemap{
\maps[datatype=bibtex]{
\map[overwrite]{
\step[fieldsource=author, match=\regexp{Paul\s+(?:J\S+\s+)?Smith}, final]
\step[fieldset=shortauthor, fieldvalue={Smith, Paul John}]
\step[fieldset=sortname, fieldvalue={Smith, Paul John}]
}
}
}
\begin{document}
\noindent
Some clever guy said that \parencite{smith2002}.
In fact, Paul Smith has talked about this several times \parencite*{smith2001a,smith2001b,smith2002}.
\printbibliography
\end{document}