Я нашел много постов о той же проблеме, но ни один не помог. Можете ли вы помочь мне разобраться, почему я получаю эту ошибку? Я использую: 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}
И мой test.tex:
\documentclass[conference]{IEEEtran}
\begin{document}
\section{Test Citation}
\cite{logjam2015}
% ---- Bibliography ----
\bibliographystyle{IEEEtran}
\bibliography{references}
\end{document}
И ссылки.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 (который мне, кстати, не нужно было загружать), и указывают, что он содержится в TeX Live как IEEEtran и вMiKTeX как ieeetran.
решение4
В моем случае это было в контексте файла BibTex BBL, который при проверке оказался пустым.
Судя по всему, Overleaf сообщил имя файла .bib как , Mendeley.bib
и я включил его \bibliography{Mendeley}
, но файл так и не был найден.
Решение:Я переименовал файл .bib, сделав все буквы строчными, и обновил \bibliography
запись соответствующим образом, и все заработало так, как и ожидалось.