我正在尝试在列表标题中引用一篇论文。我有以下代码:
\begin{lstlisting}[caption=Example of something (Adapted from \cite{abc})]
example
\end{lstlisting}
但这给了我错误!它说! Illegal parameter number in definition of \reserved@a
。有人能帮我解决这个问题吗?
答案1
这看起来像是一个典型的“移动参数中的脆弱命令问题”。但是以下文档没有显示任何问题:
\documentclass{article}
\usepackage{listings}
\begin{document}
\lstlistoflistings
\begin{lstlisting}[caption=Example of something (Adapted from \cite{abc})]
example
\end{lstlisting}
\begin{thebibliography}{1}
\bibitem{abc} x
\end{thebibliography}
\end{document}
\cite
所以我怀疑您正在使用某种会以某种方式破坏稳健性的包。
解决这个问题的一种方法是写作
\protect\cite{abc}
在标题中,但可能用最少的例子可以更好地解决这个问题。
正如 Gonzalo Medina 在其评论中正确指出的那样,也有可能写作
\begin{lstlisting}[
caption={[Example of something]Example of something (Adapted from \cite{abc})}
]
这样只有“某事物的示例”才会被发送到列表列表(如果采用的参考书目样式是“未分类”的话,这一点非常重要)。