Markdown reader: Use "tex" instead of "latex" for raw tex-ish content.
We can't always tell if it's LaTeX, ConTeXt, or plain TeX. Better just to use "tex" always. Also changed: ConTeXt writer: now outputs raw "tex" blocks as well as "context". (Closes #969). RST writer: uses ".. raw:: latex" for "tex" content. (RST doesn't support raw context anyway.) Note that if "context" or "latex" specifically is desired, you can still force that in a markdown document by using the raw attribute (see MANUAL.txt): ```{=latex} \foo ``` Note that this change may affect some filters, if they assume that raw tex parsed by the Markdown reader will be RawBlock (Format "latex"). In most cases it should be trivial to modify the filters to accept "tex" as well.
This commit is contained in:
parent
2ae8272754
commit
13dea94a91
17 changed files with 37 additions and 36 deletions
|
@ -1143,10 +1143,9 @@ rawTeXBlock :: PandocMonad m => MarkdownParser m (F Blocks)
|
|||
rawTeXBlock = do
|
||||
guardEnabled Ext_raw_tex
|
||||
lookAhead $ try $ char '\\' >> letter
|
||||
result <- (B.rawBlock "context" . trim . concat <$>
|
||||
many1 ((++) <$> (rawConTeXtEnvironment <|> conTeXtCommand)
|
||||
<*> spnl'))
|
||||
<|> (B.rawBlock "latex" . trim . concat <$>
|
||||
result <- (B.rawBlock "tex" . trim . concat <$>
|
||||
many1 ((++) <$> rawConTeXtEnvironment <*> spnl'))
|
||||
<|> (B.rawBlock "tex" . trim . concat <$>
|
||||
many1 ((++) <$> rawLaTeXBlock <*> spnl'))
|
||||
return $ case B.toList result of
|
||||
[RawBlock _ cs]
|
||||
|
@ -1154,9 +1153,6 @@ rawTeXBlock = do
|
|||
-- don't create a raw block for suppressed macro defs
|
||||
_ -> return result
|
||||
|
||||
conTeXtCommand :: PandocMonad m => MarkdownParser m String
|
||||
conTeXtCommand = oneOfStrings ["\\placeformula"]
|
||||
|
||||
rawHtmlBlocks :: PandocMonad m => MarkdownParser m (F Blocks)
|
||||
rawHtmlBlocks = do
|
||||
(TagOpen tagtype _, raw) <- htmlTag isBlockTag
|
||||
|
|
|
@ -190,10 +190,9 @@ blockToConTeXt (BlockQuote lst) = do
|
|||
blockToConTeXt (CodeBlock _ str) =
|
||||
return $ flush ("\\starttyping" <> cr <> text str <> cr <> "\\stoptyping") $$ blankline
|
||||
-- blankline because \stoptyping can't have anything after it, inc. '}'
|
||||
blockToConTeXt (RawBlock "context" str) = return $ text str <> blankline
|
||||
blockToConTeXt b@(RawBlock _ _ ) = do
|
||||
report $ BlockNotRendered b
|
||||
return empty
|
||||
blockToConTeXt b@(RawBlock f str)
|
||||
| f == Format "context" || f == Format "tex" = return $ text str <> blankline
|
||||
| otherwise = empty <$ report (BlockNotRendered b)
|
||||
blockToConTeXt (Div (ident,_,kvs) bs) = do
|
||||
let align dir txt = "\\startalignment[" <> dir <> "]" $$ txt $$ "\\stopalignment"
|
||||
mblang <- fromBCP47 (lookup "lang" kvs)
|
||||
|
@ -401,11 +400,9 @@ inlineToConTeXt (Math InlineMath str) =
|
|||
return $ char '$' <> text str <> char '$'
|
||||
inlineToConTeXt (Math DisplayMath str) =
|
||||
return $ text "\\startformula " <> text str <> text " \\stopformula" <> space
|
||||
inlineToConTeXt (RawInline "context" str) = return $ text str
|
||||
inlineToConTeXt (RawInline "tex" str) = return $ text str
|
||||
inlineToConTeXt il@(RawInline _ _) = do
|
||||
report $ InlineNotRendered il
|
||||
return empty
|
||||
inlineToConTeXt il@(RawInline f str)
|
||||
| f == Format "tex" || f == Format "context" = return $ text str
|
||||
| otherwise = empty <$ report (InlineNotRendered il)
|
||||
inlineToConTeXt LineBreak = return $ text "\\crlf" <> cr
|
||||
inlineToConTeXt SoftBreak = do
|
||||
wrapText <- gets (writerWrapText . stOptions)
|
||||
|
|
|
@ -253,6 +253,7 @@ blockToRST (LineBlock lns) =
|
|||
linesToLineBlock lns
|
||||
blockToRST (RawBlock f@(Format f') str)
|
||||
| f == "rst" = return $ text str
|
||||
| f == "tex" = blockToRST (RawBlock (Format "latex") str)
|
||||
| otherwise = return $ blankline <> ".. raw:: " <>
|
||||
text (map toLower f') $+$
|
||||
nest 3 (text str) $$ blankline
|
||||
|
|
|
@ -6,7 +6,7 @@ hello
|
|||
|
||||
\endmulti
|
||||
^D
|
||||
[RawBlock (Format "latex") "\\multi"
|
||||
[RawBlock (Format "tex") "\\multi"
|
||||
,Para [Str "hello"]
|
||||
,RawBlock (Format "latex") "\\endmulti"]
|
||||
,RawBlock (Format "tex") "\\endmulti"]
|
||||
```
|
||||
|
|
|
@ -2,5 +2,5 @@
|
|||
% pandoc -t native
|
||||
\titleformat{\chapter}[display]{\normalfont\large\bfseries}{第\thechapter{}章}{20pt}{\Huge}
|
||||
^D
|
||||
[RawBlock (Format "latex") "\\titleformat{\\chapter}[display]{\\normalfont\\large\\bfseries}{\31532\\thechapter{}\31456}{20pt}{\\Huge}"]
|
||||
[RawBlock (Format "tex") "\\titleformat{\\chapter}[display]{\\normalfont\\large\\bfseries}{\31532\\thechapter{}\31456}{20pt}{\\Huge}"]
|
||||
```
|
||||
|
|
|
@ -6,6 +6,6 @@
|
|||
|
||||
Another Code block
|
||||
^D
|
||||
[RawBlock (Format "latex") "\\newpage"
|
||||
[RawBlock (Format "tex") "\\newpage"
|
||||
,CodeBlock ("",[],[]) "Code block\n\nAnother Code block"]
|
||||
```
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
\end{shaded}
|
||||
}
|
||||
^D
|
||||
[RawBlock (Format "latex") "\\parbox[t]{0.4\\textwidth}{\n\\begin{shaded}\n\\end{shaded}\n}"]
|
||||
[RawBlock (Format "tex") "\\parbox[t]{0.4\\textwidth}{\n\\begin{shaded}\n\\end{shaded}\n}"]
|
||||
```
|
||||
|
||||
```
|
||||
|
|
|
@ -3,6 +3,6 @@
|
|||
\newcommand{\gen}{a\ Gen\ b}
|
||||
abc
|
||||
^D
|
||||
[RawBlock (Format "latex") "\\newcommand{\\gen}{a\\ Gen\\ b}"
|
||||
[RawBlock (Format "tex") "\\newcommand{\\gen}{a\\ Gen\\ b}"
|
||||
,Para [Str "abc"]]
|
||||
```
|
||||
|
|
|
@ -7,7 +7,7 @@ Markdown parsed *here*
|
|||
*But not here*
|
||||
^D
|
||||
[Para [Str "Markdown",Space,Str "parsed",Space,Emph [Str "here"]]
|
||||
,RawBlock (Format "latex") "\\include{command/bar}"
|
||||
,RawBlock (Format "tex") "\\include{command/bar}"
|
||||
,Para [Emph [Str "But",Space,Str "not",Space,Str "here"]]]
|
||||
```
|
||||
|
||||
|
|
|
@ -4,6 +4,6 @@
|
|||
|
||||
\listoftables
|
||||
^D
|
||||
[RawBlock (Format "latex") "\\listoffigures"
|
||||
,RawBlock (Format "latex") "\\listoftables"]
|
||||
[RawBlock (Format "tex") "\\listoffigures"
|
||||
,RawBlock (Format "tex") "\\listoftables"]
|
||||
```
|
||||
|
|
|
@ -8,7 +8,7 @@ Here they need to be inline:
|
|||
\caption{lalune \hspace{2em} \vspace{1em} bloo}
|
||||
\end{figure}
|
||||
^D
|
||||
[RawBlock (Format "latex") "\\begin{figure}\n\\includegraphics{lalune.jpg}\n\\caption{lalune \\hspace{2em} \\vspace{1em} bloo}\n\\end{figure}"]
|
||||
[RawBlock (Format "tex") "\\begin{figure}\n\\includegraphics{lalune.jpg}\n\\caption{lalune \\hspace{2em} \\vspace{1em} bloo}\n\\end{figure}"]
|
||||
```
|
||||
|
||||
Here block:
|
||||
|
@ -32,7 +32,7 @@ F & T &\\
|
|||
F & F &\\
|
||||
\end{tabular}
|
||||
^D
|
||||
[RawBlock (Format "latex") "\\begin{tabular}[t]{cc|c}\n\\(P\\) & \\(Q\\) & \\(P\\wedge Q\\)\\\\\n\\hline\nT & T &\\\\\nT & F &\\\\\nF & T &\\\\\nF & F &\\\\\n\\end{tabular}\n\\hspace{1em}\n\\begin{tabular}[t]{cc|c}\n\\(P\\) & \\(Q\\) & \\(P\\vee Q\\)\\\\\n\\hline\nT & T &\\\\\nT & F &\\\\\nF & T &\\\\\nF & F &\\\\\n\\end{tabular}"]
|
||||
[RawBlock (Format "tex") "\\begin{tabular}[t]{cc|c}\n\\(P\\) & \\(Q\\) & \\(P\\wedge Q\\)\\\\\n\\hline\nT & T &\\\\\nT & F &\\\\\nF & T &\\\\\nF & F &\\\\\n\\end{tabular}\n\\hspace{1em}\n\\begin{tabular}[t]{cc|c}\n\\(P\\) & \\(Q\\) & \\(P\\vee Q\\)\\\\\n\\hline\nT & T &\\\\\nT & F &\\\\\nF & T &\\\\\nF & F &\\\\\n\\end{tabular}"]
|
||||
```
|
||||
|
||||
```
|
||||
|
@ -51,6 +51,6 @@ hi
|
|||
there
|
||||
^D
|
||||
[Para [Str "hi"]
|
||||
,RawBlock (Format "latex") "\\hspace{1em}"
|
||||
,RawBlock (Format "tex") "\\hspace{1em}"
|
||||
,Para [Str "there"]]
|
||||
```
|
||||
|
|
|
@ -3,7 +3,7 @@ Handle \write18{..} as raw tex:
|
|||
% pandoc -t native
|
||||
\write18{git --version}
|
||||
^D
|
||||
[RawBlock (Format "latex") "\\write18{git --version}"]
|
||||
[RawBlock (Format "tex") "\\write18{git --version}"]
|
||||
```
|
||||
|
||||
```
|
||||
|
|
|
@ -3,10 +3,11 @@ Pandoc (Meta {unMeta = fromList [("author",MetaList [MetaInlines [Str "Author",S
|
|||
,Header 2 ("blank-line-before-url-in-link-reference",[],[]) [Str "Blank",Space,Str "line",Space,Str "before",Space,Str "URL",Space,Str "in",Space,Str "link",Space,Str "reference"]
|
||||
,Para [Link ("",[],[]) [Str "foo"] ("/url",""),Space,Str "and",Space,Link ("",[],[]) [Str "bar"] ("/url","title")]
|
||||
,Header 2 ("raw-context-environments",[],[]) [Str "Raw",Space,Str "ConTeXt",Space,Str "environments"]
|
||||
,RawBlock (Format "context") "\\placeformula \\startformula\n L_{1} = L_{2}\n \\stopformula"
|
||||
,RawBlock (Format "context") "\\start[a2]\n\\start[a2]\n\\stop[a2]\n\\stop[a2]"
|
||||
,RawBlock (Format "tex") "\\placeformula \\startformula"
|
||||
,Para [Str "L_{1}",Space,Str "=",Space,Str "L_{2}",SoftBreak,RawInline (Format "tex") "\\stopformula"]
|
||||
,RawBlock (Format "tex") "\\start[a2]\n\\start[a2]\n\\stop[a2]\n\\stop[a2]"
|
||||
,Header 2 ("raw-latex-environments",[],[]) [Str "Raw",Space,Str "LaTeX",Space,Str "environments"]
|
||||
,RawBlock (Format "latex") "\\begin{center}\n\\begin{tikzpicture}[baseline={([yshift=+-.5ex]current bounding box.center)}, level distance=24pt]\n\\Tree [.{S} [.NP John\\index{i} ] [.VP [.V likes ] [.NP himself\\index{i,*j} ]]]\n\\end{tikzpicture}\n\\end{center}"
|
||||
,RawBlock (Format "tex") "\\begin{center}\n\\begin{tikzpicture}[baseline={([yshift=+-.5ex]current bounding box.center)}, level distance=24pt]\n\\Tree [.{S} [.NP John\\index{i} ] [.VP [.V likes ] [.NP himself\\index{i,*j} ]]]\n\\end{tikzpicture}\n\\end{center}"
|
||||
,Header 2 ("urls-with-spaces-and-punctuation",[],[]) [Str "URLs",Space,Str "with",Space,Str "spaces",Space,Str "and",Space,Str "punctuation"]
|
||||
,Para [Link ("",[],[]) [Str "foo"] ("/bar%20and%20baz",""),SoftBreak,Link ("",[],[]) [Str "foo"] ("/bar%20and%20baz",""),SoftBreak,Link ("",[],[]) [Str "foo"] ("/bar%20and%20baz",""),SoftBreak,Link ("",[],[]) [Str "foo"] ("bar%20baz","title")]
|
||||
,Para [Link ("",[],[]) [Str "baz"] ("/foo%20foo",""),Space,Link ("",[],[]) [Str "bam"] ("/foo%20fee",""),Space,Link ("",[],[]) [Str "bork"] ("/foo/zee%20zob","title")]
|
||||
|
@ -55,7 +56,7 @@ Pandoc (Meta {unMeta = fromList [("author",MetaList [MetaInlines [Str "Author",S
|
|||
,OrderedList (3,Example,TwoParens)
|
||||
[[Plain [Str "Third",Space,Str "example."]]]
|
||||
,Header 2 ("macros",[],[]) [Str "Macros"]
|
||||
,RawBlock (Format "latex") "\\newcommand{\\tuple}[1]{\\langle #1 \\rangle}"
|
||||
,RawBlock (Format "tex") "\\newcommand{\\tuple}[1]{\\langle #1 \\rangle}"
|
||||
,Para [Math InlineMath "\\langle x,y \\rangle"]
|
||||
,Header 2 ("case-insensitive-references",[],[]) [Str "Case-insensitive",Space,Str "references"]
|
||||
,Para [Link ("",[],[]) [Str "Fum"] ("/fum","")]
|
||||
|
|
|
@ -324,7 +324,7 @@ Pandoc (Meta {unMeta = fromList [("author",MetaList [MetaInlines [Str "John",Spa
|
|||
,[Plain [Str "Shoes",Space,Str "($20)",Space,Str "and",Space,Str "socks",Space,Str "($5)."]]
|
||||
,[Plain [Str "Escaped",Space,Code ("",[],[]) "$",Str ":",Space,Str "$73",Space,Emph [Str "this",Space,Str "should",Space,Str "be",Space,Str "emphasized"],Space,Str "23$."]]]
|
||||
,Para [Str "Here\8217s",Space,Str "a",Space,Str "LaTeX",Space,Str "table:"]
|
||||
,RawBlock (Format "latex") "\\begin{tabular}{|l|l|}\\hline\nAnimal & Number \\\\ \\hline\nDog & 2 \\\\\nCat & 1 \\\\ \\hline\n\\end{tabular}"
|
||||
,RawBlock (Format "tex") "\\begin{tabular}{|l|l|}\\hline\nAnimal & Number \\\\ \\hline\nDog & 2 \\\\\nCat & 1 \\\\ \\hline\n\\end{tabular}"
|
||||
,HorizontalRule
|
||||
,Header 1 ("special-characters",[],[]) [Str "Special",Space,Str "Characters"]
|
||||
,Para [Str "Here",Space,Str "is",Space,Str "some",Space,Str "unicode:"]
|
||||
|
|
|
@ -706,6 +706,12 @@ These shouldn't be math:
|
|||
|
||||
Here's a LaTeX table:
|
||||
|
||||
\begin{tabular}{|l|l|}\hline
|
||||
Animal & Number \\ \hline
|
||||
Dog & 2 \\
|
||||
Cat & 1 \\ \hline
|
||||
\end{tabular}
|
||||
|
||||
\thinrule
|
||||
|
||||
\section[title={Special Characters},reference={special-characters}]
|
||||
|
|
|
@ -534,7 +534,7 @@ These shouldn’t be math:
|
|||
|
||||
Here’s a LaTeX table:
|
||||
|
||||
<literal style="latex">
|
||||
<literal style="tex">
|
||||
\begin{tabular}{|l|l|}\hline
|
||||
Animal & Number \\ \hline
|
||||
Dog & 2 \\
|
||||
|
|
|
@ -324,7 +324,7 @@ Pandoc (Meta {unMeta = fromList [("author",MetaList [MetaInlines [Str "John",Spa
|
|||
,[Plain [Str "Shoes",Space,Str "($20)",Space,Str "and",Space,Str "socks",Space,Str "($5)."]]
|
||||
,[Plain [Str "Escaped",Space,Code ("",[],[]) "$",Str ":",Space,Str "$73",Space,Emph [Str "this",Space,Str "should",Space,Str "be",Space,Str "emphasized"],Space,Str "23$."]]]
|
||||
,Para [Str "Here\8217s",Space,Str "a",Space,Str "LaTeX",Space,Str "table:"]
|
||||
,RawBlock (Format "latex") "\\begin{tabular}{|l|l|}\\hline\nAnimal & Number \\\\ \\hline\nDog & 2 \\\\\nCat & 1 \\\\ \\hline\n\\end{tabular}"
|
||||
,RawBlock (Format "tex") "\\begin{tabular}{|l|l|}\\hline\nAnimal & Number \\\\ \\hline\nDog & 2 \\\\\nCat & 1 \\\\ \\hline\n\\end{tabular}"
|
||||
,HorizontalRule
|
||||
,Header 1 ("special-characters",[],[]) [Str "Special",Space,Str "Characters"]
|
||||
,Para [Str "Here",Space,Str "is",Space,Str "some",Space,Str "unicode:"]
|
||||
|
|
Loading…
Reference in a new issue