我目前在论文中使用apacite
-package 引用参考文献。但是,我想将参考文献的格式(目前的形式为 (作者,年份))更改为方括号内的编号样式引用(例如 [10])。
查看软件包的文档apacite
,似乎不支持这种格式。相反,我想更改软件包natbib
。我能不费吹灰之力做到这一点吗?例如,我可以使用相同的 bib 文件吗?
我尝试将apacite
引用命令\cite
或\citeauthor
&分别更改\citeyear
为\citep
和\citet
。但是,我最终得到了很多未定义的控制序列错误。不确定问题出在哪里,是在 bib 文件中,还是我在主 TeX 文件中遗漏了什么?
编辑:为了说明,下面是发生情况的一个例子。我以前使用以下代码来引用一篇文章:\cite{Dempster1977}
或\citeauthor{Dempster1977} \citeyear{Dempster1977}
取决于我想要的格式。这将导致以下引用(Dempster et al., 1977)或 Dempster et al. (1977)。
现在,我将采用以下格式:仅在方括号中标注参考文献的编号,例如 [10] 或 Dempster et al. [10]。
这是文件中的参考.bib
。
@article{Dempster1977,
author = "Dempster, A. P. and Laird, N. M. and Rubin, D. B.",
year = "1977",
title = "{Maximum Likelihood from Incomplete Data via the EM algorithm}",
journal = "{Journal of the Royal Statistical Society}",
volume = "39",
pages = "1--38"}
为了获得这种格式,我尝试使用natbib
-package。因此我包括(在删除之后)\usepackage{apacite}) \usepackage[square,numbers]{natbib}
。
然后,根据文档,我使用\citep{Demspter1977}
或\citet{Dempster1977}
。但是我使用的行的错误消息\citet{Dempster1977}
是
Undefined control sequence ...the seminal paper by \citet{Dempster1977}
Undefined control sequence ...the seminal paper by \citet{Dempster1977}
Missing = inserted for \ifnum ...the seminal paper by \citet{Dempster1977}
Missing number, treated as zero ...the seminal paper by \citet{Dempster1977}
这些错误消息出现在整个文件中。不知道是什么原因造成的。另外,最后我之前使用
\bibliographystyle{apacite}
\bibliography{bibfile}
但我把它改成了
\bibliographystyle{plain}
\bibliography{bibfile}.
答案1
您有几个选择。以下是我要做的。我对如何处理引文非常挑剔,因此我将通过指定布尔值和自制的引文命令来对文本内外每个引文的处理方式进行细粒度控制。切换布尔值有时需要您抛出错误,但这些错误将在运行完整文档一次后解决(只是为了确保:这将要求您继续编译而不管错误是什么。如果您有超过 100 个引文,请删除您的 aux 和 bib 文件)。
\documentclass{article}
\newif\ifnatbib \natbibfalse
\ifnatbib
\usepackage[numbers]{natbib}
\let\mycitep\citep
\let\mycitet\citet
\bibliographystyle{unsrtnat}
\else
\usepackage[apaciteclassic]{apacite}
\let\mycitep\cite
\let\mycitet\citeA
\bibliographystyle{apacite}
\fi
\let\mycite\cite
\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@article{KamerlinghOnnes:1911p1320,
author = {Heike Kamerlingh-Onnes},
journal = {Communications from the Physical Laboratory of the University of Leiden},
title = {Further experiments with liquid Helium G. On the electrical resistance of pure metals, etc. VI. On the sudden change in the rate at which the resistance of Mercury disappears},
pages = {799--802},
volume = {124},
year = {1911},
month = {Feb},
date-added = {2009-02-05 11:13:59 +0100},
date-modified = {2011-10-05 15:29:37 +0200},
local-url = {file://localhost/Users/Shared/AndyDropbox/Dropbox/Library/Papers/1911/Kamerlingh-Onnes/Communications%20from%20the%20Physical%20Laboratory%20of%20the%20University%20of%20Leiden1911%20124%20799-802.pdf},
uri = {papers://1C9DCAE7-AE34-4220-9FE3-8B3A37855B8A/Paper/p1320},
rating = {0}
}
\end{filecontents*}
\begin{document}
A reference\mycite{KamerlinghOnnes:1911p1320}. \mycitet{KamerlinghOnnes:1911p1320} said that and that, but I don't agree because of this and that.
\bibliography{\jobname}
\end{document}
答案2
如果您以这种格式将参考书目条目存储在 BiBTeX 数据库(.bib 文件)中,那么您应该可以这样做:
@book{Author1991,
author = "Author",
title = "How I met your mother",
something = "Something"
}
然后,您可以使用任何您想要的选项加载 natbib 包而不是 apacite,这也许\usepackage[square]{natbib}
是 [N] 样式引文的一个好开始。然后,您需要在文档中指定所需的样式(.bst 文件)。包中直接附带的 Abbrv 样式以 [number] 格式输出引文。然后,您可以像这样加载参考文献:
\bibliographystyle{abbrv}
\bibliography{my-bib-file}
然后您正常使用 pdflatex 或其他编译器编译文档,然后使用 bibtex 和 pdflatex 编译两次。
如果您对 natbib 包中提供的不同引用样式感兴趣,可以参考:http://www.cs.stir.ac.uk/~kjt/software/latex/showbst.html 或者:http://en.wikibooks.org/wiki/LaTeX/Bibliography_Management#Natbib 如果您对 natbib 包的更多详细信息感兴趣。
另外,在将 apacite 更改为 natbib 包后,您是否尝试过删除 .aux 和 .bbl 文件?到目前为止,这帮助我解决了一些与参考书目相关的错误。
答案3
当您切换到 natbib 时,需要删除 .aux 和 .bbl 文件,因为它们包含非 natbib 信息并且软件包对此有所抱怨。