我想使用 Latex 定义一种我自己的语言lstlistings
。有两种类型的关键字,我想用不同的颜色来表示它们。例如,我想用蓝色绘制运算符,例如JOIN
、FOREACH
等。对于变量类型,我想用红色绘制它们,例如int
、chararray
等。可以使用吗\lstdefinelanguage
?
答案1
根据@Cragfelt提供的链接,我刚刚使用以下代码解决了我的问题:
\definecolor{PigBlue}{RGB}{42, 0, 255}
\definecolor{PigRed}{RGB}{255, 0, 0}
\lstdefinelanguage{PigLatin}
{
keywords=[1]{
register ,define ,load ,store ,into ,using ,as ,join ,by ,foreach ,
generate ,filter ,group ,all ,flatten ,and ,count
},
keywordstyle=[1]\color{PigBlue},
keywords=[2]{chararray ,int ,float },
keywordstyle=[2]\color{PigRed},
sensitive=false,
morestring=[b]',
morecomment=[l]{--}
}
定义之后,我可以PigLatin
在代码的任何地方使用该语言。例如:
\lstset{language=PigLatin}
\begin{lstlisting}
raw = LOAD 'raw' USING PigStorage(',') AS (name:chararray, score:int);
\end{lstlisting}
这是一个简单的例子:
\documentclass{article}
\usepackage{listings}
\usepackage{color}
\definecolor{PigBlue}{RGB}{42, 0, 255}
\definecolor{PigRed}{RGB}{255, 0, 0}
\lstdefinelanguage{PigLatin}
{
keywords=[1]{
register ,define ,load ,store ,into ,using ,as ,join ,by ,foreach ,
generate ,filter ,group ,all ,flatten ,and ,count
},
keywordstyle=[1]\color{PigBlue},
keywords=[2]{chararray ,int ,float },
keywordstyle=[2]\color{PigRed},
sensitive=false,
morestring=[b]',
morecomment=[l]{--}
}
\begin{document}
\lstset{
numbers=left,
language=PigLatin
}
\begin{lstlisting}
raw = LOAD 'raw' USING PigStorage(',') AS (name:chararray, score:int);
\end{lstlisting}
\end{document}