如果我注释掉该行,以下测试代码就可以运行\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 年没有实现。
这里有很多教训。
再次感谢。