我正在研究一款旨在幫助學生的閃亮應用。它使用學生特定的輸入值爲每個學生生成一些方程式的解決方案。如何在反應式MathJax元素中加入html代碼?
的問題是,MathJax方程呈現爲普通文本,看到最小的例子,這個形象:
任何想法MathJax如何動態元素能正確呈現?
我目前的做法:
- 使用文件(
solu_template.Rmd
)與輸入參數(params$student
)創建學生特定的降價文件; - 呈現降價文件並將其包含在
ui
中。
如this example所示,反應式動態更改MathJax元素是可行的。但是,我想使用更復雜的文件,並將解決方案模板的準備工作保留爲文件。
其他嘗試:
- 直接使用由
render()
生成的HTML文件,但我不知道如何將它包含在ui
作爲一個動態變化的組件; - 讀取生成的html文件
readLines()
並使用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)`$
感謝您的鏈接,很好的例子,你做了一些非常有趣的事情 - 這是我從來沒有想到的 - 相結合RMD而有光澤。關於OP,實際上'render()'在內部使用'knitr'函數,並且只有在添加了我的答案中給出的行後渲染才起作用。我看到你也對'inclRmd()'中的'knitr'輸出做了一些修改,並且你還提出了一個評論,即不包含圖像渲染(嵌入)。你有沒有解決這個問題呢?我也面臨類似的問題。 (我會仔細看看你'inclRmd()') – Arpi
我不想實際使用嵌入式圖像。除非你需要發送一個文件給學生或其他東西,否則我會避免它。無論如何,Shiny會將圖像放在某個地方。 – Vincent