TEX = platex R = R .SUFFIXES:.Rnw .tex.dvi: $(TEX) $< .Rnw.tex: echo "options(width=80);Sweave(?"$<?")"| $(R) -q --no-save --no-restore
前部分の空白はタブであることに注意. .SUFFIXES:は便宜書き換えを行う必要があるやもしれない. Msys環境でも,コマンド(cmd.exe+nmake)でも多分使えると思われる
\documentclass[a4j]{jarticle} \usepackage{graphicx} \begin{document} <<fig=TRUE,echo=FALSE,eps=TRUE,pdf=FALSE>>= hist(runif(1000)) @ \end{document}
$ make hoge.dvi
\setkeys{Gin}{width=1.0?textwidth}
デフォルトは0.8
\documentclass[a4j]{jarticle} \usepackage{graphicx} \usepackage{color} \begin{document} \DefineVerbatimEnvironment{Sinput}{Verbatim}{formatcom={?color{blue}}} \DefineVerbatimEnvironment{Soutput}{Verbatim}{formatcom={?color{red}}} <<echo=TRUE>>= runif(10) @ \end{document}
\documentclass[a4j]{jsarticle} \usepackage[dvipdfm]{graphicx} \title{Happy xtable} \date{} \begin{document} <<minipage,echo=T>>= library(xtable) set.seed(123) X<-array(runif(10*5),dim=c(10,5)) @ \begin{table}[ht] \begin{minipage}{0.5\hsize} <<fig=F,echo=F,results=tex>>= print.xtable(xtable(X)[1:5,],floating=F) @ \end{minipage} \begin{minipage}{0.5\hsize} <<fig=F,echo=F,results=tex>>= print.xtable(xtable(X)[6:10,],floating=F) @ \end{minipage} \end{table} \end{document}\documentclass[a4j]{jsarticle} \usepackage[dvipdfm]{graphicx} \title{Happy xtable} \date{} \begin{document} <<minipage,echo=T>>= library(xtable) set.seed(123) X<-array(runif(10*5),dim=c(10,5)) @ \begin{table}[ht] \begin{minipage}{0.5\hsize} <<fig=F,echo=F,results=tex>>= print.xtable(xtable(X)[1:5,],floating=F) @ \end{minipage} \begin{minipage}{0.5\hsize} <<fig=F,echo=F,results=tex>>= print.xtable(xtable(X)[6:10,],floating=F) @ \end{minipage} \end{table} \end{document}
minipage.output <- function(x, y, output="ouput.tex", work="work") { sub.func1 <- function(z) { sink(work) print(xtable(z)) sink() return(scan(work, what="", sep="\n")) } sub.func2 <- function(str1) { cat("\\begin{minipage}{0.5\\hsize}\n", file=fn) cat(str1[4:(length(str1)-1)], sep="\n", file=fn) cat("\\end{minipage}\n", file=fn) } # ここから開始 require(xtable) fn <- file(output, open="w") str1 <- sub.func1(x) cat(str1[1:3], sep="\n", file=fn) sub.func2(str1) str2 <- sub.func1(y) sub.func2(str2) cat("\\end{table}\n", file=fn) } x <- data.frame(matrix(1:12, 2)) y <- data.frame(matrix(51:62, 2)) minipage.output(x, y)すると,こんなものができあがる。
% latex table generated in R 2.3.1 by xtable 1.3-2 package % Fri Jun 9 11:52:40 2006 \begin{table}[ht] \begin{minipage}{0.5\hsize} \begin{center} \begin{tabular}{rrrrrrr} \hline & X1 & X2 & X3 & X4 & X5 & X6 \\ \hline 1 & 1.00 & 3.00 & 5.00 & 7.00 & 9.00 & 11.00 \\ 2 & 2.00 & 4.00 & 6.00 & 8.00 & 10.00 & 12.00 \\ \hline \end{tabular} \end{center} \end{minipage} \begin{minipage}{0.5\hsize} \begin{center} \begin{tabular}{rrrrrrr} \hline & X1 & X2 & X3 & X4 & X5 & X6 \\ \hline 1 & 51.00 & 53.00 & 55.00 & 57.00 & 59.00 & 61.00 \\ 2 & 52.00 & 54.00 & 56.00 & 58.00 & 60.00 & 62.00 \\ \hline \end{tabular} \end{center} \end{minipage} \end{table}
(1) TeX Liveをインストールする。
(2) 下記のフォルダ
C:\Program Files\R\R-3.2.0\share\texmf
の中身を
C:\texlive\texmf-local\tex
にコピーする。
(3) CTANからae.zipをダウンロードする。
http://www.ctan.org/tex-archive/fonts/ae/
(4) ae.zipの
tfm内のファイル -> C:\texlive\texmf-local\fonts\tfm\ae vf内のファイル -> C:\texlive\texmf-local\fonts\vf\ae
へそれぞれコピーする。
(5) mktexlsrを実行する。
library(tools) Sweave("hoge.Rnw")
のようにR上で入力すると、texファイルが出力されます。
そこでtexでコンパイルしようとするとエラーが出てしまいます。
原因はこの行のパスが理解できないようなので、
\usepackage{C:/PROGRA~1/R/R-3.2.0/share/texmf/Sweave}
を、面倒ですが、
\usepackage{Sweave}
のように書き換えるとうまく動きました。
TeXは、MacPortsのものが簡単に思えます。 MacPortsをdmgファイルからダウンロードすると、/opt/以下に基本的なツールがインストールされます。
環境変数PATH, MANPATHにMacPortsのパスを追加して... (たとえば、下記2行を ~/.bash_profileに記入するなど)
export PATH=/opt/local/bin:/opt/local/sbin:$PATH export MANPATH=/opt/local/man:$MANPATH
pTeX(UTF-8対応バージョン)をインストールします。
$ sudo port install ptex +utf8 +nox11
Sweave.sty等へのパスを、TEXINPUTSに追加します。環境変数を使ってもいいですが、TeXShopでの使用を考えるなら、/opt/local/share/texmf/web2c/texmf.cnf を変更したほうが便利でしょう。
/opt/local/share/texmf/web2c/texmf.cnf にある、以下の行を
TEXINPUTS.platex = $platex2e_inputs
TEXINPUTS.platex = $platex2e_inputs;/Library/Frameworks/R.framework/Resources/share/texmf//
に変更します。
これで、platexコマンドでSweave.styを使用したTeXソースをタイプセットすることが可能になるはずです。
ここを参照。
I. JIS X0212 Characters for pTeX から
II. TeXShop (v 3.26) Release 11/05/2013 から
III. sweave.engine を書く
I. .Rnw ファイルを書く
上述の Sweave.engine では,.Rnw のエンコーディングは euc-jp としている(したがって,TeXShop の環境設定もそれにあわせてある)。utf-8 を使う人はしかるべき箇所を変更のこと。
例 example.Rnw
II. TeXShop で Sweave を選び「タイプセット」する
使用した Sweave.engine は,参照が不完全な場合には複数回自動的にタイプセットするように書かれている。つまり,LaTeX を単独で使用しているときのように,参照が完全になるまで手動で何回かタイプセットするというようなことは不要である。
仕上がり例 example.pdf
III. tips