rsyntaxtree 1.0.8 → 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
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>