我需要使用给定的 .bst 文件,因此我只能使用纯 BibTeX。
\fullcite
在这种情况下,是否有某种方法可以获得与 BibLaTeX 相当的东西?
答案1
对于我的设置,bibentry 包(参见如何在正文中完整引用一个 bibentry?) 不起作用。我会收到以下错误或警告之一:
! 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
然而,就我的目的而言,我能够利用参考书目条目遵循的模式\bibitem[LABEL]{CITEKEY} BIBLIOGRAPHYENTRY\par
。因为我需要的是我定义的参考书目的摘录
\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}
这个解决方案虽然粗糙,但确实有效。但也存在一些限制:
- 引用总是被添加到主要参考书目中。
- 引用的顺序总是与参考书目中的顺序相同(有意为之)。
- 缺乏对无效密钥的检查,尽管 \nocite应该照顾好那个。
- 取决于 .bbl 文件的格式:例如,如果最后一个引用和 \end{thebibliography} 之间没有空行,则会失败。