Legenda opcional em listagens (para listoflistings)

Legenda opcional em listagens (para listoflistings)

Tenho algumas citações em minhas legendas. Mas não quero que apareçam na tabela de números ou listagens. Com figuras consegui exibir uma legenda diferente como esta:

\begin{figure}
  \centering
  \includegraphics[width=0.55\linewidth]{images/FIPA_Message-Transport-Reference-Model}
  \caption[FIPA Message Transport Reference Model]{FIPA Message Transport Reference Model (\cite{FIPA2000}).}
  \label{fig:FIPA_Message-Transport-Reference-Model}
\end{figure} 

Mas com lstlisting tenho alguns problemas porque a legenda é uma opção das listagens e parece não ter um rótulo de legenda opcional.

\begin{lstlisting}[ language=Scala,
label={lst:Publisher},
caption={Publisher notify\cite{Zenger2013}}] 
  protected def publish(event: Evt) {
    filters.keys.foreach(sub =>
      if (!suspended.contains(sub) && filters.entryExists(sub, p => p(event)))
        sub.notify(self, event)
    )
  }
\end{lstlisting}

Alguma idéia de como resolver isso? Desde já, obrigado!

Responder1

Isto é abordado na Seção 4.9 dolistingsdocumentação; você pode usar

caption={[short caption]long caption}

Aqui está um MWE completo para demonstrar:

% arara: pdflatex
% !arara: indent: {overwrite: yes}
\documentclass{article}
\usepackage{listings}


\begin{document}

\lstlistoflistings
\begin{lstlisting}[ 
label={lst:Publisher},
caption={[caption for lol]Publisher notify\cite{Zenger2013}}] 
  protected def publish(event: Evt) {
    filters.keys.foreach(sub =>
      if (!suspended.contains(sub) && filters.entryExists(sub, p => p(event)))
        sub.notify(self, event)
    )
  }
\end{lstlisting}

\end{document}

informação relacionada