Scroll this text up and down with ↑ and ↓ (arrow keys), or j and k.
Close the user guide and return to the editor with q or Esc. Reopen the user guide at any time with ?.
The editor is divided into two sections: the stack and the document. The stack is where math expressions are built up; once you have built an expression on the stack that you want to keep, you can transfer it to the document for storage.
Expressions are entered using reverse Polish notation (RPN) which means
that operands come before their operators. For example, to enter the expression a+b you would
first type
a then b
followed by + to apply the addition operation.
The stack is displayed bottom-up; that is, the item most recently placed on the stack (called the "stack top") is the one shown at the bottom of the screen. The older items are stacked up above it. Editor operations always work with the first few items on the stack. In this user guide, the labels x, y and z are used to refer to these first few items.
Note that items on the stack have a small colored bar shown to the left of them. This indicates the item's size as well as its "type": a symbolic expression (grey) or a piece of text (blue).
This editor is designed to be operated entirely from the keyboard. Most operations are performed using single keystrokes or pairs of keystrokes (a prefix key followed by a subcommand key).
Invalid or unassigned key inputs are silently ignored. Other errors are signaled by a brief flash of the screen.
x\cdot y in the case of *).
x\enspace y \Rightarrow x^y
x\enspace y \Rightarrow x_y
(x), [x], \{x\}.
These delimiters automatically adjust to fit their contents.
All other operations require prefix keys to be typed first. These keys switch into a corresponding mode. The current mode is displayed in grey in the upper-right corner of the stack. Each mode has its own keymap of operations, which are detailed in the following sections.
NOTE: Typing the prefix keys below while this user guide is being shown will jump directly to the corresponding section. Backspace returns here to this list of prefixes. (This does not apply if the user guide is "docked" into the document area via ??.)
\mathcal{ABCDE}
\mathscr{ABCDE}
\mathbb{ABCDE}
The \ prefix starts math entry mode. A small input field will be shown where you can type a number or a simple math expression in traditional infix notation. Enter will parse what you have typed and put it on the stack. A malformed expression will signal an error; allowed expressions include:
\Rightarrow \pi
\Rightarrow J_0,
x_alpha \Rightarrow x_\alpha
\Rightarrow \displaystyle{\frac{x+1}{x-1}}
Esc (or Ctrl+z) will cancel math entry mode.
NOTE: The input field used here is very limited and supports only character entry along with arrow keys to move around, Backspace, Enter to finish your entry, and Esc to cancel entry. It is meant for entering short snippets of text; longer items should be created as pieces and assembled on the stack.
Plain Text Entry: Typing Shift+Enter instead of Enter will typeset your entry in a roman (non-italic) font instead of the normal italic math font, and it will not be parsed as a math expression, so you can use any text you want. This can be used to include normal English words or phrases in math expressions. Placeholders can also be included by writing [].
NOTE: The conjunction command available via ,' is another way of including English words or phrases.
Named Operators:
Typing Tab instead of Enter
will typeset your entry as an operator name which behaves the same as built-in operators
such as \lim and \sin. This gives extra spacing between anything
concatenated to (or before) the operator name to match normal math notation. Only letters,
numbers, spaces and dashes are allowed in operator names.
NOTE: The /f command prefix can also be used to create commonly-used named operators.
LaTeX Entry:
Typing another \
after the first one will instead switch into LaTeX entry mode where you can enter an arbitrary
zero-argument LaTeX command. This can be used to create any standard LaTeX symbol.
For example: \\boxdot \Rightarrow\boxdot
One-argument LaTeX commands can be created using Shift+Enter instead of
Enter.
For example: x\\utildeShift+Enter
\Rightarrow\utilde{x}
The " prefix starts text entry mode which is similar to math entry but creates text objects. Text objects are shown with a blue bar to the left (instead of grey) and differ from normal math objects in some important ways:
Expressions and text objects that were created with math entry or text entry modes may be brought back into the math or text entry editor for further editing with Shift+Enter. Simple expressions like numbers and variables may also be editable even if they were not created with math/text entry mode.
Once an expression is modified or combined with other expressions, the result may no longer be editable as text this way. In this case, dissect mode may be helpful instead.
This prefix has a variety of commands for managing the stack and the document, and other utilities.
Stack Operations: These commands manipulate the stack with traditional RPN operations. These can optionally take numeric prefix arguments which specify the number of stack items to operate on. Prefix arguments are entered by typing one or more digits after the Tab and before one of the following subcommand keys. Also, instead of a digit, * may be used to indicate that the operation should apply to the entire stack. For example, to reverse the entire stack you can type Tab*a. In the descriptions below, N refers to the prefix argument if given, otherwise the default is used.
Document Operations: These commands transfer items between the stack and the document. The document has a shaded selection indicator which you can move with the ↑↓ arrow keys (without using the Tab prefix). Shift+↑ and Shift+↓ will shift the selected item up or down within the document.
Items inserted into the document will be placed directly below the current selection. There is also a small margin at the top of the document that can be selected to insert items at the very top.
Utilities:
Tabf opens the File Manager popup panel. If your browser supports it, you can save and manage separate documents in the internal browser storage (localStorage). Your data persists between browser sessions, but this may not work in Private/Incognito Mode. Each document has a filename but there is only one level of storage - no subfolders.
NOTE: You can use Tabs or Ctrl+s from the main screen to save the current document without opening the file manager first.
Assorted standalone math symbols. These all put exactly one object onto the stack.
0 \varnothing |
1 -1 |
2 \frac{1}{2} |
3 1/2 |
8 \infty |
a \forall |
A \aleph |
b \bullet |
c \cdot |
C \bigcap |
d \partial |
D \bigoplus |
e \exists |
E \nexists |
h \hslash |
i \int |
I \iint |
l \ell |
M \mp |
n \ne |
o \circ |
O \bigodot |
p \prod |
P \pm |
q = |
Q \bigsqcup |
r \square |
R \boxdot |
s \sum |
S \S |
t \therefore |
U \bigcup |
v \vee |
V \bigvee |
w \wedge |
W \bigwedge |
X \bigotimes |
y \oint |
Y \oiint |
. \dots |
> \cdots |
- - |
+ + |
* \ast |
^ \star |
| | |
? ? |
! ! |
, , |
; ; |
: : |
` ` |
~ \sim |
/ / |
\ \backslash |
_ \_ |
↑ \uparrow |
↓ \downarrow |
← \leftarrow |
→ \rightarrow |
@ @ |
# \# |
$ \$ |
% \% |
& \& |
Also available are:
\llbracket\mathsf{blank}\rrbracket until it's combined with something.
Sometimes you may want to fill in part of an expression you are working on later, rather than including it immediately. You can insert a placeholder marker in your expression, and then later on substitute another expression where the placeholder is.
\htmlClass{placeholder_expr}{\blacksquare}) onto the stack.
You can treat it like any other subexpression, applying operations to it and using it
in other expressions. All placeholders are identical.
\sqrt{1 + \htmlClass{placeholder_expr}{\blacksquare}} \enspace x^2 \Rightarrow \sqrt{1+x^2}
These all modify a single item on the stack.
0 x_0 |
1 x^{-1} |
2 x^2 |
3 x^3 |
4 x^4 |
8 x\to\infty |
A \acute x (ácute) |
b \bold{x} (bold roman) |
c 1-x (complement) |
d x^\dagger (dual/dagger) |
D x^\ddagger |
e \htmlClass{emphasized}{x} (emphasize) |
g \mathring x (ring) |
G \grave x (gràve) |
h \hat x (hat) |
H \widehat{x\dots} |
i x^{-} |
I x^{+} |
k \mathfrak x (Fraktur) |
l x_\parallel (parallel) |
m \mathtt x (monospace) |
M \mp x (minus-or-plus) |
n \bar x (overline) |
o \overline{x\dots} (overline) |
p x_\perp (perpendicular) |
P \pm x (plus-or-minus) |
q = x (equals) |
r \mathrm x (roman) |
s \mathsf x (sans-serif) |
S \mathsfit x (italic sans) |
t \to x (to/therefore) |
T \longrightarrow x |
u \breve x |
U \utilde{x\dots} |
v \vec x (vector) |
V \overrightharpoon{x\dots} |
w \check x (check) |
W \widecheck{x\dots} |
x \boxed x (box) |
X \sout x (crossout) |
Y \widetilde{x\dots} |
z \bcancel x |
. \dot x |
> x. |
" \ddot x |
x\, (append space) |
' x' |
, x^{\circ} (degrees) |
* x^{*} |
= \Rightarrow x |
- -x |
+ +x |
` x^\mathrm{T} (transpose) |
~ \tilde x |
/ \cancel x |
\ 1/x |
! \neg x (not) |
_ \underline{x\dots} |
[ \small x (smaller) |
] \large x (larger) |
{ \overbrace{x\dots} |
} \underbrace{x\dots} |
Tab \quad x (indent) |
These commands combine the top two stack items by placing a mathematical operator between them.
| a apply (see below) | b x\bullet y |
c x\cap y |
C x\circledcirc y |
d x^\dagger y |
D x\oplus y (direct sum) |
e x,\dots,y |
f x\quad\mathrm{if}\quad y |
F x\quad\mathrm{iff}\quad y |
g x\gets y (gets) |
j x\Join y (join) |
k or |
\left.x\,\middle\vert\,y\right.
|
l x\parallel y |
m x\pmod y |
M x\mp y |
n x\quad\mathrm{whe\mathbf{n}}\quad y |
o x\circ y (of) |
O x\odot y |
p x\perp y |
P x\pm y |
q x\quad\mathrm{and}\quad y |
Q x\quad\mathrm{or}\quad y |
r x\quad\mathrm{fo\mathbf{r}}\quad y |
s or
x\,y
|
S x\circledast y |
t x\to y |
T x\longrightarrow y |
u x\cup y |
v x\vee y |
V x\veebar y |
w x\wedge y (wedge) |
W x\barwedge y |
x x\times y |
X x\otimes y |
= x\Rightarrow y |
+ x\Longrightarrow y |
- x\ominus y |
. x\cdot y |
, x,y |
( \left(x,y\right) |
> x\cdots y |
< \left\langle x,y\right\rangle |
* x*y |
^ x\star y
| : x\colon y |
; x;y |
` x^\mathrm{T} y |
~ xy^\mathrm{T} |
/ x/y |
\ x\backslash y |
% x\div y |
Tab x\quad y |
' conjunction (see below) | |
Apply:
The ,a
command takes three expressions from the stack, combining them into an
infix expression. The stack top becomes the infix operator. For example:
x\enspace y\enspace \circledast \Rightarrow x\circledast y
Conjunction:
The ,'
command is for combining two expressions with an English phrase between them,
with some extra spacing.
Several of these are already available via dedicated commands such as
,F which
creates: x\quad\mathrm{iff}\quad y.
This conjunction command starts a special text entry mode where you can
type in whatever phrase you want instead. Using Enter
creates an ordinary conjunction, while Shift+Enter
will make it bolded.
Similar to ,, these commands combine two expressions into an "equation" by placing a relational operator between them.
Equality-like relations:
a x\approx y (approx) |
c x\cong y (congruent) |
e x\equiv y |
E x\iff y |
f x\Leftarrow y (from) |
i x\in y (in) |
I x\notin y |
m x\mapsto y (maps to) |
o x\circeq y |
= or q x = y |
! or n x\ne y |
p x\propto y (proportional) |
; x\coloncolon y |
: x\coloneqq y |
~ or t x\sim y |
. x\doteq y |
^ x\triangleq y |
? x\stackrel{?}{=} y |
- x\vdash y |
| x\vDash y |
Ordering relations:
l x < y |
g x > y |
< or [ x\le y |
> or ] x\ge y |
L x\ll y |
G x\gg y |
{ x\lll y |
} x\ggg y |
s x\subset y |
S x\subseteq y |
u x\supset y |
U x\supseteq y |
Variants of the above are available with the 2 subprefix:
2l x\prec y |
2g x\succ y |
2< or
2[ x\preceq y
|
2> or
2] x\succeq y
|
2L x\leqslant y |
2G x\geqslant y |
2s x\sqsubset y |
2S x\sqsubseteq y |
2u x\sqsupset y |
2U x\sqsupseteq y |
NOTE: "Negated" forms of relational operators can be
created with the /!
command. For example:
x\subseteq y \Rightarrow x\not\subseteq y
This prefix has commands for building different kinds of expression structures and for applying common functions and operators.
Algebra and Calculus:
1 or \
x \Rightarrow \displaystyle{\frac{1}{x}}
|
a or /
x\enspace y \Rightarrow \displaystyle{\frac{x}{y}}
|
l
x \Rightarrow \lim\limits_x
|
L
x\enspace y \Rightarrow \lim\limits_{x\to y}
|
b
x\enspace y \Rightarrow \displaystyle{\binom{x}{y}}
|
g
x\enspace y \Rightarrow \displaystyle{\int_x^y}
|
=
x\enspace y\enspace z \Rightarrow \displaystyle\sum_{x=y}^z
|
+
x\enspace y \Rightarrow \displaystyle\sum_{x\ge y}^{\phantom z}
|
q \sqrt{x} |
Q \sqrt[3]{x} |
e \mathrm{e}^x |
E \exp x |
n \ln{x} |
N \log{x} |
2n \lg{x} |
2N \log_2{x} |
m \operatorname{Im} x |
M \operatorname{Re} x |
Trigonometric Functions:
\sin x
c \cos x
t \tan x
\sec x
C \csc x
T \cot x
Using - or h or 2 before the other trigonometric commands gives inverse, hyperbolic, and squared forms of the functions, respectively:
x \Rightarrow \cos^{-1} x
x \Rightarrow \coth x
x \Rightarrow \operatorname{sech}^{-1} x
x \Rightarrow \tan^2 x
Function Application:
f\enspace x \Rightarrow f(x)f\enspace x\enspace y \Rightarrow f(x,y)f\enspace x\enspace y\enspace z \Rightarrow f(x,y,z)f\enspace x\enspace y \Rightarrow f(x\,|\,y) ("konditional")f\enspace x\enspace y\enspace z \Rightarrow f(x,y\,|\,z)f\enspace x \Rightarrow f[x]f\enspace x \Rightarrow f\{x\}
NOTE:
These commands should be used instead of simply concatenating the function name to
its (parenthesized) argument(s) with .
The spacing is tighter to match normal function notation.
Compare: f{\left(x\right)} vs. f\left(x\right).
Other function call types can be created by first building an argument list such as
x,y\,|\,z,w and then applying to f with
/o.
Some common function application patterns can be created directly with Ctrl key shortcuts:
\quad f\Rightarrow f(x)\quad f\Rightarrow f(t)\quad x\Rightarrow f(x)\quad x\Rightarrow g(x)Vertical Stacking:
x\enspace y \Rightarrow \overbrace{x}^y
} x\enspace y \Rightarrow \underbrace{x}_y
x\enspace y \Rightarrow \overset{y}{x}
U x\enspace y \Rightarrow \underset{y}{x}
Probability and Statistics:
p
x \Rightarrow \mathbb{P}{[x]}
|
probability |
P
x\enspace y \Rightarrow \mathbb{P}{[x\,\vert\,y]}
|
conditional probability |
V x \Rightarrow \mathrm{Var}{[x]} |
variance |
2V
x\enspace y \Rightarrow \mathrm{Cov}[x,y]
|
covariance |
x x \Rightarrow \mathbb{E}{\left[x\right]} |
expectation |
X x\enspace y \Rightarrow \mathbb{E}{\left[x\,\middle\vert\,y\right]} |
conditional expectation |
y x\enspace y \Rightarrow \mathbb{E}_y{\left[x\right]} |
with subscript |
Y x\enspace y\enspace z \Rightarrow \mathbb{E}_z{\left[x\,\middle\vert\,y\right]} |
conditional + subscript |
NOTE: Variance, covariance, and probability are also available with the /f named operators prefix, in one- and two-argument forms.
Shortcuts and Utilities:
x\enspace y \Rightarrow yx (prepend)
+x become x+
and vice-versa.
x\enspace y \Rightarrow \left.x\right\vert_{y}
"Where" notation, for example:
\left.\frac{1}{\sqrt{1-x^2}}\right\vert_{x=1/2}
x\enspace y \Rightarrow x\cdot{10}^y
Scientific notation, for example:
1.23\cdot{10}^{-4}
x\enspace y\enspace z \Rightarrow x_y^z
(shortcut for adding a subscript and superscript at once)
\subseteq \,\Leftrightarrow\, \not\subseteq).
For infix expressions, the operator most recently used to create the expression
is the one negated.
Example: x≤y \Leftrightarrow x\nleq y
f(\htmlClass{placeholder_expr}{\blacksquare}) \enspace x \Rightarrow f(x)
Substitute x for the first placeholder in an expression.
x\enspace y\enspace z \Rightarrow x_{\textrm{new}}:
Replace subexpressions within x matching y
with a replacement z.
Example: \sqrt{x^2+1}\enspace x\enspace (t-1) \Rightarrow \sqrt{(t-1)^2+1}
Equation Splitting:
Tags:
Subprefix Modes: These commands enter dedicated modes for other types of operations. These are described in the following sections.
These are some shortcuts for quickly creating common types of expressions involving derivatives and differentials. The main commands here use the /d prefix; variants can be obtained with /D and /v (see below).
x x \Rightarrow \displaystyle{\frac{d}{dx}} |
X x \Rightarrow \displaystyle{\frac{d^2}{dx^2}} |
y y\enspace x \Rightarrow \displaystyle{\frac{dy}{dx}} |
Y y\enspace x \Rightarrow \displaystyle{\frac{d^2 y}{dx^2}} |
j y\enspace x \Rightarrow \displaystyle{\frac{\partial y}{\partial x}} |
J y\enspace x \Rightarrow \displaystyle{\frac{\partial^2 y}{\partial x^2}} |
q x \Rightarrow \displaystyle{\frac{\partial}{\partial x}} |
Q x \Rightarrow \displaystyle{\frac{\partial^2}{\partial x^2}} |
m x\enspace y \Rightarrow \displaystyle{\frac{\partial^2}{\partial x\,\partial y}} |
M f\enspace x\enspace y \Rightarrow \displaystyle{\frac{\partial^2 f}{\partial x\,\partial y}} |
p x \Rightarrow \partial x |
P x\enspace y \Rightarrow \partial_y x |
g x \Rightarrow \nabla x |
G x\enspace y \Rightarrow \nabla_y x |
. x \Rightarrow \nabla\cdot x |
> x \Rightarrow x\cdot\nabla |
c x \Rightarrow \nabla\times x |
C x \Rightarrow x\times\nabla |
l x \Rightarrow \nabla^2 x (Laplacian) |
n x \Rightarrow \Delta x (increment) |
d x \Rightarrow dx |
2 x \Rightarrow d^2 x |
3 x \Rightarrow d^3 x |
4 x \Rightarrow d^4 x |
f x\enspace y \Rightarrow dx \wedge dy |
F x\enspace y\enspace z \Rightarrow dx \wedge dy \wedge dz |
i or I or
x\enspace y \Rightarrow x\,dy (see below)
|
|
Integral Spacing:
i and I and
are meant for attaching a differential to an existing integral expression
(or an ordinary expression as in x^2\,dx) with appropriate spacing.
The difference between the three is where the spacing goes:
\int x^2\,dx
\int dx\,x^2
\int dx
Differential Forms:
The f and F
commands for building differential forms will pull out minus signs as needed, as in:
-y\enspace x \Rightarrow -dy \wedge dx.
When concatenating differential forms to integral expressions, use
,
instead of to avoid parenthesizing the differential form.
For example:
\int f{(x,y)}\,dx\wedge dy instead of
\int f{(x,y)} \left(dx\wedge dy\right).
Alternative Notation:
Some authors prefer an upright Roman-font "d" when writing differentials.
For example:
\frac{\mathrm{d}y}{\mathrm{d}x} instead of
\frac{dy}{dx}.
This can be done by using the
/D
prefix instead of
/d.
Variational Calculus:
Functional derivative operations from the calculus of variations may be entered
with the /v prefix.
The partial derivative commands from
/d are available, the only
difference being \partial becomes \delta.
Example: /dj
\to \frac{\partial f}{\partial x} but
/vj
\to \frac{\delta f}{\delta x}.
These commands are for quickly applying common limits to integral signs. The /i prefix applies limits to an existing integral sign (or other expression) on the stack, while /I creates the integral sign and the limits in a single command.
r \Rightarrow \int_{-\infty}^\infty |
reals |
R \Rightarrow \int_{\mathcal{R}} |
alternative notation for reals |
p \Rightarrow \int_0^\infty |
positive |
n \Rightarrow \int_{-\infty}^0 |
negative |
u \Rightarrow \int_0^1 |
unit |
U \Rightarrow \int_{-1}^1 |
symmetric unit |
t \Rightarrow \int_0^{2\pi} |
trigonometric |
T \Rightarrow \int_{-\pi}^\pi |
symmetric trigonometric |
These commands apply named operators like \max to the stack top.
The argument(s) may or may not be automatically parenthesized, depending
on the traditional usage of the operator.
a \arg x |
c \mathrm{Cov}[x] |
C \mathrm{Cov}[x,y] |
d \det x |
D \dim x |
e \operatorname{erf}{(x)} |
E \operatorname{erfc}{(x)} |
g \gcd{(x,y)} |
G \deg x |
h \hom x |
i \inf x |
I \liminf x |
k \ker x |
l \lim x |
m \min x |
M \argmin x |
n \operatorname{sgn}{(x)}
(sign)
|
p \Pr{(x)} |
P \Pr{(x,y)} |
s \sup x |
S \limsup x |
t \operatorname{Tr} x
(trace)
|
v \mathrm{Var}[x] |
V \mathrm{Var}[x,y] |
x \max x |
X \argmax x |
NOTE: Arbitrarily-named operators can be created with math entry mode by finishing the entry with Tab.
These commands enclose expressions in various kinds of delimiter pairs. The delimiters automatically expand to fit the size of their contents.
Note that the most commonly-used delimiters are available directly as ( [ { without needing a prefix key.
b \left\langle x\right\vert (Dirac bra) |
c \left\lceil x\right\rceil (ceiling) |
d \llbracket x\rrbracket |
f \left\lfloor x\right\rfloor (floor) |
g \left\lgroup x\right\rgroup (grouped) |
i \left\langle x\,\middle\vert\,y\right\rangle (inner product) |
I \left\langle x\,\middle\vert\,y\,\middle\vert\,z\right\rangle |
k \left\vert x\right\rangle (Dirac ket) |
m \left\lmoustache x\right\rmoustache |
n or N
\left\lVert x\right\rVert (norm)
|
o \left(x\right] (half-open) |
O \left[x\right) |
w or W
\left. x\right\vert (where)
|
| \left\vert x\right\vert (abs) |
< \left\langle x\right\rangle |
( \left( x\right. |
) \left. x\right) |
[ \left[ x\right. |
] \left. x\right] |
{ \left\{ x\right. |
} \left. x\right\} |
| . or blank (see below) | ||
Certain infix operators, when enclosed in delimiters, will also adjust to fit the size of the delimiters. These operators are:
x\,\vert\,y |
created by | ,k or ,| |
x\parallel y |
created by | ,l |
x/y |
created by | ,/ |
x\backslash y |
created by | ,\ |
Because of this, you can give these operators a flexible size anywhere by using
blank delimiters via ). or
) .
For example:
\displaystyle x/\frac{1}{\sqrt x} \Rightarrow \left.x\middle/\frac{1}{\sqrt x}\right.
Other commands in this mode:
These last two commands l and r change an existing delimiter, or add a new one if none is present. After entering one of these commands, select the delimiter type from one of the following:
< \left\langle\right. |
> \left.\right\rangle |
( \left(\right. |
) \left.\right) |
[ \left[\right. |
] \left.\right] |
{ \left\{\right. |
} \left.\right\} |
g \left\lgroup\right. |
G \left.\right\rgroup |
m \left\lmoustache\right. |
M \left.\right\rmoustache |
n \left.\right\Vert |
c \left\lceil\right. |
C \left.\right\rceil |
f \left\lfloor\right. |
F \left.\right\rfloor |
| \left.\right| |
/ \left.\right/ |
\ \left.\right\backslash |
. or
\left.\right. (blank)
|
|||
These commands are for building and manipulating arrayed structures like matrices, vectors and lists.
NOTE: Several of these commands take required prefix arguments to indicate the number of items to work on. These are entered by typing one or more digits after the | key and before the subcommand key. For example, to build a matrix row with 3 columns you can type |3(. This prefix argument is referred to as N in the descriptions below.
Matrix Row Building:
These commands assemble N items from the
stack into a 1\times N row matrix with the indicated bracket type.
(\;\begin{pmatrix}a & b & c\end{pmatrix} |
[\;\begin{bmatrix}a & b & c\end{bmatrix} |
{\;\begin{Bmatrix}a & b & c\end{Bmatrix} |
v\;\begin{vmatrix}a & b & c\end{vmatrix} |
V\;\begin{Vmatrix}a & b & c\end{Vmatrix} |
m or
\;\begin{matrix}a & b & c\end{matrix}
|
A column matrix can be entered by first building a row matrix, then transposing with |T.
To change the bracket type of an existing matrix on the stack, use |t followed by one of the type keys above. For example |t{ changes the matrix to have curly braces.
Full Matrix Building: An entire matrix may also be assembled at once from the stack with elements in row-major order with the x command. This takes a prefix argument indicating the number of rows, then switches into a new mode expecting the number of columns, followed by one of the matrix row building keys above to indicate the matrix type.
For example, to build a 2\times 3 matrix from 6 elements on the stack, with square brackets, enter:
|2x3[.
There are some shortcuts available for building common matrix and vector types:
$
a\enspace b\enspace c\enspace d\Rightarrow
\begin{bmatrix} a & b \\ c & d \end{bmatrix}
|
|
@
a\enspace b\Rightarrow
\begin{bmatrix} a \\ b \end{bmatrix}
|
#
a\enspace b\enspace c\Rightarrow
\begin{bmatrix} a \\ b \\ c\end{bmatrix}
|
Matrix Manipulation: These commands operate on existing matrices.
Row and Column Separators: These commands place separator lines between rows or columns of a matrix. If lines are already there they will be removed instead. A prefix argument may be used to specify which row or column the separator is to be placed after, otherwise the first row or column will be used. A * prefix argument will apply separator lines to all rows or columns at once.
Alignment Building: These commands group multiple expressions into "aligned" structures of various types. Like the matrix row building operations, these also take a required prefix argument indicating how many items to combine.
\begin{gathered}
x^2 \colon x \ge 0 \\
0 \colon x < 0
\end{gathered}
\Longrightarrow
\begin{cases}
x^2 & x \ge 0 \\
0 & x < 0
\end{cases}
\begin{gathered}
x^2 \colon x \ge 1 \\
x^3 \colon 0 \le x \le 1 \\
x^4
\end{gathered}
\Longrightarrow
\begin{cases}
x^2 & \mathrm{if}\enspace x \ge 1 \\
x^3 & \mathrm{if}\enspace 0 \le x \le 1 \\
x^4 & \mathrm{otherwise}
\end{cases}
List Building: These commands build concatenated lists from individual items. As before, the number of items to concatenate must be given as a prefix argument.
x_1,x_2,x_n
x_1,x_2,\dots,x_n
x_1,x_2,x_n,\dots
(ellipsis)
x_1;\,x_2;\,x_n
x_1 + x_2 + \cdots + x_n
x_1 + x_2 + x_n + \cdots
(plus)
Miscellaneous:
\sum. Place the resulting object as the subscript or superscript of
the operator and they will be lined up in a stack underneath or above.
These commands are for building and manipulating tensors using index notation. This is similar to normal subscript and superscript notation, but with the following differences:
\displaystyle{x^{yz}} vs. \displaystyle{x^{y^z}}.
\displaystyle{\Gamma^{i}_{\hphantom{i}jk}}
and \displaystyle{\Gamma^{ij}_{\hphantom{ij}k}} have distinct mathematical meanings, but
would both appear as \displaystyle{\Gamma^{ij}_k} using ordinary subscripts and superscripts.
\displaystyle{\vphantom{\Gamma}^a_b \Gamma}. (This can be used to create chemical symbols like
\displaystyle{\vphantom{\mathrm{Pu}}^{239}_{\hphantom{239}}{\mathrm{Pu}}}.)
\Gamma\enspace x \Rightarrow \displaystyle{\Gamma^x}
\Gamma\enspace x \Rightarrow \displaystyle{\Gamma_x}
\Gamma\enspace x\enspace y \Rightarrow \displaystyle{\Gamma_{x}^{y}}
\,\cdots\,) to the outermost indices. Ellipses will not
be added next to blank index slots. For example:
\displaystyle{\Gamma_a^b} \Rightarrow \displaystyle{\Gamma^{b\,\cdots\,}_{a\,\cdots\,}}, but
\displaystyle{\Gamma^{\hphantom{a}b}_{a\hphantom{b}}} \Rightarrow
\displaystyle{\Gamma^{\hphantom{a}b\,\cdots\,}_{a\hphantom{b}\hphantom{\,\cdots\,}}}
\displaystyle{\Gamma^{a\hphantom{b}\hphantom{,}\hphantom{c}}_{\hphantom{a}b,c}}
\Gamma\enspace x \Rightarrow \displaystyle{\vphantom{\Gamma}^x \Gamma}
\displaystyle{\vphantom{\Gamma}^{\hphantom{a}bc}_{a\hphantom{b}\hphantom{c}}\Gamma^{\hphantom{d}e}_{d\hphantom{e}}}
\Rightarrow
\displaystyle{\vphantom{\Gamma}^{bc}_{\hphantom{b}a}\Gamma^e_d}
\displaystyle{\Gamma^a_{\hphantom{a}bc}} \Leftrightarrow
\displaystyle{\Gamma_a^{\hphantom{a}bc}}
NOTE: The main /w (swap) command also works on tensors and swaps the left indices with the right indices.
Entering dissect mode with _ (underscore) allows selecting and manipulating subexpressions of the stack top. This can be useful to copy out a part of an existing expression, or to replace a part with something else.
NOTE: These commands operate on the internal tree structure of expressions. Generally, the tree structure will reflect the way the expression was originally created, but there is no particular guarantee of this. Some ways of building expressions can flatten tree structure or change it in unexpected ways.
Once dissect mode is entered, the currently-selected subexpression will be highlighted in a special way and framed with an overbrace to show what is selected. The following commands will then be available:
These commands perform symbolic algebra and calculus operations on expressions using the Algebrite library.
Most of these commands come in two varieties: lowercase letters try to guess
the appropriate variable to use in the operation (for example,
\displaystyle{y^2 - 1} uses y), while uppercase
letters require the variable to be specified explicitly.
NOTE: Algebrite is a relatively simple and lightweight computer
algebra system, so not everything can be expected to work.
It's also easy to perform operations that are too large or
time-consuming, such as expanding (x+1)^{10000}, and the Algebrite
library itself has some bugs, so be careful using these commands and make sure to
save your work. There is no way to interrupt a long-running computation other
than closing the browser tab itself.
Algebra:
5^2 and performing default simplifications
such as combining like terms.
\displaystyle{
\frac{{\left(x+3\right)}^2}{\left(x+1\right)\left(x+2\right)}
\Rightarrow 1+\frac{4}{x+1}-\frac{1}{x+2}}
\displaystyle{
x^3-1 \Rightarrow \left(x-1\right)\left(x^2+x+1\right)}
.
Applied to a literal integer, factor into primes instead:
123456 \Rightarrow 2^6\cdot 3\cdot 643
2x^2-3x+1 \Rightarrow
2{\left(x-\frac{3}{4}\right)}^2-\frac{1}{8}
.
Any extra terms like x^3 or \sin x are left alone.
\displaystyle{
\frac{1}{x+1}+\frac{1}{x-1}\Rightarrow\frac{2x}{\left(x-1\right)\left(x+1\right)}}
\displaystyle{
\frac{\left(x+2\right)!}{x!} \Rightarrow
\left(x+1\right)\left(x+2\right)}
x^2\enspace 10 \Rightarrow 100
or W
x+y\enspace y\enspace 10 \Rightarrow x+10.
Note that with W, the "variable"
can be any arbitrary expression:
3\mathrm{e}^x\enspace \mathrm{e}^x\enspace y\Rightarrow 3y.
\displaystyle{
\sin{x} \Rightarrow \frac{i{\mathrm e}^{-2ix}}{2}-\frac{i{\mathrm e}^{2ix}}{2}}
\displaystyle{
{\mathrm e}^{i\pi/3} \Leftrightarrow \frac{1}{2}+\frac{i\sqrt{3}}{2}}
\displaystyle{
{\mathrm e}^{2ix}\Rightarrow{\mathrm e}^{-2ix}}
x^2+2 \Rightarrow
\begin{aligned}
x_1 & {}=-i\sqrt{2}\\
x_2 & {}=i\sqrt{2}
\end{aligned}
f\enspace a\enspace b \Rightarrow \displaystyle{\sum_{x=a}^b f{(x)}}
or
M
f\enspace x\enspace a\enspace b \Rightarrow \displaystyle{\sum_{x=a}^b f{(x)}}:
Sum f{(x)} for values of the variable
ranging from a to b;
a and b must be finite integers.
f\enspace a\enspace b \Rightarrow \displaystyle{\prod_{x=a}^b f{(x)}}
or
O
f\enspace x\enspace a\enspace b \Rightarrow \displaystyle{\prod_{x=a}^b f{(x)}}:
Product of f{(x)} values.
Calculus:
\displaystyle{x^2\sin{x} \Rightarrow 2x\sin{x}+x^2\cos{x}}.
Generic functions like f{(x)} can also be handled
and are shown with "prime" notation:
\displaystyle{
xf{\left(x\right)}
\Rightarrow f{\left(x\right)}+xf^{\prime}{\left(x\right)}}
\displaystyle{
2\sin{x}\cos{x} \Rightarrow {\left(\sin{x}\right)}^2}
f\enspace a\enspace b \Rightarrow \int_a^b f{(x)}\,dx:
Attempt to calculate a definite integral.
The integration bounds can be symbolic expressions or rational numbers.
Currently, numerical integration (quadrature) is not supported,
and the integration bounds must be finite. Example:
\displaystyle{
\tan x \enspace 0 \enspace \pi/3 \Rightarrow \ln 2}
f\enspace z\enspace a\enspace b \Rightarrow \int_a^b f{(z)}\,dz:
Specify the integration variable explicitly.
x=0 to order 7:
\displaystyle{
\sin{2x} \Rightarrow -\frac{8x^7}{315}+\frac{4x^5}{15}-\frac{4x^3}{3}+2x}
. Uppercase T
takes 4 arguments on the stack:
f\enspace x\enspace a\enspace n and calculates the expansion
about f(x=a) to order n.
Linear Algebra:
These operations are performed by applying the usual math syntax to matrices or vectors created with the | commands. Evaluating the expression with ## will then execute the matrix or vector operation(s).
NOTE: the matrices or vectors must be "literal"
matrices, not generic variables like M. However,
they can contain symbolic expressions as their elements.
A\cdot B or AB:
Matrix product. A row vector times a column vector
yields the inner product (a scalar), while a column
vector times a row vector yields the outer product
(a rank-1 matrix).
A + B or A - B:
Matrix or vector sum or difference.
A^{-1}:
Matrix inverse:
{\begin{bmatrix}a & b\\c & d\end{bmatrix}}^{-1}
\Rightarrow \begin{bmatrix}
\frac{d}{ad-bc} & -\frac{b}{ad-bc}\\
-\frac{c}{ad-bc} & \frac{a}{ad-bc}
\end{bmatrix}
A^n: Matrix power (n integer).
A^{\mathrm{T}}: Matrix/vector transpose.
NOTE: the
|T
command also performs transpose directly.
\det A:
Determinant /fd
of a square matrix:
\det{\begin{bmatrix}a & b\\c & d\end{bmatrix}}
\Rightarrow ad-bc
\operatorname{Tr} A:
Trace /ft
of a square matrix:
\operatorname{Tr}{\begin{bmatrix}a & b\\c & d\end{bmatrix}}
\Rightarrow a+d
Numerical Operations:
(\ln{2})^3 \Rightarrow 0.333024651
\pi and \sqrt{3} can also
be detected: 1.644934066 \Rightarrow \pi^2/6
x^2 > \sin x is true or not.
If this can be determined algebraically, it will be; otherwise,
the expression will be evaluated randomly at several points in the
range (-10, 10) to test for likely truth or falsehood.
Q
(f \enspace a\enspace b)
allows you to specify the (a, b) range to test explicitly.
Special Functions:
These commands generate special functions and polynomials that
occur frequently in mathematics. They require the subprefix key
p to be pressed first.
The resulting generated functions always use x as the variable
(though this can be changed to something else using the
#w command).
n \Rightarrow P_n{(x)}: Legendre polynomial of degree n.
n\enspace m \Rightarrow P_n^m{(x)}: Associated Legendre function of order (n,m).
n \Rightarrow L_n{(x)}: Laguerre polynomial of degree n.
n\enspace m \Rightarrow L_n^{(m)}{(x)}: Associated Laguerre polynomial of order (n,m).
n \Rightarrow H_n{(x)}: Hermite polynomial of degree n.
These use the "physicist's" scaling convention.
\alpha \Rightarrow J_{\alpha}{(x)}: Bessel function of the first kind.
\alpha \Rightarrow Y_{\alpha}{(x)}: Bessel function of the second kind.
NOTE: : may optionally be used as an alias for ;.
Lowercase Greek letters:
a \alpha |
b \beta |
c \xi |
d \delta |
e \epsilon |
f \phi |
g \gamma |
h \eta |
i \iota |
j \varphi |
k \kappa |
l \lambda |
m \mu |
n \nu |
o \omega |
p \pi |
q \vartheta |
r \rho |
s \sigma |
t \tau |
u \upsilon |
v \theta |
w \omega |
x \chi |
y \psi |
z \zeta |
Uppercase Greek letters (and some variants):
C \Xi |
D \Delta |
E \varepsilon |
F \Phi |
G \Gamma |
H \mho (mho) |
K \varkappa |
L \Lambda |
M \varpi |
N \nabla (nabla) |
O \Omega |
P \Pi |
Q \Theta |
R \varrho |
S \Sigma |
T \varsigma |
U \Upsilon |
V \Theta |
W \Omega |
Y \Psi |
Italic-slanted variants of uppercase Greek letters are also available using the ;2 prefix:
2C \varXi |
2D \varDelta |
2F \varPhi |
2G \varGamma |
2L \varLambda |
2O \varOmega |
2P \varPi |
2Q \varTheta |
2S \varSigma |
2U \varUpsilon |
2V \varTheta |
2Y \varPsi |
NOTE: The sequence ;; can be used as an alternative to ,; to join two expressions with a semicolon, and ;: joins with a colon like ,:.
These commands let you change global configuration settings. The settings are saved between sessions in your browser.
a+b and c+d yields (a+b)(c+d).
$)
disables this behavior to yield a+bc+d instead.
For maximum browser compatibility, Control/Alt/Command keys are not required. However, the following Control key based shortcuts are available for optional use. On macOS, the Command key also functions as an alias to Control.
x_0
(same as .0)
x^{-1}, x^2, x^3, x^4
(same as .1, etc.)
x \Rightarrow \mathrm{e}^x
(same as /e)
x \Rightarrow f(x)
x \Rightarrow g(x)
f\enspace x\enspace y \Rightarrow f(x\,|\,y)
(same as /k)
f\enspace x\enspace y\enspace z \Rightarrow f(x,y\,|\,z)
(same as /K)
x \Rightarrow -x
(same as .-)
f\enspace x \Rightarrow f(x)
(same as /o)
f\enspace x\enspace y \Rightarrow f(x,y)
(same as /r)
f\enspace x\enspace y\enspace z \Rightarrow f(x,y,z)
(same as /R)
f \Rightarrow f(t)
f \Rightarrow f(x)
x\enspace y \Rightarrow \displaystyle{\frac{x}{y}}
(same as //)
x \Rightarrow \displaystyle{\frac{1}{x}}
(same as /1)