lib/review/latexutils.rb in review-2.0.0.beta1 vs lib/review/latexutils.rb in review-2.0.0

- old
+ new

@@ -1,10 +1,9 @@ # encoding: utf-8 # -# $Id: latexutils.rb 2204 2006-03-18 06:10:26Z aamine $ -# # Copyright (c) 2002-2006 Minero Aoki +# Copyright (c) 2006-2016 Minero Aoki, Kenshi Muto and Masayoshi Takahashi # # This program is free software. # 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". @@ -14,66 +13,74 @@ module ReVIEW module LaTeXUtils - METACHARS = { - '#' => '\#', - "$" => '\textdollar{}', - '%' => '\%', - '&' => '\&', - '{' => '\{', - '}' => '\}', - '_' => '\textunderscore{}', - '^' => '\textasciicircum{}', - '~' => '\textasciitilde{}', - '|' => '\textbar{}', - '<' => '\textless{}', - '>' => '\textgreater{}', - "\\" => '\reviewbackslash{}', - "-" => '{-}', + def initialize_metachars(texcommand) + @metachars = { + '#' => '\#', + "$" => '\textdollar{}', + '%' => '\%', + '&' => '\&', + '{' => '\{', + '}' => '\}', + '_' => '\textunderscore{}', + '^' => '\textasciicircum{}', + '~' => '\textasciitilde{}', + '|' => '\textbar{}', + '<' => '\textless{}', + '>' => '\textgreater{}', + "\\" => '\reviewbackslash{}', + "-" => '{-}' + } - '⓪' => '\UTF{24EA}', - '①' => '\UTF{2460}', - '②' => '\UTF{2461}', - '③' => '\UTF{2462}', - '④' => '\UTF{2463}', - '⑤' => '\UTF{2464}', - '⑥' => '\UTF{2465}', - '⑦' => '\UTF{2466}', - '⑧' => '\UTF{2467}', - '⑨' => '\UTF{2468}', - '⑩' => '\UTF{2469}', - '⑪' => '\UTF{246A}', - '⑫' => '\UTF{246B}', - '⑬' => '\UTF{246C}', - '⑭' => '\UTF{246D}', - '⑮' => '\UTF{246E}', - '⑯' => '\UTF{246F}', - } + if File.basename(texcommand, ".*") == "platex" + @metachars.merge!({ + '⓪' => '\UTF{24EA}', + '①' => '\UTF{2460}', + '②' => '\UTF{2461}', + '③' => '\UTF{2462}', + '④' => '\UTF{2463}', + '⑤' => '\UTF{2464}', + '⑥' => '\UTF{2465}', + '⑦' => '\UTF{2466}', + '⑧' => '\UTF{2467}', + '⑨' => '\UTF{2468}', + '⑩' => '\UTF{2469}', + '⑪' => '\UTF{246A}', + '⑫' => '\UTF{246B}', + '⑬' => '\UTF{246C}', + '⑭' => '\UTF{246D}', + '⑮' => '\UTF{246E}', + '⑯' => '\UTF{246F}' + }) - kanalist = %w{。 「 」 、 ・ ヲ ァ ィ ゥ ェ ォ ャ ュ ョ ッ ー ア イ ウ エ オ カ キ ク ケ コ サ シ ス セ ソ タ チ ツ テ ト ナ ニ ヌ ネ ノ ハ ヒ フ ヘ ホ マ ミ ム メ モ ヤ ユ ヨ ラ リ ル レ ロ ワ ン ゙ ゚} - kanalist.each do |char| - char_jisx0208 = NKF::nkf('-WwX',char) - METACHARS[char] = "\\aj半角{#{char_jisx0208}}" - end + kanalist = %w{。 「 」 、 ・ ヲ ァ ィ ゥ ェ ォ ャ ュ ョ ッ ー ア イ ウ エ + オ カ キ ク ケ コ サ シ ス セ ソ タ チ ツ テ ト ナ ニ ヌ ネ ノ ハ ヒ フ ヘ ホ マ + ミ ム メ モ ヤ ユ ヨ ラ リ ル レ ロ ワ ン ゙ ゚} + kanalist.each do |char| + char_jisx0208 = NKF::nkf('-WwX',char) + @metachars[char] = "\\aj半角{#{char_jisx0208}}" + end + end - METACHARS_RE = /[#{Regexp.escape(METACHARS.keys.join(''))}]/u + @metachars_re = /[#{Regexp.escape(@metachars.keys.join(''))}]/u - METACHARS_INVERT = METACHARS.invert + @metachars_invert = @metachars.invert + end def escape_latex(str) - str.gsub(METACHARS_RE) {|s| - METACHARS[s] or raise "unknown trans char: #{s}" + str.gsub(@metachars_re) {|s| + @metachars[s] or raise "unknown trans char: #{s}" } end alias_method :escape, :escape_latex def unescape_latex(str) - metachars_invert_re = Regexp.new(METACHARS_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| - METACHARS_INVERT[s] or raise "unknown trans char: #{s}" + @metachars_invert[s] or raise "unknown trans char: #{s}" } end alias_method :unescape, :unescape_latex