Ich implementiere die erste vorgestellte LösungHierum eine Auswahl von Namen in der Bibliographie von Biblatex fett zu markieren.
Das Problem, das ich habe, betrifft Namen, die ein Leerzeichen " " enthalten. Dann ist die Lösung nicht anwendbar. Beispiel Le Texier
:
@article{schindlerHowFarPeople2022,
title = {How Far Do People Travel to Use Urban Green Space? {{A}} Comparison of Three {{European}} Cities},
author = {Schindler, Mirjam and Le Texier, Marion and Caruso, Geoffrey},
date = {2022-04-01},
journaltitle = {Applied Geography},
volume = {141},
pages = {102673},
doi = {10.1016/j.apgeog.2022.102673},
}
Den Filter habe ich nach dem Beispiel aus dem Lösungsvorschlag aufgebaut:
\forcsvlist{\listadd\boldnames} %this is the model of filter
{{Herrmann, Wolfgang~A.}, {Herrmann, W.~A.}, {Herrmann, Wolfgang\bibnamedelima A.},
{Herrmann, W\bibinitperiod\bibinitdelim A\bibinitperiod}}
\forcsvlist{\listadd\boldnames} %this is my implementation of the filter
{{Le Texier, Marion}, {Le~Texier, Marion}, {Le Texier, M.}, {Texier, M\bibinitperiod}}
Die Filter funktionieren für alle Autorennamen, schlagen jedoch bei diesem bestimmten Namen fehl, der ein Leerzeichen enthält.
Antwort1
Namen mit Leerzeichen können bei der stringbasierten Vorgehensweise knifflig sein. Wenn Sie die .bbl
Datei überprüfen, werden Sie sehen, dass Biber
{{hash=31cbf23407084cad2911631ec94eba70}{%
family={Le\bibnamedelima Texier},
familyi={L\bibinitperiod\bibinitdelim T\bibinitperiod},
given={Marion},
giveni={M\bibinitperiod}}}%
das ist alles, was biblatex
sieht, also müssen Sie verwenden Le\bibnamedelima Texier
stattLe Texier
\forcsvlist{\listadd\boldnames}
{{Le\bibnamedelima Texier, Marion}, {Le\bibnamedelima Texier, M\bibinitperiod}}
Dies funktioniert wie im folgenden MWE gezeigt
\documentclass{article}
\usepackage{biblatex}
\usepackage{xpatch}
\makeatletter
\newbibmacro*{name:bold}[2]{%
\edef\blx@tmp@name{\expandonce#1, \expandonce#2}%
\def\do##1{\ifdefstring{\blx@tmp@name}{##1}{\bfseries\listbreak}{}}%
\dolistloop{\boldnames}}
\newcommand*{\boldnames}{}
\makeatother
\xpretobibmacro{name:family}{\begingroup\usebibmacro{name:bold}{#1}{#2}}{}{}
\xpretobibmacro{name:given-family}{\begingroup\usebibmacro{name:bold}{#1}{#2}}{}{}
\xpretobibmacro{name:family-given}{\begingroup\usebibmacro{name:bold}{#1}{#2}}{}{}
\xpretobibmacro{name:delim}{\begingroup\normalfont}{}{}
\xapptobibmacro{name:family}{\endgroup}{}{}
\xapptobibmacro{name:given-family}{\endgroup}{}{}
\xapptobibmacro{name:family-given}{\endgroup}{}{}
\xapptobibmacro{name:delim}{\endgroup}{}{}
\forcsvlist{\listadd\boldnames}
{{Le\bibnamedelima Texier, Marion}, {Le\bibnamedelima Texier, M\bibinitperiod}}
\begin{filecontents}{\jobname.bib}
@article{schindlerHowFarPeople2022,
title = {How Far Do People Travel to Use Urban Green Space?
A Comparison of Three {European} Cities},
author = {Schindler, Mirjam and Le Texier, Marion
and Caruso, Geoffrey},
date = {2022-04-01},
journaltitle = {Applied Geography},
volume = {141},
pages = {102673},
doi = {10.1016/j.apgeog.2022.102673},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}
% just for demonstration
\ExecuteBibliographyOptions{maxnames=99,giveninits}
\DeclareNameAlias{default}{family-given/given-family}
\begin{document}
\nocite{schindlerHowFarPeople2022}
\printbibliography
\end{document}
Aus diesem Grund empfehle ich dringend einen Hash-basierten Ansatz, wie er inmeine AntwortZuBestimmten Autor mit Biblatex fett markieren.
Dies sähe dann wie folgt aus, wobei Du den Namen genauso übergeben kannst, \addboldnames
wie Du ihn auch in die .bib
Datei schreiben würdest.
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[backend=biber,style=numeric]{biblatex}
\makeatletter
\def\nhblx@bibfile@name{\jobname -nhblx.bib}
\newwrite\nhblx@bibfile
\immediate\openout\nhblx@bibfile=\nhblx@bibfile@name
\immediate\write\nhblx@bibfile{%
@comment{Auto-generated file}\blx@nl}
\newcounter{nhblx@name}
\setcounter{nhblx@name}{0}
\newcommand*{\nhblx@writenametobib}[1]{%
\stepcounter{nhblx@name}%
\edef\nhblx@tmp@nocite{%
\noexpand\AfterPreamble{%
\noexpand\setbox0\noexpand\vbox{%
\noexpand\nhblx@getmethehash{nhblx@name@\the\value{nhblx@name}}}}%
}%
\nhblx@tmp@nocite
\immediate\write\nhblx@bibfile{%
@misc{nhblx@name@\the\value{nhblx@name}, author = {\unexpanded{#1}}, %
options = {dataonly=true},}%
}%
}
\AtEndDocument{%
\closeout\nhblx@bibfile}
\addbibresource{\nhblx@bibfile@name}
\newcommand*{\nhblx@boldhashes}{}
\DeclareNameFormat{nhblx@hashextract}{%
\xifinlist{\thefield{hash}}{\nhblx@boldhashes}
{}
{\listxadd{\nhblx@boldhashes}{\thefield{hash}}}}
\DeclareCiteCommand{\nhblx@getmethehash}
{}
{\printnames[nhblx@hashextract][1-999]{author}}
{}
{}
\newcommand*{\addboldnames}{\forcsvlist\nhblx@writenametobib}
\newcommand*{\resetboldnames}{\def\nhblx@boldhashes{}}
\newcommand*{\ifhashinboldlist}{%
\xifinlist{\thefield{hash}}{\nhblx@boldhashes}}
\makeatother
\newcommand*{\mkboldifhashinlist}[1]{%
\ifhashinboldlist
{\mkbibbold{#1}}
{#1}}
\DeclareNameWrapperFormat{boldifhashinlist}{%
\renewcommand*{\mkbibcompletename}{\mkboldifhashinlist}%
#1}
\DeclareNameWrapperAlias{sortname}{default}
\DeclareNameWrapperAlias{default}{boldifhashinlist}
\addboldnames{{Le Texier, Marion}}
\begin{filecontents}{\jobname.bib}
@article{schindlerHowFarPeople2022,
title = {How Far Do People Travel to Use Urban Green Space?
A Comparison of Three {European} Cities},
author = {Schindler, Mirjam and Le Texier, Marion
and Caruso, Geoffrey},
date = {2022-04-01},
journaltitle = {Applied Geography},
volume = {141},
pages = {102673},
doi = {10.1016/j.apgeog.2022.102673},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}
\begin{document}
\nocite{schindlerHowFarPeople2022}
\printbibliography
\end{document}