This repository contains the sources and generated files for my personal website. The canonical pages are written in GNU TeXmacs and exported as static HTML for GitHub Pages; there is no separate static-site generator such as Jekyll or Hugo.
The same material can be read as a conventional website or opened locally in TeXmacs, where the source documents retain their mathematical notation and structure.
The original organisation was adapted from the TeXmacs notes website.
src/contains the canonical TeXmacs pages.docs/contains the generated HTML and page-specific exported assets.resources/contains shared CSS, JavaScript, fonts, images, and the legacy publications bibliography.plugins/notes/contains the local TeXmacs style, packages, and Scheme code.notes-tools.scmgenerates the article index and Atom feed and starts the TeXmacs web export.tools/contains post-processing, tests, and the byte-preserving TeXmacs editing helper.store/contains files linked from the published pages.drafts/andworkbench.tmcontain unpublished working material.
The complete build architecture, including the responsibilities of each Scheme and TeXmacs package file, is described in INFRASTRUCTURE.md.
Install GNU TeXmacs, Git, and Python 3, then run:
./website.sh updateThis performs an incremental export. Use a full export after substantive source, style, bibliography, or exporter changes:
./website.sh buildThe launcher detects common macOS TeXmacs installations. For another
installation, set TEXMACS_BIN to the executable and, if necessary,
TEXMACS_PATH to the TeXmacs resource directory.
To preview the generated site, serve the repository root:
python3 -m http.server 8765 --bind 127.0.0.1Then open http://localhost:8765/docs/main.html.
The generated article index is src/list-articles.tm, and the Atom feed is
docs/notes.atom. For clean tracked pages, their dates come from Git author
history: the newest commit is the update date and the earliest commit is the
publication date. A modified or untracked page temporarily uses its filesystem
modification time. Rebuilding without content changes therefore leaves feed
dates stable.
src/teaching/sissa-2026/ holds the native notes and slides, their two TeXmacs
style packages, and the author's HTML CSS, scripts and icon. The normal build
exports these sources to docs/teaching/sissa-2026/, with MathJax enabled only
for this course. Images are regenerated from the embedded TeXmacs assets.
The postprocessor preserves the standalone contents panel and slide structure,
and adds metadata, course navigation and the website theme control.
The supplied style packages include the website stylesheet directly. A narrow
post-processing repair restores equation anchors omitted by TeXmacs' MathJax
export, using native reference metadata and rendered equation numbers. It
does not change equation content. Cross-links are checked before publication.
Copy revised native files byte for byte into this source folder. Use a full build after changing either style package; incremental export tracks document timestamps, not style dependencies. Do not copy hand-exported HTML over the generated pages. The author's standalone exports can be used for comparison.
PDFs are supplied exports, stored as store/sissa/2026/cqft_notes_LN.pdf and
cqft_slides_LN.pdf; the website build does not regenerate them. For lectures
3–7 the native notes are named cqft_lectureN.tm, and the supplied slide PDFs
have the suffix -print.pdf. Keep the course page links and revision dates in
sync. The individual supplements are discoverable through the course page and
sitemap; only the course page is listed in the article index and Atom feed.
Read AGENTS.md before making changes. Treat src/ as the source of
truth and regenerate the matching content under docs/; do not normally edit
generated HTML by hand.
Native TeXmacs .tm and .ts files use TeXmacs' Cork-based universal encoding,
not UTF-8. Edit them in TeXmacs or use the byte-preserving helper. Always test an
exact external replacement first:
python3 tools/patch_texmacs.py src/path/document.tm \
--replace 'old text' 'new text' --dry-runAfter editing, regenerate the site and run:
python3 -m unittest discover -s tools -p 'test_*.py'
git diff --check
git diff --text
git status --shortOpen this repository as the agent's workspace and give it a bounded change. A useful starting prompt is:
Read AGENTS.md in full. Change [page/topic] as follows: [specific request]. Work on canonical sources and preserve TeXmacs universal encoding; use tools/patch_texmacs.py for external native-file edits. Preserve unrelated changes, rebuild the affected output, run the repository checks, and report what you verified. Do not commit, push, or deploy unless I ask.
Review both the source and generated diffs, especially mathematics, citations, links, and accented text. Everything committed here may be published, so do not provide an agent with private material that is not authorised for publication.