repr icon indicating copy to clipboard operation
repr copied to clipboard

Equations (and other external dependencies) in HTML help

Open aitap opened this issue 2 years ago • 0 comments

Since R-4.2.0, HTML help can now contain TeX-like equations typeset using KaTeX or MathJax, unless the _R_HELP_ENABLE_ENHANCED_HTML_ environment variable is set to a false value (documented in NEWS). Unfortunately, it's hard to bundle the dependencies required for this to happen together with the help text. Currently, repr_help_files_with_topic_generic strips everything except the page body, resulting in LaTeX source being shown for equations:

repr_html(help(dnorm))help(dnorm) rendered with latex source instead of typeset equations

As a workaround, it should be possible to either set the _R_HELP_ENABLE_ENHANCED_HTML_ environment variable to FALSE (better do it on the IRkernel side, then? feel free to transfer the issue) or pass the texmath = FALSE (anything but "katex" or "mathjax") argument to Rd2HTML in repr_html.help_files_with_topic, which will produce plain text equations from the other argument of \[d]eqn. This still won't work for packages that use the mathjaxr package.

I don't know enough about the kernel infrastructure, but I see a render_math function in IRkernel/inst/kernelspec/kernel.js. The new math has class="reqn" (undocumented), so if that's enough for the kernel to process the math, feel free to transfer the issue to IRkernel.

More generally, any external dependencies that a help page might have (e.g. \figure{}) may be broken after repr_html(). There's probably no universal solution for this. For example, it may help to start the dynamic help server and then return <iframe src="..."> links to it, but then the styling would be inconsistent with the rest of the notebook.

aitap avatar Nov 21 '22 10:11 aitap