书目内的引用(BibTeX)

书目内的引用(BibTeX)

如何使用 BibTeX 在参考文献中引用某篇著作?我想到的是:

史密斯,F.(2019 年)。StackExchange 引用指南. 城市: 出版商。

Jones, G. (2019)。《参考书目中的引文》(Smith 2019)。

我关心的情况是在集合内工作(此处@book为包含的项目 @incollection),但我认为解决方案更为通用(且具有普遍兴趣)。

答案1

负责此任务的一般功能是 BibTeX 的crossref功能。并非所有样式都以您设想的确切方式实现此功能,但许多样式以接近的方式实现此功能。

btxdoc解释crossref如下(第2-3页)

BibTeX 有一个新的交叉引用功能,下面通过示例进行说明。假设您\cite{no-gnats}在文档中说,并且假设您的数据库文件中有以下两个条目:

@INPROCEEDINGS{no-gnats,
  crossref = "gg-proceedings",
  author = "Rocky Gneisser",
  title = "No Gnats Are Taken for Granite",
  pages = "133-139"}
.  .  .
@PROCEEDINGS{gg-proceedings,
  editor = "Gerald Ford and Jimmy Carter",
  title = "The Gnats and Gnus 1988 Proceedings",
  booktitle = "The Gnats and Gnus 1988 Proceedings"}

发生了两件事。

首先,特殊crossref字段告诉 BibTeX,该no-gnats条目应该继承它所交叉引用的条目中缺少的任何字段,gg-proceedings。在这种情况下,它继承了两个字段 editorbooktitle。请注意,至少在标准样式中,字段booktitle与条目类型无关@PROCEEDINGSbooktitle字段仅出现在gg-proceedings条目中,以便交叉引用它的条目可以继承该字段。无论数据库中存在多少篇来自这次会议的论文,此booktitle字段只需出现一次。

发生的第二件事:gg-proceedings 如果条目被两个或多个条目交叉引用 ,即使您没有或 条目本身, BibTeX 也会自动将该条目放入参考列表中。如果除了条目\cite之外还有另一个条目交叉引用它,则它将自动出现在参考列表中。\nocite\cite\nocitegg-proceedingsgg-proceedingsno-gnats

但是,为了保证此方案有效,交叉引用条目在数据库文件中的出现位置必须晚于每个交叉引用它的条目。因此,将所有交叉引用条目放在末尾是有意义的。(此外,您可能无法可靠地嵌套交叉引用;也就是说,交叉引用条目本身可能无法可靠地交叉引用条目。但这几乎肯定不是您想要做的事情。)

最后一点:此交叉引用功能与旧 BibTeX 的交叉引用完全无关,后者仍允许使用。因此,拥有如下字段

    note = "Jones \cite{jones-proof} improves the result"

不受新功能的影响。

然后,许多风格继续简单地发行,\cite{<crossref parent>}就像crossref孩子而不是重复继承的字段。

apalike与您心中的想法非常接近。

\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{csquotes}

\usepackage{apalike}

\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@incollection{westfahl:frontier,
  author       = {Westfahl, Gary},
  title        = {The True Frontier: {Confronting} and Avoiding
                  the Realities of Space in {American}
                  Science Fiction Films},
  pages        = {55-65},
  crossref     = {westfahl:space},
}
@book{westfahl:space,
  editor       = {Westfahl, Gary},
  title        = {Space and Beyond: {The} Frontier Theme in Science Fiction},
  year         = {2000},
  publisher    = {Greenwood},
  address      = {Westport, Conn.},
}
\end{filecontents}


\begin{document}
\cite{westfahl:frontier} \nocite{westfahl:space}
\bibliographystyle{apalike}
\bibliography{\jobname}
\end{document}

Westfahl,G.,编辑(2000a)。太空和超越:科幻小说中的边疆主题。格林伍德,康涅狄格州韦斯特波特。//Westfahl,G.(2000b)。真正的边疆:面对和避免美国科幻电影中的太空现实。在(Westfahl,2000a),第 55-65 页。

请注意crossref父母这里必须明确地使用\nocited(或d),因为只有当它至少被'd 两次\cite时,它才会自动出现在参考书目中,而不会被\cited(或d) 。如果希望父级即使只使用一次也出现,而你又不想理会它们,你可以使用选项调用 BibTeX并将值 1 传递给它\nocitecrossref\nocite-min-crossrefs

bibtex -min-crossrefs=1 <filename>

biblatex也有一个crossref功能,但其继承规则略微复杂一些(还有一个xref没有继承的功能)。标准样式没有\cite父条目,但我的biblatex-ext具有citexref实现此功能的功能。

\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{csquotes}

\usepackage[backend=biber, style=ext-authoryear, citexref]{biblatex}

\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@collection{westfahl:space,
  editor       = {Westfahl, Gary},
  title        = {Space and Beyond},
  subtitle     = {The Frontier Theme in Science Fiction},
  date         = {2000},
  publisher    = {Greenwood},
  address      = {Westport, Conn.},
}
@incollection{westfahl:frontier,
  author       = {Westfahl, Gary},
  title        = {The True Frontier},
  subtitle     = {Confronting and Avoiding
                  the Realities of Space in {American},
                  Science Fiction Films},
  pages        = {55-65},
  crossref     = {westfahl:space},
}
\end{filecontents}
\addbibresource{\jobname.bib}

\begin{document}
\cite{westfahl:frontier} \nocite{westfahl:space}
\printbibliography
\end{document}

Westfahl,Gary,编辑(2000a)。太空及其之外。科幻小说中的边疆主题。康涅狄格州韦斯特波特:Greenwood。//—(2000b)。“真正的边疆。面对和避免美国科幻电影中的太空现实”。在:Westfahl 2000a,第 55-65 页。

与 BibTeX 一样,父级必须\nocite明确指定。biblatex还支持分钟crossref功能,它被称为mincrossrefs并且是前导选项(因此您不必担心命令行选项)。使用

\usepackage[backend=biber, style=ext-authoryear, citexref, mincrossrefs=1]{biblatex}

就没有必要去依赖\nocite父母@collection了。

相关内容