Natbib 的问题:奇怪的 URL 格式和未显示的 urldate

Natbib 的问题:奇怪的 URL 格式和未显示的 urldate

我在使用 natbib 时遇到了一个奇怪的问题。此代码

@misc{CornellUniversity.,
  author = {{Cornell University}},
  title = {Benedict R. O'G. Anderson},
  url = {\url{http://www.cornell.edu/search/index.cfm?tab=people&netid=bra2&q=benedict%20anderson}},
  urldate = {2012-03-18}
}

创建以下输出:

Cornell University. Benedict R. O’G. Anderson. URL http://www.cornell.edu/search/index.cfm?tab=people&netid=bra2&q=benedict%20anderson.

在哪里:

1)文字“URL”位于实际 URL 前面

2)url 未格式化为超链接(包含 url 包)

3)“urldate”属性根本没有显示

我该如何最好地解决这些问题?

答案1

url字段应该只包含网址,周围没有文本格式。因此,在这种情况下,您应该删除命令\url。此外,标准natbib样式不提供urldate字段。您可以将信息放在note字段中:

示例输出

\documentclass{article}

\usepackage{url}
\usepackage[numbers]{natbib}

\begin{document}

Citing \cite{CornellUniversity.}

\bibliographystyle{plainnat}
\bibliography{refs}

\end{document}

包含refs.bib

@misc{CornellUniversity.,
  author = {{Cornell University}},
  title = {{Benedict R. O'G. Anderson}},
  url = {http://www.cornell.edu/search/index.cfm?tab=people&netid=bra2&q=benedict%20anderson},
  note = {Last visited 2012-03-18}
}

正如@Mico 指出的那样,标题字段周围的额外括号可以防止其大小写被改变bibtex

答案2

如果您的代码中有\bibliographystyle{plainnat}“URL”文本,则该文本来自样式。

在该plainnat.bst文件中你可以找到以下代码:

FUNCTION {format.url}
{ url empty$
   { "" }
   { new.block "URL \url{" url * "}" * }
   if$
}

该部分"URL \url{" url * "}" *负责解决您的问题。您可以删除开头的 URL,或以任何您喜欢的方式更改它。

对于 urldate (稍微复杂一些):

例如,在同一个plainnat.bst文件中,在上述代码下添加以下行:

FUNCTION {format.urldate}
{ urldate empty$
   { "" }
   {new.block  "[Accessed on: " urldate * "]" * }
  if$
}

保存它并在同一个文件中搜索“url”。在一个地方你会发现:

ENTRY
{ address
author
........%some more functions
type
url
volume
year
}

添加urldate在 下url。保存。然后搜索format.url output并添加在每一个 下format.urldate output

例如misc

FUNCTION {misc}
{ output.bibitem
  format.authors output
  author format.key output
  title howpublished new.block.checkb
  format.title output
  howpublished new.block.checka
  howpublished output
  format.date output
  format.issn output
  format.url output
  note output
  format.urldate output     %places the "urldate" after the "note"
  new.block
  fin.entry
  empty.misc.check
}

因此,不同函数(例如 misc)中不同输出(例如 format.urldate 输出)的顺序也表示它们在参考文献中的插入顺序。

就这些 :)

相关内容