lstlisting 错误地将代码解析为字符串样式(语言 = R)

lstlisting 错误地将代码解析为字符串样式(语言 = R)

请看一下这张图片。有人能帮我解决这个问题吗?

在此处输入图片描述

如您所见,lstlisting 将我的代码块视为字符串,但事实并非如此(只有引号中的内容才应该是淡紫色)。这是一个最简单的例子:

\documentclass{report}

\usepackage[usenames,dvipsnames]{color}
\usepackage{listings}
\definecolor{mauve}{rgb}{0.58,0,0.82}

\lstset{ %
  language=R,                     % the language of the code
  basicstyle=\footnotesize,       % the size of the fonts that are used for the code
  numbers=left,                   % where to put the line-numbers
  numberstyle=\tiny\color{Gray},  % the style that is used for the line-numbers
  stepnumber=1,                   % the step between two line-numbers. If it's 1, each line
                                  % will be numbered
  numbersep=5pt,                  % how far the line-numbers are from the code
  backgroundcolor=\color{white},  % choose the background color. You must add \usepackage{color}
  showspaces=false,               % show spaces adding particular underscores
  showstringspaces=false,         % underline spaces within strings
  showtabs=false,                 % show tabs within strings adding particular underscores
  frame=single,                   % adds a frame around the code
  rulecolor=\color{black},        % if not set, the frame-color may be changed on line-breaks within not-black text (e.g. commens (green here))
  tabsize=2,                      % sets default tabsize to 2 spaces
  captionpos=b,                   % sets the caption-position to bottom
  breaklines=true,                % sets automatic line breaking
  breakatwhitespace=false,        % sets if automatic breaks should only happen at whitespace
  title=\lstname,                 % show the filename of files included with \lstinputlisting;
                                  % also try caption instead of title
  keywordstyle=\color{blue},      % keyword style
  commentstyle=\color{ForestGreen},   % comment style
  stringstyle=\color{mauve},         % string literal style 
  escapeinside={\%*}{*)},         % if you want to add a comment within your code
  morekeywords={*,...}            % if you want to add more keywords to the set
}

\begin{document}
\begin{lstlisting}
  x3 <- scan(filenames[i], what = "", nlines = 1, sep="\n", quote = "\"",skip=data.row)  #Reads first line of data as text
  csvtype <- grepl(",",x3) #Checks for existance of "," in x3
  if (csvtype ==TRUE)
  {
    seperator=","
  } else {
    seperator=";"
  }
\end{lstlisting}
\end{document}

答案1

根据我之前的评论发布解决方案。

由于 R 中的单引号'和双"引号可以互换,因此将quote参数设置scanquote = '\"'将在代码仍然有效时修复突出显示。

相关内容