Natbib setcitestyle 导致“未定义的控制序列错误”

Natbib setcitestyle 导致“未定义的控制序列错误”

如果我注释掉该行,以下测试代码就可以运行\setcitestyle。如果我不注释掉该行,它会抛出“未定义的控制序列错误”。出了什么问题?(我使用的是 MacTeX-2011 发行版。)

\documentclass{article}
\usepackage{etoolbox}

\def\bibfile{refs}

\usepackage{natbib}
\setcitestyle{numbers}
\setcitestyle{notesep={: },aysep={}}

\ifdefmacro{\bibname}{}{\newcommand{\biname}{References}}   % Default bibliography name
\ifdefmacro{\bibfile}{}{\newcommand{\bibfile}{references}}  % Default name of references file, references.bib
 %\input{mmd-local-chicagoAD}

\begin{document} 
Hello \citep{KandR}

Kernighan wrote, \citet{gary_a._dymski_afterword:_2009}

Goodbye \citep[][222]{gary_a._dymski_afterword:_2009}
\renewcommand\bibname{References}
\bibliographystyle{mcbride}
\bibliography{refs}
%\input{mmd-local-bibmake}
\end{document}

答案1

好吧,我终于搞明白了。感谢 egreg 告诉我你没有遇到任何错误。这为我指明了正确的方向。

问题是几年前我安装了哥白尼包,它包含一个可追溯到 2006 年的 natbib.sty 文件。由于我将其安装在我的 ~/Library/texmf 路径中,该路径位于 LaTeX 搜索路径中的系统范围文件目录之前,因此 LaTeX 会找到这个文件,而不是 MacTeX-2011 附带的最新版本。

当 egreg 告诉我它可以工作时,我仔细查看了日志文件,发现正在加载 2006 版 natbib,而不是 MacTeX 附带的 2010 版。我推断 \setcitestyle 在 2006 年没有实现。

这里有很多教训。

再次感谢。

相关内容