在列表中使用 $

在列表中使用 $

我需要创建一些 jQuery 列表,但当我尝试这样做时

\documentclass[12pt,oneside,a4paper]{scrartcl}

\usepackage{textcomp}
\usepackage{listings}
\usepackage{color}


\definecolor{lightgray}{rgb}{.9, .9, .9}
\definecolor{darkgray}{rgb}{.4, .4, .4}
\definecolor{purple}{rgb}{0.65, 0.12, 0.82}

\lstdefinelanguage{JavaScript}{
        keywords={typeof, new, true, false, catch, function, return, null, catch, switch, var, if, in, while, do, else, case, break},
        keywordstyle=\color{blue}\bfseries,
        ndkeywords={class, export, boolean, throw, implements, import, this},
        ndkeywordstyle=\color{darkgray}\bfseries,
        identifierstyle=\color{black},
        sensitive=false,
        comment=[l]{//},
        morecomment=[s]{/*}{*/},
        commentstyle=\color{purple}\ttfamily,
        stringstyle=\color{red}\ttfamily,
        morestring=[b]',
        morestring=[b]"}

\lstset{
        language=JavaScript,
        backgroundcolor=\color{lightgray},
        extendedchars=true,
        basicstyle=\footnotesize\ttfamily,
        showstringspaces=false,
        showspaces=false,
        numbers=left,
        numberstyle=\footnotesize\ttfamily,
        numbersep=9pt,
        tabsize=2,
        breaklines=true,
        showtabs=false,
        frame=leftline,
        caption=\lstname}


\begin{document}

\begin{lstlisting}[name=Beispiel mit JavaScript Bibliothek (jQuery)]
\$("p").elements.each(function() {
        \$(this).html = "Element erkannt";
});
\end{lstlisting}

\end{document}

不会$显示。如果我尝试使用 正常转义它\$("#test"),它最终看起来像\ ("test")$仍将省略并显示反斜杠。

我怎样才能让它$在列表框中工作?

答案1

(这个答案基于我之前对另一个问题的回答:我之前的回答

解决方案是使用命令literate中的选项lsset。我修改了您的代码(请注意,您只需输入$,而不必\$输入实际的代码列表。出于视觉目的,我为 $ 添加了颜色,但您可以根据需要进行更改。

\documentclass[12pt,oneside,a4paper]{scrartcl}

\usepackage{textcomp}
\usepackage{listings}
\usepackage{color}


\definecolor{lightgray}{rgb}{.9, .9, .9}
\definecolor{darkgray}{rgb}{.4, .4, .4}
\definecolor{purple}{rgb}{0.65, 0.12, 0.82}

\lstdefinelanguage{JavaScript}{
        keywords={typeof, new, true, false, catch, function, return, null, catch, switch, var, if, in, while, do, else, case, break},
        keywordstyle=\color{blue}\bfseries,
        ndkeywords={class, export, boolean, throw, implements, import, this},
        ndkeywordstyle=\color{darkgray}\bfseries,
        identifierstyle=\color{black},
        sensitive=false,
        comment=[l]{//},
        morecomment=[s]{/*}{*/},
        commentstyle=\color{purple}\ttfamily,
        stringstyle=\color{red}\ttfamily,
        morestring=[b]',
        morestring=[b]"}

\lstset{
        language=JavaScript,
        backgroundcolor=\color{lightgray},
        extendedchars=true,
        basicstyle=\footnotesize\ttfamily,
        showstringspaces=false,
        showspaces=false,
        numbers=left,
        numberstyle=\footnotesize\ttfamily,
        numbersep=9pt,
        tabsize=2,
        breaklines=true,
        showtabs=false,
        frame=leftline,
        caption=\lstname,
        literate={\$}{{\textcolor{blue}{\$}}}1
        }


\begin{document}

\begin{lstlisting}[name=Beispiel mit JavaScript Bibliothek (jQuery)]
$("p").elements.each(function() {
        $(this).html = "Element erkannt";
});
\end{lstlisting}

\end{document}

结果是

在此处输入图片描述

答案2

(抱歉,我的回答似乎没有解决实际问题)

您可以在您的列表中mathescape=false添加\lstset{...}和使用非转义符号。$

如果您同时需要 mathescape 功能和显示$字符,您可以更改escapechar

相关内容