From f1c02226ccada3da62fef0aa91f7bbb4ab10a7cb Mon Sep 17 00:00:00 2001 From: Erik Demaine Date: Sun, 15 Jan 2017 16:17:45 -0500 Subject: [PATCH] Change cell style to 'text' in {array}, {matrix}, {cases}. Add {darray} and {dcases}. (#606) * Change cell style to 'text' in {array}, {matrix}, {cases}. * Add {darray} and {dcases} which use display style for their cells. * Add ArrayMode test with \frac's inside {array} in display mode. --- src/environments.js | 43 ++++++++++++++---- .../screenshotter/images/ArrayMode-chrome.png | Bin 0 -> 23625 bytes .../images/ArrayMode-firefox.png | Bin 0 -> 16829 bytes test/screenshotter/ss_data.yaml | 11 ++++- 4 files changed, 44 insertions(+), 10 deletions(-) create mode 100644 test/screenshotter/images/ArrayMode-chrome.png create mode 100644 test/screenshotter/images/ArrayMode-firefox.png diff --git a/src/environments.js b/src/environments.js index c2579158..0a0a6265 100644 --- a/src/environments.js +++ b/src/environments.js @@ -8,15 +8,23 @@ const ParseNode = parseData.ParseNode; /** * Parse the body of the environment, with rows delimited by \\ and * columns delimited by &, and create a nested list in row-major order - * with one group per cell. + * with one group per cell. If given an optional argument style + * ("text", "display", etc.), then each cell is cast into that style. */ -function parseArray(parser, result) { +function parseArray(parser, result, style) { let row = []; const body = [row]; const rowGaps = []; while (true) { - const cell = parser.parseExpression(false, null); - row.push(new ParseNode("ordgroup", cell, parser.mode)); + let cell = parser.parseExpression(false, null); + cell = new ParseNode("ordgroup", cell, parser.mode); + if (style) { + cell = new ParseNode("styling", { + style: style, + value: [cell], + }, parser.mode); + } + row.push(cell); const next = parser.nextToken.text; if (next === "&") { parser.consume(); @@ -82,9 +90,21 @@ function defineEnvironment(names, props, handler) { } } +// Decides on a style for cells in an array according to whether the given +// environment name starts with the letter 'd'. +function dCellStyle(envName) { + if (envName.substr(0, 1) === "d") { + return "display"; + } else { + return "text"; + } +} + // Arrays are part of LaTeX, defined in lttab.dtx so its documentation // is part of the source2e.pdf file of LaTeX2e source documentation. -defineEnvironment("array", { +// {darray} is an {array} environment where cells are set in \displaystyle, +// as defined in nccmath.sty. +defineEnvironment(["array", "darray"], { numArgs: 1, }, function(context, args) { let colalign = args[0]; @@ -111,7 +131,7 @@ defineEnvironment("array", { cols: cols, hskipBeforeAndAfter: true, // \@preamble in lttab.dtx }; - res = parseArray(context.parser, res); + res = parseArray(context.parser, res, dCellStyle(context.envName)); return res; }); @@ -138,7 +158,7 @@ defineEnvironment([ type: "array", hskipBeforeAndAfter: false, // \hskip -\arraycolsep in amsmath }; - res = parseArray(context.parser, res); + res = parseArray(context.parser, res, dCellStyle(context.envName)); if (delimiters) { res = new ParseNode("leftright", { body: [res], @@ -152,7 +172,12 @@ defineEnvironment([ // A cases environment (in amsmath.sty) is almost equivalent to // \def\arraystretch{1.2}% // \left\{\begin{array}{@{}l@{\quad}l@{}} … \end{array}\right. -defineEnvironment("cases", { +// {dcases} is a {cases} environment where cells are set in \displaystyle, +// as defined in mathtools.sty. +defineEnvironment([ + "cases", + "dcases", +], { }, function(context) { let res = { type: "array", @@ -173,7 +198,7 @@ defineEnvironment("cases", { postgap: 0, }], }; - res = parseArray(context.parser, res); + res = parseArray(context.parser, res, dCellStyle(context.envName)); res = new ParseNode("leftright", { body: [res], left: "\\{", diff --git a/test/screenshotter/images/ArrayMode-chrome.png b/test/screenshotter/images/ArrayMode-chrome.png new file mode 100644 index 0000000000000000000000000000000000000000..16b10fa5131a735cbdf12d063db27a51e96ad79d GIT binary patch literal 23625 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 literal 0 HcmV?d00001 diff --git a/test/screenshotter/images/ArrayMode-firefox.png b/test/screenshotter/images/ArrayMode-firefox.png new file mode 100644 index 0000000000000000000000000000000000000000..65aaf66f19668d2cc8de0d91f497bde13cfc686b GIT binary patch literal 16829 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 z zyyKTpMb>N&kQ&ZKx4$Z>_#KGl~Q%{9vRsLZ{v=n6-}i?45%FPZ*t@e1$jeKE{_4NNZE z-~U<_=WD$GU*Xe_caP`u#!T52&*%{HM6Q6zflq%h?CcC0}w!B~J{vY_n)mI!{911T>27L3;x zPi3&FyO{a>+`Z+uxOf|rbsYCQWT`NG^!!(!JoWu*GZ%BvV36SiDb53zQrycbVz#Qz z0`({Q8n1XTxGj@QHD9&O#Tcf>;rx_pxv<>MG|=EzvVy5lgZ|Pxo0t9F;|JHXZ}u0z zlX_RDWweR*-HiBr;eP1t1yZuiDi@8q0nfCaHqB~ZtecB`IbR6WM zd-s31%~0LG+RWL$r~J&qU}4?+Exl1LixL$|g&5wy__ehEeL!wY-;8%NT35E;w_ml* z#qbwvkTxU3w4y>UhPnl}gf1{~FbJGC4`M1P{$1G^qQKx_bKjryK=UeHM%@MmhL3w< z=lu9r|8YT%VFX zu0A_i^`I%)O(mSyCU~o&(nSMMqbplD){HTS>9q%KqJys7VT zsI-y*I6_|RsN5uG@o+}1^B=2ui>{xmgeY#{pKPl#*UbMKletXsf?fQw^_S(YrggYL z;^`UV8Ox)^p|cmtud{eIBa7K(F*u6W7ruQYdOK8lp>jcw>I-p?wJZz_3gV=$H$0%S zX1>0PGzWu0+tzsfcO}o9SFPQ^&B0*M+RpXo=9kMMw-ZGL7!o*c?^Y4N@^fyMcMcO1 z1JA?hD@DJq3&`#Cbzo>v{4;+FLrvsXRWn9LhPDs&!Au36P<4ski9rk>tQ}e$7#cLs z_}2VCZ@uc4!0ZMFhU6cv{)-l^EM0YW0~ZH_LHn_@_4n4_Vmp1olfiEP?=^Cw<`H|W za{@rw030jNlmEEynYVrwa`rj&#QR<&Y_UWM&k{E#1Cy`T@2##*%V3j9=Coo9Qf9Q! zdn)(m+-%UmA%w5`bl&oi=tYvCKm)~Jg4-o)TfP-YS?<8Q$wKc|2Ih9;!SWo#`{w$@ zb3dEh&b#jd4SlpVUh!nGdH?qQ+STE?&C@{2Vimp$F)%cQ(0Q5X7QqHxK|7IaEq}qq_jq@3O+N4X-0-{2qH9vU4aqu=;4%2GruKK|*w{4h ze6G0^Ztp&ZD{E)jtogq({mzFY6SvvfMmU9R2;Sx!1u`zMaf&X(M_2WLNp{_RTmRLl z{(i72hSkRQ-xB>fn?Do>e$xaEkQ`>xjAY>JQF~=s`%*satWEFFhfRBR?fWkb-I26oyJot-z5G_t?o)AUicT%W9>rs?_A0?ze6=Cz)EV+dpkZ`Q!OFoJD$tk{4)! z#=!I@1i`z{v%D|a+sC-NYVUb-kVg(0eXf=fKhgzUx>F1XhxxVe# zvi|3uk4{?AvtR#uJtKZv)zUk*+dDS}a)MUWiF?ds`ViO?uJe}F!_@k3<>km4q0oIZ zU;lEx8}ToE@4`3tg}-rZ2Cu%8kN~OG{{Qt^_F2yC8!s;`+ngn}t@;1j+dndIU;p2i zs-OAAtY5MqweR{0HYUizK23)5qW2-o_KN(}_P;UDW~O_xQ1((AZ~yJJf4@h*)7q%E z3bb5_nOQTK0kqO$pP}wU=6Ca+{L%m|PIz;escQY(*FSZ-UbjYpea6GHF4F+e6wVBBkEN3v?>%`p^IZS6X(4yc z&9F{S`?_^*+m^Y%RpSko6?VPw7HtzTx$#c!$mpUi)o z{oB|YG?2dlw9b~f+wF6_Wwr0kLw?gfbHzWc>{VY<-JZ6!_NBYj+iri@`pUO}mB%K&S?n#ffr^XpxP$5lP&{kr+)=H}y{&lsl_&lAmnEb%p* z@QGzX+tqbn?mqjRYq&2+tMr%7`Pb+3Fgkd>R@g^q^hu7S_O*v&s~sr)%D;P`T{`@%aDSAk|Xz{Aoj?}#cJPkJP( zvod?y){9Y}#p4dmM;=Olz+be-QaO{^f7Q83`%PlxP8v-B`Kex+Uo*M*+B^hw5rp>YQoib51)N*X6{JJ zwhB0~_>QgEyDHY>5ltH#rz9L=pv!C4SB__q(yZ0GoLB^_snKiS`9E8~ou(B7Q)^9xh-?j)M@64>}&A>PRw3fxAM&9-LbIw2a_*%d7ulJ>n&!Jbv zxr}^uLB5mn$kb+%eO4?xY0BA^+5ekL?q&V#I;sRpJH``)#93=IUv=)w*IQ$G;i7l= z2SZVJSBa&}pjedf*eTs?l2coq{(EPXar4gSpH}o<X^1aAyaZE@Aw2tvd4b$h-QtPLkd|YvLTLx%q>=bAnC-5|H8Sw1`Q zmbtsyw?;pF+V_1|SEqcCwVZyTGN)p?T=F&7?3qO(>_O#>3}zQTl-76o{M5d=`O37P zk>~PH%u8*XznDQ;elZIZ!;#GjmY(bCuc_btk$F;Q^JcM4b~6`ObaM#Ds&+6;Sm^T3 z#`}-bKl{eb!R4oReLSkYQbs*h_eu3io#NIT5=_m?%#0lZSHE)iWE`(JzVzLffNe7S zGmX?a)t?q+|TD{rEht?@oaW+?O)5^ z@f9BnQp6bfSQr?1Zx|(eWO~l;7L%V;6VJiGa0)t5{+;c`-z9gf+r=Apg-&k&YX7xI zdY*+)qh;4S1t!k0*)Jt-a|%tBG?}@cXU8v>MNO%Xe6pK2FbTw$IK8?))2_Q^&pg3; zc0rE~w|tJ@@LR9~X~_JT%a;}ruY=KD^_%9eCxDeju!M|ShskS zudn*nr9OKWz3b}Q-^`&Bk-IE8M?E4$>c=7ld&sU4?PEL4I8_;5cZ4mOtCzSD9B#i$&l3OplM~R=MxUBDBWrvf(yi z6D?S~i1R?OQqE~73C15M@9@8ZqB)^j7zHe5KR3moZidv+T4A zzp-5SI``XWS9b}fz9kEsOr zz3_v~`u9&byrv+c`oId4IFHmz-#PfT8Q8^o^-`z4F>Teqwr|e$@2fPl|Mxqzu4h423Pr3=Dcd%C8p*M0MezWNb1W*&YRI%fVOJL_Y)KqJfQvn4%m zTROd9+e<5}taMH8_~L-_*BNRI$HhU+XH?6>rsi zLZoI-6Z|sssi(>chLG*sO6KJM-TY_6M)kEm%j8}k6iVOJynVOO)bfPAhcA>{{5kH~ zT9VnGB`Wu^j`bPJPu0yV=5R-me1Cv4f^(1I(rtr_r z=PN_@oyjbm`^CBkGXA}UyP;x#%bwOltSi>KIXyTk5Wv9pdDmU=T7WALJ=1Nx|IAus z-7`s#;n82APhwo+3${sdHi|nNFy3%l`+6IApjdBVnNnF(GAga$Tb#X z((g!M+A!n#T8+)}#lrrxuNytTU-9a{#;)cPMuGR!Cu|Sc$*}dT2ge?TCe8yPaorOo zJq!2kt-c<1S)#&yv&MmG=O*59+{MuG-TOwgMoh!4G!>ROfrBg!_Qx-rmGqRZ2r6AY z=l``+hI3Mvm&pCH`2G9)Z1xgO*`Ep0&hm%v9dt+5s+76Ti$jeex$>z|z00nNOH1xw zG)ms1?)@+E)tdT(jbbthstK1wQd{g2Tq;u|(e&))l#Gn^t(J z&tQl-^?J9RZL0o%*)Q*wUH%s4;gtHjlkZJWD7%QHVO-(6Xne7^c# z{fFi!*5_l@m&Z-sce2XuaEF}NoZRJR=Kh?e?J7PDdYmD94|II@R_P1e#IW_Mi;$=& z%UoWI#?Tbx(ec0YA4mND;e{~nJ?*3*UHoGA3WHLjC0@Hf))V^ zi|=Q>S)CqQdEN1{(ex!UH@3VvSlgMtXl<|H{YK+eKYM4n9Qm!fBw0k)A=kEX@ucev z0*)=WC6*+c0|Oz!rHTpP@tH3dezlWgjo>f9Ct|#Qr%O)W5SHlyLkK zD)^Mkc~88E9>}Qs3<8E4f(?6J=1z{ieco?b@H1Y`^}WBu_N`*k+^e*aiI@qUt5mG%F?Cr7&-_r!kI;d4h#$d{_~g}7O^uiG!$7GFsLLcFfeGiUpg?utbu`Hfs7|} z@+}6CoCE!>Wk}25Qm*3=AR4i3vVtbROm!wQh9(_~;gThM^J!&;B#ty!bu# U$hDt3pmP~KUHx3vIVCg!0CK?5IsgCw literal 0 HcmV?d00001 diff --git a/test/screenshotter/ss_data.yaml b/test/screenshotter/ss_data.yaml index 1b986633..bef0d7b3 100644 --- a/test/screenshotter/ss_data.yaml +++ b/test/screenshotter/ss_data.yaml @@ -23,11 +23,20 @@ Arrays: | 1+1&2+1&3+1\cr1\over2&\scriptstyle 1/2&\frac12\\[1ex] \begin{pmatrix}x\\y\end{pmatrix}&0&\begin{vmatrix}a&b\\c&d\end{vmatrix} \end{array}\right] +ArrayMode: + tex: | + \begin{matrix} + \frac{\partial^2 f}{\partial x_1^2} & \frac{\partial^2 f}{\partial x_1\,\partial x_2} & \cdots & \frac{\partial^2 f}{\partial x_1\,\partial x_n} \\ + \frac{\partial^2 f}{\partial x_2\,\partial x_1} & \frac{\partial^2 f}{\partial x_2^2} & \cdots & \frac{\partial^2 f}{\partial x_2\,\partial x_n} \\ + \vdots & \vdots & \ddots & \vdots \\ + \frac{\partial^2 f}{\partial x_n\,\partial x_1} & \frac{\partial^2 f}{\partial x_n\,\partial x_2} & \cdots & \frac{\partial^2 f}{\partial x_n^2} + \end{matrix} + display: 1 ArrayType: 1\begin{array}{c}2\\3\end{array}4 Baseline: a+b-c\cdot d/e BasicTest: a BinCancellation: | - \begin{array}{ccc} + \begin{array}{cccc} +1 & 1+ & 1+1 & (,) \\ 1++1 & 3\times) & 1+, & \left(,\right) \end{array}