Implement MathJax support
* lisp/org-exp.el (org-export-with-LaTeX-fragments): New default t, which now means to use MathJax processing for HTML. Also allow new value `dvipng' to force the old image processing. (org-infile-export-plist): Parse for MATHJAX setup line. * lisp/org-html.el (org-export-html-mathjax-options): New option. (org-export-html-mathjax-config): New function. (org-export-html-mathjax-template): New option. (org-export-html-preprocess): Call the LaTeX snippet processor with an additional argument to declare special ways of processing. (org-export-as-html): Bind the dynamical variable `org-export-have-math'. Insert the MathJax script template when it is needed by the document. * lisp/org.el (org-preview-latex-fragment): Call `org-format-latex' with the additional processing argument. (org-export-have-math): New variable, for dynamic scoping. (org-format-latex): Implement specific ways of processing. New function argument for processing type. (org-org-menu): Remove the entry to configure LaTeX snippet processing. MathJax is now the default for displaying math in a browser.
This commit is contained in:
parent
d17cc96fc7
commit
999078b0bf
138
doc/org.texi
138
doc/org.texi
|
@ -363,6 +363,7 @@ HTML export
|
||||||
* Links in HTML export:: How links will be interpreted and formatted
|
* Links in HTML export:: How links will be interpreted and formatted
|
||||||
* Tables in HTML export:: How to modify the formatting of tables
|
* Tables in HTML export:: How to modify the formatting of tables
|
||||||
* Images in HTML export:: How to insert figures into HTML output
|
* Images in HTML export:: How to insert figures into HTML output
|
||||||
|
* Math formatting in HTML export:: Beautiful math also on the web
|
||||||
* Text areas in HTML export:: An alternative way to show an example
|
* Text areas in HTML export:: An alternative way to show an example
|
||||||
* CSS support:: Changing the appearance of the output
|
* CSS support:: Changing the appearance of the output
|
||||||
* JavaScript support:: Info and Folding in a web browser
|
* JavaScript support:: Info and Folding in a web browser
|
||||||
|
@ -439,12 +440,17 @@ Using header arguments
|
||||||
Specific header arguments
|
Specific header arguments
|
||||||
|
|
||||||
* var:: Pass arguments to code blocks
|
* var:: Pass arguments to code blocks
|
||||||
* results:: Specify the type of results and how they will be collected and handled
|
* results:: Specify the type of results and how they will
|
||||||
|
be collected and handled
|
||||||
* file:: Specify a path for file output
|
* file:: Specify a path for file output
|
||||||
* dir:: Specify the default directory for code block execution
|
* dir:: Specify the default (possibly remote)
|
||||||
|
directory for code block execution
|
||||||
* exports:: Export code and/or results
|
* exports:: Export code and/or results
|
||||||
* tangle:: Toggle tangling and specify file name
|
* tangle:: Toggle tangling and specify file name
|
||||||
* no-expand:: Turn off variable assignment and noweb expansion during tangling
|
* comments:: Toggle insertion of comments in tangled
|
||||||
|
code files
|
||||||
|
* no-expand:: Turn off variable assignment and noweb
|
||||||
|
expansion during tangling
|
||||||
* session:: Preserve the state of code evaluation
|
* session:: Preserve the state of code evaluation
|
||||||
* noweb:: Toggle expansion of noweb references
|
* noweb:: Toggle expansion of noweb references
|
||||||
* cache:: Avoid re-evaluating unchanged code blocks
|
* cache:: Avoid re-evaluating unchanged code blocks
|
||||||
|
@ -452,6 +458,7 @@ Specific header arguments
|
||||||
* colnames:: Handle column names in tables
|
* colnames:: Handle column names in tables
|
||||||
* rownames:: Handle row names in tables
|
* rownames:: Handle row names in tables
|
||||||
* shebang:: Make tangled files executable
|
* shebang:: Make tangled files executable
|
||||||
|
* eval:: Limit evaluation of specific code blocks
|
||||||
|
|
||||||
Miscellaneous
|
Miscellaneous
|
||||||
|
|
||||||
|
@ -8818,12 +8825,9 @@ is a macro system based on Donald E. Knuth's @TeX{} system. Many of the
|
||||||
features described here as ``La@TeX{}'' are really from @TeX{}, but for
|
features described here as ``La@TeX{}'' are really from @TeX{}, but for
|
||||||
simplicity I am blurring this distinction.} is widely used to typeset
|
simplicity I am blurring this distinction.} is widely used to typeset
|
||||||
scientific documents. Org-mode supports embedding La@TeX{} code into its
|
scientific documents. Org-mode supports embedding La@TeX{} code into its
|
||||||
files, because many academics are used to reading La@TeX{} source code, and
|
files, because many academics are used to writing and reading La@TeX{} source
|
||||||
because it can be readily processed into images for HTML production.
|
code, and because it can be readily processed to produce pretty output for a
|
||||||
|
number of export backends.
|
||||||
It is not necessary to mark La@TeX{} macros and code in any special way.
|
|
||||||
If you observe a few conventions, Org-mode knows how to find it and what
|
|
||||||
to do with it.
|
|
||||||
|
|
||||||
@menu
|
@menu
|
||||||
* Special symbols:: Greek letters and other symbols
|
* Special symbols:: Greek letters and other symbols
|
||||||
|
@ -8867,7 +8871,7 @@ La@TeX{}, see the variable @code{org-entities} for the complete list.
|
||||||
@samp{...} are all converted into special commands creating hyphens of
|
@samp{...} are all converted into special commands creating hyphens of
|
||||||
different lengths or a compact set of dots.
|
different lengths or a compact set of dots.
|
||||||
|
|
||||||
If you would like to see entities displayed as utf8 characters, use the
|
If you would like to see entities displayed as UTF8 characters, use the
|
||||||
following command@footnote{You can turn this on by default by setting the
|
following command@footnote{You can turn this on by default by setting the
|
||||||
variable @code{org-pretty-entities}, or on a per-file base with the
|
variable @code{org-pretty-entities}, or on a per-file base with the
|
||||||
@code{#+STARTUP} option @code{entitiespretty}.}:
|
@code{#+STARTUP} option @code{entitiespretty}.}:
|
||||||
|
@ -8908,6 +8912,9 @@ convention, or use, on a per-file basis:
|
||||||
#+OPTIONS: ^:@{@}
|
#+OPTIONS: ^:@{@}
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
|
@noindent With this setting, @samp{a_b} will not be interpreted as a
|
||||||
|
subscript, but @samp{a_@{b@}} will.
|
||||||
|
|
||||||
@table @kbd
|
@table @kbd
|
||||||
@kindex C-c C-x \
|
@kindex C-c C-x \
|
||||||
@item C-c C-x \
|
@item C-c C-x \
|
||||||
|
@ -8920,31 +8927,31 @@ format sub- and superscripts in a WYSIWYM way.
|
||||||
@cindex La@TeX{} fragments
|
@cindex La@TeX{} fragments
|
||||||
|
|
||||||
@vindex org-format-latex-header
|
@vindex org-format-latex-header
|
||||||
With symbols, sub- and superscripts, HTML is pretty much at its end when
|
Going beyond symbols and sub- and superscripts, a full formula language is
|
||||||
it comes to representing mathematical formulas@footnote{Yes, there is
|
needed. Org-mode can contain La@TeX{} math fragments, and it supports ways
|
||||||
MathML, but that is not yet fully supported by many browsers, and there
|
to process these for several export backends. When exporting to La@TeX{},
|
||||||
is no decent converter for turning La@TeX{} or ASCII representations of
|
the code is obviously left as it is. When exporting to HTML, Org invokes the
|
||||||
formulas into MathML. So for the time being, converting formulas into
|
@uref{http://www.mathjax.org, MathJax library} (@pxref{Math formatting in
|
||||||
images seems the way to go.}. More complex expressions need a dedicated
|
HTML export}) to process and display the math@footnote{If you plan to use
|
||||||
formula processor. To this end, Org-mode can contain arbitrary La@TeX{}
|
this regularly or on pages with significant page views, you should install
|
||||||
fragments. It provides commands to preview the typeset result of these
|
@file{MathJax} on your own server in order to limit the load of our server.}.
|
||||||
fragments, and upon export to HTML, all fragments will be converted to
|
Finally, it can also process the mathematical expressions into
|
||||||
images and inlined into the HTML document@footnote{The La@TeX{} export
|
images@footnote{For this to work you need to be on a system with a working
|
||||||
will not use images for displaying La@TeX{} fragments but include these
|
La@TeX{} installation. You also need the @file{dvipng} program, available at
|
||||||
fragments directly into the La@TeX{} code.}. For this to work you
|
@url{http://sourceforge.net/projects/dvipng/}. The La@TeX{} header that will
|
||||||
need to be on a system with a working La@TeX{} installation. You also
|
be used when processing a fragment can be configured with the variable
|
||||||
need the @file{dvipng} program, available at
|
@code{org-format-latex-header}.} that can be displayed in a browser or in
|
||||||
@url{http://sourceforge.net/projects/dvipng/}. The La@TeX{} header that
|
DocBook documents.
|
||||||
will be used when processing a fragment can be configured with the
|
|
||||||
variable @code{org-format-latex-header}.
|
|
||||||
|
|
||||||
La@TeX{} fragments don't need any special marking at all. The following
|
La@TeX{} fragments don't need any special marking at all. The following
|
||||||
snippets will be identified as La@TeX{} source code:
|
snippets will be identified as La@TeX{} source code:
|
||||||
@itemize @bullet
|
@itemize @bullet
|
||||||
@item
|
@item
|
||||||
Environments of any kind. The only requirement is that the
|
Environments of any kind@footnote{When @file{MathJax} is used, only the
|
||||||
@code{\begin} statement appears on a new line, preceded by only
|
environment recognized by @file{MathJax} will be processed. When dvipng is
|
||||||
whitespace.
|
used to create images, any La@TeX{} environments will be handled.}. The only
|
||||||
|
requirement is that the @code{\begin} statement appears on a new line,
|
||||||
|
preceded by only whitespace.
|
||||||
@item
|
@item
|
||||||
Text within the usual La@TeX{} math delimiters. To avoid conflicts with
|
Text within the usual La@TeX{} math delimiters. To avoid conflicts with
|
||||||
currency specifications, single @samp{$} characters are only recognized as
|
currency specifications, single @samp{$} characters are only recognized as
|
||||||
|
@ -8972,12 +8979,26 @@ If you need any of the delimiter ASCII sequences for other purposes, you
|
||||||
can configure the option @code{org-format-latex-options} to deselect the
|
can configure the option @code{org-format-latex-options} to deselect the
|
||||||
ones you do not wish to have interpreted by the La@TeX{} converter.
|
ones you do not wish to have interpreted by the La@TeX{} converter.
|
||||||
|
|
||||||
|
@vindex org-export-with-LaTeX-fragments
|
||||||
|
LaTeX processing can be configured with the variable
|
||||||
|
@code{org-export-with-LaTeX-fragments}. The default setting is @code{t}
|
||||||
|
which means @file{MathJax} for HTML, and no processing for DocBook, ASCII and
|
||||||
|
LaTeX backends. You can also set this variable on a per-file basis using one
|
||||||
|
of these lines:
|
||||||
|
|
||||||
|
@example
|
||||||
|
#+OPTIONS: LaTeX:t @r{Do the right thing automatically (MathJax)}
|
||||||
|
#+OPTIONS: LaTeX:dvipng @r{Force using dvipng images}
|
||||||
|
#+OPTIONS: LaTeX:nil @r{Do not process La@TeX{} fragments at all}
|
||||||
|
#+OPTIONS: LaTeX:verbatim @r{Verbatim export, for jsMath or so}
|
||||||
|
@end example
|
||||||
|
|
||||||
@node Previewing LaTeX fragments, CDLaTeX mode, LaTeX fragments, Embedded LaTeX
|
@node Previewing LaTeX fragments, CDLaTeX mode, LaTeX fragments, Embedded LaTeX
|
||||||
@subsection Previewing LaTeX fragments
|
@subsection Previewing LaTeX fragments
|
||||||
@cindex LaTeX fragments, preview
|
@cindex LaTeX fragments, preview
|
||||||
|
|
||||||
La@TeX{} fragments can be processed to produce preview images of the
|
If you have @file{dvipng} installed, La@TeX{} fragments can be processed to
|
||||||
typeset expressions:
|
produce preview images of the typeset expressions:
|
||||||
|
|
||||||
@table @kbd
|
@table @kbd
|
||||||
@kindex C-c C-x C-l
|
@kindex C-c C-x C-l
|
||||||
|
@ -8999,14 +9020,6 @@ some aspects of the preview. In particular, the @code{:scale} (and for HTML
|
||||||
export, @code{:html-scale}) property can be used to adjust the size of the
|
export, @code{:html-scale}) property can be used to adjust the size of the
|
||||||
preview images.
|
preview images.
|
||||||
|
|
||||||
During HTML export (@pxref{HTML export}), all La@TeX{} fragments are
|
|
||||||
converted into images and inlined into the document if the following
|
|
||||||
setting is active:
|
|
||||||
|
|
||||||
@lisp
|
|
||||||
(setq org-export-with-LaTeX-fragments t)
|
|
||||||
@end lisp
|
|
||||||
|
|
||||||
@node CDLaTeX mode, , Previewing LaTeX fragments, Embedded LaTeX
|
@node CDLaTeX mode, , Previewing LaTeX fragments, Embedded LaTeX
|
||||||
@subsection Using CDLa@TeX{} to enter math
|
@subsection Using CDLa@TeX{} to enter math
|
||||||
@cindex CDLa@TeX{}
|
@cindex CDLa@TeX{}
|
||||||
|
@ -9224,7 +9237,7 @@ tags: @r{turn on/off inclusion of tags, may also be @code{not-in-toc}}
|
||||||
<: @r{turn on/off inclusion of any time/date stamps like DEADLINES}
|
<: @r{turn on/off inclusion of any time/date stamps like DEADLINES}
|
||||||
*: @r{turn on/off emphasized text (bold, italic, underlined)}
|
*: @r{turn on/off emphasized text (bold, italic, underlined)}
|
||||||
TeX: @r{turn on/off simple @TeX{} macros in plain text}
|
TeX: @r{turn on/off simple @TeX{} macros in plain text}
|
||||||
LaTeX: @r{turn on/off La@TeX{} fragments}
|
LaTeX: @r{configure export of La@TeX{} fragments. Default @code{auto}}
|
||||||
skip: @r{turn on/off skipping the text before the first heading}
|
skip: @r{turn on/off skipping the text before the first heading}
|
||||||
author: @r{turn on/off inclusion of author name/email into exported file}
|
author: @r{turn on/off inclusion of author name/email into exported file}
|
||||||
email: @r{turn on/off inclusion of author email into exported file}
|
email: @r{turn on/off inclusion of author email into exported file}
|
||||||
|
@ -9357,6 +9370,7 @@ language, but with additional support for tables.
|
||||||
* Links in HTML export:: How links will be interpreted and formatted
|
* Links in HTML export:: How links will be interpreted and formatted
|
||||||
* Tables in HTML export:: How to modify the formatting of tables
|
* Tables in HTML export:: How to modify the formatting of tables
|
||||||
* Images in HTML export:: How to insert figures into HTML output
|
* Images in HTML export:: How to insert figures into HTML output
|
||||||
|
* Math formatting in HTML export:: Beautiful math also on the web
|
||||||
* Text areas in HTML export:: An alternative way to show an example
|
* Text areas in HTML export:: An alternative way to show an example
|
||||||
* CSS support:: Changing the appearance of the output
|
* CSS support:: Changing the appearance of the output
|
||||||
* JavaScript support:: Info and Folding in a web browser
|
* JavaScript support:: Info and Folding in a web browser
|
||||||
|
@ -9492,7 +9506,7 @@ tables, place something like the following before the table:
|
||||||
#+ATTR_HTML: border="2" rules="all" frame="all"
|
#+ATTR_HTML: border="2" rules="all" frame="all"
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
@node Images in HTML export, Text areas in HTML export, Tables in HTML export, HTML export
|
@node Images in HTML export, Math formatting in HTML export, Tables in HTML export, HTML export
|
||||||
@subsection Images in HTML export
|
@subsection Images in HTML export
|
||||||
|
|
||||||
@cindex images, inline in HTML
|
@cindex images, inline in HTML
|
||||||
|
@ -9529,7 +9543,41 @@ support text viewers and accessibility, and align it to the right.
|
||||||
@noindent
|
@noindent
|
||||||
and you could use @code{http} addresses just as well.
|
and you could use @code{http} addresses just as well.
|
||||||
|
|
||||||
@node Text areas in HTML export, CSS support, Images in HTML export, HTML export
|
@node Math formatting in HTML export, Text areas in HTML export, Images in HTML export, HTML export
|
||||||
|
@subsection Math formatting in HTML export
|
||||||
|
@cindex MathJax
|
||||||
|
@cindex dvipng
|
||||||
|
|
||||||
|
La@TeX{} math snippets (@pxref{LaTeX fragments}) can be displayed in two
|
||||||
|
different ways on HTML pages. The default is to use the
|
||||||
|
@uref{http://www.mathjax.org, MathJax system} which should work out of the
|
||||||
|
box with Org mode installation because @code{http://orgmode.org} serves
|
||||||
|
@file{MathJax} for Org-mode users for small applications and for testing
|
||||||
|
purposes. @b{If you plan to use this regularly or on pages with significant
|
||||||
|
page views, you should install MathJax on your own server in order to limit
|
||||||
|
the load of our server.} To configure @file{MathJax}, use the variable
|
||||||
|
@code{org-export-html-mathjax-options} or insert something like the following
|
||||||
|
into the buffer:
|
||||||
|
|
||||||
|
@example
|
||||||
|
#+MATHJAX: align:"left" mathml:t path:"/MathJax/MathJax.js"
|
||||||
|
@end example
|
||||||
|
|
||||||
|
@noindent See the docstring of the variable
|
||||||
|
@code{org-export-html-mathjax-options} for the meaning of the parameters in
|
||||||
|
this line.
|
||||||
|
|
||||||
|
If you prefer, you can also request that La@TeX{} are processed into small
|
||||||
|
images that will be inserted into the browser page. Before the availability
|
||||||
|
of MathJax, this was the default method for Org files. This method requires
|
||||||
|
that the @file{dvipng} program is available on your system. You can still
|
||||||
|
get this processing with
|
||||||
|
|
||||||
|
@example
|
||||||
|
#+OPTIONS: LaTeX:dvipng
|
||||||
|
@end example
|
||||||
|
|
||||||
|
@node Text areas in HTML export, CSS support, Math formatting in HTML export, HTML export
|
||||||
@subsection Text areas in HTML export
|
@subsection Text areas in HTML export
|
||||||
|
|
||||||
@cindex text areas, in HTML
|
@cindex text areas, in HTML
|
||||||
|
@ -11455,10 +11503,10 @@ The following header arguments are defined:
|
||||||
directory for code block execution
|
directory for code block execution
|
||||||
* exports:: Export code and/or results
|
* exports:: Export code and/or results
|
||||||
* tangle:: Toggle tangling and specify file name
|
* tangle:: Toggle tangling and specify file name
|
||||||
* no-expand:: Turn off variable assignment and noweb
|
|
||||||
expansion during tangling
|
|
||||||
* comments:: Toggle insertion of comments in tangled
|
* comments:: Toggle insertion of comments in tangled
|
||||||
code files
|
code files
|
||||||
|
* no-expand:: Turn off variable assignment and noweb
|
||||||
|
expansion during tangling
|
||||||
* session:: Preserve the state of code evaluation
|
* session:: Preserve the state of code evaluation
|
||||||
* noweb:: Toggle expansion of noweb references
|
* noweb:: Toggle expansion of noweb references
|
||||||
* cache:: Avoid re-evaluating unchanged code blocks
|
* cache:: Avoid re-evaluating unchanged code blocks
|
||||||
|
|
|
@ -471,20 +471,34 @@ This option can also be set with the +OPTIONS line, e.g. \"TeX:nil\"."
|
||||||
:group 'org-export-latex
|
:group 'org-export-latex
|
||||||
:type 'boolean)
|
:type 'boolean)
|
||||||
|
|
||||||
(defcustom org-export-with-LaTeX-fragments nil
|
(defcustom org-export-with-LaTeX-fragments t
|
||||||
"Non-nil means convert LaTeX fragments to images when exporting to HTML.
|
"Non-nil means process LaTeX math fragments for HTML display.
|
||||||
When set, the exporter will find LaTeX environments if the \\begin line is
|
When set, the exporter will find and process LaTeX environments if the
|
||||||
the first non-white thing on a line. It will also find the math delimiters
|
\\begin line is the first non-white thing on a line. It will also find
|
||||||
like $a=b$ and \\( a=b \\) for inline math, $$a=b$$ and \\[ a=b \\] for
|
and process the math delimiters like $a=b$ and \\( a=b \\) for inline math,
|
||||||
display math.
|
$$a=b$$ and \\[ a=b \\] for display math.
|
||||||
|
|
||||||
This option can also be set with the +OPTIONS line, e.g. \"LaTeX:t\".
|
This option can also be set with the +OPTIONS line, e.g. \"LaTeX:mathjax\".
|
||||||
|
|
||||||
|
Allowed values are:
|
||||||
|
|
||||||
|
nil Don't do anything.
|
||||||
|
verbatim Keep eveything in verbatim
|
||||||
|
dvipng Process the LaTeX fragments to images.
|
||||||
|
This will also include processing of non-math environments.
|
||||||
|
t Do MathJax preprocessing if there is at least on math snippet,
|
||||||
|
and arrange for MathJax.js to be loaded.
|
||||||
|
|
||||||
The default is nil, because this option needs the `dvipng' program which
|
The default is nil, because this option needs the `dvipng' program which
|
||||||
is not available on all systems."
|
is not available on all systems."
|
||||||
:group 'org-export-translation
|
:group 'org-export-translation
|
||||||
:group 'org-export-latex
|
:group 'org-export-latex
|
||||||
:type 'boolean)
|
:type '(choice
|
||||||
|
(const :tag "Do not process math in any way" nil)
|
||||||
|
(const :tag "Obsolete, use dvipng setting" t)
|
||||||
|
(const :tag "Use dvipng to make images" dvipng)
|
||||||
|
(const :tag "Use MathJax to display math" mathjax)
|
||||||
|
(const :tag "Leave math verbatim" verbatim)))
|
||||||
|
|
||||||
(defcustom org-export-with-fixed-width t
|
(defcustom org-export-with-fixed-width t
|
||||||
"Non-nil means lines starting with \":\" will be in fixed width font.
|
"Non-nil means lines starting with \":\" will be in fixed width font.
|
||||||
|
@ -675,12 +689,13 @@ modified) list.")
|
||||||
(let ((re (org-make-options-regexp
|
(let ((re (org-make-options-regexp
|
||||||
(append
|
(append
|
||||||
'("TITLE" "AUTHOR" "DATE" "EMAIL" "TEXT" "OPTIONS" "LANGUAGE"
|
'("TITLE" "AUTHOR" "DATE" "EMAIL" "TEXT" "OPTIONS" "LANGUAGE"
|
||||||
|
"MATHJAX"
|
||||||
"LINK_UP" "LINK_HOME" "SETUPFILE" "STYLE"
|
"LINK_UP" "LINK_HOME" "SETUPFILE" "STYLE"
|
||||||
"LATEX_HEADER" "LATEX_CLASS"
|
"LATEX_HEADER" "LATEX_CLASS"
|
||||||
"EXPORT_SELECT_TAGS" "EXPORT_EXCLUDE_TAGS"
|
"EXPORT_SELECT_TAGS" "EXPORT_EXCLUDE_TAGS"
|
||||||
"KEYWORDS" "DESCRIPTION" "MACRO" "BIND" "XSLT")
|
"KEYWORDS" "DESCRIPTION" "MACRO" "BIND" "XSLT")
|
||||||
(mapcar 'car org-export-inbuffer-options-extra))))
|
(mapcar 'car org-export-inbuffer-options-extra))))
|
||||||
p key val text options a pr style
|
p key val text options mathjax a pr style
|
||||||
latex-header latex-class macros letbind
|
latex-header latex-class macros letbind
|
||||||
ext-setup-or-nil setup-contents (start 0))
|
ext-setup-or-nil setup-contents (start 0))
|
||||||
(while (or (and ext-setup-or-nil
|
(while (or (and ext-setup-or-nil
|
||||||
|
@ -712,6 +727,8 @@ modified) list.")
|
||||||
(setq text (if text (concat text "\n" val) val)))
|
(setq text (if text (concat text "\n" val) val)))
|
||||||
((string-equal key "OPTIONS")
|
((string-equal key "OPTIONS")
|
||||||
(setq options (concat val " " options)))
|
(setq options (concat val " " options)))
|
||||||
|
((string-equal key "MATHJAX")
|
||||||
|
(setq mathjax (concat val " " mathjax)))
|
||||||
((string-equal key "BIND")
|
((string-equal key "BIND")
|
||||||
(push (read (concat "(" val ")")) letbind))
|
(push (read (concat "(" val ")")) letbind))
|
||||||
((string-equal key "XSLT")
|
((string-equal key "XSLT")
|
||||||
|
@ -748,6 +765,8 @@ modified) list.")
|
||||||
(setq p (plist-put p :latex-class latex-class)))
|
(setq p (plist-put p :latex-class latex-class)))
|
||||||
(when options
|
(when options
|
||||||
(setq p (org-export-add-options-to-plist p options)))
|
(setq p (org-export-add-options-to-plist p options)))
|
||||||
|
(when mathjax
|
||||||
|
(setq p (plist-put p :mathjax mathjax)))
|
||||||
;; Add macro definitions
|
;; Add macro definitions
|
||||||
(setq p (plist-put p :macro-date "(eval (format-time-string \"$1\"))"))
|
(setq p (plist-put p :macro-date "(eval (format-time-string \"$1\"))"))
|
||||||
(setq p (plist-put p :macro-time "(eval (format-time-string \"$1\"))"))
|
(setq p (plist-put p :macro-time "(eval (format-time-string \"$1\"))"))
|
||||||
|
|
127
lisp/org-html.el
127
lisp/org-html.el
|
@ -209,6 +209,112 @@ settings with <style>...</style> tags."
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
(put 'org-export-html-style-extra 'safe-local-variable 'stringp)
|
(put 'org-export-html-style-extra 'safe-local-variable 'stringp)
|
||||||
|
|
||||||
|
(defcustom org-export-html-mathjax-options
|
||||||
|
'((path "http://orgmode.org/mathjax/MathJax.js")
|
||||||
|
(scale "100")
|
||||||
|
(align "center")
|
||||||
|
(indent "2em")
|
||||||
|
(mathml nil))
|
||||||
|
"Options for MathJax setup.
|
||||||
|
|
||||||
|
path The path where to find MathJax
|
||||||
|
scale Scaling for the HTML-CSS backend, usually between 100 and 133
|
||||||
|
align How to align display math: left, center, or right
|
||||||
|
indent If align is not center, how far from the left/right side?
|
||||||
|
mathml Should a MathML player be used if available?
|
||||||
|
This is faster and reduces bandwidth use, but currently
|
||||||
|
sometimes has lower spacing quality. Therefore, the default is
|
||||||
|
nil. When browsers get better, this switch can be flipped.
|
||||||
|
|
||||||
|
You can also customize this for each buffer, using something like
|
||||||
|
|
||||||
|
#+MATHJAX: scale:\"133\" align:\"right\" mathml:t path:\"/MathJax/\""
|
||||||
|
:group 'org-export-html
|
||||||
|
:type '(list :greedy t
|
||||||
|
(list :tag "path (the path from where to load MathJax.js)"
|
||||||
|
(const :format " " path) (string))
|
||||||
|
(list :tag "scale (scaling for the displayed math)"
|
||||||
|
(const :format " " scale) (string))
|
||||||
|
(list :tag "align (alignment of displayed equations)"
|
||||||
|
(const :format " " align) (string))
|
||||||
|
(list :tag "indent (indentation with left or right alignment)"
|
||||||
|
(const :format " " indent) (string))
|
||||||
|
(list :tag "mathml (should MathML display be used is possible)"
|
||||||
|
(const :format " " mathml) (boolean))))
|
||||||
|
|
||||||
|
(defun org-export-html-mathjax-config (template options in-buffer)
|
||||||
|
"Insert the user setup into the matchjax template."
|
||||||
|
(let (name val (yes " ") (no "// ") x)
|
||||||
|
(mapc
|
||||||
|
(lambda (e)
|
||||||
|
(setq name (car e) val (nth 1 e))
|
||||||
|
(if (string-match (concat "\\<" (symbol-name name) ":") in-buffer)
|
||||||
|
(setq val (car (read-from-string
|
||||||
|
(substring in-buffer (match-end 0))))))
|
||||||
|
(if (not (stringp val)) (setq val (format "%s" val)))
|
||||||
|
(if (string-match (concat "%" (upcase (symbol-name name))) template)
|
||||||
|
(setq template (replace-match val t t template))))
|
||||||
|
options)
|
||||||
|
(setq val (nth 1 (assq 'mathml options)))
|
||||||
|
(if (string-match (concat "\\<mathml:") in-buffer)
|
||||||
|
(setq val (car (read-from-string
|
||||||
|
(substring in-buffer (match-end 0))))))
|
||||||
|
;; Exchange prefixes depending on mathml setting
|
||||||
|
(if (not val) (setq x yes yes no no x))
|
||||||
|
;; Replace cookies to turn on or off the config/jax lines
|
||||||
|
(if (string-match ":MMLYES:" template)
|
||||||
|
(setq template (replace-match yes t t template)))
|
||||||
|
(if (string-match ":MMLNO:" template)
|
||||||
|
(setq template (replace-match no t t template)))
|
||||||
|
;; Return the modified template
|
||||||
|
template))
|
||||||
|
|
||||||
|
(defcustom org-export-html-mathjax-template
|
||||||
|
"<script type=\"text/javascript\" src=\"%PATH\">
|
||||||
|
<!--/*--><![CDATA[/*><!--*/
|
||||||
|
MathJax.Hub.Config({
|
||||||
|
// Only one of the two following lines, depending on user settings
|
||||||
|
// First allows browser-native MathML display, second forces HTML/CSS
|
||||||
|
:MMLYES: config: [\"MMLorHTML.js\"], jax: [\"input/TeX\"],
|
||||||
|
:MMLNO: jax: [\"input/TeX\", \"output/HTML-CSS\"],
|
||||||
|
extensions: [\"tex2jax.js\",\"TeX/AMSmath.js\",\"TeX/AMSsymbols.js\",
|
||||||
|
\"TeX/noUndefined.js\"],
|
||||||
|
tex2jax: {
|
||||||
|
inlineMath: [ [\"\\\\(\",\"\\\\)\"] ],
|
||||||
|
displayMath: [ ['$$','$$'], [\"\\\\[\",\"\\\\]\"] ],
|
||||||
|
skipTags: [\"script\",\"noscript\",\"style\",\"textarea\",\"pre\",\"code\"],
|
||||||
|
ignoreClass: \"tex2jax_ignore\",
|
||||||
|
processEscapes: false,
|
||||||
|
processEnvironments: true,
|
||||||
|
preview: \"TeX\"
|
||||||
|
},
|
||||||
|
showProcessingMessages: true,
|
||||||
|
displayAlign: \"%ALIGN\",
|
||||||
|
displayIndent: \"%INDENT\",
|
||||||
|
|
||||||
|
\"HTML-CSS\": {
|
||||||
|
scale: %SCALE,
|
||||||
|
availableFonts: [\"STIX\",\"TeX\"],
|
||||||
|
preferredFont: \"TeX\",
|
||||||
|
webFont: \"TeX\",
|
||||||
|
imageFont: \"TeX\",
|
||||||
|
showMathMenu: true,
|
||||||
|
},
|
||||||
|
MMLorHTML: {
|
||||||
|
prefer: {
|
||||||
|
MSIE: \"MML\",
|
||||||
|
Firefox: \"MML\",
|
||||||
|
Opera: \"HTML\",
|
||||||
|
other: \"HTML\"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
/*]]>*///-->
|
||||||
|
</script>"
|
||||||
|
"The MathJax setup for XHTML files."
|
||||||
|
:group 'org-export-html
|
||||||
|
:type 'string)
|
||||||
|
|
||||||
(defcustom org-export-html-tag-class-prefix ""
|
(defcustom org-export-html-tag-class-prefix ""
|
||||||
"Prefix to class names for TODO keywords.
|
"Prefix to class names for TODO keywords.
|
||||||
Each tag gets a class given by the tag itself, with this prefix.
|
Each tag gets a class given by the tag itself, with this prefix.
|
||||||
|
@ -439,7 +545,13 @@ This may also be a function, building and inserting the postamble.")
|
||||||
(file-name-nondirectory
|
(file-name-nondirectory
|
||||||
org-current-export-file)))
|
org-current-export-file)))
|
||||||
org-current-export-dir nil "Creating LaTeX image %s"
|
org-current-export-dir nil "Creating LaTeX image %s"
|
||||||
nil nil (eq (plist-get parameters :LaTeX-fragments) 'verbatim)))
|
nil nil
|
||||||
|
(cond
|
||||||
|
((eq (plist-get parameters :LaTeX-fragments) 'verbatim) 'verbatim)
|
||||||
|
((eq (plist-get parameters :LaTeX-fragments) 'mathjax ) 'mathjax)
|
||||||
|
((eq (plist-get parameters :LaTeX-fragments) t ) 'mathjax)
|
||||||
|
((eq (plist-get parameters :LaTeX-fragments) 'dvipng ) 'dvipng)
|
||||||
|
(t nil))))
|
||||||
(goto-char (point-min))
|
(goto-char (point-min))
|
||||||
(let (label l1)
|
(let (label l1)
|
||||||
(while (re-search-forward "\\\\ref{\\([^{}\n]+\\)}" nil t)
|
(while (re-search-forward "\\\\ref{\\([^{}\n]+\\)}" nil t)
|
||||||
|
@ -812,6 +924,7 @@ PUB-DIR is set, use this as the publishing directory."
|
||||||
(buffer-substring
|
(buffer-substring
|
||||||
(if region-p (region-beginning) (point-min))
|
(if region-p (region-beginning) (point-min))
|
||||||
(if region-p (region-end) (point-max))))
|
(if region-p (region-end) (point-max))))
|
||||||
|
(org-export-have-math nil)
|
||||||
(lines
|
(lines
|
||||||
(org-split-string
|
(org-split-string
|
||||||
(org-export-preprocess-string
|
(org-export-preprocess-string
|
||||||
|
@ -835,6 +948,16 @@ PUB-DIR is set, use this as the publishing directory."
|
||||||
:LaTeX-fragments
|
:LaTeX-fragments
|
||||||
(plist-get opt-plist :LaTeX-fragments))
|
(plist-get opt-plist :LaTeX-fragments))
|
||||||
"[\r\n]"))
|
"[\r\n]"))
|
||||||
|
(mathjax
|
||||||
|
(if (or (eq (plist-get opt-plist :LaTeX-fragments) 'mathjax)
|
||||||
|
(and org-export-have-math
|
||||||
|
(eq (plist-get opt-plist :LaTeX-fragments) t)))
|
||||||
|
|
||||||
|
(org-export-html-mathjax-config
|
||||||
|
org-export-html-mathjax-template
|
||||||
|
org-export-html-mathjax-options
|
||||||
|
(or (plist-get opt-plist :mathjax) ""))
|
||||||
|
""))
|
||||||
table-open type
|
table-open type
|
||||||
table-buffer table-orig-buffer
|
table-buffer table-orig-buffer
|
||||||
ind item-type starter didclose
|
ind item-type starter didclose
|
||||||
|
@ -904,6 +1027,7 @@ lang=\"%s\" xml:lang=\"%s\">
|
||||||
<meta name=\"description\" content=\"%s\"/>
|
<meta name=\"description\" content=\"%s\"/>
|
||||||
<meta name=\"keywords\" content=\"%s\"/>
|
<meta name=\"keywords\" content=\"%s\"/>
|
||||||
%s
|
%s
|
||||||
|
%s
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id=\"content\">
|
<div id=\"content\">
|
||||||
|
@ -922,6 +1046,7 @@ lang=\"%s\" xml:lang=\"%s\">
|
||||||
(or charset "iso-8859-1")
|
(or charset "iso-8859-1")
|
||||||
date author description keywords
|
date author description keywords
|
||||||
style
|
style
|
||||||
|
mathjax
|
||||||
(if (or link-up link-home)
|
(if (or link-up link-home)
|
||||||
(concat
|
(concat
|
||||||
(format org-export-html-home/up-format
|
(format org-export-html-home/up-format
|
||||||
|
|
39
lisp/org.el
39
lisp/org.el
|
@ -15880,7 +15880,7 @@ The images can be removed again with \\[org-ctrl-c-ctrl-c]."
|
||||||
(concat "ltxpng/" (file-name-sans-extension
|
(concat "ltxpng/" (file-name-sans-extension
|
||||||
(file-name-nondirectory
|
(file-name-nondirectory
|
||||||
buffer-file-name)))
|
buffer-file-name)))
|
||||||
default-directory 'overlays msg at 'forbuffer)
|
default-directory 'overlays msg at 'forbuffer 'dvipng)
|
||||||
(message msg "done. Use `C-c C-c' to remove images.")))))
|
(message msg "done. Use `C-c C-c' to remove images.")))))
|
||||||
|
|
||||||
(defvar org-latex-regexps
|
(defvar org-latex-regexps
|
||||||
|
@ -15894,8 +15894,9 @@ The images can be removed again with \\[org-ctrl-c-ctrl-c]."
|
||||||
("$$" "\\$\\$[^\000]*?\\$\\$" 0 nil))
|
("$$" "\\$\\$[^\000]*?\\$\\$" 0 nil))
|
||||||
"Regular expressions for matching embedded LaTeX.")
|
"Regular expressions for matching embedded LaTeX.")
|
||||||
|
|
||||||
|
(defvar org-export-have-math nil) ;; dynamic scoping
|
||||||
(defun org-format-latex (prefix &optional dir overlays msg at
|
(defun org-format-latex (prefix &optional dir overlays msg at
|
||||||
forbuffer protect-only)
|
forbuffer processing-type)
|
||||||
"Replace LaTeX fragments with links to an image, and produce images.
|
"Replace LaTeX fragments with links to an image, and produce images.
|
||||||
Some of the options can be changed using the variable
|
Some of the options can be changed using the variable
|
||||||
`org-format-latex-options'."
|
`org-format-latex-options'."
|
||||||
|
@ -15909,7 +15910,7 @@ Some of the options can be changed using the variable
|
||||||
(org-format-latex-header-extra
|
(org-format-latex-header-extra
|
||||||
(plist-get (org-infile-export-plist) :latex-header-extra))
|
(plist-get (org-infile-export-plist) :latex-header-extra))
|
||||||
(cnt 0) txt hash link beg end re e checkdir
|
(cnt 0) txt hash link beg end re e checkdir
|
||||||
executables-checked
|
executables-checked string
|
||||||
m n block linkfile movefile ov)
|
m n block linkfile movefile ov)
|
||||||
;; Check the different regular expressions
|
;; Check the different regular expressions
|
||||||
(while (setq e (pop re-list))
|
(while (setq e (pop re-list))
|
||||||
|
@ -15925,9 +15926,26 @@ Some of the options can be changed using the variable
|
||||||
(not (eq (get-char-property (match-beginning n)
|
(not (eq (get-char-property (match-beginning n)
|
||||||
'org-overlay-type)
|
'org-overlay-type)
|
||||||
'org-latex-overlay))))
|
'org-latex-overlay))))
|
||||||
(if protect-only
|
(setq org-export-have-math t)
|
||||||
|
(cond
|
||||||
|
((eq processing-type 'verbatim)
|
||||||
|
;; Leave the text verbatim, just protect it
|
||||||
(add-text-properties (match-beginning n) (match-end n)
|
(add-text-properties (match-beginning n) (match-end n)
|
||||||
'(org-protected t))
|
'(org-protected t)))
|
||||||
|
((eq processing-type 'mathjax)
|
||||||
|
;; Prepare for MathJax processing
|
||||||
|
(setq string (match-string n))
|
||||||
|
(if (equal m "$")
|
||||||
|
(save-excursion
|
||||||
|
(delete-region (match-beginning n) (match-end n))
|
||||||
|
(goto-char (match-beginning n))
|
||||||
|
(insert (org-add-props (concat "\\(" (substring string 1 -1)
|
||||||
|
"\\)")
|
||||||
|
'(org-protected t))))
|
||||||
|
(add-text-properties (match-beginning n) (match-end n)
|
||||||
|
'(org-protected t))))
|
||||||
|
((or (eq processing-type 'dvipng) t)
|
||||||
|
;; Process to an image
|
||||||
(setq txt (match-string n)
|
(setq txt (match-string n)
|
||||||
beg (match-beginning n) end (match-end n)
|
beg (match-beginning n) end (match-end n)
|
||||||
cnt (1+ cnt))
|
cnt (1+ cnt))
|
||||||
|
@ -15981,7 +15999,8 @@ Some of the options can be changed using the variable
|
||||||
(delete-region beg end)
|
(delete-region beg end)
|
||||||
(insert (org-add-props link
|
(insert (org-add-props link
|
||||||
(list 'org-latex-src
|
(list 'org-latex-src
|
||||||
(replace-regexp-in-string "\"" "" txt))))))))))))
|
(replace-regexp-in-string
|
||||||
|
"\"" "" txt)))))))))))))
|
||||||
|
|
||||||
;; This function borrows from Ganesh Swami's latex2png.el
|
;; This function borrows from Ganesh Swami's latex2png.el
|
||||||
(defun org-create-formula-image (string tofile options buffer)
|
(defun org-create-formula-image (string tofile options buffer)
|
||||||
|
@ -17650,14 +17669,6 @@ See the individual commands for more information."
|
||||||
(org-inside-LaTeX-fragment-p)]
|
(org-inside-LaTeX-fragment-p)]
|
||||||
["Insert citation" org-reftex-citation t]
|
["Insert citation" org-reftex-citation t]
|
||||||
"--"
|
"--"
|
||||||
["Export LaTeX fragments as images"
|
|
||||||
(if (featurep 'org-exp)
|
|
||||||
(setq org-export-with-LaTeX-fragments
|
|
||||||
(not org-export-with-LaTeX-fragments))
|
|
||||||
(require 'org-exp))
|
|
||||||
:style toggle :selected (and (boundp 'org-export-with-LaTeX-fragments)
|
|
||||||
org-export-with-LaTeX-fragments)]
|
|
||||||
"--"
|
|
||||||
["Template for BEAMER" org-insert-beamer-options-template t])
|
["Template for BEAMER" org-insert-beamer-options-template t])
|
||||||
"--"
|
"--"
|
||||||
("MobileOrg"
|
("MobileOrg"
|
||||||
|
|
Loading…
Reference in New Issue