新的 apacite 包 (2012-Feb-14) 有问题吗?

新的 apacite 包 (2012-Feb-14) 有问题吗?

apacite2012 年 2 月 14 日推出了该软件包的新版本,其中添加了三个选项来选择不同的引用命令: apaciteclassicnatbibapanocitation。我在 MiKTeX 2.9 上安装了该软件包并尝试使用它。该apaciteclassic选项没有任何问题。但是,当我尝试时,natbibapa我收到此错误(我粘贴了部分日志):

("C:\Program Files (x86)\MiKTeX 2.9\tex\latex\natbib\natbib.sty"
Package: natbib 2010/09/13 8.31b (PWD, AO)
\bibhang=\skip48
\bibsep=\skip49
LaTeX Info: Redefining \cite on input line 694.
\c@NAT@ctr=\count89
)
LaTeX Info: Redefining \BBA on input line 3.
! Undefined control sequence.
\apacite.sty-h@@k ...elist {\orig@mb@citenamelist 
                                                  ,citeauthort,citeauthorp,c...
l.3
?
! Emergency stop.
\apacite.sty-h@@k ...elist {\orig@mb@citenamelist 
 ,citeauthort,citeauthorp,c...
l.3 
End of file on the terminal!

这是一个最小的工作示例(产生错误):

\documentclass[12pt]{report}
\usepackage[natbibapa]{apacite}

\begin{document}

Lorem ipsum dolor sit amet. \citet{shermis1999comparison} consectetur adipiscing elit.

\bibliographystyle{apacite}
\bibliography{myrefs}
\end{document}

以下是围兜条目:

@ARTICLE{shermis1999comparison,
author = {Shermis, M.D. and Lombard, D.},
title = {A comparison of survey data collected by regular mail and electronic   mail questionnaires},
 journal = {Journal of Business and Psychology},
year = {1999},
volume = {14},
pages = {341--354},
number = {2},
publisher = {Springer}
}  

有人可以安装新软件包并查看他/她在使用该natbibapa选项时是否遇到相同的错误吗?我做错了什么吗?

我感谢任何帮助。

答案1

apacite.sty1966 至 1994 行表示什么,这一点不太清楚。

它在假设选项已经指定的\@mb@citenamelist情况下定义一个命令;对于选项,它说classicnatbibapa

\if@APAC@natbib@apa
\AtEndOfPackage{%
\let\orig@mb@citenamelist\@mb@citenamelist
\edef\@mb@citenamelist{%
  \orig@mb@citenamelist,%
  citeauthort,citeauthorp,citefullauthort,citefullauthorp,Citeauthort,%
  <...other strings...>
}
}
\fi

但是\@mb@citenamelist不是定义,所以整个事情失败了。一个猜测是,选项natbibapa应该扩充列表,所以说

\makeatletter
\def\@mb@citenamelist{%
  cite,fullcite,shortcite,citeNP,fullciteNP,shortciteNP,%
  citeA,fullciteA,shortciteA,citeauthor,fullciteauthor,shortciteauthor,%
  citeauthorNP,fullciteauthorNP,shortciteauthorNP,%
  citeyear,citeyearNP,nocite,nocitemeta,%
  maskcite,maskfullcite,maskshortcite,maskciteNP,maskfullciteNP,%
  maskshortciteNP,maskciteA,maskfullciteA,maskshortciteA,%
  maskciteauthor,maskfullciteauthor,maskshortciteauthor,%
  maskciteauthorNP,maskfullciteauthorNP,maskshortciteauthorNP,%
  maskciteauthorA,maskfullciteauthorA,maskshortciteauthorA,%
  maskciteyear,maskciteyearNP,masknocite%
}
\makeatother

加载apacite.sty即可解决问题。

第二种可能性是,为该选项提供的列表natbibapa是详尽的,在这种情况下添加

\makeatletter\def\@mb@citenamelist{}\makeatother

加载之前apacite将是临时的解决方案。

当然这是应该引起开发人员注意的事情apacite

相关内容