Solução 1

Solução 1

Minhas citações funcionam bem quando o sources.bibarquivo está no mesmo diretório do meu .texarquivo, conforme mostrado aqui:

\documentclass{article}
\usepackage{fancyhdr}

\begin{document}

\thispagestyle{fancy}
\everymath{\displaystyle}

\nocite{textbook}

\bibliographystyle{plain}
\bibliography{sources}

\end{document}

Aqui está o sources.bibarquivo:

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

Minha bibliografia aparece muito bem. No entanto, se eu simplesmente sair sources.bibpara o diretório pai e ajustar o código:

\documentclass{article}
\usepackage{fancyhdr}

\begin{document}

\thispagestyle{fancy}
\everymath{\displaystyle}

\nocite{textbook}

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

\end{document}

Eu recebo os erros:

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

O que há de errado aqui?

Responder1

Eu tentei o código postado emResposta de U.Martinez-Corral, infelizmente não funciona para mim (Windows10 + sublime Text 3 (Build 3126) + LaTeXTools + Texlive).

Esta é uma limitação do BibTeX:

Caminhos relativos que exigem passagem de diretório ascendente (..) não funcionam ao usar BibTeX e um diretório de saída. Esta é uma limitação do BibTeX, que realmente não suporta o conceito de diretório de saída. Citação não encontrada se o arquivo bib estiver no diretório pai

Solução 1

Use o caminho absoluto.

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

Solução 2

Minha solução é usar currfile-abspathpackage para construir um caminho absoluto \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}

Veja também:https://tex.stackexchange.com/a/54891/115852

Responder2

Embora não deva ter efeito neste caso, é melhor manter o Exemplo Mínimo de Trabalho (MWE) o menor possível e fornecer todos os arquivos necessários para testá-lo. Falta ao MWE a fancydefinição de estilo. Removendo-o e \everymathe adicionando o conteúdo do bibfile, este MWE funciona para mim:

./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}
}

Só para ter certeza, remova todos os arquivos auxiliares e compile toda a sequência novamente (pdflatex + bibtex + pdflatex + pdflatex). Ainda não está funcionando?

informação relacionada