我有一个如下所示的 Rmarkdown 文件 (info.rmd
):
---
title: "Information"
theme: yeti
date: "4/1/2017"
output: html_document
---
## R Markdown
This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see <http://rmarkdown.rstudio.com>.
```{r echo = FALSE, results = 'asis'}
library(knitr)
kable(mtcars[1:5, ], caption = "A knitr kable.")
```
## Formulation
Here is where we formulate
$$\sum_{i=1}^n X_i$$
还有像这样调用 Rmarkdown 的 ShinyApp:
server.R
包含这个
output$markdown <- renderUI({
HTML(markdown::markdownToHTML(knit('info.rmd', quiet = TRUE), fragment.only=TRUE))
})
ui.R
包含这个:
fluidPage(uiOutput('markdown'))
但是生成的表格和数学怎么看起来像这样呢?
正确的做法是什么?
当在 Shiny 之外独立运行时,info.rmd
会正确生成表格:
我在 ui.R
中试过这个
includeHTML("info.html")
正确显示文件 html,但阻止绘图
和其他 tabPanel()
中的 react 性以工作。
更新
这是@Nice 解决后的新结果:
最佳答案
如果您使用 fragment.only
,则不包含 CSS 和 JS,并且表格/方程式没有样式。
一种简单的方法是在 iframe 中包含带有 header 的完整 HTML,这样它就不会干扰应用的其余部分。
output$markdown <- renderUI({
tags$iframe(src='info.html',width="100%",frameBorder="0",height="1000px")
})
info.html
文件需要位于您应用的 www
文件夹中。您可以通过更改 tags$iframe
中的参数来调整 iframe 的宽度和高度。
您可以使用 CSS 更改 iframe 中主容器的宽度。如果将此添加到 info.rmd 文件中:
```{r results="asis",echo = FALSE}
cat("
<style>
.main-container.container-fluid {
max-width: 100%;
padding-left:0px;
}
</style>
")
```
关于javascript - 从 Shiny App 调用时如何在 Rmarkdown 中呈现表格和数学,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43158408/