尽管有单独的交叉引用项,但 URL 字段仍被继承

尽管有单独的交叉引用项,但 URL 字段仍被继承

以下代码生成包含三次 URL 的引用列表。我使用交叉引用来节省空间。有没有办法删除引用主条目的条目中的 URL?

\documentclass{article}

\usepackage{natbib}

\usepackage{url}

\begin{document}

\citet{Flickinger2008a,VanEynde2008a}

\bibliographystyle{plainnat} 
\bibliography{test}
\end{document}

测试.bib:

@inproceedings{Flickinger2008a,
        Author = {Daniel P. Flickinger},
        Crossref = {Mueller2008a-ed},
        Title = {Transparent Heads}}


@inproceedings{VanEynde2008a,
        Author = {Frank {Van Eynde}},
        Crossref = {Mueller2008a-ed},
        Pages = {253--273},
        Title = {Predicate Complements}}


@proceedings{Mueller2008a-ed,
        Booktitle = {Proceedings of the 15th International Conference on Head-Driven Phrase Structure Grammar},
        Editor = {Stefan M{\"u}ller},
        Title = {Proceedings of the 15th International Conference on Head-Driven Phrase Structure Grammar},
        Url = {http://cslipublications.stanford.edu/HPSG/9/},
        Year = {2008}}

答案1

这似乎是样式上的设计决定。如果我修改为具有以下功能plainnat,则不会获得条目的 URL :@inproceedingsplainnat.bstinproceedings

FUNCTION {inproceedings}
{ output.bibitem
  format.authors "author" output.check
  author format.key output
  new.block
  format.title "title" output.check
  new.block
  crossref missing$
    { format.in.ed.booktitle "booktitle" output.check
      format.bvolume output
      format.number.series output
      format.pages output
      address empty$
        { organization publisher new.sentence.checkb
          organization output
          publisher output
          format.date "year" output.check
        }
        { address output.nonnull
          format.date "year" output.check
          new.sentence
          organization output
          publisher output
        }  
      if$
      format.isbn output
      format.doi output
      format.url output
    }
    { format.incoll.inproc.crossref output.nonnull
      format.pages output
    }
  if$
%  format.isbn output
%  format.doi output
%  format.url output
  new.block
  note output
  fin.entry
}

注释掉的行负责添加isbndoiurl字段,并已移至测试的“false”分支crossref missing$,以便@inproceedings没有crossref字段的条目将获得 URL。

plainnat.bst和往常一样,你应该用新名字复制一份,比如说。应该对和函数myplainnat.bst进行类似的修改。inbookincollection

答案2

我觉得url这三个条目的字段不应该全部相同。特别是,条目Flickinger2008aVanEynde2008a应该被赋予各自独立的url字段。即,条目Flickinger2008a可能被赋予字段

url = {http://cslipublications.stanford.edu/HPSG/9/Flickinger.pdf},

并且条目VanEynde2008a可能会被赋予字段

url = {http://cslipublications.stanford.edu/HPSG/9/vaneynde.pdf},

提供单独字段的主要原因url是类型条目的 URL@inproceedings是 pdf 文件,而 -type 条目的 URL@proceedings是网页。通过提供单独的 URL,您可以让读者轻松(或更轻松)地获取他们想要的出版物,而不是让他们先访问网站,然后滚动一段时间,直到他们设法找到他们感兴趣的论文。

附录,由 OP 的后续评论提示:如果你这样做不是想要让“子”条目(类型)从“父”条目(类型) @inproceedings“继承”字段的值,您可以简单地为相应字段设置一个空白值,即,您可以设置url@proceedingsurl

url = {},

对于两个“子”条目。

相关内容