我目前被这个问题困扰着。
以下是我需要引用的一篇论文的典型 .bibtex 条目:
@ARTICLE{1996A&A...307L..41V,
author = {{Vink}, J. and {Kaastra}, J.~S. and {Bleeker}, J.~A.~M.},
title = "{A new mass estimate and puzzling abundances of SNR Cassiopeia A.}",
journal = {\aap},
keywords = {ISM: ABUNDANCES, ISM: INDIVIDUAL OBJECTS: CAS A, ISM: SUPERNOVA REMNANTS, X-RAYS: ISM},
year = 1996,
month = mar,
volume = 307,
pages = {L41-L44},
adsurl = {http://adsabs.harvard.edu/abs/1996A%26A...307L..41V},
adsnote = {Provided by the SAO/NASA Astrophysics Data System}
}
我\citet{1996A&A...307L..41V}
将其用作表中的条目来引用。如果 bib 键(例如:1996A&A...307L..41V)不包含 & 符号,则引用将正常工作(并且即使不在表中也会正确引用)。但是,如果它包含一个并且位于表中,我会收到错误消息:
\@for 的参数有一个额外的}。
我试图在“&”符号前加上反斜杠,但这只会返回错误:
缺少 \endcsname
另外,我不确定这样的“修复”是否有帮助,因为我需要 bibcode 与我的 .bib 文件中的 bibcode 相同。
我知道我可以把“&”符号去掉。但是,我正在通过导入这些 bibcode 直接编写输出脚本,因此我非常希望能够将“&”符号保留在 bibcode 中。
桌子:
\begin{table}[h!]
\caption{Integrated values of object}
\centerline{
\begin{tabular}{ccccl}
\hline
Freq & Flux & $\Delta$Flux & Reference & Comment \\
\hline
408 & 640.0 & --- & \citet{1983ApJS...51..345M} & comment1 \\
408 & 600.0 & --- & \citet{1996A&A...307L..41V} & comment2 \\
\hline
\end{tabular}}
\end{table}
因此第一个引用将起作用,但第二个引用将不起作用。
希望这可以解决问题。
提前致谢
答案1
一种方法是“逐字逐句地”使用 & 符号,并用等效符号替换表格 & 符号。该命令在大多数情况下\amp=&
会进行\amp
替换:&
\documentclass{article}
\usepackage{natbib}
\begin{document}
\begin{table}[h!]
\let\amp=& % now most uses of & can be replaced with \amp
\catcode`\&=12 % now & is nonspecial
\centering
\begin{tabular}{ccccl}
\hline
Freq\amp Flux \amp $\Delta$Flux \amp Reference \amp Comment \\
\hline
408 \amp 640.0\amp --- \amp \citet{1983ApJS...51..345M} \amp comment1 \\
408 \amp 600.0\amp --- \amp \citet{1996A&A...307L..41V} \amp comment2 \\
\hline
\end{tabular}
\end{table}
\bibliographystyle{plainnat}
\bibliography{yourbib}
\end{document}
也可以用单个字符替换表格符号:之后
\catcode`\?=4
您可以?
在 中用作单元格分隔符\tabular
。您必须小心地在本地执行此操作,否则请选择未使用的字符。请注意,给出&
12 的类别使其可打印。在我所知道的所有字体编码中,它都打印为实际的 & 符号。
答案2
只需\citet
用另外一副牙套进行保护:
\begin{tabular}{ccccl}
\hline
Freq & Flux & $\Delta$Flux & Reference & Comment \\
\hline
408 & 640.0 & --- & \citet{1983ApJS...51..345M} & comment1 \\
408 & 600.0 & --- & {\citet{1996A&A...307L..41V}} & comment2 \\
\hline
\end{tabular}
这样,TeX 就不会与&
的参数混淆\citet
。
关于您的代码的一些注释。
不要用来
\centerline{...}
居中表格,而是\begin{table}[!htp] \centering \caption{Integrated values of object} \begin{tabular}{ccccl} ... \end{tabular} \end{table}
仅使用
[h!]
作为放置选项是危险的并且可能会导致浮动队列阻塞。参考书目条目中的作者不应该放在括号中:
author = {Vink, J. and Kaastra, J.~S. and Bleeker, J.~A.~M.},
相反,应在标题字段使用括号来保护非可选的大写字母:
title = {A new mass estimate and puzzling abundances of {SNR} {Cassiopeia A.}},
添加一对括号即可,但会阻止围兜样式应用其自身的方法。