From 9c5e6aeedc8fe8653e9e050d5dfefc969f0d8e8c Mon Sep 17 00:00:00 2001 From: John MacFarlane Date: Mon, 18 Dec 2023 09:54:14 -0800 Subject: [PATCH] Docx writer: fix validation error. The elements in pPr in lists were not properly ordered. This doesn't seem to cause problems for Word, but it makes validation fail and may pose problems for other consumers of docx. Closes #9265. --- src/Text/Pandoc/Writers/Docx.hs | 2 +- test/docx/golden/lists.docx | Bin 10199 -> 10199 bytes test/docx/golden/lists_div_bullets.docx | Bin 9847 -> 9849 bytes test/docx/golden/lists_multiple_initial.docx | Bin 10076 -> 10077 bytes 4 files changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Text/Pandoc/Writers/Docx.hs b/src/Text/Pandoc/Writers/Docx.hs index e89ec4801..b0d902403 100644 --- a/src/Text/Pandoc/Writers/Docx.hs +++ b/src/Text/Pandoc/Writers/Docx.hs @@ -1246,7 +1246,7 @@ getParaProps displayMathPara = do let listPr = [mknode "w:numPr" [] [ mknode "w:ilvl" [("w:val",tshow listLevel)] () , mknode "w:numId" [("w:val",tshow numid')] () ] | listLevel >= 0 && not displayMathPara] - return $ case listPr ++ squashProps props of + return $ case squashProps (EnvProps Nothing listPr <> props) of [] -> [] ps -> [mknode "w:pPr" [] ps] diff --git a/test/docx/golden/lists.docx b/test/docx/golden/lists.docx index d4d95b0a3d872634a3dc0c5055fbaecc2ffc3dea..a92c1d47028ffb35b9482e2a4d47b0dcc23f56b6 100644 GIT binary patch delta 1170 zcmccaf8C!az?+#xgn@~JgCVJJBhMyArlh{j2N?MnIg|P(g^Mf94SPBHI+J{T-W&sg zWAR5n)rwEs64-j^*@WDy_mnQ$HHfzz<^2|s%zXCt^*`RTR@_#~=C3~3@cj3)^y&>e zcmH21b&WBy)9Uf=+%u9dn7mi|OaA}(_w+O2{rB&G&Fpkt?O^@v@mAm8J=f38H0jC- zY!)i(X4~?9^@J$}|0enc_J>FvVp{XHY*lCdB#V8$QzpzhZK6-Liotmp~{8z{{N&lL! zUssB88RgXn9&~Fi4ak$qoEyI&kKPv32EPgi4e zmaItD4mO_a$r8uj@wf@KD6V6CRB@Aa=gz)e9EW#Q#MW>eUQy4<^jz7J`I8~Xl0(z< zP7AUZK6yJ)((#eYp)1z|Ga8-`x%kb!=&)i zwTIGJ7#SEge`GNNC5_3dY|B6?6AXY4+!D ztrM@loVH(JQCXQ^MBpTzH6>oR&(5h?Gwo-O&a9{^z1W8B4{TVj2yDKRraZmQZ(GN_ zV5z5KJsqw^H&oWe8ZZS*nqA@EDJ;DpG}11BSz}7QgJb`JJN+(2PFj{qfBiG68zzZF z86+46g&97Zo#*V2z3leWs{%0Lxl&VOHfsY@z7*FRYedd5Xh;YoTn-W;`FJ? zFqH{So+u>R0yw07n(~9RL6T delta 1166 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 Cimo^S diff --git a/test/docx/golden/lists_multiple_initial.docx b/test/docx/golden/lists_multiple_initial.docx index e374a5b6476ee458a9a1f9288ca7916f14f2c88d..c13bdc3bf459b1c5cad244b493b921f59944e8fe 100644 GIT binary patch delta 1211 zcmccPch`?6z?+#xgn@~JgCVJJBhMyArlh{j2N?MnIg|P(g=gK9%#E6Sok_0#w%=g` zp0@aFeaXwF&DpyPYp!}6r3^tW$crtqq81+zBIj_9qg-}YFoe0I3% zyx8`P&HK2Q7_144`Mu<7w!2fG)_dK9H#T-@znXTe z=F8k%#NqJR&rpy&*F76GSX4Efq=V!@U zwuxyIdV3~)c~hhFC~exZ$o>8PffYWD$@|JZ?OD@>A6#Xzm{9j}J!@g^O&fQy9gi;* zY|-m|Ic4AV|FM$QT=%DaOjh3UYpr0+|9-(U+R0fgea8EnCtAet*3{)(&qt1c%@Hg% zpct4ujdd9)BJ9{MFo9?R&aWIGnq9~R96`RqY>XVB2wE~l-gR=ch(dkdAp?Pyc-2p~ zg)%PPYXtb#T5Jtk8npG**-hdbI_gvMr7M2VVsV%^-sr|lP5R95B} z5jcrwO^Mg-vvX?JO#9iRGb^e}FScR(0~?kr0-LX-DNnES+tx8JSn8=*Pls#K4V87V z228<{W>>g(3QI2tjkF73)|lc@@7RCfPQOc$la{5@U;m8ihDjn(1__2iVFpznl~{!H z&AyznUw*OTL&4=LG57CwuP)vwjlJkwm3`{`i|emXSKDW;%XLXqovpRCMG)v68rU zoBARq1_mVs1_mJpWMDjbvx;I2NX?A1ud_~ZFfc3#W?Hu_$-q#aUzDO>TvC~n zTC7)*n-k#82s93sO(%u#VGzy~V`O0PW=6N*&twBtMX)2}^O%Ki0u3$%>J&t=z-e-U zssdOIDEY_$&2h(2<28A`sshMo7gc2#r%rySDi7lDtI05`Pu5XW0&xO>oClM0)l|Sn zz?+#xgn@~JgF&BdBhMyACVjTe2N?Mnh4k4bg`eA9v^A2Efnh!?1A`#L z}jlH z*85z)m5;YxIHP-zOZb|W!`Yf2N0r|)cy}LYEoNLU8oRXqrR-H7DWk+MrV=Z(P9Dwk zQgEt~RkRRqax#>ERkn4D-lYW!yt8VYbhkX=;M3awV8Q2!Ml)Yr{P*NymS}10w77%s z%yp|aWNT?pEEV5&-OH|7U{6i+^G{aR%^$aZ-Ca2G3;Rokrz^LYNqoB@efh;l=T%{< zvGOO5c|8I%Q6q|-^J-=5-IbD!=zkR{Y)&;Bc9bZZs z^BmrKBDO=DD=E;Tajn8^t_9)09RHVR%1E5^ejLP|_iqvF_Wz4nKVRB$g-LzK{l_jc z>)HNRnlHolKm(qwFAuPwI^T{U?4o4PiZZgPAp^IMh4#AGqW1Qsks%sra}21zW=; z5i5fP!%LeqULNfh@Y!?IK%;(++v9_WeP2h;x$}F4dh-46uJQcWrtDubU;ljm;T1c# z3ARpkxaH>ACuN->T@|@(Dv!d2*1~G7OS$hJT-d!JDQMlQ%Pxz>L#9poVE8@q=L-4x zVcwU*)~x!x>D1|)UFwE)-w$MeE46vH>OYgoOV8`SxWzzanufCJcA zd^;#W--vs$foKc45>P--UZ-#d#H~?04OZo;Y!4FcQa0y=XN<|Gl+ENpywbIY(pZ4m zWHSo`gA4;Q@R=;Hq7BmMqawrDH91p72dp7+?KbsAObiT43JeTF$m$u4CT~$ui~$)s zN`=dl-Z>#egpI zW=6N*_hds=MX)2}^O%Ki0u3$%>J&t=z;SY+ssdOIC{@V-&2h(2<2iW)R1IT_pIZu0 z%@v>;0TgqlOn$E_5AwZ$nhc}bWL-5S5GN4Gxj#8iO$BU2-qM@%K&Cf>ix_0>+LJe` zL0r))6LM}2Q0h1kiy$juSUCBEnljj&>N_4*vw^PI2Miq4AkCj_q^`