具有多种颜色的 Latex lstlistings 关键字

具有多种颜色的 Latex lstlistings 关键字

我想使用 Latex 定义一种我自己的语言lstlistings。有两种类型的关键字,我想用不同的颜色来表示它们。例如,我想用蓝色绘制运算符,例如JOINFOREACH等。对于变量类型,我想用红色绘制它们,例如intchararray等。可以使用吗\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}

相关内容