2

I need to use a given .bst file, and thus I am restricted to using plain BibTeX.

Is there some method to get something equivalent to BibLaTeX's \fullcite in this situation?

kdb
  • 1,889
  • 1
    it depends on the bst and the bbl it creates, but I would say that it is rather improbable that it will work. – Ulrike Fischer Mar 14 '19 at 19:48
  • 2
    You might try with the bibentry package (part of natbib) or the usebib package. – Guido Mar 14 '19 at 21:49
  • https://tex.stackexchange.com/q/49048/35864 has an example with bibentry. With usebib you would have to piece the entry together manually (and would run into issues with names lists, which usebib does not parse as BibTeX). – moewe Mar 15 '19 at 14:22
  • Bibentry doesn't work for me. It doesn't produce any output, but a warning from hyperref about creating a duplicate pdf link label: pdfTeX warning ext4: destination with the same identifier name{cite.xxxx2015} has been already used, duplicate ignored. I found a solution that works for me (I'll post it as an answer). – kdb Mar 16 '19 at 11:03

1 Answers1

0

For my setup, the bibentry package (see How to cite one bibentry in full length in the body text?) did not work. I'd get one of these errors or warnings:

! Package natbib Error: Bibliography not compatible with author-year citations.

pdfTeX warning ext4: destination with the same identifier name{cite.xxxx2015} 
has been already used, duplicate ignored

For my purposes however, I was able to exploit that the bibliography entries follow the pattern \bibitem[LABEL]{CITEKEY} BIBLIOGRAPHYENTRY\par. Since what I needed was an excerpt from the bibligraphy I defined

\documentclass{scrreprt}
\usepackage{pgffor}

\begin{document}

\makeatletter
\newcommand{\filterbib}[1]{
  % Requires enumitem package.
  \nocite{#1}% ensure that the entries are in the bibliography.
  \def\bibitem[##1]##2##3\par{
    \edef\fb@keyA{##2}
    \foreach \fb@keyB in {#1}{
      \ifx\fb@keyA\fb@keyB \item ##3\fi
    }
  }
  \begingroup
  \renewenvironment{thebibliography}[1]{
    \itemize
  }{\enditemize}
  \InputIfFileExists{\jobname.bbl}{}{%
    \PackageWarning{kdb:backmatter}{No file \jobname.bbl}%
  }%
  \endgroup
}

\filterbib{Adles2008prb,Eisenthal2006,Bauer2015}

\bibliographystyle{draftabbrev}
\bibliography{library}

\end{document}

The solution is rough, but works. Some limitations:

  • The citations are always added to the main bibliography.
  • The citations always have the same order as in the bibliography (intentional).
  • Lack of checking for invalid keys, though the \nocite should take care of that.
  • Depends on the formatting of the .bbl file: For instance, if there is no empty line between the last citation and the \end{thebibliography}, it will fail.
kdb
  • 1,889