# ClutTeX: Process LaTeX document without cluttering your directory

Clut is a program to automatically process your document. If necessary, it re-runs program to resolve cross-references and everything.

One of its main feature is that, it does not clutter your working directory (but the final `.pdf` file is still brought for you).

Blog:

## Features

• Does not clutter your working directory with `.aux`, `.log`, etc. files.
• Does not prompt for input when there is a error.
• With p-like engines, automatically run dvipdfmx to produce PDF file.
• Automatically re-run to resolve cross-references and other things.
• Watch input files for change (requires an external program). [`--watch` option]
• Support for MakeIndex, , Biber, makeglossaries commands. [`--makeindex`, `--bibtex`, `--biber`, `--makeglossaries` options]

## Usage

`\$ cluttex -e pdflatex file.tex`

More general form:

`\$ cluttex [OPTIONS] [--] INPUT.tex`

See example/ for some examples.

## Install

Click [Clone or download] button on GitHub and [Download ZIP]. Unpack `cluttex-master.zip` and copy `bin/cluttex` (or `bin/cluttex.bat` on Windows) to somewhere in PATH.

## Command-line Options

• `-e`, `--engine=ENGINE` Specify which engine/format to use. `ENGINE` is one of the following: `pdflatex`, `pdftex`, `lualatex`, `luatex`, `luajittex`, `xelatex`, `xetex`, `latex`, `etex`, `tex`, `platex`, `eptex`, `ptex`, `uplatex`, `euptex`, `uptex`.
• `-o`, `--output=FILE` The name of output file. [default: `JOBNAME.FORMAT`]
• `--fresh` Clean intermediate files before running . Cannot be used with `--output-directory`.
• `--max-iterations=N` Maximum number of running to resolve cross-references. [default: 3]
• `--[no-]change-directory` Change the current working directory to the output directory when running .
• `--watch` Watch input files for change. Requires fswatch program or `inotifywait` program to be installed on Unix systems.
• `--color[=WHEN]` Make Clut's message colorful. `WHEN` is one of `always`, `auto`, or `never`. [default: `auto` if `--color` is omitted, `always` if `=WHEN` is omitted]
• `--includeonly=NAMEs` Insert `\includeonly{NAMEs}`.
• `--make-depends=FILE` Write dependencies as a Makefile rule.
• `--tex-option=OPTION` Pass `OPTION` to as a single option.
• `--tex-options=OPTIONs` Pass `OPTIONs` to as multiple options.
• `--dvipdfmx-option[s]=OPTION[s]` Same for dvipdfmx.
• `-h`, `--help` Print this message and exit.
• `-v`, `--version` Print version information and exit.
• `-V`, `--verbose` Be more verbose.
• `--print-output-directory` Print the output directory and exit.
• `--package-support=PKG1[,PKG2,...,PKGn]` Enable special support for shell-escaping packages. Currently supported packages are `minted` and `epstopdf`.
• `--engine-executable=COMMAND` The actual command to use.
• `--check-driver=DRIVER` Check that the correct driver file is loaded. `DRIVER` is one of `dvipdfmx`, `dvips`, `dvisvgm`. Can only be used with `--output-format=dvi`.

Options to run auxiliary programs:

• `--makeindex=COMMAND` Use MakeIndex program to process `.idx` files. (e.g. `--makeindex=makeindex`, or `--makeindex=mendex`)
• `--bibtex=COMMAND` Use program to produce `.bbl` file from `.aux` files. (e.g. `--bibtex=bibtex`, or `--bibtex=upbibtex`)
• `--biber[=COMMAND]` Use Biber program to produce `.bbl` file from `.bcf` file.
• `--makeglossaries[=COMMAND]` Use makeglossaries program to produce `.gls` file from `.glo` file.

-compatible options:

• `--[no-]shell-escape`
• `--shell-restricted`
• `--synctex=NUMBER`
• `--[no-]file-line-error` [default: yes]
• `--[no-]halt-on-error` [default: yes]
• `--interaction=STRING` (`STRING`=`batchmode`/`nonstopmode`/`scrollmode`/`errorstopmode`) [default: `nonstopmode`]
• `--jobname=STRING`
• `--fmt=FORMAT`
• `--output-directory=DIR` [default: somewhere in the temporary directory]
• `--output-format=FORMAT` Set output format (`pdf` or `dvi`). [default: `pdf`]

For -compatible options, single-hypen forms are allowed (e.g. `-synctex=1` in addition to `--synctex=1`).

If run as `cllualatex` or `clxelatex`, then the default engine is `lualatex` or `xelatex`, accordingly.