summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn MacFarlane <jgm@berkeley.edu>2017-07-25 11:42:45 +0200
committerJohn MacFarlane <jgm@berkeley.edu>2017-07-25 11:42:45 +0200
commitfe0ffd272ea14b3f1a40c891403ef03f09f6294f (patch)
treef73c000a3d3da3920c9965416b56c88dea11247f
parent862d92f09a394a318a554fc7e5ec1b4ab0da1a2a (diff)
parent2b039acb4ec6af8792c4e212822d3fe359633d16 (diff)
Merge branch 'schrieveslaach-textcolor-support'
-rw-r--r--src/Text/Pandoc/Readers/LaTeX.hs20
-rw-r--r--test/command/latex-color.md127
2 files changed, 147 insertions, 0 deletions
diff --git a/src/Text/Pandoc/Readers/LaTeX.hs b/src/Text/Pandoc/Readers/LaTeX.hs
index 494f532a1..5877bbbe1 100644
--- a/src/Text/Pandoc/Readers/LaTeX.hs
+++ b/src/Text/Pandoc/Readers/LaTeX.hs
@@ -1311,6 +1311,9 @@ inlineCommands = M.fromList $
, ("nohyphens", tok)
, ("textnhtt", ttfamily)
, ("nhttfamily", ttfamily)
+ -- LaTeX colors
+ , ("textcolor", coloredInline "color")
+ , ("colorbox", coloredInline "background-color")
-- fontawesome
, ("faCheck", lit "\10003")
, ("faClose", lit "\10007")
@@ -1331,6 +1334,12 @@ ifstrequal = do
else getInput >>= setInput . (ifnotequal ++)
return mempty
+coloredInline :: PandocMonad m => String -> LP m Inlines
+coloredInline stylename = do
+ skipopts
+ color <- braced
+ spanWith ("",[],[("style",stylename ++ ": " ++ toksToString color)]) <$> tok
+
ttfamily :: PandocMonad m => LP m Inlines
ttfamily = (code . stringify . toList) <$> tok
@@ -1709,6 +1718,9 @@ blockCommands = M.fromList $
, ("graphicspath", graphicsPath)
-- hyperlink
, ("hypertarget", try $ braced >> grouped block)
+ -- LaTeX colors
+ , ("textcolor", coloredBlock "color")
+ , ("colorbox", coloredBlock "background-color")
]
@@ -1872,6 +1884,14 @@ addImageCaption = walkM go
Nothing -> Image attr alt (src,tit)
go x = return x
+coloredBlock :: PandocMonad m => String -> LP m Blocks
+coloredBlock stylename = try $ do
+ skipopts
+ color <- braced
+ notFollowedBy (grouped inline)
+ let constructor = divWith ("",[],[("style",stylename ++ ": " ++ toksToString color)])
+ constructor <$> grouped block
+
graphicsPath :: PandocMonad m => LP m Blocks
graphicsPath = do
ps <- map toksToString <$> (bgroup *> manyTill braced egroup)
diff --git a/test/command/latex-color.md b/test/command/latex-color.md
new file mode 100644
index 000000000..9fd2585a3
--- /dev/null
+++ b/test/command/latex-color.md
@@ -0,0 +1,127 @@
+# `\textcolor{}{}`
+
+```
+% pandoc -f latex -t native
+Hello \textcolor{red}{World}
+^D
+[Para [Str "Hello",Space,Span ("",[],[("style","color: red")]) [Str "World"]]]
+```
+
+```
+% pandoc -f latex -t native
+\textcolor{red}{Hello} World
+^D
+[Para [Span ("",[],[("style","color: red")]) [Str "Hello"],Space,Str "World"]]
+```
+
+```
+% pandoc -f latex -t native
+Hello \textcolor{blue}{\textbf{World}}
+^D
+[Para [Str "Hello",Space,Span ("",[],[("style","color: blue")]) [Strong [Str "World"]]]]
+```
+
+
+```
+% pandoc -f latex -t native
+Hello \textcolor{blue}{\textbf{World}}.
+^D
+[Para [Str "Hello",Space,Span ("",[],[("style","color: blue")]) [Strong [Str "World"]],Str "."]]
+```
+
+```
+% pandoc -f latex -t native
+\textcolor{orange}{
+\begin{itemize}
+ \item Item 1
+ \item Item 2
+\end{itemize}
+}
+^D
+[Div ("",[],[("style","color: orange")])
+ [BulletList
+ [[Para [Str "Item",Space,Str "1"]]
+ ,[Para [Str "Item",Space,Str "2"]]]]]
+```
+
+```
+% pandoc -f latex -t native
+\textcolor{blue}{
+\begin{itemize}
+ \item Item 1
+ \item Item 2
+\end{itemize}
+} some more text
+^D
+[Div ("",[],[("style","color: blue")])
+ [BulletList
+ [[Para [Str "Item",Space,Str "1"]]
+ ,[Para [Str "Item",Space,Str "2"]]]]
+,Para [Str "some",Space,Str "more",Space,Str "text"]]
+```
+
+# `\colorbox{}{}`
+
+
+```
+% pandoc -f latex -t native
+Hello \colorbox{red}{World}
+^D
+[Para [Str "Hello",Space,Span ("",[],[("style","background-color: red")]) [Str "World"]]]
+```
+
+```
+% pandoc -f latex -t native
+\colorbox{red}{Hello} World
+^D
+[Para [Span ("",[],[("style","background-color: red")]) [Str "Hello"],Space,Str "World"]]
+```
+
+```
+% pandoc -f latex -t native
+Hello \colorbox{blue}{\textbf{World}}
+^D
+[Para [Str "Hello",Space,Span ("",[],[("style","background-color: blue")]) [Strong [Str "World"]]]]
+```
+
+```
+% pandoc -f latex -t native
+Hello \colorbox{blue}{\textbf{World}}.
+^D
+[Para [Str "Hello",Space,Span ("",[],[("style","background-color: blue")]) [Strong [Str "World"]],Str "."]]
+```
+
+```
+% pandoc -f latex -t native
+\colorbox{orange}{
+\begin{minipage}{\textwidth}
+\begin{itemize}
+ \item Item 1
+ \item Item 2
+\end{itemize}
+\end{minipage}
+}
+^D
+[Div ("",[],[("style","background-color: orange")])
+ [BulletList
+ [[Para [Str "Item",Space,Str "1"]]
+ ,[Para [Str "Item",Space,Str "2"]]]]]
+```
+
+```
+% pandoc -f latex -t native
+\colorbox{blue}{
+\begin{minipage}{\textwidth}
+\begin{itemize}
+ \item Item 1
+ \item Item 2
+\end{itemize}
+\end{minipage}
+} some more text
+^D
+[Div ("",[],[("style","background-color: blue")])
+ [BulletList
+ [[Para [Str "Item",Space,Str "1"]]
+ ,[Para [Str "Item",Space,Str "2"]]]]
+,Para [Str "some",Space,Str "more",Space,Str "text"]]
+```