🚨 Shai-Hulud Strikes Again:834 Packages Compromised.Technical Analysis →
Socket
Book a DemoInstallSign in
Socket

mathoid-texvcjs

Package Overview
Dependencies
Maintainers
4
Versions
18
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

mathoid-texvcjs

A TeX/LaTeX validator for MediaWiki.

latest
Source
npmnpm
Version
0.6.0
Version published
Maintainers
4
Created
Source

texvcjs

NPM

A TeX/LaTeX validator.

texvcjs takes user input and validates it while replacing MediaWiki-specific functions. It is a JavaScript port of texvc, which was originally written in OCaml for the Math extension.

The texvcjs library was originally written to be used by the mw-ocg-latexer PDF-generation backend of the MediaWiki Collection extension.

texvcjs also makes it possible to print the identified texvc tokens. Moreover, it provides additional information on the input, such as

  • listing the identifiers;
  • discovering if the expression ends with a dot.

Installation

Node version 22 is tested to work.

Install the node package dependencies with:

npm install

Ensure everything works:

npm test

Running

To test your installation:

bin/texvcjs '\sin(x)+{}{}\cos(x)^2 newcommand'

which should emit:

+\sin(x)+{}{}\cos(x)^{2}newcommand

To test the info functionalities, run texvcjs with the info flag:

./bin/texvcjs --info -o json \\frac12 > ./vis/data.json

API

Your programs can also use the JavaScript API exported by the texvcjs node module:

var texvcjs = require('texvcjs');

var result = texvcjs.check('\\sin(x)+{}{}\\cos(x)^2 newcommand');
console.log(result.status);
console.log(result.output || ''); // cleaned/validated output

If the output field is not undefined, then validation was successful.

The status field is a single character:

  • +: Success! The result is in the output field.
  • F: A TeX function was not recognized. The function name is in the details field.
  • S: A parsing error occurred.
  • -: Some other problem occurred.

For status types F, S, and -, the position of the error may be found in the line, column, and offset fields of the result. More information about the problem can be found in the details field of the result, which is a string.

The fields ams_required, cancel_required, color_required, euro_required, and teubner_required are set to true iff the input string requires the use of the corresponding LaTeX packages. The ams_required field requires the use of the amsmath and amssymb packages.

mhchem

To use the \ce tags from the mhchem package, the parser needs to be called with the mhchem option. During the parsing, if a \ce tag is encountered, its contents are treated according to the mhchem grammar. The parsing in general and the building up of the AST is done in a similar fashion to the math mode, but preserves the whitespaces when needed.

As the design of the parser does not allow the usage of the dollar sign in the math mode, the tags \begin{math} and \end{math} were introduced to provide the ability to switch to math mode within a chemical formula. The undocumented \color tag of mhchem is only supported for named colors. The full documentation of the mhchem package can be found on the mhchem website.

Examples:

This example would be typeset wrongly without the extended parser, as some charges would be typeset as bonds, and some addition signs would end up as charges. Running:

bin/texvcjs  --usemhchem '\ce{2Na + 2H2O -> 2Na+ + 2OH- + H-H}'

emits:

+{\ce {2Na + 2H2O -> 2Na+ + 2OH- + H-H}}

More examples can be found on the mhchem website.

License

Copyright (c) 2014-2022 C. Scott Ananian, Moritz Schubotz, Johannes StegmĂĽller

Licensed under GPLv2.

Keywords

tex

FAQs

Package last updated on 06 Nov 2025

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts