防止突出显示以方括号开头的字符串中的关键字

防止突出显示以方括号开头的字符串中的关键字

我在 pdfLaTeX 中有以下 MWE。

\documentclass{article}
\usepackage{color}
\usepackage[utf8]{inputenc}
\usepackage{listings}
\definecolor{dkgreen}{rgb}{0,0.6,0}
\definecolor{gray}{rgb}{0.5,0.5,0.5}
\definecolor{mauve}{rgb}{0.58,0,0.82}
\lstset{
    language=SQL,
    basicstyle={\small\ttfamily},
    belowskip=3mm,
    breakatwhitespace=true,
    breaklines=true,
    classoffset=0,
    columns=flexible,
    commentstyle=\color{dkgreen},
    framexleftmargin=0.25em,
    frameshape={}{}{}{},
    keywordstyle=\color{blue},
    numbers=none,
    numberstyle=\tiny\color{gray},
    showstringspaces=false,
    stringstyle=\color{mauve},
    tabsize=3,
    upquote=true,
    xleftmargin=1em
}
\begin{document}
\begin{lstlisting}
SELECT e.[column] [Number example],
FROM Example e;
\end{lstlisting}
\end{document}

这将产生以下内容。

当前状态

但是,我希望得到与 Microsoft SQL Server Management Studio 的突出显示更加一致的东西,看起来像这样。

在 Studio 中突出显示

如您所见,Number上图中的类型未突出显示。当为 Oracle 重写相同的内容时,它看起来也是可以接受的。我也会接受会变成紫色的答案[Number example]

使用 Oracle 语法突出显示

我尝试在网上寻找答案,但一无所获。

答案1

以下使用键变成[...]一个带有颜色的字符串(如果删除,您将得到描述为“也接受”的紫红色/紫色输出):blackmorestring[\color{black}]

\documentclass{article}
\usepackage{color}
\usepackage[utf8]{inputenc}
\usepackage{listings}
\definecolor{dkgreen}{rgb}{0,0.6,0}
\definecolor{gray}{rgb}{0.5,0.5,0.5}
\definecolor{mauve}{rgb}{0.58,0,0.82}
\lstset{
    language=SQL,
    basicstyle={\small\ttfamily},
    belowskip=3mm,
    breakatwhitespace=true,
    breaklines=true,
    classoffset=0,
    columns=flexible,
    commentstyle=\color{dkgreen},
    framexleftmargin=0.25em,
    frameshape={}{}{}{},
    keywordstyle=\color{blue},
    numbers=none,
    numberstyle=\tiny\color{gray},
    showstringspaces=false,
    stringstyle=\color{mauve},
    tabsize=3,
    upquote=true,
    xleftmargin=1em
    ,morestring=[s][\color{black}]{[}{]}
}
\begin{document}
\begin{lstlisting}
SELECT e.[column] [Number example],
FROM Example e;
\end{lstlisting}
\end{document}

在此处输入图片描述

相关内容