A minimal (La)TeX distribution powered by lux/luarocks and luaTeX.
- Create a project
# answer some questions of lx
lx new my-thesis
cd my-thesis
A lux.toml
will be created:
package = "my-thesis"
version = "0.1.0"
lua = "==5.3"
[description]
summary = "My thesis"
maintainer = "A TeX user"
labels = ["thesis"]
license = "GPL-3.0"
- Add some dependencies
# LaTeX support
lx add -b lualatex
# \usepackage{hyperref}
lx add -b hyperref
# \usepackage{graphicx}
lx add -b graphics-cfg
# \usepackage{tikz}
lx add -b pgf
# lua-open main.pdf
lx add -t lua-open
# lx add -b more packages ...
lux.toml
:
# ...
[build_dependencies]
lualatex = "X.Y.Z-1"
hyperref = "X.Y.Z-1"
graphics-cfg = "X.Y.Z-1"
pgf = "X.Y.Z-1"
[test_dependencies]
lua-open = "X.Y.Z-1"
- Edit your document
$EDITOR main.tex
- Tell
lx
how to build, install and open your document
lux.toml
:
# ...
[build]
type = "command"
build_command = "lualatex --interaction=nonstopmode main.tex"
[build.install.conf]
'../doc/main.pdf' = 'main.pdf'
[test]
type = "command"
command = "lua-open"
flags = ["main.pdf"]
- Build and view your document
lx build
lx test
This is your project structure:
$ tree -a
.
├── .lux # like node_modules/ or .venv/ :)
│ ├── .gitignore
│ └── 5.3 # pdf's dependencies are build dependencies not runtime
│ ├── bin
│ ├── build_dependencies
│ │ ├── .gitignore
│ │ └── 5.3
│ │ ├── bin
│ │ │ ├── lualatex # LaTeX compiler
│ │ │ └── texlua # Lua interpreter
│ │ ├── 1a043a1a092206fb664a8dd394bdf99e526af762fe7282c6ccf49bc0ec23521e-latex-base@2024.11.01-2
│ │ │ ├── etc
│ │ │ │ ├── conf
│ │ │ │ ├── doc
│ │ │ │ │ └── latex
│ │ │ │ │ └── base
│ │ │ │ │ ├── ...
│ │ │ │ │ ├── usrguide.pdf # RTFM
│ │ │ │ │ └── ...
│ │ │ │ └── tex
│ │ │ │ └── latex
│ │ │ │ └── base
│ │ │ │ ├── ...
│ │ │ │ ├── article.cls # \documentclass{article}
│ │ │ │ └── ...
│ │ │ ├── lib
│ │ │ ├── package.rockspec
│ │ │ └── src
│ │ │ └── ltluatex.lua
│ │ ├── 6fcffa0eeadc4a75dc246d6869dcfe79594d6e0114ece5b260b9216a3d40cdfb-amsfonts@3.04-1
│ │ │ ├── etc
│ │ │ │ ├── conf
│ │ │ │ ├── doc
│ │ │ │ │ └── fonts
│ │ │ │ │ └── amsfonts
│ │ │ │ │ ├── ...
│ │ │ │ │ └── README
│ │ │ │ ├── fonts
│ │ │ │ │ ├── afm
│ │ │ │ │ │ └── public
│ │ │ │ │ │ └── amsfonts
│ │ │ │ │ │ ├── cm # computer modern fonts
│ │ │ │ │ │ │ └── ...
│ │ │ │ │ │ ├── ...
│ │ │ │ │ │ └── symbols # math symbol fonts
│ │ │ │ │ │ └── ...
│ │ │ │ │ └── ... # more font types
│ │ │ │ └── tex
│ │ │ │ ├── latex
│ │ │ │ │ └── amsfonts
│ │ │ │ │ ├── amsfonts.sty # \usepackage{amsfonts}
│ │ │ │ │ └── ...
│ │ │ │ └── plain
│ │ │ │ └── amsfonts
│ │ │ │ ├── amssym.def
│ │ │ │ ├── amssym.tex # \input{amssym}
│ │ │ │ └── cyracc.def
│ │ │ ├── lib
│ │ │ ├── package.rockspec
│ │ │ └── src
│ │ ├── ... # more TeX packages
│ │ └── lux.lock
│ ├── XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-my-thesis@0.1.0-1
│ │ ├── etc
│ │ │ ├── conf
│ │ │ └── doc
│ │ │ └── main.pdf
│ │ ├── lib
│ │ └── src
│ ├── lux.lock
│ └── test_dependencies
│ ├── .gitignore
│ └── 5.3
│ ├── ...
│ └── bin
│ ├── lua-open
│ └── texlua
├── lux.lock # like package-lock.json or requirements.txt
├── lux.toml # like package.json or pyproject.toml
└── main.tex
See documents to know more.