temml 0.10.14 → 0.10.15
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.
- package/README.md +1 -1
- package/dist/Temml-Asana.css +0 -146
- package/dist/Temml-Latin-Modern.css +0 -147
- package/dist/Temml-Libertinus.css +0 -147
- package/dist/Temml-Local.css +0 -146
- package/dist/Temml-STIX2.css +0 -146
- package/dist/temml.cjs +126 -25
- package/dist/temml.d.ts +60 -0
- package/dist/temml.js +126 -25
- package/dist/temml.min.js +1 -1
- package/dist/temml.mjs +126 -25
- package/dist/temmlPostProcess.js +1 -1
- package/package.json +4 -2
- package/src/buildMathML.js +1 -3
- package/src/environments/array.js +95 -23
- package/src/functions/enclose.js +24 -3
- package/src/postProcess.js +1 -1
- package/src/symbols.js +4 -0
- package/temml.js +6 -0
    
        package/dist/Temml-STIX2.css
    CHANGED
    
    | @@ -73,149 +73,3 @@ math > mrow { | |
| 73 73 | 
             
            body {
         | 
| 74 74 | 
             
              counter-reset: tmlEqnNo;
         | 
| 75 75 | 
             
            }
         | 
| 76 | 
            -
             | 
| 77 | 
            -
            /* Environment arrays */
         | 
| 78 | 
            -
             | 
| 79 | 
            -
            /* Environments that addjot to row spacing */
         | 
| 80 | 
            -
            mtable.tml-jot > mtr > mtd {
         | 
| 81 | 
            -
              padding-top: calc(0.5ex + 0.09em);
         | 
| 82 | 
            -
              padding-bottom: calc(0.5ex + 0.09em);
         | 
| 83 | 
            -
            }
         | 
| 84 | 
            -
             | 
| 85 | 
            -
            /* Zero column gap for {alignat}, {split}, etc */
         | 
| 86 | 
            -
            mtable.tml-abut > mtr > mtd,
         | 
| 87 | 
            -
            mtable.tml-align > mtr > mtd:nth-child(odd),
         | 
| 88 | 
            -
            mtable.tml-align-star > mtr > mtd:nth-child(even) {
         | 
| 89 | 
            -
              padding-left: 0em;
         | 
| 90 | 
            -
              padding-right: 0em;
         | 
| 91 | 
            -
            }
         | 
| 92 | 
            -
             | 
| 93 | 
            -
            mtable.tml-align > mtr > mtd:nth-child(even),
         | 
| 94 | 
            -
            mtable.tml-align-star > mtr > mtd:nth-child(odd) {
         | 
| 95 | 
            -
              padding-left: 1em;
         | 
| 96 | 
            -
              padding-right: 0em;
         | 
| 97 | 
            -
            }
         | 
| 98 | 
            -
             | 
| 99 | 
            -
            mtable.tml-align > mtr > mtd:nth-child(1) {
         | 
| 100 | 
            -
              padding-left: 0em;
         | 
| 101 | 
            -
            }
         | 
| 102 | 
            -
             | 
| 103 | 
            -
            mtable.tml-align > mtr > mtd:nth-child(odd),
         | 
| 104 | 
            -
            mtable.tml-alignat > mtr > mtd:nth-child(odd),
         | 
| 105 | 
            -
            mtable.tml-aligned > mtr > mtd:nth-child(even) {
         | 
| 106 | 
            -
              text-align: -webkit-left;
         | 
| 107 | 
            -
              text-align: -moz-left;
         | 
| 108 | 
            -
            }
         | 
| 109 | 
            -
             | 
| 110 | 
            -
            mtable.tml-align > mtr > mtd:nth-child(even),
         | 
| 111 | 
            -
            mtable.tml-alignat > mtr > mtd:nth-child(even),
         | 
| 112 | 
            -
            mtable.tml-aligned > mtr > mtd:nth-child(odd) {
         | 
| 113 | 
            -
              text-align: -webkit-right;
         | 
| 114 | 
            -
              text-align: -moz-right;
         | 
| 115 | 
            -
            }
         | 
| 116 | 
            -
             | 
| 117 | 
            -
            mtable.tml-cases > mtr > mtd {
         | 
| 118 | 
            -
              padding-left: 0em;
         | 
| 119 | 
            -
              padding-right: 0em;
         | 
| 120 | 
            -
              text-align: -webkit-left;
         | 
| 121 | 
            -
              text-align: -moz-left;
         | 
| 122 | 
            -
            }
         | 
| 123 | 
            -
             | 
| 124 | 
            -
            mtable.tml-cases > mtr > mtd:nth-child(2) {
         | 
| 125 | 
            -
              padding-left: 1em;
         | 
| 126 | 
            -
            }
         | 
| 127 | 
            -
             | 
| 128 | 
            -
            mtable.tml-small > mtr > mtd {
         | 
| 129 | 
            -
              padding-top: 0.35ex;
         | 
| 130 | 
            -
              padding-bottom: 0.35ex;
         | 
| 131 | 
            -
              padding-left: 0.1389em;
         | 
| 132 | 
            -
              padding-right: 0.1389em;
         | 
| 133 | 
            -
            }
         | 
| 134 | 
            -
             | 
| 135 | 
            -
            mtable.tml-subarray > mtr > mtd {
         | 
| 136 | 
            -
              padding-top: 0em;
         | 
| 137 | 
            -
              padding-left: 0em;
         | 
| 138 | 
            -
            }
         | 
| 139 | 
            -
             | 
| 140 | 
            -
            mtable.tml-cd > mtr > mtd {
         | 
| 141 | 
            -
              padding-left: 0.25em;
         | 
| 142 | 
            -
              padding-right: 0.25em;
         | 
| 143 | 
            -
            }
         | 
| 144 | 
            -
             | 
| 145 | 
            -
            mtable > mtr:first-child > mtr > mtd {
         | 
| 146 | 
            -
              padding-top: 0em;
         | 
| 147 | 
            -
            }
         | 
| 148 | 
            -
             | 
| 149 | 
            -
            mtable > mtr:last-child > mtr > mtd {
         | 
| 150 | 
            -
              padding-bottom: 0em;
         | 
| 151 | 
            -
            }
         | 
| 152 | 
            -
             | 
| 153 | 
            -
            mtable:not(.tml-array) > mtr > mtd:first-child {
         | 
| 154 | 
            -
              padding-left: 0em;
         | 
| 155 | 
            -
            }
         | 
| 156 | 
            -
             | 
| 157 | 
            -
            mtable:not(.tml-array) > mtr > mtd:last-child {
         | 
| 158 | 
            -
              padding-right: 0em;
         | 
| 159 | 
            -
            }
         | 
| 160 | 
            -
             | 
| 161 | 
            -
            mtr.tml-top-solid > mtd {
         | 
| 162 | 
            -
              border-top: 0.06em solid;
         | 
| 163 | 
            -
            }
         | 
| 164 | 
            -
             | 
| 165 | 
            -
            mtr.tml-top-double > mtd {
         | 
| 166 | 
            -
              border-top: 0.15em double;
         | 
| 167 | 
            -
            }
         | 
| 168 | 
            -
             | 
| 169 | 
            -
            mtr.tml-top-dashed > mtd {
         | 
| 170 | 
            -
              border-top: 0.06em dashed;
         | 
| 171 | 
            -
            }
         | 
| 172 | 
            -
             | 
| 173 | 
            -
            mtr.tml-hline-solid > mtd {
         | 
| 174 | 
            -
              border-bottom: 0.06em solid;
         | 
| 175 | 
            -
            }
         | 
| 176 | 
            -
             | 
| 177 | 
            -
            mtr.tml-hline-double > mtd {
         | 
| 178 | 
            -
              border-bottom: 0.15em double;
         | 
| 179 | 
            -
            }
         | 
| 180 | 
            -
             | 
| 181 | 
            -
            mtr.tml-hline-dashed > mtd {
         | 
| 182 | 
            -
              border-bottom: 0.06em dashed;
         | 
| 183 | 
            -
            }
         | 
| 184 | 
            -
             | 
| 185 | 
            -
            /* MathML-Core does not support <menclose> attributes.
         | 
| 186 | 
            -
             * So Use background images for \cancel */
         | 
| 187 | 
            -
            mrow.cancel {
         | 
| 188 | 
            -
              background: 
         | 
| 189 | 
            -
                  linear-gradient(to top left,
         | 
| 190 | 
            -
                      rgba(0,0,0,0) 0%,
         | 
| 191 | 
            -
                      rgba(0,0,0,0) calc(50% - 0.06em),
         | 
| 192 | 
            -
                      rgba(0,0,0,1) 50%,
         | 
| 193 | 
            -
                      rgba(0,0,0,0) calc(50% + 0.06em),
         | 
| 194 | 
            -
                      rgba(0,0,0,0) 100%);
         | 
| 195 | 
            -
            }
         | 
| 196 | 
            -
             | 
| 197 | 
            -
            mrow.bcancel {
         | 
| 198 | 
            -
              background: 
         | 
| 199 | 
            -
                  linear-gradient(to top right,
         | 
| 200 | 
            -
                      rgba(0,0,0,0) 0%,
         | 
| 201 | 
            -
                      rgba(0,0,0,0) calc(50% - 0.06em),
         | 
| 202 | 
            -
                      rgba(0,0,0,1) 50%,
         | 
| 203 | 
            -
                      rgba(0,0,0,0) calc(50% + 0.06em),
         | 
| 204 | 
            -
                      rgba(0,0,0,0) 100%);
         | 
| 205 | 
            -
            }
         | 
| 206 | 
            -
             | 
| 207 | 
            -
            mrow.xcancel {
         | 
| 208 | 
            -
              background: 
         | 
| 209 | 
            -
                  linear-gradient(to top left,
         | 
| 210 | 
            -
                      rgba(0,0,0,0) 0%,
         | 
| 211 | 
            -
                      rgba(0,0,0,0) calc(50% - 0.06em),
         | 
| 212 | 
            -
                      rgba(0,0,0,1) 50%,
         | 
| 213 | 
            -
                      rgba(0,0,0,0) calc(50% + 0.06em),
         | 
| 214 | 
            -
                      rgba(0,0,0,0) 100%),
         | 
| 215 | 
            -
                  linear-gradient(to top right,
         | 
| 216 | 
            -
                      rgba(0,0,0,0) 0%,
         | 
| 217 | 
            -
                      rgba(0,0,0,0) calc(50% - 0.06em),
         | 
| 218 | 
            -
                      rgba(0,0,0,1) 50%,
         | 
| 219 | 
            -
                      rgba(0,0,0,0) calc(50% + 0.06em),
         | 
| 220 | 
            -
                      rgba(0,0,0,0) 100%);
         | 
| 221 | 
            -
            }
         | 
    
        package/dist/temml.cjs
    CHANGED
    
    | @@ -973,6 +973,10 @@ defineSymbol(math, mathord, "\u21af", "\\lightning", true); | |
| 973 973 | 
             
            defineSymbol(math, mathord, "\u220E", "\\QED", true);
         | 
| 974 974 | 
             
            defineSymbol(math, mathord, "\u2030", "\\permil", true);
         | 
| 975 975 | 
             
            defineSymbol(text, textord, "\u2030", "\\permil");
         | 
| 976 | 
            +
            defineSymbol(math, mathord, "\u2609", "\\astrosun", true);
         | 
| 977 | 
            +
            defineSymbol(math, mathord, "\u263c", "\\sun", true);
         | 
| 978 | 
            +
            defineSymbol(math, mathord, "\u263e", "\\leftmoon", true);
         | 
| 979 | 
            +
            defineSymbol(math, mathord, "\u263d", "\\rightmoon", true);
         | 
| 976 980 |  | 
| 977 981 | 
             
            // AMS Negated Binary Relations
         | 
| 978 982 | 
             
            defineSymbol(math, rel, "\u226e", "\\nless", true);
         | 
| @@ -2131,9 +2135,7 @@ function buildMathML(tree, texExpression, style, settings) { | |
| 2131 2135 | 
             
              }
         | 
| 2132 2136 | 
             
              if (settings.displayMode) {
         | 
| 2133 2137 | 
             
                math.setAttribute("display", "block");
         | 
| 2134 | 
            -
                math.style.display = math | 
| 2135 | 
            -
                  ? "inline"
         | 
| 2136 | 
            -
                  : "block math"; // necessary in Chromium.
         | 
| 2138 | 
            +
                math.style.display = "block math"; // necessary in Chromium.
         | 
| 2137 2139 | 
             
                // Firefox and Safari do not recognize display: "block math".
         | 
| 2138 2140 | 
             
                // Set a class so that the CSS file can set display: block.
         | 
| 2139 2141 | 
             
                math.classes = ["tml-display"];
         | 
| @@ -3824,10 +3826,20 @@ const mathmlBuilder$8 = (group, style) => { | |
| 3824 3826 | 
             
                  node.style.borderBottom = "0.065em solid";
         | 
| 3825 3827 | 
             
                  break
         | 
| 3826 3828 | 
             
                case "\\cancel":
         | 
| 3827 | 
            -
                  node. | 
| 3829 | 
            +
                  node.style.background = `linear-gradient(to top left,
         | 
| 3830 | 
            +
            rgba(0,0,0,0) 0%,
         | 
| 3831 | 
            +
            rgba(0,0,0,0) calc(50% - 0.06em),
         | 
| 3832 | 
            +
            rgba(0,0,0,1) 50%,
         | 
| 3833 | 
            +
            rgba(0,0,0,0) calc(50% + 0.06em),
         | 
| 3834 | 
            +
            rgba(0,0,0,0) 100%);`;
         | 
| 3828 3835 | 
             
                  break
         | 
| 3829 3836 | 
             
                case "\\bcancel":
         | 
| 3830 | 
            -
                  node. | 
| 3837 | 
            +
                  node.style.background = `linear-gradient(to top right,
         | 
| 3838 | 
            +
            rgba(0,0,0,0) 0%,
         | 
| 3839 | 
            +
            rgba(0,0,0,0) calc(50% - 0.06em),
         | 
| 3840 | 
            +
            rgba(0,0,0,1) 50%,
         | 
| 3841 | 
            +
            rgba(0,0,0,0) calc(50% + 0.06em),
         | 
| 3842 | 
            +
            rgba(0,0,0,0) 100%);`;
         | 
| 3831 3843 | 
             
                  break
         | 
| 3832 3844 | 
             
                /*
         | 
| 3833 3845 | 
             
                case "\\longdiv":
         | 
| @@ -3871,7 +3883,18 @@ const mathmlBuilder$8 = (group, style) => { | |
| 3871 3883 | 
             
                  break
         | 
| 3872 3884 | 
             
                }
         | 
| 3873 3885 | 
             
                case "\\xcancel":
         | 
| 3874 | 
            -
                  node. | 
| 3886 | 
            +
                  node.style.background = `linear-gradient(to top left,
         | 
| 3887 | 
            +
            rgba(0,0,0,0) 0%,
         | 
| 3888 | 
            +
            rgba(0,0,0,0) calc(50% - 0.06em),
         | 
| 3889 | 
            +
            rgba(0,0,0,1) 50%,
         | 
| 3890 | 
            +
            rgba(0,0,0,0) calc(50% + 0.06em),
         | 
| 3891 | 
            +
            rgba(0,0,0,0) 100%),
         | 
| 3892 | 
            +
            linear-gradient(to top right,
         | 
| 3893 | 
            +
            rgba(0,0,0,0) 0%,
         | 
| 3894 | 
            +
            rgba(0,0,0,0) calc(50% - 0.06em),
         | 
| 3895 | 
            +
            rgba(0,0,0,1) 50%,
         | 
| 3896 | 
            +
            rgba(0,0,0,0) calc(50% + 0.06em),
         | 
| 3897 | 
            +
            rgba(0,0,0,0) 100%);`;
         | 
| 3875 3898 | 
             
                  break
         | 
| 3876 3899 | 
             
              }
         | 
| 3877 3900 | 
             
              if (group.backgroundColor) {
         | 
| @@ -4302,24 +4325,94 @@ const mathmlBuilder$7 = function(group, style) { | |
| 4302 4325 | 
             
                // Write horizontal rules
         | 
| 4303 4326 | 
             
                if (i === 0 && hlines[0].length > 0) {
         | 
| 4304 4327 | 
             
                  if (hlines[0].length === 2) {
         | 
| 4305 | 
            -
                    mtr. | 
| 4328 | 
            +
                    mtr.children.forEach(cell => { cell.style.borderTop = "0.15em double"; });
         | 
| 4306 4329 | 
             
                  } else {
         | 
| 4307 | 
            -
                    mtr. | 
| 4330 | 
            +
                    mtr.children.forEach(cell => {
         | 
| 4331 | 
            +
                      cell.style.borderTop = hlines[0][0] ? "0.06em dashed" : "0.06em solid";
         | 
| 4332 | 
            +
                    });
         | 
| 4308 4333 | 
             
                  }
         | 
| 4309 4334 | 
             
                }
         | 
| 4310 4335 | 
             
                if (hlines[i + 1].length > 0) {
         | 
| 4311 4336 | 
             
                  if (hlines[i + 1].length === 2) {
         | 
| 4312 | 
            -
                    mtr. | 
| 4337 | 
            +
                    mtr.children.forEach(cell => { cell.style.borderBottom = "0.15em double"; });
         | 
| 4313 4338 | 
             
                  } else {
         | 
| 4314 | 
            -
                    mtr. | 
| 4339 | 
            +
                    mtr.children.forEach(cell => {
         | 
| 4340 | 
            +
                      cell.style.borderBottom = hlines[i + 1][0] ? "0.06em dashed" : "0.06em solid";
         | 
| 4341 | 
            +
                    });
         | 
| 4315 4342 | 
             
                  }
         | 
| 4316 4343 | 
             
                }
         | 
| 4317 4344 | 
             
                tbl.push(mtr);
         | 
| 4318 4345 | 
             
              }
         | 
| 4319 | 
            -
             | 
| 4346 | 
            +
             | 
| 4320 4347 | 
             
              if (group.envClasses.length > 0) {
         | 
| 4321 | 
            -
                 | 
| 4348 | 
            +
                const pad = group.envClasses.includes("jot")
         | 
| 4349 | 
            +
                  ? "0.7" // 0.5ex + 0.09em top & bot padding
         | 
| 4350 | 
            +
                  : group.envClasses.includes("small")
         | 
| 4351 | 
            +
                  ? "0.35"
         | 
| 4352 | 
            +
                  : "0.5"; // 0.5ex default top & bot padding
         | 
| 4353 | 
            +
                const sidePadding = group.envClasses.includes("abut")
         | 
| 4354 | 
            +
                  ? "0"
         | 
| 4355 | 
            +
                  : group.envClasses.includes("cases")
         | 
| 4356 | 
            +
                  ? "0"
         | 
| 4357 | 
            +
                  : group.envClasses.includes("small")
         | 
| 4358 | 
            +
                  ? "0.1389"
         | 
| 4359 | 
            +
                  : group.envClasses.includes("cd")
         | 
| 4360 | 
            +
                  ? "0.25"
         | 
| 4361 | 
            +
                  : "0.4"; // default side padding
         | 
| 4362 | 
            +
             | 
| 4363 | 
            +
                const numCols = tbl.length === 0 ? 0 : tbl[0].children.length;
         | 
| 4364 | 
            +
             | 
| 4365 | 
            +
                const sidePad = (j, hand) => {
         | 
| 4366 | 
            +
                  if (j === 0 && hand === 0) { return "0" }
         | 
| 4367 | 
            +
                  if (j === numCols - 1 && hand === 1) { return "0" }
         | 
| 4368 | 
            +
                  if (group.envClasses[0] !== "align") { return sidePadding }
         | 
| 4369 | 
            +
                  if (hand === 1) { return "0" }
         | 
| 4370 | 
            +
                  if (group.addEqnNum) {
         | 
| 4371 | 
            +
                    return (j % 2) ? "1" : "0"
         | 
| 4372 | 
            +
                  } else {
         | 
| 4373 | 
            +
                    return (j % 2) ? "0" : "1"
         | 
| 4374 | 
            +
                  }
         | 
| 4375 | 
            +
                };
         | 
| 4376 | 
            +
             | 
| 4377 | 
            +
                // Padding
         | 
| 4378 | 
            +
                for (let i = 0; i < tbl.length; i++) {
         | 
| 4379 | 
            +
                  for (let j = 0; j < tbl[i].children.length; j++) {
         | 
| 4380 | 
            +
                    tbl[i].children[j].style.padding = `${pad}ex ${sidePad(j, 1)}em ${pad}ex ${sidePad(j, 0)}em`;
         | 
| 4381 | 
            +
                  }
         | 
| 4382 | 
            +
                }
         | 
| 4383 | 
            +
             | 
| 4384 | 
            +
                // Justification
         | 
| 4385 | 
            +
                const align = group.envClasses.includes("align") || group.envClasses.includes("alignat");
         | 
| 4386 | 
            +
                for (let i = 0; i < tbl.length; i++) {
         | 
| 4387 | 
            +
                  const row = tbl[i];
         | 
| 4388 | 
            +
                  if (align) {
         | 
| 4389 | 
            +
                    for (let j = 0; j < row.children.length; j++) {
         | 
| 4390 | 
            +
                      // Chromium does not recognize text-align: left. Use -webkit-
         | 
| 4391 | 
            +
                      // TODO: Remove -webkit- when Chromium no longer needs it.
         | 
| 4392 | 
            +
                      row.children[j].style.textAlign = "-webkit-" + (j % 2 ? "left" : "right");
         | 
| 4393 | 
            +
                    }
         | 
| 4394 | 
            +
                  }
         | 
| 4395 | 
            +
                  if (row.children.length > 1 && group.envClasses.includes("cases")) {
         | 
| 4396 | 
            +
                    row.children[1].style.padding = row.children[1].style.padding.replace(/0em$/, "1em");
         | 
| 4397 | 
            +
                  }
         | 
| 4398 | 
            +
             | 
| 4399 | 
            +
                  if (group.envClasses.includes("cases") || group.envClasses.includes("subarray")) {
         | 
| 4400 | 
            +
                    for (const cell of row.children) {
         | 
| 4401 | 
            +
                      cell.style.textAlign = "-webkit-" + "left";
         | 
| 4402 | 
            +
                    }
         | 
| 4403 | 
            +
                  }
         | 
| 4404 | 
            +
                }
         | 
| 4405 | 
            +
              } else {
         | 
| 4406 | 
            +
                // Set zero padding on side of the matrix
         | 
| 4407 | 
            +
                for (let i = 0; i < tbl.length; i++) {
         | 
| 4408 | 
            +
                  tbl[i].children[0].style.paddingLeft = "0em";
         | 
| 4409 | 
            +
                  if (tbl[i].children.length === tbl[0].children.length) {
         | 
| 4410 | 
            +
                    tbl[i].children[tbl[i].children.length - 1].style.paddingRight = "0em";
         | 
| 4411 | 
            +
                  }
         | 
| 4412 | 
            +
                }
         | 
| 4322 4413 | 
             
              }
         | 
| 4414 | 
            +
             | 
| 4415 | 
            +
              let table = new mathMLTree.MathNode("mtable", tbl);
         | 
| 4323 4416 | 
             
              if (group.scriptLevel === "display") { table.setAttribute("displaystyle", "true"); }
         | 
| 4324 4417 |  | 
| 4325 4418 | 
             
              if (group.addEqnNum || group.envClasses.includes("multline")) {
         | 
| @@ -4399,6 +4492,8 @@ const mathmlBuilder$7 = function(group, style) { | |
| 4399 4492 | 
             
                align = "left " + (align.length > 0 ? align : "center ") + "right ";
         | 
| 4400 4493 | 
             
              }
         | 
| 4401 4494 | 
             
              if (align) {
         | 
| 4495 | 
            +
                // Firefox reads this attribute, not the -webkit-left|right written above.
         | 
| 4496 | 
            +
                // TODO: When Chrome no longer needs "-webkit-", use CSS and delete the next line.
         | 
| 4402 4497 | 
             
                table.setAttribute("columnalign", align.trim());
         | 
| 4403 4498 | 
             
              }
         | 
| 4404 4499 |  | 
| @@ -4423,7 +4518,7 @@ const alignedHandler = function(context, args) { | |
| 4423 4518 | 
             
                  cols,
         | 
| 4424 4519 | 
             
                  addEqnNum: context.envName === "align" || context.envName === "alignat",
         | 
| 4425 4520 | 
             
                  emptySingleRow: true,
         | 
| 4426 | 
            -
                  envClasses: [" | 
| 4521 | 
            +
                  envClasses: ["abut", "jot"], // set row spacing & provisional column spacing
         | 
| 4427 4522 | 
             
                  maxNumCols: context.envName === "split" ? 2 : undefined,
         | 
| 4428 4523 | 
             
                  leqno: context.parser.settings.leqno
         | 
| 4429 4524 | 
             
                },
         | 
| @@ -4441,18 +4536,22 @@ const alignedHandler = function(context, args) { | |
| 4441 4536 | 
             
              // binary.  This behavior is implemented in amsmath's \start@aligned.
         | 
| 4442 4537 | 
             
              let numMaths;
         | 
| 4443 4538 | 
             
              let numCols = 0;
         | 
| 4444 | 
            -
               | 
| 4539 | 
            +
              const isAlignedAt = context.envName.indexOf("at") > -1;
         | 
| 4540 | 
            +
              if (args[0] && isAlignedAt) {
         | 
| 4541 | 
            +
                // alignat environment takes an argument w/ number of columns
         | 
| 4445 4542 | 
             
                let arg0 = "";
         | 
| 4446 4543 | 
             
                for (let i = 0; i < args[0].body.length; i++) {
         | 
| 4447 4544 | 
             
                  const textord = assertNodeType(args[0].body[i], "textord");
         | 
| 4448 4545 | 
             
                  arg0 += textord.text;
         | 
| 4449 4546 | 
             
                }
         | 
| 4547 | 
            +
                if (isNaN(arg0)) {
         | 
| 4548 | 
            +
                  throw new ParseError("The alignat enviroment requires a numeric first argument.")
         | 
| 4549 | 
            +
                }
         | 
| 4450 4550 | 
             
                numMaths = Number(arg0);
         | 
| 4451 4551 | 
             
                numCols = numMaths * 2;
         | 
| 4452 4552 | 
             
              }
         | 
| 4453 | 
            -
              const isAligned = !numCols;
         | 
| 4454 4553 | 
             
              res.body.forEach(function(row) {
         | 
| 4455 | 
            -
                if ( | 
| 4554 | 
            +
                if (isAlignedAt) {
         | 
| 4456 4555 | 
             
                  // Case 1
         | 
| 4457 4556 | 
             
                  const curMaths = row.length / 2;
         | 
| 4458 4557 | 
             
                  if (numMaths < curMaths) {
         | 
| @@ -4480,14 +4579,10 @@ const alignedHandler = function(context, args) { | |
| 4480 4579 | 
             
                  align: align
         | 
| 4481 4580 | 
             
                };
         | 
| 4482 4581 | 
             
              }
         | 
| 4483 | 
            -
              if (context.envName === "split") ; else if ( | 
| 4484 | 
            -
                res.envClasses.push(" | 
| 4485 | 
            -
              } else if (isAligned) {
         | 
| 4486 | 
            -
                res.envClasses[1] = context.envName === "align*"
         | 
| 4487 | 
            -
                  ? "align-star"
         | 
| 4488 | 
            -
                  : "align"; // Sets column spacing & justification
         | 
| 4582 | 
            +
              if (context.envName === "split") ; else if (isAlignedAt) {
         | 
| 4583 | 
            +
                res.envClasses.push("alignat"); // Sets justification
         | 
| 4489 4584 | 
             
              } else {
         | 
| 4490 | 
            -
                res.envClasses | 
| 4585 | 
            +
                res.envClasses[0] = "align"; // Sets column spacing & justification
         | 
| 4491 4586 | 
             
              }
         | 
| 4492 4587 | 
             
              return res;
         | 
| 4493 4588 | 
             
            };
         | 
| @@ -4737,7 +4832,7 @@ defineEnvironment({ | |
| 4737 4832 | 
             
                }
         | 
| 4738 4833 | 
             
                const res = {
         | 
| 4739 4834 | 
             
                  cols: [],
         | 
| 4740 | 
            -
                  envClasses: [" | 
| 4835 | 
            +
                  envClasses: ["abut", "jot"],
         | 
| 4741 4836 | 
             
                  addEqnNum: context.envName === "gather",
         | 
| 4742 4837 | 
             
                  emptySingleRow: true,
         | 
| 4743 4838 | 
             
                  leqno: context.parser.settings.leqno
         | 
| @@ -12901,7 +12996,7 @@ class Style { | |
| 12901 12996 | 
             
             * https://mit-license.org/
         | 
| 12902 12997 | 
             
             */
         | 
| 12903 12998 |  | 
| 12904 | 
            -
            const version = "0.10. | 
| 12999 | 
            +
            const version = "0.10.15";
         | 
| 12905 13000 |  | 
| 12906 13001 | 
             
            function postProcess(block) {
         | 
| 12907 13002 | 
             
              const labelMap = {};
         | 
| @@ -12952,6 +13047,7 @@ function postProcess(block) { | |
| 12952 13047 | 
             
            /* eslint no-console:0 */
         | 
| 12953 13048 |  | 
| 12954 13049 | 
             
            /**
         | 
| 13050 | 
            +
             * @type {import('./temml').render}
         | 
| 12955 13051 | 
             
             * Parse and build an expression, and place that expression in the DOM node
         | 
| 12956 13052 | 
             
             * given.
         | 
| 12957 13053 | 
             
             */
         | 
| @@ -12989,6 +13085,7 @@ if (typeof document !== "undefined") { | |
| 12989 13085 | 
             
            }
         | 
| 12990 13086 |  | 
| 12991 13087 | 
             
            /**
         | 
| 13088 | 
            +
             * @type {import('./temml').renderToString}
         | 
| 12992 13089 | 
             
             * Parse and build an expression, and return the markup for that.
         | 
| 12993 13090 | 
             
             */
         | 
| 12994 13091 | 
             
            const renderToString = function(expression, options) {
         | 
| @@ -12997,6 +13094,7 @@ const renderToString = function(expression, options) { | |
| 12997 13094 | 
             
            };
         | 
| 12998 13095 |  | 
| 12999 13096 | 
             
            /**
         | 
| 13097 | 
            +
             * @type {import('./temml').generateParseTree}
         | 
| 13000 13098 | 
             
             * Parse an expression and return the parse tree.
         | 
| 13001 13099 | 
             
             */
         | 
| 13002 13100 | 
             
            const generateParseTree = function(expression, options) {
         | 
| @@ -13005,6 +13103,7 @@ const generateParseTree = function(expression, options) { | |
| 13005 13103 | 
             
            };
         | 
| 13006 13104 |  | 
| 13007 13105 | 
             
            /**
         | 
| 13106 | 
            +
             * @type {import('./temml').definePreamble}
         | 
| 13008 13107 | 
             
             * Take an expression which contains a preamble.
         | 
| 13009 13108 | 
             
             * Parse it and return the macros.
         | 
| 13010 13109 | 
             
             */
         | 
| @@ -13037,6 +13136,7 @@ const renderError = function(error, expression, options) { | |
| 13037 13136 | 
             
            };
         | 
| 13038 13137 |  | 
| 13039 13138 | 
             
            /**
         | 
| 13139 | 
            +
             * @type {import('./temml').renderToMathMLTree}
         | 
| 13040 13140 | 
             
             * Generates and returns the Temml build tree. This is used for advanced
         | 
| 13041 13141 | 
             
             * use cases (like rendering to custom output).
         | 
| 13042 13142 | 
             
             */
         | 
| @@ -13054,6 +13154,7 @@ const renderToMathMLTree = function(expression, options) { | |
| 13054 13154 | 
             
              }
         | 
| 13055 13155 | 
             
            };
         | 
| 13056 13156 |  | 
| 13157 | 
            +
            /** @type {import('./temml').default} */
         | 
| 13057 13158 | 
             
            var temml = {
         | 
| 13058 13159 | 
             
              /**
         | 
| 13059 13160 | 
             
               * Current Temml version
         | 
    
        package/dist/temml.d.ts
    ADDED
    
    | @@ -0,0 +1,60 @@ | |
| 1 | 
            +
            export interface Options {
         | 
| 2 | 
            +
              displayMode?: boolean;
         | 
| 3 | 
            +
              annotate?: boolean;
         | 
| 4 | 
            +
              leqno?: boolean;
         | 
| 5 | 
            +
              throwOnError?: boolean;
         | 
| 6 | 
            +
              errorColor?: string;
         | 
| 7 | 
            +
              macros?: Record<string, string>;
         | 
| 8 | 
            +
              wrap?: "tex" | "=" | "none";
         | 
| 9 | 
            +
              xml?: boolean;
         | 
| 10 | 
            +
              colorIsTextColor?: boolean;
         | 
| 11 | 
            +
              strict?: boolean;
         | 
| 12 | 
            +
              trust?: boolean | ((context: any) => boolean);
         | 
| 13 | 
            +
              maxSize?: [number, number];
         | 
| 14 | 
            +
              maxExpand?: number;
         | 
| 15 | 
            +
            }
         | 
| 16 | 
            +
             | 
| 17 | 
            +
            export function render(
         | 
| 18 | 
            +
              expression: string,
         | 
| 19 | 
            +
              baseNode: HTMLElement,
         | 
| 20 | 
            +
              options?: Options,
         | 
| 21 | 
            +
            ): void;
         | 
| 22 | 
            +
             | 
| 23 | 
            +
            export function renderToString(expression: string, options?: Options): string;
         | 
| 24 | 
            +
             | 
| 25 | 
            +
            export function generateParseTree(expression: string, options?: Options): any;
         | 
| 26 | 
            +
             | 
| 27 | 
            +
            export function definePreamble(expression: string, options?: Options): any;
         | 
| 28 | 
            +
             | 
| 29 | 
            +
            export function renderToMathMLTree(expression: string, options?: Options): any;
         | 
| 30 | 
            +
             | 
| 31 | 
            +
            declare function postProcess(block: any): void;
         | 
| 32 | 
            +
            declare function defineMacro(name: string, body: any): void;
         | 
| 33 | 
            +
            declare function defineSymbol(
         | 
| 34 | 
            +
              mode: string,
         | 
| 35 | 
            +
              group: string,
         | 
| 36 | 
            +
              replace: string,
         | 
| 37 | 
            +
              name: string,
         | 
| 38 | 
            +
              acceptUnicodeChar: boolean,
         | 
| 39 | 
            +
            ): void;
         | 
| 40 | 
            +
            declare class ParseError {
         | 
| 41 | 
            +
              constructor(
         | 
| 42 | 
            +
                message: string, // The error message
         | 
| 43 | 
            +
                token: any, // An object providing position information
         | 
| 44 | 
            +
              ) {}
         | 
| 45 | 
            +
            }
         | 
| 46 | 
            +
             | 
| 47 | 
            +
            declare const Temml: {
         | 
| 48 | 
            +
              version: string;
         | 
| 49 | 
            +
              render: typeof render;
         | 
| 50 | 
            +
              renderToString: typeof renderToString;
         | 
| 51 | 
            +
              postProcess: typeof postProcess;
         | 
| 52 | 
            +
              ParseError: typeof ParseError;
         | 
| 53 | 
            +
              definePreamble: typeof definePreamble;
         | 
| 54 | 
            +
              __parse: typeof generateParseTree;
         | 
| 55 | 
            +
              __renderToMathMLTree: typeof renderToMathMLTree;
         | 
| 56 | 
            +
              __defineSymbol: typeof defineSymbol;
         | 
| 57 | 
            +
              __defineMacro: typeof defineMacro;
         | 
| 58 | 
            +
            };
         | 
| 59 | 
            +
             | 
| 60 | 
            +
            export default Temml;
         |