diff options
author | John MacFarlane <jgm@berkeley.edu> | 2015-11-16 20:24:34 -0800 |
---|---|---|
committer | John MacFarlane <jgm@berkeley.edu> | 2015-11-16 20:24:34 -0800 |
commit | f096f032f0d210142d4f6de87354df65598cdafb (patch) | |
tree | 31cd03c5c6067ac6089349e175db6931d425e600 | |
parent | 46ff0e988a204b5191f47855d870db06d8e465ad (diff) | |
download | pandoc-f096f032f0d210142d4f6de87354df65598cdafb.tar.gz |
ICML writer: better handling of math.
Instead of just printing the raw tex, we now try to fake
it with unicode characters.
-rw-r--r-- | src/Text/Pandoc/Writers/ICML.hs | 4 | ||||
-rw-r--r-- | tests/writer.icml | 68 |
2 files changed, 62 insertions, 10 deletions
diff --git a/src/Text/Pandoc/Writers/ICML.hs b/src/Text/Pandoc/Writers/ICML.hs index ae068a94f..95ea0c643 100644 --- a/src/Text/Pandoc/Writers/ICML.hs +++ b/src/Text/Pandoc/Writers/ICML.hs @@ -16,6 +16,7 @@ into InDesign with File -> Place. module Text.Pandoc.Writers.ICML (writeICML) where import Text.Pandoc.Definition import Text.Pandoc.XML +import Text.Pandoc.Readers.TeXMath (texMathToInlines) import Text.Pandoc.Writers.Shared import Text.Pandoc.Shared (splitBy) import Text.Pandoc.Options @@ -410,7 +411,8 @@ inlineToICML opts style (Cite _ lst) = inlinesToICML opts style lst inlineToICML _ style (Code _ str) = charStyle (codeName:style) $ text $ escapeStringForXML str inlineToICML _ style Space = charStyle style space inlineToICML _ style LineBreak = charStyle style $ text lineSeparator -inlineToICML _ style (Math _ str) = charStyle style $ text $ escapeStringForXML str --InDesign doesn't really do math +inlineToICML opts style (Math mt str) = + cat <$> mapM (inlineToICML opts style) (texMathToInlines mt str) inlineToICML _ _ (RawInline f str) | f == Format "icml" = return $ text str | otherwise = return empty diff --git a/tests/writer.icml b/tests/writer.icml index b6f5b5e32..cd71fa86b 100644 --- a/tests/writer.icml +++ b/tests/writer.icml @@ -1864,17 +1864,49 @@ These should not be escaped: \$ \\ \> \[ \{</Content> </ParagraphStyleRange> <ParagraphStyleRange AppliedParagraphStyle="ParagraphStyle/BulList"> <CharacterStyleRange AppliedCharacterStyle="$ID/NormalCharacterStyle"> - <Content>2+2=4</Content> + <Content>2</Content> + </CharacterStyleRange><CharacterStyleRange AppliedCharacterStyle="$ID/NormalCharacterStyle"> + <Content> </Content> + </CharacterStyleRange><CharacterStyleRange AppliedCharacterStyle="$ID/NormalCharacterStyle"> + <Content>+</Content> + </CharacterStyleRange><CharacterStyleRange AppliedCharacterStyle="$ID/NormalCharacterStyle"> + <Content> </Content> + </CharacterStyleRange><CharacterStyleRange AppliedCharacterStyle="$ID/NormalCharacterStyle"> + <Content>2</Content> + </CharacterStyleRange><CharacterStyleRange AppliedCharacterStyle="$ID/NormalCharacterStyle"> + <Content> </Content> + </CharacterStyleRange><CharacterStyleRange AppliedCharacterStyle="$ID/NormalCharacterStyle"> + <Content>=</Content> + </CharacterStyleRange><CharacterStyleRange AppliedCharacterStyle="$ID/NormalCharacterStyle"> + <Content> </Content> + </CharacterStyleRange><CharacterStyleRange AppliedCharacterStyle="$ID/NormalCharacterStyle"> + <Content>4</Content> </CharacterStyleRange><Br /> </ParagraphStyleRange> <ParagraphStyleRange AppliedParagraphStyle="ParagraphStyle/BulList"> - <CharacterStyleRange AppliedCharacterStyle="$ID/NormalCharacterStyle"> - <Content>x \in y</Content> + <CharacterStyleRange AppliedCharacterStyle="CharacterStyle/Italic"> + <Content>x</Content> + </CharacterStyleRange><CharacterStyleRange AppliedCharacterStyle="$ID/NormalCharacterStyle"> + <Content> </Content> + </CharacterStyleRange><CharacterStyleRange AppliedCharacterStyle="$ID/NormalCharacterStyle"> + <Content>∈</Content> + </CharacterStyleRange><CharacterStyleRange AppliedCharacterStyle="$ID/NormalCharacterStyle"> + <Content> </Content> + </CharacterStyleRange><CharacterStyleRange AppliedCharacterStyle="CharacterStyle/Italic"> + <Content>y</Content> </CharacterStyleRange><Br /> </ParagraphStyleRange> <ParagraphStyleRange AppliedParagraphStyle="ParagraphStyle/BulList"> - <CharacterStyleRange AppliedCharacterStyle="$ID/NormalCharacterStyle"> - <Content>\alpha \wedge \omega</Content> + <CharacterStyleRange AppliedCharacterStyle="CharacterStyle/Italic"> + <Content>α</Content> + </CharacterStyleRange><CharacterStyleRange AppliedCharacterStyle="$ID/NormalCharacterStyle"> + <Content> </Content> + </CharacterStyleRange><CharacterStyleRange AppliedCharacterStyle="$ID/NormalCharacterStyle"> + <Content>∧</Content> + </CharacterStyleRange><CharacterStyleRange AppliedCharacterStyle="$ID/NormalCharacterStyle"> + <Content> </Content> + </CharacterStyleRange><CharacterStyleRange AppliedCharacterStyle="CharacterStyle/Italic"> + <Content>ω</Content> </CharacterStyleRange><Br /> </ParagraphStyleRange> <ParagraphStyleRange AppliedParagraphStyle="ParagraphStyle/BulList"> @@ -1883,7 +1915,7 @@ These should not be escaped: \$ \\ \> \[ \{</Content> </CharacterStyleRange><Br /> </ParagraphStyleRange> <ParagraphStyleRange AppliedParagraphStyle="ParagraphStyle/BulList"> - <CharacterStyleRange AppliedCharacterStyle="$ID/NormalCharacterStyle"> + <CharacterStyleRange AppliedCharacterStyle="CharacterStyle/Italic"> <Content>p</Content> </CharacterStyleRange> <CharacterStyleRange AppliedCharacterStyle="$ID/NormalCharacterStyle"> @@ -1895,15 +1927,33 @@ These should not be escaped: \$ \\ \> \[ \{</Content> <Content>Here’s some display math: </Content> </CharacterStyleRange> <CharacterStyleRange AppliedCharacterStyle="$ID/NormalCharacterStyle"> - <Content>\frac{d}{dx}f(x)=\lim_{h\to 0}\frac{f(x+h)-f(x)}{h}</Content> + <Content>$$\frac{d}{dx}f(x)=\lim_{h\to 0}\frac{f(x+h)-f(x)}{h}$$</Content> </CharacterStyleRange><Br /> </ParagraphStyleRange> <ParagraphStyleRange AppliedParagraphStyle="ParagraphStyle/BulList"> <CharacterStyleRange AppliedCharacterStyle="$ID/NormalCharacterStyle"> <Content>Here’s one that has a line break in it: </Content> </CharacterStyleRange> - <CharacterStyleRange AppliedCharacterStyle="$ID/NormalCharacterStyle"> - <Content>\alpha + \omega \times x^2</Content> + <CharacterStyleRange AppliedCharacterStyle="CharacterStyle/Italic"> + <Content>α</Content> + </CharacterStyleRange><CharacterStyleRange AppliedCharacterStyle="$ID/NormalCharacterStyle"> + <Content> </Content> + </CharacterStyleRange><CharacterStyleRange AppliedCharacterStyle="$ID/NormalCharacterStyle"> + <Content>+</Content> + </CharacterStyleRange><CharacterStyleRange AppliedCharacterStyle="$ID/NormalCharacterStyle"> + <Content> </Content> + </CharacterStyleRange><CharacterStyleRange AppliedCharacterStyle="CharacterStyle/Italic"> + <Content>ω</Content> + </CharacterStyleRange><CharacterStyleRange AppliedCharacterStyle="$ID/NormalCharacterStyle"> + <Content> </Content> + </CharacterStyleRange><CharacterStyleRange AppliedCharacterStyle="$ID/NormalCharacterStyle"> + <Content>×</Content> + </CharacterStyleRange><CharacterStyleRange AppliedCharacterStyle="$ID/NormalCharacterStyle"> + <Content> </Content> + </CharacterStyleRange><CharacterStyleRange AppliedCharacterStyle="CharacterStyle/Italic"> + <Content>x</Content> + </CharacterStyleRange><CharacterStyleRange AppliedCharacterStyle="CharacterStyle/Superscript"> + <Content>2</Content> </CharacterStyleRange> <CharacterStyleRange AppliedCharacterStyle="$ID/NormalCharacterStyle"> <Content>.</Content> |