![在两种环境和内联环境中的列表样式](https://linux22.com/image/402624/%E5%9C%A8%E4%B8%A4%E7%A7%8D%E7%8E%AF%E5%A2%83%E5%92%8C%E5%86%85%E8%81%94%E7%8E%AF%E5%A2%83%E4%B8%AD%E7%9A%84%E5%88%97%E8%A1%A8%E6%A0%B7%E5%BC%8F.png)
我正在尝试使用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