hwp_script_to_latex 1.0.4 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bdb6827633086600771ea7ba97a122311c7d94c4f593f047af8d51abb85c8ab7
4
- data.tar.gz: 3560379279297d1f33674e82dca0d743286f5b733fa29bd7eb2efbfa326d080a
3
+ metadata.gz: 0fab7041db73e13ffb2d90b2ea115186e74cb3423f6a8d32ee3d363b6b9b81e6
4
+ data.tar.gz: 02f94703333f490fe69013740c91fc6a9727adcf42f016d5c18885ba122955a9
5
5
  SHA512:
6
- metadata.gz: 7675626d4578109430f29b5afa45be2f2cf937a39da6efce142bdbfb11ef5484799052c9ef3a3de9276cba37a42f80167f0aefc5d906f5748323c68f2930d77f
7
- data.tar.gz: a770d0ca8852768aae2a84b7d6cf01638c695761a09be94f5ca6766c609da48392bdb6dc03ddfa200db5f7173f83e7a4da6fcdadd51194f04231c35792eb4864
6
+ metadata.gz: 80da2117f7744411cac72d6e4ddd9aa9378adaf9fa3166cfb956e47a96a08fb96511c72aca3ef87c3f0f8fc7e39d723bbf0947ba73cef6132086fb485e69f7d6
7
+ data.tar.gz: b795c64023799a7485e21da1fcd33e4cc6a9370869dc3557b8cc8d52bd4b220aa69669944fcc0135fd386c688c7ce85db04b0712114d592f1ab174c041c27c35
@@ -1,17 +1,68 @@
1
1
  require 'json'
2
- require 'hwp_script_to_latex/replacement_rule'
3
2
 
4
3
  module HwpScriptToLatex
4
+ # 한글 수식스크립트를 LaTeX 문법으로 변환
5
5
  class Converter
6
- # 한글 수식스크립트를 LaTeX 문법으로 변환
6
+ # 명령어에 사용되는 좌, 우항 정규표현식
7
+ LEFT_TERM_REGEX = "(?:[^{}\\s`]{9})*?\\K(?<%s>{(?>[^{}]+|(?:\\g<%s>))*}|(?:[^{}\\s`]{0,9}))"
8
+ RIGHT_TERM_REGEX = "(?<%s>{(?>[^{}]+|(?:\\g<%s>))*}|(?:[^{}\\s`]{0,9}))"
9
+
10
+ def initialize
11
+ f = File.open(File.join(File.dirname(__FILE__), '..', '..', 'rules.json'), 'r')
12
+ file_content = f.read
13
+ f.close
14
+
15
+ @rules= JSON.parse(file_content, symbolize_names: true)
16
+ @keywords = @rules[:keywords].sort_by { |hash| -1 * hash[:regex].inspect.length }
17
+ end
7
18
 
8
19
  def convert(script, math_mode: false, display_mode: false)
9
- latex = script
20
+ # Sanitize for starting convert
21
+ result = sanitize(script)
22
+
23
+ # 키워드 치환
24
+ result = replace_keywords(result, @keywords)
25
+
26
+ # 루트 변환
27
+ result = replace_sqrt(result)
28
+
29
+ # 분수 변환
30
+ result = replace_fractions(result)
31
+
32
+ # 행렬 변환
33
+ result = replace_matrix(result)
34
+
35
+ # 전체 수식에 디스플레이 스타일 적용
36
+ if display_mode
37
+ result = decorate_displaystyle(result)
38
+ end
39
+
40
+ # ReSanitize result for removing dirty spaces
41
+ result = sanitize(result)
42
+
43
+ # Math mode
44
+ if math_mode
45
+ result = "$#{result}$"
46
+ end
47
+
48
+ return result
49
+ end
50
+
51
+ private
52
+
53
+ def sanitize(script)
54
+ # 족보닷컴 텍스트 제거
55
+ jokbo_regex = %r(from\s*=+(?:족보닷컴.*)=+)
56
+ script = script.gsub(jokbo_regex, "")
57
+ # 2개 이상의 공백을 하나의 공백으로 치환
58
+ script = script.gsub(/\s+/, " ").strip
59
+ return script
60
+ end
10
61
 
11
- # Step 1. 단순치환
12
- replacement_rules.each do |rule|
13
- full_match1 = latex.match(/(?<!\\)([^\\\s]*)(#{rule.regex_str})/).to_s
14
- full_match2 = latex.match(/([^\\\s]*)(#{rule.regex_str})/).to_s
62
+ def replace_keywords(script, keywords)
63
+ keywords.each do |keyword|
64
+ full_match1 = script.match(/(?<!\\)([^\\\s]*)(#{keyword[:regex]})/).to_s
65
+ full_match2 = script.match(/([^\\\s]*)(#{keyword[:regex]})/).to_s
15
66
 
16
67
  # 두 match가 같은 문자열이어야 치환
17
68
  # ex) \theta는 eta로 치환하지 않아야 할 때
@@ -19,44 +70,96 @@ module HwpScriptToLatex
19
70
  # full_match2 == 'theta'
20
71
  # 두 개가 같지 않으므로 치환하지 않는다.
21
72
  if full_match1 == full_match2
22
- latex = latex.gsub(rule.regex, rule.latex)
73
+ script = script.gsub(
74
+ keyword[:ignorecase] ? %r(#{keyword[:regex]})i : %r(#{keyword[:regex]}),
75
+ keyword[:latex]
76
+ )
23
77
  end
24
-
25
78
  end
26
79
 
27
- # Step 2. 분수 변환
28
- #
29
- # Parentheses fraction만 가능
30
- # ex) {1} over {2}
31
- # while문으로 nested fraction처리
32
- # ex) {{1} over {2}} over {3}
33
- frac_regex = /({(?>[^{}]+|(?:\g<1>))*})\s*over\s*({(?>[^{}]+|(?:\g<2>))*})/i
34
- while latex.match(frac_regex)
35
- latex = latex.gsub(frac_regex, ' \frac \1\2 ')
36
- end
80
+ return script
81
+ end
37
82
 
38
- if display_mode
39
- latex = "\\displaystyle{#{latex}}"
83
+ def replace_fractions(script)
84
+ left_term_group_name = "lt"
85
+ right_term_group_name = "rt"
86
+ left_term = LEFT_TERM_REGEX % [left_term_group_name, left_term_group_name]
87
+ right_term = RIGHT_TERM_REGEX % [right_term_group_name, right_term_group_name]
88
+ fraction_regex = %r(#{left_term}\s*(?<!\\)(?:over|atop)\s*#{right_term})
89
+
90
+ match_data = script.match(fraction_regex)
91
+ while match_data
92
+ matched_groups = Hash[match_data.names.map(&:to_sym).zip(
93
+ match_data.captures.map do |term|
94
+ term = term.gsub(/^{/, '')
95
+ term = term.gsub(/}$/, '')
96
+ term
97
+ end
98
+ )]
99
+ script = script.sub(fraction_regex, " \\dfrac {%{lt}}{%{rt}} " % matched_groups)
100
+ match_data = script.match(fraction_regex)
40
101
  end
41
102
 
42
- if math_mode
43
- latex = "$#{latex}$"
103
+ return script
104
+ end
105
+
106
+ def replace_matrix(script)
107
+ matrix_regex = %r((?:dmatrix)\s*(?<matrix_content>{(?>[^{}]+|(?:\\g<matrix_content>))*}))
108
+
109
+ match_data = script.match(matrix_regex)
110
+ while match_data
111
+ # 시작, 끝 중괄호 제거
112
+ matrix_content = match_data['matrix_content'].gsub(/^{/, '')
113
+ matrix_content = matrix_content.gsub(/}$/, '')
114
+ # sub 메서드에 블록 문법을 사용한 이유:
115
+ # gsub, sub에서 백슬래시 문제
116
+ # https://stackoverflow.com/a/4149087/9605912
117
+ script = script.sub(matrix_regex) { " \\begin{bmatrix} %s \\end{bmatrix} " % matrix_content }
118
+ match_data = script.match(matrix_regex)
44
119
  end
45
120
 
46
- return latex
121
+ return script
47
122
  end
48
123
 
49
- private
124
+ def replace_sqrt(script)
125
+ right_term1_name = 'rt1'
126
+ right_term2_name = 'rt2'
127
+ right_term1 = RIGHT_TERM_REGEX % [right_term1_name, right_term1_name]
128
+ right_term2 = RIGHT_TERM_REGEX % [right_term2_name, right_term2_name]
129
+ sqrt_regex = %r((?<!\\)(?:sqrt|root)\s*#{right_term1}(\s*of\s*#{right_term2})?)
50
130
 
51
- def replacement_rules
52
- return @rules if @rules
131
+ match_data = script.match(sqrt_regex)
132
+ while match_data
133
+ has_right_term2 = !!match_data[right_term2_name]
53
134
 
54
- f = File.open(File.join(File.dirname(__FILE__), '..', '..', 'rules.json'), 'r')
55
- file_content = f.read
56
- f.close
135
+ # 번째 중괄호 제거
136
+ right_term1_content = match_data[right_term1_name].gsub(/^{/, '')
137
+ right_term1_content = right_term1_content.gsub(/}$/, '')
138
+
139
+ if has_right_term2
140
+ right_term2_content = match_data[right_term2_name].gsub(/^{/, '')
141
+ right_term2_content = right_term2_content.gsub(/}$/, '')
142
+ end
143
+
144
+ script = script.sub(sqrt_regex) do
145
+ if has_right_term2
146
+ " \\sqrt [%s]{%s} " % [right_term1_content, right_term2_content]
147
+ else
148
+ " \\sqrt {%s} " % right_term1_content
149
+ end
150
+ end
151
+ match_data = script.match(sqrt_regex)
152
+ end
153
+
154
+ return script
155
+ end
156
+
157
+ def decorate_displaystyle(script)
158
+ script = "{#{script}}"
159
+ script = script.gsub(/(?<!\\)\s*{\s*\\displaystyle/, " { ")
160
+ script = script.gsub(/(?<!\\)\s*{/, " {\\displaystyle ")
57
161
 
58
- arr = JSON.parse(file_content).sort_by { |hash| -1 * hash['regex'].inspect.length }
59
- @rules = arr.map { |json| ReplacementRule.new(json['regex'], json['latex'], json['ignorecase']) }
162
+ return script
60
163
  end
61
164
  end
62
165
  end
@@ -1,3 +1,3 @@
1
1
  module HwpScriptToLatex
2
- VERSION = "1.0.4"
2
+ VERSION = "1.1.0"
3
3
  end
data/rules.json CHANGED
@@ -1,1208 +1,1245 @@
1
- [
2
- {
3
- "regex": "%",
4
- "latex": " \\% "
5
- },
6
- {
7
- "regex": "\r?\n",
8
- "latex": ""
9
- },
10
- {
11
- "regex": "&lt;|<",
12
- "latex": " < "
13
- },
14
- {
15
- "regex": "&rt;|>",
16
- "latex": " > "
17
- },
18
- {
19
- "regex": "∾",
20
- "latex": " \\backsim "
21
- },
22
- {
23
- "regex": "\\\xf3\\\xb0\\\x81\\\x80",
24
- "latex": " \\backsim "
25
- },
1
+ {
2
+ "keywords": [
3
+ {
4
+ "regex": "%",
5
+ "latex": " \\% "
6
+ },
7
+ {
8
+ "regex": "\r?\n",
9
+ "latex": ""
10
+ },
11
+ {
12
+ "regex": "<=",
13
+ "latex": " \\leqq "
14
+ },
15
+ {
16
+ "regex": ">=",
17
+ "latex": " \\geqq "
18
+ },
19
+ {
20
+ "regex": "!=",
21
+ "latex": " \\ne "
22
+ },
23
+ {
24
+ "regex": "==",
25
+ "latex": " \\equiv "
26
+ },
27
+ {
28
+ "regex": "∾",
29
+ "latex": " \\backsim "
30
+ },
31
+ {
32
+ "regex": "\\\xf3\\\xb0\\\x81\\\x80",
33
+ "latex": " \\backsim "
34
+ },
26
35
 
27
- {
28
- "regex": "box",
29
- "latex": " \\fbox ",
30
- "ignorecase": true
31
- },
32
- {
33
- "regex": "dot",
34
- "latex": " \\dot "
35
- },
36
- {
37
- "regex": "ddot",
38
- "latex": " \\ddot "
39
- },
40
- {
41
- "regex": "vdots",
42
- "latex": " \\vdots ",
43
- "ignorecase": true
44
- },
45
- {
46
- "regex": "sum",
47
- "latex": " \\sum ",
48
- "ignorecase": true
49
- },
50
- {
51
- "regex": "acute",
52
- "latex": " \\acute "
53
- },
54
- {
55
- "regex": "grave",
56
- "latex": " \\grave "
57
- },
58
- {
59
- "regex": "check",
60
- "latex": " \\check "
61
- },
62
- {
63
- "regex": "breve",
64
- "latex": " \\breve "
65
- },
66
- {
67
- "regex": "tilde",
68
- "latex": " \\tilde "
69
- },
70
- {
71
- "regex": "bar",
72
- "latex": " \\bar "
73
- },
74
- {
75
- "regex": "hat",
76
- "latex": " \\hat "
77
- },
78
- {
79
- "regex": "widehat",
80
- "latex": " \\widehat "
81
- },
82
- {
83
- "regex": "vec",
84
- "latex": " \\vec "
85
- },
36
+ {
37
+ "regex": "rm",
38
+ "latex": " \\rm ",
39
+ "ignorecase": true
40
+ },
41
+ {
42
+ "regex": "it",
43
+ "latex": " \\it ",
44
+ "ignorecase": true
45
+ },
46
+ {
47
+ "regex": "box",
48
+ "latex": " \\fbox ",
49
+ "ignorecase": true
50
+ },
51
+ {
52
+ "regex": "dot",
53
+ "latex": " \\dot "
54
+ },
55
+ {
56
+ "regex": "ddot",
57
+ "latex": " \\ddot "
58
+ },
59
+ {
60
+ "regex": "vdots",
61
+ "latex": " \\vdots ",
62
+ "ignorecase": true
63
+ },
64
+ {
65
+ "regex": "sum",
66
+ "latex": " \\sum ",
67
+ "ignorecase": true
68
+ },
69
+ {
70
+ "regex": "acute",
71
+ "latex": " \\acute "
72
+ },
73
+ {
74
+ "regex": "grave",
75
+ "latex": " \\grave "
76
+ },
77
+ {
78
+ "regex": "check",
79
+ "latex": " \\check "
80
+ },
81
+ {
82
+ "regex": "breve",
83
+ "latex": " \\breve "
84
+ },
85
+ {
86
+ "regex": "tilde",
87
+ "latex": " \\tilde "
88
+ },
89
+ {
90
+ "regex": "hat",
91
+ "latex": " \\hat "
92
+ },
93
+ {
94
+ "regex": "widehat",
95
+ "latex": " \\widehat "
96
+ },
97
+ {
98
+ "regex": "vec",
99
+ "latex": " \\vec "
100
+ },
86
101
 
87
- {
88
- "regex": "exp",
89
- "latex": " \\exp "
90
- },
91
- {
92
- "regex": "ln",
93
- "latex": " \\ln "
94
- },
95
- {
96
- "regex": "lg",
97
- "latex": " \\lg "
98
- },
99
- {
100
- "regex": "log",
101
- "latex": " \\log "
102
- },
103
- {
104
- "regex": "sin",
105
- "latex": " \\sin "
106
- },
107
- {
108
- "regex": "cos",
109
- "latex": " \\cos "
110
- },
111
- {
112
- "regex": "tan",
113
- "latex": " \\tan "
114
- },
115
- {
116
- "regex": "cot",
117
- "latex": " \\cot "
118
- },
119
- {
120
- "regex": "sec",
121
- "latex": " \\sec "
122
- },
123
- {
124
- "regex": "csc",
125
- "latex": " \\csc "
126
- },
127
- {
128
- "regex": "arcsin",
129
- "latex": " \\arcsin "
130
- },
131
- {
132
- "regex": "arccos",
133
- "latex": " \\arccos "
134
- },
135
- {
136
- "regex": "arctan",
137
- "latex": " \\arctan "
138
- },
139
- {
140
- "regex": "sgn",
141
- "latex": " \\sgn "
142
- },
143
- {
144
- "regex": "vert",
145
- "latex": " \\vert "
146
- },
147
- {
148
- "regex": "min",
149
- "latex": " \\min "
150
- },
151
- {
152
- "regex": "max",
153
- "latex": " \\max "
154
- },
102
+ {
103
+ "regex": "exp",
104
+ "latex": " \\exp "
105
+ },
106
+ {
107
+ "regex": "ln",
108
+ "latex": " \\ln "
109
+ },
110
+ {
111
+ "regex": "lg",
112
+ "latex": " \\lg "
113
+ },
114
+ {
115
+ "regex": "log",
116
+ "latex": " \\log "
117
+ },
118
+ {
119
+ "regex": "sin",
120
+ "latex": " \\sin "
121
+ },
122
+ {
123
+ "regex": "cos",
124
+ "latex": " \\cos "
125
+ },
126
+ {
127
+ "regex": "tan",
128
+ "latex": " \\tan "
129
+ },
130
+ {
131
+ "regex": "cot",
132
+ "latex": " \\cot "
133
+ },
134
+ {
135
+ "regex": "sec",
136
+ "latex": " \\sec "
137
+ },
138
+ {
139
+ "regex": "csc",
140
+ "latex": " \\csc "
141
+ },
142
+ {
143
+ "regex": "arcsin",
144
+ "latex": " \\arcsin "
145
+ },
146
+ {
147
+ "regex": "arccos",
148
+ "latex": " \\arccos "
149
+ },
150
+ {
151
+ "regex": "arctan",
152
+ "latex": " \\arctan "
153
+ },
154
+ {
155
+ "regex": "sgn",
156
+ "latex": " \\sgn "
157
+ },
158
+ {
159
+ "regex": "vert",
160
+ "latex": " \\vert "
161
+ },
162
+ {
163
+ "regex": "min",
164
+ "latex": " \\min "
165
+ },
166
+ {
167
+ "regex": "max",
168
+ "latex": " \\max "
169
+ },
155
170
 
156
- {
157
- "regex": "inf",
158
- "latex": " \\inf "
159
- },
160
- {
161
- "regex": "sup",
162
- "latex": " \\sup "
163
- },
164
- {
165
- "regex": "lim",
166
- "latex": " \\lim "
167
- },
168
- {
169
- "regex": "liminf",
170
- "latex": " \\liminf "
171
- },
172
- {
173
- "regex": "limsup",
174
- "latex": " \\limsup "
175
- },
176
- {
177
- "regex": "dim",
178
- "latex": " \\dim "
179
- },
180
- {
181
- "regex": "deg",
182
- "latex": " \\deg "
183
- },
184
- {
185
- "regex": "det",
186
- "latex": " \\det "
187
- },
188
- {
189
- "regex": "ker",
190
- "latex": " \\ker "
191
- },
171
+ {
172
+ "regex": "inf",
173
+ "latex": " \\inf "
174
+ },
175
+ {
176
+ "regex": "sup",
177
+ "latex": " \\sup "
178
+ },
179
+ {
180
+ "regex": "lim",
181
+ "latex": " \\lim "
182
+ },
183
+ {
184
+ "regex": "liminf",
185
+ "latex": " \\liminf "
186
+ },
187
+ {
188
+ "regex": "limsup",
189
+ "latex": " \\limsup "
190
+ },
191
+ {
192
+ "regex": "dim",
193
+ "latex": " \\dim "
194
+ },
195
+ {
196
+ "regex": "deg",
197
+ "latex": " \\deg "
198
+ },
199
+ {
200
+ "regex": "det",
201
+ "latex": " \\det "
202
+ },
203
+ {
204
+ "regex": "ker",
205
+ "latex": " \\ker "
206
+ },
192
207
 
193
- {
194
- "regex": "Pr",
195
- "latex": " \\Pr "
196
- },
197
- {
198
- "regex": "hom",
199
- "latex": " \\hom "
200
- },
201
- {
202
- "regex": "(Vert)|(VERT)",
203
- "latex": " \\Vert "
204
- },
205
- {
206
- "regex": "arg",
207
- "latex": " \\arg "
208
- },
208
+ {
209
+ "regex": "Pr",
210
+ "latex": " \\Pr "
211
+ },
212
+ {
213
+ "regex": "hom",
214
+ "latex": " \\hom "
215
+ },
216
+ {
217
+ "regex": "(Vert)|(VERT)",
218
+ "latex": " \\Vert "
219
+ },
220
+ {
221
+ "regex": "arg",
222
+ "latex": " \\arg "
223
+ },
209
224
 
210
- {
211
- "regex": "partial",
212
- "latex": " \\partial ",
213
- "ignorecase": true
214
- },
215
- {
216
- "regex": "nabla",
217
- "latex": " \\nabla ",
218
- "ignorecase": true
219
- },
220
- {
221
- "regex": "prime",
222
- "latex": " \\prime "
223
- },
225
+ {
226
+ "regex": "partial",
227
+ "latex": " \\partial ",
228
+ "ignorecase": true
229
+ },
230
+ {
231
+ "regex": "nabla",
232
+ "latex": " \\nabla ",
233
+ "ignorecase": true
234
+ },
235
+ {
236
+ "regex": "prime",
237
+ "latex": " ' "
238
+ },
224
239
 
225
- {
226
- "regex": "infty",
227
- "latex": " \\infty ",
228
- "ignorecase": true
229
- },
230
- {
231
- "regex": "hbar",
232
- "latex": " \\hbar ",
233
- "ignorecase": true
234
- },
235
- {
236
- "regex": "imath",
237
- "latex": " \\imath ",
238
- "ignorecase": true
239
- },
240
- {
241
- "regex": "jmath",
242
- "latex": " \\jmath ",
243
- "ignorecase": true
244
- },
245
- {
246
- "regex": "ell",
247
- "latex": " \\ell ",
248
- "ignorecase": true
249
- },
250
- {
251
- "regex": "mho",
252
- "latex": " \\mho ",
253
- "ignorecase": true
254
- },
255
- {
256
- "regex": "wp",
257
- "latex": " \\wp ",
258
- "ignorecase": true
259
- },
240
+ {
241
+ "regex": "infty",
242
+ "latex": " \\infty ",
243
+ "ignorecase": true
244
+ },
245
+ {
246
+ "regex": "hbar",
247
+ "latex": " \\hbar ",
248
+ "ignorecase": true
249
+ },
250
+ {
251
+ "regex": "imath",
252
+ "latex": " \\imath ",
253
+ "ignorecase": true
254
+ },
255
+ {
256
+ "regex": "jmath",
257
+ "latex": " \\jmath ",
258
+ "ignorecase": true
259
+ },
260
+ {
261
+ "regex": "ell",
262
+ "latex": " \\ell ",
263
+ "ignorecase": true
264
+ },
265
+ {
266
+ "regex": "mho",
267
+ "latex": " \\mho ",
268
+ "ignorecase": true
269
+ },
270
+ {
271
+ "regex": "wp",
272
+ "latex": " \\wp ",
273
+ "ignorecase": true
274
+ },
260
275
 
261
- {
262
- "regex": "sqrt",
263
- "latex": " \\sqrt ",
264
- "ignorecase": true
265
- },
266
- {
267
- "regex": "root",
268
- "latex": " \\sqrt ",
269
- "ignorecase": true
270
- },
276
+ {
277
+ "regex": "plusminus",
278
+ "latex": " \\pm ",
279
+ "ignorecase": true
280
+ },
281
+ {
282
+ "regex": "minusplus",
283
+ "latex": " \\mp ",
284
+ "ignorecase": true
285
+ },
286
+ {
287
+ "regex": "dsum",
288
+ "latex": " \\dotplus ",
289
+ "ignorecase": true
290
+ },
291
+ {
292
+ "regex": "times",
293
+ "latex": " \\times ",
294
+ "ignorecase": true
295
+ },
296
+ {
297
+ "regex": "divide",
298
+ "latex": " \\div ",
299
+ "ignorecase": true
300
+ },
301
+ {
302
+ "regex": "div",
303
+ "latex": " \\div ",
304
+ "ignorecase": true
305
+ },
306
+ {
307
+ "regex": "dyad",
308
+ "latex": " \\overset {\\longleftrightarrow} ",
309
+ "ignorecase": true
310
+ },
311
+ {
312
+ "regex": "backslash",
313
+ "latex": " \\backslash ",
314
+ "ignorecase": true
315
+ },
316
+ {
317
+ "regex": "cdot",
318
+ "latex": " \\cdot ",
319
+ "ignorecase": true
320
+ },
321
+ {
322
+ "regex": "ast",
323
+ "latex": " \\ast ",
324
+ "ignorecase": true
325
+ },
326
+ {
327
+ "regex": "star",
328
+ "latex": " \\star ",
329
+ "ignorecase": true
330
+ },
331
+ {
332
+ "regex": "circ",
333
+ "latex": " \\circ ",
334
+ "ignorecase": true
335
+ },
336
+ {
337
+ "regex": "bullet",
338
+ "latex": " \\bullet ",
339
+ "ignorecase": true
340
+ },
341
+ {
342
+ "regex": "oplus",
343
+ "latex": " \\oplus ",
344
+ "ignorecase": true
345
+ },
346
+ {
347
+ "regex": "ominus",
348
+ "latex": " \\ominus ",
349
+ "ignorecase": true
350
+ },
351
+ {
352
+ "regex": "otimes",
353
+ "latex": " \\otimes ",
354
+ "ignorecase": true
355
+ },
356
+ {
357
+ "regex": "oslash",
358
+ "latex": " \\oslash ",
359
+ "ignorecase": true
360
+ },
361
+ {
362
+ "regex": "odot",
363
+ "latex": " \\odot ",
364
+ "ignorecase": true
365
+ },
271
366
 
272
- {
273
- "regex": "plusminus",
274
- "latex": " \\pm ",
275
- "ignorecase": true
276
- },
277
- {
278
- "regex": "minusplus",
279
- "latex": " \\mp ",
280
- "ignorecase": true
281
- },
282
- {
283
- "regex": "dsum",
284
- "latex": " \\dotplus ",
285
- "ignorecase": true
286
- },
287
- {
288
- "regex": "times",
289
- "latex": " \\times ",
290
- "ignorecase": true
291
- },
292
- {
293
- "regex": "div|divide",
294
- "latex": " \\div ",
295
- "ignorecase": true
296
- },
297
- {
298
- "regex": "backslash",
299
- "latex": " \\backslash ",
300
- "ignorecase": true
301
- },
302
- {
303
- "regex": "cdot",
304
- "latex": " \\cdot ",
305
- "ignorecase": true
306
- },
307
- {
308
- "regex": "ast",
309
- "latex": " \\ast ",
310
- "ignorecase": true
311
- },
312
- {
313
- "regex": "star",
314
- "latex": " \\star ",
315
- "ignorecase": true
316
- },
317
- {
318
- "regex": "circ",
319
- "latex": " \\circ ",
320
- "ignorecase": true
321
- },
322
- {
323
- "regex": "bullet",
324
- "latex": " \\bullet ",
325
- "ignorecase": true
326
- },
327
- {
328
- "regex": "oplus",
329
- "latex": " \\oplus ",
330
- "ignorecase": true
331
- },
332
- {
333
- "regex": "ominus",
334
- "latex": " \\ominus ",
335
- "ignorecase": true
336
- },
337
- {
338
- "regex": "otimes",
339
- "latex": " \\otimes ",
340
- "ignorecase": true
341
- },
342
- {
343
- "regex": "oslash",
344
- "latex": " \\oslash ",
345
- "ignorecase": true
346
- },
347
- {
348
- "regex": "odot",
349
- "latex": " \\odot ",
350
- "ignorecase": true
351
- },
367
+ {
368
+ "regex": "in",
369
+ "latex": " \\in ",
370
+ "ignorecase": true
371
+ },
372
+ {
373
+ "regex": "notin|not in",
374
+ "latex": " \\notin ",
375
+ "ignorecase": true
376
+ },
377
+ {
378
+ "regex": "ni",
379
+ "latex": " \\ni ",
380
+ "ignorecase": true
381
+ },
382
+ {
383
+ "regex": "notni|not ni",
384
+ "latex": " \\notni ",
385
+ "ignorecase": true
386
+ },
387
+ {
388
+ "regex": "succ",
389
+ "latex": " \\succ "
390
+ },
391
+ {
392
+ "regex": "SUCC",
393
+ "latex": " \\succ "
394
+ },
395
+ {
396
+ "regex": "Succ",
397
+ "latex": " \\succ "
398
+ },
399
+ {
400
+ "regex": "cap",
401
+ "latex": " \\cap "
402
+ },
403
+ {
404
+ "regex": "CAP",
405
+ "latex": " \\cap "
406
+ },
407
+ {
408
+ "regex": "Cap",
409
+ "latex": " \\Cap "
410
+ },
411
+ {
412
+ "regex": "sqcap",
413
+ "latex": " \\sqcap ",
414
+ "ignorecase": true
415
+ },
416
+ {
417
+ "regex": "bigcap",
418
+ "latex": " \\bigcap ",
419
+ "ignorecase": true
420
+ },
421
+ {
422
+ "regex": "cup",
423
+ "latex": " \\cup "
424
+ },
425
+ {
426
+ "regex": "CUP",
427
+ "latex": " \\cup "
428
+ },
429
+ {
430
+ "regex": "Cup",
431
+ "latex": " \\Cup "
432
+ },
433
+ {
434
+ "regex": "union",
435
+ "latex": " \\cup ",
436
+ "ignorecase": true
437
+ },
438
+ {
439
+ "regex": "smallunion",
440
+ "latex": " \\cup ",
441
+ "ignorecase": true
442
+ },
443
+ {
444
+ "regex": "inter",
445
+ "latex": " \\cap ",
446
+ "ignorecase": true
447
+ },
448
+ {
449
+ "regex": "smallinter",
450
+ "latex": " \\cap ",
451
+ "ignorecase": true
452
+ },
453
+ {
454
+ "regex": "sqcup",
455
+ "latex": " \\sqcup ",
456
+ "ignorecase": true
457
+ },
458
+ {
459
+ "regex": "bigcup",
460
+ "latex": " \\bigcup ",
461
+ "ignorecase": true
462
+ },
463
+ {
464
+ "regex": "bigsqcup",
465
+ "latex": " \\bigsqcup ",
466
+ "ignorecase": true
467
+ },
468
+ {
469
+ "regex": "uplus",
470
+ "latex": " \\uplus ",
471
+ "ignorecase": true
472
+ },
473
+ {
474
+ "regex": "biguplus",
475
+ "latex": " \\biguplus ",
476
+ "ignorecase": true
477
+ },
478
+ {
479
+ "regex": "subset",
480
+ "latex": " \\subset "
481
+ },
482
+ {
483
+ "regex": "Subset",
484
+ "latex": " \\Subset "
485
+ },
486
+ {
487
+ "regex": "sqsubset",
488
+ "latex": " \\sqsubset ",
489
+ "ignorecase": true
490
+ },
491
+ {
492
+ "regex": "supset",
493
+ "latex": " \\supset "
494
+ },
495
+ {
496
+ "regex": "Supset",
497
+ "latex": " \\Supset "
498
+ },
499
+ {
500
+ "regex": "sqsupset",
501
+ "latex": " \\sqsupset ",
502
+ "ignorecase": true
503
+ },
504
+ {
505
+ "regex": "subseteq",
506
+ "latex": " \\subseteq ",
507
+ "ignorecase": true
508
+ },
509
+ {
510
+ "regex": "nsubseteq",
511
+ "latex": " \\nsubseteq ",
512
+ "ignorecase": true
513
+ },
514
+ {
515
+ "regex": "subsetneq",
516
+ "latex": " \\subsetneq ",
517
+ "ignorecase": true
518
+ },
519
+ {
520
+ "regex": "varsubsetneq",
521
+ "latex": " \\varsubsetneq ",
522
+ "ignorecase": true
523
+ },
524
+ {
525
+ "regex": "sqsubseteq",
526
+ "latex": " \\sqsubseteq ",
527
+ "ignorecase": true
528
+ },
529
+ {
530
+ "regex": "supseteq",
531
+ "latex": " \\supseteq ",
532
+ "ignorecase": true
533
+ },
534
+ {
535
+ "regex": "nsupseteq",
536
+ "latex": " \\nsupseteq ",
537
+ "ignorecase": true
538
+ },
539
+ {
540
+ "regex": "supsetneq",
541
+ "latex": " \\supsetneq ",
542
+ "ignorecase": true
543
+ },
544
+ {
545
+ "regex": "varsupsetneq",
546
+ "latex": " \\varsupsetneq ",
547
+ "ignorecase": true
548
+ },
549
+ {
550
+ "regex": "sqsupseteq",
551
+ "latex": " \\sqsupseteq ",
552
+ "ignorecase": true
553
+ },
352
554
 
353
- {
354
- "regex": "in",
355
- "latex": " \\in ",
356
- "ignorecase": true
357
- },
358
- {
359
- "regex": "notin|not in",
360
- "latex": " \\notin ",
361
- "ignorecase": true
362
- },
363
- {
364
- "regex": "ni",
365
- "latex": " \\ni ",
366
- "ignorecase": true
367
- },
368
- {
369
- "regex": "notni|not ni",
370
- "latex": " \\notni ",
371
- "ignorecase": true
372
- },
373
- {
374
- "regex": "cap",
375
- "latex": " \\cap "
376
- },
377
- {
378
- "regex": "CAP",
379
- "latex": " \\cap "
380
- },
381
- {
382
- "regex": "Cap",
383
- "latex": " \\Cap "
384
- },
385
- {
386
- "regex": "sqcap",
387
- "latex": " \\sqcap ",
388
- "ignorecase": true
389
- },
390
- {
391
- "regex": "bigcap",
392
- "latex": " \\bigcap ",
393
- "ignorecase": true
394
- },
395
- {
396
- "regex": "cup",
397
- "latex": " \\cup "
398
- },
399
- {
400
- "regex": "CUP",
401
- "latex": " \\cup "
402
- },
403
- {
404
- "regex": "Cup",
405
- "latex": " \\Cup "
406
- },
407
- {
408
- "regex": "union",
409
- "latex": " \\cup ",
410
- "ignorecase": true
411
- },
412
- {
413
- "regex": "smallunion",
414
- "latex": " \\cup ",
415
- "ignorecase": true
416
- },
417
- {
418
- "regex": "inter",
419
- "latex": " \\cap ",
420
- "ignorecase": true
421
- },
422
- {
423
- "regex": "smallinter",
424
- "latex": " \\cap ",
425
- "ignorecase": true
426
- },
427
- {
428
- "regex": "sqcup",
429
- "latex": " \\sqcup ",
430
- "ignorecase": true
431
- },
432
- {
433
- "regex": "bigcup",
434
- "latex": " \\bigcup ",
435
- "ignorecase": true
436
- },
437
- {
438
- "regex": "bigsqcup",
439
- "latex": " \\bigsqcup ",
440
- "ignorecase": true
441
- },
442
- {
443
- "regex": "uplus",
444
- "latex": " \\uplus ",
445
- "ignorecase": true
446
- },
447
- {
448
- "regex": "biguplus",
449
- "latex": " \\biguplus ",
450
- "ignorecase": true
451
- },
452
- {
453
- "regex": "subset",
454
- "latex": " \\subset "
455
- },
456
- {
457
- "regex": "Subset",
458
- "latex": " \\Subset "
459
- },
460
- {
461
- "regex": "sqsubset",
462
- "latex": " \\sqsubset ",
463
- "ignorecase": true
464
- },
465
- {
466
- "regex": "supset",
467
- "latex": " \\supset "
468
- },
469
- {
470
- "regex": "Supset",
471
- "latex": " \\Supset "
472
- },
473
- {
474
- "regex": "sqsupset",
475
- "latex": " \\sqsupset ",
476
- "ignorecase": true
477
- },
478
- {
479
- "regex": "subseteq",
480
- "latex": " \\subseteq ",
481
- "ignorecase": true
482
- },
483
- {
484
- "regex": "nsubseteq",
485
- "latex": " \\nsubseteq ",
486
- "ignorecase": true
487
- },
488
- {
489
- "regex": "subsetneq",
490
- "latex": " \\subsetneq ",
491
- "ignorecase": true
492
- },
493
- {
494
- "regex": "varsubsetneq",
495
- "latex": " \\varsubsetneq ",
496
- "ignorecase": true
497
- },
498
- {
499
- "regex": "sqsubseteq",
500
- "latex": " \\sqsubseteq ",
501
- "ignorecase": true
502
- },
503
- {
504
- "regex": "supseteq",
505
- "latex": " \\supseteq ",
506
- "ignorecase": true
507
- },
508
- {
509
- "regex": "nsupseteq",
510
- "latex": " \\nsupseteq ",
511
- "ignorecase": true
512
- },
513
- {
514
- "regex": "supsetneq",
515
- "latex": " \\supsetneq ",
516
- "ignorecase": true
517
- },
518
- {
519
- "regex": "varsupsetneq",
520
- "latex": " \\varsupsetneq ",
521
- "ignorecase": true
522
- },
523
- {
524
- "regex": "sqsupseteq",
525
- "latex": " \\sqsupseteq ",
526
- "ignorecase": true
527
- },
555
+ {
556
+ "regex": "ne",
557
+ "latex": " \\ne ",
558
+ "ignorecase": true
559
+ },
560
+ {
561
+ "regex": "neq",
562
+ "latex": " \\neq ",
563
+ "ignorecase": true
564
+ },
565
+ {
566
+ "regex": "equiv",
567
+ "latex": " \\equiv ",
568
+ "ignorecase": true
569
+ },
570
+ {
571
+ "regex": "notequiv|not equiv",
572
+ "latex": " \\not\\equiv ",
573
+ "ignorecase": true
574
+ },
575
+ {
576
+ "regex": "sim",
577
+ "latex": " \\sim ",
578
+ "ignorecase": true
579
+ },
580
+ {
581
+ "regex": "simeq",
582
+ "latex": " \\simeq ",
583
+ "ignorecase": true
584
+ },
585
+ {
586
+ "regex": "cong",
587
+ "latex": " \\cong ",
588
+ "ignorecase": true
589
+ },
590
+ {
591
+ "regex": "approx",
592
+ "latex": " \\approx ",
593
+ "ignorecase": true
594
+ },
595
+ {
596
+ "regex": "asymp",
597
+ "latex": " \\asymp ",
598
+ "ignorecase": true
599
+ },
600
+ {
601
+ "regex": "propto",
602
+ "latex": " \\propto ",
603
+ "ignorecase": true
604
+ },
605
+ {
606
+ "regex": "not\s*<",
607
+ "latex": " \\nless ",
608
+ "ignorecase": true
609
+ },
610
+ {
611
+ "regex": "<<",
612
+ "latex": " \\ll ",
613
+ "ignorecase": true
614
+ },
615
+ {
616
+ "regex": "not\s*<<",
617
+ "latex": " \\not\\ll ",
618
+ "ignorecase": true
619
+ },
620
+ {
621
+ "regex": "<<<|lll",
622
+ "latex": " \\lll ",
623
+ "ignorecase": true
624
+ },
625
+ {
626
+ "regex": "not\s*<<<|not\s*lll",
627
+ "latex": " \\not\\lll ",
628
+ "ignorecase": true
629
+ },
630
+ {
631
+ "regex": "not\s*>",
632
+ "latex": " \\ngtr ",
633
+ "ignorecase": true
634
+ },
635
+ {
636
+ "regex": ">>",
637
+ "latex": " \\gg ",
638
+ "ignorecase": true
639
+ },
640
+ {
641
+ "regex": "not\s*>>",
642
+ "latex": " \\not\\gg ",
643
+ "ignorecase": true
644
+ },
645
+ {
646
+ "regex": ">>>|ggg",
647
+ "latex": " \\ggg ",
648
+ "ignorecase": true
649
+ },
650
+ {
651
+ "regex": "not\s*>>>|not\s*ggg",
652
+ "latex": " \\not\\ggg ",
653
+ "ignorecase": true
654
+ },
655
+ {
656
+ "regex": "le",
657
+ "latex": " \\le ",
658
+ "ignorecase": true
659
+ },
660
+ {
661
+ "regex": "leq",
662
+ "latex": " \\leq ",
663
+ "ignorecase": true
664
+ },
665
+ {
666
+ "regex": "ge",
667
+ "latex": " \\ge ",
668
+ "ignorecase": true
669
+ },
670
+ {
671
+ "regex": "geq",
672
+ "latex": " \\geq ",
673
+ "ignorecase": true
674
+ },
528
675
 
529
- {
530
- "regex": "ne",
531
- "latex": " \\ne ",
532
- "ignorecase": true
533
- },
534
- {
535
- "regex": "neq",
536
- "latex": " \\neq ",
537
- "ignorecase": true
538
- },
539
- {
540
- "regex": "equiv",
541
- "latex": " \\equiv ",
542
- "ignorecase": true
543
- },
544
- {
545
- "regex": "notequiv|not equiv",
546
- "latex": " \\not\\equiv ",
547
- "ignorecase": true
548
- },
549
- {
550
- "regex": "sim",
551
- "latex": " \\sim ",
552
- "ignorecase": true
553
- },
554
- {
555
- "regex": "simeq",
556
- "latex": " \\simeq ",
557
- "ignorecase": true
558
- },
559
- {
560
- "regex": "cong",
561
- "latex": " \\cong ",
562
- "ignorecase": true
563
- },
564
- {
565
- "regex": "approx",
566
- "latex": " \\approx ",
567
- "ignorecase": true
568
- },
569
- {
570
- "regex": "asymp",
571
- "latex": " \\asymp ",
572
- "ignorecase": true
573
- },
574
- {
575
- "regex": "propto",
576
- "latex": " \\propto ",
577
- "ignorecase": true
578
- },
579
- {
580
- "regex": "not\s*<",
581
- "latex": " \\nless ",
582
- "ignorecase": true
583
- },
584
- {
585
- "regex": "<<",
586
- "latex": " \\ll ",
587
- "ignorecase": true
588
- },
589
- {
590
- "regex": "not\s*<<",
591
- "latex": " \\not\\ll ",
592
- "ignorecase": true
593
- },
594
- {
595
- "regex": "<<<|lll",
596
- "latex": " \\lll ",
597
- "ignorecase": true
598
- },
599
- {
600
- "regex": "not\s*<<<|not\s*lll",
601
- "latex": " \\not\\lll ",
602
- "ignorecase": true
603
- },
604
- {
605
- "regex": "not\s*>",
606
- "latex": " \\ngtr ",
607
- "ignorecase": true
608
- },
609
- {
610
- "regex": ">>",
611
- "latex": " \\gg ",
612
- "ignorecase": true
613
- },
614
- {
615
- "regex": "not\s*>>",
616
- "latex": " \\not\\gg ",
617
- "ignorecase": true
618
- },
619
- {
620
- "regex": ">>>|ggg",
621
- "latex": " \\ggg ",
622
- "ignorecase": true
623
- },
624
- {
625
- "regex": "not\s*>>>|not\s*ggg",
626
- "latex": " \\not\\ggg ",
627
- "ignorecase": true
628
- },
629
- {
630
- "regex": "le",
631
- "latex": " \\le ",
632
- "ignorecase": true
633
- },
634
- {
635
- "regex": "leq",
636
- "latex": " \\leq ",
637
- "ignorecase": true
638
- },
639
- {
640
- "regex": "ge",
641
- "latex": " \\ge ",
642
- "ignorecase": true
643
- },
644
- {
645
- "regex": "geq",
646
- "latex": " \\geq ",
647
- "ignorecase": true
648
- },
676
+ {
677
+ "regex": "parallel",
678
+ "latex": " \\parallel ",
679
+ "ignorecase": true
680
+ },
681
+ {
682
+ "regex": "not\s*parallel",
683
+ "latex": " \\nparallel ",
684
+ "ignorecase": true
685
+ },
686
+ {
687
+ "regex": "angle",
688
+ "latex": " \\angle ",
689
+ "ignorecase": true
690
+ },
691
+ {
692
+ "regex": "deg",
693
+ "latex": " ^\\circ ",
694
+ "ignorecase": true
695
+ },
696
+ {
697
+ "regex": "diamond",
698
+ "latex": " \\diamond "
699
+ },
700
+ {
701
+ "regex": "Diamond",
702
+ "latex": " \\Diamond "
703
+ },
704
+ {
705
+ "regex": "bigcirc",
706
+ "latex": " \\bigcirc ",
707
+ "ignorecase": true
708
+ },
709
+ {
710
+ "regex": "triangle",
711
+ "latex": " \\triangle ",
712
+ "ignorecase": true
713
+ },
714
+ {
715
+ "regex": "triangled",
716
+ "latex": " \\triangledown ",
717
+ "ignorecase": true
718
+ },
719
+ {
720
+ "regex": "trianglel",
721
+ "latex": " \\triangleleft ",
722
+ "ignorecase": true
723
+ },
724
+ {
725
+ "regex": "triangler",
726
+ "latex": " \\triangleright ",
727
+ "ignorecase": true
728
+ },
729
+ {
730
+ "regex": "bar",
731
+ "latex": " \\overline ",
732
+ "ignorecase": true
733
+ },
734
+ {
735
+ "regex": "overline",
736
+ "latex": " \\overline ",
737
+ "ignorecase": true
738
+ },
739
+ {
740
+ "regex": "arch",
741
+ "latex": " \\stackrel\\frown ",
742
+ "ignorecase": true
743
+ },
649
744
 
650
- {
651
- "regex": "parallel",
652
- "latex": " \\parallel ",
653
- "ignorecase": true
654
- },
655
- {
656
- "regex": "not\s*parallel",
657
- "latex": " \\nparallel ",
658
- "ignorecase": true
659
- },
660
- {
661
- "regex": "angle",
662
- "latex": " \\angle ",
663
- "ignorecase": true
664
- },
665
- {
666
- "regex": "deg",
667
- "latex": " ^\\circ ",
668
- "ignorecase": true
669
- },
670
- {
671
- "regex": "diamond",
672
- "latex": " \\diamond "
673
- },
674
- {
675
- "regex": "Diamond",
676
- "latex": " \\Diamond "
677
- },
678
- {
679
- "regex": "bigcirc",
680
- "latex": " \\bigcirc ",
681
- "ignorecase": true
682
- },
683
- {
684
- "regex": "triangle",
685
- "latex": " \\triangle ",
686
- "ignorecase": true
687
- },
688
- {
689
- "regex": "triangled",
690
- "latex": " \\triangledown ",
691
- "ignorecase": true
692
- },
693
- {
694
- "regex": "trianglel",
695
- "latex": " \\triangleleft ",
696
- "ignorecase": true
697
- },
698
- {
699
- "regex": "triangler",
700
- "latex": " \\triangleright ",
701
- "ignorecase": true
702
- },
703
- {
704
- "regex": "bar",
705
- "latex": " \\bar ",
706
- "ignorecase": true
707
- },
708
- {
709
- "regex": "overline",
710
- "latex": " \\overline ",
711
- "ignorecase": true
712
- },
713
- {
714
- "regex": "arch",
715
- "latex": " \\stackrel\\frown ",
716
- "ignorecase": true
717
- },
745
+ {
746
+ "regex": "Forall|FORALL",
747
+ "latex": " \\forall "
748
+ },
749
+ {
750
+ "regex": "exists",
751
+ "latex": " \\exists ",
752
+ "ignorecase": true
753
+ },
754
+ {
755
+ "regex": "therefore",
756
+ "latex": " \\therefore ",
757
+ "ignorecase": true
758
+ },
759
+ {
760
+ "regex": "because",
761
+ "latex": " \\because ",
762
+ "ignorecase": true
763
+ },
764
+ {
765
+ "regex": "lor",
766
+ "latex": " \\lor ",
767
+ "ignorecase": true
768
+ },
769
+ {
770
+ "regex": "vee",
771
+ "latex": " \\vee ",
772
+ "ignorecase": true
773
+ },
774
+ {
775
+ "regex": "bigvee",
776
+ "latex": " \\bigvee ",
777
+ "ignorecase": true
778
+ },
779
+ {
780
+ "regex": "land",
781
+ "latex": " \\land ",
782
+ "ignorecase": true
783
+ },
784
+ {
785
+ "regex": "wedge",
786
+ "latex": " \\wedge ",
787
+ "ignorecase": true
788
+ },
789
+ {
790
+ "regex": "bigwedge",
791
+ "latex": " \\bigwedge ",
792
+ "ignorecase": true
793
+ },
794
+ {
795
+ "regex": "neg",
796
+ "latex": " \\neg ",
797
+ "ignorecase": true
798
+ },
799
+ {
800
+ "regex": "bot",
801
+ "latex": " \\bot ",
802
+ "ignorecase": true
803
+ },
804
+ {
805
+ "regex": "top",
806
+ "latex": " \\top ",
807
+ "ignorecase": true
808
+ },
809
+ {
810
+ "regex": "vdash",
811
+ "latex": " \\vdash ",
812
+ "ignorecase": true
813
+ },
814
+ {
815
+ "regex": "dashv",
816
+ "latex": " \\dashv ",
817
+ "ignorecase": true
818
+ },
718
819
 
719
- {
720
- "regex": "Forall|FORALL",
721
- "latex": " \\forall "
722
- },
723
- {
724
- "regex": "exists",
725
- "latex": " \\exists ",
726
- "ignorecase": true
727
- },
728
- {
729
- "regex": "therefore",
730
- "latex": " \\therefore ",
731
- "ignorecase": true
732
- },
733
- {
734
- "regex": "because",
735
- "latex": " \\because ",
736
- "ignorecase": true
737
- },
738
- {
739
- "regex": "lor",
740
- "latex": " \\lor ",
741
- "ignorecase": true
742
- },
743
- {
744
- "regex": "vee",
745
- "latex": " \\vee ",
746
- "ignorecase": true
747
- },
748
- {
749
- "regex": "bigvee",
750
- "latex": " \\bigvee ",
751
- "ignorecase": true
752
- },
753
- {
754
- "regex": "land",
755
- "latex": " \\land ",
756
- "ignorecase": true
757
- },
758
- {
759
- "regex": "wedge",
760
- "latex": " \\wedge ",
761
- "ignorecase": true
762
- },
763
- {
764
- "regex": "bigwedge",
765
- "latex": " \\bigwedge ",
766
- "ignorecase": true
767
- },
768
- {
769
- "regex": "neg",
770
- "latex": " \\neg ",
771
- "ignorecase": true
772
- },
773
- {
774
- "regex": "bot",
775
- "latex": " \\bot ",
776
- "ignorecase": true
777
- },
778
- {
779
- "regex": "top",
780
- "latex": " \\top ",
781
- "ignorecase": true
782
- },
783
- {
784
- "regex": "vdash",
785
- "latex": " \\vdash ",
786
- "ignorecase": true
787
- },
788
- {
789
- "regex": "dashv",
790
- "latex": " \\dashv ",
791
- "ignorecase": true
792
- },
820
+ {
821
+ "regex": "leftarrow|larrow",
822
+ "latex": " \\leftarrow "
823
+ },
824
+ {
825
+ "regex": "Leftarrow|LEFTARROW|LARROW",
826
+ "latex": " \\Leftarrow "
827
+ },
828
+ {
829
+ "regex": "rightarrow|rarrow",
830
+ "latex": " \\rightarrow "
831
+ },
832
+ {
833
+ "regex": "Rightarrow|RIGHTARROW|RARROW",
834
+ "latex": " \\Rightarrow "
835
+ },
836
+ {
837
+ "regex": "uparrow",
838
+ "latex": " \\uparrow "
839
+ },
840
+ {
841
+ "regex": "Uparrow|UPARROW",
842
+ "latex": " \\Uparrow "
843
+ },
844
+ {
845
+ "regex": "downarrow",
846
+ "latex": " \\downarrow "
847
+ },
848
+ {
849
+ "regex": "Downarrow|DOWNARROW",
850
+ "latex": " \\Downarrow "
851
+ },
852
+ {
853
+ "regex": "udarrow",
854
+ "latex": " \\updownarrow "
855
+ },
856
+ {
857
+ "regex": "Udarrow|UDARROW",
858
+ "latex": " \\Updownarrow "
859
+ },
860
+ {
861
+ "regex": "lrarrow",
862
+ "latex": " \\leftrightarrow "
863
+ },
864
+ {
865
+ "regex": "Lrarrow|LRARROW",
866
+ "latex": " \\Leftrightarrow "
867
+ },
868
+ {
869
+ "regex": "nwarrow",
870
+ "latex": " \\nwarrow ",
871
+ "ignorecase": true
872
+ },
873
+ {
874
+ "regex": "searrow",
875
+ "latex": " \\searrow ",
876
+ "ignorecase": true
877
+ },
878
+ {
879
+ "regex": "nearrow",
880
+ "latex": " \\nearrow ",
881
+ "ignorecase": true
882
+ },
883
+ {
884
+ "regex": "swarrow",
885
+ "latex": " \\swarrow ",
886
+ "ignorecase": true
887
+ },
888
+ {
889
+ "regex": "hookleft",
890
+ "latex": " \\hookleftarrow ",
891
+ "ignorecase": true
892
+ },
893
+ {
894
+ "regex": "hookright",
895
+ "latex": " \\hookrightarrow ",
896
+ "ignorecase": true
897
+ },
898
+ {
899
+ "regex": "mapsto",
900
+ "latex": " \\mapsto ",
901
+ "ignorecase": true
902
+ },
793
903
 
794
- {
795
- "regex": "leftarrow|larrow",
796
- "latex": " \\leftarrow "
797
- },
798
- {
799
- "regex": "Leftarrow|LEFTARROW|LARROW",
800
- "latex": " \\Leftarrow "
801
- },
802
- {
803
- "regex": "rightarrow|rarrow",
804
- "latex": " \\rightarrow "
805
- },
806
- {
807
- "regex": "Rightarrow|RIGHTARROW|RARROW",
808
- "latex": " \\Rightarrow "
809
- },
810
- {
811
- "regex": "uparrow",
812
- "latex": " \\uparrow "
813
- },
814
- {
815
- "regex": "Uparrow|UPARROW",
816
- "latex": " \\Uparrow "
817
- },
818
- {
819
- "regex": "downarrow",
820
- "latex": " \\downarrow "
821
- },
822
- {
823
- "regex": "Downarrow|DOWNARROW",
824
- "latex": " \\Downarrow "
825
- },
826
- {
827
- "regex": "udarrow",
828
- "latex": " \\updownarrow "
829
- },
830
- {
831
- "regex": "Udarrow|UDARROW",
832
- "latex": " \\Updownarrow "
833
- },
834
- {
835
- "regex": "lrarrow",
836
- "latex": " \\leftrightarrow "
837
- },
838
- {
839
- "regex": "Lrarrow|LRARROW",
840
- "latex": " \\Leftrightarrow "
841
- },
842
- {
843
- "regex": "nwarrow",
844
- "latex": " \\nwarrow ",
845
- "ignorecase": true
846
- },
847
- {
848
- "regex": "searrow",
849
- "latex": " \\searrow ",
850
- "ignorecase": true
851
- },
852
- {
853
- "regex": "nearrow",
854
- "latex": " \\nearrow ",
855
- "ignorecase": true
856
- },
857
- {
858
- "regex": "swarrow",
859
- "latex": " \\swarrow ",
860
- "ignorecase": true
861
- },
862
- {
863
- "regex": "hookleft",
864
- "latex": " \\hookleftarrow ",
865
- "ignorecase": true
866
- },
867
- {
868
- "regex": "hookright",
869
- "latex": " \\hookrightarrow ",
870
- "ignorecase": true
871
- },
872
- {
873
- "regex": "mapsto",
874
- "latex": " \\mapsto ",
875
- "ignorecase": true
876
- },
904
+ {
905
+ "regex": "amalg",
906
+ "latex": " \\amalg ",
907
+ "ignorecase": true
908
+ },
909
+ {
910
+ "regex": "dagger",
911
+ "latex": " \\dagger ",
912
+ "ignorecase": true
913
+ },
914
+ {
915
+ "regex": "ddagger",
916
+ "latex": " \\ddager ",
917
+ "ignorecase": true
918
+ },
919
+ {
920
+ "regex": "ldots",
921
+ "latex": " \\ldots ",
922
+ "ignorecase": true
923
+ },
924
+ {
925
+ "regex": "cdots",
926
+ "latex": " \\cdots ",
927
+ "ignorecase": true
928
+ },
929
+ {
930
+ "regex": "ddots",
931
+ "latex": " \\ddots ",
932
+ "ignorecase": true
933
+ },
934
+
935
+ {
936
+ "regex": "`",
937
+ "latex": " \\, "
938
+ },
939
+ {
940
+ "regex": "~",
941
+ "latex": " \\ "
942
+ },
943
+ {
944
+ "regex": "#",
945
+ "latex": "\\\\\\\\"
946
+ },
947
+ {
948
+ "regex": "&amp;",
949
+ "latex": ""
950
+ },
951
+ {
952
+ "regex": "cases",
953
+ "latex": " \\cases "
954
+ },
877
955
 
878
- {
879
- "regex": "amalg",
880
- "latex": " \\amalg ",
881
- "ignorecase": true
882
- },
883
- {
884
- "regex": "dagger",
885
- "latex": " \\dagger ",
886
- "ignorecase": true
887
- },
888
- {
889
- "regex": "ddagger",
890
- "latex": " \\ddager ",
891
- "ignorecase": true
892
- },
893
- {
894
- "regex": "ldots",
895
- "latex": " \\ldots ",
896
- "ignorecase": true
897
- },
898
- {
899
- "regex": "cdots",
900
- "latex": " \\cdots ",
901
- "ignorecase": true
902
- },
903
- {
904
- "regex": "ddots",
905
- "latex": " \\ddots ",
906
- "ignorecase": true
907
- },
908
-
909
- {
910
- "regex": "`",
911
- "latex": " \\, "
912
- },
913
- {
914
- "regex": "~",
915
- "latex": " \\ "
916
- },
917
- {
918
- "regex": "#",
919
- "latex": "\\\\\\\\"
920
- },
921
- {
922
- "regex": "&amp;",
923
- "latex": ""
924
- },
925
- {
926
- "regex": "cases",
927
- "latex": " \\cases "
928
- },
956
+ {
957
+ "regex": "\\bleft\\b\\s*{",
958
+ "latex": " \\{ ",
959
+ "ignorecase": true
960
+ },
961
+ {
962
+ "regex": "\\bright\\b\\s*}",
963
+ "latex": " \\} ",
964
+ "ignorecase": true
965
+ },
966
+ {
967
+ "regex": "\\bleft\\b\\s*\\(",
968
+ "latex": " \\left ( ",
969
+ "ignorecase": true
970
+ },
971
+ {
972
+ "regex": "\\bright\\b\\s*\\)",
973
+ "latex": " \\right ) ",
974
+ "ignorecase": true
975
+ },
976
+ {
977
+ "regex": "langle",
978
+ "latex": " \\langle ",
979
+ "ignorecase": true
980
+ },
981
+ {
982
+ "regex": "rangle",
983
+ "latex": " \\rangle ",
984
+ "ignorecase": true
985
+ },
986
+ {
987
+ "regex": "lfloor",
988
+ "latex": " \\lfloor ",
989
+ "ignorecase": true
990
+ },
991
+ {
992
+ "regex": "rfloor",
993
+ "latex": " \\rfloor ",
994
+ "ignorecase": true
995
+ },
996
+ {
997
+ "regex": "lceil",
998
+ "latex": " \\lceil ",
999
+ "ignorecase": true
1000
+ },
1001
+ {
1002
+ "regex": "rceil",
1003
+ "latex": " \\rceil ",
1004
+ "ignorecase": true
1005
+ },
929
1006
 
930
- {
931
- "regex": "left",
932
- "latex": " \\left ",
933
- "ignorecase": true
934
- },
935
- {
936
- "regex": "right",
937
- "latex": " \\right ",
938
- "ignorecase": true
939
- },
940
- {
941
- "regex": "langle",
942
- "latex": " \\langle ",
943
- "ignorecase": true
944
- },
945
- {
946
- "regex": "rangle",
947
- "latex": " \\rangle ",
948
- "ignorecase": true
949
- },
950
- {
951
- "regex": "lfloor",
952
- "latex": " \\lfloor ",
953
- "ignorecase": true
954
- },
955
- {
956
- "regex": "rfloor",
957
- "latex": " \\rfloor ",
958
- "ignorecase": true
959
- },
960
- {
961
- "regex": "lceil",
962
- "latex": " \\lceil ",
963
- "ignorecase": true
964
- },
965
- {
966
- "regex": "rceil",
967
- "latex": " \\rceil ",
968
- "ignorecase": true
969
- },
1007
+ {
1008
+ "regex": "(Alpha)|(ALPHA)",
1009
+ "latex": " A "
1010
+ },
1011
+ {
1012
+ "regex": "alpha",
1013
+ "latex": " \\alpha "
1014
+ },
1015
+ {
1016
+ "regex": "(Beta)|(BETA)",
1017
+ "latex": " B "
1018
+ },
1019
+ {
1020
+ "regex": "beta",
1021
+ "latex": " \\beta "
1022
+ },
1023
+ {
1024
+ "regex": "(Gamma)|(GAMMA)",
1025
+ "latex": " \\Gamma "
1026
+ },
1027
+ {
1028
+ "regex": "gamma",
1029
+ "latex": " \\gamma "
1030
+ },
1031
+ {
1032
+ "regex": "(Delta)|(DELTA)",
1033
+ "latex": " \\Delta "
1034
+ },
1035
+ {
1036
+ "regex": "delta",
1037
+ "latex": " \\delta "
1038
+ },
1039
+ {
1040
+ "regex": "(Epsilon)|(EPSILON)",
1041
+ "latex": " E "
1042
+ },
1043
+ {
1044
+ "regex": "epsilon",
1045
+ "latex": " \\epsilon "
1046
+ },
1047
+ {
1048
+ "regex": "(Zeta)|(ZETA)",
1049
+ "latex": " Z "
1050
+ },
1051
+ {
1052
+ "regex": "zeta",
1053
+ "latex": " \\zeta "
1054
+ },
1055
+ {
1056
+ "regex": "(Eta)|(ETA)",
1057
+ "latex": " H "
1058
+ },
1059
+ {
1060
+ "regex": "eta",
1061
+ "latex": " \\eta "
1062
+ },
1063
+ {
1064
+ "regex": "(Theta)|(THETA)",
1065
+ "latex": " \\Theta "
1066
+ },
1067
+ {
1068
+ "regex": "theta",
1069
+ "latex": " \\theta "
1070
+ },
1071
+ {
1072
+ "regex": "(Iota)|(IOTA)",
1073
+ "latex": " I "
1074
+ },
1075
+ {
1076
+ "regex": "iota",
1077
+ "latex": " \\iota "
1078
+ },
1079
+ {
1080
+ "regex": "(Kappa)|(KAPPA)",
1081
+ "latex": " K "
1082
+ },
1083
+ {
1084
+ "regex": "kappa",
1085
+ "latex": " \\kappa "
1086
+ },
1087
+ {
1088
+ "regex": "(Lambda)|(LAMBDA)",
1089
+ "latex": " \\Lambda "
1090
+ },
1091
+ {
1092
+ "regex": "lambda",
1093
+ "latex": " \\lambda "
1094
+ },
1095
+ {
1096
+ "regex": "(Mu)|(MU)",
1097
+ "latex": " M "
1098
+ },
1099
+ {
1100
+ "regex": "mu",
1101
+ "latex": " \\mu "
1102
+ },
1103
+ {
1104
+ "regex": "(Nu)|(NU)",
1105
+ "latex": " N "
1106
+ },
1107
+ {
1108
+ "regex": "nu",
1109
+ "latex": " \\nu "
1110
+ },
1111
+ {
1112
+ "regex": "(Xi)|(XI)",
1113
+ "latex": " \\Xi "
1114
+ },
1115
+ {
1116
+ "regex": "xi",
1117
+ "latex": " \\xi "
1118
+ },
1119
+ {
1120
+ "regex": "(Pi)|(PI)",
1121
+ "latex": " \\Pi "
1122
+ },
1123
+ {
1124
+ "regex": "pi",
1125
+ "latex": " \\pi "
1126
+ },
1127
+ {
1128
+ "regex": "(Rho)|(RHO)",
1129
+ "latex": " P "
1130
+ },
1131
+ {
1132
+ "regex": "rho",
1133
+ "latex": " \\rho "
1134
+ },
1135
+ {
1136
+ "regex": "(Sigma)|(SIGMA)",
1137
+ "latex": " \\Sigma "
1138
+ },
1139
+ {
1140
+ "regex": "sigma",
1141
+ "latex": " \\sigma "
1142
+ },
1143
+ {
1144
+ "regex": "(Tau)|(TAU)",
1145
+ "latex": " T "
1146
+ },
1147
+ {
1148
+ "regex": "tau",
1149
+ "latex": " \\tau "
1150
+ },
1151
+ {
1152
+ "regex": "(Upsilon)|(UPSILON)",
1153
+ "latex": " \\Upsilon "
1154
+ },
1155
+ {
1156
+ "regex": "upsilon",
1157
+ "latex": " \\upsilon "
1158
+ },
1159
+ {
1160
+ "regex": "(Phi)|(PHI)",
1161
+ "latex": " \\Phi "
1162
+ },
1163
+ {
1164
+ "regex": "phi",
1165
+ "latex": " \\phi "
1166
+ },
1167
+ {
1168
+ "regex": "(Chi)|(CHI)",
1169
+ "latex": " X "
1170
+ },
1171
+ {
1172
+ "regex": "chi",
1173
+ "latex": " \\chi "
1174
+ },
1175
+ {
1176
+ "regex": "(Psi)|(PSI)",
1177
+ "latex": " \\Psi "
1178
+ },
1179
+ {
1180
+ "regex": "psi",
1181
+ "latex": " \\psi "
1182
+ },
1183
+ {
1184
+ "regex": "(Omega)|(OMEGA)",
1185
+ "latex": " \\Omega "
1186
+ },
1187
+ {
1188
+ "regex": "omega",
1189
+ "latex": " \\omega "
1190
+ },
1191
+ {
1192
+ "regex": "varepsilon",
1193
+ "latex": " \\varepsilon "
1194
+ },
1195
+ {
1196
+ "regex": "digamma",
1197
+ "latex": " \\digamma "
1198
+ },
1199
+ {
1200
+ "regex": "varkappa",
1201
+ "latex": " \\varkappa "
1202
+ },
1203
+ {
1204
+ "regex": "varpi",
1205
+ "latex": " \\varpi "
1206
+ },
1207
+ {
1208
+ "regex": "varrho",
1209
+ "latex": " \\varrho "
1210
+ },
1211
+ {
1212
+ "regex": "varsigma",
1213
+ "latex": " \\varsigma "
1214
+ },
1215
+ {
1216
+ "regex": "vartheta",
1217
+ "latex": " \\vartheta "
1218
+ },
1219
+ {
1220
+ "regex": "varphi",
1221
+ "latex": " \\varphi "
1222
+ },
1223
+ {
1224
+ "regex": "aleph",
1225
+ "latex": " \\aleph "
1226
+ },
1227
+ {
1228
+ "regex": "beth",
1229
+ "latex": " \\beth "
1230
+ },
1231
+ {
1232
+ "regex": "gimel",
1233
+ "latex": " \\gimel "
1234
+ },
1235
+ {
1236
+ "regex": "daleth",
1237
+ "latex": " \\daleth "
1238
+ },
970
1239
 
971
- {
972
- "regex": "(Alpha)|(ALPHA)",
973
- "latex": " A "
974
- },
975
- {
976
- "regex": "alpha",
977
- "latex": " \\alpha "
978
- },
979
- {
980
- "regex": "(Beta)|(BETA)",
981
- "latex": " B "
982
- },
983
- {
984
- "regex": "beta",
985
- "latex": " \\beta "
986
- },
987
- {
988
- "regex": "(Gamma)|(GAMMA)",
989
- "latex": " \\Gamma "
990
- },
991
- {
992
- "regex": "gamma",
993
- "latex": " \\gamma "
994
- },
995
- {
996
- "regex": "(Delta)|(DELTA)",
997
- "latex": " \\Delta "
998
- },
999
- {
1000
- "regex": "delta",
1001
- "latex": " \\delta "
1002
- },
1003
- {
1004
- "regex": "(Epsilon)|(EPSILON)",
1005
- "latex": " E "
1006
- },
1007
- {
1008
- "regex": "epsilon",
1009
- "latex": " \\epsilon "
1010
- },
1011
- {
1012
- "regex": "(Zeta)|(ZETA)",
1013
- "latex": " Z "
1014
- },
1015
- {
1016
- "regex": "zeta",
1017
- "latex": " \\zeta "
1018
- },
1019
- {
1020
- "regex": "(Eta)|(ETA)",
1021
- "latex": " H "
1022
- },
1023
- {
1024
- "regex": "eta",
1025
- "latex": " \\eta "
1026
- },
1027
- {
1028
- "regex": "(Theta)|(THETA)",
1029
- "latex": " \\Theta "
1030
- },
1031
- {
1032
- "regex": "theta",
1033
- "latex": " \\theta "
1034
- },
1035
- {
1036
- "regex": "(Iota)|(IOTA)",
1037
- "latex": " I "
1038
- },
1039
- {
1040
- "regex": "iota",
1041
- "latex": " \\iota "
1042
- },
1043
- {
1044
- "regex": "(Kappa)|(KAPPA)",
1045
- "latex": " K "
1046
- },
1047
- {
1048
- "regex": "kappa",
1049
- "latex": " \\kappa "
1050
- },
1051
- {
1052
- "regex": "(Lambda)|(LAMBDA)",
1053
- "latex": " \\Lambda "
1054
- },
1055
- {
1056
- "regex": "lambda",
1057
- "latex": " \\lambda "
1058
- },
1059
- {
1060
- "regex": "(Mu)|(MU)",
1061
- "latex": " M "
1062
- },
1063
- {
1064
- "regex": "mu",
1065
- "latex": " \\mu "
1066
- },
1067
- {
1068
- "regex": "(Nu)|(NU)",
1069
- "latex": " N "
1070
- },
1071
- {
1072
- "regex": "nu",
1073
- "latex": " \\nu "
1074
- },
1075
- {
1076
- "regex": "(Xi)|(XI)",
1077
- "latex": " \\Xi "
1078
- },
1079
- {
1080
- "regex": "xi",
1081
- "latex": " \\xi "
1082
- },
1083
- {
1084
- "regex": "(Pi)|(PI)",
1085
- "latex": " \\Pi "
1086
- },
1087
- {
1088
- "regex": "pi",
1089
- "latex": " \\pi "
1090
- },
1091
- {
1092
- "regex": "(Rho)|(RHO)",
1093
- "latex": " P "
1094
- },
1095
- {
1096
- "regex": "rho",
1097
- "latex": " \\rho "
1098
- },
1099
- {
1100
- "regex": "(Sigma)|(SIGMA)",
1101
- "latex": " \\Sigma "
1102
- },
1103
- {
1104
- "regex": "sigma",
1105
- "latex": " \\sigma "
1106
- },
1107
- {
1108
- "regex": "(Tau)|(TAU)",
1109
- "latex": " T "
1110
- },
1111
- {
1112
- "regex": "tau",
1113
- "latex": " \\tau "
1114
- },
1115
- {
1116
- "regex": "(Upsilon)|(UPSILON)",
1117
- "latex": " \\Upsilon "
1118
- },
1119
- {
1120
- "regex": "upsilon",
1121
- "latex": " \\upsilon "
1122
- },
1123
- {
1124
- "regex": "(Phi)|(PHI)",
1125
- "latex": " \\Phi "
1126
- },
1127
- {
1128
- "regex": "phi",
1129
- "latex": " \\phi "
1130
- },
1131
- {
1132
- "regex": "(Chi)|(CHI)",
1133
- "latex": " X "
1134
- },
1135
- {
1136
- "regex": "chi",
1137
- "latex": " \\chi "
1138
- },
1139
- {
1140
- "regex": "(Psi)|(PSI)",
1141
- "latex": " \\Psi "
1142
- },
1143
- {
1144
- "regex": "psi",
1145
- "latex": " \\psi "
1146
- },
1147
- {
1148
- "regex": "(Omega)|(OMEGA)",
1149
- "latex": " \\Omega "
1150
- },
1151
- {
1152
- "regex": "omega",
1153
- "latex": " \\omega "
1154
- },
1155
- {
1156
- "regex": "varepsilon",
1157
- "latex": " \\varepsilon "
1158
- },
1159
- {
1160
- "regex": "digamma",
1161
- "latex": " \\digamma "
1162
- },
1163
- {
1164
- "regex": "varkappa",
1165
- "latex": " \\varkappa "
1166
- },
1167
- {
1168
- "regex": "varpi",
1169
- "latex": " \\varpi "
1170
- },
1171
- {
1172
- "regex": "varrho",
1173
- "latex": " \\varrho "
1174
- },
1175
- {
1176
- "regex": "varsigma",
1177
- "latex": " \\varsigma "
1178
- },
1179
- {
1180
- "regex": "vartheta",
1181
- "latex": " \\vartheta "
1182
- },
1183
- {
1184
- "regex": "varphi",
1185
- "latex": " \\varphi "
1186
- },
1187
- {
1188
- "regex": "aleph",
1189
- "latex": " \\aleph "
1190
- },
1191
- {
1192
- "regex": "beth",
1193
- "latex": " \\beth "
1194
- },
1195
- {
1196
- "regex": "gimel",
1197
- "latex": " \\gimel "
1198
- },
1199
- {
1200
- "regex": "daleth",
1201
- "latex": " \\daleth "
1202
- },
1203
-
1204
- {
1205
- "regex": "->",
1206
- "latex": " \\to "
1207
- }
1208
- ]
1240
+ {
1241
+ "regex": "->",
1242
+ "latex": " \\to "
1243
+ }
1244
+ ]
1245
+ }