Solución 1

Solución 1

Mis citas funcionan bien cuando el sources.bibarchivo está dentro del mismo directorio que mi .texarchivo, como se muestra aquí:

\documentclass{article}
\usepackage{fancyhdr}

\begin{document}

\thispagestyle{fancy}
\everymath{\displaystyle}

\nocite{textbook}

\bibliographystyle{plain}
\bibliography{sources}

\end{document}

Aquí está el sources.bibarchivo:

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

Mi bibliografía aparece muy bien. Sin embargo, si simplemente salgo sources.bibal directorio principal y ajusto el código:

\documentclass{article}
\usepackage{fancyhdr}

\begin{document}

\thispagestyle{fancy}
\everymath{\displaystyle}

\nocite{textbook}

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

\end{document}

Recibo los errores:

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

¿Qué pasa aquí?

Respuesta1

Probé el código publicado enLa respuesta de U. Martínez-Corral, desafortunadamente no me funciona (Windows10 + sublime Text 3 (compilación 3126) + LaTeXTools + Texlive).

Esta es una limitación de BibTeX:

Las rutas relativas que requieren un recorrido ascendente por el directorio (..) no funcionan cuando se usa BibTeX y un directorio de salida. Esta es una limitación de BibTeX, que realmente no soporta el concepto de directorio de salida. Cita no encontrada si el archivo bib está en el directorio principal

Solución 1

Utilice la ruta absoluta en su lugar.

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

Solución 2

Mi solución es usar currfile-abspathel paquete para construir una ruta absoluta \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}

Ver también:https://tex.stackexchange.com/a/54891/115852

Respuesta2

Aunque no debería tener ningún efecto en este caso, es mejor mantener el ejemplo mínimo de trabajo (MWE) lo más pequeño posible y proporcionar todos los archivos necesarios para probarlo. Al MWE le falta una fancydefinición de estilo. Quitándolo \everymathy agregando el contenido del bibfile, este MWE funciona para mí:

./main.tex

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

\cite{knuth1986texbook}

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

\end{document}

../fuentes.bib

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

Sólo para estar seguro, elimine todos los archivos auxiliares y vuelva a compilar toda la secuencia (pdflatex + bibtex + pdflatex + pdflatex). ¿Aún no funciona?

información relacionada