我对 latex 包 bibentry 有疑问。我手动创建了一个 bbl 文件,将其用作文档末尾的输入,以生成参考列表。此外,我还使用命令在最终参考列表之前打印了一些参考。\bibitem
只要 bbl 文件的文件名与 tex 文件的文件名相同,这种方法就没问题。但是,我想为 bbl 文件使用不同的文件名。我很感激任何关于如何实现这一点的评论。
假设 tex 文件的名称为my_doc.tex
。以下 tex 文件是一个最小的工作示例。
\documentclass{article}
\usepackage{bibentry}
\begin{filecontents}{my_doc.bbl}
\begin{thebibliography}{9}
\bibitem{latexcompanion}
Michel Goossens, Frank Mittelbach, and Alexander Samarin.
\textit{The \LaTeX\ Companion}.
Addison-Wesley, Reading, Massachusetts, 1993.
\end{thebibliography}
\end{filecontents}
\begin{document}
You may have a look at the companion by Goossens et al.~\cite{latexcompanion}
\nobibliography{my_doc}
\begin{itemize}
\item[\cite{latexcompanion}]
\bibentry{latexcompanion}.
\end{itemize}
\input{my_doc.bbl}
\end{document}
接下来,我重命名 bbl 文件(同时保留 tex 文件的名称):
\documentclass{article}
\usepackage{bibentry}
\begin{filecontents}{my_refs.bbl}
\begin{thebibliography}{9}
\bibitem{latexcompanion}
Michel Goossens, Frank Mittelbach, and Alexander Samarin.
\textit{The \LaTeX\ Companion}.
Addison-Wesley, Reading, Massachusetts, 1993.
\end{thebibliography}
\end{filecontents}
\begin{document}
You may have a look at the companion by Goossens et al.~\cite{latexcompanion}
\nobibliography{my_refs}
\begin{itemize}
\item[\cite{latexcompanion}]
\bibentry{latexcompanion}.
\end{itemize}
\input{my_refs.bbl}
\end{document}
这将产生以下结果。请注意,现在\bibitem
命令不会创建任何输出。我发现这个问题没有记录在bibentry 文档。
答案1
包bibentry
中定义了\nobibliography
命令,内部调用了\bibliography
。的定义\bibliography
如下:
\if@filesw
\immediate\write\@auxout{\string\bibdata{\zap@space#1\@empty }}
\fi
\@input@{\jobname.bbl}
这表明 LaTeX 尝试加载\jobname.bbl
。该\jobname
宏用于当前文件名。如果您使用不同的文件名.bbl
,则此操作不起作用,并且 LaTeX 会在日志文件中显示有关此情况的警告。
作为一种快速解决方案,您可以\jobname
在调用时暂时重新定义\nobibliography
:
\let\origjobname\jobname
\def\jobname{my_refs}
\nobibliography{my_refs}
\let\jobname\origjobname