asciidoctor-pdf-mathjax 0.1.1 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/asciidoctor-pdf-mathjax.rb +23 -5
- metadata +8 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ca91538264bb33f7f1396cd2a572e8aab9b025d8ad0aad41f2218f382ea4580b
|
4
|
+
data.tar.gz: fa2bd399de8b1f2b8b496d4502d97440b17fdeac71a70d1615aade5a778a635f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3196f3580bf60ddce0ceae5b7abd339019571bce0a05d5b4e2f2ab2e25fa88fa6cd085cfe567aa5be7fc54227dcabe3ea5d9ba616c628ea754d88c4098c82b7e
|
7
|
+
data.tar.gz: d22d84c24ce7317cf9ef93b297917e4d3c3a1ba259a2e0f762e41b62b1be80b9c71ab26759d6f89d4f1f40e05981443ce9344818f9f9a56bbb74389db1d0414e
|
@@ -40,6 +40,14 @@ class AsciidoctorPDFExtensions < (Asciidoctor::Converter.for 'pdf')
|
|
40
40
|
end
|
41
41
|
else
|
42
42
|
svg_output = adjust_svg_color(svg_output, @font_color)
|
43
|
+
svg_default_font_size = FALLBACK_FONT_SIZE
|
44
|
+
|
45
|
+
svg_doc = REXML::Document.new(svg_output)
|
46
|
+
svg_width = svg_doc.root.attributes['width'].to_f * POINTS_PER_EX || raise("No width found in SVG")
|
47
|
+
|
48
|
+
scaling_factor = @font_size.to_f / svg_default_font_size
|
49
|
+
svg_width = svg_width * scaling_factor
|
50
|
+
|
43
51
|
svg_file = Tempfile.new(['stem', '.svg'])
|
44
52
|
begin
|
45
53
|
svg_file.write(svg_output)
|
@@ -47,7 +55,7 @@ class AsciidoctorPDFExtensions < (Asciidoctor::Converter.for 'pdf')
|
|
47
55
|
|
48
56
|
pad_box @theme.code_padding, node do
|
49
57
|
begin
|
50
|
-
image_obj = image svg_file.path, position: :center
|
58
|
+
image_obj = image svg_file.path, position: :center, width: svg_width, height: nil
|
51
59
|
logger.debug "Successfully embedded stem block (as latex) #{latex_content} as SVG image" if image_obj
|
52
60
|
rescue Prawn::Errors::UnsupportedImageType => e
|
53
61
|
logger.warn "Unsupported image type error: #{e.message}"
|
@@ -70,12 +78,11 @@ class AsciidoctorPDFExtensions < (Asciidoctor::Converter.for 'pdf')
|
|
70
78
|
theme = (load_theme node.document)
|
71
79
|
|
72
80
|
svg_output, error = stem_to_svg(latex_content, true)
|
73
|
-
|
74
|
-
if adjusted_svg.nil? || adjusted_svg.empty?
|
81
|
+
if svg_output.nil? || svg_output.empty?
|
75
82
|
logger.warn "Error processing stem: #{error || 'No SVG output'}"
|
76
83
|
return super
|
77
84
|
end
|
78
|
-
|
85
|
+
adjusted_svg, svg_width = adjust_svg_to_match_text(svg_output, node, theme)
|
79
86
|
tmp_svg = Tempfile.new(['stem-', '.svg'])
|
80
87
|
self.class.tempfiles << tmp_svg
|
81
88
|
begin
|
@@ -192,7 +199,18 @@ class AsciidoctorPDFExtensions < (Asciidoctor::Converter.for 'pdf')
|
|
192
199
|
svg_relative_baseline_height = embedding_text_relative_baseline_height * svg_relative_height_difference
|
193
200
|
svg_inner_relative_offset = svg_relative_baseline_height + svg_relative_portion_extending_embedding_text_below - 1
|
194
201
|
|
195
|
-
|
202
|
+
svg_inner_offset_new = svg_inner_relative_offset * svg_inner_height
|
203
|
+
svg_inner_height_padding = (svg_inner_offset - svg_inner_offset_new) * 0.25 # 25% padding to handle fractions
|
204
|
+
svg_inner_height_difference = 2 * svg_inner_height_padding
|
205
|
+
svg_inner_height_new = svg_inner_height + svg_inner_height_difference
|
206
|
+
svg_inner_height_relative_difference = svg_inner_height_new / svg_inner_height
|
207
|
+
|
208
|
+
logger.debug("svg_inner_offset = #{svg_inner_offset}, svg_inner_height = #{svg_inner_height}, svg_inner_offset_new = #{svg_inner_offset_new}, svg_inner_height_new = #{svg_inner_height_new}")
|
209
|
+
logger.debug("svg_inner_offset_diff = #{svg_inner_offset - svg_inner_offset_new}, svg_inner_offset_diff_relative = #{(svg_inner_offset - svg_inner_offset_new) / svg_inner_height}")
|
210
|
+
|
211
|
+
svg_height = svg_height * svg_inner_height_relative_difference
|
212
|
+
svg_inner_height = svg_inner_height_new
|
213
|
+
svg_inner_offset = svg_inner_offset_new - svg_inner_height_padding
|
196
214
|
else
|
197
215
|
svg_height = embedding_text_height
|
198
216
|
svg_inner_height = svg_relative_height_difference * svg_inner_height
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: asciidoctor-pdf-mathjax
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Crown0815
|
8
8
|
bindir: bin
|
9
9
|
cert_chain: []
|
10
|
-
date: 2025-03-
|
10
|
+
date: 2025-03-14 00:00:00.000000000 Z
|
11
11
|
dependencies:
|
12
12
|
- !ruby/object:Gem::Dependency
|
13
13
|
name: asciidoctor
|
@@ -70,6 +70,9 @@ dependencies:
|
|
70
70
|
- - "~>"
|
71
71
|
- !ruby/object:Gem::Version
|
72
72
|
version: '2.0'
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 2.0.6
|
73
76
|
type: :runtime
|
74
77
|
prerelease: false
|
75
78
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -77,6 +80,9 @@ dependencies:
|
|
77
80
|
- - "~>"
|
78
81
|
- !ruby/object:Gem::Version
|
79
82
|
version: '2.0'
|
83
|
+
- - ">="
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: 2.0.6
|
80
86
|
- !ruby/object:Gem::Dependency
|
81
87
|
name: bigdecimal
|
82
88
|
requirement: !ruby/object:Gem::Requirement
|