SIZE(20){COLOR(blue){Mac で Sweave --- Mac OS X El Capitan}} SIZE(18){COLOR(blue){UpTeX を使うのであれば,TeXLive は不要!!}} クリーンインストールでない場合,うまくいかない(ことがある?)のはなぜだろう? OS のクリーンインストールでない場合,うまくいかない(ことがある?)のはなぜだろう? * 0. R のインストール [#f5c3679f] R の出力を表組みにするためには xtable パッケージをインストールする必要があろう。 // * 1. MacTeX のインストール [#be080a3f] // http://d.hatena.ne.jp/pyopyopyo/20150710/p1 に従う // けちくさいことをいわずに、MacTeX をインストール。 // http://www.tug.org/mactex/mactex-download.html で、MacTeX.pkg を control+クリック(右クリック) で「別名でリンク先を保存...」でダウンロード。 // ダブルクリックでインストール(途中 パスワードを聞かれ、cc コマンドのインストールも求められる)。 // 「ターミナル」を起動し、tlmgr 自身とインストール済みパッケージを更新。 // まずは tlmgr 自身を更新(プロンプトの後に以下をコピー&ペースト)。 // sudo tlmgr update --self // 次に導入済みパッケージの更新(プロンプトの後に以下をコピー&ペースト。500個以上あったりするかも知れないので、気長に)。 // sudo tlmgr update --all * 1. UpTeX のインストール [#z1939e5f] http://www2.kumagaku.ac.jp/teacher/herogw/index.html から「Drag & Drop UpTeX」(20151009版以降)をダウンロード。 ダブルクリッックしてできる UpTeX.app を「アプリケーションフォルダ」へ移動。 同梱されている説明書を読み,環境設定。 一番最初に UpTeX.app を起動するには,control+クリック(右クリック)で開くを選び,その後更にもう一度聞かれるので「開く」。 UpTeX.app の「環境設定」メニューを選び,dvipdfmx のフォント,TeX コンポーネントのアップデート。 texbin のパスをクリップボードにコピーしておいて,次の TeXShop のインストールで使う。 * 2. TeXShop のインストール [#u675fd21] http://pages.uoregon.edu/koch/texshop/obtaining.html から、「Latest TeXShop Version3」をダウンロード。 ダブルクリッックしてできる TeXShop.app を「アプリケーションフォルダ」へ移動。 TeXShop を起動して「環境設定」 「書類」タブの「設定プロファイル」で「upTeX(ptex2pdf)」に設定する。 (「書類」タブの[エンコーディング」が「Unicode(UTF-8)」になるはず。そうならなければ「Unicode(UTF-8)」に設定。) 「内部設定」タブでは,texbin のパス設定は,UpTeX を使うなら, /Applications/UpTeX.app/Contents/Resources/TEX/texbin (前述の UpTeX の環境設定ウインドウでコピーした texbin のパスをペースト) LaTeX の設定は,UpTeX を使うなら, ptex2pdf -u -l -ot "-synctex=1 -file-line-error" (Sweave では,synctex と file-line-error は猫に小判かも) TeXShop の環境設定を変更したら,その設定で TeXShop を使いたい場合は一度 TeXShop を終了させて,再度起動。 * 3. スタイルファイルなど [#webd7039] ファインダーの option+「移動」メニューで「ライブラリ」ディレクトリに入り,texmf/tex/platex ディレクトリに使用する style ファイルを置く。 システムのライブラリではなく, Macintosh HD-->ユーザ-->hoge-->ライブラリ-->texmf-->tex-->platex-->スタイルファイル(のディレクトリ) 置いた後には必ず sudo mktexlsr の実行を忘れないこと。 なお,*.Rnw,*.tex ファイルは utf-8 エンコーディングとするので,style ファイルも utf-8 にしておくこと。 * 4. ソースファイルは *.Rnw,*.tex [#u23b093e] もっぱら *.Rnw を使うなら,TeXShop の環境設定の[タイプセット]タブで,デフォルトのコマンドに自分の好きなもの(後述のようにするなら Sweave)をセット。 ソースファイルの encoding は utf-8 。 dvipdfmx,uplatex の使用は document class で指定する。 \documentclass[dvipdfmx,uplatex] {jsarticle} * 5. タイプセットの方法 [#fdef66a2] ** 5.1. TeXShop からの場合 [#q38c031b] Rscript で書いた TeXShop の Engine の例 以下の内容のファイル Sweave.engine を,ファインダーの option+「移動」メニューで「ライブラリ」ディレクトリに入り,TeXShop/Engines の中にコピーする。システムのライブラリではなく, Macintosh HD-->ユーザ-->hoge-->ライブラリ-->TeXShop-->Engines-->Sweave.engine アクセスモードは chmod 777 Sweave.engine で,実行可能に設定。 書類の種類を選択するボタン(通常は LaTeX などになっている)で,「Sweave」を選択し「タイプセット」ボタンをクリックすると *.Rnw --> *.tex --> *.dvi --> *.pdf の順に処理される。 ファイルを分割して main.Rnw から \SweaveInput{foo.Rnw} でタイプセットするとき,foo.Rnw の先頭に % ! TEX root = main.Rnw と書いておくと,エディタで foo.Rnw を編集中でも,foo.Rnw の修正を自動保存した後に,main.Rnw からタイプセットしてくれる。 &ref(Sweave.engine); #!/usr/local/bin/Rscript --vanilla ms <- function(file, silent = TRUE, ...) { if (grepl("\\.", file) == FALSE) { file <- paste(file, "Rnw", sep = ".") } Sys.setlocale(locale = "ja_JP.UTF-8") Sweave(file, encoding = "utf-8") base <- sub(".(R|S)nw", "", file) file <- paste(base, ".tex", sep = "") dir <- "/Applications/UpTeX.app/Contents/Resources/TEX/texbin" cmd <- sprintf("%s/ptex2pdf -u -l -s %s%s", dir, file, ifelse(silent, " | grep -v \"texmf\"", "")) repeat { system(cmd) con <- file(sub(".tex", ".log", file), open = "r", encoding = "utf-8") log <- readLines(con) close(con) no.error <- TRUE if (sum(grepl("Emergency stop", log)) > 0) { no.error <- FALSE break } if (sum(grepl("Rerun to get", log)) == 0) break } if (no.error) { system(sprintf("%s/dvipdfmx -V 5 %s", dir, sub(".tex", ".dvi", file))) } } # 以下の xfigure 関数は,src パラメータで渡された描画プログラムに基づいて,figure というサブディレクトリに pdf 画像ファイルを作り,それを pdf 文書ファイル中に include するためのもの xfigure <- function(src, caption = "caption", fn, label = fn, base = "figure", size = 320, width = size * 6/320, height = 2/3, mgp = c(1.8, 0.6, 0), mar = c(3, 3, 1, 1), rev = -3, htbp = "htbp") { height <- width * height pdf(sprintf("%s/%s.pdf", base, fn), width = width, height = height) par(mgp = mgp, mar = mar) parsed <- parse(text = src) results <- eval(parsed) dev.off() header <- sprintf("\\begin{figure}[%s]\n\t\\centering", htbp) trailer <- sprintf("\t\\vspace{%smm}\\caption{%s}\n\t\\label{%s}\n\\end{figure}", rev, caption, label) cat(sprintf("%s\n\t\\includegraphics[bb=0 0 %sin %sin, clip, width=%sbp]{%s/%s.pdf}\n%s\n", header, width, height, size, base, fn, trailer), fill = TRUE) invisible(results) } grDevices::pdf.options(family="Japan1") arg <- commandArgs() ms(arg[7]) warn <- warnings() if (length(warn)) head(warn, 2) ** 5.2. コマンドラインからの例 [#jdeeff62] foo ディレクトリに foo.Rnw があるとき,最終的に foo.pdf を作るには以下のようにする $ cd /foo $ Rscript --vanilla -e "Sweave('foo.Rnw', encoding='utf-8')" $ ptex2pdf -u -l -ot "-synctex=1 -file-line-error" foo.tex ** 5.3. シェルスクリプトの例 [#qd3933a5] #!/bin/sh # make Sweave # Rscript --vanilla -e "Sweave('$1.Rnw', encoding='utf-8')" /uptex/UpTeX.app/Contents/Resources/texbin/ptex2pdf -u -l -ot "-synctex=1 -file-line-error" $1.tex