Adicionando uma palavra-chave especial que é ignorada em lstinputlisting

Adicionando uma palavra-chave especial que é ignorada em lstinputlisting

Gostaria de saber como adicionar uma palavra-chave especial para serignoradoem \lstinputlistingque é usado no listingspacote.

A captura de tela mostra meu problema. Estou escrevendo um documento tutorial da estrutura de análise de dados ROOT (https://root.cern.ch) que possui seu próprio interpretador C++ com um prompt de usuário root [n]conforme mostrado abaixo.

insira a descrição da imagem aqui

Na maioria dos casos, usar o lstlistingambiente e a c++opção funciona bem para o interpretador ROOT. Mas quando root (cont'ed, cancel with .@)é impressa no interpretador, a aspa simples nesta mensagem é considerada como o início de uma string C e, portanto, a cor do código é alterada para verde.

\begin{lstlisting}[language=c++,breaklines=true]
root [0] TH2D* h2 = new TH2D("h2", "2D Gaussian Distribution;#it{x};#it{y};Entries", 100, -10, 10, 100, -10, 10)
(TH2D *) 0x7fe8c3615eb0
root [1] const Double_t kSigma = 2.
(const Double_t) 2.00000
root [2] for(Int_t i = 0; i < 100000; i++){
root (cont'ed, cancel with .@) [3] Double_t x = gRandom->Gaus(0, kSigma);
root (cont'ed, cancel with .@) [4] Double_t y = gRandom->Gaus(0, kSigma);
root (cont'ed, cancel with .@) [5] h2->Fill(x, y);
root (cont'ed, cancel with .@) [6] }
root [7] TCanvas* can = new TCanvas("can", "can", 600, 600)
(TCanvas *) 0x7fe8c359a9a0
root [8] h2->Draw("colz")
\end{lstlisting}

Gostaria de saber como comandar o listingspacote para ignorar esta aspa simples. Existe alguma maneira de adicionar a string cont'eda algo como a lista "ignorar"?

Responder1

Encontrei uma solução provisória que usa mathescape, mas ainda estou procurando uma solução melhor.

\newcommand{\conted}{\texttt{cont'ed}} % for ROOT 6 prompt

\begin{lstlisting}[language=c++,breaklines=true,mathescape]
root [0] TH2D* h2 = new TH2D("h2", "2D Gaussian Distribution;#it{x};#it{y};Entries", 100, -10, 10, 100, -10, 10)
(TH2D *) 0x7fe8c3615eb0
root [1] const Double_t kSigma = 2.
(const Double_t) 2.00000
root [2] for(Int_t i = 0; i < 100000; i++){
root ($\conted$, cancel with .@) [3] Double_t x = gRandom->Gaus(0, kSigma);
root ($\conted$, cancel with .@) [4] Double_t y = gRandom->Gaus(0, kSigma);
root ($\conted$, cancel with .@) [5] h2->Fill(x, y);
root ($\conted$, cancel with .@) [6] }
root [7] TCanvas* can = new TCanvas("can", "can", 600, 600)
(TCanvas *) 0x7fe8c359a9a0
root [8] h2->Draw("colz")
\end{lstlisting}

informação relacionada