Skip to content

Convert `ooxast` syntax tree to `unified-latex` syntax tree.

License

Notifications You must be signed in to change notification settings

TrialAndErrorOrg/ooxast-util-to-unified-latex

Repository files navigation

Note This repository is automatically generated from the main parser monorepo. Please submit any issues or pull requests there.

ooxast-util-to-unified-latex

npm version npm downloads

Convert ooxast syntax tree to unified-latex syntax tree.

Contents

What is this?

This package is a utility that takes an ooxast (docx) syntax tree as input and turns it into a unified-latex (LaTeX) syntax tree.

When should I use this?

This project is useful when you want to deal with ASTs and turn OOXML into LaTeX.

The reoff plugin [reoff-unified-latex] wraps this utility to also turn markdown to HTML at a higher-level (easier) abstraction.

Install

This package is ESM only. In Node.js (version 12.20+, 14.14+, 16.0+, 18.0+), install as

pnpm add ooxast-util-to-unified-latex
# or with yarn
# yarn add ooxast-util-to-unified-latex
# or with npm
# npm install ooxast-util-to-unified-latex

Use

API


toUnifiedLatex()

Signature

toUnifiedLatex(tree: Element | Text | Root, file: VFile, options?: Options): UnifiedLatexRoot;

Parameters

Name Type
tree Element
file VFile
options? Options

Returns

UnifiedLatexRoot

Defined in: src/lib/ooxast-util-to-unified-latex.ts:62

Signature

toUnifiedLatex(tree: Element | Text | Root, options?: Options): UnifiedLatexRoot;

Parameters

Name Type
tree Element
options? Options

Returns

UnifiedLatexRoot

Defined in: src/lib/ooxast-util-to-unified-latex.ts:67


Options

Properties

bibliography?

string | Data[]

A bibliography you can add manually

Needs to be in CSL format, which will be converted to BibTeX, or in BibTeX format

Defined in: src/lib/types.ts:146

bibname?

string

Name of the bibliography file

Default

'bibliography.bib'

Defined in: src/lib/types.ts:47

citationType?

"endnote" | "mendeley" | "word" | "citavi" | "zotero"

What type of citation is used?

Default

'zotero'

Defined in: src/lib/types.ts:70

collectCitation?

Function

Type declaration

Signature`

(citation: any, index: string | number): any;

Parameters`

Name Type
citation any
index string

Returns`

any

Defined in: src/lib/types.ts:72

columnSeparator?

boolean

Should a column separator be added to tables? i.e. should | be added to the beginning and end of each row?

Default

false

Defined in: src/lib/types.ts:52

defaultCol?

string

What column should be used as the default column?

e.g l for left, r for right, c for center

Default

'l'

Defined in: src/lib/types.ts:127

displayMath?

"align" | "equation" | "equation*" | "align*" | "$$" | "[]"

What type of display math should be used?

-$$: $$ ... $$

-[]: [ ... \]

-equation | equation* | align | align*: \begin{...} ... \end{...}

Default

'equation'

Defined in: src/lib/types.ts:86

document?

boolean

Defined in: src/lib/types.ts:27

documentClass?

object

{
    name: string;
    options?: string[];
}

Options for the document class

Default
Type declaration
Member Type Description
name string Name of the document class Default 'article'
options? string[] Options for the document class Default undefined

Defined in: src/lib/types.ts:56

handlers?

object

Handlers for specific node types

Index signature
Type declaration

Defined in: src/lib/types.ts:26

inlineMath?

"$" | "()"

What type of inline math should be used? -$: $ ... $ -() : \(...\)

Default

'$'

Defined in: src/lib/types.ts:102

italics?

"emph" | "textit"

Should italics be rendered as \textit or \emph?

Default

'emph'

Defined in: src/lib/types.ts:43

newLines?

boolean

Defined in: src/lib/types.ts:28

packages?

(string | { name: string; options: string[]; })[]

A list of packages to add to the preamble

by default, the following packages are added:

  • xcolor (if xcolor is enabled)
  • hyperref
  • graphicx
  • caption
  • tabularx (if tabularx is enabled)

Defined in: src/lib/types.ts:158

parseCitation?

Function

Type declaration

Signature`

(citation: any): any;

Parameters`

Name Type
citation any

Returns`

any

Defined in: src/lib/types.ts:71

preamble?

string | UnifiedLatexNode[]

A list of commands and other stuff to add to the preamble

You are responsible for making sure that the commands are valid LaTeX and that they can be used in the preamble.

You need to directly use the unified-latex types here, or you can just put it in raw

Default

'\title{}'

Example
import { m, args } from '@unified-latex/unified-latex-types'

const options = {
 preamble: [
  // \author{Leeroy Jenkins}
  m('author', 'Leeroy Jenkins'),
  // \title{The Adventures of Leeroy Jenkins}
  m('title', 'The Adventures of Leeroy Jenkins'),
  // \somemacrowithoptions[optional1][optional2]{firstArg}{secondArg}
  m(
     'somemacrowithoptions',
     args(
        ['optional1', 'optional2', 'firstArg', 'secondArg'],
       { braces: '[][]{}{}'}
      )
   ),
  ]
}

Defined in: src/lib/types.ts:192

quotes?

string[]

Defined in: src/lib/types.ts:29

relations?

object

Index signature
Type declaration

Defined in: src/lib/types.ts:74

strikethrough?

"st" | "sout" | "s"

Defined in: src/lib/types.ts:103

tabularx?

boolean | { width?: string; }

Should tabularx be used instead of tabular?

Default

false

Defined in: src/lib/types.ts:132

title?

string

The title of the document

If this is not set, the title will be taken from the heading with the "Title" style.

Default

undefined

Defined in: src/lib/types.ts:119

topSection?

number

What the top section should be -1 = part 0 = chapter 1 = section 2 = subsection 3 = subsubsection 4 = paragraph 5 = subparagraph

Defined in: src/lib/types.ts:39

xcolor?

boolean

Are you using xcolor?

Disabling this will remove the xcolor package from the preamble and remove color related commands from the output.

Default

true

Defined in: src/lib/types.ts:111


H

HWithProps & HWithoutProps & Context

Defined in: src/lib/types.ts:292


Handle

Function

Type declaration

Signature
(h: H, node: any, parent?: Parent): UnifiedLatexNode | UnifiedLatexNode[] | void | undefined;
Parameters
Name Type
h H
node any
parent? Parent
Returns

UnifiedLatexNode | UnifiedLatexNode[] | void | undefined

Defined in: src/lib/types.ts:195


UnifiedLatexNode

Root | String | Whitespace | Parbreak | Comment | Macro | Environment | VerbatimEnvironment | InlineMath | DisplayMath | Group | Verb

Defined in: node_modules/.pnpm/@[email protected]/node_modules/@unified-latex/unified-latex-types/libs/ast-types.d.ts:83

jote


all()

Convert all nodes in tree using j

Signature

all(h: H, parent: Parent<Node<Data>, Data> | Node): UnifiedLatexNode[];

Parameters

Name Type Description
h H ooxast constructor function
parent Parent<Node<Data>, Data> Node

Returns

UnifiedLatexNode[]

Defined in: src/lib/all.ts:10


one()

Signature

one(h: H, node: Node, parent?: Parent<Node<Data>, Data>): UnifiedLatexNode | UnifiedLatexNode[] | void;

Parameters

Name Type
h H
node Node
parent? Parent<Node<Data>, Data>

Returns

UnifiedLatexNode | UnifiedLatexNode[] | void

Defined in: src/lib/one.ts:8


toUnifiedLatex()

Signature

toUnifiedLatex(tree: Element | Text | Root, options: Options): Root;

Parameters

Name Type
tree Element Text Root
options Options

Returns

Root

Defined in: src/lib/ooxast-util-to-unified-latex.ts:45


defaultHandlers

Const Context["handlers"]

Defined in: src/lib/handlers/index.ts:20


Options

Properties

bibliography?

string | Data[]

A bibliography you can add manually

Needs to be in CSL format, which will be converted to BibTeX, or in BibTeX format

Defined in: src/lib/types.ts:147

bibname?

string

Name of the bibliography file

Default

'bibliography.bib'

Defined in: src/lib/types.ts:48

citationType?

"endnote" | "mendeley" | "word" | "citavi" | "zotero"

What type of citation is used?

Default

'zotero'

Defined in: src/lib/types.ts:71

collectCitation?

Function

Type declaration

Signature`

(citation: any, index: string | number): any;

Parameters`

Name Type
citation any
index string number

Returns`

any

Defined in: src/lib/types.ts:73

columnSeparator?

boolean

Should a column separator be added to tables? i.e. should | be added to the beginning and end of each row?

Default

false

Defined in: src/lib/types.ts:53

defaultCol?

string

What column should be used as the default column?

e.g l for left, r for right, c for center

Default

'l'

Defined in: src/lib/types.ts:128

displayMath?

"align" | "equation" | "equation*" | "align*" | "$$" | "[]"

What type of display math should be used?

-$$: $$ ... $$

-[]: [ ... \]

-equation | equation* | align | align*: \begin{...} ... \end{...}

Default

'equation'

Defined in: src/lib/types.ts:87

document?

boolean

Defined in: src/lib/types.ts:28

documentClass?

object

{
    name: string;
    options?: string[];
}

Options for the document class

Default
Type declaration
Member Type Description
name string Name of the document class Default 'article'
options? string[] Options for the document class Default undefined

Defined in: src/lib/types.ts:57

handlers?

object

Handlers for specific node types

Index signature
Type declaration

Defined in: src/lib/types.ts:27

inlineMath?

"$" | "()"

What type of inline math should be used? -$: $ ... $ -() : \(...\)

Default

'$'

Defined in: src/lib/types.ts:103

italics?

"emph" | "textit"

Should italics be rendered as \textit or \emph?

Default

'emph'

Defined in: src/lib/types.ts:44

newLines?

boolean

Defined in: src/lib/types.ts:29

packages?

(string | { name: string; options: string[]; })[]

A list of packages to add to the preamble

by default, the following packages are added:

  • xcolor (if xcolor is enabled)
  • hyperref
  • graphicx
  • caption
  • tabularx (if tabularx is enabled)

Defined in: src/lib/types.ts:159

parseCitation?

Function

Type declaration

Signature`

(citation: any): any;

Parameters`

Name Type
citation any

Returns`

any

Defined in: src/lib/types.ts:72

preamble?

string | UnifiedLatexNode[]

A list of commands and other stuff to add to the preamble

You are responsible for making sure that the commands are valid LaTeX and that they can be used in the preamble.

You need to directly use the unified-latex types here, or you can just put it in raw

Default

'\title{}'

Example
import { m, args } from '@unified-latex/unified-latex-types'

const options = {
 preamble: [
  // \author{Leeroy Jenkins}
  m('author', 'Leeroy Jenkins'),
  // \title{The Adventures of Leeroy Jenkins}
  m('title', 'The Adventures of Leeroy Jenkins'),
  // \somemacrowithoptions[optional1][optional2]{firstArg}{secondArg}
  m(
     'somemacrowithoptions',
     args(
        ['optional1', 'optional2', 'firstArg', 'secondArg'],
       { braces: '[][]{}{}'}
      )
   ),
  ]
}

Defined in: src/lib/types.ts:193

quotes?

string[]

Defined in: src/lib/types.ts:30

relations?

object

Index signature
Type declaration

Defined in: src/lib/types.ts:75

strikethrough?

"st" | "sout" | "s"

Defined in: src/lib/types.ts:104

tabularx?

boolean | { width?: string; }

Should tabularx be used instead of tabular?

Default

false

Defined in: src/lib/types.ts:133

title?

string

The title of the document

If this is not set, the title will be taken from the heading with the "Title" style.

Default

undefined

Defined in: src/lib/types.ts:120

topSection?

number

What the top section should be -1 = part 0 = chapter 1 = section 2 = subsection 3 = subsubsection 4 = paragraph 5 = subparagraph

Defined in: src/lib/types.ts:40

xcolor?

boolean

Are you using xcolor?

Disabling this will remove the xcolor package from the preamble and remove color related commands from the output.

Default

true

Defined in: src/lib/types.ts:112


H

HWithProps & HWithoutProps & Context

Defined in: src/lib/types.ts:292


Handle

Function

Type declaration

Signature
(h: H, node: any, parent?: Parent): UnifiedLatexNode | UnifiedLatexNode[] | void | undefined;
Parameters
Name Type
h H
node any
parent? Parent
Returns

UnifiedLatexNode | UnifiedLatexNode[] | void | undefined

Defined in: src/lib/types.ts:196


UnifiedLatexNode

Root | String | Whitespace | Parbreak | Comment | Macro | Environment | VerbatimEnvironment | InlineMath | DisplayMath | Group | Verb

Defined in: node_modules/.pnpm/@[email protected]/node_modules/@unified-latex/unified-latex-types/libs/ast-types.d.ts:83

Syntax tree

Types

Compatibility

Security

Related

Contribute

License

GPL-3.0-or-later © Thomas F. K. Jorna