Sweaveのチャンクにオプションを与えることができる。あらかじめ、文章全体の既定値を設定しておきたい場合は、 \SwaveOpts{}
の中に書いておく。1つ1つのチャンクに個別のオプションをつけるときは、 <<>>
の中に書く。
オプション | 機能 | 使用のコツ |
---|---|---|
echo | 標準出力をそのまま出力 | 文章に表示したくないときはFLASEにする |
eval | コードを実行 | SweaveOptsでTRUE/FALSEを切り替えると、TeX文書のみかコードの実行結果こみかを切り替えられる |
results | 実行結果 | texにすると外部ファイルとして保存。表を入れるときに使う。 |
include | 図ファイルの挿入 | FALSEにするとどうなる?(要検証) |
fig | 図の出力 | グラフィック出力をファイル化 |
width/height | サイズ指定 | 図の横または縦のサイズ指定(単位はインチ) |
eps/pdf | 図ファイルの形式 | 両方ともTRUEにすべき |
これらの他にもprint,term.split,strip.white,prefix,prefix.stringがあるが、私は使わない。splitをTRUEにすると、別ファイルとして出力される。図がincludegraphicsで挿入されるとき、その幅は、Ginというパラメータで決定される。
\setkeys{Gin}{width=0.8\textwidth}
essのnoweb-modeにより、楽にRnwを書くことができる。
キー | 機能 |
---|---|
M-n s | Rnwからtexファイルの変換 |
M-n l | texのコンパイル→pdfの作成 |
M-n x | \Sexpr{}の挿入 |
図のサイズを変更するには、Rに渡すパラメータを
<<fig=TRUE,echo=TRUE,width=6,height=3>>= plot(...) @
という風に指定する。LaTeX2e上でincludegraphicsのwidthパラメータを制御したい場合は、
\setkeys{Gin}{width=0.8\textwidth}
このGinの値を変更すればよいらしい(未確認)。その他の方法として、 include=FALSEと組み合わせて明示的に\includegraphicsコマンドを使うことが できるらしい(未確認)。
チャンクのオプションで result
を tex
にセットして、 print.xtable()
を使うかな。
FAQからの抜粋
TeXのソースはASCIIだけど、utf-8にしかない文字が混入すると、文字化けする。 右シングルクオーテンションマークによる文字化けを回避するには、
の3通り。
Makefileを作成する。
TEX = /usr/bin/platex R = /usr/bin/R XDVI = /usr/bin/xdvi .SUFFIXES:.Rnw .tex.dvi: $(TEX) $< $(XDVI) -unique $@ .Rnw.tex: $(R) CMD Sweave $<
これで、
$ make tmp.dvi
などと実行すると、tmp.Rnwからtmp.texが作成されてtmp.dviが出力される。
.tex.dvi
の部分はサフィックスルルールとよばれ、 *.tex
から *.dvi
が作成
されることを指示している。サフィックスルールの適用対象拡張子は、
.SUFFIXES:
で指定する。 $<
は内部マクロの一つで、依存ファイルの先頭ファ
イル名に展開される。xdviにuniqueオプションをつけると、すでにxdviが起動
している場合はそれを更新してくれ、そうでない場合はxdviを起動してくれる。
$@
はターゲットファイルが展開される内部マクロ。このMakefileを使えば、
ess-noweb-modeに頼らなくても、yatex-modeのみでRnwファイルを編集できる。
Rnwファイルの先頭に
%#!make tmp.dvi
と書けば、C-c tjでコンパイルできる。
%#!make tmp.dvi \documentclass{article} \usepackage{graphicx} \usepackage{color} \usepackage{Sweave} \DefineVerbatimEnvironment{Sinput}{Verbatim}{formatcom={\color{blue}}} \DefineVerbatimEnvironment{Soutput}{Verbatim}{formatcom={\color{red}}} \begin{document} This is just test. <<echo=TRUE>>= runif(10) @ \begin{figure} <<fig=TRUE,echo=TRUE>>= data (airquality) boxplot(Ozone ~ Month , data = airquality) @ \caption{This is test} \end{figure} \end{document}
noweb-modeになっているので、M-x noweb-modeを実行すると、no-web-modeがア ンロードされた。次に、M-x yatex-modeを実行して、C-c tjを実行すると、 xdviに下記のように表示される。
(defun Rnw-mode () "Major mode for editing Sweave(R) source. See `noweb-mode' and `R-mode' for more help." (interactive) (require 'ess-noweb) (noweb-mode 1) (noweb-set-doc-mode 'yatex-mode) (noweb-set-code-mode 'R-mode))
ess-noweb-modeでは、M-n sでSweaveが実行され、M-n lでLaTeXが実行される。 noweb-set-doc-modeをyatexにすることにより、yatexのキーバインドでLaTeX原 稿を書くことができる。
日本語環境でSweaveを使うには、
LANG=ja_JP.euc R CMD Sweave hoge.Rnw
としないと、euc-jpのTeXソースを得られない。
Rの出力は、options(width=40)などで短くしたり、逆に長くしたりできるが、 これは、Sweaveでも反映され、echo=TRUEで出力されたRの式は、 options(width=xx)で設定した長さに整形される。