Pack
Version
Many TeX projects publish TeX package in CTAN or Github/Gitlab release if they have a git repository. Github release can tag version while CTAN cannot. Such as:
- https://github.com/latex3/latex2e/releases/download/release-2024-11-01-PL1/latex-graphics.tds.zip is for version 2024-11-01, we package it to 2024.11.01-1
- http://mirrors.ctan.org/install/macros/latex/contrib/hyperref.tds.zip is for latest version. we package it to scm-1
Version is useful to declare dependency relationship. We recommend stable version rather than source code managed version.
Formats
TeX packages have two formats:
- source package
*-ctan.zip, like lua's*.src.rockand python's sdist*.tar.gz, include*.dtsand*.ins - binary package
*.tds.zip, like lua's*.any.rockand python's*-any.whl, include*.clsand*.sty
We repack *.tds.zip if upstream provide else *-ctan.zip even git zip file
to *.src.rock.
Dependencies
*.tds.zip doesn't have meta information about packages. when we create
*.rockspec, we need to add it from CTAN.
CTAN doesn't provide dependence information. You need search it. e.g.,
tex/latex/base/ltnews.cls:
% ...
\IfFileExists{hyperref.sty}{%
\RequirePackage[hidelinks]{hyperref}}{}
% ...
hyperref is an optional dependency of latex-base.
Build Dependencies
Some TeX packages don't provide *.tds.zip. You have to build it from
*-ctan.zip or git zip.
luatex --interaction=nonstopmode foo.ins
add { 'luatex', 'latex-base' } to build_dependencies.