LaTeX 警告:第 xxx 页上的引用“@”在输入行上未定义

LaTeX 警告:第 xxx 页上的引用“@”在输入行上未定义

我真的不知道该怎么问这个问题。我正在尝试编译一个 tex 文档(\documentclass[a4paper]{report}),其中的参考书目我必须包含许多参考文献,其 bibtex 格式如下:

@ARTICLE{Zand+94,
author = {{in 't Zand}, J.~J.~M. and {Heise}, J. and {Jager}, R.},
title = "{The optimum open fraction of coded apertures. With an application to the wide field X-ray cameras of SAX}",
journal = {\aap},
keywords = {INSTRUMENTATION: DETECTORS, TECHNIQUES: IMAGE PROCESSING, TELESCOPES, X-RAYS: GENERAL},
 year = 1994,
month = aug,
volume = 288,
pages = {665-674},
adsurl = {http://adsabs.harvard.edu/abs/1994A\%26A...288..665I},
adsnote = {Provided by the SAO/NASA Astrophysics Data System}
}

为了定义日记,我发现这个官方网站其中期刊缩写的定义如下\def\aap{\ref@jnl{A\&A}}

但是,当我使用pdflatex bibtex(可变的次数)进行编译时,收到警告:

LaTeX Warning: Reference `@' on page 35 undefined on input line 92.

journal对于bibtex 文本中包含语音的每个参考文献。该行是主 tex 文件中给出92命令的位置。printbibliography

由于警告,参考书目中的参考文献拼写错误:

in ’t Zand, J. J. M., J. Heise, and R. Jager (Aug. 1994). “The optimum
open fraction of coded apertures. With an application to the wide field
X-ray cameras of SAX”. In: ??jnlA&A 288, pp. 665–674.

我该如何修复它?

答案1

看来您只是从问题中链接的包中提取了一些行。那里的定义用“内部”符号编码,@在该文件中读取期间用作“字母” \sty

除非您使用 加载完整的包\usepackage,否则您需要将提取的行视为按照约定读取的行 \usepackage。正如几条评论和链接的潜在重复中所提到的,执行此操作的方法是将提取的行包装在 之间\makeatletter ... \makeatother

此代码负责处理底层样式定义和您在问题中引用的期刊缩写的一个命令。它应该进入你的序言。

\makeatletter
\let\jnl@style=\rm
\def\ref@jnl#1{{\jnl@style#1}}

\def\aap{\ref@jnl{A\&A}}                % Astronomy and Astrophysics
\makeatother

如果需要添加更多日记帐定义,请确保将其插入到该行之前\makeatother

答案2

你只发布了零散的片段,很难给出明确的答案,但我猜你已经

\def\aap{\ref@jnl{A\&A}}

不是

\makeatletter
\def\aap{\ref@jnl{A\&A}}
\makeatother

如果@是一封信,那么\ref@jnl就是一个命令,希望在你的包或类文件的某个地方定义。

如果@不是字母,则\ref@jnl相当于\ref {@}jnl,因此会产生关于未知的错误\label @

相关内容