私はいくつかの R スクリプトを埋め込んで、LaTeX でレポートを書いています。これらは、連続していない Sweave チャンクでレポートされます。
Sweaveとリストパッケージをカスタマイズしてコードと行番号を強調表示する方法について、Stackoverflow で非常に役立つコメントを見つけました。元のsweave.styパッケージを次のように変更して、LaTeX ドキュメントに多くの設定を負担させずにリストを利用できるようにしました。
基本的に、行番号付けオプションに問題があります。設定どおり (firstnumber=last)、ドキュメント全体で行に番号が付けられます。firstnumber=auto を設定すると、番号付けは R コードの各チャンクで 1 から再開されます。
\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 がバックグラウンドで行うためです。
提案は大歓迎です!