Lösung 1

Lösung 1

Meine Zitate funktionieren einwandfrei, wenn sich die sources.bibDatei im selben Verzeichnis wie meine .texDatei befindet, wie hier gezeigt:

\documentclass{article}
\usepackage{fancyhdr}

\begin{document}

\thispagestyle{fancy}
\everymath{\displaystyle}

\nocite{textbook}

\bibliographystyle{plain}
\bibliography{sources}

\end{document}

Hier ist die sources.bibDatei:

@book{textbook,
    author = {First, Last},
    title = {title},
}

Meine Bibliographie wird einwandfrei angezeigt. Wenn ich jedoch einfach sources.bibin das übergeordnete Verzeichnis gehe und den Code anpasse:

\documentclass{article}
\usepackage{fancyhdr}

\begin{document}

\thispagestyle{fancy}
\everymath{\displaystyle}

\nocite{textbook}

\bibliographystyle{plain}
\bibliography{../sources}

\end{document}

Ich erhalte die folgenden Fehlermeldungen:

Citation `textbook' undefined
Empty `thebibliography' environment
There were undefined references.

Was ist hier los?

Antwort1

Ich habe den Code ausprobiert, der gepostet wurde inU.Martinez-Corrals Antwort, leider funktioniert es bei mir nicht (Windows10 + Sublime Text 3 (Build 3126) + LaTeXTools + Texlive).

Dies ist eine Einschränkung von BibTeX:

Relative Pfade, die eine Verzeichnisdurchquerung nach oben (..) erfordern, funktionieren bei Verwendung von BibTeX und einem Ausgabeverzeichnis nicht. Dies ist eine Einschränkung von BibTeX, das das Konzept eines Ausgabeverzeichnisses nicht wirklich unterstützt. Zitat nicht gefunden, wenn Bib-Datei im übergeordneten Verzeichnis

Lösung 1

Verwenden Sie stattdessen den absoluten Pfad.

\bibliography{../sources}                         % relative path: don't work
\bibliography{E:/GitKraken/test/sources}          % absolute path: work

Lösung 2

Meine Lösung besteht darin, currfile-abspathein Paket zum Erstellen eines absoluten Pfads zu verwenden \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}

Siehe auch:https://tex.stackexchange.com/a/54891/115852

Antwort2

Obwohl es in diesem Fall keine Auswirkungen haben sollte, ist es besser, das Minimum Working Example (MWE) so klein wie möglich zu halten und alle zum Testen erforderlichen Dateien bereitzustellen. Dem MWE fehlt die fancyStildefinition. Wenn ich sie entferne \everymathund den Inhalt der Bib-Datei hinzufüge, funktioniert dieses MWE für mich:

./main.tex

\documentclass[a4paper]{article}
\begin{document}

\cite{knuth1986texbook}

\bibliographystyle{plain}
\bibliography{../sources}

\end{document}

../quellen.bib

@book{knuth1986texbook,
  keywords = {book},
  title={The texbook},
  author={Knuth, D.E. and Bibby, D.},
  volume={1993},
  year={1986},
  publisher={Addison-Wesley}
}

Um sicherzugehen, entfernen Sie alle Hilfsdateien und kompilieren Sie die gesamte Sequenz erneut (pdflatex + bibtex + pdflatex + pdflatex). Funktioniert es immer noch nicht?

verwandte Informationen