在 Shiny 中使用 MathJax 渲染 Latex
Rendering Latex using MathJax in Shiny
我正在尝试创建一个动态的 Shiny 应用程序,它使用 yacas 计算机代数系统来处理输入的函数。作为第一步,我希望 UI 确认输入的内容。
但是,以下 Shiny 代码未以 Latex 格式显示输入的函数。
library(shiny)
library(Ryacas) # for the TeXForm command
library(Ryacas0)
library(mathjaxr) # for rendering Latex expressions in Shiny
ui <- fluidPage(
sidebarPanel(
textInput(
inputId = "ui_function",
label = 'f(x) = ',
value = "x^2",
placeholder = "Enter function here"),
),
mainPanel(
uiOutput("entered")
)
)
server <- function(input, output) {
output$entered = renderUI({
withMathJax(
helpText(yac_str(paste0("TeXForm(",
input$ui_function,
")")
)
)
)
})
} # end server function
shinyApp(ui = ui, server = server)
当我从上面的代码中删除 'withMathJax' 命令时,它的行为方式完全相同,所以就好像 'withMathJax' 命令对输出没有任何影响。
举个简单的例子,我正在寻找用户输入 'x^2' 它应该显示
x²
我欢迎任何人提供的任何帮助。
我 运行 使用最新的 RStudio 2022.02.1 Build 461,使用 R4.1.3、Shiny 1.7.1 和 MathJax 1.6-0
您可以进行如下操作:
library(shiny)
library(Ryacas) # for the TeXForm command
ui <- fluidPage(
sidebarPanel(
textInput(
inputId = "ui_function",
label = 'f(x) = ',
value = "x^2",
placeholder = "Enter function here"),
),
mainPanel(
helpblock(withMathJax(uiOutput("entered", inline = TRUE)))
)
)
server <- function(input, output) {
output$entered = renderUI({
paste0(
"\(",
yac_str(paste0("TeXForm(", input$ui_function, ")")),
"\)"
)
})
} # end server function
shinyApp(ui = ui, server = server)
mathjaxr 包不适用于 Shiny,它用于帮助文件 (Rd)。
根据 Stephane 的建议,我 re-looked 在我的代码中,这个版本现在可以按预期工作了:
library(shiny)
library(Ryacas)
library(Ryacas0)
library(mathjaxr) # for rendering Latex expressions in Shiny
ui <- fluidPage(
sidebarPanel(
textInput(
inputId = "ui_function",
label = 'f(x) = ',
value = "x^2",
placeholder = "Enter function here"),
),
mainPanel(
withMathJax(uiOutput("entered"))
)
)
server <- function(input, output) {
output$entered = renderUI({
withMathJax(
helpText(
paste0(
"\(",
yac_str(paste0("TeXForm(", input$ui_function, ")")),
"\)"
)
)
)
})
} # end server function
shinyApp(ui = ui, server = server)
在 ui 的 mainPanel 中包含 withMathJax
似乎有所不同。似乎连接到服务器内部字符串的 "\("
字符串对其成功至关重要。
我正在尝试创建一个动态的 Shiny 应用程序,它使用 yacas 计算机代数系统来处理输入的函数。作为第一步,我希望 UI 确认输入的内容。 但是,以下 Shiny 代码未以 Latex 格式显示输入的函数。
library(shiny)
library(Ryacas) # for the TeXForm command
library(Ryacas0)
library(mathjaxr) # for rendering Latex expressions in Shiny
ui <- fluidPage(
sidebarPanel(
textInput(
inputId = "ui_function",
label = 'f(x) = ',
value = "x^2",
placeholder = "Enter function here"),
),
mainPanel(
uiOutput("entered")
)
)
server <- function(input, output) {
output$entered = renderUI({
withMathJax(
helpText(yac_str(paste0("TeXForm(",
input$ui_function,
")")
)
)
)
})
} # end server function
shinyApp(ui = ui, server = server)
当我从上面的代码中删除 'withMathJax' 命令时,它的行为方式完全相同,所以就好像 'withMathJax' 命令对输出没有任何影响。
举个简单的例子,我正在寻找用户输入 'x^2' 它应该显示
x²
我欢迎任何人提供的任何帮助。
我 运行 使用最新的 RStudio 2022.02.1 Build 461,使用 R4.1.3、Shiny 1.7.1 和 MathJax 1.6-0
您可以进行如下操作:
library(shiny)
library(Ryacas) # for the TeXForm command
ui <- fluidPage(
sidebarPanel(
textInput(
inputId = "ui_function",
label = 'f(x) = ',
value = "x^2",
placeholder = "Enter function here"),
),
mainPanel(
helpblock(withMathJax(uiOutput("entered", inline = TRUE)))
)
)
server <- function(input, output) {
output$entered = renderUI({
paste0(
"\(",
yac_str(paste0("TeXForm(", input$ui_function, ")")),
"\)"
)
})
} # end server function
shinyApp(ui = ui, server = server)
mathjaxr 包不适用于 Shiny,它用于帮助文件 (Rd)。
根据 Stephane 的建议,我 re-looked 在我的代码中,这个版本现在可以按预期工作了:
library(shiny)
library(Ryacas)
library(Ryacas0)
library(mathjaxr) # for rendering Latex expressions in Shiny
ui <- fluidPage(
sidebarPanel(
textInput(
inputId = "ui_function",
label = 'f(x) = ',
value = "x^2",
placeholder = "Enter function here"),
),
mainPanel(
withMathJax(uiOutput("entered"))
)
)
server <- function(input, output) {
output$entered = renderUI({
withMathJax(
helpText(
paste0(
"\(",
yac_str(paste0("TeXForm(", input$ui_function, ")")),
"\)"
)
)
)
})
} # end server function
shinyApp(ui = ui, server = server)
在 ui 的 mainPanel 中包含 withMathJax
似乎有所不同。似乎连接到服务器内部字符串的 "\("
字符串对其成功至关重要。