2012-12-10 24 views
11

Tôi đang cố gắng viết trình chuyển đổi Jekyll cho các tệp R Markdown. Tôi đã tạo RMarkdownConverter.rb và đặt nó trong thư mục _plugins của tôi. Tôi đã xác minh rằng các plugin khác đang hoạt động nhưng plugin này không hoạt động. Tôi cũng không thấy bất kỳ thông báo lỗi nào, kể cả những thông điệp tôi tự đặt vào. Có vẻ như điều này không được sử dụng. Tuy nhiên, Jekyll đang tạo một tệp HTML cho tệp .Rmd của tôi nhưng chỉ đơn giản là xử lý các mâm cặp R như mã chuck. Bất kỳ trợ giúp hoặc suy nghĩ nào sẽ được đánh giá cao.Chuyển đổi Jekyll cho R Markdown

RMarkdownConverter.rb file:

module Jekyll 
    class RMarkdownConverter < Converter 
     safe true 
     priority :low 

    def setup 
     STDERR.puts "Setting up R Markdown..." 
     return if @setup 
     require 'rinruby' 
     @setup = true 
    rescue 
     STDERR.puts 'do `gem install rinruby`' 
     raise FatalException.new("Missing dependency: rinruby") 
    end 

     def matches(ext) 
      ext =~ /Rmd/i 
     end 

     def output_ext(ext) 
      '.html' 
     end 

     def convert(content) 
     setup 
     STDERR.puts "Using R Markdown..." 
     R.eval "require(knitr)" 
     R.eval "render_markdown(strict=TRUE)" 
     R.assign "content", content 
     STDERR.puts content 
     R.eval "out <- knit(text=content)" 
     R.eval "print(out)" 
     end 
    end 
end 

Nội dung của bài R Markdown đầu tiên của tôi:

--- 
layout: post 
title: Using (R) Markdown, Jekyll, and Github for Blogging 
published: true 
tags: R R-Bloggers Jekyll github 
type: post 
status: publish 
--- 

First, we need to install [RinRuby](https://sites.google.com/a/ddahl.org/rinruby-users/) to call R from Ruby. In the terminal, execute: 

    gem install rinruby 

First R chuck: 

```{r} 
2 + 2 
``` 

Trả lời

4

Hãy thử thay thế vài dòng cuối cùng như sau

R.assign "content", content 
R.eval "knitr::render_markdown(strict = TRUE)" 
R.pull "(knitr::knit2html(text = content, fragment.only = TRUE))" 

tôi nghĩ rằng bạn cần R.pull để sao chép nội dung của đầu ra R sang Ruby. Hơn nữa, tôi muốn khuyên bạn nên chuyển đổi trực tiếp từ Rmd sang html. Tôi đã sử dụng chiến lược này thành công khi làm việc với Ruhoh là một nền tảng viết blog dựa trên ruby ​​khác.

CẬP NHẬT. Nó là rất kỳ quặc nhưng sử dụng rmd mở rộng dường như xung đột với md. Tôi đã thay đổi nó ngẫu nhiên thành ram và jekyll dường như nhặt nó một cách chính xác. Tôi không chắc tại sao.

+0

Nó cũng xuất hiện nếu bạn thêm 'markdown_ext: markdown' vào' _config.yml' Jekyll sẽ xử lý tệp 'rmd'. Tuy nhiên, nó cũng có nghĩa là các tập tin 'md' sẽ không được xử lý. Không phải là một vấn đề lớn đối với tôi vì tôi đã sử dụng phần mở rộng tập tin '.markdown'. – jbryer

+0

Nên có cách để thực hiện điều này mà không cần gọi 'rinruby' được biết là chậm. Tôi đang khám phá cách sử dụng một lệnh shell trực tiếp để xử lý các tệp Rmd, tuy nhiên các backticks được sử dụng bởi các chuyến đi đan xen lên việc thực thi shell. – Ramnath

Các vấn đề liên quan