git.iko.soy/typeable/pandoc
on master help sign in
ICML writer: better handling of math.

Instead of just printing the raw tex, we now try to fake it with unicode characters.

commitf096f032f0d210142d4f6de87354df65598cdafb authorJohn MacFarlane <jgm@berkeley.edu> dateMon 16 Nov 2015, 20:24 (11 years ago) parent46ff0e9
2 files changed+62−10
src/Text/Pandoc/Writers/ICML.hs+3−1 tests/writer.icml+59−9
src/Text/Pandoc/Writers/ICML.hs+3−1
@@ -16,6 +16,7 @@ into InDesign with File -> Place.
1616module Text.Pandoc.Writers.ICML (writeICML) where
1717import Text.Pandoc.Definition
1818import Text.Pandoc.XML
19+import Text.Pandoc.Readers.TeXMath (texMathToInlines)
1920import Text.Pandoc.Writers.Shared
2021import Text.Pandoc.Shared (splitBy)
2122import Text.Pandoc.Options
@@ -410,7 +411,8 @@ inlineToICML opts style (Cite _ lst) = inlinesToICML opts style lst
410411inlineToICML _ style (Code _ str) = charStyle (codeName:style) $ text $ escapeStringForXML str
411412inlineToICML _ style Space = charStyle style space
412413inlineToICML _ style LineBreak = charStyle style $ text lineSeparator
413−inlineToICML _ style (Math _ str) = charStyle style $ text $ escapeStringForXML str --InDesign doesn't really do math
414+inlineToICML opts style (Math mt str) =
415+ cat <$> mapM (inlineToICML opts style) (texMathToInlines mt str)
414416inlineToICML _ _ (RawInline f str)
415417 | f == Format "icml" = return $ text str
416418 | otherwise = return empty
tests/writer.icml+59−9
@@ -1864,17 +1864,49 @@ These should not be escaped: \$ \\ \&gt; \[ \{</Content>
18641864</ParagraphStyleRange>
18651865<ParagraphStyleRange AppliedParagraphStyle="ParagraphStyle/BulList">
18661866 <CharacterStyleRange AppliedCharacterStyle="$ID/NormalCharacterStyle">
1867− <Content>2+2=4</Content>
1867+ <Content>2</Content>
1868+ </CharacterStyleRange><CharacterStyleRange AppliedCharacterStyle="$ID/NormalCharacterStyle">
1869+ <Content> </Content>
1870+ </CharacterStyleRange><CharacterStyleRange AppliedCharacterStyle="$ID/NormalCharacterStyle">
1871+ <Content>+</Content>
1872+ </CharacterStyleRange><CharacterStyleRange AppliedCharacterStyle="$ID/NormalCharacterStyle">
1873+ <Content> </Content>
1874+ </CharacterStyleRange><CharacterStyleRange AppliedCharacterStyle="$ID/NormalCharacterStyle">
1875+ <Content>2</Content>
1876+ </CharacterStyleRange><CharacterStyleRange AppliedCharacterStyle="$ID/NormalCharacterStyle">
1877+ <Content> </Content>
1878+ </CharacterStyleRange><CharacterStyleRange AppliedCharacterStyle="$ID/NormalCharacterStyle">
1879+ <Content>=</Content>
1880+ </CharacterStyleRange><CharacterStyleRange AppliedCharacterStyle="$ID/NormalCharacterStyle">
1881+ <Content> </Content>
1882+ </CharacterStyleRange><CharacterStyleRange AppliedCharacterStyle="$ID/NormalCharacterStyle">
1883+ <Content>4</Content>
18681884 </CharacterStyleRange><Br />
18691885</ParagraphStyleRange>
18701886<ParagraphStyleRange AppliedParagraphStyle="ParagraphStyle/BulList">
1871− <CharacterStyleRange AppliedCharacterStyle="$ID/NormalCharacterStyle">
1872− <Content>x \in y</Content>
1887+ <CharacterStyleRange AppliedCharacterStyle="CharacterStyle/Italic">
1888+ <Content>x</Content>
1889+ </CharacterStyleRange><CharacterStyleRange AppliedCharacterStyle="$ID/NormalCharacterStyle">
1890+ <Content> </Content>
1891+ </CharacterStyleRange><CharacterStyleRange AppliedCharacterStyle="$ID/NormalCharacterStyle">
1892+ <Content>∈</Content>
1893+ </CharacterStyleRange><CharacterStyleRange AppliedCharacterStyle="$ID/NormalCharacterStyle">
1894+ <Content> </Content>
1895+ </CharacterStyleRange><CharacterStyleRange AppliedCharacterStyle="CharacterStyle/Italic">
1896+ <Content>y</Content>
18731897 </CharacterStyleRange><Br />
18741898</ParagraphStyleRange>
18751899<ParagraphStyleRange AppliedParagraphStyle="ParagraphStyle/BulList">
1876− <CharacterStyleRange AppliedCharacterStyle="$ID/NormalCharacterStyle">
1877− <Content>\alpha \wedge \omega</Content>
1900+ <CharacterStyleRange AppliedCharacterStyle="CharacterStyle/Italic">
1901+ <Content>α</Content>
1902+ </CharacterStyleRange><CharacterStyleRange AppliedCharacterStyle="$ID/NormalCharacterStyle">
1903+ <Content> </Content>
1904+ </CharacterStyleRange><CharacterStyleRange AppliedCharacterStyle="$ID/NormalCharacterStyle">
1905+ <Content>∧</Content>
1906+ </CharacterStyleRange><CharacterStyleRange AppliedCharacterStyle="$ID/NormalCharacterStyle">
1907+ <Content> </Content>
1908+ </CharacterStyleRange><CharacterStyleRange AppliedCharacterStyle="CharacterStyle/Italic">
1909+ <Content>ω</Content>
18781910 </CharacterStyleRange><Br />
18791911</ParagraphStyleRange>
18801912<ParagraphStyleRange AppliedParagraphStyle="ParagraphStyle/BulList">
@@ -1883,7 +1915,7 @@ These should not be escaped: \$ \\ \&gt; \[ \{</Content>
18831915 </CharacterStyleRange><Br />
18841916</ParagraphStyleRange>
18851917<ParagraphStyleRange AppliedParagraphStyle="ParagraphStyle/BulList">
1886− <CharacterStyleRange AppliedCharacterStyle="$ID/NormalCharacterStyle">
1918+ <CharacterStyleRange AppliedCharacterStyle="CharacterStyle/Italic">
18871919 <Content>p</Content>
18881920 </CharacterStyleRange>
18891921 <CharacterStyleRange AppliedCharacterStyle="$ID/NormalCharacterStyle">
@@ -1895,15 +1927,33 @@ These should not be escaped: \$ \\ \&gt; \[ \{</Content>
18951927 <Content>Here’s some display math: </Content>
18961928 </CharacterStyleRange>
18971929 <CharacterStyleRange AppliedCharacterStyle="$ID/NormalCharacterStyle">
1898− <Content>\frac{d}{dx}f(x)=\lim_{h\to 0}\frac{f(x+h)-f(x)}{h}</Content>
1930+ <Content>$$\frac{d}{dx}f(x)=\lim_{h\to 0}\frac{f(x+h)-f(x)}{h}$$</Content>
18991931 </CharacterStyleRange><Br />
19001932</ParagraphStyleRange>
19011933<ParagraphStyleRange AppliedParagraphStyle="ParagraphStyle/BulList">
19021934 <CharacterStyleRange AppliedCharacterStyle="$ID/NormalCharacterStyle">
19031935 <Content>Here’s one that has a line break in it: </Content>
19041936 </CharacterStyleRange>
1905− <CharacterStyleRange AppliedCharacterStyle="$ID/NormalCharacterStyle">
1906− <Content>\alpha + \omega \times x^2</Content>
1937+ <CharacterStyleRange AppliedCharacterStyle="CharacterStyle/Italic">
1938+ <Content>α</Content>
1939+ </CharacterStyleRange><CharacterStyleRange AppliedCharacterStyle="$ID/NormalCharacterStyle">
1940+ <Content> </Content>
1941+ </CharacterStyleRange><CharacterStyleRange AppliedCharacterStyle="$ID/NormalCharacterStyle">
1942+ <Content>+</Content>
1943+ </CharacterStyleRange><CharacterStyleRange AppliedCharacterStyle="$ID/NormalCharacterStyle">
1944+ <Content> </Content>
1945+ </CharacterStyleRange><CharacterStyleRange AppliedCharacterStyle="CharacterStyle/Italic">
1946+ <Content>ω</Content>
1947+ </CharacterStyleRange><CharacterStyleRange AppliedCharacterStyle="$ID/NormalCharacterStyle">
1948+ <Content> </Content>
1949+ </CharacterStyleRange><CharacterStyleRange AppliedCharacterStyle="$ID/NormalCharacterStyle">
1950+ <Content>×</Content>
1951+ </CharacterStyleRange><CharacterStyleRange AppliedCharacterStyle="$ID/NormalCharacterStyle">
1952+ <Content> </Content>
1953+ </CharacterStyleRange><CharacterStyleRange AppliedCharacterStyle="CharacterStyle/Italic">
1954+ <Content>x</Content>
1955+ </CharacterStyleRange><CharacterStyleRange AppliedCharacterStyle="CharacterStyle/Superscript">
1956+ <Content>2</Content>
19071957 </CharacterStyleRange>
19081958 <CharacterStyleRange AppliedCharacterStyle="$ID/NormalCharacterStyle">
19091959 <Content>.</Content>