使用问号或粗体引用关键字代替引用编号

使用问号或粗体引用关键字代替引用编号

我浏览了论坛,发现了许多解决此问题的帖子,但似乎没有一个解决方案对我有用。我有以下脚本,我刚从 bibtex 主页复制了它以熟悉它。我得到的不是引用编号,而是问号。我按照之前的建议使用 Latex+Bibtex+Latex+Latex+PDFLatex+ViewPDF 进行编译,问题仍然存在。

\documentclass[11pt]{article}
\usepackage{cite}

\begin{document}

\title{My Article}
\author{Nobody Jr.}
\date{Today}
\maketitle

Blablabla said Nobody ~\cite{Nobody06}.

\bibliography{mybib}
\bibliographystyle{plain}
\end{document}

我的书目(Bib.bbl)

@misc{ Nobody06,
author = "Nobody Jr",
title = "My Article",
year = "2006" } 

查看以前的帖子,有一件事令人担忧,那就是我的 .bbl 看起来是空的,如下所示。此外,我没有 .blg

\begin{thebibliography}{}

\end{thebibliography}

答案1

由于这个问题经常出现,我想我应该尝试补充ArTourter 的正确答案并提出更一般性的评论。

问号是什么意思

这意味着在某个地方,LaTeX 和 BibTeX 的组合无法找到并格式化引用所需的引用数据:LaTeX 可以看到您想要引用某些内容,但不知道如何引用。

缺失引用在以下情况下显示不同:biblatex

如果您正在使用,biblatex则不会看到问号,而是会以粗体显示您的引文关键字。例如,如果您的.bib文件中有一个带有关键字的项目Jones1999,您将看到琼斯1999在您的 PDF 中。

这一切是如何运作的

要弄清楚发生了什么,您需要了解这个过程(应该)如何工作。想象一下 LaTeX 和 BibTeX 是两个独立的人。LaTeX 是排字员。BibTeX 是档案管理员。大致来说,这个过程应该按如下方式运行:

  1. LaTeX(排字员)通读手稿并向 BibTeX(档案管理员)提供三条信息:从命令中提取的需要引用的参考文献列表\cite;从命令中提取的可以找到这些参考文献的文件的注释\bibliography;从命令中提取的所需格式类型的注释\bibliographystyle

  2. 然后,BibTeX 开始运行,在它被告知要读取的文件中查找数据,查阅告诉它如何格式化数据的文件,并以已组织的形式生成一个包含该数据的新文件,以便 LaTeX 可以使用它(文件.bbl)。

  3. 然后,LaTeX 必须获取该数据并排版文档 - 并且可能确实需要多次“运行”才能正确执行此操作(因为数据内部可能存在内部关系,或者与稿件的其余部分之间可能存在内部关系,而 BibTeX 既不知道也不关心这些关系,但这些关系对于排版很重要。

您的问号告诉您这个过程出了问题。

更多biblatexbiber注释

  • 如果您正在使用biblatex,则样式信息位于传递给包的选项中biblatex,而原始数据位于\addbibresource命令中。

  • 如果您正在使用biber,则本答案中描述为BibTeX的阶段通常会被不同的、更狡猾的档案管理员Biber所取代。

该怎么办

首先要确保你已经至少经历过一次整个过程:这就是为什么,为了处理任何新的引用,你总是需要至少一次 LaTeX 运行(准备需要交给 BibTeX 的信息)、一次 BibTeX 运行和一次或多次后续的 LaTeX 运行。所以首先,确保你已经完成了这些。请注意,和latex/bibtex需要biber在主文件上运行(没有文件结尾)。换句话说,你的主文件的基本名称:你不是对该.bib文件运行任何命令。

latex MainFile
bibtex MainFile
latex MainFile
latex MainFile

如果问题仍然存在,那么一定是某个地方出了问题。而且几乎总是信息流出了问题。

您首先要查看的是 BibTeX 日志.blg文件 ( )。它通常会为您提供诊断问题所需的信息。因此,请打开该文件(该文件的名称为blah.blg“blah”,其中“blah”是源文件的名称)。

大致按照以下逻辑顺序:

  1. BibTeX 没有找到样式文件。该文件告诉它如何格式化引用。在本例中,您将得到一个错误,BibTeX 会报错I couldn't open the style file badstyle.bst。如果您尝试使用标准样式,那几乎肯定是因为您在命令中没有正确拼写样式\bibliographystyle- 因此请检查一下。如果您尝试使用非标准样式,可能是因为您将它放在了 TeX 找不到的地方。(出于测试目的,我发现,最好记住,如果它与源文件位于同一目录中,则始终会找到它;但如果您使用 TeX 系统的功能进行安装 - 就像一个没有经验的人应该做的那样 - 您不太可能遇到该问题。)

  2. BibTeX 没有找到数据库文件。这是.bib包含数据的文件。在这种情况下,日志文件将显示I couldn't open database file badfile.bib,然后会警告您它没有找到数据库文件。解决方法是相同的:返回并检查文件名是否拼写正确,以及它是否在 TeX 可以找到的地方(如果有疑问,请将其放在包含源文件的文件夹中)。

  3. BibTeX 找到了该文件,但是不包含引用数据对于您尝试引用的内容。现在您将在日志文件中得到:Warning--I didn't find a database entry for "yourcitation"。这就是发生在您身上的事情。您可能会认为您应该遇到第 2 类错误:但实际上并没有,因为碰巧有一个名为的文件mybib.bib挂在系统中(如下kpsewhich mybib.bib所示)——因此 BibTeX 找到了它应该查找的位置,但找不到它需要的数据。但本质上诊断的顺序是相同的:检查命令中的文件名是否正确\bibliography。如果一切正常,则该文件或引用命令有问题。这里最可能出现的错误是您忘记在文件中包含数据,或者您.bib使用了多个.bib文件而将 BibTeX 发送到了错误的文件,或者您拼错了引用标签(例如,您\cite{nobdoy06}对所做的是\cite{nobody06})。

  4. 文件中条目的格式有问题.bib。这并不罕见:例如,很容易忘记逗号。在这种情况下,您应该会遇到 BibTeX 错误,尤其是类似这样的错误I was expecting a ',' or a '}',您会被告知它是skipping whatever remains of this entry。这是否真的会阻止生成任何引用可能取决于错误;我认为 BibTeX 通常能够生成一些东西——但biblatex可能会完全被难倒。无论如何,请检查并更正特定条目。

biblatexbiber注释

如果您使用的是biblatex,那么通常您也会使用 Biber 程序而不是 BibTeX 程序来处理您的参考书目,但适用相同的一般原则。因此,编译顺序变为

latex MainFile
biber MainFile
latex MainFile
latex MainFile

概括

诊断顺序如下:

  1. 我已经运行过 LaTex、BibTeX(或 Biber)、LaTeX、LaTeX 了吗?

  2. 查看该.blg文件,它将对回答以下问题有很大帮助。

  3. BibTeX/Biber 是否找到了我的样式文件?(检查您是否有一个有效的\bibliographystyle命令以及是否存在.bst可找到的同名命令。)

  4. BibTeX/Biber 找到我的数据库了吗?(检查\bibliography名称是否正确,是否能够找到。)

  5. 它是否找到了正确的数据库?

  6. 数据库是否包含与我实际输入的引文相匹配的条目?

  7. 该条目有效吗?

  8. 最后:当您更改了某些内容时,请不要忘记您需要再次通过相同的 LaTeX -- BibTeX(或 Biber)-- LaTeX -- LaTeX 运行才能使其正确。(这实际上并不完全正确:但直到您对该过程有了更多的了解,这是一个安全的假设。)

答案2

该命令的语法\bibliography{}\bibliography{file1,file2,...}

就您而言,您似乎正在调用一个名为的文件,mybib而您的 bib 文件实际上是Bib

还要注意,bibtex 文件应该具有.bib扩展名。该.bbl文件将由 bibtex 创建。

因此,您应该重命名参考书目文件mybib.bib 并删除调用{}中的多余内容\bibliography{mybib}{},然后重新编译。这应该可以解决您的问题。

答案3

只是一点补充意见。我遇到同样的问题很多天了,一直在努力寻找解决方案。最后,我意识到在 .cls 文件中我有以下库

\RequirePackage{chapterbib}

我将其删除后问题就解决了。

相关内容