<!-- 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-trim

## What is this?

Functions to help modify a `unified-latex` Abstract Syntax Tree (AST).

## When should I use this?

If you want to remove whitespace from the ends of an array of nodes.

Note that whitespace can come from a `Ast.Whitespace` node or from an
`Ast.Comment` node that has leading whitespace. These functions take care
to deal with both situations.

## Install

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

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.

# Plugins

## `unifiedLatexTrimEnvironmentContents`

Unified plugin to trim the whitespace from the start/end of any environments, including
math environments.

### Usage

`unified().use(unifiedLatexTrimEnvironmentContents)`

### Type

`Plugin<void[], Ast.Root, Ast.Root>`

```typescript
function unifiedLatexTrimEnvironmentContents(): (tree: Ast.Root) => void;
```

## `unifiedLatexTrimRoot`

Unified plugin to trim the whitespace from the start/end of the root element.

### Usage

`unified().use(unifiedLatexTrimRoot)`

### Type

`Plugin<void[], Ast.Root, Ast.Root>`

```typescript
function unifiedLatexTrimRoot(): (tree: Ast.Root) => void;
```

# Functions

## `hasWhitespaceEquivalent(nodes)`

Returns whether the array has whitespace at the start/end. Comments with `leadingWhitespace === true`
are counted as whitespace. Other comments are ignored.

```typescript
function hasWhitespaceEquivalent(nodes: Ast.Node[]): {
  start: boolean;
  end: boolean;
};
```

**Parameters**

| Param | Type         |
| :---- | :----------- |
| nodes | `Ast.Node[]` |

## `trim(nodes)`

Trims whitespace and parbreaks from the start and end
of an array. The number of trimmed nodes is returned.
Special care is taken to preserve comments, though any whitespace
before the first comment(s) or after the last comment(s) is trimmed.

```typescript
function trim(nodes: Ast.Node[]): { trimmedStart: number; trimmedEnd: number };
```

**Parameters**

| Param | Type         |
| :---- | :----------- |
| nodes | `Ast.Node[]` |

## `trimEnd(nodes)`

Trim whitespace and parbreaks from the right of an array.

```typescript
function trimEnd(nodes: Ast.Node[]): { trimmedEnd: number };
```

**Parameters**

| Param | Type         |
| :---- | :----------- |
| nodes | `Ast.Node[]` |

## `trimStart(nodes)`

Trim whitespace and parbreaks from the left of an array.

```typescript
function trimStart(nodes: Ast.Node[]): { trimmedStart: number };
```

**Parameters**

| Param | Type         |
| :---- | :----------- |
| nodes | `Ast.Node[]` |
