当 bbl 文件名与 tex 文件名不同时,bibentry 不起作用

当 bbl 文件名与 tex 文件名不同时,bibentry 不起作用

我对 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

相关内容