【发布时间】:2015-10-10 15:14:48
【问题描述】:
我正在开发一款旨在帮助学生的闪亮应用。它使用学生特定的输入值通过一些方程为每个学生生成解决方案。
问题在于 MathJax 方程被呈现为常规文本,请参见最小示例和此图像:
知道如何正确渲染动态 MathJax 元素吗?
我目前的做法:
- 使用带有输入参数 (
params$student) 的rmarkdown文档 (solu_template.Rmd) 创建学生特定的降价文件; - 渲染markdown文件并将其包含在
ui中。
如this example 所示,响应式、动态变化的 MathJax 元素是可行的。但是,我想使用更复杂的文件,并保持将解决方案模板准备为rmarkdown 文件的便利性。
其他尝试:
- 直接使用
render()生成的html文件,但是不知道怎么把它作为动态变化的组件包含在ui中; - 用
readLines()读取生成的html文件,用htmlOutput显示;没有成功,只是一堆代码。
那么,使用这种方法的问题是如何渲染/显示动态变化的 html 文件?
欢迎所有想法,建议!
app.R
library(shiny)
library(markdown)
shinyApp(
ui = fluidPage(
selectInput("student", "Student:",
choices = c("Student1", "Student2", "Student3")),
actionButton("show_solu", "Run!"),
hr(),
withMathJax(),
htmlOutput("solu")
),
server = function(input, output, session) {
output$solu <- eventReactive(input$show_solu, {
rmarkdown::render("solu_template.Rmd",
quiet = F, clean = F,
params = list(student = input$student))
solu <- renderMarkdown("solu_template.knit.md")
}
)
}
)
solu_template.Rmd
---
title: "Solution"
params:
student: Student1
output:
html_document:
theme: readable
---
```{r, echo = FALSE}
S = list(Student1 = 1, Student2 = 2, Student3 = 3)
s = S[[params$student]]
```
## Heading
Student dependent initial value:
$s = `r s`$
Some nice reasoning which yields to this equation:
$R = s^2 + \sqrt{2} = `r signif(s^2 + sqrt(2), 3)`$
【问题讨论】:
标签: r shiny knitr r-markdown mathjax