CTAN-O-MAT(1)
π NAME π
okay so bestie, ctan-o-mat β it's the little legend that validates and uploads a package for CTAN. yes, that's the whole vibe. π
This is the CTAN-O-MAT(1) manual page, written by Gerd Neugebauer, and she is ready to spill the tea. π«Ά
β¨ SYNOPSIS β¨
ctan-o-mat [options] [<package configuration>]
short, iconic, to the point. π
πΈ DESCRIPTION πΈ
So basically, this program is your β¨automation bestieβ¨ for uploading a package to the Comprehensive TeX Archive Network (<https://www.ctan.org>). Instead of you filling out that same Web form over and over like it's a group chat you're tired of, all the package deets come from a configuration file. Which means you can update it whenever, no cap. π₯
The info you provide gets validated in any case β always, no exceptions, periodt. If the validation succeeds and validation isn't the only thing you asked for, then the archive file you gave gets dropped into the incoming area of CTAN so the CTAN team can process it further. π
And regardless of what happens, every single finding from the validation gets reported at the end of the processing. Note this though: validation is the default, and an official submission has to be requested with the appropriate command line option. so don't be out here thinking it submitted when it didn't, iykyk. π
Also ctan-o-mat requires an Internet connection to the CTAN server. Even the validation pulls the known attributes and the basic constraints from the server. no wifi, no service. π
π CONFIGURATION π
The default configuration is read from a file with the same name as the current directory, plus the extension .pkg. That file name can be overwritten on the command line. easy. β¨
The configuration depends on the features currently supported by the CTAN server. And since those features can change over time, the configuration is not hard-coded in ctan-o-mat. If you want a fresh empty template of the configuration, just ask for it via the command line parameter --init. π
π OPTIONS π
okay this is the part where she eats. every flag, right here:
-h,--helpβ print this short summary about the usage, then exit the program. the classic "help meee" move. π-i,--initβ create an empty template for a configuration. blank canvas, main character energy. π¨--list licensesβ list the known licenses of CTAN to the standard output stream. Each license is represented as one line. The line contains the fields key, name, free indicator. Those fields are separated by tab characters. Afterwards the program terminates without processing any further arguments. tab-separated, very demure, very mindful. π--config <package configuration>,--pkg <package configuration>,--package <package configuration>β set the package configuration file. three names, one job, we love options. π-s,--submitβ upload the submission, validate it, and officially submit it to CTAN if the validation succeeds. this is the real one, bestie. π₯-v,--verboseβ print some more information during the processing (verbose mode). she's chatty and we respect it. π¬--versionβ print the version number of this program and exit. β¨--validate,-n,--noactionβ do not perform the final upload. The package is validated and the resulting messages are printed. look but don't touch. π<package>β this parameter is the name of a package configuration (see section CONFIGURATION) contained in a file. If not set otherwise, the package configuration defaults to the name of the current directory with.pkgappended. π¦
π ENVIRONMENT π
The following environment variables are recognized by ctan-o-mat. yes, she reads the room (the env). π
CTAN_O_MAT_URLβ the value is the URL prefix for the CTAN server to be contacted. The default ishttps://ctan.org/submit. The complete URL is constructed by appendingvalidate,upload, orfieldsto use the respective CTAN REST API. mix and match, slay. β
π§ CONNECTING VIA PROXIES π§
If you need to connect to the Internet via a proxy, then this can be achieved by setting some environment variables before running ctan-o-mat. To redirect the request via the proxy, simply define an environment variable http_proxy to point to the proxy host β including protocol and port as required.
β οΈ Note that the name of the environment variable is supposed to be in lower case. lowercase only, bestie, don't fight it. π
π AUTHOR π
Gerd Neugebauer (gene@gerd-neugebauer.de)
π BUGS π
- The program can not be used without a working connection to the Internet.
fr fr, offline = no ctan-o-mat. the vibe check fails immediately. π«Ά
and that's the whole page, bestie!! you understood it, you're literally so smart. πβ¨
this was ctan-o-mat (source/version ctan-o-mat, dated 2017-11-23, sitting pretty under the manual name CTAN-O-MAT(1)) β tysm for reading, go upload something iconic ππ¦πΈ
π¦ where this page comes from
- arch rolling: texlive-doc 2026.1-1 Β· GPL
- debian bookworm: texlive-extra-utils 2022.20230122-4
- debian trixie: texlive-extra-utils 2024.20250309-2
- fedora 43: texlive-ctan-o-mat 11:svn51578-93.fc43 Β· BSD-3-Clause
- fedora 43: texlive-ctan-o-mat 11:svn51578-95.fc43.1 Β· BSD-3-Clause
- fedora 44: texlive-ctan-o-mat 12:svn51578-105.fc44 Β· BSD-3-Clause
- fedora 44: texlive-ctan-o-mat 12:svn51578-111.fc44 Β· BSD-3-Clause
- opensuse-leap 16.0: texlive-ctan-o-mat-doc 2025.221.1.2svn51578-160000.3.1 Β· BSD-3-Clause
- ubuntu jammy: texlive-extra-utils 2021.20220204-1
- ubuntu noble: texlive-extra-utils 2023.20240207-1
- ubuntu questing: texlive-extra-utils 2024.20250309-2
- ubuntu resolute: texlive-extra-utils 2025.20260124-1
- ubuntu stonking: texlive-extra-utils 2026.20260711-2
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms