maruku 0.5.3 → 0.5.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. data/bin/maruku +14 -6
  2. data/bin/marutest +19 -10
  3. data/docs/changelog.html +49 -8
  4. data/docs/changelog.md +26 -1
  5. data/docs/entity_test.html +1 -1
  6. data/docs/exd.html +43 -24
  7. data/docs/index.html +4 -6
  8. data/docs/markdown_syntax.html +81 -170
  9. data/docs/maruku.html +4 -6
  10. data/docs/maruku.md +1 -1
  11. data/docs/proposal.html +21 -41
  12. data/lib/maruku.rb +5 -0
  13. data/lib/maruku/attributes.rb +3 -2
  14. data/lib/maruku/defaults.rb +3 -1
  15. data/lib/maruku/ext/math.rb +30 -0
  16. data/lib/maruku/ext/math/elements.rb +3 -2
  17. data/lib/maruku/ext/math/parsing.rb +81 -58
  18. data/lib/maruku/ext/math/to_html.rb +5 -5
  19. data/lib/maruku/helpers.rb +2 -0
  20. data/lib/maruku/input/charsource.rb +1 -1
  21. data/lib/maruku/input/extensions.rb +6 -5
  22. data/lib/maruku/input/parse_block.rb +7 -8
  23. data/lib/maruku/input/parse_doc.rb +1 -1
  24. data/lib/maruku/input/parse_span_better.rb +4 -4
  25. data/lib/maruku/input_textile2/t2_parser.rb +163 -0
  26. data/lib/maruku/maruku.rb +1 -1
  27. data/lib/maruku/output/s5/fancy.rb +756 -0
  28. data/lib/maruku/output/s5/to_s5.rb +104 -0
  29. data/lib/maruku/output/to_html.rb +103 -49
  30. data/lib/maruku/string_utils.rb +1 -1
  31. data/lib/maruku/textile2.rb +1 -0
  32. data/lib/maruku/version.rb +3 -1
  33. data/maruku_gem.rb +33 -0
  34. data/tests/s5/s5profiling.md +48 -0
  35. data/tests/unittest/blanks_in_code.md +6 -12
  36. data/tests/unittest/code3.md +3 -5
  37. data/tests/unittest/data_loss.md +53 -0
  38. data/tests/unittest/email.md +2 -2
  39. data/tests/unittest/entities.md +3 -5
  40. data/tests/unittest/footnotes.md +5 -5
  41. data/tests/unittest/ie.md +1 -1
  42. data/tests/unittest/images.md +2 -2
  43. data/tests/unittest/inline_html.md +6 -10
  44. data/tests/unittest/links.md +1 -1
  45. data/tests/unittest/list2.md +5 -5
  46. data/tests/unittest/lists.md +13 -13
  47. data/tests/unittest/lists_ol.md +13 -13
  48. data/tests/unittest/math/math2.md +84 -0
  49. data/tests/unittest/math/notmath.md +48 -0
  50. data/tests/unittest/syntax_hl.md +3 -5
  51. metadata +11 -2
data/docs/maruku.html CHANGED
@@ -13,7 +13,7 @@
13
13
  <p><a href='http://maruku.rubyforge.org/'>Maruku</a> is a Markdown interpreter written in <a href='http://www.ruby-lang.org'>Ruby</a>.</p>
14
14
 
15
15
  <blockquote id='news'>
16
- <p><a href='#release_notes'>Last release</a> is version 0.5.3 &#8211; 2007-02-05.</p>
16
+ <p><a href='#release_notes'>Last release</a> is version 0.5.4 &#8211; 2007-02-18.</p>
17
17
 
18
18
  <p>Use this command to update:</p>
19
19
 
@@ -134,8 +134,7 @@
134
134
 
135
135
  <pre><code>BlueCloth (to_html): parsing 0.01 sec + rendering 1.87 sec = 1.88 sec (1.00x)
136
136
  Maruku (to_html): parsing 0.66 sec + rendering 0.43 sec = 1.09 sec (1.73x)
137
- Maruku (to_latex): parsing 0.67 sec + rendering 0.23 sec = 0.90 sec (2.10x)
138
- </code></pre>
137
+ Maruku (to_latex): parsing 0.67 sec + rendering 0.23 sec = 0.90 sec (2.10x)</code></pre>
139
138
 
140
139
  <p>Please note that Maruku has a lot more features and therefore is looking for much more patterns in the file.</p>
141
140
 
@@ -233,8 +232,7 @@ Content of the document</code></pre>
233
232
  <p>If you create a list, and then set the <code>toc</code> attribute, when rendering Maruku will create an auto-generated table of contents.</p>
234
233
 
235
234
  <pre><code>* This will become a table of contents (this text will be scraped).
236
- {:toc}
237
- </code></pre>
235
+ {:toc}</code></pre>
238
236
 
239
237
  <p>You can see an example of this at the beginning of this document.</p>
240
238
 
@@ -323,4 +321,4 @@ I would love to have an equivalent in Ruby.
323
321
 
324
322
  --><div class='footnotes'><hr /><ol><li id='fn:1'>
325
323
  <p>I really was missing those.</p>
326
- <a href='#fnref:1' rev='footnote'>&#8617;</a></li></ol></div><div class='maruku_signature'><hr /><span style='font-size: small; font-style: italic'>Created by <a href='http://maruku.rubyforge.org' title='Maruku: a Markdown-superset interpreter for Ruby'>Maruku</a> at 15:30 on Monday, February 05th, 2007.</span></div></body></html>
324
+ <a href='#fnref:1' rev='footnote'>&#8617;</a></li></ol></div><div class='maruku_signature'><hr /><span style='font-size: small; font-style: italic'>Created by <a href='http://maruku.rubyforge.org' title='Maruku: a Markdown-superset interpreter for Ruby'>Maruku</a> at 13:32 on Sunday, February 18th, 2007.</span></div></body></html>
data/docs/maruku.md CHANGED
@@ -13,7 +13,7 @@ Mar**u**k**u**: a Markdown-superset interpreter
13
13
 
14
14
  [Maruku] is a Markdown interpreter written in [Ruby].
15
15
 
16
- > [Last release](#release_notes) is version 0.5.3 -- 2007-02-05.
16
+ > [Last release](#release_notes) is version 0.5.4 -- 2007-02-18.
17
17
  >
18
18
  > Use this command to update:
19
19
  >
data/docs/proposal.html CHANGED
@@ -20,20 +20,17 @@
20
20
 
21
21
  <p>The first character in the curly braces must be a colon, optionally followed by a space:</p>
22
22
 
23
- <pre><code>{: ref .class #id}
24
- </code></pre>
23
+ <pre><code>{: ref .class #id}</code></pre>
25
24
 
26
25
  <p>The old syntax was <code>{ref .class #id}</code>.</p>
27
26
 
28
27
  <p>For ALDs, the new syntax is:</p>
29
28
 
30
- <pre><code>{:ref_id: key=val .class #id }
31
- </code></pre>
29
+ <pre><code>{:ref_id: key=val .class #id }</code></pre>
32
30
 
33
31
  <p>instead of:</p>
34
32
 
35
- <pre><code>{ref_id}: key=val .class #id
36
- </code></pre>
33
+ <pre><code>{ref_id}: key=val .class #id </code></pre>
37
34
 
38
35
  <p>Converters that don&#8217;t use this syntax may just ignore everything which is in curly braces and starts with &#8221;:&#8221;.</p>
39
36
  </li>
@@ -44,8 +41,7 @@
44
41
  <pre><code>Paragraph 1
45
42
 
46
43
  {:par2}
47
- Paragraph 2
48
- </code></pre>
44
+ Paragraph 2</code></pre>
49
45
 
50
46
  <p>is equivalent to:</p>
51
47
 
@@ -88,8 +84,7 @@ Paragraph 2
88
84
 
89
85
  Paragraph *with emphasis*{: class=c1}
90
86
  second line of paragraph
91
- {: class=c1}
92
- </code></pre>
87
+ {: class=c1}</code></pre>
93
88
 
94
89
  <p>In this example, the three IALs refer to the header, the emphasis span, and the entire paragraph, respectively.</p>
95
90
 
@@ -101,15 +96,13 @@ Paragraph *with emphasis*{:c1}
101
96
  second line of paragraph
102
97
  {:c1}
103
98
 
104
- {:c1: class=c1}
105
- </code></pre>
99
+ {:c1: class=c1}</code></pre>
106
100
 
107
101
  <h2 id='attribute_lists'><span class='maruku_section_number'>2. </span>Attribute lists</h2>
108
102
 
109
103
  <p>This is an example attribute list, which shows everything you can put inside:</p>
110
104
 
111
- <pre><code>{: key1=val key2=&quot;long val&quot; #myid .class1 .class2 ref1 ref2}
112
- </code></pre>
105
+ <pre><code>{: key1=val key2=&quot;long val&quot; #myid .class1 .class2 ref1 ref2}</code></pre>
113
106
 
114
107
  <p>More in particular, an attribute list is a whitespace-separated list of elements of 4 different kinds:</p>
115
108
 
@@ -147,8 +140,7 @@ second line of paragraph
147
140
  <pre><code>{: #myid .class1 .class2}
148
141
  {: id=myid class=class1 .class2}
149
142
  {: id=myid class=&quot;class1 class2&quot;}
150
- {: id=myid class=&quot;will be overridden&quot; class=class1 .class2}
151
- </code></pre>
143
+ {: id=myid class=&quot;will be overridden&quot; class=class1 .class2}</code></pre>
152
144
 
153
145
  <h2 id='where_to_put_inline_attribute_lists'><span class='maruku_section_number'>3. </span>Where to put inline attribute lists</h2>
154
146
 
@@ -162,16 +154,14 @@ Line 2 of the paragraph.
162
154
 
163
155
  A quote with a citation url:
164
156
  &gt; Who said that?
165
- {: cite=google.com}
166
- </code></pre>
157
+ {: cite=google.com}</code></pre>
167
158
 
168
159
  <p>Note: empty lines between the block and the IAL are not tolerated. So this is not legal:</p>
169
160
 
170
161
  <pre><code>This is a paragraph.
171
162
  Line 2 of the paragraph.
172
163
 
173
- {: #myid .myclass}
174
- </code></pre>
164
+ {: #myid .myclass}</code></pre>
175
165
 
176
166
  <p>Attribute lists may be indented up to 3 spaces:</p>
177
167
 
@@ -191,8 +181,7 @@ Paragraph2
191
181
  <pre><code>### Header ### {: #myid}
192
182
 
193
183
  Header {: #myid .myclass}
194
- ------
195
- </code></pre>
184
+ ------</code></pre>
196
185
 
197
186
  <p>or, as like other block-level elements, on the line below:</p>
198
187
 
@@ -201,8 +190,7 @@ Header {: #myid .myclass}
201
190
 
202
191
  Header
203
192
  ------
204
- {: #myid .myclass}
205
- </code></pre>
193
+ {: #myid .myclass}</code></pre>
206
194
 
207
195
  <h3 id='for_spanlevel_elements'><span class='maruku_section_number'>3.3. </span>For span-level elements</h3>
208
196
 
@@ -217,18 +205,15 @@ Header
217
205
 
218
206
  <p>This works also for links, like this:</p>
219
207
 
220
- <pre><code>This is [a link][ref]{:#myid rel=abc rev=abc}
221
- </code></pre>
208
+ <pre><code>This is [a link][ref]{:#myid rel=abc rev=abc}</code></pre>
222
209
 
223
210
  <p>For images, this:</p>
224
211
 
225
- <pre><code>This is ![Alt text](url &quot;fresh carrots&quot;)
226
- </code></pre>
212
+ <pre><code>This is ![Alt text](url &quot;fresh carrots&quot;)</code></pre>
227
213
 
228
214
  <p>is equivalent to:</p>
229
215
 
230
- <pre><code>This is ![Alt text](url){:title=&quot;fresh carrots&quot;}
231
- </code></pre>
216
+ <pre><code>This is ![Alt text](url){:title=&quot;fresh carrots&quot;}</code></pre>
232
217
 
233
218
  <h2 id='using_tags'><span class='maruku_section_number'>4. </span>Using attributes lists definition</h2>
234
219
 
@@ -248,8 +233,7 @@ Header
248
233
 
249
234
  Blah blah blah.
250
235
 
251
- {:ref: #myhead .myclass lang=fr}
252
- </code></pre>
236
+ {:ref: #myhead .myclass lang=fr}</code></pre>
253
237
 
254
238
  <p>Of course, more than one IAL can reference the same ALD:</p>
255
239
 
@@ -257,9 +241,7 @@ Blah blah blah.
257
241
  ...
258
242
  # Header 2 # {:1}
259
243
 
260
- {:1: .myclass lang=fr}
261
-
262
- </code></pre>
244
+ {:1: .myclass lang=fr}</code></pre>
263
245
 
264
246
  <h2 id='the_rules'><span class='maruku_section_number'>5. </span>The rules</h2>
265
247
 
@@ -271,7 +253,7 @@ Blah blah blah.
271
253
  </li>
272
254
 
273
255
  <li>
274
- <p>Everywhere else, <strong>all</strong> PUNCTUATION characters <strong>can</strong> be escaped, and <strong>must</strong> be escaped when they could trigger links, tables, etc</p>
256
+ <p>Everywhere else, <strong>all</strong> PUNCTUATION characters <strong>can</strong> be escaped, and <strong>must</strong> be escaped when they could trigger links, tables, etc.</p>
275
257
 
276
258
  <p>A punctuation character is anything not a letter, a number, or whitespace (<code>[^a-zA-Z0-9\s\n]</code>).</p>
277
259
  </li>
@@ -301,8 +283,7 @@ Blah blah blah.
301
283
  <li>
302
284
  <p>There is an exception for backward compatibility, in links/images titles:</p>
303
285
 
304
- <pre><code>[text](url &quot;title&quot;with&quot;quotes&quot;)
305
- </code></pre>
286
+ <pre><code>[text](url &quot;title&quot;with&quot;quotes&quot;)</code></pre>
306
287
 
307
288
  <p>The exception is not valid for attribute lists and in other contexts, where you have to use the canonical syntax.</p>
308
289
  </li>
@@ -334,8 +315,7 @@ s.gsub(r, &#39;&#39;) # ignore metadata</code></pre>
334
315
  {: skipped=&quot;\}&quot; val=\} bar}
335
316
 
336
317
  for me
337
- {: also this}
338
- </code></pre>
318
+ {: also this} </code></pre>
339
319
 
340
320
  <p>the result is:</p>
341
321
 
@@ -343,4 +323,4 @@ for me
343
323
 
344
324
 
345
325
  for me </code></pre>
346
- <div class='maruku_signature'><hr /><span style='font-size: small; font-style: italic'>Created by <a href='http://maruku.rubyforge.org' title='Maruku: a Markdown-superset interpreter for Ruby'>Maruku</a> at 14:11 on Monday, February 05th, 2007.</span></div></body></html>
326
+ <div class='maruku_signature'><hr /><span style='font-size: small; font-style: italic'>Created by <a href='http://maruku.rubyforge.org' title='Maruku: a Markdown-superset interpreter for Ruby'>Maruku</a> at 13:32 on Sunday, February 18th, 2007.</span></div></body></html>
data/lib/maruku.rb CHANGED
@@ -126,8 +126,13 @@ require 'maruku/output/to_latex_entities'
126
126
  # Pretty print
127
127
  require 'maruku/output/to_markdown'
128
128
 
129
+ # S5 slides
130
+ require 'maruku/output/s5/to_s5'
131
+ require 'maruku/output/s5/fancy'
132
+
129
133
  # Exporting to text: strips all formatting (not complete)
130
134
  require 'maruku/output/to_s'
131
135
 
132
136
  # class Maruku is the global interface
133
137
  require 'maruku/maruku'
138
+
@@ -192,9 +192,10 @@ module MaRuKu; module In; module Markdown; module SpanLevelParser
192
192
  end
193
193
 
194
194
 
195
+ # We need a helper
196
+ def is_ial(e); e.kind_of? MDElement and e.node_type == :ial end
197
+
195
198
  def merge_ial(elements, src, con)
196
- # We need a helper
197
- def is_ial(e); e.kind_of? MDElement and e.node_type == :ial end
198
199
 
199
200
  # Apply each IAL to the element before
200
201
  elements.each_with_index do |e, i|
@@ -31,8 +31,10 @@ Globals = {
31
31
  :maruku_signature => true,
32
32
  :code_background_color => '#fef',
33
33
  :code_show_spaces => false,
34
+ :html_math_output_mathml => true, # also set :html_math_engine
34
35
  :html_math_engine => 'none', #ritex, itex2mml
35
36
 
37
+ :html_math_output_png => false,
36
38
  :html_png_engine => 'none',
37
39
  :html_png_dir => 'pngs',
38
40
  :html_png_url => 'pngs/',
@@ -44,7 +46,7 @@ Globals = {
44
46
  :latex_cjk => false,
45
47
 
46
48
  :debug_keep_ials => false,
47
-
49
+ :doc_prefix => ''
48
50
  }
49
51
 
50
52
  class MDElement
@@ -9,3 +9,33 @@ require 'maruku/ext/math/mathml_engines/none'
9
9
  require 'maruku/ext/math/mathml_engines/ritex'
10
10
  require 'maruku/ext/math/mathml_engines/itex2mml'
11
11
  require 'maruku/ext/math/mathml_engines/blahtex'
12
+
13
+
14
+ =begin maruku_doc
15
+ Attribute: math_enabled
16
+ Scope: global, document
17
+ Summary: Enables parsing of LaTeX math
18
+
19
+ To explicitly disable the math parsing:
20
+
21
+ Maruku.new(string, {:math_enabled => false})
22
+ {:ruby}
23
+
24
+ =end
25
+
26
+ MaRuKu::Globals[:math_enabled] = true
27
+
28
+
29
+ =begin maruku_doc
30
+ Attribute: math_numbered
31
+ Scope: global, document
32
+ Summary: Math openings which should be numerated
33
+
34
+ Array containing any of `'\\['`, `'\\begin{equation}'`, `'$$'`.
35
+
36
+ MaRuKu::Globals[math_numbered] = ['\\[']
37
+
38
+ =end
39
+
40
+
41
+ MaRuKu::Globals[:math_numbered] = []
@@ -4,7 +4,7 @@ module MaRuKu; class MDElement
4
4
  self.md_el(:inline_math, [], meta={:math=>math})
5
5
  end
6
6
 
7
- def md_equation(math, label=nil)
7
+ def md_equation(math, label, numerate)
8
8
  reglabel= /\\label\{(\w+)\}/
9
9
  if math =~ reglabel
10
10
  label = $1
@@ -12,9 +12,10 @@ module MaRuKu; class MDElement
12
12
  end
13
13
  # puts "Found label = #{label} math #{math.inspect} "
14
14
  num = nil
15
- if label && @doc #take number
15
+ if (label || numerate) && @doc #take number
16
16
  @doc.eqid2eq ||= {}
17
17
  num = @doc.eqid2eq.size + 1
18
+ label = "eq#{num}" if not label # FIXME do id for document
18
19
  end
19
20
  e = self.md_el(:equation, [], meta={:math=>math, :label=>label,:num=>num})
20
21
  if label && @doc #take number
@@ -1,70 +1,90 @@
1
1
  module MaRuKu
2
+
2
3
  class MDDocument
3
4
  # Hash equation id (String) to equation element (MDElement)
4
5
  attr_accessor :eqid2eq
6
+
7
+ def is_math_enabled?
8
+ get_setting :math_enabled
9
+ end
5
10
  end
6
11
  end
7
12
 
8
13
 
9
- # At least one slash inside
10
- #RegInlineMath1 = /\$([^\$]*[\\][^\$]*)\$/
11
- # No spaces around the delimiters
12
- #RegInlineMath2 = /\$([^\s\$](?:[^\$]*[^\s\$])?)\$/
13
- #RegInlineMath = Regexp::union(RegInlineMath1,RegInlineMath2)
14
-
15
14
  # Everything goes; takes care of escaping the "\$" inside the expression
16
15
  RegInlineMath = /\${1}((?:[^\$]|\\\$)+)\$/
17
16
 
18
- MaRuKu::In::Markdown::
19
- register_span_extension(:chars => ?$, :regexp => RegInlineMath) do
20
- |doc, src, con|
21
- if m = src.read_regexp(RegInlineMath)
22
- math = m.captures.compact.first
23
- con.push doc.md_inline_math(math)
24
- true
25
- else
26
- #puts "not math: #{src.cur_chars 10}"
27
- false
28
- end
29
- end
17
+ MaRuKu::In::Markdown::register_span_extension(
18
+ :chars => ?$,
19
+ :regexp => RegInlineMath,
20
+ :handler => lambda { |doc, src, con|
21
+ return false if not doc.is_math_enabled?
22
+
23
+ if m = src.read_regexp(RegInlineMath)
24
+ math = m.captures.compact.first
25
+ con.push doc.md_inline_math(math)
26
+ true
27
+ else
28
+ #puts "not math: #{src.cur_chars 10}"
29
+ false
30
+ end
31
+ }
32
+ )
33
+
30
34
 
31
- EquationStart = /^[ ]{0,3}(?:\\\[|\$\$)(.*)$/
35
+ MathOpen1 = Regexp.escape('\\begin{equation}')
36
+ MathClose1 = Regexp.escape('\\end{equation}')
37
+ MathOpen2 = Regexp.escape('\\[')
38
+ MathClose2 = Regexp.escape('\\]')
39
+ MathOpen3 = Regexp.escape('$$')
40
+ MathClose3 = Regexp.escape('$$')
32
41
 
33
42
  EqLabel = /(?:\((\w+)\))/
34
- OneLineEquation = /^[ ]{0,3}(?:\\\[|\$\$)(.*)(?:\\\]|\$\$)\s*#{EqLabel}?\s*$/
35
- EquationEnd = /^(.*)(?:\\\]|\$\$)\s*#{EqLabel}?\s*$/
43
+ EquationOpen = /#{MathOpen1}|#{MathOpen2}|#{MathOpen3}/
44
+ EquationClose = /#{MathClose1}|#{MathClose2}|#{MathClose3}/
45
+
46
+ # $1 is opening, $2 is tex
47
+ EquationStart = /^[ ]{0,3}(#{EquationOpen})(.*)$/
48
+ # $1 is tex, $2 is closing, $3 is tex
49
+ EquationEnd = /^(.*)(#{EquationClose})\s*#{EqLabel}?\s*$/
50
+ # $1 is opening, $2 is tex, $3 is closing, $4 is label
51
+ OneLineEquation = /^[ ]{0,3}(#{EquationOpen})(.*)(#{EquationClose})\s*#{EqLabel}?\s*$/
36
52
 
37
- MaRuKu::In::Markdown::
38
- register_block_extension(:regexp => EquationStart) do |doc, src, con|
39
- # puts "Equation :#{self}"
40
- first = src.shift_line
41
- if first =~ OneLineEquation
42
- math = $1
43
- label = $2
44
- con.push doc.md_equation($1, $2)
45
- else
46
- first =~ EquationStart
47
- math = $1
48
- label = nil
49
- while true
50
- if not src.cur_line
51
- maruku_error "Stream finished while reading equation\n\n"+
52
- add_tabs(math,1,'$> '), src, con
53
- break
54
- end
55
- line = src.shift_line
56
- if line =~ EquationEnd
57
- math += $1 + "\n"
58
- label = $2 if $2
59
- break
60
- else
61
- math += line + "\n"
53
+ MaRuKu::In::Markdown::register_block_extension(
54
+ :regexp => EquationStart,
55
+ :handler => lambda { |doc, src, con|
56
+ return false if not doc.is_math_enabled?
57
+ first = src.shift_line
58
+ if first =~ OneLineEquation
59
+ opening, tex, closing, label = $1, $2, $3, $4
60
+ numerate = doc.get_setting(:math_numbered).include?(opening)
61
+ con.push doc.md_equation(tex, label, numerate)
62
+ else
63
+ first =~ EquationStart
64
+ opening, tex = $1, $2
65
+
66
+ numerate = doc.get_setting(:math_numbered).include?(opening)
67
+ label = nil
68
+ while true
69
+ if not src.cur_line
70
+ doc.maruku_error("Stream finished while reading equation\n\n"+
71
+ doc.add_tabs(tex,1,'$> '), src, con)
72
+ break
73
+ end
74
+ line = src.shift_line
75
+ if line =~ EquationEnd
76
+ tex_line, closing = $1, $2
77
+ label = $3 if $3
78
+ tex += tex_line + "\n"
79
+ break
80
+ else
81
+ tex += line + "\n"
82
+ end
62
83
  end
84
+ con.push doc.md_equation(tex, label, numerate)
63
85
  end
64
- con.push doc.md_equation(math, label)
65
- end
66
- true
67
- end
86
+ true
87
+ })
68
88
 
69
89
 
70
90
  # This adds support for \eqref
@@ -72,11 +92,14 @@ end
72
92
  RegEqPar = /\(eq:(\w+)\)/
73
93
  RegEqref = Regexp::union(RegEqrefLatex, RegEqPar)
74
94
 
75
- MaRuKu::In::Markdown::
76
- register_span_extension(:chars => [?\\, ?(], :regexp => RegEqref) do
77
- |doc, src, con|
78
- eqid = src.read_regexp(RegEqref).captures.compact.first
79
- r = doc.md_el(:eqref, [], meta={:eqid=>eqid})
80
- con.push r
81
- true
82
- end
95
+ MaRuKu::In::Markdown::register_span_extension(
96
+ :chars => [?\\, ?(],
97
+ :regexp => RegEqref,
98
+ :handler => lambda { |doc, src, con|
99
+ return false if not doc.is_math_enabled?
100
+ eqid = src.read_regexp(RegEqref).captures.compact.first
101
+ r = doc.md_el(:eqref, [], meta={:eqid=>eqid})
102
+ con.push r
103
+ true
104
+ }
105
+ )