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, line 17 def self.call(converter, el, opts) type = el.options[:category] text = (el.value =~ /<|&/ ? "% <![CDATA[\n#{el.value} %]]>" : el.value) text.gsub!(/<\/?script>?/, '') preview = preview_string(converter, el, opts) attr = {:type => "math/tex#{type == :block ? '; mode=display' : ''}"} if type == :block preview << converter.format_as_block_html('script', attr, text, opts[:indent]) else preview << converter.format_as_span_html('script', attr, text) end end
preview_string(converter, el, opts)
click to toggle source
# File lib/kramdown/converter/math_engine/mathjax.rb, line 32 def self.preview_string(converter, el, opts) preview = converter.options[:math_engine_opts][:preview] return '' unless preview preview = (preview == true ? converter.escape_html(el.value) : preview.to_s) preview_as_code = converter.options[:math_engine_opts][:preview_as_code] if el.options[:category] == :block if preview_as_code converter.format_as_block_html('pre', {'class' => 'MathJax_Preview'}, converter.format_as_span_html('code', {}, preview), opts[:indent]) else converter.format_as_block_html('div', {'class' => 'MathJax_Preview'}, preview, opts[:indent]) end else converter.format_as_span_html(preview_as_code ? 'code' : 'span', {'class' => 'MathJax_Preview'}, preview) end end