我发现了很多关于同一问题的帖子,但没有一个能帮上忙。你能帮我找出为什么我会收到这个错误吗?我正在使用:IEEEtran.bst
和IEEEtran.cls
。这两个文件和主 .tex 文件以及都references.bib
在一个文件夹中。当我尝试编译我的脚本时,我收到此错误:
test.bbl(24): Error: LaTeX Error: Something's wrong--perhaps a missing \item.
这是test.bbl
:
% Generated by IEEEtran.bst, version: 1.12 (2007/01/11)
\begin{thebibliography}{}
\providecommand{\url}[1]{#1}
\csname url@samestyle\endcsname
\providecommand{\newblock}{\relax}
\providecommand{\bibinfo}[2]{#2}
\providecommand{\BIBentrySTDinterwordspacing}{\spaceskip=0pt\relax}
\providecommand{\BIBentryALTinterwordstretchfactor}{4}
\providecommand{\BIBentryALTinterwordspacing}{\spaceskip=\fontdimen2\font plus
\BIBentryALTinterwordstretchfactor\fontdimen3\font minus
\fontdimen4\font\relax}
\providecommand{\BIBforeignlanguage}[2]{{%
\expandafter\ifx\csname l@#1\endcsname\relax
\typeout{** WARNING: IEEEtran.bst: No hyphenation pattern has been}%
\typeout{** loaded for the language `#1'. Using the pattern for}%
\typeout{** the default language instead.}%
\else
\language=\csname l@#1\endcsname
\fi
#2}}
\providecommand{\BIBdecl}{\relax}
\BIBdecl
\end{thebibliography}
我的测试.tex:
\documentclass[conference]{IEEEtran}
\begin{document}
\section{Test Citation}
\cite{logjam2015}
% ---- Bibliography ----
\bibliographystyle{IEEEtran}
\bibliography{references}
\end{document}
以及 references.bib
@inproceedings{logjam2015,
author = {Adrian, David and Bhargavan, Karthikeyan and Durumeric, Zakir and Gaudry, Pierrick and Green, Matthew and Halderman, J. Alex and Heninger, Nadia and Springall, Drew and Thom{\'e}, Emmanuel and Valenta, Luke and VanderSloot, Benjamin and Wustrow, Eric and Zanella-B{\'e}guelin, Santiago and Zimmermann, Paul},
booktitle = {Proceedings of the 22nd ACM SIGSAC Conference on Computer and Communications Security (CCS '15)},
pages = {5-17},
title = {{I}mperfect {F}orward {S}ecrecy: {H}ow {D}iffie-{H}ellman {F}ails in {P}ractice},
url = {http://doi.acm.org/10.1145/2810103.2813707},
year = {2015},
}
答案1
您在文档不包含或命令.bbl
时生成了该文件。错误源于宏的错误重新定义。\cite
\nocite
IEEEtran.cls
\endthebibliography
标准类有类似的东西
\newenvironment{thebibliography}[1]
{[irrelevant code omitted]}
{\def\@noitemerr
{\@latex@warning{Empty `thebibliography' environment}}%
\endlist}
这意味着
\def\endthebibliography{%
\def\@noitemerr{\@latex@warning{Empty `thebibliography' environment}}%
\endlist
}
但IEEEtran.cls
有
\let\endthebibliography\endlist
这显然是错误的。
如果你修复它
\documentclass[conference]{IEEEtran}
\makeatletter
\def\endthebibliography{%
\def\@noitemerr{\@latex@warning{Empty `thebibliography' environment}}%
\endlist
}
\makeatother
\begin{document}
\section{Test Citation}
\cite{logjam2015}
% ---- Bibliography ----
\bibliographystyle{IEEEtran}
\bibliography{references}
\end{document}
那么空.bbl
文件(即没有\bibitem
命令)也只会产生警告而不是错误。
答案2
如果即使您已经在论文中添加了,错误仍然出现\cite{something}
,那么您必须清除辅助文件。
具体来说,删除所有以以下结尾的文件.log .aux .bbl .blg
.然后再次编译该文档,就好了。
答案3
我遇到了完全相同的错误消息,.bbl
文件为空。如果您像我一样使用 MiKTeX,您可以尝试更改\bibliographystyle{IEEEtran}
为\bibliographystyle{ieeetran}
全部小写。然后运行 BibTeX。最后使用您习惯的方法生成文档。它解决了我的问题。
我发现这个解决方案正在阅读https://ctan.org/pkg/ieeetran,其中提供了最新版本的 IEEEtran BibTeX 样式(顺便说一下,我不需要下载),并指定它作为 IEEEtran 包含在 TeX Live 中,并包含在MiKTeX 作为 ieeetran。
答案4
就我而言,这是在 BibTex BBL 文件的上下文中,经检查,该文件是空的。
显然,Overleaf 将 .bib 文件的名称报告为 ,Mendeley.bib
并且我包含了\bibliography{Mendeley}
,但却没有找到该文件。
解决方案:我将 .bib 文件重命名为全部小写,并更新\bibliography
条目以匹配,一切都按预期工作。