在表中使用包含 & 符号的 bib 键(例如 2000A&AS..143..391S)?

在表中使用包含 & 符号的 bib 键(例如 2000A&AS..143..391S)?

我目前被这个问题困扰着。

以下是我需要引用的一篇论文的典型 .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


关于您的代码的一些注释。

  1. 不要用来\centerline{...}居中表格,而是

    \begin{table}[!htp]
    \centering
    
    \caption{Integrated values of object}
    
    \begin{tabular}{ccccl}
    ...
    \end{tabular}
    
    \end{table}
    
  2. 仅使用[h!]作为放置选项是危险的并且可能会导致浮动队列阻塞。

  3. 参考书目条目中的作者不应该放在括号中:

    author = {Vink, J. and Kaastra, J.~S. and Bleeker, J.~A.~M.},
    
  4. 相反,应在标题字段使用括号来保护非可选的大写字母:

    title = {A new mass estimate and puzzling abundances of {SNR} {Cassiopeia A.}},
    

    添加一对括号即可,但会阻止围兜样式应用其自身的方法。

相关内容