列表中的关键字加粗,但删除关键字似乎不起作用

列表中的关键字加粗,但删除关键字似乎不起作用

我使用 lstlisting 包来记录 SQL 查询。但是,单词特点以粗体显示,因为它被视为关键字。我将其添加到要删除的关键字列表中deletekeywords,但似乎不起作用。但是,如果我将 WHERE 放入列表列表中deletekeywords,它确实有效,取消了它的粗体。

将其从关键字列表中移出。

\documentclass{article}
\usepackage{listings}
\usepackage{textcomp} % listings straight quote
\begin{document}
    \lstset{
        language=SQL,tabsize=2,upquote=true,
        %keywordstyle=\ttfamily\bfseries,basicstyle=\ttfamily,
        moredelim=[is][\underbar]{__}{__},
        morekeywords={ilike},
        sensitive=false,
        deletekeywords = {CHARACTER,character,WHERE},
    }
  \begin{lstlisting}
  SELECT m.title,c.id,p.name,ch.name
  FROM movie m
  JOIN casting c ON m.id = c.movie_id
  JOIN person p ON p.id=c.person_id
  JOIN character ch ON ch.id=c.char_id
  WHERE m.title ILIKE '%legend%';
  \end{lstlisting} 
\end{document}

不删除关键字的列表示例

答案1

根据listings手册,传递给deletekeywords选项的参数应如下所示deletekeywords=[<number>]{<list of keywords>}。我在文档中没有找到正确的方法<number>,但稍微调整一下值就会发现它<number>=2适用于你的情况。

\documentclass{article}
\usepackage{listings}
\usepackage{textcomp} % listings straight quote
\begin{document}
    \lstset{
        language=SQL,tabsize=2,upquote=true,
        %keywordstyle=\ttfamily\bfseries,basicstyle=\ttfamily,
        moredelim=[is][\underbar]{__}{__},
        morekeywords={ilike},
        sensitive=false,
        deletekeywords =[2]{CHARACTER,character,WHERE},
    }
  \begin{lstlisting}
  SELECT m.title,c.id,p.name,ch.name
  FROM movie m
  JOIN casting c ON m.id = c.movie_id
  JOIN person p ON p.id=c.person_id
  JOIN character ch ON ch.id=c.char_id
  WHERE m.title ILIKE '%legend%';
  \end{lstlisting} 
\end{document}

在此处输入图片描述

相关内容