# unified-latex-util-environments ## What is this? Functions to report on/manipulate environments in a `unified-latex` Abstract Syntax Tree (AST). ## When should I use this? If you are working on the internals of `unified-latex-util-parse` or need to make a custom parser that treats environments differently. ## Install ```bash npm install @unified-latex/unified-latex-util-environments ``` 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 ## `unifiedLatexProcessEnvironments` Unified plugin to process environment content and attach arguments. ### Usage `unified().use(unifiedLatexProcessEnvironments[, options])` #### options ```typescript { environments: EnvInfoRecord; } ``` ### Type `Plugin<{ environments: EnvInfoRecord; }[], Ast.Root, Ast.Root>` ```typescript function unifiedLatexProcessEnvironments(options: { environments: EnvInfoRecord; }): (tree: Ast.Root) => void; ``` # Functions ## `processEnvironment(envNode, envInfo)` Performs any needed processing on the environment (as specified by `envInfo`) including attaching arguments and possibly manipulating the environment's body. ```typescript function processEnvironment( envNode: Ast.Environment, envInfo: Ast.EnvInfo ): void; ``` **Parameters** | Param | Type | | :------ | :---------------- | | envNode | `Ast.Environment` | | envInfo | `Ast.EnvInfo` | ## `processEnvironments(tree, environments)` Recursively search for and process the specified environments. Arguments are consumed according to the `signature` specified. The body is processed with the specified `processContent` function (if given). Any specified `renderInfo` is attached to the environment node. ```typescript function processEnvironments( tree: Ast.Ast, environments: Ast.EnvInfoRecord ): void; ``` **Parameters** | Param | Type | | :----------- | :------------------ | | tree | `Ast.Ast` | | environments | `Ast.EnvInfoRecord` |