Skip to content
Prev 8318 / 12125 Next

[R-pkg-devel] How to write a 'cases' environment in .Rd files?

On Thu, 11 Aug 2022 18:43:44 +0000
Marius Hofert <marius.hofert at uwaterloo.ca> wrote:

            
There is a possible workaround, but it's the opposite of beautiful. You
can use conditional text to compile one version of the formula for HTML
help and another one for PDF help:

\ifelse{html}{\eqn{\begin{cases}...}}{\eqn{\cases{...}}{ascii}}

It's as tedious as it looks. For extra style(?) points, you can put a
three-argument user-defined macro in man/macros/whatever.Rd that
forwards its arguments to one of the \ifelse branches. As far as I
remember, \newcommand{}{} has to fit on one line, but in R ? 3.6.0,
macros themselves can take multi-line arguments.

If you're targeting an earlier version of R, you can make multi-line
arguments work by forcing R to cache the parse tree of the man page
while building a source tarball with a newer R version using
\Sexpr[stage=build]{}, costing you some time during R CMD build and a
slightly larger source tarball. (It's an implementation detail that one
normally shouldn't depend upon. Thankfully, as of 2022, there won't be
any newer versions of R ? 3.5.x to break it.) Support for
man/macros/*.Rd only appeared in R-3.2.0, so I haven't researched
compatibility tricks for even older versions of R.