@mathzetta/inlinemath 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/README.md +64 -20
  2. package/dist/cas.external.js +2 -2
  3. package/dist/cas.js +2 -2
  4. package/dist/chunks/calculate-Cz87Lt0N.js +2 -0
  5. package/dist/chunks/draw-Bev17BJJ.js +2 -0
  6. package/dist/chunks/edit-C65xXzo8.js +2 -0
  7. package/dist/chunks/edit-M68aRA5o.js +2 -0
  8. package/dist/chunks/{html-CvuSyhzk.js → html-BimAqn7x.js} +2 -2
  9. package/dist/chunks/html-CupluJSh.js +2 -0
  10. package/dist/chunks/lite-3Fb-OHbt.js +2 -0
  11. package/dist/inlinemath-cas.external.global.min.js +2 -2
  12. package/dist/inlinemath-cas.global.min.js +2 -2
  13. package/dist/inlinemath-lite-calc.global.min.js +2 -2
  14. package/dist/inlinemath-lite.external.global.min.js +2 -2
  15. package/dist/inlinemath-lite.global.min.js +2 -2
  16. package/dist/inlinemath.css +32 -1
  17. package/dist/inlinemath.external.global.min.js +2 -2
  18. package/dist/inlinemath.external.js +2 -2
  19. package/dist/inlinemath.global.min.js +2 -2
  20. package/dist/inlinemath.js +2 -2
  21. package/dist/lite-calc.js +2 -2
  22. package/dist/lite.external.js +2 -2
  23. package/dist/lite.js +2 -2
  24. package/dist/markdown.external.js +2 -2
  25. package/dist/markdown.js +2 -2
  26. package/inlinemath.css +32 -1
  27. package/package.json +3 -3
  28. package/src/cas.js +25 -15
  29. package/src/edit.js +96 -0
  30. package/src/glyphs.js +2 -0
  31. package/src/index.d.ts +2 -2
  32. package/src/index.js +1 -1
  33. package/src/layout.js +55 -11
  34. package/src/markdown.d.ts +2 -2
  35. package/src/markdown.js +354 -39
  36. package/src/mathzetta.js +2 -1
  37. package/src/types.d.ts +77 -6
  38. package/src/variables.js +228 -0
  39. package/src/view.js +226 -6
  40. package/dist/chunks/calculate-BX9lJ7Ff.js +0 -2
  41. package/dist/chunks/draw-Cm4exbg7.js +0 -2
  42. package/dist/chunks/html-DWtfytjA.js +0 -2
  43. package/dist/chunks/lite-Bj_L6w2g.js +0 -2
@@ -1,2 +1,2 @@
1
- /* Inline Math 0.1.0 — MIT licence; MathZetta not included: load a MathZetta <script> (mathzetta.min.js or mathzetta.maths-display.min.js) first */
2
- var InlineMath=function(e,t,n){"use strict";const i={"(":{fill:"M0.92,0 C0.1,0.2 0.1,0.8 0.92,1 L1,0.975 C0.48,0.75 0.48,0.25 1,0.025 Z"},")":{fill:"M0.08,0 C0.9,0.2 0.9,0.8 0.08,1 L0,0.975 C0.52,0.75 0.52,0.25 0,0.025 Z"},"{":{fill:"M1,0 C0.45,0 0.5,0.05 0.5,0.2 L0.5,0.38 C0.5,0.46 0.35,0.49 0.05,0.5 C0.35,0.51 0.5,0.54 0.5,0.62 L0.5,0.8 C0.5,0.95 0.45,1 1,1 L1,0.985 C0.68,0.985 0.64,0.95 0.64,0.8 L0.64,0.62 C0.64,0.53 0.55,0.505 0.3,0.5 C0.55,0.495 0.64,0.47 0.64,0.38 L0.64,0.2 C0.64,0.05 0.68,0.015 1,0.015 Z"},"}":{fill:"M0,0 C0.55,0 0.5,0.05 0.5,0.2 L0.5,0.38 C0.5,0.46 0.65,0.49 0.95,0.5 C0.65,0.51 0.5,0.54 0.5,0.62 L0.5,0.8 C0.5,0.95 0.55,1 0,1 L0,0.985 C0.32,0.985 0.36,0.95 0.36,0.8 L0.36,0.62 C0.36,0.53 0.45,0.505 0.7,0.5 C0.45,0.495 0.36,0.47 0.36,0.38 L0.36,0.2 C0.36,0.05 0.32,0.015 0,0.015 Z"},sqrt:{stroke:"M0,0.62 L0.18,0.55 L0.45,0.97 L0.98,0.015"},int:{stroke:"M0.95,0.09 C0.9,0.01 0.72,0 0.66,0.12 C0.6,0.25 0.42,0.75 0.34,0.88 C0.28,0.99 0.1,0.99 0.05,0.91"},sum:{fill:"M0.04,0 L0.94,0 L0.98,0.24 L0.94,0.24 C0.9,0.1 0.8,0.07 0.62,0.07 L0.24,0.07 L0.58,0.5 L0.2,0.93 L0.64,0.93 C0.82,0.93 0.92,0.9 0.95,0.76 L0.99,0.76 L0.94,1 L0.02,1 L0.47,0.47 Z"},prod:{fill:"M0,0 L1,0 L1,0.04 L0.88,0.05 L0.88,0.95 L1,0.96 L1,1 L0.62,1 L0.62,0.96 L0.74,0.95 L0.74,0.06 L0.26,0.06 L0.26,0.95 L0.38,0.96 L0.38,1 L0,1 L0,0.96 L0.12,0.95 L0.12,0.05 L0,0.04 Z"}};function r(e,t,n=""){const r=i[e];return`<svg class="${t}" viewBox="0 0 1 1" preserveAspectRatio="none" aria-hidden="true"${n?` style="${n}"`:""}>${r.fill?`<path d="${r.fill}" fill="currentColor"/>`:`<path d="${r.stroke}" fill="none" stroke="currentColor" vector-effect="non-scaling-stroke"/>`}</svg>`}const s=.8,l=.2,a=.25,o=.7,h="−",m={"+":"add","-":"sub","*":"mul","/":"frac","^":"pow",_:"subscript",neg:"neg",pm:"pm","!":"factorial","=":"eq","===":"eq","≠":"neq","≠=":"neq","<":"lt",">":"gt","≤":"le","≥":"ge","≈":"approx","≡":"equiv","∈":"in","∉":"notin","∪":"union","∩":"intersect","→":"to","±":"pm","&":"and","|":"or","\\not":"not","\\xor":"xor","\\nand":"nand","\\nor":"nor","?:":"cases","()":"tuple","[]":"list","{}":"set","(]":"interval","[)":"interval","\\sumidx":"sum","\\prodidx":"prod",mod:"mod",pmod:"pmod"},c={"=":"=","===":"=","≠":"≠","≠=":"≠","<":"<",">":">","≤":"≤","≥":"≥","∈":"∈","∉":"∉","→":"→","≈":"≈","≡":"≡","&":"∧","|":"∨","\\xor":"⊕","\\nand":"↑","\\nor":"↓"},d={"±":"±","∪":"∪","∩":"∩",mod:"mod"},p=["sin","cos","tan","csc","sec","cot","sinh","cosh","tanh"],u={arcsin:"sin",arccos:"cos",arctan:"tan",arcsinh:"sinh",arccosh:"cosh",arctanh:"tanh"},f=[...p,...Object.keys(u),"ln"],v={atan2:"atan2",max:"max",min:"min",gcd:"gcd",mean:"mean",round:"round",fixed:"fixed",expm1:"expm1",random:"random"},g={"()":["(",")"],"[]":["[","]"],"{}":["{","}"],"(]":["(","]"],"[)":["[",")"]},b={"\\partial":"∂","\\nabla":"∇","\\ell":"ℓ","\\infty":"∞","\\emptyset":"∅"},y={vec:"→",hat:"ˆ",widehat:"ˆ",tilde:"˜",dot:"˙",ddot:"¨"},x=["boxed","overline","bar","underline","cancel",...Object.keys(y)],w={prefix:"mv",display:!0,fnParens:"auto",trigPowers:!0,inverseTrig:"arc",derivativeBrackets:"[",scriptFractions:"slash",cases:!0,label:!0,attributes:null,style:null},$=e=>String(e).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;"),k=e=>+e.toFixed(3)+"em",L=(e,t=s,n=l)=>({html:e,h:t,d:n});function M(...e){const t=e.flat().filter(Boolean);return{html:t.map(e=>e.html).join(""),h:Math.max(s,...t.map(e=>e.h)),d:Math.max(l,...t.map(e=>e.d))}}function C(e,t={}){const i=new z({...w,...t}),r=i.render(e,{level:0}),s=`${i.p}${i.o.display?` ${i.p}-display`:""}`,l=function(e,t){if(!1===t||null===t)return null;if("string"==typeof t)return t;try{return"function"==typeof t?t(e):n.toSpeech(e)}catch{return null}}(e,i.o.label),a=null===l?r.html:r.html.replace(/^<span /,'<span aria-hidden="true" ');return{html:`<span class="${s}"${null===l?"":` role="math" aria-label="${$(l)}"`}>${a}</span>`,h:r.h,d:r.d}}class z{constructor(e){this.o=e,this.p=e.prefix}el(e,t,n="",i=""){return`<span class="${e.split(" ").map(e=>`${this.p}-${e}`).join(" ")}"${n?` style="${n}"`:""}${i}>${t}</span>`}text(e,t){const n=L(this.el(e,$(t)));return n.leaf={kind:e,content:$(t)},n}bin(e){return this.text("bin",e)}rel(e){return this.text("rel",e)}punct(e){return this.text("punct",e)}word(e){return this.text("word",e)}wrap(e,t,n){let i="";void 0!==e.id&&(i+=` data-node="${e.id}"`),"op"===e.type&&(i+=` data-op="${$(e.op)}"`);const r=this.o.attributes&&this.o.attributes(e)||{};for(const[e,t]of Object.entries(r))"class"!==e&&"style"!==e&&(i+=` ${e}="${$(t)}"`);const s=[r.style,this.o.style&&this.o.style(e)].filter(Boolean).join(";"),l=(n.leaf?["n",...t,n.leaf.kind]:["n",...t]).map(e=>`${this.p}-${e}`).concat(r.class?[r.class]:[]).join(" "),a=n.leaf?n.leaf.content:n.html;return{html:`<span class="${l}"${s?` style="${$(s)}"`:""}${i}>${a}</span>`,h:n.h,d:n.d}}render(e,t){return"number"===e.type?this.number(e):"string"===e.type?this.wrap(e,["text"],this.text("text",e.value.replace(/^["'`]|["'`]$/g,""))):"symbol"===e.type?this.wrap(e,["symbol"],this.symbol(e.value)):this.operation(e,t)}number(e){return this.wrap(e,["number"],this.text("num",e.value.replace(/^-/,h)))}symbol(e){return t.GREEK[e]&&(e=t.GREEK[e]),b[e]?this.text("ord",b[e]):"\\+"===e||"\\-"===e?this.text("ord",e[1]):"-∞"===e?this.text("ord","−∞"):/^[A-Za-z]$/.test(e)||/^[α-ω]$/.test(e)?this.text("var",e):/^[A-Za-z]′+$/.test(e)?L(this.el("var",$(e[0]))+this.el("prime",$(e.slice(1)))):/^Δ[A-Za-z]$/.test(e)?L(this.el("ord","Δ")+this.el("var",e[1])):e.endsWith("⁻¹")?this.script(this.symbol(e.slice(0,-2)),this.text("num","−1"),{level:0}):/^\\[A-Za-z]+$/.test(e)?this.text("name",e.slice(1)):/^[A-Za-z]{2,}$/.test(e)?this.text("name",e):this.text("ord",e)}operation(e,n){const{op:i,args:r}=e,[s,l]=r,a=(e,t={})=>this.render(e,{...n,...t,forceParens:t.forceParens||!1,before:t.before||!1}),o=m[i]??(/^[a-z0-9]+$/i.test(i)?i:"other"),p=t=>this.wrap(e,["op",`op-${o}`],t),u=(n,i)=>t.needsBrackets(e,n,i)&&"/"!==n.op?this.fence(a(n)):a(n);if(f.includes(i)||"log"===i)return p(this.named(e,n));if(v[i])return p(M(this.word(v[i]),this.fence(this.list(r,n))));if(t.isCustomFunction(i))return p(this.custom(e,n));if(g[i])return p(this.fence(this.list(r,n),...g[i]));if(c[i]&&2===r.length)return p(M(u(s,"left"),this.rel(c[i]),u(l,"right")));if(d[i]&&2===r.length)return p(M(u(s,"left"),this.bin(d[i]),u(l,"right")));switch(i){case"+":return t.isMinusOneTimes(l)?p(M(u(s,"left"),this.bin(h),this.wrap(l,["op","op-mul"],this.render(l.args[1],n)))):"number"===l.type&&l.value.startsWith("-")?p(M(u(s,"left"),this.bin(h),this.wrap(l,["number"],this.text("num",l.value.slice(1))))):p(M(u(s,"left"),this.bin("+"),this.signed(l,u(l,"right"))));case"-":return p(M(u(s,"left"),this.bin(h),this.signed(l,u(l,"right"))));case"*":return p(this.product(e,n));case"/":return p(this.fraction(e,n));case"^":return p(this.power(e,n));case"_":return p(this.script(a(s,{forceParens:!0}),null,n,a(l,{level:n.level+1})));case"neg":return p(M(this.text("sign",h),t.unaryNeedsBrackets(i,s)?this.fence(a(s)):a(s,{before:n.before})));case"pm":return p(M(this.text("sign","±"),t.unaryNeedsBrackets(i,s)?this.fence(a(s)):a(s)));case"!":return p(M(t.unaryNeedsBrackets(i,s)?this.fence(a(s)):a(s,{forceParens:!0}),this.text("ord","!")));case"\\not":return p(M(this.text("sign","¬"),t.unaryNeedsBrackets(i,s)?this.fence(a(s)):a(s)));case"pmod":return p(M(a(s),this.fence(M(this.word("mod"),this.text("space",""),a(l)))));case"sqrt":return p(this.radical(a(s)));case"root":return p(this.radical(a(l),this.render(s,{level:n.level+2})));case"abs":return p(this.fence(a(s),"|","|"));case"floor":return p(this.fence(a(s),"⌊","⌋"));case"ceil":return p(this.fence(a(s),"⌈","⌉"));case"loglog":return p(M(this.word("ln"),this.fence(M(this.word("ln"),this.fence(a(s))))));case"logloglog":return p(M(this.word("ln"),this.fence(M(this.word("ln"),this.fence(M(this.word("ln"),this.fence(a(s))))))));case"perm":return p(this.script(this.script(L(""),this.render(s,{level:n.level+1}),n),null,n,this.render(l,{level:n.level+1}),this.word("P")));case"comb":return p(this.fence(this.stack(a(s),a(l),!1)));case"?:":return p(this.o.cases?this.cases(e,n):M(a(s),this.bin("?"),a(l),this.bin(":"),a(r[2])));case"sum":return p(M(r.map((e,t)=>t?[this.bin("+"),a(e)]:[a(e)]).flat()));case"prod":return p(M(r.map((e,t)=>t?[this.bin("·"),a(e)]:[a(e)]).flat()));case"der":return p(this.derivative(e,n));case"int":return p(this.integral(r,n));case"lim":return p(this.limit(r,n));case"\\sumidx":return p(this.bigOperator("sum",r,n));case"\\prodidx":return p(this.bigOperator("prod",r,n))}throw new Error(`Inline Math cannot draw '${i}'`)}signed(e,t){return("number"===e.type?e.value.startsWith("-"):"neg"===e.op||"pm"===e.op)&&!t.fenced?this.fence(t):t}list(e,t){return M(e.map((e,n)=>n?[this.punct(","),this.render(e,t)]:[this.render(e,t)]).flat())}product(e,n){const[i,r]=e.args;if(t.isMinusOneTimes(e))return M(this.text("sign",h),this.render(r,n));const s=t.bracketedSides(e),l=t.isImplicitProduct(i,r,s),a=function(e){for(;"op"===e.type;){if(f.includes(e.op)||"log"===e.op||v[e.op]||t.isCustomFunction(e.op))return!0;if("^"!==e.op&&"*"!==e.op)return!1;e=e.args[0]}return!1}(r),o=s.left?this.fence(this.render(i,n)):this.render(i,{...n,before:l&&!a}),m=s.right?this.fence(this.render(r,n)):this.render(r,{...n,before:n.before});return M(o,l?L(this.el(a?"fnspace":"times","")):this.bin("·"),m)}named(e,t,n=null){const{op:i,args:r}=e,s="log"===i?r[1]:r[0];let l;l=u[i]&&"power"===this.o.inverseTrig?this.script(this.word(u[i]),this.text("num","−1"),t):this.word(i),n&&(l=this.script(l,n,t)),"log"===i&&(l=this.script(l,null,t,this.render(r[0],{level:t.level+1})));const a="auto"===this.o.fnParens&&!t.forceParens&&!t.before&&T(s),o=this.render(s,{...t,forceParens:!1,before:!1});return M(l,a?M(L(this.el("fnspace","")),o):this.fence(o))}custom(e,n){const i=t.customName(e.op),r=e.args;if(x.includes(i)&&1===r.length)return this.decorate(i,this.render(r[0],n));return M(/^[A-Za-z]′*(⁻¹)?$/.test(i)?this.symbol(i):this.word(i),L(this.el("callgap","")),this.fence(this.list(r,n)))}decorate(e,t){switch(e){case"boxed":return L(this.el("boxed",t.html),t.h+.22,t.d+.22);case"cancel":return L(this.el("cancel",t.html),t.h,t.d);case"underline":return L(this.el("underline",t.html),t.h,t.d+.12);case"overline":case"bar":return L(this.el("over",t.html),t.h+.14,t.d);default:return L(this.el("accent",this.el("accent-mark",y[e])+t.html),t.h+.3,t.d)}}fraction(e,t){const[n,i]=e.args;if(t.level>0&&"slash"===this.o.scriptFractions&&T(n,!0)&&T(i,!0)){const e=e=>"op"!==e.type||T(e)?this.render(e,t):this.fence(this.render(e,t));return M(e(n),this.text("ord","/"),e(i))}const r=t.level>0||t.inFraction||!this.o.display?.8:1,s={...t,inFraction:!0,forceParens:!1,before:!1};return this.stack(this.render(n,s),this.render(i,s),!0,r)}stack(e,t,n=!0,i=1){const r=e=>1===i?e.html:this.el("scaled",e.html,`font-size:${k(i)}`),o=n?.06:0,h=a+o/2+.1+Math.max(l,i*e.d),m=this.el("frac"+(n?"":" frac-nobar"),this.el("numer",r(e))+this.el("denom",r(t)),`vertical-align:${k(h)}`);return L(m,h+Math.max(s,i*e.h),Math.max(s,i*t.h)+Math.max(l,i*t.d)+.1+o/2-a)}power(e,n){const[i,r]=e.args,s={...n,level:n.level+1,forceParens:!1,before:!1,inFraction:!1},l=()=>this.render(r,s);if(this.o.trigPowers&&p.includes(i.op)&&j(r))return this.wrap(i,["op",`op-${i.op}`],this.named(i,n,l()));if("_"===i.op){const e=this.render(i.args[1],s);return this.wrap(i,["op","op-subscript"],this.script(this.render(i.args[0],{...n,forceParens:!0}),l(),n,e))}const a=t.needsBrackets(e,i,"left")||"number"===i.type&&i.value.startsWith("-")||"/"===i.op||f.includes(i.op)?this.fence(this.render(i,n)):this.render(i,{...n,forceParens:!0});return this.script(a,l(),n)}script(e,t,n,i=null,r=null){const s=n.level>0?.8:o,l=r?M(e,r):e;let a=t?Math.max(.42,e.h-.38,s*t.d+.12):0,h=i?Math.max(.2,e.d-.05,s*i.h-.45):0;if(t&&i){const e=.1-(a-s*t.d-(s*i.h-h));e>0&&(h+=e)}const m=e=>this.el("script",e.html,`font-size:${k(s)}`);if(t&&!i)return L(e.html+this.el("sup",t.html,`font-size:${k(s)};vertical-align:${k(a/s)}`),Math.max(l.h,a+s*t.h),Math.max(l.d,s*t.d-a));if(i&&!t)return L(l.html+this.el("sub",i.html,`font-size:${k(s)};vertical-align:${k(-h/s)}`),Math.max(l.h,s*i.h-h),Math.max(l.d,h+s*i.d));const c=a+s*t.h,d=h+s*i.d,p=this.el("subsup",m(t)+m(i),`vertical-align:${k(a)};height:${k(c+d)}`);return L(l.html+p,Math.max(l.h,c),Math.max(l.d,d))}radical(e,t=null){const n=Math.max(e.h,s)+.1+.06,i=Math.max(e.d,l),a=n+i,h=r("sqrt",`${this.p}-hook`,`height:${k(a)};width:${k(.5+.06*(a-1))};vertical-align:${k(-i)}`);let m="";if(t){const e=.8*o;m=this.el("rootindex",t.html,`font-size:${k(e)};vertical-align:${k((.55*a-i)/e)}`)}return L(this.el("sqrt",m+h+this.el("radicand",e.html)),n,i)}fence(e,t="(",n=")"){const i=Math.max(e.h,s)+Math.max(e.d,l),a=i>1.25,o=a?.1:0,h=(e,t)=>{if(!e)return{html:"",w:0};const n={"(":.26,")":.26,"{":.36,"}":.36}[e];if(n){const s=n+(a?Math.min(.2,.05*(i-1)):0);return{html:r(e,`${this.p}-delim ${this.p}-delim-${t}`,`width:${k(s)}`),w:s+.1}}const s={"[":"lbrack","]":"rbrack","|":"vert","⌊":"lfloor","⌋":"rfloor","⌈":"lceil","⌉":"rceil"}[e];return{html:this.el(`delim ${s} delim-${t}`,""),w:"|"===e?.18:.3}},m=h(t,"l"),c=h(n,"r"),d=`padding:${k(o)} ${k(c.w)} ${k(o)} ${k(m.w)}`,p=L(this.el("fence",m.html+e.html+c.html,d),Math.max(e.h,s)+o,Math.max(e.d,l)+o);return p.fenced=!0,p}derivative(e,n){const{n:i,body:r,by:s,variable:l}=t.derivativeOrder(e),a={...n,level:n.level+1},o=()=>this.text("d","d"),h=()=>i>1?this.render({type:"number",value:String(i)},a):null,m={...n,inFraction:!0},c=M(o(),h()?this.script(this.render(s,m),h(),m):this.render(s,m)),d=e=>M(h()?this.script(o(),h(),m):o(),e||[]),p=n.level>0||n.inFraction||!this.o.display?.8:1;if(l)return this.stack(d(this.render(r,m)),c,!0,p);const u=t.bracketOp(r)&&t.precedenceOf(t.bracketOp(r))<100,[f,v]="("===this.o.derivativeBrackets?["(",")"]:["[","]"],g=u?this.fence(this.render(r,n),f,v):this.render(r,n);return M(this.stack(d(),c,!0,p),g)}integral(e,n){const[i,r,s,l]=e,a=e=>this.render(e,n),o=e=>e?this.render(e,{...n,level:n.level+1}):null,h=()=>this.text("var",t.firstVariable(i)||"x");let m,c=null,d=null;switch(e.length){case 1:m=h();break;case 2:t.isVariable(r)?m=a(r):(m=h(),c=o(r));break;case 3:t.isVariable(r)?(m=a(r),c=o(s)):(m=h(),c=o(r),d=o(s));break;default:m=a(r),c=o(s),d=o(l)}const p=a(i),u=L(this.el("dx",this.el("d","d")+m.html),m.h,m.d);return M(this.bigSign("int",p,c,d,n),p,u)}bigSign(e,t,n,i,s){const l=!this.o.display||s.level>0,h=Math.max(l?.6:.95,Math.max(t.h-a,t.d+a)+.12),m=r(e,`${this.p}-bigsign ${this.p}-${e}sign`,`height:${k(2*h)};width:${k(l?.38:.5)};vertical-align:${k(a-h)}`);if(!n&&!i)return L(m,a+h,h-a);const c=o,d=i||L(""),p=n||L(""),u=a+h-c*d.h;p.d;const f=this.el("limits",this.el("script",d.html,`font-size:${k(c)}`)+this.el("script lower",p.html,`font-size:${k(c)}`),`vertical-align:${k(u)};height:${k(2*h)}`);return L(m+f,a+h,h-a)}limit(e,n){const[i,r,s,l]=e,a={...n,level:n.level+1},o=e=>this.render(e,a),m=()=>this.rel("→");let c;switch(e.length){case 1:return M(this.word("lim"),L(this.el("fnspace","")),this.render(i,n));case 2:{const e=t.firstVariable(i),n="number"===r.type||"symbol"===r.type&&r.value.includes("∞");c=e&&n?M(this.text("var",e),m(),o(r)):o(r);break}case 3:c=M(o(r),m(),o(s));break;default:{const e=t.firstLeaf(l).toLowerCase().startsWith("r")?"+":h;c=M(o(r),m(),this.script(o(s),this.wrap(l,["symbol"],this.text("ord",e)),a))}}return M(this.under(this.word("lim"),c,n),this.render(i,n))}under(e,t,n){return!this.o.display||n.level>0?this.script(e,null,n,t):L(this.el("under",e.html+this.el("script",t.html,`font-size:${k(.7)}`)),e.h,Math.max(e.d,l)+.05+.7*(t.h+t.d))}bigOperator(e,t,n){const[i,s,l]=t,h={...n,level:n.level+1},m=s?this.render(s,h):null,c=l?this.render(l,h):null,d=this.render(i,n);if(!this.o.display||n.level>0){const t=.55,i=r(e,`${this.p}-bigsign`,`height:${k(2*t)};width:${k(.8)};vertical-align:${k(a-t)}`);return M(this.script(L(i,a+t,t-a),c,n,m),d)}const p=.68,u=o,f=r(e,`${this.p}-bigsign`,`height:${k(1.36)};width:${k("sum"===e?1:1.05)}`),v=c?1.01+u*c.d:a-p,g=e=>this.el("script",e.html,`font-size:${k(u)}`),b=this.el("bigop",(c?g(c):"")+f+(m?g(m):""),`vertical-align:${k(v)}`);return M(L(b,.93+(c?.08+u*(c.h+c.d):0),p-a+(m?.08+u*(m.h+m.d):0)),d)}cases(e,t){const n=[];let i=e;for(;"op"===i.type&&"?:"===i.op;)n.push([this.render(i.args[1],t),M(this.word("if"),this.text("space",""),this.render(i.args[0],t))]),i=i.args[2];n.push([this.render(i,t),this.word("otherwise")]);const r=n.map(([e,t])=>({h:Math.max(e.h,t.h),d:Math.max(e.d,t.d)})),s=r.reduce((e,t)=>e+t.h+t.d,0)+.25*(n.length-1),l=a+s/2-r[0].h,o=n.map(([e,t])=>this.el("case-value",e.html)+this.el("case-cond",t.html)).join(""),h=L(this.el("cases",o,`vertical-align:${k(l)}`),a+s/2,s/2-a);return this.fence(h,"{","")}}function T(e,n=!1){return"number"===e.type?!e.value.startsWith("-")||n:"symbol"===e.type||"op"===e.type&&("abs"===e.op?!n:!n||"neg"!==e.op&&"^"!==e.op?"*"===e.op&&!t.isMinusOneTimes(e)&&e.args.every(e=>"number"===e.type&&!e.value.startsWith("-")||P(e)||"*"===e.op&&T(e,n)):T(e.args[0],!0)&&("neg"===e.op||T(e.args[1],!0)))}const P=e=>"symbol"===e.type&&(1===e.value.length||/^[α-ωΑ-Ω]$/.test(e.value)||Boolean(t.GREEK[e.value])),j=e=>"number"===e.type&&/^[1-9]\d*$/.test(e.value)&&Number(e.value)<10;const A=e=>t.toPostfix(e).join(" ");function B(e,n){const i=new Set;O(e,n,i);const r=[];return t.walk(e,e=>{i.has(e)&&r.push(e)}),r}function O(e,n,i){if(null!=n)if(Array.isArray(n))n.forEach(t=>O(e,t,i));else if("number"!=typeof n)if("function"!=typeof n){if("string"==typeof n){const r=A(t.parseTree(n));return void t.walk(e,e=>{A(e)===r&&i.add(e)})}if(n.path){const t=function(e,t){let n=e;for(const e of t){if("op"!==n.type||!n.args[e])return null;n=n.args[e]}return n}(e,n.path);return void(t&&i.add(t))}if(n.type){const r=A(n);t.walk(e,e=>{e!==n&&A(e)!==r||i.add(e)})}}else t.walk(e,(e,t)=>{n(e,t)&&i.add(e)});else t.walk(e,e=>{e.id===n&&i.add(e)})}function Z(e){let n=0;const i=e=>{"op"===e.type&&(e.args.forEach(i),t.operator(e.op)?.arity===t.VARIADIC&&n++),e.id=n++};return i(e),e}function E(e,n={}){const{blocks:i}=n;if("string"==typeof e)return t.parseTree(e,i?{blocks:e=>i(e,n.scope)}:{});if(Array.isArray(e))return t.fromPostfix(e);if(e&&"object"==typeof e&&e.type)return void 0===e.id?Z(structuredClone(e)):e;throw new Error("Inline Math needs an expression, standard postfix or a tree")}function S(e){return"string"==typeof e&&/^[#\w\s.,%()/+-]+$/.test(e)&&!/url\s*\(|expression/i.test(e)}var q='/*\n * Inline Math stylesheet. Everything is under .mv; colours are left to the page.\n *\n * The numbers marked "metric" must match the constants at the top of\n * src/layout.js (line-height 1, bar 0.06em, gap 0.1em); everything else can\n * be changed freely.\n *\n * Handy hooks:\n * .mv-n[data-node="4"] one node (ids from MathZetta)\n * .mv-var .mv-num .mv-word variables, numbers, function names\n * .mv-op-frac .mv-op-pow … a kind of operation\n * .mv-hl the class highlight() adds\n * --mv-hl highlight colour\n */\n\n.mv {\n display: inline-block;\n font-family: "Inline Math Roman", "Latin Modern Roman", "STIX Two Text", "Cambria", "Times New Roman", serif;\n font-size: 1.2em;\n font-style: normal;\n font-weight: normal;\n line-height: 1; /* metric */\n white-space: nowrap;\n text-indent: 0;\n text-align: left;\n letter-spacing: 0;\n}\n.mv-display { display: block; text-align: center; margin: 0.6em 0; }\n.mv span, .mv svg { line-height: 1; }\n.mv-n { display: inline-block; border-radius: 0.12em; }\n\n/* ---- letters and signs -------------------------------------------------- */\n.mv-var { font-style: italic; padding-right: 0.03em; }\n.mv-num, .mv-word, .mv-name, .mv-ord, .mv-text, .mv-d { font-style: normal; }\n.mv-prime { margin-left: 0.04em; }\n.mv-bin { margin: 0 0.22em; }\n.mv-rel { margin: 0 0.28em; }\n.mv-punct { margin-right: 0.17em; }\n.mv-sign { margin-right: 0.04em; }\n.mv-times { display: inline-block; width: 0.06em; }\n.mv-callgap { display: inline-block; width: 0.05em; }\n.mv-fnspace { display: inline-block; width: 0.17em; }\n.mv-space { display: inline-block; width: 0.33em; }\n.mv-dx { display: inline-block; margin-left: 0.17em; }\n.mv-text { margin: 0 0.25em; }\n/* Tighter spacing in limits and exponents: n=1, x→0. */\n.mv-script .mv-rel, .mv-sup .mv-rel, .mv-sub .mv-rel { margin: 0 0.12em; }\n.mv-script .mv-bin, .mv-sup .mv-bin, .mv-sub .mv-bin { margin: 0 0.1em; }\n\n/* ---- fractions (metric: padding and border) ------------------------------ */\n.mv-frac { display: inline-flex; flex-direction: column; align-items: stretch; margin: 0 0.12em; }\n.mv-numer, .mv-denom { display: block; text-align: center; padding: 0 0.1em; }\n.mv-numer { padding-bottom: 0.1em; }\n.mv-denom { padding-top: 0.1em; border-top: 0.06em solid currentColor; }\n.mv-frac-nobar > .mv-denom { border-top: 0; }\n.mv-scaled { display: inline-block; }\n\n/* ---- scripts ----------------------------------------------------------------- */\n.mv-sup, .mv-sub { display: inline-block; margin-left: 0.04em; }\n.mv-subsup, .mv-limits { display: inline-flex; flex-direction: column; justify-content: space-between; align-items: flex-start; margin-left: 0.04em; }\n.mv-limits { margin-left: 0.02em; margin-right: 0.12em; }\n.mv-limits > .mv-lower { margin-left: -0.3em; }\n.mv-script { display: block; }\n.mv-under { display: inline-flex; flex-direction: column; align-items: center; margin-right: 0.15em; }\n.mv-under > .mv-script { margin-top: 0.05em; }\n.mv-bigop { display: inline-flex; flex-direction: column; align-items: center; margin: 0 0.12em; }\n.mv-bigop > .mv-script { display: block; margin: 0.08em 0; }\n.mv-bigop > svg { display: block; }\n\n/* ---- radicals (metric: border and padding-top) ----------------------------- */\n.mv-sqrt { display: inline-block; white-space: nowrap; }\n.mv-hook { display: inline-block; overflow: visible; margin-left: 0.05em; }\n.mv-radicand { display: inline-block; border-top: 0.06em solid currentColor; padding: 0.1em 0.1em 0 0.06em; }\n.mv-rootindex { display: inline-block; margin: 0 -0.32em 0 0.12em; }\n\n/* ---- delimiters: drawn at the full height of what they enclose -------------- */\n.mv-fence { display: inline-block; position: relative; }\n.mv-delim { position: absolute; top: 0; bottom: 0; height: 100%; }\n.mv-delim-l { left: 0.03em; }\n.mv-delim-r { right: 0.03em; }\nspan.mv-delim { width: 0.16em; border: 0 solid currentColor; box-sizing: border-box; }\n.mv-delim.mv-lbrack { border-width: 0.06em 0 0.06em 0.06em; left: 0.06em; }\n.mv-delim.mv-rbrack { border-width: 0.06em 0.06em 0.06em 0; right: 0.06em; }\n.mv-delim.mv-vert { border-left-width: 0.06em; width: 0; left: 0.07em; }\n.mv-delim.mv-vert.mv-delim-r { left: auto; right: 0.07em; }\n.mv-delim.mv-lfloor { border-width: 0 0 0.06em 0.06em; }\n.mv-delim.mv-rfloor { border-width: 0 0.06em 0.06em 0; }\n.mv-delim.mv-lceil { border-width: 0.06em 0 0 0.06em; }\n.mv-delim.mv-rceil { border-width: 0.06em 0.06em 0 0; }\n\n/* ---- shapes ----------------------------------------------------------------- */\n.mv svg { overflow: visible; }\n.mv svg path[stroke] { stroke-width: 0.065em; stroke-linecap: round; stroke-linejoin: round; }\n.mv-intsign path[stroke] { stroke-width: 0.075em; }\n.mv-bigsign { display: inline-block; margin: 0 0.06em; }\n.mv-intsign { margin-right: 0.12em; }\n\n/* ---- piecewise ------------------------------------------------------------- */\n.mv-cases { display: inline-grid; grid-template-columns: auto auto; column-gap: 1em; row-gap: 0.25em; align-items: baseline; text-align: left; margin: 0 0.1em; }\n.mv-case-value, .mv-case-cond { display: block; }\n\n/* ---- decorations: \\boxed \\cancel \\overline \\vec … --------------------------- */\n.mv-boxed { display: inline-block; border: 0.06em solid currentColor; padding: 0.16em 0.2em; }\n.mv-over { display: inline-block; border-top: 0.06em solid currentColor; padding-top: 0.08em; }\n.mv-underline { display: inline-block; border-bottom: 0.06em solid currentColor; padding-bottom: 0.06em; }\n.mv-cancel { display: inline-block; background: linear-gradient(to top right, transparent calc(50% - 0.04em), currentColor calc(50% - 0.03em), currentColor calc(50% + 0.03em), transparent calc(50% + 0.04em)); }\n.mv-accent { display: inline-block; position: relative; padding-top: 0.3em; }\n.mv-accent-mark { position: absolute; top: 0; left: 0; right: 0; text-align: center; font-size: 0.7em; line-height: 0.6; }\n\n/* ---- interaction -------------------------------------------------------------- */\n.mv-hl { background: var(--mv-hl, rgba(255, 200, 0, 0.35)); box-shadow: 0 0 0 0.08em var(--mv-hl, rgba(255, 200, 0, 0.35)); }\n.mv-clickable .mv-n { cursor: pointer; }\n.mv-clickable .mv-n:hover { outline: 1px dashed rgba(0, 0, 0, 0.25); }\n\n/* ---- steps (stepsHTML from \'@mathzetta/inlinemath/cas\') ---------------------------------------- */\n.mv-steps { margin: 0; padding-left: 1.6em; }\n.mv-step { margin: 0.5em 0 0.9em; }\n.mv-step-name { display: block; font-size: 0.85em; font-weight: 600; color: #555; }\n.mv-step-maths { display: flex; flex-wrap: wrap; align-items: center; gap: 0.4em 0.8em; margin: 0.15em 0; }\n.mv-step-arrow { color: #888; }\n.mv-step-why { margin: 0.1em 0 0; font-size: 0.9em; color: #444; }\n\n/* ---- Markdown with maths (markdownToHTML from \'@mathzetta/inlinemath/markdown\') ------------------- */\n.mv-md-math { display: inline-block; vertical-align: middle; }\n.mv-md-display { display: block; text-align: center; margin: 0.6em 0; overflow-x: auto; }\n.mv-md-block { margin: 0.8em 0; }\n.mv-md-error code { background: rgba(200, 60, 0, 0.08); color: #a33; border-bottom: 1px dotted #a33; }\n';const F=q;if("undefined"!=typeof document&&!document.getElementById("inlinemath-css")){const e=document.createElement("style");e.id="inlinemath-css",e.textContent=q,document.head.append(e)}return e.CSS=F,e.DEFAULTS=w,e.layout=C,e.numberTree=Z,e.select=B,e.toHTML=function(e,t={}){const n=E(e,t);return C(n,function(e,t){const{colors:n,highlight:i,scope:r,blocks:s,...l}=t,a=new Map;for(const[t,i]of function(e){return e?Array.isArray(e)?e:Object.entries(e).map(([e,t])=>[/^\d+$/.test(e)?Number(e):e,t]):[]}(n))if(S(i))for(const n of B(e,t))a.set(n,`color:${i}`);const o=new Set(void 0===i?[]:B(e,i));if(!a.size&&!o.size)return l;const h=l.prefix||"mv";return{...l,style:e=>[a.get(e),l.style&&l.style(e)].filter(Boolean).join(";"),attributes:e=>{const t={...l.attributes?l.attributes(e):{}};return o.has(e)&&(t.class=[t.class,`${h}-hl`].filter(Boolean).join(" ")),t}}}(n,t)).html},e.treeOf=E,e}({},MathZetta,MathZetta);
1
+ /* Inline Math 0.2.0 — MIT licence; MathZetta not included: load a MathZetta <script> (mathzetta.min.js or mathzetta.maths-display.min.js) first */
2
+ var InlineMath=function(e,t,n){"use strict";const i={"(":{fill:"M0.92,0 C0.1,0.2 0.1,0.8 0.92,1 L1,0.975 C0.48,0.75 0.48,0.25 1,0.025 Z"},")":{fill:"M0.08,0 C0.9,0.2 0.9,0.8 0.08,1 L0,0.975 C0.52,0.75 0.52,0.25 0,0.025 Z"},"{":{fill:"M1,0 C0.45,0 0.5,0.05 0.5,0.2 L0.5,0.38 C0.5,0.46 0.35,0.49 0.05,0.5 C0.35,0.51 0.5,0.54 0.5,0.62 L0.5,0.8 C0.5,0.95 0.45,1 1,1 L1,0.985 C0.68,0.985 0.64,0.95 0.64,0.8 L0.64,0.62 C0.64,0.53 0.55,0.505 0.3,0.5 C0.55,0.495 0.64,0.47 0.64,0.38 L0.64,0.2 C0.64,0.05 0.68,0.015 1,0.015 Z"},"}":{fill:"M0,0 C0.55,0 0.5,0.05 0.5,0.2 L0.5,0.38 C0.5,0.46 0.65,0.49 0.95,0.5 C0.65,0.51 0.5,0.54 0.5,0.62 L0.5,0.8 C0.5,0.95 0.55,1 0,1 L0,0.985 C0.32,0.985 0.36,0.95 0.36,0.8 L0.36,0.62 C0.36,0.53 0.45,0.505 0.7,0.5 C0.45,0.495 0.36,0.47 0.36,0.38 L0.36,0.2 C0.36,0.05 0.32,0.015 0,0.015 Z"},sqrt:{stroke:"M0,0.62 L0.18,0.55 L0.45,0.97 L0.98,0.015"},cancel:{stroke:"M0,1 L1,0"},int:{stroke:"M0.95,0.09 C0.9,0.01 0.72,0 0.66,0.12 C0.6,0.25 0.42,0.75 0.34,0.88 C0.28,0.99 0.1,0.99 0.05,0.91"},sum:{fill:"M0.04,0 L0.94,0 L0.98,0.24 L0.94,0.24 C0.9,0.1 0.8,0.07 0.62,0.07 L0.24,0.07 L0.58,0.5 L0.2,0.93 L0.64,0.93 C0.82,0.93 0.92,0.9 0.95,0.76 L0.99,0.76 L0.94,1 L0.02,1 L0.47,0.47 Z"},prod:{fill:"M0,0 L1,0 L1,0.04 L0.88,0.05 L0.88,0.95 L1,0.96 L1,1 L0.62,1 L0.62,0.96 L0.74,0.95 L0.74,0.06 L0.26,0.06 L0.26,0.95 L0.38,0.96 L0.38,1 L0,1 L0,0.96 L0.12,0.95 L0.12,0.05 L0,0.04 Z"}};function r(e,t,n=""){const r=i[e];return`<svg class="${t}" viewBox="0 0 1 1" preserveAspectRatio="none" aria-hidden="true"${n?` style="${n}"`:""}>${r.fill?`<path d="${r.fill}" fill="currentColor"/>`:`<path d="${r.stroke}" fill="none" stroke="currentColor" vector-effect="non-scaling-stroke"/>`}</svg>`}const s=.8,a=.2,l=.25,o=.7,m="−",h={"+":"add","-":"sub","*":"mul","/":"frac","^":"pow",_:"subscript",neg:"neg",pm:"pm","!":"factorial","=":"eq","===":"eq","≠":"neq","≠=":"neq","<":"lt",">":"gt","≤":"le","≥":"ge","≈":"approx","≡":"equiv","∈":"in","∉":"notin","∪":"union","∩":"intersect","→":"to","±":"pm","&":"and","|":"or","\\not":"not","\\xor":"xor","\\nand":"nand","\\nor":"nor","?:":"cases","()":"tuple","[]":"list","{}":"set","(]":"interval","[)":"interval","\\sumidx":"sum","\\prodidx":"prod",mod:"mod",pmod:"pmod",pmatrix:"matrix",bmatrix:"matrix",vmatrix:"matrix"},c={"=":"=","===":"=","≠":"≠","≠=":"≠","<":"<",">":">","≤":"≤","≥":"≥","∈":"∈","∉":"∉","→":"→","≈":"≈","≡":"≡","&":"∧","|":"∨","\\xor":"⊕","\\nand":"↑","\\nor":"↓"},d={"±":"±","∪":"∪","∩":"∩",mod:"mod"},p=["sin","cos","tan","csc","sec","cot","sinh","cosh","tanh"],u={arcsin:"sin",arccos:"cos",arctan:"tan",arcsinh:"sinh",arccosh:"cosh",arctanh:"tanh"},f=[...p,...Object.keys(u),"ln","det"],v={atan2:"atan2",max:"max",min:"min",gcd:"gcd",mean:"mean",round:"round",fixed:"fixed",expm1:"expm1",random:"random"},g={"()":["(",")"],"[]":["[","]"],"{}":["{","}"],"(]":["(","]"],"[)":["[",")"]},b={"\\partial":"∂","\\nabla":"∇","\\ell":"ℓ","\\infty":"∞","\\emptyset":"∅"},x={vec:"→",hat:"ˆ",widehat:"ˆ",tilde:"˜",dot:"˙",ddot:"¨"},y=["boxed","overline","bar","underline","cancel",...Object.keys(x)],w={prefix:"mv",display:!0,fnParens:"auto",trigPowers:!0,inverseTrig:"arc",derivativeBrackets:"[",scriptFractions:"slash",cases:!0,label:!0,mathml:null,attributes:null,style:null},$=e=>String(e).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;"),k=e=>+e.toFixed(3)+"em",M=(e,t=s,n=a)=>({html:e,h:t,d:n});function L(...e){const t=e.flat().filter(Boolean);return{html:t.map(e=>e.html).join(""),h:Math.max(s,...t.map(e=>e.h)),d:Math.max(a,...t.map(e=>e.d))}}function C(e,t={}){const i=new z({...w,...t}),r=i.render(e,{level:0}),s=`${i.p}${i.o.display?` ${i.p}-display`:""}`,a="function"==typeof i.o.mathml?function(e,t,n,i){try{return String(e(t)).replace(/ id="mz-\d+"/g,"").replace(/^<math>/,`<math class="${n}-sr-math"${i?' display="block"':""}>`)}catch{return""}}(i.o.mathml,e,i.p,i.o.display):"",l=a?null:function(e,t){if(!1===t||null===t)return null;if("string"==typeof t)return t;try{return"function"==typeof t?t(e):n.toAudioSpeech(e)}catch{return null}}(e,i.o.label),o=null!==l||a?r.html.replace(/^<span /,'<span aria-hidden="true" '):r.html;return{html:`<span class="${s}"${null===l?"":` role="math" aria-label="${$(l)}"`}>${o}${a}</span>`,h:r.h,d:r.d}}class z{constructor(e){this.o=e,this.p=e.prefix}el(e,t,n="",i=""){return`<span class="${e.split(" ").map(e=>`${this.p}-${e}`).join(" ")}"${n?` style="${n}"`:""}${i}>${t}</span>`}text(e,t){const n=M(this.el(e,$(t)));return n.leaf={kind:e,content:$(t)},n}bin(e){return this.text("bin",e)}rel(e){return this.text("rel",e)}punct(e){return this.text("punct",e)}word(e){return this.text("word",e)}wrap(e,t,n){let i="";void 0!==e.id&&(i+=` data-node="${e.id}"`),"op"===e.type&&(i+=` data-op="${$(e.op)}"`);const r=this.o.attributes&&this.o.attributes(e)||{};for(const[e,t]of Object.entries(r))"class"!==e&&"style"!==e&&(i+=` ${e}="${$(t)}"`);const s=[r.style,this.o.style&&this.o.style(e)].filter(Boolean).join(";"),a=(n.leaf?["n",...t,n.leaf.kind]:["n",...t]).map(e=>`${this.p}-${e}`).concat(r.class?[r.class]:[]).join(" "),l=n.leaf?n.leaf.content:n.html;return{html:`<span class="${a}"${s?` style="${$(s)}"`:""}${i}>${l}</span>`,h:n.h,d:n.d}}render(e,t){return"number"===e.type?this.number(e):"string"===e.type?this.wrap(e,["text"],this.text("text",e.value.replace(/^["'`]|["'`]$/g,""))):"symbol"===e.type?this.wrap(e,["symbol"],this.symbol(e.value)):this.operation(e,t)}number(e){return this.wrap(e,["number"],this.text("num",e.value.replace(/^-/,m)))}symbol(e){return t.GREEK[e]&&(e=t.GREEK[e]),b[e]?this.text("ord",b[e]):"\\+"===e||"\\-"===e?this.text("ord",e[1]):"-∞"===e?this.text("ord","−∞"):/^[A-Za-z]$/.test(e)||/^[α-ω]$/.test(e)?this.text("var",e):/^[A-Za-z]′+$/.test(e)?M(this.el("var",$(e[0]))+this.el("prime",$(e.slice(1)))):/^Δ[A-Za-z]$/.test(e)?M(this.el("ord","Δ")+this.el("var",e[1])):e.endsWith("⁻¹")?this.script(this.symbol(e.slice(0,-2)),this.text("num","−1"),{level:0}):/^\\[A-Za-z]+$/.test(e)?this.text("name",e.slice(1)):/^[A-Za-z]{2,}$/.test(e)?this.text("name",e):this.text("ord",e)}operation(e,n){const{op:i,args:r}=e,[s,a]=r,l=(e,t={})=>this.render(e,{...n,...t,forceParens:t.forceParens||!1,before:t.before||!1}),o=h[i]??(/^[a-z0-9]+$/i.test(i)?i:"other"),p=t=>this.wrap(e,["op",`op-${o}`],t),u=(n,i)=>t.needsBrackets(e,n,i)&&"/"!==n.op?this.fence(l(n)):l(n);if(f.includes(i)||"log"===i)return p(this.named(e,n));if(v[i])return p(L(this.word(v[i]),this.fence(this.list(r,n))));if(t.isCustomFunction(i))return p(this.custom(e,n));const b=t.matrixRows(e);if(b)return p(this.matrix(e,b,n));if(g[i])return p(this.fence(this.list(r,n),...g[i]));if(c[i]&&2===r.length)return p(L(u(s,"left"),this.rel(c[i]),u(a,"right")));if(d[i]&&2===r.length)return p(L(u(s,"left"),this.bin(d[i]),u(a,"right")));switch(i){case"+":return t.isMinusOneTimes(a)?p(L(u(s,"left"),this.bin(m),this.wrap(a,["op","op-mul"],this.render(a.args[1],n)))):"number"===a.type&&a.value.startsWith("-")?p(L(u(s,"left"),this.bin(m),this.wrap(a,["number"],this.text("num",a.value.slice(1))))):p(L(u(s,"left"),this.bin("+"),this.signed(a,u(a,"right"))));case"-":return p(L(u(s,"left"),this.bin(m),this.signed(a,u(a,"right"))));case"*":return p(this.product(e,n));case"/":return p(this.fraction(e,n));case"^":return p(this.power(e,n));case"_":return p(this.script(l(s,{forceParens:!0}),null,n,l(a,{level:n.level+1})));case"neg":return p(L(this.text("sign",m),t.unaryNeedsBrackets(i,s)?this.fence(l(s)):l(s,{before:n.before})));case"pm":return p(L(this.text("sign","±"),t.unaryNeedsBrackets(i,s)?this.fence(l(s)):l(s)));case"!":return p(L(t.unaryNeedsBrackets(i,s)?this.fence(l(s)):l(s,{forceParens:!0}),this.text("ord","!")));case"\\not":return p(L(this.text("sign","¬"),t.unaryNeedsBrackets(i,s)?this.fence(l(s)):l(s)));case"pmod":return p(L(l(s),this.fence(L(this.word("mod"),this.text("space",""),l(a)))));case"sqrt":return p(this.radical(l(s)));case"root":return p(this.radical(l(a),this.render(s,{level:n.level+2})));case"abs":return p(this.fence(l(s),"|","|"));case"floor":return p(this.fence(l(s),"⌊","⌋"));case"ceil":return p(this.fence(l(s),"⌈","⌉"));case"loglog":return p(L(this.word("ln"),this.fence(L(this.word("ln"),this.fence(l(s))))));case"logloglog":return p(L(this.word("ln"),this.fence(L(this.word("ln"),this.fence(L(this.word("ln"),this.fence(l(s))))))));case"perm":return p(this.script(this.script(M(""),this.render(s,{level:n.level+1}),n),null,n,this.render(a,{level:n.level+1}),this.word("P")));case"comb":return p(this.fence(this.stack(l(s),l(a),!1)));case"?:":return p(this.o.cases?this.cases(e,n):L(l(s),this.bin("?"),l(a),this.bin(":"),l(r[2])));case"sum":return p(L(r.map((e,t)=>t?[this.bin("+"),l(e)]:[l(e)]).flat()));case"prod":return p(L(r.map((e,t)=>t?[this.bin("·"),l(e)]:[l(e)]).flat()));case"der":return p(this.derivative(e,n));case"int":return p(this.integral(r,n));case"lim":return p(this.limit(r,n));case"\\sumidx":return p(this.bigOperator("sum",r,n));case"\\prodidx":return p(this.bigOperator("prod",r,n))}throw new Error(`Inline Math cannot draw '${i}'`)}signed(e,t){return("number"===e.type?e.value.startsWith("-"):"neg"===e.op||"pm"===e.op)&&!t.fenced?this.fence(t):t}list(e,t){return L(e.map((e,n)=>n?[this.punct(","),this.render(e,t)]:[this.render(e,t)]).flat())}product(e,n){const[i,r]=e.args;if(t.isMinusOneTimes(e))return L(this.text("sign",m),this.render(r,n));const s=t.bracketedSides(e),a=t.isImplicitProduct(i,r,s),l=function(e){for(;"op"===e.type;){if(f.includes(e.op)||"log"===e.op||v[e.op]||t.isCustomFunction(e.op))return!0;if("^"!==e.op&&"*"!==e.op)return!1;e=e.args[0]}return!1}(r),o=s.left?this.fence(this.render(i,n)):this.render(i,{...n,before:a&&!l}),h=s.right?this.fence(this.render(r,n)):this.render(r,{...n,before:n.before});return L(o,a?M(this.el(l?"fnspace":"times","")):this.bin("·"),h)}named(e,t,n=null){const{op:i,args:r}=e,s="log"===i?r[1]:r[0];let a;a=u[i]&&"power"===this.o.inverseTrig?this.script(this.word(u[i]),this.text("num","−1"),t):this.word(i),n&&(a=this.script(a,n,t)),"log"===i&&(a=this.script(a,null,t,this.render(r[0],{level:t.level+1})));const l="auto"===this.o.fnParens&&!t.forceParens&&!t.before&&A(s),o=this.render(s,{...t,forceParens:!1,before:!1});return L(a,l?L(M(this.el("fnspace","")),o):this.fence(o))}custom(e,n){const i=t.customName(e.op),r=e.args;if(y.includes(i)&&1===r.length)return this.decorate(i,this.render(r[0],n));return L(/^[A-Za-z]′*(⁻¹)?$/.test(i)?this.symbol(i):this.word(i),M(this.el("callgap","")),this.fence(this.list(r,n)))}decorate(e,t){switch(e){case"boxed":return M(this.el("boxed",t.html),t.h+.22,t.d+.22);case"cancel":return M(this.el("cancel",t.html+r("cancel",`${this.p}-cancel-line`)),t.h,t.d);case"underline":return M(this.el("underline",t.html),t.h,t.d+.12);case"overline":case"bar":return M(this.el("over",t.html),t.h+.14,t.d);default:return M(this.el("accent",this.el("accent-mark",x[e])+t.html),t.h+.3,t.d)}}fraction(e,t){const[n,i]=e.args;if(t.level>0&&"slash"===this.o.scriptFractions&&A(n,!0)&&A(i,!0)){const e=e=>"op"!==e.type||A(e)?this.render(e,t):this.fence(this.render(e,t));return L(e(n),this.text("ord","/"),e(i))}const r=t.level>0||t.inFraction||!this.o.display?.8:1,s={...t,inFraction:!0,forceParens:!1,before:!1};return this.stack(this.render(n,s),this.render(i,s),!0,r)}stack(e,t,n=!0,i=1){const r=e=>1===i?e.html:this.el("scaled",e.html,`font-size:${k(i)}`),o=n?.06:0,m=l+o/2+.1+Math.max(a,i*e.d),h=this.el("frac"+(n?"":" frac-nobar"),this.el("numer",r(e))+this.el("denom",r(t)),`vertical-align:${k(m)}`);return M(h,m+Math.max(s,i*e.h),Math.max(s,i*t.h)+Math.max(a,i*t.d)+.1+o/2-l)}power(e,n){const[i,r]=e.args,s={...n,level:n.level+1,forceParens:!1,before:!1,inFraction:!1},a=()=>this.render(r,s);if(this.o.trigPowers&&p.includes(i.op)&&j(r))return this.wrap(i,["op",`op-${i.op}`],this.named(i,n,a()));if("_"===i.op){const e=this.render(i.args[1],s);return this.wrap(i,["op","op-subscript"],this.script(this.render(i.args[0],{...n,forceParens:!0}),a(),n,e))}const l=t.needsBrackets(e,i,"left")||"number"===i.type&&i.value.startsWith("-")||"/"===i.op||f.includes(i.op)?this.fence(this.render(i,n)):this.render(i,{...n,forceParens:!0});return this.script(l,a(),n)}script(e,t,n,i=null,r=null){const s=n.level>0?.8:o,a=r?L(e,r):e;let l=t?Math.max(.42,e.h-.38,s*t.d+.12):0,m=i?Math.max(.2,e.d-.05,s*i.h-.45):0;if(t&&i){const e=.1-(l-s*t.d-(s*i.h-m));e>0&&(m+=e)}const h=e=>this.el("script",e.html,`font-size:${k(s)}`);if(t&&!i)return M(e.html+this.el("sup",t.html,`font-size:${k(s)};vertical-align:${k(l/s)}`),Math.max(a.h,l+s*t.h),Math.max(a.d,s*t.d-l));if(i&&!t)return M(a.html+this.el("sub",i.html,`font-size:${k(s)};vertical-align:${k(-m/s)}`),Math.max(a.h,s*i.h-m),Math.max(a.d,m+s*i.d));const c=l+s*t.h,d=m+s*i.d,p=this.el("subsup",h(t)+h(i),`vertical-align:${k(l)};height:${k(c+d)}`);return M(a.html+p,Math.max(a.h,c),Math.max(a.d,d))}radical(e,t=null){const n=Math.max(e.h,s)+.1+.06,i=Math.max(e.d,a),l=n+i,m=r("sqrt",`${this.p}-hook`,`height:${k(l)};width:${k(.5+.06*(l-1))};vertical-align:${k(-i)}`);let h="";if(t){const e=.8*o;h=this.el("rootindex",t.html,`font-size:${k(e)};vertical-align:${k((.55*l-i)/e)}`)}return M(this.el("sqrt",h+m+this.el("radicand",e.html)),n,i)}fence(e,t="(",n=")"){const i=Math.max(e.h,s)+Math.max(e.d,a),l=i>1.25,o=l?.1:0,m=(e,t)=>{if(!e)return{html:"",w:0};const n={"(":.26,")":.26,"{":.36,"}":.36}[e];if(n){const s=n+(l?Math.min(.2,.05*(i-1)):0);return{html:r(e,`${this.p}-delim ${this.p}-delim-${t}`,`width:${k(s)}`),w:s+.1}}const s={"[":"lbrack","]":"rbrack","|":"vert","⌊":"lfloor","⌋":"rfloor","⌈":"lceil","⌉":"rceil"}[e];return{html:this.el(`delim ${s} delim-${t}`,""),w:"|"===e?.18:.3}},h=m(t,"l"),c=m(n,"r"),d=`padding:${k(o)} ${k(c.w)} ${k(o)} ${k(h.w)}`,p=M(this.el("fence",h.html+e.html+c.html,d),Math.max(e.h,s)+o,Math.max(e.d,a)+o);return p.fenced=!0,p}derivative(e,n){const{n:i,body:r,by:s,variable:a}=t.derivativeOrder(e),l={...n,level:n.level+1},o=()=>this.text("d","d"),m=()=>i>1?this.render({type:"number",value:String(i)},l):null,h={...n,inFraction:!0},c=L(o(),m()?this.script(this.render(s,h),m(),h):this.render(s,h)),d=e=>L(m()?this.script(o(),m(),h):o(),e||[]),p=n.level>0||n.inFraction||!this.o.display?.8:1;if(a)return this.stack(d(this.render(r,h)),c,!0,p);const u=t.bracketOp(r)&&t.precedenceOf(t.bracketOp(r))<100,[f,v]="("===this.o.derivativeBrackets?["(",")"]:["[","]"],g=u?this.fence(this.render(r,n),f,v):this.render(r,n);return L(this.stack(d(),c,!0,p),g)}integral(e,n){const[i,r,s,a]=e,l=e=>this.render(e,n),o=e=>e?this.render(e,{...n,level:n.level+1}):null,m=()=>this.text("var",t.firstVariable(i)||"x");let h,c=null,d=null;switch(e.length){case 1:h=m();break;case 2:t.isVariable(r)?h=l(r):(h=m(),c=o(r));break;case 3:t.isVariable(r)?(h=l(r),c=o(s)):(h=m(),c=o(r),d=o(s));break;default:h=l(r),c=o(s),d=o(a)}const p=l(i),u=M(this.el("dx",this.el("d","d")+h.html),h.h,h.d);return L(this.bigSign("int",p,c,d,n),p,u)}bigSign(e,t,n,i,s){const a=!this.o.display||s.level>0,m=Math.max(a?.6:.95,Math.max(t.h-l,t.d+l)+.12),h=r(e,`${this.p}-bigsign ${this.p}-${e}sign`,`height:${k(2*m)};width:${k(a?.38:.5)};vertical-align:${k(l-m)}`);if(!n&&!i)return M(h,l+m,m-l);const c=o,d=i||M(""),p=n||M(""),u=l+m-c*d.h;p.d;const f=this.el("limits",this.el("script",d.html,`font-size:${k(c)}`)+this.el("script lower",p.html,`font-size:${k(c)}`),`vertical-align:${k(u)};height:${k(2*m)}`);return M(h+f,l+m,m-l)}limit(e,n){const[i,r,s,a]=e,l={...n,level:n.level+1},o=e=>this.render(e,l),h=()=>this.rel("→");let c;switch(e.length){case 1:return L(this.word("lim"),M(this.el("fnspace","")),this.render(i,n));case 2:{const e=t.firstVariable(i),n="number"===r.type||"symbol"===r.type&&r.value.includes("∞");c=e&&n?L(this.text("var",e),h(),o(r)):o(r);break}case 3:c=L(o(r),h(),o(s));break;default:{const e=t.firstLeaf(a).toLowerCase().startsWith("r")?"+":m;c=L(o(r),h(),this.script(o(s),this.wrap(a,["symbol"],this.text("ord",e)),l))}}return L(this.under(this.word("lim"),c,n),this.render(i,n))}under(e,t,n){return!this.o.display||n.level>0?this.script(e,null,n,t):M(this.el("under",e.html+this.el("script",t.html,`font-size:${k(.7)}`)),e.h,Math.max(e.d,a)+.05+.7*(t.h+t.d))}bigOperator(e,t,n){const[i,s,a]=t,m={...n,level:n.level+1},h=s?this.render(s,m):null,c=a?this.render(a,m):null,d=this.render(i,n);if(!this.o.display||n.level>0){const t=.55,i=r(e,`${this.p}-bigsign`,`height:${k(2*t)};width:${k(.8)};vertical-align:${k(l-t)}`);return L(this.script(M(i,l+t,t-l),c,n,h),d)}const p=.68,u=o,f=r(e,`${this.p}-bigsign`,`height:${k(1.36)};width:${k("sum"===e?1:1.05)}`),v=c?1.01+u*c.d:l-p,g=e=>this.el("script",e.html,`font-size:${k(u)}`),b=this.el("bigop",(c?g(c):"")+f+(h?g(h):""),`vertical-align:${k(v)}`);return L(M(b,.93+(c?.08+u*(c.h+c.d):0),p-l+(h?.08+u*(h.h+h.d):0)),d)}matrix(e,n,i){const r=n.map(e=>e.map(e=>this.render(e,i))),o=r.map(e=>({h:Math.max(s,...e.map(e=>e.h)),d:Math.max(a,...e.map(e=>e.d))})),m=o.reduce((e,t)=>e+t.h+t.d,0)+.3*(n.length-1),h=l+m/2-o[0].h,c=r.map((t,n)=>{const i=t.map(e=>this.el("matrix-cell",e.html)).join(""),r=e.args[n];return r&&"op"===r.type&&"[]"===r.op?this.wrap(r,["op","op-list","matrix-row"],M(i)).html:i}).join(""),d=n[0].length,p=M(this.el("matrix",c,`grid-template-columns:repeat(${d},auto);vertical-align:${k(h)}`),l+m/2,m/2-l),[u,f]=t.MATRICES[e.op]??["[","]"];return this.fence(p,u,f)}cases(e,t){const n=[];let i=e;for(;"op"===i.type&&"?:"===i.op;)n.push([this.render(i.args[1],t),L(this.word("if"),this.text("space",""),this.render(i.args[0],t))]),i=i.args[2];"symbol"===i.type&&"unchanged"===i.value||n.push([this.render(i,t),this.word("otherwise")]);const r=n.map(([e,t])=>({h:Math.max(e.h,t.h),d:Math.max(e.d,t.d)})),s=r.reduce((e,t)=>e+t.h+t.d,0)+.25*(n.length-1),a=l+s/2-r[0].h,o=n.map(([e,t])=>this.el("case-value",e.html)+this.el("case-cond",t.html)).join(""),m=M(this.el("cases",o,`vertical-align:${k(a)}`),l+s/2,s/2-l);return this.fence(m,"{","")}}function A(e,n=!1){return"number"===e.type?!e.value.startsWith("-")||n:"symbol"===e.type||"op"===e.type&&("abs"===e.op||t.matrixRows(e)?!n:!n||"neg"!==e.op&&"^"!==e.op?"*"===e.op&&!t.isMinusOneTimes(e)&&e.args.every(e=>"number"===e.type&&!e.value.startsWith("-")||T(e)||"*"===e.op&&A(e,n)):A(e.args[0],!0)&&("neg"===e.op||A(e.args[1],!0)))}const T=e=>"symbol"===e.type&&(1===e.value.length||/^[α-ωΑ-Ω]$/.test(e.value)||Boolean(t.GREEK[e.value])),j=e=>"number"===e.type&&/^[1-9]\d*$/.test(e.value)&&Number(e.value)<10;const P=e=>t.toPostfix(e).join(" ");function B(e,n){const i=new Set;E(e,n,i);const r=[];return t.walk(e,e=>{i.has(e)&&r.push(e)}),r}function E(e,n,i){if(null!=n)if(Array.isArray(n))n.forEach(t=>E(e,t,i));else if("number"!=typeof n)if("function"!=typeof n){if("string"==typeof n){const r=P(t.parseTree(n));return void t.walk(e,e=>{P(e)===r&&i.add(e)})}if(n.path){const t=function(e,t){let n=e;for(const e of t){if("op"!==n.type||!n.args[e])return null;n=n.args[e]}return n}(e,n.path);return void(t&&i.add(t))}if(n.type){const r=P(n);t.walk(e,e=>{e!==n&&P(e)!==r||i.add(e)})}}else t.walk(e,(e,t)=>{n(e,t)&&i.add(e)});else t.walk(e,e=>{e.id===n&&i.add(e)})}function O(e){let n=0;const i=e=>{"op"===e.type&&(e.args.forEach(i),t.operator(e.op)?.arity===t.VARIADIC&&n++),e.id=n++};return i(e),e}function Z(e,n={}){const{blocks:i}=n;if("string"==typeof e)return t.parseTree(e,i?{blocks:e=>i(e,n.scope)}:{});if(Array.isArray(e))return t.fromPostfix(e);if(e&&"object"==typeof e&&e.type)return void 0===e.id?O(structuredClone(e)):e;throw new Error("Inline Math needs an expression, standard postfix or a tree")}function S(e){return"string"==typeof e&&/^[#\w\s.,%()/+-]+$/.test(e)&&!/url\s*\(|expression/i.test(e)}var q='/*\n * Inline Math stylesheet. Everything is under .mv; colours are left to the page.\n *\n * The numbers marked "metric" must match the constants at the top of\n * src/layout.js (line-height 1, bar 0.06em, gap 0.1em); everything else can\n * be changed freely.\n *\n * Handy hooks:\n * .mv-n[data-node="4"] one node (ids from MathZetta)\n * .mv-var .mv-num .mv-word variables, numbers, function names\n * .mv-op-frac .mv-op-pow … a kind of operation\n * .mv-hl the class highlight() adds\n * --mv-hl highlight colour\n */\n\n.mv {\n display: inline-block;\n font-family: "Inline Math Roman", "Latin Modern Roman", "STIX Two Text", "Cambria", "Times New Roman", serif;\n font-size: 1.2em;\n font-style: normal;\n font-weight: normal;\n line-height: 1; /* metric */\n white-space: nowrap;\n text-indent: 0;\n text-align: left;\n letter-spacing: 0;\n}\n.mv-display { display: block; text-align: center; margin: 0.6em 0; }\n.mv span, .mv svg { line-height: 1; }\n.mv-n { display: inline-block; border-radius: 0.12em; }\n\n/* ---- letters and signs -------------------------------------------------- */\n.mv-var { font-style: italic; padding-right: 0.03em; }\n.mv-num, .mv-word, .mv-name, .mv-ord, .mv-text, .mv-d { font-style: normal; }\n.mv-prime { margin-left: 0.04em; }\n.mv-bin { margin: 0 0.22em; }\n.mv-rel { margin: 0 0.28em; }\n.mv-punct { margin-right: 0.17em; }\n.mv-sign { margin-right: 0.04em; }\n.mv-times { display: inline-block; width: 0.06em; }\n.mv-callgap { display: inline-block; width: 0.05em; }\n.mv-fnspace { display: inline-block; width: 0.17em; }\n.mv-space { display: inline-block; width: 0.33em; }\n.mv-dx { display: inline-block; margin-left: 0.17em; }\n.mv-text { margin: 0 0.25em; }\n/* Tighter spacing in limits and exponents: n=1, x→0. */\n.mv-script .mv-rel, .mv-sup .mv-rel, .mv-sub .mv-rel { margin: 0 0.12em; }\n.mv-script .mv-bin, .mv-sup .mv-bin, .mv-sub .mv-bin { margin: 0 0.1em; }\n\n/* ---- fractions (metric: padding and border) ------------------------------ */\n.mv-frac { display: inline-flex; flex-direction: column; align-items: stretch; margin: 0 0.12em; }\n.mv-numer, .mv-denom { display: block; text-align: center; padding: 0 0.1em; }\n.mv-numer { padding-bottom: 0.1em; }\n.mv-denom { padding-top: 0.1em; border-top: 0.06em solid currentColor; }\n.mv-frac-nobar > .mv-denom { border-top: 0; }\n.mv-scaled { display: inline-block; }\n\n/* ---- scripts ----------------------------------------------------------------- */\n.mv-sup, .mv-sub { display: inline-block; margin-left: 0.04em; }\n.mv-subsup, .mv-limits { display: inline-flex; flex-direction: column; justify-content: space-between; align-items: flex-start; margin-left: 0.04em; }\n.mv-limits { margin-left: 0.02em; margin-right: 0.12em; }\n.mv-limits > .mv-lower { margin-left: -0.3em; }\n.mv-script { display: block; }\n.mv-under { display: inline-flex; flex-direction: column; align-items: center; margin-right: 0.15em; }\n.mv-under > .mv-script { margin-top: 0.05em; }\n.mv-bigop { display: inline-flex; flex-direction: column; align-items: center; margin: 0 0.12em; }\n.mv-bigop > .mv-script { display: block; margin: 0.08em 0; }\n.mv-bigop > svg { display: block; }\n\n/* ---- radicals (metric: border and padding-top) ----------------------------- */\n.mv-sqrt { display: inline-block; white-space: nowrap; }\n.mv-hook { display: inline-block; overflow: visible; margin-left: 0.05em; }\n.mv-radicand { display: inline-block; border-top: 0.06em solid currentColor; padding: 0.1em 0.1em 0 0.06em; }\n.mv-rootindex { display: inline-block; margin: 0 -0.32em 0 0.12em; }\n\n/* ---- delimiters: drawn at the full height of what they enclose -------------- */\n.mv-fence { display: inline-block; position: relative; }\n.mv-delim { position: absolute; top: 0; bottom: 0; height: 100%; }\n.mv-delim-l { left: 0.03em; }\n.mv-delim-r { right: 0.03em; }\nspan.mv-delim { width: 0.16em; border: 0 solid currentColor; box-sizing: border-box; }\n.mv-delim.mv-lbrack { border-width: 0.06em 0 0.06em 0.06em; left: 0.06em; }\n.mv-delim.mv-rbrack { border-width: 0.06em 0.06em 0.06em 0; right: 0.06em; }\n.mv-delim.mv-vert { border-left-width: 0.06em; width: 0; left: 0.07em; }\n.mv-delim.mv-vert.mv-delim-r { left: auto; right: 0.07em; }\n.mv-delim.mv-lfloor { border-width: 0 0 0.06em 0.06em; }\n.mv-delim.mv-rfloor { border-width: 0 0.06em 0.06em 0; }\n.mv-delim.mv-lceil { border-width: 0.06em 0 0 0.06em; }\n.mv-delim.mv-rceil { border-width: 0.06em 0.06em 0 0; }\n\n/* ---- shapes ----------------------------------------------------------------- */\n.mv svg { overflow: visible; }\n.mv svg path[stroke] { stroke-width: 0.065em; stroke-linecap: round; stroke-linejoin: round; }\n.mv-intsign path[stroke] { stroke-width: 0.075em; }\n.mv-bigsign { display: inline-block; margin: 0 0.06em; }\n.mv-intsign { margin-right: 0.12em; }\n\n/* ---- piecewise ------------------------------------------------------------- */\n.mv-cases { display: inline-grid; grid-template-columns: auto auto; column-gap: 1em; row-gap: 0.25em; align-items: baseline; text-align: left; margin: 0 0.1em; }\n.mv-case-value, .mv-case-cond { display: block; }\n.mv-matrix { display: inline-grid; column-gap: 0.8em; row-gap: 0.3em; align-items: baseline; justify-items: center; margin: 0 0.15em; }\n.mv-matrix-row { display: contents; }\n.mv-matrix-cell { display: block; }\n\n/* ---- decorations: \\boxed \\cancel \\overline \\vec … --------------------------- */\n.mv-boxed { display: inline-block; border: 0.06em solid currentColor; padding: 0.16em 0.2em; }\n.mv-over { display: inline-block; border-top: 0.06em solid currentColor; padding-top: 0.08em; }\n.mv-underline { display: inline-block; border-bottom: 0.06em solid currentColor; padding-bottom: 0.06em; }\n.mv-cancel { display: inline-block; position: relative; }\n.mv-cancel-line { position: absolute; left: 0; top: 0; width: 100%; height: 100%; overflow: visible; pointer-events: none; }\n.mv-accent { display: inline-block; position: relative; padding-top: 0.3em; }\n.mv-accent-mark { position: absolute; top: 0; left: 0; right: 0; text-align: center; font-size: 0.7em; line-height: 0.6; }\n\n/* ---- interaction -------------------------------------------------------------- */\n.mv-hl { background: var(--mv-hl, rgba(255, 200, 0, 0.35)); box-shadow: 0 0 0 0.08em var(--mv-hl, rgba(255, 200, 0, 0.35)); }\n/* Windows high contrast (and other forced colours) drops backgrounds and shadows: outline a highlight instead */\n@media (forced-colors: active) {\n .mv-hl { outline: 0.08em solid Highlight; outline-offset: 0.04em; }\n}\n.mv-clickable .mv-n { cursor: pointer; }\n.mv-editable .mv-n:hover { outline: 1px dashed rgba(0, 0, 0, 0.25); }\n/* the box editing a part in place (view.editable, or a Markdown textbox variable) */\n.mv-edit { transform: translateY(-50%); z-index: 1000; box-sizing: content-box; padding: 0.1em 0.35em; font-family: inherit;\n border: 1px solid #1a5fb4; border-radius: 0.25em; background: #fff; color: #111; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.18); }\n.mv-edit[aria-invalid="true"] { border-color: #c33; outline: 2px solid #c33; }\n/* the live region a view announces steps through ({ announce: true }): read, never seen */\n.mv-sr-only, .mv-sr-math { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }\n.mv-clickable .mv-n:hover { outline: 1px dashed rgba(0, 0, 0, 0.25); }\n/* the keyboard: the expression is one tab stop, and the part the arrow keys are on is ringed */\n.mv[tabindex]:focus-visible { outline: 0.1em solid #1a5fb4; outline-offset: 0.12em; }\n.mv[tabindex]:focus .mv-focus { outline: 0.1em solid #1a5fb4; outline-offset: 0.06em; border-radius: 0.1em; }\n/* while a part is ringed, the whole expression\'s ring steps back so the part is the one that stands out */\n.mv[tabindex]:focus-visible:has(.mv-focus) { outline: 1px dashed #1a5fb4; }\n@media (forced-colors: active) {\n .mv[tabindex]:focus-visible, .mv[tabindex]:focus .mv-focus { outline-color: Highlight; }\n}\n\n/* ---- steps (stepsHTML from \'@mathzetta/inlinemath/cas\') ---------------------------------------- */\n.mv-steps { margin: 0; padding-left: 1.6em; }\n.mv-step { margin: 0.5em 0 0.9em; }\n.mv-step-name { display: block; font-size: 0.85em; font-weight: 600; color: #555; }\n.mv-step-maths { display: flex; flex-wrap: wrap; align-items: center; gap: 0.4em 0.8em; margin: 0.15em 0; }\n.mv-step-arrow { color: #888; }\n.mv-step-why { margin: 0.1em 0 0; font-size: 0.9em; color: #444; }\n\n/* ---- Markdown with maths (markdownToHTML from \'@mathzetta/inlinemath/markdown\') ------------------- */\n.mv-md-math { display: inline-block; vertical-align: middle; }\n.mv-md-display { display: block; text-align: center; margin: 0.6em 0; overflow-x: auto; }\n.mv-md-block { margin: 0.8em 0; }\n.mv-md-error code { background: rgba(200, 60, 0, 0.08); color: #a33; border-bottom: 1px dotted #a33; }\n/* saved variables: $A := 2+2$ draws A ≔ 2 + 2; $A := [[…]]$ an input that sets A */\n.mv-md-input-def { display: inline-flex; align-items: center; gap: 0.3em; }\n.mv-md-assign { margin: 0 0.1em; }\n.mv-md-input { font: inherit; font-size: 0.9em; }\ninput.mv-md-textbox { font-family: inherit; padding: 0.05em 0.3em; field-sizing: content; min-width: 3ch; }\ninput.mv-md-textbox[aria-invalid="true"] { outline: 2px solid #c33; outline-offset: 1px; }\ninput.mv-md-slider { vertical-align: middle; }\n.mv-md-output { font-variant-numeric: tabular-nums; min-width: 2ch; }\n';const F=q;if("undefined"!=typeof document&&!document.getElementById("inlinemath-css")){const e=document.createElement("style");e.id="inlinemath-css",e.textContent=q,document.head.append(e)}return e.CSS=F,e.DEFAULTS=w,e.layout=C,e.numberTree=O,e.select=B,e.toHTML=function(e,t={}){const n=Z(e,t);return C(n,function(e,t){const{colors:n,highlight:i,scope:r,blocks:s,...a}=t,l=new Map;for(const[t,i]of function(e){return e?Array.isArray(e)?e:Object.entries(e).map(([e,t])=>[/^\d+$/.test(e)?Number(e):e,t]):[]}(n))if(S(i))for(const n of B(e,t))l.set(n,`color:${i}`);const o=new Set(void 0===i?[]:B(e,i));if(!l.size&&!o.size)return a;const m=a.prefix||"mv";return{...a,style:e=>[l.get(e),a.style&&a.style(e)].filter(Boolean).join(";"),attributes:e=>{const t={...a.attributes?a.attributes(e):{}};return o.has(e)&&(t.class=[t.class,`${m}-hl`].filter(Boolean).join(" ")),t}}}(n,t)).html},e.treeOf=Z,e}({},MathZetta,MathZetta);