[Tex/LaTex] cite in caption of listings

captionscitinglistings

I am trying to cite a paper in the caption of listings. I have the following code:

\begin{lstlisting}
   example
\end{lstlisting}

But this is giving me error! It says ! Illegal parameter number in definition of \reserved@a. Can anyone help me with this?

Best Answer

It seems a typical "fragile command in a moving argument problem". However the following document doesn't show any problem:

\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}

So I suspect that you're using some package that kill the robustness of \cite in some way.

A way to solve the issue is writing

\protect\cite{abc}

in the caption, but probably it can be better addressed with a minimal example available.

As correctly remarks Gonzalo Medina in his comment, there's also the possibility of writing

\begin{lstlisting}[
  caption={[Example of something]Example of something (Adapted from \cite{abc})}
]

so that only "Example of something" will be sent to the list of listings (which is very important if the adopted bibliography style is "unsorted").