使用 listings 包的问题

使用 listings 包的问题

我正在使用 LaTeX 撰写实习报告(一个月前我开始学习它),并且在使用该包时遇到了一些问题listings。我不确定是否一切皆有可能:

  1. 我如何为代码添加特定的突出显示?我的意思是,我知道如何为关键字或注释着色,但我想添加新字符或模式(例如@$1$~2。请参阅附件以获取更多信息。
  2. 如何在报告中切换两种语言(因此切换两种不同的语法突出显示)?目前,我只使用command.com(又名批处理 WinXP =D),但如果我想C++先写入,然后写入,command.com再写入,该怎么办?
  3. 然后,我真正的问题是:为什么空格字符在第 13 行变得可见(见附件)?具体来说,当我使用两个双引号时,它从第 12 行开始(当我删除一个时一切正常)。我认为 LaTeX 将所有内容解释为字符串,但......事实并非如此 =D
  4. 最后(我认为这会很棘手,甚至不可能),我是否可以将自己的语言添加到 解释的语言中listings?在实习中,我主要使用语言(由 PCSoft 制作),当然列表包。目前,我通过将代码设置到环境中typewriter并使用来避免该问题\textcolor{mycolor}{mykeyword},但这并不是最好的方法。我丢失了行号和制表符。

为了更好地理解,下面是我编译后得到的结果:

编译结果

以下是我所做的最少的代码:

\documentclass[10pt]{scrreprt}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[ansinew]{inputenc}
\usepackage[french]{babel}

\usepackage{fancyhdr}
\usepackage{numprint}
\usepackage{color}
    \definecolor{bat-bg}{rgb}{.16,.19,.2}
    \definecolor{bat-norm}{rgb}{.9,.9,.9}
    \definecolor{bat-comm}{rgb}{.4,.45,.48}
    \definecolor{bat-kw}{rgb}{.57,.78,.39}
    \definecolor{bat-str}{rgb}{.2,.38,.62}




\usepackage{listings}

\lstset{
    language={[WinXP]command.com},
    basicstyle=\color{bat-norm}\footnotesize\ttfamily,
    numbers=left,
    numberstyle=\normalsize,
    numbersep=7pt,
    backgroundcolor=\color{bat-bg},  
    commentstyle=\color{bat-comm},
    keywordstyle=\color{bat-kw},
    numberstyle=\tiny\color{bat-bg},
    stringstyle=\color{bat-str},
    tabsize=2
}

\fancypagestyle{monstyle}{
    % Things that define my style
    % I don't really think that fancypagestyle is the cause of the problem, but I let it
}
\pagestyle{monstyle}


\begin{document}



    \begin{lstlisting}
        @echo off   rem désactive l’affichage des commandes
        cls             rem efface les lignes précédentes

        rem on envoie les paramètres dans des variables
        rem l’ajout du tilde supprime les double quote entourantes ("")
        set requestType=%1
        set params=%~2
        set url=%3
        set redirect=%4

        rem remplacement de "" par " et de #egal# par =
        set params= %params:""="%
        set url= %url:#egal#==%

        curl -X "%requestType%" %params% %url% > %redirect%
    \end{lstlisting}     
\end{document}

更新

我解决了我的问题。

为了在代码中添加特定的突出显示,我必须使用morekeywords={my, new, keywords},而为了以其他方式为其着色,我必须写道:

\lstdefinestyle{batch}{
    language={[WinXP]command.com},
    commentstyle=\color{bat-comm},
    keywordstyle=\color{bat-kw},
    keywords=[2]{@},
    keywords=[3]{\%1,\%~2,\%3,\%4, \%params\%, \%url\%, \%redirect\%},
    keywords=[4]{curl},
    keywordstyle=[2]\color{bat-at},
    keywordstyle=[3]\color{bat-str},
    keywordstyle=[4]\color{bat-cmd} 
}

现在,我知道了如何在两种语言之间切换:我必须定义两种样式,然后在做列表时使用它们:\begin{lstlisting}[style=MyOtherStyle]

最后,为了转义双引号,我可以escapechar={°}在中写入,然后在with\lstset中转义引号。\begin{lstlisting}°\color{mycolor}{"}°

相关内容