11

我正在尝试为 R Markdown 文件编写 Jekyll 转换器。我创建RMarkdownConverter.rb并将它放在我的_plugins目录中。我已经验证了其他插件正在工作,但这个不是。我也没有看到任何错误消息,包括我自己输入的错误消息。这似乎没有被使用。然而,Jekyll 正在为我的文件生成一个 HTML 文件,.Rmd但只是将 R 卡盘作为代码卡盘处理。任何帮助或想法将不胜感激。

RMarkdownConverter.rb文件:

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

我的第一篇 R Markdown 帖子的内容:

--- 
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
```
4

1 回答 1

4

尝试用以下内容替换最后几行

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

我认为您需要R.pull将 R 输出的内容复制到 Ruby。此外,我建议直接从 Rmd 转换为 html。我已经成功地使用了这个策略来与另一个基于 ruby​​ 的博客平台Ruhoh合作。

更新。这很奇怪,但使用扩展名 rmd 似乎与 md 冲突。我将其随机更改为ramjekyll 似乎正确拾取它。我不确定为什么。

于 2012-12-10T04:48:14.723 回答