Three changes. @c now takes its content literally, like @code -- it is the inline form and @code the block form of the same thing. The named close "c@" is required, and characters that are special in a target no longer break the file: @c a_b c@ renders correctly everywhere. The Markdown converter stops quoting inline code, since nothing needs protecting. @source_file is renamed @source_listing. Code read from a file is its own klammer; @code is only for a block written inline (its never- implemented :filename and :pattern options are removed). The new :marker P option lists the region between two lines that are exactly //P, so the source file declares its own extractable regions. A marker missing or not appearing exactly twice is an error, never a fallback. Rendering a document that sits in a large directory was paying a recursive walk of that directory's whole tree on every @eval -- 27 seconds for a document that renders in a third of one. The walk is now a non-recursive look decided once per directory. Assembled from dev commit 071b1b183de4. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2.3 KiB
Klammertext
Klammertext is a markup language that produces multiple output formats — HTML, LaTeX/PDF, and plain text — from a single source description. Its core engine, the Klammermachine, is written in C++; the Standard Klammer Set (SKS) adds a default library of formatting and document-structuring operators on top.
Installing
Installation guides are in doc/install/:
- Linux, from source —
doc/install/linux_source_install.md - macOS, from source —
doc/install/macos_source_install.md - Linux, container —
doc/install/linux_container_install.md - macOS, container —
doc/install/macos_container_install.md
Building from source
With a C++20 compiler and KLAMMERTEXT_HOME set to this directory:
make -C com
This builds the Klammermachine library (into lib/), the SKS components, and
the three commands — ktext, kdesc, kdiag (into bin/). See the
source-install guide for prerequisites (TeX Live for PDF output, Python, and so
on).
Working with an AI assistant
If you use a language model to help write Klammertext, give it
doc/klammertext_for_llm.md. It is a dense
reference written for a model rather than a person: the syntax, the things a
model is most likely to assume wrongly about it (Klammertext is not LaTeX,
Markdown, or Lisp, and reads oddly if you expect any of them), and how to ask
the kdesc and kdiag commands for the current state of the machine instead
of guessing.
Editor support
Editing support for Emacs, Sublime Text, Vim, and Visual Studio Code —
syntax highlighting, delimiter matching, structural reindentation, table
alignment, diagnostics — is in doc/edit/, together with the
shared implementation and the Klammertext language server they build on.
Provenance
This repository is a curated snapshot of Klammertext's private development tree, assembled by a manifest-driven script. Its history is a series of release snapshots, not a mirror of the development history, and files here are regenerated on each release — patches cannot be merged directly. Report problems (or send patches) to the author; accepted changes are applied to the development tree and appear in a following snapshot.
This snapshot was assembled from development commit 071b1b183de4.
License
See LICENSE.md.