Math library for MediaWiki (patched)
Go to file
Gabriel Wicke c3432c7af4 Better error handling for math render errors
So far, rare render errors caused by blips in the network or the mathoid
service produce a big red warning in the page, and cause a tracking
category to be added. The rendered content along with the error message
is cached normally, which means that temporary errors are persisted
indefinitely.

As a consequence, editors need to periodically perform null edits to
remove temporary render errors from caches. T136812 documents a history
of this.

This patch aims to improve error handling through two changes:

1) Limit caching of rendered content to 10 minutes. As a consequence,
   temporary render errors should clear themselves up fairly quickly,
   eliminating the need for manual follow-up. The 10 minute timeout was
   chose as a compromise between relatively timely cleanup, and limited
   load from re-renders after math trouble.

2) Track render errors in a dedicated category. This avoids mixing
   syntax errors with temporary render errors, which should make cleanup
   efforts a lot simpler.

Bug: T136812
Change-Id: If7537ed9117fb736a09f4396b7d55d774ce9674f
2017-05-10 14:38:50 +02:00
db Increase size of the math_mathml in the mathlatexml table 2014-11-18 12:42:27 +01:00
i18n Localisation updates from https://translatewiki.net. 2017-05-09 22:54:37 +02:00
images Update reference images 2016-10-10 18:26:22 +02:00
maintenance Updated maintenance scripts to use $this->requireExtension() 2016-12-17 15:23:58 -05:00
math Do not ignore all .mli files in texvccheck 2016-12-25 13:39:20 +00:00
mathoid Separate Mathoid from the Math extension 2014-02-10 18:28:08 +00:00
modules Remove separate stylelint config for VE 2017-04-28 17:37:45 +01:00
tests Improve error reporting 2016-08-17 21:15:02 +02:00
texvccheck Merge "Remove broken test script texvccheck/test.pl" 2016-12-26 00:05:16 +00:00
.eslintrc.json eslint: Re-enable wrap-iife and partially enable dot-notation 2016-11-15 13:13:05 +00:00
.gitattributes Update to MathJax 2.3 2014-01-27 21:36:02 +00:00
.gitignore Expand .gitignore for more editors 2016-11-13 13:22:03 +01:00
.gitreview Whoops, track not trace 2016-10-24 17:02:56 -07:00
.rubocop.yml Fixed Style/StringLiterals RuboCop offense 2015-09-22 10:18:13 -07:00
.stylelintrc build: Introduce stylelint to lint for css errors 2016-05-19 19:16:00 +01:00
COPYING Add COPYING 2014-03-01 16:15:39 +00:00
Gemfile Update tests to Selenium 3 2017-02-27 15:53:37 +01:00
Gemfile.lock Update tests to Selenium 3 2017-02-27 15:53:37 +01:00
Gruntfile.js Remove separate stylelint config for VE 2017-04-28 17:37:45 +01:00
HISTORY Use extension.json, empty PHP entry point 2015-07-30 22:01:20 +00:00
Makefile Remove unused Makefile variable "DIRS" 2016-12-25 13:35:16 +00:00
Math.alias.noTranslate.php Convert all array() syntax to [] 2016-04-13 10:18:23 -04:00
Math.alias.php Convert all array() syntax to [] 2016-04-13 10:18:23 -04:00
Math.hooks.php Better error handling for math render errors 2017-05-10 14:38:50 +02:00
Math.php Add php code sniffer to composer 2015-09-23 10:46:14 +01:00
MathChemSymbolsDataModule.php Add support for chemical formulae in VisualEditor 2017-02-19 18:36:26 +00:00
MathFormatter.php Convert all array() syntax to [] 2016-04-13 10:18:23 -04:00
MathInputCheck.php Add php code sniffer to composer 2015-09-23 10:46:14 +01:00
MathInputCheckRestbase.php Update to mediawiki-codesniffer 0.6.0 2016-04-19 17:07:21 -04:00
MathInputCheckTexvc.php Skip shell invocation on large input 2017-01-20 15:09:56 -08:00
MathLaTeXML.php Replace use of &$this 2017-01-31 22:54:07 -05:00
MathMLRdfBuilder.php RDF Formatter for Math data type 2016-02-12 20:38:27 +00:00
MathMathML.php Replace use of &$this 2017-01-31 22:54:07 -05:00
MathMathSymbolsDataModule.php Add support for chemical formulae in VisualEditor 2017-02-19 18:36:26 +00:00
MathRenderer.php Merge "Avoid DBPerformance warnings in writeToDatabase()" 2016-06-10 08:34:56 +00:00
MathRestbaseInterface.php Improve error reporting 2016-08-17 21:15:02 +02:00
MathSource.php Revert "Add class `mwe-math-element` to math elements" 2017-01-03 23:57:46 +00:00
MathTexvc.php Replace use of &$this 2017-01-31 22:54:07 -05:00
MathValidator.php Convert all array() syntax to [] 2016-04-13 10:18:23 -04:00
MathWikidataHook.php Remove 'ext.math.scripts' from styles queue on wikidata 2017-02-17 14:56:48 -08:00
README Convert all array() syntax to [] 2016-04-13 10:18:23 -04:00
RELEASE-NOTES-3.0.0 Add release notes for version 3.0.0 2015-07-25 22:01:48 +01:00
Rakefile Migration of browsertests* Jenkins jobs to selenium* jobs 2016-04-25 18:31:00 +02:00
SpecialMathShowImage.php Convert all array() syntax to [] 2016-04-13 10:18:23 -04:00
SpecialMathStatus.php Convert all array() syntax to [] 2016-04-13 10:18:23 -04:00
composer.json build: add jakub-onderka/php-console-highlighter 2017-05-05 21:40:01 +02:00
extension.json Correct "operators" message in chemSymbols.json 2017-02-23 19:34:54 +00:00
mathParserTests.txt Coverage tests for the Math extension 2014-03-11 15:35:07 +00:00
package.json build: Update eslint to 0.4.0 2017-05-04 21:52:38 +01:00
phpcs.xml Update mediawiki-codesniffer and parallel-lint settings 2015-09-29 02:19:04 +02:00

README

This version (for MediaWiki 1.19) has some changes since previous versions:

* rendering options have been reduced to just 'Always PNG' and 'Leave it as TeX'
** all other rendering options will merge to PNG.
* initial experimental support for integrating MathJax client-side rendering

See the README in the math subdirectory for more info on setting up the
low-level conversion tools.
See the README in the texvccheck subdirectory for more info on setting up the
security checking tools for MathJax and LaTeXML.

MathML support:
If you prefer MathML rather than images you can use LaTeXML to convert the
math tags to MathML. To use that feature you have to enable LaTeXML by setting
$wgMathUseLaTeXML = true;
It is possible to choose LaTeXML as default option (for anonymous user) by setting
$wgDefaultUserOptions['math'] = 'latexml';
in the LocalSettings.php file.
The LaTeXML option requires php5-curl to be installed. Without php5-curl no proper
error handling can be guaranteed.
Furthermore, a core version of wmf/1.22wmf7 or newer is recommended.
Otherwise, errors in LaTeXML can lead to mal-formatted XML output and disturb the
page layout.

MathJax configuration:
Client-side configuration of MathJax can be done by specifying a mathJax.config
table, which takes a table as described in:
http://docs.mathjax.org/en/v1.1-latest/options/index.html#configuration

Example:
if ( typeof mathJax === 'undefined' ) {
  mathJax = {};
  mathJax.config = {
    showProcessingMessages: true
  };
}

Attributes of the <math /> element:
attribute "display":
possible values: "inline", "block" or "inline-displaystyle" (default)

"display" reproduces the old texvc behavior:
The equation is rendered with large height operands (texvc used $$ $tex $$ to render)
but the equation printed to the current line of the output and not centered in a new line.
In Wikipedia users use :<math>$tex</math> to move the math element closer to the center.

"inline" renders the equation in with small height operands by adding {\textstyle $tex } to the
users input ($tex). The equation is displayed in the current text line.

"inline-displaystyle" renders the equation in with large height operands centered in a new line by adding
{\displaystyle $tex } to the user input ($tex).


For testing your installation run
php tests/phpunit/phpunit.php extensions/Math/tests/
from your MediWiki home path.

== Logging ==
The math extension supports PSR-3 logging:
Configuration can be dona via
$wgDebugLogGroups['Math'] = [ 'level' => 'info', 'destination' => '/path/to/file.log' ];