在两种环境和内联环境中的列表样式

在两种环境和内联环境中的列表样式

我正在尝试使用listings创建一些代码。下面的 MWE 可以工作并产生所需的输出。问题是所有内容都创建了两次,如果我想将关键字颜色更改为红色,我需要进行两次编辑,而不是一次。所以在某种意义上,我想使用\lstsetwithinlstinline或以某种方式利用Rstylewithin lstnewenvironment。我通过反复试验尝试了这些组合,但似乎只出现了错误。

\documentclass{article}

\usepackage{listings}
\usepackage{xcolor}


\lstnewenvironment{R}{\lstset{
  language=R,
  backgroundcolor=\color{yellow!30!white},
  basicstyle={\footnotesize\ttfamily\color{black}},
  keywordstyle=\color{blue},
  stringstyle=\color{green!50!black},
}}{}


\lstdefinestyle{Rstyle}
{
  language=R,
  backgroundcolor=\color{yellow!30!white},
  basicstyle={\footnotesize\ttfamily\color{black}},
  keywordstyle=\color{blue},
  stringstyle=\color{green!50!black},
}

\newcommand{\Rinline}[1]{\lstinline[style=Rstyle]{#1}}


%%%%%%%%%%%%%%%%%%% 
\begin{document}

\begin{R}
x <- length(db[db=="Red"])
\end{R}


\Rinline{x <- length(db[db=="Red"])}


\end{document}

答案1

简单来说,只需style=Rstyle在您的环境定义中使用即可。

我在 SASnRdisplay 包中广泛使用它

答案2

希望您期待columns=fixed标签,标签如下:

\documentclass{article}

\usepackage{listings}
\usepackage{xcolor}


\lstnewenvironment{R}{\lstset{
  language=R,columns=fixed,
%  backgroundcolor=\color{yellow!30!white},
  basicstyle={\footnotesize\ttfamily\color{black}},
  keywordstyle=\color{blue},
  stringstyle=\color{green!50!black},
}}{}


\lstdefinestyle{Rstyle}
{
  language=R,columns=fixed,
%  backgroundcolor=\color{yellow!30!white},
  basicstyle={\footnotesize\ttfamily\color{black}},
  keywordstyle=\color{blue},
  stringstyle=\color{green!50!black},
}

\newcommand{\Rinline}[1]{\lstinline[style=Rstyle]{#1}}


%%%%%%%%%%%%%%%%%%% 
\begin{document}

\begin{R}
x <- length(db[db=="Red"])
\end{R}

\noindent
\Rinline{x <- length(db[db=="Red"])}


\end{document}

输出:

在此处输入图片描述

请注意,我已从您的...backgroundcolor=\color{yellow!30!white}中删除了该选项。MWE

相关内容