Configuration
.texops.yaml
The project configuration file is created by tx init. A minimal file looks like this:
project_key: "aBcDeFgHiJkLmNoPqRsT12"
texlive: "2025"
compiler: "pdflatex"
documents:
- name: "paper"
main: "paper.tex"
Top-level keys
| Key | Required | Description |
|---|---|---|
project_key | no | Unique project identifier. Generated by tx init. If missing, tx build generates one and writes it back. |
texlive | yes | TeX Live distribution version, e.g. "2025". Supported versions: 2012 through 2025 (full yearly range). |
compiler | no | LaTeX compiler. Defaults to pdflatex. |
documents | yes | A non-empty list of document definitions. |
api_url | no | Override the API endpoint URL. |
Supported compilers: pdflatex, xelatex, lualatex, latex, platex, uplatex.
Document keys
Each entry in documents defines a single document to build:
| Key | Required | Description |
|---|---|---|
name | yes | Unique identifier for the document. |
main | yes | Path to the main .tex file, relative to directory (or the project root). |
directory | no | Subdirectory containing the document sources. The build runs relative to this directory. |
output | no | Output PDF path. Defaults to main with a .pdf extension (e.g. if directory is sub and main is doc.tex, the default output is sub/doc.pdf). |
compiler | no | Per-document compiler override. |
texlive | no | Per-document TeX Live version override. |
Multi-document example
project_key: "aBcDeFgHiJkLmNoPqRsT12"
texlive: "2025"
compiler: "xelatex"
documents:
- name: "paper"
main: "paper.tex"
- name: "appendix"
main: "main.tex"
directory: "appendix"
output: "appendix.pdf"
compiler: "lualatex"
texlive: "2019"
Build specific documents by name:
tx build paper appendix
Validation
texlivemust be a supported version year from"2012"to"2025". Invalid values cause a build error ("no alive instance available for the requested version").documentsmust be a non-empty list.- Each document must have a unique
nameand a non-emptymain. main,directory, andoutputmust not escape the project root.- Document-level
compilerandtexliveoverride the top-level values. - Configs with a top-level
mainkey (old format) are rejected with a migration hint.
File uploads
When you run tx build, the CLI syncs your project files to the server. Only files the server reports as missing are uploaded, using hash-based comparison. Only the project-root .gitignore is respected — nested .gitignore files in subdirectories are not used (see below).
Excluded by default
.git/, .texops.yaml, and .txignore are always excluded from uploads.
.gitignore
Only the project-root .gitignore is respected. Nested .gitignore files in subdirectories are not used.
.txignore
Add a .txignore file to exclude additional files from uploads. The syntax is the same as .gitignore, including negation patterns (!pattern).
Unlike .gitignore, .txignore files can appear in nested directories and apply with local scope.