
In meiner Bibliographie muss ich Vornamen unter Beibehaltung von Digraphen und Trigraphen abkürzen.
- John sollte als J abgekürzt werden.
- Clare sollte als Cl abgekürzt werden.
- Charles sollte als Ch abgekürzt werden.
- Christine sollte als Chr. abgekürzt werden.
- Philippe sollte mit Ph. abgekürzt werden.
- usw.
Die Lösung besteht darin, den Vornamen in den bibliographischen Daten zu ändern von
Karl
Zu
{\relax Ch}arles
Im folgenden Beispiel wird das \DeclareSourcemap
Anpassungsmakro in Biblatex zum Ändern Charles
verwendet {\relax Ch}arles
, aber ich suche nach einer allgemeineren Lösung, die alle Vornamen, die mit zwei oder drei Konsonanten beginnen, automatisch ändert.
\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}
Antwort1
Ein möglicher Ausgangspunkt wäre die Verwendung des Codes, den Yves de Saint-Pern im Unterricht geschrieben hatdroit-fr, was ich unten übersetze.
BEARBEITEN :Die hier bereitgestellten regulären Ausdrücke erfassen auch Nachnamen, was außerhalb von Biblatex zu Problemen führen kann, beispielsweise in Indizes, die mit erstellt wurden
imakeidx
. Eine vorläufige Lösung für dieses Problem isthier bereitgestellt.
Sie können es in einer Datei verwenden biber.conf
oder in Ihre einschließen .bbx
.
Einige Sprachen erfordern möglicherweise zusätzliche Regex-Muster für Vornamen, diese sind jedoch relativ einfach hinzuzufügen.
\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
}}}%
Was die regulären Ausdrücke betrifft, bin ich kein Experte, aber ich würde vermuten, dass der Ausdruck Folgendes bedeutet:
\b(Chr|Ch|Th|Ph|[B-DF-HJ-NP-TV-XZ](l|r))(\S*,)
Ein Wort ( \b
), das mit ( beginnt \S*
, bedeutet: endet mit einer beliebigen Anzahl von Zeichen außer Leerzeichen): Chr
(Chris) oder Ch
(Charles) oder Th
(Thomas) oder Ph
(Philippe) oder eine beliebige Kombination, die mit einem Konsonanten beginnt (der [B-DF-HJ-NP-TV-XZ
Teil ist eine Reihe von Bereichen: Buchstaben B bis D, F bis H, J bis N, P bis T, V bis X, Z), gefolgt von l
oder r
(Bruno oder Claire würden in diese Kategorie fallen).