# @unified-latex/unified-latex-util-split

> Functions for modifying a unified-latex AST

Latest version **1.8.4** (published 2026-04-03) · MIT license · 0 weekly downloads

## Install

```sh
npm install @unified-latex/unified-latex-util-split
pnpm add @unified-latex/unified-latex-util-split
yarn add @unified-latex/unified-latex-util-split
bun add @unified-latex/unified-latex-util-split
```

## Health

**Score 60/100 (C)** — status: active.

Positive: has types; esm support; no vulnerabilities; high maintenance score.

Warnings: low downloads.

## Facts

| | |
|---|---|
| Version | 1.8.4 |
| Published | 2026-04-03 |
| First published | 2022-05-13 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Dependencies | 2 |
| Unpacked size | 22.8 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 127 |
| Author | Jason Siefken |
| Maintainers | siefkenj |
| Keywords | pegjs, latex, parser, prettier, unified-latex, unified |

## Links

- npm: https://www.npmjs.com/package/@unified-latex/unified-latex-util-split
- Repository: https://github.com/siefkenj/unified-latex
- Homepage: https://github.com/siefkenj/unified-latex#readme
- Issues: https://github.com/siefkenj/unified-latex/issues
- npm.io page: https://npm.io/package/@unified-latex/unified-latex-util-split

## Dependencies (2)

- [@unified-latex/unified-latex-types](https://npm.io/package/@unified-latex/unified-latex-types.md) ^1.8.4
- [@unified-latex/unified-latex-util-match](https://npm.io/package/@unified-latex/unified-latex-util-match.md) ^1.8.4

## Alternatives

- [babylon](https://npm.io/package/babylon.md) — 5.1M weekly downloads
- [csscolorparser](https://npm.io/package/csscolorparser.md) — 3.7M weekly downloads
- [expr-eval-fork](https://npm.io/package/expr-eval-fork.md) — 1.5M weekly downloads
- [@leeoniya/ufuzzy](https://npm.io/package/@leeoniya/ufuzzy.md) — 247.7K weekly downloads
- [xml-parser](https://npm.io/package/xml-parser.md) — 78.4K weekly downloads

## Recent versions

- 1.8.4 (latest) — 2026-04-03
- 1.8.0 — 2024-08-22
- 1.7.1 — 2024-03-19
- 1.7.0 — 2024-02-25
- 1.6.1 — 2024-02-18
- 1.6.0 — 2024-01-17
- 1.4.2 — 2023-09-30
- 1.4.0 — 2023-06-20
- 1.3.1 — 2023-03-05
- 1.3.0 — 2023-02-06
- 1.2.2 — 2022-12-15
- 1.2.1 — 2022-11-23
- 1.2.0 — 2022-11-13
- 1.1.0 — 2022-11-06
- 1.0.12 — 2022-06-03
- … 7 more at https://npm.io/package/@unified-latex/unified-latex-util-split/versions

## README

<!-- DO NOT MODIFY -->
<!-- This file was autogenerated by build-docs.ts -->
<!-- Edit the docstring in index.ts and regenerate -->
<!-- rather than editing this file directly. -->
# unified-latex-util-split

## What is this?

Functions to manipulate `unified-latex` Abstract Syntax Tree (AST).

## When should I use this?

If you want break apart or join an array of nodes based on a condition. For example,
this is used to split on `&` characters in the `align` environment.

## Install

```bash
npm install @unified-latex/unified-latex-util-split
```

This package contains both esm and commonjs exports. To explicitly access the esm export,
import the `.js` file. To explicitly access the commonjs export, import the `.cjs` file.

# Functions

## `arrayJoin(array, sep)`

Joins an array of arrays with the item `sep`

```typescript
function arrayJoin<T>(array: T[][], sep: T | T[]): T[];
```

**Parameters**

| Param | Type       |
| :---- | :--------- |
| array | `T[][]`    |
| sep   | `T \| T[]` |

## `splitOnCondition(nodes, splitFunc, options)`

Split a list of nodes based on whether `splitFunc` returns `true`.
If `onlySplitOnFirstOccurrence` is set to true in the `options` object, then
there will be at most two segments returned.

```typescript
function splitOnCondition(
  nodes: Ast.Node[],
  splitFunc: (node: Ast.Node) => boolean,
  options: { onlySplitOnFirstOccurrence?: boolean }
): { segments: Ast.Node[][]; separators: Ast.Node[] };
```

**Parameters**

| Param     | Type                              |
| :-------- | :-------------------------------- |
| nodes     | `Ast.Node[]`                      |
| splitFunc | `(node: Ast.Node) => boolean`     |
| options   | <span color='gray'>Omitted</span> |

## `splitOnMacro(ast, macroName)`

Split an array of AST nodes based on a macro. An object `{segments: [], macros: []}`
is returned. The original array is reconstructed as
`segments[0] + macros[0] + segments[1] + ...`.

```typescript
function splitOnMacro(
  ast: Ast.Node[],
  macroName: string | string[]
): { segments: Ast.Node[][]; macros: Ast.Macro[] };
```

**Parameters**

| Param     | Type                 |
| :-------- | :------------------- |
| ast       | `Ast.Node[]`         |
| macroName | `string \| string[]` |

`unsplitOnMacro({
    segments,
    macros,
})`
---

Does the reverse of `splitOnMacro`

```typescript
function unsplitOnMacro({
  segments,
  macros,
}: {
  segments: Ast.Node[][];
  macros: Ast.Node[] | Ast.Node[][];
}): Ast.Node[];
```

**Parameters**

| Param                                     | Type                              |
| :---------------------------------------- | :-------------------------------- |
| {&#xA;    segments,&#xA;    macros,&#xA;} | <span color='gray'>Omitted</span> |

---
_Source: https://npm.io/package/@unified-latex/unified-latex-util-split · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
