我正在尝试使用listings
创建一些代码。下面的 MWE 可以工作并产生所需的输出。问题是所有内容都创建了两次,如果我想将关键字颜色更改为红色,我需要进行两次编辑,而不是一次。所以在某种意义上,我想使用\lstset
withinlstinline
或以某种方式利用Rstyle
within 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