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 }