rubyライブラリの多くは gem
というコマンドで追加します。
markdownをhtmlに変換したりする時に用いる kramdown は、ver 1.13.1 が既にインストール済みですが、より新しいバージョンが公開された時に、その最新版を導入し、旧バージョンを削除する例を掲げます。rubyスクリプトです。
−−−−−−−− スクリプトここから
# encoding: Windows-31J
require "rpt"
cmds = ["gem install kramdown",
"gem uninstall kramdown -v 1.13.1"]
cmds.each do |cmd|
system( cmd )
end
−−−−−−−− スクリプトここまで
ちなみに、gem list
を実行すれば、gemでインストールされているライブラリの一覧を得ることができます。
統計ソフトRのパッケージを追加したい時は、次のようなrubyスクリプトを実行します。
回帰分析におけるロバスト推測(外れ値への対処)のパッケージ導入例です。
筑波大学のサイトからダウンロードする形になっています。もちろん、他のところでもかまいません。
Rプログラムの実行過程と結果が log.txt として書き出されます。
−−−−−−−− スクリプトここから
# encoding: Windows-31J
require "rpt"
url = "http://cran.md.tsukuba.ac.jp/"
package1 = "robustbase"
package2 = "MPV"
rpro = <<EOS
options(CRAN="#{url}")
options(repos="#{url}")
install.packages("#{package1}")
install.packages("#{package2}")
library("#{package1}") # 念のため読み込んでみる
library("#{package2}")
search() # 読み込んであるパッケージの一覧
EOS
hs = Rrx::rexec(rpro, "log.txt")
−−−−−−−− スクリプトここまで
上のRプログラム中に出てくる「install.packages」のところを「remove.packages」に変更すれば、パッケージを削除できます。
削除の場合は、当然ながらダウンロードのためのURLを指定する必要はありません。
念のためパッケージ削除のrubyスクリプトを掲げておきます。
−−−−−−−− スクリプトここから
# encoding: Windows-31J
require "rpt"
package1 = "robustbase"
package2 = "MPV"
rpro = <<EOS
remove.packages("#{package1}")
remove.packages("#{package2}")
EOS
hs = Rrx::rexec(rpro, "log.txt")
−−−−−−−− スクリプトここまで
統計ソフトRのプログラムコードをmarkdownの原稿中に書き込んでおいて、 統計関係のレポートを手早く作ろうという発想があります。
それを実現するための rmarkdown というパッケージをインストールするためのrubyスクリプトも掲げておきます。
−−−−−−−− スクリプトここから
# encoding: Windows-31J
require "rpt"
url = "http://cran.rstudio.com/"
rpro = <<EOS
options(CRAN="#{url}")
options(repos="#{url}")
install.packages("rmarkdown", dependencies = TRUE)
install.packages("devtools")
library(devtools)
install_github("yihui/runr")
search() # 読み込んであるパッケージの一覧
EOS
hs = Rrx::rexec(rpro, "log.txt")
−−−−−−−− スクリプトここまで
上を実行すると、rmarkdownに関連する多くのパッケージがインストールされます。 knitrもインストールされます。
markdownの原稿が変数 mkd_str に代入されている場合、 それをTeXの原稿に変換するメソッドが用意されています。rubyのメソッドです。
「require “rpt”」を記述すると使えるようになります。
tex_str = Rpt::kramdown_tex_s(mkd_str) # kramdownによりTeXに変換
tex_str = Rpt::pandoc_tex_s(mkd_str) # pandocによりTeXに変換
上の両者とも、tex_str にはスタンドアロンのTeXの原稿が代入されます。
第2引数以降にオプションを指定することができますが、それは kramdown と pandoc によって異なります。オプションについてはそれぞれの解説を参考にして下さい。
kramdownにしろpandocにしろ、画像挿入に関しては次のどちらかが書き加えられます。
\usepackage{graphicx}
\usepackage[]{graphicx}
しかし、このままだと w32tex のコマンド(platex, dvipdfmx)によって、画像をうまく挿入できません。
上のusepackageの箇所を次のように書き換える必要があります。
\usepackage[dvipdfmx]{graphicx}
前述の kramdown_tex_s(), pandoc_tex_s() の両者とも、この画像挿入に対応させるための書き換えを行います。
生成された tex_str をpdfに変換するメソッドとしては tex2pdf() が用意されています。
pdf_str = Rpt::tex2pdf(tex_str)
上のようにして得られた pdf_str をバイナリーモードでファイルに出力すれば、pdfファイルを作ることができます。
この tex2pdf() の内部処理では、tex_str の中に \tableofcontents があれば、目次生成のためにdvi作成を2度行います。つまりコンパイルを2度行います。
tex2pdf() は、pdfを変数に記録して返すので、大きな文書の作成には向いていないと思います。
大きな文書を作る場合は、tex_strをファイルに書き出した上で、次のようにLaTeXのコマンドを実行する方をお勧めします。
platex test.tex
dvipdfmx test.dvi
上の2つのコマンド実行をrubyスクリプト内で子プロセスとして行えば、pdfファイルが生成されます。
rpt利用時は、platex, dvipdfmx のどちらも、フルパス名を指定せずに使えます。
〜 以上 〜