From 34492978f4c477245da3480f36a6d873b7139f72 Mon Sep 17 00:00:00 2001 From: Annwan Date: Fri, 23 Jan 2026 22:30:50 +0100 Subject: [PATCH] Typst rewrite part the fourth --- assets/favicon.ico | Bin 0 -> 894 bytes assets/scripts/pages/index.js | 12 + assets/scripts/pages/pagelist.js | 12 + assets/style/common.css | 879 +++++++++++++++++++++++++++---- assets/webring-button.png | Bin 0 -> 428 bytes build.ts | 4 +- src/index.typ | 24 +- src/pagelist.typ | 6 + src/worlds/Asteron/Mosici.typ | 411 ++++++++++----- templates/base.typ | 121 +++-- templates/gruvbox.tmTheme | 766 +++++++++++++++++++++++++++ templates/utils/lang-mos.typ | 12 +- 12 files changed, 1961 insertions(+), 286 deletions(-) create mode 100644 assets/favicon.ico create mode 100644 assets/scripts/pages/index.js create mode 100644 assets/scripts/pages/pagelist.js create mode 100644 assets/webring-button.png create mode 100644 src/pagelist.typ create mode 100644 templates/gruvbox.tmTheme diff --git a/assets/favicon.ico b/assets/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..62de34cebe78135873348cb863b07011aaddb7f0 GIT binary patch literal 894 zcmcJOO$vY@5JsPL0awv7T6MI}=XE?nmk1e { + let pages_data = await fetch("/index.json") + let pages = await pages_data.json() + let q = document.getElementsByClassName("random_page") + if (q.length > 0) { + q.item(0).addEventListener("click", async (ev) => { + let i = Math.floor(Math.random() * pages.length) + console.log(i, pages[i]) + window.location.href = `/${pages[i].id}.html` + }) + } +} \ No newline at end of file diff --git a/assets/scripts/pages/pagelist.js b/assets/scripts/pages/pagelist.js new file mode 100644 index 0000000..99c235e --- /dev/null +++ b/assets/scripts/pages/pagelist.js @@ -0,0 +1,12 @@ +window.onload = async () => { + let pages_data = await fetch("/index.json") + let pages = await pages_data.json() + pages.sort((a, b) => a.id.localeCompare(b.id, "en")) + let l = document.getElementById("list") + if (l) { + l.innerHTML = "" + for (let page of pages) { + l.innerHTML += `
  • ${page.id}: ${page.title}
  • ` + } + } +} \ No newline at end of file diff --git a/assets/style/common.css b/assets/style/common.css index 989ad8e..1f94591 100644 --- a/assets/style/common.css +++ b/assets/style/common.css @@ -2,8 +2,8 @@ /* Andika with the nahan script */ @font-face { - font-family: AndikaAmbNaran; - src: url("../fonts/AndikaAmbNaran.ttf") format("truetype"); + font-family: AndikaAmbNaran; + src: url("../fonts/AndikaAmbNaran.ttf") format("truetype"); } /* Iosevka Aile as the main font */ @@ -322,180 +322,863 @@ src: url('../fonts/WOFF2/IosevkaAile-HeavyItalic.woff2') format('woff2'), url('../fonts/TTF/IosevkaAile-HeavyItalic.ttf') format('truetype'); } +/****** Iosevka Slab for code ******/ + + +@font-face { + font-family: 'Iosevka Slab Web'; + font-display: swap; + font-weight: 100; + font-stretch: normal; + font-style: normal; + src: url('../fonts/WOFF2/IosevkaSlab-Thin.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-Thin.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web'; + font-display: swap; + font-weight: 100; + font-stretch: expanded; + font-style: normal; + src: url('../fonts/WOFF2/IosevkaSlab-ExtendedThin.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-ExtendedThin.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web'; + font-display: swap; + font-weight: 100; + font-stretch: normal; + font-style: oblique; + src: url('../fonts/WOFF2/IosevkaSlab-ThinOblique.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-ThinOblique.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web Oblique'; + font-display: swap; + font-weight: 100; + font-stretch: normal; + src: url('../fonts/WOFF2/IosevkaSlab-ThinOblique.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-ThinOblique.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web'; + font-display: swap; + font-weight: 100; + font-stretch: expanded; + font-style: oblique; + src: url('../fonts/WOFF2/IosevkaSlab-ExtendedThinOblique.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-ExtendedThinOblique.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web Oblique'; + font-display: swap; + font-weight: 100; + font-stretch: expanded; + src: url('../fonts/WOFF2/IosevkaSlab-ExtendedThinOblique.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-ExtendedThinOblique.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web'; + font-display: swap; + font-weight: 100; + font-stretch: normal; + font-style: italic; + src: url('../fonts/WOFF2/IosevkaSlab-ThinItalic.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-ThinItalic.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web'; + font-display: swap; + font-weight: 100; + font-stretch: expanded; + font-style: italic; + src: url('../fonts/WOFF2/IosevkaSlab-ExtendedThinItalic.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-ExtendedThinItalic.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web'; + font-display: swap; + font-weight: 200; + font-stretch: normal; + font-style: normal; + src: url('../fonts/WOFF2/IosevkaSlab-ExtraLight.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-ExtraLight.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web'; + font-display: swap; + font-weight: 200; + font-stretch: expanded; + font-style: normal; + src: url('../fonts/WOFF2/IosevkaSlab-ExtendedExtraLight.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-ExtendedExtraLight.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web'; + font-display: swap; + font-weight: 200; + font-stretch: normal; + font-style: oblique; + src: url('../fonts/WOFF2/IosevkaSlab-ExtraLightOblique.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-ExtraLightOblique.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web Oblique'; + font-display: swap; + font-weight: 200; + font-stretch: normal; + src: url('../fonts/WOFF2/IosevkaSlab-ExtraLightOblique.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-ExtraLightOblique.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web'; + font-display: swap; + font-weight: 200; + font-stretch: expanded; + font-style: oblique; + src: url('../fonts/WOFF2/IosevkaSlab-ExtendedExtraLightOblique.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-ExtendedExtraLightOblique.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web Oblique'; + font-display: swap; + font-weight: 200; + font-stretch: expanded; + src: url('../fonts/WOFF2/IosevkaSlab-ExtendedExtraLightOblique.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-ExtendedExtraLightOblique.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web'; + font-display: swap; + font-weight: 200; + font-stretch: normal; + font-style: italic; + src: url('../fonts/WOFF2/IosevkaSlab-ExtraLightItalic.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-ExtraLightItalic.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web'; + font-display: swap; + font-weight: 200; + font-stretch: expanded; + font-style: italic; + src: url('../fonts/WOFF2/IosevkaSlab-ExtendedExtraLightItalic.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-ExtendedExtraLightItalic.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web'; + font-display: swap; + font-weight: 300; + font-stretch: normal; + font-style: normal; + src: url('../fonts/WOFF2/IosevkaSlab-Light.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-Light.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web'; + font-display: swap; + font-weight: 300; + font-stretch: expanded; + font-style: normal; + src: url('../fonts/WOFF2/IosevkaSlab-ExtendedLight.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-ExtendedLight.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web'; + font-display: swap; + font-weight: 300; + font-stretch: normal; + font-style: oblique; + src: url('../fonts/WOFF2/IosevkaSlab-LightOblique.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-LightOblique.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web Oblique'; + font-display: swap; + font-weight: 300; + font-stretch: normal; + src: url('../fonts/WOFF2/IosevkaSlab-LightOblique.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-LightOblique.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web'; + font-display: swap; + font-weight: 300; + font-stretch: expanded; + font-style: oblique; + src: url('../fonts/WOFF2/IosevkaSlab-ExtendedLightOblique.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-ExtendedLightOblique.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web Oblique'; + font-display: swap; + font-weight: 300; + font-stretch: expanded; + src: url('../fonts/WOFF2/IosevkaSlab-ExtendedLightOblique.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-ExtendedLightOblique.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web'; + font-display: swap; + font-weight: 300; + font-stretch: normal; + font-style: italic; + src: url('../fonts/WOFF2/IosevkaSlab-LightItalic.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-LightItalic.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web'; + font-display: swap; + font-weight: 300; + font-stretch: expanded; + font-style: italic; + src: url('../fonts/WOFF2/IosevkaSlab-ExtendedLightItalic.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-ExtendedLightItalic.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web'; + font-display: swap; + font-weight: 400; + font-stretch: normal; + font-style: normal; + src: url('../fonts/WOFF2/IosevkaSlab-Regular.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-Regular.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web'; + font-display: swap; + font-weight: 400; + font-stretch: expanded; + font-style: normal; + src: url('../fonts/WOFF2/IosevkaSlab-Extended.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-Extended.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web'; + font-display: swap; + font-weight: 400; + font-stretch: normal; + font-style: oblique; + src: url('../fonts/WOFF2/IosevkaSlab-Oblique.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-Oblique.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web Oblique'; + font-display: swap; + font-weight: 400; + font-stretch: normal; + src: url('../fonts/WOFF2/IosevkaSlab-Oblique.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-Oblique.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web'; + font-display: swap; + font-weight: 400; + font-stretch: expanded; + font-style: oblique; + src: url('../fonts/WOFF2/IosevkaSlab-ExtendedOblique.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-ExtendedOblique.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web Oblique'; + font-display: swap; + font-weight: 400; + font-stretch: expanded; + src: url('../fonts/WOFF2/IosevkaSlab-ExtendedOblique.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-ExtendedOblique.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web'; + font-display: swap; + font-weight: 400; + font-stretch: normal; + font-style: italic; + src: url('../fonts/WOFF2/IosevkaSlab-Italic.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-Italic.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web'; + font-display: swap; + font-weight: 400; + font-stretch: expanded; + font-style: italic; + src: url('../fonts/WOFF2/IosevkaSlab-ExtendedItalic.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-ExtendedItalic.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web'; + font-display: swap; + font-weight: 500; + font-stretch: normal; + font-style: normal; + src: url('../fonts/WOFF2/IosevkaSlab-Medium.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-Medium.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web'; + font-display: swap; + font-weight: 500; + font-stretch: expanded; + font-style: normal; + src: url('../fonts/WOFF2/IosevkaSlab-ExtendedMedium.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-ExtendedMedium.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web'; + font-display: swap; + font-weight: 500; + font-stretch: normal; + font-style: oblique; + src: url('../fonts/WOFF2/IosevkaSlab-MediumOblique.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-MediumOblique.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web Oblique'; + font-display: swap; + font-weight: 500; + font-stretch: normal; + src: url('../fonts/WOFF2/IosevkaSlab-MediumOblique.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-MediumOblique.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web'; + font-display: swap; + font-weight: 500; + font-stretch: expanded; + font-style: oblique; + src: url('../fonts/WOFF2/IosevkaSlab-ExtendedMediumOblique.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-ExtendedMediumOblique.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web Oblique'; + font-display: swap; + font-weight: 500; + font-stretch: expanded; + src: url('../fonts/WOFF2/IosevkaSlab-ExtendedMediumOblique.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-ExtendedMediumOblique.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web'; + font-display: swap; + font-weight: 500; + font-stretch: normal; + font-style: italic; + src: url('../fonts/WOFF2/IosevkaSlab-MediumItalic.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-MediumItalic.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web'; + font-display: swap; + font-weight: 500; + font-stretch: expanded; + font-style: italic; + src: url('../fonts/WOFF2/IosevkaSlab-ExtendedMediumItalic.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-ExtendedMediumItalic.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web'; + font-display: swap; + font-weight: 600; + font-stretch: normal; + font-style: normal; + src: url('../fonts/WOFF2/IosevkaSlab-SemiBold.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-SemiBold.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web'; + font-display: swap; + font-weight: 600; + font-stretch: expanded; + font-style: normal; + src: url('../fonts/WOFF2/IosevkaSlab-ExtendedSemiBold.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-ExtendedSemiBold.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web'; + font-display: swap; + font-weight: 600; + font-stretch: normal; + font-style: oblique; + src: url('../fonts/WOFF2/IosevkaSlab-SemiBoldOblique.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-SemiBoldOblique.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web Oblique'; + font-display: swap; + font-weight: 600; + font-stretch: normal; + src: url('../fonts/WOFF2/IosevkaSlab-SemiBoldOblique.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-SemiBoldOblique.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web'; + font-display: swap; + font-weight: 600; + font-stretch: expanded; + font-style: oblique; + src: url('../fonts/WOFF2/IosevkaSlab-ExtendedSemiBoldOblique.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-ExtendedSemiBoldOblique.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web Oblique'; + font-display: swap; + font-weight: 600; + font-stretch: expanded; + src: url('../fonts/WOFF2/IosevkaSlab-ExtendedSemiBoldOblique.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-ExtendedSemiBoldOblique.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web'; + font-display: swap; + font-weight: 600; + font-stretch: normal; + font-style: italic; + src: url('../fonts/WOFF2/IosevkaSlab-SemiBoldItalic.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-SemiBoldItalic.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web'; + font-display: swap; + font-weight: 600; + font-stretch: expanded; + font-style: italic; + src: url('../fonts/WOFF2/IosevkaSlab-ExtendedSemiBoldItalic.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-ExtendedSemiBoldItalic.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web'; + font-display: swap; + font-weight: 700; + font-stretch: normal; + font-style: normal; + src: url('../fonts/WOFF2/IosevkaSlab-Bold.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-Bold.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web'; + font-display: swap; + font-weight: 700; + font-stretch: expanded; + font-style: normal; + src: url('../fonts/WOFF2/IosevkaSlab-ExtendedBold.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-ExtendedBold.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web'; + font-display: swap; + font-weight: 700; + font-stretch: normal; + font-style: oblique; + src: url('../fonts/WOFF2/IosevkaSlab-BoldOblique.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-BoldOblique.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web Oblique'; + font-display: swap; + font-weight: 700; + font-stretch: normal; + src: url('../fonts/WOFF2/IosevkaSlab-BoldOblique.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-BoldOblique.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web'; + font-display: swap; + font-weight: 700; + font-stretch: expanded; + font-style: oblique; + src: url('../fonts/WOFF2/IosevkaSlab-ExtendedBoldOblique.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-ExtendedBoldOblique.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web Oblique'; + font-display: swap; + font-weight: 700; + font-stretch: expanded; + src: url('../fonts/WOFF2/IosevkaSlab-ExtendedBoldOblique.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-ExtendedBoldOblique.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web'; + font-display: swap; + font-weight: 700; + font-stretch: normal; + font-style: italic; + src: url('../fonts/WOFF2/IosevkaSlab-BoldItalic.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-BoldItalic.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web'; + font-display: swap; + font-weight: 700; + font-stretch: expanded; + font-style: italic; + src: url('../fonts/WOFF2/IosevkaSlab-ExtendedBoldItalic.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-ExtendedBoldItalic.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web'; + font-display: swap; + font-weight: 800; + font-stretch: normal; + font-style: normal; + src: url('../fonts/WOFF2/IosevkaSlab-ExtraBold.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-ExtraBold.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web'; + font-display: swap; + font-weight: 800; + font-stretch: expanded; + font-style: normal; + src: url('../fonts/WOFF2/IosevkaSlab-ExtendedExtraBold.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-ExtendedExtraBold.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web'; + font-display: swap; + font-weight: 800; + font-stretch: normal; + font-style: oblique; + src: url('../fonts/WOFF2/IosevkaSlab-ExtraBoldOblique.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-ExtraBoldOblique.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web Oblique'; + font-display: swap; + font-weight: 800; + font-stretch: normal; + src: url('../fonts/WOFF2/IosevkaSlab-ExtraBoldOblique.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-ExtraBoldOblique.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web'; + font-display: swap; + font-weight: 800; + font-stretch: expanded; + font-style: oblique; + src: url('../fonts/WOFF2/IosevkaSlab-ExtendedExtraBoldOblique.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-ExtendedExtraBoldOblique.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web Oblique'; + font-display: swap; + font-weight: 800; + font-stretch: expanded; + src: url('../fonts/WOFF2/IosevkaSlab-ExtendedExtraBoldOblique.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-ExtendedExtraBoldOblique.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web'; + font-display: swap; + font-weight: 800; + font-stretch: normal; + font-style: italic; + src: url('../fonts/WOFF2/IosevkaSlab-ExtraBoldItalic.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-ExtraBoldItalic.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web'; + font-display: swap; + font-weight: 800; + font-stretch: expanded; + font-style: italic; + src: url('../fonts/WOFF2/IosevkaSlab-ExtendedExtraBoldItalic.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-ExtendedExtraBoldItalic.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web'; + font-display: swap; + font-weight: 900; + font-stretch: normal; + font-style: normal; + src: url('../fonts/WOFF2/IosevkaSlab-Heavy.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-Heavy.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web'; + font-display: swap; + font-weight: 900; + font-stretch: expanded; + font-style: normal; + src: url('../fonts/WOFF2/IosevkaSlab-ExtendedHeavy.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-ExtendedHeavy.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web'; + font-display: swap; + font-weight: 900; + font-stretch: normal; + font-style: oblique; + src: url('../fonts/WOFF2/IosevkaSlab-HeavyOblique.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-HeavyOblique.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web Oblique'; + font-display: swap; + font-weight: 900; + font-stretch: normal; + src: url('../fonts/WOFF2/IosevkaSlab-HeavyOblique.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-HeavyOblique.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web'; + font-display: swap; + font-weight: 900; + font-stretch: expanded; + font-style: oblique; + src: url('../fonts/WOFF2/IosevkaSlab-ExtendedHeavyOblique.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-ExtendedHeavyOblique.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web Oblique'; + font-display: swap; + font-weight: 900; + font-stretch: expanded; + src: url('../fonts/WOFF2/IosevkaSlab-ExtendedHeavyOblique.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-ExtendedHeavyOblique.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web'; + font-display: swap; + font-weight: 900; + font-stretch: normal; + font-style: italic; + src: url('../fonts/WOFF2/IosevkaSlab-HeavyItalic.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-HeavyItalic.ttf') format('truetype'); +} + +@font-face { + font-family: 'Iosevka Slab Web'; + font-display: swap; + font-weight: 900; + font-stretch: expanded; + font-style: italic; + src: url('../fonts/WOFF2/IosevkaSlab-ExtendedHeavyItalic.woff2') format('woff2'), url('../fonts/TTF/IosevkaSlab-ExtendedHeavyItalic.ttf') format('truetype'); +} + + /****** basics ******/ :root { - --bg: #282828; - --bg-accent: #504945; - --fg: #ebdbb2; - --fg-disabled: #bdae93; - --accent: #fe8019; - --note: #b8bb26; - --info: #83a598; - --warn: #fabd2f; - --error: #fb4934; - --font-main: Iosevka Aile Web, sans-serif; - --font-mono: Iosevka, monospace; -} -* { - font-family: var(--font-main); - font-weight: 300; - padding: 0pt; - margin: 0pt; -} -body { - background-color: var(--bg); - color: var(--fg); + --bg: #282828; + --bg-accent: #504945; + --fg: #ebdbb2; + --fg-disabled: #bdae93; + --accent: #fe8019; + --note: #b8bb26; + --info: #83a598; + --warn: #fabd2f; + --error: #fb4934; + --font-main: Iosevka Aile Web, sans-serif; + --font-mono: Iosevka, monospace; + font-family: var(--font-main); + font-weight: 300; } -h1, h2, h3, h4, h5, h6 { - font-weight: 800; +* { + padding: 0pt; + margin: 0pt; } + +body { + background-color: var(--bg); + color: var(--fg); +} + +h1, +h2, +h3, +h4, +h5, +h6 { + font-weight: 800; +} + strong { - font-weight: 600; + font-weight: 600; } /****** header ****/ header { - width: 100%; - background-color: var(--bg-accent); - text-align: center; + width: 100%; + background-color: var(--bg-accent); + text-align: center; } header h1 a { - text-decoration: none; + text-decoration: none; } a { - display: inline; - color: var(--accent) + display: inline; + color: var(--accent) } header nav { - width: 100%; - padding: 0pt, 10pt; - background-color: var(--bg-accent); - justify-items: stretch; - justify-content: space-evenly; - align-items: stretch; - display: flex; + width: 100%; + padding: 0pt, 10pt; + background-color: var(--bg-accent); + justify-items: stretch; + justify-content: space-evenly; + align-items: stretch; + display: flex; } nav input { - width: 25vw; - background-color: var(--bg); - margin: 10pt; - color: var(--fg); + width: 25vw; + background-color: var(--bg); + margin: 10pt; + color: var(--fg); } -aside, aside * { - background-color: var(--bg-accent); +aside, +aside * { + background-color: var(--bg-accent); +} + +footer { + width: 100%; + padding: 10pt; + background-color: var(--bg-accent); +} + +pre, +code { + font-family: 'Iosevka Slab Web', monospace; } /****** Search Box ******/ ul.sresult { - width: 50vw; - height: 20vw; - overflow: scroll; - justify-content: center; - position: absolute; - top: 25%; - left: 50%; - transform: translate(-50%, 0%); - background-color: var(--bg-accent); - padding: 10pt; - border: .1em solid var(--fg-disabled); + width: 50vw; + height: 20vw; + overflow: scroll; + justify-content: center; + position: absolute; + top: 25%; + left: 50%; + transform: translate(-50%, 0%); + background-color: var(--bg-accent); + padding: 10pt; + border: .1em solid var(--fg-disabled); } + li.sresult { - list-style: none; - font-size: 1.5em; + list-style: none; + font-size: 1.5em; } /****** Table of contents ******/ aside { - padding: 10pt; - height: min-content; + padding: 10pt; + height: min-content; } @media (min-width: 1000px) { - #main-body {display: flex;} - main { - width: calc(100% - 20em); - } - aside { - margin: 10pt 10pt 10pt 0pt; - width: 20em; - } + #main-body { + display: flex; + } + + main { + width: calc(100% - 20em); + } + + aside { + margin: 10pt 10pt 10pt 0pt; + width: 20em; + } } @media (max-width: 1000px) { - main { - width: 100% - 20pt - } - aside { width: 100% - 20pt } + main { + width: 100% - 20pt + } + + aside { + width: 100% - 20pt + } } /****** Main body styling ******/ main { - padding: 25pt 10pt; + padding: 25pt 10pt; } main h1 { - font-size: 2em; - font-weight: bold; + font-size: 2em; + font-weight: bold; } main li { - list-style-position: inside; - padding: 0 0 0 10pt; + list-style-position: inside; + padding: 0 0 0 10pt; } main table { - margin: 1em; + margin: 1em; } main td { - padding: 0em 1em; - margin: 0; + padding: 0em 1em; + margin: 0; } main .low { - color: var(--fg-disabled); - font-style: italic; + color: var(--fg-disabled); + font-style: italic; + font-size: .8em; } main .high { - color: var(--accent); - font-family: inherit; + color: var(--accent); + font-family: inherit; } main em { - color: var(--accent); + color: var(--accent); } -main table, main td, main tr { - border-collapse: collapse; - margin: 10px; - border-collapse: collapse; - border: 1px solid var(--fg-disabled); - text-align: center; +main table, +main td, +main tr { + border-collapse: collapse; + margin: 10px; + border-collapse: collapse; + border: 1px solid var(--fg-disabled); + text-align: center; } -main h2, main h3, main h4, main h5, main h6{ - padding-top: 1em; +main h2, +main h3, +main h4, +main h5, +main h6 { + padding-top: 1em; +} + +main button { + padding: 1em; + background-color: var(--bg-accent); + color: var(--accent); + border: none; +} + +main button:hover { + background-color: var(--fg-disabled); + color: var(--bg-accent); } /****** GLOSSES ******/ -.gloss, .gloss tr, .gloss td { - border: none; - text-align: left; - padding: 0 .25em; +.gloss, +.gloss tr, +.gloss td { + border: none; + text-align: left; + padding: 0 .25em; } /****** SCRIPTS ******/ .scr-nahan { - font-family: AndikaAmbNaran; + font-family: AndikaAmbNaran; } \ No newline at end of file diff --git a/assets/webring-button.png b/assets/webring-button.png new file mode 100644 index 0000000000000000000000000000000000000000..b7f7ebd42d2e1537e1a9bc254158c041e7e2bd8e GIT binary patch literal 428 zcmV;d0aN~oP)t z-k-C_(InH@{~SzJitz>ELps>`qY)eG;LTXdK(4H1w)swD&z}3EC9dGYsImwQt`e;jOO;#g7>Zmw&mshb3&vd((!seb;%;~raR3tM z0#q6z;!_{{j@2(k=v=O&UBLo0A);I6VZGZOnHFibvFl+E=T;gcY@@M%7JkT8i0WYv z1*c7o3gsX@NQ)?V8vEoxu-~tOG(`jO5FsKw8@N=N2TO@39XlfB7%I2MkUDv{gHr>? z5`Rs+<=WUL9+qQ{PGtj{?a!gv5TV)59Ha|D-e{D5>1kmeM literal 0 HcmV?d00001 diff --git a/build.ts b/build.ts index 81a6f35..2c9b6a2 100755 --- a/build.ts +++ b/build.ts @@ -7,9 +7,6 @@ import { Dirent } from "node:fs"; import { mkdir, stat } from "node:fs/promises"; -function out_path(path: string) { -} - enum LogLevel { DEBUG = 0, INFO = 1, @@ -67,6 +64,7 @@ async function copy_assets() { log(INFO, "Updating assets") await $`rm -rf ${minLogLevel == DEBUG ? "-v" : ""} public_html/assets/` await $`cp -r ${minLogLevel == DEBUG ? "-v" : ""} assets/ public_html/` + await $`cp ${minLogLevel == DEBUG ? "-v" : ""} public_html/assets/favicon.ico public_html/favicon.ico` } type IndexEntry = { id: string; title: string; body: string; tags: string;} diff --git a/src/index.typ b/src/index.typ index e3ed0da..3aabd69 100644 --- a/src/index.typ +++ b/src/index.typ @@ -1,7 +1,21 @@ #import "../templates/base.typ": * -#show: conf.with(page-title: sitename, title-override: "Index") +#show: conf.with(page-title: sitename, title-override: "Index", notoc: true, page-script: "index") -= Welcome -foo bar baz -== H2 -=== H3 +Hi, welcome to my wiki website blog thing + +Search a page in the search bar above (#sym.arrow.t), see a list of all the pages on the #link("/pagelist.html")[Page + List] or #html.a(href: "#random", class: "random_page")[visit a random page] + +#html.hr() +/* +Want a button to this website? Copy the following code +```html + + Annwan's Wiki + +``` +*/ diff --git a/src/pagelist.typ b/src/pagelist.typ new file mode 100644 index 0000000..1eb5f5c --- /dev/null +++ b/src/pagelist.typ @@ -0,0 +1,6 @@ +#import "../templates/base.typ": * +#show: conf.with(page-title: "Page List", notoc: true, page-script: "pagelist", nofoot: true) + +This is a list of all the pages on the site: + +#html.ul(id: "list") \ No newline at end of file diff --git a/src/worlds/Asteron/Mosici.typ b/src/worlds/Asteron/Mosici.typ index eb54ebb..0a91a3b 100644 --- a/src/worlds/Asteron/Mosici.typ +++ b/src/worlds/Asteron/Mosici.typ @@ -3,8 +3,8 @@ #import "/templates/utils/lang-mos.typ": * #let high = html.span.with(class: "high") #show: conf.with(page-title: "Mosici") -%lang %mos %langauge-documentation -#set heading(numbering: "I’A’1’a’") +%lang %mos %language-documentation +#set heading(numbering: "I.A.1.a.") #let low = html.span.with(class: "low") #let gloss-opts = ( txt-style: sn, @@ -15,8 +15,12 @@ #let bl = "[" #let br = "]" #let ann = it => sub(sc(it)) + +This page describes Cairniasial standard Mosici, with brief mentions about other +close varieties such as Sialmoséce standard Mosici + = Sound ⁊ Letters -== Phonolgy +== Phonology Mosici has the following phonemes #table( columns: 5, @@ -41,33 +45,44 @@ There is also the following allophony rules: - The dorsal approximant is realised as a [ẅ] off-glide in coda positions. - The dorsal fricative is realised as a [ɐ̯] off-glide in coda positions. -- The dorsal fricative is realised as a true fricative [ʁ] in consonant clusters. +- The dorsal fricative is realised as a true fricative [ʁ] in consonant + clusters. - /n/ nasalises a preceding vowel. -- /n/ itself is not pronounced in coda positions.#footnote[still applies nasalisation] -- Nasalised close vowels are realised as mid-centralised: /ĩ ĩː ỹ ỹː ũ ũː/ [ɪ̃ ɪ̃ː ʏ̃ ʏ̃ː ʊ̃ ʊ̃ː] -- The dorsal plosive ⁊ approximant are realised as palatal before /i y e j/ #footnote[or their or their long and/or - nasalised variants] , -- The dorsal plosive ⁊ approximant are realised as uvular before ther /u o w/@fn-dorsal-assimilation -- The dorsal plosive ⁊ approximant are realised as palatal after /e i j/@fn-dorsal-assimilation or in the coda of a - syllable with /e i/@fn-dorsal-assimilation as the nucleus. +- /n/ itself is not pronounced in coda positions.#footnote[still applies + nasalisation] +- Nasalised close vowels are realised as mid-centralised: /ĩ ĩː ỹ ỹː ũ ũː/ [ɪ̃ ɪ̃ː + ʏ̃ ʏ̃ː ʊ̃ ʊ̃ː] +- The dorsal plosive ⁊ approximant are realised as palatal before /i y e j/ + #footnote[or their or their long and/or nasalised + variants] , +- The dorsal plosive ⁊ approximant are realised as uvular before /u o + w/@fn-dorsal-assimilation +- The dorsal plosive ⁊ approximant are realised as palatal after /e i + j/@fn-dorsal-assimilation or in the coda of a syllable with /e + i/@fn-dorsal-assimilation as the nucleus. - The dorsal plosive ⁊ approximant are realised as velar otherwise - Plosives are realised as voiced next to other phonemically voiced consonants. -- Plosives are realised as non-sibilant fricatives of the same place of articulation word finally. +- Plosives are realised as non-sibilant fricatives of the same place of + articulation word finally. == Coalescence -Mosici doesn't allow consecutive vowels inside of words. To resolve would-be hiatuses, a coalescence process is used. -This process is historic for all native words, but it still current to resolve diphthongs in loan words and is necessary -to understand to read the written language, as the spelling was fixed before that sound change occurred. +Mosici doesn't allow consecutive vowels inside of words. To resolve would-be +hiatuses, a coalescence process is used. This process is historic for all native +words, but it still current to resolve diphthongs in loan words and is necessary +to understand to read the written language, as the spelling was fixed before +that sound change occurred. The process goes thusly (before applying the allophony): -1. Group all consecutive vowels by pairs, starting at near the start of the word -2. Combine all pairs of vowels according to the table below (the first vowel indexes the row, and the second vowel - indexes the column) +1. Group all consecutive vowels by pairs, starting at + near the start of the word +2. Combine all pairs of vowels according to the table below (the first vowel + indexes the row, and the second vowel indexes the column) 3. If any vowel is long, the resulting vowel is long; -4. Repeat from #context link(query().first().location())[step 1] until all hiatus has been - resolved. +4. Repeat from #context link( + query().first().location(), + )[step 1] until all hiatus has been resolved. #table( columns: 10, [ ], [*a*], [*ɛ*], [*ɔ*], [*e*], [*ø*], [*o*], [*i*], [*y*], [*u*], @@ -83,46 +98,111 @@ The process goes thusly (before applying the allophony): ) == The Nahan Script -Mosici is written in the [[/worlds/Asteron/Nahan Script]] (also named the Polia(h)r alphabet), which is am alphabet -which in Mosici is considered to have the following letters, digraphs and diacritic’d letters. The sole diacritic is +Mosici is written in the [[/worlds/Asteron/Nahan Script]] (also named the +Polia(h)r alphabet), which is am alphabet which in Mosici is considered to have +the following letters, digraphs and diacritic’d letters. The sole diacritic is called the #sn[] 〈sitrapaóha〉. -#table( +#figure(caption: [Poliahr for Mosici], table( columns: 5, - [Letter], [Transliteration], [Value (IPA)], [Name], [Name (IPA)], + [*Letter*], [*Transliteration*], [*Value (IPA)*], [*Name*], [*Name (IPA)*], sn[], [p], [/p/], sn[], [[pe]], - sn[], [o], [/o/], sn[], [[us]], + sn[], [o], [/o/], sn[], [[us]], sn[], [l], [/ʟ/], sn[], [[ʟɔ̃]], sn[], [i], [/e/], sn[], [[iɐ̯nɛ]], sn[], [a], [/a/], sn[], [[ɔ̃ɸ]], - sn[], [h], [/∅/#footnote[Lengthens a preceeding vowel] ], sn[], [[apfɛ]], + sn[], + [h], + [/∅/#footnote[Lengthens a preceding vowel] ], + sn[], + [[apfɛ]], + sn[], [r], [/ʀ/], - sn[ #footnote[Literally "sounded 〈base letter〉"] ], + sn[ #footnote[Literally "sounded hapfe"] ], [[fasteɕɛx apfɛ]], sn[], [c], [/k/], sn[], [[kaẅ]], sn[], [n], [/n/], sn[], [[nɔẅ]], - sn[], [e], [/e/], sn[], [[istaẅ]], - sn[], [s], [/s/], sn[], [[ɕpaẅ]], - sn[], [z], [/z/], sn[  @fn-script-sounded], [[fasteɕɛx ɕpaẅ]], - sn[], [f], [/f/], sn[], [[fasoː]], - sn[], [v], [/v/], sn[  @fn-script-sounded], [[fasteɕex fasoː]], + sn[], [e], [/e/], sn[], [[istaẅ]], + sn[], [s], [/z/], sn[], [[ɕpaẅ]], + sn[], [f], [/v/], sn[], [[fasoː]], sn[], [m], [/m/], sn[], [[miʎɔ]], sn[], [t], [/t/], sn[], [[tɛɟjo]], -) -== Examples +)) +#figure(caption: [Digraphs], table( + columns: 3, + [*Letter(s)*], [*Transliteration*], [*Value IPA*], + sn[], [ó], [/u/], + sn[], [í], [/i/], + sn[], [á], [/ɔ/], + sn[], [é], [/i/], + sn[], [ssi], [/ɕ/], + sn[], [si], [/ʑ/], + sn[], [ff], [/f/], + sn[], [ss], [/s/], +)) +#figure(caption: [Punctuation], table( + columns: 3, + [*Punctuation*], [*Transliteration*], [*Use*], + sn[], [,], [Comma, short break], + sn[], [.], [Period, long break, sentence end], + sn[], [· or -], [word-internal separator, hyphen], + sn[], + [’ or : or .], + [Abbreviation mark, list initiator and hyphenation marker (on both sides of + the cut).\ Transliteration depends on use], -#sn[] ⟨tráihéins⟩ "fox" + sn[ ], [( )], [Quotes or parrenthesis], +)) + +=== Numbering with the Poliahr order + +The letters can be used to number things in the manner most alphabets are used +elsewhere. for those purpose the order is as used above but #sn[] isn't used. + +=== Note for Mosici as used on Nguhcraft + +Mosici can also be found on the #link("https://mc.nguh.org/")[Nguhcraft world]. +That "Sialmoséce standard" version of the language is nearly identical to the +Cairniasial standard described in this document, but has experienced a minor +spelling reform affecting the spelling of voiced fricatives. it introduces two +new modified letters, inserted after their plain versions in the order. They +aren't used in Poliahr order numbering either. + +#figure(caption: [New letters in Sialmoséce standard Mosici], table( + columns: 5, + [*Letter*], [*Transliteration*], [*Value (IPA)*], [*Name*], [*Name (IPA)*], + sn[], [z], [/z/], sn[ ], [[fasteɕɛx ɕpaẅ]], + sn[], [v], [/v/], sn[ ], [[fasteɕex fasoː]], +)) +the following sequences are thus respelled +#figure( + caption: [Repellings in Sialmoséce standard Mosici], + table( + columns: 2, + [*Cairniasial Standard*], [*Sialmoséce Standard*], + sn[], sn[], + sn[], sn[], + sn[], sn[], + sn[], sn[], + sn[], sn[], + sn[], sn[] + ), +) + +== Examples + +#sn[] ⟨tráihéinss⟩ "fox" - \*/tʀɔiːɛins/ -- → \*/tʀ#high[øːi]ns/ #low[Coalescense 1] -- → /tʀ#high[yː]ns/ #low[Coalescense 2] +- → \*/tʀ#high[øːi]ns/ #low[Coalescence 1] +- → /tʀ#high[yː]ns/ #low[Coalescence 2] - → [d#high[ʁʏ̃ː]s] #low[Allophony] -#sn[] ⟨moséceec⟩ "of islands" +#sn[] ⟨mosséceec⟩ "of islands" - \*/mosikɛɛk/ -- → /mosik#high[i]k/ #low[Coalescense] +- → /mosik#high[i]k/ #low[Coalescence] - → [mosi#high[c]i#high[ç]/ #low[Allophony] #sn[] ⟨an·nielvc⟩ "of Nyelaf" @@ -130,13 +210,14 @@ called the #sn[] 〈sitrapaóha〉. - → /a#high[n]jɛʟvk/ #low[Particle shenanigans] - → [#high[ã]njɛ#high[ẅ]v#high[ɣ]] #low[Allophony] -= Morphology -== Nouns -=== Number += Words +== Nouns +=== Number -Number is marked by reduplicating the last orthographic vowel of the root without the sitrapaóha #low[(see following - table)]. In most cases the pronunciation of the plural isn't directly derivable from the pronunciation of the -singular. +Number is marked by reduplicating the last orthographic vowel of the root +without the sitrapaóha #low[(see following table)]. In most cases the +pronunciation of the plural isn't directly derivable from the pronunciation of +the singular. #table( columns: 2, @@ -151,31 +232,42 @@ singular. sn[], sn[], ) -=== Cases +=== Cases -Nouns are also marked for case. There are 5 simple cases --- agent, patient, genitive, dative and ablative --- and 2 -compound cases --- spatial and temporal locative. +Nouns are also marked for case. There are 5 simple cases --- agent, patient, +genitive, dative and ablative --- and 2 compound cases --- spatial and temporal +locative. -They are 7 patterns for the simple cases based on the the coda consonant(s) of the agent form: the concatenative -pattern, and the 6 substitutive patterns (#sn[], #sn[], #sn[], #sn[], #sn[], #sn[]) +They are 7 patterns for the simple cases based on the the coda consonant(s) of +the agent form: the concatenative pattern, and the 6 substitutive patterns +(#sn[], #sn[], #sn[], #sn[], #sn[], #sn[]) #table( columns: 8, align: center, - [], [*C*], [*Sub* #sn[]], [*Sub* #sn[]], [*Sub* #sn[]], [*Sub* #sn[]], [*Sub* #sn[]], [*Sub* #sn[]], + [], + [*C*], + [*Sub* #sn[]], + [*Sub* #sn[]], + [*Sub* #sn[]], + [*Sub* #sn[]], + [*Sub* #sn[]], + [*Sub* #sn[]], [*Agent*], [∅], sn[], sn[], sn[], sn[], sn[], sn[], [*Patient*], table.cell(colspan: 7, sn[]), [*Genitive*], table.cell(colspan: 7, sn[]), [*Dative*], table.cell(colspan: 2, sn[]), sn[], sn[], sn[], sn[], sn[], - [*Ablative*], table.cell(colspan: 3, sn[]), table.cell(colspan: 2, sn[]), + [*Ablative*], + table.cell(colspan: 3, sn[]), + table.cell(colspan: 2, sn[]), table.cell(colspan: 2, sn[]), ) ==== Agent -The Agent case #low(sc[age]) indicates the agent of a transitive clause, or the subject of an active intransitive -clause. +The Agent case #low(sc[age]) indicates the agent of a transitive clause, or the +subject of an active intransitive clause. #ex( caption: [Agent case in an transitive clause], @@ -187,23 +279,29 @@ clause. lbl: "ex-case-age-trans", ) #ex( - caption: [Agent case in an active intransitve clause], + caption: [Agent case in an active intransitive clause], txt: [#high[]  #high[] ], translit: ([#high[loarne]], [i], high[mazealn], [vionreor.]), phono: (bl + high[ʟɔɐ̯nɛ], [e], high[mazɛ̃ẅ], [vjõʀøɐ̯] + br), - morphemes: (high[Loarne.#sc[age]], [and], high[Mazealn.#sc[age]], [eat.#sc[fut.3pa]]), + morphemes: ( + high[Loarne.#sc[age]], + [and], + high[Mazealn.#sc[age]], + [eat.#sc[fut.3pa]], + ), translation: [#high[Loarne] and #high[Mazealn] will eat], lbl: "ex-case-age-intrans", ) ==== Patient -The Patient case #low(sc[pat]) indicates the patient of a transitive clause, or the subject of a stative intransitive -clause. +The Patient case #low(sc[pat]) indicates the patient of a transitive clause, or +the subject of a stative intransitive clause. #ex( - caption: [Patient case in a transitive clause#footnote[Note that while the pronoun is dropped thanks to the verb - conjugation, but the clause is still transitive]], + caption: [Patient case in a transitive clause#footnote[Note that while the + pronoun is dropped thanks to the verb conjugation, but the clause is still + transitive]], txt: [#high[] ], translit: (high[nriiht], [vionreef.]), phono: (bl + high[nʁiːθ], [vjõʀiɸ] + br), @@ -224,8 +322,9 @@ clause. ==== Genitive -The genitive case #low(sc[gen]) indicates poessesion or qualification. Note that in the case of qualification, the -formation of a compound is also possible. Note: Compounding is not subject to coalescence. +The genitive case #low(sc[gen]) indicates possession or qualification. Note that +in the case of qualification, the formation of a compound is also possible. +Note: Compounding is not subject to coalescence. #ex( caption: [Possessive genitive case], @@ -258,8 +357,9 @@ formation of a compound is also possible. Note: Compounding is not subject to co ==== Dative -The dative case #low(sc[dat]) indicates the beneficiary of a ditransitive verbs, as well as indicating a direction -faced. Note hover that it isn't used with verbs of movement towards something, for those use the patient case (see +The dative case #low(sc[dat]) indicates the beneficiary of a ditransitive verbs, +as well as indicating a direction faced. Note hover that it isn't used with +verbs of movement towards something, for those use the patient case (see @case-patient) instead, the dative instead indicates the means of displacement. #ex( caption: [Dative in ditransitive clauses], @@ -275,39 +375,54 @@ faced. Note hover that it isn't used with verbs of movement towards something, f txt: [ #high[] ], translit: ([an·sialmosécet], high[foítztselasi], [oisailin.]), phono: (bl + [ãɕaẅmosicɛθ], high[fydztsɛʟaɕ], [øsɛʎẽ] + br), - morphemes: ([#sc[ppn-]Chalmosique#sc[.dat]], high[train.#sc[dat]], [go#sc[.pst.2s]]), - translation: [You#ann[sg] went to Chalmosique #high[by train]], + morphemes: ( + [#sc[ppn-]Sialmoséce#sc[.dat]], + high[train.#sc[dat]], + [go#sc[.pst.2s]], + ), + translation: [You#ann[sg] went to Sialmoséce #high[by train]], lbl: "ex-case-dat-mot", ) #ex( caption: [Dative as an allative substitute for other verbs], txt: [#high[]   ], - translit: (high[an·cairniasialsi], [an·sialmosécet], [foítztselavia], [vilinef.]), + translit: ( + high[an·cairniasialsi], + [an·sialmosécet], + [foítztselavia], + [vilinef.], + ), phono: (bl + high[ãkɛɐ̯nɛɕaẅɕ], [ãɕaẅmosicɛθ], [fydztsɛʟavja], [veʎẽnɛf] + br), morphemes: ( - high[#sc[ppn-]Quernechal#sc[.dat]], - [#sc[ppn-]Chalmosique#sc[.pat]], + high[#sc[ppn-]Cairniasial#sc[.dat]], + [#sc[ppn-]Sialmoséce#sc[.pat]], [train.#sc[abl]], [leave.#sc[prs.1s]], ), - translation: [I leave Chalmosique by train #high[to Quernechal].], + translation: [I leave Sialmoséce by train #high[to Cairniasial].], lbl: "ex-case-dat-all", ) ==== Ablative -The ablative case #low(sc[abl]) indicates the provenance of the action. It is also used as an instrumental, indicating -the means by which the action is done. For verbs of movement away from something, it only has it's instrumental meaning, -the source is indicated by the patient case (see @case-patient). For verbs of movement towards something, the ablative -doesn't have the instrumental meaning, for that role use the dative instead. +The ablative case #low(sc[abl]) indicates the provenance of the action. It is +also used as an instrumental, indicating the means by which the action is done. +For verbs of movement away from something, it only has it's instrumental +meaning, the source is indicated by the patient case (see @case-patient). For +verbs of movement towards something, the ablative doesn't have the instrumental +meaning, for that role use the dative instead. #ex( caption: [Ablative case in an ablative meaning], txt: [#high[]  ], translit: (high[an·sialmosécevia], [nriiht], [vionreef.]), phono: (bl + [ãɕaẅmosicɛvja], [nʁiːθ], [vjõʀiɸ] + br), - morphemes: (high[#sc[ppn]-Chalmosique.#sc[abl]], [grain#sc[.pl.pat]], [eat#sc[.prs.1s]]), - translation: [I eat grains #high[from Chalmosique]], + morphemes: ( + high[#sc[ppn]-Sialmoséce.#sc[abl]], + [grain#sc[.pl.pat]], + [eat#sc[.prs.1s]], + ), + translation: [I eat grains #high[from Sialmoséce]], lbl: "ex-case-abl-abl", ) #ex( @@ -322,8 +437,9 @@ doesn't have the instrumental meaning, for that role use the dative instead. ==== Spatial Locative -The spatial locative cases #low(sc[sploc]) is used to indicate a spacial location. it is marked by expressing the noun -in the genitive case, followed by the #sn[] ⟨la⟩ particle. +The spatial locative cases #low(sc[sploc]) is used to indicate a spacial +location. it is marked by expressing the noun in the genitive case, followed by +the #sn[] ⟨la⟩ particle. #ex( caption: [Spatial Locative], @@ -339,12 +455,14 @@ in the genitive case, followed by the #sn[] ⟨la⟩ particle. There are four temporal locatives: past, present, future and gnomic #low( sc[tmploc.pst, tmploc.prs, tmploc.fut] + [ and ] + sc[tmploc.gno], -). The past case (resp. present and future) is used, as its name indicates, to locate events that happened in the past -(resp. present and future). The gnomic case locates events that are either generally happeneing, happening at an unknown -point in time, or happening repeatedly. The past case (resp. present, future, gnomic) are indicated by expressing the -noun in the oblique followed by the particle #sn[] ⟨anip⟩ (resp #sn[] ⟨anep⟩, #sn[] ⟨anop⟩ and -#sn[] ⟨anap⟩) However the present case is rarely used outside of set phrases like #sn[ ] “today” or -#sn[ ] “now” +). The past case (resp. present and future) is used, as its name indicates, to +locate events that happened in the past (resp. present and future). The gnomic +case locates events that are either generally happening, happening at an unknown +point in time, or happening repeatedly. The past case (resp. present, future, +gnomic) are indicated by expressing the noun in the oblique followed by the +particle #sn[] ⟨anip⟩ (resp #sn[] ⟨anep⟩, #sn[] ⟨anop⟩ and +#sn[] ⟨anap⟩) However the present case is rarely used outside of set +phrases like #sn[ ] “today” or #sn[ ] “now” #ex( caption: [Present temporal locative], @@ -361,7 +479,12 @@ noun in the oblique followed by the particle #sn[] ⟨anip⟩ txt: [ #high[ ] ], translit: ([il], high[vionreipt‿anip], [,], [cirtin.]), phono: (bl + [eẅ], high[vjõʀipθ ãneɸ], [|], [ceɐ̯dẽ] + br), - morphemes: (sc[1s.act], high[eat#sc[.pst.pcp.pat‿tmploc.pst]], [|], [write] + sc[.pst.2s]), + morphemes: ( + sc[1s.act], + high[eat#sc[.pst.pcp.pat‿tmploc.pst]], + [|], + [write] + sc[.pst.2s], + ), translation: [#high[When] I #high[ate], you#ann[sg] wrote], lbl: "ex-case-tmploc-pst", ) @@ -370,7 +493,12 @@ noun in the oblique followed by the particle #sn[] ⟨anip⟩ txt: [ #high[ ] ], translit: ([il], high[vionreapt‿anop], [,], [cirton.]), phono: (bl + [eẅ], high[vjõʀøpθ ãnoɸ], [|], [ceɐ̯dõ] + br), - morphemes: (sc[1s.act], high[eat#sc[.fut.pcp.pat‿tmploc.fut]], [|], [write] + sc[.fut.2s]), + morphemes: ( + sc[1s.act], + high[eat#sc[.fut.pcp.pat‿tmploc.fut]], + [|], + [write] + sc[.fut.2s], + ), translation: [#high[When] I#high[’ll eat], you#ann[sg]’ll write], lbl: "ex-case-tmploc-fut", ) @@ -379,62 +507,101 @@ noun in the oblique followed by the particle #sn[] ⟨anip⟩ txt: [ #high[ ] ], translit: ([il], high[vionreapt‿anap], [,], [cirtan.]), phono: (bl + [eẅ], high[vjõʀɛpθ ãnaɸ], [|], [ceɐ̯dã] + br), - morphemes: (sc[1s.act], high[eat#sc[.gno.pcp.pat‿tmploc.gno]], [|], [write] + sc[.gno.2s]), + morphemes: ( + sc[1s.act], + high[eat#sc[.gno.pcp.pat‿tmploc.gno]], + [|], + [write] + sc[.gno.2s], + ), translation: [#high[Whenever] I #high[eat], you#ann[sg] write], lbl: "ex-case-tmploc-gno", ) -=== Proper noun clitic #sn[] +=== Proper noun enclitic #sn[] -Proper nouns that aren't personal names always take the proper noun clitic #low(sc[ppn]) #sn[] ⟨an·⟩ +Proper nouns that aren't personal names always take the proper noun enclitic +#low(sc[ppn]) #sn[] ⟨an·⟩ -The affix #sn[] ⟨ni-⟩ --- which on proper nouns forms demonyms --- attaches to the front of the proper noun clitic: -#sn[] gives #sn[] and not \*#sn[] or \*#sn[]. Demonyms formed this way also -mark plural on the proper noun clitic: #sn[] pluralises to #sn[] and not \*#sn[]. +The affix #sn[] ⟨ni-⟩ --- which on proper nouns forms demonyms --- attaches +to the front of the proper noun enclitic: #sn[] gives +#sn[] and not \*#sn[] or \*#sn[]. Demonyms +formed this way also mark plural on the proper noun enclitic: #sn[] +pluralises to #sn[] and not \*#sn[]. -== Pronouns +== Pronouns -Mosici has a full set of personal, demonstrative and interrogative pronouns (see table at the end of this section). However, the use of personal pronouns is limited to situations where they are necessary. +Mosici has a full set of personal, demonstrative and interrogative pronouns (see +table at the end of this section). However, the use of personal pronouns is +limited to situations where they are necessary. -The Agent and patient forms especially are often dropped in non-participal clauses. Indeed, a speaker would more often use the passive marking and avoid a pronoun altogether than use an patient form: Use #sn[ ] #low[(Loarne.#sc[age] #sc[pass.]eat#sc[.prs.3si])] rather than ?#sn[  ] #low[?(Loarne#sc[.age] #sc[3si.pat] eat#sc[.prs.3sa])] for "Loarne eats it." +The Agent and patient forms especially are often dropped in non-participial +clauses. Indeed, a speaker would more often use the passive marking and avoid a +pronoun altogether than use an patient form: Use #sn[ ] +#low[(Loarne.#sc[age] #sc[pass.]eat#sc[.prs.3si])] rather than ?#sn[  + ] #low[?(Loarne#sc[.age] #sc[3si.pat] eat#sc[.prs.3sa])] for +"Loarne eats it." -#mos-pron(none) +#mos-pron(none, open: true) -== Verbs +== Verbs -Verbs are mainly conjugated according to their tense and the grammatical person of the agent, unless marked with the -passive voice prefix #sn[] ⟨na-⟩, in which case, it agrees with the patient instead. +Verbs are mainly conjugated according to their tense and the grammatical person +of the agent. -Orthographically the pattern is completely regular, however the vowel coalescence (see @sec-coalescence) causes the -pronunciation to be quite chaotic. The plural forms of past and present tense are always identical when spoken but +Orthographically the pattern is completely regular, however the vowel +coalescence (see @sec-coalescence) causes the pronunciation to be quite chaotic. +The plural forms of past and present tense are always identical when spoken but distinguished in writing. -Verbs are typically listed in their gnomic infinitive form. to derive the stem, remove the final #sn[]. Here is a -conjugation table for an hypothetical null-stemmed verb as a way to list the affixes#footnote[You may find those forms +Verbs are typically listed in their gnomic infinitive form. to derive the stem, +remove the final #sn[]. Here is a conjugation table for an hypothetical +null-stemmed verb as a way to list the affixes#footnote[You may find those forms verbatim in some older texts as a now defunct copula.] -#mos-v("") +#mos-v("", open: true) -=== Aspect, mood ⁊ related nonsense +=== Aspect, mood ⁊ related nonsense -If you need other moods or aspects than an unaspected indicative, there is a pletora of affixes you can stack on verbs -to specify them further, they all are interpreted as nested, coming away from the verb, and can be combined and stacked -for more specific meanings +If you need other moods or aspects than an unaspected indicative, there is a +plethora of affixes you can stack on verbs to specify them further, they all are +interpreted as nested, coming away from the verb, and can be combined and +stacked for more specific meanings -Here is a (eventually but not yet) exhaustive list of such affixes: #low[(all of them are prefixes)] +Here is a (eventually but not yet) exhaustive list of such affixes: #low[(all of + them are prefixes)] -==== Conditionals, irrealis -==== Imperfective, durative, iterative -==== Perfective, terminative -==== Desirative, Optative, Hortative -==== Imperative -==== Causatives -==== Passive -==== Negation -The negation prefix is #sn[] ⟨ta-⟩. It negates whatever component of the verb is immediately following it. +==== Conditionals, irrealis -==== Also on other parts of speach -While frowned upon in more formal texts, all of the above mood and aspect affixes can be added to nouns to great effect -in less formal or more poetic registers. Execption is of the negation affix which is considered perfectly acceptable in -all registers. +==== Imperfective, durative, iterative +==== Perfective, terminative +==== Desiderative, Optative, Hortative +==== Imperative +==== Causatives +Mosici has two causatives: the purposeful and the accendental. + +The purposeful causative #sn[] ⟨siehí-⟩ indicates that the described +state is caused by the agent intentionally. + +The accidental causative #sn[] ⟨sní-⟩ indicates that the described state +is cased by the agent in unintentionally or accidentally. + +Both change the valency of the verb. the cause is expressed as the agent, what +would the agent of the root verb is expressed as the patient, and what would +have been the patient of the root verb is expressed in the dative, the verb +agrees with it's new agent (unless further modified). ==== +Passive +The passive affix #sn[] ⟨na-⟩ makes a transitive verb agree with its +patient instead of its agent. ==== Negation +The negation prefix is #sn[] ⟨ta-⟩. It negates whatever component of the +verb is immediately following it. + +==== Also on other parts of speech +While frowned upon in more formal texts, all of the above mood and aspect +affixes can be added to nouns to great effect in less formal or more poetic +registers. Exception is of the negation affix which is considered perfectly +acceptable in all registers. + +== Numerals + += Syntax diff --git a/templates/base.typ b/templates/base.typ index 154d28d..737b445 100644 --- a/templates/base.typ +++ b/templates/base.typ @@ -1,66 +1,83 @@ #let tag = tagname => [ #metadata(tagname) ] #let wl(path, txt, frag) = { - let fragtext = if frag == none {""} else {"#" + frag} + let fragtext = if frag == none { "" } else { "#" + frag } let texttext = if txt == none { - path.split("/").at(-1) - } else {txt} + path.split("/").at(-1) + } else { txt } link(path + ".html" + fragtext, texttext) } #let conf( - page-title: "", - title-override: none, - subtitle: none, - doc, + page-title: "", + title-override: none, + subtitle: none, + notoc: false, + nofoot: false, + page-script: none, + doc, ) = { - let sitename = [Annwan's Wiki] - // matches [[path|text!fragments]] with opt texts and fragment - let link-re = regex( - "\\[\\[([^\\]\\|!]+)(?:\\|([^\\]\\|!]+))?(?:!([^\\]\\|!]+))?\\]\\]" - ) - show figure.where(kind: "gloss"): set figure(supplement: [Example]) - show figure.where(kind: "gloss"): set figure.caption(position: top) - show figure: it => { - html.details(open: it.kind == image or it.kind == table, { - html.summary[*#it.caption.supplement #it.caption.counter.display(it.numbering)*: #it.caption.body] - it.body - }) - } - show regex("%[a-z0-9/-]+"): it => tag(it.text.slice(1)) - show link-re: it => wl(..it.text.match(link-re).captures) - set table(stroke: none) - html.head({ - html.link(rel: "stylesheet", href: "/assets/style/common.css") - html.meta(charset: "utf-8") - html.meta(name: "viewport", content: "width=device-width, initial-scale=1") - html.meta(name: "search-title", content: if title-override != none {title-override} else {page-title}, id: "search-title") - context html.meta(content: { let t = query().map(it => it.value).join(" "); if type(t) != str {""} else {t}}, name: "search-tags", id: "search-tags") - - if title-override != none { - html.title(sitename + " — " + title-override) - } else { - html.title(sitename + " — " + page-title) + let sitename = [Annwan's Wiki] + // matches [[path|text!fragments]] with opt texts and fragment + let link-re = regex( + "\\[\\[([^\\]\\|!]+)(?:\\|([^\\]\\|!]+))?(?:!([^\\]\\|!]+))?\\]\\]", + ) + let actual-title = if title-override != none { title-override } else { page-title } + show figure.where(kind: "gloss"): set figure(supplement: [Example]) + show figure.where(kind: "gloss"): set figure.caption(position: top) + show figure: it => { + html.details(open: it.kind == image or it.kind == table, { + html.summary[*#it.caption.supplement #it.caption.counter.display(it.numbering)*: #it.caption.body] + it.body + }) } - html.script(src:"/assets/scripts/fuse.min.js") - html.script(src: "/assets/scripts/search.js") - }) - - html.header({ - html.h1(html.a(href: "/", sitename)) - html.nav(html.input(id: "searchbox", type: "text", placeholder: "Search...")) - }) - html.div(id: "results")[] - html.div(id: "main-body", { - html.main({ - html.h1(page-title) - html.hr() - doc - + show regex("%[a-z0-9/-]+"): it => tag(it.text.slice(1)) + show link-re: it => wl(..it.text.match(link-re).captures) + set table(stroke: none) + set raw(theme: "/templates/gruvbox.tmTheme") + html.head({ + html.link(rel: "stylesheet", href: "/assets/style/common.css") + html.meta(charset: "utf-8") + html.meta(name: "viewport", content: "width=device-width, initial-scale=1") + html.meta(name: "search-title", content: actual-title, id: "search-title") + context html.meta( + content: { + let t = query().map(it => it.value).join(" ") + if type(t) != str { "" } else { t } + }, + name: "search-tags", + id: "search-tags", + ) + + html.title(sitename + " — " + actual-title) + html.script(src: "/assets/scripts/fuse.min.js") + html.script(src: "/assets/scripts/search.js") + if page-script != none { html.script(src: "/assets/scripts/pages/" + page-script + ".js") } }) - html.aside(outline()) - }) + + html.header({ + html.h1(html.a(href: "/", sitename)) + html.nav(html.input(id: "searchbox", type: "text", placeholder: "Search...")) + }) + html.div(id: "results")[] + html.div(id: "main-body", { + html.main({ + html.h1(page-title) + html.hr() + doc + }) + if (not notoc) { html.aside(outline()) } + }) + if (not nofoot) { + html.footer[ + #import sym: * + Source code available on #link("https://git.annwan.me/worldbuilding/wiki")[my gitea instance]\ + #actual-title on #sitename #copyright Annwan. This work is licensed under #link( + "https://creativecommons.org/licenses/by-nc-sa/4.0/", + )[CC BY-NC-SA 4.0] #cc #cc.by #cc.nc #cc.sa + ] + } } #let sitename = [Annwan's Wiki] #let s(script, body) = { - html.span(class: "scr-"+script, body) + html.span(class: "scr-" + script, body) } #let sc = smallcaps diff --git a/templates/gruvbox.tmTheme b/templates/gruvbox.tmTheme new file mode 100644 index 0000000..b068fc9 --- /dev/null +++ b/templates/gruvbox.tmTheme @@ -0,0 +1,766 @@ + + + + + comment + Based on original gruvbox color scheme. + author + peaceant + name + gruvbox + settings + + + settings + + background + #282828 + + caret + #fcf9e3 + + foreground + #fdf4c1aa + + invisibles + #fabd2f + + lineHighlight + #3c3836 + + selection + #504945 + + bracketContentsForeground + #928374 + + bracketsForeground + #d5c4a1 + + guide + #3c3836 + + activeGuide + #a89984 + + stackGuide + #665c54 + + + + name + Punctuation + scope + punctuation.definition.tag + settings + + fontStyle + + foreground + #83a598 + + + + name + Punctuation + scope + punctuation.definition.entity + settings + + fontStyle + + foreground + #d3869b + + + + name + Constant + scope + constant + settings + + fontStyle + + foreground + #d3869b + + + + name + Constant escape + scope + constant.character.escape + settings + + fontStyle + + foreground + #b8bb26 + + + + name + Constant other + scope + constant.other + settings + + fontStyle + + foreground + #fdf4c1 + + + + name + Entity + scope + entity + settings + + fontStyle + + foreground + #8ec07c + + + + name + Keyword + scope + keyword.operator.comparison, keyword.operator, keyword.operator.symbolic, keyword.operator.string, keyword.operator.assignment, keyword.operator.arithmetic, keyword.operator.class, keyword.operator.key, keyword.operator.logical + settings + + fontStyle + + foreground + #fe8019 + + + + name + Keyword + scope + keyword, keyword.operator.new, keyword.other, keyword.control + settings + + fontStyle + + foreground + #fa5c4b + + + + name + Storage + scope + storage + settings + + fontStyle + + foreground + #fa5c4b + + + + name + String + scope + string -string.unquoted.old-plist -string.unquoted.heredoc, string.unquoted.heredoc string + settings + + fontStyle + + foreground + #b8bb26 + + + + name + Comment + scope + comment + settings + + fontStyle + italic + foreground + #928374 + + + + name + Regexp + scope + string.regexp constant.character.escape + settings + + foreground + #b8bb26 + + + + name + Support + scope + support + settings + + fontStyle + + foreground + #fabd2f + + + + name + Variable + scope + variable + settings + + fontStyle + + foreground + #fdf4c1 + + + + name + Lang Variable + scope + variable.language + settings + + fontStyle + + foreground + #fdf4c1 + + + + name + Function Call + scope + meta.function-call + settings + + foreground + #fdf4c1 + + + + name + Invalid + scope + invalid + settings + + background + #932b1e + foreground + #fdf4c1 + + + + name + Embedded Source + scope + text source, string.unquoted.heredoc, source source + settings + + fontStyle + + foreground + #fdf4c1 + + + + name + String embedded-source + scope + string.quoted source + settings + + fontStyle + + foreground + #b8bb26 + + + + name + String constant + scope + string + settings + + foreground + #b8bb26 + + + + + name + Support.constant + scope + support.constant + settings + + fontStyle + + foreground + #fabd2f + + + + name + Support.class + scope + support.class + settings + + fontStyle + + foreground + #8ec07c + + + + name + Meta.tag.A + scope + entity.name.tag + settings + + fontStyle + bold + foreground + #8ec07c + + + + name + Inner tag + scope + meta.tag, meta.tag entity + settings + + foreground + #8ec07c + + + + name + css colors + scope + constant.other.color.rgb-value + settings + + foreground + #83a598 + + + + name + css tag-name + scope + meta.selector.css entity.name.tag + settings + + foreground + #fa5c4b + + + + name + css#id + scope + meta.selector.css, entity.other.attribute-name.id + settings + + foreground + #b8bb26 + + + + name + css.class + scope + meta.selector.css entity.other.attribute-name.class + settings + + foreground + #b8bb26 + + + + name + css property-name: + scope + support.type.property-name.css + settings + + foreground + #8ec07c + + + + name + css @at-rule + scope + meta.preprocessor.at-rule keyword.control.at-rule + settings + + foreground + #fabd2f + + + + name + css additional-constants + scope + meta.property-value constant + settings + + foreground + #fabd2f + + + + name + css additional-constants + scope + meta.property-value support.constant.named-color.css + settings + + foreground + #fe8019 + + + + name + css constructor.argument + scope + meta.constructor.argument.css + settings + + foreground + #fabd2f + + + + + + + name + diff.header + scope + meta.diff, meta.diff.header + settings + + foreground + #83a598 + + + + name + diff.deleted + scope + markup.deleted + settings + + foreground + #fa5c4b + + + + name + diff.changed + scope + markup.changed + settings + + foreground + #fabd2f + + + + name + diff.inserted + scope + markup.inserted + settings + + foreground + #8ec07c + + + + + + + name + Bold Markup + scope + markup.bold + settings + + fontStyle + bold + + + + name + Italic Markup + scope + markup.italic + settings + + fontStyle + italic + + + + name + Heading Markup + scope + markup.heading + settings + + fontStyle + bold + foreground + #8ec07c + + + + + + + + + name + PHP: class name + scope + entity.name.type.class.php + settings + + foreground + #8ec07c + + + + name + PHP: Comment + scope + keyword.other.phpdoc + settings + + fontStyle + + foreground + #928374 + + + + + + name + CSS: numbers + scope + constant.numeric.css, keyword.other.unit.css + settings + + foreground + #d3869b + + + + name + CSS: entity dot, hash, comma, etc. + scope + punctuation.definition.entity.css + settings + + foreground + #b8bb26 + + + + + name + JS: variable + scope + variable.language.js + settings + + foreground + #fabd2f + + + + name + JS: unquoted labe + scope + string.unquoted.label.js + settings + + foreground + #fdf4c1 + + + + + name + Constant other sql + scope + constant.other.table-name.sql + settings + + fontStyle + + foreground + #b8bb26 + + + + name + Constant other sql + scope + constant.other.database-name.sql + settings + + fontStyle + + foreground + #b8bb26 + + + + + + + + name + dired directory + scope + storage.type.dired.item.directory, dired.item.directory + settings + + foreground + #8ec07c + + + + + + name + orgmode link + scope + orgmode.link + settings + + foreground + #fabd2f + fontStyle + underline + + + + name + orgmode page + scope + orgmode.page + settings + + foreground + #b8bb26 + + + + name + orgmode break + scope + orgmode.break + settings + + foreground + #d3869b + + + + name + orgmode headline + scope + orgmode.headline + settings + + foreground + #8ec07c + + + + name + orgmode tack + scope + orgmode.tack + settings + + foreground + #fabd2f + + + + name + orgmode follow up + scope + orgmode.follow_up + settings + + foreground + #fabd2f + + + + name + orgmode checkbox + scope + orgmode.checkbox + settings + + foreground + #fabd2f + + + + name + orgmode checkbox summary + scope + orgmode.checkbox.summary + settings + + foreground + #fabd2f + + + + name + orgmode tags + scope + orgmode.tags + settings + + foreground + #fa5c4b + + + + + uuid + 06CD1FB2-A00A-4F8C-97B2-60E131980454 + + + diff --git a/templates/utils/lang-mos.typ b/templates/utils/lang-mos.typ index a66f437..ecd01e4 100644 --- a/templates/utils/lang-mos.typ +++ b/templates/utils/lang-mos.typ @@ -60,13 +60,13 @@ } -#let mos-n(sg, pl: none) = { +#let mos-n(sg, pl: none, open: false) = { let pr = if pl == false { "" } else if pl != none { pl } else { mos-pluralise(sg) } let (ps, pv) = mos-nstem(pr) let (ss, sv) = mos-nstem(sg) let c(it) = [#base.s("nahan", it) \ #html.span(class: "low", mos-translit(it))] - html.details({ + html.details(open: open, { html.summary[ *Declension for* _#mos-cit(sg)_ #if pl != none and pl != false [*Irr. pl. stem* _#mos-cit(pl)_] else if ( pl == false @@ -82,10 +82,10 @@ ) }) } -#let mos-v(w) = { +#let mos-v(w, open: false) = { let s = mos-vstem(w) let c(it) = [#base.s("nahan", it) \ #html.span(class: "low", mos-translit(it))] - html.details({ + html.details(open: open, { html.summary[*Conjugation for* _#mos-cit(w)_] table( columns: 5, @@ -106,14 +106,14 @@ }) } -#let mos-pron(this) = { +#let mos-pron(this, open: false) = { let c(k, h: false) = if h and k != this [ #base.wl("/dict/" + mos-translit(k), base.s("nahan", k), "mos") \ #html.span(class: "low", mos-translit(k)) ] else [ #base.s("nahan", k) \ #html.span(class: "low", mos-translit(k)) ] - html.details({ + html.details(open: open, { html.summary[Mosici Pronouns] table( columns: 6,