我应该使用 \begin{thebibliography} 还是 \begin{filecontents*} 进行引用

我应该使用 \begin{thebibliography} 还是 \begin{filecontents*} 进行引用

我是 LaTeX 新手,我需要创建一个参考文献列表。

我浏览了整个论坛,但没有找到做参考的统一标准。

许多人正在使用,例如,当引文按章节分组时如何正确引用

\begin{filecontents*}

@article{A1,
  keywords = {articles},
  title={First Paper},
  author={Green},
  journal={Journal 1}, 
  note={based on \cite{C2}},
  year={2014}
}

其他人正在使用,例如,当我使用 \begin{thebibliography} 命令时,我将其作为章节获取。我该如何摆脱它?

\begin{thebibliography}{10}
\bibitem{notes} John W. Dower {\emph{Readings compiled for History 21.479.}} 1991.
\bibitem{impj}  The Japan Reader {\emph{Imperial Japan 1800-1945}} 1973: Random House, N.Y.
\end{thebibliography}

对于 LaTeX 新手来说,应该使用什么形式的引用?

并且基于什么标准来选择一种引用方法而不是另一种?

答案1

出于实际目的,应该区分的不是thebibliography一边与filecontents另一边,而是thebibliography一边与.bib文件和另一边的 BibTeX。

在参考书目上下文中,filecontents通常仅用于使示例文件自成一体并生成.bib用于 BibTeX 的文件。这就是为什么您会在这里找到很多关于它的提及,但在生产使用中通常不会使用它。(我不怀疑有些人会这样做,可能是因为他们觉得它更方便,也可能是因为他们从网络上的各种网站中养成了习惯。)

手动的thebibliography

thebibliography是手动生成引文参考书目的方法。LaTeX 为您提供的基本上是一种生成带标签条目列表的方法,这些条目可以使用 进行引用\citethebibliography通常,enumerate它的工作方式类似于使用\bibitem[<optional label>]{<entry key>}而不是 的列表\item[<optional label>],并自动设置,您可以使用(而不是)\label来引用。其他一切都留给您。您必须编写和格式化整个条目,您必须对列表进行排序,如果您不想使用编号引用样式,您必须分配标签。\cite\ref

\begin{thebibliography}{2}
\bibitem{notes} John W. Dower \emph{Readings compiled for History 21.479.} 1991.
\bibitem{impj}  The Japan Reader \emph{Imperial Japan 1800-1945} 1973: Random House, N.Y.
\end{thebibliography}

优点

  • 一旦 你 意识到 它 只是 一种 花哨 的 方法 , 你 就 可以 轻松 掌握 它enumerate.
  • 您可以完全控制条目格式和排序的所有细节。
  • 不需要任何外部程序来编译引文。运行 LaTeX 两次(或三次)就足够了。

缺点

  • 由于您必须手动格式化所有条目,因此可能会出现不一致的情况。
  • 更改参考书目样式非常耗时,因为您必须手动重新格式化每个条目。(假设您想要使用名称格式Dower, John W.而不是John W. Dower所有条目。您必须手动反转每个名称。)
  • 添加新条目时,您需要确保排序顺序正确。如果您希望按引用顺序对参考书目进行排序,那么这一点尤其棘手,因为在文本中,您引用的第一部作品编号为 [1],第二部作品编号为 [2],依此类推。每次移动几句引用的句子时,您都有可能不得不检查排序顺序。
  • 如果您的参考书目条目具有上下文相关特征,例如同一年同一作者的作品的消歧义字母(Sigfridsson 2000a 和 Sigfridsson 2000b),则需要手动计算这些特征并在发生任何变化时跟踪它们。

对于少量具有简单参考书目样式的参考书目条目,thebibliography手动书写是一种选择。但是,如果您计划引用更多作品,或者希望能够轻松更改样式,或者希望避免不一致,其他方法通常更好。

.bib文件(BibTeX)

.bibthebibliography文件是一种通过引入另一层抽象和一个名为 BibTeX 的中间人来解决手册的许多缺点的方法。.bib文件以系统和机器可读的形式包含您想要引用的作品的相关书目信息。

@article{sigfridsson,
  author  = {Sigfridsson, Emma and Ryde, Ulf},
  title   = {Comparison of methods for deriving atomic charges from the
             electrostatic potential and moments},
  journal = {Journal of Computational Chemistry},
  year    = 1998,
  volume  = 19,
  number  = 4,
  pages   = {377-395},
  doi     = {10.1002/(SICI)1096-987X(199803)19:4<377::AID-JCC1>3.0.CO;2-P},
}

您无需thebibliography手动书写,只需告诉 LaTeX 您想要的参考书目格式以及 BibTeX(辅助程序,请参阅使用问号或粗体引用关键字代替引用编号thebibliography)将为您生成环境(在.bbl文件中),LaTeX 会自动读取和排版。

假设你的.bib文件包含上述条目,你可以引用它并在你mybibfile.bib的文档中生成参考书目mydoc.tex

\documentclass{article}

\begin{document}
\cite{sigfridsson}
\bibliographystyle{plain}
\bibliography{mybibfile}
\end{document}

通过在该文件上运行(至少)LaTeX、BibTeX、LaTeX、LaTeX(更准确地说,,,,,pdflatex mydoc假设是您喜欢的 LaTeX 风格)。bibtex mydocpdflatex mydocpdflatex mydocpdflatex

优点

  • 所有条目都会根据给定的样式自动格式化。不一致的可能性较小。
  • 更改输出样式就像选择另一个一样简单\bibliographystyle
  • 排序自动进行。
  • 可以为您即时计算额外信息。
  • 只需复制其他文档中的条目即可轻松重复使用它们。BibTeX 的工作方式意味着您可以.bib在文件中包含未引用的条目.bib。这意味着可以为具有不同.bib参考书目的多篇文档创建一个主文件。

缺点

  • 您需要一个外部程序(BibTeX)和额外的编译步骤(LaTeX、BibTeX、LaTeX、LaTeX,而不仅仅是 LaTeX、LaTeX)。
  • 您需要一个外部.bib文件。
  • 如果您想修改格式,您需要学习.bst使用逆波兰表示法来操作 BibTeX 样式(文件)。
  • 您需要学习如何编写.bib文件并使用 BibTeX 生态系统。

.bib文件 ( biblatex)

实际上,还有另一种方法.bib与 BibTeX 方法共享相同的文件基本思想:biblatex。从用户角度来看,上面解释的 BibTeX 方法并biblatex没有太大区别:您有一个.bib文件,文件中有几个命令.tex来告诉 LaTeX 及其助手您想要哪种参考书目样式,您运行一个外部程序(biblatex通常使用 Biber 而不是 BibTeX,但biblatex也可以使用 BibTeX 作为后端)。但在本质上,这两个系统非常不同。biblatex不依赖于thebibliography并完全重新实现所有参考书目和引用功能。它的参考书目样式编程语言不是基于 BibTeX 的逆波兰表示法,可以直接在 LaTeX 中编程样式。

biblatex就本次比较的目的和意图而言,BibTeX 和 BibTeX的优缺点thebibliography大致相同。详细比较可参见bibtex 与 biber 以及 biblatex 与 natbib 的比较

.bib如果您有较大的参考书目,并且您不想担心一致性、格式细节和排序,那么文件是有意义的。我通常建议使用.bib文件而不是手动thebibliography。是否要使用经典的 BibTeX 或则biblatex是另一回事(我偏向于biblatex,但有理由更喜欢 BibTeX 而不是biblatex)。


filecontents

如上所述,filecontents它实际上不能与thebibliographyBibTeX 或biblatex参考书目方法进行比较,它只是一种从文档内部生成外部文件的方法.texmydoc.tex从上面看会像这样

\documentclass{article}

\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@article{sigfridsson,
  author  = {Sigfridsson, Emma and Ryde, Ulf},
  title   = {Comparison of methods for deriving atomic charges from the
             electrostatic potential and moments},
  journal = {Journal of Computational Chemistry},
  year    = 1998,
  volume  = 19,
  number  = 4,
  pages   = {377-395},
  doi     = {10.1002/(SICI)1096-987X(199803)19:4<377::AID-JCC1>3.0.CO;2-P},
}
\end{filecontents}

\begin{document}
\cite{sigfridsson}
\bibliographystyle{plain}
\bibliography{\jobname}
\end{document}

您可以在该文件上运行 LaTeX、BibTeX、LaTeX、LaTeX,然后生成一份带有引文和参考书目的文档。有趣的是,第一次运行 LaTeX 会生成一个文件,.bib然后mydoc.bib将其用作参考书目数据库。


进一步阅读

这个答案旨在对手册thebibliography.bib带有 BibTeX/ 的文件进行简短比较biblatex。 它不想成为 BibTeX 的教程或展示。

市面上有许多关于使用 LaTeX 编写参考书目的教程和初学者指南。有些非常好,有些则不太好。

我认为https://www.dickimaw-books.com/latex/novices/html/biblio.htmlhttps://www.dickimaw-books.com/latex/thesis/html/citations.html是开始使用thebibliographyBibTeX/ 的非常好的地方biblatex

因为biblatexbiblatex 简介(适合初学者)

答案2

只是为了清楚起见:在您给出的代码中存在相关错误(您忘记定义应存储给定代码的文件名:){mybibfile.bib},它应该是:

\begin{filecontents*}{mybibfile.bib}

@article{A1,
  keywords = {articles},
  title={First Paper},
  author={Green},
  journal={Journal 1}, 
  note={based on \cite{C2}},
  year={2014}
}

filecontents这仅仅意味着(也请查看with的文档texdoc filecontents),mwe 中的以下 tex 代码(并且仅在 mwe 中,对于您的工作您不需要使用filecontents)有一行类似

\bibliography{mybibfile} 

对于bibtex

\addbibresource{mybibfile.bib}

biblatex和 biber。

对于您来说,您将有两个文件,一个名为mybibfile.bib(包含您在 tex 文档中需要的 bib 条目mwe.tex):

@article{A1,
  keywords = {articles},
  title={First Paper},
  author={Green},
  journal={Journal 1}, 
  note={based on \cite{C2}},
  year={2014}
}

在您的文件中,mwe.tex您可以使用如上所示的此 bib 文件。然后您可以在文本中的某个地方\cite{A1}引用此 bib 条目。

不要自己写参考书目并添加

\begin{thebibliography}{10}
\bibitem{notes} John W. Dower {\emph{Readings compiled for History 21.479.}} 1991.
\bibitem{impj}  The Japan Reader {\emph{Imperial Japan 1800-1945}} 1973: Random House, N.Y.
\end{thebibliography}

变成mwe.tex。过多会导致难看的错误,您可以使用 bib 文件来省略。

因此以下 MWE

\RequirePackage{filecontents}
\begin{filecontents*}{mybibfile.bib}
@article{A1,
  keywords = {articles},
  title    = {First Paper},
  author   = {Green},
  journal  = {Journal 1}, 
  note     = {based on \cite{C2}},
  year     = {2014},
}
@book{adams,
  title     = {The Restaurant at the End of the Universe},
  author    = {Douglas Adams},
  series    = {The Hitchhiker's Guide to the Galaxy},
  publisher = {Pan Macmillan},
  year      = {1980},
}
\end{filecontents*}


\documentclass[10pt,a4paper]{article}

\begin{document}

This is text with \cite{A1} and \cite{adams}.

\bibliographystyle{unsrt}
\bibliography{mybibfile}

\end{document}

相当于现实中的bib文件的用法mybibfile.bib

@article{A1,
  keywords = {articles},
  title    = {First Paper},
  author   = {Green},
  journal  = {Journal 1}, 
  note     = {based on \cite{C2}},
  year     = {2014},
}
@book{adams,
  title     = {The Restaurant at the End of the Universe},
  author    = {Douglas Adams},
  series    = {The Hitchhiker's Guide to the Galaxy},
  publisher = {Pan Macmillan},
  year      = {1980},
}

mwe.tex以及同一目录中文件中的 tex 代码:

\documentclass[10pt,a4paper]{article}

\begin{document}

This is text with \cite{A1} and \cite{adams}.

\bibliographystyle{unsrt}
\bibliography{mybibfile}

\end{document}

结论:

请阅读有关 LaTeX 和 bibtex 以及使用 bib 文件的介绍!

相关内容