Estou tentando destacar um tipo de comentário específico com lstsliting
e a opção breaklines
bagunça tudo.
Aqui está a saída com defeito:
A cor roxa (produzida pela palavra-chave name
) assume o controle e colore o restante da listagem.
Aqui está o que eu preciso (e o chapéu normalmente deveria produzir) em termos de cores:
Aqui está o MWE:
\documentclass{article}
\usepackage[]{geometry}
\usepackage[dvipsnames,svgnames,usenames,table]{xcolor} % Smart color names
\usepackage{listings}
\lstdefinestyle{system}{%
% breaklines=true, % <-- This makes the color scheme go nuts
breakatwhitespace=true, % <-- Even with this
keywordstyle=\color{Blue},
basicstyle=\normalfont\ttfamily,
morecomment=[s][\color{Blue}]{[*}{]},
morecomment=[s][\color{Green}]{[+}{]},
morecomment=[s][\color{Red}]{[-}{]},
morecomment=[n][\color{Purple}]{(name:}{)},
morecomment=[n][\color{Gray}]{(domain:}{)},
}
\begin{document}
\begin{lstlisting}[style=system]
test X:445 Test [+] Success1 (name:system) (domain:web)
test X:445 Test [-] Failure 10.0 (name:system) (domain:web)
test X:445 Test [*] Don't know 10.0 (name:system) (domain:web)
\end{lstlisting}
\end{document}
Alguém sabe por que as breaklines
opções bagunçam o filtro colorido? No conteúdo da listagem não consigo me livrar de todos os espaços, então removê-los para evitar quebra de linha não é uma opção.
Quero poder ter os filtros coloridos E a quebra de linha.
Responder1
Não sei se esta é a melhor solução, mas funciona se você remover a ambigüidade no delimitador de fechamento:
\documentclass{article}
\usepackage{geometry}
\usepackage[dvipsnames,svgnames,usenames,table]{xcolor}
\usepackage{listings}
\lstdefinestyle{system}{%
breaklines=true,
keywordstyle=\color{Blue},
basicstyle=\normalfont\ttfamily,
morecomment=[s][\color{Blue}]{[*}{]},
morecomment=[s][\color{Green}]{[+}{]},
morecomment=[s][\color{Red}]{[-}{]},
morecomment=[n][\color{Purple}]{(name:}{m)},
morecomment=[n][\color{Gray}]{(domain:}{b)},
}
\begin{document}
\begin{lstlisting}[style=system]
test X:445 Test [+] Success1 (name:system) (domain:web)
test X:445 Test [-] Failure 10.0 (name:system) (domain:web)
test X:445 Test [*] Don't know 10.0 (name:system) (domain:web)
\end{lstlisting}
\end{document}
Responder2
Inspirado emesta resposta, a solução é corrigir o comando \lsthk@SelectCharTable
.
O MWE corrigido é assim:
\documentclass{article}
\usepackage[]{geometry}
\usepackage[dvipsnames,svgnames,usenames,table]{xcolor} % Smart color names
\usepackage{listings}
\usepackage{etoolbox}
\makeatletter
\patchcmd{\lsthk@SelectCharTable}{)}{`}{}{}
\makeatother
\lstdefinestyle{system}{%
breaklines=true,
breakatwhitespace=true,
keywordstyle=\color{Blue},
basicstyle=\normalfont\ttfamily,
morecomment=[s][\color{Blue}]{[*}{]},
morecomment=[s][\color{Green}]{[+}{]},
morecomment=[s][\color{Red}]{[-}{]},
morecomment=[n][\color{Purple}]{(name:}{)},
morecomment=[n][\color{Gray}]{(domain:}{)},
}
\begin{document}
\begin{lstlisting}[style=system]
test X:445 Test [+] Success1 (name:system) (domain:web)
test X:445 Test [-] Failure 10.0 (name:system) (domain:web)
test X:445 Test [*] Don't know 10.0 (name:system) (domain:web)
\end{lstlisting}
\end{document}
E a saída está colorida corretamente: