禁用 lstset 中的关键字突出显示

禁用 lstset 中的关键字突出显示

我为我的列表定义了以下列表集

\lstset{
    numbers=left,                
    numberstyle=\scriptsize,
    tabsize=4,
    rulecolor=,
    language=java,
        basicstyle=\scriptsize,
        upquote=true,
        aboveskip={1.5\baselineskip},
        columns=fixed,
        showstringspaces=false,
        extendedchars=true,
        breaklines=true,
        prebreak = \raisebox{0ex}[0ex][0ex]{\ensuremath{\hookleftarrow}},
        frame=single,
        showtabs=false,
        showspaces=false,
        showstringspaces=false,
        identifierstyle=\ttfamily,
}

但是,问题是,当我在列表中创建一些 Java 代码时,关键字(例如 private、boolean、return 等)会以粗体突出显示。我不想这样。是否可以禁用粗体关键字突出显示?

答案1

有一个名为的键/值参数keywordstyle=<value>,您可以在其中重新定义关键字样式。

默认设置为:关键字已排版大胆的以及评论斜体。添加keywordstyle=\ttfamily\lstset重新定义它:

\documentclass{article}

\usepackage{listings}
\usepackage{upquote}

\lstset{
    numbers=left,                
    numberstyle=\scriptsize,
    tabsize=4,
    rulecolor=,
    language=java,
        basicstyle=\scriptsize,
        upquote=true,
        aboveskip={1.5\baselineskip},
        columns=fixed,
        showstringspaces=false,
        extendedchars=true,
        breaklines=true,
        prebreak = \raisebox{0ex}[0ex][0ex]{\ensuremath{\hookleftarrow}},
        frame=single,
        showtabs=false,
        showspaces=false,
        showstringspaces=false,
        identifierstyle=\ttfamily,
        keywordstyle=\ttfamily
}

\begin{document}

\begin{lstlisting}
public class HelloWorld {

    // main method
    public static void main(String[] args) {
        System.out.println("Hello world");
    }
}
\end{lstlisting}

\end{document}

输出:

你好世界

希望能帮助到你。=)

答案2

除了 Paulo 的答案将关键字的样式更改为与周围文本相同之外,您还可以通过keywords={}在语言规范后添加来消除已识别的关键字集。

代码:

\documentclass{article}
\usepackage{listings}
\usepackage{upquote}

\lstset{
    numbers=left, numberstyle=\scriptsize,
    columns=fixed, frame=single, rulecolor=, aboveskip=1.5\baselineskip,
    showspaces=false, showstringspaces=false,
    showtabs=false, tabsize=4, extendedchars=true,
    breaklines=true, prebreak=\raisebox{0ex}[0ex][0ex]{\ensuremath{\hookleftarrow}},
    language=java,
    upquote=true,
    basicstyle=\scriptsize, identifierstyle=\ttfamily,
    keywords={}
}

\begin{document}

\begin{lstlisting}
public class HelloWorld {
    // main method
    public static void main(String[] args) {
        System.out.println("Hello world");
    }
}
\end{lstlisting}
\end{document}

输出:

关键字设置为空的代码列表

相关内容