# prettier-plugin-latex A prettier plugin for formatting LaTeX documents. You can try it out online in the [playground](https://siefkenj.github.io/latex-parser-playground/) ## Intro Prettier is an opinionated code formatter. It enforces a consistent style by parsing your code and re-printing it with its own rules that take the maximum line length into account, wrapping code when necessary. This plugin adds support for the LaTex to Prettier. While TeX itself cannot be parsed without being executed, `prettier-plugin-latex` makes the assumption that your document uses "standard" LaTeX, and parses it to the best of its ability. ### Input ```latex \begin{enumerate} \item[55,4] Hi there \item$e^2$ is math mode! \[\begin{matrix}12&3^e\\pi&0\end{matrix}\] \end{enumerate} ``` ### Output ```latex \begin{enumerate} \item[55,4] Hi there \item $e^{2}$ is math mode! \[ \begin{matrix} 12 & 3^e \\ pi & 0 \end{matrix} \] \end{enumerate} ``` ## Install yarn: ```bash yarn add --dev prettier prettier-plugin-latex # or globally yarn global add prettier prettier-plugin-latex ``` npm: ```bash npm install --save-dev prettier prettier-plugin-latex # or globally npm install --global prettier prettier-plugin-latex ``` ## Use ### With Node.js If you installed prettier as a local dependency, you can add prettier as a script in your `package.json`, ```json { "scripts": { "prettier": "prettier" } } ``` and then run it via ```bash yarn run prettier path/to/file.tex --write # or npm run prettier path/to/file.tex --write ``` If you installed globally, run ```bash prettier path/to/file.tex --write ``` **Node:** For Prettier v3, automatic plugin resolution was removed, so you must specify the directory of `prettier-plugin-latex` manually with the `--plugin=...` command line argument. ### In the Browser This package exposes a `standalone.js` that wraps prettier and exports a `printPrettier` function that can be called as ```js printPrettier(YOUR_CODE, { // example option tabWidth: 2, }); ``` ## Options The standard Prettier options (such as `tabWidth`) can be used. ## Development To make a production build, run ``` npm run build ``` To develop, run ``` npm run watch ``` You can then execute Prettier with ``` prettier --plugin=./dist/prettier-plugin-latex.js ... ``` and the LaTeX plugin will load from the current directory. ### Code structure `prettier-plugin-latex` uses the [@unified-latex/unified-latex-prettier](https://github.com/siefkenj/unified-latex) library to parse the latex file and convert it to a prettier AST. This library is just a thin layer over `latex-ast-parser`