Проблема цвета в списках с breaklines=true

Проблема цвета в списках с breaklines=true

Я пытаюсь выделить определенный тип комментариев с помощью lstsliting, но эта опция breaklinesвсе портит.

Вот неисправный вывод: Неисправный выход

Фиолетовый цвет (полученный с помощью ключевого слова name) берет верх и окрашивает остальную часть списка.

Вот что мне нужно (и что шляпа должна обычно давать) с точки зрения цветов: Желаемый результат

Вот 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}

Кто-нибудь знает, почему breaklinesопции портят цветной фильтр? В содержании листинга я не могу избавиться от всех пробелов, поэтому удаление их, чтобы избежать переноса строки, не является вариантом.

Я хочу иметь возможность использовать цветные фильтры И разрыв строки.

решение1

Я не знаю, является ли это лучшим решением, но оно работает, если убрать неоднозначность в закрывающем разделителе:

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

выход

решение2

Вдохновленоэтот ответ, решение — исправить команду \lsthk@SelectCharTable.

Исправленный MWE таким образом:

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

И вывод правильно раскрашен:

Выход МВЭ

Связанный контент