我使用 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}