rmd <- function(File, # *.Rmd ファイル(拡張子も書く) encoding="euc-jp", # 作られる *.html のエンコーディング base64=FALSE, #  図をインラインで表示するときは TRUE に(ファイルは figure ディレクトリに作られる) tangle=TRUE, # 図を含む場合,tangle で取り出した R ファイルを実行して png ファイルを作る fleqn=TRUE, # 式を左寄せにする(LaTeX と同じ) force=FALSE, # デフォルトでは *.Rmd に変更がなければ何もしない。TRUE にすると,必ず *.html ファイルを作り直す skip=TRUE, # ~ を導入する。TRUE の場合,*.Rmd のなかで,skip タグで挟まれた部分は無視される。 fig.width=400, # png 画像の幅ピクセル数 fig.height=300 # png 画像の高さピクセル数。任意の時点で options( ) にて設定変更可 ) { default.options <- c("hard_wrap", "use_xhtml", "smartypants", "highlight_code", "mathjax") if (base64) { default.options <- c(default.options, "base64_images") } options(markdown.HTML.options=default.options) options(fig.width=fig.width, fig.height=fig.height) library(knitr) opts_knit$set(progress=FALSE) if (grepl("\\.", File) == FALSE) { File <- paste(File, "Rmd", sep=".") } File.html <- sub(".Rmd$", ".html", File, ignore.case=TRUE) if (force || file.exists(File.html) == FALSE || file.info(File.html)$mtime < file.info(File)$mtime) { knit2html(File) if (tangle) { File.R <- sub(".Rmd$", ".R", File, ignore.case=TRUE) knit(File, output=File.R, tangle=TRUE) File.png <- sub(".Rmd$", "%03i.png", File, ignore.case=TRUE) png(sprintf("figure/%s", File.png), getOption("fig.width")/72, getOption("fig.height")/72) sink("junk") source(File.R) sink() file.remove("junk") dev.off() file.remove(File.R) file.remove(paste("figure", list.files(paste(getwd(), "figure", sep="/"), pattern="unnamed*"), sep="/")) } changeEncoding(File.html, encoding=encoding, fleqn=fleqn, skip=skip) file.remove(sub(".Rmd", ".md", File, ignore.case=TRUE)) } invisible() }