Iniciales de dos o tres letras en bibliografía con Biblatex

Iniciales de dos o tres letras en bibliografía con Biblatex

En mi bibliografía, necesito abreviar los nombres manteniendo dígrafos y trígrafos.

  • John debería abreviarse como J.
  • Clare debería abreviarse como Cl.
  • Charles debería abreviarse como Ch.
  • Christine debería abreviarse como Chr.
  • Philippe debería abreviarse como Ph.
  • etc.

La solución es modificar el nombre en los datos bibliográficos de

Charles

a

{\relajarse Ch}arles


El siguiente ejemplo utiliza la \DeclareSourcemapmacro de personalización en Biblatex para cambiar Charles, {\relax Ch}arlespero estoy buscando una solución más genérica que modifique automáticamente todos los nombres que comiencen con dos o tres consonantes.

\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}

Resultado

Respuesta1

Un posible punto de partida sería utilizar el código que Yves de Saint-Pern escribió en clase.derecho-fr, que estoy traduciendo a continuación.

EDITAR :Las expresiones regulares proporcionadas aquí también capturan los apellidos, lo que puede causar problemas fuera de Biblatex, por ejemplo en índices hechos conimakeidx . Una solución tentativa a este problema esproporcionado aquí.

Puedes usarlo en un biber.confarchivo o incluirlo en tu .bbx.

Algunos idiomas pueden requerir patrones de expresiones regulares adicionales para los nombres, pero son bastante sencillos de agregar.

\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
}}}%

En lo que respecta a las expresiones regulares, no soy un experto pero me atrevería a decir que la expresión significa esto:

\b(Chr|Ch|Th|Ph|[B-DF-HJ-NP-TV-XZ](l|r))(\S*,)

Una palabra ( \b) que comienza con ( \S*significa: termina con cualquier número de caracteres que no sean espacios): Chr(Chris) o Ch(Charles) o Th(Thomas) o Ph(Philippe), o cualquier combinación que comience con una consonante (la [B-DF-HJ-NP-TV-XZparte es una conjunto de rangos: letras B a D, F a H, J a N, P a T, V a X, Z) seguido de lo r(Bruno o Claire entrarían en esa categoría).

información relacionada