2 min read

Week05 - KaTeX Math in R

Week05 - KaTeX Math in R

htmlwidgets News This Week

@jcheng5 from RStudio

-@jcheng5 - d3 bubble chart bubbles demonstrated live in a simulated dashboard at this DataScience.LA meetup.

This Week’s Widget - katexR | KaTeX rendering for R

I’m guessing your first question will be something like this.

With MathJax and LaTeX, why the #$&) do we need another math / formula renderer?

Well, the simple answer is speed, but unfortunately the need for speed requires a sacrifice for completeness, so choose with care (see this list for function support ). The speed boost is huge though. Here is a jsperf comparison run on my machine.

jsperf speed test for katex and mathjax

And, another comparison courtesy of IntMath.

intmath speed test for katex intmath speed test for mathjax

Examples

Unfortunately, on this blog, I cannot post the result directly, so I have resorted to screenshots for the simple examples in this post. I’ll use the painful but typical <iframe> for the later examples of katexR in rmarkdown.

note: you’ll need an extra \ to escape special characters

Simple Examples

# not on CRAN, so install with devtools
#  devtools::install_github("timelyportfolio/katexR")
library(katexR)

katexR("x+1\\over\\sqrt{1-x^2}")

example 1 image of fraction

To see the similarity of KaTeX with MathJax and LaTeX, let’s use some examples from the MathJax examples. Here is the Cauchy-Schwarz Inequality.

# using MathJax example
#   http://cdn.mathjax.org/mathjax/latest/test/sample.html
katexR("\\left( \\sum_{k=1}^n a_k b_k \\right)^{\\!\\!2} \\leq
 \\left( \\sum_{k=1}^n a_k^2 \\right) \\left( \\sum_{k=1}^n b_k^2 \\right)")

example 2 image of math

For one more, let’s do the probably of a coin toss example.

# using MathJax example
#   http://cdn.mathjax.org/mathjax/latest/test/sample.html
katexR("P(E) = {n \\choose k} p^k (1-p)^{ n-k}")

example 3 image of math

In Markdown

I imagine that if you start using katexR you’ll most likely want to use it in a rmarkdown context for publication of research or presentations. I have embedded the rendered katexR example below to prove that katexR works just fine in rmarkdown.

Thanks

Thanks so much for all the work by

  • Khan Academy for educating all of us and open-sourcing their Javascript
  • Ramnath Vaidyanathan and RStudio for htmlwidgets