# module Kramdown::Converter::MathEngine::Mathjax

Uses the MathJax javascript library for displaying math.

Note that the javascript library itself is not include or linked, this has to be done separately. Only the math content is marked up correctly.

### Public Class Methods

call(converter, el, opts) click to toggle source

       # File lib/kramdown/converter/math_engine/mathjax.rb
    17 def self.call(converter, el, opts)
    18   type = el.options[:category]
    19   text = (el.value =~ /<|&/ ? "% <![CDATA[\n#{el.value} %]]>" : el.value)
    20   text.gsub!(/<\/?script>?/, '')
    21
    22   preview = preview_string(converter, el, opts)
    23
    24   attr = {:type => "math/tex#{type == :block ? '; mode=display' : ''}"}
    25   if type == :block
    26     preview << converter.format_as_block_html('script', attr, text, opts[:indent])
    27   else
    28     preview << converter.format_as_span_html('script', attr, text)
    29   end
    30 end

preview_string(converter, el, opts) click to toggle source

       # File lib/kramdown/converter/math_engine/mathjax.rb
    32 def self.preview_string(converter, el, opts)
    33   preview = converter.options[:math_engine_opts][:preview]
    34   return '' unless preview
    35
    36   preview = (preview == true ? converter.escape_html(el.value) : preview.to_s)
    37
    38   preview_as_code = converter.options[:math_engine_opts][:preview_as_code]
    39
    40   if el.options[:category] == :block
    41     if preview_as_code
    42       converter.format_as_block_html('pre', {'class' => 'MathJax_Preview'},
    43                                      converter.format_as_span_html('code', {}, preview),
    44                                      opts[:indent])
    45     else
    46       converter.format_as_block_html('div', {'class' => 'MathJax_Preview'}, preview,
    47                                      opts[:indent])
    48     end
    49   else
    50     converter.format_as_span_html(preview_as_code ? 'code' : 'span',
    51                                   {'class' => 'MathJax_Preview'}, preview)
    52   end
    53 end