class LatexEval::Latex
Attributes
greek_letters[R]
latex[R]
Public Class Methods
new(latex)
click to toggle source
# File lib/latex_eval/latex.rb, line 5 def initialize(latex) @latex = latex @greek_letters = [ 'Alpha', 'alpha', 'Beta', 'beta', 'Gamma', 'gamma', 'Delta', 'delta', 'Epsilon', 'epsilon', 'varepsilon', 'Zeta', 'zeta', 'Eta', 'eta', 'Theta', 'theta', 'vartheta', 'Iota', 'iota', 'Kappa', 'kappa', 'varkappa', 'Lambda', 'lambda', 'Mu', 'mu', 'Nu', 'nu', 'Xi', 'xi', 'Omicron', 'omicron', 'Pi', 'pi', 'varpi', 'Rho', 'rho', 'varrho', 'Sigma', 'sigma', 'varsigma', 'Tau', 'tau', 'Upsilon', 'upsilon', 'Phi', 'phi', 'varphi', 'Chi', 'chi', 'Psi', 'psi', 'Omega', 'omega', ] end
Public Instance Methods
equation()
click to toggle source
# File lib/latex_eval/latex.rb, line 66 def equation parsed = latex parsed.gsub!(/\\left/, "") parsed.gsub!(/\\right/, "") # fractions regex = /\\d?frac{(.*)}{(.*)}/ while parsed.match(regex) parsed.gsub!(regex, '((\1)/(\2))') end # sqrt regex = /\\sqrt{(.*)}/ while parsed.match(regex) parsed.gsub!(regex, '((\1)^(1/2))') end # nth root regex = /\\sqrt(\[?(.*)(?=\])\]?)?{(.*)}/ while parsed.match(regex) parsed.gsub!(regex, '((\3)^(1/(\2)))') end # \cdot and \times should be * parsed.gsub!(/\\cdot/, "*") parsed.gsub!(/\\times/, "*") # remove remaining curly brackets parsed.gsub!(/{/, "(") parsed.gsub!(/}/, ")") # cleanup variable names and multiplication greek_letters.each do |letter| parsed.gsub!(/(\\#{letter})/, ' \1 ') end # cleans up xyz to x*y*z regex = /((?<!\\)\b)([0-9]?[A-Za-z])([A-Za-z])/ while parsed.match(regex) parsed.gsub!(regex, '\2*\3') end parsed.gsub!(/([0-9])\s+\\([A-Za-z])/, '\1*\2') parsed.gsub!(/([0-9])\s*?([A-Za-z])/, '\1*\2') parsed.gsub!(/([A-Za-z])\s+\\([A-Za-z])/, '\1*\2') parsed.gsub!(/([A-Za-z])\s+([A-Za-z])/, '\1*\2') parsed.gsub!(/([A-Za-z])\s+([0-9])/, '\1*\2') parsed.gsub!(/([A-Za-z])([0-9])/, '\1*\2') parsed.gsub!(/(\))(\()/, '\1*\2') parsed.gsub!(/\\/, "") # cleanup spaces parsed.gsub!(" ", "") return parsed end