我有一个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()
的反应性有效。
更新
以下是@Nice解决方案之后的新结果:
答案 0 :(得分:5)
如果使用fragment.only
,则不包括CSS和JS,并且没有设置表/方程式。
执行此操作的一种简单方法是在iframe中包含带标题的完整HTML,这样它就不会干扰您应用的其余部分。
output$markdown <- renderUI({
tags$iframe(src='info.html',width="100%",frameBorder="0",height="1000px")
})
info.html
文件必须位于应用的www
文件夹中。您可以通过更改tags$iframe
。
您可以使用CSS更改iframe中主容器的宽度。如果将其添加到info.rmd文件中:
```{r results="asis",echo = FALSE}
cat("
<style>
.main-container.container-fluid {
max-width: 100%;
padding-left:0px;
}
</style>
")
```
答案 1 :(得分:0)
使用以下内容编辑闪亮的服务器部分应该有所帮助:
output$markdown <- renderUI({
markdown::markdownToHTML(knit('info.rmd', quiet = TRUE), fragment.only=TRUE)
withMathJax(includeHTML("info.html"))
})
或者您也可以执行以下操作:
output$markdown <- renderUI({
markdown::markdownToHTML(knit('info.rmd', quiet = TRUE), fragment.only=TRUE)
withMathJax(includeMarkdown("info.md"))
})