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

## What is this?

Functions to help modify and attach arguments to macros in a `unified-latex` Abstract Syntax Tree (AST).

By default, TeX doesn't actually have a concept of macro "arguments". Instead, TeX searches the
tokens after a macro and processes them according to the macro's rules. However, LaTeX attempts
to make macros look like functions that accept arguments. To attach the "arguments" to a macro
node, the `unified-latex` AST needs to be reparsed and manipulated.

## When should I use this?

If you have custom macros that you want arguments attached to.

If you know ahead of time which macros need arguments attached to them, use `unified-latex-util-parse`
and pass in the appropriate macro info instead.

## Install

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

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

## `unifiedLatexAttachMacroArguments`

Unified plugin to attach macro arguments to the macros specified via the `macros`
option.

### Usage

`unified().use(unifiedLatexAttachMacroArguments[, options])`

#### options

```typescript
{ macros: MacroInfoRecord; }
```

### Type

`Plugin<{ macros: MacroInfoRecord; }[], Ast.Root, Ast.Root>`

```typescript
function unifiedLatexAttachMacroArguments(options: {
  macros: MacroInfoRecord;
}): (tree: Ast.Root) => void;
```

# Functions

## `getArgsContent(node)`

Returns the content of `args` for a macro or environment as an array. If an argument
was omitted (e.g., because it was an optional arg that wasn't included), then `null` is returned.

```typescript
function getArgsContent(node: Ast.Macro | Ast.Environment): Ast.Node[][];
```

**Parameters**

| Param | Type                           |
| :---- | :----------------------------- |
| node  | `Ast.Macro \| Ast.Environment` |

## `getNamedArgsContent(node, namedArgumentsFallback)`

Returns the content of `args` for a macro or environment as an object whose keys are the "names"
of each argument. These names of the arguments must be specified in the `_renderInfo` prop. If `_renderInfo`
does not contain a `namedArguments` array, then an empty object will be returned.

```typescript
function getNamedArgsContent(
  node: Ast.Macro | Ast.Environment,
  namedArgumentsFallback: readonly string[]
): Record<string, Ast.Node[]>;
```

**Parameters**

| Param                  | Type                           |
| :--------------------- | :----------------------------- |
| node                   | `Ast.Macro \| Ast.Environment` |
| namedArgumentsFallback | `readonly string[]`            |

## `gobbleSingleArgument(nodes, argSpec, startPos)`

Gobbles an argument of whose type is specified
by `argSpec` starting at the position `startPos`.
If an argument couldn't be found, `argument` will be `null`.

```typescript
function gobbleSingleArgument(
  nodes: Ast.Node[],
  argSpec: ArgSpec.Node,
  startPos: Number
): { argument: Ast.Argument | null; nodesRemoved: number };
```

**Parameters**

| Param    | Type           |
| :------- | :------------- |
| nodes    | `Ast.Node[]`   |
| argSpec  | `ArgSpec.Node` |
| startPos | `Number`       |
