내 이름을 찾아 굵은 글씨로 표시하세요.

내 이름을 찾아 굵은 글씨로 표시하세요.

내 이름은 Sponge Bob Squarepants. 서지 항목 목록에서 내 이름을 찾아 굵은 글씨로 표시하고 싶습니다.

최소 작업 예:

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

따라서 두 경우 모두(이미지 참조) 내 이름은 굵게 표시되어야 합니다.

다른 유형의 스타일과의 호환성을 위해 이니셜(예: )을 감지할 수 있으면 감사하겠습니다 S. B. Squarepants.

\citename{sponge2}{author}내 시도: 저자 이름을 추출하는 방법을 찾을 수 있었습니다 . 하지만 문자열을 검색하는 방법을 찾을 수 없었습니다.

업데이트: 발견됨이 솔루션사용자로 인해모에웨.

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

이제 기본적으로 동일한 것을 원하지만 밑줄이 있습니다. 에 해당하는 밑줄을 찾으려고 했지만 \mkbibbold아직 운이 없습니다.

답변1

현재 사용하고 있는 코드는 귀하가 아니더라도 귀하의 이름을 가진 모든 사람을 굵게 표시한다는 큰 단점이 있습니다.

에서 제안한 코드를 사용하면내 대답에게biblatex를 사용하여 특정 저자를 굵게 표시밑줄을 긋기 위해 \mkbibbold로 바꾸면 됩니다 .\underline

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

참고문헌 항목의 이름에 밑줄이 그어져 있습니다.

LaTeX에서는 밑줄을 긋는 것이 까다로우며 \underline여러 줄로 나누어지지 않습니다. 그러나 줄 바꿈을 일부 지원하는 soululem밑줄 매크로는 복잡한 인수로 나누기 때문에 이 컨텍스트에서는 사용할 수 없습니다.

관련 정보