我正在更新我的简历(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
创建一个新函数( )来运行。highlight
speaker.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$
}