From c6fc0b093bc11eadd097dadfc65f9219a6ec0385 Mon Sep 17 00:00:00 2001 From: Yadunand Prem Date: Tue, 5 Aug 2025 00:34:58 +0800 Subject: [PATCH] Init zine --- .vscode/settings.json | 2 + assets/Temml-Local.css | 249 ++++++++++++++++++++++++++++ assets/Temml.woff2 | Bin 0 -> 9404 bytes assets/highlight.css | 37 +++++ assets/render-mathtex.js | 8 + assets/style.css | 85 ++++++++++ assets/temml.min.js | 1 + assets/under-construction.gif | Bin 0 -> 2583 bytes content/about.smd | 56 +++++++ content/blog/first-post/fanzine.jpg | Bin 0 -> 124852 bytes content/blog/first-post/index.smd | 110 ++++++++++++ content/blog/index.smd | 40 +++++ content/blog/second-post.smd | 28 ++++ content/devlog/1989.smd | 18 ++ content/devlog/1990.smd | 38 +++++ content/devlog/index.smd | 32 ++++ content/index.smd | 88 ++++++++++ layouts/blog.shtml | 25 +++ layouts/blog.xml | 19 +++ layouts/devlog-archive.shtml | 25 +++ layouts/devlog.shtml | 45 +++++ layouts/devlog.xml | 21 +++ layouts/index.shtml | 7 + layouts/page.shtml | 7 + layouts/post.shtml | 40 +++++ layouts/templates/base.shtml | 36 ++++ zine.ziggy | 10 ++ 27 files changed, 1027 insertions(+) create mode 100644 .vscode/settings.json create mode 100644 assets/Temml-Local.css create mode 100644 assets/Temml.woff2 create mode 100644 assets/highlight.css create mode 100644 assets/render-mathtex.js create mode 100644 assets/style.css create mode 100644 assets/temml.min.js create mode 100644 assets/under-construction.gif create mode 100644 content/about.smd create mode 100644 content/blog/first-post/fanzine.jpg create mode 100644 content/blog/first-post/index.smd create mode 100644 content/blog/index.smd create mode 100644 content/blog/second-post.smd create mode 100644 content/devlog/1989.smd create mode 100644 content/devlog/1990.smd create mode 100644 content/devlog/index.smd create mode 100644 content/index.smd create mode 100644 layouts/blog.shtml create mode 100644 layouts/blog.xml create mode 100644 layouts/devlog-archive.shtml create mode 100644 layouts/devlog.shtml create mode 100644 layouts/devlog.xml create mode 100644 layouts/index.shtml create mode 100644 layouts/page.shtml create mode 100644 layouts/post.shtml create mode 100644 layouts/templates/base.shtml create mode 100644 zine.ziggy diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..7a73a41 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/assets/Temml-Local.css b/assets/Temml-Local.css new file mode 100644 index 0000000..fe05099 --- /dev/null +++ b/assets/Temml-Local.css @@ -0,0 +1,249 @@ +/* +Temml.woff2 is a clone of KaTeX_Script-Regular, except that the code points +have been changed from ASCII to Unicode Mathematical Alphanumeric Symbols Script capitals, +Unicode range 1D49C to 1D4B5. +*/ + +@font-face { + font-family: 'Temml'; + src: url('Temml.woff2') format('woff2'); + font-weight: normal; + font-style: normal; +} + +math { + font-family: "Cambria Math", 'STIXTwoMath-Regular', 'NotoSansMath-Regular', math; + font-style: normal; + font-weight: normal; + line-height: normal; + font-size-adjust: none; + text-indent: 0; + text-transform: none; + letter-spacing: normal; + word-wrap: normal; + direction: ltr; + /* Prevent Firefox from omitting the dot on i or j. */ + font-feature-settings: "dtls" off; +} + +math * { + border-color: currentColor; +} + +/* Next line is active in Firefox and Safari. + * Not in Chromium, which recognizes display: "block math" written inline. */ +math.tml-display { display: block; } + +*.mathcal { + /* NotoSans */ + font-feature-settings: 'ss01'; +} + +math .mathscr { + font-family: "Temml"; +} + +mo.tml-prime { + font-family: Temml; +} + +/* Prevent f' from overlapping in Chromium */ +mo.prime-pad { + padding-left: 0.08em; +} + +/* \cancel & \phase use background images. Get them to print. */ +menclose { + -webkit-print-color-adjust: exact; /* Chrome & Edge */ + print-color-adjust: exact; +} + +/* Array cell justification in Firefox & WebKit */ +.tml-right { + text-align: right; +} +.tml-left { + text-align: left; +} + +/* Styles for Chromium only */ +@supports (not (-webkit-backdrop-filter: blur(1px))) and (not (-moz-appearance: none)) { + /* MathML Core & Chromium do not support the MathML 3.0 element attributes. */ + /* So use styles. */ + menclose { + position: relative; + padding: 0.5ex 0ex; + } + + .tml-overline { + padding: 0.1em 0 0 0; + border-top: 0.065em solid; + } + + .tml-underline { + padding: 0 0 0.1em 0; + border-bottom: 0.065em solid; + } + + .tml-cancel { + display: inline-block; + position: absolute; + left: 0.5px; + bottom: 0; + width: 100%; + height: 100%; + background-color: currentColor; + } + .upstrike { + clip-path: polygon(0.05em 100%, 0em calc(100% - 0.05em), calc(100% - 0.05em) 0em, 100% 0.05em); + } + .downstrike { + clip-path: polygon(0em 0.05em, 0.05em 0em, 100% calc(100% - 0.05em), calc(100% - 0.05em) 100%); + } + .sout { + clip-path: polygon(0em calc(55% + 0.0333em), 0em calc(55% - 0.0333em), 100% calc(55% - 0.0333em), 100% calc(55% + 0.0333em)); + } + .tml-xcancel { + background: linear-gradient(to top left, + rgba(0,0,0,0) 0%, + rgba(0,0,0,0) calc(50% - 0.06em), + rgba(0,0,0,1) 50%, + rgba(0,0,0,0) calc(50% + 0.06em), + rgba(0,0,0,0) 100%), + linear-gradient(to top right, + rgba(0,0,0,0) 0%, + rgba(0,0,0,0) calc(50% - 0.06em), + rgba(0,0,0,1) 50%, + rgba(0,0,0,0) calc(50% + 0.06em), + rgba(0,0,0,0) 100%) + } + + .longdiv-top { + border-top: 0.067em solid; + padding: 0.1em 0.2em 0.2em 0.433em; + } + .longdiv-arc { + position: absolute; + top: 0; + bottom: 0.1em; + left: -0.4em; + width: 0.7em; + border: 0.067em solid; + transform: translateY(-0.067em); + border-radius: 70%; + clip-path: inset(0 0 0 0.4em); + box-sizing: border-box;} + .menclose {display: inline-block; + text-align: left; + position: relative; + } + + .phasor-bottom { + border-bottom: 0.067em solid; + padding: 0.2em 0.2em 0.1em 0.6em; + } + .phasor-angle { + display: inline-block; + position: absolute; + left: 0.5px; + bottom: -0.04em; + height: 100%; + aspect-ratio: 0.5; + background-color: currentColor; + clip-path: polygon(0.05em 100%, 0em calc(100% - 0.05em), calc(100% - 0.05em) 0em, 100% 0.05em); + } + + .tml-box { + padding: 3pt 0 3pt 0; + border: 1px solid; + } + .tml-fbox { + padding: 3pt; + border: 1px solid; + } + + .circle-pad { + padding: 0.267em; + } + .textcircle { + position: absolute; + top: 0; + bottom: 0; + right: 0; + left: 0; + border: 0.067em solid; + border-radius: 50%; + } + + .actuarial { + padding: 0.03889em 0.03889em 0 0.03889em; + border-width: 0.08em 0.08em 0em 0em; + border-style: solid; + margin-right: 0.03889em; + } + + /* Stretch \widetilde */ + .tml-crooked-2 { + transform: scale(2.0, 1.1) + } + .tml-crooked-3 { + transform: scale(3.0, 1.3) + } + .tml-crooked-4 { + transform: scale(4.0, 1.4) + } + /* set array cell justification */ + .tml-right { + text-align: -webkit-right; + } + .tml-left { + text-align: -webkit-left; + } +} + +/* Adjust WebKit accents */ +@supports (-webkit-backdrop-filter: blur(1px)) { + .tml-xshift { transform: translate(0px, 0.45em) } + .tml-capshift { transform: translate(0px, 0.35em) } +} + +/* flex-wrap for line-breaking in Chromium */ +math { + display: inline-flex; + flex-wrap: wrap; + align-items: baseline; +} +math > mrow { + padding: 0.5ex 0ex; +} + +/* Default mtd top padding is 0.5ex per MathML-Core and user-agent CSS */ +/* We adjust for jot and small */ +mtable.tml-jot mtd { + padding-top: 0.7ex; + padding-bottom: 0.7ex; +} +mtable.tml-small mtd { + padding-top: 0.35ex; + padding-bottom: 0.35ex; +} + +/* Firefox */ +@-moz-document url-prefix() { + /* Avoid flex-wrap */ + math { display: inline; } + math > mrow { padding: 0 } + /* Adjust Firefox spacing between array rows */ + mtd, mtable.tml-small mtd { padding-top: 0; padding-bottom: 0; } + mtable.tml-jot mtd { padding-top: 0.2ex; padding-bottom: 0.ex; } +} + +/* AMS environment auto-numbering via CSS counter. */ +.tml-eqn::before { + counter-increment: tmlEqnNo; + content: "(" counter(tmlEqnNo) ")"; +} + +body { + counter-reset: tmlEqnNo; +} diff --git a/assets/Temml.woff2 b/assets/Temml.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..fccefda4b3a0d812687d62efff0d6a554347ddc8 GIT binary patch literal 9404 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 Cd@~6E literal 0 HcmV?d00001 diff --git a/assets/highlight.css b/assets/highlight.css new file mode 100644 index 0000000..f2c4c4a --- /dev/null +++ b/assets/highlight.css @@ -0,0 +1,37 @@ +:root { + --light-yellow: #e5c07b; + --dark-yellow: #d19a66; + --blue: #61afef; + --cyan: #56b6c2; + --light-red: #e06c75; + --dark-red: #be5046; + --comment-gray: #5c6370; + --magenta: #c678dd; +} + +pre { + border-top: 1px solid white; + border-bottom: 1px solid white; + padding: 10px 5px; +} + +code.ziggy { + color: var(--cyan); +} + +code.ziggy .keyword, +code.ziggy .type { + color: var(--light-yellow); +} + +code.ziggy .string { + color: var(--dark-yellow); +} + +code.ziggy .numeric.constant { + color: var(--magenta); +} + +code.ziggy .function { + color: var(--blue); +} \ No newline at end of file diff --git a/assets/render-mathtex.js b/assets/render-mathtex.js new file mode 100644 index 0000000..b4255ea --- /dev/null +++ b/assets/render-mathtex.js @@ -0,0 +1,8 @@ +let eqns = document.querySelectorAll("script[type='math/tex']"); +for (let i=eqns.length-1; i>=0; i--) { + let eqn = eqns[i]; + let src = eqn.text; + let d = eqn.closest('p') == null; + eqn.outerHTML = temml.renderToString(src, { displayMode: d }); +} + diff --git a/assets/style.css b/assets/style.css new file mode 100644 index 0000000..af526e4 --- /dev/null +++ b/assets/style.css @@ -0,0 +1,85 @@ +h1, +h2, +h3, +h4, +h5 { + color: #ddd; + font-family: "Verdana", sans-serif; +} + +b, +strong { + color: #fff; +} + +a { + color: #eee; +} + +html { + color: #ccc; + font-family: "Georgia", serif; + font-size: 1.2em; + display: flex; + flex-direction: row; + justify-content: center; + background-color: #111; +} + +body { + width: 800px; + padding: 15px; + display: flex; + flex-direction: column; +} + +.site-title { + font-size: 2.5em; + margin-bottom: 10px; + /* text-align: center; */ +} + +nav { + display: flex; + flex-direction: row; + justify-content: left; + font-size: 1.2em; + margin-bottom: 20px; +} + +.block { + border: 1px dotted white; + padding: 5px 15px; + margin: 0 10px; + text-align: center; + display: flex; + flex-direction: column; + justify-content: center; +} + +.block h1 { + font-size: 1em; + text-align: center; + margin-bottom: 0; +} + +.small { + font-size: 0.8em; +} + +.wave { + background: #111; + color: #fff; + text-shadow: 1px 1px 10px #fff, 1px 1px 10px #ccc; +} + +footer { + margin-top: 30px; + display: flex; + flex-direction: column; + align-items: center; +} + +footer hr { + width: 100%; +} \ No newline at end of file diff --git a/assets/temml.min.js b/assets/temml.min.js new file mode 100644 index 0000000..68a0e9f --- /dev/null +++ b/assets/temml.min.js @@ -0,0 +1 @@ +var temml=function(){"use strict";class e{constructor(t,r){let n,s=" "+t;const o=r&&r.loc;if(o&&o.start<=o.end){const e=o.lexer.input;n=o.start;const t=o.end;n===e.length?s+=" at end of input: ":s+=" at position "+(n+1)+": \n";const r=e.slice(n,t).replace(/[^]/g,"$&̲");let a,l;a=n>15?"…"+e.slice(n-15,n):e.slice(0,n),l=t+15":">","<":"<",'"':""","'":"'"},n=/[&><"']/g;const s=function(e){return"ordgroup"===e.type||"color"===e.type?1===e.body.length?s(e.body[0]):e:"font"===e.type?s(e.body):e};var o={deflt:function(e,t){return void 0===e?t:e},escape:function(e){return String(e).replace(n,(e=>r[e]))},hyphenate:function(e){return e.replace(t,"-$1").toLowerCase()},getBaseElem:s,isCharacterBox:function(e){const t=s(e);return"mathord"===t.type||"textord"===t.type||"atom"===t.type},protocolFromUrl:function(e){const t=/^[\x00-\x20]*([^\\/#?]*?)(:|�*58|�*3a|&colon)/i.exec(e);return t?":"!==t[2]?null:/^[a-zA-Z][a-zA-Z0-9+\-.]*$/.test(t[1])?t[1].toLowerCase():null:"_relative"},round:function(e){return+e.toFixed(4)}};class a{constructor(e){e=e||{},this.displayMode=o.deflt(e.displayMode,!1),this.annotate=o.deflt(e.annotate,!1),this.leqno=o.deflt(e.leqno,!1),this.throwOnError=o.deflt(e.throwOnError,!1),this.errorColor=o.deflt(e.errorColor,"#b22222"),this.macros=e.macros||{},this.wrap=o.deflt(e.wrap,"tex"),this.xml=o.deflt(e.xml,!1),this.colorIsTextColor=o.deflt(e.colorIsTextColor,!1),this.strict=o.deflt(e.strict,!1),this.trust=o.deflt(e.trust,!1),this.maxSize=void 0===e.maxSize?[1/0,1/0]:Array.isArray(e.maxSize)?e.maxSize:[1/0,1/0],this.maxExpand=Math.max(0,o.deflt(e.maxExpand,1e3))}isTrusted(e){if(e.url&&!e.protocol){const t=o.protocolFromUrl(e.url);if(null==t)return!1;e.protocol=t}const t="function"==typeof this.trust?this.trust(e):this.trust;return Boolean(t)}}const l={},i={};function c({type:e,names:t,props:r,handler:n,mathmlBuilder:s}){const o={type:e,numArgs:r.numArgs,argTypes:r.argTypes,allowedInArgument:!!r.allowedInArgument,allowedInText:!!r.allowedInText,allowedInMath:void 0===r.allowedInMath||r.allowedInMath,numOptionalArgs:r.numOptionalArgs||0,infix:!!r.infix,primitive:!!r.primitive,handler:n};for(let e=0;ee.toText())).join("")}}const h=function(e){return e.filter((e=>e)).join(" ")},g=function(e,t){this.classes=e||[],this.attributes={},this.style=t||{}},f=function(e){const t=document.createElement(e);t.className=h(this.classes);for(const e in this.style)Object.prototype.hasOwnProperty.call(this.style,e)&&(t.style[e]=this.style[e]);for(const e in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,e)&&t.setAttribute(e,this.attributes[e]);for(let e=0;e`,t};class y{constructor(e,t,r){g.call(this,e,r),this.children=t||[]}setAttribute(e,t){this.attributes[e]=t}toNode(){return f.call(this,"span")}toMarkup(){return b.call(this,"span")}}let w=class{constructor(e){this.text=e}toNode(){return document.createTextNode(this.text)}toMarkup(){return o.escape(this.text)}};class x{constructor(e,t,r){this.href=e,this.classes=t,this.children=r||[]}toNode(){const e=document.createElement("a");e.setAttribute("href",this.href),this.classes.length>0&&(e.className=h(this.classes));for(let t=0;t0&&(e+=` class="${o.escape(h(this.classes))}"`),e+=">";for(let t=0;t0&&(e.className=h(this.classes));for(const t in this.style)Object.prototype.hasOwnProperty.call(this.style,t)&&(e.style[t]=this.style[t]);for(let t=0;t0&&(e+=` class="${o.escape(h(this.classes))}"`);let t="";for(const e in this.style)Object.prototype.hasOwnProperty.call(this.style,e)&&(t+=`${o.hyphenate(e)}:${this.style[e]};`);t&&(e+=` style="${t}"`),e+=">";for(let t=0;t",e}toText(){return this.children.map((e=>e.toText())).join("")}}class A{constructor(e){this.text=e}toNode(){return document.createTextNode(this.text)}toMarkup(){return o.escape(this.toText())}toText(){return this.text}}const N=e=>{let t;return 1===e.length&&"mrow"===e[0].type?(t=e.pop(),t.type="mstyle"):t=new v("mstyle",e),t};var T={MathNode:v,TextNode:A,newDocumentFragment:function(e){return new u(e)}};const S=e=>{let t=0;if(e.body)for(const r of e.body)t+=S(r);else if("supsub"===e.type)t+=S(e.base),e.sub&&(t+=.7*S(e.sub)),e.sup&&(t+=.7*S(e.sup));else if("mathord"===e.type||"textord"===e.type)for(const r of e.text.split("")){const e=r.codePointAt(0);t+=96{const t=O(e.label);if(M.includes(e.label)){const r=S(e.base);1","\\gt",!0),I(L,_,"∈","\\in",!0),I(L,_,"∉","\\notin",!0),I(L,_,"","\\@not"),I(L,_,"⊂","\\subset",!0),I(L,_,"⊃","\\supset",!0),I(L,_,"⊆","\\subseteq",!0),I(L,_,"⊇","\\supseteq",!0),I(L,_,"⊈","\\nsubseteq",!0),I(L,_,"⊈","\\nsubseteqq"),I(L,_,"⊉","\\nsupseteq",!0),I(L,_,"⊉","\\nsupseteqq"),I(L,_,"⊨","\\models"),I(L,_,"←","\\leftarrow",!0),I(L,_,"≤","\\le"),I(L,_,"≤","\\leq",!0),I(L,_,"<","\\lt",!0),I(L,_,"→","\\rightarrow",!0),I(L,_,"→","\\to"),I(L,_,"≱","\\ngeq",!0),I(L,_,"≱","\\ngeqq"),I(L,_,"≱","\\ngeqslant"),I(L,_,"≰","\\nleq",!0),I(L,_,"≰","\\nleqq"),I(L,_,"≰","\\nleqslant"),I(L,_,"⫫","\\Perp",!0),I(L,W," ","\\ "),I(L,W," ","\\space"),I(L,W," ","\\nobreakspace"),I(F,W," ","\\ "),I(F,W," "," "),I(F,W," ","\\space"),I(F,W," ","\\nobreakspace"),I(L,W,null,"\\nobreak"),I(L,W,null,"\\allowbreak"),I(L,V,",",","),I(F,V,":",":"),I(L,V,";",";"),I(L,G,"⊼","\\barwedge"),I(L,G,"⊻","\\veebar"),I(L,G,"⊙","\\odot",!0),I(L,G,"⊕︎","\\oplus"),I(L,G,"⊗","\\otimes",!0),I(L,X,"∂","\\partial",!0),I(L,G,"⊘","\\oslash",!0),I(L,G,"⊚","\\circledcirc",!0),I(L,G,"⊡","\\boxdot",!0),I(L,G,"△","\\bigtriangleup"),I(L,G,"▽","\\bigtriangledown"),I(L,G,"†","\\dagger"),I(L,G,"⋄","\\diamond"),I(L,G,"◃","\\triangleleft"),I(L,G,"▹","\\triangleright"),I(L,H,"{","\\{"),I(F,X,"{","\\{"),I(F,X,"{","\\textbraceleft"),I(L,j,"}","\\}"),I(F,X,"}","\\}"),I(F,X,"}","\\textbraceright"),I(L,H,"{","\\lbrace"),I(L,j,"}","\\rbrace"),I(L,H,"[","\\lbrack",!0),I(F,X,"[","\\lbrack",!0),I(L,j,"]","\\rbrack",!0),I(F,X,"]","\\rbrack",!0),I(L,H,"(","\\lparen",!0),I(L,j,")","\\rparen",!0),I(L,H,"⦇","\\llparenthesis",!0),I(L,j,"⦈","\\rrparenthesis",!0),I(F,X,"<","\\textless",!0),I(F,X,">","\\textgreater",!0),I(L,H,"⌊","\\lfloor",!0),I(L,j,"⌋","\\rfloor",!0),I(L,H,"⌈","\\lceil",!0),I(L,j,"⌉","\\rceil",!0),I(L,X,"\\","\\backslash"),I(L,X,"|","|"),I(L,X,"|","\\vert"),I(F,X,"|","\\textbar",!0),I(L,X,"‖","\\|"),I(L,X,"‖","\\Vert"),I(F,X,"‖","\\textbardbl"),I(F,X,"~","\\textasciitilde"),I(F,X,"\\","\\textbackslash"),I(F,X,"^","\\textasciicircum"),I(L,_,"↑","\\uparrow",!0),I(L,_,"⇑","\\Uparrow",!0),I(L,_,"↓","\\downarrow",!0),I(L,_,"⇓","\\Downarrow",!0),I(L,_,"↕","\\updownarrow",!0),I(L,_,"⇕","\\Updownarrow",!0),I(L,U,"∐","\\coprod"),I(L,U,"⋁","\\bigvee"),I(L,U,"⋀","\\bigwedge"),I(L,U,"⨄","\\biguplus"),I(L,U,"⨄","\\bigcupplus"),I(L,U,"⨃","\\bigcupdot"),I(L,U,"⨇","\\bigdoublevee"),I(L,U,"⨈","\\bigdoublewedge"),I(L,U,"⋂","\\bigcap"),I(L,U,"⋃","\\bigcup"),I(L,U,"∫","\\int"),I(L,U,"∫","\\intop"),I(L,U,"∬","\\iint"),I(L,U,"∭","\\iiint"),I(L,U,"∏","\\prod"),I(L,U,"∑","\\sum"),I(L,U,"⨂","\\bigotimes"),I(L,U,"⨁","\\bigoplus"),I(L,U,"⨀","\\bigodot"),I(L,U,"⨉","\\bigtimes"),I(L,U,"∮","\\oint"),I(L,U,"∯","\\oiint"),I(L,U,"∰","\\oiiint"),I(L,U,"∱","\\intclockwise"),I(L,U,"∲","\\varointclockwise"),I(L,U,"⨌","\\iiiint"),I(L,U,"⨍","\\intbar"),I(L,U,"⨎","\\intBar"),I(L,U,"⨏","\\fint"),I(L,U,"⨒","\\rppolint"),I(L,U,"⨓","\\scpolint"),I(L,U,"⨕","\\pointint"),I(L,U,"⨖","\\sqint"),I(L,U,"⨗","\\intlarhk"),I(L,U,"⨘","\\intx"),I(L,U,"⨙","\\intcap"),I(L,U,"⨚","\\intcup"),I(L,U,"⨅","\\bigsqcap"),I(L,U,"⨆","\\bigsqcup"),I(L,U,"∫","\\smallint"),I(F,P,"…","\\textellipsis"),I(L,P,"…","\\mathellipsis"),I(F,P,"…","\\ldots",!0),I(L,P,"…","\\ldots",!0),I(L,P,"⋰","\\iddots",!0),I(L,P,"⋯","\\@cdots",!0),I(L,P,"⋱","\\ddots",!0),I(L,X,"⋮","\\varvdots"),I(F,X,"⋮","\\varvdots"),I(L,D,"ˊ","\\acute"),I(L,D,"`","\\grave"),I(L,D,"¨","\\ddot"),I(L,D,"…","\\dddot"),I(L,D,"….","\\ddddot"),I(L,D,"~","\\tilde"),I(L,D,"‾","\\bar"),I(L,D,"˘","\\breve"),I(L,D,"ˇ","\\check"),I(L,D,"^","\\hat"),I(L,D,"→","\\vec"),I(L,D,"˙","\\dot"),I(L,D,"˚","\\mathring"),I(L,R,"ı","\\imath",!0),I(L,R,"ȷ","\\jmath",!0),I(L,X,"ı","ı"),I(L,X,"ȷ","ȷ"),I(F,X,"ı","\\i",!0),I(F,X,"ȷ","\\j",!0),I(F,X,"ø","\\o",!0),I(L,R,"ø","\\o",!0),I(F,X,"Ø","\\O",!0),I(L,R,"Ø","\\O",!0),I(F,D,"ˊ","\\'"),I(F,D,"ˋ","\\`"),I(F,D,"ˆ","\\^"),I(F,D,"˜","\\~"),I(F,D,"ˉ","\\="),I(F,D,"˘","\\u"),I(F,D,"˙","\\."),I(F,D,"¸","\\c"),I(F,D,"˚","\\r"),I(F,D,"ˇ","\\v");I(F,D,"¨",'\\"'),I(F,D,"˝","\\H"),I(L,D,"ˊ","\\'"),I(L,D,"ˋ","\\`"),I(L,D,"ˆ","\\^"),I(L,D,"˜","\\~"),I(L,D,"ˉ","\\="),I(L,D,"˘","\\u"),I(L,D,"˙","\\."),I(L,D,"¸","\\c"),I(L,D,"˚","\\r"),I(L,D,"ˇ","\\v"),I(L,D,"¨",'\\"'),I(L,D,"˝","\\H");const Z={"--":!0,"---":!0,"``":!0,"''":!0};I(F,X,"–","--",!0),I(F,X,"–","\\textendash"),I(F,X,"—","---",!0),I(F,X,"—","\\textemdash"),I(F,X,"‘","`",!0),I(F,X,"‘","\\textquoteleft"),I(F,X,"’","'",!0),I(F,X,"’","\\textquoteright"),I(F,X,"“","``",!0),I(F,X,"“","\\textquotedblleft"),I(F,X,"”","''",!0),I(F,X,"”","\\textquotedblright"),I(L,X,"°","\\degree",!0),I(F,X,"°","\\degree"),I(F,X,"°","\\textdegree",!0),I(L,X,"£","\\pounds"),I(L,X,"£","\\mathsterling",!0),I(F,X,"£","\\pounds"),I(F,X,"£","\\textsterling",!0),I(L,X,"✠","\\maltese"),I(F,X,"✠","\\maltese"),I(L,X,"€","\\euro",!0),I(F,X,"€","\\euro",!0),I(F,X,"€","\\texteuro"),I(L,X,"©","\\copyright",!0),I(F,X,"©","\\textcopyright"),I(L,X,"⌀","\\diameter",!0),I(F,X,"⌀","\\diameter"),I(L,X,"𝛤","\\varGamma"),I(L,X,"𝛥","\\varDelta"),I(L,X,"𝛩","\\varTheta"),I(L,X,"𝛬","\\varLambda"),I(L,X,"𝛯","\\varXi"),I(L,X,"𝛱","\\varPi"),I(L,X,"𝛴","\\varSigma"),I(L,X,"𝛶","\\varUpsilon"),I(L,X,"𝛷","\\varPhi"),I(L,X,"𝛹","\\varPsi"),I(L,X,"𝛺","\\varOmega"),I(F,X,"𝛤","\\varGamma"),I(F,X,"𝛥","\\varDelta"),I(F,X,"𝛩","\\varTheta"),I(F,X,"𝛬","\\varLambda"),I(F,X,"𝛯","\\varXi"),I(F,X,"𝛱","\\varPi"),I(F,X,"𝛴","\\varSigma"),I(F,X,"𝛶","\\varUpsilon"),I(F,X,"𝛷","\\varPhi"),I(F,X,"𝛹","\\varPsi"),I(F,X,"𝛺","\\varOmega");const Y='0123456789/@."';for(let e=0;e<14;e++){const t=Y.charAt(e);I(L,X,t,t)}const J='0123456789!@*()-=+";:?/.,';for(let e=0;e<25;e++){const t=J.charAt(e);I(F,X,t,t)}const K="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";for(let e=0;e<52;e++){const t=K.charAt(e);I(L,R,t,t),I(F,X,t,t)}const Q="ÇÐÞçþℂℍℕℙℚℝℤℎℏℊℋℌℐℑℒℓ℘ℛℜℬℰℱℳℭℨ";for(let e=0;e<30;e++){const t=Q.charAt(e);I(L,R,t,t),I(F,X,t,t)}let ee="";for(let e=0;e<52;e++){ee=String.fromCharCode(55349,56320+e),I(L,R,ee,ee),I(F,X,ee,ee),ee=String.fromCharCode(55349,56372+e),I(L,R,ee,ee),I(F,X,ee,ee),ee=String.fromCharCode(55349,56424+e),I(L,R,ee,ee),I(F,X,ee,ee),ee=String.fromCharCode(55349,56580+e),I(L,R,ee,ee),I(F,X,ee,ee),ee=String.fromCharCode(55349,56736+e),I(L,R,ee,ee),I(F,X,ee,ee),ee=String.fromCharCode(55349,56788+e),I(L,R,ee,ee),I(F,X,ee,ee),ee=String.fromCharCode(55349,56840+e),I(L,R,ee,ee),I(F,X,ee,ee),ee=String.fromCharCode(55349,56944+e),I(L,R,ee,ee),I(F,X,ee,ee),ee=String.fromCharCode(55349,56632+e),I(L,R,ee,ee),I(F,X,ee,ee);const t=K.charAt(e);ee=String.fromCharCode(55349,56476+e),I(L,R,t,ee),I(F,X,t,ee)}for(let e=0;e<10;e++)ee=String.fromCharCode(55349,57294+e),I(L,R,ee,ee),I(F,X,ee,ee),ee=String.fromCharCode(55349,57314+e),I(L,R,ee,ee),I(F,X,ee,ee),ee=String.fromCharCode(55349,57324+e),I(L,R,ee,ee),I(F,X,ee,ee),ee=String.fromCharCode(55349,57334+e),I(L,R,ee,ee),I(F,X,ee,ee);const te=function(e,t,r){return!$[t][e]||!$[t][e].replace||55349===e.charCodeAt(0)||Object.prototype.hasOwnProperty.call(Z,e)&&r&&(r.fontFamily&&"tt"===r.fontFamily.slice(4,6)||r.font&&"tt"===r.font.slice(4,6))||(e=$[t][e].replace),new T.TextNode(e)},re=(e,t)=>{if(0===e.children.length||"mtext"!==e.children[e.children.length-1].type){const r=new T.MathNode("mtext",[new T.TextNode(t.children[0].text)]);e.children.push(r)}else e.children[e.children.length-1].children[0].text+=t.children[0].text},ne=e=>{if("mrow"!==e.type&&"mstyle"!==e.type)return e;if(0===e.children.length)return e;const t=new T.MathNode("mrow");for(let r=0;r0&&" "===n.children[0].text.charAt(s-1)&&(n.children[0].text=n.children[0].text.slice(0,-1)+" ");for(const[t,r]of Object.entries(e.attributes))n.attributes[t]=r}return 1===t.children.length&&"mtext"===t.children[0].type?t.children[0]:t},se=function(e,t=!1){if(!(1!==e.length||e[0]instanceof u))return e[0];if(!t){e[0]instanceof v&&"mo"===e[0].type&&!e[0].attributes.fence&&(e[0].attributes.lspace="0em",e[0].attributes.rspace="0em");const t=e.length-1;e[t]instanceof v&&"mo"===e[t].type&&!e[t].attributes.fence&&(e[t].attributes.lspace="0em",e[t].attributes.rspace="0em")}return new T.MathNode("mrow",e)};function oe(e){if(!e)return!1;if("mi"===e.type&&1===e.children.length){const t=e.children[0];return t instanceof A&&"."===t.text}if("mtext"===e.type&&1===e.children.length){const t=e.children[0];return t instanceof A&&" "===t.text}if("mo"===e.type&&1===e.children.length&&"true"===e.getAttribute("separator")&&"0em"===e.getAttribute("lspace")&&"0em"===e.getAttribute("rspace")){const t=e.children[0];return t instanceof A&&","===t.text}return!1}const ae=(e,t)=>{const r=e[t],n=e[t+1];return"atom"===r.type&&","===r.text&&r.loc&&n.loc&&r.loc.end===n.loc.start},le=e=>"atom"===e.type&&"rel"===e.family||"mclass"===e.type&&"mrel"===e.mclass,ie=function(e,t,r=!1){if(!r&&1===e.length){const r=de(e[0],t);return r instanceof v&&"mo"===r.type&&(r.setAttribute("lspace","0em"),r.setAttribute("rspace","0em")),[r]}const n=[],s=[];let o;for(let r=0;r0&&le(e[t])&&le(e[t-1])&&r.setAttribute("lspace","0em"),"mn"===r.type&&o&&"mn"===o.type)o.children.push(...r.children);else if(oe(r)&&o&&"mn"===o.type)o.children.push(...r.children);else if(o&&"mn"===o.type&&t=1&&o&&("mn"===o.type||oe(o))){const e=r.children[0];e instanceof v&&"mn"===e.type&&o&&(e.children=[...o.children,...e.children],n.pop())}n.push(r),o=r}}return n},ce=function(e,t,r=!1){return se(ie(e,t,r),r)},de=function(t,r){if(!t)return new T.MathNode("mrow");if(i[t.type]){return i[t.type](t,r)}throw new e("Got group of unknown type: '"+t.type+"'")},me=e=>new T.MathNode("mtd",[],[],{padding:"0",width:"50%"}),pe=["mrow","mtd","mtable","mtr"],ue=e=>{for(const t of e.children)if(t.type&&pe.includes(t.type)){if(t.classes&&"tml-label"===t.classes[0]){return t.label}{const e=ue(t);if(e)return e}}else if(!t.type){const e=ue(t);if(e)return e}};function he(e,t,r,n){let s=null;1===e.length&&"tag"===e[0].type&&(s=e[0].tag,e=e[0].body);const o=ie(e,r);if(1===o.length&&o[0]instanceof x)return o[0];const a=n.displayMode||n.annotate?"none":n.wrap,l=0===o.length?null:o[0];let i=1===o.length&&null===s&&l instanceof v?o[0]:function(e,t,r){const n=[];let s=[],o=[],a=0,l=0,i=0;for(;l0&&s.push(new T.MathNode("mrow",o)),s.push(r),o=[];const e=new T.MathNode("mtd",s);e.style.textAlign="left",n.push(new T.MathNode("mtr",[e])),s=[],l+=1}else{if(o.push(r),r.type&&"mo"===r.type&&1===r.children.length&&!Object.prototype.hasOwnProperty.call(r.attributes,"movablelimits")){const n=r.children[0].text;if("([{⌊⌈⟨⟮⎰⟦⦃".indexOf(n)>-1)i+=1;else if(")]}⌋⌉⟩⟯⎱⟦⦄".indexOf(n)>-1)i-=1;else if(0===i&&"="===t&&"="===n){if(a+=1,a>1){o.pop();const e=new T.MathNode("mrow",o);s.push(e),o=[r]}}else if(0===i&&"tex"===t&&"∇"!==n){const t=l0){const e=new T.MathNode("mrow",o);s.push(e)}if(n.length>0){const e=new T.MathNode("mtd",s);e.style.textAlign="left";const t=new T.MathNode("mtr",[e]);n.push(t);const o=new T.MathNode("mtable",n);return r||(o.setAttribute("columnalign","left"),o.setAttribute("rowspacing","0em")),o}return T.newDocumentFragment(s)}(o,a,n.displayMode);if(s&&(i=((e,t,r,n)=>{t=ce(t[0].body,r),(t=ne(t)).classes.push("tml-tag");const s=ue(e);e=new T.MathNode("mtd",[e]);const o=[me(),e,me()];o[n?0:2].classes.push(n?"tml-left":"tml-right"),o[n?0:2].children.push(t);const a=new T.MathNode("mtr",o,["tml-tageqn"]);s&&a.setAttribute("id",s);const l=new T.MathNode("mtable",[a]);return l.style.width="100%",l.setAttribute("displaystyle","true"),l})(i,s,r,n.leqno)),n.annotate){const e=new T.MathNode("annotation",[new T.TextNode(t)]);e.setAttribute("encoding","application/x-tex"),i=new T.MathNode("semantics",[i,e])}const c=new T.MathNode("math",[i]);return n.xml&&c.setAttribute("xmlns","http://www.w3.org/1998/Math/MathML"),i.style.width&&(c.style.width="100%"),n.displayMode&&(c.setAttribute("display","block"),c.style.display="block math",c.classes=["tml-display"]),c}const ge="acegıȷmnopqrsuvwxyzαγεηικμνοπρςστυχωϕ𝐚𝐜𝐞𝐠𝐦𝐧𝐨𝐩𝐪𝐫𝐬𝐮𝐯𝐰𝐱𝐲𝐳",fe="ABCDEFGHIJKLMNOPQRSTUVWXYZbdfhkltΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩβδλζφθψ𝐀𝐁𝐂𝐃𝐄𝐅𝐆𝐇𝐈𝐉𝐊𝐋𝐌𝐍𝐎𝐏𝐐𝐑𝐒𝐓𝐔𝐕𝐖𝐗𝐘𝐙𝐛𝐝𝐟𝐡𝐤𝐥𝐭",be=new Set(["\\alpha","\\gamma","\\delta","\\epsilon","\\eta","\\iota","\\kappa","\\mu","\\nu","\\pi","\\rho","\\sigma","\\tau","\\upsilon","\\chi","\\psi","\\omega","\\imath","\\jmath"]),ye=new Set(["\\Gamma","\\Delta","\\Sigma","\\Omega","\\beta","\\delta","\\lambda","\\theta","\\psi"]),we=(e,t)=>{const r=e.isStretchy?C(e):new T.MathNode("mo",[te(e.label,e.mode)]);if("\\vec"===e.label)r.style.transform="scale(0.75) translate(10%, 30%)";else if(r.style.mathStyle="normal",r.style.mathDepth="0",ke.has(e.label)&&o.isCharacterBox(e.base)){let t="";const n=e.base.text;(ge.indexOf(n)>-1||be.has(n))&&(t="tml-xshift"),(fe.indexOf(n)>-1||ye.has(n))&&(t="tml-capshift"),t&&r.classes.push(t)}e.isStretchy||r.setAttribute("stretchy","false");return new T.MathNode("\\c"===e.label?"munder":"mover",[de(e.base,t),r])},xe=new Set(["\\acute","\\grave","\\ddot","\\dddot","\\ddddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring"]),ke=new Set(["\\acute","\\bar","\\breve","\\check","\\dot","\\ddot","\\grave","\\hat","\\mathring","\\'","\\^","\\~","\\=","\\u","\\.",'\\"',"\\r","\\H","\\v"]),ve={"\\`":"̀","\\'":"́","\\^":"̂","\\~":"̃","\\=":"̄","\\u":"̆","\\.":"̇",'\\"':"̈","\\r":"̊","\\H":"̋","\\v":"̌"};c({type:"accent",names:["\\acute","\\grave","\\ddot","\\dddot","\\ddddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring","\\overparen","\\widecheck","\\widehat","\\wideparen","\\widetilde","\\overrightarrow","\\overleftarrow","\\Overrightarrow","\\overleftrightarrow","\\overgroup","\\overleftharpoon","\\overrightharpoon"],props:{numArgs:1},handler:(e,t)=>{const r=m(t[0]),n=!xe.has(e.funcName);return{type:"accent",mode:e.parser.mode,label:e.funcName,isStretchy:n,base:r}},mathmlBuilder:we}),c({type:"accent",names:["\\'","\\`","\\^","\\~","\\=","\\c","\\u","\\.",'\\"',"\\r","\\H","\\v"],props:{numArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["primitive"]},handler:(e,t)=>{const r=m(t[0]),n=e.parser.mode;return"math"===n&&e.parser.settings.strict&&console.log(`Temml parse error: Command ${e.funcName} is invalid in math mode.`),"text"===n&&r.text&&1===r.text.length&&e.funcName in ve&&ge.indexOf(r.text)>-1?{type:"textord",mode:"text",text:r.text+ve[e.funcName]}:{type:"accent",mode:n,label:e.funcName,isStretchy:!1,base:r}},mathmlBuilder:we}),c({type:"accentUnder",names:["\\underleftarrow","\\underrightarrow","\\underleftrightarrow","\\undergroup","\\underparen","\\utilde"],props:{numArgs:1},handler:({parser:e,funcName:t},r)=>{const n=r[0];return{type:"accentUnder",mode:e.mode,label:t,base:n}},mathmlBuilder:(e,t)=>{const r=C(e);r.style["math-depth"]=0;return new T.MathNode("munder",[de(e.base,t),r])}});const Ae={pt:800/803,pc:9600/803,dd:1238/1157*800/803,cc:12.792133216944668,nd:685/642*800/803,nc:1370/107*800/803,sp:1/65536*800/803,mm:25.4/72,cm:2.54/72,in:1/72,px:96/72},Ne=["em","ex","mu","pt","mm","cm","in","px","bp","pc","dd","cc","nd","nc","sp"],Te=function(e){return"string"!=typeof e&&(e=e.unit),Ne.indexOf(e)>-1},Se=e=>[1,.7,.5][Math.max(e-1,0)],qe=function(t,r){let n=t.number;if(r.maxSize[0]<0&&n>0)return{number:0,unit:"em"};const s=t.unit;switch(s){case"mm":case"cm":case"in":case"px":return n*Ae[s]>r.maxSize[1]?{number:r.maxSize[1],unit:"pt"}:{number:n,unit:s};case"em":case"ex":return"ex"===s&&(n*=.431),n=Math.min(n/Se(r.level),r.maxSize[0]),{number:o.round(n),unit:"em"};case"bp":return n>r.maxSize[1]&&(n=r.maxSize[1]),{number:n,unit:"pt"};case"pt":case"pc":case"dd":case"cc":case"nd":case"nc":case"sp":return n=Math.min(n*Ae[s],r.maxSize[1]),{number:o.round(n),unit:"pt"};case"mu":return n=Math.min(n/18,r.maxSize[0]),{number:o.round(n),unit:"em"};default:throw new e("Invalid unit: '"+s+"'")}},Oe=e=>{const t=new T.MathNode("mspace");return t.setAttribute("width",e+"em"),t},Me=(e,t=.3,r=0,n=!1)=>{if(null==e&&0===r)return Oe(t);const s=e?[e]:[];if(0!==t&&s.unshift(Oe(t)),r>0&&s.push(Oe(r)),n){const e=new T.MathNode("mpadded",s);return e.setAttribute("height","0"),e}return new T.MathNode("mrow",s)},Be=(e,t)=>Number(e)/Se(t),Ce=(e,t,r,n)=>{const s=B(e),o="eq"===e.slice(1,3),a="x"===e.charAt(1)?"1.75":"cd"===e.slice(2,4)?"3.0":o?"1.0":"2.0";s.setAttribute("lspace","0"),s.setAttribute("rspace",o?"0.5em":"0");const l=n.withLevel(n.level<2?2:3),i=Be(a,l.level),c=Be(a,3),d=Me(null,i.toFixed(4),0),m=Me(null,c.toFixed(4),0),p=Be(o?0:.3,l.level).toFixed(4);let u,h;const g=t&&t.body&&(t.body.body||t.body.length>0);if(g){let r=de(t,l);r=Me(r,p,p,"\\\\cdrightarrow"===e||"\\\\cdleftarrow"===e),u=new T.MathNode("mover",[r,m])}const f=r&&r.body&&(r.body.body||r.body.length>0);if(f){let e=de(r,l);e=Me(e,p,p),h=new T.MathNode("munder",[e,m])}let b;return b=g||f?g&&f?new T.MathNode("munderover",[s,h,u]):g?new T.MathNode("mover",[s,u]):new T.MathNode("munder",[s,h]):new T.MathNode("mover",[s,d]),"3.0"===a&&(b.style.height="1em"),b.setAttribute("accent","false"),b};c({type:"xArrow",names:["\\xleftarrow","\\xrightarrow","\\xLeftarrow","\\xRightarrow","\\xleftrightarrow","\\xLeftrightarrow","\\xhookleftarrow","\\xhookrightarrow","\\xmapsto","\\xrightharpoondown","\\xrightharpoonup","\\xleftharpoondown","\\xleftharpoonup","\\xlongequal","\\xtwoheadrightarrow","\\xtwoheadleftarrow","\\yields","\\yieldsLeft","\\mesomerism","\\longrightharpoonup","\\longleftharpoondown","\\\\cdrightarrow","\\\\cdleftarrow","\\\\cdlongequal"],props:{numArgs:1,numOptionalArgs:1},handler:({parser:e,funcName:t},r,n)=>({type:"xArrow",mode:e.mode,name:t,body:r[0],below:n[0]}),mathmlBuilder(e,t){const r=[Ce(e.name,e.body,e.below,t)];return r.unshift(Oe(.2778)),r.push(Oe(.2778)),new T.MathNode("mrow",r)}});const ze={"\\xtofrom":["\\xrightarrow","\\xleftarrow"],"\\xleftrightharpoons":["\\xleftharpoonup","\\xrightharpoondown"],"\\xrightleftharpoons":["\\xrightharpoonup","\\xleftharpoondown"],"\\yieldsLeftRight":["\\yields","\\yieldsLeft"],"\\equilibrium":["\\longrightharpoonup","\\longleftharpoondown"],"\\equilibriumRight":["\\longrightharpoonup","\\eqleftharpoondown"],"\\equilibriumLeft":["\\eqrightharpoonup","\\longleftharpoondown"]};c({type:"stackedArrow",names:["\\xtofrom","\\xleftrightharpoons","\\xrightleftharpoons","\\yieldsLeftRight","\\equilibrium","\\equilibriumRight","\\equilibriumLeft"],props:{numArgs:1,numOptionalArgs:1},handler({parser:e,funcName:t},r,n){const s=r[0]?{type:"hphantom",mode:e.mode,body:r[0]}:null,o=n[0]?{type:"hphantom",mode:e.mode,body:n[0]}:null;return{type:"stackedArrow",mode:e.mode,name:t,body:r[0],upperArrowBelow:o,lowerArrowBody:s,below:n[0]}},mathmlBuilder(e,t){const r=ze[e.name][0],n=ze[e.name][1],s=Ce(r,e.body,e.upperArrowBelow,t),o=Ce(n,e.lowerArrowBody,e.below,t);let a;const l=new T.MathNode("mpadded",[s]);if(l.setAttribute("voffset","0.3em"),l.setAttribute("height","+0.3em"),l.setAttribute("depth","-0.3em"),"\\equilibriumLeft"===e.name){const e=new T.MathNode("mpadded",[o]);e.setAttribute("width","0.5em"),a=new T.MathNode("mpadded",[Oe(.2778),e,l,Oe(.2778)])}else l.setAttribute("width","\\equilibriumRight"===e.name?"0.5em":"0"),a=new T.MathNode("mpadded",[Oe(.2778),l,o,Oe(.2778)]);return a.setAttribute("voffset","-0.18em"),a.setAttribute("height","-0.18em"),a.setAttribute("depth","+0.18em"),a}});const Ee={};function $e({type:e,names:t,props:r,handler:n,mathmlBuilder:s}){const o={type:e,numArgs:r.numArgs||0,allowedInText:!1,numOptionalArgs:0,handler:n};for(let e=0;e":"\\\\cdrightarrow","<":"\\\\cdleftarrow","=":"\\\\cdlongequal",A:"\\uparrow",V:"\\downarrow","|":"\\Vert",".":"no arrow"},Ge=e=>"textord"===e.type&&"@"===e.text;function je(e,t,r){const n=De[e];switch(n){case"\\\\cdrightarrow":case"\\\\cdleftarrow":return r.callFunction(n,[t[0]],[t[1]]);case"\\uparrow":case"\\downarrow":{const e={type:"atom",text:n,mode:"math",family:"rel"},s={type:"ordgroup",mode:"math",body:[r.callFunction("\\\\cdleft",[t[0]],[]),r.callFunction("\\Big",[e],[]),r.callFunction("\\\\cdright",[t[1]],[])],semisimple:!0};return r.callFunction("\\\\cdparent",[s],[])}case"\\\\cdlongequal":return r.callFunction("\\\\cdlongequal",[],[]);case"\\Vert":{const e={type:"textord",text:"\\Vert",mode:"math"};return r.callFunction("\\Big",[e],[])}default:return{type:"textord",text:" ",mode:"math"}}}c({type:"cdlabel",names:["\\\\cdleft","\\\\cdright"],props:{numArgs:1},handler:({parser:e,funcName:t},r)=>({type:"cdlabel",mode:e.mode,side:t.slice(4),label:r[0]}),mathmlBuilder(e,t){if(0===e.label.body.length)return new T.MathNode("mrow",t);const r=new T.MathNode("mtd",[de(e.label,t)]);r.style.padding="0";const n=new T.MathNode("mtr",[r]),s=new T.MathNode("mtable",[n]),o=new T.MathNode("mpadded",[s]);return o.setAttribute("width","0"),o.setAttribute("displaystyle","false"),o.setAttribute("scriptlevel","1"),"left"===e.side&&(o.style.display="flex",o.style.justifyContent="flex-end"),o}}),c({type:"cdlabelparent",names:["\\\\cdparent"],props:{numArgs:1},handler:({parser:e},t)=>({type:"cdlabelparent",mode:e.mode,fragment:t[0]}),mathmlBuilder:(e,t)=>new T.MathNode("mrow",[de(e.fragment,t)])});const Pe=e=>({type:"ordgroup",mode:"math",body:e,semisimple:!0}),Re=(e,t)=>({type:t,mode:"math",body:Pe(e)});class Ue{constructor(e,t,r){this.lexer=e,this.start=t,this.end=r}static range(e,t){return t?e&&e.loc&&t.loc&&e.loc.lexer===t.loc.lexer?new Ue(e.loc.lexer,e.loc.start,t.loc.end):null:e&&e.loc}}class He{constructor(e,t){this.text=e,this.loc=t}range(e,t){return new He(t,Ue.range(this,e))}}const Ve=0,_e=1,We=2,Xe=3,Ze={};function Ye(e,t){Ze[e]=t}const Je=Ze;Ye("\\noexpand",(function(e){const t=e.popToken();return e.isExpandable(t.text)&&(t.noexpand=!0,t.treatAsRelax=!0),{tokens:[t],numArgs:0}})),Ye("\\expandafter",(function(e){const t=e.popToken();return e.expandOnce(!0),{tokens:[t],numArgs:0}})),Ye("\\@firstoftwo",(function(e){return{tokens:e.consumeArgs(2)[0],numArgs:0}})),Ye("\\@secondoftwo",(function(e){return{tokens:e.consumeArgs(2)[1],numArgs:0}})),Ye("\\@ifnextchar",(function(e){const t=e.consumeArgs(3);e.consumeSpaces();const r=e.future();return 1===t[0].length&&t[0][0].text===r.text?{tokens:t[1],numArgs:0}:{tokens:t[2],numArgs:0}})),Ye("\\@ifstar","\\@ifnextchar *{\\@firstoftwo{#1}}"),Ye("\\TextOrMath",(function(e){const t=e.consumeArgs(2);return"text"===e.mode?{tokens:t[0],numArgs:0}:{tokens:t[1],numArgs:0}}));const Ke=e=>{let t="";for(let r=e.length-1;r>-1;r--)t+=e[r].text;return t},Qe={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,A:10,b:11,B:11,c:12,C:12,d:13,D:13,e:14,E:14,f:15,F:15},et=e=>{const t=e.future().text;return"EOF"===t?[null,""]:[Qe[t.charAt(0)],t]},tt=(e,t,r)=>{for(let n=1;n=0;e--){const s=t[e].loc.start;s>n&&(r+=" ",n=s),r+=t[e].text,n+=t[e].text.length}return r}Ye("\\char",(function(t){let r,n=t.popToken(),s="";if("'"===n.text)r=8,n=t.popToken();else if('"'===n.text)r=16,n=t.popToken();else if("`"===n.text)if(n=t.popToken(),"\\"===n.text[0])s=n.text.charCodeAt(1);else{if("EOF"===n.text)throw new e("\\char` missing argument");s=n.text.charCodeAt(0)}else r=10;if(r){let o,a=n.text;if(s=Qe[a.charAt(0)],null==s||s>=r)throw new e(`Invalid base-${r} digit ${n.text}`);for(s=tt(s,a,r),[o,a]=et(t);null!=o&&o":"\\dotsb","-":"\\dotsb","*":"\\dotsb",":":"\\dotsb","\\DOTSB":"\\dotsb","\\coprod":"\\dotsb","\\bigvee":"\\dotsb","\\bigwedge":"\\dotsb","\\biguplus":"\\dotsb","\\bigcap":"\\dotsb","\\bigcup":"\\dotsb","\\prod":"\\dotsb","\\sum":"\\dotsb","\\bigotimes":"\\dotsb","\\bigoplus":"\\dotsb","\\bigodot":"\\dotsb","\\bigsqcap":"\\dotsb","\\bigsqcup":"\\dotsb","\\bigtimes":"\\dotsb","\\And":"\\dotsb","\\longrightarrow":"\\dotsb","\\Longrightarrow":"\\dotsb","\\longleftarrow":"\\dotsb","\\Longleftarrow":"\\dotsb","\\longleftrightarrow":"\\dotsb","\\Longleftrightarrow":"\\dotsb","\\mapsto":"\\dotsb","\\longmapsto":"\\dotsb","\\hookrightarrow":"\\dotsb","\\doteq":"\\dotsb","\\mathbin":"\\dotsb","\\mathrel":"\\dotsb","\\relbar":"\\dotsb","\\Relbar":"\\dotsb","\\xrightarrow":"\\dotsb","\\xleftarrow":"\\dotsb","\\DOTSI":"\\dotsi","\\int":"\\dotsi","\\oint":"\\dotsi","\\iint":"\\dotsi","\\iiint":"\\dotsi","\\iiiint":"\\dotsi","\\idotsint":"\\dotsi","\\DOTSX":"\\dotsx"};Ye("\\dots",(function(e){let t="\\dotso";const r=e.expandAfterFuture().text;return r in nt?t=nt[r]:("\\not"===r.slice(0,4)||r in $.math&&["bin","rel"].includes($.math[r].group))&&(t="\\dotsb"),t}));const st={")":!0,"]":!0,"\\rbrack":!0,"\\}":!0,"\\rbrace":!0,"\\rangle":!0,"\\rceil":!0,"\\rfloor":!0,"\\rgroup":!0,"\\rmoustache":!0,"\\right":!0,"\\bigr":!0,"\\biggr":!0,"\\Bigr":!0,"\\Biggr":!0,$:!0,";":!0,".":!0,",":!0};Ye("\\dotso",(function(e){return e.future().text in st?"\\ldots\\,":"\\ldots"})),Ye("\\dotsc",(function(e){const t=e.future().text;return t in st&&","!==t?"\\ldots\\,":"\\ldots"})),Ye("\\cdots",(function(e){return e.future().text in st?"\\@cdots\\,":"\\@cdots"})),Ye("\\dotsb","\\cdots"),Ye("\\dotsm","\\cdots"),Ye("\\dotsi","\\!\\cdots"),Ye("\\idotsint","\\dotsi"),Ye("\\dotsx","\\ldots\\,"),Ye("\\DOTSI","\\relax"),Ye("\\DOTSB","\\relax"),Ye("\\DOTSX","\\relax"),Ye("\\tmspace","\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax"),Ye("\\,","{\\tmspace+{3mu}{.1667em}}"),Ye("\\thinspace","\\,"),Ye("\\>","\\mskip{4mu}"),Ye("\\:","{\\tmspace+{4mu}{.2222em}}"),Ye("\\medspace","\\:"),Ye("\\;","{\\tmspace+{5mu}{.2777em}}"),Ye("\\thickspace","\\;"),Ye("\\!","{\\tmspace-{3mu}{.1667em}}"),Ye("\\negthinspace","\\!"),Ye("\\negmedspace","{\\tmspace-{4mu}{.2222em}}"),Ye("\\negthickspace","{\\tmspace-{5mu}{.277em}}"),Ye("\\enspace","\\kern.5em "),Ye("\\enskip","\\hskip.5em\\relax"),Ye("\\quad","\\hskip1em\\relax"),Ye("\\qquad","\\hskip2em\\relax"),Ye("\\AA","\\TextOrMath{\\Angstrom}{\\mathring{A}}\\relax"),Ye("\\tag","\\@ifstar\\tag@literal\\tag@paren"),Ye("\\tag@paren","\\tag@literal{({#1})}"),Ye("\\tag@literal",(t=>{if(t.macros.get("\\df@tag"))throw new e("Multiple \\tag");return"\\gdef\\df@tag{\\text{#1}}"})),Ye("\\notag","\\nonumber"),Ye("\\nonumber","\\gdef\\@eqnsw{0}"),Ye("\\bmod","\\mathbin{\\text{mod}}"),Ye("\\pod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)"),Ye("\\pmod","\\pod{{\\rm mod}\\mkern6mu#1}"),Ye("\\mod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1"),Ye("\\newline","\\\\\\relax"),Ye("\\TeX","\\textrm{T}\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125em\\textrm{X}"),Ye("\\LaTeX","\\textrm{L}\\kern-.35em\\raisebox{0.2em}{\\scriptstyle A}\\kern-.15em\\TeX"),Ye("\\Temml","\\textrm{T}\\kern-0.2em\\lower{0.2em}{\\textrm{E}}\\kern-0.08em{\\textrm{M}\\kern-0.08em\\raise{0.2em}\\textrm{M}\\kern-0.08em\\textrm{L}}"),Ye("\\hspace","\\@ifstar\\@hspacer\\@hspace"),Ye("\\@hspace","\\hskip #1\\relax"),Ye("\\@hspacer","\\rule{0pt}{0pt}\\hskip #1\\relax"),Ye("\\colon",'\\mathpunct{\\char"3a}'),Ye("\\prescript","\\pres@cript{_{#1}^{#2}}{}{#3}"),Ye("\\ordinarycolon",'\\char"3a'),Ye("\\vcentcolon","\\mathrel{\\raisebox{0.035em}{\\ordinarycolon}}"),Ye("\\coloneq",'\\mathrel{\\raisebox{0.035em}{\\ordinarycolon}\\char"2212}'),Ye("\\Coloneq",'\\mathrel{\\char"2237\\char"2212}'),Ye("\\Eqqcolon",'\\mathrel{\\char"3d\\char"2237}'),Ye("\\Eqcolon",'\\mathrel{\\char"2212\\char"2237}'),Ye("\\colonapprox",'\\mathrel{\\raisebox{0.035em}{\\ordinarycolon}\\char"2248}'),Ye("\\Colonapprox",'\\mathrel{\\char"2237\\char"2248}'),Ye("\\colonsim",'\\mathrel{\\raisebox{0.035em}{\\ordinarycolon}\\char"223c}'),Ye("\\Colonsim",'\\mathrel{\\raisebox{0.035em}{\\ordinarycolon}\\char"223c}'),Ye("\\ratio","\\vcentcolon"),Ye("\\coloncolon","\\dblcolon"),Ye("\\colonequals","\\coloneqq"),Ye("\\coloncolonequals","\\Coloneqq"),Ye("\\equalscolon","\\eqqcolon"),Ye("\\equalscoloncolon","\\Eqqcolon"),Ye("\\colonminus","\\coloneq"),Ye("\\coloncolonminus","\\Coloneq"),Ye("\\minuscolon","\\eqcolon"),Ye("\\minuscoloncolon","\\Eqcolon"),Ye("\\coloncolonapprox","\\Colonapprox"),Ye("\\coloncolonsim","\\Colonsim"),Ye("\\notni","\\mathrel{\\char`∌}"),Ye("\\limsup","\\DOTSB\\operatorname*{lim\\,sup}"),Ye("\\liminf","\\DOTSB\\operatorname*{lim\\,inf}"),Ye("\\injlim","\\DOTSB\\operatorname*{inj\\,lim}"),Ye("\\projlim","\\DOTSB\\operatorname*{proj\\,lim}"),Ye("\\varlimsup","\\DOTSB\\operatorname*{\\overline{\\text{lim}}}"),Ye("\\varliminf","\\DOTSB\\operatorname*{\\underline{\\text{lim}}}"),Ye("\\varinjlim","\\DOTSB\\operatorname*{\\underrightarrow{\\text{lim}}}"),Ye("\\varprojlim","\\DOTSB\\operatorname*{\\underleftarrow{\\text{lim}}}"),Ye("\\centerdot","{\\medspace\\rule{0.167em}{0.189em}\\medspace}"),Ye("\\argmin","\\DOTSB\\operatorname*{arg\\,min}"),Ye("\\argmax","\\DOTSB\\operatorname*{arg\\,max}"),Ye("\\plim","\\DOTSB\\operatorname*{plim}"),Ye("\\leftmodels","\\mathop{\\reflectbox{$\\models$}}"),Ye("\\bra","\\mathinner{\\langle{#1}|}"),Ye("\\ket","\\mathinner{|{#1}\\rangle}"),Ye("\\braket","\\mathinner{\\langle{#1}\\rangle}"),Ye("\\Bra","\\left\\langle#1\\right|"),Ye("\\Ket","\\left|#1\\right\\rangle");const ot=(e,t)=>{const r=`}\\,\\middle${"|"===t[0]?"\\vert":"\\Vert"}\\,{`;return e.slice(0,t.index)+r+e.slice(t.index+t[0].length)};Ye("\\Braket",(function(e){let t=rt(e);const r=/\|\||\||\\\|/g;let n;for(;null!==(n=r.exec(t));)t=ot(t,n);return"\\left\\langle{"+t+"}\\right\\rangle"})),Ye("\\Set",(function(e){let t=rt(e);const r=/\|\||\||\\\|/.exec(t);return r&&(t=ot(t,r)),"\\left\\{\\:{"+t+"}\\:\\right\\}"})),Ye("\\set",(function(e){return"\\{{"+rt(e).replace(/\|/,"}\\mid{")+"}\\}"})),Ye("\\angln","{\\angl n}"),Ye("\\odv","\\@ifstar\\odv@next\\odv@numerator"),Ye("\\odv@numerator","\\frac{\\mathrm{d}#1}{\\mathrm{d}#2}"),Ye("\\odv@next","\\frac{\\mathrm{d}}{\\mathrm{d}#2}#1"),Ye("\\pdv","\\@ifstar\\pdv@next\\pdv@numerator");const at=e=>{const t=e[0][0].text,r=Ke(e[1]).split(","),n=String(r.length),s="1"===n?"\\partial":`\\partial^${n}`;let o="";return r.map((e=>{o+="\\partial "+e.trim()+"\\,"})),[t,s,o.replace(/\\,$/,"")]};function lt(e){const t=[];e.consumeSpaces();let r=e.fetch().text;for("\\relax"===r&&(e.consume(),e.consumeSpaces(),r=e.fetch().text);"\\hline"===r||"\\hdashline"===r;)e.consume(),t.push("\\hdashline"===r),e.consumeSpaces(),r=e.fetch().text;return t}Ye("\\pdv@numerator",(function(e){const[t,r,n]=at(e.consumeArgs(2));return`\\frac{${r} ${t}}{${n}}`})),Ye("\\pdv@next",(function(e){const[t,r,n]=at(e.consumeArgs(2));return`\\frac{${r}}{${n}} ${t}`})),Ye("\\upalpha","\\up@greek{\\alpha}"),Ye("\\upbeta","\\up@greek{\\beta}"),Ye("\\upgamma","\\up@greek{\\gamma}"),Ye("\\updelta","\\up@greek{\\delta}"),Ye("\\upepsilon","\\up@greek{\\epsilon}"),Ye("\\upzeta","\\up@greek{\\zeta}"),Ye("\\upeta","\\up@greek{\\eta}"),Ye("\\uptheta","\\up@greek{\\theta}"),Ye("\\upiota","\\up@greek{\\iota}"),Ye("\\upkappa","\\up@greek{\\kappa}"),Ye("\\uplambda","\\up@greek{\\lambda}"),Ye("\\upmu","\\up@greek{\\mu}"),Ye("\\upnu","\\up@greek{\\nu}"),Ye("\\upxi","\\up@greek{\\xi}"),Ye("\\upomicron","\\up@greek{\\omicron}"),Ye("\\uppi","\\up@greek{\\pi}"),Ye("\\upalpha","\\up@greek{\\alpha}"),Ye("\\uprho","\\up@greek{\\rho}"),Ye("\\upsigma","\\up@greek{\\sigma}"),Ye("\\uptau","\\up@greek{\\tau}"),Ye("\\upupsilon","\\up@greek{\\upsilon}"),Ye("\\upphi","\\up@greek{\\phi}"),Ye("\\upchi","\\up@greek{\\chi}"),Ye("\\uppsi","\\up@greek{\\psi}"),Ye("\\upomega","\\up@greek{\\omega}"),Ye("\\invamp",'\\mathbin{\\char"214b}'),Ye("\\parr",'\\mathbin{\\char"214b}'),Ye("\\with",'\\mathbin{\\char"26}'),Ye("\\multimapinv",'\\mathrel{\\char"27dc}'),Ye("\\multimapboth",'\\mathrel{\\char"29df}'),Ye("\\scoh",'{\\mkern5mu\\char"2322\\mkern5mu}'),Ye("\\sincoh",'{\\mkern5mu\\char"2323\\mkern5mu}'),Ye("\\coh",'{\\mkern5mu\\rule{}{0.7em}\\mathrlap{\\smash{\\raise2mu{\\char"2322}}}\n{\\smash{\\lower4mu{\\char"2323}}}\\mkern5mu}'),Ye("\\incoh",'{\\mkern5mu\\rule{}{0.7em}\\mathrlap{\\smash{\\raise2mu{\\char"2323}}}\n{\\smash{\\lower4mu{\\char"2322}}}\\mkern5mu}'),Ye("\\standardstate","\\text{\\tiny\\char`⦵}");const it=t=>{if(!t.parser.settings.displayMode)throw new e(`{${t.envName}} can be used only in display mode.`)},ct=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/,dt=e=>{let t=e.get("\\arraystretch");"string"!=typeof t&&(t=Ke(t.tokens)),t=isNaN(t)?null:Number(t);let r=e.get("\\arraycolsep");"string"!=typeof r&&(r=Ke(r.tokens));const n=ct.exec(r);return[t,n?{number:+(n[1]+n[2]),unit:n[3]}:null]},mt=t=>{let r="";for(let n=0;n1||!a)&&h.pop(),f.push(mt(r.body)),b.length{const t=new T.MathNode("mtd",[]);return t.style={padding:"0",width:"50%"},e.envClasses.includes("multline")&&(t.style.width="7.5%"),t},bt=function(e,t){const r=[],n=e.body.length,s=e.hLinesBeforeRow;for(let o=0;o0&&(2===s[0].length?d.children.forEach((e=>{e.style.borderTop="0.15em double"})):d.children.forEach((e=>{e.style.borderTop=s[0][0]?"0.06em dashed":"0.06em solid"}))),s[o+1].length>0&&(2===s[o+1].length?d.children.forEach((e=>{e.style.borderBottom="0.15em double"})):d.children.forEach((e=>{e.style.borderBottom=s[o+1][0]?"0.06em dashed":"0.06em solid"})));let p=!0;for(let e=0;e0&&(o=e.envClasses.includes("abut")||e.envClasses.includes("cases")?"0":e.envClasses.includes("small")?"0.1389":e.envClasses.includes("cd")?"0.25":"0.4",a="em"),e.arraycolsep){const r=qe(e.arraycolsep,t);o=r.number.toFixed(4),a=r.unit}if(o){const t=0===r.length?0:r[0].children.length,n=(r,n)=>0===r&&0===n||r===t-1&&1===n?"0":"align"!==e.envClasses[0]?o:1===n?"0":e.autoTag?r%2?"1":"0":r%2?"0":"1";for(let e=0;e0){const t=e.envClasses.includes("align")||e.envClasses.includes("alignat");for(let n=0;n1&&e.envClasses.includes("cases")&&(s.children[1].style.paddingLeft="1em"),e.envClasses.includes("cases")||e.envClasses.includes("subarray"))for(const e of s.children)e.classes.push("tml-left")}}let l=new T.MathNode("mtable",r);e.envClasses.length>0&&(e.envClasses.includes("jot")?l.classes.push("tml-jot"):e.envClasses.includes("small")&&l.classes.push("tml-small")),"display"===e.scriptLevel&&l.setAttribute("displaystyle","true"),(e.autoTag||e.envClasses.includes("multline"))&&(l.style.width="100%");let i="";if(e.cols&&e.cols.length>0){const t=e.cols;let r=!1,n=0,s=t.length;for(;"separator"===t[n].type;)n+=1;for(;"separator"===t[s-1].type;)s-=1;if("separator"===t[0].type){const e="separator"===t[1].type?"0.15em double":"|"===t[0].separator?"0.06em solid ":"0.06em dashed ";for(const t of l.children)t.children[0].style.borderLeft=e}let o=e.autoTag?0:-1;for(let e=n;e0?i:"center ")+"right "),i&&l.setAttribute("columnalign",i.trim()),e.envClasses.includes("small")&&(l=new T.MathNode("mstyle",[l]),l.setAttribute("scriptlevel","1")),l},yt=function(t,r){-1===t.envName.indexOf("ed")&&it(t);const n="split"===t.envName,s=[],o=ut(t.parser,{cols:s,emptySingleRow:!0,autoTag:n?void 0:pt(t.envName),envClasses:["abut","jot"],maxNumCols:"split"===t.envName?2:void 0,leqno:t.parser.settings.leqno},"display");let a,l=0;const i=t.envName.indexOf("at")>-1;if(r[0]&&i){let t="";for(let e=0;e0?new Array(o.body[0].length).fill({type:"align",align:n}):[];const[a,l]=dt(t.parser.gullet.macros);return o.arraystretch=a,!l||6===l&&"pt"===l||(o.arraycolsep=l),r?{type:"leftright",mode:t.mode,body:[o],left:r[0],right:r[1],rightColor:void 0}:o},mathmlBuilder:bt}),$e({type:"array",names:["bordermatrix"],props:{numArgs:0},handler(e){const t=ut(e.parser,{cols:[],envClasses:["bordermatrix"]},"text");return t.cols=t.body.length>0?new Array(t.body[0].length).fill({type:"align",align:"c"}):[],t.envClasses=[],t.arraystretch=1,"matrix"===e.envName?t:((e,t)=>{const r=e.body;r[0].shift();const n=new Array(r.length-1).fill().map((()=>[]));for(let e=1;e[]));for(let e=0;e[])),envClasses:[],scriptLevel:"text",arraystretch:1,labels:new Array(n.length).fill(""),arraycolsep:{number:.04,unit:"em"}},a={type:"styling",mode:"math",scriptLevel:"text",body:[{type:"array",mode:"math",body:s,cols:new Array(s.length).fill({type:"align",align:"c"}),rowGaps:new Array(s.length-1).fill(null),hLinesBeforeRow:new Array(s.length+1).fill().map((()=>[])),envClasses:[],scriptLevel:"text",arraystretch:1,labels:new Array(s.length).fill(""),arraycolsep:null}]},l={type:"leftright",mode:"math",body:[e],left:t?t[0]:"(",right:t?t[1]:")",rightColor:void 0};return Pe([o,{type:"supsub",mode:"math",base:{type:"op",mode:"math",limits:!0,alwaysHandleSupSub:!0,parentIsSupSub:!0,symbol:!1,stack:!0,suppressBaseShift:!0,body:[l]},sup:a,sub:null}])})(t,e.delimiters)},mathmlBuilder:bt}),$e({type:"array",names:["smallmatrix"],props:{numArgs:0},handler(e){const t=ut(e.parser,{type:"small"},"script");return t.envClasses=["small"],t},mathmlBuilder:bt}),$e({type:"array",names:["subarray"],props:{numArgs:1},handler(t,r){const n=(Fe(r[0])?[r[0]]:Ie(r[0],"ordgroup").body).map((function(t){const r=Le(t).text;if(-1!=="lc".indexOf(r))return{type:"align",align:r};throw new e("Unknown column alignment: "+r,t)}));if(n.length>1)throw new e("{subarray} can contain only one column");let s={cols:n,envClasses:["small"]};if(s=ut(t.parser,s,"script"),s.body.length>0&&s.body[0].length>1)throw new e("{subarray} can contain only one column");return s},mathmlBuilder:bt}),$e({type:"array",names:["cases","dcases","rcases","drcases"],props:{numArgs:0},handler(e){const t=ut(e.parser,{cols:[],envClasses:["cases"]},ht(e.envName));return{type:"leftright",mode:e.mode,body:[t],left:e.envName.indexOf("r")>-1?".":"\\{",right:e.envName.indexOf("r")>-1?"\\}":".",rightColor:void 0}},mathmlBuilder:bt}),$e({type:"array",names:["align","align*","aligned","split"],props:{numArgs:0},handler:yt,mathmlBuilder:bt}),$e({type:"array",names:["alignat","alignat*","alignedat"],props:{numArgs:1},handler:yt,mathmlBuilder:bt}),$e({type:"array",names:["gathered","gather","gather*"],props:{numArgs:0},handler(e){"gathered"!==e.envName&&it(e);const t={cols:[],envClasses:["abut","jot"],autoTag:pt(e.envName),emptySingleRow:!0,leqno:e.parser.settings.leqno};return ut(e.parser,t,"display")},mathmlBuilder:bt}),$e({type:"array",names:["equation","equation*"],props:{numArgs:0},handler(e){it(e);const t={autoTag:pt(e.envName),emptySingleRow:!0,singleRow:!0,maxNumCols:1,envClasses:["align"],leqno:e.parser.settings.leqno};return ut(e.parser,t,"display")},mathmlBuilder:bt}),$e({type:"array",names:["multline","multline*"],props:{numArgs:0},handler(e){it(e);const t={autoTag:"multline"===e.envName,maxNumCols:1,envClasses:["jot","multline"],leqno:e.parser.settings.leqno};return ut(e.parser,t,"display")},mathmlBuilder:bt}),$e({type:"array",names:["CD"],props:{numArgs:0},handler:t=>(it(t),function(t){const r=[];for(t.gullet.beginGroup(),t.gullet.macros.set("\\cr","\\\\\\relax"),t.gullet.beginGroup();;){r.push(t.parseExpression(!1,"\\\\")),t.gullet.endGroup(),t.gullet.beginGroup();const n=t.fetch().text;if("&"!==n&&"\\\\"!==n){if("\\end"===n){0===r[r.length-1].length&&r.pop();break}throw new e("Expected \\\\ or \\cr or \\end",t.nextToken)}t.consume()}let n=[];const s=[n];for(let l=0;l-1);else{if(!("<>AV".indexOf(s)>-1))throw new e('Expected one of "<>AV=|." after @.');for(let t=0;t<2;t++){let n=!0;for(let c=r+1;c{let s=["(",")"];if("\\bordermatrix"===t&&n[0]&&n[0].body){const e=n[0].body;2===e.length&&"atom"===e[0].type&&"atom"===e[1].type&&"open"===e[0].family&&"close"===e[1].family&&(s=[e[0].text,e[1].text])}e.consumeSpaces(),e.consume();const o=wt.bordermatrix,a={mode:e.mode,envName:t.slice(1),delimiters:s,parser:e},l=o.handler(a);return e.expect("}",!0),l}}),c({type:"textord",names:["\\@char"],props:{numArgs:1,allowedInText:!0},handler({parser:t,token:r},n){const s=Ie(n[0],"ordgroup").body;let o="";for(let e=0;e{let t=e.toString(16);return 1===t.length&&(t="0"+t),t},St=JSON.parse('{\n "Apricot": "#ffb484",\n "Aquamarine": "#08b4bc",\n "Bittersweet": "#c84c14",\n "blue": "#0000FF",\n "Blue": "#303494",\n "BlueGreen": "#08b4bc",\n "BlueViolet": "#503c94",\n "BrickRed": "#b8341c",\n "brown": "#BF8040",\n "Brown": "#802404",\n "BurntOrange": "#f8941c",\n "CadetBlue": "#78749c",\n "CarnationPink": "#f884b4",\n "Cerulean": "#08a4e4",\n "CornflowerBlue": "#40ace4",\n "cyan": "#00FFFF",\n "Cyan": "#08acec",\n "Dandelion": "#ffbc44",\n "darkgray": "#404040",\n "DarkOrchid": "#a8548c",\n "Emerald": "#08ac9c",\n "ForestGreen": "#089c54",\n "Fuchsia": "#90348c",\n "Goldenrod": "#ffdc44",\n "gray": "#808080",\n "Gray": "#98949c",\n "green": "#00FF00",\n "Green": "#08a44c",\n "GreenYellow": "#e0e474",\n "JungleGreen": "#08ac9c",\n "Lavender": "#f89cc4",\n "lightgray": "#c0c0c0",\n "lime": "#BFFF00",\n "LimeGreen": "#90c43c",\n "magenta": "#FF00FF",\n "Magenta": "#f0048c",\n "Mahogany": "#b0341c",\n "Maroon": "#b03434",\n "Melon": "#f89c7c",\n "MidnightBlue": "#086494",\n "Mulberry": "#b03c94",\n "NavyBlue": "#086cbc",\n "olive": "#7F7F00",\n "OliveGreen": "#407c34",\n "orange": "#FF8000",\n "Orange": "#f8843c",\n "OrangeRed": "#f0145c",\n "Orchid": "#b074ac",\n "Peach": "#f8945c",\n "Periwinkle": "#8074bc",\n "PineGreen": "#088c74",\n "pink": "#ff7f7f",\n "Plum": "#98248c",\n "ProcessBlue": "#08b4ec",\n "purple": "#BF0040",\n "Purple": "#a0449c",\n "RawSienna": "#983c04",\n "red": "#ff0000",\n "Red": "#f01c24",\n "RedOrange": "#f86434",\n "RedViolet": "#a0246c",\n "Rhodamine": "#f0549c",\n "Royallue": "#0874bc",\n "RoyalPurple": "#683c9c",\n "RubineRed": "#f0047c",\n "Salmon": "#f8948c",\n "SeaGreen": "#30bc9c",\n "Sepia": "#701404",\n "SkyBlue": "#48c4dc",\n "SpringGreen": "#c8dc64",\n "Tan": "#e09c74",\n "teal": "#007F7F",\n "TealBlue": "#08acb4",\n "Thistle": "#d884b4",\n "Turquoise": "#08b4cc",\n "violet": "#800080",\n "Violet": "#60449c",\n "VioletRed": "#f054a4",\n "WildStrawberry": "#f0246c",\n "yellow": "#FFFF00",\n "Yellow": "#fff404",\n "YellowGreen": "#98cc6c",\n "YellowOrange": "#ffa41c"\n}'),qt=(t,r)=>{let n="";if("HTML"===t){if(!xt.test(r))throw new e("Invalid HTML input.");n=r}else if("RGB"===t){if(!vt.test(r))throw new e("Invalid RGB input.");r.split(",").map((e=>{n+=Tt(Number(e.trim()))}))}else{if(!At.test(r))throw new e("Invalid rbg input.");r.split(",").map((t=>{const r=Number(t.trim());if(r>1)throw new e("Color rgb input must be < 1.");n+=Tt(Number((255*r).toFixed(0)))}))}return"#"!==n.charAt(0)&&(n="#"+n),n},Ot=(t,r,n)=>{const s=`\\\\color@${t}`;if(!kt.exec(t))throw new e("Invalid color: '"+t+"'",n);return Nt.test(t)?"#"+t:("#"===t.charAt(0)||(r.has(s)?t=r.get(s).tokens[0].text:St[t]&&(t=St[t])),t)},Mt=(e,t)=>{let r=ie(e.body,t.withColor(e.color));return 0===r.length&&r.push(new T.MathNode("mrow")),r=r.map((t=>(t.style.color=e.color,t))),T.newDocumentFragment(r)};c({type:"color",names:["\\textcolor"],props:{numArgs:2,numOptionalArgs:1,allowedInText:!0,argTypes:["raw","raw","original"]},handler({parser:e,token:t},r,n){const s=n[0]&&Ie(n[0],"raw").string;let o="";if(s){const e=Ie(r[0],"raw").string;o=qt(s,e)}else o=Ot(Ie(r[0],"raw").string,e.gullet.macros,t);const a=r[1];return{type:"color",mode:e.mode,color:o,isTextColor:!0,body:p(a)}},mathmlBuilder:Mt}),c({type:"color",names:["\\color"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0,argTypes:["raw","raw"]},handler({parser:e,breakOnTokenText:t,token:r},n,s){const o=s[0]&&Ie(s[0],"raw").string;let a="";if(o){const e=Ie(n[0],"raw").string;a=qt(o,e)}else a=Ot(Ie(n[0],"raw").string,e.gullet.macros,r);const l=e.parseExpression(!0,t,!0);return{type:"color",mode:e.mode,color:a,isTextColor:!1,body:l}},mathmlBuilder:Mt}),c({type:"color",names:["\\definecolor"],props:{numArgs:3,allowedInText:!0,argTypes:["raw","raw","raw"]},handler({parser:t,funcName:r,token:n},s){const o=Ie(s[0],"raw").string;if(!/^[A-Za-z]+$/.test(o))throw new e("Color name must be latin letters.",n);const a=Ie(s[1],"raw").string;if(!["HTML","RGB","rgb"].includes(a))throw new e("Color model must be HTML, RGB, or rgb.",n);const l=Ie(s[2],"raw").string,i=qt(a,l);return t.gullet.macros.set(`\\\\color@${o}`,{tokens:[{text:i}],numArgs:0}),{type:"internal",mode:t.mode}}}),c({type:"cr",names:["\\\\"],props:{numArgs:0,numOptionalArgs:0,allowedInText:!0},handler({parser:e},t,r){const n="["===e.gullet.future().text?e.parseSizeGroup(!0):null,s=!e.settings.displayMode;return{type:"cr",mode:e.mode,newLine:s,size:n&&Ie(n,"size").value}},mathmlBuilder(e,t){const r=new T.MathNode("mo");if(e.newLine&&(r.setAttribute("linebreak","newline"),e.size)){const n=qe(e.size,t);r.setAttribute("height",n.number+n.unit)}return r}});const Bt={"\\global":"\\global","\\long":"\\\\globallong","\\\\globallong":"\\\\globallong","\\def":"\\gdef","\\gdef":"\\gdef","\\edef":"\\xdef","\\xdef":"\\xdef","\\let":"\\\\globallet","\\futurelet":"\\\\globalfuture"},Ct=t=>{const r=t.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(r))throw new e("Expected a control sequence",t);return r},zt=(e,t,r,n)=>{let s=e.gullet.macros.get(r.text);null==s&&(r.noexpand=!0,s={tokens:[r],numArgs:0,unexpandable:!e.gullet.isExpandable(r.text)}),e.gullet.macros.set(t,s,n)};c({type:"internal",names:["\\global","\\long","\\\\globallong"],props:{numArgs:0,allowedInText:!0},handler({parser:t,funcName:r}){t.consumeSpaces();const n=t.fetch();if(Bt[n.text])return"\\global"!==r&&"\\\\globallong"!==r||(n.text=Bt[n.text]),Ie(t.parseFunction(),"internal");throw new e("Invalid token after macro prefix",n)}}),c({type:"internal",names:["\\def","\\gdef","\\edef","\\xdef"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler({parser:t,funcName:r}){let n=t.gullet.popToken();const s=n.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(s))throw new e("Expected a control sequence",n);let o,a=0;const l=[[]];for(;"{"!==t.gullet.future().text;)if(n=t.gullet.popToken(),"#"===n.text){if("{"===t.gullet.future().text){o=t.gullet.future(),l[a].push("{");break}if(n=t.gullet.popToken(),!/^[1-9]$/.test(n.text))throw new e(`Invalid argument number "${n.text}"`);if(parseInt(n.text)!==a+1)throw new e(`Argument number "${n.text}" out of order`);a++,l.push([])}else{if("EOF"===n.text)throw new e("Expected a macro definition");l[a].push(n.text)}let{tokens:i}=t.gullet.consumeArg();if(o&&i.unshift(o),"\\edef"===r||"\\xdef"===r){if(i=t.gullet.expandTokens(i),i.length>t.gullet.settings.maxExpand)throw new e("Too many expansions in an "+r);i.reverse()}return t.gullet.macros.set(s,{tokens:i,numArgs:a,delimiters:l},r===Bt[r]),{type:"internal",mode:t.mode}}}),c({type:"internal",names:["\\let","\\\\globallet"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler({parser:e,funcName:t}){const r=Ct(e.gullet.popToken());e.gullet.consumeSpaces();const n=(e=>{let t=e.gullet.popToken();return"="===t.text&&(t=e.gullet.popToken()," "===t.text&&(t=e.gullet.popToken())),t})(e);return zt(e,r,n,"\\\\globallet"===t),{type:"internal",mode:e.mode}}}),c({type:"internal",names:["\\futurelet","\\\\globalfuture"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler({parser:e,funcName:t}){const r=Ct(e.gullet.popToken()),n=e.gullet.popToken(),s=e.gullet.popToken();return zt(e,r,s,"\\\\globalfuture"===t),e.gullet.pushToken(s),e.gullet.pushToken(n),{type:"internal",mode:e.mode}}}),c({type:"internal",names:["\\newcommand","\\renewcommand","\\providecommand"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler({parser:t,funcName:r}){let n="";const s=t.gullet.popToken();"{"===s.text?(n=Ct(t.gullet.popToken()),t.gullet.popToken()):n=Ct(s);const o=t.gullet.isDefined(n);if(o&&"\\newcommand"===r)throw new e(`\\newcommand{${n}} attempting to redefine ${n}; use \\renewcommand`);if(!o&&"\\renewcommand"===r)throw new e(`\\renewcommand{${n}} when command ${n} does not yet exist; use \\newcommand`);let a=0;if("["===t.gullet.future().text){let r=t.gullet.popToken();if(r=t.gullet.popToken(),!/^[0-9]$/.test(r.text))throw new e(`Invalid number of arguments: "${r.text}"`);if(a=parseInt(r.text),r=t.gullet.popToken(),"]"!==r.text)throw new e(`Invalid argument "${r.text}"`)}const{tokens:l}=t.gullet.consumeArg();return"\\providecommand"===r&&t.gullet.macros.has(n)||t.gullet.macros.set(n,{tokens:l,numArgs:a}),{type:"internal",mode:t.mode}}});const Et={"\\bigl":{mclass:"mopen",size:1},"\\Bigl":{mclass:"mopen",size:2},"\\biggl":{mclass:"mopen",size:3},"\\Biggl":{mclass:"mopen",size:4},"\\bigr":{mclass:"mclose",size:1},"\\Bigr":{mclass:"mclose",size:2},"\\biggr":{mclass:"mclose",size:3},"\\Biggr":{mclass:"mclose",size:4},"\\bigm":{mclass:"mrel",size:1},"\\Bigm":{mclass:"mrel",size:2},"\\biggm":{mclass:"mrel",size:3},"\\Biggm":{mclass:"mrel",size:4},"\\big":{mclass:"mord",size:1},"\\Big":{mclass:"mord",size:2},"\\bigg":{mclass:"mord",size:3},"\\Bigg":{mclass:"mord",size:4}},$t=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","⦇","\\llparenthesis","⦈","\\rrparenthesis","\\lfloor","\\rfloor","⌊","⌋","\\lceil","\\rceil","⌈","⌉","<",">","\\langle","⟨","\\rangle","⟩","\\lAngle","⟪","\\rAngle","⟫","\\llangle","⦉","\\rrangle","⦊","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","⟮","⟯","\\lmoustache","\\rmoustache","⎰","⎱","\\llbracket","\\rrbracket","⟦","⟦","\\lBrace","\\rBrace","⦃","⦄","/","\\backslash","|","\\vert","\\|","\\Vert","‖","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."],It=["}","\\left","\\middle","\\right"],Lt=e=>e.length>0&&($t.includes(e)||Et[e]||It.includes(e)),Ft=[0,1.2,1.8,2.4,3];function Dt(t,r){const n=Fe(t);if(n&&$t.includes(n.text))return["<","\\lt"].includes(n.text)&&(n.text="⟨"),[">","\\gt"].includes(n.text)&&(n.text="⟩"),n;throw new e(n?`Invalid delimiter '${n.text}' after '${r.funcName}'`:`Invalid delimiter type '${t.type}'`,t)}const Gt=["/","\\","\\backslash","\\vert","|"];c({type:"delimsizing",names:["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],props:{numArgs:1,argTypes:["primitive"]},handler:(e,t)=>{const r=Dt(t[0],e);return{type:"delimsizing",mode:e.parser.mode,size:Et[e.funcName].size,mclass:Et[e.funcName].mclass,delim:r.text}},mathmlBuilder:e=>{const t=[];"."===e.delim&&(e.delim=""),t.push(te(e.delim,e.mode));const r=new T.MathNode("mo",t);return"mopen"===e.mclass||"mclose"===e.mclass?r.setAttribute("fence","true"):r.setAttribute("fence","false"),(Gt.includes(e.delim)||e.delim.indexOf("arrow")>-1)&&r.setAttribute("stretchy","true"),r.setAttribute("symmetric","true"),r.setAttribute("minsize",Ft[e.size]+"em"),r.setAttribute("maxsize",Ft[e.size]+"em"),r}}),c({type:"leftright-right",names:["\\right"],props:{numArgs:1,argTypes:["primitive"]},handler:(e,t)=>({type:"leftright-right",mode:e.parser.mode,delim:Dt(t[0],e).text})}),c({type:"leftright",names:["\\left"],props:{numArgs:1,argTypes:["primitive"]},handler:(t,r)=>{const n=Dt(r[0],t),s=t.parser;++s.leftrightDepth;let o=s.parseExpression(!1,null,!0),a=s.fetch();for(;"\\middle"===a.text;){s.consume();const t=s.fetch().text;if(!$.math[t])throw new e(`Invalid delimiter '${t}' after '\\middle'`);Dt({type:"atom",mode:"math",text:t},{funcName:"\\middle"}),o.push({type:"middle",mode:"math",delim:t}),s.consume(),o=o.concat(s.parseExpression(!1,null,!0)),a=s.fetch()}--s.leftrightDepth,s.expect("\\right",!1);const l=Ie(s.parseFunction(),"leftright-right");return{type:"leftright",mode:s.mode,body:o,left:n.text,right:l.delim}},mathmlBuilder:(e,t)=>{!function(e){if(!e.body)throw new Error("Bug: The leftright ParseNode wasn't fully parsed.")}(e);const r=ie(e.body,t);"."===e.left&&(e.left="");const n=new T.MathNode("mo",[te(e.left,e.mode)]);n.setAttribute("fence","true"),n.setAttribute("form","prefix"),("/"===e.left||"\\"===e.left||e.left.indexOf("arrow")>-1)&&n.setAttribute("stretchy","true"),r.unshift(n),"."===e.right&&(e.right="");const s=new T.MathNode("mo",[te(e.right,e.mode)]);if(s.setAttribute("fence","true"),s.setAttribute("form","postfix"),("∖"===e.right||e.right.indexOf("arrow")>-1)&&s.setAttribute("stretchy","true"),e.body.length>0){const t=e.body[e.body.length-1];"color"!==t.type||t.isTextColor||s.setAttribute("mathcolor",t.color)}return r.push(s),se(r)}}),c({type:"middle",names:["\\middle"],props:{numArgs:1,argTypes:["primitive"]},handler:(t,r)=>{const n=Dt(r[0],t);if(!t.parser.leftrightDepth)throw new e("\\middle without preceding \\left",n);return{type:"middle",mode:t.parser.mode,delim:n.text}},mathmlBuilder:(e,t)=>{const r=te(e.delim,e.mode),n=new T.MathNode("mo",[r]);return n.setAttribute("fence","true"),e.delim.indexOf("arrow")>-1&&n.setAttribute("stretchy","true"),n.setAttribute("form","prefix"),n.setAttribute("lspace","0.05em"),n.setAttribute("rspace","0.05em"),n}});const jt=e=>{const t=new T.MathNode("mspace");return t.setAttribute("width","3pt"),t},Pt=(e,t)=>{let r;switch(r=e.label.indexOf("colorbox")>-1||"\\boxed"===e.label?new T.MathNode("mrow",[jt(),de(e.body,t),jt()]):new T.MathNode("menclose",[de(e.body,t)]),e.label){case"\\overline":r.setAttribute("notation","top"),r.classes.push("tml-overline");break;case"\\underline":r.setAttribute("notation","bottom"),r.classes.push("tml-underline");break;case"\\cancel":r.setAttribute("notation","updiagonalstrike"),r.children.push(new T.MathNode("mrow",[],["tml-cancel","upstrike"]));break;case"\\bcancel":r.setAttribute("notation","downdiagonalstrike"),r.children.push(new T.MathNode("mrow",[],["tml-cancel","downstrike"]));break;case"\\sout":r.setAttribute("notation","horizontalstrike"),r.children.push(new T.MathNode("mrow",[],["tml-cancel","sout"]));break;case"\\xcancel":r.setAttribute("notation","updiagonalstrike downdiagonalstrike"),r.classes.push("tml-xcancel");break;case"\\longdiv":r.setAttribute("notation","longdiv"),r.classes.push("longdiv-top"),r.children.push(new T.MathNode("mrow",[],["longdiv-arc"]));break;case"\\phase":r.setAttribute("notation","phasorangle"),r.classes.push("phasor-bottom"),r.children.push(new T.MathNode("mrow",[],["phasor-angle"]));break;case"\\textcircled":r.setAttribute("notation","circle"),r.classes.push("circle-pad"),r.children.push(new T.MathNode("mrow",[],["textcircle"]));break;case"\\angl":r.setAttribute("notation","actuarial"),r.classes.push("actuarial");break;case"\\boxed":r.setAttribute("notation","box"),r.classes.push("tml-box"),r.setAttribute("scriptlevel","0"),r.setAttribute("displaystyle","true");break;case"\\fbox":r.setAttribute("notation","box"),r.classes.push("tml-fbox");break;case"\\fcolorbox":case"\\colorbox":{const t={padding:"3pt 0 3pt 0"};"\\fcolorbox"===e.label&&(t.border="0.0667em solid "+String(e.borderColor)),r.style=t;break}}return e.backgroundColor&&r.setAttribute("mathbackground",e.backgroundColor),r};c({type:"enclose",names:["\\colorbox"],props:{numArgs:2,numOptionalArgs:1,allowedInText:!0,argTypes:["raw","raw","text"]},handler({parser:e,funcName:t},r,n){const s=n[0]&&Ie(n[0],"raw").string;let o="";if(s){const e=Ie(r[0],"raw").string;o=qt(s,e)}else o=Ot(Ie(r[0],"raw").string,e.gullet.macros);const a=r[1];return{type:"enclose",mode:e.mode,label:t,backgroundColor:o,body:a}},mathmlBuilder:Pt}),c({type:"enclose",names:["\\fcolorbox"],props:{numArgs:3,numOptionalArgs:1,allowedInText:!0,argTypes:["raw","raw","raw","text"]},handler({parser:e,funcName:t},r,n){const s=n[0]&&Ie(n[0],"raw").string;let o,a="";if(s){const e=Ie(r[0],"raw").string,t=Ie(r[0],"raw").string;a=qt(s,e),o=qt(s,t)}else a=Ot(Ie(r[0],"raw").string,e.gullet.macros),o=Ot(Ie(r[1],"raw").string,e.gullet.macros);const l=r[2];return{type:"enclose",mode:e.mode,label:t,backgroundColor:o,borderColor:a,body:l}},mathmlBuilder:Pt}),c({type:"enclose",names:["\\fbox"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!0},handler:({parser:e},t)=>({type:"enclose",mode:e.mode,label:"\\fbox",body:t[0]})}),c({type:"enclose",names:["\\angl","\\cancel","\\bcancel","\\xcancel","\\sout","\\overline","\\boxed","\\longdiv","\\phase"],props:{numArgs:1},handler({parser:e,funcName:t},r){const n=r[0];return{type:"enclose",mode:e.mode,label:t,body:n}},mathmlBuilder:Pt}),c({type:"enclose",names:["\\underline"],props:{numArgs:1,allowedInText:!0},handler({parser:e,funcName:t},r){const n=r[0];return{type:"enclose",mode:e.mode,label:t,body:n}},mathmlBuilder:Pt}),c({type:"enclose",names:["\\textcircled"],props:{numArgs:1,argTypes:["text"],allowedInArgument:!0,allowedInText:!0},handler({parser:e,funcName:t},r){const n=r[0];return{type:"enclose",mode:e.mode,label:t,body:n}},mathmlBuilder:Pt}),c({type:"environment",names:["\\begin","\\end"],props:{numArgs:1,argTypes:["text"]},handler({parser:t,funcName:r},n){const s=n[0];if("ordgroup"!==s.type)throw new e("Invalid environment name",s);let o="";for(let e=0;e({type:"envTag",mode:e.mode,body:t[0]}),mathmlBuilder:(e,t)=>new T.MathNode("mrow")}),c({type:"noTag",names:["\\env@notag"],props:{numArgs:0},handler:({parser:e})=>({type:"noTag",mode:e.mode}),mathmlBuilder:(e,t)=>new T.MathNode("mrow")});const Rt=(e,t)=>{const r=e.font,n=t.withFont(r),s=de(e.body,n);if(0===s.children.length)return s;if("boldsymbol"===r&&["mo","mpadded","mrow"].includes(s.type))return s.style.fontWeight="bold",s;if(((e,t)=>{if("mathrm"!==t||"ordgroup"!==e.body.type||1===e.body.body.length)return!1;if("mathord"!==e.body.body[0].type)return!1;for(let t=1;t{const n=m(r[0]);let s=t;return s in Ut&&(s=Ut[s]),{type:"font",mode:e.mode,font:s.slice(1),body:n}},mathmlBuilder:Rt}),c({type:"font",names:["\\rm","\\sf","\\tt","\\bf","\\it","\\cal"],props:{numArgs:0,allowedInText:!0},handler:({parser:e,funcName:t,breakOnTokenText:r},n)=>{const{mode:s}=e,o=e.parseExpression(!0,r,!0);return{type:"font",mode:s,font:`math${t.slice(1)}`,body:{type:"ordgroup",mode:e.mode,body:o}}},mathmlBuilder:Rt});const Ht=["display","text","script","scriptscript"],Vt={auto:-1,display:0,text:0,script:1,scriptscript:2},_t=(e,t)=>{const r="auto"===e.scriptLevel?t.incrementLevel():"display"===e.scriptLevel?t.withLevel(_e):"text"===e.scriptLevel?t.withLevel(We):t.withLevel(Xe),n=de(e.numer,r),s=de(e.denom,r);3===t.level&&(n.style.mathDepth="2",n.setAttribute("scriptlevel","2"),s.style.mathDepth="2",s.setAttribute("scriptlevel","2"));let o=new T.MathNode("mfrac",[n,s]);if(e.hasBarLine){if(e.barSize){const r=qe(e.barSize,t);o.setAttribute("linethickness",r.number+r.unit)}}else o.setAttribute("linethickness","0px");if(null!=e.leftDelim||null!=e.rightDelim){const t=[];if(null!=e.leftDelim){const r=new T.MathNode("mo",[new T.TextNode(e.leftDelim.replace("\\",""))]);r.setAttribute("fence","true"),t.push(r)}if(t.push(o),null!=e.rightDelim){const r=new T.MathNode("mo",[new T.TextNode(e.rightDelim.replace("\\",""))]);r.setAttribute("fence","true"),t.push(r)}o=se(t)}return"auto"!==e.scriptLevel&&(o=new T.MathNode("mstyle",[o]),o.setAttribute("displaystyle",String("display"===e.scriptLevel)),o.setAttribute("scriptlevel",Vt[e.scriptLevel])),o};c({type:"genfrac",names:["\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom","\\\\atopfrac","\\\\bracefrac","\\\\brackfrac"],props:{numArgs:2,allowedInArgument:!0},handler:({parser:e,funcName:t},r)=>{const n=r[0],s=r[1];let o=!1,a=null,l=null,i="auto";switch(t){case"\\dfrac":case"\\frac":case"\\tfrac":o=!0;break;case"\\\\atopfrac":o=!1;break;case"\\dbinom":case"\\binom":case"\\tbinom":a="(",l=")";break;case"\\\\bracefrac":a="\\{",l="\\}";break;case"\\\\brackfrac":a="[",l="]";break;default:throw new Error("Unrecognized genfrac command")}switch(t){case"\\dfrac":case"\\dbinom":i="display";break;case"\\tfrac":case"\\tbinom":i="text"}return{type:"genfrac",mode:e.mode,continued:!1,numer:n,denom:s,hasBarLine:o,leftDelim:a,rightDelim:l,scriptLevel:i,barSize:null}},mathmlBuilder:_t}),c({type:"genfrac",names:["\\cfrac"],props:{numArgs:2},handler:({parser:e,funcName:t},r)=>{const n=r[0],s=r[1];return{type:"genfrac",mode:e.mode,continued:!0,numer:n,denom:s,hasBarLine:!0,leftDelim:null,rightDelim:null,scriptLevel:"display",barSize:null}}}),c({type:"infix",names:["\\over","\\choose","\\atop","\\brace","\\brack"],props:{numArgs:0,infix:!0},handler({parser:e,funcName:t,token:r}){let n;switch(t){case"\\over":n="\\frac";break;case"\\choose":n="\\binom";break;case"\\atop":n="\\\\atopfrac";break;case"\\brace":n="\\\\bracefrac";break;case"\\brack":n="\\\\brackfrac";break;default:throw new Error("Unrecognized infix genfrac command")}return{type:"infix",mode:e.mode,replaceWith:n,token:r}}});const Wt=function(e){let t=null;return e.length>0&&(t=e,t="."===t?null:t),t};c({type:"genfrac",names:["\\genfrac"],props:{numArgs:6,allowedInArgument:!0,argTypes:["math","math","size","text","math","math"]},handler({parser:e},t){const r=t[4],n=t[5],s=m(t[0]),o="atom"===s.type&&"open"===s.family?Wt(s.text):null,a=m(t[1]),l="atom"===a.type&&"close"===a.family?Wt(a.text):null,i=Ie(t[2],"size");let c,d=null;i.isBlank?c=!0:(d=i.value,c=d.number>0);let p="auto",u=t[3];if("ordgroup"===u.type){if(u.body.length>0){const e=Ie(u.body[0],"textord");p=Ht[Number(e.text)]}}else u=Ie(u,"textord"),p=Ht[Number(u.text)];return{type:"genfrac",mode:e.mode,numer:r,denom:n,continued:!1,hasBarLine:c,barSize:d,leftDelim:o,rightDelim:l,scriptLevel:p}},mathmlBuilder:_t}),c({type:"infix",names:["\\above"],props:{numArgs:1,argTypes:["size"],infix:!0},handler:({parser:e,funcName:t,token:r},n)=>({type:"infix",mode:e.mode,replaceWith:"\\\\abovefrac",barSize:Ie(n[0],"size").value,token:r})}),c({type:"genfrac",names:["\\\\abovefrac"],props:{numArgs:3,argTypes:["math","size","math"]},handler:({parser:e,funcName:t},r)=>{const n=r[0],s=function(e){if(!e)throw new Error("Expected non-null, but got "+String(e));return e}(Ie(r[1],"infix").barSize),o=r[2],a=s.number>0;return{type:"genfrac",mode:e.mode,numer:n,denom:o,continued:!1,hasBarLine:a,barSize:s,leftDelim:null,rightDelim:null,scriptLevel:"auto"}},mathmlBuilder:_t}),c({type:"hbox",names:["\\hbox"],props:{numArgs:1,argTypes:["hbox"],allowedInArgument:!0,allowedInText:!1},handler:({parser:e},t)=>({type:"hbox",mode:e.mode,body:p(t[0])}),mathmlBuilder(e,t){const r=t.withLevel(_e),n=ce(e.body,r);return ne(n)}});c({type:"horizBrace",names:["\\overbrace","\\underbrace"],props:{numArgs:1},handler:({parser:e,funcName:t},r)=>({type:"horizBrace",mode:e.mode,label:t,isOver:/^\\over/.test(t),base:r[0]}),mathmlBuilder:(e,t)=>{const r=B(e.label);return r.style["math-depth"]=0,new T.MathNode(e.isOver?"mover":"munder",[de(e.base,t),r])}}),c({type:"href",names:["\\href"],props:{numArgs:2,argTypes:["url","original"],allowedInText:!0},handler:({parser:t,token:r},n)=>{const s=n[1],o=Ie(n[0],"url").url;if(!t.settings.isTrusted({command:"\\href",url:o}))throw new e('Function "\\href" is not trusted',r);return{type:"href",mode:t.mode,href:o,body:p(s)}},mathmlBuilder:(e,t)=>{const r=new v("math",[ce(e.body,t)]);return new x(e.href,[],[r])}}),c({type:"href",names:["\\url"],props:{numArgs:1,argTypes:["url"],allowedInText:!0},handler:({parser:t,token:r},n)=>{const s=Ie(n[0],"url").url;if(!t.settings.isTrusted({command:"\\url",url:s}))throw new e('Function "\\url" is not trusted',r);const o=[];for(let e=0;e{const o=Ie(s[0],"raw").string,a=s[1];if(t.settings.strict)throw new e(`Function "${r}" is disabled in strict mode`,n);let l;const i={};switch(r){case"\\class":i.class=o,l={command:"\\class",class:o};break;case"\\id":i.id=o,l={command:"\\id",id:o};break;case"\\style":i.style=o,l={command:"\\style",style:o};break;case"\\data":{const t=o.split(",");for(let r=0;r{const r=ce(e.body,t),n=[];e.attributes.class&&n.push(...e.attributes.class.trim().split(/\s+/)),r.classes=n;for(const t in e.attributes)"class"!==t&&Object.prototype.hasOwnProperty.call(e.attributes,t)&&r.setAttribute(t,e.attributes[t]);return r}});const Xt=function(t){if(/^[-+]? *(\d+(\.\d*)?|\.\d+)$/.test(t))return{number:+t,unit:"bp"};{const r=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(t);if(!r)throw new e("Invalid size: '"+t+"' in \\includegraphics");const n={number:+(r[1]+r[2]),unit:r[3]};if(!Te(n))throw new e("Invalid unit: '"+n.unit+"' in \\includegraphics.");return n}};c({type:"includegraphics",names:["\\includegraphics"],props:{numArgs:1,numOptionalArgs:1,argTypes:["raw","url"],allowedInText:!1},handler:({parser:t,token:r},n,s)=>{let o={number:0,unit:"em"},a={number:.9,unit:"em"},l={number:0,unit:"em"},i="";if(s[0]){const t=Ie(s[0],"raw").string.split(",");for(let r=0;r{const r=qe(e.height,t),n={number:0,unit:"em"};e.totalheight.number>0&&e.totalheight.unit===r.unit&&e.totalheight.number>r.number&&(n.number=e.totalheight.number-r.number,n.unit=r.unit);let s=0;e.width.number>0&&(s=qe(e.width,t));const o={height:r.number+n.number+"em"};s.number>0&&(o.width=s.number+s.unit),n.number>0&&(o.verticalAlign=-n.number+n.unit);const a=new k(e.src,e.alt,o);return a.height=r,a.depth=n,new T.MathNode("mtext",[a])}}),c({type:"kern",names:["\\kern","\\mkern","\\hskip","\\mskip"],props:{numArgs:1,argTypes:["size"],primitive:!0,allowedInText:!0},handler({parser:t,funcName:r,token:n},s){const o=Ie(s[0],"size");if(t.settings.strict){const s="m"===r[1],a="mu"===o.value.unit;if(s){if(!a)throw new e(`LaTeX's ${r} supports only mu units, not ${o.value.unit} units`,n);if("math"!==t.mode)throw new e(`LaTeX's ${r} works only in math mode`,n)}else if(a)throw new e(`LaTeX's ${r} doesn't support mu units`,n)}return{type:"kern",mode:t.mode,dimension:o.value}},mathmlBuilder(e,t){const r=qe(e.dimension,t),n="em"===r.unit?Zt(r.number):"";if("text"===e.mode&&n.length>0){const e=new T.TextNode(n);return new T.MathNode("mtext",[e])}{const e=new T.MathNode("mspace");return e.setAttribute("width",r.number+r.unit),r.number<0&&(e.style.marginLeft=r.number+r.unit),e}}});const Zt=function(e){return e>=.05555&&e<=.05556?" ":e>=.1666&&e<=.1667?" ":e>=.2222&&e<=.2223?" ":e>=.2777&&e<=.2778?"  ":""},Yt=/[^A-Za-z_0-9-]/g;c({type:"label",names:["\\label"],props:{numArgs:1,argTypes:["raw"]},handler:({parser:e},t)=>({type:"label",mode:e.mode,string:t[0].string.replace(Yt,"")}),mathmlBuilder(e,t){const r=new T.MathNode("mrow",[],["tml-label"]);return e.string.length>0&&r.setLabel(e.string),r}});const Jt=["\\clap","\\llap","\\rlap"];c({type:"lap",names:["\\mathllap","\\mathrlap","\\mathclap","\\clap","\\llap","\\rlap"],props:{numArgs:1,allowedInText:!0},handler:({parser:t,funcName:r,token:n},s)=>{if(Jt.includes(r)){if(t.settings.strict&&"text"!==t.mode)throw new e(`{${r}} can be used only in text mode.\n Try \\math${r.slice(1)}`,n);r=r.slice(1)}else r=r.slice(5);const o=s[0];return{type:"lap",mode:t.mode,alignment:r,body:o}},mathmlBuilder:(e,t)=>{let r;if("llap"===e.alignment){const n=ie(p(e.body),t),s=new T.MathNode("mphantom",n);r=new T.MathNode("mpadded",[s]),r.setAttribute("width","0px")}const n=de(e.body,t);let s;if("llap"===e.alignment?(n.style.position="absolute",n.style.right="0",n.style.bottom="0",s=new T.MathNode("mpadded",[r,n])):s=new T.MathNode("mpadded",[n]),"rlap"===e.alignment)e.body.body.length>0&&"genfrac"===e.body.body[0].type&&s.setAttribute("lspace","0.16667em");else{const t="llap"===e.alignment?"-1":"-0.5";s.setAttribute("lspace",t+"width"),"llap"===e.alignment?s.style.position="relative":(s.style.display="flex",s.style.justifyContent="center")}return s.setAttribute("width","0px"),s}}),c({type:"ordgroup",names:["\\(","$"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler({funcName:e,parser:t},r){const n=t.mode;t.switchMode("math");const s="\\("===e?"\\)":"$",o=t.parseExpression(!1,s);return t.expect(s),t.switchMode(n),{type:"ordgroup",mode:t.mode,body:o}}}),c({type:"text",names:["\\)","\\]"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(t,r){throw new e(`Mismatched ${t.funcName}`,r)}});c({type:"mathchoice",names:["\\mathchoice"],props:{numArgs:4,primitive:!0},handler:({parser:e},t)=>({type:"mathchoice",mode:e.mode,display:p(t[0]),text:p(t[1]),script:p(t[2]),scriptscript:p(t[3])}),mathmlBuilder:(e,t)=>{const r=((e,t)=>{switch(t.level){case Ve:return e.display;case _e:return e.text;case We:return e.script;case Xe:return e.scriptscript;default:return e.text}})(e,t);return ce(r,t)}});const Kt=["text","textord","mathord","atom"];function Qt(e,t){let r;const n=ie(e.body,t);if("minner"===e.mclass)r=new T.MathNode("mpadded",n);else if("mord"===e.mclass)e.isCharacterBox||"mathord"===n[0].type?(r=n[0],r.type="mi",1===r.children.length&&r.children[0].text&&"∇"===r.children[0].text&&r.setAttribute("mathvariant","normal")):r=new T.MathNode("mi",n);else{r=new T.MathNode("mrow",n),e.mustPromote?(r=n[0],r.type="mo",e.isCharacterBox&&e.body[0].text&&/[A-Za-z]/.test(e.body[0].text)&&r.setAttribute("mathvariant","italic")):r=new T.MathNode("mrow",n);const s=t.level<2;"mrow"===r.type?s&&("mbin"===e.mclass?(r.children.unshift(Oe(.2222)),r.children.push(Oe(.2222))):"mrel"===e.mclass?(r.children.unshift(Oe(.2778)),r.children.push(Oe(.2778))):"mpunct"===e.mclass?r.children.push(Oe(.1667)):"minner"===e.mclass&&(r.children.unshift(Oe(.0556)),r.children.push(Oe(.0556)))):"mbin"===e.mclass?(r.attributes.lspace=s?"0.2222em":"0",r.attributes.rspace=s?"0.2222em":"0"):"mrel"===e.mclass?(r.attributes.lspace=s?"0.2778em":"0",r.attributes.rspace=s?"0.2778em":"0"):"mpunct"===e.mclass?(r.attributes.lspace="0em",r.attributes.rspace=s?"0.1667em":"0"):"mopen"===e.mclass||"mclose"===e.mclass?(r.attributes.lspace="0em",r.attributes.rspace="0em"):"minner"===e.mclass&&s&&(r.attributes.lspace="0.0556em",r.attributes.width="+0.1111em"),"mopen"!==e.mclass&&"mclose"!==e.mclass&&(delete r.attributes.stretchy,delete r.attributes.form)}return r}c({type:"mclass",names:["\\mathord","\\mathbin","\\mathrel","\\mathopen","\\mathclose","\\mathpunct","\\mathinner"],props:{numArgs:1,primitive:!0},handler({parser:e,funcName:t},r){const n=r[0],s=o.isCharacterBox(n);let a=!0;const l={type:"mathord",text:"",mode:e.mode},i=n.body?n.body:[n];for(const t of i){if(!Kt.includes(t.type)){a=!1;break}$[e.mode][t.text]?l.text+=$[e.mode][t.text].replace:t.text?l.text+=t.text:t.body&&t.body.map((e=>{l.text+=e.text}))}return a&&"\\mathord"===t&&"mathord"===l.type&&l.text.length>1?l:{type:"mclass",mode:e.mode,mclass:"m"+t.slice(5),body:p(a?l:n),isCharacterBox:s,mustPromote:a}},mathmlBuilder:Qt});const er=e=>{const t="ordgroup"===e.type&&e.body.length?e.body[0]:e;return"atom"!==t.type||"bin"!==t.family&&"rel"!==t.family?"mord":"m"+t.family};c({type:"mclass",names:["\\@binrel"],props:{numArgs:2},handler:({parser:e},t)=>({type:"mclass",mode:e.mode,mclass:er(t[0]),body:p(t[1]),isCharacterBox:o.isCharacterBox(t[1])})}),c({type:"mclass",names:["\\stackrel","\\overset","\\underset"],props:{numArgs:2},handler({parser:e,funcName:t},r){const n=r[1],s=r[0],o={type:"op",mode:n.mode,limits:!0,alwaysHandleSupSub:!0,parentIsSupSub:!1,symbol:!1,stack:!0,suppressBaseShift:"\\stackrel"!==t,body:p(n)};return{type:"supsub",mode:s.mode,base:o,sup:"\\underset"===t?null:s,sub:"\\underset"===t?s:null}},mathmlBuilder:Qt});const tr=(e,t,r)=>{if(!e)return r;const n=de(e,t);return"mrow"===n.type&&0===n.children.length?r:n};c({type:"multiscript",names:["\\sideset","\\pres@cript"],props:{numArgs:3},handler({parser:t,funcName:r,token:n},s){if(0===s[2].body.length)throw new e(r+"cannot parse an empty base.");const o=s[2].body[0];if(t.settings.strict&&"\\sideset"===r&&!o.symbol)throw new e("The base of \\sideset must be a big operator. Try \\prescript.");if(s[0].body.length>0&&"supsub"!==s[0].body[0].type||s[1].body.length>0&&"supsub"!==s[1].body[0].type)throw new e("\\sideset can parse only subscripts and superscripts in its first two arguments",n);const a=s[0].body.length>0?s[0].body[0]:null,l=s[1].body.length>0?s[1].body[0]:null;return a||l?a?{type:"multiscript",mode:t.mode,isSideset:"\\sideset"===r,prescripts:a,postscripts:l,base:o}:{type:"styling",mode:t.mode,scriptLevel:"text",body:[{type:"supsub",mode:t.mode,base:o,sup:l.sup,sub:l.sub}]}:o},mathmlBuilder(e,t){const r=de(e.base,t),n=new T.MathNode("mprescripts"),s=new T.MathNode("none");let o=[];const a=tr(e.prescripts.sub,t,s),l=tr(e.prescripts.sup,t,s);if(e.isSideset&&(a.setAttribute("style","text-align: left;"),l.setAttribute("style","text-align: left;")),e.postscripts){o=[r,tr(e.postscripts.sub,t,s),tr(e.postscripts.sup,t,s),n,a,l]}else o=[r,n,a,l];return new T.MathNode("mmultiscripts",o)}}),c({type:"not",names:["\\not"],props:{numArgs:1,primitive:!0,allowedInText:!1},handler({parser:e},t){const r=o.isCharacterBox(t[0]);let n;if(r)n=p(t[0]),"\\"===n[0].text.charAt(0)&&(n[0].text=$.math[n[0].text].replace),n[0].text=n[0].text.slice(0,1)+"̸"+n[0].text.slice(1);else{n=[{type:"textord",mode:"math",text:"̸"},{type:"kern",mode:"math",dimension:{number:-.6,unit:"em"}},t[0]]}return{type:"not",mode:e.mode,body:n,isCharacterBox:r}},mathmlBuilder(e,t){if(e.isCharacterBox){return ie(e.body,t,!0)[0]}return ce(e.body,t)}});const rr=["textord","mathord","atom"],nr=["\\smallint"],sr=["textord","mathord","ordgroup","close","leftright","font"],or=e=>{e.attributes.lspace="0.1667em",e.attributes.rspace="0.1667em"},ar=(e,t)=>{let r;if(e.symbol)r=new v("mo",[te(e.name,e.mode)]),nr.includes(e.name)?r.setAttribute("largeop","false"):r.setAttribute("movablelimits","false"),e.fromMathOp&&or(r);else if(e.body)r=new v("mo",ie(e.body,t)),e.fromMathOp&&or(r);else if(r=new v("mi",[new A(e.name.slice(1))]),!e.parentIsSupSub){const t=[r,new v("mo",[te("⁡","text")])];if(e.needsLeadingSpace){const e=new v("mspace");e.setAttribute("width","0.1667em"),t.unshift(e)}if(!e.isFollowedByDelimiter){const e=new v("mspace");e.setAttribute("width","0.1667em"),t.push(e)}r=new v("mrow",t)}return r},lr={"∏":"\\prod","∐":"\\coprod","∑":"\\sum","⋀":"\\bigwedge","⋁":"\\bigvee","⋂":"\\bigcap","⋃":"\\bigcup","⨀":"\\bigodot","⨁":"\\bigoplus","⨂":"\\bigotimes","⨄":"\\biguplus","⨅":"\\bigsqcap","⨆":"\\bigsqcup","⨃":"\\bigcupdot","⨇":"\\bigdoublevee","⨈":"\\bigdoublewedge","⨉":"\\bigtimes"};c({type:"op",names:["\\coprod","\\bigvee","\\bigwedge","\\biguplus","\\bigcupplus","\\bigcupdot","\\bigcap","\\bigcup","\\bigdoublevee","\\bigdoublewedge","\\intop","\\prod","\\sum","\\bigotimes","\\bigoplus","\\bigodot","\\bigsqcap","\\bigsqcup","\\bigtimes","\\smallint","∏","∐","∑","⋀","⋁","⋂","⋃","⨀","⨁","⨂","⨃","⨄","⨅","⨆","⨇","⨈","⨉"],props:{numArgs:0},handler:({parser:e,funcName:t},r)=>{let n=t;return 1===n.length&&(n=lr[n]),{type:"op",mode:e.mode,limits:!0,parentIsSupSub:!1,symbol:!0,stack:!1,name:n}},mathmlBuilder:ar}),c({type:"op",names:["\\mathop"],props:{numArgs:1,primitive:!0},handler:({parser:e},t)=>{const r=t[0],n=r.body?r.body:[r],s=1===n.length&&rr.includes(n[0].type);return{type:"op",mode:e.mode,limits:!0,parentIsSupSub:!1,symbol:s,fromMathOp:!0,stack:!1,name:s?n[0].text:null,body:s?null:p(r)}},mathmlBuilder:ar});const ir={"∫":"\\int","∬":"\\iint","∭":"\\iiint","∮":"\\oint","∯":"\\oiint","∰":"\\oiiint","∱":"\\intclockwise","∲":"\\varointclockwise","⨌":"\\iiiint","⨍":"\\intbar","⨎":"\\intBar","⨏":"\\fint","⨒":"\\rppolint","⨓":"\\scpolint","⨕":"\\pointint","⨖":"\\sqint","⨗":"\\intlarhk","⨘":"\\intx","⨙":"\\intcap","⨚":"\\intcup"};c({type:"op",names:["\\arcsin","\\arccos","\\arctan","\\arctg","\\arcctg","\\arg","\\ch","\\cos","\\cosec","\\cosh","\\cot","\\cotg","\\coth","\\csc","\\ctg","\\cth","\\deg","\\dim","\\exp","\\hom","\\ker","\\lg","\\ln","\\log","\\sec","\\sin","\\sinh","\\sh","\\sgn","\\tan","\\tanh","\\tg","\\th"],props:{numArgs:0},handler({parser:e,funcName:t}){const r=e.prevAtomType,n=e.gullet.future().text;return{type:"op",mode:e.mode,limits:!1,parentIsSupSub:!1,symbol:!1,stack:!1,isFollowedByDelimiter:Lt(n),needsLeadingSpace:r.length>0&&sr.includes(r),name:t}},mathmlBuilder:ar}),c({type:"op",names:["\\det","\\gcd","\\inf","\\lim","\\max","\\min","\\Pr","\\sup"],props:{numArgs:0},handler({parser:e,funcName:t}){const r=e.prevAtomType,n=e.gullet.future().text;return{type:"op",mode:e.mode,limits:!0,parentIsSupSub:!1,symbol:!1,stack:!1,isFollowedByDelimiter:Lt(n),needsLeadingSpace:r.length>0&&sr.includes(r),name:t}},mathmlBuilder:ar}),c({type:"op",names:["\\int","\\iint","\\iiint","\\iiiint","\\oint","\\oiint","\\oiiint","\\intclockwise","\\varointclockwise","\\intbar","\\intBar","\\fint","\\rppolint","\\scpolint","\\pointint","\\sqint","\\intlarhk","\\intx","\\intcap","\\intcup","∫","∬","∭","∮","∯","∰","∱","∲","⨌","⨍","⨎","⨏","⨒","⨓","⨕","⨖","⨗","⨘","⨙","⨚"],props:{numArgs:0},handler({parser:e,funcName:t}){let r=t;return 1===r.length&&(r=ir[r]),{type:"op",mode:e.mode,limits:!1,parentIsSupSub:!1,symbol:!0,stack:!1,name:r}},mathmlBuilder:ar});c({type:"operatorname",names:["\\operatorname@","\\operatornamewithlimits"],props:{numArgs:1,allowedInArgument:!0},handler:({parser:e,funcName:t},r)=>{const n=r[0],s=e.prevAtomType,o=e.gullet.future().text;return{type:"operatorname",mode:e.mode,body:p(n),alwaysHandleSupSub:"\\operatornamewithlimits"===t,limits:!1,parentIsSupSub:!1,isFollowedByDelimiter:Lt(o),needsLeadingSpace:s.length>0&&sr.includes(s)}},mathmlBuilder:(e,t)=>{let r,n=ie(e.body,t.withFont("mathrm")),s=!0;for(let e=0;ee.toText())).join("");n=[new T.TextNode(e)]}else if(1===n.length&&["mover","munder"].includes(n[0].type)&&("mi"===n[0].children[0].type||"mtext"===n[0].children[0].type)){if(n[0].children[0].type="mi",e.parentIsSupSub)return new T.MathNode("mrow",n);{const e=new T.MathNode("mo",[te("⁡","text")]);return T.newDocumentFragment([n[0],e])}}if(s?(r=new T.MathNode("mi",n),1===n[0].text.length&&r.setAttribute("mathvariant","normal")):r=new T.MathNode("mrow",n),!e.parentIsSupSub){const t=[r,new T.MathNode("mo",[te("⁡","text")])];if(e.needsLeadingSpace){const e=new T.MathNode("mspace");e.setAttribute("width","0.1667em"),t.unshift(e)}if(!e.isFollowedByDelimiter){const e=new T.MathNode("mspace");e.setAttribute("width","0.1667em"),t.push(e)}return T.newDocumentFragment(t)}return r}}),Ye("\\operatorname","\\@ifstar\\operatornamewithlimits\\operatorname@"),d({type:"ordgroup",mathmlBuilder:(e,t)=>ce(e.body,t,e.semisimple)}),c({type:"phantom",names:["\\phantom"],props:{numArgs:1,allowedInText:!0},handler:({parser:e},t)=>{const r=t[0];return{type:"phantom",mode:e.mode,body:p(r)}},mathmlBuilder:(e,t)=>{const r=ie(e.body,t);return new T.MathNode("mphantom",r)}}),c({type:"hphantom",names:["\\hphantom"],props:{numArgs:1,allowedInText:!0},handler:({parser:e},t)=>{const r=t[0];return{type:"hphantom",mode:e.mode,body:r}},mathmlBuilder:(e,t)=>{const r=ie(p(e.body),t),n=new T.MathNode("mphantom",r),s=new T.MathNode("mpadded",[n]);return s.setAttribute("height","0px"),s.setAttribute("depth","0px"),s}}),c({type:"vphantom",names:["\\vphantom"],props:{numArgs:1,allowedInText:!0},handler:({parser:e},t)=>{const r=t[0];return{type:"vphantom",mode:e.mode,body:r}},mathmlBuilder:(e,t)=>{const r=ie(p(e.body),t),n=new T.MathNode("mphantom",r),s=new T.MathNode("mpadded",[n]);return s.setAttribute("width","0px"),s}}),c({type:"pmb",names:["\\pmb"],props:{numArgs:1,allowedInText:!0},handler:({parser:e},t)=>({type:"pmb",mode:e.mode,body:p(t[0])}),mathmlBuilder(e,t){const r=ie(e.body,t),n=N(r);return n.setAttribute("style","font-weight:bold"),n}});const cr=(e,t)=>{const r=t.withLevel(_e),n=new T.MathNode("mpadded",[de(e.body,r)]),s=qe(e.dy,t);return n.setAttribute("voffset",s.number+s.unit),s.number>0?n.style.padding=s.number+s.unit+" 0 0 0":n.style.padding="0 0 "+Math.abs(s.number)+s.unit+" 0",n};c({type:"raise",names:["\\raise","\\lower"],props:{numArgs:2,argTypes:["size","primitive"],primitive:!0},handler({parser:e,funcName:t},r){const n=Ie(r[0],"size").value;"\\lower"===t&&(n.number*=-1);const s=r[1];return{type:"raise",mode:e.mode,dy:n,body:s}},mathmlBuilder:cr}),c({type:"raise",names:["\\raisebox"],props:{numArgs:2,argTypes:["size","hbox"],allowedInText:!0},handler({parser:e,funcName:t},r){const n=Ie(r[0],"size").value,s=r[1];return{type:"raise",mode:e.mode,dy:n,body:s}},mathmlBuilder:cr}),c({type:"ref",names:["\\ref","\\eqref"],props:{numArgs:1,argTypes:["raw"]},handler:({parser:e,funcName:t},r)=>({type:"ref",mode:e.mode,funcName:t,string:r[0].string.replace(Yt,"")}),mathmlBuilder(e,t){const r="\\ref"===e.funcName?["tml-ref"]:["tml-ref","tml-eqref"];return new x("#"+e.string,r,null)}}),c({type:"reflect",names:["\\reflectbox"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!0},handler:({parser:e},t)=>({type:"reflect",mode:e.mode,body:t[0]}),mathmlBuilder(e,t){const r=de(e.body,t);return r.style.transform="scaleX(-1)",r}}),c({type:"internal",names:["\\relax"],props:{numArgs:0,allowedInText:!0},handler:({parser:e})=>({type:"internal",mode:e.mode})}),c({type:"rule",names:["\\rule"],props:{numArgs:2,numOptionalArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["size","size","size"]},handler({parser:e},t,r){const n=r[0],s=Ie(t[0],"size"),o=Ie(t[1],"size");return{type:"rule",mode:e.mode,shift:n&&Ie(n,"size").value,width:s.value,height:o.value}},mathmlBuilder(e,t){const r=qe(e.width,t),n=qe(e.height,t),s=e.shift?qe(e.shift,t):{number:0,unit:"em"},o=t.color&&t.getColor()||"black",a=new T.MathNode("mspace");if(r.number>0&&n.number>0&&a.setAttribute("mathbackground",o),a.setAttribute("width",r.number+r.unit),a.setAttribute("height",n.number+n.unit),0===s.number)return a;const l=new T.MathNode("mpadded",[a]);return s.number>=0?l.setAttribute("height","+"+s.number+s.unit):(l.setAttribute("height",s.number+s.unit),l.setAttribute("depth","+"+-s.number+s.unit)),l.setAttribute("voffset",s.number+s.unit),l}});const dr={"\\tiny":.5,"\\sixptsize":.6,"\\Tiny":.6,"\\scriptsize":.7,"\\footnotesize":.8,"\\small":.9,"\\normalsize":1,"\\large":1.2,"\\Large":1.44,"\\LARGE":1.728,"\\huge":2.074,"\\Huge":2.488};c({type:"sizing",names:["\\tiny","\\sixptsize","\\Tiny","\\scriptsize","\\footnotesize","\\small","\\normalsize","\\large","\\Large","\\LARGE","\\huge","\\Huge"],props:{numArgs:0,allowedInText:!0},handler:({breakOnTokenText:e,funcName:t,parser:r},n)=>{r.settings.strict&&"math"===r.mode&&console.log(`Temml strict-mode warning: Command ${t} is invalid in math mode.`);const s=r.parseExpression(!1,e,!0);return{type:"sizing",mode:r.mode,funcName:t,body:s}},mathmlBuilder:(e,t)=>{const r=t.withFontSize(dr[e.funcName]),n=ie(e.body,r),s=N(n),o=(dr[e.funcName]/t.fontSize).toFixed(4);return s.setAttribute("mathsize",o+"em"),s}}),c({type:"smash",names:["\\smash"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0},handler:({parser:e},t,r)=>{let n=!1,s=!1;const o=r[0]&&Ie(r[0],"ordgroup");if(o){let e="";for(let t=0;t{const r=new T.MathNode("mpadded",[de(e.body,t)]);return e.smashHeight&&r.setAttribute("height","0px"),e.smashDepth&&r.setAttribute("depth","0px"),r}}),c({type:"sqrt",names:["\\sqrt"],props:{numArgs:1,numOptionalArgs:1},handler({parser:e},t,r){const n=r[0],s=t[0];return{type:"sqrt",mode:e.mode,body:s,index:n}},mathmlBuilder(e,t){const{body:r,index:n}=e;return n?new T.MathNode("mroot",[de(r,t),de(n,t.incrementLevel())]):new T.MathNode("msqrt",[de(r,t)])}});const mr={display:0,text:1,script:2,scriptscript:3},pr={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]};c({type:"styling",names:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler({breakOnTokenText:e,funcName:t,parser:r},n){const s=r.parseExpression(!0,e,!0),o=t.slice(1,t.length-5);return{type:"styling",mode:r.mode,scriptLevel:o,body:s}},mathmlBuilder(e,t){const r=t.withLevel(mr[e.scriptLevel]),n=ie(e.body,r),s=N(n),o=pr[e.scriptLevel];return s.setAttribute("scriptlevel",o[0]),s.setAttribute("displaystyle",o[1]),s}});const ur=/^m(over|under|underover)$/;d({type:"supsub",mathmlBuilder(e,t){let r,n,s=!1,o=!1,a=!1,l=!1;e.base&&"horizBrace"===e.base.type&&(n=!!e.sup,n===e.base.isOver&&(s=!0,r=e.base.isOver)),!e.base||e.base.stack||"op"!==e.base.type&&"operatorname"!==e.base.type||(e.base.parentIsSupSub=!0,o=!e.base.symbol,a=o&&!e.isFollowedByDelimiter,l=e.base.needsLeadingSpace);const i=e.base&&e.base.stack?[de(e.base.body[0],t)]:[de(e.base,t)],c=t.inSubOrSup();if(e.sub){const r=de(e.sub,c);3===t.level&&r.setAttribute("scriptlevel","2"),i.push(r)}if(e.sup){const r=de(e.sup,c);3===t.level&&r.setAttribute("scriptlevel","2");const n="mrow"===r.type?r.children[0]:r;n&&"mo"===n.type&&n.classes.includes("tml-prime")&&e.base&&e.base.text&&"fF".indexOf(e.base.text)>-1&&n.classes.push("prime-pad"),i.push(r)}let d;if(s)d=r?"mover":"munder";else if(e.sub)if(e.sup){const r=e.base;d=r&&("op"===r.type&&r.limits||"multiscript"===r.type)&&(t.level===Ve||r.alwaysHandleSupSub)||r&&"operatorname"===r.type&&r.alwaysHandleSupSub&&(t.level===Ve||r.limits)?"munderover":"msubsup"}else{const r=e.base;d=r&&"op"===r.type&&r.limits&&(t.level===Ve||r.alwaysHandleSupSub)||r&&"operatorname"===r.type&&r.alwaysHandleSupSub&&(r.limits||t.level===Ve)?"munder":"msub"}else{const r=e.base;d=r&&"op"===r.type&&r.limits&&(t.level===Ve||r.alwaysHandleSupSub)||r&&"operatorname"===r.type&&r.alwaysHandleSupSub&&(r.limits||t.level===Ve)?"mover":"msup"}let m=new T.MathNode(d,i);if(o){const e=new T.MathNode("mo",[te("⁡","text")]);if(l){const t=new T.MathNode("mspace");t.setAttribute("width","0.1667em"),m=T.newDocumentFragment([t,m,e])}else m=T.newDocumentFragment([m,e]);if(a){const e=new T.MathNode("mspace");e.setAttribute("width","0.1667em"),m.children.push(e)}}else ur.test(d)&&(m=new T.MathNode("mrow",[m]));return m}});const hr=["\\shortmid","\\nshortmid","\\shortparallel","\\nshortparallel","\\smallsetminus"],gr=["\\Rsh","\\Lsh","\\restriction"];d({type:"atom",mathmlBuilder(e,t){const r=new T.MathNode("mo",[te(e.text,e.mode)]);if("punct"===e.family)r.setAttribute("separator","true");else if("open"===e.family||"close"===e.family)"open"===e.family?(r.setAttribute("form","prefix"),r.setAttribute("stretchy","false")):"close"===e.family&&(r.setAttribute("form","postfix"),r.setAttribute("stretchy","false"));else if("\\mid"===e.text)r.setAttribute("lspace","0.22em"),r.setAttribute("rspace","0.22em"),r.setAttribute("stretchy","false");else if("rel"===e.family&&(e=>{if(1===e.length){const t=e.codePointAt(0);return 8591-1||e.indexOf("harpoon")>-1||gr.includes(e)})(e.text))r.setAttribute("stretchy","false");else if(hr.includes(e.text))r.setAttribute("mathsize","70%");else if(":"===e.text)r.attributes.lspace="0.2222em",r.attributes.rspace="0.2222em";else if(e.needsSpacing)return"bin"===e.family?new T.MathNode("mrow",[Oe(.222),r,Oe(.222)]):new T.MathNode("mrow",[Oe(.2778),r,Oe(.2778)]);return r}});const fr={mathbf:"bold",mathrm:"normal",textit:"italic",mathit:"italic",mathnormal:"italic",mathbb:"double-struck",mathcal:"script",mathfrak:"fraktur",mathscr:"script",mathsf:"sans-serif",mathtt:"monospace"},br=function(e,t){if("texttt"===t.fontFamily)return"monospace";if("textsc"===t.fontFamily)return"normal";if("textsf"===t.fontFamily)return"textit"===t.fontShape&&"textbf"===t.fontWeight?"sans-serif-bold-italic":"textit"===t.fontShape?"sans-serif-italic":"textbf"===t.fontWeight?"sans-serif-bold":"sans-serif";if("textit"===t.fontShape&&"textbf"===t.fontWeight)return"bold-italic";if("textit"===t.fontShape)return"italic";if("textbf"===t.fontWeight)return"bold";const r=t.font;if(!r||"mathnormal"===r)return null;const n=e.mode;switch(r){case"mathit":case"greekItalic":return"italic";case"mathrm":{const t=e.text.codePointAt(0);return 9390,bold:e=>119743,italic:e=>119795,"bold-italic":e=>119847,script:e=>yr[e]||119899,"script-bold":e=>119951,fraktur:e=>wr[e]||120003,"fraktur-bold":e=>120107,"double-struck":e=>xr[e]||120055,"sans-serif":e=>120159,"sans-serif-bold":e=>120211,"sans-serif-italic":e=>120263,"sans-serif-bold-italic":e=>120380,monospace:e=>120367},lowerCaseLatin:{normal:e=>0,bold:e=>119737,italic:e=>"h"===e?8358:119789,"bold-italic":e=>119841,script:e=>yr[e]||119893,"script-bold":e=>119945,fraktur:e=>119997,"fraktur-bold":e=>120101,"double-struck":e=>120049,"sans-serif":e=>120153,"sans-serif-bold":e=>120205,"sans-serif-italic":e=>120257,"sans-serif-bold-italic":e=>120309,monospace:e=>120361},upperCaseGreek:{normal:e=>0,bold:e=>119575,italic:e=>119633,"bold-italic":e=>119575,script:e=>0,"script-bold":e=>0,fraktur:e=>0,"fraktur-bold":e=>0,"double-struck":e=>0,"sans-serif":e=>119749,"sans-serif-bold":e=>119749,"sans-serif-italic":e=>0,"sans-serif-bold-italic":e=>119807,monospace:e=>0},lowerCaseGreek:{normal:e=>0,bold:e=>119569,italic:e=>119627,"bold-italic":e=>"ϕ"===e?119678:119685,script:e=>0,"script-bold":e=>0,fraktur:e=>0,"fraktur-bold":e=>0,"double-struck":e=>0,"sans-serif":e=>119743,"sans-serif-bold":e=>119743,"sans-serif-italic":e=>0,"sans-serif-bold-italic":e=>119801,monospace:e=>0},varGreek:{normal:e=>0,bold:e=>kr[e]||-51,italic:e=>0,"bold-italic":e=>vr[e]||58,script:e=>0,"script-bold":e=>0,fraktur:e=>0,"fraktur-bold":e=>0,"double-struck":e=>0,"sans-serif":e=>Ar[e]||116,"sans-serif-bold":e=>Ar[e]||116,"sans-serif-italic":e=>0,"sans-serif-bold-italic":e=>Nr[e]||174,monospace:e=>0},numeral:{normal:e=>0,bold:e=>120734,italic:e=>0,"bold-italic":e=>0,script:e=>0,"script-bold":e=>0,fraktur:e=>0,"fraktur-bold":e=>0,"double-struck":e=>120744,"sans-serif":e=>120754,"sans-serif-bold":e=>120764,"sans-serif-italic":e=>0,"sans-serif-bold-italic":e=>0,monospace:e=>120774}}),Sr=(e,t)=>{const r=e.codePointAt(0),n=64{const n=new T.MathNode(r,[e]),s=new T.MathNode("mstyle",[n]);return s.style["font-style"]="italic",s.style["font-family"]="Cambria, 'Times New Roman', serif","bold-italic"===t&&(s.style["font-weight"]="bold"),s})(s,o,t);"normal"!==o&&(s.text=s.text.split("").map((e=>Sr(e,o))).join("")),a=new T.MathNode(t,[s])}else if("text"===e.mode)"normal"!==o&&(s.text=Sr(s.text,o)),a=new T.MathNode("mtext",[s]);else if(Br.has(e.text))a=new T.MathNode("mo",[s]),a.classes.push("tml-prime");else{const e=s.text;"italic"!==o&&(s.text=Sr(s.text,o)),a=new T.MathNode("mi",[s]),s.text===e&&Mr.test(e)&&a.setAttribute("mathvariant","italic")}return a}});const Cr={"\\nobreak":"nobreak","\\allowbreak":"allowbreak"},zr={" ":{},"\\ ":{},"~":{className:"nobreak"},"\\space":{},"\\nobreakspace":{className:"nobreak"}};d({type:"spacing",mathmlBuilder(t,r){let n;if(Object.prototype.hasOwnProperty.call(zr,t.text))n=new T.MathNode("mtext",[new T.TextNode(" ")]);else{if(!Object.prototype.hasOwnProperty.call(Cr,t.text))throw new e(`Unknown type of space "${t.text}"`);n=new T.MathNode("mo"),"\\nobreak"===t.text&&n.setAttribute("linebreak","nobreak")}return n}}),d({type:"tag"});const Er={"\\text":void 0,"\\textrm":"textrm","\\textsf":"textsf","\\texttt":"texttt","\\textnormal":"textrm","\\textsc":"textsc"},$r={"\\textbf":"textbf","\\textmd":"textmd"},Ir={"\\textit":"textit","\\textup":"textup"};c({type:"text",names:["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textsc","\\textbf","\\textmd","\\textit","\\textup","\\emph"],props:{numArgs:1,argTypes:["text"],allowedInArgument:!0,allowedInText:!0},handler({parser:e,funcName:t},r){const n=r[0];return{type:"text",mode:e.mode,body:p(n),font:t}},mathmlBuilder(e,t){const r=((e,t)=>{const r=e.font;return r?Er[r]?t.withTextFontFamily(Er[r]):$r[r]?t.withTextFontWeight($r[r]):"\\emph"===r?"textit"===t.fontShape?t.withTextFontShape("textup"):t.withTextFontShape("textit"):t.withTextFontShape(Ir[r]):t})(e,t),n=ce(e.body,r);return ne(n)}}),c({type:"vcenter",names:["\\vcenter"],props:{numArgs:1,argTypes:["original"],allowedInText:!1},handler:({parser:e},t)=>({type:"vcenter",mode:e.mode,body:t[0]}),mathmlBuilder(e,t){const r=new T.MathNode("mtd",[de(e.body,t)]);r.style.padding="0";const n=new T.MathNode("mtr",[r]);return new T.MathNode("mtable",[n])}}),c({type:"verb",names:["\\verb"],props:{numArgs:0,allowedInText:!0},handler(t,r,n){throw new e("\\verb ended by end of line instead of matching delimiter")},mathmlBuilder(e,t){const r=new T.TextNode(Lr(e)),n=new T.MathNode("mtext",[r]);return n.setAttribute("mathvariant","monospace"),n}});const Lr=e=>e.body.replace(/ /g,e.star?"␣":" "),Fr=l,Dr="[ \r\n\t]",Gr=`(\\\\[a-zA-Z@]+)${Dr}*`,jr="[̀-ͯ]",Pr=new RegExp(`${jr}+$`),Rr=`(${Dr}+)|\\\\(\n|[ \r\t]+\n?)[ \r\t]*|([!-\\[\\]-‧‪-퟿豈-￿]${jr}*|[\ud800-\udbff][\udc00-\udfff]${jr}*|\\\\verb\\*([^]).*?\\4|\\\\verb([^*a-zA-Z]).*?\\5|${Gr}|\\\\[^\ud800-\udfff])`;class Ur{constructor(e,t){this.input=e,this.settings=t,this.tokenRegex=new RegExp(Rr,"g"),this.catcodes={"%":14,"~":13}}setCatcode(e,t){this.catcodes[e]=t}lex(){const t=this.input,r=this.tokenRegex.lastIndex;if(r===t.length)return new He("EOF",new Ue(this,r,r));const n=this.tokenRegex.exec(t);if(null===n||n.index!==r)throw new e(`Unexpected character: '${t[r]}'`,new He(t[r],new Ue(this,r,r+1)));const s=n[6]||n[3]||(n[2]?"\\ ":" ");if(14===this.catcodes[s]){const r=t.indexOf("\n",this.tokenRegex.lastIndex);if(-1===r){if(this.tokenRegex.lastIndex=t.length,this.settings.strict)throw new e("% comment has no terminating newline; LaTeX would fail because of commenting the end of math mode")}else this.tokenRegex.lastIndex=r+1;return this.lex()}return new He(s,new Ue(this,r,this.tokenRegex.lastIndex))}}class Hr{constructor(e={},t={}){this.current=t,this.builtins=e,this.undefStack=[]}beginGroup(){this.undefStack.push({})}endGroup(){if(0===this.undefStack.length)throw new e("Unbalanced namespace destruction: attempt to pop global namespace; please report this as a bug");const t=this.undefStack.pop();for(const e in t)Object.prototype.hasOwnProperty.call(t,e)&&(void 0===t[e]?delete this.current[e]:this.current[e]=t[e])}has(e){return Object.prototype.hasOwnProperty.call(this.current,e)||Object.prototype.hasOwnProperty.call(this.builtins,e)}get(e){return Object.prototype.hasOwnProperty.call(this.current,e)?this.current[e]:this.builtins[e]}set(e,t,r=!1){if(r){for(let t=0;t0&&(this.undefStack[this.undefStack.length-1][e]=t)}else{const t=this.undefStack[this.undefStack.length-1];t&&!Object.prototype.hasOwnProperty.call(t,e)&&(t[e]=this.current[e])}this.current[e]=t}}const Vr={"^":!0,_:!0,"\\limits":!0,"\\nolimits":!0};class _r{constructor(e,t,r){this.settings=t,this.expansionCount=0,this.feed(e),this.macros=new Hr(Je,t.macros),this.mode=r,this.stack=[]}feed(e){this.lexer=new Ur(e,this.settings)}switchMode(e){this.mode=e}beginGroup(){this.macros.beginGroup()}endGroup(){this.macros.endGroup()}future(){return 0===this.stack.length&&this.pushToken(this.lexer.lex()),this.stack[this.stack.length-1]}popToken(){return this.future(),this.stack.pop()}pushToken(e){this.stack.push(e)}pushTokens(e){this.stack.push(...e)}scanArgument(e){let t,r,n;if(e){if(this.consumeSpaces(),"["!==this.future().text)return null;t=this.popToken(),({tokens:n,end:r}=this.consumeArg(["]"]))}else({tokens:n,start:t,end:r}=this.consumeArg());return this.pushToken(new He("EOF",r.loc)),this.pushTokens(n),t.range(r,"")}consumeSpaces(){for(;;){if(" "!==this.future().text)break;this.stack.pop()}}consumeArg(t){const r=[],n=t&&t.length>0;n||this.consumeSpaces();const s=this.future();let o,a=0,l=0;do{if(o=this.popToken(),r.push(o),"{"===o.text)++a;else if("}"===o.text){if(--a,-1===a)throw new e("Extra }",o)}else if("EOF"===o.text)throw new e("Unexpected end of input in a macro argument, expected '"+(t&&n?t[l]:"}")+"'",o);if(t&&n)if((0===a||1===a&&"{"===t[l])&&o.text===t[l]){if(++l,l===t.length){r.splice(-l,l);break}}else l=0}while(0!==a||n);return"{"===s.text&&"}"===r[r.length-1].text&&(r.pop(),r.shift()),r.reverse(),{tokens:r,start:s,end:o}}consumeArgs(t,r){if(r){if(r.length!==t+1)throw new e("The length of delimiters doesn't match the number of args!");const n=r[0];for(let t=0;tthis.settings.maxExpand)throw new e("Too many expansions: infinite loop or need to increase maxExpand setting");let o=s.tokens;const a=this.consumeArgs(s.numArgs,s.delimiters);if(s.numArgs){o=o.slice();for(let t=o.length-1;t>=0;--t){let r=o[t];if("#"===r.text){if(0===t)throw new e("Incomplete placeholder at end of macro body",r);if(r=o[--t],"#"===r.text)o.splice(t+1,1);else{if(!/^[1-9]$/.test(r.text))throw new e("Not a valid argument number",r);o.splice(t,2,...a[+r.text-1])}}}}return this.pushTokens(o),o.length}expandAfterFuture(){return this.expandOnce(),this.future()}expandNextToken(){for(;;)if(!1===this.expandOnce()){const e=this.stack.pop();return e.treatAsRelax&&(e.text="\\relax"),e}throw new Error}expandMacro(e){return this.macros.has(e)?this.expandTokens([new He(e)]):void 0}expandTokens(e){const t=[],r=this.stack.length;for(this.pushTokens(e);this.stack.length>r;)if(!1===this.expandOnce(!0)){const e=this.stack.pop();e.treatAsRelax&&(e.noexpand=!1,e.treatAsRelax=!1),t.push(e)}return t}expandMacroAsText(e){const t=this.expandMacro(e);return t?t.map((e=>e.text)).join(""):t}_getExpansion(e){const t=this.macros.get(e);if(null==t)return t;if(1===e.length){const t=this.lexer.catcodes[e];if(null!=t&&13!==t)return}const r="function"==typeof t?t(this):t;if("string"==typeof r){let e=0;if(-1!==r.indexOf("#")){const t=r.replace(/##/g,"");for(;-1!==t.indexOf("#"+(e+1));)++e}const t=new Ur(r,this.settings),n=[];let s=t.lex();for(;"EOF"!==s.text;)n.push(s),s=t.lex();n.reverse();return{tokens:n,numArgs:e}}return r}isDefined(e){return this.macros.has(e)||Object.prototype.hasOwnProperty.call(Fr,e)||Object.prototype.hasOwnProperty.call($.math,e)||Object.prototype.hasOwnProperty.call($.text,e)||Object.prototype.hasOwnProperty.call(Vr,e)}isExpandable(e){const t=this.macros.get(e);return null!=t?"string"==typeof t||"function"==typeof t||!t.unexpandable:Object.prototype.hasOwnProperty.call(Fr,e)&&!Fr[e].primitive}}const Wr=/^[₊₋₌₍₎₀₁₂₃₄₅₆₇₈₉ₐₑₕᵢⱼₖₗₘₙₒₚᵣₛₜᵤᵥₓᵦᵧᵨᵩᵪ]/,Xr=Object.freeze({"₊":"+","₋":"-","₌":"=","₍":"(","₎":")","₀":"0","₁":"1","₂":"2","₃":"3","₄":"4","₅":"5","₆":"6","₇":"7","₈":"8","₉":"9","ₐ":"a","ₑ":"e","ₕ":"h","ᵢ":"i","ⱼ":"j","ₖ":"k","ₗ":"l","ₘ":"m","ₙ":"n","ₒ":"o","ₚ":"p","ᵣ":"r","ₛ":"s","ₜ":"t","ᵤ":"u","ᵥ":"v","ₓ":"x","ᵦ":"β","ᵧ":"γ","ᵨ":"ρ","ᵩ":"ϕ","ᵪ":"χ","⁺":"+","⁻":"-","⁼":"=","⁽":"(","⁾":")","⁰":"0","¹":"1","²":"2","³":"3","⁴":"4","⁵":"5","⁶":"6","⁷":"7","⁸":"8","⁹":"9","ᴬ":"A","ᴮ":"B","ᴰ":"D","ᴱ":"E","ᴳ":"G","ᴴ":"H","ᴵ":"I","ᴶ":"J","ᴷ":"K","ᴸ":"L","ᴹ":"M","ᴺ":"N","ᴼ":"O","ᴾ":"P","ᴿ":"R","ᵀ":"T","ᵁ":"U","ⱽ":"V","ᵂ":"W","ᵃ":"a","ᵇ":"b","ᶜ":"c","ᵈ":"d","ᵉ":"e","ᶠ":"f","ᵍ":"g","ʰ":"h","ⁱ":"i","ʲ":"j","ᵏ":"k","ˡ":"l","ᵐ":"m","ⁿ":"n","ᵒ":"o","ᵖ":"p","ʳ":"r","ˢ":"s","ᵗ":"t","ᵘ":"u","ᵛ":"v","ʷ":"w","ˣ":"x","ʸ":"y","ᶻ":"z","ᵝ":"β","ᵞ":"γ","ᵟ":"δ","ᵠ":"ϕ","ᵡ":"χ","ᶿ":"θ"}),Zr=Object.freeze({"𝒜":"A","ℬ":"B","𝒞":"C","𝒟":"D","ℰ":"E","ℱ":"F","𝒢":"G","ℋ":"H","ℐ":"I","𝒥":"J","𝒦":"K","ℒ":"L","ℳ":"M","𝒩":"N","𝒪":"O","𝒫":"P","𝒬":"Q","ℛ":"R","𝒮":"S","𝒯":"T","𝒰":"U","𝒱":"V","𝒲":"W","𝒳":"X","𝒴":"Y","𝒵":"Z"});var Yr={"́":{text:"\\'",math:"\\acute"},"̀":{text:"\\`",math:"\\grave"},"̈":{text:'\\"',math:"\\ddot"},"̃":{text:"\\~",math:"\\tilde"},"̄":{text:"\\=",math:"\\bar"},"̆":{text:"\\u",math:"\\breve"},"̌":{text:"\\v",math:"\\check"},"̂":{text:"\\^",math:"\\hat"},"̇":{text:"\\.",math:"\\dot"},"̊":{text:"\\r",math:"\\mathring"},"̋":{text:"\\H"},"̧":{text:"\\c"}},Jr={"á":"á","à":"à","ä":"ä","ǟ":"ǟ","ã":"ã","ā":"ā","ă":"ă","ắ":"ắ","ằ":"ằ","ẵ":"ẵ","ǎ":"ǎ","â":"â","ấ":"ấ","ầ":"ầ","ẫ":"ẫ","ȧ":"ȧ","ǡ":"ǡ","å":"å","ǻ":"ǻ","ḃ":"ḃ","ć":"ć","č":"č","ĉ":"ĉ","ċ":"ċ","ď":"ď","ḋ":"ḋ","é":"é","è":"è","ë":"ë","ẽ":"ẽ","ē":"ē","ḗ":"ḗ","ḕ":"ḕ","ĕ":"ĕ","ě":"ě","ê":"ê","ế":"ế","ề":"ề","ễ":"ễ","ė":"ė","ḟ":"ḟ","ǵ":"ǵ","ḡ":"ḡ","ğ":"ğ","ǧ":"ǧ","ĝ":"ĝ","ġ":"ġ","ḧ":"ḧ","ȟ":"ȟ","ĥ":"ĥ","ḣ":"ḣ","í":"í","ì":"ì","ï":"ï","ḯ":"ḯ","ĩ":"ĩ","ī":"ī","ĭ":"ĭ","ǐ":"ǐ","î":"î","ǰ":"ǰ","ĵ":"ĵ","ḱ":"ḱ","ǩ":"ǩ","ĺ":"ĺ","ľ":"ľ","ḿ":"ḿ","ṁ":"ṁ","ń":"ń","ǹ":"ǹ","ñ":"ñ","ň":"ň","ṅ":"ṅ","ó":"ó","ò":"ò","ö":"ö","ȫ":"ȫ","õ":"õ","ṍ":"ṍ","ṏ":"ṏ","ȭ":"ȭ","ō":"ō","ṓ":"ṓ","ṑ":"ṑ","ŏ":"ŏ","ǒ":"ǒ","ô":"ô","ố":"ố","ồ":"ồ","ỗ":"ỗ","ȯ":"ȯ","ȱ":"ȱ","ő":"ő","ṕ":"ṕ","ṗ":"ṗ","ŕ":"ŕ","ř":"ř","ṙ":"ṙ","ś":"ś","ṥ":"ṥ","š":"š","ṧ":"ṧ","ŝ":"ŝ","ṡ":"ṡ","ẗ":"ẗ","ť":"ť","ṫ":"ṫ","ú":"ú","ù":"ù","ü":"ü","ǘ":"ǘ","ǜ":"ǜ","ǖ":"ǖ","ǚ":"ǚ","ũ":"ũ","ṹ":"ṹ","ū":"ū","ṻ":"ṻ","ŭ":"ŭ","ǔ":"ǔ","û":"û","ů":"ů","ű":"ű","ṽ":"ṽ","ẃ":"ẃ","ẁ":"ẁ","ẅ":"ẅ","ŵ":"ŵ","ẇ":"ẇ","ẘ":"ẘ","ẍ":"ẍ","ẋ":"ẋ","ý":"ý","ỳ":"ỳ","ÿ":"ÿ","ỹ":"ỹ","ȳ":"ȳ","ŷ":"ŷ","ẏ":"ẏ","ẙ":"ẙ","ź":"ź","ž":"ž","ẑ":"ẑ","ż":"ż","Á":"Á","À":"À","Ä":"Ä","Ǟ":"Ǟ","Ã":"Ã","Ā":"Ā","Ă":"Ă","Ắ":"Ắ","Ằ":"Ằ","Ẵ":"Ẵ","Ǎ":"Ǎ","Â":"Â","Ấ":"Ấ","Ầ":"Ầ","Ẫ":"Ẫ","Ȧ":"Ȧ","Ǡ":"Ǡ","Å":"Å","Ǻ":"Ǻ","Ḃ":"Ḃ","Ć":"Ć","Č":"Č","Ĉ":"Ĉ","Ċ":"Ċ","Ď":"Ď","Ḋ":"Ḋ","É":"É","È":"È","Ë":"Ë","Ẽ":"Ẽ","Ē":"Ē","Ḗ":"Ḗ","Ḕ":"Ḕ","Ĕ":"Ĕ","Ě":"Ě","Ê":"Ê","Ế":"Ế","Ề":"Ề","Ễ":"Ễ","Ė":"Ė","Ḟ":"Ḟ","Ǵ":"Ǵ","Ḡ":"Ḡ","Ğ":"Ğ","Ǧ":"Ǧ","Ĝ":"Ĝ","Ġ":"Ġ","Ḧ":"Ḧ","Ȟ":"Ȟ","Ĥ":"Ĥ","Ḣ":"Ḣ","Í":"Í","Ì":"Ì","Ï":"Ï","Ḯ":"Ḯ","Ĩ":"Ĩ","Ī":"Ī","Ĭ":"Ĭ","Ǐ":"Ǐ","Î":"Î","İ":"İ","Ĵ":"Ĵ","Ḱ":"Ḱ","Ǩ":"Ǩ","Ĺ":"Ĺ","Ľ":"Ľ","Ḿ":"Ḿ","Ṁ":"Ṁ","Ń":"Ń","Ǹ":"Ǹ","Ñ":"Ñ","Ň":"Ň","Ṅ":"Ṅ","Ó":"Ó","Ò":"Ò","Ö":"Ö","Ȫ":"Ȫ","Õ":"Õ","Ṍ":"Ṍ","Ṏ":"Ṏ","Ȭ":"Ȭ","Ō":"Ō","Ṓ":"Ṓ","Ṑ":"Ṑ","Ŏ":"Ŏ","Ǒ":"Ǒ","Ô":"Ô","Ố":"Ố","Ồ":"Ồ","Ỗ":"Ỗ","Ȯ":"Ȯ","Ȱ":"Ȱ","Ő":"Ő","Ṕ":"Ṕ","Ṗ":"Ṗ","Ŕ":"Ŕ","Ř":"Ř","Ṙ":"Ṙ","Ś":"Ś","Ṥ":"Ṥ","Š":"Š","Ṧ":"Ṧ","Ŝ":"Ŝ","Ṡ":"Ṡ","Ť":"Ť","Ṫ":"Ṫ","Ú":"Ú","Ù":"Ù","Ü":"Ü","Ǘ":"Ǘ","Ǜ":"Ǜ","Ǖ":"Ǖ","Ǚ":"Ǚ","Ũ":"Ũ","Ṹ":"Ṹ","Ū":"Ū","Ṻ":"Ṻ","Ŭ":"Ŭ","Ǔ":"Ǔ","Û":"Û","Ů":"Ů","Ű":"Ű","Ṽ":"Ṽ","Ẃ":"Ẃ","Ẁ":"Ẁ","Ẅ":"Ẅ","Ŵ":"Ŵ","Ẇ":"Ẇ","Ẍ":"Ẍ","Ẋ":"Ẋ","Ý":"Ý","Ỳ":"Ỳ","Ÿ":"Ÿ","Ỹ":"Ỹ","Ȳ":"Ȳ","Ŷ":"Ŷ","Ẏ":"Ẏ","Ź":"Ź","Ž":"Ž","Ẑ":"Ẑ","Ż":"Ż","ά":"ά","ὰ":"ὰ","ᾱ":"ᾱ","ᾰ":"ᾰ","έ":"έ","ὲ":"ὲ","ή":"ή","ὴ":"ὴ","ί":"ί","ὶ":"ὶ","ϊ":"ϊ","ΐ":"ΐ","ῒ":"ῒ","ῑ":"ῑ","ῐ":"ῐ","ό":"ό","ὸ":"ὸ","ύ":"ύ","ὺ":"ὺ","ϋ":"ϋ","ΰ":"ΰ","ῢ":"ῢ","ῡ":"ῡ","ῠ":"ῠ","ώ":"ώ","ὼ":"ὼ","Ύ":"Ύ","Ὺ":"Ὺ","Ϋ":"Ϋ","Ῡ":"Ῡ","Ῠ":"Ῠ","Ώ":"Ώ","Ὼ":"Ὼ"};const Kr=["bin","op","open","punct","rel"],Qr=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/,en=/^ *\\text/;class tn{constructor(e,t,r=!1){this.mode="math",this.gullet=new _r(e,t,this.mode),this.settings=t,this.isPreamble=r,this.leftrightDepth=0,this.prevAtomType=""}expect(t,r=!0){if(this.fetch().text!==t)throw new e(`Expected '${t}', got '${this.fetch().text}'`,this.fetch());r&&this.consume()}consume(){this.nextToken=null}fetch(){return null==this.nextToken&&(this.nextToken=this.gullet.expandNextToken()),this.nextToken}switchMode(e){this.mode=e,this.gullet.switchMode(e)}parse(){this.gullet.beginGroup(),this.settings.colorIsTextColor&&this.gullet.macros.set("\\color","\\textcolor");const e=this.parseExpression(!1);if(this.expect("EOF"),this.isPreamble){const e=Object.create(null);return Object.entries(this.gullet.macros.current).forEach((([t,r])=>{e[t]=r})),this.gullet.endGroup(),e}const t=this.gullet.macros.get("\\df@tag");return this.gullet.endGroup(),t&&(this.gullet.macros.current["\\df@tag"]=t),e}static get endOfExpression(){return["}","\\endgroup","\\end","\\right","\\endtoggle","&"]}subparse(e){const t=this.nextToken;this.consume(),this.gullet.pushToken(new He("}")),this.gullet.pushTokens(e);const r=this.parseExpression(!1);return this.expect("}"),this.nextToken=t,r}parseExpression(e,t,r){const n=[];for(this.prevAtomType="";;){"math"===this.mode&&this.consumeSpaces();const s=this.fetch();if(-1!==tn.endOfExpression.indexOf(s.text))break;if(t&&s.text===t)break;if(r&&"\\middle"===s.text)break;if(e&&Fr[s.text]&&Fr[s.text].infix)break;const o=this.parseAtom(t);if(!o)break;"internal"!==o.type&&(n.push(o),this.prevAtomType="atom"===o.type?o.family:o.type)}return"text"===this.mode&&this.formLigatures(n),this.handleInfixNodes(n)}handleInfixNodes(t){let r,n=-1;for(let s=0;s=128||Pr.exec(r)))return null;if(this.settings.strict&&"math"===this.mode)throw new e(`Unicode text character "${r[0]}" used in math mode`,t);s={type:"textord",mode:"text",loc:Ue.range(t),text:r}}if(this.consume(),n)for(let r=0;r0&&s[0].type&&"array"===s[0].type&&s[0].addEqnNum)&&n.gullet.macros.get("\\df@tag")){if(!r.displayMode)throw new e("\\tag works only in display mode");n.gullet.feed("\\df@tag"),s=[{type:"tag",mode:"text",body:s,tag:n.parse()}]}return s},nn=[2,2,3,3];class sn{constructor(e){this.level=e.level,this.color=e.color,this.font=e.font||"",this.fontFamily=e.fontFamily||"",this.fontSize=e.fontSize||1,this.fontWeight=e.fontWeight||"",this.fontShape=e.fontShape||"",this.maxSize=e.maxSize}extend(e){const t={level:this.level,color:this.color,font:this.font,fontFamily:this.fontFamily,fontSize:this.fontSize,fontWeight:this.fontWeight,fontShape:this.fontShape,maxSize:this.maxSize};for(const r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return new sn(t)}withLevel(e){return this.extend({level:e})}incrementLevel(){return this.extend({level:Math.min(this.level+1,3)})}inSubOrSup(){return this.extend({level:nn[this.level]})}withColor(e){return this.extend({color:e})}withFont(e){return this.extend({font:e})}withTextFontFamily(e){return this.extend({fontFamily:e,font:""})}withFontSize(e){return this.extend({fontSize:e})}withTextFontWeight(e){return this.extend({fontWeight:e,font:""})}withTextFontShape(e){return this.extend({fontShape:e,font:""})}getColor(){return this.color}}function on(e){const t={};let r=0;const n=document.getElementsByClassName("tml-eqn");for(let e of n)for(r+=1,e.setAttribute("id","tml-eqn-"+String(r));"mtable"!==e.tagName;){if(e.getElementsByClassName("tml-label").length>0){const n=e.attributes.id.value;t[n]=String(r);break}e=e.parentElement}const s=document.getElementsByClassName("tml-tageqn");for(const e of s){if(e.getElementsByClassName("tml-label").length>0){const r=e.getElementsByClassName("tml-tag");if(r.length>0){const n=e.attributes.id.value;t[n]=r[0].textContent}}}[...e.getElementsByClassName("tml-ref")].forEach((e=>{const r=e.getAttribute("href");let n=t[r.slice(1)];-1===e.className.indexOf("tml-eqref")?(n=n.replace(/^\(/,""),n=n.replace(/\)$/,"")):("("!==n.charAt(0)&&(n="("+n),")"!==n.slice(-1)&&(n+=")"));const s=document.createElementNS("http://www.w3.org/1998/Math/MathML","mtext");s.appendChild(document.createTextNode(n));const o=document.createElementNS("http://www.w3.org/1998/Math/MathML","math");o.appendChild(s),e.textContent="",e.appendChild(o)}))}const an=function(e,t,r){let n=r,s=0;const o=e.length;for(;ne.left.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"))).join("|")+")");for(;r=e.search(s),-1!==r;){r>0&&(n.push({type:"text",data:e.slice(0,r)}),e=e.slice(r));const s=t.findIndex((t=>e.startsWith(t.left)));if(r=an(t[s].right,e,t[s].left.length),-1===r)break;const o=e.slice(0,r+t[s].right.length),a=ln.test(o)?o:e.slice(t[s].left.length,r);n.push({type:"math",data:a,rawData:o,display:t[s].display}),e=e.slice(r+t[s].right.length)}return""!==e&&n.push({type:"text",data:e}),n}(t,r.delimiters);if(1===n.length&&"text"===n[0].type)return null;const s=document.createDocumentFragment();for(let t=0;t-1===e.indexOf(" "+t+" ")))&&un(n,t)}}};let hn=function(e,t,r={}){t.textContent="";const n="math"===t.tagName.toLowerCase();n&&(r.wrap="none");const s=gn(e,r);n||s.children.length>1?(t.textContent="",s.children.forEach((e=>{t.appendChild(e.toNode())}))):t.appendChild(s.toNode())};"undefined"!=typeof document&&"CSS1Compat"!==document.compatMode&&("undefined"!=typeof console&&console.warn("Warning: Temml doesn't work in quirks mode. Make sure your website has a suitable doctype."),hn=function(){throw new e("Temml doesn't work in quirks mode.")});const gn=function(t,r){const n=new a(r);try{const e=rn(t,n);return he(e,t,new sn({level:n.displayMode?Ve:_e,maxSize:n.maxSize}),n)}catch(r){return function(t,r,n){if(n.throwOnError||!(t instanceof e))throw t;const s=new y(["temml-error"],[new w(r+"\n\n"+t.toString())]);return s.style.color=n.errorColor,s.style.whiteSpace="pre-line",s}(r,t,n)}};return{version:"0.11.04",render:hn,renderToString:function(e,t){return gn(e,t).toMarkup()},renderMathInElement:function(e,t){if(!e)throw new Error("No element provided to render");const r={};for(const e in t)Object.prototype.hasOwnProperty.call(t,e)&&(r[e]=t[e]);r.fences?r.delimiters=(e=>{if("$"===e||"("===e)return dn[e];if("$+"===e||"(+"===e)return dn[e.slice(0,1)].concat(mn);return"ams"===e?mn:"all"===e?dn["("].concat(dn.$).concat(mn):cn})(r.fences):r.delimiters=r.delimiters||cn,r.ignoredTags=r.ignoredTags||["script","noscript","style","textarea","pre","code","option"],r.ignoredClasses=r.ignoredClasses||[],r.errorCallback=r.errorCallback||console.error,r.macros=r.macros||{},un(e,r),on(e)},postProcess:on,ParseError:e,definePreamble:function(e,t){const r=new a(t);if(r.macros={},!("string"==typeof e||e instanceof String))throw new TypeError("Temml can only parse string typed expression");const n=new tn(e,r,!0);delete n.gullet.macros.current["\\df@tag"];return n.parse()},__parse:function(e,t){const r=new a(t);return rn(e,r)},__renderToMathMLTree:gn,__defineSymbol:I,__defineMacro:Ye}}(); \ No newline at end of file diff --git a/assets/under-construction.gif b/assets/under-construction.gif new file mode 100644 index 0000000000000000000000000000000000000000..e85b756fb117db5c32aaf64793586aadfdff7136 GIT binary patch literal 2583 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 literal 0 HcmV?d00001 diff --git a/content/about.smd b/content/about.smd new file mode 100644 index 0000000..9e9be32 --- /dev/null +++ b/content/about.smd @@ -0,0 +1,56 @@ +--- +.title = "About", +.date = @date("1990-01-01T00:00:00"), +.author = "Sample Author", +.layout = "index.shtml", +.draft = false, +--- + +## About Zine +Zine is an MIT-licensed project created by [Loris Cro](https://kristoff.it) and +other contributors listed on the [official repository](https://github.com/kristoff-it/zine/contributors). + +Zine is inspired by [Hugo](https://gohugo.io) but features an entirely custom set +of authoring languages: + +- [Scripty](https://zine-ssg.io/docs/scripty/) is the small expression + language that both SuperHTML and SuperMD share to express templating logic. + +- [SuperHTML](https://zine-ssg.io/docs/superhtml/) is the HTML templating + language used by Zine. Unlike most `{{curly braced}}` templating languages, + SuperHTML uses valid HTML syntax to express the templating logic, adding only + minor extensions to normal HTML. + Thanks to this approach, it offers instant + syntax checking and autoformatting via [a CLI tool](https://github.com/kristoff-it/superhtml) as well as Language Server support ([VScode Extension](https://marketplace.visualstudio.com/items?itemName=LorisCro.super)). + + ># [NOTE]($block) + >The correct file extension for SuperHTML templates is `.shtml`. + +- [SuperMD](https://zine-ssg.io/docs/supermd/) is a superset of Markdown + that, instead of relying on inline HTML, offers new constructs for expressing + content embeds without pulling into your content needless layouting concerns. + A CLI tool and language server for SuperMD is in the works. + + ># [NOTE]($block) + >The correct file extension for SuperMD pages is `.smd`. + +## Zine is alpha software + +Zine is not yet complete. The main functionality is present and you will be able +to build even moderately complex static websites without issue. + +That said using Zine today does imply participating in the development process +to some degree, which usually means inquiring about the development status of +a feature you need, or reporting a bug. + + +Here are some quicklinks related to Zine: + +- Official Website: https://zine-ssg.io/ +- Source Code: https://github.com/kristoff-it/zine/ +- Discord: https://discord.com/invite/B73sGxF + + + + + diff --git a/content/blog/first-post/fanzine.jpg b/content/blog/first-post/fanzine.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9d6e569f9c2dc06fa61d7b2ebb8e3c8fe4c871fe GIT binary patch literal 124852 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�D!G8oJ(CKWoIR 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%0DwhC-?>Fc_(wk|?kH8I^_L0u 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 literal 0 HcmV?d00001 diff --git a/content/blog/first-post/index.smd b/content/blog/first-post/index.smd new file mode 100644 index 0000000..7028462 --- /dev/null +++ b/content/blog/first-post/index.smd @@ -0,0 +1,110 @@ +--- +.title = "First Post: What's A Zine?", +.date = @date("1990-01-01T00:00:00"), +.author = "Sample Author", +.layout = "post.shtml", +.draft = false, +--- + +This is a sample first post for your blog. + +This post is defined in `content/blog/first-post/` and contains the following +files: + +- `index.smd` +- `fanzine.jpg` + +Another interesting thing about this post is that it uses the `layouts/post.shtml` +template which adds at the bottom page navigation within the blog section. + +Enough about Zine, let's talk about zines. + +## Fanzines + +A zine (short for *fanzine*, from "fan" + "magazine") is a non-professional +publication created by people that want to express themselves in paper form, +usually in relation to a cultural phenomenon of some kind. + +[An example of zine from 1976.](<$image.asset("fanzine.jpg").alt("A photo of a black and white flyer. The main title reads 'A night of pure energy' and the rest of the page contains a mix of pictures of guitarists interleaved with other text snippets, some seemingly taken from a professional publication of some kind, and some handwritten to announce concert night dates, presumably for the musicians in the picture.")>) + +## Zines in the digital era + +In the digital age, some of the cultural impetus behind zines got redirected to +personal blogs and similar digital, non-professional publications. The 90's and +early 00's are famous for their whacky websites full of clip art, wordart text +and "under construction" animated gifs. + +This initial organic exploration didn't last for too long as the rise of social +media diverted a lot of self-expression energy towards walled gardens, a change +that was also fueled by the much tighter and intense feedback loop that those +platform enable. + +In the 90's the stongest dopamine hit you could get was adding a visit counter +to your altavista website and watch it go up, slowly, mostly because of your own +accesses. In modern times views are almost meaningless and interactions such as +*likes*, *retweets* and *comments* provide much stronger positive feedback. + +An unfortunate side effect of this new cultural wave centered around social media +is that not only you end up gifting your content to platform owners, but you also +participate in a system where the *language* of the social media site shapes your +thoughts and experience in specific, and often user-hostile, ways. + +Art, just like liquids, takes the shape of the container you put it in. A mobile +game that lives off of in app purchases will never be truly great because of the +tension between making the game entertaining enough to keep players engaged, and +the need to make it boring enough so that they will want to buy upgrades to make +the game more fun. + +Similarly, self-expression on Twitter is encouraged to take the shape of short, +hyperbolic hot takes that forgo nuance in order to create catchy quips that can +be used for hasty decision making. + +Likewise, [corpowave]($text.attrs('wave')) never goes out of style on LinkedIn. +Spend enough time in there and you will become a character from Severance. + +## We're not in 1990 anymore + +Despite all the issues with social media, there is no point in thinking of the +90's as a better time. It was not. And despite the winks at the past, Zine is +not a tool for indulging in nostalgia. + +**The goal is to make art**: the act of inducing a change in others through +our self-expression. + +You could argue that the 90's excelled at self-expression, but in doing so you +would also have to accept that social media is infinitely more effective at +inducing change in others (albeit at the expense of freedom of expression). + +Once you realize that, the path forward is clear: + +1. Own your content. +2. Create new social systems that optimize for creating art over engagement. + +Owning your content means that you will be unaffected by enshittification of +platforms that would otherwise keep your data hostage. It also is the single +most effective thing you can do as an individual to take power away from +platforms, all while protecting your own immediate interests. + +Creation of new social systems is a *slightly more hairy* problem than self +hosting a static website, but it's something that can be done. Over the years +we've had plenty of social outlets that have allowed people to socialize through +their homemade games, music, drawings, fanfics, etc; and chances are that we +have yet many more of these outlets ahead of us to create. + +Zine gives you a small puzzle piece to help you inch closer toward a better +future, partially by providing you with a new iteration over tried and true +patterns (e.g. by facilitating content creation by separating content from +layouting concerns as much as possible), and also by being a bit experimental +with the concept of a devlog, something that you wouldn't normally expect to +find on a static website. + +Lastly, Zine makes sure your content (both blog and devlog, but also any +other content format you might come up with yourself) is available via RSS +syndication. RSS feeds are far from a winning technology in the fight against +the ebb and *enshitty*flow of social media, but they are another small puzzle +piece that costs nothing to maintain and that might turn out to be critical once +enough other preconditions are met. + +With that in mind, **go make art with your words**. + +-- Loris diff --git a/content/blog/index.smd b/content/blog/index.smd new file mode 100644 index 0000000..a669d96 --- /dev/null +++ b/content/blog/index.smd @@ -0,0 +1,40 @@ +--- +.title = "Blog", +.date = @date("1990-01-01T00:00:00"), +.author = "Sample Author", +.layout = "blog.shtml", +.alternatives = [{ + .name = "rss", + .layout = "blog.xml", + .output = "index.xml", +}], +.draft = false, +--- + +This page defines the blog section and lists all posts in it. + +A "site section" in Zine is a group of pages that form a logical subtree of the +website. It's related to directory structure, but it's not an entirely 1:1 mapping. + +What defines a site section in Zine is the presence of `index.smd` files. You +can learn more [in the official Zine docs](https://zine-ssg.io/docs/). + +Take also a look at `layouts/blog.shtml` to get an idea of how to render a page +list in a SuperHTML template. + +The blog section also has an [RSS feed]($link.alternative('rss')). + +In Zine, RSS feeds are considered "alternative" versions of an existing page. In +concrete defines the blog section and that lists all pages in it, is rendered in +two versions: HTML for human readers, and XML for RSS readers. + +This is the SuperMD frontmatter code that defines the RSS feed: + +```ziggy +.alternatives = [{ + .name = "rss", + .layout = "rss.xml", + .output = "index.xml", +}], +``` +[(btw syntax highlighting is done statically in Zine, no need for javascript libraries, unless you want to)]($text.attrs('small')) diff --git a/content/blog/second-post.smd b/content/blog/second-post.smd new file mode 100644 index 0000000..7c5b453 --- /dev/null +++ b/content/blog/second-post.smd @@ -0,0 +1,28 @@ +--- +.title = "Second Post", +.date = @date("1990-01-02T00:00:00"), +.author = "Sample Author", +.layout = "post.shtml", +.draft = false, +--- + +This second post is mainly here to show you that you can also create single file +posts for convenience. The first post contains more interesting content. + +Don't forget to read [the official SuperMD +docs](https://zine-ssg.io/docs/supermd/) to know how to *style* your content. + + +Btw this sample website also includes the JS/CSS dependencies required to render +math: + +```=mathtex +\begin{aligned} +f(t) &= \int_{-\infty}^\infty F(\omega) \cdot (-1)^{2 \omega t} \mathrm{d}\omega \\ +F(\omega) &= \int_{-\infty}^\infty f(t) \div (-1)^{2 \omega t} \mathrm{d}t \\ +\end{aligned} +``` + +This: [`(-1)^x = \cos(\pi x) + i\sin(\pi x)`]($mathtex) is an inline equation +instead! + diff --git a/content/devlog/1989.smd b/content/devlog/1989.smd new file mode 100644 index 0000000..af335c7 --- /dev/null +++ b/content/devlog/1989.smd @@ -0,0 +1,18 @@ +--- +.title = "Devlog - 1989", +.date = @date("1989-01-01T00:00:00"), +.author = "Sample Author", +.layout = "devlog.shtml", +.draft = false, +--- +[]($section.id('about')) +## About this Devlog +This is a non-exhaustive, curated list of changes meant to help users quickly see what has improved since they last checked. + +You can [subscribe the latest devlog via RSS]($link.page('devlog').alternative('rss')). + +This page lists entries for the year 1989, for past or future entries consult the +[devlog archive](/devlog/). + +## [Hello 1989]($section.id("1989-01-01T00:00:00")) +This is a sample entry. diff --git a/content/devlog/1990.smd b/content/devlog/1990.smd new file mode 100644 index 0000000..1a21479 --- /dev/null +++ b/content/devlog/1990.smd @@ -0,0 +1,38 @@ +--- +.title = "Devlog - 1990", +.date = @date("1990-01-01T00:00:00"), +.author = "Sample Author", +.layout = "devlog.shtml", +.draft = false, +--- +[]($section.id('about')) +## About this Devlog + +This is where you should describe to your users what your devlog is about. +Refer to the corresponding section in the home page to learn more about devlogs. + +For example this is how the Zine devlog describes itself: + +> This is a non-exhaustive, curated list of changes meant to help users quickly see what has improved since they last checked. +> +> You can [subscribe to this page via RSS]($link.page('devlog').alternative('rss')). +> +> This page lists entries for the current year, for past entries consult the +[devlog archive](/devlog/). + +Feel free to tweak it to your specific use case or replace it entirely as you +see fit. + +Regardless of what you decide, you might want to make sure you preserve the +links to the RSS feed and to the devlog archive from the copy above. + + +## [Third Entry]($section.id("1990-01-03T00:00:00")) +This is the third entry. + +## [Second Entry]($section.id("1990-01-02T00:00:00")) +This is the second entry. + +## [Hello Zine]($section.id("1990-01-01T00:00:00")) +This is the first entry in this year's devlog created with +[Zine](https://zine-ssg.io)! diff --git a/content/devlog/index.smd b/content/devlog/index.smd new file mode 100644 index 0000000..2ffa659 --- /dev/null +++ b/content/devlog/index.smd @@ -0,0 +1,32 @@ +--- +.title = "Devlog Archive", +.date = @date("1990-01-01T00:00:00"), +.author = "Sample Author", +.layout = "devlog-archive.shtml", +.alternatives = [{ + .name = "rss", + .layout = "devlog.xml", + .output = "index.xml", +}], +.draft = false, +--- + +This page lists all the devlog years that are present on this site. +Note how the top navigation menu doesn't link to this page, but instead links +to the latest devlog year directly. + +The reason for adopting this structure is to make sure that links that exist in +the wild to entries to our devlog don't become invalidated when a new year comes +around and we rotate the devlog feed. + +Devlog rotation ensures that you don't have a single page that grows +indefinitely, eventually compromising your editing expreience and worsening your +user's browsing experience. You can use any arbitrary policy (even deleting old +entries if you are fine with having a more ephemeral devlog), but cutting them +by year is a good default option. + +When rotating a devlog all you have to do is create a new page with a newer +date set in the frontmatter `date` field, and update the page description to let +people know that this page is not the current year's devlog anymore. + +The latest devlog year is also available [via RSS feed]($link.alternative('rss')). diff --git a/content/index.smd b/content/index.smd new file mode 100644 index 0000000..dc52136 --- /dev/null +++ b/content/index.smd @@ -0,0 +1,88 @@ +--- +.title = "Homepage", +.date = @date("1990-01-01T00:00:00"), +.author = "Sample Author", +.layout = "index.shtml", +.draft = false, +--- + +This sample website showcases: + +- A couple simple pages + - `content/index.smd` + - `content/about.smd` +- A blog + - `content/blog/index.smd` + - `content/blog/first-post/index.smd` + - `content/blog/second-post.smd` +- A devlog + - `content/devlog/index.smd` + - `content/devlog/1990.smd` + - `content/devlog/1989.smd` + + + +## About Devlogs + +While a blog has each entry be a separate page, a devlog is one single page with +a list of smaller entries in it, making it a form of microblogging. The relative +RSS feed will generate a separate item per devlog entry, creating a +"twitter-like" feed. + +This can be a useful pattern for thoughts that are too small for a full blog post +so consider giving it a try! + +The name "devlog" comes from the fact that this kind of microblogging feed works +well when you have an open source project and you want to give small updates to +your users, but it might work equally well for other domains, depending on your +interests and audience. Maybe a "foodlog", a "catlog" or a "treklog" could also +work well. + +The devlog section contains more information about how devlogs can be implemented +in Zine. + +Some examples of devlogs in the wild: + - https://zine-ssg.io/log/ + - https://ziglang.org/devlog/ + + +## Next steps + +Make sure to read the [official Zine docs](https://zine-ssg.io/docs/) +and then start editing this website! + +Start by putting the correct information in `zine.ziggy` and then start editing +the existing pages. Before deleting existing copy consider giving it a brief +look as it will show you some SuperMD specific syntax. + +HTML markup in Zine is defined via SuperHTML templates: +- `layouts/index.shtml` +- `layouts/page.shtml` +- `layouts/post.shtml` +- `layouts/blog.shtml` +- `layouts/blog.xml` +- `layouts/devlog.shtml` +- `layouts/devlog.xml` +- `layouts/devlog-archive.shtml` +- `layouts/templates/base.shtml` + +**If you're running the Zine development server (by running `zine`), then all +changes you make will be picked up immediately, causing the website to rebuild +and the page in your browser to refresh**. + +You can learn more about SuperMD and SuperHTML in [/about/](/about/). + +Lastly, this sample website also includes the following asset files: + +- `assets/style.css` +- `assets/hightlight.css` +- `assets/under-construction.gif` +- `assets/katex-tag.js` +- `assets/katex0.16.21.css` +- `assets/katex0.16.21.js` +- `content/blog/first-post/fanzine.jpg` + +The first few asset files are **site assets**, while the last is a **page asset** that belongs to the "first post" page. + +The Zine docs contain more information about [dealing with assets](https://zine-ssg.io/docs/assets/). + diff --git a/layouts/blog.shtml b/layouts/blog.shtml new file mode 100644 index 0000000..ff41a2f --- /dev/null +++ b/layouts/blog.shtml @@ -0,0 +1,25 @@ + + + + + +

+
+
+ \ No newline at end of file diff --git a/layouts/blog.xml b/layouts/blog.xml new file mode 100644 index 0000000..b9c2b25 --- /dev/null +++ b/layouts/blog.xml @@ -0,0 +1,19 @@ + + + + + + Zine -- https://zine-ssg.io + en-US + + + + + + + + + + + + diff --git a/layouts/devlog-archive.shtml b/layouts/devlog-archive.shtml new file mode 100644 index 0000000..cc4cdc0 --- /dev/null +++ b/layouts/devlog-archive.shtml @@ -0,0 +1,25 @@ + + + + + +

+
+
+

Past years

+
+ + +

+
+
+
+ \ No newline at end of file diff --git a/layouts/devlog.shtml b/layouts/devlog.shtml new file mode 100644 index 0000000..c5eeb97 --- /dev/null +++ b/layouts/devlog.shtml @@ -0,0 +1,45 @@ + + + + + +

+
+
+
+ +

+ +
+
+ \ No newline at end of file diff --git a/layouts/devlog.xml b/layouts/devlog.xml new file mode 100644 index 0000000..ebde99f --- /dev/null +++ b/layouts/devlog.xml @@ -0,0 +1,21 @@ + + + + + + Zine -- https://zine-ssg.io + en-US + + + + + + + + + + + + + + diff --git a/layouts/index.shtml b/layouts/index.shtml new file mode 100644 index 0000000..54e79c5 --- /dev/null +++ b/layouts/index.shtml @@ -0,0 +1,7 @@ + + + + +

+
+ \ No newline at end of file diff --git a/layouts/page.shtml b/layouts/page.shtml new file mode 100644 index 0000000..54e79c5 --- /dev/null +++ b/layouts/page.shtml @@ -0,0 +1,7 @@ + + + + +

+
+ \ No newline at end of file diff --git a/layouts/post.shtml b/layouts/post.shtml new file mode 100644 index 0000000..db6c5b4 --- /dev/null +++ b/layouts/post.shtml @@ -0,0 +1,40 @@ + + + + + +

+
+ + \ No newline at end of file diff --git a/layouts/templates/base.shtml b/layouts/templates/base.shtml new file mode 100644 index 0000000..cc15eb3 --- /dev/null +++ b/layouts/templates/base.shtml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + +

+ + + + + \ No newline at end of file diff --git a/zine.ziggy b/zine.ziggy new file mode 100644 index 0000000..66d1493 --- /dev/null +++ b/zine.ziggy @@ -0,0 +1,10 @@ +Site { + .title = "Welcome to Zine!", + .host_url = "https://example.com", + .content_dir_path = "content", + .layouts_dir_path = "layouts", + .assets_dir_path = "assets", + .static_assets = [ + "Temml.woff2", + ], +}