# integramme - release candidate 0.9.0

`integramme` is a LaTeX package for typesetting staircase-style
logic-grid puzzles (integrammes / Einstein-style logic-grid puzzles).

Version 0.9.0 is the **first release candidate**. The public long-form API and
the ordinary drawing engine are frozen for the planned 1.0 release except for
serious defects. It includes the documented Einstein-riddle preset introduced
during the 0.8 cycle and the completed author/copyright metadata.

## Requirements

- LaTeX2e 2022-06-01 or newer
- TikZ

The package is regression-tested with pdfTeX, LuaTeX and XeTeX.

## Quick start

```latex
\documentclass{article}
\usepackage{integramme}

\begin{document}
\begin{integramme}
  \IntegrammeCategory{person}{Person}{
    alice={Alice},
    bruno={Bruno},
    clara={Clara}
  }
  \IntegrammeCategory{drink}{Drink}{
    tea={Tea},
    coffee={Coffee},
    juice={Juice}
  }
  \IntegrammeCategory{pet}{Pet}{
    cat={Cat},
    dog={Dog},
    rabbit={Rabbit}
  }
  \IntegrammeIndices{%
    \item Alice does not drink tea.
    \item The rabbit owner drinks coffee.
  }
\end{integramme}
\end{document}
```

See `integramme.pdf` for the user manual and `API.md` for the candidate stable
public API.


## Einstein preset

The classic five-houses puzzle can be produced directly:

```latex
\begin{integramme}[preset=einstein,preset-language=fr]
\end{integramme}
```

Use `preset-language=en` for English labels and clues, or add
`mode=solution` to print the complete solved grid. The preset is only a
convenience data set: it uses the same categories, clue list and solution-row
mechanisms as an ordinary user-authored puzzle.

## Public API

New documents should use the long-form interface:

- `\integrammeset{...}`
- `\begin{integramme}[...] ... \end{integramme}`
- `\IntegrammeCategory`
- `\IntegrammeIndices`
- `\IntegrammeYes` / `\IntegrammeNo`
- `\IntegrammeSolutionRow`

Legacy compact solution syntax, slash references and short `\Int...` aliases
remain available for compatibility, but are not part of the candidate stable
1.0 interface.

## Building from source

Generate the package file with DocStrip:

```text
latex integramme.ins
```

The source tree also supports `l3build`:

```text
l3build unpack
l3build check
l3build doc
l3build ctan
```

The standard `l3build` file is named `build.lua`.

## Files

- `integramme.dtx` - documented source and user manual
- `integramme.ins` - DocStrip installer
- `integramme.pdf` - compiled manual
- `integramme.sty` - generated development copy (not shipped in the CTAN source archive)
- `build.lua` - l3build configuration
- `API.md` - candidate stable API contract
- `CHANGELOG.md` - release history
- `TESTS.md` - regression-test notes
- `LICENSE.md` - licensing statement
- `example*.tex` - worked/minimal examples, including the Einstein puzzle

The development tree also contains prepublication material (`CTAN.md`,
`RELEASE.md`, `AUDIT.md` and `support/release-audit.py`). These files are for
maintainers and are not required by end users.

## Current limitations

- all categories must contain the same number of items;
- only the staircase layout is implemented;
- long slanted header labels are not automatically constrained to their own
  category block;
- internal identifiers should remain simple and should avoid `,` and `=`;
- the package is still pre-1.0.

## Release-candidate status

The technical CTAN layout is generated and checked. Jonathan LAFARGE is the
public author, copyright holder and CTAN maintainer. A public repository, bug
tracker or support URL may be added later; CTAN exposes these as optional
communication channels, so they are not blockers for this release candidate.
The uploader email is intentionally not stored in the source tree and can be
supplied privately at upload time. See `CTAN.md` and `RELEASE.md`.

## Authorship and AI assistance

Author and copyright holder: **Jonathan LAFARGE**. OpenAI ChatGPT was used as
an interactive development assistant for code drafting, refactoring, test
generation and documentation drafting/revision. The model used for the current
development cycle was **GPT-5.6 Sol** (August 2026). Final design choices,
review, testing and release responsibility remain with the human author.

## License

This material is subject to the LaTeX Project Public License 1.3c or later.
The work has LPPL maintenance status `author-maintained`; Jonathan LAFARGE is
the copyright holder and public package maintainer.
