Estoy intentando resaltar un tipo de comentario específico con lstsliting
y la opción breaklines
estropea las cosas.
Aquí está la salida defectuosa:
El color violeta (producido por la palabra clave name
) toma el control y colorea el resto del listado.
Esto es lo que necesito (y el sombrero normalmente debería producir) en términos de colores:
Aquí está el 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}
¿Alguien sabe por qué las breaklines
opciones estropean el filtro de color? En el contenido del listado, no puedo eliminar todos los espacios, por lo que eliminarlos para evitar un salto de línea no es una opción.
Quiero poder tener los filtros de colores Y el salto de línea.
Respuesta1
No sé si esta es la mejor solución, pero funciona si eliminas la ambigüedad en el delimitador de cierre:
\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}
Respuesta2
Inspirado deesta respuesta, la solución es parchear el comando \lsthk@SelectCharTable
.
El MWE corregido es así:
\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}
Y la salida está coloreada correctamente: