16

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

\begin{lstlisting}[caption=Example of something (Adapted from \cite{abc})]
   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?

2
  • Did you try \protect\cite{abc}?
    – egreg
    Commented Jun 18, 2012 at 22:42
  • I've added an answer, but please add a minimal example to your question, so that we can get a better insight into the issue.
    – egreg
    Commented Jun 18, 2012 at 22:53

1 Answer 1

18

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").

0

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .