Mis citas funcionan bien cuando el sources.bib
archivo está dentro del mismo directorio que mi .tex
archivo, 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.bib
archivo:
@book{textbook,
author = {First, Last},
title = {title},
}
Mi bibliografía aparece muy bien. Sin embargo, si simplemente salgo sources.bib
al 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-abspath
el 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 fancy
definición de estilo. Quitándolo \everymath
y 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?