我是 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}