防止 natbib 中的 ibid 跟踪

防止 natbib 中的 ibid 跟踪

我想防止natbib用长破折号替换作者姓名列表,这是引用相同作者的默认行为。为什么?因为我习惯\bibentry在简历中放置完整引用,并且实际上想要完整引用。

我正在使用包bibentrynatbib样式amnatnat.bst

第一篇帖子,格式、链接等等不太好,请见谅...

更新:我可以修改 amnatnat.bst 中的以下函数以防止替换吗?

FUNCTION {name.or.dash}
{ 's :=
   oldname empty$
     { s 'oldname := s }
     { s oldname =
         { "---{}---{}---" }
         { s 'oldname := s }
       if$
     }
   if$
}

答案1

不幸的是,这无法通过 来实现amnatnat.bst。当您运行bibtex amnatnat.bst替换 作者列表时,---{}---{}---如果条目中的作者列表bibtex当前正在以与前一个相同的方式处理,则有关作者(全名)姓名的信息将丢失。因此,我看到的唯一替代方法是更改\bibliographystyle​​ 。

如果您想在参考书目中保留重复作者的破折号并在文中使用完整的引用,一个可能的解决方案是使用biblatex和使用\fullcite{<key>}命令而不是\bibentry{<key>

编辑

修改函数的最简单方法是amnatnat.bstFUNCTION {name.or.dash}

FUNCTION {name.or.dash}
{ skip$ }

这将产生一个“标准”条目,不带重复名称的破折号(在参考书目和中)\bibentry

如果想要同时获得完整参考资料\bibentry{<key>}在参考书目中同时拥有完整的参考文献和破折号,可以对函数进行如下修改:

FUNCTION {name.or.dash}
{ 's :=
   oldname empty$
     { s 'oldname := s }
     { s oldname =
         { "\andash{" oldname * "}" * }
         { s 'oldname := s }
       if$
     }
   if$
}

然后在 LaTeX 源代码中使用以下代码

\usepackage{etoolbox}
\newcommand{\andash}[1]{#1}
\AtBeginEnvironment{thebibliography}{\renewcommand{\andash}[1]{---{}---{}---}}
\AtEndEnvironment{thebibliography}{\renewcommand\andash[1]{#1}}

以下是说明用法的 MWE:

\documentclass{article}
\usepackage{natbib}
\usepackage{bibentry}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@Article{first,
  author = "Last, First",
  title = "First Title",
  journal = "Journal Name",
  year = 2012
}
@Article{second,
  author = "Last, First",
  title = "Second Title",
  journal = "Journal Name",
  year = 2011
}
@Article{third,
  author = "More, First",
  title = "Third Title",
  journal = "Journal Name",
  year = 2011
}
\end{filecontents}

\usepackage{etoolbox}
\newcommand{\andash}[1]{#1}
\AtBeginEnvironment{thebibliography}{\renewcommand{\andash}[1]{---{}---{}---}}
\AtEndEnvironment{thebibliography}{\renewcommand\andash[1]{#1}}

\begin{document}
Testing normal citations
\cite{first} 
\cite{second}
\cite{third}

\bibliographystyle{amnatnat}
\nobibliography{\jobname}

Testing \verb|\bibentry|

\bibentry{first}

\bibentry{second}


\bibliography{\jobname}

\section*{More Testing}
Testing \verb|\bibentry| again after the bibliography

\bibentry{second}

\bibentry{first}

\end{document}

PS 评论其中一个\bibliography\nobibliographyPS运行前bibtex

相关内容