Fetten Sie einen Namen, der ein Leerzeichen enthält, in der Bibliographie biblatex

Fetten Sie einen Namen, der ein Leerzeichen enthält, in der Bibliographie biblatex

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 .bblDatei ü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 biblatexsieht, also müssen Sie verwenden Le\bibnamedelima TexierstattLe 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}

Schindler, M., M. Le Texier und G. Caruso. „Wie weit reisen Menschen, um städtische Grünflächen zu nutzen? Ein Vergleich dreier europäischer Städte“. In: Applied Geography 141 (1. April 2022), S. 102673. doi: 10.1016/j.apgeog.2022.102673.


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, \addboldnameswie Du ihn auch in die .bibDatei 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}

Mirjam Schindler, Marion Le Texier und Geoffrey Caruso. „Wie weit reisen Menschen, um städtische Grünflächen zu nutzen? Ein Vergleich dreier europäischer Städte“. In: Applied Geography 141 (1. April 2022), S. 102673. doi: 10.1016/j.apgeog.2022.102673.

verwandte Informationen