| roptions: | dev='png',highlight=FALSE |
|---|
print(2 + 2)
cat("hello")
what is :R:`2+2`
| library(stringr) | |
| #' @rdname hook_plot | |
| #' @export | |
| hook_plot_rest <- function (x, options) | |
| { | |
| print(x) | |
| ## Use * and only first name of the plot? | |
| y <- sprintf("\n.. image:: %s.*", x[1]) | |
| opts.str <- c() | |
| if (!is.null(options$out.height)) { | |
| opts.str <- c(opts.str, | |
| sprintf(" :height: %s", options$out.height)) | |
| } | |
| if (!is.null(options$out.width)) { | |
| opts.str <- c(opts.str, | |
| sprintf(" :width: %s", options$out.width)) | |
| } | |
| paste(y, paste(opts.str, collapse="\n"), sep="\n") | |
| } | |
| #' @rdname output_hooks | |
| #' @export | |
| render_rest <- function() { | |
| knit_hooks$restore() | |
| opts_chunk$set(dev = 'png', highlight = FALSE) | |
| hook.src <- function(x, options) { | |
| c("\n\n::\n\n", knitr:::line_prompt(x, " ", " "), "\n") | |
| } | |
| hook.output <- function(x, options) { | |
| if(knitr:::output_asis(x, options)) { | |
| x | |
| } else { | |
| hook.src(x, options) | |
| } | |
| } | |
| hook.warning <- hook.src | |
| hook.error <- hook.src | |
| hook.message <- hook.src | |
| hook.inline <- function(x) { | |
| if (inherits(x, 'AsIs')) { | |
| '%s' | |
| } else { | |
| '``%s``' | |
| }, knitr:::.inline.hook(x) | |
| } | |
| hook.plot <- hook_plot_rest | |
| knit_hooks$set(source = hook.src, | |
| output = hook.output, | |
| warning = hook.warning, | |
| error = hook.error, | |
| message = hook.message, | |
| inline = hook.inline, | |
| plot = hook.plot) | |
| } | |
| #' @rdname output_hooks | |
| #' | |
| #' Variation on standard reStructured text that uses the code-block directive. | |
| #' | |
| #' @export | |
| render_sphinx <- function() { | |
| render_rest() | |
| hook.src <- function(x, options) { | |
| c(".. code-block:: r\n", | |
| str_c("\n", knitr:::line_prompt(x, " ", " ")), | |
| "\n") | |
| } | |
| knit_hooks$set(source = hook.src) | |
| } | |
| pat_rest <- function() { | |
| pat <- | |
| list( | |
| chunk.begin = "^..\\s+<<(.*)>>=\\s*$", | |
| chunk.end = "^..\\s+@\\s*$", | |
| chunk.code = "^..", | |
| ref.chunk = "^..\\s*<<(.*)>>\\s*$", | |
| inline.code = ":R:`([^`]*)`", | |
| global.options = ":roptions:\\s+([^\n]*)", | |
| ref.label = "^## @knitr (.*)$") | |
| knit_patterns$restore() | |
| knit_patterns$set(pat) | |
| } | |
| pat_rest() | |
| # render_rest() | |
| render_sphinx() |
Done. I added the changes to the branch "rest" in my forked repo.
this is great; could you commit this to your forked repository? I have comments that I want to do them line by line. After that you can send me a pull request. Thanks!