\documentclass[letterpaper,11pt]{article}

\usepackage[hmargin=1.1in,vmargin=1in]{geometry}
\usepackage{mathtools,unicode-math,microtype}
\usepackage{graphicx}
\usepackage{hyperref}
\usepackage{booktabs}
\usepackage{tabularx}
\usepackage{longtable}
\usepackage{array}
\usepackage{enumitem}
\usepackage{fancyvrb}
\usepackage{amsthm}
\usepackage{parskip}
\usepackage{lua-tikz3dtools}

\usetikzlibrary{arrows.meta,backgrounds,calc,decorations.pathreplacing,fit,positioning,shapes.geometric}

\setmainfont{Latin Modern Roman}
\setmathfont{Latin Modern Math}

\hypersetup{
	colorlinks = true,
	linkcolor = blue!50!black,
	urlcolor = blue!50!black,
	pdftitle = {lua-tikz3dtools Manual},
	pdfauthor = {Jasper Nice}
}

\fvset{
	fontsize = \small,
	frame = single,
	framesep = 2mm
}

\title{lua-tikz3dtools\\Manual}
\author{Jasper Nice}
\date{Version 3.1.0\\April 28, 2026}

\begin{document}

\maketitle

\begin{abstract}
lua-tikz3dtools is a LuaLaTeX package for building three-dimensional TikZ
illustrations from points, line segments, triangles, tessellated parametric
surfaces, and sampled solids. Its distinguishing feature is that it does not
ask the user to manually sort visible pieces: the package partitions intersecting
geometry where needed, applies user filters, performs occlusion sorting, and
then emits ordinary TikZ paths. This manual documents the public interface,
the Lua-expression model used by the keys, the transformation conventions, and
the practical limits of the rendering pipeline.
\end{abstract}

\tableofcontents

\input{sections/01-overview.tex}
\input{sections/02-getting-started.tex}
\input{sections/03-mental-model.tex}
\input{sections/04-lua-expressions.tex}
\input{sections/05-coordinates-and-transformations.tex}
\input{sections/06-objects-and-basic-primitives.tex}
\input{sections/07-parametric-geometry.tex}
\input{sections/08-lighting-styling-and-filters.tex}
\input{sections/09-command-reference.tex}
\input{sections/10-rendering-pipeline-and-limitations.tex}

\appendix

\input{sections/A-vector-and-matrix-cookbook.tex}
\input{sections/B-low-level-geometry-api.tex}

\end{document}