我正在使用以下方式格式化文档中的 SQL 代码minted
:
\usepackage{minted}
\newmintedfile[sql]{sql}{breaklines=true,samepage,fontsize=\footnotesize}
% ...
\sql{query.sql}
在一些文件中,我将其用作source
列名,但 minted 将其识别为关键字。不过,在我的 SQL 方言中,这没问题。
有没有一种简单的方法可以让我禁用source
minted 中的关键字?
梅威瑟:
\documentclass[10pt]{article}
\usepackage{minted}
\newmintedfile[sql]{sql}{breaklines=true,tabsize=4,samepage,frame=none,fontsize=\footnotesize}
\begin{document}
\sql{query.sql}
\end{document}
query.sql 中的 SQL 如下:
SELECT
schedule,
cost
FROM
Schedule
WHERE
source = 'x'
AND
destination = 'y';
答案1
可以修补 Pygments 宏来执行您想要的操作。宏的形式为\PYG<style>{<token type>}{<code>}
(Pygments 令牌类型)。对于default
样式,这是\PYGdefault
。要使补丁发挥作用,您需要设置样式前修补,以便样式宏存在。Pygments 将其视为source
关键字,即\PYGdefault{k}{source}
。补丁检测到文字文本source
,并从关键字 ( k
) 切换到名称 ( n
)。
请注意,这仅适用于minted
2.0+(您正在使用的版本,因为您有该breaklines
选项)。
\documentclass{article}
\usepackage{minted}
\usemintedstyle{default}
\AtBeginEnvironment{minted}{%
\let\originalPYGdefault\PYGdefault
\renewcommand{\PYGdefault}[2]{%
\ifstrequal{#1}{k}%
{\ifstrequal{#2}{source}%
{\originalPYGdefault{n}{#2}}%
{\originalPYGdefault{#1}{#2}}}%
{\originalPYGdefault{#1}{#2}}%
}%
}
\begin{document}
\begin{minted}[breaklines=true,tabsize=4,samepage,frame=none,fontsize=\footnotesize]{sql}
SELECT
schedule,
cost
FROM
Schedule
WHERE
source = 'x'
AND
destination = 'y';
\end{minted}
\end{document}