Monorepo for a suite of parsers used in the Journal of Trial and Error.
The goal is to automate the process of converting a manuscript from a word processor to a JATS XML file, which can then be used to generate a PDF and HTML version of the manuscript. Ideally this would allow authors to work in Word/Google Docs but still have the benefits of a modern publishing workflow.
The only current implementation is found at convert.centeroftrialanderror.com (very shodyy!).
Currently has 3 suites of parsers:
ooxast/reoff: Tools to parse, convert from, and create OOXML (.docx) XML. Currently only contains a parser and a converter tojats, plus some tools.jats/rejour: Tools to parse, convert from, and create JATS XML. Currently contains a parser, stringifier, and a converter totexast, plus some tools.texast/relatex: Tools to parse, convert from, and create LaTeX (DEPRECATED, use unified-latex instead). Only contains a way to generate LaTex fromtexastASTs.
Additionally, there are a few other tools:
citations-: Tools to parse and convert citations.ojs-: Things to operate on the OJS apiutils-: Various utilities
Finally, there are the processors, which are basically convenient wrappers around the parsers.
There is also an app directory, which contains a few apps that use the parsers, atm a really crappy frontend for converting from .docx.
See below for more info.
View an interactive dependency graph here

Apps:
Type definitions for crossref api responses
Convert crossref metadata to CSL
Try to resolve a list of CSL data with crossref metadata
Somewhat jank CSL-JSON to biblatex converter
Some typescript types for OJS api responses
Small tool that parses a string of text containing APA style in text citations, e.g. Jones (2020), and returns a rudimentary AST with the thing parsed.
Type definitions for jast (journal article/abstract syntax tree), a syntax for abstract syntax trees representing JATS XML, specifically the "Green" publishing tag set.
Transform a CSL list or object to a jast node.
Convert a jast citation syntax tree to list of csl objects.
Utility to convert a jast tree to a texast tree.
Transform HTML to Notion blocks
Plugin for rehype to turn HTML into Notion blocks
new default(«destructured»: object = {}): default;
Convert ojs data to relatex
Type definitions for ooxast (Open Office XML abstract syntax tree), a syntax for abstract syntax trees representing Open Office XML documents in the unist format.
Small ooxast utility which scans the text to identify the citation plugin used, either Mendely, Zotero, EndNote, Citavi, native word citations or none at all. It is used to feed into other things.
This package is ESM only. In Node.js (version 12.20+, 14.14+, 16.0+, 18.0+), install as
Get style from a w:p element.
Find and convert raw references to CSL-JSON using anystyle.
Find and convert raw references to CSL-JSON.
Find and convert raw references to CSL-JSON.
Return the properties of an ooxast node as a JSON object
Cleans all the rsid tags from an ooxast tree, and merges w:r elements if they only differ by rsid values.
Convert docx to html (Not working)
Util to convert ooxast syntax tree to jast syntax tree, allowing for .docx to JATS XML conversion.
Convert ooxast syntax tree to mdast syntax tree.
Convert ooxast syntax tree to unified-latex syntax tree.
processorsDocxToJats(): string;
DOCX to TeX converter
jatsToTex(jats: string): Promise;
docxToTex(input: Uint8Array, options: object = {}): Promise;
rejourFrontmatter(): Function;
Doesn't do anything atm
Really simple plugin for rejour that moves the abstract from the body to the front of a JATS document.
Parser for rejour that parses the JATS document to a jast tree.
Plugin for rejour that transforms a jast syntax tree into a texast syntax tree, allowing for conversion between JATS XML and LaTeX.
Plugin for rejour that stringifies a jast syntax tree to a JATS XML document.
Plugin for relatex that adds a preamble to a texast syntax tree.
Plugin for relatex that stringifies a texast syntax tree to a LaTeX file.
Reads a .docx file and stores its components in vfile format to be processed by other tools, like reoff-parse.
Plugin for reoff that parses citations in the form of @cite{key} and @cite[page]{key} using ooxast-util-parse-bib and ooxast-util-parse-text-cite.
Plugin for [reoff][reoff] to clean the ooxast tree.
Plugin for [reoff][reoff] to parse a .docx XML file into an ooxast AST. Ideally use docx-to-vfile to get to a parseable state.
Plugin for reoff which tries to find a bibliography in the document and parse it using ooxast-util-parse-bib.
Plugin for reoff which tries to find a bibliography in the document and parse it using ooxast-util-parse-bib.
Plugin for reoff that transforms an ooxast syntax tree into a jats syntax tree, i.e. converting .docx to JATS XML.
Plugin for reoff that takes an ooxast tree and turns it into a remark tree, allowing for .docx to .tex conversion
Plugin for reoff that takes an ooxast tree and turns it into a unified-latex tree, allowing for .docx to .tex conversion
DEPRECATED: Type definitions for texast (LaTeX abstract syntax tree), a syntax for abstract syntax trees representing LaTeX documents in the unist format.
Add a preamble to a texast syntax tree.
Convert a texast syntax tree to LaTeX.
Plugin for unified-latex that takes an unified-latex tree and turns it into LaTeX
tryCatchPromise(promise: Promise, errorHandler?: Function): Promise<[T | null, unknown | null]>;
This package is ESM only. In Node.js (version 12.20+, 14.14+, 16.0+, 18.0+), install as
This library was generated with Nx.
Port of hast-util-has-property for xast
Port of hast-util-is-element for xast
Port of (hast-util-select)[https://github.com/syntax-tree/hast-util-select] for use with xast nodes.
GPL-3.0+ © Thomas F. K. Jorna