将名称和年份括号添加到参考列表

将名称和年份括号添加到参考列表

我是 LaTeX 的新手,使用它natbib来处理我的引用:

\usepackage[authoryear,square]{natbib}
\bibliographystyle{authordate1}
\bibliography{sample}

现在,文章中的引用看起来不错 [作者,年份],但是当参考文献列表显示在末尾时,我希望每个参考文献旁边都有相同的 [作者,年份] 单元格。我该怎么做?

以下是 MWEB 示例:

\documentclass[a4paper,12pt]{article}
\usepackage[authoryear,square]{natbib}

\usepackage{filecontents}    
\begin{filecontents}{sample.bib}
@article{lorenz1963,
  title={Deterministic nonperiodic flow},
  author={Lorenz, Edward N},
  journal={Journal of the atmospheric sciences},
  volume={20},
  number={2},
  pages={130--141},
  year={1963}
}

\end{filecontents}

\begin{document}  
\citep{lorenz1963}
\bibliographystyle{authordate1}
\bibliography{sample}
\end{document}

谢谢 !

答案1

可以利用该.bbl文件的格式

\bibitem[\protect\citename{Lorenz, }1963]{lorenz1963}

所以我们可以利用括号里的部分作为引用文本的开头。

\begin{filecontents*}{\jobname.bib}
@article{lorenz1963,
  title={Deterministic nonperiodic flow},
  author={Lorenz, Edward N},
  journal={Journal of the atmospheric sciences},
  volume={20},
  number={2},
  pages={130--141},
  year={1963}
}
\end{filecontents*}

\documentclass[a4paper,12pt]{article}
\usepackage[authoryear,square]{natbib}

\AtBeginDocument{
  \let\natbibbibitem\bibitem
  \let\bibitem\valientbibitem
}
\makeatletter
\def\valientbibitem[#1]#2{%
  \natbibbibitem[#1]{#2}%
  \begingroup\let\citename\@firstofone
  [#1]
  \endgroup
}
\makeatother
\begin{document}  

\citep{lorenz1963}

\bibliographystyle{authordate1}
\bibliography{\jobname}

\end{document}

在此处输入图片描述

我同意这些评论的观点,认为这只是使参考书目变得杂乱。


在测试过程中,我发现其中有一个错误,authordate1.bst当引用标注中出现“et al.”时,会导致添加一个虚假空格。

这只能通过修复源代码来解决。在工作目录中复制一份authordate1.bst调用它的内容。在其中将所有出现的authordate1-fix.bst

{\em et~al.\ }\relax

进入

{\em et~al\@.}\relax

在您的文档中执行\bibliographystyle{authordate1-fix}

答案2

你可以

  • 不是加载natbib包,然后

  • 为 提供一个虚拟定义\citename,并且

  • 使用\cite而不是\citep来生成引用标注。

在此处输入图片描述

\RequirePackage{filecontents}    
\begin{filecontents}{sample.bib}
@article{lorenz1963,
  title={Deterministic nonperiodic flow},
  author={Lorenz, Edward N.},
  journal={Journal of the Atmospheric Sciences},
  volume={20},
  number={2},
  pages={130--141},
  year={1963}
}
\end{filecontents}

\documentclass[a4paper,12pt]{article}
%\usepackage[authoryear]{natbib} % don't load natbib
\providecommand\citename[1]{#1}  % provide a dummy definition

\begin{document}  
\cite{lorenz1963}                % <-- use \cite, not \citep
\bibliographystyle{authordate1}
\bibliography{sample}
\end{document}

相关内容