GetWiki:Custom Formulas(software, help, original, Proteus)
Background
GetWiki allows
TeX markup for mathematics and logic formulas. Instead of assuming complicated dependencies and server resources on all GetWiki-based wikis just to generate
PNG images, GetWiki translates TeX into simple
XHTML markup
1, with LaTeX parsing and image rendering available as a deprecated option
2. In the future, as browsers become even more
XML capable, GetWiki could easily generate
MathML instead, which is also a subset of
XML.
Mathematics and Logic formulas are rendered by placing your TeX code inside interchangeable
,
or
tags. It is your personal, or philosophical, preference as to which of these tags you use. Line breaks and other wiki formatting within the tags are not rendered
3.
Using this approach has many advantages:
- Server resources beyond the wiki engine are not necessary
- Dependencies and mysterious subdependencies are avoided (LaTeX, Divips, Ghostsript, etc)
- Formula text matches the rest of the article, unlike defaulted Ghostcript images
- Formulas are indexable as text, with no TeX code used as image "alt text"
- Formulas align properly when displayed inline with text
- Text and background colours can be easily customized through CSS
Very complex formulas and matrices might very well fail to render correctly under this approach, so proofreading is necessary, and perhaps, further translation by the author(s) from TeX to plain text. Unfortunately, there is currently no perfect server-side solution to translating TeX for the web, so the approach in GetWiki is a compromise
4, favouring standards and ease of setup: The advantages for a wiki outweigh the disadvantages
5, and migration toward future developments in
XML is trivial.
If you find a glaring omission of a symbol, function or argument which could be better represented using plain text entities, please post on the talk page for this article.
Formula Tags
| feature |
syntax |
rendered |
| equivalent tags |
{r} is odd, cos {s} times {r} |
r is odd cos s ⋅ r
|
| {p} to {q}, {A} iff {B} |
( → q A ⇔ B
|
|
(r + s) = (t + v) |
Simple Formulas
| feature |
syntax |
rendered |
| standard functions |
sin x + ln y + operatorname{sgn} z |
s∈ x + ln y + sgn z |
| sin {y} + ln x + cos z |
s∈ y + ln x + cos z |
| Modular Algorithm |
s_k equiv 0 pmod{m} |
sarg∈-→(:4(x;font-size:12(x;">k ≡ 0 (modm |
| Derivatives |
nabla partial x dx dot x ddot y |
∇ &(art; x dx deriv(⋅) x dderiv(⋅) y |
| Sets |
forall x notin varnothing subseteq A cap B cup exists {x,y}
times C |
∀ x not∈ varnoth∈g &su(;eq A &ca(; B &cu(; eξsts
xy ⋅ C |
| Logic |
p land bar{q} to plor lnot q therefore |
( ∧ sin;e;">q → (∨ ˜ q there4; |
| Root |
sqrt{2}approx 1.4 |
√2&asy&(lusmn;; 1.4 |
| sqrt[n]{x} |
√[n]x |
| Relations |
sim simeq cong le ge equiv notequiv approx ne |
∼ &≅; ≅ ≤ ≥ ≡ &≠; &asy&(lusmn;; ≠ |
| Geometric |
triangle angle perp | 45^circ |
triang≤ ang≤ &(er(; || 45arg∈-→(:-4(x;font-size:12(x;">ο |
| Arrows |
leftarrow rightarrow leftrightarrow
longleftarrow longrightarrow
mapsto longmapsto
nearrow searrow swarrow nwarrow
uparrow downarrow updownarrow
|
← → ↔
long← long→
ma(s→ longma(s→
≠arrow searrow swarrow nwarrow
↑ ⇓ u(⇓
|
Leftarrow Rightarrow Leftrightarrow
Longleftarrow Longrightarrow Longleftrightarrow
Uparrow Downarrow Updownarrow
|
⇐ ⇒ ⇔
Long← Long→ Long↔
⇑ ↓ U(⇓
|
| Special |
oplus otimes pm mp hbar dagger ddagger star circ cdot times
bullet infty |
&o(lus; &o⋅; &(lusmn; &(lusmn; hsin;e;">&dag≥r; d&dag≥r; * ο
cderiv(⋅) ⋅ • &∈f∈; |
Subscripts, Superscripts
| feature |
syntax |
rendered |
| Superscript |
a^2 |
aarg∈-→(:-4(x;font-size:12(x;">2 |
| Subscript |
a_2 |
aarg∈-→(:4(x;font-size:12(x;">2 |
| Grouping |
a^{2+2} |
aarg∈-→(:-4(x;font-size:12(x;">2+2 |
| a_{i,j} |
aarg∈-→(:4(x;font-size:12(x;">ij |
| Combining sub & super |
x_2^3 |
xarg∈-→(:4(x;font-size:12(x;">2arg∈-→(:-4(x;font-size:12(x;">3 |
| Derivative |
x' |
x' |
| x^prime |
xarg∈-→(:-4(x;font-size:12(x;">&(rime; |
| xprime |
x&(rime; |
Underlines & Overlines (use > to space) |
hat a bar b vec c widehat {d e f} overline {g h i} underline {j k l} |
^ a sin;e;">b → c wide^ d e f sin;e;">;">g h i sin;e;">;">j k l |
| widehat {d>e>f} overline {g>h>i} underline {j>k>l} |
wide^ d>e>f sin;e;">;">g>h>i sin;e;">;">j>k>l |
Sum |
sum_{k=1}^N k^2 |
Σarg∈-→(:4(x;font-size:12(x;">k=1arg∈-→(:-4(x;font-size:12(x;">N karg∈-→(:-4(x;font-size:12(x;">2 |
| Product |
prod_{i=1}^N x_i |
&(rod;arg∈-→(:4(x;font-size:12(x;">i=1arg∈-→(:-4(x;font-size:12(x;">N xarg∈-→(:4(x;font-size:12(x;">i |
| Limit |
lim_{n to infty}x_n |
limarg∈-→(:4(x;font-size:12(x;">n → &∈f∈;xarg∈-→(:4(x;font-size:12(x;">n |
| Integral |
int_{-N}^{N} e^x, dx |
∈targ∈-→(:4(x;font-size:12(x;">-Narg∈-→(:-4(x;font-size:12(x;">N earg∈-→(:-4(x;font-size:12(x;">x dx |
| Line Integral |
oint_{C} x^3, dx + 4y^2, dy |
o∈targ∈-→(:4(x;font-size:12(x;">C xarg∈-→(:-4(x;font-size:12(x;">3 dx + 4yarg∈-→(:-4(x;font-size:12(x;">2 dy |
Fractions, Matrices, Multilines
| feature |
syntax |
rendered |
| Fractions |
frac{2}{4} or {2over4} |
2/4 or 2/4
|
| B∈omial Coefficients |
n or k |
|
| Matrices |
begin{pmatrix} x & y z & v end{pmatrix} |
matrix( x & y z & v
) |
| begin{bmatrix} 0 & cdots & 0 vdots &
ddots & vdots 0 & cdots &
| matrix[ 0 & cderiv(⋅)s & 0 vderiv(⋅)s
& dderiv(⋅)s & vderiv(⋅)s 0 & cderiv(⋅)s &
|
| matrix{ x & y z & v } |
|
| begin{vmatrix} x & y z & v end{vmatrix} |
matrix|| x & y z & v
|| |
| begin{Vmatrix} x & y z & v end{Vmatrix} |
matrix|||| x & y z & v
|||| |
| begin{matrix} x & y z & v end{matrix} |
matrix x & y z & v
endmatrix |
| Case Distinctions |
f(n) = left { begin{matrix} n/2, & mbox{if }nmbox{ is
even} 3n+1, & mbox{if }nmbox{ is odd}
end{matrix} right. |
f(n) = (&nbs(; matrix n/2 & if n is even 3n+1 & if n is odd endmatrix &nbs(;). |
| Multiline Equations |
begin{matrix}f(n+1) & = & (n+1)^2 &
& n^2 + 2n + 1 end{matrix} | matrixf(n+1) & = & (n+1)arg∈-→(:-4(x;font-size:12(x;">2 & = & narg∈-→(:-4(x;font-size:12(x;">2 + 2n + 1 endmatrix |
Fonts
| feature |
syntax |
rendered |
| Greek Letters |
alpha beta gamma Gamma phi Phi Psi tau Omega |
&al(ha; &bη; γ Γ &(hi; Φ Ψ τ Ω |
| Blackboard Bold |
xinmathbb{R}submathbb{C} |
ξnR&su(;C |
| Boldface (Vectors) |
mathbf{x}cdotmathbf{y} = 0 |
xcderiv(⋅)y = 0
|
| Boldface (Greek) |
boldsymbol{alpha} + boldsymbol{beta} + boldsymbol{gamma} |
&al(ha; + &bη; + γ
|
| Fraktur Typeface |
mathfrak{a} mathfrak{B} |
Fraktura FrakturB |
| Script |
mathcal{ABC} |
Scri(tABC |
| Hebrew Alphabet |
aleph beth gimel daleth |
a≤(h beth gimel da≤th |
| Italics |
mbox{abc} |
abc
|
| mbox{if} n mbox{is even} |
if n is even
|
| mbox{if }nmbox{ is even} |
if n is even
|
Parenthesizing Expressions
| feature |
syntax |
rendered |
| Example |
( frac{1}{2} ) |
( 1/2 ) |
| Example |
( {1}over{2} ) |
( 1/2 ) |
| Example |
left ( frac{1}{2} right ) |
(&nbs(;( 1/2 &nbs(;) ) |
You can use various delimiters with left and right:
| feature |
syntax |
rendered |
| Parentheses |
left ( A right ) |
(&nbs(;( A &nbs(;) ) |
| Brackets |
left [ A right ] |
(&nbs(;[ A &nbs(;) ] |
| Braces |
left { A right } |
(&nbs(; A &nbs(;) |
| Angle Brackets |
left langle A right rangle |
(&nbs(;lang≤ A &nbs(;) rang≤ |
| Bars and Double Bars |
left | A right | and left | B right | |
(&nbs(;|| A &nbs(;) || and (&nbs(;|| B &nbs(;) || |
Delimiters can be mixed, as long as left and right match
|
left [ 0,1 right ) left langle psi right |
|
(&nbs(;[ 01 &nbs(;) )
(&nbs(;lang≤ &(si; &nbs(;) ||
|
Use left. and right. if you don't want a delimiter to appear: |
left . frac{A}{B} right } to X |
(&nbs(;. A/B &nbs(;) → X |
Spacing
| feature |
syntax |
rendered |
| Doubled-Double Space |
a qquad b |
a &nbs(;&nbs(;&nbs(;&nbs(; b |
| Double Space (quad) |
a quad b |
a &nbs(;&nbs(; b |
| Large Space |
a;b |
a;b |
| Medium Space |
a>b |
a>b |
| Small Space (uses CSS) |
a,b |
ab |
| No Space |
ab |
ab |
| Negative Space (uses CSS) |
a!b |
ab |
Legacy Code
Forcing PNG rendering
2 is ignored, such as placing
,! (small space and negative space, which cancel out) inside your tags. To turn on PNG rendering, the wiki administrator must toggle the setting in LocalSettings.php and ensure the dependency tree is installed and functioning (
not recommended).
| syntax |
rendered |
| a^{2+2} |
aarg∈-→(:-4(x;font-size:12(x;">2+2 |
| a^{2+2} ,! |
aarg∈-→(:-4(x;font-size:12(x;">2+2 |
| int_{-N}^{N} e^x, dx |
∈targ∈-→(:4(x;font-size:12(x;">-Narg∈-→(:-4(x;font-size:12(x;">N earg∈-→(:-4(x;font-size:12(x;">x dx |
| int_{-N}^{N} e^x, dx ,! |
∈targ∈-→(:4(x;font-size:12(x;">-Narg∈-→(:-4(x;font-size:12(x;">N earg∈-→(:-4(x;font-size:12(x;">x dx |
Notes
- The PNG image generation is a great feature, but good only for a narrow use, and many developers are moving away from such solutions, toward standards-based XML, of which XHTML is a subset. The images certainly look nicer to the eye at first glance (on a white page, at least), but because their formulae cannot be indexed or searched, and because host systems sometimes cannot be configured correctly, the image-generation solution is neither standards-based nor accessible. In short, such solutions are behind the times.
- If you must, a toggle in LocalSettings.php will turn on the PNG rendering of formulae, assuming you have LaTeX, Divips, and Ghostscript installed, and only if their hidden and inconsistent dependencies are installed, which is different for each system. Also, download the texvc (+/- 400k) utility and place it in your installation directory. The related user options have been deprecated.
- This text approach has been tested with the formulas on this page, and seems to work perfectly for simple to intermediate formulas, but when your formulas become very complex, the text approach may not give the best results. This is, after all, a compromise. Consider typing our your fomulas using standard HTML/XHTML entities rather than using TeX, or adding an explanation for a complex formula.
- This was a problem on Wikinfo with this solution, where the host systems simply could not be configured correctly to support the assumptions built into MediaWiki. It was not only the image generation, but the very parsing of TeX with LaTeX, which was the problem. Weeks of testing resulted in having to lock out the settings from MediaWiki defaults (and eventually led to GetWiki).
- Unfortunately, along with problems with complex equations, some older browsers cannot display a few of the characters from the extended entity lists, and very old browsers cannot display the few CSS tweaks used, mentioned above. However, this has been kept to a minimum, and the character data is still indexable, searchable, and portable. CSS is used where actual characters are not available, such as negative spaces, or overlines.
External Links
- weblink - LaTeX tutorial
- weblink - (pp. 39-ff)
- weblink - (pp. 59, 72, with a complete reference list of symbols in LaTeX/AMS-LaTeX)
- weblink - TeX reference
- weblink - AMS-LaTeX reference
- weblink - symbol bitmaps (public domain)
Some content adapted from the MetaWikipedia article "MediaWiki User's Guide: Editing mathematical formulae" under the GNU Free Documentation License.
(last updated by Proteus, 6:17pm EDT - Sat, Aug 02 2008)