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}

그리고 출력의 색상이 적절하게 지정되었습니다.

MWE 출력

관련 정보