编辑

编辑

最后的函数在我的.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.webpagebbl.availableatBibTeX函数。

或者,如果您不想更改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

相关内容