Skip to content

Modernize: Next.js static site on LaTeX2JS 4.x - #2

Open
pyramation wants to merge 12 commits into
mainfrom
modernize
Open

Modernize: Next.js static site on LaTeX2JS 4.x#2
pyramation wants to merge 12 commits into
mainfrom
modernize

Conversation

@pyramation

Copy link
Copy Markdown
Contributor

Modernizes latex2js.com onto the Next.js static-export stack shared with constructive.io/danlynch.com, upgraded to the LaTeX2JS 4.x packages.

  • latex2js + latex2react 4.0.3 (pinned exact for now — the registry's newer versions depend on not-yet-published packages; a follow-up commit on this branch bumps to ^4.0.8 once the full set is on npm)
  • @latex2js/reactlatex2react and @latex2js/vuelatex2vue renames across install guides, JSON-LD, and SEO copy; Vue guide rewritten for Vue 3 / Nuxt 3
  • Static export with sitemap/robots/llms.txt generation and S3+CloudFront deploy scripts (distribution E2IV32FSPB7S79)

Tests: 11 passing.

🤖 Generated with Claude Code

pyramation and others added 12 commits August 16, 2026 22:34
Clean-slate rewrite of the static hand-written site onto the same
architecture as constructive.io/danlynch.com:

- Next.js 16 (Pages Router, static export) + React 19 + Tailwind
- JSON-LD knowledge graph (jsonldjs) with shared @id namespace:
  software:latex2js as mainEntity, org:constructive as publisher,
  per-page subgraph extraction injected via the common <Head>
- Per-route SEO registry with derived canonicals, next-seo defaults
- Post-build sitemap + robots.txt generation from exported HTML
- llms.txt + markdown twins for every example and install guide
- The 13 PSTricks examples (plus the community graph example) are now
  individual pages at /examples/<slug>, driven by content/examples/*.tex
  and rendered live by @latex2js/react from npm (committed 92KB bundle
  dropped)
- Installation guides as structured data driving /installation pages
- Jest graph-validation suite (missing refs, orphans, duplicates)
- Deploy pipeline preserved: S3 s3://latex2js.com + CloudFront
  invalidation + extensionless HTML copies

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The original website.css applied 'Arbutus Slab' (the slab-serif that
reads like Knuth's LaTeX defaults) to body; equations render in
Computer Modern via MathJax. Apply it site-wide and wire the
.math/.rm selectors from the latex2js stylesheet to the self-hosted
next/font face.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- latex2js 4.0.3 + latex2react 4.0.3 (pinned exact: the registry's newer
  4.0.7 has dependency ranges pointing at unpublished versions; bump to
  ^4.0.8 once the full set is published)
- @latex2js/react -> latex2react and @latex2js/vue -> latex2vue renames
  across the install guides, JSON-LD software nodes, and SEO copy
- Vue guide rewritten for the Vue 3 / Nuxt 3 plugin API

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The WebSite entity named org:constructive as its publisher, but this is
Dan Lynch's personal site rather than a Constructive product. Point the
publisher at person:danlynch and drop the Constructive organization from
the graph entirely (it is no longer referenced, so it would otherwise sit
as an orphan). One fewer entity in the emitted graph.
The modernize branch forked before the "colours both engines agree on"
work landed on the other site PR. The draggable-vector demo still named
xcolor's purple — which renders crimson in LaTeX but violet-ish in a
browser, so the same source drew a different shade in each engine — and
used the browser-only colour lightblue, which real LaTeX rejects outright.

Rename purple to violet (xcolor's violet is the #800080 shade both
engines agree on) and declare lightblue via
\definecolor{lightblue}{RGB}{173,216,230}, matching what the live site
already shows. The example file and the homepage essay now produce the
same colours in LaTeX2JS and in real LaTeX.
The software:mathapedia entity — the Mathapedia platform, an interactive
textbook web app — was tagged WebSite, the only entity of that type in an
otherwise software-flavoured graph. It is a web-delivered application, so
WebApplication is the accurate type, and it now matches mathapedia.com's
graph.
* origin/main:
  fix

# Conflicts:
#	assets/js/latex2html5.bundle.js
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant