解决方案 1

解决方案 1

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

我已经尝试过发布的代码U.Martinez-Corral 的回答,不幸的是它对我来说不起作用(Windows10 + sublime Text 3(Build 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}

../来源.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)。它仍然不起作用吗?

相关内容