我有以下用于 SQL 排版的 MWE。对我不起作用且需要帮助的是两件事:
- 我想添加“SUCH AS”作为关键词(或在文本中将其加粗而不将其定义为关键词);并且
我需要“域”不要加粗,但即使我将它包含在内,它仍坚持将其排版为粗体
deletekeywords
。不知道那里发生了什么。\documentclass[border=2pt]{standalone} \usepackage{newtxtext,newtxmath} \usepackage{listings} \lstset{language=SQL,basicstyle=\ttfamily,keywordstyle=\bfseries, showspaces=false,showstringspaces=false, morekeywords={*,IF,DEFINE,OPTIONS, SERVER, MENTIONS, SUCH THAT}, deletekeywords={domain}, mathescape=true, aboveskip=0pt, belowskip=6pt} \begin{document} \begin{lstlisting} FROM Relation SUCH THAT domain-condition \end{lstlisting} \end{document}
非常感谢您的帮助。这是我排版后的结果。
答案1
要删除domain
关键字,您必须将其拼写为大写,deletekeywords
因为这是它在驱动程序文件。
此外,关键字中不能出现空格。您或许可以将空格设为字母或其他字符,并据此定义关键字,但这可能会导致断字机制出现问题。
一个简单的解决方案是使用literate
选项用相同的字符串替换每个文字出现的次数SUCH THAT
,并应用相应的样式。
总之,新的列表设置将如下所示(修改后的选项已突出显示):
\lstset{ 语言=SQL, basicstyle=\ttfamily, keywordstyle=\bfseries, 显示空间=false, 显示字符串空间=false, 更多关键字={*,IF,DEFINE,OPTIONS,SERVER,MENTIONS}, 删除关键字={DOMAIN}, mathescape = true, aboveskip=0pt, belowskip=6pt, 识字={如此\ THAT}{\bfseries如此\ THAT}{9} }