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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5463b0301cbd7e4d75a4f567a9e0b97c19ae4ec607ee167403630cbb4a7f65da
4
- data.tar.gz: dfcce64d1431856ae431c300d91c1bf0d5739fb95325d38c58931aadda1d4a21
3
+ metadata.gz: ca91538264bb33f7f1396cd2a572e8aab9b025d8ad0aad41f2218f382ea4580b
4
+ data.tar.gz: fa2bd399de8b1f2b8b496d4502d97440b17fdeac71a70d1615aade5a778a635f
5
5
  SHA512:
6
- metadata.gz: 4b3dd0ed36a5e2fa4d2157a5dbc189d7c84a0fbb7ab15c873bf863e03c4121b0c37637457cfc55af98d1e3a07f4f8e1d3ce284f16a7bd0a3b020fd90953ac769
7
- data.tar.gz: 2b9a8082c4795438457733cd4d90d8b386e7c46be9e0775dedda29bed809db10f1837b06194bd10caed9a7ea1f0df2f4f38b8d3c5892b3c78e853299480d83c5
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
- adjusted_svg, svg_width = adjust_svg_to_match_text(svg_output, node, theme)
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
- svg_inner_offset = svg_inner_relative_offset * svg_inner_height
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.1.1
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 00:00:00.000000000 Z
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