From a5b5a79d40a990e7975b5b286aca97a28e798313 Mon Sep 17 00:00:00 2001 From: Script Raccoon Date: Sat, 16 May 2026 12:16:08 +0200 Subject: [PATCH 01/17] only need katex and markdown-it as dev deps --- package.json | 4 ++-- pnpm-lock.yaml | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index d22f26cb..98936081 100644 --- a/package.json +++ b/package.json @@ -39,6 +39,8 @@ "chokidar": "^5.0.0", "dotenv": "^17.3.1", "husky": "^9.1.7", + "katex": "^0.16.44", + "markdown-it": "^14.1.1", "prettier": "^3.8.1", "prettier-plugin-svelte": "^3.5.2", "svelte": "^5.55.7", @@ -57,8 +59,6 @@ "@octokit/app": "^16.1.2", "es6-crawler-detect": "^4.0.2", "ioredis": "^5.10.1", - "katex": "^0.16.44", - "markdown-it": "^14.1.1", "nodemailer": "^8.0.5", "sql-template-tag": "^5.2.1", "svelte-fa": "^4.0.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b50d0894..26688173 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -29,12 +29,6 @@ importers: ioredis: specifier: ^5.10.1 version: 5.10.1 - katex: - specifier: ^0.16.44 - version: 0.16.45 - markdown-it: - specifier: ^14.1.1 - version: 14.1.1 nodemailer: specifier: ^8.0.5 version: 8.0.7 @@ -84,6 +78,12 @@ importers: husky: specifier: ^9.1.7 version: 9.1.7 + katex: + specifier: ^0.16.44 + version: 0.16.45 + markdown-it: + specifier: ^14.1.1 + version: 14.1.1 prettier: specifier: ^3.8.1 version: 3.8.3 From 9af3868ee10c987343ae4b6d4062265740c7923e Mon Sep 17 00:00:00 2001 From: Script Raccoon Date: Fri, 15 May 2026 18:31:29 +0200 Subject: [PATCH 02/17] add route /content/[id], adjust foundations link --- src/components/Footer.svelte | 2 +- src/components/NavMobile.svelte | 2 +- src/routes/content/[id]/+page.server.ts | 9 +++++++++ src/routes/{foundations => content/[id]}/+page.svelte | 8 ++++---- src/routes/foundations/+page.server.ts | 6 ------ 5 files changed, 15 insertions(+), 12 deletions(-) create mode 100644 src/routes/content/[id]/+page.server.ts rename src/routes/{foundations => content/[id]}/+page.svelte (71%) delete mode 100644 src/routes/foundations/+page.server.ts diff --git a/src/components/Footer.svelte b/src/components/Footer.svelte index 3dca753a..c92d869d 100644 --- a/src/components/Footer.svelte +++ b/src/components/Footer.svelte @@ -31,7 +31,7 @@
  • - Foundations + Foundations
  • diff --git a/src/components/NavMobile.svelte b/src/components/NavMobile.svelte index 13c244cb..70a6368a 100644 --- a/src/components/NavMobile.svelte +++ b/src/components/NavMobile.svelte @@ -119,7 +119,7 @@
  • - Foundations + Foundations
  • diff --git a/src/routes/content/[id]/+page.server.ts b/src/routes/content/[id]/+page.server.ts new file mode 100644 index 00000000..41ae89c2 --- /dev/null +++ b/src/routes/content/[id]/+page.server.ts @@ -0,0 +1,9 @@ +import { get_rendered_content } from '$lib/server/rendering' +import { error } from '@sveltejs/kit' + +export const load = async (event) => { + const id = event.params.id + const content = get_rendered_content(id) + if (!content) error(404, 'Not Found') + return { content } +} diff --git a/src/routes/foundations/+page.svelte b/src/routes/content/[id]/+page.svelte similarity index 71% rename from src/routes/foundations/+page.svelte rename to src/routes/content/[id]/+page.svelte index 4f8dd24c..0be9d70f 100644 --- a/src/routes/foundations/+page.svelte +++ b/src/routes/content/[id]/+page.svelte @@ -1,12 +1,12 @@ - + {@html data.content} diff --git a/src/routes/foundations/+page.server.ts b/src/routes/foundations/+page.server.ts deleted file mode 100644 index 7fef77fd..00000000 --- a/src/routes/foundations/+page.server.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { get_rendered_content } from '$lib/server/rendering' - -export const load = async () => { - const content = get_rendered_content('foundations') - return { content } -} From 6ef42cc40ae3b5dee503a1d370ab0219b6843fe6 Mon Sep 17 00:00:00 2001 From: Script Raccoon Date: Fri, 15 May 2026 18:42:16 +0200 Subject: [PATCH 03/17] use placeholders to render formulas in markdown separately this way, in particular, we do not need to escape backslashes anymore. --- src/lib/content/foundations.md | 2 +- src/lib/server/rendering.ts | 34 +++++++++++++++++++++++++++------- 2 files changed, 28 insertions(+), 8 deletions(-) diff --git a/src/lib/content/foundations.md b/src/lib/content/foundations.md index dcb5d70a..e7507e9d 100644 --- a/src/lib/content/foundations.md +++ b/src/lib/content/foundations.md @@ -22,7 +22,7 @@ Just imagine three copies of ZFC embedded into each other, each representing a " ![visualization of three levels of size](/img/three-levels-of-size.webp) -The levels are not defined by cardinality alone. For example, $\\{ \mathrm{Set} \\}$ is a collection with just one element, but it is not a set (since otherwise $\mathrm{Set}$ would be a set). In particular, not every finite collection is a set. However, every finite collection is isomorphic to a set. +The levels are not defined by cardinality alone. For example, $\{\mathrm{Set}\}$ is a collection with just one element, but it is not a set (since otherwise $\mathrm{Set}$ would be a set). In particular, not every finite collection is a set. However, every finite collection is isomorphic to a set. In our framework, there is no way to group all hypercollections into a single mathematical object; for this, one would need a third Grothendieck universe $\mathrm{Set}^{++}$, but such a grouping is usually not required. diff --git a/src/lib/server/rendering.ts b/src/lib/server/rendering.ts index f35ddd13..1740c22e 100644 --- a/src/lib/server/rendering.ts +++ b/src/lib/server/rendering.ts @@ -3,6 +3,8 @@ import { is_object } from './utils' import MarkdownIt from 'markdown-it' import { MACROS } from './macros' +const MATH_REGEX = /\$\$(.*?)\$\$|\$(.*?)\$/gs + function render_formula( formula: string, options: { displayMode: boolean } = { displayMode: false }, @@ -20,10 +22,8 @@ function render_formula( }) } -const math_regex = /\$\$(.*?)\$\$|\$(.*?)\$/gs - function render_formulas(txt: string): string { - return txt.replace(math_regex, (_, display_formula, inline_formula) => { + return txt.replace(MATH_REGEX, (_, display_formula, inline_formula) => { if (display_formula !== undefined) { return render_formula(display_formula, { displayMode: true }) } @@ -57,15 +57,35 @@ export function render_nested_formulas(obj: T): T { const md = new MarkdownIt() -const content_dict = import.meta.glob('$lib/content/*.md', { +function render_content(txt: string): string { + const formulas: Record = {} + const with_placeholders = txt.replace( + MATH_REGEX, + (_, display_formula, inline_formula) => { + const placeholder = `@@MATH-${Object.keys(formulas).length}@@` + formulas[placeholder] = + display_formula === undefined + ? render_formula(inline_formula, { displayMode: false }) + : render_formula(display_formula, { displayMode: true }) + return placeholder + }, + ) + let html = md.render(with_placeholders) + for (const [placeholder, rendered] of Object.entries(formulas)) { + html = html.replaceAll(placeholder, rendered) + } + return html +} + +const content_dict: Record = import.meta.glob('$lib/content/*.md', { query: '?raw', import: 'default', eager: true, -}) as Record +}) export function get_rendered_content(file: string) { const key = `/src/lib/content/${file}.md` const txt = content_dict[key] - const html = md.render(txt) - return render_formulas(html) + if (!txt) return null + return render_content(txt) } From a1dfd183c5e08ed89dcd117936fdc38f020a538f Mon Sep 17 00:00:00 2001 From: Script Raccoon Date: Fri, 15 May 2026 19:07:49 +0200 Subject: [PATCH 04/17] extract metadata from markdown content --- package.json | 1 + pnpm-lock.yaml | 77 +++++++++++++++++++++++++ src/lib/content/foundations.md | 6 ++ src/lib/server/rendering.ts | 20 +++++-- src/routes/content/[id]/+page.server.ts | 2 +- src/routes/content/[id]/+page.svelte | 6 +- 6 files changed, 103 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index 98936081..a6fe16bf 100644 --- a/package.json +++ b/package.json @@ -38,6 +38,7 @@ "better-sqlite3": "^12.9.0", "chokidar": "^5.0.0", "dotenv": "^17.3.1", + "gray-matter": "^4.0.3", "husky": "^9.1.7", "katex": "^0.16.44", "markdown-it": "^14.1.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 26688173..d5d7783f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -75,6 +75,9 @@ importers: dotenv: specifier: ^17.3.1 version: 17.4.2 + gray-matter: + specifier: ^4.0.3 + version: 4.0.3 husky: specifier: ^9.1.7 version: 9.1.7 @@ -796,6 +799,9 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} @@ -916,6 +922,11 @@ packages: esm-env@1.2.2: resolution: {integrity: sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==} + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + esrap@2.2.5: resolution: {integrity: sha512-/yLB1538mag+dn0wsePTe8C0rDIjUOaJpMs2McodSzmM2msWcZsBSdRtg6HOBt0A/r82BN+Md3pgwSc/uWt2Ig==} peerDependencies: @@ -928,6 +939,10 @@ packages: resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} engines: {node: '>=6'} + extend-shallow@2.0.1: + resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} + engines: {node: '>=0.10.0'} + fast-content-type-parse@3.0.0: resolution: {integrity: sha512-ZvLdcY8P+N8mGQJahJV5G4U88CSvT1rP8ApL6uETe88MBXrBHAkZlSEySdUlyztF7ccb+Znos3TFqaepHxdhBg==} @@ -957,6 +972,10 @@ packages: github-from-package@0.0.0: resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} + gray-matter@4.0.3: + resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==} + engines: {node: '>=6.0'} + husky@9.1.7: resolution: {integrity: sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==} engines: {node: '>=18'} @@ -975,12 +994,20 @@ packages: resolution: {integrity: sha512-HuEDBTI70aYdx1v6U97SbNx9F1+svQKBDo30o0b9fw055LMepzpOOd0Ccg9Q6tbqmBSJaMuY0fB7yw9/vjBYCA==} engines: {node: '>=12.22.0'} + is-extendable@0.1.1: + resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} + engines: {node: '>=0.10.0'} + is-reference@3.0.3: resolution: {integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==} js-base64@3.7.8: resolution: {integrity: sha512-hNngCeKxIUQiEUN3GPJOkz4wF/YvdUdbNL9hsBcMQTkKzboD7T/q3OYOuuPZLUE6dBxSGpwhk5mwuDud7JVAow==} + js-yaml@3.14.2: + resolution: {integrity: sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==} + hasBin: true + json-with-bigint@3.5.8: resolution: {integrity: sha512-eq/4KP6K34kwa7TcFdtvnftvHCD9KvHOGGICWwMFc4dOOKF5t4iYqnfLK8otCRCRv06FXOzGGyqE8h8ElMvvdw==} @@ -988,6 +1015,10 @@ packages: resolution: {integrity: sha512-pQpZbdBu7wCTmQUh7ufPmLr0pFoObnGUoL/yhtwJDgmmQpbkg/0HSVti25Fu4rmd1oCR6NGWe9vqTWuWv3GcNA==} hasBin: true + kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + kleur@4.1.5: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} engines: {node: '>=6'} @@ -1213,6 +1244,10 @@ packages: safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + section-matter@1.0.0: + resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} + engines: {node: '>=4'} + semver@7.7.4: resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==} engines: {node: '>=10'} @@ -1235,6 +1270,9 @@ packages: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + sql-template-tag@5.2.1: resolution: {integrity: sha512-lFdvXCOqWhV40A7w4oQVDyuaNFb5yO+dhsHStZzOdtDJWCBWYv4+hhATK5nPpY5v/T1OMVcLMPeN4519qIyb9Q==} engines: {node: '>=14'} @@ -1245,6 +1283,10 @@ packages: string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + strip-bom-string@1.0.0: + resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==} + engines: {node: '>=0.10.0'} + strip-json-comments@2.0.1: resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} engines: {node: '>=0.10.0'} @@ -1928,6 +1970,10 @@ snapshots: acorn@8.16.0: {} + argparse@1.0.10: + dependencies: + sprintf-js: 1.0.3 + argparse@2.0.1: {} aria-query@5.3.1: {} @@ -2066,12 +2112,18 @@ snapshots: esm-env@1.2.2: {} + esprima@4.0.1: {} + esrap@2.2.5: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 expand-template@2.0.3: {} + extend-shallow@2.0.1: + dependencies: + is-extendable: 0.1.1 + fast-content-type-parse@3.0.0: {} fdir@6.5.0(picomatch@4.0.4): @@ -2091,6 +2143,13 @@ snapshots: github-from-package@0.0.0: {} + gray-matter@4.0.3: + dependencies: + js-yaml: 3.14.2 + kind-of: 6.0.3 + section-matter: 1.0.0 + strip-bom-string: 1.0.0 + husky@9.1.7: {} ieee754@1.2.1: {} @@ -2113,18 +2172,27 @@ snapshots: transitivePeerDependencies: - supports-color + is-extendable@0.1.1: {} + is-reference@3.0.3: dependencies: '@types/estree': 1.0.8 js-base64@3.7.8: {} + js-yaml@3.14.2: + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + json-with-bigint@3.5.8: {} katex@0.16.45: dependencies: commander: 8.3.0 + kind-of@6.0.3: {} + kleur@4.1.5: {} libsql@0.5.29: @@ -2337,6 +2405,11 @@ snapshots: safe-buffer@5.2.1: {} + section-matter@1.0.0: + dependencies: + extend-shallow: 2.0.1 + kind-of: 6.0.3 + semver@7.7.4: {} set-cookie-parser@3.1.0: {} @@ -2357,6 +2430,8 @@ snapshots: source-map-js@1.2.1: {} + sprintf-js@1.0.3: {} + sql-template-tag@5.2.1: {} standard-as-callback@2.1.0: {} @@ -2365,6 +2440,8 @@ snapshots: dependencies: safe-buffer: 5.2.1 + strip-bom-string@1.0.0: {} + strip-json-comments@2.0.1: {} svelte-check@4.4.8(picomatch@4.0.4)(svelte@5.55.7)(typescript@5.9.3): diff --git a/src/lib/content/foundations.md b/src/lib/content/foundations.md index e7507e9d..dc5f2c17 100644 --- a/src/lib/content/foundations.md +++ b/src/lib/content/foundations.md @@ -1,3 +1,9 @@ +--- +title: Foundations +description: How to make sense of categories in set theory +author: Martin Brandenburg +--- + ## Foundations In _CatDat_, we work with the following convenient set-theoretic foundation for category theory. diff --git a/src/lib/server/rendering.ts b/src/lib/server/rendering.ts index 1740c22e..4f9e542d 100644 --- a/src/lib/server/rendering.ts +++ b/src/lib/server/rendering.ts @@ -2,6 +2,7 @@ import katex from 'katex' import { is_object } from './utils' import MarkdownIt from 'markdown-it' import { MACROS } from './macros' +import matter from 'gray-matter' const MATH_REGEX = /\$\$(.*?)\$\$|\$(.*?)\$/gs @@ -57,9 +58,13 @@ export function render_nested_formulas(obj: T): T { const md = new MarkdownIt() -function render_content(txt: string): string { +function render_content>( + txt: string, +): { meta_data: T; html: string } { + const { data, content } = matter(txt) + const formulas: Record = {} - const with_placeholders = txt.replace( + const with_placeholders = content.replace( MATH_REGEX, (_, display_formula, inline_formula) => { const placeholder = `@@MATH-${Object.keys(formulas).length}@@` @@ -74,7 +79,8 @@ function render_content(txt: string): string { for (const [placeholder, rendered] of Object.entries(formulas)) { html = html.replaceAll(placeholder, rendered) } - return html + + return { meta_data: data as T, html } } const content_dict: Record = import.meta.glob('$lib/content/*.md', { @@ -83,9 +89,15 @@ const content_dict: Record = import.meta.glob('$lib/content/*.md eager: true, }) +type ContentMetaData = { + title: string + description: string + author?: string +} + export function get_rendered_content(file: string) { const key = `/src/lib/content/${file}.md` const txt = content_dict[key] if (!txt) return null - return render_content(txt) + return render_content(txt) } diff --git a/src/routes/content/[id]/+page.server.ts b/src/routes/content/[id]/+page.server.ts index 41ae89c2..16b60f1b 100644 --- a/src/routes/content/[id]/+page.server.ts +++ b/src/routes/content/[id]/+page.server.ts @@ -5,5 +5,5 @@ export const load = async (event) => { const id = event.params.id const content = get_rendered_content(id) if (!content) error(404, 'Not Found') - return { content } + return content } diff --git a/src/routes/content/[id]/+page.svelte b/src/routes/content/[id]/+page.svelte index 0be9d70f..6daaa1a6 100644 --- a/src/routes/content/[id]/+page.svelte +++ b/src/routes/content/[id]/+page.svelte @@ -2,13 +2,11 @@ import MetaData from '$components/MetaData.svelte' let { data } = $props() - - // TODO: extract title as metadata - + -{@html data.content} +{@html data.html} From 4fe7ec463d39984d00c56aa819b5c5d71c38c691 Mon Sep 17 00:00:00 2001 From: Script Raccoon Date: Sat, 16 May 2026 12:04:18 +0200 Subject: [PATCH 12/17] refactoring of rendering functions --- src/lib/server/formulas.ts | 55 +++++ src/lib/server/markdown.ts | 165 +++++++++++++++ src/lib/server/rendering.ts | 195 ------------------ .../[...ids]/+page.server.ts | 2 +- .../category-implication/[id]/+page.server.ts | 2 +- .../category-implications/+page.server.ts | 2 +- .../category-property/[id]/+page.server.ts | 2 +- src/routes/category/[id]/+page.server.ts | 2 +- src/routes/content/[id]/+page.server.ts | 2 +- src/routes/content/[id]/+page.svelte | 2 +- .../functor-implication/[id]/+page.server.ts | 2 +- .../functor-implications/+page.server.ts | 2 +- .../functor-property/[id]/+page.server.ts | 2 +- src/routes/functor/[id]/+page.server.ts | 2 +- src/routes/lemma/[id]/+page.server.ts | 2 +- 15 files changed, 232 insertions(+), 207 deletions(-) create mode 100644 src/lib/server/formulas.ts create mode 100644 src/lib/server/markdown.ts delete mode 100644 src/lib/server/rendering.ts diff --git a/src/lib/server/formulas.ts b/src/lib/server/formulas.ts new file mode 100644 index 00000000..fa5abc97 --- /dev/null +++ b/src/lib/server/formulas.ts @@ -0,0 +1,55 @@ +import katex from 'katex' +import { is_object } from './utils' +import { MACROS } from './macros' + +export const MATH_REGEX = /\$\$(.*?)\$\$|\$(.*?)\$/gs + +export function render_formula( + formula: string, + options: { displayMode: boolean } = { displayMode: false }, +): string { + if (formula.includes('\\emptyset')) { + console.warn( + `Warning: Use \\varnothing instead of \\emptyset.\nFormula: ${formula}`, + ) + } + + return katex.renderToString(formula, { + throwOnError: true, + macros: MACROS, + ...options, + }) +} + +function render_formulas(txt: string): string { + return txt.replace(MATH_REGEX, (_, display_formula, inline_formula) => { + if (display_formula !== undefined) { + return render_formula(display_formula, { displayMode: true }) + } + + return render_formula(inline_formula, { displayMode: false }) + }) +} + +export function render_nested_formulas(obj: T): T { + if (!obj) return obj + + if (typeof obj === 'string') { + const with_line_breaks = obj.replaceAll('\n', '
    ') + return render_formulas(with_line_breaks) as T + } + + if (Array.isArray(obj)) { + return obj.map(render_nested_formulas) as T + } + + if (is_object(obj)) { + const result: Record = {} + for (const key in obj) { + result[key] = render_nested_formulas(obj[key]) + } + return result as T + } + + return obj +} diff --git a/src/lib/server/markdown.ts b/src/lib/server/markdown.ts new file mode 100644 index 00000000..91af552c --- /dev/null +++ b/src/lib/server/markdown.ts @@ -0,0 +1,165 @@ +import MarkdownIt from 'markdown-it' +import matter from 'gray-matter' +import { MATH_REGEX, render_formula } from './formulas' + +const md = new MarkdownIt() + +// add id attribute to each heading +md.renderer.rules.heading_open = (tokens, idx, options, _, self) => { + const token = tokens[idx + 1] + const text = + token?.children + ?.filter((t) => t.type === 'text') + .map((t) => t.content) + .join('') ?? '' + const id = text.trim().replace(/\s+/g, '_').toLowerCase() + tokens[idx].attrSet('id', id) + return self.renderToken(tokens, idx, options) +} + +// open external links in new tab +md.renderer.rules.link_open = (tokens, idx, options, _, self) => { + const token = tokens[idx] + + const href_index = token.attrIndex('href') + if (href_index >= 0) { + const href = token.attrs?.[href_index]?.[1] + + if (href?.startsWith('https://') || href?.startsWith('http://')) { + token.attrSet('target', '_blank') + } + } + + return self.renderToken(tokens, idx, options) +} + +// add structure and classes to theorem environments +md.block.ruler.before( + 'fence', + 'theorem_environment', + (state, start_line, end_line, silent) => { + const start = state.bMarks[start_line] + state.tShift[start_line] + const max = state.eMarks[start_line] + const line = state.src.slice(start, max).trim() + + const match = line.match(/^:::\s*(lemma|theorem|proposition|corollary|claim)/i) + if (!match) return false + + const title = line.slice(3).trim() + + let next_line = start_line + 1 + + while (next_line < end_line) { + const nStart = state.bMarks[next_line] + state.tShift[next_line] + const nEnd = state.eMarks[next_line] + const text = state.src.slice(nStart, nEnd).trim() + + if (text === ':::') break + next_line++ + } + + if (silent) return true + + const body_lines = state.getLines( + start_line + 1, + next_line, + state.blkIndent, + true, + ) + + const body_html = md.renderInline(body_lines.trim()) + + const token = state.push('html_block', '', 0) + token.content = + `
    ` + + `${title}.` + + `${body_html}` + + `
    ` + + state.line = next_line + 1 + return true + }, +) + +/** + * Replaces the math formulas in a markdown text with placeholders and + * returns a dictionary with the rendered formulas. + */ +function preprocess_math(content: string) { + const formulas: Record = {} + + const with_placeholders = content.replace( + MATH_REGEX, + (_, display_formula, inline_formula) => { + const placeholder = `@@MATH-${Object.keys(formulas).length}@@` + + formulas[placeholder] = + display_formula === undefined + ? render_formula(inline_formula, { displayMode: false }) + : render_formula(display_formula, { displayMode: true }) + + return placeholder + }, + ) + + return { processed_content: with_placeholders, formulas } +} + +/** + * Replaces the placeholders with the rendered formulas. + */ +function postprocess_math(html: string, formulas: Record) { + for (const [placeholder, rendered] of Object.entries(formulas)) { + html = html.replaceAll(placeholder, rendered) + } + return html +} + +/** + * Renders markdown content and formulas of a given string + */ +function render_content>( + txt: string, +): { meta_data: T; html: string } { + const { data, content } = matter(txt) + + const { processed_content, formulas } = preprocess_math(content) + + const html = md.render(processed_content) + + const html_with_formulas = postprocess_math(html, formulas) + + return { meta_data: data as T, html: html_with_formulas } +} + +/** + * Names of stored markdown files + */ +export const content_ids = Object.keys(import.meta.glob('$lib/content/*.md')) + .map((path) => path.split('/').pop()?.replace('.md', '') ?? '') + .filter(Boolean) + +/** + * Dictionary mapping an id to the text content stored in the respective file + */ +const content_dict: Record = import.meta.glob('$lib/content/*.md', { + query: '?raw', + import: 'default', + eager: true, +}) + +type ContentMetaData = { + title: string + description: string + author?: string +} + +/** + * Returns the rendered content of a markdown file + */ +export function get_rendered_content(id: string) { + const key = `/src/lib/content/${id}.md` + const txt = content_dict[key] + if (!txt) return null + return render_content(txt) +} diff --git a/src/lib/server/rendering.ts b/src/lib/server/rendering.ts deleted file mode 100644 index 82a0c43a..00000000 --- a/src/lib/server/rendering.ts +++ /dev/null @@ -1,195 +0,0 @@ -import katex from 'katex' -import { is_object } from './utils' -import MarkdownIt from 'markdown-it' -import { MACROS } from './macros' -import matter from 'gray-matter' - -const MATH_REGEX = /\$\$(.*?)\$\$|\$(.*?)\$/gs - -function render_formula( - formula: string, - options: { displayMode: boolean } = { displayMode: false }, -): string { - if (formula.includes('\\emptyset')) { - console.warn( - `Warning: Use \\varnothing instead of \\emptyset.\nFormula: ${formula}`, - ) - } - - return katex.renderToString(formula, { - throwOnError: true, - macros: MACROS, - ...options, - }) -} - -function render_formulas(txt: string): string { - return txt.replace(MATH_REGEX, (_, display_formula, inline_formula) => { - if (display_formula !== undefined) { - return render_formula(display_formula, { displayMode: true }) - } - - return render_formula(inline_formula, { displayMode: false }) - }) -} - -export function render_nested_formulas(obj: T): T { - if (!obj) return obj - - if (typeof obj === 'string') { - const with_line_breaks = obj.replaceAll('\n', '
    ') - return render_formulas(with_line_breaks) as T - } - - if (Array.isArray(obj)) { - return obj.map(render_nested_formulas) as T - } - - if (is_object(obj)) { - const result: Record = {} - for (const key in obj) { - result[key] = render_nested_formulas(obj[key]) - } - return result as T - } - - return obj -} - -const md = new MarkdownIt() - -function slugify_heading(text: string): string { - return text.trim().replace(/\s+/g, '_').toLowerCase() -} - -md.renderer.rules.heading_open = (tokens, idx, options, _, self) => { - const token = tokens[idx + 1] - const text = - token?.children - ?.filter((t) => t.type === 'text') - .map((t) => t.content) - .join('') ?? '' - const id = slugify_heading(text) - tokens[idx].attrSet('id', id) - return self.renderToken(tokens, idx, options) -} - -md.renderer.rules.link_open = (tokens, idx, options, _, self) => { - const token = tokens[idx] - - const href_index = token.attrIndex('href') - if (href_index >= 0) { - const href = token.attrs?.[href_index]?.[1] - - if (href?.startsWith('https://') || href?.startsWith('http://')) { - token.attrSet('target', '_blank') - } - } - - return self.renderToken(tokens, idx, options) -} - -md.use((md) => { - md.block.ruler.before( - 'fence', - 'theorem_block', - (state, start_line, end_line, silent) => { - const start = state.bMarks[start_line] + state.tShift[start_line] - const max = state.eMarks[start_line] - const line = state.src.slice(start, max).trim() - - const match = line.match( - /^:::\s*(lemma|theorem|proposition|corollary|claim)\s*(\d*)$/i, - ) - if (!match) return false - - const type = match[1] - const number = match[2].trim() - - let next_line = start_line + 1 - - while (next_line < end_line) { - const nStart = state.bMarks[next_line] + state.tShift[next_line] - const nEnd = state.eMarks[next_line] - const text = state.src.slice(nStart, nEnd).trim() - - if (text === ':::') break - next_line++ - } - - if (silent) return true - - const title = number ? `${type} ${number}` : type - - const body_lines = state.getLines( - start_line + 1, - next_line, - state.blkIndent, - true, - ) - - const body_html = md.renderInline(body_lines.trim()) - - const token = state.push('html_block', '', 0) - token.content = - `
    ` + - `${title}. ` + - `${body_html}` + - `
    ` - - state.line = next_line + 1 - return true - }, - ) -}) - -function render_content>( - txt: string, -): { meta_data: T; html: string } { - const { data, content } = matter(txt) - - const formulas: Record = {} - const with_placeholders = content.replace( - MATH_REGEX, - (_, display_formula, inline_formula) => { - const placeholder = `@@MATH-${Object.keys(formulas).length}@@` - formulas[placeholder] = - display_formula === undefined - ? render_formula(inline_formula, { displayMode: false }) - : render_formula(display_formula, { displayMode: true }) - return placeholder - }, - ) - let html = md.render(with_placeholders) - for (const [placeholder, rendered] of Object.entries(formulas)) { - html = html.replaceAll(placeholder, rendered) - } - - return { meta_data: data as T, html } -} - -export const content_ids = Object.keys(import.meta.glob('$lib/content/*.md')) - .map((path) => path.split('/').pop()?.replace('.md', '') ?? '') - .filter(Boolean) - -export const content_dict: Record = import.meta.glob( - '$lib/content/*.md', - { - query: '?raw', - import: 'default', - eager: true, - }, -) - -type ContentMetaData = { - title: string - description: string - author?: string -} - -export function get_rendered_content(file: string) { - const key = `/src/lib/content/${file}.md` - const txt = content_dict[key] - if (!txt) return null - return render_content(txt) -} diff --git a/src/routes/category-comparison/[...ids]/+page.server.ts b/src/routes/category-comparison/[...ids]/+page.server.ts index 2c002f9f..a0fc5905 100644 --- a/src/routes/category-comparison/[...ids]/+page.server.ts +++ b/src/routes/category-comparison/[...ids]/+page.server.ts @@ -1,6 +1,6 @@ import { error } from '@sveltejs/kit' import { query } from '$lib/server/db.catdat' -import { render_nested_formulas } from '$lib/server/rendering' +import { render_nested_formulas } from '$lib/server/formulas' import { MAX_CATEGORIES_COMPARE } from '../compare.config' export const prerender = false diff --git a/src/routes/category-implication/[id]/+page.server.ts b/src/routes/category-implication/[id]/+page.server.ts index 25833370..8d72521a 100644 --- a/src/routes/category-implication/[id]/+page.server.ts +++ b/src/routes/category-implication/[id]/+page.server.ts @@ -1,6 +1,6 @@ import type { ImplicationDB, ImplicationDisplay } from '$lib/commons/types' import { query } from '$lib/server/db.catdat' -import { render_nested_formulas } from '$lib/server/rendering' +import { render_nested_formulas } from '$lib/server/formulas' import { display_implication } from '$lib/server/utils' import { error } from '@sveltejs/kit' import sql from 'sql-template-tag' diff --git a/src/routes/category-implications/+page.server.ts b/src/routes/category-implications/+page.server.ts index fca4f7cf..9c113349 100644 --- a/src/routes/category-implications/+page.server.ts +++ b/src/routes/category-implications/+page.server.ts @@ -1,4 +1,4 @@ -import { render_nested_formulas } from '$lib/server/rendering' +import { render_nested_formulas } from '$lib/server/formulas' import { query } from '$lib/server/db.catdat' import sql from 'sql-template-tag' import { error } from '@sveltejs/kit' diff --git a/src/routes/category-property/[id]/+page.server.ts b/src/routes/category-property/[id]/+page.server.ts index 2c0cd304..6e81c768 100644 --- a/src/routes/category-property/[id]/+page.server.ts +++ b/src/routes/category-property/[id]/+page.server.ts @@ -1,5 +1,5 @@ import { error } from '@sveltejs/kit' -import { render_nested_formulas } from '$lib/server/rendering' +import { render_nested_formulas } from '$lib/server/formulas' import { decode_property_ID } from '$lib/commons/property.url' import { batch } from '$lib/server/db.catdat' import sql from 'sql-template-tag' diff --git a/src/routes/category/[id]/+page.server.ts b/src/routes/category/[id]/+page.server.ts index 77bcbaca..d7ef5cfb 100644 --- a/src/routes/category/[id]/+page.server.ts +++ b/src/routes/category/[id]/+page.server.ts @@ -1,5 +1,5 @@ import { error } from '@sveltejs/kit' -import { render_nested_formulas } from '$lib/server/rendering' +import { render_nested_formulas } from '$lib/server/formulas' import { batch } from '$lib/server/db.catdat' import sql from 'sql-template-tag' import type { diff --git a/src/routes/content/[id]/+page.server.ts b/src/routes/content/[id]/+page.server.ts index c1401025..2403891e 100644 --- a/src/routes/content/[id]/+page.server.ts +++ b/src/routes/content/[id]/+page.server.ts @@ -1,4 +1,4 @@ -import { content_ids, get_rendered_content } from '$lib/server/rendering' +import { content_ids, get_rendered_content } from '$lib/server/markdown' import { error } from '@sveltejs/kit' import type { EntryGenerator } from './$types' diff --git a/src/routes/content/[id]/+page.svelte b/src/routes/content/[id]/+page.svelte index e4b0d273..ac5ffc59 100644 --- a/src/routes/content/[id]/+page.svelte +++ b/src/routes/content/[id]/+page.svelte @@ -25,6 +25,6 @@ :global(.theorem-title) { font-weight: 600; - margin-right: 0.25rem; + margin-right: 0.75rem; } diff --git a/src/routes/functor-implication/[id]/+page.server.ts b/src/routes/functor-implication/[id]/+page.server.ts index 4fffd789..40346ac3 100644 --- a/src/routes/functor-implication/[id]/+page.server.ts +++ b/src/routes/functor-implication/[id]/+page.server.ts @@ -1,4 +1,4 @@ -import { render_nested_formulas } from '$lib/server/rendering' +import { render_nested_formulas } from '$lib/server/formulas' import { query } from '$lib/server/db.catdat' import sql from 'sql-template-tag' import { error } from '@sveltejs/kit' diff --git a/src/routes/functor-implications/+page.server.ts b/src/routes/functor-implications/+page.server.ts index 9831c299..5c5f151c 100644 --- a/src/routes/functor-implications/+page.server.ts +++ b/src/routes/functor-implications/+page.server.ts @@ -1,4 +1,4 @@ -import { render_nested_formulas } from '$lib/server/rendering' +import { render_nested_formulas } from '$lib/server/formulas' import { query } from '$lib/server/db.catdat' import sql from 'sql-template-tag' import { error } from '@sveltejs/kit' diff --git a/src/routes/functor-property/[id]/+page.server.ts b/src/routes/functor-property/[id]/+page.server.ts index 7e285656..ea73b94a 100644 --- a/src/routes/functor-property/[id]/+page.server.ts +++ b/src/routes/functor-property/[id]/+page.server.ts @@ -6,7 +6,7 @@ import type { FunctorShort, } from '$lib/commons/types' import { batch } from '$lib/server/db.catdat' -import { render_nested_formulas } from '$lib/server/rendering' +import { render_nested_formulas } from '$lib/server/formulas' import { display_functor_implication, display_functor_property } from '$lib/server/utils' import { error } from '@sveltejs/kit' import sql from 'sql-template-tag' diff --git a/src/routes/functor/[id]/+page.server.ts b/src/routes/functor/[id]/+page.server.ts index e359a612..50f75998 100644 --- a/src/routes/functor/[id]/+page.server.ts +++ b/src/routes/functor/[id]/+page.server.ts @@ -5,7 +5,7 @@ import type { FunctorPropertyShort, } from '$lib/commons/types' import { batch } from '$lib/server/db.catdat' -import { render_nested_formulas } from '$lib/server/rendering' +import { render_nested_formulas } from '$lib/server/formulas' import { error } from '@sveltejs/kit' import sql from 'sql-template-tag' diff --git a/src/routes/lemma/[id]/+page.server.ts b/src/routes/lemma/[id]/+page.server.ts index 2d077771..cf479501 100644 --- a/src/routes/lemma/[id]/+page.server.ts +++ b/src/routes/lemma/[id]/+page.server.ts @@ -1,6 +1,6 @@ import type { CategoryShort, Lemma } from '$lib/commons/types' import { batch } from '$lib/server/db.catdat' -import { render_nested_formulas } from '$lib/server/rendering' +import { render_nested_formulas } from '$lib/server/formulas' import { error } from '@sveltejs/kit' import sql from 'sql-template-tag' From bbd252c0e8a5bed8f30d99a7303cb39095608c5b Mon Sep 17 00:00:00 2001 From: Script Raccoon Date: Fri, 15 May 2026 19:52:53 +0200 Subject: [PATCH 13/17] replace tex file about sifted colimits with markdown file --- .../catdat/data/categories/walking_pair.yaml | 2 +- .../walking_parallel_pair_sifted_colimit.md | 53 +++ src/routes/content/[id]/+page.svelte | 7 +- static/img/diagram-sifted-colimit.svg | 318 ++++++++++++++++++ static/img/diagram-sifted-colimit.tex | 31 ++ 5 files changed, 409 insertions(+), 2 deletions(-) create mode 100644 src/lib/content/walking_parallel_pair_sifted_colimit.md create mode 100644 static/img/diagram-sifted-colimit.svg create mode 100644 static/img/diagram-sifted-colimit.tex diff --git a/databases/catdat/data/categories/walking_pair.yaml b/databases/catdat/data/categories/walking_pair.yaml index d01cf598..9b8c7803 100644 --- a/databases/catdat/data/categories/walking_pair.yaml +++ b/databases/catdat/data/categories/walking_pair.yaml @@ -41,7 +41,7 @@ satisfied_properties: reason: The two morphisms $0 \rightrightarrows 1$ are clearly monomorphisms. - property: sifted colimits - reason: A proof can be found here. + reason: A proof can be found here. unsatisfied_properties: - property: strongly connected diff --git a/src/lib/content/walking_parallel_pair_sifted_colimit.md b/src/lib/content/walking_parallel_pair_sifted_colimit.md new file mode 100644 index 00000000..f6252f1b --- /dev/null +++ b/src/lib/content/walking_parallel_pair_sifted_colimit.md @@ -0,0 +1,53 @@ +--- +title: The walking parallel pair has sifted colimits +description: A proof of this fact is presented. +author: Yuto Kawase +--- + +## The walking parallel pair has sifted colimits + +We will prove that the [walking parallel pair](/category/walking_pair) $\{u,v \colon 0 \rightrightarrows 1\}$ has [sifted colimits](/category-property/sifted_colimits). + +Let $D \colon \C \to \{u,v \colon 0 \rightrightarrows 1\}$ be a functor from a sifted category. If the object $1$ is not contained in the image under $D$, the object $0$ gives a colimit of $D$ because the sifted category $\C$ is connected. +In what follows, we suppose that there is an object $c_0 \in \C$ such that $D(c_0)=1$. + +We first claim that for every object $c \in \C$ such that $D(c)=0$, there is a morphism $f \colon c \to x$ with $D(x)=1$; moreover, which of $u$ and $v$ such a morphism is sent to by $D$ is independent of the choice of $f$. +The existence of $f$ is easy. +Indeed, since $\C$ is sifted, there is a cospan $c \rightarrow x \leftarrow c_0$, and $D(x)=1$ follows from $D(c_0)=1$. + +To show the independence of the value of $D(f)$, suppose that there are morphisms $f \colon c \to x$ and $g \colon c \to y$ such that $D(f)=u$ and $D(g)=v$. +Since $\C$ is sifted, there is a cospan consisting of $p\colon x \rightarrow z$ and $q \colon z \leftarrow y$. +Since $\C$ is sifted again, two cospans $(p \circ f, q \circ g)$ and $(\id_c, \id_c)$ are connected to each other, that is, there are a zigzag consisting of + +- $s_i \colon d_{i-1} \rightarrow e_i$, +- $t_i \colon e_i \leftarrow d_i$ $(1 \le i \le n)$, and +- parallel pairs $(l_i,r_i) \colon c \rightrightarrows d_i$ $(0 \le i \le n)$ + +such that + +- $d_0=z$, +- $l_0=p \circ f$, +- $r_0=q \circ g$, +- $d_n=c$, +- $l_n=r_n=\id_c$, +- $s_i \circ l_{i-1} = t_i \circ l_i$, and +- $s_i \circ r_{i-1} = t_i \circ r_i$ $(1 \le i \le n)$. + +![diagram for equations above](/img/diagram-sifted-colimit.svg) + +Then, the equality $D(t_1) \circ D(l_1) = D(s_1) \circ D(l_0) = u$ implies that either $D(l_1)=u$ or $D(t_1)=u$ holds, while $D(t_1) \circ D(r_1) = D(s_1)\circ D(r_0) = v$ implies that either $D(r_1)=v$ or $D(t_1)=v$ holds. +However, the only possible combination is $D(l_1)=u$ together with $D(r_1)=v$, and by repeating this argument, we have $D(l_n)=u$ and $D(r_n)=v$, which is a contradiction. + +By the claim, each object $c \in \C$ can be classified exclusively into the following three cases: + +1. $D(c)=1$; +2. $D(c)=0$ and there is a morphism from itself sent to $u$ by $D$; +3. $D(c)=0$ and there is a morphism from itself sent to $v$ by $D$. + +Now, we have a cocone $(\alpha_c \colon D(c) \to 1)_{c \in \C}$ under $D$ by letting $\alpha_c \coloneqq \id_1$ if $c$ is classified into the first case, $\alpha_c \coloneqq u$ for the second case, and $\alpha_c \coloneqq v$ for the third case. +Moreover, this is a unique cocone under $D$: +If $\beta$ is another cocone, its vertex should be $1$ by the existence of $c_0$. +If $c \in \C$ is classified into the first case, $\beta_c$ should be the identity. +For the second case, taking a morphism $f \colon c \to x$ such that $D(f)=u$, we can obtain $\beta_c = \beta_x \circ D(f) = D(f) = u$. +Similarly, we have $\beta_c = v$ for the third case. +This concludes $\beta = \alpha$, and since there is no non-trivial endomorphism on the vertex $1$, $\alpha$ gives a colimit. diff --git a/src/routes/content/[id]/+page.svelte b/src/routes/content/[id]/+page.svelte index ac5ffc59..0aeddb7c 100644 --- a/src/routes/content/[id]/+page.svelte +++ b/src/routes/content/[id]/+page.svelte @@ -9,12 +9,17 @@ {@html data.html} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/static/img/diagram-sifted-colimit.tex b/static/img/diagram-sifted-colimit.tex new file mode 100644 index 00000000..4107d04c --- /dev/null +++ b/static/img/diagram-sifted-colimit.tex @@ -0,0 +1,31 @@ +\documentclass{standalone} +\usepackage{amsmath, amssymb, amsfonts, mathtools} +\usepackage{tikz} +\usepackage{tikz-cd} + +\begin{document} + +\begin{tikzcd}[column sep = 1.6em] +& & & & c +\ar[dllll,bend right=25,shift right=1,"l_0 = p\circ f"',pos=0.8] +\ar[dllll,bend right=25,shift left=1,"r_0 = q\circ g",pos=0.8] +\ar[dll,bend right=10,shift right=1,"l_1"'] +\ar[dll,bend right=10,shift left=1,"r_1"] +\ar[d,shift right=1,"l_2"'] +\ar[d,shift left=1,"r_2"] +\ar[drrrr,bend left=25,dash, shift left=0.75] +\ar[drrrr,bend left=25,dash, shift right=0.75] +\ar[drr,bend left=10,shift right=1,"l_{n-1}"{below left=-2}] +\ar[drr,bend left=10,shift left=1,"r_{n-1}"] +& & & & \\ [50pt] +z = d_0 \quad +& & d_1 & & d_2 & \cdots & d_{n-1} & & \quad d_n = c \\ +& +e_1 \ar[ul,leftarrow,"s_1"] \ar[ur,leftarrow,"t_1"'] +& & +e_2 \ar[ul,leftarrow,"s_2"] \ar[ur,leftarrow,"t_2"'] +& & & & +e_n \ar[ul,leftarrow,"s_n"] \ar[ur,leftarrow,"t_n"'] +& +\end{tikzcd} +\end{document} \ No newline at end of file From 45ffd11dc25dee44ac42a5914395c97407a88d9e Mon Sep 17 00:00:00 2001 From: Script Raccoon Date: Sun, 17 May 2026 00:30:02 +0200 Subject: [PATCH 14/17] replace SVG placeholders with svg content: make SVGs adjust to selected theme --- .../walking_parallel_pair_sifted_colimit.md | 2 +- src/lib/server/markdown.ts | 20 +++- src/routes/content/[id]/+page.svelte | 44 +++---- static/img/diagram-sifted-colimit.svg | 6 +- static/pdf/.gitignore | 9 -- .../walking_parallel_pair_sifted_colimit.pdf | Bin 149636 -> 0 bytes .../walking_parallel_pair_sifted_colimit.tex | 112 ------------------ 7 files changed, 47 insertions(+), 146 deletions(-) delete mode 100644 static/pdf/.gitignore delete mode 100644 static/pdf/walking_parallel_pair_sifted_colimit.pdf delete mode 100644 static/pdf/walking_parallel_pair_sifted_colimit.tex diff --git a/src/lib/content/walking_parallel_pair_sifted_colimit.md b/src/lib/content/walking_parallel_pair_sifted_colimit.md index f6252f1b..a67b6d58 100644 --- a/src/lib/content/walking_parallel_pair_sifted_colimit.md +++ b/src/lib/content/walking_parallel_pair_sifted_colimit.md @@ -33,7 +33,7 @@ such that - $s_i \circ l_{i-1} = t_i \circ l_i$, and - $s_i \circ r_{i-1} = t_i \circ r_i$ $(1 \le i \le n)$. -![diagram for equations above](/img/diagram-sifted-colimit.svg) +@@@SVG:/img/diagram-sifted-colimit.svg@@@ Then, the equality $D(t_1) \circ D(l_1) = D(s_1) \circ D(l_0) = u$ implies that either $D(l_1)=u$ or $D(t_1)=u$ holds, while $D(t_1) \circ D(r_1) = D(s_1)\circ D(r_0) = v$ implies that either $D(r_1)=v$ or $D(t_1)=v$ holds. However, the only possible combination is $D(l_1)=u$ together with $D(r_1)=v$, and by repeating this argument, we have $D(l_n)=u$ and $D(r_n)=v$, which is a contradiction. diff --git a/src/lib/server/markdown.ts b/src/lib/server/markdown.ts index 91af552c..22df5603 100644 --- a/src/lib/server/markdown.ts +++ b/src/lib/server/markdown.ts @@ -1,6 +1,8 @@ import MarkdownIt from 'markdown-it' import matter from 'gray-matter' import { MATH_REGEX, render_formula } from './formulas' +import path from 'node:path' +import fs from 'node:fs' const md = new MarkdownIt() @@ -115,6 +117,20 @@ function postprocess_math(html: string, formulas: Record) { return html } +/** + * Replaces SVG placeholders with file contents + */ +function insert_svg(content: string) { + const regex = /@@@SVG:([^@]+)@@@/g + + return content.replace(regex, (_, src: string) => { + if (!src.startsWith('/')) return '' + + const svg_path = path.resolve(`static${src}`) + return fs.readFileSync(svg_path, 'utf8') + }) +} + /** * Renders markdown content and formulas of a given string */ @@ -129,7 +145,9 @@ function render_content>( const html_with_formulas = postprocess_math(html, formulas) - return { meta_data: data as T, html: html_with_formulas } + const html_with_svg = insert_svg(html_with_formulas) + + return { meta_data: data as T, html: html_with_svg } } /** diff --git a/src/routes/content/[id]/+page.svelte b/src/routes/content/[id]/+page.svelte index 0aeddb7c..8ab4fb92 100644 --- a/src/routes/content/[id]/+page.svelte +++ b/src/routes/content/[id]/+page.svelte @@ -6,30 +6,34 @@ -{@html data.html} +
    + {@html data.html} +
    diff --git a/static/img/diagram-sifted-colimit.svg b/static/img/diagram-sifted-colimit.svg index c8b511e1..d27dd4b7 100644 --- a/static/img/diagram-sifted-colimit.svg +++ b/static/img/diagram-sifted-colimit.svg @@ -1,9 +1,9 @@ - - + + diff --git a/static/pdf/.gitignore b/static/pdf/.gitignore deleted file mode 100644 index 662623f7..00000000 --- a/static/pdf/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -# Files from Latex Workshop -*.aux -*.bbl -*.blg -*.fdb_latexmk -*.fls -*.log -*.synctex.gz -*.out \ No newline at end of file diff --git a/static/pdf/walking_parallel_pair_sifted_colimit.pdf b/static/pdf/walking_parallel_pair_sifted_colimit.pdf deleted file mode 100644 index f21415cbef24a7fae4896c2eeb36425803b395d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 149636 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 TX!xi4_>q0@EtKg~rCH=!gqkx7EbJd>!yPXPU6 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�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 EAGEh_`Tzg` diff --git a/static/pdf/walking_parallel_pair_sifted_colimit.tex b/static/pdf/walking_parallel_pair_sifted_colimit.tex deleted file mode 100644 index af0feabe..00000000 --- a/static/pdf/walking_parallel_pair_sifted_colimit.tex +++ /dev/null @@ -1,112 +0,0 @@ -\documentclass[a4paper,12pt,reqno]{amsart} -\usepackage[utf8]{inputenc} -\usepackage[top=25truemm,bottom=25truemm,left=20truemm,right=20truemm]{geometry} - -\usepackage{amsmath, amssymb, amsfonts, mathtools} -\usepackage{tikz-cd} - -\title{The walking parallel pair has sifted colimits} -\author{Yuto Kawase} -\date{\today} - -\begin{document} -\maketitle - -Let $D\colon\mathcal{C}\to \{u,v\colon 0 \rightrightarrows 1\}$ be a functor from a sifted category. -If the object $1$ is not contained in the image under $D$, the object $0$ gives a colimit of $D$ because the sifted category $\mathcal{C}$ is connected. -In what follows, we suppose that there is an object $c_0\in\mathcal{C}$ such that $D(c_0)=1$. - -We first claim that for every object $c\in\mathcal{C}$ such that $D(c)=0$, there is a morphism $f\colon c \to x$ with $D(x)=1$; moreover, which of $u$ and $v$ such a morphism is sent to by $D$ is independent of the choice of $f$. -The existence of $f$ is easy. -Indeed, since $\mathcal{C}$ is sifted, there is a cospan $c \rightarrow x \leftarrow c_0$, and $D(x)=1$ follows from $D(c_0)=1$. - -To show the independence of the value of $D(f)$, suppose that there are morphisms $f\colon c \to x$ and $g\colon c\to y$ such that $D(f)=u$ and $D(g)=v$. -Since $\mathcal{C}$ is sifted, there is a cospan consisting of $p\colon x \rightarrow z$ and $q\colon z \leftarrow y$. -Since $\mathcal{C}$ is sifted again, two cospans $(p\circ f, q\circ g)$ and $(\mathrm{id}_c, \mathrm{id}_c)$ are connected to each other, that is, there are a zigzag consisting of $s_i\colon d_{i-1} \rightarrow e_i$ and $t_i\colon e_i \leftarrow d_i$ $(1 \le i \le n)$ and parallel pairs $(l_i,r_i)\colon c \rightrightarrows d_i$ $(0 \le i \le n)$ such that $d_0=z$, $l_0=p\circ f$, $r_0=q\circ g$, $d_n=c$, $l_n=r_n=\mathrm{id}_c$, $s_i \circ l_{i-1} = t_i \circ l_i$, and $s_i \circ r_{i-1} = t_i \circ r_i$ $(1\le i\le n)$. -\begin{equation*} - \begin{tikzcd}[column sep = 1.6em] - &[-1.2em] - & - & - & - & - c - \ar[dllll,bend right=25,shift right=1,"l_0 = p\circ f"',pos=0.8] - \ar[dllll,bend right=25,shift left=1,"r_0 = q\circ g",pos=0.8] - \ar[dll,bend right=10,shift right=1,"l_1"'] - \ar[dll,bend right=10,shift left=1,"r_1"] - \ar[d,shift right=1,"l_2"'] - \ar[d,shift left=1,"r_2"] - \ar[drrrr,bend left=25,equal] - \ar[drr,bend left=10,shift right=1,"l_{n-1}"{below left=-2}] - \ar[drr,bend left=10,shift left=1,"r_{n-1}"] - & - & - & - & - &[-1.2em] - \\[30pt] - z - \ar[r,equal] - & - d_0 - & - & - d_1 - & - & - d_2 - & - \cdots - & - d_{n-1} - & - & - d_n - & - c - \ar[l,equal] - \\ - & - & - e_1 - \ar[ul,leftarrow,"s_1"] - \ar[ur,leftarrow,"t_1"'] - & - & - e_2 - \ar[ul,leftarrow,"s_2"] - \ar[ur,leftarrow,"t_2"'] - & - & - & - & - e_n - \ar[ul,leftarrow,"s_n"] - \ar[ur,leftarrow,"t_n"'] - & - & - \end{tikzcd} -\end{equation*} -Then, the equality $D(t_1) \circ D(l_1) = D(s_1)\circ D(l_0) = u$ implies that either $D(l_1)=u$ or $D(t_1)=u$ holds, while $D(t_1) \circ D(r_1) = D(s_1)\circ D(r_0) = v$ implies that either $D(r_1)=v$ or $D(t_1)=v$ holds. -However, the only possible combination is $D(l_1)=u$ together with $D(r_1)=v$, and by repeating this argument, we have $D(l_n)=u$ and $D(r_n)=v$, which is a contradiction. - -By the claim, each object $c\in\mathcal{C}$ can be classified exclusively into the following three cases: -\begin{enumerate} - \item - $D(c)=1$; - \item - $D(c)=0$ and there is a morphism from itself sent to $u$ by $D$; - \item - $D(c)=0$ and there is a morphism from itself sent to $v$ by $D$. -\end{enumerate} -Now, we have a cocone $(\alpha_c\colon D(c) \to 1)_{c\in\mathcal{C}}$ under $D$ by letting $\alpha_c\coloneqq \mathrm{id}_1$ if $c$ is classified into the first case, $\alpha_c\coloneqq u$ for the second case, and $\alpha_c\coloneqq v$ for the third case. -Moreover, this is a unique cocone under $D$: -If $\beta$ is another cocone, its vertex should be $1$ by the existence of $c_0$. -If $c\in\mathcal{C}$ is classified into the first case, $\beta_c$ should be the identity. -For the second case, taking a morphism $f\colon c\to x$ such that $D(f)=u$, we can obtain $\beta_c = \beta_x \circ D(f) = D(f) = u$. -Similarly, we have $\beta_c = v$ for the third case. -This concludes $\beta=\alpha$, and since there is no non-trivial endomorphism on the vertex $1$, $\alpha$ gives a colimit. - - -\end{document} From 0bf3bb7379ec4e7d2fe44cbb2a29188df2d81c6a Mon Sep 17 00:00:00 2001 From: Script Raccoon Date: Sun, 17 May 2026 00:35:01 +0200 Subject: [PATCH 15/17] qed symbol floats right --- src/lib/content/cocongruences_of_groups.md | 4 ++-- src/lib/content/comphaus_copresentable.md | 10 +++++----- src/lib/content/congruences_in_rel.md | 2 +- src/lib/server/markdown.ts | 2 +- src/routes/content/[id]/+page.svelte | 4 ++++ 5 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/lib/content/cocongruences_of_groups.md b/src/lib/content/cocongruences_of_groups.md index d6e46bac..cf295ff3 100644 --- a/src/lib/content/cocongruences_of_groups.md +++ b/src/lib/content/cocongruences_of_groups.md @@ -42,7 +42,7 @@ is injective. Indeed, if $b_1,b_2 \in B$ satisfy $A' b_1 = A' b_2$, then $b_1 b_ Therefore, we may extend $S$ to a system of representatives $S' \subseteq B'$ for the right $A'$-cosets in $B'$. Likewise, we may extend $T$ to a system of representatives $T' \subseteq C'$ for the right $A'$-cosets in $C'$. -With respect to these systems, an element $w \in B \sqcup_A C$ written in normal form as above remains in normal form after being mapped to $B' \sqcup_{A'} C'$. This shows that the induced map is injective. $\square$ +With respect to these systems, an element $w \in B \sqcup_A C$ written in normal form as above remains in normal form after being mapped to $B' \sqcup_{A'} C'$. This shows that the induced map is injective. $\square$ ::: Proposition 2 Let $\C$ be a balanced category with good pushouts of monomorphisms and equalizers of monomorphisms. Then every cocongruence in $\C$ is effective. @@ -97,7 +97,7 @@ Since $\C$ has good pushouts of monomorphisms, it suffices to verify that both s $$a = r \circ i_1 \circ a = r \circ i_2 \circ b = b.$$ -Thus, $a$ is simply a morphism equalizing $i_1$ and $i_2$, so it factors uniquely through $E \hookrightarrow X$. $\square$ +Thus, $a$ is simply a morphism equalizing $i_1$ and $i_2$, so it factors uniquely through $E \hookrightarrow X$. $\square$ ::: Corollary 3 Every cocongruence in the category $\Grp$ is effective. diff --git a/src/lib/content/comphaus_copresentable.md b/src/lib/content/comphaus_copresentable.md index d85512fe..332d6d9a 100644 --- a/src/lib/content/comphaus_copresentable.md +++ b/src/lib/content/comphaus_copresentable.md @@ -23,7 +23,7 @@ $$\textstyle E_f := \bigl\{ x \in \prod_{i \in \I} X_i \mid X_f(x_i) = x_j \bigr Then each $E_f$ is a closed subset. Next, we prove that the collection $\{ E_f : f \in \Mor(\I) \}$ has the finite intersection property, i.e. that $\bigcap_{f\in F} E_f$ is non-empty for every finite set $F \subseteq \Mor(\I)$. For $f\in F$ we write $f : i_f \to j_f$. Then the diagram with objects $J := \{ i_f \mid f \in F \} \cup \{ j_f \mid f \in F \}$ and morphisms $\{ f \mid f \in F \}$ has a cone with vertex $k \in \I$ and morphisms $g_i : k \to i$ for each $i \in J$. Now choose $y \in X_k$, and define $x \in \prod_{i \in \I} X_i$ such that $x_i = X_{g_i}(y)$ if $i \in J$, with arbitrary choices of $x_i \in X_i$ for all other $i$. We then see that $x \in \bigcap_{f\in F} E_f$, which finishes the proof of the claim. -Since $\prod_{i \in \I} X_i$ is compact, that implies that the intersection of all $E_f$ is non-empty. But that intersection is precisely $\lim_{i \in \I} X_i$. $\square$ +Since $\prod_{i \in \I} X_i$ is compact, that implies that the intersection of all $E_f$ is non-empty. But that intersection is precisely $\lim_{i \in \I} X_i$. $\square$ ::: Lemma 2 Suppose we have a cofiltered limit $X = \lim_{i\in \I} X_i$ in $\Top$. Note the topology on $X$ is the weak topology for the projections $p_i : X \to X_i$. Then the canonical subbasis of this topology on $X$ is closed under finite intersections. Thus, it agrees with the canonical basis of the topology on $X$. @@ -34,7 +34,7 @@ Suppose we have a finite collection of subbasic open sets of the form $U_n = p_{ $$\bigcap_{n=1}^N U_n = p_j^{-1} \left( \bigcap_{n=1}^N X_{f_n}^{-1}(V_n) \right),$$ -where the right hand side is again in the canonical subbasis. $\square$ +where the right hand side is again in the canonical subbasis. $\square$ ::: Proposition 3 The functor $\Hom({-}, [0, 1]) : \CompHaus^{\op} \to \Set$ is monadic. (Originally proved in [Dus69](#references)) @@ -55,7 +55,7 @@ with $r : B \to A$. We may assume that $i$ is a subspace inclusion map. We may u $$\Hom(B, [0,1]) ~\overset{f^*}{\underset{g^*}{\rightrightarrows}}~ \Hom(A, [0, 1]) \xrightarrow{i^*} \Hom(E, [0, 1])$$ -is a coequalizer diagram. We first define $s : \Hom(E,[0,1]) \to \Hom(A,[0,1])$ by choosing a Tietze extension of each continuous function $E \to [0,1]$. Now, for each $\varphi \in \Hom(A,[0,1])$, we can define a continuous function on $\im(f) \cup \im(g) \subseteq B$ to be $\varphi \circ r$ on $\im(f)$, and $s(i^*(\varphi))\circ r$ on $\im(g)$. Note that on the overlap $\im(f)\cap \im(g) = f(E) = g(E)$, the first expression gives $f(e) \mapsto \varphi(e)$, and the second expression gives $g(e) \mapsto s(i^*(\varphi))(e) = \varphi(e)$, so we have indeed given a well-defined function on $\im(f)\cup\im(g)$. Choosing a Tietze extension of this function to a function $B\to [0,1]$ for each $\varphi$, we get a map $t : \Hom(A,[0,1]) \to \Hom(B,[0,1])$. By construction, we have $i^* s = \id$, $f^* t = \id$, and $g^* t = s i^*$, so we have shown that the diagram above is a split coequalizer. $\square$ +is a coequalizer diagram. We first define $s : \Hom(E,[0,1]) \to \Hom(A,[0,1])$ by choosing a Tietze extension of each continuous function $E \to [0,1]$. Now, for each $\varphi \in \Hom(A,[0,1])$, we can define a continuous function on $\im(f) \cup \im(g) \subseteq B$ to be $\varphi \circ r$ on $\im(f)$, and $s(i^*(\varphi))\circ r$ on $\im(g)$. Note that on the overlap $\im(f)\cap \im(g) = f(E) = g(E)$, the first expression gives $f(e) \mapsto \varphi(e)$, and the second expression gives $g(e) \mapsto s(i^*(\varphi))(e) = \varphi(e)$, so we have indeed given a well-defined function on $\im(f)\cup\im(g)$. Choosing a Tietze extension of this function to a function $B\to [0,1]$ for each $\varphi$, we get a map $t : \Hom(A,[0,1]) \to \Hom(B,[0,1])$. By construction, we have $i^* s = \id$, $f^* t = \id$, and $g^* t = s i^*$, so we have shown that the diagram above is a split coequalizer. $\square$ This shows that $\CompHaus^{\op}$ is equivalent to the category of algebras over the monad $S \mapsto \Hom_{\CompHaus}([0, 1]^S, [0, 1])$. We may view such algebras as being models of the infinitary algebraic theory of all continuous functions $[0,1]^S \to [0,1]$. In fact, we can show that any such function only depends on countably many coordinates in the domain, so that operations of this theory will be generated by the continuous functions $[0,1]^\omega \to [0,1]$. Indeed, we get the following somewhat stronger result: @@ -78,7 +78,7 @@ Now each $D_n \setminus \im(X_f)$ is open and we have just shown such sets cover This shows the canonical map $$\textstyle \colim_{i\in \I^{\op}} \Hom(X_i, [0,1]) \to \Hom(\lim_{i\in I} X_i, [0,1])$$ -is injective. $\square$ +is injective. $\square$ ::: Corollary 5 The category $\CompHaus$ is locally $\aleph_1$-copresentable. @@ -93,7 +93,7 @@ followed by $$\Hom_{\CompHaus}({-}, [0,1]) : \CompHaus^{\op} \to \Set.$$ The first automatically preserves $\aleph_1$-filtered colimits (and in fact all colimits) since it has a right adjoint. The second one preserves $\aleph_1$-filtered colimits by the previous lemma. -Alternately, applying the general framework of Lawvere theories shows that $\CompHaus^{\op}$ is equivalent to the category of functors $\T \to \Set$ preserving countable products, where $\T$ is the full subcategory of $\CompHaus$ of all spaces $[0,1]^A$ where $A$ is countable. Note that $\T$ is essentially small. We thus reproduce a result from [Isb82](#references) which also provides a nice description of a small set of generators of the operations of the $\aleph_0$-ary algebraic theory. A more recent treatment in [MR17](#references) refines this by providing a nice axiomatization of the relations of that theory. $\square$ +Alternately, applying the general framework of Lawvere theories shows that $\CompHaus^{\op}$ is equivalent to the category of functors $\T \to \Set$ preserving countable products, where $\T$ is the full subcategory of $\CompHaus$ of all spaces $[0,1]^A$ where $A$ is countable. Note that $\T$ is essentially small. We thus reproduce a result from [Isb82](#references) which also provides a nice description of a small set of generators of the operations of the $\aleph_0$-ary algebraic theory. A more recent treatment in [MR17](#references) refines this by providing a nice axiomatization of the relations of that theory. $\square$ ### References diff --git a/src/lib/content/congruences_in_rel.md b/src/lib/content/congruences_in_rel.md index df661322..e5e1ac1e 100644 --- a/src/lib/content/congruences_in_rel.md +++ b/src/lib/content/congruences_in_rel.md @@ -96,4 +96,4 @@ $$ ::: -_Proof._ Suppose we have generalized elements $x_1, x_2 : U \to X$ with $e x_1 = e x_2$. Then $f t x_1 = x_1$ and $g t x_1 = s e x_1$, so the pair $x_1, s e x_1$ factors through $E$. Similarly, the pair $x_2, s e x_2$ factors through $E$. However, by the assumption, we also have $s e x_1 = s e x_2$. Therefore, since $E$ is a congruence, we conclude $x_1, x_2$ factors through $E$. $\square$ +_Proof._ Suppose we have generalized elements $x_1, x_2 : U \to X$ with $e x_1 = e x_2$. Then $f t x_1 = x_1$ and $g t x_1 = s e x_1$, so the pair $x_1, s e x_1$ factors through $E$. Similarly, the pair $x_2, s e x_2$ factors through $E$. However, by the assumption, we also have $s e x_1 = s e x_2$. Therefore, since $E$ is a congruence, we conclude $x_1, x_2$ factors through $E$. $\square$ diff --git a/src/lib/server/markdown.ts b/src/lib/server/markdown.ts index 22df5603..cba13ebe 100644 --- a/src/lib/server/markdown.ts +++ b/src/lib/server/markdown.ts @@ -4,7 +4,7 @@ import { MATH_REGEX, render_formula } from './formulas' import path from 'node:path' import fs from 'node:fs' -const md = new MarkdownIt() +const md = new MarkdownIt({ html: true }) // add id attribute to each heading md.renderer.rules.heading_open = (tokens, idx, options, _, self) => { diff --git a/src/routes/content/[id]/+page.svelte b/src/routes/content/[id]/+page.svelte index 8ab4fb92..ad7ac4fd 100644 --- a/src/routes/content/[id]/+page.svelte +++ b/src/routes/content/[id]/+page.svelte @@ -35,5 +35,9 @@ margin-right: 0.75rem; } } + + :global(span.qed) { + float: right; + } } From add279c0e4ed42c12304db0b50c9d13e209c7930 Mon Sep 17 00:00:00 2001 From: Script Raccoon Date: Sun, 17 May 2026 00:50:52 +0200 Subject: [PATCH 16/17] display author and increase line-height on content pages --- src/routes/content/[id]/+page.svelte | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/routes/content/[id]/+page.svelte b/src/routes/content/[id]/+page.svelte index ad7ac4fd..5c547f2b 100644 --- a/src/routes/content/[id]/+page.svelte +++ b/src/routes/content/[id]/+page.svelte @@ -10,8 +10,14 @@ {@html data.html} +{#if data.meta_data.author} +

    Author: {data.meta_data.author}

    +{/if} +