我第一次用 LaTeX 写作。参考书目一开始有点不靠谱,但后来就成功了——我得到了文本中的引用编号,以及文档末尾列出的参考文献。然而,在某个时候,LaTeX 停止识别引用,我不知道是什么原因造成的。
编译后的文档中有一个问号而不是引用编号:
日志文件警告我找不到引用。
LaTeX 警告:第 1 页上的引用“Alexander2009”在输入行 22 上未定义。 LaTeX 警告:第 1 页上的引用“Sutcliffe2011”在输入行 22 上未定义。
但是,我已经定义了引用,它们看起来与我能找到的所有正确引用的示例完全一样。
前言:
\documentclass{llncs} \usepackage{数组} \usepackage{colortbl} \usepackage{旋转}
包含引用的段落如下所示:
需求工程(RE)方法通常基于信息 利益相关者的业务目标、业务流程和组织 结构~\cite{Alexander2009}。只有少数方法采取“软问题” 例如所考虑用户的价值观、情感和动机。 然而,可再生能源领域出现了一种趋势,鼓励科学家和 从业者要注意这些问题,例如 由 RE'11 会议上有关 RE 中的情绪的教程提供~\cite{Sutcliffe2011}。
文档结尾为
\section{参考文献} \label{sec:参考文献} \bibliographystyle{llncs} \bibliography{RefsQ12_sources-only}
我尝试了 RefsQ12_sources-only.bib 中所有可能的引用格式。第一个项目是按照我在互联网上找到的一些手册的方式手动输入的,第二个项目是在 TexmakerX GUI 中输入的,用于创建新的 BibTex 项目,第三个项目是从 Mendeley 导出的。没有一个起作用。
@book{Alexander2009, 地址 = “奇切斯特”, author = “亚历山大·伊恩和贝乌斯-杜基奇·列尔卡” 版本 = “1”, isbn = “978-0470712405”, 页数 = “457”, 出版商 = “Wiley” title = “发现需求”, 年份 = “2009” } @InProceedings{Sutcliffe2011, 作者 = {Alistair Sutcliffe}, title = {情感需求工程}, booktitle = {第 19 届 IEEE 需求工程会议}, 页数 = {321--322}, 年份 = {2011}, } @article{Schwartz1990, 作者 = {Schwartz, SH 和 Bilsky, W}, journal = {人格与社会心理学杂志}, 数字 = {5}, 页数 = {878--891}, 出版商 = {美国心理学协会}, title = {{价值的普遍内容和结构理论:扩展和跨文化复制}}, 体积 = {58}, 年份 = {1990} }
我将 MikTex 与 TexmakerX 一起使用,但我也从命令行进行编译并得到了相同的结果。
当我删除 BibTex 参考文献并使用thebibliography
环境时,引用就起作用了。但是,我更喜欢使用 BibTex 文件,因为这样我就可以从 Mendeley 导出所有数据,而不必预先构建整个参考书目。有什么想法出了什么问题吗?
答案1
从以上评论中总结(并扩展):
BibTeX 使用由 LaTeX 编写的辅助文件(显示您想要引用的内容)以及 bst 文件(包含样式信息 - 例如 plain.bst)和 bib 文件(包含您可能想要引用的任何文档的书目信息)。因此,命令行中的工作流程可能看起来像
latex
- 生成 aux 文件bibtex
- 生成一个 bbl 文件,其中包含有关辅助文件中提到的特定参考资料的信息,格式正确latex
- 将 bbl 文件中的信息合并到排版文档中- 可能
latex
再次修复在包含所有引文时引入的任何交叉引用问题
一路查看 aux 和 bbl 文件 - 以及正如@Joseph 指出的那样,blg 文件(即 BibTeX 的日志) - 可以帮助解决问题。
为了完整起见,答案是:这次显然是bibtex
由于 bst 文件名称的拼写错误导致该步骤无法进行。
答案2
我知道这篇文章已经有一年了,但我现在也遇到了同样的问题。我的 TexMaker 未配置为bibtex
在 下的 BibTeX 命令中具有正确的可执行文件路径Options->configure TexMaker
。我使用 Ubuntu,因此必须输入正确的路径,否则.aux
用于bibtex
创建文件.bbl
的文件将出现在您的最终pdf
文档中。
答案3
就我而言,问题出现是因为我使用了带有 backref 和非标准样式的 bibentry。将宏设为全局不起作用。由于我用 生成文件,.bst
并且custom-bib
不想直接在 .bst 文件中删除宏代码,因此我复制了以下代码:
\global\def\bibAnnoteFile{}
\renewcommand{\bibAnnoteFile}[1]{%
\IfFileExists{#1}{\begin{quotation}\noindent\textsc{Key:} #1\\
\textsc{Annotation:}\ \input{#1}\end{quotation}}{}}
我甚至不确定该宏应该做什么。可能最简洁的方法就是正确配置custom-bib
。