lib/review/latexutils.rb in review-1.0.0 vs lib/review/latexutils.rb in review-1.1.0

- old
+ new

@@ -8,15 +8,17 @@ # You can distribute or modify this program under the terms of # the GNU LGPL, Lesser General Public License version 2.1. # For details of the GNU LGPL, see the file "COPYING". # +require 'nkf' + module ReVIEW module LaTeXUtils - MATACHARS = { + METACHARS = { '#' => '\#', "$" => '\textdollar{}', '%' => '\%', '&' => '\&', '{' => '\{', @@ -26,10 +28,11 @@ '~' => '\textasciitilde{}', '|' => '\textbar{}', '<' => '\textless{}', '>' => '\textgreater{}', "\\" => '\reviewbackslash{}', + "-" => '{-}', '⓪' => '\UTF{24EA}', '①' => '\UTF{2460}', '②' => '\UTF{2461}', '③' => '\UTF{2462}', @@ -40,25 +43,31 @@ '⑧' => '\UTF{2467}', '⑨' => '\UTF{2468}', '⑩' => '\UTF{2469}', } - METACHARS_RE = /[#{Regexp.escape(MATACHARS.keys.join(''))}]/ + kanalist = %w{。 「 」 、 ・ ヲ ァ ィ ゥ ェ ォ ャ ュ ョ ッ ー ア イ ウ エ オ カ キ ク ケ コ サ シ ス セ ソ タ チ ツ テ ト ナ ニ ヌ ネ ノ ハ ヒ フ ヘ ホ マ ミ ム メ モ ヤ ユ ヨ ラ リ ル レ ロ ワ ン ゙ ゚} + kanalist.each do |char| + char_jisx0208 = NKF::nkf('-WwX',char) + METACHARS[char] = "\\aj半角{#{char_jisx0208}}" + end - MATACHARS_INVERT = MATACHARS.invert + METACHARS_RE = /[#{Regexp.escape(METACHARS.keys.join(''))}]/u + METACHARS_INVERT = METACHARS.invert + def escape_latex(str) str.gsub(METACHARS_RE) {|s| - MATACHARS[s] or raise "unknown trans char: #{s}" + METACHARS[s] or raise "unknown trans char: #{s}" } end alias escape escape_latex def unescape_latex(str) - metachars_invert_re = Regexp.new(MATACHARS_INVERT.keys.collect{|key| Regexp.escape(key)}.join('|')) + metachars_invert_re = Regexp.new(METACHARS_INVERT.keys.collect{|key| Regexp.escape(key)}.join('|')) str.gsub(metachars_invert_re) {|s| - MATACHARS_INVERT[s] or raise "unknown trans char: #{s}" + METACHARS_INVERT[s] or raise "unknown trans char: #{s}" } end def escape_index(str) str.gsub(/[@!|"]/) {|s| '"' + s }