Package 'mathml'

Title: Translate R Expressions to MathML and LaTeX/MathJax
Description: Translate R expressions to MathML or MathJax/LaTeX so that they can be rendered in R Markdown documents and shiny apps. This package depends on R package rolog, which requires an installation of the SWI-Prolog runtime either from swi-prolog.org or from R package rswipl.
Authors: Matthias Gondan [aut, cre, cph] (Universität Innsbruck), Irene Alfarone [aut] (Universität Innsbruck), European Commission [fnd] (Erasmus+ Programme, 2019-1-EE01-KA203-051708)
Maintainer: Matthias Gondan <[email protected]>
License: FreeBSD
Version: 1.3
Built: 2024-11-05 07:21:24 UTC
Source: https://github.com/mgondan/mathml

Help Index


Right arrow, presented as x -> y

Description

Right arrow, presented as x -> y

Usage

x %->% y

Arguments

x

first element

y

second element

Value

NA, it produces a right arrow


Product x * y, shown as x dot y

Description

Product x * y, shown as x dot y

Usage

x %.% y

Arguments

x

first factor

y

second factor

Value

x * y


Plus Minus, it shows x and calculates x +- y

Description

Plus Minus, it shows x and calculates x +- y

Usage

x %+-% y

Arguments

x

first term

y

second term

Value

c(x - y, x + y) x plus min y


Left arrow, presented as x <- y

Description

Left arrow, presented as x <- y

Usage

x %<-% y

Arguments

x

first element

y

second element

Value

NA, it produces a left arrow


Double sided arrow, presented as x <-> y

Description

Double sided arrow, presented as x <-> y

Usage

x %<->% y

Arguments

x

first element

y

second element

Value

NA, it produces a double sided arrow


Right double arrow, displayed as x => y

Description

Right double arrow, displayed as x => y

Usage

x %<=% y

Arguments

x

first element

y

second element

Value

NA, it produces a right double arrow


If and only if condition, displayed as x <=> y

Description

If and only if condition, displayed as x <=> y

Usage

x %<=>% y

Arguments

x

first element

y

second element

Value

NA, it produces a double arrow double-sided


Equivalence, shown as x == y

Description

Equivalence, shown as x == y

Usage

x %==% y

Arguments

x

first argument

y

second argument

Value

x == y


Left double arrow, displayed as x <= y

Description

Left double arrow, displayed as x <= y

Usage

x %=>% y

Arguments

x

first element

y

second element

Value

NA, it produces a left double arrow


Congruence, shown as x =~ y

Description

Congruence, shown as x =~ y

Usage

x %=~% y

Arguments

x

first argument

y

second argument

Value

x == y, e.g., a cong b


Approximate equality, shown as x ~~ y

Description

Approximate equality, shown as x ~~ y

Usage

x %~~% y

Arguments

x

first argument

y

second argument

Value

The result of isTRUE(all.equal(x, y))


Down double arrow, displayed as x dArr y

Description

Down double arrow, displayed as x dArr y

Usage

x %dbldown% y

Arguments

x

first element

y

second element

Value

NA, it produces a downward double arrow


Up double arrow, displayed as x uArr y

Description

Up double arrow, displayed as x uArr y

Usage

x %dblup% y

Arguments

x

first element

y

second element

Value

NA, it produces a upward double arrow


Down arrow, presented as x downarrow y

Description

Down arrow, presented as x downarrow y

Usage

x %down% y

Arguments

x

first element

y

second element

Value

NA, it produces a downward arrow


Proportional, shown as x o< y

Description

Proportional, shown as x o< y

Usage

x %prop% y

Arguments

x

first argument

y

second argument

Value

NA


Up arrow, presented as x up y

Description

Up arrow, presented as x up y

Usage

x %up% y

Arguments

x

first element

y

second element

Value

NA, it produces an upward arrow


add

Description

This is a function that allows the user to highlight the mistakes, in particular an extra element in a list

Usage

add(expr)

Arguments

expr

expression

Value

expr , e.g., highlights a + b from a + b


add_left

Description

This is a function that allows the user to highlight the mistakes, in particular the redundancies in the left-hand side of the expression.

Usage

add_left(expr)

Arguments

expr

expression

Value

expr e.g., highlights a + from a + b


add_right

Description

This is a function that allows the user to highlight the mistakes, in particular the redundancies in the right-hand side of the expression.

Usage

add_right(expr)

Arguments

expr

expression

Value

expr , e.g., highlights + b from a + b


Calligraphic font

Description

Calligraphic font

Usage

cal(x)

Arguments

x

an R symbol. This function is used to render the content in calligraphic font in MathJax. In MathML, script font is used.

Value

The function cal is a wrapper for the identity function.

See Also

identity()

Examples

mathjax(quote(K %in% cal(K)))

Canonicalize an R call: Reorder the function arguments

Description

Canonicalize an R call: Reorder the function arguments

Usage

canonical(term = quote(`%in%`(table = Table, x = X)), drop = TRUE)

Arguments

term

an R call.

drop

whether to drop the argument names or not

Value

The R function, with arguments rearranged

Examples

canonical(term=quote(`%in%`(table=Table, x=X)))

Identity functions for different decorations

Description

Identity functions for different decorations

Usage

roof(x)

boxed(x)

cancel(x)

phantom(x)

prime(x)

tilde(x)

over(x)

under(x)

underover(x)

hyph(x)

color(x)

Arguments

x

the expression to render

Value

x

Examples

roof(1) + mean(2) + boxed(3) + cancel(4) + phantom(5) + prime(6) + tilde(7)

mathml(quote(roof(b) + mean(X) + boxed(3) + cancel(4) + phantom(5)))

denote This is a function that allows the user to insert abbreviations in the formula, explain them and make the needed computations

Description

denote This is a function that allows the user to insert abbreviations in the formula, explain them and make the needed computations

Usage

denote(abbr, expr, info)

Arguments

abbr

Abbreviation used in the text to refer to the calculation, for example 's_p' for the pooled variance.

expr

Expression: calculations to be made in order to obtain the value to which the abbreviation refers to.

info

Information: Explanation of the formula used to provide the value of the abbreviation. e.g. 'the pooled variance'

Value

expr e.g., x denotes a^2 + b


Division displayed as large fraction

Description

Division displayed as large fraction

Usage

dfrac(e1, e2)

Arguments

e1

numerator

e2

denominator

Value

e1 / e2

See Also

frac(), over()


Multiplication

Description

Multiplication

Usage

dot(e1, e2)

nodot(e1, e2)

times(e1, e2)

Arguments

e1

numerator

e2

denominator

Value

e1 * e2


Return function body

Description

Return function body

Usage

fname(fname, body)

Arguments

fname

not clear

body

not clear

Value

body


Identity functions for different font styles

Description

Identity functions for different font styles

Usage

plain(x)

italic(x)

bold(x)

Arguments

x

the expression to render

Value

x

Examples

plain(1) + bold(2) + italic(3)

mathml(term=quote(plain(abc) + bold(def) + italic(ghi)))

Division displayed as fraction

Description

Division displayed as fraction

Usage

frac(e1, e2)

Arguments

e1

numerator

e2

denominator

Value

e1 / e2


Hook for custom symbols

Description

hook(term, display) unhook(term)

Usage

hook(term, display, quote = TRUE, as.rolog = TRUE)

unhook(term, quote = TRUE, as.rolog = TRUE)

Arguments

term

an R call or symbol/number. This is the expression to replace.

display

an R call or symbol/number. This is shown instead of term.

quote

(default is TRUE) indicates that term and display should be quoted.

as.rolog

(default is TRUE) indicates that simplified quasi-quotation is to be used.

Value

TRUE on success

Examples

hook(t0, subscript(t, 0))
mathml(quote(t0))
hook(term=quote(t0), display=quote(superscript(t, 0)), quote=FALSE)
mathml(quote(t0))
unhook(t0)
mathml(quote(t0))

instead

Description

This is a function that allows the user to highlight the mistakes, in particular adds a curly bracket under the wrong term and it provides the correct solutions.

Usage

instead(inst, of)

Arguments

inst

the wrong term

of

the correct term

Value

inst

Examples

1 + instead(2, 3)

mathml(term=quote(1 + instead(2, 3)))

Adds the class "math" to the object for knitr output via mathout()

Description

Adds the class "math" to the object for knitr output via mathout()

Usage

math(term, flags = NULL)

Arguments

term

an R call or symbol/number. This function translates term into a LaTeX/MathJax string.

flags

(default NULL) list of flags that control the translation

Value

term with additional class "math" and flags as attributes.

See Also

mathml(), mathjax(), mathout()

Examples

math(term=quote((a + b)^2L == a^2L + 2L*a*b + b^2L))

Mathjax output

Description

Mathjax output

Usage

mathjax(
  term = quote((a + b)^2L == a^2L + 2L * a * b + b^2L),
  flags = NULL,
  env = globalenv()
)

Arguments

term

an R call or symbol/number. This function translates term into a LaTeX/MathJax string.

flags

(default NULL) list of flags that control the translation

env

(default globalenv()) The R environment in which r_eval is being executed (see vignette for details, "Ringing back to R").

Details

In some functions, the Prolog code may ring back R, for example, to find the names of function arguments. For example (see vignette), when rendering the call integrate(g, lower=0L, upper=Inf) as Int_0^Inf g(x) dx, Prolog needs to know that the function g is a function of x. The Prolog rule then searches for the formalArgs of g in the environment env.

Value

A string with the MathJax representation of term.

See Also

mathml()

Examples

mathjax(term=quote((a + b)^2L == a^2L + 2L*a*b + b^2L))

MathML output

Description

MathML output

Usage

mathml(
  term = quote((a + b)^2L == a^2L + 2L * a * b + b^2L),
  flags = NULL,
  env = globalenv()
)

Arguments

term

an R call or symbol/number. This function translates term into a MathML string.

flags

(default NULL) list of flags that control the translation. This includes "context" settings such as error("ignore"), or a default number of decimal places for numeric output.

env

(default globalenv()) The R environment in which r_eval is being executed.

Details

In some functions, the Prolog code may ring back R, for example, to find the names of function arguments. For example (see vignette), when rendering the call integrate(g, lower=0L, upper=Inf) as Int_0^Inf g(x) dx, Prolog needs to know that the function g is a function of x. The Prolog rule then searches for the formalArgs of g in the environment env.

Value

A string with the MathML representation of term.

See Also

mathjax()

Examples

mathml(term=quote((a + b)^2L == a^2L + 2L*a*b + b^2L))
mathml(term=3.14159265, flags=list(round=3L))
mathml(term=3.14159265, flags=list(quote(round(3L))))

Map R operators to their respective Prolog counterparts

Description

Map R operators to their respective Prolog counterparts

Usage

mathml_preproc(query = quote(5%%2))

Arguments

query

an R call or symbol/number. This function translates components of query into their respective counterparts from Prolog

Value

The translated query

See Also

mathjax(), mathml()

Examples

mathml_preproc(quote(5 %% 2))

MathML or MathJax output, depending on the knitr context

Description

MathML or MathJax output, depending on the knitr context

Usage

mathout(term, flags = NULL, env = parent.frame())

inline(term, flags = NULL, env = parent.frame())

Arguments

term

an R call or symbol/number. This function translates term into a LaTeX/MathJax string.

flags

(default NULL) list of flags that control the translation

env

(default parent.frame()) The R environment in which r_eval is being executed (see vignette for details, "Ringing back to R").

Details

This function checks knitr::is_html_output() and knitr::is_html_output() and invokes the respective function mathml() or mathjax(). Outside of knitr context, MathML is returned, and a warning is given.

Value

A string with the MathML or MathJax representation of term.

See Also

mathml(), mathjax(), inline()

Examples

mathout(term=quote((a + b)^2L == a^2L + 2L*a*b + b^2L))

inline(term=quote((a + b)^2L == a^2L + 2L*a*b + b^2L))

Add a name attribute to an element (most often, an R function)

Description

Add a name attribute to an element (most often, an R function)

Usage

name(x, name)

Arguments

x

an R object, e.g., an R function

name

the name of the object/function

Value

The object with the name attribute

Examples

f <- function(x) {sin(x)}
mathjax(call("integrate", name(f, "sin"), 0L, 2L*pi))

omit

Description

This is a function that allows the user to highlight the mistakes, in particular the omission of an element from a list.

Usage

omit(expr)

Arguments

expr

expression

Value

NULL e.g., remove a + b from a + b


omit_left This is a function that allows the user to highlight the mistakes, in particular the omissions in the left-hand side of the expression

Description

omit_left This is a function that allows the user to highlight the mistakes, in particular the omissions in the left-hand side of the expression

Usage

omit_left(expr)

Arguments

expr

The expression, e.g. a + b

Value

substitute(expr)[[3]], e.g., b from a + b


omit_right This is a function that allows the user to highlight the mistakes, in particular the omissions in the right-hand side of the expression

Description

omit_right This is a function that allows the user to highlight the mistakes, in particular the omissions in the right-hand side of the expression

Usage

omit_right(expr)

Arguments

expr

expression

Value

substitute(expr)[[2]], e.g., a from a + b


product over a range. On the R side, this function just returns the product of the first argument, but allows for decorations.

Description

product over a range. On the R side, this function just returns the product of the first argument, but allows for decorations.

Usage

prod_over(x, from, to)

Arguments

x

the object to be multiplied

from

decoration for prod_from^to x_i

to

decoration for prod_from^to x_i

Value

The function returns prod(x)

See Also

prod(), sum_over()

Examples

mathjax(quote(prod_over(x[i], i=1L, N)))

sum over a range. On the R side, this function just returns the first argument, but allows for decorations.

Description

sum over a range. On the R side, this function just returns the first argument, but allows for decorations.

Usage

sum_over(x, from, to)

Arguments

x

the object to be summed

from

decoration for sum_from^to x_i

to

decoration for sum_from^to x_i

Value

The function returns sum(x)

See Also

sum(), prod_over()

Examples

mathjax(quote(sum_over(x[i], i=1L, N)))