From db585fae54b52bb7ff002a455c96af0aba15c266 Mon Sep 17 00:00:00 2001 From: Ron Kok Date: Sat, 7 Jul 2018 17:01:37 -0700 Subject: [PATCH] Support \genfrac and \above (#1458) * Support \genfrac and \above * Accommodate delimiters inside groups * Update screenshots take one` * Update screenshots take two * Fix flow error * Fix lint error --- src/ParseNode.js | 3 + src/Parser.js | 17 +- src/functions/genfrac.js | 152 +++++++++++++++++- test/katex-spec.js | 39 ++++- .../images/FractionTest-chrome.png | Bin 13076 -> 17104 bytes .../images/FractionTest-firefox.png | Bin 12110 -> 15459 bytes test/screenshotter/ss_data.yaml | 3 +- 7 files changed, 207 insertions(+), 7 deletions(-) diff --git a/src/ParseNode.js b/src/ParseNode.js index 192bbe5d..8d71cf23 100644 --- a/src/ParseNode.js +++ b/src/ParseNode.js @@ -145,6 +145,7 @@ export type ParseNodeTypes = { "size": {| type: "size", value: Measurement, + isBlank: boolean, |}, "styling": {| type: "styling", @@ -244,6 +245,7 @@ export type ParseNodeTypes = { leftDelim: ?string, rightDelim: ?string, size: StyleStr | "auto", + barSize: Measurement | null, |}, "horizBrace": {| type: "horizBrace", @@ -259,6 +261,7 @@ export type ParseNodeTypes = { "infix": {| type: "infix", replaceWith: string, + sizeNode?: ParseNode<"size">, token: ?Token, |}, "kern": {| diff --git a/src/Parser.js b/src/Parser.js index 5760ab25..6905ffd9 100644 --- a/src/Parser.js +++ b/src/Parser.js @@ -248,7 +248,13 @@ export default class Parser { denomNode = new ParseNode("ordgroup", denomBody, this.mode); } - const node = this.callFunction(funcName, [numerNode, denomNode], []); + let node; + if (funcName === "\\\\abovefrac") { + node = this.callFunction(funcName, + [numerNode, body[overIndex], denomNode], []); + } else { + node = this.callFunction(funcName, [numerNode, denomNode], []); + } return [node]; } else { return body; @@ -821,6 +827,7 @@ export default class Parser { */ parseSizeGroup(optional: boolean): ?ParsedArg { let res; + let isBlank = false; if (!optional && this.nextToken.text !== "{") { res = this.parseRegexGroup( /^[-+]? *(?:$|\d+|\d+\.\d*|\.\d*) *[a-z]{0,2} *$/, "size"); @@ -830,6 +837,13 @@ export default class Parser { if (!res) { return null; } + if (!optional && res.text.length === 0) { + // Because we've tested for what is !optional, this block won't + // affect \kern, \hspace, etc. It will capture the mandatory arguments + // to \genfrac and \above. + res.text = "0pt"; // Enable \above{} + isBlank = true; // This is here specifically for \genfrac + } const match = (/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/).exec(res.text); if (!match) { throw new ParseError("Invalid size: '" + res.text + "'", res); @@ -844,6 +858,7 @@ export default class Parser { return newArgument(new ParseNode("size", { type: "size", value: data, + isBlank: isBlank, }, this.mode), res); } diff --git a/src/functions/genfrac.js b/src/functions/genfrac.js index e757bea7..d58f4e3b 100644 --- a/src/functions/genfrac.js +++ b/src/functions/genfrac.js @@ -4,10 +4,11 @@ import buildCommon from "../buildCommon"; import delimiter from "../delimiter"; import mathMLTree from "../mathMLTree"; import Style from "../Style"; -import ParseNode from "../ParseNode"; +import ParseNode, {assertNodeType, checkNodeType} from "../ParseNode"; import * as html from "../buildHTML"; import * as mml from "../buildMathML"; +import {calculateSize} from "../units"; const htmlBuilder = (group, options) => { // Fractions are handled in the TeXbook on pages 444-445, rules 15(a-e). @@ -20,6 +21,10 @@ const htmlBuilder = (group, options) => { style.size === Style.DISPLAY.size) { // We're in a \tfrac but incoming style is displaystyle, so: style = Style.TEXT; + } else if (group.value.size === "script") { + style = Style.SCRIPT; + } else if (group.value.size === "scriptscript") { + style = Style.SCRIPTSCRIPT; } const nstyle = style.fracNum(); @@ -45,7 +50,12 @@ const htmlBuilder = (group, options) => { let ruleWidth; let ruleSpacing; if (group.value.hasBarLine) { - rule = buildCommon.makeLineSpan("frac-line", options); + if (group.value.barSize) { + ruleWidth = calculateSize(group.value.barSize, options); + rule = buildCommon.makeLineSpan("frac-line", options, ruleWidth); + } else { + rule = buildCommon.makeLineSpan("frac-line", options); + } ruleWidth = rule.height; ruleSpacing = rule.height; } else { @@ -174,6 +184,9 @@ const mathmlBuilder = (group, options) => { if (!group.value.hasBarLine) { node.setAttribute("linethickness", "0px"); + } else if (group.value.barSize) { + const ruleWidth = calculateSize(group.value.barSize, options); + node.setAttribute("linethickness", ruleWidth + "em"); } if (group.value.leftDelim != null || group.value.rightDelim != null) { @@ -277,6 +290,7 @@ defineFunction({ leftDelim: leftDelim, rightDelim: rightDelim, size: size, + barSize: null, }, parser.mode); }, @@ -321,3 +335,137 @@ defineFunction({ }, parser.mode); }, }); + +const stylArray = ["display", "text", "script", "scriptscript"]; + +const delimFromValue = function(delimString: string): string | null { + let delim = null; + if (delimString.length > 0) { + delim = delimString; + delim = delim === "." ? null : delim; + } + return delim; +}; + +defineFunction({ + type: "genfrac", + names: ["\\genfrac"], + props: { + numArgs: 6, + greediness: 6, + argTypes: ["math", "math", "size", "text", "math", "math"], + }, + handler: ({parser}, args) => { + const numer = args[4]; + const denom = args[5]; + + // Look into the parse nodes to get the desired delimiters. + let leftNode = checkNodeType(args[0], "ordgroup"); + if (leftNode) { + leftNode = assertNodeType(leftNode.value[0], "open"); + } else { + leftNode = assertNodeType(args[0], "open"); + } + const leftDelim = delimFromValue(leftNode.value); + + let rightNode = checkNodeType(args[1], "ordgroup"); + if (rightNode) { + rightNode = assertNodeType(rightNode.value[0], "close"); + } else { + rightNode = assertNodeType(args[1], "close"); + } + const rightDelim = delimFromValue(rightNode.value); + + const barNode = assertNodeType(args[2], "size"); + let hasBarLine; + let barSize = null; + if (barNode.value.isBlank) { + // \genfrac acts differently than \above. + // \genfrac treats an empty size group as a signal to use a + // standard bar size. \above would see size = 0 and omit the bar. + hasBarLine = true; + } else { + barSize = barNode.value.value; + hasBarLine = barSize.number > 0; + } + + // Find out if we want displaystyle, textstyle, etc. + let size = "auto"; + let styl = checkNodeType(args[3], "ordgroup"); + if (styl) { + if (styl.value.length > 0) { + size = stylArray[Number(styl.value[0].value)]; + } + } else { + styl = assertNodeType(args[3], "textord"); + size = stylArray[Number(styl.value)]; + } + + return new ParseNode("genfrac", { + type: "genfrac", + numer: numer, + denom: denom, + continued: false, + hasBarLine: hasBarLine, + barSize: barSize, + leftDelim: leftDelim, + rightDelim: rightDelim, + size: size, + }, parser.mode); + }, + + htmlBuilder, + mathmlBuilder, +}); + +// \above is an infix fraction that also defines a fraction bar size. +defineFunction({ + type: "infix", + names: ["\\above"], + props: { + numArgs: 1, + argTypes: ["size"], + infix: true, + }, + handler({parser, funcName, token}, args) { + const sizeNode = assertNodeType(args[0], "size"); + return new ParseNode("infix", { + type: "infix", + replaceWith: "\\\\abovefrac", + sizeNode: sizeNode, + token: token, + }, parser.mode); + }, +}); + +defineFunction({ + type: "genfrac", + names: ["\\\\abovefrac"], + props: { + numArgs: 3, + argTypes: ["math", "size", "math"], + }, + handler: ({parser, funcName}, args) => { + const numer = args[0]; + const infixNode = assertNodeType(args[1], "infix"); + const sizeNode = assertNodeType(infixNode.value.sizeNode, "size"); + const denom = args[2]; + + const barSize = sizeNode.value.value; + const hasBarLine = barSize.number > 0; + return new ParseNode("genfrac", { + type: "genfrac", + numer: numer, + denom: denom, + continued: false, + hasBarLine: hasBarLine, + barSize: barSize, + leftDelim: null, + rightDelim: null, + size: "auto", + }, parser.mode); + }, + + htmlBuilder, + mathmlBuilder, +}); diff --git a/test/katex-spec.js b/test/katex-spec.js index 0db175bb..ff2f287f 100644 --- a/test/katex-spec.js +++ b/test/katex-spec.js @@ -428,6 +428,8 @@ describe("A frac parser", function() { const dfracExpression = "\\dfrac{x}{y}"; const tfracExpression = "\\tfrac{x}{y}"; const cfracExpression = "\\cfrac{x}{y}"; + const genfrac1 = "\\genfrac ( ] {0.06em}{0}{a}{b+c}"; + const genfrac2 = "\\genfrac ( ] {0.8pt}{}{a}{b+c}"; it("should not fail", function() { expect(expression).toParse(); @@ -441,13 +443,15 @@ describe("A frac parser", function() { expect(parse.value.denom).toBeDefined(); }); - it("should also parse dfrac and tfrac", function() { + it("should also parse cfrac, dfrac, tfrac, and genfrac", function() { + expect(cfracExpression).toParse(); expect(dfracExpression).toParse(); - expect(tfracExpression).toParse(); + expect(genfrac1).toParse(); + expect(genfrac2).toParse(); }); - it("should parse dfrac and tfrac as fracs", function() { + it("should parse cfrac, dfrac, tfrac, and genfrac as fracs", function() { const dfracParse = getParsed(dfracExpression)[0]; expect(dfracParse.type).toEqual("genfrac"); @@ -465,6 +469,24 @@ describe("A frac parser", function() { expect(cfracParse.type).toEqual("genfrac"); expect(cfracParse.value.numer).toBeDefined(); expect(cfracParse.value.denom).toBeDefined(); + + const genfracParse = getParsed(genfrac1)[0]; + + expect(genfracParse.type).toEqual("genfrac"); + expect(genfracParse.value.numer).toBeDefined(); + expect(genfracParse.value.denom).toBeDefined(); + expect(genfracParse.value.leftDelim).toBeDefined(); + expect(genfracParse.value.rightDelim).toBeDefined(); + }); + + it("should fail, given math as a line thickness to genfrac", function() { + const badGenFrac = "\\genfrac ( ] {b+c}{0}{a}{b+c}"; + expect(badGenFrac).toNotParse(); + }); + + it("should fail if genfrac is given less than 6 arguments", function() { + const badGenFrac = "\\genfrac ( ] {0.06em}{0}{a}"; + expect(badGenFrac).toNotParse(); }); it("should parse atop", function() { @@ -587,6 +609,17 @@ describe("An over/brace/brack parser", function() { }); }); +describe("A genfrac builder", function() { + it("should not fail", function() { + expect("\\frac{x}{y}").toBuild(); + expect("\\dfrac{x}{y}").toBuild(); + expect("\\tfrac{x}{y}").toBuild(); + expect("\\cfrac{x}{y}").toBuild(); + expect("\\genfrac ( ] {0.06em}{0}{a}{b+c}").toBuild(); + expect("\\genfrac ( ] {0.8pt}{}{a}{b+c}").toBuild(); + }); +}); + describe("A infix builder", function() { it("should not fail", function() { expect("a \\over b").toBuild(); diff --git a/test/screenshotter/images/FractionTest-chrome.png b/test/screenshotter/images/FractionTest-chrome.png index 4c7a5e284f7761fb33fade0ae1df66fbed3ec00d..3b6578bb52cc6d07fe2bc21588da4c6328f29d34 100644 GIT binary patch literal 17104 zcmeAS@N?(olHy`uVBq!ia0y~yU}0cjU}oT8U|?XFf6?nA1B26aPZ!6KiaBrZvL{># zVP^kOuB*E^b?QgO1xBeI9GfNvI!N+OYiLk1O6la#QebN0acpZ~YU+5iw_QOYsI9Ak zXQFCwS!0mKmMML^_4Rjtdv{CvS8!tQ4m_x9gPCNR8rB~9T{yi@?xx)0a_c|QXRlUmZ;<9- znD*=3h25+ST?!0a8YhQ85Eo#OI&pEw^qI2fjBZRh0Fj#!lRROd;{JzvHN z%!~(uw&zuCXK)Z?VPH5ez`!8m%)n5|o?_WBA|UXGo6?EX!Cep5$^!Q`+S!?e1Ba1CGAPqBTf;ZkScZ2fXK z#VDs#TkSL(!`TfS4eYVkI8whIyxS$T>GkBp)9kLRsR$?iV`OCLdGIW2tpP_v_xj7x z_vhUVn$%}<<8IFU)E*04r@xCBT{sxluHbL@{B<37>dU>XOD}#6zsc@tV0E_B^u@W?5h88-RUO|`F5%Kx69ii>=@ zi1CsF!*K?B7XKGr?IFs|R?xz5p=%byjl$41K4)c?y%Rfq;g*(|j0McF6`#@`*HXF#rzeV4Y@&AZxp_g+t?Gb@eaeI{QNt)bMwUO zqTjn&Jj}0m|G!X);oaP+S;w{Ol9nugDt){5!$U*I(Xc5&!f0{R{sPmIIpE zZ-2D@m;1P1)Q{2Q&(q%QN{Q-UAAZ??&1>`i_o@7gy%y7fUCaTS8V+C4*tlle-QQ1} zrth(@lmE$jdzwKz$OFy{D^C?%j-L{7?Q`8m#-r2oW40cDuc+UelX6Ysm;ggmpdiDw z-GAqm&ZzjlBf|4Jt62Vd)5iDt%r)PSg_iz_%dgnhbUx&);mHk*V6{7!tlD$dFxD`;YcJgOA}G*C@0do);0cX2ti@ z{491AkEQB7m<8HqSMC4N@L;vSp0fP@ z>f}_RjZ0MQdhUJPZc?}E#_99+6O}zAx}N+|ZZ#EU{19UIF;YSE+vQ_(#aBxuY3@;t zt^jFnX5cvS_`BS9V;_$j8yuw~+8GkO&Q5JOD|Y$Qw!2eA4=>%trQ7${`;%$V#)=6? zKOBFbkdno;V6g;4z3Vdn8^8L#bf#-LpZ+K(Iay2#PJTY#Qgrlq=40u5 zKAZSvw#?sAdE|<_@8v&{hXPmHO*&J}QuX|KPUWWbvqCa5DMEd}eZ`VC&ImrM>De!T zPj_+oWu~543>?3HsXi2b_h8cYBO8w^tIzOUyg>HQf~Pr^PRH)3=bkpoT>QV|Z>K&vQpU7UJKpNY8%~ zd^Lw*!ipNb0|#E!`f;`YZf|uAUhP@ZEI%!I!v=nZH;nB5FCTq;n#~p`GHb$y-01%I zW&AtL9vJg)K3=m$C3MFBH$PglwZF#4)>Lwq_Od^icT1i5s{Ovyuk)u1J9+K9b+jt+ zg1hds|21FB`fe>=U0L;Z@w{%2fcN`S-~Ih?^LzQWqmvVv@7#CZ@p)}VP*u+6H|@XP z=SSr$?=()IbNgm#Kvn#`IX9g)v#_(y_W5#0bYn!&S{OyJ*w z3k$BtoiAq%^XKwdZJ&;U{eSge%yW8`&!@iRnEqA2i>Kqb zs;?&Kw(iZaPh0e#KWyiTDR$kner=h}$HEYP#a`}C^vAP&0!F*GTHHxJC-3yKZhB&B zxUuFYvpIZizJmIO>(&)=_ddv)9)H4d{yIU%1EPPK7TliSVj__t`_hZ~K(4-%yVdN@ z%!yywmK<|kFEmN_gS`Epj8{J_;@1l^9uU3Dl<W9W%l~rtRjG)az3g5uT-U_B|8e5vOTB^+ zW!&=It|`CDAFIFTa;?3-SzUL*)7LK_fBCss|HoPL*Kt~xw-sl$>N_$tI9ahC(2BaD zr?5b}WW(&@hW(e;xpUn(C-_D=@AIMkskO=)?&p?!U)Ok2d96o)VZj7D#sdF8S--D- zDU@QETC{W4>?#GD`u&lbE+(y#*oa&gh7+=1l)|`8nq+@E&GBC7$;cTeS{8;nrh3l`_S${Qrj zGKBwzozE$|Cug<)Wo7%%qkBBKzGOFwI59Lh{bFgTxZbbJP{wVa`dM&N)SF}Vu5-@) z@0c*@VP^7leZiNT4&K~bb?(xZx&Pdr9`oiuQm~U%7uW>5kpsHosT8_A^}Q-Y=QY2W~U$*xf#3vYg!iMm~P)Sk3hx)>T;cBE@%39S_0G5^iEFV^Sk&*hbE^7)||G-U#Nb?2RVEfx=R8Rq1qO83py3`_T3 zna?LN-;OaraeYBZ{pnvHYd16NuI93T9c$~ce@e_Z$zJJK=>>oI zxLyh~D85Y-E{d^wU%&li{T40X6Z6wQ?c!)KxA#?C9<+3y=`)_K=lsM3&d=>DbiVqr zT2_U9eaSANf)js^r=;cY+F!r#slDqv8?kTC51+8OWIX%x&F-@Ku6gU~f+aTj$RueN zI?k9oLHTx3+1J$Byj;iMFKF^({P5+^_A~1DX9oQEw5RjqRI~c8x{Aha^_v$SNC^Mz zZ&TB-Xa3u*SK^QV5i{9(bu<6Tw)2y$Bkj(?GvReQHb-U^v#! zz;IT9p@*N5VU{CUOn8Bfl=c=Go3x2-duhg4_I@mhu`itY7%{Z_fB>`KapVocgN9syXi%Lw1yeAH0)zu3GDh=;Qon$MO|- z9LQvt(7~}cT0!1S{{qi?#s~fa3=1S#8a^sAI2c3P`aS&B3=1UZGC%nBP}#lDX0z|R zH~s%Di+-FqdA4+G&ZLhD3=YOtYzG$W^UI3O|Mqdwo}cA&?xOna zCAtgy+};}M^fMNeojK)FsPJWL-PgS_oZYDn|1TOc>?+%Or0k}L$2_i2&+Ppt)%UAx z`m9t?!PT&yeR)Ltq-*PPtrs_#zfRc5^TB!7JQfqz3+jzm3jetzs5{MDlxlnS*5mnA zXB4;Et%x>w_F~dfr;s&PKe7vJr!oHXc%IL=s70RDdQQo=n5kPby9#&SXa14I_cLk6 zgoXY#7vJm^`_8#jq|##kCDRQNY(G?MnI9ZVU8KQK#%W*rqf+ide$dpKHJ_VBAHRg`Vn~(N?@n!)f61OfM2@i~{hz>-n>X8?K5n>O zf9-#t|FtFUytjiz{-&pHpvYg;-x4sCt4M`GEZuaDcFo}Fl_;vKNT^GEh9og+ybmn>VRrmA}9?EK7oPC=p% zE$X5#{)*6H{xjtl!;jN>zo%D+uAf>FWbg9r&GLK>S7+Dk3yqa0#h)K-oNey^ >N z?}C;~s#A(3j4#@iFa7VMYJ5I=-!*xso2wFTRji0m(~gn{c|J&NIuwQD&aEkMH*T?kRb4A@nVwaX1MQN=1Iy+JA$;bKi zb$gFpc3i&W@P_w$i=9ey@BOKp+*4tekegoRw)Vnh)^{+VXZ_g#Yms-8l(pLA#7r*thN`8FlIvI5TvHGj`YhEn=s{Uq4YOTJX&4yUE zAKYQ{7quVVv~JPrFN-n?*S=fzUofb$c;;#T`xY<1X*^)D)h)Fx`L_GeyG;Ghzf(N# z&bzlY)H=F4(&J#O?~;j|ly{Zi)#JOHxx@W%EkpHe`HP#@zdLQP#FBa5o!LK4w4O__ z9#|Wkbk*Tv_mS1nv(|`j|CJ+qd~)|?`$F^Ic~LESSvq|s{|s7r-sWtGzP|Xr+2lLc zx#s3#H?PFJdZV%IabrNd$pNFjX{FJx_VOrKeYqJ@^h=IOf!U2wKsB_B>4C`Ke>?wZ zy>|04pDl00e!wU5w|e5ya}#HLeJg4jR6PHl>awZd%+1@^t*-EsvH140BHkq7aNxod ze;2tOx45 zIWlkGNDTURvv*13%D;F2UY4l55U=4hZS^a|&Z9;=&;RY3$^JF3+0l@T;bV2zXrITlp*FXoQ*2{i z+Hz|K$Cu?Rmc)HE*v(hB?C9OpK=$q%zHf9{8GhDHSyb}n*sS-h&3#MrU+m*~ydq&k zKL>M?FhgL_(ib8J_J7%B7tPQy{rryCzna(%eBOEa*g2Kz8F#~5>C)Rt|IXj7co^EJ+pZyIBO$Hns4l4i4;RzGZmwlY#%b^=>jrVPXMIBy02oUrm*mF`rDfP-Rl+umQ>Ey#9MjbY7l z29dpLUOy_${<2NE{pjYWq;=``-tT3$#Ag24-F~z5gGR2x%dE`ZCo>rfd~R<&ZqlnJ zT32=IbB~n%;Q*=Wr^UjSq)auc+J5-J43-1FE05QuE@${A^xMB=>e@^q*5^&{IBL}MG<&afLX8iTg4ZgMxlB8J z^`~x^W$frKxNdnN{?K{jm*#8k{+&JT*e+9xHQ($q7bH3UK3Tc8bk4Nbewp9dGq<0p z+IVs6lP1fOD7GKcZHxgv7t4=7+RMC+LE!w<-PS*At|flcsPbFx!KZ?_T}FB9`9df#v6z1`Mr9Rx6w^q=0CiX87BBK?pgD~w7hkGhx+AX>tw~d zV&1KLz3}txvY*>8J+hs=$TVx+zfE?AhxGn$?^D0{J|bIJ-$~YHKF?31+$XPMgRb2@ zBc;duhp(Gq$H(;%riv-z>7?@-x%^_^Qk77jK-Kx^}Va{W&RNvIa$9)f z>%Q`{SN(QhuiqW|;3$v$*X3(VclvBLHm+ovnX$X;m%+)WM;`}A>M;M|?`G%_I{m_cu>6K5F zpyxI|(bXK*jKcHYzjznAEUfs%{f(E(Q{KxfA6e&bwLFT)Lp5-HSM&0F!e!g8|33a$ zTV8k4E19Ud8+Lp+#XL#ov4!u;W2ciOAIz6varosrjae=F`>*+L%_jHln{@o{X}h=y zQ%vT)Q=P$H>wn_4woQrJmn*lqPuyW_ZCzL&x6}R5wVx-Q4~a)@U+w66_x$sci|+8Mj2Pn~&TzK_Y*liTyJymyN5`Eq0CjVHCwlcmqC zsLX!Y!V*-ob$-nHc@|--PV-&LU}Zm-Hcu?X>a)q(>5O$Cos zJj9p*m`%u z<_NYQnqL_Uo-c{G`uASmtdjoot-_*n&g5U-eRNH!c<}sHSHFoyhJO*cx%=Vq=IzDd z8JBi$DA)bES9|dht&GmJ+MNBz9+-tg>(p-^`SV--s`lEvuw(Fe7`Rwu?W)$_`dmHB z+e_L%=+tMM7dY24c(^mDcHQ*fT=%`!>hYdAKmFb)chr2IckV4iL2D?3iW*iAeW+)5da$cbwow=P~fn|aG#=4&6;ZCw%@nD%qw=6k%11)il0 zZ>ClqEZ}KS4ocndyzEEVpX@J(j=s^3yS`g7q51M$$(4KzA3xeHxpA3K`2QrW^78Mj zyRLlO(tqKP^i*2|*)6RMCp=0SJeD)alrsda@lWJfaPO(e>-~`$UVnOCXY#NzPMCO$ zp+e#9+jI-24d42uBl@QYrhF<{xMI`N1;-^1P8VR1T*=#TKltb=LxwfAk0)kniND() z#w*h0_WJPGJa!8whLj~{3`^|RcTX#rp;0R6)|FYp-1G76Yn45hqx6qH-Qw2FaKa;( zA!0pq*^Fsgb0t*HhU(qUpPTh>#)NalZ{OwL`eeD%E_gp1 zWM@u&>EcKo#rO5u_05O(?eCa>XTQXa4eTKIPLL~q_@kvyHz;)Fwo|FUSMEsrFKBdP zqy3V{I}Y9x06UrCWzGKN?}o3JzDl0j{VmvYZNH#VQOn~a${Y;N4q!JQ`5d$J^DTcX zMcc_YYx@%zPhTok-}pWuy5zGI(*dX<8`JrYuiIZI;(b}9zn_i6!+E;E#r=@S@-hOYW~=Ne2fV!91T4o_1qV_%W7&ELolF^Jt^U23l|=gXp}f9E_o zvqo}D_s=fvpEaA^-FN;>mAfO61G4T)y=7>*^Y4gBHcvh;`u_gX#S4temTx)VY}_6H zX=Z0a1<$^@c{M2?ytqBZs+rE+D&*K+`(Vf4l84{cC+XZ^KGAXXsiwdF|DuoA{^zxe zuly49nS<^0=is9s-WjbqeM$M&iN;sIwjHjx5i>vR(dY9sb=Vu0UT*I=I_JxadoOu8 zFSYRR>(-gteQ&?e$F6m}#(XggxEfzSXOvt%XG>l1XB#GmCdAATN6gzSx0Y1ivqB;= zDMo^mTLm_&UY#>((w7(W?&%uyurRQ!JJkC2xK9hqW8V3U|Kw1nMlv2BknUWq^fiyA zqKSdQ_sm~|d2_n2>=u2%$;4n%kdZLuo-aeB0K!?7ZhcNJf}zjn{8YFhJR zWu4&zIVOgPm3P!s)+BUxP2D^}m}lBFFAt;UqYc#{lcLS1c_04HVb{pOkZkn&E`yx{ z!+{wB3}F5t#Rh*6cLVzaVGafZH5LdLCTqzs-+`gQFp>X&x&T9h&kg1eoGc6y!b~78 zil0&Dhh`l#uf#HJ(9B?9$HI`|7RM0dS!!k3IAQnnIseqs?ee8rW`g?So0t+VxJ=(K zWq9c2lN{;zvi%;D=X_oEu*RH~k>OX=+8?5w+BPf%0OV>!>{k;LH`c>Lr+!px2!N{=Y$Um13OH0FdpW37^wLINDYfASC zzunI(ggp}iI2aP1?)Q^i?xMeiZ_l*j$8#BHBF&(!nR0KsdHS{sItLvOstFrLa%@By z_C3JL!mvT;+oHcSI{(>6tl!q)191m<_A=Q>v*rMM1uG-Nu`9-}I>V~AH!^cD7%ZEf z_xdiAo&q^joC*tU?``_|;OLS+Q=>|FrmG#%i7D1Id(>){zj%2O7b63sPU$m?kCLp{ z*XK)`?bDWxGEs2T$j`fJl<6B8J3CE)gMlMv`t84-t2Zo3amp*dZEMagY3C+!{;x*o zgvk@@MXv9xbZcN}X!v^mw7F+M`}S8)d~V)+&ZNk_`Mi{R&i`0MiQLwka$#pHTLVJ_!_*sp z#8!SPuFG5!vAfdAa@K@{CBNlu9OqOpFg7qWIDCCs`02^BKbgs*OIKa-SokCK*1wa? z^S7U@5MU6P(dVPSY-y{JpR9nE$mX@mGwV((vM{hLYh1Y`UH0~i(2Zwq&7Ah%YqC@P znJ-HJ6c`i~{%)L{BAaGj7p3#M?V{0qla!nj2I2brQ>;*o#3Ep0jx<6vC%Cx;@ zmp1)kxxf7s$eIad0+%l4eR1iDFcmp%mc2aoSNv=K%`Y$L9Cl=IaHx9ja^!T`;_9PD z-?=YEXxkKP@G>zlU6MF{@orM2e82X24n_u>2}}zb&#g63U|}eDaK(3H*Ol#}ZY>N9 zd~bwKcXU~qA8rs}IKZgM@QU^29Uf*U28RcmABZ$)b1-n!{J$f%+M_l)(F4S}7R+$| zam>R)lGltx{XIPVx^J|I2bs5PCtv+xKPw^kHd*1#IlN4ZLV4CpMdu89Uqe~Y*+VD4+LG9?I=LMk*tqcteC69K6 zh%Y``l(}QW+v~@V34apR<6a`bAkdH(@w&Wq{_$&e4x5+%H(Qo#lzH>a^;{!076z6D zHbGbaC@++#@|3ci`0e!Xv*#y0`do8g!`X?!fuTyx#Ph~;`H%BDC%6W;@JOVqrQH2F z>CyXtxy5syM9+7BE+)mw#K08ruB@9g^XdVYy#Dz~it;_2QobIKyo;q~p4j-)c(TX8 zxjPJRa4|A8W_((gopP+FDe}e11A4(H#jigXDth_UrgE`x3+Gm`X_t1_wly*|ID{1Z zp8a2-$Xnu+Sy@BpjJg#TUlbL;zvC3{;(OJ+j`6Z0gMz|T`z<+FJ6~M+zxC&a85Z}} zKi;$U|B*J)Rae)fuGpt*ECxz|Yu@jBZ7{F?fkUlSQVvqi2bEk@U&t_UhB|0ZTf6xk zTkZEXpTzSd-ljY{E*oObpOGisl}dBj8`L=%o;|Xkmn_Df<-2NaaWI381H*>0C5I(9p0oWL z`(EtA-rbLX{LyGgq2PL7J&yX5s&isW00NpxmhuuQ?mGzkYF>kAYQyVNK0%hc!+1 z*LTV?a49fIc+S+jx_6&-srvKf+As+N~wo+6*F23>y-+UE^T*pv}Qxc8N*B(I zR_i>TuJe7mpRK`=g+V&AouSD5nX#}~_g?n+9UGRNJM^eU=El^mhyQQMlxoQ4U@+5} zm%efGm!sid)+D}|d{a+tLhaP@kk{7D6AanAvoD*0+LAdZt=J28-7Q>L^Qqg+((}_K z$L;UUUuxz2S4sQokb9eL0w+@guj+G#vMr0J^KOmsSue>^xjpP}Ms~cCpww301F9?x z(p>x4?%Ys|)QDcc;or;CXKD`r>Ru(ah5LXm3xo70<^*@^U4O%4ru>_pA6vdY;`y2d zu7?@!I5KQdv}QQBwOVJ&Lhqs*YG0=@EpXew_LixDoAE%~9fpc4QG0S6+Y*&O?`RqBdN3^n|W2indsSp3-)vwh_y%LBj8+-7+o$kf1F$!OrW z>XxO?p2D~_N|M_-9N1VGq&G1==-I;TaLdZ)uJW{nTW4mo4=ZM&$_I|X?Kg54*dGEfhYWrYp3cuCWhDzJPo_E!`>|1 zzRPZ*3d5rBlP=r$pSb_%tXth(^JR0i8P{I_6J9o>B7Bc!!9A0yB2_d6ZeM6*3$Tg_l$ zS1`MDMbvLSuQ-W+&mV0Se|g~Q!pH19VZT#<+{)UP=>LDq!@s$Q&-Sl~**J&cglgzh zS+#dUr@bC2ALZ*+RTX4-;GM&y@bh!$rC7bh+WXooKWv?<<$K4vR=4(Nb0D|)sy*u4 z90GrSezwh8QhZh3RFg7?<~#zhMWyI!Y-|Rle4#78#xukBgw*!{YG;)S#`AYXSgNNDH& ze=EM?=ES^x`w#L)eXm)l)U5V%&K!mnAD)OV+%sJ!Y4(-(=^MK=+)jszT~e7o`8s1p znf=xu@X>>x{=W3fkEncZ{A^Ra zob{&b>)ZC|9o)30w%Sy2dVJNQj5n5vTYmhhdh)l|x@Ff`Ufx}Aee#R!z6=IwwtUN%htEH~n{)rH!jcCyuiGy6<~6L7Yn*(zuJX)@`2A9! zzA<=Q3*Fq#Rc&GZLR`-BR}YVH+=hM6lMxOYYj87^#u-KT76*!~djh>HujxV64c0_{Or81@7W%na!aa=t!URrS)o0vdMs>GefI=}UC&E>P(Op! zq2qJ>y5GJU_qhC}m!3axBItB&^bEF!Nnck_6k}l9z1(u$Pg$q7NM^M~PlYD^Q*mPG zx~bUE{rHvPmJPMLea(-HABxe@xKUTxqY=4Z>eF|Inpb}}w}|{P$?cI#ZV4+kwk~MD zDcA71f8TySZr5`szI?1b;``iOZSv7=HfADg<9UOP$MU>g~&CK;P z-ZEP7H-v7fu>AYyz{}f5?y^Zt$%>YfK6P!q)2gjzR}>ps%k%`M{8Ml;-kZ++UAoz} z_dCP3%a5*p3H&9pN8!5q!=(%fJJ}cH{MC~9By%9`*Ti_`z5g5Q-wA)QW$T;4+7PUn z)o?0cQ)}Y zFI(aq+B*O1k#O7lKeGO6vM;?A@chPH8HS6G=T8>(o_lSjYl6kCcZ?IZx9|p3eG@e- zUnqZIiHTx=n9%d{e2Mjvb2ojhe!re&WnJsXqR@rx4i8^$mxx=|AHUF?X^p4pl{&5$ zUXK|vte>&mEO_df_#*LoXyoU3p{~zOU0FIxi#i}>^F?=|GwCb%XMB*ON_n5mszvL8RI2b8gBD$yR%-_ zPi~#eBp;8(JN+l`yL|H8oHV0jN3ZS(Vo+I~KWX~w@3)rSP7?jX`1t9n;H76IClz_U z;`p$B+LrUBzaC6;eU|n@nB~$6eumfIUcLIU_tC?j-u_3QWZjr-_vO{?s?B}(bKPjgMDN`(o?H{ZDg4I8mEAh|XIIuv znR7Gl^ImEF&F@8I|4jSE&@o+0O#C4GZT$=NHd1O=m3g*j+uEKFU&+j#=BfBlxO(Ez z-bJ316+Tbq{*osu(eaC6hkmGz-n!|23vClNsLYot@mnKRzoyvQ$hbGx{PpzJC!gM~ znJ|AsI=}y&nyX)4nft%Et7RbYm9fBiRm7LA@wvjfizRhVPOqD(7}hE-z1m#ie6AOFg&2;8upiiI znRIoctGRSO-@<-YZ`plQ4sNPZ-PO6{_@u|`_wU?gI56cFgU1_{I^G%CCe7O>#5mh8 zy1FTC&Hm+=&z)6!o;fvr@4|OX3==$48J3iYtGT?~n_jh6f2F9yTzH+nMUUtpdJb?!OifW+^4< zUGlbm(#K!d3f9%0Guz_5g*Dy$`PJQ;3~>RK#sTlXUVVADz*F|zla!0IRJD(0E!m&* zzh%#^m!Y>hU%vM(%lK5v(Xj2xJwBO@d#vtW-(y%P(tONjn$`8}50=fTKTmmYKDwMo zHfPsdPZp*hQ(o~ouG$vuxO(Qh^_;uvzkHae9KP7LL}rKEp6wkzDfRiid%jjby&IgA ze&DzD+QYhz56Z8Ub6#`hX_#T#8*|R^_jG0P7kN&C{b8Lq8!=-b89AiZ}D^Hv*OuU&gzctT1N&bWZcnkff6s@kfI6dHJ5 zF(0V<^m^iH$#)k|w`unOZSy*PV(~7|d+Y9dKW*b(K6U5!z~ngL47+Lg^(6Wo=^N;feRGrayoyYKG{r%{_%kM6{dh#UOp30AZt|%Wr!eCOz zuDyWyD`Uc5z8i0qor*75rxjK2iMx=q-(gzHy8F=&o7p&HsrCz*k1zgdk`^Z&-Zwl!)D`~FPo{m$9_%}e%YvHa3yQoq99 zutxQbP@PS@jz(*T82hD9*WPda@a*)_U(%0R5A3O2c|C5A))D!AOIXyeusclnBKWwB z|AEchXa0E%86O;Vi~ruM_U3BfcIW+3G2y}T7tY}yd08zM+c9`-c+Rju{=h^174cKI zo5a^I7WgRVw&`XAql4b1*Q>Ym*nf!UVRHC&^-mul1Eex64VdPiDCLSe)mKdNso%#fsASHJ;nQF0U;WOyASqGJmg|0Khsm@n`7+$+)mnVGwsQ`_|`4&^@45A|GF!& zTTs5_jw|zmZTaWEHr!7XW5}DcLsjH{4EMXck8iHNyi9e^#XzINSOlX&?bqG{C(dG~(q&ir^~-twap^HzJD zdT{n!`jr;~4&Q!-dRVh7C^Mv;SJN~sZtprQb#MLzw>?}6_fPNV2tD)cEN_^^dmYsm z9XI6~W|#kyd#IkXc*|eGUlX@~txD`ao$T@O*WN`B1RN$jt$(|Op(EvP-s7F+rF zw2aRW_P&q5Bl^?2N}p9)p5?&HjD<7imFes4O}w^e`QGDCH!d#u8|TT*uv7gjpLeLr z>#`KL@AdB{@0;w*nYnG_qNgeAQ*W&o{=>G}nc@0hMi)-|gD?Gm3d{ehJoIzUEg7a0 z@%y<>ePdYjT-77*ZN98UGeOe4#pc;vvd@H&HnY} zLeb0oox30HTmQK@e&x5*$!`CCUHy>7uMqS*Z`TVxhY7m>j%=P^k!P?ZS%9JPg`L^X zx38{$ajU#-UBF-a{b|WP%k!2ilm6Il{quG8!W{kw&oVcDx+r*{_@#f;4mbU-YY!MW z{)ja*Wa!kbn789&%jNq~FVb>vGaTi97+-$x{qz2yubY0URc^0STRqt{d`gJvg*B2d zGZ=2nYgdr_FJhE1oppgY8{>skDP8&cCx4hGSN!_gkUPCvTX)WVrs}L+5m)us?emOV z8!ws)_UaCv-(@KUjo(-ktXV%u>-OBpReaIv$Y66n&2;TF@&A`@<{y2{?6ti2ud{uB zw)NY&kKBqs+APZ4@=L68YhCFcP6qim3>~slZ+@#k@^w+Zz=p(+y%);sW0zdr(S6^t za!ve>lTL>&?Qe@x`NQH{wr#>;-F01G4UX}Dn6$fYstD_Wv&KnBzeOBhx%rTP=a=No z*2gn%M*Y6pbU#6m;b*zYK8M#&cej_HFDaS3^o8hc@#^yD9IpFk%@qHb@I~Zh&>_af z5+)u$f6bgI%CLLMDR#z!={Meg%3mD6#m#Q<->ifA20PW3JZaRMol(2^d`qHiQOb|h zt=dl<_k3-fKmWK;(C5`Y>-U>w|FSJq_%mBi=hotqzdRbZm^*|{bG5d{eo3`ncl4?5 z#XXNNN11q8F?iYkQ+%D#*v`@{YbM_M^!AQd!G-D%g1+-dZ^?hQ;ez=!uJ=E}j~-lV z+`1uR`oo*`hOfi^XvH$6R23%$PUYQMd(|xF%Hdz{?Khl#{mUtB<{pj)wUqw~RTG(Z zmS+Dy@%>m<(R97NtV(~SI&REwSu~UXoArVE4ZF0qjHm{pG&dMtp$^L*5_lFw@_@ z;?Ma0-`^{t*pQZUKcFwM_|k>^kW2gx%hZG>WpA6kv(f&H9ykBXOHUsx+WIA0{o|R* zclE{0JpSzc`6FogGF_D=7dQ3DUa}F{{(ph^?d|;uSEums7Vocfn{tP5PxLCgeLg3; z|HhwoJ6F5U=f`5x8}U80n_u+So3A-MU7ho6%ny~{Qyb)yE8{)3W?kmXy<7VwPw@Cj z)AEu%n^L)DPuXuOU&j5H+phNQ$yvSeS2rxy`u;lI<>b->*BEyA6!}+9XLDb<^k6q< zXWd(a-|UO+zn|Hk87_NtyU?PtB<^Rc8TKFhcFZ8yH2wRm>z2m#Cr`Gst~NPe(iAY^ ztI+1H^NS7d9{r{6o3t%0wVmM_gM#b!Wp{Z@3L~`?)z$bDZz!x*j6Jb%?b(*b>b3mB zM&FXZWi#x5Hrd*F^Y?deyRS-={q4*1tYw_Ayw2PHY2*qsTWO1b&gzUSgP!-k_V}%- zdv>;4jG|@Q{jJRtb`tFt9%gTErfjS01?5A0s%F&?*VxW80ONB*)IV?_%? zg7de%43`8C1Rs@AdpCL2B%Np$1!j;D<;-2S3@JAl4Whp@e7Iou!IXtTx`OD1vegTG@C39K6h%lUIx!l}hv0F1- zt?TM`Rg(b|%5P8BeVmu}=G#$cC%!+SN3DK6Hi$BdYy8i*fP2r!8yYE--ZAfao_TCf z{Dt=7lE2P1EDonq$X-q=Sd$N%`6Vii{yrn~kw+XF79hKbj> zkG#6~@7BC$XZB^?dmhf&*||{psohJNHHD`cVw@QaE?GQh-Wd17kb&dnr)$%e9$&x2 zZOYn6jDb2`BOaU@6FBYU)&L5m?^-()4OLwN0?@A{lTra599?Hbp93;v#%AB%I~_eQ|b*6+QS%Q%6N@j%G6sqfD(Dotu%yx93m9#4Zi2gA0eeXBn$ym9n= zxV4zw>hfd;8%Kr>*Y^7TPTpb{^R#(krOnwlXWB0IJvMxGo8(C)e#|}C{nFI2oPF9MU;Bg%4hCJDjUP6zpLXG$olTh_ z#{zAZ2D4M=q-{&z*#;->z0LSQjLAXURo(Z~yVkqAH|KJI=DVo6n|$CVVX40}e$+3c hVLG%HE&P>Ve|6`?`|ElV7#J8BJYD@<);T3K0RV$F5N!Ye literal 13076 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 diff --git a/test/screenshotter/ss_data.yaml b/test/screenshotter/ss_data.yaml index 3e6ce889..c5ebb093 100644 --- a/test/screenshotter/ss_data.yaml +++ b/test/screenshotter/ss_data.yaml @@ -116,7 +116,8 @@ ExtensibleArrows: | FractionTest: | \begin{array}{l} \dfrac{a}{b}\frac{a}{b}\tfrac{a}{b}\;-\dfrac12\;1\tfrac12\;{1 \atop 2}\; \cfrac{1}{1+\cfrac{1}{x}} \\[2.5em] - {a \brace b} \; {a \brack b} + {a \brace b} \; {a \brack b} \; \genfrac \{ ]{0.8pt}{0}{a}{b} + \; {a \above1.0pt b} \end{array} Functions: \sin\cos\tan\ln\log Gathered: |