Working in Citet
Compilation
Citet captures a project revision and compiles it to PDF in a separate LaTeX worker. The result records which source revision it used, so the workspace can show when the PDF is behind your current edits.
Compilers
Choose a compiler in Project settings → Compilation:
- →Tectonic
- the default for new projects. Uses the worker's installed package bundle and manages repeated passes and BibTeX internally.
- →pdfLaTeX
- the classic TeX Live engine, with latexmk managing repeated passes and the required BibTeX or biber step.
- →XeLaTeX
- a TeX Live engine for Unicode text and OpenType fonts, including documents using fontspec. Uses the same latexmk bibliography pipeline.
- →Shipout
- a native engine that produces PDF and, for Beamer projects, SVG slides with reveal steps, animations, and media. Motion and media are authored in LaTeX. Unsupported rendering operations appear as compile errors.
For documents using biblatex with biber, choose a TeX Live compiler. Font availability depends on the installed worker image.
Presentations
Citet detects \\documentclass{beamer} in your main file and opens a workspace with files, source, and slides. You can also choose the Presentation starter when creating a project. Your saved layout takes precedence over the automatic layout.
Compile, then click Present to open a separate audience view. Use the arrow keys or Space to advance, Home and End to jump, and F for full screen. The presenter keeps the build you opened while you continue editing. PDF engines show individual PDF pages; Shipout groups frames and reveal steps.
With Shipout, load shipout-motion and author animations such as\\FlyIn<2->[id=claim,from=left,duration=650]{Your claim}in the source. Load shipout-media for local media, for example\\ShipoutVideo[id=clip,width=10cm,height=5.625cm]{assets/clip.webm}. Upload media to your project. Playback follows browser autoplay rules; a Play button appears when autoplay is blocked.
Triggering a compile
- →Toolbar
- click the compile button in the workspace header.
- →Keyboard
- press
⌘S/Ctrl+Sor⌘↵/Ctrl+Enter. - →Command palette
- open
⌘K/Ctrl+Kand select Compile project.
Compile panel
- →Diagnostics
- errors and warnings from the latest compile. Click a diagnostic with a source location to navigate to it.
- →Logs
- captured compiler output and the engine log.
- →Summary
- compile status, source revision, compiler, and timing by phase. TeX Live engine and bibliography passes are grouped into the latexmk build phase.
Commands stop when they exceed the configured execution time or output limit. The report identifies those failures; logs are bounded and can be truncated.
Builds and caching
Each build uses a temporary directory that is removed afterwards. Intermediate files do not persist between builds. Citet can reuse completed artifacts when the source, compiler, and toolchain version match a previous successful build. Switching compilers changes the cache identity.
▶Worker configuration
Tectonic's package bundle is downloaded during the worker image build and stored at CITET_TECTONIC_BUNDLE_PATH. TeX Live is pinned by image digest. Operators should change LATEX_TOOLCHAIN_VERSION when upgrading engines, images, or bundles.
LATEX_COMMAND_TIMEOUT_MS defaults to 120000 (two minutes per command). LATEX_MAX_OUTPUT_BYTES defaults to 1048576 (1 MiB combined stdout/stderr per command). Engine log reads are also bounded.
Worker isolation
The Compose LaTeX worker runs as a non-root user with a read-only container filesystem, temporary writable storage, CPU and memory limits, and an internal network. Compiler subprocesses receive a restricted environment without application or storage credentials.
▶Compiler restrictions
Shell escape is disabled. Tectonic runs in untrusted mode; TeX Live usesopenin_any=p and openout_any=p. latexmk ignores project configuration files such as .latexmkrc. The worker's trusted configuration invokes compiler tools and package lookup without shell expansion of filenames.
Jobs use distinct work directories in the same worker container. They do not each receive a separate container or VM. Container resource settings apply to the worker as a whole. See self-hostingfor deployment configuration.