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出力

関連情報