diff options
author | John MacFarlane <jgm@berkeley.edu> | 2010-07-15 19:01:00 -0700 |
---|---|---|
committer | John MacFarlane <jgm@berkeley.edu> | 2010-07-15 19:01:00 -0700 |
commit | 57a91f3b6add303ef70aa29a14a8c67123ec7c0f (patch) | |
tree | 3ec6a5f9dcb5e0c9d88d84d2599a68ee5b82a279 | |
parent | 8757da76b0e4c26f722ac4742689739b2b5dfb08 (diff) | |
download | pandoc-57a91f3b6add303ef70aa29a14a8c67123ec7c0f.tar.gz |
Added --webtex option for HTML math.
+ Added --webtex command-line option, with optional parameter.
(Defaults to using google charts API.)
+ Added WebTeX HTMLMathMethod.
+ Removed MimeTeX HTMLMathMethod. (WebTeX is generic and subsumes it.)
+ Modified --mimetex option to use WebTeX.
+ Thanks to lpeterse for the idea and some of the code.
-rw-r--r-- | README | 30 | ||||
-rw-r--r-- | man/man1/pandoc.1.md | 5 | ||||
-rw-r--r-- | src/Text/Pandoc/Shared.hs | 2 | ||||
-rw-r--r-- | src/Text/Pandoc/Writers/HTML.hs | 39 | ||||
-rw-r--r-- | src/pandoc.hs | 18 | ||||
-rw-r--r-- | tests/writer.html | 6 |
6 files changed, 70 insertions, 30 deletions
@@ -351,8 +351,8 @@ For further documentation, see the `pandoc(1)` man page. directly; this provides portability at the price of efficiency. If you plan to use math on several pages, it is much better to link to a copy of `LaTeXMathML.js`, which can be cached. (See `--jsmath`, - `--gladtex`, and `--mimetex` for alternative ways of dealing with - math in HTML.) + `--gladtex`, `--webtex`, and `--mimetex` for alternative ways of + dealing with math in HTML.) `--mathml` : causes `pandoc` to convert all TeX math to MathML. @@ -364,21 +364,29 @@ For further documentation, see the `pandoc(1)` man page. TeX math in HTML, Slidy, or S5. The *url* should point to the jsMath load script (e.g. `jsMath/easy/load.js`). If it is provided, a link to it will be included in the header of standalone HTML documents. - (See `--latexmathml`, `--mimetex`, and `--gladtex` for alternative - ways of dealing with math in HTML.) + (See `--latexmathml`, `--mimetex`, `--webtex`, and `--gladtex` for + alternative ways of dealing with math in HTML.) `--gladtex`*[=url]* : causes TeX formulas to be enclosed in `<eq>` tags in HTML, Slidy, or S5 output. This output can then be processed by [gladTeX] to produce links to images with the typeset formulas. (See `--latexmathml`, - `--jsmath`, and `--mimetex` for alternative ways of dealing with - math in HTML.) + `--jsmath`, `--webtex`, and `--mimetex` for alternative ways of + dealing with math in HTML.) `--mimetex`*[=url]* : causes TeX formulas to be replaced by `<img>` tags linking to the [mimeTeX] CGI script, which will produce images with the typeset - formulas. (See `--latexmathml`, `--jsmath`, and `--gladtex` for alternative - ways of dealing with math in HTML.) + formulas. (See `--latexmathml`, `--jsmath`, `--webtex`, and + `--gladtex` for alternative ways of dealing with math in HTML.) + +`--webtex`*[=url]* +: causes TeX formulas to be replaced by `<img>` tags linking to an + external service that converts TeX formulas to images. The formula + will be concatenated with the URL provided. If no URL + is specified, the Google Chart API is used. (See `--latexmathml`, + `--jsmath`, `--mimetex`, and `--gladtex` for alternative ways of + dealing with math in HTML.) `-i` or `--incremental` : causes all lists in Slidy or S5 output to be displayed incrementally by @@ -1241,6 +1249,12 @@ command-line options selected: gladtex -d myfile-images myfile.htex # produces myfile.html and images in myfile-images +6. If the `--webtex` option is used, TeX formulas will be converted + to `<img>` tags that link to an external script that converts + formulas to images. The formula will be URL-encoded and concatenated + with the URL provided. If no URL is specified, the Google Chart + API will be used (`http://chart.apis.google.com/chart?cht=tx&chl=`). + Inline TeX ---------- diff --git a/man/man1/pandoc.1.md b/man/man1/pandoc.1.md index c829aacae..e1cf67847 100644 --- a/man/man1/pandoc.1.md +++ b/man/man1/pandoc.1.md @@ -136,6 +136,11 @@ should pipe input and output through `iconv`: : Render TeX math using the mimeTeX CGI script. If *URL* is not specified, it is assumed that the script is at `/cgi-bin/mimetex.cgi`. +\--webtex=*URL* +: Render TeX math using an external script. The formula will be + concatenated with the URL provided. If *URL* is not specified, the + Google Chart API will be used. + -i, \--incremental : Make list items in Slidy or S5 display incrementally (one by one). diff --git a/src/Text/Pandoc/Shared.hs b/src/Text/Pandoc/Shared.hs index ac1cf7373..b8eb14177 100644 --- a/src/Text/Pandoc/Shared.hs +++ b/src/Text/Pandoc/Shared.hs @@ -457,7 +457,7 @@ data HTMLMathMethod = PlainMath | LaTeXMathML (Maybe String) -- url of LaTeXMathML.js | JsMath (Maybe String) -- url of jsMath load script | GladTeX - | MimeTeX String -- url of mimetex.cgi + | WebTeX String -- url of TeX->image script. | MathML (Maybe String) -- url of MathMLinHTML.js deriving (Show, Read, Eq) diff --git a/src/Text/Pandoc/Writers/HTML.hs b/src/Text/Pandoc/Writers/HTML.hs index 3f9a417d2..20022e182 100644 --- a/src/Text/Pandoc/Writers/HTML.hs +++ b/src/Text/Pandoc/Writers/HTML.hs @@ -36,6 +36,7 @@ import Text.Pandoc.Templates import Text.Pandoc.Readers.TeXMath import Text.Pandoc.Highlighting ( highlightHtml ) import Text.Pandoc.XML (stripTags, escapeStringForXML) +import Network.HTTP ( urlEncode ) import Numeric ( showHex ) import Data.Char ( ord, toLower ) import Data.List ( isPrefixOf, intersperse ) @@ -462,16 +463,20 @@ inlineToHtml opts inline = -- non-math elements on the page from being treated as math by -- the javascript return $ thespan ! [theclass "LaTeX"] $ - if t == InlineMath - then primHtml ("$" ++ str ++ "$") - else primHtml ("$$" ++ str ++ "$$") - JsMath _ -> - return $ if t == InlineMath - then thespan ! [theclass "math"] $ primHtml str - else thediv ! [theclass "math"] $ primHtml str - MimeTeX url -> - return $ image ! [src (url ++ "?" ++ str), - alt str, title str] + case t of + InlineMath -> primHtml ("$" ++ str ++ "$") + DisplayMath -> primHtml ("$$" ++ str ++ "$$") + JsMath _ -> do + let m = primHtml str + return $ case t of + InlineMath -> thespan ! [theclass "math"] $ m + DisplayMath -> thediv ! [theclass "math"] $ m + WebTeX url -> do + let m = image ! [src (url ++ urlEncode str), + alt str, title str] + return $ case t of + InlineMath -> m + DisplayMath -> br +++ m +++ br GladTeX -> return $ primHtml $ "<EQ>" ++ str ++ "</EQ>" MathML _ -> do @@ -484,12 +489,14 @@ inlineToHtml opts inline = Right r -> return $ primHtml $ ppcElement conf r Left _ -> inlineListToHtml opts - (readTeXMath str) >>= - return . (thespan ! - [theclass "math"]) - PlainMath -> - inlineListToHtml opts (readTeXMath str) >>= - return . (thespan ! [theclass "math"]) ) + (readTeXMath str) >>= return . + (thespan ! [theclass "math"]) + PlainMath -> do + x <- inlineListToHtml opts (readTeXMath str) + let m = thespan ! [theclass "math"] $ x + return $ case t of + InlineMath -> m + DisplayMath -> br +++ m +++ br ) (TeX str) -> case writerHTMLMathMethod opts of LaTeXMathML _ -> do modify (\st -> st {stMath = True}) return $ primHtml str diff --git a/src/pandoc.hs b/src/pandoc.hs index 38db4c6df..9546d6026 100644 --- a/src/pandoc.hs +++ b/src/pandoc.hs @@ -40,7 +40,6 @@ import System.Environment ( getArgs, getProgName, getEnvironment ) import System.Exit ( exitWith, ExitCode (..) ) import System.FilePath import System.Console.GetOpt -import Data.Maybe ( fromMaybe ) import Data.Char ( toLower, isDigit ) import Data.List ( intercalate, isSuffixOf ) import System.Directory ( getAppUserDataDirectory ) @@ -282,11 +281,24 @@ options = , Option "" ["mimetex"] (OptArg - (\arg opt -> return opt { optHTMLMathMethod = MimeTeX - (fromMaybe "/cgi-bin/mimetex.cgi" arg)}) + (\arg opt -> do + let url = case arg of + Just u -> u ++ "?" + Nothing -> "/cgi-bin/mimetex.cgi?" + return opt { optHTMLMathMethod = WebTeX url }) "URL") "" -- "Use mimetex for HTML math" + , Option "" ["webtex"] + (OptArg + (\arg opt -> do + let url = case arg of + Just u -> u + Nothing -> "http://chart.apis.google.com/chart?cht=tx&chl=" + return opt { optHTMLMathMethod = WebTeX url }) + "URL") + "" -- "Use web service for HTML math" + , Option "" ["jsmath"] (OptArg (\arg opt -> return opt { optHTMLMathMethod = JsMath arg}) diff --git a/tests/writer.html b/tests/writer.html index b8296a536..adf0bb9ca 100644 --- a/tests/writer.html +++ b/tests/writer.html @@ -855,9 +855,11 @@ Blah ></span >-Tree</li ><li - >Here’s some display math: <span class="math" + >Here’s some display math: <br + /><span class="math" >$\frac{d}{dx}f(x)=\lim_{h\to 0}\frac{f(x+h)-f(x)}{h}$</span - ></li + ><br + /></li ><li >Here’s one that has a line break in it: <span class="math" >α + ω × <em |