最后的函数在我的.bst
文件中定义。它们的作用是,当我添加字段时
webpage={http://xxx.xxx.xxx...../}
对于 bibitem,它会在参考书目中的参考文献末尾显示文本:
... URL: http://xxx.xxx.xxx...../
(其中前三个点表示参考文献的其余部分:作者、标题、期刊等。)我想要的是显示实际的 URL,它变成了文本的链接网址。这样引用将只显示文本网址最后(和不是我可以单击并转到该链接(网址本身)。
这可能吗?
功能
ENTRY
{ address
...
webpage
year
...
}
FUNCTION {format.webpage}
{
webpage "webpage" bibinfo.check
duplicate$ empty$ 'skip$
{ new.block
bbl.availableat " \url{" * swap$ * "}" *
}
if$
}
FUNCTION {bbl.availableat}
{ "URL: " }
FUNCTION {new.block}
{ output.state before.all =
'skip$
{ after.block 'output.state := }
if$
}
FUNCTION {bibinfo.check}
{ swap$
duplicate$ missing$
{
pop$ pop$
""
}
{ duplicate$ empty$
{
swap$ pop$
}
{ swap$
pop$
}
if$
}
if$
}
编辑
我尝试了 Mico 的建议并按webpage
如下方式更改了功能:
FUNCTION {format.webpage}
{
webpage "webpage" bibinfo.check
duplicate$ empty$ 'skip$
{ new.block
" \href{" * swap$ * "}{URL}" *
}
if$
}
我的bibfile仅包含一个项目:
@ARTICLE{Dummy2012,
author = {{Vink}, J.~S. and {Gr{\"a}fener}, G.},
title = {{The Transition Mass-loss Rate: Calibrating the Role of Line-driven Winds in Massive Star Evolution}},
journal = {APJL},
year = {2012},
volume = {751},
pages = {L34},
month = jun,
eid = {L34},
adsnote = {Provided by the SAO/NASA Astrophysics Data System},
archiveprefix = {arXiv},
doi = {10.1088/2041-8205/751/2/L34},
eprint = {1205.0394},
keywords = {stars: early-type, stars: evolution, stars: mass-loss, stars: winds,outflows },
primaryclass = {astro-ph.SR},
webpage = {http://adsabs.harvard.edu/abs/2012ApJ...751L..34V}
}
编译时出现错误:
You can't pop an empty literal stack for entry Dummy2012
文件.bbl
如下所示:
\begin{thebibliography}{1}
\expandafter\ifx\csname natexlab\endcsname\relax\def\natexlab#1{#1}\fi
\bibitem[{{Vink} y {Gr{\"a}fener}(2012)}]{Dummy2012}
{\sc {Vink}, J.~S.} y {\sc {Gr{\"a}fener}, G.}
\newblock {The Transition Mass-loss Rate: Calibrating the Role of Line-driven
Winds in Massive Star Evolution}.
\newblock {\em APJL\/}, vol. 751, p\'agina L34,
\newblock http://adsabs.harvard.edu/abs/2012ApJ...751L..34V \href{2012}{URL}.
\end{thebibliography}
答案1
我假设您也加载了该hyperref
包。然后,无需指定
webpage={http://xxx.xxx.xxx...../}
你可以说
webpage={\href{http://xxx.xxx.xxx...../}{URL}}
并相应简化format.webpage
和bbl.availableat
BibTeX函数。
或者,如果您不想更改webpage
字段的内容,您可以重写其中一个或两个 BibTeX 函数,将webpage
字段提供的 URL 插入函数的第一个参数中\href
,并指定URL
为第二个参数\href
。查看您的代码,我猜 (i) 您bbl.availableat
根本不需要调用该函数,并且 (ii) 您可能想要替换字符串
" \url{" * swap$ * "}"
在format.webpage
函数中
" \href{" * swap$ * "}{URL}"
.bst
请注意,由于您没有提供足够多有关自定义文件的详细信息,因此我还无法完全尝试这一点。
附录跟进OP的附加信息:请尝试以下形式的BibTeX函数format.webpage
:
FUNCTION {format.webpage}
{ webpage empty$
{ "" }
{ new.block " \href{" webpage * "}{URL}" * }
if$
}
其中字段的内容webpage
应为 URL,例如http://adsabs.harvard.edu/abs/2012ApJ...751L..34V
。最后——你可能已经这样做了,但是为了完整性,我还是提一下——确保在你的format.article
函数中包含如下一行
format.webpage output