Write in-line equations in your Shiny application with MathJax

By Ken Kleinman

(This article was first published on SAS and R, and kindly contributed to R-bloggers)

I’ve been working on a Shiny app and wanted to display some math equations. It’s possible to use LaTeX to show math using MathJax, as shown in this example from the makers of Shiny. However, by default, MathJax does not allow in-line equations, because the dollar sign is used so frequently. But I needed to use in-line math in my application. Fortunately, the folks who make MathJax show how to enable the in-line equation mode, and the Shiny documentation shows how to write raw HTML. Here’s how to do it.

R

Here I replicated the code from the official Shiny example linked above. The magic code is inserted into ui.R, just below withMathJax().
## ui.R


library(shiny)

shinyUI(fluidPage(
title = 'MathJax Examples with in-line equations',
withMathJax(),
# section below allows in-line LaTeX via $ in mathjax.
tags$div(HTML("
")),
helpText('An irrational number $sqrt{2}$
and a fraction $1-frac{1}{2}$'),
helpText('and a fact about $pi$:$frac2pi = frac{sqrt2}2 cdot
frac{sqrt{2+sqrt2}}2 cdot
frac{sqrt{2+sqrt{2+sqrt2}}}2 cdots$'),
uiOutput('ex1'),
uiOutput('ex2'),
uiOutput('ex3'),
uiOutput('ex4'),
checkboxInput('ex5_visible', 'Show Example 5', FALSE),
uiOutput('ex5')
))



## server.R
library(shiny)

shinyServer(function(input, output, session) {
output$ex1 withMathJax(helpText('Dynamic output 1: $alpha^2$'))
})
output$ex2 withMathJax(
helpText('and output 2 $3^2+4^2=5^2$'),
helpText('and output 3 $sin^2(theta)+cos^2(theta)=1$')
)
})
output$ex3 withMathJax(
helpText('The busy Cauchy distribution
$frac{1}{pigamma,left[1 +
left(frac{x-x_0}{gamma}right)^2right]}!$'))
})
output$ex4 invalidateLater(5000, session)
x withMathJax(sprintf("If $X$ is a Cauchy random variable, then
$P(X leq %.03f ) = %.03f$", x, pcauchy(x)))
})
output$ex5 if (!input$ex5_visible) return()
withMathJax(
helpText('You do not see me initially: $e^{i pi} + 1 = 0$')
)
})
})

Give it a try (or check out the Shiny app at https://r.amherst.edu/apps/nhorton/mathjax/)! One caveat is that the other means of in-line display, as shown in the official example, doesn’t work when the MathJax HTML is inserted as above.

An unrelated note about aggregators:We love aggregators! Aggregators collect blogs that have similar coverage for the convenience of readers, and for blog authors they offer a way to reach new audiences. SAS and R is aggregated by R-bloggers, PROC-X, and statsblogs with our permission, and by at least 2 other aggregating services which have never contacted us. If you read this on an aggregator that does not credit the blogs it incorporates, please come visit us at SAS and R. We answer comments there and offer direct subscriptions if you like our content. In addition, no one is allowed to profit by this work under our license; if you see advertisements on this page, the aggregator is violating the terms by which we publish our work.

To leave a comment for the author, please follow the link and comment on their blog: SAS and R.

R-bloggers.com offers daily e-mail updates about R news and tutorials on topics such as: Data science, Big Data, R jobs, visualization (ggplot2, Boxplots, maps, animation), programming (RStudio, Sweave, LaTeX, SQL, Eclipse, git, hadoop, Web Scraping) statistics (regression, PCA, time series, trading) and more…

Source:: R News

Leave a Reply

Your email address will not be published. Required fields are marked *

Time limit is exhausted. Please reload CAPTCHA.