
Mein Name ist Sponge Bob Squarepants
. Ich möchte meinen Namen aus der Liste der bibliographischen Einträge heraussuchen und fett markieren.
Minimales Arbeitsbeispiel:
\documentclass{article}
\usepackage[style=numeric,citecounter=true,citetracker=true]{biblatex}
\usepackage{filecontents}
\begin{filecontents*}{myreferences.bib}
@article{sponge1,
author = {Sponge Bob Squrepants},
year = {2000},
title = {No Title},
}
@article{sponge2,
author = {Sponge Bob Squrepants and
Patrick Star},
year = {2001},
title = {No Title Again},
}
\end{filecontents*}
\addbibresource{myreferences.bib}
\begin{document}
\cite{sponge1}
\cite{sponge2}
\printbibliography
\end{document}
Daher sollten meine Namen in beiden Fällen (siehe Bild) fett gedruckt sein.
Aus Gründen der Kompatibilität mit anderen Stilarten wäre es wünschenswert, wenn das I den Anfangsbuchstaben (z. B. S. B. Squarepants
) erkennen könnte.
Mein Versuch: Ich konnte \citename{sponge2}{author}
die Autorennamen extrahieren. Aber ich konnte nicht herausfinden, wie ich nach der Zeichenfolge suchen kann.
Update gefundendiese Lösungaufgrund von Benutzermöwe.
%https://tex.stackexchange.com/a/334333/38244
\def\makenamesetup{%
\def\bibnamedelima{~}%
\def\bibnamedelimb{ }%
\def\bibnamedelimc{ }%
\def\bibnamedelimd{ }%
\def\bibnamedelimi{ }%
\def\bibinitperiod{.}%
\def\bibinitdelim{~}%
\def\bibinithyphendelim{.-}}
\newcommand*{\makename}[2]{\begingroup\makenamesetup\xdef#1{#2}\endgroup}
\newcommand*{\boldname}[3]{%
\def\lastname{#1}%
\def\firstname{#2}%
\def\firstinit{#3}}
\boldname{}{}{}
% Patch new definitions
\renewcommand{\mkbibnamegiven}[1]{%
\makename{\currname}{#1}%
\makename{\findname}{\firstname}%
\makename{\findinit}{\firstinit}%
\ifboolexpr{ test {\ifdefequal{\currname}{\findname}}%
or test {\ifdefequal{\currname}{\findinit}} }%
{\mkbibbold{#1}}{#1}%
}
\renewcommand{\mkbibnamefamily}[1]{%
\makename{\currname}{#1}%
\makename{\findname}{\lastname}%
\ifboolexpr{ test {\ifdefequal{\currname}{\findname}} }%
{\mkbibbold{#1}}{#1}%
}
\boldname{Squarepants}{Bob}{Sponge}
Jetzt möchte ich im Grunde dasselbe, aber mit Unterstreichung. Ich habe versucht, nach dem Unterstreichungsäquivalent von zu suchen \mkbibbold
, aber bisher ohne Erfolg.
Antwort1
Der Code, den Sie derzeit verwenden, hat den großen Nachteil, dass er alle Personen mit Ihrem Vornamen fett markiert, auch wenn Sie nicht Sie sind.
Wenn Sie den inmeine AntwortZuBestimmten Autor mit Biblatex fett markierenSie können einfach \mkbibbold
durch ersetzen \underline
, um eine Unterstreichung zu erhalten.
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[backend=biber,style=numeric]{biblatex}
\addbibresource{biblatex-examples.bib}
\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*{\mkboldifhashinlist}[1]{%
\xifinlist{\thefield{hash}}{\nhblx@boldhashes}
{\underline{#1}}
{#1}}
\makeatother
\DeclareNameWrapperFormat{boldifhashinlist}{%
\renewcommand*{\mkbibcompletename}{\mkboldifhashinlist}%
#1}
\DeclareNameWrapperAlias{sortname}{default}
\DeclareNameWrapperAlias{default}{boldifhashinlist}
\addboldnames{{Sigfridsson, Emma},{Vizedom, Monika B.}}
\begin{document}
\fullcite{sigfridsson}
\fullcite{knuth:ct:a}
\fullcite{vizedom:related}
\resetboldnames\addboldnames{Donald E. Knuth}
\fullcite{knuth:ct:a}
\resetboldnames\addboldnames{Philipp Jaff{\'e}}
\fullcite{jaffe}
\end{document}
Beachten Sie, dass Unterstreichungen in LaTeX schwierig sind und \underline
nicht über mehrere Zeilen hinweg umgebrochen werden. Die Unterstreichungsmakros soul
von 's und ulem
's (die Zeilenumbrüche teilweise unterstützen) können in diesem Kontext jedoch nicht verwendet werden, da sie bei komplexen Argumenten umbrechen.