{"id":14980521,"url":"https://github.com/mathjax/mathjax","last_synced_at":"2025-11-12T21:36:05.902Z","repository":{"id":1020197,"uuid":"847885","full_name":"mathjax/MathJax","owner":"mathjax","description":"Beautiful and accessible math in all browsers","archived":false,"fork":false,"pushed_at":"2025-08-04T20:34:24.000Z","size":158585,"stargazers_count":10599,"open_issues_count":175,"forks_count":1179,"subscribers_count":250,"default_branch":"master","last_synced_at":"2025-09-08T17:31:53.940Z","etag":null,"topics":["accessibility","asciimath-notation","css","html","javascript","latex","mathematics","mathjax","mathml","svg","typography"],"latest_commit_sha":null,"homepage":"http://www.mathjax.org/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mathjax.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":["numfocus"],"custom":["https://numfocus.org/donate-to-mathjax"]}},"created_at":"2010-08-19T03:28:53.000Z","updated_at":"2025-09-07T09:48:41.000Z","dependencies_parsed_at":"2024-01-13T10:42:47.448Z","dependency_job_id":"57d04d29-6d69-4370-a269-29b2088c5c09","html_url":"https://github.com/mathjax/MathJax","commit_stats":{"total_commits":2506,"total_committers":42,"mean_commits":"59.666666666666664","dds":0.1616121308858739,"last_synced_commit":"b6922e564070d20888f680a289381702a266718f"},"previous_names":[],"tags_count":49,"template":false,"template_full_name":null,"purl":"pkg:github/mathjax/MathJax","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mathjax%2FMathJax","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mathjax%2FMathJax/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mathjax%2FMathJax/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mathjax%2FMathJax/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mathjax","download_url":"https://codeload.github.com/mathjax/MathJax/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mathjax%2FMathJax/sbom","scorecard":{"id":624637,"data":{"date":"2025-08-11","repo":{"name":"github.com/mathjax/MathJax","commit":"87a3c30bd2b1c0d030bd5e5519b529e5b479968f"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5.5,"checks":[{"name":"Code-Review","score":3,"reason":"Found 2/6 approved changesets -- score normalized to 3","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":10,"reason":"8 commit(s) and 29 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":9,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Info: jobLevel 'contents' permission set to 'read': .github/workflows/publish.yml:12","Warn: no topLevel permission defined: .github/workflows/publish.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/mathjax/MathJax/publish.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/mathjax/MathJax/publish.yml/master?enable=pin","Info:   0 out of   1 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'","Warn: branch protection not enabled for branch 'develop'","Warn: branch protection not enabled for branch 'v4.0-beta'","Warn: branch protection not enabled for branch 'v4.0-alpha'","Warn: branch protection not enabled for branch 'legacy-v2'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 27 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}}]},"last_synced_at":"2025-08-21T06:04:02.434Z","repository_id":1020197,"created_at":"2025-08-21T06:04:02.434Z","updated_at":"2025-08-21T06:04:02.434Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274357583,"owners_count":25270675,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-09T02:00:10.223Z","response_time":80,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["accessibility","asciimath-notation","css","html","javascript","latex","mathematics","mathjax","mathml","svg","typography"],"created_at":"2024-09-24T14:01:54.433Z","updated_at":"2025-11-12T21:36:05.849Z","avatar_url":"https://github.com/mathjax.png","language":"JavaScript","readme":"# MathJax\n## Beautiful math in all browsers\n\n![GitHub release version](https://img.shields.io/github/v/release/mathjax/MathJax-src.svg?sort=semver)\n![GitHub release version (v3)](https://img.shields.io/github/package-json/v/mathjax/MathJax/legacy-v3.svg?label=release-v3)\n![GitHub release version (v2)](https://img.shields.io/github/package-json/v/mathjax/MathJax/legacy-v2.svg?label=release-v2)\n![NPM version](https://img.shields.io/npm/v/mathjax.svg?style=flat)\n![jsdelivr rank](https://flat.badgen.net/jsdelivr/rank/npm/mathjax?color=green)\n![jsDelivr hits (npm)](https://img.shields.io/jsdelivr/npm/hm/mathjax)\n![npm monthly downloads (full)](https://img.shields.io/npm/dm/mathjax?label=npm)\n![npm total downloads](https://img.shields.io/npm/dt/mathjax.svg?style=flat\u0026label=npm%20total)\n\nMathJax is an open-source JavaScript display engine for LaTeX, MathML,\nand AsciiMath notation that works in all modern browsers, with\nbuilt-in support for assistive technology like screen readers,\nincluding automatic speech generation and an expression explorer that\ncan be used to investigate typeset mathematics on a more granular\nlevel than the complete expression.  It requires no setup on the part\nof the user (no plugins to download or software to install), so the\npage author can write web documents that include mathematics and be\nconfident that users will be able to view it naturally and easily.\nSimply include MathJax and some mathematics in a web page, and MathJax\ndoes the rest.\n\nSome of the main features of MathJax include:\n\n- High-quality display of LaTeX, MathML, and AsciiMath notation in HTML pages\n\n- Supported in most browsers with no plug-ins, extra fonts, or special\n  setup for the reader\n\n- Easy for authors, flexible for publishers, extensible for developers\n\n- Supports math accessibility, cut-and-paste interoperability, and other\n  advanced functionality\n\n- Powerful API for integration with other web applications\n\nSee \u003chttp://www.mathjax.org/\u003e for additional details about MathJax,\nand \u003chttps://docs.mathjax.org\u003e for the MathJax documentation.\n\n## MathJax Components\n\nMathJax uses files called *components* that contain the\nvarious MathJax modules that you can include in your web pages or\naccess on a server through NodeJS.  Some components combine all the\npieces you need to run MathJax with one or more input formats and a\nparticular output format, while other components are pieces that can\nbe loaded on demand when needed, or by a configuration that specifies\nthe pieces you want to combine in a custom way.  For usage\ninstructions, see the [MathJax documentation](https://docs.mathjax.org).\n\nComponents provide a convenient packaging of MathJax's modules, but it\nis possible for you to form your own custom components, or to use\nMathJax's modules directly in a node application on a server.  There\nare [web examples](https://github.com/mathjax/MathJax-demos-web)\nshowing how to use MathJax in web pages and how to build your own\ncomponents, and [node\nexamples](https://github.com/mathjax/MathJax-demos-node) illustrating\nhow to use components in node applications or call MathJax modules\ndirectly.\n\n## What's in this Repository\n\nThis repository contains only the component files for MathJax, not the\nsource code for MathJax (which are available in a separate [MathJax\nsource repository](https://github.com/mathjax/MathJax-src/)).  These\ncomponent files are the ones served by the CDNs that offer MathJax to\nthe web.  In version 2, the files used on the web were also the source\nfiles for MathJax, but in version 3 and above, the source files are no\nlonger on the CDN, as they are not what are run in the browser.\n\nThe components are ES6 format as CommonJS modules.\n\n## Installation and Use\n\n### Using MathJax components from a CDN on the web\n\nIf you are loading MathJax from a CDN into a web page, there is no\nneed to install anything.  Simply use a `script` tag that loads\nMathJax from the CDN.  E.g.,\n\n``` html\n\u003cscript src=\"https://cdn.jsdelivr.net/npm/mathjax@4/tex-mml-chtml.js\" defer\u003e\u003c/script\u003e\n```\n\nSee the [MathJax\ndocumentation](https://docs.mathjax.org/en/latest/index.html#browser-components)\nand the [MathJax Web Demos](https://github.com/mathjax/MathJax-demos-web), and the [MathJax\nNode Demos](https://github.com/mathjax/MathJax-demos-node) for more\ninformation.\n\n### Hosting your own copy of the MathJax Components\n\nIf you want to host MathJax from your own server, you can do so by\ninstalling the `mathjax` package using `npm` and moving the contents\nto an appropriate location on your server:\n\n```\nnpm install mathjax@4\nmv node_modules/mathjax \u003cpath-to-server-location\u003e/mathjax\n```\n\nAlternatively, you can get the files via GitHub:\n\n```\ngit clone https://github.com/mathjax/MathJax.git mathjax\nmv mathjax \u003cpath-to-server-location\u003e/mathjax\nrm -rf mathjax\n```\n\nThen (in either case) you can use a script tag like the following:\n\n``` html\n\u003cscript src=\"\u003curl-to-your-site\u003e/mathjax/tex-chtml.js\" defer\u003e\u003c/script\u003e\n```\n\nwhere `\u003curl-to-your-site\u003e` is replaced by the URL to the location\nwhere you moved the MathJax files above.\n\nSee the\n[documentation](https://docs.mathjax.org/en/latest/web/hosting.html)\nfor details.\n\n### Using MathJax components in a node application\n\nTo use MathJax components in a node application, install the `mathjax`\npackage:\n\n``` bash\nnpm install mathjax@4\n```\n\nThen import `mathjax` within your application and initialize it:\n\n``` js\nimport MathJax from 'mathjax';\nawait MathJax.init({ ... });\n```\n\nwhere `{ ... }` is the MathJax configuration you want to use.  E.g., \n\n``` js\nimport MathJax from 'mathjax';\nawait MathJax.init({\n  loader: {load: ['input/tex', 'output/svg']}\n});\nconst svg = await MathJax.tex2svgPromise('\\\\frac{1}{x^2-1}', {display: true});\nconsole.log(MathJax.startup.adaptor.outerHTML(svg));\n```\n\n\nAlternatively, in an ES5 node application, you can use\n\n```js\nconst MathJax = require('mathjax');\nMathJax.init({ ... }).then(() =\u003e { ... });\n```\n    \nwhere the first `{ ... }` is a MathJax configuration, and the second\n`{ ... }` is the code to run after MathJax has been loaded.  E.g.\n\n```js\nconst MathJax = require('mathjax');\nMathJax.init({\n  loader: {load: ['input/tex', 'output/svg']}\n}).then(() =\u003e {\n  const svg = MathJax.tex2svg('\\\\frac{1}{x^2-1}', {display: true});\n  console.log(MathJax.startup.adaptor.outerHTML(svg));\n}).catch((err) =\u003e console.log(err.message));\n```\n\n**Note:** the technique in the two examples above is for node-based\napplication only, not for browser applications.  This method sets up\nan alternative DOM implementation, which you don't need in the\nbrowser, and it depends on node and the local file system in other\nways.  This setup will not work properly in the browser, even if you\nwebpack it or use some other bundler.\n\nSee the\n[documentation](https://docs.mathjax.org/en/latest/index.html#server-nodejs)\nand the [MathJax Node\nRepository](https://github.com/mathjax/MathJax-demos-node) for more details.\n\n## Reducing the Size of the Components Directory\n\nSince the MathJax package contains *all* the component files, so if\nyou are only planning one use one configuration, you can reduce the\nsize of the MathJax directory by removing unused components. For\nexample, if you are using the `tex-chtml.js` component, then you can\nremove the `tex-mml-chtml.js`, `tex-svg.js`, `tex-mml-svg.js`, and the\nfiles ending in `-nofont.js`, which will save considerable space.\nIndeed, you should be able to remove everything other than\n`tex-chtml.js`, and the `input/tex/extensions`, `adaptors`, `a11y`,\nand `sre` directories.  If you are using the results only on the web,\nyou can remove `adaptors` as well.  If you are using MathML input\nrather than TeX (e.g., `mml-chtml.js` rather than `tex-chtml.js`),\nthen you can remove `input/tex/extensions` as well.\n\nIf you are using a font other than the default `mathjax-newcm` font in\na node application, then you will need to install that font as well.\nE.g.,\n\n``` bash\nnpm install @mathjax/mathjax-stix2-font@4\n```\n\nto install the `mathjax-stix2` font locally.  On the web, MathJax will\nlook for the font and its dynamic ranges on the `cdn.jsdelivr.net` CDN\nservice, so if you want to use the font from your own server, you will\nneed to configure the path to the font.  For example:\n\n``` js\nMathJax = {\n  loader: {\n    paths: {\n      'mathjax-stix2': '\u003curl-to-your-server\u003e/mathjax-stix2-font'\n    }\n  }\n};\n```\n\nto set the location for the `mathjax-stix2` font to a URL on your server.\n\n\n## The Component Files and Pull Requests\n\nThe contents of this repository are generated automatically, so you\nshould not submit pull requests that modify this repository.  If you\nwish to submit a modification to MathJax, you should make a pull\nrequest in the [MathJax source\nrepository](https://github.com/mathjax/MathJax-src).\n\n## MathJax Community\n\nThe main MathJax website is \u003chttp://www.mathjax.org\u003e, and it includes\nannouncements and other important information.  A [MathJax user\nforum](http://groups.google.com/group/mathjax-users) for asking\nquestions and getting assistance is hosted at Google, and the [MathJax\nbug tracker](https://github.com/mathjax/MathJax/issues) is hosted\nat GitHub.\n\nBefore reporting a bug, please check that it has not already been\nreported.  Also, please use the bug tracker (rather than the help\nforum) for reporting bugs, and use the user's forum (rather than the\nbug tracker) for questions about how to use MathJax.\n\n## MathJax Resources\n\n* [MathJax Documentation](https://docs.mathjax.org)\n* [MathJax Components](https://github.com/mathjax/MathJax)\n* [MathJax Source Code](https://github.com/mathjax/MathJax-src)\n* [MathJax Web Examples](https://github.com/mathjax/MathJax-demos-web)\n* [MathJax Node Examples](https://github.com/mathjax/MathJax-demos-node)\n* [MathJax Bug Tracker](https://github.com/mathjax/MathJax/issues)\n* [MathJax Users' Group](http://groups.google.com/group/mathjax-users)\n\n","funding_links":["https://github.com/sponsors/numfocus","https://numfocus.org/donate-to-mathjax"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmathjax%2Fmathjax","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmathjax%2Fmathjax","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmathjax%2Fmathjax/lists"}