我正在LaTeX中编写一个报告,嵌入了几个R脚本,这些脚本以非连续的Sweave块报告。
我在Stackoverflow上发现了一些关于如何自定义 Sweave 和列表包以突出显示代码和编号行的非常有用的评论。 我修改了原始的 sweave.sty 包,如下所示,以利用列表,同时避免使用太多设置来加重我的LaTeX文档。
基本上,我在使用行编号选项时遇到问题。按照配置(firstnumber = last),行在文档中逐步编号。 如果我设置firstnumber = auto,则编号在每个R代码块重新开始。
\RequirePackage[T1]{fontenc}
\RequirePackage{graphicx,ae,fancyvrb}
\IfFileExists{upquote.sty}{\RequirePackage{upquote}}{}
\setkeys{Gin}{width=0.8\textwidth}
\DefineVerbatimEnvironment{Scode}{Verbatim}{fontshape=sl, fontsize=\small}
\newenvironment{Schunk}{}{}
\usepackage{listings}
\newcommand{\indexfonction}[1]{\index{#1@\texttt{#1}}}
\usepackage[usenames,dvipsnames]{color}
\definecolor{gris90}{gray}{0.95}
\lstdefinelanguage{Renhanced}[]{R}{%
sensitive,%
morecomment=[l]\#,%
morestring=[d][\color{RoyalPurple}]",%
morestring=[d][\color{RoyalPurple}]',
alsoletter={.\%_},
alsoother={:_\$}}
\lstset{language=Renhanced,extendedchars=false,
basicstyle=\small\ttfamily,
columns=flexible,
commentstyle=\textsl,
numbers=left,
numberstyle=\small \ttfamily,
keywordstyle=\mdseries,
showstringspaces=false,
index=[1][keywords],
indexstyle=\indexfonction}
\lstnewenvironment{Sinput}[1][]{
\lstset{%
language={Renhanced},
basicstyle=\small \ttfamily,
columns=flexible,
frame=single,
backgroundcolor=\color{gris90},
numbers=left,
numberstyle=\small \ttfamily,
firstnumber=last,
#1
}
}{}
\lstnewenvironment{Soutput}[1][]{
\lstset{%
language={Renhanced},
basicstyle=\small \ttfamily,
columns=flexible,
numbers=right,
numberstyle=\tiny,
firstnumber=last,
#1
}
}{}
我想找到一个中间解决方案,其中编号在同一脚本的不同块中进行,但在不同脚本的开头重新启动表单1(可能通过手动指定)。
我认为麻烦的是,我无法手动指定列表的名称,因为Sweave在后台执行此操作。
欢迎提出建议!
答案 0 :(得分:1)
我实际上找到了一个伪解决方案。
在开始打开新脚本的代码块之前,请键入以下代码行:
\begin{lstlisting}[firstnumber=1]
\end{lstlisting}
这不会在文档中产生任何可见的输出,并会将以下块的行号重置为1(或任何其他所需的数字)。
毋庸置疑,仍然欢迎任何更优雅的解决方案!