我正尝试使用 .bib 来更新我的简历,而不是写下所有内容。这样就没问题了。但是,我还想在参考书目中的每个条目中突出显示我的名字。我正在使用 plainrevyr.bst,并且已经尝试过这和那
基本上,根据这两篇文章,我将这些函数添加到了我的 .bst
FUNCTION {cv.author}
{ "Doe, John" }
FUNCTION {highlight}
{ duplicate$ empty$
{ pop$ "" }
{ "\textbf{\textsc{" swap$ * "}}" * }
if$
}
FUNCTION {highlight.cv.author}
{ duplicate$ purify$ cv.author purify$ =
{ highlight }
'skip$
if$
}
我还根据需要在 format.names 函数中的 format.name$ 之后添加了 highlight.cv.author。从我发现的其他示例中我了解到,我的主要问题来自函数 cv.author。
因此,如果我使用:
FUNCTION {cv.author}
{ "Doe, John" }
什么都没有发生(我也尝试过“John Doe”,因为这是书目中出现的名字)
如果我尝试:
FUNCTION {cv.author}
{ "Doe, John" nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ }
我收到一条错误消息,指出 John Doe 是字符串文字,而不是整数。我同意此错误,因为 nameptr 被定义为整数。
这是 format.names:
INTEGERS { nameptr namesleft numnames }
FUNCTION {format.names}
{ 's :=
#1 'nameptr :=
s num.names$ 'numnames :=
numnames 'namesleft :=
{ namesleft #0 > }
{ s nameptr "{ff~}{vv~}{ll}{, jj}"
format.name$
highlight.cv.author 't :=
nameptr #1 >
{ namesleft #1 >
{ ", " * t * }
{ numnames #2 >
{ "," * }
'skip$
if$
t "others" =
{ " et~al." * }
{ " and " * t * }
if$
}
if$
}
't
if$
nameptr #1 + 'nameptr :=
namesleft #1 - 'namesleft :=
}
while$
}
如何使其工作?
谢谢 !
编辑
这是我的书目的命名方式:
\documentclass{cv2}
\usepackage[francais]{babel}
\usepackage[T1]{fontenc} %% Pour la césure des mots accentués
\usepackage[utf8]{inputenc} %% les accents dans le fichier.tex
\usepackage{fullpage}
\usepackage[backref]{hyperref}
\begin{document}
\bibliographystyle{plainrevyr}
\nocite{*}
\bibliography{MyPapers}
\end{document}
和 2 个 Bibentries:
@article{Doe2014,
title = {{First title}},
year = {2014},
journal = {Phys. Chem. Chem. Phys.},
author = {Name1, Forename1 and Doe, John and Name2, Forename2 and Name3, Forename3},
number = {40},
pages = {22903--22912},
volume = {16},
url = {http://dx.doi.org/10.1038/C4CP03276D http://xlink.rsc.org/?DOI=C4CP03276D},
doi = {10.1038/C4CP03276D},
issn = {1462-9076}
}
@article{Doe2012,
title = {{MyTitle2}},
year = {2012},
journal = {Journal of Physical Chemistry C},
author = {Doe, John and Name4, Forename4 and Name2, Forename2 and Name5, Forename5 and Name1, Forename1},
number = {25},
pages = {13716--13724},
volume = {110},
isbn = {1932-7447},
doi = {10.1021/jp304525f},
issn = {19327457}
}
答案1
必须以正确的格式指定名称。当我使用
FUNCTION {cv.author}
{ "John Doe" }
它实际上工作正常,但使用起来更可靠:用以下方法format.name$
替换该函数cv.author
FUNCTION {cv.author}
{ "Doe, John" #1 "{ff~}{vv~}{ll}{, jj}" format.name$ }
与您的尝试的区别在于 而#1
不是。此参数定义如果第一个参数中出现nameptr
多个名称(用 分隔),则使用哪个名称。仅包含一个名称,因此其他每个参数都会导致错误。您的特定错误是由于被调用时根本没有分配任何值而导致的。and
"Doe, John"
#1
cv.author
nameptr