LaTeX: предупреждения «Неопределенная цитата»

LaTeX: предупреждения «Неопределенная цитата»

При запуске этого примера кода:

\documentclass[11pt,a4paper]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[british]{babel}
\usepackage[onehalfspacing]{setspace}
\usepackage{natbib}

\begin{document}

Hello World \cite{greenwood_theoretical_2016}

\end{document}

\bibliography{Bibliography}
\bibliographystyle{plain}

Я постоянно получаю предупреждение:

«Ссылка greenwood_theoretical_2016 на странице 1 не определена в строке ввода 10»

и ссылки помечены как '?' в документе.

Я использую Sublime Text 3.2 LaTeXToolsна macOS High Sierra.
Конструктор установлен на 'базовый' итак, он работает:

pdflatex
bibtex
pdflatex
pdflatex

Я экспортировал свою библиографию из Zotero (формат: Bibtex; кодировка: UTF-8) и проверил файл «Bibliography.bib» (который находится в том же каталоге), и ссылки, похоже, верны (пример):

@article{greenwood_theoretical_2016,
title = {Theoretical, contemporary observational and palaeo-perspectives on ice sheet hydrology: {Processes} and products},
volume = {155},
issn = {0012-8252},
shorttitle = {Theoretical, contemporary observational and palaeo-perspectives on ice sheet hydrology},
url = {http://www.sciencedirect.com/science/article/pii/S0012825216300095},
doi = {10.1016/j.earscirev.2016.01.010},
urldate = {2018-12-05},
journal = {Earth-Science Reviews},
author = {Greenwood, Sarah L. and Clason, Caroline C. and Helanow, Christian and Margold, Martin},
month = apr,
year = {2016},
keywords = {Geomorphology, Esker, Meltwater, Review, Hydrology, Channel, Glacier, Ice Sheet},
pages = {1--27}

С использованиемbiblatexвместо этого natbibдает мне метку ссылки в квадратных скобках, т.е.

Привет, мир [greenwood_theoretical_2016]

Я также пробовал использовать разные стили, но ничего не изменилось.

Я знаю, что по этому поводу было много вопросов, но, похоже, здесь ничего не работает.

решение1

В приведенном вами коде есть некоторые проблемы:

  1. Порядок вызова \bibliographystyleи \bibliographyдолжен быть изменен в вашем коде (стиль должен быть первым!).
  2. При загрузке natbibвам лучше использовать стили plainnat.plain
  3. У вас есть \end{document}перед вами вызовы библиографии. Это означает, что код после \end{document}не выполняется.

Пожалуйста, используйте следующий код:

\RequirePackage{filecontents}
\begin{filecontents*}{Bibliography.bib}
@article{greenwood_theoretical_2016,
  title = {Theoretical, contemporary observational and palaeo-perspectives 
           on ice sheet hydrology: {Processes} and products},
  volume = {155},
  issn = {0012-8252},
  shorttitle = {Theoretical, contemporary observational and 
  palaeo-perspectives on ice sheet hydrology},
  url = {http://www.sciencedirect.com/science/article/pii/S0012825216300095},
  doi = {10.1016/j.earscirev.2016.01.010},
  urldate = {2018-12-05},
  journal = {Earth-Science Reviews},
  author = {Greenwood, Sarah L. and Clason, Caroline C. and Helanow, 
            Christian and Margold, Martin},
  month = apr,
  year = {2016},
  keywords = {Geomorphology, Esker, Meltwater, Review, Hydrology, 
              Channel, Glacier, Ice Sheet, Read Level 3},
  pages = {1--27},
}
\end{filecontents*}


\documentclass[11pt,a4paper]{scrartcl}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[british]{babel}
\usepackage[onehalfspacing]{setspace}

\usepackage{natbib}


\begin{document}

Hello World \cite{greenwood_theoretical_2016}

\bibliographystyle{plainnat} % plain
\bibliography{Bibliography} % Bibliography

\end{document}

и видим ожидаемый результат:

результат с бибтексом

Если вы хотите, чтобы библиография была пронумерована, добавьте numbersопцию natbib:

\usepackage[numbers]{natbib}

Правильный код для компиляции biblatex:

\documentclass[11pt,a4paper]{scrartcl}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[british]{babel}
\usepackage[onehalfspacing]{setspace}

\usepackage{csquotes}
\usepackage[%
  natbib=true, % <=======================================
  backend=biber, % <=====================================
]{biblatex}
\addbibresource{Bibliography.bib} % Bibliography <=======


\begin{document}

Hello World \cite{greenwood_theoretical_2016}

\printbibliography

\end{document}

с результатом:

введите описание изображения здесь

решение2

Часть оригинального ответа, в которой говорится: «Я почти уверен, что команда \bibliographystyle{plain}должна быть перед командой \bibliography{Bibliography}», на самом деле неверна, поскольку компиляция bibtex будет выполняться отдельно, и, таким образом, будет использоваться только aux-файл, в котором уже есть информация о стиле бибиографии. (Спасибо @barbarabeeton и @moewe...) Конечно, привычки программирования все равно заставят больше людей добавлять его перед командой печати, поскольку код будет более удобочитаемым, если сказать «Получи стиль и распечатай его»… чем «Распечатай его… Ах! И не забудь… Мне нужно в этом стиле!» :P

Не проверял, но я почти уверен, что команда \bibliographystyle{plain}должна быть перед командой \bibliography{Bibliography}и, что самое важное (в этом я уверен), что обе команды должны быть перед \end{document}командой.

Попробуйте, пожалуйста, и ответьте, все ли в порядке.

Связанный контент