lstlistings - 如何突出显示单引号和关键字

lstlistings - 如何突出显示单引号和关键字

我想在列表中突出显示一些关键字。其中一个关键字带有撇号。我搜索并阅读了相当长一段时间,发现几篇帖子表明 textcomp 对引号非常有帮助。

遵循一个最小示例。目标是将“不要”的颜色也设为橙色。有人知道我的错误吗?

最好的,TomBoo

\documentclass[a4paper, 12pt]{article}

\usepackage{listings, xcolor}
\usepackage{textcomp}

\definecolor{darkblue}{rgb}{0.0,0.0,0.6} 

\lstdefinelanguage{XML} 
{ 
  identifierstyle=\color{darkblue}, 
}

\lstdefinestyle{my-xml-style}
{
                    basicstyle=\ttfamily\footnotesize,  % Nichtproportionale Schrift, klein für den Quellcode
                    extendedchars=true,                                 % Alle Zeichen vom Latin1 Zeichensatz anzeigen.
                    keywords=[1]{attribute, xmlns},
                    keywordstyle=[1]\color{red},
                    keywords=[2]{Tove, Jani, Reminder},
                    keywordstyle=[2]\color{cyan},
                    keywords=[3]{Don\'t, forget, me, this, weekend, Don\textquotesingle t},
                    keywordstyle=[3]\color{orange},                 
                    morestring=[b]", 
                    stringstyle=\color{violet},
                    frame=tblr
}
\lstdefinelanguage{myxml}{language=XML,style=my-xml-style}



\begin{document}

\begin{lstlisting}[language=myxml]
<note attribute="main" xmlns="http://www.w3.org/1999/xhtml">
    <to>Tove</to>
    <from>Jani</from>
    <heading>Reminder</heading>
    <body>Don't forget me this weekend!</body>
</note>
\end{lstlisting}

\end{document}

答案1

问题是该字符'不能被识别为字母或数字,因此不能用作关键字。

如果你想这样做,你可以告诉listings你想要'表现得像一封信,添加

alsoletter={'}

符合你的风格。

以下 MWE

\documentclass[a4paper, 12pt]{article}

\usepackage{listings, xcolor}
\usepackage{textcomp}

\definecolor{darkblue}{rgb}{0.0,0.0,0.6}

\lstdefinelanguage{XML}
{
  identifierstyle=\color{darkblue},
}

\lstdefinestyle{my-xml-style}
{
                    basicstyle=\ttfamily\footnotesize,  % Nichtproportionale Schrift, klein für den Quellcode
                    extendedchars=true,                                 % Alle Zeichen vom Latin1 Zeichensatz anzeigen.
                    keywords=[1]{attribute, xmlns},
                    keywordstyle=[1]\color{red},
                    keywords=[2]{Tove, Jani, Reminder},
                    keywordstyle=[2]\color{cyan},
                    keywords=[3]{Don't, forget, me, this, weekend},
                    keywordstyle=[3]\color{orange},
                    alsoletter={'},
                    morestring=[b]",
                    stringstyle=\color{violet},
                    frame=tblr
}
\lstdefinelanguage{myxml}{language=XML,style=my-xml-style}



\begin{document}

\begin{lstlisting}[language=myxml]
<note attribute="main" xmlns="http://www.w3.org/1999/xhtml">
    <to>Tove</to>
    <from>Jani</from>
    <heading>Reminder</heading>
    <body>Don't forget me this weekend!</body>
</note>
\end{lstlisting}

\end{document}

给出了期望的结果:

在此处输入图片描述

相关内容