kramdown 1.16.2 → 1.17.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of kramdown might be problematic. Click here for more details.
- checksums.yaml +5 -5
- data/CONTRIBUTERS +7 -2
- data/Rakefile +40 -7
- data/VERSION +1 -1
- data/bin/kramdown +20 -6
- data/doc/_design.scss +1 -1
- data/doc/default.template +6 -6
- data/doc/documentation.template +5 -4
- data/doc/index.page +2 -2
- data/doc/metainfo +10 -0
- data/doc/news.feed +1 -1
- data/doc/sidebar.template +2 -5
- data/lib/kramdown/converter.rb +1 -1
- data/lib/kramdown/converter/latex.rb +2 -2
- data/lib/kramdown/converter/math_engine/katex.rb +35 -0
- data/lib/kramdown/parser/gfm.rb +5 -11
- data/lib/kramdown/parser/kramdown/codeblock.rb +1 -1
- data/lib/kramdown/parser/kramdown/header.rb +31 -21
- data/lib/kramdown/parser/kramdown/link.rb +4 -1
- data/lib/kramdown/parser/kramdown/table.rb +2 -1
- data/lib/kramdown/utils.rb +2 -15
- data/lib/kramdown/utils/entities.rb +2 -2
- data/lib/kramdown/version.rb +1 -1
- data/man/man1/kramdown.1 +7 -1
- data/test/test_files.rb +30 -13
- data/test/test_location.rb +9 -0
- data/test/testcases/block/14_table/empty_tag_in_cell.html +8 -0
- data/test/testcases/block/14_table/empty_tag_in_cell.options +1 -0
- data/test/testcases/block/14_table/empty_tag_in_cell.text +1 -0
- data/test/testcases/block/15_math/katex.html.19 +2 -0
- data/test/testcases/block/15_math/katex.options +1 -0
- data/test/testcases/block/15_math/katex.text +2 -0
- data/test/testcases/block/15_math/mathjaxnode.html.19 +1 -1
- data/test/testcases/block/15_math/mathjaxnode_notexhints.html.19 +1 -1
- data/test/testcases/block/15_math/mathjaxnode_semantics.html.19 +1 -1
- data/test/testcases/block/15_math/sskatex.html.19 +1 -1
- data/test/testcases/span/math/katex.html.19 +1 -0
- data/test/testcases/span/math/katex.options +1 -0
- data/test/testcases/span/math/katex.text +1 -0
- data/test/testcases/span/math/mathjaxnode.html.19 +1 -1
- data/test/testcases/span/math/sskatex.html.19 +1 -1
- metadata +29 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: d55901c3c77f65f0c910d6a500fb7aad1f4f1d0f7ac06c3bdb9b6dde621fb4af
|
4
|
+
data.tar.gz: 510414df93e71258d08b88e53070a1290800e98a75c821bf673a154a12e10fa9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 90b87fa1dc1dd8a9b1eb683b69f2b2dfe05837d16732b20dc73e71ad4b77baa28be7e0a3980d82d67b61e104ab33311e49bc9e305e8aa849461db022697d3d0f
|
7
|
+
data.tar.gz: 5eab1933ed1bd0c5615291e52e915aad27da34347b3f1a25891417fd6c3f3ec2676c26ccee68b47fc0302f05b683641595a4b77c3ca0be9a7d1d08886c794b00
|
data/CONTRIBUTERS
CHANGED
@@ -1,9 +1,11 @@
|
|
1
1
|
Count Name
|
2
2
|
======= ====
|
3
|
-
|
3
|
+
887 Thomas Leitner <t_leitner@gmx.at>
|
4
|
+
7 Christian Cornelssen <ccorn@1tein.de>
|
4
5
|
6 Gioele Barabucci <gioele@svario.it>
|
5
6
|
4 Ted Pak <powerpak006@gmail.com>
|
6
7
|
4 Shuanglei Tao <tsl0922@gmail.com>
|
8
|
+
4 Gleb Mazovetskiy <glex.spb@gmail.com>
|
7
9
|
4 Arne Brasseur <arne@arnebrasseur.net>
|
8
10
|
3 Henning Perl <perl@fast-sicher.de>
|
9
11
|
3 gettalong <t_leitner@gmx.at>
|
@@ -15,7 +17,7 @@
|
|
15
17
|
2 Nathanael Jones <nathanael.jones@gmail.com>
|
16
18
|
2 Max Meyer <dev@fedux.org>
|
17
19
|
2 Jo Hund <jhund@clearcove.ca>
|
18
|
-
2
|
20
|
+
2 Dan Allen <dan.j.allen@gmail.com>
|
19
21
|
2 Bran <m.versum@gmail.com>
|
20
22
|
1 winniehell <git@winniehell.de>
|
21
23
|
1 William <suttonwilliamd@gmail.com>
|
@@ -34,6 +36,7 @@
|
|
34
36
|
1 Postmodern <postmodern.mod3@gmail.com>
|
35
37
|
1 Pete Michaud <michaudp@gmail.com>
|
36
38
|
1 myqlarson <myqlarson@gmail.com>
|
39
|
+
1 milo.simpson <milo.simpson@bazaarvoice.com>
|
37
40
|
1 Michal Till <michal.till@gmail.com>
|
38
41
|
1 Matt Hickford <matt.hickford@gmail.com>
|
39
42
|
1 Martyn Chamberlin <martyn@perfectioncoding.com>
|
@@ -54,6 +57,8 @@
|
|
54
57
|
1 Damien Pollet <damien.pollet@gmail.com>
|
55
58
|
1 Christopher Jefferson <caj21@st-andrews.ac.uk>
|
56
59
|
1 Cédric Boutillier <cedric.boutillier@gmail.com>
|
60
|
+
1 Ashwin Maroli <ashmaroli@gmail.com>
|
61
|
+
1 Ashe Connor <ashe@kivikakk.ee>
|
57
62
|
1 Andrew <andrew.dale.wylie@gmail.com>
|
58
63
|
1 Alpha Chen <alpha.chen@gmail.com>
|
59
64
|
1 Alex Tomlins <alex.tomlins@digital.cabinet-office.gov.uk>
|
data/Rakefile
CHANGED
@@ -186,7 +186,8 @@ EOF
|
|
186
186
|
s.add_development_dependency 'ritex', '~> 1.0'
|
187
187
|
s.add_development_dependency 'itextomml', '~> 1.5'
|
188
188
|
s.add_development_dependency 'execjs', '~> 2.7'
|
189
|
-
s.add_development_dependency 'sskatex', '>= 0.9.
|
189
|
+
s.add_development_dependency 'sskatex', '>= 0.9.37'
|
190
|
+
s.add_development_dependency 'katex', '~> 0.4.3'
|
190
191
|
|
191
192
|
#### Documentation
|
192
193
|
|
@@ -268,6 +269,29 @@ EOF
|
|
268
269
|
puts "Look through the above mentioned files and correct all problems" if inserted
|
269
270
|
end
|
270
271
|
|
272
|
+
desc "Check for MathjaxNode availability"
|
273
|
+
task :test_mathjaxnode_deps do
|
274
|
+
html = %x{echo '$$a$$' | \
|
275
|
+
#{RbConfig.ruby} -Ilib bin/kramdown --no-config-file --math-engine mathjaxnode}
|
276
|
+
raise (<<MJC) unless $?.success?
|
277
|
+
Some requirement by the mathjax-node-cli package has not been satisfied.
|
278
|
+
Cf. the above error messages.
|
279
|
+
MJC
|
280
|
+
raise (<<MJN) unless %r{\A<math xmlns="http://www.w3.org/\d+/Math/MathML".*</math>\Z}m === html
|
281
|
+
The MathjaxNode engine is not available. Try "npm install mathjax-node-cli".
|
282
|
+
MJN
|
283
|
+
puts "MathjaxNode is available, and its default configuration works."
|
284
|
+
end
|
285
|
+
|
286
|
+
desc "Update kramdown MathjaxNode test reference outputs"
|
287
|
+
task update_mathjaxnode_tests: [:test_mathjaxnode_deps] do
|
288
|
+
# Not framed in terms of rake file tasks to prevent accidental overwrites.
|
289
|
+
Dir['test/testcases/**/mathjaxnode*.text'].each do |f|
|
290
|
+
stem = f[0..-6] # Remove .text
|
291
|
+
ruby "-Ilib bin/kramdown --config-file #{stem}.options #{f} >#{stem}.html.19"
|
292
|
+
end
|
293
|
+
end
|
294
|
+
|
271
295
|
desc "Check for SsKaTeX availability"
|
272
296
|
task :test_sskatex_deps do
|
273
297
|
katexjs = 'katex/katex.min.js'
|
@@ -278,7 +302,8 @@ and extract at least '#{katexjs}'.
|
|
278
302
|
Alternatively, if you have a copy of KaTeX unpacked somewhere else,
|
279
303
|
you can create a symbolic link 'katex' pointing to that KaTeX directory.
|
280
304
|
TKJ
|
281
|
-
html = %x{echo '$$a$$' |
|
305
|
+
html = %x{echo '$$a$$' | \
|
306
|
+
#{RbConfig.ruby} -Ilib bin/kramdown --no-config-file --math-engine sskatex}
|
282
307
|
raise (<<KTC) unless $?.success?
|
283
308
|
Some requirement by SsKaTeX or the employed JS engine has not been satisfied.
|
284
309
|
Cf. the above error messages.
|
@@ -293,12 +318,20 @@ XJS
|
|
293
318
|
end
|
294
319
|
|
295
320
|
desc "Update kramdown SsKaTeX test reference outputs"
|
296
|
-
task
|
321
|
+
task update_sskatex_tests: [:test_sskatex_deps] do
|
322
|
+
# Not framed in terms of rake file tasks to prevent accidental overwrites.
|
323
|
+
Dir['test/testcases/**/sskatex*.text'].each do |f|
|
324
|
+
stem = f[0..-6] # Remove .text
|
325
|
+
ruby "-Ilib bin/kramdown --config-file #{stem}.options #{f} >#{stem}.html.19"
|
326
|
+
end
|
327
|
+
end
|
328
|
+
|
329
|
+
desc "Update kramdown KaTeX test reference outputs"
|
330
|
+
task :update_katex_tests do
|
297
331
|
# Not framed in terms of rake file tasks to prevent accidental overwrites.
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
ruby "-Ilib bin/kramdown --math-engine sskatex #{stem}.text >#{stem}.html.19"
|
332
|
+
Dir['test/testcases/**/katex*.text'].each do |f|
|
333
|
+
stem = f[0..-6] # Remove .text
|
334
|
+
ruby "-Ilib bin/kramdown --config-file #{stem}.options #{f} >#{stem}.html.19"
|
302
335
|
end
|
303
336
|
end
|
304
337
|
end
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.
|
1
|
+
1.17.0
|
data/bin/kramdown
CHANGED
@@ -27,11 +27,7 @@ begin
|
|
27
27
|
rescue
|
28
28
|
end
|
29
29
|
|
30
|
-
options =
|
31
|
-
YAML.safe_load(File.read(config_file), [Symbol])
|
32
|
-
else
|
33
|
-
{}
|
34
|
-
end
|
30
|
+
options = {}
|
35
31
|
format = ['html']
|
36
32
|
|
37
33
|
OptionParser.new do |opts|
|
@@ -46,7 +42,14 @@ OptionParser.new do |opts|
|
|
46
42
|
"html, GFM or markdown") {|v| options[:input] = v}
|
47
43
|
opts.on("-o", "--output ARG", Array, "Specify one or more output formats separated by commas: " \
|
48
44
|
"html (default),", "kramdown, latex, pdf, man or remove_html_tags") {|v| format = v}
|
49
|
-
|
45
|
+
opts.separator ""
|
46
|
+
opts.on("--no-config-file", "Do not read any configuration file. Default behavior is to check " \
|
47
|
+
"for a", "configuration file and read it if it exists.") {config_file = nil}
|
48
|
+
opts.on("--config-file FILE", "Specify the name of a configuration file with kramdown options " \
|
49
|
+
"in YAML", "format, e.g. \"auto_id_prefix: ARG\" instead of \"--auto-id-prefix ARG\"",
|
50
|
+
"and \"auto_ids: false\" instead of \"--no-auto-ids\".",
|
51
|
+
"Default: #{config_file}") {|v| config_file = v}
|
52
|
+
opts.separator ""
|
50
53
|
opts.on("-v", "--version", "Show the version of kramdown") do
|
51
54
|
puts Kramdown::VERSION
|
52
55
|
exit
|
@@ -79,6 +82,17 @@ OptionParser.new do |opts|
|
|
79
82
|
end.parse!
|
80
83
|
|
81
84
|
begin
|
85
|
+
if config_file && File.exist?(config_file)
|
86
|
+
config_file_options = YAML.safe_load(File.read(config_file), [Symbol])
|
87
|
+
case config_file_options
|
88
|
+
when nil # empty configuration file except perhaps YAML header and comments
|
89
|
+
# Nothing to do
|
90
|
+
when Hash
|
91
|
+
options = config_file_options.merge(options)
|
92
|
+
else
|
93
|
+
raise Kramdown::Error, "No YAML map in configuration file \"#{config_file}\""
|
94
|
+
end
|
95
|
+
end
|
82
96
|
doc = Kramdown::Document.new(ARGF.read, options)
|
83
97
|
result = ''
|
84
98
|
format.each {|f| result = doc.send("to_#{f}")}
|
data/doc/_design.scss
CHANGED
data/doc/default.template
CHANGED
@@ -8,7 +8,6 @@
|
|
8
8
|
<meta name="keywords" content="ruby, kramdown, markdown, text markup" />
|
9
9
|
<link href="{relocatable: default.css}" type="text/css" rel="stylesheet" media="screen,projection" />
|
10
10
|
<link href="{relocatable: news.atom}" type="application/atom+xml" rel="alternate" />
|
11
|
-
<script src="//kramdown.gettalong.org/MathJax/MathJax.js?config=default.js" type="text/javascript"></script>
|
12
11
|
<title>{title:} | kramdown</title>
|
13
12
|
</head>
|
14
13
|
<body>
|
@@ -44,18 +43,19 @@
|
|
44
43
|
|
45
44
|
<footer>
|
46
45
|
<div class="float-left">Copyright © 2009-2016 Thomas Leitner</div>
|
47
|
-
<div class="float-right">Generated by <a href="
|
46
|
+
<div class="float-right">Generated by <a href="https://webgen.gettalong.org">webgen</a></div>
|
48
47
|
</footer>
|
49
48
|
|
49
|
+
<script src="//static.gettalong.org/MathJax/MathJax.js?config=default.js" type="text/javascript"></script>
|
50
50
|
<!-- Start of StatCounter Code for Default Guide -->
|
51
51
|
<script type="text/javascript">
|
52
52
|
var sc_project=4267845;
|
53
53
|
var sc_invisible=1;
|
54
54
|
var sc_security="41321455";
|
55
|
-
var
|
56
|
-
|
57
|
-
|
58
|
-
|
55
|
+
var sc_client_storage="disabled";
|
56
|
+
</script>
|
57
|
+
<script type="text/javascript" src="https://www.statcounter.com/counter/counter.js" async="async"></script>
|
58
|
+
<noscript><div class="statcounter"><a title="website statistics" href="http://statcounter.com/" target="_blank"><img class="statcounter" src="//c.statcounter.com/4267845/0/41321455/1/" alt="website statistics" /></a></div></noscript>
|
59
59
|
<!-- End of StatCounter Code for Default Guide -->
|
60
60
|
|
61
61
|
</body>
|
data/doc/documentation.template
CHANGED
@@ -7,8 +7,8 @@
|
|
7
7
|
|
8
8
|
* Parsers
|
9
9
|
* [kramdown](parser/kramdown.html)
|
10
|
-
* [Markdown](parser/markdown.html)
|
11
10
|
* [GFM](parser/gfm.html)
|
11
|
+
* [Markdown](parser/markdown.html)
|
12
12
|
* [HTML](parser/html.html)
|
13
13
|
* Converters
|
14
14
|
* [HTML](converter/html.html)
|
@@ -17,14 +17,15 @@
|
|
17
17
|
* [kramdown](converter/kramdown.html)
|
18
18
|
* [RemoveHtmlTags](converter/remove_html_tags.html)
|
19
19
|
* Syntax Highlighters
|
20
|
-
* [Coderay](syntax_highlighter/coderay.html)
|
21
20
|
* [Rouge](syntax_highlighter/rouge.html)
|
21
|
+
* [Coderay](syntax_highlighter/coderay.html)
|
22
22
|
* Math Engines
|
23
23
|
* [MathJax](math_engine/mathjax.html)
|
24
|
+
* [KaTeX](math_engine/katex.html)
|
25
|
+
* [SsKaTeX](math_engine/sskatex.html)
|
26
|
+
* [Mathjax-Node](math_engine/mathjaxnode.html)
|
24
27
|
* [Ritex](math_engine/ritex.html)
|
25
28
|
* [itex2MML](math_engine/itex2mml.html)
|
26
|
-
* [Mathjax-Node](math_engine/mathjaxnode.html)
|
27
|
-
* [SsKaTeX](math_engine/sskatex.html)
|
28
29
|
* [Configuration Options](options.html)
|
29
30
|
* [Tests](tests.html)
|
30
31
|
|
data/doc/index.page
CHANGED
@@ -97,8 +97,8 @@ extensions that have been made popular by the [PHP Markdown Extra] package and [
|
|
97
97
|
It is probably the fastest pure-Ruby Markdown converter available (September 2014), being about 3x
|
98
98
|
faster than [Maruku] and about 4.5x faster than [BlueFeather].
|
99
99
|
|
100
|
-
Version **1.
|
101
|
-
**
|
100
|
+
Version **1.17.0**{:itemprop="softwareVersion"} released on
|
101
|
+
**2018-05-31**{:itemprop="datePublished"}, [more news](news.html)
|
102
102
|
{: style="text-align: center; font-size: 80%"}
|
103
103
|
|
104
104
|
</div>
|
data/doc/metainfo
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
--- paths
|
2
|
+
[/**/*.js, /**/*.css]:
|
3
|
+
modified_at_in_dest_path: true
|
4
|
+
|
5
|
+
/**/*.scss:
|
6
|
+
modified_at_in_dest_path: true
|
7
|
+
|
1
8
|
--- alcn
|
2
9
|
[converter/*.html, parser/*.html, documentation.en.html, options.en.html, tests.en.html]:
|
3
10
|
template: ../documentation.template
|
11
|
+
|
12
|
+
/**/*.css:
|
13
|
+
pipeline: scss,cssminify
|
data/doc/news.feed
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
title: kramdown News
|
3
3
|
description: kramdown - a fast, pure Ruby Markdown-superset converter
|
4
4
|
author: Thomas Leitner
|
5
|
-
author_url:
|
5
|
+
author_url: https://kramdown.gettalong.org
|
6
6
|
entries: {alcn: news/*.html, sort: sort_info, reverse: true, limit: 10}
|
7
7
|
versions:
|
8
8
|
atom:
|
data/doc/sidebar.template
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
<h2>Support kramdown</h2>
|
2
2
|
|
3
3
|
<p>If you like kramdown and would like to support it, you are welcome to make a small
|
4
|
-
donation (Patreon
|
4
|
+
donation (Patreon or PayPal) -- it will surely be appreciated! Thanks!</p>
|
5
5
|
|
6
6
|
<div style="text-align: center">
|
7
7
|
|
@@ -10,12 +10,9 @@ donation (Patreon, PayPal or Pledgie) -- it will surely be appreciated! Thanks!<
|
|
10
10
|
<form style="margin-top: 15px" action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">
|
11
11
|
<input type="hidden" name="cmd" value="_s-xclick">
|
12
12
|
<input type="hidden" name="hosted_button_id" value="99HUWKWPMUHWG">
|
13
|
-
<input type="image" src="
|
14
|
-
<img alt="" border="0" src="https://www.paypalobjects.com/de_DE/i/scr/pixel.gif" width="1" height="1">
|
13
|
+
<input type="image" src="//static.gettalong.org/images/paypal_small.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
|
15
14
|
</form>
|
16
15
|
|
17
|
-
<a href='https://pledgie.com/campaigns/16657'><img alt='Click here to lend your support to: kramdown and make a donation at pledgie.com !' src='https://pledgie.com/campaigns/16657.png?skin_name=chrome' border='0' ></a>
|
18
|
-
|
19
16
|
</div>
|
20
17
|
|
21
18
|
<h2>Sponsors</h2>
|
data/lib/kramdown/converter.rb
CHANGED
@@ -50,7 +50,7 @@ module Kramdown
|
|
50
50
|
|
51
51
|
configurable(:math_engine)
|
52
52
|
|
53
|
-
[
|
53
|
+
["Mathjax", "MathjaxNode", "Katex", "SsKaTeX", "Ritex", "Itex2MML"].each do |klass_name|
|
54
54
|
kn_down = klass_name.downcase.intern
|
55
55
|
add_math_engine(kn_down) do |converter, el, opts|
|
56
56
|
require "kramdown/converter/math_engine/#{kn_down}"
|
@@ -355,8 +355,8 @@ module Kramdown
|
|
355
355
|
8736 => ['$\angle$'],
|
356
356
|
8743 => ['$\wedge$'],
|
357
357
|
8744 => ['$\vee$'],
|
358
|
-
8745 => ['$\
|
359
|
-
8746 => ['$\
|
358
|
+
8745 => ['$\cap$'],
|
359
|
+
8746 => ['$\cup$'],
|
360
360
|
8747 => ['$\int$'],
|
361
361
|
8756 => ['$\therefore$', 'amssymb'],
|
362
362
|
8764 => ['$\sim$'],
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
#
|
3
|
+
#--
|
4
|
+
# Copyright (C) 2018 Gleb Mazovetskiy <glex.spb@gmail.com>
|
5
|
+
#
|
6
|
+
# This file is part of kramdown which is licensed under the MIT.
|
7
|
+
#++
|
8
|
+
|
9
|
+
module Kramdown::Converter::MathEngine
|
10
|
+
# Uses the KaTeX gem for converting math formulas to KaTeX HTML.
|
11
|
+
module Katex
|
12
|
+
AVAILABLE = begin
|
13
|
+
require 'katex'
|
14
|
+
true
|
15
|
+
rescue LoadError
|
16
|
+
false
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.call(converter, el, opts)
|
20
|
+
display_mode = el.options[:category] == :block
|
21
|
+
result = ::Katex.render(
|
22
|
+
el.value,
|
23
|
+
display_mode: display_mode,
|
24
|
+
throw_on_error: false,
|
25
|
+
**converter.options[:math_engine_opts]
|
26
|
+
)
|
27
|
+
attr = el.attr.dup
|
28
|
+
attr.delete('xmlns')
|
29
|
+
attr.delete('display')
|
30
|
+
result.insert(result =~ /[[:space:]>]/, converter.html_attributes(attr))
|
31
|
+
result = "#{' ' * opts[:indent]}#{result}\n" if display_mode
|
32
|
+
result
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
data/lib/kramdown/parser/gfm.rb
CHANGED
@@ -101,7 +101,7 @@ module Kramdown
|
|
101
101
|
item.options[:raw_text] = raw_text
|
102
102
|
end
|
103
103
|
|
104
|
-
NON_WORD_RE =
|
104
|
+
NON_WORD_RE = /[^\p{Word}\- \t]/
|
105
105
|
|
106
106
|
def generate_gfm_header_id(text)
|
107
107
|
result = text.downcase
|
@@ -112,22 +112,16 @@ module Kramdown
|
|
112
112
|
@options[:auto_id_prefix] + result
|
113
113
|
end
|
114
114
|
|
115
|
-
ATX_HEADER_START =
|
115
|
+
ATX_HEADER_START = /^(?<level>\#{1,6})[\t ]+(?<contents>.*)\n/
|
116
116
|
define_parser(:atx_header_gfm, ATX_HEADER_START, nil, 'parse_atx_header')
|
117
117
|
define_parser(:atx_header_gfm_quirk, ATX_HEADER_START)
|
118
118
|
|
119
119
|
# Copied from kramdown/parser/kramdown/header.rb, removed the first line
|
120
120
|
def parse_atx_header_gfm_quirk
|
121
|
-
|
122
|
-
|
123
|
-
level, text, id = @src[1], @src[2].to_s.strip, @src[3]
|
121
|
+
text, id = parse_header_contents
|
122
|
+
text.sub!(/[\t ]#+\z/, '') && text.rstrip!
|
124
123
|
return false if text.empty?
|
125
|
-
|
126
|
-
@src.pos += @src.matched_size
|
127
|
-
el = new_block_el(:header, nil, nil, :level => level.length, :raw_text => text, :location => start_line_number)
|
128
|
-
add_text(text, el)
|
129
|
-
el.attr['id'] = id if id
|
130
|
-
@tree.children << el
|
124
|
+
add_header(@src["level"].length, text, id)
|
131
125
|
true
|
132
126
|
end
|
133
127
|
|
@@ -39,7 +39,7 @@ module Kramdown
|
|
39
39
|
if @src.check(self.class::FENCED_CODEBLOCK_MATCH)
|
40
40
|
start_line_number = @src.current_line_number
|
41
41
|
@src.pos += @src.matched_size
|
42
|
-
el = new_block_el(:codeblock, @src[5], nil, :location => start_line_number)
|
42
|
+
el = new_block_el(:codeblock, @src[5], nil, :location => start_line_number, :fenced => true)
|
43
43
|
lang = @src[3].to_s.strip
|
44
44
|
unless lang.empty?
|
45
45
|
el.options[:lang] = lang
|
@@ -13,47 +13,57 @@ module Kramdown
|
|
13
13
|
module Parser
|
14
14
|
class Kramdown
|
15
15
|
|
16
|
-
|
17
|
-
SETEXT_HEADER_START = /^(#{OPT_SPACE}[^ \t].*?)#{HEADER_ID}[ \t]*?\n(-|=)+\s*?\n/
|
16
|
+
SETEXT_HEADER_START = /^#{OPT_SPACE}(?<contents>[^ \t].*)\n(?<level>[-=])[-=]*[ \t\r\f\v]*\n/
|
18
17
|
|
19
18
|
# Parse the Setext header at the current location.
|
20
19
|
def parse_setext_header
|
21
20
|
return false if !after_block_boundary?
|
22
|
-
|
23
|
-
|
24
|
-
@src
|
25
|
-
text, id, level = @src[1], @src[2], @src[3]
|
26
|
-
text.strip!
|
27
|
-
el = new_block_el(:header, nil, nil, :level => (level == '-' ? 2 : 1), :raw_text => text, :location => start_line_number)
|
28
|
-
add_text(text, el)
|
29
|
-
el.attr['id'] = id if id
|
30
|
-
@tree.children << el
|
21
|
+
text, id = parse_header_contents
|
22
|
+
return false if text.empty?
|
23
|
+
add_header(@src["level"] == '-' ? 2 : 1, text, id)
|
31
24
|
true
|
32
25
|
end
|
33
26
|
define_parser(:setext_header, SETEXT_HEADER_START)
|
34
27
|
|
35
28
|
|
36
|
-
ATX_HEADER_START =
|
37
|
-
ATX_HEADER_MATCH = /^(\#{1,6})(.+?(?:\\#)?)\s*?#*#{HEADER_ID}\s*?\n/
|
29
|
+
ATX_HEADER_START = /^(?<level>\#{1,6})[\t ]*(?<contents>[^ \t].*)\n/
|
38
30
|
|
39
31
|
# Parse the Atx header at the current location.
|
40
32
|
def parse_atx_header
|
41
33
|
return false if !after_block_boundary?
|
42
|
-
|
43
|
-
|
44
|
-
@src.check(ATX_HEADER_MATCH)
|
45
|
-
level, text, id = @src[1], @src[2].to_s.strip, @src[3]
|
34
|
+
text, id = parse_header_contents
|
35
|
+
text.sub!(/[\t ]#+\z/, '') && text.rstrip!
|
46
36
|
return false if text.empty?
|
37
|
+
add_header(@src["level"].length, text, id)
|
38
|
+
true
|
39
|
+
end
|
40
|
+
define_parser(:atx_header, ATX_HEADER_START)
|
41
|
+
|
42
|
+
protected
|
43
|
+
|
44
|
+
HEADER_ID = /[\t ]{#(?<id>[A-Za-z][\w:-]*)}\z/
|
45
|
+
|
46
|
+
# Returns header text and optional ID.
|
47
|
+
def parse_header_contents
|
48
|
+
text = @src["contents"]
|
49
|
+
text.rstrip!
|
50
|
+
id_match = HEADER_ID.match(text)
|
51
|
+
if id_match
|
52
|
+
id = id_match["id"]
|
53
|
+
text = text[0...-id_match[0].length]
|
54
|
+
text.rstrip!
|
55
|
+
end
|
56
|
+
[text, id]
|
57
|
+
end
|
47
58
|
|
59
|
+
def add_header(level, text, id)
|
60
|
+
start_line_number = @src.current_line_number
|
48
61
|
@src.pos += @src.matched_size
|
49
|
-
el = new_block_el(:header, nil, nil, :level => level
|
62
|
+
el = new_block_el(:header, nil, nil, :level => level, :raw_text => text, :location => start_line_number)
|
50
63
|
add_text(text, el)
|
51
64
|
el.attr['id'] = id if id
|
52
65
|
@tree.children << el
|
53
|
-
true
|
54
66
|
end
|
55
|
-
define_parser(:atx_header, ATX_HEADER_START)
|
56
|
-
|
57
67
|
end
|
58
68
|
end
|
59
69
|
end
|
@@ -87,12 +87,15 @@ module Kramdown
|
|
87
87
|
|
88
88
|
# reference style link or no link url
|
89
89
|
if @src.scan(LINK_INLINE_ID_RE) || !@src.check(/\(/)
|
90
|
+
emit_warning = !@src[1]
|
90
91
|
link_id = normalize_link_id(@src[1] || alt_text)
|
91
92
|
if @link_defs.has_key?(link_id)
|
92
93
|
add_link(el, @link_defs[link_id][0], @link_defs[link_id][1], alt_text,
|
93
94
|
@link_defs[link_id][2] && @link_defs[link_id][2].options[:ial])
|
94
95
|
else
|
95
|
-
|
96
|
+
if emit_warning
|
97
|
+
warning("No link definition for link ID '#{link_id}' found on line #{start_line_number}")
|
98
|
+
end
|
96
99
|
@src.revert_pos(saved_pos)
|
97
100
|
add_text(result)
|
98
101
|
end
|
@@ -122,7 +122,8 @@ module Kramdown
|
|
122
122
|
# algorithm above only takes <code> elements into account!
|
123
123
|
pipe_on_line = false
|
124
124
|
while (c = root.children.shift)
|
125
|
-
lines = c.value
|
125
|
+
next unless (lines = c.value)
|
126
|
+
lines = lines.split("\n")
|
126
127
|
if c.type == :codespan
|
127
128
|
if lines.size > 2 || (lines.size == 2 && !pipe_on_line)
|
128
129
|
break
|
data/lib/kramdown/utils.rb
CHANGED
@@ -37,21 +37,8 @@ module Kramdown
|
|
37
37
|
name
|
38
38
|
end
|
39
39
|
|
40
|
-
|
41
|
-
|
42
|
-
# Resolve the recursive constant +str+.
|
43
|
-
def self.deep_const_get(str)
|
44
|
-
names = str.split(/::/)
|
45
|
-
names.shift if names.first.empty?
|
46
|
-
names.inject(::Object) {|mod, s| mod.const_get(s)}
|
47
|
-
end
|
48
|
-
|
49
|
-
else
|
50
|
-
|
51
|
-
def self.deep_const_get(str)
|
52
|
-
::Object.const_get(str)
|
53
|
-
end
|
54
|
-
|
40
|
+
def self.deep_const_get(str)
|
41
|
+
::Object.const_get(str)
|
55
42
|
end
|
56
43
|
|
57
44
|
end
|
data/lib/kramdown/version.rb
CHANGED
data/man/man1/kramdown.1
CHANGED
@@ -11,7 +11,7 @@ If \fIFILE\fP is not specified, kramdown reads from the standard input\. The res
|
|
11
11
|
.P
|
12
12
|
There are two sets of options that kramdown accepts: The first one includes the options that are used directly by the kramdown binary\. The second set of options controls how kramdown parses and converts its input\.
|
13
13
|
.P
|
14
|
-
Default values for this second set can be set using YAML via the configuration file \fBkramdownrc\fP\&\. This file has to be in XDG_CONFIG_HOME on Linux/Unix, ~/Library/Preferences on macOS and ~/AppData/Local on Windows\.
|
14
|
+
Default values for this second set can be set using YAML via the configuration file \fBkramdownrc\fP\&\. Note that configuration option names use underscores, not dashes (dashes are just used in the CLI options names), and boolean options do not have a \fBno\fP variant but a value of \fBtrue\fP or \fBfalse\fP\&\. This file has to be in XDG_CONFIG_HOME on Linux/Unix, ~/Library/Preferences on macOS and ~/AppData/Local on Windows\.
|
15
15
|
.SH "CLI\-ONLY OPTIONS"
|
16
16
|
.TP
|
17
17
|
\fB\-i\fP \fIFORMAT\fP, \fB\-\-input\fP \fIFORMAT\fP
|
@@ -20,6 +20,12 @@ Specify the input format\. Available input formats: \fIkramdown\fP (this is the
|
|
20
20
|
\fB\-o\fP \fIFORMAT\fP, \fB\-\-output\fP \fIFORMAT\fP
|
21
21
|
Specify one or more output formats separated by commas: \fIhtml\fP (default), \fIkramdown\fP, \fIlatex\fP, \fIpdf\fP, \fIman\fP or \fIremove_html_tags\fP\&\.
|
22
22
|
.TP
|
23
|
+
\fB\-\-no\-config\-file\fP
|
24
|
+
Do not read any configuration file\. Default behavior is to check for a configuration file and read it if it exists\.
|
25
|
+
.TP
|
26
|
+
\fB\-\-config\-file\fP \fIFILE\fP
|
27
|
+
Override the default path and name of the configuration file\.
|
28
|
+
.TP
|
23
29
|
\fB\-v\fP, \fB\-\-version\fP
|
24
30
|
Show the version of kramdown\.
|
25
31
|
.TP
|
data/test/test_files.rb
CHANGED
@@ -42,13 +42,15 @@ class TestFiles < Minitest::Test
|
|
42
42
|
warn("Skipping MathjaxNode tests as MathjaxNode is not available")
|
43
43
|
end
|
44
44
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
45
|
+
SSKATEX_AVAILABLE = begin
|
46
|
+
/ class="katex"/ === Kramdown::Document.
|
47
|
+
new('$$a$$', {:math_engine => :sskatex}).to_html or
|
48
|
+
warn("Skipping SsKaTeX tests as SsKaTeX is not available.")
|
49
|
+
rescue
|
50
|
+
warn("Skipping SsKaTeX tests as default SsKaTeX config does not work.")
|
51
|
+
end or warn("Run \"rake dev:test_sskatex_deps\" to see why.")
|
52
|
+
|
53
|
+
KATEX_AVAILABLE = RUBY_VERSION >= '2.3'
|
52
54
|
|
53
55
|
EXCLUDE_KD_FILES = [('test/testcases/block/04_header/with_auto_ids.text' if RUBY_VERSION <= '1.8.6'), # bc of dep stringex not working
|
54
56
|
('test/testcases/span/03_codespan/rouge/' if RUBY_VERSION < '2.0'), #bc of rouge
|
@@ -59,8 +61,10 @@ class TestFiles < Minitest::Test
|
|
59
61
|
('test/testcases/block/15_math/mathjaxnode_notexhints.text' unless MATHJAX_NODE_AVAILABLE),
|
60
62
|
('test/testcases/block/15_math/mathjaxnode_semantics.text' unless MATHJAX_NODE_AVAILABLE),
|
61
63
|
('test/testcases/span/math/mathjaxnode.text' unless MATHJAX_NODE_AVAILABLE),
|
62
|
-
('test/testcases/block/15_math/sskatex.text' unless
|
63
|
-
('test/testcases/span/math/sskatex.text' unless
|
64
|
+
('test/testcases/block/15_math/sskatex.text' unless SSKATEX_AVAILABLE),
|
65
|
+
('test/testcases/span/math/sskatex.text' unless SSKATEX_AVAILABLE),
|
66
|
+
('test/testcases/block/15_math/katex.text' unless KATEX_AVAILABLE),
|
67
|
+
('test/testcases/span/math/katex.text' unless KATEX_AVAILABLE),
|
64
68
|
].compact
|
65
69
|
|
66
70
|
# Generate test methods for kramdown-to-xxx conversion
|
@@ -96,6 +100,7 @@ class TestFiles < Minitest::Test
|
|
96
100
|
'test/testcases/block/06_codeblock/rouge/multiple.html', # bc of double surrounding <div>
|
97
101
|
('test/testcases/span/03_codespan/rouge/simple.html' if RUBY_VERSION < '2.0'),
|
98
102
|
('test/testcases/span/03_codespan/rouge/disabled.html' if RUBY_VERSION < '2.0'),
|
103
|
+
'test/testcases/block/14_table/empty_tag_in_cell.html', # bc of tidy
|
99
104
|
'test/testcases/block/15_math/ritex.html', # bc of tidy
|
100
105
|
'test/testcases/span/math/ritex.html', # bc of tidy
|
101
106
|
'test/testcases/block/15_math/itex2mml.html', # bc of tidy
|
@@ -109,6 +114,8 @@ class TestFiles < Minitest::Test
|
|
109
114
|
'test/testcases/block/15_math/mathjax_preview_as_code.html', # bc of mathjax preview
|
110
115
|
'test/testcases/span/math/sskatex.html', # bc of tidy
|
111
116
|
'test/testcases/block/15_math/sskatex.html', # bc of tidy
|
117
|
+
'test/testcases/span/math/katex.html', # bc of tidy
|
118
|
+
'test/testcases/block/15_math/katex.html', # bc of tidy
|
112
119
|
'test/testcases/span/05_html/mark_element.html', # bc of tidy
|
113
120
|
'test/testcases/block/09_html/xml.html', # bc of tidy
|
114
121
|
'test/testcases/span/05_html/xml.html', # bc of tidy
|
@@ -207,6 +214,7 @@ class TestFiles < Minitest::Test
|
|
207
214
|
('test/testcases/span/03_codespan/rouge/disabled.text' if RUBY_VERSION < '2.0'), #bc of rouge
|
208
215
|
'test/testcases/block/06_codeblock/rouge/simple.text',
|
209
216
|
'test/testcases/block/06_codeblock/rouge/multiple.text', # check, what document contain more, than one code block
|
217
|
+
'test/testcases/block/14_table/empty_tag_in_cell.text', # bc of tidy
|
210
218
|
'test/testcases/block/15_math/ritex.text', # bc of tidy
|
211
219
|
'test/testcases/span/math/ritex.text', # bc of tidy
|
212
220
|
'test/testcases/block/15_math/itex2mml.text', # bc of tidy
|
@@ -217,6 +225,8 @@ class TestFiles < Minitest::Test
|
|
217
225
|
'test/testcases/span/math/mathjaxnode.text', # bc of tidy
|
218
226
|
'test/testcases/block/15_math/sskatex.text', # bc of tidy
|
219
227
|
'test/testcases/span/math/sskatex.text', # bc of tidy
|
228
|
+
'test/testcases/block/15_math/katex.text', # bc of tidy
|
229
|
+
'test/testcases/span/math/katex.text', # bc of tidy
|
220
230
|
'test/testcases/span/01_link/link_defs_with_ial.text', # bc of attribute ordering
|
221
231
|
'test/testcases/span/05_html/mark_element.text', # bc of tidy
|
222
232
|
'test/testcases/block/09_html/xml.text', # bc of tidy
|
@@ -260,6 +270,7 @@ class TestFiles < Minitest::Test
|
|
260
270
|
'test/testcases/span/autolinks/url_links.html', # bc of quot entity being converted to char
|
261
271
|
('test/testcases/span/03_codespan/rouge/simple.html' if RUBY_VERSION < '2.0'),
|
262
272
|
('test/testcases/span/03_codespan/rouge/disabled.html' if RUBY_VERSION < '2.0'),
|
273
|
+
'test/testcases/block/14_table/empty_tag_in_cell.html', # bc of tidy
|
263
274
|
'test/testcases/block/15_math/ritex.html', # bc of tidy
|
264
275
|
'test/testcases/span/math/ritex.html', # bc of tidy
|
265
276
|
'test/testcases/block/15_math/itex2mml.html', # bc of tidy
|
@@ -270,6 +281,8 @@ class TestFiles < Minitest::Test
|
|
270
281
|
'test/testcases/span/math/mathjaxnode.html', # bc of tidy
|
271
282
|
'test/testcases/block/15_math/sskatex.html', # bc of tidy
|
272
283
|
'test/testcases/span/math/sskatex.html', # bc of tidy
|
284
|
+
'test/testcases/block/15_math/katex.html', # bc of tidy
|
285
|
+
'test/testcases/span/math/katex.html', # bc of tidy
|
273
286
|
'test/testcases/block/15_math/mathjax_preview.html', # bc of mathjax preview
|
274
287
|
'test/testcases/block/15_math/mathjax_preview_simple.html', # bc of mathjax preview
|
275
288
|
'test/testcases/block/15_math/mathjax_preview_as_code.html', # bc of mathjax preview
|
@@ -375,8 +388,10 @@ class TestFiles < Minitest::Test
|
|
375
388
|
('test/testcases/block/15_math/mathjaxnode_notexhints.text' unless MATHJAX_NODE_AVAILABLE),
|
376
389
|
('test/testcases/block/15_math/mathjaxnode_semantics.text' unless MATHJAX_NODE_AVAILABLE),
|
377
390
|
('test/testcases/span/math/mathjaxnode.text' unless MATHJAX_NODE_AVAILABLE),
|
378
|
-
('test/testcases/block/15_math/sskatex.text' unless
|
379
|
-
('test/testcases/span/math/sskatex.text' unless
|
391
|
+
('test/testcases/block/15_math/sskatex.text' unless SSKATEX_AVAILABLE),
|
392
|
+
('test/testcases/span/math/sskatex.text' unless SSKATEX_AVAILABLE),
|
393
|
+
('test/testcases/block/15_math/katex.text' unless KATEX_AVAILABLE),
|
394
|
+
('test/testcases/span/math/katex.text' unless KATEX_AVAILABLE),
|
380
395
|
].compact
|
381
396
|
|
382
397
|
# Generate test methods for gfm-to-html conversion
|
@@ -408,8 +423,10 @@ class TestFiles < Minitest::Test
|
|
408
423
|
].compact
|
409
424
|
|
410
425
|
EXCLUDE_MODIFY = ['test/testcases/block/06_codeblock/rouge/multiple.text', # bc of HTMLFormater in options
|
411
|
-
('test/testcases/block/15_math/sskatex.text' unless
|
412
|
-
('test/testcases/span/math/sskatex.text' unless
|
426
|
+
('test/testcases/block/15_math/sskatex.text' unless SSKATEX_AVAILABLE),
|
427
|
+
('test/testcases/span/math/sskatex.text' unless SSKATEX_AVAILABLE),
|
428
|
+
('test/testcases/block/15_math/katex.text' unless KATEX_AVAILABLE),
|
429
|
+
('test/testcases/span/math/katex.text' unless KATEX_AVAILABLE),
|
413
430
|
].compact
|
414
431
|
|
415
432
|
# Generate test methods for asserting that converters don't modify the document tree.
|
data/test/test_location.rb
CHANGED
@@ -226,4 +226,13 @@ describe 'location' do
|
|
226
226
|
end
|
227
227
|
end
|
228
228
|
end
|
229
|
+
|
230
|
+
it 'marks fenced code block as fenced with the GFM parser' do
|
231
|
+
str = %(```\nfenced code\n```\n\n indented code\n)
|
232
|
+
doc = Kramdown::Document.new(str, :input => 'GFM')
|
233
|
+
fenced_cb = doc.root.children.first
|
234
|
+
indented_cb = doc.root.children.last
|
235
|
+
assert fenced_cb.options[:fenced]
|
236
|
+
refute indented_cb.options[:fenced]
|
237
|
+
end
|
229
238
|
end
|
@@ -0,0 +1 @@
|
|
1
|
+
:html_to_native: true
|
@@ -0,0 +1 @@
|
|
1
|
+
| first line of cell<br>second line of cell | another cell |
|
@@ -0,0 +1,2 @@
|
|
1
|
+
<span class="katex-display"><span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi mathvariant="normal">Δ</mi><mo>=</mo><mfrac><mrow><mn>1</mn></mrow><mrow><mn>2</mn></mrow></mfrac><mrow><mo fence="true">∣</mo><mtable><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mi>a</mi></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mi>b</mi></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mi>c</mi></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mi>d</mi></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mi>e</mi></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mi>f</mi></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mi>g</mi></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mi>h</mi></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mi>i</mi></mrow></mstyle></mtd></mtr></mtable><mo fence="true">∣</mo></mrow></mrow><annotation encoding="application/x-tex">\Delta = \frac{1}{2}
|
2
|
+
\begin{vmatrix}a & b & c \\ d & e & f \\ g & h & i\end{vmatrix}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="strut" style="height:2.08597em;"></span><span class="strut bottom" style="height:3.636em;vertical-align:-1.5500299999999998em;"></span><span class="base"><span class="mord">Δ</span><span class="mord rule" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mord rule" style="margin-right:0.2777777777777778em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.32144em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">2</span></span></span><span style="top:-3.15em;"><span class="pstrut" style="height:3em;"></span><span class="stretchy" style="height:0.2em;"><svg width='400em' height='0.2em' viewBox='0 0 400000 200' preserveAspectRatio='xMinYMin slice'><path d='M0 80H400000 v40H0z M0 80H400000 v40H0z'/></svg></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.686em;"></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mord rule" style="margin-right:0.16666666666666666em;"></span><span class="minner"><span class="mopen"><span class="delimsizing mult"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:2.08597em;"><span style="top:-1.05597em;"><span class="pstrut" style="height:2.606em;"></span><span class="delimsizinginner delim-size1"><span>∣</span></span></span><span style="top:-1.6619700000000002em;"><span class="pstrut" style="height:2.606em;"></span><span class="delimsizinginner delim-size1"><span>∣</span></span></span><span style="top:-2.26797em;"><span class="pstrut" style="height:2.606em;"></span><span class="delimsizinginner delim-size1"><span>∣</span></span></span><span style="top:-2.87397em;"><span class="pstrut" style="height:2.606em;"></span><span class="delimsizinginner delim-size1"><span>∣</span></span></span><span style="top:-3.47997em;"><span class="pstrut" style="height:2.606em;"></span><span class="delimsizinginner delim-size1"><span>∣</span></span></span><span style="top:-4.08597em;"><span class="pstrut" style="height:2.606em;"></span><span class="delimsizinginner delim-size1"><span>∣</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.5500299999999998em;"></span></span></span></span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:2.05em;"><span style="top:-4.21em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathit">a</span></span></span><span style="top:-3.0099999999999993em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathit">d</span></span></span><span style="top:-1.8099999999999994em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathit" style="margin-right:0.03588em;">g</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.5500000000000007em;"></span></span></span></span><span class="arraycolsep" style="width:0.5em;"></span><span class="arraycolsep" style="width:0.5em;"></span><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:2.05em;"><span style="top:-4.21em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathit">b</span></span></span><span style="top:-3.0099999999999993em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathit">e</span></span></span><span style="top:-1.8099999999999994em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathit">h</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.5500000000000007em;"></span></span></span></span><span class="arraycolsep" style="width:0.5em;"></span><span class="arraycolsep" style="width:0.5em;"></span><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:2.05em;"><span style="top:-4.21em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathit">c</span></span></span><span style="top:-3.0099999999999993em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathit" style="margin-right:0.10764em;">f</span></span></span><span style="top:-1.8099999999999994em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathit">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.5500000000000007em;"></span></span></span></span></span></span><span class="mclose"><span class="delimsizing mult"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:2.08597em;"><span style="top:-1.05597em;"><span class="pstrut" style="height:2.606em;"></span><span class="delimsizinginner delim-size1"><span>∣</span></span></span><span style="top:-1.6619700000000002em;"><span class="pstrut" style="height:2.606em;"></span><span class="delimsizinginner delim-size1"><span>∣</span></span></span><span style="top:-2.26797em;"><span class="pstrut" style="height:2.606em;"></span><span class="delimsizinginner delim-size1"><span>∣</span></span></span><span style="top:-2.87397em;"><span class="pstrut" style="height:2.606em;"></span><span class="delimsizinginner delim-size1"><span>∣</span></span></span><span style="top:-3.47997em;"><span class="pstrut" style="height:2.606em;"></span><span class="delimsizinginner delim-size1"><span>∣</span></span></span><span style="top:-4.08597em;"><span class="pstrut" style="height:2.606em;"></span><span class="delimsizinginner delim-size1"><span>∣</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.5500299999999998em;"></span></span></span></span></span></span></span></span></span></span>
|
@@ -0,0 +1 @@
|
|
1
|
+
:math_engine: :katex
|
@@ -1,4 +1,4 @@
|
|
1
|
-
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block" alttext="f
|
1
|
+
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block" alttext="f left-parenthesis x right-parenthesis equals a x cubed plus b x squared plus c x plus d">
|
2
2
|
<mi>f</mi>
|
3
3
|
<mo stretchy="false">(</mo>
|
4
4
|
<mi>x</mi>
|
@@ -1,4 +1,4 @@
|
|
1
|
-
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block" alttext="f
|
1
|
+
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block" alttext="f left-parenthesis x right-parenthesis equals a x cubed plus b x squared plus c x plus d">
|
2
2
|
<mi>f</mi>
|
3
3
|
<mo stretchy="false">(</mo>
|
4
4
|
<mi>x</mi>
|
@@ -1,4 +1,4 @@
|
|
1
|
-
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block" alttext="f
|
1
|
+
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block" alttext="f left-parenthesis x right-parenthesis equals a x cubed plus b x squared plus c x plus d">
|
2
2
|
<semantics>
|
3
3
|
<mrow>
|
4
4
|
<mi>f</mi>
|
@@ -1,2 +1,2 @@
|
|
1
1
|
<span class="katex-display"><span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi mathvariant="normal">Δ</mi><mo>=</mo><mfrac><mrow><mn>1</mn></mrow><mrow><mn>2</mn></mrow></mfrac><mrow><mo fence="true">∣</mo><mtable><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mi>a</mi></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mi>b</mi></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mi>c</mi></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mi>d</mi></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mi>e</mi></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mi>f</mi></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mi>g</mi></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mi>h</mi></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mi>i</mi></mrow></mstyle></mtd></mtr></mtable><mo fence="true">∣</mo></mrow></mrow><annotation encoding="application/x-tex">\Delta = \frac{1}{2}
|
2
|
-
\begin{vmatrix}a & b & c \\ d & e & f \\ g & h & i\end{vmatrix}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="strut" style="height:2.08597em;"></span><span class="strut bottom" style="height:3.636em;vertical-align:-1.5500299999999998em;"></span><span class="base"><span class="mord
|
2
|
+
\begin{vmatrix}a & b & c \\ d & e & f \\ g & h & i\end{vmatrix}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="strut" style="height:2.08597em;"></span><span class="strut bottom" style="height:3.636em;vertical-align:-1.5500299999999998em;"></span><span class="base"><span class="mord">Δ</span><span class="mord rule" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mord rule" style="margin-right:0.2777777777777778em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.32144em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">2</span></span></span><span style="top:-3.15em;"><span class="pstrut" style="height:3em;"></span><span class="stretchy" style="height:0.2em;"><svg width='400em' height='0.2em' viewBox='0 0 400000 200' preserveAspectRatio='xMinYMin slice'><path d='M0 80H400000 v40H0z M0 80H400000 v40H0z'/></svg></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.686em;"></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mord rule" style="margin-right:0.16666666666666666em;"></span><span class="minner"><span class="mopen"><span class="delimsizing mult"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:2.08597em;"><span style="top:-1.05597em;"><span class="pstrut" style="height:2.606em;"></span><span class="delimsizinginner delim-size1"><span>∣</span></span></span><span style="top:-1.6619700000000002em;"><span class="pstrut" style="height:2.606em;"></span><span class="delimsizinginner delim-size1"><span>∣</span></span></span><span style="top:-2.26797em;"><span class="pstrut" style="height:2.606em;"></span><span class="delimsizinginner delim-size1"><span>∣</span></span></span><span style="top:-2.87397em;"><span class="pstrut" style="height:2.606em;"></span><span class="delimsizinginner delim-size1"><span>∣</span></span></span><span style="top:-3.47997em;"><span class="pstrut" style="height:2.606em;"></span><span class="delimsizinginner delim-size1"><span>∣</span></span></span><span style="top:-4.08597em;"><span class="pstrut" style="height:2.606em;"></span><span class="delimsizinginner delim-size1"><span>∣</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:1.5500299999999998em;"></span></span></span></span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:2.05em;"><span style="top:-4.21em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathit">a</span></span></span><span style="top:-3.0099999999999993em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathit">d</span></span></span><span style="top:-1.8099999999999994em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathit" style="margin-right:0.03588em;">g</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:1.5500000000000007em;"></span></span></span></span><span class="arraycolsep" style="width:0.5em;"></span><span class="arraycolsep" style="width:0.5em;"></span><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:2.05em;"><span style="top:-4.21em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathit">b</span></span></span><span style="top:-3.0099999999999993em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathit">e</span></span></span><span style="top:-1.8099999999999994em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathit">h</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:1.5500000000000007em;"></span></span></span></span><span class="arraycolsep" style="width:0.5em;"></span><span class="arraycolsep" style="width:0.5em;"></span><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:2.05em;"><span style="top:-4.21em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathit">c</span></span></span><span style="top:-3.0099999999999993em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathit" style="margin-right:0.10764em;">f</span></span></span><span style="top:-1.8099999999999994em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathit">i</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:1.5500000000000007em;"></span></span></span></span></span></span><span class="mclose"><span class="delimsizing mult"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:2.08597em;"><span style="top:-1.05597em;"><span class="pstrut" style="height:2.606em;"></span><span class="delimsizinginner delim-size1"><span>∣</span></span></span><span style="top:-1.6619700000000002em;"><span class="pstrut" style="height:2.606em;"></span><span class="delimsizinginner delim-size1"><span>∣</span></span></span><span style="top:-2.26797em;"><span class="pstrut" style="height:2.606em;"></span><span class="delimsizinginner delim-size1"><span>∣</span></span></span><span style="top:-2.87397em;"><span class="pstrut" style="height:2.606em;"></span><span class="delimsizinginner delim-size1"><span>∣</span></span></span><span style="top:-3.47997em;"><span class="pstrut" style="height:2.606em;"></span><span class="delimsizinginner delim-size1"><span>∣</span></span></span><span style="top:-4.08597em;"><span class="pstrut" style="height:2.606em;"></span><span class="delimsizinginner delim-size1"><span>∣</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:1.5500299999999998em;"></span></span></span></span></span></span></span></span></span></span>
|
@@ -0,0 +1 @@
|
|
1
|
+
<p>Erst einmal eine Formel wie <span class="katex"><span class="katex-mathml"><math><semantics><mrow><msup><mi>a</mi><mn>2</mn></msup><mo>+</mo><msup><mi>b</mi><mn>2</mn></msup><mo>=</mo><msup><mi>c</mi><mn>2</mn></msup></mrow><annotation encoding="application/x-tex">a^2+b^2=c^2</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="strut" style="height:0.8141079999999999em;"></span><span class="strut bottom" style="height:0.897438em;vertical-align:-0.08333em;"></span><span class="base"><span class="mord"><span class="mord mathit">a</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.8141079999999999em;"><span style="top:-3.063em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span></span></span></span></span><span class="mord rule" style="margin-right:0.2222222222222222em;"></span><span class="mbin">+</span><span class="mord rule" style="margin-right:0.2222222222222222em;"></span><span class="mord"><span class="mord mathit">b</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.8141079999999999em;"><span style="top:-3.063em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span></span></span></span></span><span class="mord rule" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mord rule" style="margin-right:0.2777777777777778em;"></span><span class="mord"><span class="mord mathit">c</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.8141079999999999em;"><span style="top:-3.063em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span></span></span></span></span></span></span></span> innerhalb eines Satzes.</p>
|
@@ -0,0 +1 @@
|
|
1
|
+
:math_engine: :katex
|
@@ -0,0 +1 @@
|
|
1
|
+
Erst einmal eine Formel wie $$a^2+b^2=c^2$$ innerhalb eines Satzes.
|
@@ -1,4 +1,4 @@
|
|
1
|
-
<p>This is <math xmlns="http://www.w3.org/1998/Math/MathML" alttext="f
|
1
|
+
<p>This is <math xmlns="http://www.w3.org/1998/Math/MathML" alttext="f left-parenthesis x right-parenthesis equals a x cubed plus b x squared plus c x plus d">
|
2
2
|
<mi>f</mi>
|
3
3
|
<mo stretchy="false">(</mo>
|
4
4
|
<mi>x</mi>
|
@@ -1 +1 @@
|
|
1
|
-
<p>Erst einmal eine Formel wie <span class="katex"><span class="katex-mathml"><math><semantics><mrow><msup><mi>a</mi><mn>2</mn></msup><mo>+</mo><msup><mi>b</mi><mn>2</mn></msup><mo>=</mo><msup><mi>c</mi><mn>2</mn></msup></mrow><annotation encoding="application/x-tex">a^2+b^2=c^2</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="strut" style="height:0.8141079999999999em;"></span><span class="strut bottom" style="height:0.897438em;vertical-align:-0.08333em;"></span><span class="base"><span class="mord"><span class="mord mathit">a</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.8141079999999999em;"><span style="top:-3.063em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord
|
1
|
+
<p>Erst einmal eine Formel wie <span class="katex"><span class="katex-mathml"><math><semantics><mrow><msup><mi>a</mi><mn>2</mn></msup><mo>+</mo><msup><mi>b</mi><mn>2</mn></msup><mo>=</mo><msup><mi>c</mi><mn>2</mn></msup></mrow><annotation encoding="application/x-tex">a^2+b^2=c^2</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="strut" style="height:0.8141079999999999em;"></span><span class="strut bottom" style="height:0.897438em;vertical-align:-0.08333em;"></span><span class="base"><span class="mord"><span class="mord mathit">a</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.8141079999999999em;"><span style="top:-3.063em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span></span></span></span></span><span class="mord rule" style="margin-right:0.2222222222222222em;"></span><span class="mbin">+</span><span class="mord rule" style="margin-right:0.2222222222222222em;"></span><span class="mord"><span class="mord mathit">b</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.8141079999999999em;"><span style="top:-3.063em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span></span></span></span></span><span class="mord rule" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mord rule" style="margin-right:0.2777777777777778em;"></span><span class="mord"><span class="mord mathit">c</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.8141079999999999em;"><span style="top:-3.063em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span></span></span></span></span></span></span></span> innerhalb eines Satzes.</p>
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kramdown
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.17.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thomas Leitner
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-05-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: minitest
|
@@ -142,14 +142,28 @@ dependencies:
|
|
142
142
|
requirements:
|
143
143
|
- - ">="
|
144
144
|
- !ruby/object:Gem::Version
|
145
|
-
version: 0.9.
|
145
|
+
version: 0.9.37
|
146
146
|
type: :development
|
147
147
|
prerelease: false
|
148
148
|
version_requirements: !ruby/object:Gem::Requirement
|
149
149
|
requirements:
|
150
150
|
- - ">="
|
151
151
|
- !ruby/object:Gem::Version
|
152
|
-
version: 0.9.
|
152
|
+
version: 0.9.37
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: katex
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - "~>"
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: 0.4.3
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - "~>"
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: 0.4.3
|
153
167
|
description: |
|
154
168
|
kramdown is yet-another-markdown-parser but fast, pure Ruby,
|
155
169
|
using a strict syntax definition and supporting several common extensions.
|
@@ -203,6 +217,7 @@ files:
|
|
203
217
|
- lib/kramdown/converter/latex.rb
|
204
218
|
- lib/kramdown/converter/man.rb
|
205
219
|
- lib/kramdown/converter/math_engine/itex2mml.rb
|
220
|
+
- lib/kramdown/converter/math_engine/katex.rb
|
206
221
|
- lib/kramdown/converter/math_engine/mathjax.rb
|
207
222
|
- lib/kramdown/converter/math_engine/mathjaxnode.rb
|
208
223
|
- lib/kramdown/converter/math_engine/ritex.rb
|
@@ -533,6 +548,9 @@ files:
|
|
533
548
|
- test/testcases/block/13_definition_list/too_much_space.text
|
534
549
|
- test/testcases/block/13_definition_list/with_blocks.html
|
535
550
|
- test/testcases/block/13_definition_list/with_blocks.text
|
551
|
+
- test/testcases/block/14_table/empty_tag_in_cell.html
|
552
|
+
- test/testcases/block/14_table/empty_tag_in_cell.options
|
553
|
+
- test/testcases/block/14_table/empty_tag_in_cell.text
|
536
554
|
- test/testcases/block/14_table/errors.html
|
537
555
|
- test/testcases/block/14_table/errors.text
|
538
556
|
- test/testcases/block/14_table/escaping.html
|
@@ -553,6 +571,9 @@ files:
|
|
553
571
|
- test/testcases/block/15_math/itex2mml.html
|
554
572
|
- test/testcases/block/15_math/itex2mml.options
|
555
573
|
- test/testcases/block/15_math/itex2mml.text
|
574
|
+
- test/testcases/block/15_math/katex.html.19
|
575
|
+
- test/testcases/block/15_math/katex.options
|
576
|
+
- test/testcases/block/15_math/katex.text
|
556
577
|
- test/testcases/block/15_math/mathjax_preview.html
|
557
578
|
- test/testcases/block/15_math/mathjax_preview.options
|
558
579
|
- test/testcases/block/15_math/mathjax_preview.text
|
@@ -735,6 +756,9 @@ files:
|
|
735
756
|
- test/testcases/span/math/itex2mml.html
|
736
757
|
- test/testcases/span/math/itex2mml.options
|
737
758
|
- test/testcases/span/math/itex2mml.text
|
759
|
+
- test/testcases/span/math/katex.html.19
|
760
|
+
- test/testcases/span/math/katex.options
|
761
|
+
- test/testcases/span/math/katex.text
|
738
762
|
- test/testcases/span/math/mathjaxnode.html.19
|
739
763
|
- test/testcases/span/math/mathjaxnode.options
|
740
764
|
- test/testcases/span/math/mathjaxnode.text
|
@@ -836,7 +860,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
836
860
|
version: '0'
|
837
861
|
requirements: []
|
838
862
|
rubyforge_project:
|
839
|
-
rubygems_version: 2.
|
863
|
+
rubygems_version: 2.7.3
|
840
864
|
signing_key:
|
841
865
|
specification_version: 4
|
842
866
|
summary: kramdown is a fast, pure-Ruby Markdown-superset converter.
|