如何在Shiny App中嵌入含Tabset和公式的Rmarkdown(无需转HTML)
在Shiny应用中嵌入含Tabset和数学公式的Rmarkdown(不转HTML)
要实现同时在Shiny中展示Rmarkdown的标签集(Tabset)和数学公式,且不通过渲染为HTML的方式破坏原有Shiny UI,可以按照以下方式操作:
核心思路
先用knitr::knit()把Rmarkdown文件转换为Markdown格式,再在Shiny中通过includeMarkdown()加载该md文件,配合withMathJax()渲染数学公式,同时保留Tabset的交互效果。
完整代码示例
app.R
library(shiny) library(knitr) # 预先将Rmd转换为md文件 knit("example.Rmd") ui <- fluidPage( # 预留渲染Rmarkdown内容的位置 uiOutput("rmarkdown") ) server <- function(input, output) { output$rmarkdown <- renderUI({ # 加载md文件并渲染数学公式 withMathJax(includeMarkdown("example.md")) }) } shinyApp(ui = ui, server = server)
example.Rmd
--- title: "example" output: html_document date: '2022-08-05' --- ## Test 1 {.tabset} A B C D ### TAB 1 $$ E(X) $$ ### TAB 2 $$ E(Y) $$
补充说明
如果直接将Rmarkdown渲染为HTML并通过includeHTML()嵌入Shiny,虽然能正常显示公式和Tabset,但会干扰Shiny原生的tabsetPanel组件,导致UI布局混乱。而本方法通过先转md再渲染的方式,既保留了Tabset和数学公式的展示效果,又不会破坏原有Shiny应用的UI结构。
内容的提问来源于stack exchange,提问作者Ali
相关产品推荐
相关产品推荐

