8.16
4 Text block: maths and formulas
(require text-block/math) | package: text-block |
The functions exported by text-block/math are prefixed with $
to avoid name collisions with Racketโs arithmetic functions.
The default prefix can be changed on require with filtered-in, for example:
Examples:
> (require racket/require (for-syntax racket/base racket/string) (filtered-in (lambda (name) (and (char=? #\$ (string-ref name 0)) (string-replace name "$" "ยถ"))) text-block/math)) > (ยถ+ 'a 'b) (tblock #:width 5 #:height 1 #:baseline 0 '("a + b"))
procedure
t : tblock/any ($- t ...) โ tblock? t : tblock/any ($/ t ...) โ tblock? t : tblock/any ($* t ...) โ tblock? t : tblock/any ($sqr t) โ tblock? t : tblock/any ($cube t) โ tblock? t : tblock/any ($sqrt t) โ tblock? t : tblock/any ($expt t1 t2) โ tblock? t1 : tblock/any t2 : tblock/any ($integral below above) โ tblock? below : tblock/any above : tblock/any ($sum below above) โ tblock? below : tblock/any above : tblock/any ($product below above) โ tblock? below : tblock/any above : tblock/any
Compose tblocks horizontally for arithmetic operations.
The functions $sqr, $cube and $expt may add parenthesis around their first argument to avoid ambiguity.
procedure
t : tblock/any t_ : tblock/any ($^ t t^) โ tblock? t : tblock/any t^ : tblock/any ($^_ t t^ t_) โ tblock? t : tblock/any t^ : tblock/any t_ : tblock/any ($_^ t t^ t_) โ tblock? t : tblock/any t^ : tblock/any t_ : tblock/any
Places a tblock as a subscript, as superscript, or as both, relative to t.
log (x)
n
nยฒ
โก โโโค
โฃ3โฒโxโฆ
x=1
procedure
($left-brace t ...) โ tblock?
t : tblock/any ($right-brace t ...) โ tblock? t : tblock/any ($brace t ...) โ tblock? t : tblock/any ($left-paren t ...) โ tblock? t : tblock/any ($right-paren t ...) โ tblock? t : tblock/any ($paren t ...) โ tblock? t : tblock/any ($left-square-bracket t ...) โ tblock? t : tblock/any ($right-square-bracket t ...) โ tblock? t : tblock/any ($square-bracket t ...) โ tblock? t : tblock/any ($left-ceiling t ...) โ tblock? t : tblock/any ($right-ceiling t ...) โ tblock? t : tblock/any ($ceiling t ...) โ tblock? t : tblock/any ($left-floor t ...) โ tblock? t : tblock/any ($right-floor t ...) โ tblock? t : tblock/any ($floor t ...) โ tblock? t : tblock/any
Each function places a bracket of some shape to the left or right of the ts,
or encloses them with both brackets.
> (displayln ($ceiling (happend "3x + " ($left-brace (lines->tblock '("a if x > 0" "b if x < 0" "c if x = 0") #:baseline 1)))))
โก โงa if x > 0โค
โข3x + โจb if x < 0โฅ
โข โฉc if x = 0โฅ
procedure
($overbrace t t^) โ tblock?
t : tblock/any t^ : tblock/any ($underbrace t t_) โ tblock? t : tblock/any t_ : tblock/any
Places a brace and t^ or t_ above or below the tblock t.
The baseline of the returned tblock is the same as that of t.
> (displayln (happend ($overbrace " Mon verre est vide. " "optimisteโฆ") ($underbrace " C'est un message. " "โฆayant soif")))
optimisteโฆ
โญโโโโโโโโโโดโโโโโโโโโโฎ
Mon verre est vide. Cโest un message.
โฐโโโโโโโโโฌโโโโโโโโโฏ
โฆayant soif
Formats the given racket quoted math expression tree as a tblock.
syntax
The default dictionary used by $formula.
Examples:
> (displayln ($formula '(+ (sqrt (/ (log (/ (+ x 3) (- x 2))) (- (expt x y) z))) (f a b (/ c (+ a b))))))
โโโโโโโโโโโ
โ โx + 3โ
โlogโโโโโโโ
โ โx - 2โ โ c โ
โโโโโโโโโโโ + fโa, b, โโโโโโ
โ y โ a + bโ
โฒโ x - z
โโโโโโโโโ
-b ยฑ โฒโbยฒ - 4ac
โโโโโโโโโโโโโโโ
2 a
> (displayln (happend @sigma " = " ($sqrt (happend ($/ 1 'N) " " ($sum "i=1" 'N) ($sqr ($- ($_ 'x 'i) @mu))))))
โโโโโโโโโโโโโโโโ
โ N
โ โโโ
โ1 โฒ
ฯ = โโ โฑ โx - ฮผโยฒ
โN โโโ โ i โ
โฒโ i=1