通过破解 BST 文件在参考书目中为不同的作者加下划线

通过破解 BST 文件在参考书目中为不同的作者加下划线

我正在更新我的简历(moderncv),并使用 multibib 列出我所有的交流内容(口头和海报)(我.bib对每个内容使用不同的文件)。

最终的输出应该以粗体显示我的名字,并以下划线显示提交的作者。

到目前为止,我已经想出了如何做第一部分,但还没有找到最后一部分的解决方案。因为呈现的作者并不总是同一个人,所以我想使用“注释字段”来告诉 BibTeX/LaTex 我想在该特定条目中为谁加下划线。

因为我没有足够的技能来做到这一点,我想知道是否有人可以帮助我。

已编辑

我正在使用.bst 文件。

答案1

通过遵循先前的例子我能够使用纯文本.bst文件。

首先,我添加了一个评论.bib 文件中的字段是一种更简单的方式来引用哪个是演讲者/演示作者,并在 plain.bst 文件中声明了这个新字段:

ENTRY{  
...  
...  
chapter  
comment  
...  
}

其次,我创建了一个新函数(speaker.author)来设置名称,其格式与此样式中使用的格式相同format.names

FUNCTION {speaker.author}  
{
  comment empty$  
    { "" }  
    { comment nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ }  
    if$  
}

第三,创建一个新函数 ( highlight) 来突出显示文本,在我们的例子中是名称。在本例中,我选择为文本/名称添加下划线,但您可以设置任何您想要的文本样式。

FUNCTION {highlight}  
{ duplicate$ empty$  
      { pop$ "" }  
      { "\underline{" swap$ * "}" * }  
   if$  
}

第四,如果堆栈上的作者(见下文)与 相同,则highlight.if.speaker.author创建一个新函数( )来运行。highlightspeaker.author

FUNCTION {highlight.if.speaker.author}  
{ duplicate$ purify$ speaker.author purify$ =  
    { highlight }  
    'skip$  
  if$  
}

最后,在 之后立即插入对highlight.if.speaker.author的调用。FUNCTION{format.names}format.names$

FUNCTION{format.names}  
{...  
format.names$ highlight.if.speaker.author  
...  
}

注意:步骤 2-4 应放在 之前FUNCTION{format.names}。此方法的唯一缺陷(源于纯文本.bst样式不缩写名称)的缺点是,您必须确保以正确的方式输入作者姓名作者字段与评论因为“Doe, John”和“Doe, J”会被视为不同的名字,尽管“Doe, J”、“Doe, J.”或“J Doe”会被视为相同的。


已编辑

在某些特殊情况下,您可能希望将自己的姓名与之前的样式一起加粗(如果您是演讲者也是简历的作者)。在这种情况下,请使用以下两个新功能:

FUNCTION {cv.author}
{ "Doe, John" nameptr  "{vv~}{ll}{, jj}{, f{.}.}" format.name$ }

FUNCTION{double.highlight}
{ duplicate$ empty$
      { pop$ "" }
      { "\textbf{\underline{" swap$ * "}}" * }
   if$
}

然后改成FUNCTION{highlight.if.speaker.author}这样:

FUNCTION {highlight.if.speaker.author}
{ duplicate$ purify$ speaker.author purify$ =
        { speaker.author cv.author =
    { double.highlight }
    {highlight}
    if$
    }
    'skip$
  if$
}

相关内容