Farbproblem in Auflistungen mit Breaklines=true

Farbproblem in Auflistungen mit Breaklines=true

Ich versuche, einen bestimmten Kommentartyp mit hervorzuheben lstsliting, und die Option breaklinesbringt alles durcheinander.

Hier ist die fehlerhafte Ausgabe: Fehlerhafte Ausgabe

Die Farbe Lila (erzeugt durch das Schlüsselwort name) übernimmt und färbt den Rest der Auflistung.

Hier ist, was ich an Farben brauche (und was es normalerweise produzieren sollte): Gewünschte Ausgabe

Hier ist das 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}

Weiß jemand, warum die breaklinesOptionen den Farbfilter durcheinander bringen? Im Inhalt der Auflistung kann ich nicht alle Leerzeichen entfernen, daher ist das Entfernen, um einen Zeilenumbruch zu vermeiden, keine Option.

Ich möchte die Farbfilter UND den Zeilenumbruch haben können.

Antwort1

Ich weiß nicht, ob das die beste Lösung ist, aber es funktioniert, wenn Sie die Mehrdeutigkeit im schließenden Trennzeichen beseitigen:

\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}

Ausgabe

Antwort2

Inspiriert vondiese Antwort, die Lösung besteht darin, den Befehl zu patchen \lsthk@SelectCharTable.

Das korrigierte MWE lautet also:

\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}

Und die Ausgabe ist richtig gefärbt:

MWE-Ausgabe

verwandte Informationen