nev*_*int 5 html javascript markdown r shiny
我有一个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$$
Run Code Online (Sandbox Code Playgroud)
ShinyApp就像这样调用Rmarkdown:
server.R
包含这个
output$markdown <- renderUI({
HTML(markdown::markdownToHTML(knit('info.rmd', quiet = TRUE), fragment.only=TRUE))
})
Run Code Online (Sandbox Code Playgroud)
ui.R
包含这个:
fluidPage(uiOutput('markdown'))
Run Code Online (Sandbox Code Playgroud)
但是为什么生成的表和数学看起来像这样呢?
什么是正确的方法呢?
在Shiny外独立运行时info.rmd,正确生成表:
我试过这个 ui.R
includeHTML("info.html")
Run Code Online (Sandbox Code Playgroud)
这正确显示文件html,但防止其他的绘图和反应性tabPanel()工作.
更新
这是@Nice解决方案之后的新结果:
如果使用fragment.only,则不包括CSS和JS,并且未对表/方程进行样式设置.
一种简单的方法是在iframe中包含带有标题的完整HTML,这样它就不会干扰您应用的其余部分.
output$markdown <- renderUI({
tags$iframe(src='info.html',width="100%",frameBorder="0",height="1000px")
})
Run Code Online (Sandbox Code Playgroud)
该info.html文件需要位于www您的应用程序的文件夹中.您可以通过更改中的参数来调整iframe的宽度和高度tags$iframe.
您可以使用CSS更改iframe中主容器的宽度.如果将其添加到info.rmd文件中:
```{r results="asis",echo = FALSE}
cat("
<style>
.main-container.container-fluid {
max-width: 100%;
padding-left:0px;
}
</style>
")
```
Run Code Online (Sandbox Code Playgroud)
使用以下内容编辑闪亮的服务器部分应该会有所帮助:
output$markdown <- renderUI({
markdown::markdownToHTML(knit('info.rmd', quiet = TRUE), fragment.only=TRUE)
withMathJax(includeHTML("info.html"))
})
Run Code Online (Sandbox Code Playgroud)
或者,您也可以执行以下操作:
output$markdown <- renderUI({
markdown::markdownToHTML(knit('info.rmd', quiet = TRUE), fragment.only=TRUE)
withMathJax(includeMarkdown("info.md"))
})
Run Code Online (Sandbox Code Playgroud)