

TeXForge
Configuration
Last updated
Texforge has two configuration layers: a global user config (who you
are, your defaults) and a per-project manifest (project.toml).
Global configuration
Stored in ~/.texforge/config.toml (or
$XDG_CONFIG_HOME/texforge/config.toml). These values are used as
replaceable placeholders in templates.
Interactive setup:
texforge config
The wizard asks for:
- Name — your full name
- Email — your email address
- Institution — your institution/organization
- Language — fallback language for documents without an explicit
\usepackage[lang]{babel}orpolyglossiadeclaration (default:english). If a document declares its language in the preamble, that takes precedence.
Command-line interface:
texforge config list # view all settings
texforge config name # get a value
texforge config name "Ada Lovelace" # set a value
texforge config email "[email protected]"
texforge config institution "University of Tech"
texforge config language "spanish"
Project manifest — project.toml
Every texforge project has a project.toml at its root. It is generated
by texforge new / texforge init:
[document]
title = "My Thesis"
author = "Ada Lovelace"
template = "general"
[build]
entry = "main.tex"
# bibliography = "references.bib" # optional
# reproducible = true # optional: reproducible builds by default
# [diagrams]
# style = "editorial" # optional: document-wide diagram style default
# [highlight]
# theme = "github" # optional: code-listing palette ("github", "one-light")
# style = "light" # optional: document-wide listing style ("light", "light-mono", "dark", "dark-mono")
# lstlisting = true # optional: also rewrite \begin{lstlisting} blocks
# numbers = true # optional: number every code block
# font = "inconsolata" # optional: typewriter family for code blocks ("document", "inconsolata", "source-code-pro", "dejavu-sans-mono", "plex-mono", "fira-mono")
# caption_name = "Listing" # optional: override the listing name
# list_name = "List of Listings" # optional: override the list heading
# [highlight.by_lang] # optional: per-language styles, by name or alias
# bash = "dark"
| Key | Description |
|---|---|
document.title |
Document title |
document.author |
Document author |
document.template |
Template the project was created from |
build.entry |
Entry .tex file passed to the engine |
build.bibliography |
Optional .bib file used by the linter |
build.reproducible |
Optional: pin SOURCE_DATE_EPOCH so identical source plus the same Tectonic version yields an identical PDF. true uses a fixed default epoch; a number pins an explicit epoch (reproducible = 1700000000); false or absent keeps the default behaviour. Overridden by texforge build --reproducible when that flag is present. |
diagrams.style |
Optional: document-wide default diagram style preset (default, editorial, monochrome, technical; see Diagrams). A style= on the diagram environment itself overrides this. |
highlight.theme |
Optional: code-listing palette family (github, one-light; see Code listings). |
highlight.style |
Optional: document-wide listing style (light, light-mono, dark, dark-mono). A block’s style= option wins over it. |
highlight.by_lang |
Optional: per-language styles, keyed by language name or alias (bash = "dark"); wins over highlight.style for blocks in that language. |
highlight.lstlisting |
Optional: also rewrite \begin{lstlisting} blocks with native highlighting (default false — without it, listings users keep real listings.sty behaviour). |
highlight.numbers |
Optional: number every line of every code block unless the block sets numbers= itself. |
highlight.font |
Optional: typewriter family for code blocks (document, inconsolata, source-code-pro, dejavu-sans-mono, plex-mono, fira-mono; see Code listings). |
highlight.caption_name |
Optional: override the language-resolved listing name (Listing / Listado). |
highlight.list_name |
Optional: override the language-resolved list-of-listings heading. |