Skip to main content

Configuration

.texops.yaml

The project configuration file is created by tx init. A minimal file looks like this:

.texops.yaml
project_key: "aBcDeFgHiJkLmNoPqRsT12"
texlive: "2025"
compiler: "pdflatex"

documents:
- name: "paper"
main: "paper.tex"

Top-level keys

KeyRequiredDescription
project_keynoUnique project identifier. Generated by tx init. If missing, tx build generates one and writes it back.
texliveyesTeX Live distribution version, e.g. "2025". Supported versions: 2012 through 2025 (full yearly range).
compilernoLaTeX compiler. Defaults to pdflatex.
documentsyesA non-empty list of document definitions.
api_urlnoOverride the API endpoint URL.

Supported compilers: pdflatex, xelatex, lualatex, latex, platex, uplatex.

Document keys

Each entry in documents defines a single document to build:

KeyRequiredDescription
nameyesUnique identifier for the document.
mainyesPath to the main .tex file, relative to directory (or the project root).
directorynoSubdirectory containing the document sources. The build runs relative to this directory.
outputnoOutput 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).
compilernoPer-document compiler override.
texlivenoPer-document TeX Live version override.

Multi-document example

.texops.yaml
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

  • texlive must be a supported version year from "2012" to "2025". Invalid values cause a build error ("no alive instance available for the requested version").
  • documents must be a non-empty list.
  • Each document must have a unique name and a non-empty main.
  • main, directory, and output must not escape the project root.
  • Document-level compiler and texlive override the top-level values.
  • Configs with a top-level main key (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

caution

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.