帶有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}

且輸出的顏色正確:

微波能量輸出

相關內容