在参考书目中划出我的名字

在参考书目中划出我的名字

对于我正在准备的几份文件,我需要在参考书目中突出显示(或下划线)我的名字的出现。

有没有简单的方法可以做到这一点?

答案1

这取决于你如何准备参考书目。如果你使用 BibTeX 准备,你可以使用我今天早些时候提到的一个技巧,这需要你更改 .bib 文件;这个定义应该放在 .tex 文件中

\newcommand{\myname}[1]{\textit{Wurm, Y.}}

.bib 文件中的条目将包含

author={{\myname{wurm}} and Zauthor, X.}

然而这也取决于您希望如何在参考书目中显示名称。

如果您不想对 bib 文件采取行动,可以采用不同的方法:

\usepackage{xstring}

\let\originalbibitem\bibitem
\def\bibitem#1#2\par{%
  \noexpandarg
  \originalbibitem{#1}
  \StrSubstitute{#2}{Wurm}{\textit{Wurm}}\par}

\bibitem这利用了 BibTeX用空行分隔每个条目的事实。\bibitem如果您使用 abbrv bibstyle 而不是 plain,则必须进行不同的重新定义。

对于 biblatex 来说,情况更加复杂;我得到了一些

\usepackage{xstring}
\noexpandarg\exploregroups
\makeatletter
\let\orig@blx@bbl@entry\blx@bbl@entry
\def\blx@bbl@entry#1\endentry{%
  \StrSubstitute{#1}{Wurm}{\textit{Wurm}}[\Result]%
  \expandafter\orig@blx@bbl@entry\Result\endentry}
\makeatother

为标准样式;但我不知道是否有副作用。可能按照 Alan Munn 在评论中建议的那样做是最好的。

答案2

如果您使用 biblatex,您可以覆盖作者列表的格式:

\usepackage[normalem]{ulem} %for \uline

\DeclareNameFormat{author}{%
\ifthenelse{\equal{#1}{YourLastName}}%
    {\uline{\ifblank{#4}{}{#4\space}#1}}%
    {\ifblank{#4}{}{#4\space}#1}%
\ifthenelse{\value{listcount}<\value{liststop}}%
    {\addcomma\space}
    {}}

这当然意味着你必须重现你正在使用的后端的格式,但它允许你例如在你的姓名首字母下划线姓氏一起[1]。上面的例子相当基础(例如,它不关心插入“et al.”或“and”,正如某些指南所要求的那样)。

[1] 我可能错了(我无法使附加的示例起作用)但在我看来,egreg 的解决方案在.bbl文件级别起作用,其中首字母、名字和姓氏仍然分开保存。


(编辑)

下面是重新定义的默认名称格式宏(基于文件name:first-last中宏的定义biblatex.def)。抱歉,我的编码风格很差。如果有人能告诉我如何正确地重构这个宏(以避免重复),那就太好了。

\usepackage[normalem]{ulem} %for \uline

\renewbibmacro*{name:first-last}[4]{%
  \usebibmacro{name:delim}{#2#3#1}%
  \usebibmacro{name:hook}{#2#3#1}%
  \ifthenelse{\equal{#1}{YourLastName}}% matches last name against YourLastName
    {
      \uline{% wrapped with \uline
      \ifblank{#2}{}{\mkbibnamefirst{#2}\isdot\bibnamedelimd}%
      \ifblank{#3}{}{%
        \mkbibnameprefix{#3}\isdot%
        \ifpunctmark{'}%
          {}%
          {\ifuseprefix{\bibnamedelimc}{\bibnamedelimd}}}%
      \mkbibnamelast{#1}\isdot%
      \ifblank{#4}{}{\bibnamedelimd\mkbibnameaffix{#4}\isdot}}}%
    {% original
      \ifblank{#2}{}{\mkbibnamefirst{#2}\isdot\bibnamedelimd}%
      \ifblank{#3}{}{%
        \mkbibnameprefix{#3}\isdot%
        \ifpunctmark{'}%
          {}%
          {\ifuseprefix{\bibnamedelimc}{\bibnamedelimd}}}%
      \mkbibnamelast{#1}\isdot%
      \ifblank{#4}{}{\bibnamedelimd\mkbibnameaffix{#4}\isdot}}}

答案3

直到最近,我还在使用@Andrzej 的答案;我认为问题出现在从 到 TeX Live 2016的转变过程中2017。正如@Egon 指出的那样,这可能在较新版本的 biblatex 中不再有效。

看看biblatex 文件我做了\DeclcareNameFormat如下修改。这对于我的目的来说已经足够好了,但我确信可以进一步改进:

\documentclass{article}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
 @article{boldref, 
  AUTHOR = {Adam myLastName and Ben Bravo and Charlie Charlie and David Delta},
  TITLE = {The title},
  JOURNAL = {Journal of Examples},
  PAGES = {65--78},
  YEAR = 2017}
\end{filecontents}
\usepackage[backend=bibtex, bibstyle=numeric-verb, maxnames=99,
           block=space, firstinits=true, terseinits=true]{biblatex}
\addbibresource{\jobname.bib}
\usepackage[normalem]{ulem} %for \uline{}
\DeclareNameFormat{given-family}{
  \ifgiveninits%
  {\ifthenelse{\equal{\namepartfamily}{myLastName}}%
    {\uline{\namepartfamily\addspace\namepartgiveni\namepartsuffix}}%
    {\namepartfamily\addspace\namepartgiveni\namepartsuffix}%
    \ifthenelse{\value{listcount} < \value{liststop}}%
    {\addcomma}%
    {\ifthenelse{\ifmorenames}{~et \,al \adddot}}%
  }{}%
}

\begin{document}
\nocite{*}
\printbibliography
\end{document}

给予:

在此处输入图片描述

这是BibTeX, Version 0.99d (TeX Live 2017)

答案4

一个可以说简单的答案是使用字符串mkbibbold(或,或者,\mkbibemph\mkbibitalic

\documentclass{article}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
    @string{myself={\mkbibbold{MyLastName}, \mkbibbold{MyFirstName}}}
    @article{boldref, 
        author = {Bravo, Ben and Charlie, Charlie and }#myself,
        TITLE = {The title},
        JOURNAL = {Journal of Examples},
        PAGES = {65--78},
        YEAR = 2017}
\end{filecontents}
\usepackage[backend=bibtex]{biblatex}
\addbibresource{\jobname.bib}
\begin{document}
    \nocite{*}
    \printbibliography
\end{document}

在此处输入图片描述

除了可以简洁地实现您想要的功能之外,它还非常易于移植:只需重新定义字符串myself即可恢复正常行为,即使用

@string{myself={MyLastName, MyFirstName}}

您的姓名将会正常打印。

相关内容