编译LaTex bib源文件

65

我正在使用LaTeX写毕业论文,参考文献在一个名为thesis.bib的文件中,其内容如下:

@Article{xxx,
  author =       "D.A. Reinhard",
  title =        "Case Study",
  year =         "1985",
}

我在主文档中引用它们为~\cite{xxx}

当我使用pdflatex main.tex编译主文档时,参考文献显示成问号而不是正确的引用。我是否还需要单独编译bib源文件?如果是,请问Linux命令是什么?

非常感谢!

4个回答

87

您需要编译bibtex文件。

假设您有article.texarticle.bib。您需要运行:

  • latex article.tex(这会生成一个带有未知引用的问号的文档)
  • bibtex article(这将解析文章中包含的所有.bib文件并生成关于引用的元信息)
  • latex article.tex(这将在正确的位置生成所有参考文献的文档)
  • latex article.tex(如果添加引用破坏了页面编号,则可以执行此操作)

4
另外,考虑使用 latex mk(http://www.phys.psu.edu/~collins/software/latexmk-jcc/),这是一个 Perl 程序,会自动按正确的顺序运行所需的命令(如 latex、bibtex、makeindex 等),以生成更新后的最终文档,无论何时您更改了内容。 - rcollyer
1
我强烈赞同使用latexmk的建议。没有它,我无法生存 :) - Damien Pollet
1
我编辑了这个答案,因为bibtex命令不允许扩展名。(即使允许,扩展名也应该是“.aux”,而不是“.tex”) - SO Stinks
2
考虑使用pdflatex而不是latex直接生成.pdf文件。 - koppor
1
这个答案并没有回答问题,因为它特别询问了如何使用pdflatex命令。 - ehsteve
将“latex”替换为“pdflatex”就像魔法般奏效。 - Aart Goossens

22

你需要运行 'bibtex':

latex paper.tex
bibtex paper
latex paper.tex
latex paper.tex
dvipdf paper.dvi

14

我正在使用Texmaker作为编辑器。 您需要在终端中编译它,如下所示:

  1. pdflatex文件名(带或不带扩展名)
  2. bibtex文件名(不带扩展名)
  3. pdflatex文件名(带或不带扩展名)
  4. pdflatex文件名(带或不带扩展名)

但有时,当您使用\citep{}时,参考文献的名称不会显示出来。在这种情况下,我必须打开references.bib文件,以便Texmaker可以从references.bib文件中捕获引用。每次编辑bib文件后,我都必须关闭并重新打开它!这样Texmaker才能每次捕获新的.bbl文件的内容。但是请记住,您还需要在Texmaker中运行代码。


你可以选择在不关闭和打开references.bib的情况下,直接进入编辑-->刷新参考文献。这样也可以实现相同的效果! - user3015729

7

如果有人需要帮助,我想提供一些帮助。这些问题(和答案)对我帮助很大。我决定创建一个别名,可以依次运行以下4个命令:

只需将以下行添加到您的~/.bashrc文件中(根据您的.tex.bib文件的名称修改main关键字即可)。

alias texbib = 'pdflatex main.tex && bibtex main && pdflatex main.tex && pdflatex main.tex'

现在,只需执行texbib命令(别名),所有这些命令将被顺序执行。


为什么我们必须运行 pdflatex main.tex 两次? - Exploring

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接