13 Feb 2015, 15:08

RPubs に Emacs から投稿してみた (R Markdown, org-mode)

はじめに

RPubs は R Studio に依存する R markdown 共有サービスなのですが, R Studio を利用せずに, Emacs から 投稿できるか調べてみました.

rpubsUpload をつかう

結論としては, rpubsUpload という関数を利用すると, コードを評価することで RPubs に投稿できる.

# Upload をする
result <- rpubsUpload ("My document title", "Document.html")

# Upload 結果をブラウザで開く
if (!is.null (result$continueUrl))
   browseURL (result$continueUrl)
else
   stop (result$error)

ブラウザを開くと, ログイン画面が現れるのでログインして OK を押せばよい.

Emacs から投稿

R markdown を Emacs から投稿

Emacs で R Markdown を作成して, 投稿することができる.

以下の記事を参考にして Rmd を html に変換して, コードを評価する.

# Upload Test

see: [rpubsUpload - R Graphical Manual] (http://rgm3.lab.nig.ac.jp/RGM/R_rdfile?f=markdown/man/rpubsUpload.Rd&d=R_CC)

# upload a document

this is my first upload from function

```{r sample, echo=TRUE, results='hide'}
require (markdown)
result <- rpubsUpload ("rpubsUpload usage", "RpubsUploadSample.html")
if (!is.null (result$continueUrl)) {
    browseURL (result$continueUrl)
}else {
    stop (result$error)
}
```

org-mode から投稿

markdown よりも org-mode のほうがなれているということもあり, org-mode からも投稿してみました.

M-x org-html-export-to-html で org-mode を html に変換して, コードを評価.

#   * Upload Test
#   this is my first upload from Emacs org-mode
#  
# ** convert to html
#    M-x org-html-export-to-html
#  
# ** run script
#  
# #+begin_src R :eval query
# require (markdown)
# result <- rpubsUpload ("Emacs org-mode upload", "UploadFromOrgMode.html")
# if (!is.null (result$continueUrl)) {
#     browseURL (result$continueUrl)
# }else {
#     stop (result$error)
# }
# #+end_src
#  

12 Feb 2015, 15:12

Emacs で knitr と R markdown を使う方法 (Rmd)

はじめに

coursera で, Reproducible Research の講座をとっています.

knitr の演習が出てきて, R Studio を使うように強いられます.

Emacs が捨てがたいので, knitr を Emacs で利用する方法について調べました.

knitr

knitr R と Markdown を利用して文芸的プログラミングをするためのツール.

CRAN から取得可能.

install.packages ('knitr', dependencies = TRUE)

polymode

polymode を利用すると, 複数のモードを共存させる. これを利用して R-mode (ESS) と markdown-mode を共存.

;; MARKDOWN
(require  'poly-markdown)
(add-to-list 'auto-mode-alist '("\\.md" . poly-markdown-mode))

;; R modes
(require  'poly-R)
(add-to-list 'auto-mode-alist '("\\.Snw" . poly-noweb+r-mode)
(add-to-list 'auto-mode-alist '("\\.Rnw" . poly-noweb+r-mode))
(add-to-list 'auto-mode-alist '("\\.Rmd" . poly-markdown+r-mode))

markdown への変換

ess-swv-knit で Rmd を md に変換できる.

HTLM への変換

html に変換するには, 以下の方法がある.

(defun rmarkdown-to-html ()
  (interactive)
  "Run knitr::knit2html on the current file"
  "https://gist.github.com/kohske/9128031"
  (shell-command
   (format "Rscript -e \"knitr::knit2html ('%s')\""
       (shell-quote-argument (buffer-file-name)))))

;; do this in R process
;; library (rmarkdown); render ("file_name.Rmd")

(defun ess-rmarkdown ()
  (interactive)
  "Compile R markdown (.Rmd). Should work for any output type."
  "http://roughtheory.com/posts/ess-rmarkdown.html"
  ; Check if attached R-session
  (condition-case nil
      (ess-get-process)
    (error 
     (ess-switch-process)))
  (let* ((rmd-buf (current-buffer)))
    (save-excursion
      (let* ((sprocess (ess-get-process ess-current-process-name))
         (sbuffer (process-buffer sprocess))
         (buf-coding (symbol-name buffer-file-coding-system))
         (R-cmd
          (format "library (rmarkdown); rmarkdown::render (\"%s\")"
              buffer-file-name)))
    (message "Running rmarkdown on %s" buffer-file-name)
    (ess-execute R-cmd 'buffer nil nil)
    (switch-to-buffer rmd-buf)
    (ess-show-buffer (buffer-name sbuffer) nil)))))

(define-key polymode-mode-map "\M-ns" 'ess-rmarkdown)

11 Jan 2014, 08:10

EmacsでMarkdown記法での執筆環境を整えた

ブログはmarkdown記法で作成して、HTMLに変換してwordprssに投稿しています。

Emacsで Markdown記述環境を整えたので、その作業メモです。Emacs で markdownモードを利用するには、emacs-markdown.elを利用します。公式サイトは以下。

以下のサイトを参考にしました。ありがとうございます。

導入手順

以下から emacs-markdown.elを入手して、ロードパスの通ったところへ配置。

 wget http://jblevins.org/projects/markdown-mode/markdown-mode.el

init.elに以下を記述

(autoload 'markdown-mode "markdown-mode.el" "Major mode for editing Markdown files" t)

.mdと書いてあるファイルをmarkkdownモードで起動するように関連付ける

(add-to-list 'auto-mode-alist '("\\.md\\'" . markdown-mode))

色の変更

色が気持ち悪い場合は、

M-x list-face-displayをでfaceの設定を起動して修正。

minttyとemacsで、黒背景で青が見にくい場合の対策も参考のこと。

HTML形式に変換する

MarkdownでかかれたものをHTMLに変換するには、markdown.plを利用する。

Daring Fireball: Markdownからmarkdown.plをダウンロードしてパスの通った場所ち配置。ここでは、/usr/local/binへ。名前もMarkdown.plから markdownへ変更。

cd /usr/local/bin
sudo mv '/home/tsu-nera/Downloads/Markdown.pl' markdown

プレビュー表示

C-c C-c m でバッファにプレビューを表示できます。

C-c C-c p でブラウザにプレビューを表示できます。

command not found: markdownと出る場合は、Markdown.plがうまく動いていない。

zsh:1: command not found: markdown

その他コマンドは、公式サイトのUsageを参照。

30 Dec 2013, 08:06

[ReText]Linux環境でMarkdownやRestructuredTextをかくためのエディタはこれで決まり

LinuxでMarkdownを書くためのよいエディタを探していたところ、ReTextというツールを見つけたので紹介。

ReTextとは、MarkdownやRestructuredTextをかくためのエディタ。特徴は以下。

  • MarkdownやRestructuredTextでかかれたファイルをリアルタイムプレビューできる。
  • HTML シンタックスハイライト
  • PDF, ODT, HTML, Google Docs へのエクスポート
  • HTML生成

今まではWindows環境で MarkdownPadを利用してブログ記事を作成していた。

畜生、ブログエディタ変更だ!Windows上のMarkDownPadで編集してWordPressに投稿する | Futurismo

Linux環境でも同等の機能を持つものを探してたので、このReTextが利用できそうだ。

Mint Linuxでのインストール方法は以下。

sudo add-apt-repository ppa:mitya57
sudo apt-get update
sudo apt-get install -y retext

Error

以下のエラーが表示されてプレビューを見ることができきない。

ファイルの内容を解析できません。必要なモジュール がインストールされているか確認してください。

コンソールから起動してみるも、こんなメッセージが表示される。

READMEをよくよく読んでみると、Python3.2以上で動作するとのこと。

また、Markdownを利用するには、追加のパッケージが必要とのこと。

システムのPythonのバージョンを調べてみると、Python 2.7.

$ python --version
Python 2.7.5+

Linuxには、現在 Pythonが2種類デフォルトでインストールされているようだ。

$ python3 --version
Python 3.3.2+
$ python --version
Python 2.7.5+

つまり、Python3には markdownがインストールされていなかった。Python3にパッケージをインストールするには、pipではなくてpip3を利用する。

sudo pip3 install markdown
sudo apt-get install python3-pip

これでエラーせずに表示されるようになった。