- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 DT::datatable
在 R 中输出格式良好的交互式表格。
...唯一的问题是我想要一份 heroku 工作来为我编写文档,而且我了解到 RStudio 和 rmarkdown::render()
在引擎盖下使用 pandoc - 但 pandoc 不会在精简版中发货 R Buildpack对于heroku。
有什么方法可以让旧的 Markdown 引擎( knitr:knit2html
或 markdown:markdownToHTML
)传递支持 datatable
的 javascript通过?或者更准确地说,在不使用 pandoc 的情况下生成下面的示例表?
这是一个最小的例子:
测试.Rmd
---
title: "testing"
output: html_document
---
this is a datatable table
```{r test2, echo=FALSE}
library(DT)
DT::datatable(
iris,
rownames = FALSE,
options = list(pageLength = 12, dom = 'tip')
)
```
this is regular R output
```{r}
head(iris)
```
require(knitr)
knitr::knit2html('testing.Rmd')
this is a datatable table <!–html_preserve–>
<!–/html_preserve–>
this is regular R output
head(iris)
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1 5.1 3.5 1.4 0.2 setosa
## 2 4.9 3.0 1.4 0.2 setosa
## 3 4.7 3.2 1.3 0.2 setosa
## 4 4.6 3.1 1.5 0.2 setosa
## 5 5.0 3.6 1.4 0.2 setosa
## 6 5.4 3.9 1.7 0.4 setosa
<!–html_preserve–>
)
htmlPreserve
东西,但无法弄清楚如何在这里应用它。用
saveWidget
做了一些疯狂的事情那是不成功的,不值得重复。
最佳答案
这是一个使用包 knitr
的解决方案, markdown
, base64enc
和 htmltools
.它模仿了 rmarkdown::render
内部发生的事情,但不依赖于 pandoc
.默认情况下,它会生成一个自包含的 HTML 文件,或者可选择将所有依赖项复制到一个文件夹中。对于后者,它假设它所依赖的所有 CSS 和 JS 文件都是唯一命名的(即,如果两个 htmlwidget 都决定调用它们的 css 文件 style.css,它将不会同时导入两者)。
library("knitr")
library("htmltools")
library("base64enc")
library("markdown")
render_with_widgets <- function(input_file,
output_file = sub("\\.Rmd$", ".html", input_file, ignore.case = TRUE),
self_contained = TRUE,
deps_path = file.path(dirname(output_file), "deps")) {
# Read input and convert to Markdown
input <- readLines(input_file)
md <- knit(text = input)
# Get dependencies from knitr
deps <- knit_meta()
# Convert script dependencies into data URIs, and stylesheet
# dependencies into inline stylesheets
dep_scripts <-
lapply(deps, function(x) {
lapply(x$script, function(script) file.path(x$src$file, script))})
dep_stylesheets <-
lapply(deps, function(x) {
lapply(x$stylesheet, function(stylesheet) file.path(x$src$file, stylesheet))})
dep_scripts <- unique(unlist(dep_scripts))
dep_stylesheets <- unique(unlist(dep_stylesheets))
if (self_contained) {
dep_html <- c(
sapply(dep_scripts, function(script) {
sprintf('<script type="text/javascript" src="%s"></script>',
dataURI(file = script))
}),
sapply(dep_stylesheets, function(sheet) {
sprintf('<style>%s</style>',
paste(readLines(sheet), collapse = "\n"))
})
)
} else {
if (!dir.exists(deps_path)) {
dir.create(deps_path)
}
for (fil in c(dep_scripts, dep_stylesheets)) {
file.copy(fil, file.path(deps_path, basename(fil)))
}
dep_html <- c(
sprintf('<script type="text/javascript" src="%s"></script>',
file.path(deps_path, basename(dep_scripts))),
sprintf('<link href="%s" type="text/css" rel="stylesheet">',
file.path(deps_path, basename(dep_stylesheets)))
)
}
# Extract the <!--html_preserve--> bits
preserved <- extractPreserveChunks(md)
# Render the HTML, and then restore the preserved chunks
html <- markdownToHTML(text = preserved$value, header = dep_html)
html <- restorePreserveChunks(html, preserved$chunks)
# Write the output
writeLines(html, output_file)
}
render_with_widgets("testing.Rmd")
---
title: "TestWidgets"
author: "Nick Kennedy"
date: "5 August 2015"
output: html_document
---
First test a dygraph
```{r}
library(dygraphs)
dygraph(nhtemp, main = "New Haven Temperatures") %>%
dyRangeSelector(dateWindow = c("1920-01-01", "1960-01-01"))
```
Now a datatable
```{r}
library(DT)
datatable(iris, options = list(pageLength = 5))
```
```{r}
library(d3heatmap)
d3heatmap(mtcars, scale="column", colors="Blues")
```
render_with_widgets("TestWidgets.Rmd")
关于r - 编织 DT::datatable 没有 pandoc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31645528/
我正在使用来自 http://www.zotero.org/styles/ieee 的 IEEE 引用样式在一个项目中使用 Pandoc。 当我引用引用文献时,它显示为 1在文本中,而我希望它显示为
我希望我的文档的某些部分仅适用于给定的输出格式。例如,我有一个需要特殊 LaTeX 处理的图像,我想使用\includegraphics 来处理它。但是对于 epub 版本,我想要标准行为。 Pand
default.beamer LaTex beamer 的 pandoc 默认模板有这一行: $if(theme)$ \usetheme{$theme$} $endif$ 特定主题的测试也有效吗?就像
我正在尝试为 pandoc 添加自定义 latex 模板 我知道 pandoc 模板进入 ~/.pandoc/templates 我通过输入 pandoc --v 确认了 pandoc 目录位置- 它
是否可以为 pandoc 设置默认选项? ?例如,我一直想使用 xelatex 生成 PDF,据我所知,我这样做的选择是通过 --latex-engine=xelatex对 pandoc 的每次调用,
我有一个从默认加载的 Pandoc (v1.19.2.1) HTML5 模板 --data-dir .在模板中,我需要加载外部资源,例如样式表和 JavaScript。我想相对于模板的路径加载这些资源
我正在尝试使用 pandoc 将 Markdown 文件编译为 HTML。我已经设法转换文件并向其中添加样式表,但我似乎无法正确添加一些 Javascript。到目前为止,我得到的是以下命令: pan
我通过 Anaconda 在我的系统上安装了 Pandoc 2.2.3.2。我用它转换的 Reveal.js 幻灯片不起作用,因为插入的 Reveal.js 代码链接似乎是错误的。 documenta
是否可以在 markdown 文件中使用 knitr 的 pandoc() 函数和嵌入的 pandoc 配置来更改默认的 pandoc latex 模板选项? 例如,如果我在 foo.md 的开头使用
在从 Markdown 生成 PDF 时,您如何指定 Pandoc 应使用特定的页眉和页脚? 目前,我使用以下命令从命令行创建我的文档: pandoc -s -V geometry:margin=1i
我有一台 Windows 8 机器,我刚刚运行了 pandoc-1.13-windows.msi 安装程序。安装程序没有让我选择安装路径,但它没有错误地完成了。我无法从命令行运行 pandoc,所以我
我对 Pandoc 比较陌生,我正在尝试用我的出版物生成一个 HTML 文件以放在我的网站上。我希望首先按年份对出版物列表进行编号和组织,最新的排在最前面,最早的排在最后。 我可以使用正确的 csl
当我运行下面的命令从 Markdown 生成幻灯片时,未正确选择主题。 pandoc slides -o slides.html -s -V theme=beige -t revealjs 我的幻灯片
我正在使用 pandoc + beamer 制作一些幻灯片。如何创建标题幻灯片以介绍新部分? 例如 ____Slide 1_____ Section 1 ... * bla * bla * bla _
当输出为 HTML 时,我可以成功生成图像,但在尝试 pdf 输出时出错。 图像的输入文件文本, ![](images\icon.png "test") 错误产生, pandoc: Error p
我正在使用 Pandoc 编写站点的内容。如何在文档中包含元标记(特别是描述和关键字标记),而不更改传递给 Pandoc 的命令行参数? 我的意思是,我可以在文档文本中以某种方式包含元标记吗?我不想传
pandoc User's Guide状态(强调添加): For output formats other than LaTeX, pandoc will parse LaTeX \newcomman
我正在使用 pypandoc 将 Markdown 文件转换为 LaTex。我的 Markdown 文件有一个标题,例如: # Header Text # 当 pypandoc 将文件呈现为 .tex
我正在尝试使用 Pandoc 从 html 转换为 pdf。输出非常好,仍然使用命令 pandoc index.html -o output.pdf 我丢失了所有内部链接(从目录到章节,从文本到脚注等
我试图转换这个 html SHILPI 使用带有此命令的 pandoc 到 docx pandoc -s -o "test.docx" -t html5 -t docx html_file 但是它丢失
我是一名优秀的程序员,十分优秀!