Changelog
0.69.5 2021-08-05
When using keybindings or virtual keyboard keys, insert the content in the current math style, rather than forcing display style.
Correctly handle loading MathLive in a non-browser context (e.g. Node)
Updated localization strings
Changelog
0.69.4 2021-06-22
Changelog
0.69.3 2021-06-10
\int_0^{\infty}
instead of \int^{\infty}_0
.Changelog
0.69.1 2021-06-09
Changelog
0.69.0 2021-06-09
This release requires TypeScript 4.3 or later (the API uses asymmetric getters/setters). If you are using VSCode, you may need to change the version of TypeScript used by the editor for language services (syntax checking). To do so, with a TypeScript file open, click the Typescript version in the bottom bar, then choose "Select TypeScript Version", then "Use Workspace Version" (see https://code.visualstudio.com/docs/typescript/typescript-compiling#_using-newer-typescript-versions)
All the default imports have been removed. Instead of
import MathLive from 'mathlive';
MathLive.renderMathInDocument();
use:
import { renderMathInDocument } from 'mathlive';
renderMathInDocument();
If you are not calling a specific MathLive function and just need to use the
<math-field>
tag, use:
import from 'mathlive';
latexToMathML()
→
convertLatexToMathMl()
, latexToSpeakableText
→
convertLatexToSpeakableText
, latexToMarkup()
→
convertLatexToMarkup()
,revertToOriginalContent
functionality has been removed.overrideDefaultInlineShortcuts
property has been removed.
Instead, use:mf.setConfig('inlineShortcuts', {
...mf.getConfig('inlineShortcuts'),
...newShortcuts,
});
The following MathField
functions have been removed: $setConfig()
→
setOptions()
, getConfig()
→ getOptions()
, $perform()
→
executeCommand()
, $text()
→ getValue()
, $selectedText()
→
getValue()
, $selectionIsCollapsed()
, $selectionDepth()
,
$selectionAtStart()
, $selectionAtEnd()
, $latex()
→
getValue()
andsetValue()
, $el
, $insert()
→ insert()
,
$hasFocus()
→ hasFocus()
, $focus()
→ focus()
, $blur()
→ blur()
, $select()
→ select()
, $clearSelection()
→
executeCommand('delete-backward')
, $applyStyle()
→ applyStyle()
,
$keystroke()
, $typedText()
The makeMathField()
function has been removed. Use new MathfieldElement()
or the <math-field>
tag instead:
// Before
let mf = MathLive.makeMathField(document.createElement('div'), {
virtualKeyboardMode: 'manual',
});
mf.$latex('f(x) = \\sin x');
document.body.appendChild(mf.$el());
// After
let mfe = new MathfieldElement({
virtualKeyboardMode: 'manual',
});
mfe.value = 'f(x) = \\sin x';
document.body.appendChild(mfe);
or:
<math-field virtual-keyboard-mode="manual">f(x) = \sin x</math-field>
mf.selection = 0
instead
of mf.selection = { ranges:[[0, 0]] }
.\cdot
to "times" in spoken-text
format.virtualKeyboardContainer
, the virtual keyboard is now
displayed inside the container. The container should have a position
of
relative
.\
key), remove the \placeholder{}
command.\mathop
and \operatorname
.getOffsetDepth()
method can be used to query the depth of a specific
offset. Use mf.getOffsetDepth(mf.position)
for the depth of the current
position.onExport()
hook provides an opportunity to customize the format exported
to the Clipboard.setOptions
macros
dictionary is updatedoverflow: scroll
, the dimensions of the viewport would be
incorrectly affected.Changelog
0.68.1 2021-06-02
Keybindings: keybindings can now be associated with specific keyboard layouts. By default, the keybindings that are specific to the US keyboard layout are no longer applied with other keyboard layouts. This makes it easier to use punctuation with some keyboard layouts and prevent some error messages from being thrown (addresses #962).
MathML: improved MathML output, especially for formulas with unbalanced delimiters
Changelog
0.68.0 2021-05-31
#500 MathJSON support. The legacy MASTON/JSON format has been removed.
The MathJSON format is now integrated into MathLive 🚀 🎆 🥳
To get the MathJSON representation of a formula, use mf.getValue('math-json')
.
The latexToAST()
and astToLatex()
functions have been replaced by
parseMathJson() and
serializeMathJson().
import { parseMathJson, serializeMathJson } from 'mathlive';
MathJSON has an extensive API that supports parsing and serializing of custom LaTeX expressions. You can use it to define your own LaTeX "vocabulary" and "grammar" and transform it into MathJSON.
You can also convert MathJSON expressions into several canonical forms, do symbolic computation with MathJSON expressions, for example to compare them, and more.
Learn more at cortexjs.io/math-json/.
move-out
event is dispatched (or the lower-level onMoveOutOf
hook is
invoked, but using the event is recommended). This is an opportunity to handle
this situation, for example by changing the focus to another element. To get
the default behavior, which is to play a "plonk" sound, do not cancel the
event. To prevent the "plonk" sound from playing, use evt.preventDefault()
.
Note tha previously a focus-out
event was dispatched in this case, but since
the focus is actually not changed by default, this was incorrect.SpeechScope
argument of the speak
command is now optional.strictNullChecks
. This will ensure that the public Typescript declaration
file also compile with strictNullChecks
if you make use of it in your own
project.set plonkSound()
failed when compiled
with strictNullChecks
.speak
command would be
inoperative.contentEditable
block, inserting
a line before the component would make the component crash. Now the component
is correctly disconnected, then reconnected and preserves its state across the
disconnection.e\pi
instead of e^\pi
. Also,
serializing some partial formulas, such as "e^" would result in incorrect
LaTeX (e.g. "e").2^3
was not serializing the superscript (#951 )
and subscripts were not serialized for various constructs( #534).Changelog
0.67.0 2021-05-21
\overarc
, \underarc
, \overparen
and \underparen
commands.keypressSound
to null
would not turn off the sounds. Setting
it to the string "null"
did, though.input
event would incorrectly bubble out of the mathfield, even in
read-only mode.getOption()
, or when examining a property on
MathfieldElement
, return the actual value, rather than an object literal
that contains the value.<math-field>
element was parsed
in the document, the attributes of the mathfield would be ignored.Changelog
0.66.1 2021-05-21
display
property of the mathfield would change
depending on the default-mode
property. This had unintended consequences in
some cases. To control the layout of the mathfield, use
style="display:inline-block;"
instead.applyStyle()
, if a non-RGB color (e.g. "yellow"
) was used, it
would not be applied to the selection.applyStyle()
if the font size was changed, it was always set to
font size 1 (tiny).