rsyntaxtree 1.0.8 → 1.1.1

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.
Files changed (43) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +77 -0
  3. data/.solargraph.yml +22 -0
  4. data/.tags +238 -10
  5. data/Gemfile +10 -5
  6. data/README.md +3 -2
  7. data/Rakefile +5 -2
  8. data/bin/rsyntaxtree +42 -50
  9. data/docs/Gemfile +3 -1
  10. data/docs/_layouts/default.html +1 -1
  11. data/docs/assets/svg/001.svg +39 -0
  12. data/docs/assets/svg/002.svg +65 -0
  13. data/docs/assets/svg/003.svg +54 -0
  14. data/docs/assets/svg/004.svg +68 -0
  15. data/docs/assets/svg/005.svg +41 -0
  16. data/docs/assets/svg/006.svg +47 -0
  17. data/docs/assets/svg/007.svg +55 -0
  18. data/docs/assets/svg/008.svg +63 -0
  19. data/docs/assets/svg/009.svg +61 -0
  20. data/docs/assets/svg/010.svg +85 -0
  21. data/docs/assets/svg/011.svg +49 -0
  22. data/docs/assets/svg/012.svg +55 -0
  23. data/docs/assets/svg/013.svg +203 -0
  24. data/docs/assets/svg/014.svg +188 -0
  25. data/docs/assets/svg/015.svg +60 -0
  26. data/docs/assets/svg/016.svg +801 -0
  27. data/docs/assets/svg/017.svg +77 -0
  28. data/docs/assets/svg/018.svg +66 -0
  29. data/docs/assets/svg/019.svg +256 -0
  30. data/docs/assets/svg/020.svg +99 -0
  31. data/lib/rsyntaxtree/base_graph.rb +260 -264
  32. data/lib/rsyntaxtree/element.rb +167 -179
  33. data/lib/rsyntaxtree/elementlist.rb +105 -124
  34. data/lib/rsyntaxtree/markup_parser.rb +82 -93
  35. data/lib/rsyntaxtree/string_parser.rb +221 -237
  36. data/lib/rsyntaxtree/svg_graph.rb +158 -197
  37. data/lib/rsyntaxtree/utils.rb +59 -63
  38. data/lib/rsyntaxtree/version.rb +3 -2
  39. data/lib/rsyntaxtree.rb +173 -177
  40. data/rsyntaxtree.gemspec +12 -10
  41. data/test/example_verify_test.rb +96 -0
  42. data/test/markup_parser_test.rb +3 -2
  43. metadata +54 -17
data/bin/rsyntaxtree CHANGED
@@ -1,66 +1,58 @@
1
1
  #!/usr/bin/env ruby
2
- # -*- coding: utf-8 -*-
2
+ # frozen_string_literal: true
3
3
 
4
- $LOAD_PATH << File.join( File.dirname(__FILE__), '../lib')
5
-
6
- require 'rsyntaxtree'
4
+ require_relative '../lib/rsyntaxtree'
5
+ require_relative '../lib/rsyntaxtree/utils'
7
6
  require 'optimist'
8
- require 'utils'
9
7
 
10
- opts = Optimist::options do
11
- version "RSyntaxTree #{RSyntaxTree::VERSION} (c) 2021 Yoichiro Hasebe"
12
- banner <<-EOS
13
- RSyntaxTree, (linguistic) syntax tree generator written in Ruby.
8
+ opts = Optimist.options do
9
+ version "RSyntaxTree #{RSyntaxTree::VERSION} (c) 2023 Yoichiro Hasebe"
10
+ banner <<~BANNER
11
+ RSyntaxTree, (linguistic) syntax tree generator written in Ruby.
14
12
 
15
- Usage:
16
- rsyntaxtree [options] "[VP [VP [V set] [NP bracket notation]] [ADV here]]"
17
- where [options] are:
18
- EOS
13
+ Usage:
14
+ 1) rsyntaxtree [options] "[VP [VP [V set] [NP bracket notation]] [ADV here]]"
15
+ 2) rsyntaxtree [options] "/path/to/text/file"
16
+ where [options] are:
17
+ BANNER
19
18
 
20
- opt :outdir, "Output directory",
21
- :default => "./"
22
- opt :format, "Output format: png, gif, jpg, pdf, or svg",
23
- :default => "png"
24
- opt :leafstyle, "visual style of tree leaves: auto, triangle, bar, or nothing",
25
- :default => "auto"
26
- opt :fontstyle, "Font style (available when ttf font is specified): sans, serif, cjk",
27
- :default => "sans"
28
- opt :font, "Path to a ttf font used to generate tree (optional)", :type => String
29
- opt :fontsize, "Size: 8-26",
30
- :default => 16
31
- opt :margin, "Margin: 0-10",
32
- :default => 1
33
- opt :vheight, "Connector Height: 0.5-5.0",
34
- :default => 2.0
35
- opt :color, "Color text and bars: on or off",
36
- :default => "on"
37
- opt :symmetrize, "Generate radically symmetrical, balanced tree: on or off",
38
- :default => "off"
39
- opt :transparent, "Make background transparent: on or off",
40
- :default => "off"
41
- opt :polyline, "draw polyline connectors: on or off",
42
- :default => "off"
19
+ opt :outdir, "Output directory", default: "./"
20
+ opt :format, "Output format: png, gif, jpg, pdf, or svg", default: "png"
21
+ opt :leafstyle, "visual style of tree leaves: auto, triangle, bar, or nothing", default: "auto"
22
+ opt :fontstyle, "Font style (available when ttf font is specified): sans, serif, cjk", default: "sans"
23
+ opt :font, "Path to a ttf font used to generate tree (optional)", type: String
24
+ opt :fontsize, "Size: 8-26", default: 16
25
+ opt :margin, "Margin: 0-10", default: 1
26
+ opt :vheight, "Connector Height: 0.5-5.0", default: 2.0
27
+ opt :color, "Color text and bars: on or off", default: "on"
28
+ opt :symmetrize, "Generate radically symmetrical, balanced tree: on or off", default: "off"
29
+ opt :transparent, "Make background transparent: on or off", default: "off"
30
+ opt :polyline, "draw polyline connectors: on or off", default: "off"
43
31
  end
44
32
 
45
- Optimist::die :outdir, "must be an exsting directory path" unless FileTest::directory?(opts[:outdir])
46
- Optimist::die :format, "must be png, jpg, gif, or svg" unless /\A(png|jpg|gif|pdf|svg)\z/ =~ opts[:format]
47
- Optimist::die :leafstyle, "must be auto, triangle, bar, or nothing" unless /\A(auto|triangle|bar|nothing)\z/ =~ opts[:leafstyle]
48
- Optimist::die :fontstyle, "must be sans, serif, cjk" unless /\A(sans|serif|cjk)\z/ =~ opts[:fontstyle]
49
- Optimist::die :font, "must be path to an existing ttf font" if opts[:font] && !File::exists?(opts[:font])
50
- Optimist::die :fontsize, "must be in the range of 8-26" unless opts[:fontsize] >= 8 && opts[:fontsize] <= 26
51
- Optimist::die :color, "must be either on or off" unless /\A(on|off|true|false)\z/ =~ opts[:color]
52
- Optimist::die :symmetrize, "must be either on or off" unless /\A(on|off|true|false)\z/ =~ opts[:symmetrize]
53
- Optimist::die :margin, "must be in the range of 0-10" if opts[:margin] < 0 || opts[:margin] > 10
54
- Optimist::die :vheight, "must be in the range of 0.5-5.0" if opts[:vheight] < 0.5 || opts[:vheight] > 5.0
55
- Optimist::die :transparent, "must be either on or off" unless /\A(on|off|true|false)\z/ =~ opts[:transparent]
56
- Optimist::die :polyline, "must be either on or off" unless /\A(on|off|true|false)\z/ =~ opts[:polyline]
33
+ Optimist.die :outdir, "must be an exsting directory path" unless FileTest.directory?(opts[:outdir])
34
+ Optimist.die :format, "must be png, jpg, gif, or svg" unless /\A(png|jpg|gif|pdf|svg)\z/ =~ opts[:format]
35
+ Optimist.die :leafstyle, "must be auto, triangle, bar, or nothing" unless /\A(auto|triangle|bar|nothing)\z/ =~ opts[:leafstyle]
36
+ Optimist.die :fontstyle, "must be sans, serif, cjk" unless /\A(sans|serif|cjk)\z/ =~ opts[:fontstyle]
37
+ Optimist.die :font, "must be path to an existing ttf font" if opts[:font] && !File.exist?(opts[:font])
38
+ Optimist.die :fontsize, "must be in the range of 8-26" unless opts[:fontsize] >= 8 && opts[:fontsize] <= 26
39
+ Optimist.die :color, "must be either on or off" unless /\A(on|off|true|false)\z/ =~ opts[:color]
40
+ Optimist.die :symmetrize, "must be either on or off" unless /\A(on|off|true|false)\z/ =~ opts[:symmetrize]
41
+ Optimist.die :margin, "must be in the range of 0-10" if opts[:margin].negative? || opts[:margin] > 10
42
+ Optimist.die :vheight, "must be in the range of 0.5-5.0" if opts[:vheight] < 0.5 || opts[:vheight] > 5.0
43
+ Optimist.die :transparent, "must be either on or off" unless /\A(on|off|true|false)\z/ =~ opts[:transparent]
44
+ Optimist.die :polyline, "must be either on or off" unless /\A(on|off|true|false)\z/ =~ opts[:polyline]
57
45
 
58
46
  string_opts = {}
59
47
  opts.each do |key, value|
60
48
  string_opts[key.to_sym] = value unless key == :font && !value
61
49
  end
62
50
 
63
- data = ARGV[0]
51
+ data = if File.exist?(File.expand_path(ARGV[0]))
52
+ File.read ARGV[0]
53
+ else
54
+ ARGV[0]
55
+ end
64
56
 
65
57
  begin
66
58
  RSyntaxTree::RSGenerator.check_data(data)
@@ -89,7 +81,7 @@ begin
89
81
  rescue RSTError => e
90
82
  puts e
91
83
  exit
92
- rescue => e
84
+ rescue StandardError => e
93
85
  p e
94
86
  puts "Error: something unexpected occurred"
95
87
  exit
data/docs/Gemfile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source "https://rubygems.org"
2
4
  # Hello! This is where you manage which Jekyll version is used to run.
3
5
  # When you want to use a different version, change it below, save the
@@ -27,5 +29,5 @@ platforms :mingw, :x64_mingw, :mswin, :jruby do
27
29
  end
28
30
 
29
31
  # Performance-booster for watching directories on Windows
30
- gem "wdm", "~> 0.1.1", :platforms => [:mingw, :x64_mingw, :mswin]
32
+ gem "wdm", "~> 0.1.1", platforms: [:mingw, :x64_mingw, :mswin]
31
33
  gem "webrick"
@@ -35,7 +35,7 @@
35
35
  {{ content }}
36
36
 
37
37
  <footer class="site-footer" style='border-top-width: 0; text-align: center;'>
38
- <div> <span class="site-footer-credits">© Yoichiro HASEBE 2009-2022</span></div>
38
+ <div> <span class="site-footer-credits">© Yoichiro HASEBE 2009-2023</span></div>
39
39
  {% include social_media_links.html %}
40
40
  </footer>
41
41
  </main>
@@ -0,0 +1,39 @@
1
+ <?xml version="1.0" standalone="no"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3
+ <svg width="647.8000000000001" height="770.4" viewBox="-20, -20, 667.8000000000001, 790.4" version="1.1" xmlns="http://www.w3.org/2000/svg">
4
+ <defs>
5
+ <marker id="arrow" markerUnits="strokeWidth" markerWidth="13.440000000000001" markerHeight="13.440000000000001" viewBox="0 0 13.440000000000001 13.440000000000001" refX="6.720000000000001" refY="0">
6
+ <polyline fill="none" stroke="purple" stroke-width="1" points="0,13.440000000000001,6.720000000000001,0,13.440000000000001,13.440000000000001" />
7
+ </marker>
8
+ <pattern id="hatchBlack" x="10" y="10" width="10" height="10" patternUnits="userSpaceOnUse" patternTransform="rotate(45)">
9
+ <line x1="0" y="0" x2="0" y2="10" stroke="black" stroke-width="4"></line>
10
+ </pattern>
11
+ <pattern id="hatchForNode" x="10" y="10" width="10" height="10" patternUnits="userSpaceOnUse" patternTransform="rotate(45)">
12
+ <line x1="0" y="0" x2="0" y2="10" stroke="blue" stroke-width="4"></line>
13
+ </pattern>
14
+ <pattern id="hatchForLeaf" x="10" y="10" width="10" height="10" patternUnits="userSpaceOnUse" patternTransform="rotate(45)">
15
+ <line x1="0" y="0" x2="0" y2="10" stroke="green" stroke-width="4"></line>
16
+ </pattern>
17
+ </defs>
18
+ <rect x="-20" y="-20" width="667.8000000000001" height="790.4" stroke="none" fill="white" />"
19
+ <text white-space='pre' alignment-baseline='text-top' style='fill: blue; font-size: 64px;' x='298.32500000000005' y='132.0'><tspan x='298.32500000000005' y='132.0' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">A</tspan>
20
+ </text>
21
+ <text white-space='pre' alignment-baseline='text-top' style='fill: blue; font-size: 64px;' x='125.05000000000001' y='431.2'><tspan x='125.05000000000001' y='431.2' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">B</tspan>
22
+ </text>
23
+ <text white-space='pre' alignment-baseline='text-top' style='fill: green; font-size: 64px;' x='33.60000000000002' y='730.4'><tspan x='33.60000000000002' y='730.4' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">D</tspan>
24
+ </text>
25
+ <text white-space='pre' alignment-baseline='text-top' style='fill: green; font-size: 64px;' x='215.0' y='730.4'><tspan x='215.0' y='730.4' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">E</tspan>
26
+ </text>
27
+ <text white-space='pre' alignment-baseline='text-top' style='fill: blue; font-size: 64px;' x='477.1' y='431.2'><tspan x='477.1' y='431.2' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">C</tspan>
28
+ </text>
29
+ <text white-space='pre' alignment-baseline='text-top' style='fill: green; font-size: 64px;' x='389.40000000000003' y='730.4'><tspan x='389.40000000000003' y='730.4' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">F</tspan>
30
+ </text>
31
+ <text white-space='pre' alignment-baseline='text-top' style='fill: green; font-size: 64px;' x='561.8000000000001' y='730.4'><tspan x='561.8000000000001' y='730.4' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">G</tspan>
32
+ </text>
33
+ <line style='stroke:black; stroke-width:2;' x1='146.05' y1='321.2' x2='321.32500000000005' y2='187.0' />
34
+ <line style='stroke:black; stroke-width:2;' x1='496.6' y1='321.2' x2='321.32500000000005' y2='187.0' />
35
+ <line style='stroke:black; stroke-width:2;' x1='57.10000000000002' y1='620.4' x2='146.05' y2='486.2' />
36
+ <line style='stroke:black; stroke-width:2;' x1='235.0' y1='620.4' x2='146.05' y2='486.2' />
37
+ <line style='stroke:black; stroke-width:2;' x1='408.40000000000003' y1='620.4' x2='496.6' y2='486.2' />
38
+ <line style='stroke:black; stroke-width:2;' x1='584.8000000000001' y1='620.4' x2='496.6' y2='486.2' />
39
+ </svg>
@@ -0,0 +1,65 @@
1
+ <?xml version="1.0" standalone="no"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3
+ <svg width="1601.0" height="1668.0000000000002" viewBox="-20, -20, 1621.0, 1688.0000000000002" version="1.1" xmlns="http://www.w3.org/2000/svg">
4
+ <defs>
5
+ <marker id="arrow" markerUnits="strokeWidth" markerWidth="13.440000000000001" markerHeight="13.440000000000001" viewBox="0 0 13.440000000000001 13.440000000000001" refX="6.720000000000001" refY="0">
6
+ <polyline fill="none" stroke="black" stroke-width="1" points="0,13.440000000000001,6.720000000000001,0,13.440000000000001,13.440000000000001" />
7
+ </marker>
8
+ <pattern id="hatchBlack" x="10" y="10" width="10" height="10" patternUnits="userSpaceOnUse" patternTransform="rotate(45)">
9
+ <line x1="0" y="0" x2="0" y2="10" stroke="black" stroke-width="4"></line>
10
+ </pattern>
11
+ <pattern id="hatchForNode" x="10" y="10" width="10" height="10" patternUnits="userSpaceOnUse" patternTransform="rotate(45)">
12
+ <line x1="0" y="0" x2="0" y2="10" stroke="black" stroke-width="4"></line>
13
+ </pattern>
14
+ <pattern id="hatchForLeaf" x="10" y="10" width="10" height="10" patternUnits="userSpaceOnUse" patternTransform="rotate(45)">
15
+ <line x1="0" y="0" x2="0" y2="10" stroke="black" stroke-width="4"></line>
16
+ </pattern>
17
+ </defs>
18
+ <rect x="-20" y="-20" width="1621.0" height="1688.0000000000002" stroke="none" fill="white" />"
19
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; font-size: 64px;' x='496.04999999999995' y='132.0'><tspan x='496.04999999999995' y='132.0' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">CP</tspan>
20
+ </text>
21
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; font-size: 64px;' x='33.60000000000002' y='431.2'><tspan x='33.60000000000002' y='431.2' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">John</tspan>
22
+ </text>
23
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; font-size: 64px;' x='926.4999999999999' y='431.2'><tspan x='926.4999999999999' y='431.2' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">TP</tspan>
24
+ </text>
25
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; font-size: 64px;' x='680.3749999999999' y='730.4'><tspan x='680.3749999999999' y='730.4' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">T</tspan>
26
+ </text>
27
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; font-size: 64px;' x='508.44999999999993' y='1029.6'><tspan x='508.44999999999993' y='1029.6' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">V</tspan>
28
+ </text>
29
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; font-size: 64px;' x='309.99999999999994' y='1328.8000000000002'><tspan x='309.99999999999994' y='1328.8000000000002' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">cause</tspan>
30
+ </text>
31
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; font-size: 64px;' x='643.3999999999999' y='1328.8000000000002'><tspan x='643.3999999999999' y='1328.8000000000002' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">V</tspan>
32
+ </text>
33
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; font-size: 64px;' x='615.3999999999999' y='1628.0000000000002'><tspan x='615.3999999999999' y='1628.0000000000002' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">fall</tspan>
34
+ </text>
35
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; font-size: 64px;' x='849.8' y='1029.6'><tspan x='849.8' y='1029.6' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">T</tspan>
36
+ </text>
37
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; font-size: 64px;' x='1190.1249999999998' y='730.4'><tspan x='1190.1249999999998' y='730.4' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">VP</tspan>
38
+ </text>
39
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; font-size: 64px;' x='1024.1999999999998' y='1029.6'><tspan x='1024.1999999999998' y='1029.6' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">V</tspan>
40
+ </text>
41
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; font-size: 64px;' x='1023.1999999999998' y='1328.8000000000002'><tspan x='1023.1999999999998' y='1328.8000000000002' style="font-style: italic; " text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">t</tspan>
42
+ <tspan x='1047.1999999999998' y='1332.8000000000002' style="font-size: 70%; " text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">c</tspan>
43
+ </text>
44
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; font-size: 64px;' x='1377.0499999999997' y='1029.6'><tspan x='1377.0499999999997' y='1029.6' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">CP</tspan>
45
+ </text>
46
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; font-size: 64px;' x='1203.6' y='1328.8000000000002'><tspan x='1203.6' y='1328.8000000000002' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">books</tspan>
47
+ </text>
48
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; font-size: 64px;' x='1517.0' y='1328.8000000000002'><tspan x='1517.0' y='1328.8000000000002' style="font-style: italic; " text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">t</tspan>
49
+ <tspan x='1541.0' y='1332.8000000000002' style="font-size: 70%; " text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">f</tspan>
50
+ </text>
51
+ <line style='stroke:black; stroke-width:2;' x1='104.60000000000002' y1='321.2' x2='535.05' y2='187.0' />
52
+ <line style='stroke:black; stroke-width:2;' x1='965.4999999999999' y1='321.2' x2='535.05' y2='187.0' />
53
+ <line style='stroke:black; stroke-width:2;' x1='699.8749999999999' y1='620.4' x2='965.4999999999999' y2='486.2' />
54
+ <line style='stroke:black; stroke-width:2;' x1='1231.1249999999998' y1='620.4' x2='965.4999999999999' y2='486.2' />
55
+ <line style='stroke:black; stroke-width:2;' x1='530.4499999999999' y1='919.6' x2='699.8749999999999' y2='785.4' />
56
+ <line style='stroke:black; stroke-width:2;' x1='869.3' y1='919.6' x2='699.8749999999999' y2='785.4' />
57
+ <line style='stroke:black; stroke-width:2;' x1='395.49999999999994' y1='1218.8000000000002' x2='530.4499999999999' y2='1084.6' />
58
+ <line style='stroke:black; stroke-width:2;' x1='665.3999999999999' y1='1218.8000000000002' x2='530.4499999999999' y2='1084.6' />
59
+ <line style='stroke:black; stroke-width:2;' x1='665.3999999999999' y1='1518.0000000000002' x2='665.3999999999999' y2='1383.8000000000002' />
60
+ <line style='stroke:black; stroke-width:2;' x1='1046.1999999999998' y1='919.6' x2='1231.1249999999998' y2='785.4' />
61
+ <line style='stroke:black; stroke-width:2;' x1='1416.0499999999997' y1='919.6' x2='1231.1249999999998' y2='785.4' />
62
+ <line style='stroke:black; stroke-width:2;' x1='1046.1999999999998' y1='1218.8000000000002' x2='1046.1999999999998' y2='1084.6' />
63
+ <line style='stroke:black; stroke-width:2;' x1='1293.1' y1='1218.8000000000002' x2='1416.0499999999997' y2='1084.6' />
64
+ <line style='stroke:black; stroke-width:2;' x1='1539.0' y1='1218.8000000000002' x2='1416.0499999999997' y2='1084.6' />
65
+ </svg>
@@ -0,0 +1,54 @@
1
+ <?xml version="1.0" standalone="no"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3
+ <svg width="1344.1999999999998" height="1668.0000000000002" viewBox="-20, -20, 1364.1999999999998, 1688.0000000000002" version="1.1" xmlns="http://www.w3.org/2000/svg">
4
+ <defs>
5
+ <marker id="arrow" markerUnits="strokeWidth" markerWidth="13.440000000000001" markerHeight="13.440000000000001" viewBox="0 0 13.440000000000001 13.440000000000001" refX="6.720000000000001" refY="0">
6
+ <polyline fill="none" stroke="black" stroke-width="1" points="0,13.440000000000001,6.720000000000001,0,13.440000000000001,13.440000000000001" />
7
+ </marker>
8
+ <pattern id="hatchBlack" x="10" y="10" width="10" height="10" patternUnits="userSpaceOnUse" patternTransform="rotate(45)">
9
+ <line x1="0" y="0" x2="0" y2="10" stroke="black" stroke-width="4"></line>
10
+ </pattern>
11
+ <pattern id="hatchForNode" x="10" y="10" width="10" height="10" patternUnits="userSpaceOnUse" patternTransform="rotate(45)">
12
+ <line x1="0" y="0" x2="0" y2="10" stroke="black" stroke-width="4"></line>
13
+ </pattern>
14
+ <pattern id="hatchForLeaf" x="10" y="10" width="10" height="10" patternUnits="userSpaceOnUse" patternTransform="rotate(45)">
15
+ <line x1="0" y="0" x2="0" y2="10" stroke="black" stroke-width="4"></line>
16
+ </pattern>
17
+ </defs>
18
+ <rect x="-20" y="-20" width="1364.1999999999998" height="1688.0000000000002" stroke="none" fill="white" />"
19
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; font-size: 64px;' x='302.50625' y='132.0'><tspan x='302.50625' y='132.0' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">VP</tspan>
20
+ </text>
21
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; font-size: 64px;' x='33.60000000000002' y='431.2'><tspan x='33.60000000000002' y='431.2' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">John</tspan>
22
+ </text>
23
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; font-size: 64px;' x='553.9124999999999' y='431.2'><tspan x='553.9124999999999' y='431.2' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">V'</tspan>
24
+ </text>
25
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; font-size: 64px;' x='309.99999999999994' y='730.4'><tspan x='309.99999999999994' y='730.4' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">V</tspan>
26
+ </text>
27
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; font-size: 64px;' x='315.99999999999994' y='1029.6'><tspan x='315.99999999999994' y='1029.6' style="font-style: italic; " text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">e</tspan>
28
+ </text>
29
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; font-size: 64px;' x='791.8249999999999' y='730.4'><tspan x='791.8249999999999' y='730.4' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">VP</tspan>
30
+ </text>
31
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; font-size: 64px;' x='556.4' y='1029.6'><tspan x='556.4' y='1029.6' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">NP</tspan>
32
+ </text>
33
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; font-size: 64px;' x='488.4' y='1328.8000000000002'><tspan x='488.4' y='1328.8000000000002' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">a<tspan style='fill:none;'>■</tspan>book</tspan>
34
+ </text>
35
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; font-size: 64px;' x='1036.75' y='1029.6'><tspan x='1036.75' y='1029.6' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">V'</tspan>
36
+ </text>
37
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; font-size: 64px;' x='895.3' y='1328.8000000000002'><tspan x='895.3' y='1328.8000000000002' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">V</tspan>
38
+ </text>
39
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; font-size: 64px;' x='846.8' y='1628.0000000000002'><tspan x='846.8' y='1628.0000000000002' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">gave</tspan>
40
+ </text>
41
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; font-size: 64px;' x='1122.1999999999998' y='1328.8000000000002'><tspan x='1122.1999999999998' y='1328.8000000000002' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">to-Bill</tspan>
42
+ </text>
43
+ <line style='stroke:black; stroke-width:2;' x1='104.60000000000002' y1='321.2' x2='343.50625' y2='187.0' />
44
+ <line style='stroke:black; stroke-width:2;' x1='582.4124999999999' y1='321.2' x2='343.50625' y2='187.0' />
45
+ <line style='stroke:black; stroke-width:2;' x1='331.99999999999994' y1='620.4' x2='582.4124999999999' y2='486.2' />
46
+ <line style='stroke:black; stroke-width:2;' x1='832.8249999999999' y1='620.4' x2='582.4124999999999' y2='486.2' />
47
+ <line style='stroke:black; stroke-width:2;' x1='331.99999999999994' y1='919.6' x2='331.99999999999994' y2='785.4' />
48
+ <line style='stroke:black; stroke-width:2;' x1='600.4' y1='919.6' x2='832.8249999999999' y2='785.4' />
49
+ <line style='stroke:black; stroke-width:2;' x1='1065.25' y1='919.6' x2='832.8249999999999' y2='785.4' />
50
+ <polygon style='fill: none; stroke: black; stroke-width:2;' points='488.4 1218.8000000000002 712.4 1218.8000000000002 600.4 1084.6' />
51
+ <line style='stroke:black; stroke-width:2;' x1='917.3' y1='1218.8000000000002' x2='1065.25' y2='1084.6' />
52
+ <line style='stroke:black; stroke-width:2;' x1='1213.1999999999998' y1='1218.8000000000002' x2='1065.25' y2='1084.6' />
53
+ <line style='stroke:black; stroke-width:2;' x1='917.3' y1='1518.0000000000002' x2='917.3' y2='1383.8000000000002' />
54
+ </svg>
@@ -0,0 +1,68 @@
1
+ <?xml version="1.0" standalone="no"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3
+ <svg width="1614.1999999999998" height="1668.0000000000002" viewBox="-20, -20, 1634.1999999999998, 1688.0000000000002" version="1.1" xmlns="http://www.w3.org/2000/svg">
4
+ <defs>
5
+ <marker id="arrow" markerUnits="strokeWidth" markerWidth="13.440000000000001" markerHeight="13.440000000000001" viewBox="0 0 13.440000000000001 13.440000000000001" refX="6.720000000000001" refY="0">
6
+ <polyline fill="none" stroke="black" stroke-width="1" points="0,13.440000000000001,6.720000000000001,0,13.440000000000001,13.440000000000001" />
7
+ </marker>
8
+ <pattern id="hatchBlack" x="10" y="10" width="10" height="10" patternUnits="userSpaceOnUse" patternTransform="rotate(45)">
9
+ <line x1="0" y="0" x2="0" y2="10" stroke="black" stroke-width="4"></line>
10
+ </pattern>
11
+ <pattern id="hatchForNode" x="10" y="10" width="10" height="10" patternUnits="userSpaceOnUse" patternTransform="rotate(45)">
12
+ <line x1="0" y="0" x2="0" y2="10" stroke="black" stroke-width="4"></line>
13
+ </pattern>
14
+ <pattern id="hatchForLeaf" x="10" y="10" width="10" height="10" patternUnits="userSpaceOnUse" patternTransform="rotate(45)">
15
+ <line x1="0" y="0" x2="0" y2="10" stroke="black" stroke-width="4"></line>
16
+ </pattern>
17
+ </defs>
18
+ <rect x="-20" y="-20" width="1634.1999999999998" height="1688.0000000000002" stroke="none" fill="white" />"
19
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; font-size: 64px;' x='314.34999999999997' y='132.0'><tspan x='314.34999999999997' y='132.0' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">VP</tspan>
20
+ <tspan x='396.34999999999997' y='136.0' style="font-size: 70%; " text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">1</tspan>
21
+ </text>
22
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; font-size: 64px;' x='48.10000000000002' y='431.2'><tspan x='48.10000000000002' y='431.2' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">NP</tspan>
23
+ <tspan x='136.10000000000002' y='435.2' style="font-size: 70%; " text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">1</tspan>
24
+ </text>
25
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; font-size: 64px;' x='33.60000000000002' y='730.4'><tspan x='33.60000000000002' y='730.4' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">John</tspan>
26
+ </text>
27
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; font-size: 64px;' x='590.0999999999999' y='431.2'><tspan x='590.0999999999999' y='431.2' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">V'</tspan>
28
+ <tspan x='647.0999999999999' y='435.2' style="font-size: 70%; " text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">1</tspan>
29
+ </text>
30
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; font-size: 64px;' x='309.99999999999994' y='730.4'><tspan x='309.99999999999994' y='730.4' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">V</tspan>
31
+ <tspan x='353.99999999999994' y='734.4' style="font-size: 70%; " text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">1</tspan>
32
+ </text>
33
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; font-size: 64px;' x='328.49999999999994' y='1029.6'><tspan x='328.49999999999994' y='1029.6' style="font-style: italic; " text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">e</tspan>
34
+ </text>
35
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; font-size: 64px;' x='864.1999999999998' y='730.4'><tspan x='864.1999999999998' y='730.4' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">VP</tspan>
36
+ <tspan x='946.1999999999998' y='734.4' style="font-size: 70%; " text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">2</tspan>
37
+ </text>
38
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; font-size: 64px;' x='599.8999999999999' y='1029.6'><tspan x='599.8999999999999' y='1029.6' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">NP</tspan>
39
+ <tspan x='687.8999999999999' y='1033.6' style="font-size: 70%; " text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">2</tspan>
40
+ </text>
41
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; font-size: 64px;' x='513.3999999999999' y='1328.8000000000002'><tspan x='513.3999999999999' y='1328.8000000000002' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">the<tspan style='fill:none;'>■</tspan>book</tspan>
42
+ </text>
43
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; font-size: 64px;' x='1137.9999999999998' y='1029.6'><tspan x='1137.9999999999998' y='1029.6' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">V'</tspan>
44
+ <tspan x='1194.9999999999998' y='1033.6' style="font-size: 70%; " text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">2</tspan>
45
+ </text>
46
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; font-size: 64px;' x='950.8' y='1328.8000000000002'><tspan x='950.8' y='1328.8000000000002' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">V</tspan>
47
+ <tspan x='994.8' y='1332.8000000000002' style="font-size: 70%; " text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">2</tspan>
48
+ </text>
49
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; font-size: 64px;' x='933.8' y='1628.0000000000002'><tspan x='933.8' y='1628.0000000000002' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">put</tspan>
50
+ </text>
51
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; font-size: 64px;' x='1334.1999999999998' y='1328.8000000000002'><tspan x='1334.1999999999998' y='1328.8000000000002' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">ZP</tspan>
52
+ </text>
53
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; font-size: 64px;' x='1171.1999999999998' y='1628.0000000000002'><tspan x='1171.1999999999998' y='1628.0000000000002' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">on<tspan style='fill:none;'>■</tspan>the<tspan style='fill:none;'>■</tspan>shelf</tspan>
54
+ </text>
55
+ <line style='stroke:black; stroke-width:2;' x1='104.60000000000002' y1='321.2' x2='367.84999999999997' y2='187.0' />
56
+ <line style='stroke:black; stroke-width:2;' x1='631.0999999999999' y1='321.2' x2='367.84999999999997' y2='187.0' />
57
+ <line style='stroke:black; stroke-width:2;' x1='104.60000000000002' y1='620.4' x2='104.60000000000002' y2='486.2' />
58
+ <line style='stroke:black; stroke-width:2;' x1='344.49999999999994' y1='620.4' x2='631.0999999999999' y2='486.2' />
59
+ <line style='stroke:black; stroke-width:2;' x1='917.6999999999998' y1='620.4' x2='631.0999999999999' y2='486.2' />
60
+ <line style='stroke:black; stroke-width:2;' x1='344.49999999999994' y1='919.6' x2='344.49999999999994' y2='785.4' />
61
+ <line style='stroke:black; stroke-width:2;' x1='656.3999999999999' y1='919.6' x2='917.6999999999998' y2='785.4' />
62
+ <line style='stroke:black; stroke-width:2;' x1='1178.9999999999998' y1='919.6' x2='917.6999999999998' y2='785.4' />
63
+ <polygon style='fill: none; stroke: black; stroke-width:2;' points='513.3999999999999 1218.8000000000002 799.3999999999999 1218.8000000000002 656.3999999999999 1084.6' />
64
+ <line style='stroke:black; stroke-width:2;' x1='985.3' y1='1218.8000000000002' x2='1178.9999999999998' y2='1084.6' />
65
+ <line style='stroke:black; stroke-width:2;' x1='1372.6999999999998' y1='1218.8000000000002' x2='1178.9999999999998' y2='1084.6' />
66
+ <line style='stroke:black; stroke-width:2;' x1='985.3' y1='1518.0000000000002' x2='985.3' y2='1383.8000000000002' />
67
+ <polygon style='fill: none; stroke: black; stroke-width:2;' points='1171.1999999999998 1518.0000000000002 1574.1999999999998 1518.0000000000002 1372.6999999999998 1383.8000000000002' />
68
+ </svg>
@@ -0,0 +1,41 @@
1
+ <?xml version="1.0" standalone="no"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3
+ <svg width="918.8" height="1084.6" viewBox="-20, -20, 938.8, 1104.6" version="1.1" xmlns="http://www.w3.org/2000/svg">
4
+ <defs>
5
+ <marker id="arrow" markerUnits="strokeWidth" markerWidth="13.440000000000001" markerHeight="13.440000000000001" viewBox="0 0 13.440000000000001 13.440000000000001" refX="6.720000000000001" refY="0">
6
+ <polyline fill="none" stroke="black" stroke-width="1" points="0,13.440000000000001,6.720000000000001,0,13.440000000000001,13.440000000000001" />
7
+ </marker>
8
+ <pattern id="hatchBlack" x="10" y="10" width="10" height="10" patternUnits="userSpaceOnUse" patternTransform="rotate(45)">
9
+ <line x1="0" y="0" x2="0" y2="10" stroke="black" stroke-width="4"></line>
10
+ </pattern>
11
+ <pattern id="hatchForNode" x="10" y="10" width="10" height="10" patternUnits="userSpaceOnUse" patternTransform="rotate(45)">
12
+ <line x1="0" y="0" x2="0" y2="10" stroke="black" stroke-width="4"></line>
13
+ </pattern>
14
+ <pattern id="hatchForLeaf" x="10" y="10" width="10" height="10" patternUnits="userSpaceOnUse" patternTransform="rotate(45)">
15
+ <line x1="0" y="0" x2="0" y2="10" stroke="black" stroke-width="4"></line>
16
+ </pattern>
17
+ </defs>
18
+ <rect x="-20" y="-20" width="938.8" height="1104.6" stroke="none" fill="white" />"
19
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; font-size: 64px;' x='282.0125' y='132.0'><tspan x='282.0125' y='132.0' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">X</tspan>
20
+ <tspan x='327.0125' y='111.0' style="font-size: 70%; " text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">max</tspan>
21
+ </text>
22
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; font-size: 64px;' x='33.599999999999994' y='436.2'><tspan x='33.599999999999994' y='436.2' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">[Y−X]</tspan>
23
+ </text>
24
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; font-size: 64px;' x='541.925' y='436.2'><tspan x='541.925' y='436.2' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">YP</tspan>
25
+ </text>
26
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; font-size: 64px;' x='338.0' y='740.4'><tspan x='338.0' y='740.4' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">Spec</tspan>
27
+ <tspan x='483.0' y='744.4' style="font-size: 70%; " text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">1</tspan>
28
+ </text>
29
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; font-size: 64px;' x='718.3499999999999' y='740.4'><tspan x='718.3499999999999' y='740.4' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">Y'</tspan>
30
+ </text>
31
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; font-size: 64px;' x='641.4000000000001' y='1044.6'><tspan x='641.4000000000001' y='1044.6' style="font-style: italic; " text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">t</tspan>
32
+ </text>
33
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; font-size: 64px;' x='799.8' y='1044.6'><tspan x='799.8' y='1044.6' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">ZP</tspan>
34
+ </text>
35
+ <line style='stroke:black; stroke-width:2;' x1='118.6' y1='326.2' x2='351.5125' y2='187.0' />
36
+ <line style='stroke:black; stroke-width:2;' x1='584.425' y1='326.2' x2='351.5125' y2='187.0' />
37
+ <line style='stroke:black; stroke-width:2;' x1='422.5' y1='630.4' x2='584.425' y2='491.2' />
38
+ <line style='stroke:black; stroke-width:2;' x1='746.3499999999999' y1='630.4' x2='584.425' y2='491.2' />
39
+ <line style='stroke:black; stroke-width:2;' x1='653.4000000000001' y1='934.5999999999999' x2='746.3499999999999' y2='795.4' />
40
+ <line style='stroke:black; stroke-width:2;' x1='839.3' y1='934.5999999999999' x2='746.3499999999999' y2='795.4' />
41
+ </svg>
@@ -0,0 +1,47 @@
1
+ <?xml version="1.0" standalone="no"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3
+ <svg width="1159.1999999999998" height="1388.8" viewBox="-20, -20, 1179.1999999999998, 1408.8" version="1.1" xmlns="http://www.w3.org/2000/svg">
4
+ <defs>
5
+ <marker id="arrow" markerUnits="strokeWidth" markerWidth="13.440000000000001" markerHeight="13.440000000000001" viewBox="0 0 13.440000000000001 13.440000000000001" refX="6.720000000000001" refY="0">
6
+ <polyline fill="none" stroke="black" stroke-width="1" points="0,13.440000000000001,6.720000000000001,0,13.440000000000001,13.440000000000001" />
7
+ </marker>
8
+ <pattern id="hatchBlack" x="10" y="10" width="10" height="10" patternUnits="userSpaceOnUse" patternTransform="rotate(45)">
9
+ <line x1="0" y="0" x2="0" y2="10" stroke="black" stroke-width="4"></line>
10
+ </pattern>
11
+ <pattern id="hatchForNode" x="10" y="10" width="10" height="10" patternUnits="userSpaceOnUse" patternTransform="rotate(45)">
12
+ <line x1="0" y="0" x2="0" y2="10" stroke="black" stroke-width="4"></line>
13
+ </pattern>
14
+ <pattern id="hatchForLeaf" x="10" y="10" width="10" height="10" patternUnits="userSpaceOnUse" patternTransform="rotate(45)">
15
+ <line x1="0" y="0" x2="0" y2="10" stroke="black" stroke-width="4"></line>
16
+ </pattern>
17
+ </defs>
18
+ <rect x="-20" y="-20" width="1179.1999999999998" height="1408.8" stroke="none" fill="white" />"
19
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; font-size: 64px;' x='308.94375' y='132.0'><tspan x='308.94375' y='132.0' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">𝑣P</tspan>
20
+ </text>
21
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; font-size: 64px;' x='33.60000000000002' y='436.2'><tspan x='33.60000000000002' y='436.2' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">Spec</tspan>
22
+ <tspan x='178.60000000000002' y='440.2' style="font-size: 70%; " text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">2</tspan>
23
+ </text>
24
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; font-size: 64px;' x='566.7875' y='436.2'><tspan x='566.7875' y='436.2' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">𝑣'</tspan>
25
+ </text>
26
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; font-size: 64px;' x='337.0' y='740.4'><tspan x='337.0' y='740.4' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">Subj</tspan>
27
+ </text>
28
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; font-size: 64px;' x='766.575' y='740.4'><tspan x='766.575' y='740.4' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">𝑣'</tspan>
29
+ </text>
30
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; font-size: 64px;' x='607.4' y='1044.6'><tspan x='607.4' y='1044.6' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">Vb</tspan>
31
+ </text>
32
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; font-size: 64px;' x='915.25' y='1044.6'><tspan x='915.25' y='1044.6' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">VP</tspan>
33
+ </text>
34
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; font-size: 64px;' x='827.8000000000001' y='1348.8'><tspan x='827.8000000000001' y='1348.8' style="font-style: italic; " text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">t</tspan>
35
+ <tspan x='851.8000000000001' y='1352.8' style="font-size: 70%; " text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">v</tspan>
36
+ </text>
37
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; font-size: 64px;' x='1011.1999999999998' y='1348.8'><tspan x='1011.1999999999998' y='1348.8' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">Obj</tspan>
38
+ </text>
39
+ <line style='stroke:black; stroke-width:2;' x1='118.10000000000002' y1='326.2' x2='361.44375' y2='187.0' />
40
+ <line style='stroke:black; stroke-width:2;' x1='604.7875' y1='326.2' x2='361.44375' y2='187.0' />
41
+ <line style='stroke:black; stroke-width:2;' x1='405.0' y1='630.4' x2='604.7875' y2='491.2' />
42
+ <line style='stroke:black; stroke-width:2;' x1='804.575' y1='630.4' x2='604.7875' y2='491.2' />
43
+ <line style='stroke:black; stroke-width:2;' x1='650.4' y1='934.5999999999999' x2='804.575' y2='795.4' />
44
+ <line style='stroke:black; stroke-width:2;' x1='958.75' y1='934.5999999999999' x2='804.575' y2='795.4' />
45
+ <line style='stroke:black; stroke-width:2;' x1='852.3000000000001' y1='1238.8' x2='958.75' y2='1099.6' />
46
+ <line style='stroke:black; stroke-width:2;' x1='1065.1999999999998' y1='1238.8' x2='958.75' y2='1099.6' />
47
+ </svg>
@@ -0,0 +1,55 @@
1
+ <?xml version="1.0" standalone="no"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3
+ <svg width="1617.7999999999997" height="1513.1999999999998" viewBox="-20, -20, 1637.7999999999997, 1533.1999999999998" version="1.1" xmlns="http://www.w3.org/2000/svg">
4
+ <defs>
5
+ <marker id="arrow" markerUnits="strokeWidth" markerWidth="13.440000000000001" markerHeight="13.440000000000001" viewBox="0 0 13.440000000000001 13.440000000000001" refX="6.720000000000001" refY="0">
6
+ <polyline fill="none" stroke="black" stroke-width="1" points="0,13.440000000000001,6.720000000000001,0,13.440000000000001,13.440000000000001" />
7
+ </marker>
8
+ <pattern id="hatchBlack" x="10" y="10" width="10" height="10" patternUnits="userSpaceOnUse" patternTransform="rotate(45)">
9
+ <line x1="0" y="0" x2="0" y2="10" stroke="black" stroke-width="4"></line>
10
+ </pattern>
11
+ <pattern id="hatchForNode" x="10" y="10" width="10" height="10" patternUnits="userSpaceOnUse" patternTransform="rotate(45)">
12
+ <line x1="0" y="0" x2="0" y2="10" stroke="black" stroke-width="4"></line>
13
+ </pattern>
14
+ <pattern id="hatchForLeaf" x="10" y="10" width="10" height="10" patternUnits="userSpaceOnUse" patternTransform="rotate(45)">
15
+ <line x1="0" y="0" x2="0" y2="10" stroke="black" stroke-width="4"></line>
16
+ </pattern>
17
+ </defs>
18
+ <rect x="-20" y="-20" width="1637.7999999999997" height="1533.1999999999998" stroke="none" fill="white" />"
19
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; font-size: 64px;' x='592.3' y='132.0'><tspan x='592.3' y='132.0' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">XP</tspan>
20
+ </text>
21
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; font-size: 64px;' x='138.10000000000002' y='436.2'><tspan x='138.10000000000002' y='436.2' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">W</tspan>
22
+ </text>
23
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; font-size: 64px;' x='33.60000000000002' y='740.4'><tspan x='33.60000000000002' y='740.4' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">Specifier</tspan>
24
+ <tspan x='75.60000000000002' y='833.4' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">指定部</tspan>
25
+ </text>
26
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; font-size: 64px;' x='1070.5' y='436.2'><tspan x='1070.5' y='436.2' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">X'</tspan>
27
+ </text>
28
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; font-size: 64px;' x='727.1999999999999' y='740.4'><tspan x='727.1999999999999' y='740.4' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">X'</tspan>
29
+ </text>
30
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; font-size: 64px;' x='517.5' y='1044.6'><tspan x='517.5' y='1044.6' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">X</tspan>
31
+ </text>
32
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; font-size: 64px;' x='444.0' y='1348.8'><tspan x='458.0' y='1348.8' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">Head</tspan>
33
+ <tspan x='444.0' y='1441.8' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">主要部</tspan>
34
+ </text>
35
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; font-size: 64px;' x='949.3999999999999' y='1044.6'><tspan x='949.3999999999999' y='1044.6' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">Y</tspan>
36
+ </text>
37
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; font-size: 64px;' x='770.3999999999999' y='1348.8'><tspan x='770.3999999999999' y='1348.8' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">Complement</tspan>
38
+ <tspan x='907.3999999999999' y='1441.8' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">補部</tspan>
39
+ </text>
40
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; font-size: 64px;' x='1423.2999999999997' y='740.4'><tspan x='1423.2999999999997' y='740.4' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">Z</tspan>
41
+ </text>
42
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; font-size: 64px;' x='1306.7999999999997' y='1044.6'><tspan x='1306.7999999999997' y='1044.6' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">Modifier</tspan>
43
+ <tspan x='1346.2999999999997' y='1137.6' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">付加部</tspan>
44
+ </text>
45
+ <line style='stroke:black; stroke-width:2;' x1='171.60000000000002' y1='326.2' x2='635.3' y2='187.0' />
46
+ <line style='stroke:black; stroke-width:2;' x1='1099.0' y1='326.2' x2='635.3' y2='187.0' />
47
+ <line style='stroke:black; stroke-width:2;' x1='171.60000000000002' y1='630.4' x2='171.60000000000002' y2='491.2' />
48
+ <line style='stroke:black; stroke-width:2;' x1='755.6999999999999' y1='630.4' x2='1099.0' y2='491.2' />
49
+ <line style='stroke:black; stroke-width:2;' x1='1442.2999999999997' y1='630.4' x2='1099.0' y2='491.2' />
50
+ <line style='stroke:black; stroke-width:2;' x1='540.0' y1='934.5999999999999' x2='755.6999999999999' y2='795.4' />
51
+ <line style='stroke:black; stroke-width:2;' x1='971.3999999999999' y1='934.5999999999999' x2='755.6999999999999' y2='795.4' />
52
+ <line style='stroke:black; stroke-width:2;' x1='540.0' y1='1238.8' x2='540.0' y2='1099.6' />
53
+ <line style='stroke:black; stroke-width:2;' x1='971.3999999999999' y1='1238.8' x2='971.3999999999999' y2='1099.6' />
54
+ <line style='stroke:black; stroke-width:2;' x1='1442.2999999999997' y1='934.5999999999999' x2='1442.2999999999997' y2='795.4' />
55
+ </svg>