Мои цитаты работают нормально, когда sources.bib
файл находится в том же каталоге, что и мой .tex
файл, как показано здесь:
\documentclass{article}
\usepackage{fancyhdr}
\begin{document}
\thispagestyle{fancy}
\everymath{\displaystyle}
\nocite{textbook}
\bibliographystyle{plain}
\bibliography{sources}
\end{document}
Вот sources.bib
файл:
@book{textbook,
author = {First, Last},
title = {title},
}
Моя библиография отображается нормально. Однако, если я просто перейду sources.bib
в родительский каталог и исправлю код:
\documentclass{article}
\usepackage{fancyhdr}
\begin{document}
\thispagestyle{fancy}
\everymath{\displaystyle}
\nocite{textbook}
\bibliographystyle{plain}
\bibliography{../sources}
\end{document}
Я получаю ошибки:
Citation `textbook' undefined
Empty `thebibliography' environment
There were undefined references.
Что здесь не так?
решение1
Я попробовал код, размещенный вОтвет У.Мартинеса-Коррала, к сожалению, у меня это не работает (Windows10 + Sublime Text 3 (Сборка 3126) + LaTeXTools + Texlive).
Это ограничение BibTeX:
Относительные пути, требующие восходящего обхода каталога (..), не работают при использовании BibTeX и выходного каталога. Это ограничение BibTeX, который на самом деле не поддерживает концепцию выходного каталога. Ссылка не найдена, если файл bib находится в родительском каталоге
Решение 1
Вместо этого используйте абсолютный путь.
\bibliography{../sources} % relative path: don't work
\bibliography{E:/GitKraken/test/sources} % absolute path: work
Решение 2
Мое решение — использовать currfile-abspath
пакет для построения абсолютного пути \bibliography{\mainabsdir/../sources}
.
./main.tex
\documentclass[a4paper]{article}
% \usepackage[backend=bibtex]{biblatex}
\usepackage{currfile-abspath}
\getmainfile % get real main file (can be different than jobname in some cases)
\getabspath{\themainfile} % or use \jobname.tex instead (not as safe)
\let\mainabsdir\theabsdir % save result away (macro will be overwritten by the next \getabspath
\let\mainabspath\theabspath % save result away (macro will be overwritten by the next \getabspath
\begin{document}
\cite{knuth1986texbook}
\bibliographystyle{plain}
\bibliography{\mainabsdir/../sources}
\end{document}
Смотрите также:https://tex.stackexchange.com/a/54891/115852
решение2
Хотя в этом случае это не должно иметь никакого эффекта, лучше сохранить минимальный рабочий пример (MWE) как можно меньше и предоставить все файлы, необходимые для его проверки. В MWE отсутствует fancy
определение стиля. Удалив его и \everymath
, и добавив содержимое bibfile, этот MWE работает для меня:
./main.tex
\documentclass[a4paper]{article}
\begin{document}
\cite{knuth1986texbook}
\bibliographystyle{plain}
\bibliography{../sources}
\end{document}
../sources.bib
@book{knuth1986texbook,
keywords = {book},
title={The texbook},
author={Knuth, D.E. and Bibby, D.},
volume={1993},
year={1986},
publisher={Addison-Wesley}
}
Для уверенности удалите все вспомогательные файлы и скомпилируйте всю последовательность заново (pdflatex + bibtex + pdflatex + pdflatex). Все еще не работает?