srs-document/node_modules/@unified-latex/unified-latex-util-arguments/README.md
2025-03-24 15:42:48 +07:00

117 lines
3.4 KiB
Markdown

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