如何在列表中定义多个标识符类和样式?

如何在列表中定义多个标识符类和样式?

我正在尝试为包中的不同单词组添加不同的样式(颜色等)listings。请注意,我的问题不同于如何在列表的 emphstyle 中使用多个声明(\textbf、\emph)?

让我给你展示一些代码:

\documentclass{article}
\usepackage{listings}
\begin{document} 
...
\begin{lstlisting}
    {
        "id": {integer},
        "login": {string},
        "password": {string},
        "name": {string},
        "picture": {
            File Resource
        }
    }    
    ...       
    PUT /files/{file_id}
\end{lstlisting}
\end{document}

我使用该\lstset命令来定义以下内容:

...
    emph={  % HTTP Request
        GET,POST,PUT,DELETE
    },
    emphstyle={\color{green}},
...

但我想添加更多具有不同风格(颜色等)的单词,就像这样

...
    emph2={  % Variable Types
        integer,string,blob,datetime
    },
    emphstyle2={\color{darkBlue}},
...

我怎样才能做到这一点?

答案1

你已经成功了一半。listings手册(v1.5b 中的第 31 页)告诉你,可以使用以下方法定义多个标识符类和相关样式:

\emph=[<number>]{<identifier list>}
\emphstyle=[<number>]{<identifier style>}

其中<number>是您选择的与所讨论的标识符类别相关的某个整数。

在此处输入图片描述

\documentclass{article}

\usepackage{xcolor}
\usepackage{listings}

\lstset%
{%
    emph=[1]%
    {%
        DELETE,
        GET,
        POST,
        PUT,
    },
    emphstyle=[1]{\color{green}},
    %
    emph=[2]% Variable Types
    {% 
        blob,
        datetime,
        integer,
        string,
    },
  emphstyle=[2]{\color{blue}},
}

\begin{document} 
...
\begin{lstlisting}
    {
        "id": {integer},
        "login": {string},
        "password": {string},
        "name": {string},
        "picture": {
            File Resource
        }
    }    
    ...       
    PUT /files/{file_id}
\end{lstlisting}
\end{document}

答案2

对@Jubobs 的回答的补充,以提醒用户listings v1.6(也许也适用于后续版本,我还没有检查)。

在 中,在和listings v1.6中指定组的有效语法已更改为emphkeywords

emph={[2]...}, emphstyle={[2]...}
keywords={[1]...}, keywordstyle={[1]...}

listings这些可以在手册(v1.6,p22)中找到。

相关内容