23

我从一个简单的参考书目示例中收到了一条非常意外的错误消息。

我有.tex和.bib文件:

测试测试:

\文档类[信纸]{文章}\开始{文档}这是一篇引文:\cite{pearl88probabilistic}。\书目样式{named}\书目{b}\结束{文档}

b.围兜:

@书籍{pearl88概率,作者={J.珀尔},年份={1988年},title={智能系统中的概率推理:似然推理网络},出版商={Morgan Kaufmann,San Mateo(加利福尼亚)},}

然后我运行(在Windows上使用MikTeX 2.9):

pdflatex试验bibtex试验pdflatex试验

并获得错误:

(“C:\dir\test.bbl”! 未定义的控制顺序。<argument>\protect\citeuthoryear(参数>\protect\citeuthoryear){珍珠}{1988年}1.3。。。小时{Pearl}{1988年}]{pearl88概率}

使用乳胶而不是pdflatex公司,或使用不同的bibtex条目,会产生相同的错误。

下面是test.bbl中的违规行:

\bibitem[\protect\citeauthoryear{Pearl}{1988年}]{pearl88概率}

既然.tex和.bib输入看起来不错,为什么我会收到这个错误消息?

以下是我所做的全部(但已清理)跟踪(我将用户的目录替换为“dir”):

C: \dir>pdflatex测试这是pdfTeX,版本3.1415926-2.5-1.40.14(MiKTeX 2.9)进入扩展模式LaTeX2e<2011年6月27日>巴别塔<v3.8m>(…)(“C:\Program Files(x86)\MiKTeX 2.9\tex\latex\base\article.cls”文件类别:条款2014/09/29 v1.4h Standard LaTeX文件类别(“C:\Program Files(x86)\MiKTeX 2.9\tex\latex\base\size10.clo”)没有文件test.aux。LaTeX警告:输入lin中未定义第1页上的引用“pearl88probability”e 6。无文件test.bbl。[1{C:/ProgramData/MiKTeX/2.9/pdftex/config/pdftex.map}](“C:\dir\test.aux”)LaTeX警告:存在未定义的引用。)<C:/程序文件(x86)/MiKTeX 2.9/字体/类型1/public/amsfonts/cm/cmbx10.pfb><C:/Program Files(x86)/MiKTeX 2.9/fonts/type1/public/amsfonts/cm/cmr10.pfb>在test.pdf上写入的输出(1页,22197字节)。在test.log上编写的脚本。C: \dir>bibtex测试这是BibTeX,版本0.99d(MiKTeX 2.9)顶级辅助文件:test.aux样式文件:named.bst数据库文件#1:bib.bibC: pdflatex测试这是pdfTeX,版本3.1415926-2.5-1.40.14(MiKTeX 2.9)进入扩展模式(“C:\dir\test.tex”LaTeX2e<2011年6月27日>巴别塔<v3.8m>(…)(“C:\Program Files(x86)\MiKTeX 2.9\tex\latex\base\article.cls”文件类别:条款2014/09/29 v1.4h Standard LaTeX文件类别(“C:\Program Files(x86)\MiKTeX 2.9\tex\latex\base\size10.clo”)(“C:\dir\test.aux”)LaTeX警告:输入lin中未定义第1页上的引用“pearl88probability”e 6。(“C:\dir\test.bbl”! 未定义的控制顺序。<argument>\protect\citeauthoryear{珀尔}{1988年}1.3。。。小时{Pearl}{1988年}]{pearl88概率}
6
  • 2
    似乎是一个问题命名的藏书风格。从这里尝试解决方案:tex.stackexchange.com/a/106875/117534
    – 特洛伊
    评论 2017年3月29日1:35
  • 1
    为什么不考虑使用纳特比布而是打包?另外,欢迎来到TeX.SE!
    – 特洛伊
    评论 2017年3月29日1:36
  • 谢谢!其他样式也会产生相同的错误,但我将研究这些解决方案。 评论 2017年3月29日1:49
  • 好的,我查过了,这不是因为命名的。我将研究natbib,但我很想了解为什么在这样一个简单的示例中会发生此错误。 评论 2017年3月29日2:11
  • 2
    这绝对是因为命名的。样式本身表示需要定义以下命令\城市作者年为了使用它。
    – 乔恩
    评论 2017年3月29日2:16

3个答案

重置为默认值
15

提示位于名称.bst,其中包含文件顶部附近的:

%LaTeX样式必须具有以下(或类似)%\let\@internalcite\cite%\def\cite{\def\citeuthoryear#1##2{#1,#2}\@internalcite}%\def\shortcite{\def\citeauthoryear##1{##2}\@internalcite}%\def\@biblabel#1{\def\citeauthoryear##1##2{##1,##2}[#1]\hfill}%这使得宏被简短引用。

因此,您应该遵循以下建议:

\文档类[信纸]{文章}\使用包{filecontents}\开始{filecontents*}{\jobname.bib}%@书籍{pearl88概率,作者={J.珀尔},年份={1988年},title={智能系统中的概率推理:似然推理网络},出版商={Morgan Kaufmann,San Mateo(加利福尼亚)},}\结束{文件内容*}\标记字母\让\@internalcite\cite\def\cite{\def\citeauthoryear#1##2{#1,#2}\@internalcite}\def\shortcite{\def\citeauthoryear#1{#2}\@internalcite}\def\@biblabel#1{\def\citeauthory##1##2{#1,#2}[#1]\hfill}\制造者\开始{文档}这是一篇引文:\cite{pearl88probabilistic}。\书目样式{named}\书目{\jobname}\结束{文档}

如果我不听从建议,我就会明白你的错误。如果我按建议定义命令,则不会。

4
  • 4
    还请注意名称.bst,其中引用了拉泰X 2.09(!!)还声明毫无疑问,这种风格中存在一些错误。如果在2017年创建一个新项目,我会倾向于找到一些更现代的东西来使用。。。。
    – 乔恩
    评论 2017年3月29日2:22
  • 谢谢。我认为“named”不是问题所在,因为另一个包有第二个问题,即使使用plain和alpha也会产生问题。你说的“更现代”是什么意思?纳特里布? 评论 2017年3月29日4:19
  • 对,纳特比布双乳胶是两个最受欢迎的LaTeX参考书目软件包,这意味着,除其他外,如果需要,人们将有调试经验,并有兴趣这样做。但几乎每个软件包或bst公司将比为LaTeX 2.09设计的更现代。
    – 乔恩
    评论 2017年3月29日4:31
  • 遗憾的是,在.tex中嵌入书目解决了这个问题。 评论 2018年2月7日13:50
6

按照@Troy的建议,是这样吗?

\文档类[信纸]{文章}\使用包{natbib}\书目样式{named}\开始{文档}这是一篇引文:\citet{pearl88probabilistic}。\书目{b}\结束{文档}
2
  • \usepackage{natbib}\书目样式{named} 评论 2020年2月13日2:43
  • 1
    很好,它解决了我的引文问题:Before:`\begin{document}这是一个引文:\citet{pearl88probabilistic}。\书目样式{named}\objectivery{b}\end{document}After:\usepackage{natbib}\obestiverystyle{named\begin{document}这是一个引文:\citet{pearl88probability}。\参考书目{b}\end{document}
    – 杰森
    评论 2020年8月24日1:24
0

很好,它解决了我的引文问题:

之前(错误):

\开始{文档}这是一篇引文:\citet{pearl88probabilistic}。\书目样式{named}\参考书目{b}\结束{文档}

之后(无错误):

\使用包{natbib}\书目样式{named}\开始{文档}这是一篇引文:\citet{pearl88probabilistic}。\书目{b}\结束{文档}

你必须登录来回答这个问题。

不是你想要的答案吗?浏览标记的其他问题.