
Na minha bibliografia, preciso abreviar os primeiros nomes mantendo dígrafos e trígrafos.
- John deveria ser abreviado como J.
- Clare deveria ser abreviada como Cl.
- Charles deveria ser abreviado como Ch.
- Christine deveria ser abreviada como Chr.
- Philippe deveria ser abreviado como Ph.
- etc.
A solução é modificar o primeiro nome nos dados bibliográficos de
Carlos
para
{\relaxe Charles}
O exemplo a seguir usa a \DeclareSourcemap
macro de personalização no Biblatex para mudar Charles
, {\relax Ch}arles
mas estou procurando uma solução mais genérica que modifique automaticamente todos os primeiros nomes começando com duas ou três consoantes.
\documentclass{article}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@book{Book1,
author = {Doe, Charles},
title = {An Important Book},
publisher = {Publisher},
date = {2012},
}
@book{Book2,
author = {Doe, Charlotte},
title = {Another Important Book},
publisher = {Publisher},
date = {2014},
}
@book{Book3,
author = {Smith, Theodore},
title = {A very Important Book},
publisher = {Publisher},
date = {2016},
}
\end{filecontents}
\usepackage[style=verbose,firstinits=true, backend=biber]{biblatex}
\DeclareSourcemap{
\maps[datatype=bibtex]{
\map{
\step[fieldsource=author,
match={Charles},
replace=\regexp{\{\\relax \x20Ch\}arles}]
}
}
}
\addbibresource{\jobname.bib}
\begin{document}
\cite{Book1}
\cite{Book2}
\cite{Book3}
\end{document}
Responder1
Um possível ponto de partida seria usar o código que Yves de Saint-Pern escreveu na auladireito-fr, que estou traduzindo abaixo.
EDITAR:As expressões regulares fornecidas aqui também capturam sobrenomes, o que pode causar problemas fora do Biblatex, por exemplo, em índices feitos com
imakeidx
. Uma tentativa de solução para este problema éfornecido aqui.
Você pode usá-lo em um biber.conf
arquivo ou incluí-lo em seu arquivo .bbx
.
Algumas linguagens podem exigir padrões regex adicionais para nomes, mas são bastante simples de adicionar.
\DeclareStyleSourcemap{%
\maps[datatype=bibtex]{%
\map{%
% Author field
\step[fieldsource=author,%
match={\regexp{\b(Chr|Ch|Th|Ph|[B-DF-HJ-NP-TV-XZ](l|r))(\S*,)}},%
replace={\regexp{\{$1\}$3}}]% Protect last names (first last)
\step[fieldsource=author,%
match={\regexp{([^,]\s)\b(Chr|Ch|Th|Ph|[B-DF-HJ-NP-TV-XZ](l|r))}},%
replace={\regexp{$1\{$2\}}}]% Protect last names (last, first)
\step[fieldsource=author,%
match={\regexp{\b(Chr|Ch|Th|Ph|[B-DF-HJ-NP-TV-XZ](l|r))([^\}])}},%
replace={\regexp{\{\\relax\{\}$1\}$3}}]% Insert \relax after abbreviating
% Editor field
\step[fieldsource=editor,%
match={\regexp{\b(Chr|Ch|Th|Ph|[B-DF-HJ-NP-TV-XZ](l|r))(\S*,)}},%
replace={\regexp{\{$1\}$3}}]% Protect last names (first last)
\step[fieldsource=editor,%
match={\regexp{([^,]\s)\b(Chr|Ch|Th|Ph|[B-DF-HJ-NP-TV-XZ](l|r))}},%
replace={\regexp{$1\{$2\}}}]% Protect last names (last, first)
\step[fieldsource=editor,%
match={\regexp{\b(Chr|Ch|Th|Ph|[B-DF-HJ-NP-TV-XZ](l|r))([^\}])}},%
replace={\regexp{\{\\relax\{\}$1\}$3}}]% Insert \relax after abbreviating
}}}%
No que diz respeito às expressões regulares, não sou especialista, mas arriscaria que a expressão significasse isto:
\b(Chr|Ch|Th|Ph|[B-DF-HJ-NP-TV-XZ](l|r))(\S*,)
Uma palavra ( \b
) que começa com ( \S*
significa: termina com qualquer número de caracteres que não sejam espaços): Chr
(Chris) ou Ch
(Charles) ou Th
(Thomas) ou Ph
(Philippe), ou qualquer combinação que comece com uma consoante (a [B-DF-HJ-NP-TV-XZ
parte é um conjunto de intervalos: letras B a D, F a H, J a N, P a T, V a X, Z) seguidas por l
ou r
(Bruno ou Claire se enquadrariam nessa categoria).