From 72020f17738e5fd3c47d479a80a2de698980e4c6 Mon Sep 17 00:00:00 2001 From: John MacFarlane <fiddlosopher@gmail.com> Date: Sat, 30 Mar 2013 22:09:24 -0700 Subject: [PATCH] Docx writer: Use Compact style for Plain block elements. This differentiates between tight and loose lists. Closes #775. --- README | 2 +- data/reference.docx | Bin 9757 -> 9782 bytes src/Text/Pandoc/Writers/Docx.hs | 10 ++++++++-- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/README b/README index 10c3571f4..7efc00e26 100644 --- a/README +++ b/README @@ -485,7 +485,7 @@ Options affecting specific writers for a file `reference.docx` in the user data directory (see `--data-dir`). If this is not found either, sensible defaults will be used. The following styles are used by pandoc: [paragraph] - Normal, Title, Authors, Date, Heading 1, Heading 2, Heading 3, + Normal, Compact, Title, Authors, Date, Heading 1, Heading 2, Heading 3, Heading 4, Heading 5, Block Quote, Definition Term, Definition, Body Text, Table Caption, Image Caption; [character] Default Paragraph Font, Body Text Char, Verbatim Char, Footnote Ref, diff --git a/data/reference.docx b/data/reference.docx index b1d0ab15dc3c22d7fa08a2f7ba903c72ee57bb42..42c14a9060df7d05691e26f490334880be90a65e 100644 GIT binary patch delta 1354 zcmV-Q1-1H}Otwt0n-hQKuzo@v1lpd!1ONcpBLDyo02}~!Z*pWWb98xZWpgfgZERIk z2>=6q#8**$#8**ucnbgl1oZ&`00a~O008Y-QFG!p5Ps)Zc>JCN14$_pazjWn$xM39 z71BNnTVP#m$(7^~?$>uE+h7^n5JHnC!yDRNulD=&c_rlYug`yBU_D_j2%`hr`O>m2 zOkL&?Iv?1voSpP+OGrdL6flYh_7V&G>qX;y(HC+VU}3@YRP_14_N9#a&8BdD93t_B zMVNwb#(0P%4EemtW;5dAE9S-_rn1>?wa%Ix2S~!)!Y7fi8%egsF4-20dl6?Y76OV5 zgCt*w2(>R7mIZ$mdd$7TGZY6>D2ul7d!E`7Q)bLY$@rR4DXc{w373!wlmN&>LK(jq zQbFuh?4pm6kV8SxW)L`i^`rK2SIC_El6df3)2K!Kgs>+R4D5Dy(>D^;-T={g=Ed~n zVQlB>&6%b!>%d0*WIW8JIB({7Ne2dVFhf*EW>g?kM96<7x)L;#7=!}rRG25q&toQ4 zmclw}Xc81OP80|Mcy`C!N9>IyI0kmhPK*z?_na_J<WkuhR$?9FklYZ@!!#F3ed6K2 zeM}z&_SW|A*IIF_$6Xdv7`1;nOCe-00{G-Ig1IBa(VU~mPcx{p;l)xT9e4}bzp12w zz2cFg5NCfYmHIM*!23^9L(Y<;*dTa{;RS&joSv>f<y()M2EiG#x}xncR)vpP2$RY3 z$}?xK&?y2o|DcD&);Y^T>zo}5*@Vadm*YxYFF{4|v)mu^BgWA;m7!TM-Vq9NZ`RV& zHI}~JHD0wv|A(8^<-!Yuc^Q4hmRQ*k(T_q$+iZV_D&)7+w$Twwo?rJv<t+3=MZGy1 znRK`;U_1lZ>7EXILp7;RIZ{4obFKpJtY_5Dv5!2M^zzi4ZQXlwLfh!P1rhT7ML3M5 z&$uX;Vdi`fo$Vr<eE?rUyDmqoJ)a5c4Myrv<&?usy_R#pJ`<B{_se2_eWx~5XhJNO z0px$UdkV6`N;jxuA9}Aol&Y~^uhsV3X*D*EXKy89eNf$9#Lg!care6CTwYa)xJs<; z8nLzyEY?oFSUX3t9>rQG)^@L2tU2Fd#M-SFYxgMDqgZRj+N}|5_rPL3trzR*QLG<Z zti&9BP_bSH%zgYGv#LLo+HWNR|9`=j-06QADs);O?=Mq9SUG{TY6Q}Hxj<YW6yoat z?#2~t!!qt3632a}CdE_5T|^RTtwJpwn_E1wx>DY<`1OTLG*vf^mG{OI<==jJY)z6p zd(>AUPB{$>QNj3@dNAuEy(&-Y_nwitk`On-LGU{=KM6<{ZFyFQ1$ZWtIH%RCjhufn zDOtEnPEO|j_M~c=inXV<S6p`C8KFdd?3!R6R!S|6v2@VBoob!OuIw>;ZHgPaV14(Q z9;mzL@ND62SIYL<W0<#`0Am$940tW=e#xrA>ESV-K_wVL1FK%Qjm2=<2m8RIJI4q` z)lBOMD+_rmq}eWL?1AO5OH@b>q{4sO5Y6k^(Gj1X9b<!aV*$Nae~aDRWDO+sZ;e$% zTcE6TzurRNPVf5eX#T={iX;iE(PR<Zz*Mbp-PuijVWolvNUV-yc~iyNYL9!i-3hs7 zOj0;e|A}Yid}INZig+y@PngSLK<2B*L>yr*TuvhSU!sKl@Ua}8_PiF>9{&lj%0aGv zii^g-vw;{l3=ZY6enK4t+Md7!007w|lg1<{1AW9-lkp@v0h*I6B~St1lYJ#x0Z^0J MB|ioqAOHXW05;Z%_W%F@ delta 1362 zcmV-Y1+DtFOr1=yn-hQOty)6ngQke51ONcFA^-pn02}~!Z*pWWb98xZWpgfgZERIk z2>=7;oh?!3oh?yycnbgl1oZ&`00a~O008Y-UvuI%5P#=Wc>JCN6OvLU<c5%Dl9}|H zE2MoEvW#`HC0CL|=%?>Ww!t>G;RwxLGQ6SP)&BkMN){KNU&4RDdL}|r&W5)0sbgD& zVeV2kAKJ0<PWrYb6=E(5I3q)QNu>SxvURZ-NVN=zv|vAz12MFHrJ_N*EwN8RBtP+p zFyMJygh;_s%-h`aC??k&$01>=-R*SF+kym0fo<v2NZPGL+hP}O3ohJ9a7?5GXTu=T z7b42+%a&z<hc17|*Th3{proc4ns^W?Eg@yZY?Z8UI8)ME43NZ>PQe9;Jfw_^+Yyu0 zUdb*71W7fL6m1Ft)7L*5w_~Yt>?`WRzIMSE`7ek)qhM%vdz-wmtmg)Z%`+}xCyx_5 z=WmWQ1FJ(DiId4Fr{bcW%S*Z_WDYDuRmqG>$&?Yo)Ode_JVgK~P^XfeC~v2zR8vZI zG@&U#&?G@12oUd{<0s-y6flN%$4-ckcMpPcLDf>zT2?}xkdWR|*Ci|`$$aXPzkR|U zC2`mEuQvv9tL>P_3|8G=&eIUGMgX2#MqoQa0?h@A{8WQ>8yZWmjNlz;|Du%!_9~AI zg(Ry~%FBNe1l)fTA5wemRL^$fD|1t-0#a=)Vdad?5XAontM`VH7qz3WWjMg<iIC`v z*3d2y?<s>)=BaDk%n0;7MAz$^vScvo6=1X&e8ZVv7{Ecq+OGn{3hiFo?C4vmTQ^%> zi~N?-HoCoH|GL*Tv()Q4^~Ke=m=4SXF0uemduM;6{zw}&D#w}!EsS;G&f213PJHBo z(W|qfwe?&%Juh?CQzggC4TOC_IEt0eg{+2Q#{3aD+XXiJ1bhvns5)B1`ADJO5~ME- zPIb5`*K!UxXJVR7_Dts2A2fzaLx{&J03G+wLFQQJIEQ|wIh3NY+l<xj+hH{>Ts__j z#O8kzwmXQO4-DeoP2ah?t^;u$Si22i?H(Acr_EqJJ%aTJ)+Vra`}JVW@eTvlUNcyG zN3b5j+6dNO16X?p2J2ZfSkI1NecxcE#nn3n>s7$<)7O~SeNY;{l?eR&fZar)Q$V59 zd4HcwC1B+M(rExl=lcPIeLx5{-|mIy#g>0nczZ|~4;h+to@(AA5=m<%Y8lyF@#N~c zbW8D@9am_kUm9!QM5mg+{bAIaCVKYpuLhiI78F1Q>pSLx)kXRYocQm)pkgIKZcKvU zcT{}tRy^9W*N6qgQ;D3@={HKwxKcdaMW>*1f4fp$rn2uT?G=w*#G{PrKXRr-gtdQA zOJyu0wC|)^>#=KR%wC7$#wpl5eP#!m?zwoj<ZaiK?RCa*cR7WO)toTEwG8`vss^`* zr@RKOU<?DSzHS@EaJrS{*z0c)JvqiGs?W5MuriUiiZnX~3uj<;*cB+G2SVXph~~}N zF%lm>JB0%l#}a0*`JZv~kS#>g+%<nzIoeXnD$naJ3EZjIcaP>TB4$X@us)hhVp}kE z6>hq_4ec>!k_Skxu48#p&E0B`cedRVa>Kb|aHIZ{c-8sH1S~D_+H^b<p+*6nueQlJ zB0^$8BlUkq3FqNcb$EvJ+OYQc!m18(^;2H9{sT};0|W{H00000PN5}2005Ic0}7M- z1_`sh7!(W+>8)Bq=7Xk)rvv~1wIY+>Bq#*toh?z4BNdY%B_siXlSL&^1I8Etll&MM UldvT~0XLKJB|ioRAOHXW063|HUH||9 diff --git a/src/Text/Pandoc/Writers/Docx.hs b/src/Text/Pandoc/Writers/Docx.hs index 0549772af..50e39a2a7 100644 --- a/src/Text/Pandoc/Writers/Docx.hs +++ b/src/Text/Pandoc/Writers/Docx.hs @@ -418,7 +418,8 @@ blockToOpenXML opts (Header lev (ident,_,_) lst) = do ,("w:name",bookmarkName)] () let bookmarkEnd = mknode "w:bookmarkEnd" [("w:id", id')] () return $ [bookmarkStart] ++ contents ++ [bookmarkEnd] -blockToOpenXML opts (Plain lst) = blockToOpenXML opts (Para lst) +blockToOpenXML opts (Plain lst) = withParaProp (pStyle "Compact") + $ blockToOpenXML opts (Para lst) -- title beginning with fig: indicates that the image is a figure blockToOpenXML opts (Para [Image alt (src,'f':'i':'g':':':tit)]) = do paraProps <- getParaProps False @@ -781,7 +782,12 @@ stripLeadingTrailingSpace = go . reverse . go . reverse go xs = xs fixDisplayMath :: Block -> [Block] -fixDisplayMath (Plain lst) = fixDisplayMath (Para lst) +fixDisplayMath (Plain lst) + | any isDisplayMath lst && not (all isDisplayMath lst) = + -- chop into several paragraphs so each displaymath is its own + map (Plain . stripLeadingTrailingSpace) $ + groupBy (\x y -> (isDisplayMath x && isDisplayMath y) || + not (isDisplayMath x || isDisplayMath y)) lst fixDisplayMath (Para lst) | any isDisplayMath lst && not (all isDisplayMath lst) = -- chop into several paragraphs so each displaymath is its own